:root{--bg:#f4f6fb;--card:#fff;--ink:#142033;--muted:#667085;--line:#d8dee9;--blue:#102a55;--gold:#caa24a;--green:#067647;--red:#b42318;--amber:#b54708}
*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}.topbar{background:linear-gradient(135deg,#081a35,#163a6d);color:#fff;padding:24px;display:flex;justify-content:space-between;gap:16px;align-items:center}.brand{letter-spacing:.08em;font-weight:800;color:var(--gold);font-size:13px}.topbar h1{margin:5px 0;font-size:24px}.topbar p{margin:0;color:#d7e3f5}.badge{padding:10px 14px;border-radius:999px;font-weight:800;white-space:nowrap}.badge.ok{background:rgba(6,118,71,.25)}.badge.warn{background:rgba(181,71,8,.25)}.badge.err{background:rgba(180,35,24,.25)}.nav{display:flex;gap:8px;padding:12px 18px;background:#fff;border-bottom:1px solid var(--line);overflow:auto;position:sticky;top:0;z-index:5}.nav-btn,button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 14px;cursor:pointer;font-weight:700;color:var(--ink)}.nav-btn.active,.primary{background:var(--blue);color:#fff;border-color:var(--blue)}main{padding:18px;max-width:1500px;margin:0 auto}.section{display:none}.section.active{display:block}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 10px 30px rgba(16,42,85,.08)}h2{margin:0 0 5px}.note{color:var(--muted);margin:0 0 16px}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:2px dashed #9eb3d4;border-radius:18px;padding:34px;background:#f8fbff;text-align:center}.dropzone input{margin:10px}.actions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.kpis{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:12px;margin:16px 0}.kpis div{border:1px solid var(--line);border-radius:14px;padding:14px;background:#fbfcff}.kpis b{display:block;font-size:25px;color:var(--blue)}.kpis span{color:var(--muted);font-size:13px}.log{background:#0c1728;color:#dff0ff;border-radius:14px;padding:14px;min-height:130px;overflow:auto;white-space:pre-wrap}.section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;background:#fff}th,td{border-bottom:1px solid var(--line);padding:10px;text-align:left;vertical-align:top;font-size:14px}th{background:#f1f5fb;white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:25px}.pill{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:800}.pill.ok{background:#dcfae6;color:#067647}.pill.err{background:#fee4e2;color:#b42318}.pill.warn{background:#fef0c7;color:#b54708}.filters,.grid2{display:grid;grid-template-columns:repeat(3,minmax(200px,1fr));gap:12px;margin:12px 0}.grid2{grid-template-columns:1fr 1fr}label{font-weight:800;color:#344054}input,select{width:100%;padding:11px;border:1px solid var(--line);border-radius:10px;margin-top:6px}.alerts{margin:12px 0}.alert{border:1px solid #fecdca;background:#fff1f0;color:#912018;border-radius:12px;padding:10px;margin-bottom:8px}.modal{position:fixed;inset:0;background:rgba(10,20,40,.55);display:flex;align-items:center;justify-content:center;z-index:20;padding:18px}.modal.hidden{display:none}.modal-card{background:#fff;width:min(1200px,96vw);height:min(820px,92vh);border-radius:18px;overflow:hidden;display:flex;flex-direction:column}.modal-head{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.modal-body{display:grid;grid-template-columns:58% 42%;min-height:0;flex:1}.modal-body iframe{width:100%;height:100%;border:0;background:#eee}.detail-panel{overflow:auto;padding:12px}.detail-panel pre{white-space:pre-wrap;font-family:ui-monospace,Consolas,monospace;font-size:13px}.small{font-size:12px;color:var(--muted)}@media(max-width:800px){.topbar{display:block}.kpis,.filters,.grid2,.modal-body{grid-template-columns:1fr}.modal-card{height:96vh}.modal-body iframe{height:45vh}.section-head{display:block}}

/* V8: visor PDF corregido */
.pdf-panel{display:flex;flex-direction:column;min-width:0;min-height:0;background:#eef2f7;border-right:1px solid var(--line)}
.pdf-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;background:#fff;border-bottom:1px solid var(--line)}
.pdf-canvas-wrap{overflow:auto;padding:14px;display:flex;flex-direction:column;gap:16px;align-items:center;min-height:0;flex:1}
.pdf-page{background:#fff;border:1px solid #d0d5dd;box-shadow:0 4px 14px rgba(16,42,85,.16);max-width:100%;height:auto}
.detail-cards{display:grid;gap:10px;margin-bottom:12px}
.detail-card{border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfcff}
.detail-card h4{margin:0 0 8px;font-size:15px;color:var(--blue)}
.detail-row{display:grid;grid-template-columns:140px 1fr;gap:8px;border-top:1px solid #edf1f7;padding:7px 0;font-size:14px}
.detail-row:first-of-type{border-top:0}.detail-row b{color:#344054}.raw-details{border:1px solid var(--line);border-radius:14px;padding:10px;background:#fff}.raw-details summary{cursor:pointer;font-weight:800;color:var(--blue)}
.loading{padding:18px;color:var(--muted);text-align:center}.material-list{margin:0;padding-left:18px}.material-list li{margin:4px 0}.series-list{font-family:ui-monospace,Consolas,monospace;font-size:13px;white-space:pre-wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px;max-height:130px;overflow:auto}
@media(max-width:800px){.modal-body{display:flex;flex-direction:column}.pdf-panel{border-right:0;border-bottom:1px solid var(--line);min-height:45vh}.pdf-canvas-wrap{max-height:45vh}}

/* V10: técnicos detectados y selector de estimaciones */
.tech-summary{border:1px solid var(--line);background:#fbfcff;border-radius:12px;padding:10px 12px;margin:12px 0;color:#344054;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tech-summary .pill{margin-right:4px}
.inline-check{display:flex;gap:8px;align-items:center;margin:10px 0 14px;color:#23314a;font-size:14px}
.inline-check input{width:auto}


/* V16 inventario interno */
.grid3 { display:grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.mini-card { border:1px solid #d9e2ef; background:#f8fafc; border-radius:16px; padding:14px; }
.mini-card h3 { margin:0 0 10px; color:#1f2a3d; }
textarea { width:100%; border:1px solid #d7deea; border-radius:12px; padding:10px; font-family:inherit; resize:vertical; }
button.danger { background:#9b1c1c; color:white; border-color:#9b1c1c; }
button.danger:hover { filter:brightness(.95); }
@media (max-width: 980px) { .grid3 { grid-template-columns: 1fr; } }

/* V19 ajustes técnicos */
button.tiny{padding:6px 8px;border-radius:8px;font-size:12px;margin:2px;white-space:nowrap}
.muted{color:var(--muted);font-size:12px}
.group-row td {
  background: #eef4ff;
  color: #13233a;
  font-weight: 700;
  border-top: 2px solid #cdd9ee;
}
.row-warn td {
  background: #fff8ed;
}


/* V23.1 / V29 reporte imprimible corporativo: evita bloqueo de ventanas emergentes */
.print-report-panel{
  position:fixed;
  inset:18px;
  z-index:50;
  background:#fff;
  border:1px solid var(--line);
  border-radius:18px;
  box-shadow:0 20px 70px rgba(16,42,85,.28);
  overflow:auto;
  padding:22px;
}
.print-report-panel.hidden{display:none}
.print-actions{display:flex;gap:10px;justify-content:flex-end;margin-bottom:16px;position:sticky;top:0;background:#fff;padding-bottom:10px;border-bottom:1px solid var(--line);z-index:2}
.report-doc{font-family:Arial, Helvetica, sans-serif;color:#172033;max-width:980px;margin:0 auto;background:#fff;padding:0 2px 12px;line-height:1.28}
.report-header{display:grid;grid-template-columns:112px 1fr 190px;gap:28px;align-items:center;background:#fafbfd;padding:18px 22px;border:1px solid #edf0f5}
.report-logo{width:112px;height:112px;object-fit:cover;display:block}
.report-company h1{margin:0;color:#102a55;font-size:30px;letter-spacing:.02em;line-height:1.05}
.report-company p{margin:8px 0 12px;color:#b48425;font-weight:800;font-size:16px;letter-spacing:.035em}
.report-company small{font-size:15px;color:#172033}
.report-header-blank{min-height:1px}
.report-gold-line{height:2px;background:#caa24a;margin:12px 0 0}
.report-title-box{text-align:center;border-bottom:2px solid #102a55;padding:32px 0 22px;margin-bottom:28px}
.report-title-box h1{margin:0 0 9px;color:#102a55;font-size:28px;letter-spacing:.045em}
.report-title-box p{margin:0;color:#172033;font-size:16px}
.report-compact-note{margin-top:8px!important;color:#667085!important;font-size:13px!important}
.report-tech-block{break-inside:avoid;page-break-inside:avoid;margin-bottom:28px}
.report-summary{font-size:16px;margin-bottom:28px}
.report-summary p{margin:0 0 20px;color:#172033}.report-summary p b{color:#102a55}.report-summary p strong{color:#172033}
.summary-lines{max-width:760px}.summary-lines>div{display:grid;grid-template-columns:280px 210px 180px;gap:12px;align-items:center;padding:4px 0}.summary-lines span:nth-child(3){font-weight:700}.summary-count{border-top:1px solid #d9e1ee;margin-top:10px;padding-top:14px!important}.summary-count span:last-child{font-weight:800;text-align:left}
.report-total-box{margin:22px 0 0 auto;width:500px;height:54px;border:2px solid #102a55;display:grid;grid-template-columns:245px 1fr;align-items:center;text-align:center}.report-total-box span{height:100%;display:flex;align-items:center;justify-content:center;background:#102a55;color:#fff;font-weight:800;font-size:20px}.report-total-box strong{color:#102a55;font-size:23px}
.report-tech-block h2{font-size:18px;margin:0 0 12px;color:#102a55;letter-spacing:.035em;border-bottom:1px solid #102a55;padding-bottom:8px}
.report-table{border-collapse:collapse;width:100%;margin-top:8px;table-layout:fixed}.report-table th,.report-table td{border:1px solid #d9e1ee;padding:8px 9px;text-align:center;font-size:13px;vertical-align:middle}.report-table th{background:#102a55;color:#fff;font-weight:800;white-space:nowrap}.report-table th:nth-child(1),.report-table td:nth-child(1){width:20%}.report-table th:nth-child(2),.report-table td:nth-child(2){width:15%}.report-table th:nth-child(3),.report-table td:nth-child(3){width:32%;text-align:left}.report-table th:nth-child(4),.report-table td:nth-child(4){width:17%}.report-table th:nth-child(5),.report-table td:nth-child(5){width:16%}.report-table tbody tr:nth-child(even) td{background:#f7f9fc}
.report-signature{text-align:center;margin:62px auto 72px}.signature-line{width:330px;border-top:1px solid #172033;margin:0 auto 10px}.report-signature strong{display:block;color:#102a55;font-size:17px}.report-signature span{display:block;margin-top:3px;font-size:15px}.report-signature small{display:block;margin-top:3px;font-size:12px;color:#172033}
.report-footer{border-top:2px solid #102a55;text-align:center;color:#102a55;font-weight:800;font-size:15px;letter-spacing:.03em;padding-top:16px;margin-top:10px;text-transform:uppercase}
@media print{
  @page{size:A4;margin:12mm}
  body.printing-report{background:#fff}
  body.printing-report > *:not(#v23PrintableReport){display:none!important}
  body.printing-report #v23PrintableReport{display:block!important;position:static;inset:auto;border:0;box-shadow:none;padding:0;overflow:visible}
  body.printing-report #v23ReportActions{display:none!important}
  body.printing-report .report-doc{max-width:none;margin:0;padding:0}
  body.printing-report .report-tech-block{break-inside:avoid;page-break-inside:avoid}
}


/* V24 Login Superadmin */
body.auth-locked .topbar,
body.auth-locked .nav,
body.auth-locked main,
body.auth-locked #v23PrintableReport,
body.auth-locked #modal{display:none!important}
.login-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#081a35,#163a6d);padding:22px}
body:not(.auth-locked) .login-gate{display:none!important}
.login-card{width:min(520px,96vw);background:#fff;border-radius:22px;padding:26px;box-shadow:0 24px 80px rgba(0,0,0,.32);border:1px solid rgba(255,255,255,.2)}
.login-card h1{margin:6px 0 8px;color:#102a55}
.login-brand{font-size:14px}
.login-card label{display:block;margin-top:12px}
.login-advanced{margin:14px 0;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fbfcff}
.login-advanced summary{cursor:pointer;font-weight:800;color:#102a55}
.login-log{background:#0c1728;color:#dff0ff;border-radius:14px;padding:12px;min-height:72px;white-space:pre-wrap;margin-top:12px}
.topbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.logout-btn{background:#fff;color:#102a55;border-color:#fff}
@media(max-width:800px){.topbar-right{justify-content:flex-start;margin-top:14px}.badge{display:inline-block}}

/* V25 Visual Premium - solo mejora visual, no cambia lógica */
:root{
  --bg:#f4f7fb;
  --card:#ffffff;
  --ink:#101828;
  --muted:#667085;
  --line:#d9e2ef;
  --blue:#102a55;
  --blue2:#163a6d;
  --gold:#d8b45d;
  --gold2:#f4d991;
  --green:#067647;
  --red:#b42318;
  --amber:#b54708;
  --soft-blue:#eef5ff;
}
body{
  background:
    radial-gradient(circle at top left, rgba(216,180,93,.18), transparent 28rem),
    linear-gradient(180deg,#f7faff 0%,#eef3f9 100%);
  min-height:100vh;
}
.topbar{
  padding:18px 22px;
  background:
    linear-gradient(135deg,rgba(8,26,53,.98),rgba(22,58,109,.97)),
    radial-gradient(circle at right, rgba(216,180,93,.28), transparent 28rem);
  border-bottom:1px solid rgba(255,255,255,.12);
  box-shadow:0 16px 46px rgba(16,42,85,.22);
}
.brand-with-mark{display:flex;align-items:center;gap:10px;color:var(--gold2)}
.rd-mark{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:13px;
  background:linear-gradient(145deg,#e5c56f,#9d7630);
  color:#071b38;font-weight:950;letter-spacing:-.05em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 10px 22px rgba(0,0,0,.22);
}
.topbar h1{font-size:22px;line-height:1.15;margin:8px 0 4px;letter-spacing:-.02em}
.topbar p{max-width:980px;font-size:14px;color:#dbe8f8}
.topbar-right .badge{border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px)}
.nav{
  top:0;
  padding:10px 16px;
  gap:7px;
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(12px);
  box-shadow:0 8px 24px rgba(16,42,85,.08);
}
.nav-btn{
  padding:9px 12px;
  border-radius:999px;
  background:#fff;
  color:#344054;
  border-color:#dbe4f0;
  box-shadow:0 1px 2px rgba(16,42,85,.04);
}
.nav-btn:hover{background:#f5f8fc;color:var(--blue);transform:translateY(-1px)}
.nav-btn.active{
  background:linear-gradient(135deg,var(--blue),var(--blue2));
  color:#fff;
  border-color:transparent;
  box-shadow:0 10px 20px rgba(16,42,85,.18);
}
main{padding:22px;max-width:1600px}
.card{
  border-radius:22px;
  border:1px solid rgba(203,213,225,.9);
  box-shadow:0 16px 40px rgba(16,42,85,.08);
  overflow:hidden;
}
.card h2{font-size:22px;letter-spacing:-.02em;color:#13233a}
.section-head{padding-bottom:12px;border-bottom:1px solid #eef2f7;margin-bottom:14px}
button{
  transition:all .15s ease;
  box-shadow:0 1px 2px rgba(16,42,85,.04);
}
button:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(16,42,85,.10)}
button:active{transform:translateY(0)}
.primary{
  background:linear-gradient(135deg,var(--blue),var(--blue2));
  border-color:transparent;
  box-shadow:0 10px 22px rgba(16,42,85,.18);
}
button.danger{background:linear-gradient(135deg,#9b1c1c,#c43a31);border-color:transparent}
.kpis{grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px}
.kpis div{
  position:relative;overflow:hidden;
  border-radius:18px;
  background:linear-gradient(180deg,#fff,#f8fbff);
  border:1px solid #dfe7f2;
}
.kpis div:before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--gold),var(--blue2));
}
.kpis b{font-size:27px;letter-spacing:-.03em}
.filters,.grid2,.grid3{background:#f8fbff;border:1px solid #e2eaf5;border-radius:18px;padding:12px}
input,select,textarea{
  background:#fff;border-color:#cfd9e8;border-radius:12px;
  outline:none;transition:border-color .15s ease, box-shadow .15s ease;
}
input:focus,select:focus,textarea:focus{border-color:#7ca3d7;box-shadow:0 0 0 4px rgba(22,58,109,.10)}
.dropzone{
  background:linear-gradient(180deg,#fbfdff,#f2f7ff);
  border-color:#aabbd3;
  border-radius:22px;
}
.dropzone strong{color:#102a55;font-size:18px}
.table-wrap{border-radius:18px;box-shadow:inset 0 1px 0 #fff;background:#fff}
table{font-size:14px}
th{
  background:#eef4fb;
  color:#24364f;
  font-size:12px;
  text-transform:uppercase;
  letter-spacing:.035em;
}
tbody tr:hover td{background:#fbfdff}
.pill{border:1px solid transparent}
.pill.ok{background:#e4f8ec;border-color:#bfeccf}
.pill.warn{background:#fff5d8;border-color:#f7d680}
.pill.err{background:#ffe8e5;border-color:#ffb8b0}
.log,.login-log{border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 10px rgba(0,0,0,.2)}
.modal-card{border-radius:22px;box-shadow:0 24px 80px rgba(0,0,0,.28)}
.modal-head{background:#f8fbff}
.mini-card{background:linear-gradient(180deg,#ffffff,#f7fbff);border-radius:18px}
.login-card{border-radius:26px;padding:30px}
.login-card input{font-size:15px}
.logout-btn:hover{background:#f3f7ff;color:#102a55}
.print-report-panel{border-radius:22px}
@media(max-width:1100px){.kpis{grid-template-columns:repeat(3,minmax(120px,1fr))}}
@media(max-width:720px){
  main{padding:12px}.topbar{padding:16px}.nav{padding:8px}.nav-btn{font-size:13px;padding:8px 10px}
  .kpis{grid-template-columns:repeat(2,minmax(120px,1fr))}
  .card{border-radius:18px;padding:14px}.actions{gap:6px}.actions button{flex:1;min-width:145px}
}

/* V26 - Roles */
body.role-technician .admin-only { display: none !important; }
body.role-superadmin .tech-only { display: none !important; }
body.role-technician .section:not(#techPortalSection) { display: none !important; }
body.role-technician #techPortalSection { display: block !important; }

.form-grid { display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; margin:12px 0; }
.tiny { padding:6px 10px; font-size:12px; border-radius:10px; }
.tiny.danger { border-color:#ef4444; color:#b91c1c; background:#fff1f2; }
@media print {
  body.role-technician header, body.role-technician nav, body.role-technician .actions, body.role-technician .filters { display:none !important; }
  body.role-technician #techPortalSection { display:block !important; }
}

/* V27 - crear técnicos desde la app */
.compact-log { min-height: 78px; max-height: 150px; white-space: pre-wrap; }
.strong-card { border: 1px solid rgba(191, 163, 106, .35); }

/* V28 - login limpio, recuperación y cambio de contraseña */
.clean-note{margin-bottom:18px!important}
.login-card .actions button{min-width:140px}
.password-panel{position:fixed;inset:0;background:rgba(8,20,42,.62);display:flex;align-items:center;justify-content:center;z-index:60;padding:18px}
.password-panel.hidden{display:none!important}
.password-card{width:min(520px,96vw);background:#fff;border:1px solid var(--line);border-radius:22px;padding:22px;box-shadow:0 26px 85px rgba(0,0,0,.35)}
.password-head{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px}
.password-head h3{margin:0;color:#102a55;font-size:24px}
.password-card label{display:block;margin-top:12px}
.password-actions{margin-top:16px}
.tech-password-btn{margin-top:8px;border-color:#102a55;background:#102a55;color:#fff;border-radius:12px;padding:10px 14px;font-weight:800}
body.role-technician .tech-password-btn{display:inline-block!important}
.topbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}


/* V31 - Mobile profesional y encabezado más limpio */
.topbar{
  align-items:center;
  min-height:128px;
}
.topbar h1{
  font-size:24px;
  margin-top:10px;
}
.topbar-right .badge{
  font-size:14px;
  padding:10px 16px;
}

@media(max-width:900px){
  .topbar{
    display:grid;
    grid-template-columns:1fr;
    gap:12px;
    padding:14px 14px 12px;
    min-height:auto;
  }
  .brand-with-mark{
    gap:8px;
    font-size:12px;
    letter-spacing:.06em;
  }
  .rd-mark{
    width:34px;
    height:34px;
    border-radius:11px;
    flex:0 0 auto;
  }
  .topbar h1{
    font-size:20px;
    margin:8px 0 0;
  }
  .topbar-right{
    justify-content:flex-start;
    gap:6px;
    margin-top:0!important;
  }
  .topbar-right .badge{
    font-size:12px;
    padding:7px 10px;
    max-width:145px;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .logout-btn,
  #changePasswordBtn,
  #logoutBtn{
    padding:8px 10px;
    font-size:12px;
    border-radius:12px;
  }
  .nav{
    padding:8px 10px;
    gap:6px;
    border-bottom:1px solid #d9e2ef;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
  }
  .nav-btn{
    font-size:12px;
    padding:8px 10px;
    min-width:max-content;
    scroll-snap-align:start;
  }
  main{
    padding:10px;
  }
  .card{
    padding:12px;
    border-radius:16px;
  }
  .card h2{
    font-size:18px;
  }
  .section-head{
    display:block;
  }
  .section-head .actions{
    margin-top:10px;
  }
  .actions button{
    flex:1 1 150px;
    min-width:130px;
    padding:9px 10px;
    font-size:13px;
  }
  .filters,
  .grid2,
  .grid3,
  .form-grid{
    grid-template-columns:1fr!important;
    padding:10px;
    gap:9px;
  }
  input,select,textarea{
    font-size:16px; /* evita zoom automático en iPhone */
  }
  .kpis{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:8px;
  }
  .kpis div{
    padding:11px;
    border-radius:14px;
  }
  .kpis b{
    font-size:21px;
  }
  .kpis span{
    font-size:12px;
  }
}

@media(max-width:760px){
  .table-wrap{
    border:0;
    border-radius:0;
    overflow:visible;
    background:transparent;
    box-shadow:none;
  }
  table.responsive-card-table{
    display:block;
    width:100%;
    background:transparent;
  }
  table.responsive-card-table thead{
    display:none;
  }
  table.responsive-card-table tbody{
    display:grid;
    gap:10px;
  }
  table.responsive-card-table tbody tr{
    display:block;
    background:#fff;
    border:1px solid var(--line);
    border-radius:16px;
    padding:10px 12px;
    box-shadow:0 6px 18px rgba(16,42,85,.06);
  }
  table.responsive-card-table tbody tr.group-row{
    background:#eef4ff;
    border-color:#cdd9ee;
    padding:10px 12px;
  }
  table.responsive-card-table tbody tr.group-row td{
    background:transparent!important;
    display:block;
    text-align:left;
    font-weight:800;
    padding:0;
  }
  table.responsive-card-table tbody td,
  table.responsive-card-table tbody th{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:14px;
    width:100%;
    border:0!important;
    border-bottom:1px solid #edf1f7!important;
    padding:8px 0;
    text-align:right;
    font-size:13px;
    background:transparent!important;
    word-break:break-word;
  }
  table.responsive-card-table tbody td:last-child,
  table.responsive-card-table tbody th:last-child{
    border-bottom:0!important;
  }
  table.responsive-card-table tbody td::before,
  table.responsive-card-table tbody th::before{
    content:attr(data-label);
    min-width:40%;
    color:#667085;
    font-weight:800;
    text-align:left;
    text-transform:none;
    letter-spacing:0;
  }
  table.responsive-card-table tbody td.empty,
  table.responsive-card-table tbody td[colspan]{
    display:block;
    text-align:center;
    color:var(--muted);
    border-bottom:0!important;
  }
  table.responsive-card-table tbody td.empty::before,
  table.responsive-card-table tbody td[colspan]::before{
    content:'';
    display:none;
  }
  .modal{
    padding:8px;
    align-items:stretch;
  }
  .modal-card{
    width:100vw;
    height:calc(100vh - 16px);
    border-radius:16px;
  }
  .pdf-panel{
    min-height:38vh;
  }
  .pdf-canvas-wrap{
    max-height:38vh;
    padding:8px;
  }
}

@media(max-width:480px){
  .topbar-right .badge{
    max-width:120px;
  }
  .topbar h1{
    font-size:18px;
  }
  .brand-with-mark span:last-child{
    max-width:245px;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .nav-btn{
    font-size:11px;
    padding:7px 9px;
  }
  .kpis{
    grid-template-columns:1fr 1fr!important;
  }
  .report-total-box,
  .summary-lines>div{
    width:100%;
  }
}


/* V32 mobile cards */
.mobile-card-list{display:none}.mobile-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:0 8px 24px rgba(16,42,85,.06)}.mobile-card+.mobile-card{margin-top:12px}.mobile-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}.mobile-card-title{font-weight:800;color:var(--blue);font-size:16px;line-height:1.25}.mobile-card-sub{font-size:13px;color:var(--muted);margin-top:3px}.mobile-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}.mobile-field{border:1px solid #e6edf7;background:#f8fbff;border-radius:12px;padding:10px}.mobile-field small{display:block;font-size:11px;color:var(--muted);font-weight:800;letter-spacing:.02em;margin-bottom:4px;text-transform:uppercase}.mobile-field b,.mobile-field span{display:block;line-height:1.35;color:var(--ink)}.mobile-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.mobile-empty{text-align:center;color:var(--muted);padding:18px;border:1px dashed #c7d3e5;background:#fbfcff;border-radius:16px}.mobile-chip{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef4ff;color:var(--blue);font-size:12px;font-weight:800}.mobile-chip.ok{background:#dcfae6;color:#067647}.mobile-chip.warn{background:#fef0c7;color:#b54708}.mobile-chip.err{background:#fee4e2;color:#b42318}@media(max-width:820px){#ordersSection .table-wrap,#estimatesSection .table-wrap,#materialsSection .table-wrap,#technicianDeductionSection .table-wrap,#historySection .table-wrap,#kardexSection .table-wrap,#internalInventorySection .table-wrap,#seriesWarehouseSection .table-wrap{display:none}.mobile-card-list{display:block}.mobile-card-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.mobile-card-grid{grid-template-columns:1fr}.mobile-card-title{font-size:15px}}
