/* Portal Valencia Mar · estilos (claro y oscuro) */
:root{
  --marca:#00a69c;--marca2:#1d8a8f;--marca-suave:#e3f4f3;--fondo:#f4f6f7;--superficie:#fff;--superficie2:#f8fafa;--texto:#1b2428;--suave:#5b6a72;--borde:#dfe5e8;
  --rojo:#c4321f;--rojo-suave:#fdecea;--verde:#137a4a;--verde-suave:#e6f6ee;--ambar:#a95b07;--ambar-suave:#fff5e1;--azul:#1f5fbf;--azul-suave:#e9f1fd;
  --sombra:0 1px 2px rgba(16,24,28,.06),0 4px 14px rgba(16,24,28,.05);--radio:10px;--lateral:248px;
  --mapa-agua:#cfe7ee;--mapa-agua2:#b9dce7;--mapa-mar:#5d9fb5;--mapa-tierra:#ece7dd;--mapa-tierra-borde:#d3cab9;--mapa-pantalan:#8b7e6c;--mapa-hueco:#ffffff;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --marca-suave:#123a3a;--fondo:#0f1517;--superficie:#172024;--superficie2:#1b262b;--texto:#e6eef0;--suave:#9db0b8;--borde:#2a383e;
  --rojo:#ff7b6b;--rojo-suave:#3a1f1c;--verde:#5fd49a;--verde-suave:#163226;--ambar:#f0b35c;--ambar-suave:#3a2c16;--azul:#7fb0ff;--azul-suave:#1b2a42;
  --sombra:0 1px 2px rgba(0,0,0,.4);--mapa-agua:#173640;--mapa-agua2:#122c35;--mapa-mar:#0c2129;--mapa-tierra:#2a2f30;--mapa-tierra-borde:#3a4244;--mapa-pantalan:#a39176;--mapa-hueco:#22323a}}
:root[data-theme="dark"]{
  --marca-suave:#123a3a;--fondo:#0f1517;--superficie:#172024;--superficie2:#1b262b;--texto:#e6eef0;--suave:#9db0b8;--borde:#2a383e;
  --rojo:#ff7b6b;--rojo-suave:#3a1f1c;--verde:#5fd49a;--verde-suave:#163226;--ambar:#f0b35c;--ambar-suave:#3a2c16;--azul:#7fb0ff;--azul-suave:#1b2a42;
  --sombra:0 1px 2px rgba(0,0,0,.4);--mapa-agua:#173640;--mapa-agua2:#122c35;--mapa-mar:#0c2129;--mapa-tierra:#2a2f30;--mapa-tierra-borde:#3a4244;--mapa-pantalan:#a39176;--mapa-hueco:#22323a}
*{box-sizing:border-box}
[hidden]{display:none!important}
.marca-movil{display:none}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:14.5px;line-height:1.45;color:var(--texto);background:var(--fondo)}
a{color:var(--marca2)}a:hover{color:var(--marca)}
.ico{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* Estructura */
.lateral{position:fixed;inset:0 auto 0 0;width:var(--lateral);background:var(--superficie);border-right:1px solid var(--borde);display:flex;flex-direction:column;z-index:30;overflow-y:auto}
.lateral .marca img,.cab .marca img{background:#fff;border-radius:6px;padding:2px}
.lateral .marca{display:flex;align-items:center;gap:10px;padding:14px 18px;text-decoration:none;color:var(--texto);font-weight:650;font-size:17px;border-bottom:1px solid var(--borde)}
.lateral nav{padding:8px 10px;flex:1}
.grupo{margin:10px 0 4px}.grupo>span{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--suave);padding:6px 10px}
.grupo a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;color:var(--texto);text-decoration:none;font-size:14px}
.grupo a:hover{background:var(--superficie2)}
.grupo a.activa{background:var(--marca-suave);color:var(--marca2);font-weight:600}
.grupo a .badge{margin-left:auto}
.badge{background:var(--marca2);color:#fff;border-radius:10px;padding:0 7px;font-size:11.5px;font-weight:700;line-height:18px}
.lateral-pie{font-size:11.5px;color:var(--suave);padding:12px 18px;border-top:1px solid var(--borde)}
.principal{margin-left:var(--lateral);min-height:100vh;display:flex;flex-direction:column}
body.sin-menu .principal{margin-left:0}
.cab{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:10px 24px;background:color-mix(in srgb,var(--fondo) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--borde)}
.cab .marca.solo{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--texto);font-weight:650}
.busqueda{flex:1;max-width:560px;display:flex;align-items:center;gap:8px;background:var(--superficie);border:1px solid var(--borde);border-radius:9px;padding:0 10px}
.busqueda:focus-within{border-color:var(--marca2);box-shadow:0 0 0 3px var(--marca-suave)}
.busqueda input{border:0;background:transparent;flex:1;padding:8px 0;outline:none;color:var(--texto);font:inherit;box-shadow:none!important}
.busqueda .ico{color:var(--suave)}
.flex1{flex:1}
.icono-btn{background:var(--superficie);border:1px solid var(--borde);color:var(--texto);border-radius:9px;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.icono-btn:hover{border-color:var(--marca2);color:var(--marca2);filter:none}
.hamb{display:none}
.cuenta{position:relative;margin-left:auto}.cuenta summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:3px 10px 3px 3px;border-radius:20px;border:1px solid var(--borde);background:var(--superficie)}
.cuenta summary::-webkit-details-marker{display:none}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--marca2);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}
.menu-cuenta{position:absolute;right:0;top:calc(100% + 6px);background:var(--superficie);border:1px solid var(--borde);border-radius:10px;box-shadow:var(--sombra);padding:8px;min-width:190px;display:flex;flex-direction:column;gap:4px;z-index:40}
.menu-cuenta a,.menu-cuenta button{padding:7px 8px;border-radius:6px;text-decoration:none;color:var(--texto);display:flex;gap:8px;align-items:center}
.menu-cuenta a:hover,.menu-cuenta button:hover{background:var(--superficie2);color:var(--texto)}
.menu-cuenta .rol{font-size:12px;color:var(--suave);padding:2px 8px 6px;border-bottom:1px solid var(--borde);text-transform:capitalize}
main{width:100%;max-width:1320px;margin:0 auto;padding:20px 24px 40px}
body.ancho-completo main{max-width:none;padding:12px 16px 16px}
.titulo{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:6px 0 16px;flex-wrap:wrap}
h1{font-size:22px;margin:0;letter-spacing:-.01em}.sub{margin:4px 0 0;color:var(--suave)}
body.ancho-completo .titulo{margin:0 0 10px}body.ancho-completo h1{font-size:19px}
h2{font-size:16px;margin:26px 0 10px}h3{font-size:14.5px;margin:18px 0 8px}

