/* ============================================================================
   Portal de Subcontratas (CAE) · cae.css
   Colores copiados de MyTSG (_mytsg_head.php, #mytsg-root) para que el portal se
   sienta parte de la casa. Cada token de color tiene su pareja oscura.
   ============================================================================ */
:root {
  --bg:#eaeef4; --panel:#f4f6f9; --surface:#ffffff; --surface-2:#f6f8fb;
  --border:#e4e9f0; --border-2:#d4dbe5;
  --fg:#15203a; --fg2:#586173; --fg3:#7a8496;
  --accent:#004a99; --accent-2:#216CA8; --accent-3:#1a8dcf;
  --navy:#0a1628; --navy-2:#0e2347; --navy-3:#103a72;
  --field:#ffffff;
  --sh-1:0 1px 2px rgba(16,28,52,.04),0 1px 3px rgba(16,28,52,.05);
  --sh-2:0 4px 10px rgba(16,28,52,.06),0 18px 36px rgba(16,28,52,.10);
  --ok-bg:#e7f6ee; --ok-bd:#b7e2c9; --ok-fg:#1e7d4f;
  --avi-bg:#fdf4e0; --avi-bd:#f0dcae; --avi-fg:#8a5f00;
  --err-bg:#fdeaea; --err-bd:#f3c9c9; --err-fg:#b02330;
  --info-bg:#eaf2fb; --info-bd:#cfe0f3; --info-fg:#1c5f96;
  --neu-bg:#f1f3f6; --neu-bd:#e1e6ed; --neu-fg:#5a6472;
  color-scheme: light;
}
:root[data-tema="dark"] {
  --bg:#070e1b; --panel:#0a1322; --surface:#101e34; --surface-2:#152743;
  --border:rgba(255,255,255,.09); --border-2:rgba(255,255,255,.16);
  --fg:#e9eef6; --fg2:#9aa7ba; --fg3:#7d889b;
  --accent:#2f86d6; --accent-2:#3b91de; --accent-3:#5cc6f5;
  --field:#0c1a30;
  --sh-1:0 1px 3px rgba(0,0,0,.45);
  --sh-2:0 4px 10px rgba(0,0,0,.4),0 20px 44px rgba(0,0,0,.55);
  --ok-bg:rgba(46,158,99,.14); --ok-bd:rgba(46,158,99,.34); --ok-fg:#5cd39a;
  --avi-bg:rgba(201,138,0,.15); --avi-bd:rgba(201,138,0,.36); --avi-fg:#f0c264;
  --err-bg:rgba(176,35,48,.16); --err-bd:rgba(176,35,48,.38); --err-fg:#f08a92;
  --info-bg:rgba(33,108,168,.16); --info-bd:rgba(33,108,168,.36); --info-fg:#8fc3ee;
  --neu-bg:rgba(255,255,255,.05); --neu-bd:rgba(255,255,255,.12); --neu-fg:#a3aec0;
  color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-tema]) {
    --bg:#070e1b; --panel:#0a1322; --surface:#101e34; --surface-2:#152743;
    --border:rgba(255,255,255,.09); --border-2:rgba(255,255,255,.16);
    --fg:#e9eef6; --fg2:#9aa7ba; --fg3:#7d889b;
    --accent:#2f86d6; --accent-2:#3b91de; --accent-3:#5cc6f5;
    --field:#0c1a30;
    --sh-1:0 1px 3px rgba(0,0,0,.45);
    --sh-2:0 4px 10px rgba(0,0,0,.4),0 20px 44px rgba(0,0,0,.55);
    --ok-bg:rgba(46,158,99,.14); --ok-bd:rgba(46,158,99,.34); --ok-fg:#5cd39a;
    --avi-bg:rgba(201,138,0,.15); --avi-bd:rgba(201,138,0,.36); --avi-fg:#f0c264;
    --err-bg:rgba(176,35,48,.16); --err-bd:rgba(176,35,48,.38); --err-fg:#f08a92;
    --info-bg:rgba(33,108,168,.16); --info-bd:rgba(33,108,168,.36); --info-fg:#8fc3ee;
    --neu-bg:rgba(255,255,255,.05); --neu-bd:rgba(255,255,255,.12); --neu-fg:#a3aec0;
    color-scheme: dark;
  }
}

*,*::before,*::after { box-sizing:border-box; margin:0; padding:0; }
html,body { min-height:100%; }
body { background:var(--bg); color:var(--fg); font:15px/1.5 'Roboto',system-ui,sans-serif; -webkit-font-smoothing:antialiased; }
a { color:var(--accent-2); text-decoration:none; }
a:hover { text-decoration:underline; }
:root[data-tema="dark"] a { color:var(--accent-3); }
button,input,select,textarea { font:inherit; color:inherit; }
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible { outline:3px solid var(--accent-3); outline-offset:2px; border-radius:6px; }
.ico { flex-shrink:0; vertical-align:middle; }
.sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }

