/* SIS Ecotech — tokens de la maqueta aprobada (propuesta-sis-ecotech.html) */
:root{
  color-scheme:dark; /* barras de desplazamiento y controles nativos acordes al tema */
  --bg:#0a0e13; --panel:#111820; --panel2:#161f29; --line:#1e2a36;
  --txt:#e8eef5; --mut:#8a97a6; --acc:#2fbf71; --acc2:#25a461; --on-acc:#04120a;
  --bad:#f2555a; --warn:#f5a524; --act:#4b7bec;
  --alert-bg:rgba(242,85,90,.15); --alert-fg:#ff9ba0;
  --shadow:none;
}
html[data-theme="light"]{
  color-scheme:light;
  --bg:#f4f7f9; --panel:#ffffff; --panel2:#f2f5f8; --line:#e2e8ee;
  --txt:#111a23; --mut:#5c6b7a; --acc:#12854d; --acc2:#0e6b3e; --on-acc:#ffffff;
  --bad:#d1373d; --warn:#b26a00; --act:#2f6fe0;
  --alert-bg:#fde7e8; --alert-fg:#b42318;
  --shadow:0 1px 2px rgba(16,32,48,.06);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--txt);
  font-family:'Segoe UI',system-ui,-apple-system,Roboto,sans-serif;font-size:14px}
.muted{color:var(--mut)}