/* Componentes */
.tarjetas{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.tarjeta,.caja{background:var(--superficie);border:1px solid var(--borde);border-radius:var(--radio);padding:14px 16px;box-shadow:var(--sombra)}
.caja{margin-bottom:14px}
.tarjeta .t{color:var(--suave);font-size:12.5px;display:flex;align-items:center;gap:6px}.tarjeta .v{font-size:25px;font-weight:680;margin-top:4px;letter-spacing:-.02em}
.tarjeta .ico{color:var(--marca2)}
a.tarjeta{text-decoration:none;color:inherit;display:block}a.tarjeta:hover{border-color:var(--marca2);color:inherit}
.tabla-scroll{overflow:auto;background:var(--superficie);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra);max-height:75vh}
table{border-collapse:separate;border-spacing:0;width:100%}
th,td{padding:8px 12px;border-bottom:1px solid var(--borde);text-align:left;vertical-align:top;font-size:13.8px}
th{background:var(--superficie2);font-weight:600;white-space:nowrap;position:sticky;top:0;z-index:1;font-size:12.5px;color:var(--suave);text-transform:uppercase;letter-spacing:.03em}
th.ordenable{cursor:pointer;user-select:none}th.ordenable:hover{color:var(--marca2)}th[aria-sort="ascending"]::after{content:" ▲"}th[aria-sort="descending"]::after{content:" ▼"}
tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--superficie2)}
tfoot td{font-weight:700;background:var(--superficie2);border-top:1px solid var(--borde)}
.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.filtro-tabla{display:flex;align-items:center;gap:8px;margin:0 0 8px}.filtro-tabla input{max-width:280px}.filtro-tabla span{color:var(--suave);font-size:12.5px}
form.fila{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin-bottom:14px}
label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--suave)}
input,select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--borde);border-radius:8px;background:var(--superficie);color:var(--texto)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--marca2);box-shadow:0 0 0 3px var(--marca-suave)}
input[type=range]{padding:0;accent-color:var(--marca2)}input[type=checkbox]{accent-color:var(--marca2)}
textarea{width:100%;min-height:130px;font-family:ui-monospace,Consolas,monospace;font-size:13px}
button,.boton{font:inherit;font-weight:550;background:var(--marca2);color:#fff;border:1px solid var(--marca2);border-radius:8px;padding:8px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;line-height:1.3}
button:hover,.boton:hover{filter:brightness(1.07);color:#fff}
button.sec,.boton.sec{background:var(--superficie);color:var(--marca2);border-color:var(--borde)}button.sec:hover,.boton.sec:hover{border-color:var(--marca2);color:var(--marca2)}
button.peligro{background:var(--rojo);border-color:var(--rojo)}
button.enlace{background:none;border:0;color:var(--marca2);padding:0;font-weight:500}
button.cargando{opacity:.7;pointer-events:none}button.cargando::after{content:"";width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:gira .7s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:12px}
.msg.ok{background:var(--verde-suave);color:var(--verde)}.msg.error{background:var(--rojo-suave);color:var(--rojo)}.msg.info{background:var(--azul-suave);color:var(--azul)}
.confidencial{background:var(--ambar-suave);color:var(--ambar);padding:6px 12px;border-radius:8px;font-size:12.5px;margin-bottom:12px}
.vacio,.aviso{color:var(--suave)}.aviso{font-size:12.8px}
p.vacio{padding:18px;text-align:center;background:var(--superficie);border:1px dashed var(--borde);border-radius:var(--radio)}
.estado{padding:2px 9px;border-radius:10px;font-size:12px;white-space:nowrap;font-weight:550}
.estado.ok,.estado.enviado,.estado.hecho{background:var(--verde-suave);color:var(--verde)}.estado.error{background:var(--rojo-suave);color:var(--rojo)}
.estado.pendiente,.estado.propuesta,.estado.enviando,.estado.en{background:var(--ambar-suave);color:var(--ambar)}.estado.excluido,.estado.cancelado{background:var(--superficie2);color:var(--suave)}
.login{max-width:400px;margin:8vh auto;background:var(--superficie);border:1px solid var(--borde);border-radius:14px;padding:28px;box-shadow:var(--sombra)}
.login form{display:flex;flex-direction:column;gap:14px}.login button{justify-content:center;padding:10px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid3{display:grid;grid-template-columns:2fr 1fr;gap:16px}
dl.ficha{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}dl.ficha dt{color:var(--suave)}dl.ficha dd{margin:0}
.pestanas{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 12px}.pestanas a{padding:6px 12px;border:1px solid var(--borde);border-radius:20px;background:var(--superficie);text-decoration:none;font-size:13.5px}
iframe.pdf{width:100%;height:80vh;border:1px solid var(--borde);border-radius:var(--radio);background:#fff}
iframe.correo{width:100%;height:70vh;border:1px solid var(--borde);border-radius:var(--radio);background:#fff}
.barra{height:8px;background:var(--borde);border-radius:5px;overflow:hidden;display:block}.barra span{display:block;height:100%;background:var(--marca)}
.barra.mini{display:inline-block;width:80px;vertical-align:middle}
code{background:var(--superficie2);border:1px solid var(--borde);padding:1px 5px;border-radius:5px;white-space:nowrap;font-size:12.5px}
.ocup-pants{display:grid;grid-template-columns:repeat(auto-fill,minmax(54px,1fr));gap:8px;align-items:end}
.ocup-pants a{display:flex;flex-direction:column;align-items:center;gap:4px;text-decoration:none;color:var(--texto);font-size:12px}
.ocup-pants .col{width:100%;height:84px;background:var(--superficie2);border:1px solid var(--borde);border-radius:6px;display:flex;align-items:flex-end;overflow:hidden}
.ocup-pants .col span{display:block;width:100%;background:linear-gradient(var(--marca),var(--marca2))}
.ocup-pants small{color:var(--suave)}
.meteo-mini{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.meteo-mini b{font-size:21px}.meteo-mini small,.meteo-mini span{display:block;color:var(--suave);font-size:12px}
.rojo{color:var(--rojo)}.ambar{color:var(--ambar)}
.resultados .grupo-res{margin-bottom:18px}

/* Mapa */
.mapa-app{display:flex;flex-direction:column;height:calc(100vh - 128px);min-height:520px;gap:10px}
.mapa-barra{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.seg{display:inline-flex;background:var(--superficie);border:1px solid var(--borde);border-radius:9px;padding:3px;gap:2px}
.seg button{background:transparent;color:var(--suave);border:0;padding:6px 10px;border-radius:7px;font-weight:550;font-size:13px;white-space:nowrap}
.seg button:hover{color:var(--texto)}.seg button.activo{background:var(--marca2);color:#fff}
.buscar-mapa{flex-direction:row;align-items:center;gap:6px;background:var(--superficie);border:1px solid var(--borde);border-radius:9px;padding:0 10px}
.buscar-mapa svg{width:16px;height:16px;fill:none;stroke:var(--suave);stroke-width:2;flex:none}.buscar-mapa input{border:0;padding:7px 0;width:180px;box-shadow:none!important;background:transparent}
.capas{display:flex;gap:12px;flex-wrap:wrap}.capas label,label.check{flex-direction:row;align-items:center;gap:6px;color:var(--texto);font-size:13px}
.mapa-cuerpo{flex:1;display:flex;gap:12px;min-height:0}
.mapa-lienzo{position:relative;flex:1;border:1px solid var(--borde);border-radius:var(--radio);overflow:hidden;background:var(--mapa-agua);touch-action:none;box-shadow:var(--sombra)}
.mapa-lienzo.fijando{cursor:crosshair!important}
#mapa-svg{width:100%;height:100%;display:block;user-select:none}
#mapa-canvas{position:absolute;inset:0;pointer-events:none}
.hueco{stroke:color-mix(in srgb,var(--mapa-pantalan) 55%,transparent);stroke-width:.5}
.hueco.sel{stroke:#ff3d71;stroke-width:2.2}
.barco{stroke:rgba(0,0,0,.35);stroke-width:.5;transition:fill .25s}
.barco.excede{stroke:#d64545;stroke-width:1.4}
.fantasma{fill:rgba(124,92,255,.18);stroke:#7c5cff;stroke-width:.9;stroke-dasharray:2.5 1.6}
.cod{font-size:4.4px;text-anchor:middle;fill:var(--texto);pointer-events:none;display:none;font-weight:600}
#mapa-svg.con-codigos .cod{display:block}
.etiqueta-pant circle{fill:var(--superficie);stroke:var(--mapa-pantalan);stroke-width:1}.etiqueta-pant text{font-size:10px;font-weight:700;text-anchor:middle;fill:var(--texto)}
.escollera{stroke:#9b978c;stroke-width:22;stroke-linecap:round;stroke-dasharray:3 4}.paseo{fill:none;stroke:color-mix(in srgb,var(--mapa-tierra-borde) 70%,#c9a27a);stroke-width:5;stroke-linejoin:round;opacity:.6}
.rotulo{font-size:26px;fill:var(--suave);font-weight:700;letter-spacing:.12em;text-transform:uppercase;text-anchor:middle;opacity:.7}.rotulo.peq{font-size:12px;letter-spacing:.06em}.rotulo.agua{fill:#fff;opacity:.85}
.rotulo-mh{font-size:13px;fill:var(--suave);font-weight:600;letter-spacing:.08em;text-transform:uppercase}
.marca circle{fill:#ff3d71;stroke:#fff;stroke-width:1.4}.marca text{font-size:8px;font-weight:700;fill:#fff;text-anchor:middle;pointer-events:none}
.bocana line{stroke:#7c5cff;stroke-width:3;stroke-linecap:round}.bocana circle{fill:#7c5cff;stroke:#fff;stroke-width:1.5}.bocana text{font-size:10px;text-anchor:middle;fill:#7c5cff;font-weight:700}
.mapa-zoom{position:absolute;left:12px;top:12px;display:flex;flex-direction:column;gap:4px}
.mapa-zoom button{width:34px;height:34px;justify-content:center;padding:0;background:var(--superficie);color:var(--texto);border:1px solid var(--borde);font-size:18px}
.mapa-zoom button:hover{color:var(--marca2);filter:none}.mapa-zoom .btn-norte{font-size:13px;font-weight:800}.mapa-zoom .btn-norte.activo{background:var(--marca2);color:#fff;border-color:var(--marca2)}
.mapa-rosa{position:absolute;right:12px;top:12px;width:86px;text-align:center;background:color-mix(in srgb,var(--superficie) 85%,transparent);border:1px solid var(--borde);border-radius:12px;padding:4px}
.mapa-rosa svg{width:76px;height:76px;display:block;margin:auto}.rosa-fondo{fill:var(--superficie);stroke:var(--borde)}.rosa-n{font-size:9px;font-weight:800;fill:#fff}.mapa-rosa small{font-size:11px;font-weight:600}
.mapa-leyenda{position:absolute;left:12px;bottom:12px;display:flex;flex-wrap:wrap;gap:6px 12px;max-width:calc(100% - 24px);background:color-mix(in srgb,var(--superficie) 90%,transparent);border:1px solid var(--borde);border-radius:9px;padding:6px 10px;font-size:12px}
.mapa-leyenda span{display:inline-flex;align-items:center;gap:5px}.mapa-leyenda i,.chip i,.punto{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}
.mapa-tip{position:absolute;z-index:5;pointer-events:none;background:var(--superficie);border:1px solid var(--borde);box-shadow:var(--sombra);border-radius:8px;padding:6px 9px;font-size:12.5px;max-width:240px}
.mapa-tip[hidden]{display:none}.t-res{color:#7c5cff}
.mapa-cargando{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--suave);background:var(--mapa-agua)}
.mapa-cargando[hidden]{display:none}
.mapa-panel{width:360px;flex:none;background:var(--superficie);border:1px solid var(--borde);border-radius:var(--radio);display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--sombra)}
.pestanas-panel{display:flex;border-bottom:1px solid var(--borde)}
.pestanas-panel button{flex:1;background:transparent;color:var(--suave);border:0;border-bottom:2px solid transparent;border-radius:0;padding:10px 4px;font-size:13px;justify-content:center}
.pestanas-panel button:hover{color:var(--texto);filter:none}.pestanas-panel button.activo{color:var(--marca2);border-bottom-color:var(--marca2)}
.mapa-panel section{overflow-y:auto;padding:12px 14px;flex:1}.mapa-panel section[hidden]{display:none}
.mapa-panel h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--suave);margin:16px 0 8px}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.kpis div{background:var(--superficie2);border:1px solid var(--borde);border-radius:8px;padding:8px}
.kpis span{font-size:11.5px;color:var(--suave);display:block}.kpis b{font-size:20px}.kpis small{display:block;font-size:11px;color:var(--suave)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chip{background:var(--superficie2);color:var(--texto);border:1px solid var(--borde);border-radius:16px;padding:4px 9px;font-size:12.5px;font-weight:500}
.chip:hover{color:var(--texto);border-color:var(--marca2);filter:none}.chip.activo{border-color:var(--marca2);background:var(--marca-suave)}.chip b{margin-left:2px}
.pants{display:flex;flex-direction:column;gap:2px}
.pant{display:grid;grid-template-columns:52px 1fr 92px;gap:8px;align-items:center;background:transparent;color:var(--texto);border:0;padding:4px;font-weight:500;font-size:12.5px;width:100%}
.pant:hover{background:var(--superficie2);color:var(--texto);filter:none}.pant small{color:var(--suave);text-align:right}
.lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.lista li{font-size:13px}
.lista li button{width:100%;background:transparent;color:var(--texto);border:0;text-align:left;padding:6px;border-radius:6px;font-weight:400;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.lista li button:hover{background:var(--superficie2);color:var(--texto);filter:none}.lista small{color:var(--suave)}
.lista .num{background:#ff3d71;color:#fff;border-radius:50%;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.det-cab h3{text-transform:none;letter-spacing:0;color:var(--texto);font-size:18px;margin:8px 0}.det-cab small{color:var(--suave);font-size:13px;font-weight:400}
.mapa-panel h3:not(.det-cab h3){font-size:12px}
.estado-chip{display:inline-block;color:#fff;border-radius:12px;padding:2px 10px;font-size:12px;font-weight:600}
.alarma{color:var(--ambar);font-weight:600}
.form-cabe{display:flex;flex-direction:column;gap:10px}.fila2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.form-cabe button{justify-content:center}
.met-actual{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.met-actual div{background:var(--superficie2);border:1px solid var(--borde);border-radius:8px;padding:8px}
.met-actual span{font-size:11.5px;color:var(--suave);display:block}.met-actual b{font-size:19px}.met-actual small{display:block;font-size:11px;color:var(--suave)}
.linea-tiempo{margin-top:10px}.graf-ley{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;color:var(--suave);margin:2px 0 6px}.graf-ley span{display:inline-flex;align-items:center;gap:5px}.graf-ley i{display:inline-block;width:14px;height:8px;border-radius:2px}.graf{width:100%;height:auto;color:var(--texto)}.graf .dias text,.graf .ley{font-size:7px;fill:var(--suave)}
.linea-tiempo input{width:100%}.lt-pie{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;color:var(--suave);gap:8px}
.lt-pie button{font-size:12px;padding:5px 9px}
.niveles{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:12px}.niveles div{border-top:4px solid;background:var(--superficie2);border-radius:6px;padding:6px;text-align:center}
.niveles b{font-size:18px;display:block}.niveles span{font-size:11.5px;color:var(--suave)}
.recom{background:var(--marca-suave);border-radius:8px;padding:8px 10px;font-size:13px}
.caja-sim{border:1px solid var(--borde);border-radius:8px;padding:8px 10px;margin-top:12px}.caja-sim summary{cursor:pointer;font-weight:600;font-size:13.5px}
.sim{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin-top:8px}.sim label{font-size:12px}.sim output{font-weight:700;color:var(--texto)}
.sim-rapidos{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.sim-rapidos button{font-size:12px;padding:5px 8px}
.riesgo-det ul{margin:6px 0 0;padding-left:18px;font-size:13px}

/* Barra inferior móvil */
.tabbar{display:none}
/* Consulta rápida */
.rapido{max-width:820px;margin:0 auto}
.rapido-caja{display:flex;align-items:center;gap:10px;background:var(--superficie);border:2px solid var(--marca2);border-radius:14px;padding:4px 14px;box-shadow:var(--sombra);position:sticky;top:64px;z-index:5}
.rapido-caja .ico{width:22px;height:22px;color:var(--marca2)}
.rapido-caja input{border:0;flex:1;font-size:18px;padding:12px 0;background:transparent;box-shadow:none!important;text-transform:none}
.rapido-ayuda{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.recientes{display:flex;flex-wrap:wrap;gap:6px;align-items:center;width:100%;margin-top:6px}.recientes span{color:var(--suave);font-size:12.5px}
.ficha-r{background:var(--superficie);border:1px solid var(--borde);border-radius:12px;padding:12px 14px;margin-bottom:10px;box-shadow:var(--sombra)}
.fr-cab{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:15.5px}.fr-cab small{color:var(--suave)}.fr-cab .pill{margin-left:auto}
.fr-linea{color:var(--suave);font-size:13.5px;margin-top:3px}
.fr-acc{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.fr-acc .boton,.fr-acc button{padding:8px 12px;font-size:13.5px}
.fr-res h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--suave);margin:14px 0 6px}
.pill{display:inline-block;border-radius:12px;padding:2px 10px;font-size:12.5px;font-weight:650;white-space:nowrap}
.pill.rojo{background:var(--rojo-suave);color:var(--rojo)}.pill.verde{background:var(--verde-suave);color:var(--verde)}.pill.ambar{background:var(--ambar-suave);color:var(--ambar)}.pill.azul{background:var(--azul-suave);color:var(--azul)}.pill.gris{background:var(--superficie2);color:var(--suave)}
.kpis-r{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.kpis-r div{background:var(--superficie2);border-radius:8px;padding:8px}.kpis-r span{display:block;font-size:11.5px;color:var(--suave)}.kpis-r b{font-size:17px}
.lista-r{list-style:none;padding:0;margin:0;font-size:13.5px}.lista-r li{padding:6px 0;border-bottom:1px solid var(--borde)}.lista-r li:last-child{border:0}
.verde{color:var(--verde)}
.cargando-linea{height:3px;background:linear-gradient(90deg,transparent,var(--marca),transparent);background-size:200% 100%;animation:barrido 1s linear infinite;border-radius:2px;margin:6px 0}
@keyframes barrido{from{background-position:200% 0}to{background-position:-200% 0}}
/* Informes */
.filtro-catalogo{width:100%;max-width:560px;font-size:15px;padding:10px 12px;margin-bottom:6px}
.cat{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.tarjeta.inf{display:flex;flex-direction:column;gap:4px;padding:12px 14px}.tarjeta.inf b{color:var(--marca2)}.tarjeta.inf span{color:var(--suave);font-size:13px}
.acciones-inf{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start;margin:4px 0 14px}.acciones-inf form{margin:0}
.programar summary{list-style:none;cursor:pointer}.programar summary::-webkit-details-marker{display:none}.programar[open] form{margin-top:8px;display:flex;flex-direction:column;gap:8px;min-width:280px}
.volver{margin:0 0 4px}.kpis-inf{margin-bottom:14px}
.grafico svg{width:100%;height:auto}.g-rejilla{stroke:var(--borde)}.g-eje{font-size:11px;fill:var(--suave)}
.g-ley{display:flex;gap:14px;font-size:12.5px;color:var(--suave)}.g-ley i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.solo-imprimir{display:none}
.accesos{display:none}
.resumen-cli{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
/* Responsive */
@media (max-width:1100px){.mapa-panel{width:320px}.grid3{grid-template-columns:1fr}}
@media (max-width:900px){
  .lateral{transform:translateX(-100%);transition:transform .2s;box-shadow:var(--sombra)}
  body.menu-abierto .lateral{transform:none}
  .velo{display:none}body.menu-abierto .velo{display:block;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:25}
  .principal{margin-left:0}.hamb{display:inline-flex}.cuenta .nombre{display:none}
  .cab{padding:8px 16px}main{padding:14px 16px 30px}.grid2{grid-template-columns:1fr}
  .mapa-app{height:auto}.mapa-cuerpo{flex-direction:column}.mapa-lienzo{height:62vh;flex:none}
  .mapa-panel{width:auto;max-height:none}.mapa-barra .capas{width:100%}
  .buscar-mapa input{width:120px}
}
@media (max-width:900px){
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:35;background:var(--superficie);border-top:1px solid var(--borde);padding:4px 4px calc(4px + env(safe-area-inset-bottom));justify-content:space-around}
  .tabbar a,.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;color:var(--suave);text-decoration:none;font-size:11px;background:none;border:0;font-weight:500;border-radius:8px}
  .tabbar .ico{width:22px;height:22px}.tabbar a.activa{color:var(--marca2)}.tabbar button:hover{filter:none;color:var(--texto)}
  body.con-menu main{padding-bottom:84px}
  .cab .busqueda{display:none}.cab{justify-content:space-between}.cab .hamb{display:none}
  .accesos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
  .accesos a{background:var(--superficie);border:1px solid var(--borde);border-radius:12px;padding:12px 6px;display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;color:var(--texto);font-size:12.5px;font-weight:550;text-align:center}
  .accesos .ico{width:26px;height:26px;color:var(--marca2)}
  .rapido-caja{top:56px}
  .marca-movil{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--texto);font-weight:650;margin-right:auto}.marca-movil img{background:#fff;border-radius:6px;padding:2px}
  .cab .icono-btn[data-tema]{margin-left:auto}
  body.ancho-completo .titulo{display:none}
  .mapa-barra{gap:6px}.mapa-barra .capas{gap:8px;font-size:12px}
  .params-inf{flex-direction:row!important;flex-wrap:wrap}.params-inf label{flex:1;min-width:140px}
  .tarjeta .v{font-size:20px}
  .resumen-cli{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  .tabla-tarjetas{background:none;border:0;box-shadow:none;max-height:none;overflow:visible}
  .tabla-tarjetas table,.tabla-tarjetas tbody,.tabla-tarjetas tfoot{display:block}
  .tabla-tarjetas thead{display:none}
  .tabla-tarjetas tr{display:block;background:var(--superficie);border:1px solid var(--borde);border-radius:10px;padding:8px 12px;margin-bottom:8px;box-shadow:var(--sombra)}
  .tabla-tarjetas td{display:flex;justify-content:space-between;gap:12px;border:0;padding:4px 0;text-align:right;font-size:14px}
  .tabla-tarjetas td::before{content:attr(data-label);color:var(--suave);font-size:12.5px;text-align:left;flex:none;max-width:45%}
  .tabla-tarjetas td:empty{display:none}
  .tabla-tarjetas td.num{text-align:right}
  .tabla-tarjetas tfoot tr{background:var(--marca-suave)}
  .titulo h1{font-size:20px}
  .params-inf input,.params-inf select{width:100%}
  .acciones-inf .boton,.acciones-inf button{font-size:13px;padding:7px 10px}
}
@media print{.no-imprimir,.tabbar,.confidencial{display:none!important}.solo-imprimir{display:block!important}body{background:#fff}.tabla-scroll{max-height:none;overflow:visible;box-shadow:none}th{position:static}}
@media (max-width:520px){.mapa-leyenda{font-size:10.5px;gap:3px 8px;padding:4px 7px;left:6px;bottom:6px}.mapa-rosa{transform:scale(.8);transform-origin:top right}.busqueda input::placeholder{color:transparent}.tarjetas{grid-template-columns:1fr 1fr}.seg{overflow-x:auto;max-width:100%}.tarjeta .v{font-size:21px}}
@media print{.lateral,.cab,.velo{display:none}.principal{margin:0}}

/* v1.3 cobros */
.chips-periodo{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 14px}
.chips-periodo .chip{padding:6px 12px;font-size:13px}
.rango{display:flex;gap:6px;align-items:center;margin-left:auto}.rango input{width:auto;padding:5px 8px}
.delta{font-size:12px;font-weight:600}.delta.sube{color:var(--verde)}.delta.baja{color:var(--rojo)}
@media (max-width:720px){.rango{margin-left:0;width:100%}.rango input{flex:1;min-width:0}.chips-periodo{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.chips-periodo .chip{flex:none}}
.chip{text-decoration:none}
.tabla-compacta table{width:100%}.tabla-compacta td.num,.tabla-compacta th.num{white-space:nowrap}
.tabla-compacta .pill{font-size:11px}
@media (max-width:720px){.chips-periodo{flex-wrap:wrap;overflow:visible}.tabla-compacta td,.tabla-compacta th{padding:8px 10px;font-size:13px}}
.delta{white-space:nowrap}
button.peq{padding:4px 10px;font-size:12.5px}
/* Planificador del mapa */
.hueco.conflicto{stroke:#d64545;stroke-width:2;animation:parpadeo 1.2s ease-in-out infinite}
@keyframes parpadeo{50%{stroke-opacity:.25}}
@media (prefers-reduced-motion:reduce){.hueco.conflicto{animation:none}}
.fantasma.choque{fill:rgba(214,69,69,.22);stroke:#d64545}
.plan-fecha{display:block}.plan-fecha span{display:block;margin-bottom:6px;font-size:15px}.plan-fecha input{width:100%}
#panel-plan .chips input[type=date]{width:auto;padding:3px 6px;font-size:12.5px}
.lista.conflictos small{color:var(--rojo)}
.hueco.posible{stroke:#e8a33d;stroke-width:1.6;stroke-dasharray:3 2}small.ambar{color:#a86a10}
.lista.conflictos small.ambar{color:#a86a10}

/* ================= v1.4 · aspecto y facilidad de uso ================= */
:focus-visible{outline:2px solid var(--marca2);outline-offset:2px}
.num,.tarjeta .v,.kpis b{font-variant-numeric:tabular-nums}
/* Cifras de las tarjetas: se ajustan al ancho de la tarjeta y nunca se parten */
.tarjeta{container-type:inline-size;transition:border-color .15s,box-shadow .15s,transform .15s}
.tarjeta .v{white-space:nowrap;font-size:clamp(16px,11.5cqi,26px)}
a.tarjeta:hover{box-shadow:0 2px 4px rgba(16,24,28,.06),0 10px 24px rgba(16,24,28,.08);transform:translateY(-1px)}
.tarjeta .t .delta{margin-right:2px}
/* Cabecera de página: volver, título, acciones y estrella */
.migas{display:flex;gap:6px;margin:0 0 2px}
.migas a{display:inline-flex;align-items:center;gap:2px;color:var(--suave);text-decoration:none;font-size:13px;font-weight:550;padding:2px 6px 2px 0;border-radius:6px}
.migas a:hover{color:var(--marca2)}.migas .ico{width:16px;height:16px}
.titulo .acciones{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
form.fijar{margin:0;display:inline}
.icono-btn.activo{color:#e2a400;border-color:#f1d27a;background:color-mix(in srgb,#f5b301 12%,var(--superficie))}
.icono-btn.activo .ico{fill:#f5b301;stroke:#d99a00}
/* Estado vacío */
.vacio-caja{display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 16px;text-align:center;color:var(--suave);background:var(--superficie);border:1px dashed var(--borde);border-radius:var(--radio)}
.vacio-caja .ico{width:30px;height:30px;color:var(--borde);stroke-width:1.5}.vacio-caja p{margin:0}
.vacio-caja.grande{padding:48px 16px}.vacio-caja.grande p+p{margin-top:12px}
/* Barra de progreso al cambiar de página */
.progreso{position:fixed;top:0;left:0;height:3px;width:0;background:linear-gradient(90deg,var(--marca),var(--marca2));z-index:100;opacity:0;transition:width .25s ease,opacity .3s}
.progreso.activo{opacity:1;width:70%;transition:width 8s cubic-bezier(.1,.8,.2,1),opacity .1s}
kbd{font:600 11px/1 ui-monospace,Consolas,monospace;background:var(--superficie2);border:1px solid var(--borde);border-bottom-width:2px;border-radius:5px;padding:2px 5px;color:var(--suave)}
/* Paleta «Ir a…» */
.paleta{position:fixed;inset:0;z-index:90}
.paleta-velo{position:absolute;inset:0;background:rgba(10,20,24,.45);backdrop-filter:blur(2px)}
.paleta-caja{position:relative;margin:10vh auto 0;width:min(640px,94vw);background:var(--superficie);border:1px solid var(--borde);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow:hidden;display:flex;flex-direction:column;max-height:76vh}
.paleta-busca{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--borde)}
.paleta-busca .ico{width:20px;height:20px;color:var(--suave)}
.paleta-busca input{flex:1;border:0;padding:6px 0;font-size:16px;background:transparent;box-shadow:none!important}
.paleta-lista{list-style:none;margin:0;padding:6px;overflow-y:auto}
.paleta-lista li[role=option]{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:9px;cursor:pointer}
.paleta-lista li.sel{background:var(--marca-suave)}.paleta-lista li.sel .ico{color:var(--marca2)}
.paleta-lista .ico{color:var(--suave)}
.paleta-lista .pt{flex:1;min-width:0;display:flex;flex-direction:column}.paleta-lista .pt b{font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.paleta-lista .pt small{color:var(--suave);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.paleta-lista .pt small.rojo{color:var(--rojo)}
.paleta-lista .pg{font-size:11.5px;color:var(--suave);white-space:nowrap}
.paleta-grupo{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--suave);padding:10px 10px 4px}
.paleta-nada{padding:20px;text-align:center;color:var(--suave)}
.paleta-pie{display:flex;gap:16px;padding:8px 16px;border-top:1px solid var(--borde);font-size:12px;color:var(--suave);background:var(--superficie2)}
body.con-paleta{overflow:hidden}
/* Atajos fijados en Inicio */
.atajos{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-bottom:16px}
.atajo{display:flex;align-items:center;gap:10px;background:var(--superficie);border:1px solid var(--borde);border-radius:10px;padding:10px 12px;text-decoration:none;color:var(--texto);font-weight:550;box-shadow:var(--sombra);min-width:0}
.atajo:hover{border-color:var(--marca2);color:var(--texto)}
.atajo .ico{color:#e2a400;flex:none}.atajo span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seccion-cab{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 0 10px}.seccion-cab h2{margin:0}
.seccion-cab a{font-size:13px;text-decoration:none;font-weight:550}
.ayuda-linea{display:flex;gap:8px;align-items:flex-start;background:var(--azul-suave);color:var(--azul);border-radius:9px;padding:9px 12px;font-size:13px;margin:0 0 14px}
.ayuda-linea .ico{flex:none;margin-top:1px}

/* Tablas como lista en el móvil: título e importe arriba, lo demás debajo en pequeño */
@media (max-width:640px){
  .tabla-lista{max-height:none;overflow:visible;border-radius:12px}
  .tabla-lista table,.tabla-lista tbody,.tabla-lista tfoot{display:block}
  .tabla-lista thead{display:none}
  .tabla-lista tr{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:3px;padding:11px 14px;border-bottom:1px solid var(--borde)}
  .tabla-lista tbody tr:last-child{border-bottom:0}
  .tabla-lista tbody tr:hover td{background:none}
  .tabla-lista td{border:0;padding:0;font-size:12.8px;color:var(--suave);background:none!important}
  .tabla-lista td[data-m=tit]{order:1;flex:1 1 calc(100% - 9.5rem - 10px);min-width:0;font-weight:600;font-size:14.5px;color:var(--texto)}
  .tabla-lista td[data-m=val]{order:2;flex:0 0 9.5rem;text-align:right;font-weight:650;font-size:14.5px;color:var(--texto)}
  .tabla-lista td[data-m=sub]{order:3;text-align:left}
  .tabla-lista td[data-m=sub]::before{content:attr(data-label) " ";font-size:11px;opacity:.8}
  .tabla-lista td[data-m=acc]{order:4;flex-basis:100%;text-align:left;margin-top:4px}
  .tabla-lista td[data-m=no],.tabla-lista td:empty{display:none}
  .tabla-lista td a{font-weight:inherit}
  .tabla-lista tfoot tr{background:var(--marca-suave);border-top:1px solid var(--borde);border-radius:0 0 12px 12px}
  .tabla-lista tfoot td[data-m=tit]{font-weight:700}
  .filtro-tabla input{max-width:none;flex:1}
  .paleta-caja{margin:0;width:100%;max-height:100%;height:100%;border-radius:0}
  .paleta-pie{display:none}
  .migas a{font-size:14px;padding:4px 8px 4px 0}
}
@media (max-width:900px){
  .accesos{grid-template-columns:repeat(4,1fr);gap:8px}
  .accesos a{padding:10px 4px;font-size:11.5px;border-radius:12px;gap:4px}
  .accesos .ico{width:22px;height:22px}
  .btn-paleta{display:inline-flex}
}
@media (prefers-reduced-motion:reduce){.progreso,.tarjeta{transition:none}a.tarjeta:hover{transform:none}}
@media print{.migas,form.fijar,.progreso,.btn-paleta{display:none!important}}
@keyframes resalta{0%{box-shadow:0 0 0 3px var(--marca2)}100%{box-shadow:0 0 0 3px transparent}}
:target{animation:resalta 1.8s ease-out;scroll-margin-top:72px}
fieldset.horario{border:1px solid var(--borde);border-radius:10px;padding:10px 12px 4px;display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:0 0 10px}
fieldset.horario legend{font-size:12.5px;color:var(--suave);padding:0 4px}fieldset.horario p{flex-basis:100%;margin:2px 0 6px}
.rutinas{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}
.rutina{background:var(--superficie);border:1px solid var(--borde);border-radius:12px;padding:14px 16px;box-shadow:var(--sombra);display:flex;flex-direction:column;gap:8px}
.rutina.pausada{opacity:.72}
.rutina-cab{display:flex;align-items:flex-start;gap:10px}.rutina-cab a{font-weight:650;text-decoration:none;color:var(--texto);flex:1}.rutina-cab a:hover{color:var(--marca2)}
.rutina p{margin:0;color:var(--suave);font-size:13px}
.rutina-datos{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.8px}.rutina-datos span{display:inline-flex;align-items:center;gap:5px}.rutina-datos .ico{width:15px;height:15px;color:var(--suave)}
.rutina-pie{display:flex;gap:8px;align-items:center;margin-top:auto;padding-top:4px}.rutina-pie form{margin:0}
.pill{display:inline-block;padding:1px 8px;border-radius:10px;font-size:11.8px;font-weight:600;white-space:nowrap}
.chips-grupos{margin:12px 0 4px}.chips-grupos .chip b{color:var(--suave);font-weight:600}@media (max-width:640px){.chips-grupos{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-right:-16px;padding-right:16px}.chips-grupos .chip{flex:none}}
input,select,textarea{max-width:100%}label{min-width:0}
@media (max-width:640px){form.fila>label{flex:1 1 100%}form.fila input:not([type=checkbox]):not([type=radio]),form.fila select{width:100%}form.fila>button{flex:1 1 auto;justify-content:center}}
@media (max-width:640px){.tabla-lista td{overflow-wrap:anywhere;max-width:100%}}
.titulo{flex-wrap:nowrap;align-items:flex-start}.titulo>div:first-child{min-width:0}.titulo .acciones{justify-content:flex-end;flex:none;max-width:60%}
@media (max-width:640px){.titulo .acciones .boton{padding:7px 10px;font-size:13px}}
.tarjeta .t:has(.delta){display:block}
.solo-movil{display:none!important}@media (max-width:640px){.solo-movil{display:inline-flex!important}.solo-escritorio{display:none!important}}
.titulo{align-items:center}.titulo>div:first-child{flex:1 1 auto}.titulo .acciones{max-width:none}.titulo form.fijar{flex:none}
@media (max-width:640px){.titulo{flex-wrap:wrap}.titulo>div:first-child{flex:1 1 0}.titulo form.fijar{order:2}.titulo .acciones{order:3;flex:1 1 100%;justify-content:flex-start}}
.presets{flex-basis:100%;margin:0;align-items:center}.presets .aviso{margin-right:2px}
/* Pantallas de acceso */
body.sin-menu{background:radial-gradient(1200px 500px at 50% -10%,color-mix(in srgb,var(--marca) 22%,transparent),transparent 70%),var(--fondo)}
body.sin-menu .cab{display:none}
body.sin-menu main{max-width:460px;padding-top:7vh}
.auth-marca{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:18px;text-align:center}
.auth-marca img{background:#fff;border-radius:14px;padding:8px 12px;box-shadow:var(--sombra)}
.auth-marca b{font-size:20px;letter-spacing:-.01em;margin-top:6px}.auth-marca span{color:var(--suave);font-size:13px}
body.sin-menu .titulo{justify-content:center;text-align:center;margin-bottom:12px}body.sin-menu h1{font-size:17px;font-weight:600}
body.sin-menu .login{margin:0 auto;border-radius:16px;padding:26px;box-shadow:0 1px 2px rgba(16,24,28,.06),0 18px 40px rgba(16,24,28,.08)}
body.sin-menu .login input{padding:11px 12px;font-size:15px}
.auth-pie{text-align:center;color:var(--suave);font-size:12px;margin-top:18px}
.fila{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.mapa-cargando.error{background:var(--fondo);padding:16px}
.mapa-error{max-width:520px;background:var(--superficie);border:1px solid var(--borde);border-left:4px solid var(--rojo);border-radius:12px;padding:16px 18px;box-shadow:var(--sombra);color:var(--texto)}
.mapa-error b{color:var(--rojo)}.mapa-error p{margin:8px 0}.mapa-error small{color:var(--suave)}

/* ================= v1.6 · gráficos, embudo, calor y línea de tiempo ================= */
.g-valor{font-size:11px;font-weight:650;fill:var(--texto)}.g-titulo{margin:0 0 6px;font-size:14px}
.g-barra{transition:opacity .15s}.g-barra:hover{opacity:.8}
.g-rejilla{stroke-dasharray:2 3}
/* Embudo */
.embudo{display:flex;flex-direction:column;gap:8px}
.embudo-etapa{display:grid;grid-template-columns:150px 1fr 170px;gap:12px;align-items:center}
.embudo-nombre{display:flex;flex-direction:column;line-height:1.25}.embudo-nombre small{color:var(--suave);font-size:12px}
.embudo-pista{display:flex;justify-content:center}
.embudo-barra{display:flex;align-items:center;justify-content:center;height:40px;border-radius:9px;color:#fff;text-decoration:none;font-weight:650;font-size:13.5px;box-shadow:inset 0 -2px 0 rgba(0,0,0,.12);transition:filter .15s;min-width:64px;white-space:nowrap;overflow:hidden}
a.embudo-barra[href]:hover{filter:brightness(1.08);color:#fff}
.embudo-dato{font-size:12.5px;color:var(--suave);line-height:1.3}.embudo-dato b{color:var(--texto)}
@media (max-width:640px){.embudo-etapa{grid-template-columns:1fr;gap:4px}.embudo-pista{justify-content:flex-start}.embudo-dato{margin-bottom:4px}}
/* Barra apilada */
.apilada-barra{display:flex;border-radius:7px;overflow:hidden;background:var(--superficie2)}.apilada-barra span{display:block;height:100%}
.apilada-ley{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12.5px;color:var(--suave)}.apilada-ley i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
.apilada-ley b{color:var(--texto);font-weight:600}
/* Mapa de calor */
.calor-tabla td.c{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12.8px;border-left:1px solid color-mix(in srgb,var(--borde) 60%,transparent)}
.calor-tabla td.vacia{color:var(--borde)}
.calor-tabla th.c{text-align:right}
.tend{font-weight:650;white-space:nowrap}.tend.sube{color:var(--rojo)}.tend.baja{color:var(--verde)}.tend.igual{color:var(--suave)}
.pill.nivel{color:#fff}
.calor-escala{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--suave);margin:6px 0 10px}
.calor-escala span{display:inline-block;width:140px;height:10px;border-radius:5px;background:linear-gradient(90deg,rgba(196,50,31,.1),rgba(196,50,31,.92))}
@media (max-width:640px){.calor-tabla td.c::before{content:attr(data-label) " "}}
/* Línea de tiempo */
.tiempo{list-style:none;margin:0;padding:0 0 0 6px;position:relative}
.tiempo::before{content:"";position:absolute;left:21px;top:6px;bottom:6px;width:2px;background:var(--borde)}
.tiempo-mes{position:relative;margin:14px 0 6px 44px;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--suave);font-weight:600}
.tiempo-ev{position:relative;display:flex;gap:12px;align-items:flex-start;padding:6px 0}
.tiempo-ico{position:relative;z-index:1;flex:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--marca2);color:#fff;box-shadow:0 0 0 3px var(--fondo)}
.tiempo-ico .ico{width:16px;height:16px}
.ev-factura .tiempo-ico{background:#3867d6}.ev-cobro .tiempo-ico{background:#1f8a4c}.ev-nota .tiempo-ico{background:#7b8a91}.ev-portal .tiempo-ico{background:#7c5cff}.ev-recordatorio .tiempo-ico{background:#a07a10}
.tiempo-cuerpo{flex:1;min-width:0;background:var(--superficie);border:1px solid var(--borde);border-radius:10px;padding:8px 12px}
.tiempo-cab{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.tiempo-cab b{font-weight:600}.tiempo-cab a{text-decoration:none}
.tiempo-cuerpo small{color:var(--suave)}.tiempo-cuerpo p{margin:4px 0 0;font-size:13px}
.tiempo-imp{font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums}.tiempo-imp.mas{color:var(--texto)}.tiempo-imp.menos{color:var(--verde)}
.filtros-tiempo{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.seg-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:16px;align-items:start}
@media (max-width:900px){.seg-panel{grid-template-columns:1fr}}
/* Pestañas de sección (Propuestas / Análisis) */
.subnav{display:flex;gap:4px;border-bottom:1px solid var(--borde);margin:0 0 16px;overflow-x:auto;scrollbar-width:none}
.subnav a{padding:9px 14px;text-decoration:none;color:var(--suave);font-weight:600;border-bottom:2px solid transparent;white-space:nowrap;margin-bottom:-1px}
.subnav a:hover{color:var(--texto)}.subnav a.activo{color:var(--marca2);border-bottom-color:var(--marca2)}
.kpi-nivel{border-top:4px solid var(--c,var(--marca2))}
.kpi-nivel .barra-mini{height:6px;border-radius:4px;background:var(--superficie2);overflow:hidden;margin-top:8px}.kpi-nivel .barra-mini span{display:block;height:100%;background:var(--c,var(--marca2))}
@media (min-width:641px){.calor-tabla td:first-child{min-width:240px}.calor-tabla td:nth-child(2){white-space:nowrap}}.chip i{margin-right:5px}.calor-tabla tbody tr:hover td.c{filter:brightness(.97)}
@media (min-width:901px){.seg-panel>div:first-child{position:sticky;top:72px}}
@media (max-width:640px){.calor-tabla td.vacia{display:none}.calor-tabla td.c{border-radius:5px;padding:1px 6px}.embudo-barra{min-width:118px;height:34px}}
pre.clave{font-size:16px;padding:14px;background:var(--superficie2);border:1px dashed var(--marca2);border-radius:10px;user-select:all;white-space:pre-wrap;word-break:break-all}.clave-nueva{border-left:4px solid var(--verde)}



/* =====================================================================================================
   v1.9 · Tema «Lattice» (lenguaje de mando y control de Anduril Lattice)
   Oscuro por defecto, alta densidad, nombres de entidades en mayúsculas, etiqueta pequeña sobre valor,
   estados como texto de color, símbolos tácticos. Modo claro con el botón de tema.
   Fuentes incluidas (SIL OFL): Archivo (variable, ancho 62–125 %) y JetBrains Mono.
   ===================================================================================================== */
@font-face{font-family:"Archivo VM";font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(/static/fuentes/archivo.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono VM";font-style:normal;font-weight:400;font-display:swap;src:url(/static/fuentes/jetbrains-mono-400.woff2) format("woff2")}
@font-face{font-family:"JetBrains Mono VM";font-style:normal;font-weight:500 700;font-display:swap;src:url(/static/fuentes/jetbrains-mono-500.woff2) format("woff2")}

:root,:root[data-theme="dark"],:root:not([data-theme="light"]){
  --fondo:#0a0e13;--superficie:#11171e;--superficie2:#18202a;--superficie3:#202a36;--hundido:#070a0e;
  --borde:#222c37;--borde2:#33404e;--texto:#e9eef3;--suave:#8e9aa8;--tenue:#5f6c7b;--resalte:#c9d4df;
  --marca:#4ea1ff;--marca2:#2f6fe4;--marca-suave:rgba(47,111,228,.18);--boton-sec:#2a3a50;
  --amigo:#39c6f4;--hostil:#ff4d4f;--neutro:#3ccf91;--desconocido:#ffd23f;--sel:#ffd23f;
  --rojo:#ff6b6b;--rojo-fuerte:#e5484d;--rojo-suave:rgba(229,72,77,.16);--verde:#3ccf91;--verde-fuerte:#21a86f;--verde-suave:rgba(60,207,145,.13);
  --ambar:#f5a142;--ambar-suave:rgba(245,161,66,.14);--azul:#6cb2ff;--azul-suave:rgba(78,161,255,.14);--violeta:#b48cff;
  --sombra:none;--radio:3px;
  --g1:#4ea1ff;--g2:#3ccf91;--g3:#f5a142;--g4:#b48cff;--g5:#ff6b6b;
  --ed1:#39c6f4;--ed2:#3ccf91;--ed3:#ffd23f;--ed4:#f5a142;--ed5:#ff6b6b;--ed6:#e5484d;
  --n-sin:#8e9aa8;--n-rec:#4ea1ff;--n-r1:#ffd23f;--n-r2:#f5a142;--n-r3:#ff4d4f;--n-otra:#5f6c7b;
  --mapa-agua:#0d141b;--mapa-agua2:#0a1016;--mapa-mar:#05080b;--mapa-tierra:#161d25;--mapa-tierra-borde:#2b3643;--mapa-pantalan:#5d6b7a;--mapa-hueco:#121a22;
  --sit-mar:#05080c;--sit-tierra:#1a222c;--sit-costa:#4a5a6c;--sit-ret:rgba(142,154,168,.09);--sit-anillo:rgba(57,198,244,.28);
  color-scheme:dark;
}
:root[data-theme="light"]{
  --fondo:#e9edf2;--superficie:#ffffff;--superficie2:#f4f6f9;--superficie3:#e8ecf1;--hundido:#dde3ea;
  --borde:#d3dae2;--borde2:#b9c3ce;--texto:#0c1520;--suave:#536273;--tenue:#7f8c9a;--resalte:#1a2634;
  --marca:#1f5fd1;--marca2:#1f5fd1;--marca-suave:rgba(31,95,209,.10);--boton-sec:#dfe6ef;
  --amigo:#0a8fc4;--hostil:#d92d33;--neutro:#138a5a;--desconocido:#b88a00;--sel:#d48a00;
  --rojo:#c42b30;--rojo-fuerte:#d92d33;--rojo-suave:rgba(217,45,51,.09);--verde:#138a5a;--verde-fuerte:#138a5a;--verde-suave:rgba(19,138,90,.09);
  --ambar:#b8640c;--ambar-suave:rgba(184,100,12,.10);--azul:#1f5fd1;--azul-suave:rgba(31,95,209,.08);--violeta:#7a4fd6;
  --g1:#1f5fd1;--g2:#138a5a;--g3:#d17a00;--g4:#7a4fd6;--g5:#d92d33;
  --ed1:#0a8fc4;--ed2:#138a5a;--ed3:#c99a00;--ed4:#d17a00;--ed5:#d9531e;--ed6:#b3200f;
  --n-sin:#7f8c9a;--n-rec:#1f5fd1;--n-r1:#c99a00;--n-r2:#d17a00;--n-r3:#d92d33;--n-otra:#7f8c9a;
  --mapa-agua:#d3e1ea;--mapa-agua2:#c3d4e0;--mapa-mar:#a9c1d1;--mapa-tierra:#eceff2;--mapa-tierra-borde:#c3ccd5;--mapa-pantalan:#7b8794;--mapa-hueco:#ffffff;
  --sit-mar:#cfdde7;--sit-tierra:#f3f1ec;--sit-costa:#9aa7b4;--sit-ret:rgba(12,21,32,.07);--sit-anillo:rgba(10,143,196,.35);
  color-scheme:light;
}
:root{--sans:"Archivo VM","Archivo","Helvetica Neue",Arial,system-ui,sans-serif;--mono:"JetBrains Mono VM","JetBrains Mono",Consolas,ui-monospace,monospace}
body{font-family:var(--sans);font-size:13px;line-height:1.4;letter-spacing:.005em;background:var(--fondo);font-stretch:100%;-webkit-font-smoothing:antialiased}
::selection{background:var(--marca2);color:#fff}
a{color:var(--azul);text-decoration:none}a:hover{color:var(--texto);text-decoration:none}
.num,.tarjeta .v,.kpis b,td,.embudo-dato,.g-valor{font-variant-numeric:tabular-nums}
code,kbd,.reloj,.cod,pre,.mono{font-family:var(--mono)}
code{font-size:12px;background:var(--superficie3);border-radius:2px;padding:1px 4px}
.ico{stroke-width:1.7}

/* Rail lateral */
.lateral{background:var(--superficie);border-right:1px solid var(--borde)}
.lateral .marca{border-bottom:1px solid var(--borde);font-size:15px;font-weight:700;font-stretch:88%;padding:12px 14px;letter-spacing:.01em;text-transform:none}
.lateral .marca img,.cab .marca img{border-radius:2px}
.lateral .marca span{display:flex;flex-direction:column;line-height:1.05}
.lateral .marca span::after{content:"Misión · YPV";margin:3px 0 0;font-size:10.5px;font-weight:500;letter-spacing:.02em;color:var(--suave);background:none;padding:0;border:0}
.grupo{margin:4px 0 2px}
.grupo>span{font-size:10.5px;font-weight:600;letter-spacing:.02em;color:var(--tenue);padding:10px 12px 3px;text-transform:none}
.grupo>span::before{content:none}
.grupo a{border-radius:2px;font-size:13px;padding:6px 10px;color:var(--resalte);gap:10px;border-left:0}
.grupo a .ico{width:16px;height:16px;color:var(--suave)}
.grupo a:hover{background:var(--superficie2);color:var(--texto)}
.grupo a.activa{background:var(--superficie3);color:var(--marca);font-weight:600;box-shadow:inset 2px 0 0 var(--marca)}
.grupo a.activa .ico{color:var(--marca)}
.badge{background:var(--rojo-fuerte);color:#fff;border:0;border-radius:2px;font-size:10.5px;font-weight:700;line-height:16px;padding:0 5px}
.lateral-pie{font-size:10.5px;color:var(--tenue);display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0}
.lateral-pie::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--verde);box-shadow:none}

/* Barra superior */
.cab{background:var(--superficie);border-bottom:1px solid var(--borde);box-shadow:none;padding:5px 14px;gap:6px;backdrop-filter:none;min-height:44px}
.busqueda,.icono-btn,.cuenta summary,input,select,textarea,button,.boton{border-radius:3px}
.busqueda{background:var(--superficie2);border:1px solid var(--borde);max-width:440px}
.busqueda input{font-size:12.5px;padding:6px 0}
.busqueda:focus-within,input:focus,select:focus,textarea:focus{border-color:var(--marca);box-shadow:0 0 0 1px var(--marca)}
.icono-btn{background:transparent;border:1px solid transparent;color:var(--suave);width:30px;height:30px}
.icono-btn:hover{background:var(--superficie2);color:var(--texto);border-color:transparent;box-shadow:none}
.icono-btn.activo{color:var(--sel)}
.cuenta summary{background:transparent;border:1px solid transparent;padding:2px 8px 2px 2px}
.cuenta summary:hover{background:var(--superficie2)}
.avatar{border-radius:50%;background:var(--superficie3);color:var(--texto);border:1px solid var(--borde2);font-size:10.5px;width:26px;height:26px}
.menu-cuenta{border-radius:3px;background:var(--superficie2);border:1px solid var(--borde2);box-shadow:0 10px 30px rgba(0,0,0,.45)}
.estado-sis{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--suave);padding:0 8px;height:30px;white-space:nowrap;border:0}
.estado-sis span:first-of-type{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--verde);border:0;padding:0}
.estado-sis i{width:6px;height:6px;border-radius:50%;background:var(--verde);box-shadow:none;animation:latido 2.4s ease-in-out infinite}
.estado-sis .reloj{color:var(--texto);font-size:11.5px}
@keyframes latido{50%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.estado-sis i{animation:none}}

/* Títulos */
main{padding:14px 18px 40px}
.ceja{font-size:10.5px;color:var(--suave);margin-bottom:1px;display:block;letter-spacing:.01em}
.ceja::before{content:none}
h1{font-size:19px;font-weight:700;font-stretch:90%;letter-spacing:.01em;text-transform:uppercase}
.sub{font-size:12.5px;color:var(--suave);font-family:var(--sans)}
h2{font-size:13px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--texto);margin:20px 0 8px;display:flex;align-items:center;gap:8px}
h2::after{content:none}
h3{font-size:12.5px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--texto)}

/* Paneles */
.tarjeta,.caja,.tabla-scroll,p.vacio,.vacio-caja,.rutina,.ficha-r,.mapa-panel{border-radius:3px;background:var(--superficie);border:1px solid var(--borde);box-shadow:none}
.tarjeta{padding:10px 12px}
.tarjeta::before,.tarjeta::after{content:none}
.tarjeta .t{font-size:11px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--suave);font-family:var(--sans)}
.tarjeta .t .ico{width:14px;height:14px;color:var(--suave)}
.tarjeta .v{font-size:22px;font-weight:700;font-stretch:92%;letter-spacing:0;margin-top:4px;color:var(--texto)}
.tarjeta .v~.t{font-size:11.5px;color:var(--suave)}
a.tarjeta:hover{background:var(--superficie2);border-color:var(--borde2)}
.caja{padding:10px 12px}
.caja>h2:first-child,.caja>h3:first-child{margin:-10px -12px 10px;padding:8px 12px;background:transparent;border-bottom:1px solid var(--borde)}

/* Tablas */
.tabla-scroll{background:var(--superficie)}
th{background:var(--superficie);font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--suave);border-bottom:1px solid var(--borde2);font-family:var(--sans)}
th,td{padding:6px 10px}
td{font-size:12.5px;border-bottom:1px solid var(--borde)}
tbody tr:nth-child(even) td{background:transparent}
tbody tr:hover td{background:var(--superficie2)}
tbody tr:hover td:first-child{box-shadow:none}
tbody tr:has(input:checked) td{background:var(--marca-suave)}
tfoot td{background:var(--superficie2);border-top:1px solid var(--borde2);font-weight:700}
td a{border-bottom:0;font-weight:600;color:var(--texto)}td a:hover{color:var(--marca)}

/* Controles */
button,.boton{font-weight:700;font-size:12px;letter-spacing:.02em;text-transform:none;background:var(--marca2);border:1px solid var(--marca2);color:#fff;padding:6px 12px;box-shadow:none}
button:hover,.boton:hover{background:#2a62cc;border-color:#2a62cc;color:#fff;filter:none;box-shadow:none}
button.sec,.boton.sec{background:var(--boton-sec);color:var(--texto);border-color:transparent}
button.sec:hover,.boton.sec:hover{background:var(--superficie3);color:var(--texto);border-color:var(--borde2)}
button.peligro{background:var(--rojo-fuerte);border-color:var(--rojo-fuerte);color:#fff}
button.enlace{background:none;border:0;color:var(--azul);padding:0;font-weight:600}
button.enlace:hover{background:none;text-decoration:underline}
.icono-btn,.icono-btn:hover{box-shadow:none}
label{font-size:11px;color:var(--suave);text-transform:none;letter-spacing:0;font-family:var(--sans)}
input,select,textarea{background:var(--superficie2);border:1px solid var(--borde2);color:var(--texto);padding:6px 8px;font-size:12.5px}

/* Estados: texto de color, sin fondo (como «Engaging» / «Loitering») */
.estado,.chip{border-radius:3px;font-size:11px;font-weight:700;letter-spacing:.02em}
.pill{border-radius:3px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.estado.ok,.estado.enviado,.estado.hecho{color:var(--verde);background:transparent}
.estado.pendiente,.estado.propuesta,.estado.enviando{color:var(--ambar);background:transparent}
.msg{border-radius:3px;border:1px solid color-mix(in srgb,currentColor 35%,transparent);border-left-width:3px}
.confidencial{border-radius:3px;border:1px solid color-mix(in srgb,var(--ambar) 40%,transparent);background:var(--ambar-suave);color:var(--ambar);font-size:11.5px;font-weight:600}
.confidencial::before{content:"CONFIDENCIAL";font-size:10px;font-weight:800;letter-spacing:.06em;background:var(--ambar);color:#0a0e13;padding:1px 5px;border-radius:2px;margin-right:8px}
.migas a{font-size:11.5px;color:var(--suave);text-transform:none;letter-spacing:0;font-family:var(--sans)}
.progreso{background:var(--marca);box-shadow:none}
kbd{border-radius:2px;background:var(--superficie3);border:1px solid var(--borde2);font-size:10.5px}
.subnav{border-bottom:1px solid var(--borde)}
.subnav a{border-radius:0;color:var(--suave);font-size:12.5px;font-weight:600}
.subnav a[aria-current],.subnav a.activa{color:var(--marca);box-shadow:inset 0 -2px 0 var(--marca)}

/* Gráficos */
.g-rejilla{stroke:var(--borde);stroke-dasharray:none}
.grafico svg text{fill:var(--suave);font-family:var(--sans)}
.apilada-barra{border-radius:2px}.apilada-barra span+span{border-left:1px solid var(--superficie)}
.embudo-barra{background:color-mix(in srgb,var(--c) 20%,transparent)!important;border:1px solid color-mix(in srgb,var(--c) 75%,transparent);border-radius:3px;box-shadow:inset 3px 0 0 var(--c)}
.embudo-barra span{font-size:12px;font-weight:700;color:var(--texto)!important;text-shadow:none}
a.embudo-barra[href]:hover{background:color-mix(in srgb,var(--c) 32%,transparent)!important}
.pill.nivel{background:color-mix(in srgb,var(--c) 18%,transparent)!important;color:var(--texto)!important;border:1px solid color-mix(in srgb,var(--c) 70%,transparent)}

/* Mapa de la marina */
.mapa-lienzo{background:var(--mapa-mar)}
.mapa-panel,.mapa-barra,.mapa-leyenda,.mapa-zoom,.mapa-rosa,.mapa-tip{border-radius:3px}
.mapa-zoom button,.mapa-rosa{background:var(--superficie);border:1px solid var(--borde2);color:var(--texto);box-shadow:none}
.mapa-tip{background:var(--superficie2);border:1px solid var(--borde2);font-size:12px;box-shadow:0 8px 24px rgba(0,0,0,.45)}
.hueco.sel{stroke:var(--sel)!important;stroke-width:2}
.pestanas-panel{border-bottom:1px solid var(--borde)}
.pestanas-panel button{background:transparent;color:var(--suave);border:0;border-radius:0;box-shadow:none;font-size:12.5px}
.pestanas-panel button[aria-selected="true"],.pestanas-panel button.activa{color:var(--marca);box-shadow:inset 0 -2px 0 var(--marca)}
.kpis span{background:var(--superficie2);border-radius:3px}

/* Paleta de órdenes */
.paleta-caja{background:var(--superficie2);border:1px solid var(--borde2);border-radius:3px;box-shadow:0 18px 50px rgba(0,0,0,.55)}
.paleta-lista li.sel{background:var(--marca-suave);box-shadow:inset 2px 0 0 var(--marca)}

/* Fichas: etiqueta pequeña encima, valor en negrita (como «Track Details») */
dl.ficha dt{color:var(--suave);font-size:11px}dl.ficha dd{color:var(--texto);font-weight:600}

/* Acceso */
body.sin-menu{background:radial-gradient(ellipse at 50% -10%,var(--marca-suave),transparent 55%),var(--fondo)}
body.sin-menu .login{background:var(--superficie);border:1px solid var(--borde);border-radius:3px;box-shadow:0 12px 40px rgba(0,0,0,.35)}
body.sin-menu .ceja{text-align:center}
.auth-marca b{font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-stretch:90%}
.auth-marca span{font-size:12px;color:var(--suave)}
.auth-pie{font-size:11.5px;color:var(--tenue)}

/* Varios */
.accesos a,.atajo,.chip,.seg,.seg button,.tiempo-cuerpo,.pant,.lista li button{border-radius:3px}
.accesos a{background:var(--superficie);border:1px solid var(--borde)}
.accesos a:hover{background:var(--superficie2)}
.seg{background:var(--superficie2);border:1px solid var(--borde)}
.seg button{background:transparent;color:var(--suave);border:0;box-shadow:none;font-weight:600}
.seg button[aria-pressed="true"],.seg button.activo{background:var(--boton-sec);color:var(--texto)}
.tiempo-cuerpo{background:var(--superficie2)}

/* ============================ Mapa situacional (AIS) ============================ */
body.ancho-completo main:has(#sit){padding:0;max-width:none}
body.ancho-completo main:has(#sit) .titulo,body.ancho-completo main:has(#sit) .confidencial{margin:8px 12px}
.sit{display:grid;grid-template-columns:300px 1fr;height:calc(100vh - 44px - 74px);min-height:460px;border-top:1px solid var(--borde)}
.sit.con-detalle{grid-template-columns:300px 1fr 300px}
.sit-lista,.sit-detalle{background:var(--superficie);overflow:auto;display:flex;flex-direction:column}
.sit-lista{border-right:1px solid var(--borde)}
.sit-detalle{border-left:1px solid var(--borde);padding:10px 12px 16px;gap:8px}
.sit-cab{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 6px}
.sit-cab b{font-size:13px}
.sit-filtros{display:flex;gap:2px;background:var(--superficie2);border-radius:3px;padding:2px}
.sit-filtros button{background:transparent;border:0;color:var(--suave);padding:3px 8px;font-size:11px}
.sit-filtros button[aria-pressed="true"]{background:var(--boton-sec);color:var(--texto)}
.sit-busca{display:flex;align-items:center;gap:6px;margin:0 12px 8px;padding:0 8px;background:var(--superficie2);border:1px solid var(--borde);border-radius:3px;flex-direction:row}
.sit-busca input{border:0;background:transparent;padding:6px 0;flex:1;box-shadow:none!important}
.sit-busca .ico{width:14px;height:14px;color:var(--suave)}
.sit-pistas{flex:1;overflow:auto;border-top:1px solid var(--borde)}
.pt-grupo{display:flex;justify-content:space-between;padding:8px 12px;font-size:12px;font-weight:700;color:var(--amigo);border-bottom:1px solid var(--borde);position:sticky;top:0;background:var(--superficie);z-index:1}
.pt-grupo b{color:var(--suave);font-weight:600}
.pt-grupo:not(:first-child){color:var(--suave)}
.pt-vacio{padding:12px;color:var(--suave);font-size:12px;margin:0}
.pista-tarjeta{display:grid;gap:1px;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--borde);border-radius:0;padding:8px 12px 9px;color:var(--texto);font-weight:400;font-size:12px;box-shadow:none}
.pista-tarjeta:hover{background:var(--superficie2);color:var(--texto)}
.pista-tarjeta.sel{background:var(--superficie2);box-shadow:inset 0 0 0 1px var(--resalte)}
.pt-cat{font-size:10.5px;color:var(--suave)}
.pt-tit{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:800;font-stretch:92%;letter-spacing:.02em}
.pt-tit .vivo{margin-left:auto;font-style:normal;font-size:9.5px;font-weight:700;color:var(--verde);letter-spacing:.04em}
.pt-sim{width:9px;height:9px;display:inline-block;transform:rotate(45deg);border:1.5px solid currentColor;flex:none}
.pt-sim.amigo{color:var(--amigo);background:color-mix(in srgb,var(--amigo) 30%,transparent)}
.pt-sim.neutro{color:var(--suave)}
.pt-est{font-size:11px;font-weight:700;letter-spacing:.02em}
.pt-est.ok{color:var(--verde)}.pt-est.info{color:var(--azul)}.pt-est.aviso{color:var(--ambar)}.pt-est.mal{color:var(--rojo)}
.pt-linea{font-size:11.5px;color:var(--resalte)}
.pt-meta{display:flex;gap:10px;font-size:11px;color:var(--suave);font-family:var(--mono);margin-top:2px}
.pt-meta .eta{color:var(--texto);font-weight:600}
.sit-mapa{position:relative;overflow:hidden;background:var(--sit-mar);touch-action:none}
#sit-svg{width:100%;height:100%;display:block;cursor:grab;user-select:none}
#sit-svg:active{cursor:grabbing}
#sit-svg .mar{fill:var(--sit-mar)}
#sit-svg .reticula line{stroke:var(--sit-ret);stroke-width:1}
#sit-svg .ret-txt{fill:var(--tenue);font:10px var(--mono)}
#sit-svg .tierra path{fill:var(--sit-tierra);stroke:var(--sit-costa);stroke-width:1}
#sit-svg .anillos circle{fill:none;stroke:var(--sit-anillo);stroke-width:1}
#sit-svg .anillos .radial{stroke:var(--sit-anillo);stroke-width:.6;opacity:.45}
#sit-svg .anillos .radial.fuerte{opacity:.8}
#sit-svg .anillo-txt{fill:var(--amigo);font:600 10px var(--mono);opacity:.85}
#sit-svg .cardinal{fill:var(--suave);font:700 11px var(--sans);text-anchor:middle}
#sit-svg .puerto rect{fill:none;stroke:var(--amigo);stroke-width:1.5}
#sit-svg .puerto .centro{fill:var(--amigo);stroke:none}
#sit-svg .puerto-txt{fill:var(--amigo);font:800 11px var(--sans);letter-spacing:.04em}
#sit-svg .pista{cursor:pointer}
#sit-svg .pista .cuerpo{stroke-width:1.4;stroke-linejoin:round}
#sit-svg .pista.amigo .cuerpo{fill:color-mix(in srgb,var(--amigo) 35%,transparent);stroke:var(--amigo)}
#sit-svg .pista.amigo .marco{fill:none;stroke:var(--amigo);stroke-width:1;stroke-dasharray:5 12 5 0;opacity:.9}
#sit-svg .pista.recreo .cuerpo{fill:color-mix(in srgb,var(--neutro) 25%,transparent);stroke:var(--neutro)}
#sit-svg .pista.comercial .cuerpo{fill:color-mix(in srgb,var(--suave) 25%,transparent);stroke:var(--suave)}
#sit-svg .pista.neutro .cuerpo{fill:color-mix(in srgb,var(--desconocido) 22%,transparent);stroke:var(--desconocido)}
#sit-svg .pista.perdida{opacity:.45}
#sit-svg .pista .anillo{fill:none;stroke:var(--sel);stroke-width:1.6}
#sit-svg .pista.sel .cuerpo{stroke:var(--sel);fill:color-mix(in srgb,var(--sel) 30%,transparent)}
#sit-svg .estela{fill:none;stroke:var(--suave);stroke-width:1;stroke-dasharray:1 3;opacity:.6}
#sit-svg .estela.propia{stroke:var(--amigo);opacity:.8}
#sit-svg .vector{stroke:var(--suave);stroke-width:1.2}
#sit-svg .vector.propia{stroke:var(--amigo)}
#sit-svg .linea-puerto{stroke:var(--sel);stroke-width:1.4;stroke-dasharray:6 4}
#sit-svg .pildora rect{fill:var(--sel);stroke:none}
#sit-svg .pildora text{fill:#0a0e13;font:700 11px var(--mono);text-anchor:middle}
#sit-svg .etiqueta rect{fill:color-mix(in srgb,var(--superficie2) 88%,transparent);stroke:var(--borde2);stroke-width:1}
#sit-svg .etiqueta text{fill:var(--resalte);font:700 10.5px var(--sans);letter-spacing:.03em}
#sit-svg .etiqueta.propia text{fill:var(--amigo)}
#sit-svg .etiqueta.sel rect{stroke:var(--sel)}#sit-svg .etiqueta.sel text{fill:var(--sel)}
.sit-estado{position:absolute;left:10px;top:10px;display:flex;align-items:center;gap:10px;background:color-mix(in srgb,var(--superficie) 92%,transparent);border:1px solid var(--borde);border-radius:3px;padding:5px 10px;font-size:11.5px;color:var(--suave);max-width:calc(100% - 80px)}
.sit-estado .vivo{font-size:10.5px;letter-spacing:.06em;color:var(--verde)}
.sit-estado.mal .vivo{color:var(--rojo)}
.sit-estado .reloj-sit{font-family:var(--mono);color:var(--texto)}
.sit-zoom{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:2px}
.sit-zoom button{width:30px;height:30px;padding:0;background:color-mix(in srgb,var(--superficie) 92%,transparent);border:1px solid var(--borde);color:var(--texto);font-size:16px;font-weight:500}
.sit-zoom button:hover{background:var(--superficie2);border-color:var(--borde2)}
.sit-pie{position:absolute;left:10px;right:10px;bottom:8px;display:flex;gap:14px;align-items:center;font-size:11px;color:var(--suave);pointer-events:none}
.sit-pie .escala{margin-left:auto;display:flex;align-items:center;gap:6px;font-family:var(--mono)}
.sit-pie .escala i{display:inline-block;height:6px;border:1px solid var(--resalte);border-top:0}
.sit-cargando{padding:12px;color:var(--suave)}
.det-cab{display:flex;justify-content:space-between;align-items:center}
.det-cerrar{background:transparent;border:0;color:var(--suave);font-size:18px;padding:0 4px;line-height:1}
.det-cerrar:hover{background:transparent;color:var(--texto)}
.det-tit{font-size:16px;font-weight:800;font-stretch:90%;letter-spacing:.02em;text-transform:uppercase;margin:0}
.det-hace{color:var(--suave);font-weight:500}
.det-eta{display:grid;grid-template-columns:auto 1fr;align-items:baseline;gap:2px 10px;background:var(--superficie2);border:1px solid var(--borde);border-radius:3px;padding:8px 10px}
.det-eta span{font-size:11px;color:var(--suave)}.det-eta b{font:700 20px var(--mono);text-align:right}
.det-eta small{grid-column:1/-1;color:var(--suave);font-size:10.5px}
.det-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;margin:4px 0}
.det-grid dt{font-size:11px;color:var(--suave)}
.det-grid dd{margin:1px 0 0;font-size:12.5px;font-weight:700;text-transform:uppercase;letter-spacing:.01em;overflow-wrap:anywhere}
.det-grid dd a{color:var(--texto);text-transform:none}
.det-acc{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:4px}
.det-acc .boton,.det-acc button{text-align:center;padding:8px 6px}
.det-vincular{display:flex;flex-wrap:wrap;gap:6px;align-items:end;border-top:1px solid var(--borde);padding-top:10px}
.det-vincular label{flex:1;min-width:120px}
.det-vincular small{color:var(--suave);font-size:10.5px;flex-basis:100%}
@media (max-width:900px){
  .sit,.sit.con-detalle{grid-template-columns:1fr;grid-template-rows:56vh auto;height:auto}
  .sit-mapa{grid-row:1}.sit-lista{grid-row:2;border-right:0;max-height:none}
  .sit-detalle{position:fixed;left:0;right:0;bottom:56px;max-height:46vh;z-index:40;border:1px solid var(--borde2);border-radius:8px 8px 0 0;box-shadow:0 -10px 30px rgba(0,0,0,.4)}
}

/* Móvil */
@media (max-width:900px){
  .estado-sis{display:none}
  main{padding:10px 10px 90px}
  .tarjeta .v{font-size:clamp(16px,5vw,21px);word-break:break-word}
  .tabbar{background:var(--superficie);border-top:1px solid var(--borde)}
  .tabbar a,.tabbar button{font-size:10px;background:transparent;border:0;box-shadow:none;color:var(--suave)}
  .tabbar a.activa{color:var(--marca)}
}
@media print{:root{color-scheme:light}body{background:#fff!important;color:#000}}
.ocup-pants .col{border-radius:2px;height:72px;background:var(--superficie2)}
.ocup-pants .col span{background:color-mix(in srgb,var(--marca) 55%,transparent);border-top:2px solid var(--marca)}
.ocup-pants a{font-weight:700}
form.en-linea{display:inline}
.estado-pieza{font-weight:700;font-size:11.5px;white-space:nowrap}
.estado-pieza.ok{color:var(--verde)}.estado-pieza.aviso{color:var(--ambar)}.estado-pieza.fallo{color:var(--rojo)}.estado-pieza.off{color:var(--tenue)}
.sit-estado .sit-tiempo{color:var(--texto);border-left:1px solid var(--borde);padding-left:10px}
#sit-svg .viento line,#sit-svg .viento path{stroke:var(--desconocido);stroke-width:1.6;fill:none;opacity:.85}
label.casilla{flex-direction:row;align-items:center;gap:8px;font-size:12.5px;color:var(--texto)}
label.casilla input{width:auto}
.llave-entrar{margin-top:14px;display:grid;gap:8px;text-align:center}
.llave-entrar .separador{color:var(--suave);font-size:12px}
button.grande{padding:10px 14px;font-size:13.5px}
