/* ============================================================
   Jovimar Cloud: portal de aplicaciones
   Identidad: casco azul, línea de flotación roja, acento dorado de la rosa de los vientos
   ============================================================ */
:root{
  --casco:#1D2D3C; --casco-2:#2B4257; --casco-3:#3E5A73; --casco-4:#5B7489;
  --antifouling:#A4412C; --antifouling-t:#F4E4DF;
  --oro:#BAA22D; --oro-t:#F3EED3;
  --papel:#EDF0F3; --superficie:#FFFFFF; --superficie-2:#F6F8FA;
  --tinta:#17212B; --tinta-2:#4B5967; --tinta-3:#77838F;
  --linea:#CED6DD; --linea-2:#E3E8EC;
  --verde:#2E6A4E; --verde-t:#E0EEE6; --azul-t:#E1E9F1; --ambar:#7C5D0E; --ambar-t:#F5EDD3; --gris-t:#ECEFF2;
  --foco:#2F6FB0;
  --r-s:4px; --r-m:8px;
  --nav:268px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;font-size:15px;line-height:1.5;color:var(--tinta);background:var(--papel);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--foco)}
:focus-visible{outline:2px solid var(--foco);outline-offset:2px}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1,h2,h3{font-family:"Barlow Semi Condensed","Barlow",sans-serif;font-weight:600;line-height:1.2;margin:0}
.num{font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- Acceso ---------- */
.acceso{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:32px 16px 128px;
  background:linear-gradient(180deg,var(--casco) 0,var(--casco) 56%,#F4F6F8 56%,#F4F6F8 calc(56% + 3px),var(--antifouling) calc(56% + 3px),var(--antifouling) calc(56% + 11px),var(--papel) calc(56% + 11px))}
.carga-inicial{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;gap:12px;background:var(--papel);color:var(--tinta-2);font-size:15px;z-index:50}
.carga-inicial[hidden]{display:none}
.carga-punto{width:18px;height:18px;border-radius:50%;border:3px solid rgba(30,45,60,.18);border-top-color:var(--casco);animation:giro .8s linear infinite}
@keyframes giro{to{transform:rotate(360deg)}}
.acceso .marca{display:flex;justify-content:center}
.acceso .logo{height:92px;width:auto;opacity:.95}
.acceso-card{width:min(420px,100%);background:#fff;border-radius:var(--r-m);padding:28px 28px 24px;box-shadow:0 18px 50px rgba(15,25,35,.28)}
.acceso-card h1{font-size:28px;margin-bottom:2px}
.acceso-card p{margin:0 0 18px;color:var(--tinta-2)}
.acceso-card .campo{margin-bottom:14px}
.acceso-card .btn{width:100%;height:44px;justify-content:center;font-size:16px}
.acceso-pie{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:var(--tinta-3);font-size:13px}

/* ---------- Estructura ---------- */
.casco{position:sticky;top:0;z-index:10;background:var(--casco);color:#fff;box-shadow:inset 0 -5px 0 var(--antifouling),inset 0 -7px 0 #F4F6F8;padding:10px 20px 17px;display:flex;align-items:center;gap:16px}
.casco .logo{height:34px;width:auto}
.casco .titulo{display:flex;flex-direction:column;line-height:1.15}
.casco .titulo b{font-family:"Barlow Semi Condensed",sans-serif;font-size:19px;font-weight:600}
.casco .titulo span{font-size:13px;color:#C6D3DF}
.casco .der{margin-left:auto;display:flex;align-items:center;gap:12px}
.usuario-btn{background:transparent;border:1px solid var(--casco-4);color:#fff;border-radius:var(--r-s);padding:5px 10px;cursor:pointer;display:flex;gap:8px;align-items:center}
.usuario-btn:hover{background:var(--casco-2)}
.usuario-btn small{color:#C6D3DF}
.menu-usuario{position:absolute;right:20px;top:60px;background:#fff;color:var(--tinta);border:1px solid var(--linea);border-radius:var(--r-m);box-shadow:0 12px 32px rgba(15,25,35,.18);min-width:200px;padding:6px;z-index:30}
.menu-usuario button{display:block;width:100%;text-align:left;background:none;border:none;padding:8px 10px;border-radius:var(--r-s);cursor:pointer}
.menu-usuario button:hover{background:var(--papel)}

.cuerpo{display:grid;grid-template-columns:var(--nav) 1fr;min-height:calc(100vh - 62px)}
nav.lateral{background:var(--superficie);border-right:1px solid var(--linea);padding:18px 12px}
nav.lateral a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--r-s);color:var(--tinta);text-decoration:none;font-weight:500;margin-bottom:2px}
nav.lateral a:hover{background:var(--papel)}
nav.lateral a.activo{background:var(--casco);color:#fff}
nav.lateral a svg{width:18px;height:18px;flex:none;opacity:.85}
nav.lateral .sep{height:1px;background:var(--linea-2);margin:12px 6px}
nav.lateral .grupo{font-size:12px;color:var(--tinta-3);padding:4px 12px}
main.contenido{padding:24px 28px 48px;min-width:0}
.cabecera{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.cabecera h1{font-size:28px}
.cabecera p{margin:2px 0 0;color:var(--tinta-2)}
.cabecera .acciones{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.miga{font-size:14px;color:var(--tinta-2);margin-bottom:4px}
.miga a{text-decoration:none}

.banda{background:var(--ambar-t);color:#5C4508;padding:8px 20px;font-size:14px;border-bottom:1px solid #E5D5A4}
.banda a{color:#5C4508;font-weight:600}

/* ---------- Controles ---------- */
.btn{height:38px;padding:0 16px;border-radius:var(--r-s);border:1px solid var(--linea);background:#fff;color:var(--tinta);text-decoration:none;cursor:pointer;font-weight:500;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}
.btn:hover{background:var(--superficie-2)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-pri{background:var(--casco);border-color:var(--casco);color:#fff}.btn-pri:hover{background:var(--casco-2)}
.btn-peligro{background:var(--antifouling);border-color:var(--antifouling);color:#fff}.btn-peligro:hover{background:#8C3624}
.btn-sm{height:30px;padding:0 10px;font-size:14px}
.link{background:none;border:none;color:var(--foco);padding:0;cursor:pointer;font-weight:500}
.link:hover{text-decoration:underline}.link.rojo{color:var(--antifouling)}
.campo{display:flex;flex-direction:column;gap:4px;min-width:0}
.campo label{font-size:13px;color:var(--tinta-2);font-weight:500}
.campo input,.campo select,.campo textarea{height:38px;border:1px solid var(--linea);border-radius:var(--r-s);background:#fff;padding:0 10px;min-width:0;width:100%}
.campo textarea{height:auto;min-height:76px;padding:8px 10px;resize:vertical}
.campo input:focus,.campo select:focus,.campo textarea:focus{border-color:var(--foco);outline:none;box-shadow:0 0 0 3px rgba(47,111,176,.15)}
.campo .ayuda{font-size:12px;color:var(--tinta-3)}
.rejilla{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.rejilla .ancho{grid-column:1/-1}
.barra-filtros{background:var(--superficie);border:1px solid var(--linea);border-radius:var(--r-m);padding:14px;display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:16px}
.barra-filtros .campo{flex:0 1 180px}
.barra-filtros .campo.crece{flex:1 1 260px}
.msg-error{color:var(--antifouling);background:var(--antifouling-t);border-radius:var(--r-s);padding:8px 12px;margin:0 0 14px;font-size:14px}
.msg-info{color:var(--casco-2);background:var(--azul-t);border-radius:var(--r-s);padding:8px 12px;margin:0 0 14px;font-size:14px}

/* ---------- Paneles y tablas ---------- */
.panel{background:var(--superficie);border:1px solid var(--linea);border-radius:var(--r-m)}
.panel>header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--linea-2)}
.panel>header h2{font-size:19px}
.panel>header .der{margin-left:auto;display:flex;gap:8px}
.panel .pad{padding:16px}
.tabla-wrap{overflow:auto;max-width:100%}
table{border-collapse:collapse;width:100%}
thead th{position:sticky;top:0;background:var(--superficie-2);font-family:"Barlow Semi Condensed",sans-serif;font-weight:600;font-size:14px;color:var(--tinta-2);text-align:left;padding:9px 12px;border-bottom:1px solid var(--linea);white-space:nowrap}
tbody td{padding:9px 12px;border-bottom:1px solid var(--linea-2);vertical-align:top}
tbody tr.clic{cursor:pointer}
tbody tr.clic:hover{background:#F8FAFB}
th.der,td.der{text-align:right}
tfoot td{padding:9px 12px;font-weight:600;border-top:1px solid var(--linea);background:var(--superficie-2)}
.sub{display:block;color:var(--tinta-3);font-size:13px}
.trunc{display:block;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vacio{padding:40px 20px;text-align:center;color:var(--tinta-2)}
.vacio strong{display:block;color:var(--tinta);font-size:17px;margin-bottom:4px}
.neg{color:var(--antifouling)}.pos{color:var(--verde)}
.anulado td{color:var(--tinta-3);text-decoration:line-through}

.chip{display:inline-block;padding:1px 9px;border-radius:999px;font-size:13px;font-weight:500;white-space:nowrap;background:var(--gris-t);color:var(--tinta-2)}
.chip.e-cotizacion{background:var(--gris-t);color:var(--tinta-2)}
.chip.e-aprobada{background:var(--azul-t);color:var(--casco-2)}
.chip.e-en-ejecucion{background:var(--ambar-t);color:var(--ambar)}
.chip.e-terminada{background:#E5E8F5;color:#3B4A8C}
.chip.e-facturada{background:var(--verde-t);color:var(--verde)}
.chip.e-cerrada{background:var(--casco);color:#fff}
.chip.e-anulada{background:var(--antifouling-t);color:var(--antifouling)}
.chip.alerta{background:var(--antifouling-t);color:var(--antifouling)}
.avance{display:flex;align-items:center;gap:8px;min-width:110px}
.avance i{flex:1;height:6px;border-radius:3px;background:var(--linea-2);overflow:hidden;position:relative}
.avance i b{position:absolute;left:0;top:0;bottom:0;background:var(--casco-3)}
.avance span{font-size:13px;color:var(--tinta-2);font-variant-numeric:tabular-nums}

/* ---------- Indicadores ---------- */
.anios{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:16px}
.anio{background:var(--superficie);border:1px solid var(--linea);border-radius:var(--r-m);padding:16px 18px}
.anio h2{font-size:34px;font-weight:600;letter-spacing:.01em}
.anio h2 small{font-family:"Barlow",sans-serif;font-size:14px;font-weight:400;color:var(--tinta-2);margin-left:8px}
.anio dl{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin:12px 0 0}
.anio dt{font-size:13px;color:var(--tinta-2)}
.anio dd{margin:0;font-family:"Barlow Semi Condensed",sans-serif;font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}
.columnas{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:16px;align-items:start}
.pila{display:grid;gap:16px;align-content:start;min-width:0}
.columnas3{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;align-items:start}
.resumen-ot{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0;background:#fff;border:1px solid var(--linea);border-radius:var(--r-m);overflow:hidden;margin-bottom:16px}
.resumen-ot div{background:#fff;padding:12px 14px;box-shadow:1px 0 0 var(--linea),0 1px 0 var(--linea)}
.resumen-ot span{display:block;font-size:13px;color:var(--tinta-2)}
.resumen-ot b{font-family:"Barlow Semi Condensed",sans-serif;font-size:21px;font-weight:600;font-variant-numeric:tabular-nums}
.resumen-ot small{display:block;font-size:12px;color:var(--tinta-3)}
.modulos{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.modulo{display:block;background:#fff;border:1px solid var(--linea);border-radius:var(--r-m);padding:14px 16px;text-decoration:none;color:var(--tinta)}
.modulo:hover{border-color:var(--casco-3)}
.modulo b{display:block;font-size:16px}
.modulo span{display:block;color:var(--tinta-2);font-size:14px}
.modulo em{display:inline-block;margin-top:8px;font-style:normal;font-size:12px;color:var(--ambar);background:var(--ambar-t);border-radius:999px;padding:0 8px}

/* ---------- Pestañas ---------- */
.pestanas{display:flex;gap:4px;border-bottom:1px solid var(--linea);margin-bottom:16px;overflow-x:auto}
.pestanas a,.pestanas button{padding:9px 14px;border:none;background:none;border-bottom:3px solid transparent;color:var(--tinta-2);text-decoration:none;font-weight:500;cursor:pointer;white-space:nowrap}
.pestanas a.activo,.pestanas button.activo{color:var(--casco);border-bottom-color:var(--antifouling)}

/* ---------- Seguimiento ---------- */
.linea-tiempo{list-style:none;margin:0;padding:0}
.linea-tiempo li{position:relative;padding:0 0 16px 22px;border-left:2px solid var(--linea-2);margin-left:6px}
.linea-tiempo li::before{content:"";position:absolute;left:-7px;top:4px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--casco-3)}
.linea-tiempo li.estado::before{background:var(--antifouling);border-color:var(--antifouling)}
.linea-tiempo time{font-size:13px;color:var(--tinta-3)}
.linea-tiempo p{margin:2px 0 0}

/* ---------- Líneas de documento ---------- */
.lineas{width:100%;border-collapse:collapse}
.lineas td{padding:6px 6px 6px 0;border:none;vertical-align:top}
.lineas .campo input,.lineas .campo select{height:36px}
.lineas .quitar{height:36px;border:none;background:none;color:var(--antifouling);cursor:pointer;font-weight:500}

/* ---------- Documental ---------- */
.chip.e-aprobado{background:var(--verde-t);color:var(--verde)}
.chip.e-aprobado-con-observacion{background:var(--ambar-t);color:var(--ambar)}
.chip.e-subido{background:var(--azul-t);color:var(--casco-2)}
.chip.e-pendiente{background:var(--gris-t);color:var(--tinta-2)}
.chip.e-rechazado{background:var(--antifouling-t);color:var(--antifouling)}
.chip.e-anulado{background:var(--gris-t);color:var(--tinta-3);text-decoration:line-through}
.chip.a-vencido{background:var(--antifouling);color:#fff}
.chip.a-por-vencer{background:var(--ambar-t);color:var(--ambar)}
.chip.a-vigente{background:var(--verde-t);color:var(--verde)}
.chip.a-sin-vencimiento{background:var(--gris-t);color:var(--tinta-2)}
.chip.a-rechazado{background:var(--antifouling-t);color:var(--antifouling)}
.chip.a-anulado{background:var(--gris-t);color:var(--tinta-3)}
.chip.c-al-dia{background:var(--verde-t);color:var(--verde)}
.chip.c-por-vencer{background:var(--ambar-t);color:var(--ambar)}
.chip.c-vencido{background:var(--antifouling);color:#fff}
.chip.c-en-revision{background:var(--azul-t);color:var(--casco-2)}
.chip.c-rechazado{background:var(--antifouling-t);color:var(--antifouling)}
.chip.c-falta{background:#fff;color:var(--antifouling);box-shadow:inset 0 0 0 1px var(--antifouling)}
.resumen-ot.texto{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.resumen-ot.texto b{font-family:"Barlow",sans-serif;font-size:16px;overflow-wrap:break-word}
.resumen-ot div[data-f]:hover{background:var(--superficie-2)}

/* ---------- Planificación ---------- */
.f-ACT{--fc:#2F6FB0;--fb:#E1ECF7}.f-OT{--fc:#2E6A4E;--fb:#E0EEE6}.f-DOC{--fc:#7C5D0E;--fb:#F5EDD3}.f-RRHH{--fc:#6B4E8A;--fb:#EEE8F4}
.chip.f-ACT,.chip.f-OT,.chip.f-DOC,.chip.f-RRHH{background:var(--fb);color:var(--fc)}
.punto{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--fc);margin-right:6px;flex:none}
.cal-barra{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.cal-nav{display:flex;align-items:center;gap:6px}.cal-nav h2{font-size:21px;margin-left:8px}
.cal-fuentes{display:flex;flex-wrap:wrap;gap:14px;font-size:14px}.cal-fuentes label{display:flex;align-items:center;gap:4px;cursor:pointer}
.cal{overflow:hidden}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cal-dow{padding:8px 10px;font-family:"Barlow Semi Condensed",sans-serif;font-weight:600;font-size:13px;color:var(--tinta-2);background:var(--superficie-2);border-bottom:1px solid var(--linea);text-transform:capitalize}
.cal-dia{min-height:112px;padding:4px 6px 6px;border-right:1px solid var(--linea-2);border-bottom:1px solid var(--linea-2);display:flex;flex-direction:column;gap:3px;min-width:0}
.cal-dia:nth-child(7n+7){border-right:none}.cal-dia.clic{cursor:pointer}.cal-dia.clic:hover{background:#FAFBFC}
.cal-dia .n{font-size:13px;color:var(--tinta-2);font-variant-numeric:tabular-nums;align-self:flex-end;padding:1px 6px;border-radius:999px}
.cal-dia.fuera{background:#FAFBFC}.cal-dia.fuera .n{color:var(--tinta-3)}
.cal-dia.hoy .n{background:var(--antifouling);color:#fff;font-weight:600}
.ev{display:block;width:100%;text-align:left;border:none;border-left:3px solid var(--fc);background:var(--fb);color:var(--tinta);font-size:12px;line-height:1.3;padding:2px 6px;border-radius:3px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev:hover{filter:brightness(.96)}.ev.atrasada{box-shadow:inset 0 0 0 1px var(--antifouling);color:var(--antifouling)}.ev.hecho{text-decoration:line-through;opacity:.7}
.ev-mas{border:none;background:none;color:var(--foco);font-size:12px;text-align:left;padding:0 6px;cursor:pointer}
.agenda-lista{list-style:none;margin:0;padding:0}.agenda-lista li{padding:7px 0;border-bottom:1px solid var(--linea-2);display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
.agenda-lista li:last-child{border-bottom:none}.agenda-lista .sub{flex-basis:100%;padding-left:15px}
.ag-dia{margin-bottom:18px}.ag-dia h3{font-size:16px;margin:0 0 4px;text-transform:capitalize}
.kanban{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:14px;overflow-x:auto;padding-bottom:6px;align-items:start}
.kcol{background:#E6EAEE;border-radius:var(--r-m);padding:10px;min-height:220px;transition:background .15s}
.kcol.sobre{background:#D6E2EE;box-shadow:inset 0 0 0 2px var(--foco)}
.kcol>header{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 10px}.kcol h3{font-size:16px}
.kcount{font-size:13px;background:#fff;border-radius:999px;padding:0 8px;color:var(--tinta-2)}
.klista{display:grid;gap:8px}.kvacio{margin:8px 4px;color:var(--tinta-3);font-size:13px}
.kcard{background:#fff;border:1px solid var(--linea);border-left:4px solid var(--casco-4);border-radius:var(--r-s);padding:8px 10px;cursor:pointer;display:grid;gap:4px;box-shadow:0 1px 2px rgba(15,25,35,.06)}
.kcard:hover{border-color:var(--casco-4)}.kcard.prio-alta{border-left-color:var(--antifouling)}.kcard.prio-media{border-left-color:var(--oro)}.kcard.prio-baja{border-left-color:var(--casco-4)}
.kcard.atrasada{background:#FFF8F6}.kcard.arrastrando{opacity:.45}.kcard.moviendo{opacity:.6}
.kcab{display:flex;justify-content:space-between;align-items:center;gap:6px}.kcard b{font-size:15px;line-height:1.3}
.kmeta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:13px;color:var(--tinta-2)}
.kmover{height:28px;border:1px solid var(--linea-2);border-radius:var(--r-s);background:var(--superficie-2);font-size:13px;color:var(--tinta-2)}
.chip.p-alta{background:var(--antifouling-t);color:var(--antifouling)}.chip.p-media{background:var(--oro-t);color:#6E5F12}.chip.p-baja{background:var(--gris-t);color:var(--tinta-2)}
.chip.e-por-hacer{background:var(--gris-t);color:var(--tinta-2)}.chip.e-en-curso{background:var(--ambar-t);color:var(--ambar)}.chip.e-en-revision{background:var(--azul-t);color:var(--casco-2)}
.chip.e-hecho{background:var(--verde-t);color:var(--verde)}.chip.e-cancelada{background:var(--gris-t);color:var(--tinta-3);text-decoration:line-through}

/* ---------- Recursos humanos ---------- */
.ficha-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;align-items:start}
.dl{display:grid;grid-template-columns:150px 1fr;gap:7px 12px;margin:0}.dl dt{color:var(--tinta-2);font-size:13px}.dl dd{margin:0;min-width:0;overflow-wrap:anywhere}
.barra{display:grid;grid-template-columns:minmax(90px,1.2fr) 2fr auto;align-items:center;gap:10px;margin-bottom:8px;font-size:14px}
.barra i{height:8px;border-radius:4px;background:var(--linea-2);overflow:hidden;position:relative}.barra i b{position:absolute;left:0;top:0;bottom:0;background:var(--casco-3)}
.sec-form{font-size:15px;color:var(--casco-2);margin:18px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--linea-2)}.sec-form:first-child{margin-top:0}
.chip.e-activo{background:var(--verde-t);color:var(--verde)}.chip.e-desvinculado,.chip.e-inactivo{background:var(--gris-t);color:var(--tinta-3)}
.chip.e-solicitada{background:var(--ambar-t);color:var(--ambar)}.chip.e-aprobada{background:var(--azul-t);color:var(--casco-2)}.chip.e-rechazada{background:var(--antifouling-t);color:var(--antifouling)}

/* ---------- Capas ---------- */
.velo{position:fixed;inset:0;background:rgba(15,25,35,.45);z-index:40}
.cajon{position:fixed;top:0;right:0;bottom:0;width:min(600px,100%);background:#fff;z-index:41;display:flex;flex-direction:column;box-shadow:-12px 0 40px rgba(15,25,35,.25)}
.cajon>header{padding:18px 24px 14px;border-bottom:1px solid var(--linea)}
.cajon>header h2{font-size:22px}
.cajon>header p{margin:2px 0 0;color:var(--tinta-2);font-size:14px}
.cajon .cuerpo-cajon{padding:16px 24px;overflow:auto;flex:1}
.cajon>footer{padding:14px 24px;border-top:1px solid var(--linea);display:flex;gap:8px;justify-content:flex-end;align-items:center}
.cajon>footer .nota{margin-right:auto;font-size:13px;color:var(--tinta-3)}
.aviso{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--casco);color:#fff;padding:10px 18px;border-radius:var(--r-s);z-index:60;box-shadow:0 8px 24px rgba(15,25,35,.3);max-width:calc(100% - 32px)}
.aviso.error{background:var(--antifouling)}
.cargando{opacity:.55;pointer-events:none;transition:opacity .15s}
.spinner{padding:48px;text-align:center;color:var(--tinta-2)}

@media (max-width:900px){
  .cuerpo{grid-template-columns:1fr}
  nav.lateral{display:flex;overflow-x:auto;gap:4px;padding:8px;border-right:none;border-bottom:1px solid var(--linea);position:sticky;top:59px;z-index:9}
  nav.lateral a{white-space:nowrap;margin:0}
  nav.lateral .sep,nav.lateral .grupo{display:none}
  nav.lateral .navgrupo{display:contents}
  nav.lateral .navgrupo[hidden]{display:none!important}
  .cal-dia{min-height:72px;padding:2px}.ev{font-size:10px;padding:1px 3px}
  .dl{grid-template-columns:120px 1fr}
  main.contenido{padding:16px}
  .columnas{grid-template-columns:1fr}
  .casco .titulo span{display:none}
  .usuario-btn small{display:none}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media print{.casco,nav.lateral,.acciones,.no-imprimir{display:none!important}.cuerpo{display:block}body{background:#fff}}
.cal-dia.feriado{background:repeating-linear-gradient(135deg,transparent 0 8px,rgba(176,64,48,.05) 8px 16px)}
.cal-dia .fer{display:block;font-size:11px;line-height:1.25;color:#a3402f;font-weight:600;margin:2px 0 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