.brand{display:flex;align-items:center;gap:9px}
.brand .dot{width:26px;height:26px;border-radius:8px;background:linear-gradient(140deg,var(--acc),#6ee7a8);
  display:grid;place-items:center;color:var(--on-acc);font-weight:800;font-size:13px}
html[data-theme="light"] .brand .dot{background:linear-gradient(140deg,#12854d,#3ecf86)}
.brand b{font-size:15px;letter-spacing:.2px}
.brand small{display:block;color:var(--mut);font-size:10.5px;letter-spacing:.4px;text-transform:uppercase}

.card{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}
.btn{border:1px solid var(--line);background:var(--panel2);color:var(--txt);border-radius:9px;
  padding:8px 13px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}
.btn.pri{background:var(--acc);border-color:var(--acc);color:var(--on-acc)}
.btn.pri:hover{background:var(--acc2)}
.btn:focus-visible,.theme button:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
/* Foco con teclado igual en toda la app (enlaces del menú, tarjetas, botones chicos) */
a:focus-visible,button:focus-visible,summary:focus-visible,input[type=checkbox]:focus-visible,input[type=file]:focus-visible{outline:2px solid var(--acc);outline-offset:2px}

.theme{display:flex;align-items:center;background:var(--panel2);border:1px solid var(--line);
  border-radius:9px;padding:2px;gap:2px}
.theme button{border:0;background:transparent;color:var(--mut);font:inherit;font-size:12px;
  padding:5px 9px;border-radius:7px;cursor:pointer;white-space:nowrap}
.theme button[aria-pressed="true"]{background:var(--panel);color:var(--txt);font-weight:600;
  box-shadow:0 1px 3px rgba(0,0,0,.18)}

.form{display:flex;flex-direction:column;gap:12px}
.f{display:flex;flex-direction:column;gap:5px}
.f label{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.6px}
.f input{background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:8px;padding:10px;font-size:14px;font-family:inherit;width:100%}
.f input:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(47,191,113,.18)}
.alert{background:var(--alert-bg);color:var(--alert-fg);border-radius:9px;padding:9px 11px;font-size:13px;font-weight:600}

/* Login */
.login{min-height:100vh;display:grid;place-items:center;padding:16px}
.login-card{width:100%;max-width:360px;padding:24px;display:flex;flex-direction:column;gap:20px}
.login-foot{display:flex;justify-content:center}

/* Marco de la app (maqueta): menú lateral + columna principal */
.app{display:grid;grid-template-columns:216px minmax(0,1fr);min-height:100vh}
aside{background:var(--panel);border-right:1px solid var(--line);padding:16px 12px;
  display:flex;flex-direction:column;gap:22px}
aside .brand{padding:4px 8px 6px}
aside nav{display:flex;flex-direction:column;gap:2px}
aside nav a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:var(--mut);
  text-decoration:none;font-size:13.5px}
aside nav a:hover{background:var(--panel2);color:var(--txt)}
aside nav a.on{background:rgba(47,191,113,.13);color:var(--txt);font-weight:600;box-shadow:inset 2px 0 0 var(--acc)}
html[data-theme="light"] aside nav a.on{background:#e3f7ec;color:var(--acc2)}
aside nav .ic{width:17px;text-align:center;font-size:14px}
.grp{color:var(--mut);font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;padding:0 10px 6px}
.who{margin-top:auto;display:flex;align-items:center;gap:9px;padding:9px;border-radius:10px;background:var(--panel2)}
.who-txt{min-width:0;flex:1}
.who-txt small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.av{width:29px;height:29px;flex:none;border-radius:50%;background:#25323f;display:grid;place-items:center;
  font-weight:700;font-size:12px;color:#bfe9d2}
html[data-theme="light"] .av{background:#e3f7ec;color:#0d6b3f}
.who-name{font-weight:600;font-size:12.5px}
.who small{color:var(--mut);font-size:11px}

.top{display:flex;align-items:center;gap:14px;padding:12px 22px;border-bottom:1px solid var(--line);
  background:var(--bg);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.top h1{font-size:17px;margin:0;font-weight:650}
.top-acts{margin-left:auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.volver{color:var(--mut);text-decoration:none}
.volver:hover{color:var(--txt)}
.content{padding:20px 22px 40px;display:flex;flex-direction:column;gap:14px}
a.btn{text-decoration:none;display:inline-block}

.mini{border:1px solid var(--line);background:var(--panel2);border-radius:7px;padding:5px 9px;
  font-size:11.5px;color:var(--txt);cursor:pointer;white-space:nowrap;text-decoration:none;font-family:inherit}
.mini:hover{background:var(--panel)}
.flash{background:rgba(47,191,113,.14);color:var(--txt);border-left:3px solid var(--acc);
  border-radius:9px;padding:9px 12px;font-weight:600}

.card h2{margin:0;padding:13px 16px;font-size:13.5px;border-bottom:1px solid var(--line);font-weight:640}
.tabla{overflow-x:auto;position:relative} /* relative: el texto oculto (.sr) no se escapa del recorte y ensancha la página */
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--mut);font-size:10.5px;text-transform:uppercase;letter-spacing:.7px;
  padding:10px 16px;border-bottom:1px solid var(--line);font-weight:600;white-space:nowrap}
td{padding:11px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr:hover td{background:var(--panel2)}
td.acts{text-align:right}
.cli{font-weight:600}
.id{color:var(--mut);font-size:12px;font-family:ui-monospace,Consolas,monospace;white-space:nowrap}
.chip{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap}
.chip.off{background:var(--panel2);color:var(--mut);border:1px solid var(--line)}
.vacio{padding:22px 16px;margin:0;color:var(--mut)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

.filtros{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.filtros input[type=search]{flex:1;min-width:200px;background:var(--panel);border:1px solid var(--line);
  color:var(--txt);border-radius:9px;padding:9px 11px;font-size:13px;font-family:inherit}
.filtros input[type=search]:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(47,191,113,.18)}
.check{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:13px}
.paginas{display:flex;gap:12px;align-items:center;justify-content:center}

.form-card{max-width:640px;padding:18px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.f-help{color:var(--mut);font-size:11.5px}
.f-error{color:var(--bad);font-size:12px;font-weight:600}
.has-error input{border-color:var(--bad)}
.form-acts{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}
.zona{display:flex;align-items:center;justify-content:space-between;gap:16px}
.zona p{margin:4px 0 0;font-size:12.5px}

select{background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:9px;
  padding:9px 10px;font-size:13px;font-family:inherit}
.f select{background:var(--panel2);border-radius:8px;padding:10px;font-size:14px;width:100%}
select:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(47,191,113,.18)}
.has-error select{border-color:var(--bad)}
.pestanas{display:flex;gap:4px;border-bottom:1px solid var(--line)}
.pestanas a{padding:8px 14px;color:var(--mut);text-decoration:none;font-weight:600;border-bottom:2px solid transparent;margin-bottom:-1px}
.pestanas a:hover{color:var(--txt)}
.pestanas a.on{color:var(--txt);border-bottom-color:var(--acc)}
form.inline{display:inline}
td.acts{white-space:nowrap}
.link{color:var(--acc);font-weight:600}

/* KPIs (maqueta) */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:13px;padding:12px 15px;position:relative;
  overflow:hidden;box-shadow:var(--shadow);color:var(--txt);text-decoration:none}
.kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--line)}
.kpi.k-ok:before{background:var(--acc)} .kpi.k-act:before{background:var(--act)}
.kpi.k-today:before{background:var(--warn)} .kpi.k-off:before{background:var(--mut)}
.kpi.sel{border-color:var(--acc)}
.kpi .lab{color:var(--mut);font-size:11.5px;text-transform:uppercase;letter-spacing:.6px}
.kpi .n{font-size:26px;font-weight:750;margin-top:4px}
.chip.ok{background:rgba(47,191,113,.14);color:#8ff0b7}
.chip.act{background:rgba(75,123,236,.16);color:#a9c1ff}
.chip.today{background:rgba(245,165,36,.15);color:#ffc978}
html[data-theme="light"] .chip.ok{background:#e3f7ec;color:#0d6b3f}
html[data-theme="light"] .chip.act{background:#e5edfd;color:#1d4fb8}
html[data-theme="light"] .chip.today{background:#fdf1dc;color:#8a5300}
.estado-actual{color:var(--mut);font-size:13px}
.form-card h2{margin:-18px -18px 0;padding:13px 18px}

/* Alquileres */
.chip.late{background:rgba(242,85,90,.15);color:#ff9ba0}
html[data-theme="light"] .chip.late{background:#fde7e8;color:#b42318}
.nueva-op{display:flex;flex-direction:column;gap:14px}
.nueva-op .card .form{padding:14px 16px}
textarea{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:10px;
  font-size:14px;font-family:ui-monospace,Consolas,monospace;width:100%;resize:vertical}
textarea:focus,.f input[type=search]:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(47,191,113,.18)}
.f input[type=search]{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:10px;font-size:14px;font-family:inherit;width:100%}
.lista-equipos{max-height:420px;overflow-y:auto;border-top:1px solid var(--line)}
.lista-equipos input[type=checkbox]{width:17px;height:17px;accent-color:var(--acc)}
.lista-equipos label{cursor:pointer}
.resumen-op{max-width:none;display:flex;flex-wrap:wrap;gap:24px}
.resumen-op .lab{color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:4px}
.f input[type=date]{color-scheme:dark}
html[data-theme="light"] .f input[type=date]{color-scheme:light}

/* Devolver */
.mini.p{background:rgba(47,191,113,.13);border-color:rgba(47,191,113,.35);color:#a8f0c8;font-weight:600}
html[data-theme="light"] .mini.p{background:#e3f7ec;border-color:#bfe9d2;color:#0d6b3f}
.devolver-acts{display:flex;align-items:flex-end;gap:10px}
.devolver-acts .f input{width:auto}
/* Cambiar equipo: el texto arriba y los campos en una fila debajo (son más que en Devolver/Extender) */
#cambiar.zona{flex-direction:column;align-items:stretch}
.cambiar-campos{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:10px}
.con-boton{display:flex;gap:6px}
.con-boton input{flex:1;min-width:0}
.cambiar-campos .btn{justify-self:start}
.cambio-nota{font-size:12px;margin-top:4px}
button.link{background:none;border:0;padding:0;font:inherit;cursor:pointer}
td.acts form.inline{margin-left:6px}

/* Hoy (maqueta) */
aside nav .badge{margin-left:auto;background:var(--bad);color:#fff;border-radius:20px;font-size:10.5px;padding:1px 6px;font-weight:700}
.kpi.k-late:before{background:var(--bad)}
.kpi .sub{color:var(--mut);font-size:11.5px;margin-top:2px}
.kpi .sub b{color:var(--bad)}
.card h2 .tag{background:rgba(242,85,90,.15);color:#ff9ba0;font-size:10.5px;padding:2px 7px;border-radius:20px;font-weight:700;margin-left:6px}
html[data-theme="light"] .card h2 .tag{background:#fde7e8;color:#b42318}
.late-d{color:var(--bad);font-weight:700}
.note{color:var(--mut);font-size:11px;padding:10px 16px 14px}

/* Remito imprimible: siempre en claro, en pantalla y en papel */
.remito-barra{display:flex;justify-content:space-between;gap:10px;max-width:800px;margin:16px auto;padding:0 16px}
.remito{max-width:800px;margin:0 auto 32px;background:#fff;color:#111a23;border:1px solid #e2e8ee;border-radius:10px;padding:28px}
.remito .brand small,.remito .lab{color:#5c6b7a}
.remito-cab{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #12854d;padding-bottom:14px}
.remito-num{text-align:right;font-size:13px}
.remito-tipo{text-transform:uppercase;letter-spacing:.8px;font-size:12px;color:#5c6b7a}
.remito-n{font-family:ui-monospace,Consolas,monospace;font-size:20px;font-weight:700;margin:2px 0}
.remito-datos{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;padding:16px 0;font-size:13px}
.remito-datos .lab{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.6px}
.remito-items th{color:#5c6b7a;border-bottom:1px solid #e2e8ee}
.remito-items td{border-bottom:1px solid #eef2f5;padding:8px 16px}
.remito-items tbody tr:hover td{background:none}
.remito-items tfoot td{font-weight:700;border-bottom:0}
.remito-items tr.renglon td{height:30px}
.remito .en-blanco{display:block;border-bottom:1px solid #b8c2cc;height:18px}
.remito-firmas{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:64px;font-size:12px;color:#5c6b7a}
.remito-firmas span{display:block;border-top:1px solid #111a23;margin-bottom:6px}
@media print{
  body{background:#fff}
  .no-print{display:none!important}
  .remito{border:0;border-radius:0;margin:0;max-width:none;padding:0}
}

/* Precios */
.precios{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;align-items:start}

/* Calendario */
.calendario th,.calendario td{padding:8px 6px;text-align:center}
.calendario .cal-modelo{text-align:left;padding-left:16px;position:sticky;left:0;background:var(--panel);min-width:200px;z-index:1}
.calendario th.cal-dia{font-size:10px;line-height:1.3;min-width:46px}
.calendario th.finde{color:var(--txt);opacity:.6}
.calendario th.hoy{color:var(--acc);font-weight:800}
.calendario td.hoy{box-shadow:inset 0 0 0 2px var(--acc)}
.cal-n{font-weight:700;font-variant-numeric:tabular-nums}
.calendario tr.cal-rubro td{border-top:2px solid var(--line)}
.calendario tr.cal-rubro .cal-modelo .cli{font-weight:800}
.cal-res{display:block;font-size:9px;font-weight:600;opacity:.8;white-space:nowrap}
/* Calendario (Mapa): número normal; color solo si aprieta. La barra fina es la parte libre (no informa solo el color). */
.calendario td.cal-n{padding:0}
.cal-celda{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 6px;color:var(--txt);text-decoration:none;min-height:100%}
.cal-celda:hover{background:var(--panel2)}
.cal-num{font-weight:600}
.cal-n.medio .cal-num{color:var(--warn);font-weight:800}
.cal-n.sin .cal-num{color:var(--bad);font-weight:800}
.cal-n.medio{background:color-mix(in srgb,var(--warn) 9%,transparent)}
.cal-n.sin{background:color-mix(in srgb,var(--bad) 11%,transparent)}
.cal-pb{display:block;width:30px;height:3px;border-radius:2px;background:var(--line);overflow:hidden}
.cal-pb span{display:block;height:100%;background:var(--mut)}
.cal-n.medio .cal-pb span{background:var(--warn)} .cal-n.sin .cal-pb span{background:var(--bad)}
.pb-0{width:0}.pb-1{width:10%}.pb-2{width:20%}.pb-3{width:30%}.pb-4{width:40%}.pb-5{width:50%}.pb-6{width:60%}.pb-7{width:70%}.pb-8{width:80%}.pb-9{width:90%}.pb-10{width:100%}
.calendario tr.cal-rubro td,.calendario tr.cal-rubro th{border-top:3px solid var(--line)}
.calendario tr.cal-rubro .cal-num{font-size:15px;font-weight:800}
.calendario th.cal-modelo{font-weight:400;text-align:left}
.calendario th.rango{background:color-mix(in srgb,var(--acc) 14%,transparent);color:var(--txt)}
.calendario td.rango{box-shadow:inset 0 2px 0 var(--acc)}
.calendario tr.cal-busqueda th.rango{color:var(--acc);font-weight:800;font-size:11px;text-transform:none;border-bottom:2px solid var(--acc)}
.calendario tr.cal-reservas td,.calendario tr.cal-reservas th{padding:3px 2px;border-top:0}
.calendario td.cal-barra-res{max-width:0} /* la barra no ensancha las columnas: el texto se corta con "…" (completo en el título) */
.cal-barra-res a{display:block;padding:3px 6px;border:1px dashed var(--mut);border-radius:6px;background:var(--panel2);color:var(--txt);font-size:11px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none}
.cal-barra-res a:hover{border-color:var(--acc)}
.cal-sin-res{font-size:11px;text-align:left !important}
.cal-barra{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:14px}
.cal-buscador{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px}
.cal-buscador .f{min-width:150px}
.cal-buscador select,.cal-buscador input{width:100%}
.cal-acciones{display:flex;gap:8px;padding-top:20px}
.segmentos{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.segmentos a{padding:8px 12px;color:var(--mut);text-decoration:none;font-size:13px;font-weight:600}
.segmentos a[aria-current]{background:var(--acc);color:var(--on-acc)}
.cal-resultado{display:flex;align-items:center;gap:16px}
.cal-numero{font-size:44px;font-weight:800;line-height:1;color:var(--acc);font-variant-numeric:tabular-nums}
.cal-numero.cero{color:var(--bad)}
.cal-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.cal-nav{display:flex;gap:6px}
.cal-leyenda{display:flex;flex-wrap:wrap;gap:6px 18px;list-style:none;padding:12px 16px 0;margin:0;font-size:12px;color:var(--mut)}
.cal-leyenda li{display:flex;align-items:center;gap:6px}
.cal-mues{width:14px;height:14px;border-radius:4px;border:1px solid var(--line)}
.cal-mues.medio{background:var(--warn);border-color:var(--warn)} .cal-mues.sin{background:var(--bad);border-color:var(--bad)}
.cal-ayuda{padding:6px 16px 0;font-size:12px}
.cal-dialogo{border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--txt);max-width:min(560px,calc(100vw - 32px));width:100%;padding:16px}
.cal-dialogo::backdrop{background:rgba(0,0,0,.45)}
.cal-dialogo-cab{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.cal-detalle{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-direction:column;gap:8px;font-size:13px}
.filtros input[type=date]{background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:8px 10px;font-family:inherit;color-scheme:dark}
html[data-theme="light"] .filtros input[type=date]{color-scheme:light}

/* Usuarios */
.checks{display:flex;flex-wrap:wrap;gap:8px 18px}
.f label.check{display:inline-flex;flex-direction:row;align-items:center;gap:7px;text-transform:none;letter-spacing:0;
  font-size:13.5px;color:var(--txt);cursor:pointer}
.f label.check input{width:16px;height:16px;margin:0}
.check input{accent-color:var(--acc)}
.who-link{color:var(--mut);text-decoration:none}
.who-link:hover{color:var(--acc);text-decoration:underline}

/* Búsqueda global (maqueta) */
.buscar{margin-left:auto;position:relative;display:flex;align-items:center}
.buscar input{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:7px 44px 7px 10px;
  min-width:260px;color:var(--txt);font-size:13px;font-family:inherit}
.buscar input:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(47,191,113,.18)}
.buscar .kbd{position:absolute;right:8px;border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:10.5px;color:var(--mut);pointer-events:none}
.top .buscar + .top-acts{margin-left:0}
.resultados{display:flex;flex-direction:column;gap:14px}

/* Escáner con cámara */
dialog.escaner{background:var(--panel);color:var(--txt);border:1px solid var(--line);border-radius:13px;padding:16px;
  width:min(480px,calc(100vw - 32px))}
dialog.escaner::backdrop{background:rgba(0,0,0,.6)}
.escaner-cab{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.escaner-estado{color:var(--mut);font-size:13px}
dialog.escaner video{width:100%;border-radius:9px;background:#000;aspect-ratio:4/3;object-fit:cover}
.escaner-leidos{margin:8px 0;padding-left:18px;font-family:ui-monospace,Consolas,monospace;font-size:13px;max-height:120px;overflow:auto}

/* Etiquetas de equipo (siempre en blanco para imprimir).
   Tamaño real: 55 × 29 mm, térmica 3nStar RPT-004 en rollo (una etiqueta por página).
   La página con nombre "etiqueta" fija ese tamaño solo para las etiquetas (los remitos siguen en A4). */
.etiquetas{display:flex;flex-wrap:wrap;gap:12px;max-width:800px;margin:0 auto 32px;padding:0 16px;justify-content:center}
.etiqueta{background:#fff;color:#111a23;border:1px dashed #b8c2cc;border-radius:4px;box-sizing:border-box;
  width:55mm;height:29mm;padding:1.5mm 2.5mm;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6mm;break-inside:avoid}
.etq-barras svg{display:block;width:50mm;height:11mm}
.etq-interno{font-family:ui-monospace,Consolas,monospace;font-size:7.5pt;letter-spacing:.3px;white-space:nowrap;text-align:center;line-height:1.1}
.etq-interno b{font-size:12pt}
.etq-pie{display:flex;flex-wrap:wrap;justify-content:center;gap:0 5px;font-size:6.5pt;line-height:1.15;color:#222;text-align:center;max-height:6.2mm;overflow:hidden}
.etq-marca{font-weight:800;color:#12854d}
@page etiqueta{size:55mm 29mm;margin:0}
@media print{
  .etiquetas{display:block;margin:0;padding:0;max-width:none}
  .etiqueta{page:etiqueta;border:0;border-radius:0;margin:0;break-after:page}
  .etiqueta:last-child{break-after:auto}
  .etq-pie,.etq-marca{color:#000} /* térmica: solo negro */
}

/* Reservas */
.lineas-reserva select,.lineas-reserva input{background:var(--panel2);border:1px solid var(--line);color:var(--txt);border-radius:8px;padding:8px;font-family:inherit;width:100%}
.lineas-reserva input.cant{max-width:110px}

/* Celular y tablet: el menú pasa arriba y se desplaza de costado */
@media (max-width:900px){
  .app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr} /* minmax: que el menú ancho no estire la página; auto: el menú no se estira en páginas cortas */
  aside{flex-direction:row;align-items:center;gap:10px;padding:8px 12px;border-right:0;
    border-bottom:1px solid var(--line);overflow-x:auto}
  aside .brand small,.grp,.who-txt{display:none}
  aside nav{flex-direction:row}
  aside nav a{white-space:nowrap}
  .who{margin:0 0 0 auto;padding:4px;background:transparent}
  .top{padding:10px 16px;position:static}
  .content{padding:16px 16px 32px}
  .row2{grid-template-columns:1fr}
  .kpis{grid-template-columns:repeat(2,1fr)}
  .buscar{order:3;width:100%;margin-left:0}
  .buscar input{min-width:0;width:100%}
  .buscar .kbd{display:none}
  .zona{flex-direction:column;align-items:flex-start}
  .remito{padding:16px}
  .remito-datos{grid-template-columns:1fr}
  /* Pestañas de estado: se desplazan de costado en vez de ensanchar la página */
  .pestanas{overflow-x:auto;scrollbar-width:none}
  .pestanas a{white-space:nowrap;margin-bottom:0}
}

/* Importar equipos (CSV) */
.ejemplo-csv{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:12px;overflow-x:auto;margin:4px 0 12px}
.lista-errores{margin:8px 0 0;padding-left:18px;max-height:260px;overflow:auto}

/* Espaciados de bloques dentro de tarjetas (sin style="" en línea: la CSP los bloquea) */
.pad-card{padding:12px 16px}
.pad-card-top{padding:12px 16px 0}
.pad-top{padding-top:14px}
.mayus{text-transform:uppercase}

/* Versión y novedades (como en presu) */
.version{align-self:flex-start;margin:6px 0 0 9px;padding:2px 6px;border-radius:6px;color:var(--mut);font-size:11px;text-decoration:none;position:relative}
.version:hover,.version.on{color:var(--txt);background:var(--panel2)}
.version.nuevo::after{content:'';position:absolute;top:1px;right:-3px;width:7px;height:7px;border-radius:50%;background:var(--acc)}
.cl-ver{padding:14px 0;border-top:1px solid var(--line)}
.cl-ver:first-child{border-top:0;padding-top:2px}
.cl-h{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;margin:0}
.cl-h .f{margin-left:auto;font-size:12px;font-weight:400}
.cl-nota{margin:6px 0 0;font-size:13px}
.cl-ver ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.cl-ver li{display:grid;grid-template-columns:90px 1fr;gap:10px;font-size:13.5px;line-height:1.45;align-items:start}
.cl-ver li .chip{justify-self:start}
@media (max-width:520px){.cl-ver li{grid-template-columns:1fr;gap:3px}}
@media (max-width:900px){.version{align-self:center;margin:0;white-space:nowrap}}
/* Simulador de precios */
.campo-corto{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:13px}
.filtros input[type=number]{width:90px;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:8px 10px;font-family:inherit}
.filtros input[type=number]:focus{outline:none;border-color:var(--acc)}
.simulador{margin-top:14px}
.sim-res{display:flex;flex-wrap:wrap;gap:28px;margin-bottom:14px}
.sim-res .lab{color:var(--mut);font-size:11px;text-transform:uppercase;letter-spacing:.6px;margin-bottom:4px}
.sim-res b{font-size:20px}
.sim-res .sim-total{color:var(--acc)}
.simulador caption{text-align:left;padding-bottom:6px}
.simulador tr.on td{background:var(--panel2);font-weight:700}

/* Precios: calculadora y actualizar por % */
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:700px){.row3{grid-template-columns:1fr}}
fieldset.f{border:0;margin:0;padding:0;min-width:0}
fieldset.f legend{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.6px;margin-bottom:6px;padding:0}
.calc-rubros{display:flex;flex-wrap:wrap;gap:6px 16px}
.f label.chk{display:flex;align-items:center;gap:6px;font-size:13.5px;color:var(--txt);text-transform:none;letter-spacing:0;cursor:pointer}
.f label.chk input{width:auto;padding:0;accent-color:var(--acc)}
.filtros input.campo-num{width:90px;background:var(--panel);border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:8px 10px;font-family:inherit}
.calc td,.calc th{white-space:nowrap}
@media (max-width:700px){.calendario .cal-modelo{min-width:120px;max-width:140px;padding-left:10px}.cal-acciones{padding-top:0;width:100%}.cal-buscador .f{flex:1 1 140px}}
.calendario tr.cal-reservas th.cal-modelo{padding-left:16px}
@media (max-width:700px){.calendario .cal-modelo{overflow:hidden}.calendario .cal-modelo .cli,.calendario .cal-modelo .id{white-space:normal;overflow-wrap:anywhere;font-size:11px}}

/* Calendario (Línea de tiempo): barras con texto visible; el color acompaña, no informa solo */
.calendario tr.tl-fila td,.calendario tr.tl-fila th{padding:3px 2px;border-top:0}
.calendario tr.tl-fila.tl-primera td,.calendario tr.tl-fila.tl-primera th{border-top:1px solid var(--line)}
.calendario tr.tl-fila th.cal-modelo{padding-left:16px}
.calendario td.tl-barra{max-width:0}
.tl-barra a,.tl-barra span{display:block;padding:4px 6px;border-radius:6px;font-size:11px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--txt);text-decoration:none}
.tl-ot a{background:color-mix(in srgb,var(--acc) 24%,transparent);border:1px solid var(--acc)}
.tl-sv a,.tl-sv span{background:color-mix(in srgb,var(--bad) 16%,transparent);border:1px dashed var(--bad)}
.tl-barra a:hover{filter:brightness(1.1)}
.cal-mues.tl-m-ot{background:color-mix(in srgb,var(--acc) 24%,transparent);border-color:var(--acc)}
.cal-mues.tl-m-res{background:var(--panel2);border:1px dashed var(--mut)}
.cal-mues.tl-m-sv{background:color-mix(in srgb,var(--bad) 16%,transparent);border:1px dashed var(--bad)}
.calendario tr.tl-fila th.cal-modelo{vertical-align:top}