.banda-dev { background:repeating-linear-gradient(45deg,#8a5f00,#8a5f00 12px,#7a5400 12px,#7a5400 24px); color:#fff; font:700 11.5px 'Roboto',sans-serif; letter-spacing:1.4px; text-transform:uppercase; text-align:center; padding:5px 10px; }

/* ---------- Barra superior ---------- */
.top { position:sticky; top:0; z-index:50; display:flex; align-items:center; justify-content:space-between; gap:14px; padding:10px 22px; background:var(--navy); box-shadow:0 2px 14px rgba(0,0,0,.28); }
.top-marca { display:flex; align-items:center; gap:12px; color:#fff; min-width:0; text-decoration:none!important; }
.top-logo { display:inline-flex; align-items:center; height:36px; padding:0 12px; border-radius:10px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.13); }
.top-logo img { height:19px; display:block; }
.top-tit { font:700 15px 'Outfit',sans-serif; letter-spacing:.2px; color:rgba(255,255,255,.88); white-space:nowrap; }
.top-der { display:flex; align-items:center; gap:10px; }
.top-ico { width:38px; height:38px; display:inline-flex; align-items:center; justify-content:center; border-radius:10px; border:1px solid rgba(255,255,255,.15); background:rgba(255,255,255,.05); color:rgba(255,255,255,.85); cursor:pointer; }
.top-ico:hover { background:rgba(255,255,255,.12); color:#fff; }
.i-sol { display:none; }
:root[data-tema="dark"] .i-sol { display:inline; } :root[data-tema="dark"] .i-luna { display:none; }
@media (prefers-color-scheme: dark) { :root:not([data-tema]) .i-sol { display:inline; } :root:not([data-tema]) .i-luna { display:none; } }
.top-user { display:flex; align-items:center; gap:10px; padding:3px 12px 3px 4px; border-radius:12px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); }
.top-avatar { width:32px; height:32px; border-radius:50%; background:linear-gradient(140deg,#3b91de,#004a99); color:#fff; font:700 13px 'Roboto',sans-serif; display:flex; align-items:center; justify-content:center; }
.top-user-txt { display:flex; flex-direction:column; line-height:1.2; color:#fff; max-width:240px; }
.top-user-txt b { font-size:13px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.top-user-txt small { font-size:11.5px; color:rgba(255,255,255,.6); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.top-btn { display:inline-flex; align-items:center; gap:7px; height:38px; padding:0 13px; border-radius:10px; border:1px solid rgba(255,255,255,.15); background:transparent; color:rgba(255,255,255,.8); font-size:13px; font-weight:600; cursor:pointer; text-decoration:none!important; }
.top-btn:hover { background:rgba(255,255,255,.1); color:#fff; }
:root[data-tema="dark"] a.top-btn { color:rgba(255,255,255,.8); }      /* si no, gana el color de enlace del tema oscuro */
:root[data-tema="dark"] a.top-btn:hover { color:#fff; }
.top-salir { display:inline; }
/* Contacto con PRL (un <details>: sin JS) */
.top-contacto { position:relative; }
.top-contacto > summary { list-style:none; }
.top-contacto > summary::-webkit-details-marker { display:none; }
.top-contacto[open] > summary { background:rgba(255,255,255,.12); color:#fff; }
.top-contacto-caja { position:absolute; right:0; top:46px; z-index:60; width:300px; max-width:calc(100vw - 24px); display:flex; flex-direction:column; gap:9px;
  padding:16px 18px; border-radius:14px; background:var(--surface); color:var(--fg); border:1px solid var(--border); box-shadow:var(--sh-2); font-size:14px; }
.contacto-dep { font:700 15px 'Outfit',sans-serif; }
.contacto-l { display:flex; align-items:center; gap:8px; color:var(--fg); word-break:break-all; }
a.contacto-l { color:var(--accent); font-weight:600; }
.top-contacto-caja small, .contacto-card small { color:var(--fg2); font-size:12.5px; margin-top:-4px; }
.contacto-card { display:flex; flex-direction:column; gap:9px; margin-top:10px; }
.fuera-ita { color:var(--err-fg); font-size:12.5px; font-weight:600; margin-top:3px; }
.decide-empresa { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:10px; padding:10px 12px; border-radius:10px; background:var(--info-bg); border:1px solid var(--info-bd); font-size:13.5px; }
.decide-empresa form { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.decide-empresa input[type=text] { min-width:220px; }

/* ---------- Cabecera de página ---------- */
.hero { position:relative; overflow:hidden; background:linear-gradient(135deg,var(--navy) 0%,var(--navy-2) 55%,var(--navy-3) 100%); padding:30px 22px 34px; }
.hero::before { content:""; position:absolute; inset:0; opacity:.6; pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:42px 42px; -webkit-mask-image:radial-gradient(120% 90% at 18% 0%,#000 35%,transparent 78%); mask-image:radial-gradient(120% 90% at 18% 0%,#000 35%,transparent 78%); }
.hero-in { position:relative; max-width:1240px; margin:0 auto; }
.hero-lb { font:700 11px 'Roboto',sans-serif; letter-spacing:2.3px; text-transform:uppercase; color:rgba(255,255,255,.45); margin-bottom:8px; }
.hero-t { font:700 clamp(24px,3.2vw,34px)/1.12 'Outfit',sans-serif; letter-spacing:-.7px; color:#fff; }
.hero-s { margin-top:9px; color:rgba(255,255,255,.7); font-size:15px; max-width:70ch; }

/* ---------- Pestañas ---------- */
.pestanas { position:sticky; top:58px; z-index:40; background:var(--surface); border-bottom:1px solid var(--border); box-shadow:var(--sh-1); }
.pestanas-in { max-width:1240px; margin:0 auto; display:flex; gap:4px; padding:0 14px; overflow-x:auto; scrollbar-width:none; }
.pestanas a { display:inline-flex; align-items:center; gap:8px; padding:14px 14px 12px; font-size:14px; font-weight:600; color:var(--fg2); border-bottom:3px solid transparent; white-space:nowrap; text-decoration:none!important; }
.pestanas a:hover { color:var(--fg); }
.pestanas a.on { color:var(--accent-2); border-bottom-color:var(--accent-2); }
:root[data-tema="dark"] .pestanas a.on { color:var(--accent-3); border-bottom-color:var(--accent-3); }

/* ---------- Contenido ---------- */
.main { max-width:1240px; margin:0 auto; padding:24px 22px 60px; display:flex; flex-direction:column; gap:18px; }
.card { background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:20px 22px; box-shadow:var(--sh-1); }
.card h2 { font:700 17px 'Outfit',sans-serif; letter-spacing:-.2px; display:flex; align-items:center; gap:9px; margin-bottom:4px; }
.card h2 .ico { color:var(--accent-2); }
.card .sub { color:var(--fg2); font-size:14px; margin-bottom:14px; }
.rejilla { display:grid; gap:16px; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); }
.muted { color:var(--fg2); } .small { font-size:13px; } .num { font-variant-numeric:tabular-nums; }

/* KPIs */
.kpi { display:flex; align-items:center; gap:18px; }
.kpi-anillo { --p:0; --c:var(--accent-2); width:92px; height:92px; flex-shrink:0; border-radius:50%; display:grid; place-items:center;
  background:conic-gradient(var(--c) calc(var(--p)*1%), var(--neu-bd) 0); }
.kpi-anillo span { width:72px; height:72px; border-radius:50%; background:var(--surface); display:grid; place-items:center; font:800 20px 'Outfit',sans-serif; }
.kpi-big { font:800 34px/1 'Outfit',sans-serif; letter-spacing:-1px; }
.kpi-lb { color:var(--fg2); font-size:13.5px; margin-top:4px; }
.barra { height:8px; border-radius:6px; background:var(--neu-bd); overflow:hidden; }
.barra > i { display:block; height:100%; border-radius:6px; background:var(--accent-2); }
.barra.ok > i { background:var(--ok-fg); } .barra.avi > i { background:var(--avi-fg); } .barra.err > i { background:var(--err-fg); }

/* Píldoras de estado (forma + color) */
.pill { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; padding:3px 10px; border-radius:50px; border:1px solid; white-space:nowrap; }
.pill::before { content:""; width:7px; height:7px; border-radius:50%; background:currentColor; }
.pill.ok { color:var(--ok-fg); background:var(--ok-bg); border-color:var(--ok-bd); }
.pill.avi { color:var(--avi-fg); background:var(--avi-bg); border-color:var(--avi-bd); }
.pill.err { color:var(--err-fg); background:var(--err-bg); border-color:var(--err-bd); }
.pill.info { color:var(--info-fg); background:var(--info-bg); border-color:var(--info-bd); }
.pill.neu { color:var(--neu-fg); background:var(--neu-bg); border-color:var(--neu-bd); }
.chip { display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; padding:3px 10px; border-radius:7px; background:var(--surface-2); border:1px solid var(--border); color:var(--fg2); }
.chip.critico { color:var(--err-fg); background:var(--err-bg); border-color:var(--err-bd); }

/* Avisos */
.flash { display:flex; align-items:center; gap:10px; padding:13px 16px; border-radius:12px; border:1px solid; font-weight:500; }
.flash.ok { background:var(--ok-bg); border-color:var(--ok-bd); color:var(--ok-fg); }
.flash.err { background:var(--err-bg); border-color:var(--err-bd); color:var(--err-fg); }
.flash.info { background:var(--info-bg); border-color:var(--info-bd); color:var(--info-fg); }
.nota { font-size:14px; line-height:1.55; padding:12px 15px; border-radius:12px; border:1px solid; display:flex; gap:10px; align-items:flex-start; }
.nota .ico { margin-top:2px; }
.nota.info { background:var(--info-bg); border-color:var(--info-bd); color:var(--info-fg); }
.nota.avi { background:var(--avi-bg); border-color:var(--avi-bd); color:var(--avi-fg); }
.nota.err { background:var(--err-bg); border-color:var(--err-bd); color:var(--err-fg); }
.nota.ok { background:var(--ok-bg); border-color:var(--ok-bd); color:var(--ok-fg); }

/* Botones y formularios */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:42px; padding:10px 17px; border-radius:11px; border:none; cursor:pointer;
  background:linear-gradient(135deg,var(--accent),var(--accent-2)); color:#fff!important; font-weight:600; font-size:14px; text-decoration:none!important; line-height:1.2; }
.btn:hover { filter:brightness(1.08); }
.btn:disabled { opacity:.5; cursor:not-allowed; filter:none; }
.btn.sec { background:var(--surface); color:var(--accent-2)!important; border:1px solid var(--border-2); }
:root[data-tema="dark"] .btn.sec { color:var(--accent-3)!important; }
.btn.sec:hover { background:var(--surface-2); filter:none; }
.btn.ok { background:linear-gradient(135deg,#17734a,#1e7d4f); }
.btn.peligro { background:linear-gradient(135deg,#9a1d29,#b02330); }
.btn.sm { min-height:36px; padding:7px 12px; font-size:13px; border-radius:9px; }
.btn.ancho { width:100%; }
.acciones { display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.campo { display:block; margin-bottom:14px; }
.campo > span { display:block; font-size:12.5px; font-weight:600; color:var(--fg2); margin-bottom:6px; }
.campo small { display:block; font-size:12.5px; color:var(--fg3); margin-top:5px; line-height:1.45; }
input[type=text],input[type=email],input[type=password],input[type=date],input[type=search],select,textarea {
  width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--border-2); border-radius:10px; background:var(--field); font-size:15px; }
textarea { min-height:84px; resize:vertical; line-height:1.5; }
input:focus,select:focus,textarea:focus { outline:none; border-color:var(--accent-3); box-shadow:0 0 0 3px rgba(33,108,168,.18); }
.fila2 { display:grid; gap:0 14px; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); }
.check { display:flex; gap:10px; align-items:flex-start; font-size:14px; margin-bottom:14px; }
.check input { width:20px; height:20px; margin-top:2px; flex-shrink:0; accent-color:var(--accent-2); }

/* Zona de subida */
.subida { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; text-align:center;
  border:2px dashed var(--border-2); border-radius:14px; padding:22px 16px; background:var(--surface-2); cursor:pointer; transition:border-color .15s, background .15s; }
.subida:hover, .subida.encima { border-color:var(--accent-3); background:var(--info-bg); }
.subida input[type=file] { position:absolute; inset:0; opacity:0; cursor:pointer; }
.subida b { font-size:14.5px; } .subida small { color:var(--fg3); font-size:12.5px; }
.subida .elegido { font-weight:600; color:var(--accent-2); word-break:break-all; }
.subida .ico { color:var(--accent-2); }

/* Lista de requisitos */
.reqs { display:flex; flex-direction:column; gap:10px; }
.req { border:1px solid var(--border); border-radius:14px; background:var(--surface); }
.req[data-color="err"] { border-left:4px solid var(--err-fg); }
.req[data-color="avi"] { border-left:4px solid var(--avi-fg); }
.req[data-color="info"] { border-left:4px solid var(--info-fg); }
.req[data-color="ok"] { border-left:4px solid var(--ok-fg); }
.req[data-color="neu"] { border-left:4px solid var(--neu-bd); }
.req-cab { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px 16px; align-items:center; padding:14px 16px; }
.req-nom { font-weight:600; font-size:15px; }
.req-meta { display:flex; flex-wrap:wrap; gap:6px 10px; align-items:center; margin-top:5px; font-size:13px; color:var(--fg2); }
.req-txt { font-size:13.5px; color:var(--fg2); margin-top:4px; }
.req-acc { display:flex; gap:8px; align-items:center; justify-content:flex-end; flex-wrap:wrap; }
.req details { border-top:1px solid var(--border); }
.req summary { list-style:none; cursor:pointer; padding:11px 16px; font-size:13.5px; font-weight:600; color:var(--accent-2); display:flex; align-items:center; gap:8px; }
:root[data-tema="dark"] .req summary { color:var(--accent-3); }
.req summary::-webkit-details-marker { display:none; }
.req details[open] > summary { background:var(--surface-2); }
.req-cuerpo { padding:16px; }
.motivo { margin-top:8px; }
.hist { list-style:none; display:flex; flex-direction:column; gap:8px; }
.hist li { display:flex; flex-wrap:wrap; gap:6px 12px; align-items:center; font-size:13.5px; padding:9px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }

/* Tablas */
.tabla-w { overflow-x:auto; }
table.t { width:100%; border-collapse:collapse; font-size:14px; }
table.t th { text-align:left; font-size:11px; letter-spacing:1px; text-transform:uppercase; color:var(--fg3); font-weight:700; padding:10px 12px; border-bottom:1px solid var(--border); white-space:nowrap; }
table.t td { padding:12px; border-bottom:1px solid var(--border); vertical-align:middle; }
table.t tr:last-child td { border-bottom:none; }
table.t tr:hover td { background:var(--surface-2); }

/* Lista de tareas del inicio */
.tareas { list-style:none; display:flex; flex-direction:column; gap:8px; }
.tareas li a { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); color:var(--fg); text-decoration:none!important; }
.tareas li a:hover { border-color:var(--accent-3); }
.tareas .t-ico { width:34px; height:34px; border-radius:10px; display:grid; place-items:center; flex-shrink:0; }
.tareas .t-ico.err { background:var(--err-bg); color:var(--err-fg); } .tareas .t-ico.avi { background:var(--avi-bg); color:var(--avi-fg); }
.tareas .t-ico.neu { background:var(--neu-bg); color:var(--neu-fg); } .tareas .t-ico.info { background:var(--info-bg); color:var(--info-fg); }
.tareas .t-txt { flex:1; min-width:0; } .tareas .t-txt b { display:block; font-size:14px; } .tareas .t-txt small { color:var(--fg2); font-size:13px; }
.vacio { text-align:center; padding:28px 16px; color:var(--fg2); }
.vacio .ico { color:var(--ok-fg); margin-bottom:8px; }

/* Pie */
.pie { text-align:center; font-size:12.5px; color:var(--fg3); padding:22px 16px 32px; border-top:1px solid var(--border); line-height:1.7; }

/* ---------- Pantallas de acceso ---------- */
body.acceso { min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:26px 16px;
  background:linear-gradient(135deg,#0a1628 0%,#0e2347 55%,#103a72 100%); position:relative; }
body.acceso::before { content:""; position:fixed; inset:0; pointer-events:none; opacity:.6;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:40px 40px; -webkit-mask-image:radial-gradient(120% 95% at 50% 0%,#000 30%,transparent 76%); mask-image:radial-gradient(120% 95% at 50% 0%,#000 30%,transparent 76%); }
body.acceso .banda-dev { position:fixed; top:0; left:0; right:0; z-index:5; }
.acceso-tema { position:fixed; top:38px; right:18px; z-index:5; }
.acceso-caja { position:relative; width:100%; max-width:440px; background:var(--surface); border:1px solid var(--border); border-radius:20px; box-shadow:0 24px 70px rgba(0,0,0,.42); padding:32px 30px 24px; }
.acceso-marca { display:flex; justify-content:center; margin-bottom:16px; }
.acceso-marca span { display:inline-flex; align-items:center; padding:15px 26px; border-radius:15px; background:linear-gradient(140deg,#0e2347,#0a1628); border:1px solid rgba(255,255,255,.1); }
.acceso-marca img { height:30px; display:block; }
.acceso-caja h1 { font:700 21px 'Outfit',sans-serif; text-align:center; letter-spacing:-.3px; }
.acceso-caja .sub { text-align:center; color:var(--fg2); font-size:14px; margin:6px 0 22px; }
.acceso-caja .enlaces { text-align:center; font-size:13.5px; margin-top:16px; }
.acceso-legal { text-align:center; font-size:12px; color:var(--fg3); margin-top:18px; }

/* ============================================================================
   Expedientes (obras, canal, agenda, permiso y parte, solicitudes, firmas)
   ============================================================================ */
[hidden] { display:none!important; }
input[type=time],input[type=number],input[type=tel] { width:100%; min-height:44px; padding:10px 12px; border:1px solid var(--border-2); border-radius:10px; background:var(--field); font-size:15px; }
input[type=file]:not(.subida input) { width:100%; padding:9px 10px; border:1px dashed var(--border-2); border-radius:10px; background:var(--surface-2); font-size:14px; }
.pestanas .n { display:inline-flex; align-items:center; justify-content:center; min-width:19px; height:19px; padding:0 6px; border-radius:10px; background:var(--err-fg); color:#fff; font-size:11px; font-weight:700; line-height:1; }
:root[data-tema="dark"] .pestanas .n { color:#2a0a0e; }
@media (prefers-color-scheme: dark) { :root:not([data-tema]) .pestanas .n { color:#2a0a0e; } }
.miga { display:flex; gap:18px; flex-wrap:wrap; font-size:14px; }
.miga a { display:inline-flex; align-items:center; gap:6px; min-height:36px; font-weight:600; }
.rejilla-2 { display:grid; gap:16px; grid-template-columns:minmax(0,5fr) minmax(0,7fr); align-items:start; }
.cab-card { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:10px; }
.segmento { display:inline-flex; border:1px solid var(--border-2); border-radius:10px; overflow:hidden; }
.segmento a { padding:8px 14px; font-size:13px; font-weight:600; color:var(--fg2); text-decoration:none!important; }
.segmento a.on { background:var(--accent-2); color:#fff; }
.borde-ok { border-left:4px solid var(--ok-fg); } .borde-avi { border-left:4px solid var(--avi-fg); }
.chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; }
.chip.aviso { color:var(--avi-fg); background:var(--avi-bg); border-color:var(--avi-bd); }
.chip.info { color:var(--info-fg); background:var(--info-bg); border-color:var(--info-bd); }
.vacio.small { padding:18px 10px; font-size:14px; } .vacio .ico { color:var(--fg3); }

/* Tarjetas de expediente */
.exp-rejilla { display:grid; gap:14px; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); margin-top:12px; }
.exp { display:flex; flex-direction:column; gap:6px; padding:16px; border:1px solid var(--border); border-left:4px solid var(--accent-2); border-radius:14px; background:var(--surface); color:var(--fg); text-decoration:none!important; transition:box-shadow .15s, transform .15s; }
.exp:hover { box-shadow:var(--sh-2); transform:translateY(-1px); }
.exp.fin { border-left-color:var(--neu-bd); opacity:.85; }
.exp-cab { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
.exp-t { font:700 16px/1.25 'Outfit',sans-serif; letter-spacing:-.2px; }
dl.datos { display:grid; grid-template-columns:max-content 1fr; gap:9px 16px; margin-top:12px; font-size:14px; }
dl.datos dt { color:var(--fg3); font-size:12.5px; font-weight:600; padding-top:2px; }

/* Documentación de la obra */
.docs-l { list-style:none; display:flex; flex-direction:column; gap:6px; margin-top:14px; }
.docs-l li { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:9px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface-2); }
.docs-l a { display:inline-flex; align-items:center; gap:8px; font-weight:500; min-width:0; word-break:break-word; }
.fotos { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.mini { display:inline-block; width:96px; height:96px; border-radius:10px; overflow:hidden; border:1px solid var(--border); background:var(--surface-2); }
.mini img { width:100%; height:100%; object-fit:cover; display:block; }
.adj { display:inline-flex; align-items:center; gap:6px; font-size:13px; padding:5px 10px; margin:6px 6px 0 0; border:1px solid var(--border); border-radius:8px; background:var(--surface); }

/* Canal */
.msgs { display:flex; flex-direction:column; gap:10px; margin:14px 0 18px; }
.msg { max-width:min(80%,640px); padding:11px 14px; border-radius:14px; border:1px solid var(--border); font-size:14.5px; }
.msg.ext { align-self:flex-end; background:var(--info-bg); border-color:var(--info-bd); border-bottom-right-radius:4px; }
.msg.int { align-self:flex-start; background:var(--surface-2); border-bottom-left-radius:4px; }
.msg-quien { font-size:12px; font-weight:700; color:var(--fg2); margin-bottom:3px; }
.msg-txt { white-space:normal; word-break:break-word; }
.msg .mini { width:84px; height:84px; margin:8px 6px 0 0; }
.msg-cuando { font-size:11.5px; color:var(--fg3); margin-top:6px; text-align:right; }

/* Agenda */
.mes-lb { font:700 11px 'Roboto',sans-serif; letter-spacing:1.8px; text-transform:uppercase; color:var(--fg3); margin:18px 0 8px; }
.dia { border:1px solid var(--border); border-radius:14px; padding:13px 15px; margin-bottom:10px; display:flex; flex-direction:column; gap:10px; }
.dia.hoy { border-left:4px solid var(--accent-2); }
.dia-cab { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:14px; align-items:center; }
.dia-fecha { width:50px; height:54px; border-radius:12px; background:var(--surface-2); border:1px solid var(--border); display:flex; flex-direction:column; align-items:center; justify-content:center; line-height:1; }
.dia-fecha .num { font:800 21px 'Outfit',sans-serif; } .dia-fecha small { font-size:11px; color:var(--fg3); text-transform:uppercase; margin-top:3px; }
.desplegable > summary { list-style:none; } .desplegable > summary::-webkit-details-marker { display:none; }
.desplegable[open] { flex-basis:100%; }
.desplegable-cuerpo { margin-top:12px; max-width:520px; padding:14px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); }

/* Partes */
.hoy-l, .meses-l { list-style:none; display:flex; flex-direction:column; gap:8px; margin-top:10px; }
.hoy-l li, .meses-l li { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; padding:11px 14px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); }
.hoy-l li > span:first-child { display:flex; flex-direction:column; }
.alinear-abajo { align-items:end; }
.equipo { list-style:none; display:flex; flex-direction:column; margin-top:6px; }
.equipo li { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; padding:11px 0; border-bottom:1px solid var(--border); }
.equipo li:last-child { border-bottom:none; }
.eq-nom { display:flex; align-items:center; gap:12px; min-width:0; }
.eq-nom > span, .eq-nom.check-grande span { display:flex; flex-direction:column; }
.check-grande { cursor:pointer; min-height:44px; }
.check-grande input { width:26px; height:26px; flex-shrink:0; accent-color:var(--accent-2); }
.eq-firma { display:flex; align-items:center; gap:10px; }
.firma-img { height:48px; max-width:170px; object-fit:contain; border:1px solid var(--border); border-radius:8px; background:#fff; padding:2px; }
.no-aptos { margin-top:14px; border:1px solid var(--avi-bd); background:var(--avi-bg); border-radius:12px; color:var(--avi-fg); font-size:14px; }
.no-aptos summary { cursor:pointer; padding:11px 14px; display:flex; align-items:center; gap:8px; font-weight:600; }
.no-aptos ul { padding:0 16px 12px 36px; display:flex; flex-direction:column; gap:5px; }
form.permiso { display:flex; flex-direction:column; gap:18px; }
fieldset.bloque { border:1px solid var(--border); min-width:0; }
fieldset.bloque > legend { float:left; width:100%; display:flex; align-items:center; gap:9px; font:700 17px 'Outfit',sans-serif; padding:0; margin:0 0 4px; }
fieldset.bloque > legend + * { clear:both; }
fieldset.bloque legend .ico { color:var(--accent-2); }
.q { padding:12px 0; border-bottom:1px solid var(--border); scroll-margin-top:130px; }
.q:last-child { border-bottom:none; }
.q.falta { outline:2px solid var(--err-fg); outline-offset:4px; border-radius:8px; }
.q-cab { display:flex; justify-content:space-between; gap:14px; align-items:flex-start; flex-wrap:wrap; }
.q-txt { flex:1 1 320px; font-size:14.5px; line-height:1.5; } .q-n { color:var(--fg3); font-size:12.5px; }
.sn { display:flex; gap:10px; flex-shrink:0; }
.sn label { position:relative; }
.sn input { position:absolute; opacity:0; width:0; height:0; }
.sn span { display:inline-flex; align-items:center; justify-content:center; min-width:66px; min-height:46px; padding:10px 16px; border:1px solid var(--border-2); border-radius:10px; font-weight:600; color:var(--fg2); background:var(--surface); cursor:pointer; }
.sn input:checked + span { background:var(--accent-2); border-color:var(--accent-2); color:#fff; }
.sn input:focus-visible + span { outline:3px solid var(--accent-3); outline-offset:2px; }
.sn input:disabled + span { opacity:.65; cursor:default; }
.q-aviso { margin-top:9px; }
.q-com { margin-top:9px; font-size:14px!important; min-height:38px!important; }
.progreso { display:flex; align-items:center; gap:12px; flex-wrap:wrap; padding:11px 14px; border:1px solid var(--border); border-radius:12px; background:var(--surface-2); }
.progreso-t { font-size:13.5px; font-weight:600; } .progreso .barra { flex:1; min-width:120px; }
.progreso.completo { border-color:var(--ok-bd); }
@media (max-width:760px) { .progreso { position:sticky; bottom:0; z-index:30; box-shadow:0 -4px 16px rgba(16,28,52,.12); } }

/* Firmas */
canvas.lienzo { display:block; width:100%; max-width:620px; height:180px; border:1px dashed var(--border-2); border-radius:12px; background:#fff; touch-action:none; cursor:crosshair; }
canvas.lienzo.grande { max-width:none; height:240px; }
.firma-dlg { border:none; border-radius:18px; padding:20px; width:min(560px,calc(100vw - 24px)); background:var(--surface); color:var(--fg); box-shadow:0 24px 70px rgba(0,0,0,.5); }
.firma-dlg::backdrop { background:rgba(6,14,28,.72); }
.firma-dlg .small { margin:9px 0 13px; }
.firma-quien { font:700 12px 'Roboto',sans-serif; letter-spacing:1.6px; text-transform:uppercase; color:var(--fg3); margin-bottom:10px; }
.lista-firmas { display:flex; flex-direction:column; gap:12px; }
.firma-doc { border:1px solid var(--border); border-radius:14px; padding:14px 16px; }
.firma-doc.hecho { background:var(--surface-2); }
.firma-doc-cab { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; flex-wrap:wrap; }
.firma-form { margin-top:14px; padding-top:14px; border-top:1px solid var(--border); }

/* Entrega sin documento («no hemos generado residuos») */
.sin-fichero { margin-top:16px; padding-top:14px; border-top:1px dashed var(--border-2); }
.sin-fichero p { margin-bottom:10px; }

/* Solicitudes */
.sols { display:flex; flex-direction:column; gap:11px; margin-top:10px; }
.sol { border:1px solid var(--border); border-radius:12px; padding:13px 15px; }
.sol-cab { display:flex; justify-content:space-between; gap:10px; align-items:center; flex-wrap:wrap; }
.sol-txt { margin-top:8px; font-size:14.5px; }
.sol-resp { margin-top:10px; padding:11px 13px; border-radius:10px; background:var(--ok-bg); border:1px solid var(--ok-bd); }
.sol-resp .small { color:var(--ok-fg); margin-bottom:3px; }

@media (max-width:900px) { .rejilla-2 { grid-template-columns:1fr; } }
@media (max-width:760px) {
  .top { padding:9px 12px; } .top-tit, .top-user-txt, .top-btn span { display:none; } .top-user { padding:3px; }
  .top-der { gap:6px; } .top-btn { padding:0 10px; } .top-contacto-caja { position:fixed; left:12px; right:12px; top:58px; width:auto; }
  .hero { padding:22px 16px 26px; } .main { padding:16px 12px 48px; gap:14px; } .card { padding:16px; border-radius:14px; }
  .pestanas { top:56px; } .req-cab { grid-template-columns:1fr; } .req-acc { justify-content:flex-start; }
  .acceso-caja { padding:26px 20px 20px; }
  .msg { max-width:92%; } .dia-cab { grid-template-columns:auto minmax(0,1fr); } .dia-cab .pill { grid-column:2; justify-self:start; }
  dl.datos { grid-template-columns:1fr; gap:2px 0; } dl.datos dd { margin-bottom:8px; }
  .eq-firma { width:100%; justify-content:space-between; }
}
@media (prefers-reduced-motion: reduce) { * { transition:none!important; animation:none!important; } }

/* Descargar toda la documentación (ZIP) */
.descarga-todo { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.descarga-todo p { max-width:640px; }
.descarga-todo .btn { flex-shrink:0; }
@media (max-width:760px) { .descarga-todo { flex-direction:column; align-items:stretch; } }

/* Grupo de opciones (radio) en un formulario */
.opciones { border:0; padding:0; margin:0 0 14px; min-width:0; }
.opciones legend { font-size:12.5px; font-weight:600; color:var(--fg2); margin-bottom:6px; padding:0; }
.opciones .check { margin-bottom:6px; }

/* Horas del mes (PRL, 21-oct-2026) */
.meses-sel { display:flex; gap:8px; flex-wrap:wrap; }
.horas-t input { width:100%; min-width:5.5rem; padding:8px 10px; border:1px solid var(--border-2); border-radius:10px; background:var(--surface); color:var(--fg); font:inherit; }
.horas-t input.num { max-width:8rem; text-align:right; }
.horas-t td:nth-child(4) input { min-width:12rem; }
