:root{--bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#687085;--primary:#0b5fff;--danger:#b42318;--ok:#067647;--warn:#b54708;--line:#d9deea}*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.topbar{background:#101828;color:#fff;padding:12px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px}.topbar a{color:#fff;margin-left:14px}.wrap{max-width:1180px;margin:22px auto;padding:0 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 1px 2px rgba(16,24,40,.05)}h1,h2,h3{margin-top:0}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.stat{padding:14px;border-radius:12px;border:1px solid var(--line);background:#fafbff}.stat strong{display:block;font-size:28px;margin-top:6px}table{width:100%;border-collapse:collapse;background:#fff}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left;vertical-align:top}th{background:#f2f4f8}.btn,button,input[type=submit]{display:inline-block;border:0;background:var(--primary);color:#fff;padding:9px 13px;border-radius:9px;cursor:pointer;font-weight:700}.btn.secondary,button.secondary{background:#475467}.btn.danger,button.danger{background:var(--danger)}.btn.ok,button.ok{background:var(--ok)}.btn.warn,button.warn{background:var(--warn)}input,select,textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff}label{display:block;font-weight:700;margin:10px 0 5px}.row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.notice{padding:12px;border-radius:10px;margin-bottom:14px;background:#ecfdf3;color:#05603a;border:1px solid #abefc6}.error{padding:12px;border-radius:10px;margin-bottom:14px;background:#fef3f2;color:#b42318;border:1px solid #fecdca}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700;background:#eef2ff;color:#3538cd}.badge.ok{background:#ecfdf3;color:#067647}.badge.warn{background:#fffaeb;color:#b54708}.badge.danger{background:#fef3f2;color:#b42318}.actions{display:flex;gap:8px;flex-wrap:wrap}.login{max-width:420px;margin:60px auto}.small{font-size:12px}.checkrow{display:flex;gap:8px;align-items:center;margin:8px 0}.checkrow input{width:auto}.footer{color:#667085;font-size:12px;text-align:center;margin:20px}.nowrap{white-space:nowrap}
.passwordwrap{display:flex;gap:8px;align-items:center}.passwordwrap input{flex:1}.passwordwrap button{width:auto;white-space:nowrap}.inline{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:10px 0}.inline label{margin:0}.inline input,.inline select{width:auto}.previewbox{margin-top:16px;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fafbff}.previewbox iframe{width:100%;height:520px;border:1px solid var(--line);border-radius:10px;background:#fff}.bar{width:160px;height:10px;background:#e4e7ec;border-radius:999px;overflow:hidden;margin-bottom:4px}.bar span{display:block;height:100%;background:var(--primary)}.signbox{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.signbox button{margin-top:4px}@media(max-width:700px){.inline input,.inline select{width:100%}.previewbox iframe{height:360px}.actions{display:block}.actions .btn{margin:3px 0}}
.filepreview-frame{width:100%;height:620px;border:1px solid var(--line);border-radius:10px;background:#fff}.filepreview-img{max-width:100%;border:1px solid var(--line);border-radius:10px;background:#fff}.receipt-card{margin-bottom:22px}.signature-pad{max-width:640px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:10px}.signature-canvas{width:100%;max-width:600px;height:180px;border:1px dashed #98a2b3;border-radius:8px;background:#fff;touch-action:none;display:block}.signbox h3{margin-top:0}@media(max-width:700px){.filepreview-frame{height:420px}.signature-canvas{height:150px}}

/* v1.5.3 - detalle adicional solo visualización */
.extra-viewonly {
  border: 1px solid #d7dce3;
  border-radius: 10px;
  padding: 12px;
  margin: 14px 0;
  background: #fafafa;
}
.viewonly-card {
  user-select: none;
  -webkit-user-select: none;
}
.viewonly-box {
  position: relative;
  min-height: 600px;
  border: 1px solid #c8d0dc;
  border-radius: 10px;
  overflow: hidden;
  background: #fff;
}
.viewonly-frame {
  width: 100%;
  height: 75vh;
  border: 0;
  display: block;
}
.viewonly-img {
  display: block;
  max-width: 100%;
  margin: 0 auto;
}
.viewonly-watermark {
  font-weight: 700;
  color: #4b5563;
  margin-bottom: 8px;
}
.watermark-repeat {
  pointer-events: none;
  position: absolute;
  inset: 0;
  opacity: .13;
  display: flex;
  align-items: center;
  justify-content: center;
  transform: rotate(-24deg);
  font-size: 28px;
  font-weight: 700;
  text-align: center;
  padding: 20px;
  color: #111827;
}
.smallbtn {
  padding: 6px 9px;
  font-size: 12px;
}


.period-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

.period-tab {
  background: #e5e7eb;
  color: #111827;
  border: 1px solid #cbd5e1;
  margin: 0;
}

.period-tab.active {
  background: #0f766e;
  color: #ffffff;
  border-color: #0f766e;
}

.period-panel {
  animation: fadeInPeriod .15s ease-in;
}

@keyframes fadeInPeriod {
  from { opacity: .65; }
  to { opacity: 1; }
}

.extra-viewonly {
  border: 1px solid #d7dde8;
  border-radius: 10px;
  padding: 12px;
  margin: 12px 0;
  background: #f8fafc;
}

.viewonly-img {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 0 auto;
}



/* v1.5.11 - revisión integrada de horas extras / pagos fuera de recibo */
.extra-admin-card table {
  margin-bottom: 18px;
}
.extra-admin-preview {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 12px;
  margin: 16px 0;
  background: #ffffff;
}
.extra-admin-preview h3 {
  margin: 0 0 6px;
}
.extra-admin-frame {
  width: 100%;
  height: 92vh;
  min-height: 920px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  display: block;
}
.extra-admin-img {
  display: block;
  width: 100%;
  max-width: none;
  height: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
}
.viewonly-frame {
  height: 82vh;
  min-height: 760px;
}
@media(max-width:700px){
  .extra-admin-frame,
  .viewonly-frame {
    height: 75vh;
    min-height: 520px;
  }
}


/* v1.5.12 - visor PDF ampliado para Chrome */
.extra-pdf-tools {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 8px 0 12px;
  align-items: center;
}
.extra-pdf-tools .smallbtn {
  margin: 0;
}
.extra-admin-preview {
  scroll-margin-top: 80px;
}
@media(max-width:900px){
  .extra-admin-frame {
    min-height: 760px;
    height: 86vh;
  }
}
