:root{
  --navy:#00295a; --navy-2:#00408f; --navy-deep:#01152f; --navy-ink:#001227;
  --goose:#1c8fd6; --goose-lite:#5cb2ec; --goose-soft:#e7f1fb;
  --gold:#c39a3f; --gold-lite:#e6c877;
  --ivory:#f4f0e7; --paper:#fffdf8; --card:#ffffff; --ink:#101620; --muted:#5a6270; --faint:#8b93a2;
  --line:#e6dfd0; --line-2:#eef0ea;
  --good:#2f7d5b; --good-bg:#e6f1eb; --warn:#b9822b; --warn-bg:#f6ecd7; --crit:#b23a3a; --crit-bg:#f6e4e2;
  --stripe-g:#2f7d5b; --stripe-r:#b23a3a;
  --shadow:0 1px 2px rgba(1,21,47,.05),0 8px 24px rgba(1,21,47,.07);
  --shadow-lg:0 4px 12px rgba(1,21,47,.09),0 30px 70px rgba(1,21,47,.14);
  --glow:0 0 0 1px rgba(28,143,214,.25),0 10px 40px rgba(28,143,214,.25);
  --r:16px; --ri:10px; --r-sm:11px;
  --bg:var(--ivory); --sidebar:var(--navy-ink); --sidebar-ink:#c3d3e8;
  --display:"Libre Caslon Display",Georgia,serif; --body:"Mulish",system-ui,-apple-system,sans-serif;
}
:root{--hero-1:#01285a;--hero-2:#012f73;}
:root:not([data-theme="light"]){ @media (prefers-color-scheme:dark){
  --bg:#080f1c; --paper:#0e1a2e; --card:#101f38; --ink:#e9f0fa; --muted:#9fb0c8; --faint:#6f819b;
  --line:#1e3050; --line-2:#182740; --ivory:#080f1c; --sidebar:#03091a; --sidebar-ink:#aec3e0;
  --navy:#0c3568; --goose-soft:#102843; --good-bg:#123023; --warn-bg:#2f2612; --crit-bg:#2e1616;
  --hero-1:#04193c; --hero-2:#0a2f66;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.4); --shadow-lg:0 4px 12px rgba(0,0,0,.55),0 34px 80px rgba(0,0,0,.6);
}}
:root[data-theme="dark"]{
  --bg:#080f1c; --paper:#0e1a2e; --card:#101f38; --ink:#e9f0fa; --muted:#9fb0c8; --faint:#6f819b;
  --line:#1e3050; --line-2:#182740; --ivory:#080f1c; --sidebar:#03091a; --sidebar-ink:#aec3e0;
  --navy:#0c3568; --goose-soft:#102843; --good-bg:#123023; --warn-bg:#2f2612; --crit-bg:#2e1616;
  --hero-1:#04193c; --hero-2:#0a2f66;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 10px 30px rgba(0,0,0,.4); --shadow-lg:0 4px 12px rgba(0,0,0,.55),0 34px 80px rgba(0,0,0,.6);
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--body);background:var(--bg);color:var(--ink);font-size:15px;line-height:1.5;
  -webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;overflow-x:hidden}
/* ===== SPLASH ===== */
.splash{position:fixed;inset:0;z-index:200;background:radial-gradient(120% 120% at 50% 30%,#02336f,#01142f 70%);
  display:grid;place-items:center;transition:opacity .7s ease,visibility .7s}
.splash.gone{opacity:0;visibility:hidden}
.splash .s-in{text-align:center;transform:translateY(0);animation:sRise .9s cubic-bezier(.2,.7,.2,1)}
.splash .s-badge{width:104px;height:104px;border-radius:50%;display:grid;place-items:center;margin:0 auto 24px;
  animation:sPulse 2.4s ease-in-out infinite}
.splash .s-badge svg{width:104px;height:104px;filter:drop-shadow(0 18px 44px rgba(0,0,0,.45))}
.splash h1{margin:0}
.splash h1 svg{width:236px;height:34px;display:block;margin:0 auto;color:#fff}
.splash .s-sub{color:var(--goose-lite);letter-spacing:.42em;text-transform:uppercase;font-size:12px;font-weight:700;margin-top:8px}
.splash .s-bar{width:220px;height:3px;border-radius:3px;background:rgba(255,255,255,.12);margin:26px auto 0;overflow:hidden}
.splash .s-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--navy) 33%,var(--stripe-g) 33% 66%,var(--stripe-r) 66%);animation:sLoad 1.4s ease .2s forwards}
@keyframes sRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes sPulse{0%,100%{box-shadow:0 0 0 10px rgba(255,255,255,.05),0 20px 60px rgba(0,0,0,.5)}50%{box-shadow:0 0 0 18px rgba(92,178,236,.10),0 20px 60px rgba(0,0,0,.5)}}
@keyframes sLoad{to{width:100%}}
/* ===== APP ===== */
.app{display:grid;grid-template-columns:252px 1fr;min-height:100vh;opacity:0;transition:opacity .6s ease .1s}
.app.in{opacity:1}
.side{background:linear-gradient(180deg,var(--sidebar),#010a1c);color:var(--sidebar-ink);display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;border-right:1px solid rgba(255,255,255,.06)}
.brand{display:flex;align-items:center;gap:13px;padding:22px 20px 16px}
.brand .badge{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center}
.brand .badge svg{width:44px;height:44px;display:block}
.brand .bt{min-width:0}
.brand .bt .bt-word{display:block;width:130px;height:18.9px;color:#fff}
.brand .bt span{display:block;margin-top:6px;font-size:9.5px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-weight:800;line-height:1}
.stripe{height:3px;background:linear-gradient(90deg,var(--navy) 0 33%,var(--stripe-g) 33% 66%,var(--stripe-r) 66% 100%);opacity:.85;margin:0 20px 12px;border-radius:2px}
.nav{padding:6px 12px;display:flex;flex-direction:column;gap:2px}
.nav .lbl{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);padding:14px 12px 6px}
.nav a{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;color:var(--sidebar-ink);text-decoration:none;font-weight:600;font-size:14px;cursor:pointer;transition:.16s;position:relative}
.nav a svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;opacity:.85}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.on{background:linear-gradient(135deg,var(--goose),#1573b6);color:#fff;box-shadow:0 8px 22px rgba(28,143,214,.4)}
.nav a .badge-n{margin-left:auto;background:var(--gold);color:#26200c;font-size:11px;font-weight:800;padding:1px 8px;border-radius:999px}
.side .foot{margin-top:auto;padding:16px 20px;border-top:1px solid rgba(255,255,255,.07);font-size:12px;color:var(--faint);display:flex;align-items:center;gap:10px}
.side .foot .av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:14.5px;background:#f4f0e7;color:#00295a;font-family:var(--display);font-weight:400;letter-spacing:.4px;box-shadow:inset 0 0 0 1.5px rgba(195,154,63,.6)}
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);padding:15px 32px;display:flex;align-items:center;gap:14px}
.top h1{font-family:var(--display);font-weight:400;font-size:22px;margin:0}
.top .sub{color:var(--muted);font-size:12.5px;margin-top:1px}
.top .sp{flex:1}
.search{display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:8px 14px;color:var(--muted);font-size:13px;min-width:210px}
.search svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.btn{border:0;border-radius:999px;padding:9px 17px;font-family:var(--body);font-weight:700;font-size:13.5px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:.15s}
.btn.primary{background:linear-gradient(135deg,var(--navy-2),var(--navy));color:#fff;box-shadow:var(--shadow)}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg)}
.btn:active{transform:translateY(0);box-shadow:var(--shadow)}
.btn.sm{padding:6px 13px;font-size:12.5px}
.btn.sm svg{width:14px;height:14px}
.btn.gold{background:linear-gradient(135deg,var(--gold-lite),var(--gold));color:#2a2109;box-shadow:0 6px 18px rgba(195,154,63,.3)}
.btn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.theme-btn{background:var(--card);border:1px solid var(--line);color:var(--muted);width:38px;height:38px;border-radius:50%;cursor:pointer;display:grid;place-items:center}
.theme-btn svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}
.wrap{padding:24px 32px 64px;max-width:1280px;width:100%}
.view{display:none}.view.on{display:block}
.reveal{opacity:0;transform:translateY(14px);animation:rev .6s cubic-bezier(.2,.7,.2,1) forwards}
@keyframes rev{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.reveal{animation:none;opacity:1;transform:none}.splash .s-in,.splash .s-badge{animation:none}}
/* ===== HERO ===== */
.hero{position:relative;border-radius:22px;overflow:hidden;padding:30px 34px;color:#fff;margin-bottom:26px;
  background:linear-gradient(120deg,var(--hero-1),var(--hero-2));box-shadow:var(--shadow-lg)}
.hero::before{content:"";position:absolute;inset:0;opacity:.5;
  background:radial-gradient(60% 120% at 88% -10%,rgba(92,178,236,.5),transparent 60%),radial-gradient(50% 100% at 8% 120%,rgba(195,154,63,.22),transparent 60%)}
.hero::after{content:"";position:absolute;right:-40px;top:-40px;width:260px;height:260px;border-radius:50%;
  border:1px solid rgba(255,255,255,.10);box-shadow:0 0 0 40px rgba(255,255,255,.03)}
.hero .hin{position:relative;z-index:2;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.hero .eyebrow{color:var(--goose-lite);letter-spacing:.22em}
.hero h2{font-family:var(--display);font-weight:400;font-size:38px;line-height:1.05;margin:8px 0 6px;letter-spacing:.3px;text-wrap:balance}
.hero p{color:#c9dcf2;font-size:14.5px;margin:0;max-width:44ch}
.hero .hstat{text-align:right}
.hero .hstat .big{font-family:var(--display);font-size:52px;line-height:1;letter-spacing:1px}
.hero .hstat .lab{color:var(--goose-lite);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;margin-top:4px}
.hero .stripe-b{position:absolute;left:0;right:0;bottom:0;height:4px;background:linear-gradient(90deg,var(--goose) 0 33%,var(--stripe-g) 33% 66%,var(--stripe-r) 66%);opacity:.8}
.eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--goose);font-weight:800}
h2.sec{font-family:var(--display);font-weight:400;font-size:22px;margin:2px 0 16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}
.kpi{padding:18px;position:relative;overflow:hidden;transition:.18s}
.kpi:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.kpi .k{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:800}
.kpi .v{font-family:var(--display);font-weight:400;font-size:36px;line-height:1.02;margin:9px 0 2px}
.kpi .d{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px}
.kpi .d .up{color:var(--good);font-weight:800}.kpi .d .wa{color:var(--warn);font-weight:800}
.kpi .rail{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--goose)}
.kpi .rail.g{background:var(--good)}.kpi .rail.w{background:var(--gold)}.kpi .rail.n{background:var(--navy)}
.kpi .ic{position:absolute;right:14px;top:14px;width:20px;height:20px;stroke:var(--line);fill:none;stroke-width:1.6;opacity:.9}
.split{display:grid;grid-template-columns:1.7fr 1fr;gap:20px;margin-bottom:24px}
.panel{padding:20px}
.panel h3{font-family:var(--display);font-weight:400;font-size:19px;margin:0}
.panel .ph{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.panel .ph a{color:var(--goose);font-weight:800;font-size:12.5px;text-decoration:none;cursor:pointer}
.appr{display:flex;flex-direction:column;gap:1px}
.appr .row{display:flex;align-items:center;gap:12px;padding:11px 8px;border-radius:11px;transition:.14s}
.appr .row:hover{background:var(--ivory)}
.av{width:37px;height:37px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;font-size:15px;background:#f4f0e7;color:#00295a;font-family:var(--display);font-weight:400;letter-spacing:.4px;box-shadow:inset 0 0 0 1.5px rgba(195,154,63,.6)}
/* Variantes del gantt de Horarios: siguen coloreadas para distinguir filas */
.av.a2,.av.a3,.av.a4,.av.a5{color:#fff;font-family:var(--body);font-weight:800;font-size:13px;box-shadow:none}
.av.a2{background:#00295a}.av.a3{background:#3f6f9e}.av.a4{background:#2f7d5b}.av.a5{background:#8a6d3b}
.appr .who{flex:1;min-width:0}.appr .who b{font-weight:700;font-size:14px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.appr .who span{font-size:12px;color:var(--muted)}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:800;padding:3px 10px;border-radius:999px}
.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.good{background:var(--good-bg);color:var(--good)}
.chip.navy{background:var(--goose-soft);color:var(--navy)}.chip.mut{background:var(--line-2);color:var(--muted)}
.gaugewrap{display:flex;gap:8px;justify-content:space-around;text-align:center;margin-top:6px}
.gauge{display:flex;flex-direction:column;align-items:center;gap:6px}
.gauge .lab{font-size:11.5px;color:var(--muted);font-weight:700}
.gauge .val{font-family:var(--display);font-size:19px;position:absolute;top:50%;left:50%;transform:translate(-50%,-52%)}
.gauge .gh{position:relative;width:104px;height:104px}
.rank{display:flex;flex-direction:column;gap:12px}
.rank .r{display:grid;grid-template-columns:120px 1fr auto;gap:12px;align-items:center;font-size:13.5px}
.rank .r b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar{height:9px;border-radius:6px;background:var(--line-2);overflow:hidden}
.bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--navy),var(--goose));width:0;transition:width 1.1s cubic-bezier(.2,.7,.2,1)}
.rank .n{font-weight:800;color:var(--navy)}
.foot-note{margin-top:28px;padding-top:16px;border-top:1px solid var(--line);color:var(--faint);font-size:12.5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.foot-note .dot{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 0 3px var(--good-bg)}
/* ===== HORARIO / GANTT ===== */
.hbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.hbar .pill{display:inline-flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:7px 15px;font-weight:800;font-size:13.5px;box-shadow:var(--shadow)}
.pill svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;opacity:.6;flex:none}
.ttl-ic{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex:none;
  background:linear-gradient(135deg,var(--navy),var(--navy-deep));
  box-shadow:0 2px 8px rgba(1,21,47,.2),inset 0 0 0 1px rgba(195,154,63,.32)}
.ttl-ic svg{width:21px;height:21px;stroke:var(--gold-lite);fill:none;stroke-width:2}
.ttl-ic:empty{display:none}
@media(max-width:820px){.ttl-ic{width:32px;height:32px;border-radius:9px}.ttl-ic svg{width:18px;height:18px}}
.hbar .pill svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;opacity:.6}
.seg{display:inline-flex;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:3px;box-shadow:var(--shadow)}
.seg button{border:0;background:transparent;padding:6px 13px;border-radius:999px;font-family:var(--body);font-weight:800;font-size:12.5px;color:var(--muted);cursor:pointer}
.seg button.on{background:var(--navy);color:#fff}
.seg button:not(.on):hover{color:var(--navy)}
.legend{display:flex;gap:13px;flex-wrap:wrap;margin-left:auto;font-size:12px;color:var(--muted)}
.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.gantt{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--card);box-shadow:var(--shadow)}
.gantt .g-in{min-width:920px}
.g-ruler{display:grid;grid-template-columns:210px 1fr;border-bottom:1px solid var(--line);background:var(--ivory);position:sticky;top:0;z-index:2}
.g-ruler .g-h{padding:11px 14px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:800}
.g-hours{display:flex;position:relative}
.g-hours span{flex:1;text-align:center;font-size:10.5px;color:var(--faint);font-weight:700;padding:11px 0;border-left:1px solid var(--line-2)}
.g-row{display:grid;grid-template-columns:210px 1fr;border-bottom:1px solid var(--line-2);align-items:center}
.g-row:hover{background:var(--ivory)}
.g-emp{display:flex;align-items:center;gap:10px;padding:10px 14px}
.g-emp .who b{font-weight:700;font-size:13.5px;display:block}
.g-emp .who span{font-size:11px;color:var(--faint)}
.g-track{position:relative;height:52px;border-left:1px solid var(--line-2)}
.g-track .grid{position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,transparent 0,transparent calc(100%/14 - 1px),var(--line-2) calc(100%/14 - 1px),var(--line-2) calc(100%/14));opacity:.6}
.blk{position:absolute;top:9px;height:34px;border-radius:9px;color:#fff;font-size:11.5px;font-weight:800;display:flex;align-items:center;padding:0 10px;
  background:linear-gradient(135deg,var(--navy),var(--navy-2));box-shadow:0 3px 8px rgba(1,21,47,.22);overflow:hidden;transform-origin:left;animation:blkIn .5s cubic-bezier(.2,.7,.2,1) both}
.blk.pm{background:linear-gradient(135deg,#1873b7,var(--goose))}
.blk.sat{background:linear-gradient(135deg,var(--gold),#a8842f)}
.blk small{opacity:.85;font-weight:700;margin-left:6px}
@keyframes blkIn{from{transform:scaleX(.3);opacity:0}to{transform:scaleX(1);opacity:1}}
.g-off{position:absolute;top:14px;height:24px;border-radius:8px;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center}
.g-off.vac{background:var(--good-bg);color:var(--good)}
.g-off.libre{background:var(--line-2);color:var(--faint)}
.g-off.fest{background:var(--warn-bg);color:var(--warn)}
.g-tot{padding:0 14px;font-weight:800;color:var(--navy);position:absolute;right:8px;top:50%;transform:translateY(-50%);background:var(--card);border-radius:8px}
.ctr{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:14px;margin-top:20px}
.ctr .c{padding:16px}
.ctr .c .t{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:800}
.ctr .c .b{font-family:var(--display);font-size:27px;margin:6px 0 4px}
.ctr .c .s{font-size:12px;color:var(--muted)}
.mini{height:6px;border-radius:4px;background:var(--line-2);overflow:hidden;margin-top:8px}
.mini i{display:block;height:100%;background:var(--goose);width:0;transition:width 1s ease}
.mini i.gold{background:var(--gold)}
/* heatmap */
.heat{margin-top:22px}
.heat h3{font-family:var(--display);font-weight:400;font-size:18px;margin:0 0 12px}
.hm{overflow-x:auto}
.hm table{border-collapse:separate;border-spacing:4px;min-width:640px}
.hm td,.hm th{text-align:center}
.hm th{font-size:10.5px;color:var(--faint);font-weight:700;padding-bottom:2px}
.hm .rl{font-size:11.5px;color:var(--muted);font-weight:700;text-align:right;padding-right:8px;white-space:nowrap}
.hm .cell{width:34px;height:26px;border-radius:6px;font-size:11px;font-weight:800;color:#fff}
/* NOMINA */
.note{display:flex;gap:11px;align-items:flex-start;background:var(--goose-soft);border:1px solid color-mix(in srgb,var(--goose) 25%,transparent);border-radius:var(--r-sm);padding:13px 15px;margin-bottom:18px;font-size:13.5px;color:var(--navy)}
.note svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2;flex:0 0 auto;margin-top:1px}
.nomwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);background:var(--card)}
.nom{border-collapse:collapse;width:100%;min-width:1000px;font-size:13px}
.nom th,.nom td{padding:11px 13px;border-bottom:1px solid var(--line-2);text-align:right;white-space:nowrap}
.nom thead th{position:sticky;top:0;background:var(--navy);color:#fff;font-size:11px;letter-spacing:.03em;text-transform:uppercase;font-weight:700;text-align:right}
.nom thead th.l,.nom td.l{text-align:left;position:sticky;left:0}
.nom thead th.l{background:var(--navy);z-index:3}
.nom td.l{background:var(--card);font-weight:700;border-right:1px solid var(--line)}
.nom thead th.grp{background:var(--navy-2);text-align:center;font-size:10px;letter-spacing:.06em}
.nom tbody tr:hover td{background:var(--ivory)}
.nom td.z{color:var(--faint)}.nom .u{font-weight:800;color:var(--navy)}
.nom tfoot td{background:var(--ivory);font-weight:800;color:var(--navy);border-top:2px solid var(--line)}
.nom tfoot td.l{background:var(--ivory)}
.tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(234px,1fr));gap:16px}
.tcard{padding:16px 17px;cursor:pointer;transition:.16s;position:relative;overflow:hidden}
.tcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.tcard::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--navy),var(--goose));opacity:0;transition:.16s}
.tcard:hover::after{opacity:1}
.tcard .code{font-size:11px;font-weight:800;letter-spacing:.1em;color:var(--goose)}
.tcard .nm{font-family:var(--display);font-size:20px;margin:3px 0 12px}
.tcard .met{display:flex;justify-content:space-between;font-size:12.5px;color:var(--muted);padding:5px 0;border-top:1px solid var(--line-2)}
.tcard .met b{color:var(--ink);font-weight:800}
@media (max-width:1080px){.kpis{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}}
@media (max-width:820px){.app{grid-template-columns:1fr}.side{position:fixed;top:0;left:0;bottom:0;width:252px;z-index:120;transform:translateX(-100%);transition:transform .25s ease}.side.open{transform:none;box-shadow:var(--shadow-lg)}.menu-btn{display:inline-flex}.wrap{padding:18px 14px 50px}.top{padding:13px 15px}.hero h2{font-size:30px}.hero .hstat .big{font-size:40px}}


/* --- toolbar / buscador / paginación --- */
.tbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.srch{position:relative;flex:1;min-width:220px;max-width:420px}
.srch svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;stroke:var(--faint);fill:none;stroke-width:2}
.srch input{width:100%;box-sizing:border-box;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:10px 15px 10px 38px;font-family:var(--body);font-size:14px;box-shadow:var(--shadow);outline:none;transition:.15s}
.srch input:focus{border-color:var(--goose);box-shadow:0 0 0 3px var(--goose-soft)}
.tcount{font-size:13px;color:var(--muted);font-weight:700}
.tcount b{color:var(--ink)}
.pager{display:flex;align-items:center;justify-content:center;gap:10px;margin:20px 0 4px}
.pager button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;min-width:38px;height:38px;padding:0 12px;font-family:var(--body);font-weight:800;font-size:13.5px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;justify-content:center;gap:5px}
.pager button:hover:not(:disabled){border-color:var(--goose);color:var(--navy)}
.pager button:disabled{opacity:.38;cursor:default}
.pager .pinfo{font-size:13px;color:var(--muted);font-weight:700;min-width:120px;text-align:center}
.empty{text-align:center;color:var(--muted);padding:50px 20px;font-size:14.5px}
/* --- vista plantilla --- */
.ptwrap{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);overflow:hidden}
.ptable{width:100%;border-collapse:collapse;font-size:13.5px}
.ptable thead th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:800;padding:13px 16px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--line-2) 45%,transparent)}
.ptable tbody td{padding:12px 16px;border-bottom:1px solid var(--line-2)}
.ptable tbody tr:last-child td{border-bottom:0}
.ptable tbody tr{cursor:pointer;transition:.12s}
.ptable tbody tr:hover{background:var(--goose-soft)}
.ptable .who{display:flex;align-items:center;gap:11px}
.ptable .av{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;background:#f4f0e7;color:#00295a;font-family:var(--display);font-weight:400;letter-spacing:.4px;box-shadow:inset 0 0 0 1.5px rgba(195,154,63,.6)}
.ptable .nm2{font-weight:800;color:var(--ink)}.ptable .cd2{font-size:11.5px;color:var(--faint)}
.ptable .num{font-weight:800;font-variant-numeric:tabular-nums}
.ptable .r{text-align:right}
.tg{display:inline-flex;font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;background:var(--line-2);color:var(--muted)}
/* --- detalle centro --- */
.back{display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--goose);font-family:var(--body);font-weight:800;font-size:13.5px;cursor:pointer;padding:0;margin-bottom:14px;transition:.15s}
.back:hover{color:var(--navy-2);gap:9px}
.back svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.2}
.chd{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.chd .code2{font-size:12px;font-weight:800;letter-spacing:.12em;color:var(--goose)}
.chd h2{font-family:var(--display);font-weight:400;font-size:32px;margin:2px 0 0}
.cstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}
.cstat{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:15px 17px;box-shadow:var(--shadow)}
.cstat .k{font-size:12px;color:var(--muted);font-weight:700}
.cstat .v{font-family:var(--display);font-size:27px;margin-top:3px}


/* --- selector de mes --- */
.mpick{position:relative;display:inline-flex;align-items:center}
.mpick svg{position:absolute;left:12px;width:15px;height:15px;stroke:var(--goose);fill:none;stroke-width:2;pointer-events:none}
.mpick select{appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:8px 34px 8px 34px;font-family:var(--body);font-weight:800;font-size:13.5px;cursor:pointer;box-shadow:var(--shadow);outline:none;transition:.15s}
.mpick select:hover{border-color:var(--goose)}
.mpick::after{content:"";position:absolute;right:14px;width:7px;height:7px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg) translateY(-2px);pointer-events:none}
/* --- ficha persona --- */
.sech{font-family:var(--display);font-weight:400;font-size:22px;margin:26px 0 12px}
.badge-st{display:inline-flex;font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px}
.badge-st.ok{background:var(--good-bg);color:var(--good)}
.badge-st.pend{background:var(--warn-bg);color:var(--warn)}
.chd .tipo{font-size:12.5px;color:var(--muted);font-weight:700;margin-top:5px}
.wend td{background:color-mix(in srgb,var(--gold) 7%,transparent)}


/* --- LOGIN --- */
#activar{position:fixed;inset:0;z-index:205;display:none;align-items:center;justify-content:center;background:radial-gradient(1200px 700px at 70% -10%,#013a7a 0%,var(--navy-deep) 55%,#00040c 100%);padding:max(24px,env(safe-area-inset-top)) 24px}
#activar.show{display:flex}
#activar{position:fixed;inset:0;z-index:205;display:none;align-items:center;justify-content:center;background:radial-gradient(1200px 700px at 70% -10%,#013a7a 0%,var(--navy-deep) 55%,#00040c 100%);padding:max(24px,env(safe-area-inset-top)) 24px}
#activar.show{display:flex}
#login{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;
  background:radial-gradient(1200px 700px at 70% -10%,#013a7a 0%,var(--navy-deep) 55%,#00040c 100%);padding:24px}
#login.show{display:flex}
.lg-card{width:100%;max-width:390px;background:var(--card);border-radius:18px;box-shadow:0 40px 120px rgba(0,0,0,.5);
  padding:34px 32px 30px;border:1px solid rgba(255,255,255,.06)}
/* --- Marca corporativa en login/activación: ganso oficial + logotipo EL GANSO --- */
.egsprite{position:absolute;width:0;height:0;overflow:hidden}
.lg-brand{display:flex;flex-direction:column;align-items:center;gap:0;margin-bottom:24px;color:var(--ink)}
.lg-mark{width:64px;height:64px;margin-bottom:14px;color:var(--ink)}
.lg-word{width:186px;height:27px;color:var(--ink)}
.lg-rule{display:flex;align-items:center;gap:12px;width:100%;margin-top:14px}
.lg-rule::before,.lg-rule::after{content:"";flex:1;height:1px;background:var(--gold);opacity:.55}
.lg-rule span{font-family:var(--display);font-size:14px;letter-spacing:.34em;text-transform:uppercase;color:var(--gold)}
.lg-brand h2{font-family:var(--display);font-weight:400;font-size:23px;margin:14px 0 0;color:var(--ink);letter-spacing:.5px;text-align:center}
.lg-brand .sub{font-size:11px;color:var(--faint);letter-spacing:.18em;text-transform:uppercase;font-weight:800;margin-top:9px;text-align:center}
.lg-f{display:flex;flex-direction:column;gap:13px}
.lg-f label{font-size:12px;font-weight:800;color:var(--muted);margin-bottom:-7px}
.lg-f input{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:var(--ri);padding:12px 14px;font-family:var(--body);font-size:15px;outline:none;transition:.15s}
.lg-f input:focus{border-color:var(--goose);box-shadow:0 0 0 3px var(--goose-soft)}
.times input:focus,.cfgf input:focus,.cfgf select:focus,.cfgitem input:focus,.cfgitem select:focus,#cfgUsers input:focus,#cfgUsers select:focus,.hz-sel select:focus,.mpick select:focus{border-color:var(--goose);box-shadow:0 0 0 3px var(--goose-soft)}
.lg-btn{margin-top:4px;border:0;border-radius:11px;padding:13px;background:linear-gradient(135deg,var(--navy-2),var(--navy));color:#fff;font-family:var(--body);font-weight:800;font-size:15px;cursor:pointer;transition:.15s}
.lg-btn:hover{filter:brightness(1.08);box-shadow:var(--shadow-lg)}
.lg-btn:active{transform:translateY(1px)}
.lg-btn:disabled{opacity:.6;cursor:default}
.lg-err{background:var(--crit-bg);color:var(--crit);border-radius:9px;padding:9px 12px;font-size:13px;font-weight:700;display:none}
.lg-err.show{display:block}
.lg-note{font-size:12px;color:var(--faint);text-align:center;margin-top:16px;line-height:1.5}
/* usuario + logout en sidebar */
.foot{cursor:default}
.logout{margin-left:auto;background:none;border:0;color:var(--sidebar-ink);opacity:.7;cursor:pointer;padding:6px;border-radius:8px;display:flex}
.logout:hover{opacity:1;background:rgba(255,255,255,.08)}
.logout svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.rolechip{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}


/* --- horario real (rejilla día×persona) --- */
.hztools{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.hz-sel{position:relative;display:inline-flex;align-items:center}
.hz-sel svg{position:absolute;left:12px;width:15px;height:15px;stroke:var(--goose);fill:none;stroke-width:2;pointer-events:none}
.hz-sel select{appearance:none;-webkit-appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;padding:9px 34px 9px 34px;font-family:var(--body);font-weight:800;font-size:13.5px;cursor:pointer;box-shadow:var(--shadow);max-width:320px;outline:none;transition:.15s}
.hz-legend{display:flex;gap:14px;font-size:12px;color:var(--muted);flex-wrap:wrap;margin-left:auto}
.hz-legend span{display:inline-flex;align-items:center;gap:6px}
.hz-legend i{width:12px;height:12px;border-radius:3px;display:inline-block}
.hzwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);box-shadow:var(--shadow)}
.hztbl{border-collapse:separate;border-spacing:0;font-size:12px;min-width:100%}
.hztbl th,.hztbl td{border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2)}
.hztbl thead th{position:sticky;top:0;background:var(--card);z-index:1;font-size:10px;color:var(--faint);font-weight:800;text-align:center;padding:6px 0;min-width:28px}
.hztbl thead th.we{color:var(--gold)}
.hztbl .nmcol{position:sticky;left:0;background:var(--card);text-align:left;padding:8px 12px;font-weight:800;color:var(--ink);min-width:200px;box-shadow:1px 0 0 var(--line-2)}
.hztbl thead .nmcol{z-index:2}
.hztbl .nmcol .hh{font-size:11px;color:var(--faint);font-weight:700}
.hztbl td.d{width:28px;height:30px;text-align:center;padding:0}
.hztbl td.we{background:color-mix(in srgb,var(--gold) 6%,transparent)}
.hzc{width:20px;height:20px;border-radius:5px;margin:auto;display:flex;align-items:center;justify-content:center;font-size:9px;color:#fff;font-weight:800}
.hzc.m{background:var(--navy)}.hzc.t{background:var(--goose)}.hzc.p{background:var(--gold)}
.hztot{background:color-mix(in srgb,var(--line-2) 50%,transparent);font-weight:800}
.hz-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin:16px 0}


/* --- gráfico de conceptos (nómina) --- */
.nbars{display:flex;flex-direction:column;gap:11px;margin-top:6px}
.nbar{display:grid;grid-template-columns:170px 1fr auto;align-items:center;gap:12px}
.nbar .lb{font-size:12.5px;font-weight:700;color:var(--ink)}
.nbar .lb small{display:block;font-size:10.5px;color:var(--faint);font-weight:700}
.nbar .tk{height:16px;border-radius:8px;background:var(--line-2);overflow:hidden}
.nbar .tk i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--navy),var(--goose));width:0;transition:width .9s cubic-bezier(.3,.7,.2,1)}
.nbar .vl{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--navy);min-width:52px;text-align:right}
.nbar.z .tk i{background:var(--line)}
.nbar.z .vl{color:var(--faint)}


/* --- planificador --- */
.pltools{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.pl-legend{display:flex;gap:12px;font-size:11.5px;color:var(--muted);flex-wrap:wrap}
.pl-legend span{display:inline-flex;align-items:center;gap:5px}
.plc{width:11px;height:11px;border-radius:3px;display:inline-block}
.plc.trabajo{background:var(--navy)}.plc.vacaciones{background:var(--good)}.plc.libre{background:var(--faint)}
.plc.baja{background:var(--crit)}.plc.festivo{background:var(--gold)}.plc.permiso{background:var(--goose)}
.plwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);box-shadow:var(--shadow)}
.pltbl{border-collapse:separate;border-spacing:0;font-size:12px;min-width:100%}
.pltbl th,.pltbl td{border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2)}
.pltbl thead th{position:sticky;top:0;background:var(--card);z-index:1;padding:7px 4px;font-size:10.5px;color:var(--faint);font-weight:800;text-align:center;min-width:98px}
.pltbl thead th.we{color:var(--gold)}
.pltbl thead th b{display:block;color:var(--ink);font-size:13px}
.pltbl .nmcol{position:sticky;left:0;background:var(--card);min-width:210px;text-align:left;padding:8px 12px;box-shadow:1px 0 0 var(--line-2);z-index:1}
.pltbl thead .nmcol{z-index:2}
.pltbl .nmcol .plrow-nm{font-weight:800;color:var(--ink)}
.pltbl .nmcol .plrow-h{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}
.plbar{height:5px;border-radius:3px;background:var(--line-2);margin-top:4px;overflow:hidden;max-width:150px}
.plbar i{display:block;height:100%;background:var(--goose)}.plbar i.over{background:var(--crit)}
.pltbl td.cell{padding:4px;cursor:pointer;text-align:center;height:48px}
.pltbl td.cell:hover{background:var(--goose-soft)}
.pltbl td.we{background:color-mix(in srgb,var(--gold) 5%,transparent)}
.plchip{display:inline-flex;flex-direction:column;line-height:1.15;border-radius:7px;padding:5px 6px;font-weight:800;font-size:12px;min-width:52px}
.plchip small{font-weight:700;opacity:.85;font-size:9.5px;margin-top:1px}
.plchip.trabajo{background:var(--navy);color:#fff}
.plchip.vacaciones{background:var(--good-bg);color:var(--good)}
.plchip.libre{background:var(--line-2);color:var(--muted)}
.plchip.baja{background:var(--crit-bg);color:var(--crit)}
.plchip.festivo{background:var(--warn-bg);color:var(--warn)}
.plchip.permiso{background:var(--goose-soft);color:var(--navy)}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
#cellEd{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.45);padding:20px}
#cellEd.show{display:flex}
.ced{background:var(--card);border-radius:16px;box-shadow:var(--shadow-lg);padding:20px 22px;width:100%;max-width:360px}
.ced h4{margin:0 0 3px;font-family:var(--display);font-weight:400;font-size:21px}
.ced .who{font-size:12.5px;color:var(--muted);margin-bottom:14px}
.ced .types{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.ced .types button{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:9px;padding:9px;font-family:var(--body);font-weight:800;font-size:12.5px;cursor:pointer;transition:.12s}
.ced .types button.on{border-color:var(--navy);background:var(--goose-soft);color:var(--navy)}
.ced .times{display:none;gap:8px;margin-bottom:12px}
.ced .times.show{display:flex}
.ced .times input{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:var(--ri);padding:8px;font-family:var(--body);font-size:14px;background:var(--paper);color:var(--ink);outline:none;transition:.15s}
.ced .acts{display:flex;gap:8px;justify-content:space-between;align-items:center;margin-top:6px}


/* --- ausencias --- */
.auscards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:8px}
.ausc{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:15px 16px}
.ausc .top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.ausc .av{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;background:#f4f0e7;color:#00295a;font-family:var(--display);font-weight:400;letter-spacing:.4px;box-shadow:inset 0 0 0 1.5px rgba(195,154,63,.6)}
.ausc .nm{font-weight:800}.ausc .mt{font-size:11.5px;color:var(--faint)}
.ausc .rng{font-size:13px;color:var(--muted);margin-bottom:12px}
.ausc .rng b{color:var(--ink)}
.ausc .acts2{display:flex;gap:8px}
.ausc .acts2 button{flex:1;border-radius:8px;padding:8px;font-family:var(--body);font-weight:800;font-size:12.5px;cursor:pointer;border:1px solid var(--line)}
.ausc .ap{background:var(--good);color:#fff;border:0}.ausc .rj{background:transparent;color:var(--crit);border-color:var(--crit)}
.austag{display:inline-flex;font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px}
.austag.vacaciones{background:var(--good-bg);color:var(--good)}.austag.permiso{background:var(--goose-soft);color:var(--navy)}
.austag.baja{background:var(--crit-bg);color:var(--crit)}.austag.libre{background:var(--line-2);color:var(--muted)}
.ausest{font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px}
.ausest.solicitada{background:var(--warn-bg);color:var(--warn)}.ausest.aprobada{background:var(--good-bg);color:var(--good)}.ausest.rechazada{background:var(--crit-bg);color:var(--crit)}
#ausEd{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.45);padding:20px}
#ausEd.show{display:flex}


.menu-btn{display:none;background:transparent;border:1px solid var(--line);border-radius:10px;width:40px;height:40px;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);margin-right:4px}
.menu-btn svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:2}
#navBackdrop{display:none;position:fixed;inset:0;background:rgba(1,10,25,.5);z-index:110}
#navBackdrop.show{display:block}


.sem{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800}
.sem i{width:9px;height:9px;border-radius:50%;display:inline-block}
.sem.ok{color:var(--good)}.sem.ok i{background:var(--good)}
.sem.warn{color:var(--warn)}.sem.warn i{background:var(--warn)}
.sem.crit{color:var(--crit)}.sem.crit i{background:var(--crit)}
#ceBody tr{cursor:pointer}


.cfgbar{display:flex;align-items:center;gap:12px}
.cfggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.cfgf{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.cfgf label{font-size:11.5px;font-weight:800;color:var(--muted)}
.cfgf input,.cfgf select{border:1px solid var(--line);border-radius:var(--ri);padding:9px;font-family:var(--body);font-size:14px;background:var(--paper);color:var(--ink);outline:none;transition:.15s}
.cfgitem{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:13px 15px;box-shadow:var(--shadow)}
.cfgitem label{display:block;font-size:12px;font-weight:800;color:var(--muted);margin-bottom:7px}
.cfgitem input,.cfgitem select{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:var(--ri);padding:8px;font-family:var(--body);font-size:14px;background:var(--paper);color:var(--ink);outline:none;transition:.15s}
#cfgUsers select,#cfgUsers input[type=text]{border:1px solid var(--line);border-radius:var(--ri);padding:6px 8px;font-family:var(--body);font-size:13px;background:var(--paper);color:var(--ink);outline:none;transition:.15s}
#cfgUsers input[type=text]{width:130px}
.minibtn{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:7px 14px;font-family:var(--body);font-weight:700;font-size:12.5px;cursor:pointer;color:var(--navy);display:inline-flex;align-items:center;gap:6px;transition:.15s}
.minibtn:hover{border-color:var(--goose);transform:translateY(-1px);box-shadow:var(--shadow)}
.minibtn:active{transform:translateY(0)}
#cfgUserEd{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.45);padding:20px}
#cfgUserEd.show{display:flex}


.cfghelp{background:var(--goose-soft);border:1px solid color-mix(in srgb,var(--goose) 22%,transparent);border-radius:10px;padding:11px 14px;font-size:13px;color:var(--navy);margin-bottom:12px;line-height:1.7}
.rl{display:inline-block;font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;margin-right:2px}
.rl.admin{background:var(--navy);color:#fff}.rl.coord{background:var(--goose-soft);color:var(--navy);border:1px solid var(--goose)}
.rl.enc{background:var(--gold-lite);color:#5a4410}.rl.emp{background:var(--line-2);color:var(--muted)}
.cfgitem .hint{font-size:11.5px;color:var(--muted);font-weight:600;margin-top:6px;line-height:1.4}
.cfgcat{grid-column:1/-1;font-family:var(--display);font-weight:400;font-size:18px;margin:6px 0 -2px;color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}
.chip-st{display:inline-flex;align-items:center;font-size:11.5px;font-weight:800;padding:3px 10px;border-radius:999px;background:var(--goose-soft);color:var(--navy)}
.chip-more{background:var(--line-2);color:var(--muted)}
#centroPicker{position:fixed;inset:0;z-index:160;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.5);padding:20px}
#centroPicker.show{display:flex}
.cprow{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-2);cursor:pointer;font-size:13.5px}
.cprow:last-child{border-bottom:0}.cprow:hover{background:var(--goose-soft)}
.cprow input{width:16px;height:16px;flex:none}
.cprow .cd{font-size:11px;color:var(--faint);margin-left:auto}
.editc{border:0;background:none;color:var(--goose);font-weight:800;font-size:12px;cursor:pointer;padding:2px 4px}


#revisarModal{position:fixed;inset:0;z-index:160;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.5);padding:20px}
#revisarModal.show{display:flex}
.revlink{color:var(--warn);font-weight:800;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.revlink:hover{color:var(--crit)}
tr.rev-larga td{background:color-mix(in srgb,var(--crit) 6%,transparent)}
.rev-tag{display:inline-flex;font-size:10px;font-weight:800;padding:1px 7px;border-radius:999px;background:var(--crit-bg);color:var(--crit);margin-left:6px}


.int-actions{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.int-cols{display:grid;grid-template-columns:1.6fr 1fr;gap:22px;align-items:start}
@media (max-width:820px){.int-cols{grid-template-columns:1fr}}
/* spotlight reconocimiento */
.spot{position:relative;border-radius:20px;overflow:hidden;padding:26px 30px;margin-bottom:24px;color:#fff;
  background:linear-gradient(120deg,#1a1207,#3a2c10 55%,#6b5218);box-shadow:var(--shadow-lg)}
.spot::after{content:"";position:absolute;right:-30px;top:-30px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(227,200,120,.35),transparent 70%)}
.spot .medal{position:relative;z-index:2;width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,#e6c877,#c39a3f);display:flex;align-items:center;justify-content:center;margin-bottom:14px;box-shadow:0 4px 14px rgba(0,0,0,.35)}
.spot .medal svg{width:28px;height:28px;fill:#3a2c10}
.spot .lbl{position:relative;z-index:2;font-size:12px;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:#e6c877}
.spot .nm{position:relative;z-index:2;font-family:var(--display);font-weight:400;font-size:34px;margin:4px 0 2px;text-wrap:balance}
.spot .st{position:relative;z-index:2;font-size:13.5px;color:#e9dcc0;font-weight:700}
.spot .msg{position:relative;z-index:2;font-size:14.5px;color:#f3ead6;margin-top:12px;max-width:60ch;line-height:1.6;font-style:italic}
.spot .del{position:absolute;top:14px;right:16px;z-index:3;background:rgba(0,0,0,.25);border:0;color:#fff;border-radius:8px;padding:5px 9px;font-size:11px;font-weight:800;cursor:pointer}
/* comunicados */
.com{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:14px;position:relative}
.com.dest{border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}
.com .ch{display:flex;align-items:center;gap:9px;margin-bottom:7px}
.com .cat{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:2px 9px;border-radius:999px}
.com .cat.novedad{background:var(--goose-soft);color:var(--navy)}
.com .cat.politica{background:var(--warn-bg);color:var(--warn)}
.com .cat.proceso{background:var(--line-2);color:var(--muted)}
.com .cat.beneficio{background:var(--good-bg);color:var(--good)}
.com .dt{font-size:11.5px;color:var(--faint);font-weight:700}
.com .pin{margin-left:auto;color:var(--gold);font-weight:800;font-size:11px}
.com h4{margin:0 0 5px;font-family:var(--display);font-weight:400;font-size:19px}
.com p{margin:0;font-size:13.5px;color:var(--muted);line-height:1.6;white-space:pre-wrap}
.com .cdel{position:absolute;top:12px;right:12px;background:none;border:0;color:var(--faint);cursor:pointer;font-size:12px;font-weight:800}
.com .cdel:hover{color:var(--crit)}
.rec-item{display:flex;gap:11px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:13px 15px;margin-bottom:10px;box-shadow:var(--shadow)}
.rec-item .ic{width:34px;height:34px;border-radius:9px;flex:none;display:flex;align-items:center;justify-content:center;background:var(--goose-soft)}
.rec-item .ic svg{width:18px;height:18px;stroke:var(--navy);fill:none;stroke-width:2}
.rec-item b{font-size:14px}.rec-item div>span{font-size:12.5px;color:var(--muted)}
#comEd,#reconEd{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.45);padding:20px}
#comEd.show,#reconEd.show{display:flex}


.vm-rank{position:relative;z-index:2;margin-top:16px;display:flex;flex-direction:column;gap:2px;border-top:1px solid rgba(230,200,120,.25);padding-top:12px}
.vmr{display:grid;grid-template-columns:22px 1fr auto auto;gap:10px;align-items:center;font-size:12.5px;color:#e9dcc0;padding:3px 0}
.vmr .pos{color:#e6c877;font-weight:800}.vmr .vn{font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vmr .vt{color:#c9b892;font-size:11.5px}.vmr .ve{font-weight:800;color:#e6c877;font-variant-numeric:tabular-nums}
.vm-note{position:relative;z-index:2;margin-top:12px;font-size:11.5px;color:#c9b892;font-weight:700}


.int-personas{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:22px}
@media (max-width:820px){.int-personas{grid-template-columns:1fr}}
.pcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:16px 18px}
.pcard h3{margin:0 0 12px;font-family:var(--display);font-weight:400;font-size:19px;display:flex;align-items:center;gap:8px}
.pcard .emo{font-size:20px}
.plist{display:flex;flex-direction:column;gap:2px;max-height:230px;overflow:auto}
.prow{display:flex;align-items:center;gap:11px;padding:7px 0;border-bottom:1px solid var(--line-2)}
.prow:last-child{border-bottom:0}
.pday{width:34px;height:34px;flex:none;border-radius:9px;background:var(--goose-soft);color:var(--navy);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800;line-height:1;font-size:14px}
.pday small{font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}
.prow.hoy .pday{background:linear-gradient(135deg,var(--gold-lite),var(--gold));color:#3a2c10}
.prow .pnm{font-weight:700;font-size:13.5px}
.prow .pst{font-size:11.5px;color:var(--faint);margin-left:auto}
.prow .hoybadge{margin-left:auto;font-size:10px;font-weight:800;background:var(--warn-bg);color:var(--warn);padding:2px 8px;border-radius:999px}
.pav{width:32px;height:32px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;color:#fff;background:linear-gradient(135deg,var(--good),#3f9e78)}
.pempty{color:var(--muted);font-size:13px;padding:14px 0}


.podcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:22px}
.podcard h3{margin:0 0 16px;font-family:var(--display);font-weight:400;font-size:20px;display:flex;align-items:center;gap:8px}
.podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:12px;align-items:end;margin-bottom:16px}
.pod{border-radius:14px 14px 0 0;padding:14px 10px 16px;text-align:center;position:relative;color:#2a2110}
.pod .rank{position:absolute;top:-13px;left:50%;transform:translateX(-50%);width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff;border:2px solid var(--card)}
.pod .tn{font-weight:800;font-size:13.5px;line-height:1.2;margin-bottom:4px;text-wrap:balance}
.pod .te{font-weight:800;font-size:17px;font-variant-numeric:tabular-nums}
.pod .tk{font-size:11px;opacity:.75;font-weight:700;margin-top:2px}
.pod.p1{background:linear-gradient(180deg,#f0d488,#c39a3f);min-height:158px;box-shadow:0 8px 24px rgba(195,154,63,.35)}
.pod.p1 .rank{background:#c39a3f;top:-15px;width:30px;height:30px;font-size:15px}
.pod.p2{background:linear-gradient(180deg,#dbe0e7,#a7b0bd);min-height:128px}
.pod.p2 .rank{background:#8a94a3}
.pod.p3{background:linear-gradient(180deg,#e6b98c,#c08350);min-height:110px}
.pod.p3 .rank{background:#b87840}
.pod .crown{font-size:22px;margin-bottom:2px}
.podlist{display:flex;flex-direction:column;gap:1px}
.podrow{display:grid;grid-template-columns:26px 1fr auto auto;gap:12px;align-items:center;padding:8px 4px;border-bottom:1px solid var(--line-2);font-size:13.5px}
.podrow:last-child{border-bottom:0}
.podrow .pp{font-weight:800;color:var(--faint);text-align:center}
.podrow .pn{font-weight:700}
.podrow .pk{font-size:11.5px;color:var(--faint)}
.podrow .pv{font-weight:800;font-variant-numeric:tabular-nums;color:var(--navy)}
@media (max-width:520px){.pod .tn{font-size:12px}.pod .te{font-size:14px}}


.tkfilters{display:flex;gap:6px;flex-wrap:wrap}
.tkchip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:5px 12px;font-size:12.5px;font-weight:800;cursor:pointer;color:var(--muted)}
.tkchip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
#tkBody tr{cursor:pointer}
.tkcat{font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px;background:var(--line-2);color:var(--muted)}
.tkest{font-size:11px;font-weight:800;padding:2px 9px;border-radius:999px}
.tkest.abierto{background:var(--warn-bg);color:var(--warn)}
.tkest.en_curso{background:var(--goose-soft);color:var(--navy)}
.tkest.resuelto{background:var(--good-bg);color:var(--good)}
.tkest.cerrado{background:var(--line-2);color:var(--muted)}
.tkprio-alta{color:var(--crit);font-weight:800}
#tkNewModal,#tkDetModal{position:fixed;inset:0;z-index:150;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.45);padding:20px}
#tkNewModal.show,#tkDetModal.show{display:flex}
.tksel{border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-family:var(--body);font-weight:700;font-size:13px;background:var(--paper);color:var(--ink)}
.tkthread{max-height:320px;overflow:auto;display:flex;flex-direction:column;gap:10px;margin:6px 0 12px;padding:4px 2px}
.tkmsg{border-radius:12px;padding:10px 13px;font-size:13.5px;line-height:1.5;max-width:88%}
.tkmsg.mine{align-self:flex-end;background:var(--navy);color:#fff}
.tkmsg.other{align-self:flex-start;background:var(--line-2);color:var(--ink)}
.tkmsg.interno{align-self:stretch;max-width:100%;background:var(--warn-bg);color:var(--warn);border:1px dashed color-mix(in srgb,var(--warn) 40%,transparent)}
.tkmsg .au{font-size:10.5px;font-weight:800;opacity:.75;margin-bottom:3px}
.tkmsg .wp{white-space:pre-wrap}


/* --- editor de texto enriquecido (RTE) --- */
.rte-tb{width:100%;box-sizing:border-box;display:flex;flex-wrap:wrap;gap:5px;align-items:center;border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;padding:7px 9px;background:color-mix(in srgb,var(--line-2) 40%,transparent);overflow:visible}
.rte-b{border:1px solid transparent;background:transparent;border-radius:6px;min-width:30px;height:30px;padding:0 9px;flex:none;white-space:nowrap;font-family:var(--body);font-size:13px;font-weight:700;cursor:pointer;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:3px}
.rte-b:hover{background:var(--card);border-color:var(--line)}
.rte-b.on{background:var(--goose-soft);border-color:var(--goose);color:var(--navy)}
.rte-sel{border:1px solid var(--line);background:var(--card);border-radius:6px;height:30px;font-family:var(--body);font-size:12px;font-weight:700;color:var(--ink);padding:0 8px;cursor:pointer;flex:none;min-width:104px}
.rte-sep{width:1px;height:20px;background:var(--line);margin:0 3px}
.rte{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:0 0 8px 8px;padding:12px 14px;min-height:180px;height:220px;max-height:70vh;overflow:auto;background:var(--paper);color:var(--ink);font-size:14px;line-height:1.6;outline:none;resize:vertical}
.rte:empty:before{content:attr(data-ph);color:var(--faint)}
.rte h2{font-family:var(--display);font-weight:400;font-size:22px;margin:6px 0}
.rte h3{font-family:var(--display);font-weight:400;font-size:18px;margin:6px 0}
.rte img{max-width:100%;height:auto;border-radius:8px;margin:6px 0}
.rte a{color:var(--goose)}
.rte ul,.rte ol{padding-left:22px;margin:6px 0}
/* --- render del comunicado (cuerpo HTML) --- */
.com .body h2{font-family:var(--display);font-weight:400;font-size:20px;margin:8px 0 4px}
.com .body h3{font-family:var(--display);font-weight:400;font-size:17px;margin:8px 0 4px}
.com .body img{max-width:100%;height:auto;border-radius:10px;margin:8px 0}
.com .body a{color:var(--goose)}
.com .body ul,.com .body ol{padding-left:20px}
.com .body p{margin:6px 0}


.ced-com{box-sizing:border-box;width:680px;max-width:96vw;min-width:380px;min-height:440px;max-height:92vh;overflow:auto;resize:both}
.ced-com h4{position:sticky;top:0}


/* --- móvil / PWA: modales y editor a pantalla cómoda --- */
@media (max-width:600px){
  #comEd,#reconEd,#ausEd,#tkNewModal,#tkDetModal,#cellEd,#centroPicker,#cfgUserEd,#revisarModal,#cellEd{padding:10px}
  .ced{max-width:100%!important;width:100%;min-width:0!important;max-height:92vh;overflow:auto;padding:16px}
  .ced-com{width:100%!important;min-width:0!important;min-height:0;resize:none}
  .rte{height:200px;max-height:58vh;resize:none}
  .rte-tb{gap:4px;padding:6px 7px}
  .rte-b{padding:0 8px;min-width:30px;height:32px}
  .rte-sel{min-width:96px;height:32px}
  .ptwrap{max-width:100%}
}
/* respetar zona segura (notch) del PWA */
@supports(padding:max(0px)){
  .side{padding-bottom:max(18px,env(safe-area-inset-bottom))}
  .wrap{padding-bottom:max(50px,env(safe-area-inset-bottom))}
}


.rte-dd{position:relative}
.rte-ddbtn{gap:6px;min-width:104px;justify-content:space-between}
.rte-ddbtn .cx{font-size:10px;opacity:.55}
.rte-ddmenu{position:absolute;top:calc(100% + 5px);left:0;z-index:40;min-width:160px;background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);padding:5px;display:none;flex-direction:column;gap:2px}
.rte-ddmenu.open{display:flex}
.rte-ddmenu button{border:0;background:transparent;border-radius:7px;padding:9px 11px;text-align:left;cursor:pointer;font-family:var(--body);font-size:14px;color:var(--ink);width:100%}
.rte-ddmenu button:hover{background:var(--goose-soft)}
.rte-ddmenu .opt-h2{font-family:var(--display);font-weight:400;font-size:19px}
.rte-ddmenu .opt-h3{font-family:var(--display);font-weight:400;font-size:16px}


/* --- toasts (avisos) --- */
#toasts{position:fixed;top:16px;right:16px;z-index:300;display:flex;flex-direction:column;gap:10px;max-width:min(380px,92vw);pointer-events:none}
.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:10px;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:12px;box-shadow:var(--shadow-lg);padding:12px 14px;font-size:13.5px;color:var(--ink);animation:toastIn .25s cubic-bezier(.3,.7,.2,1);transition:opacity .25s,transform .25s}
.toast.out{opacity:0;transform:translateX(20px)}
.toast .ic{width:20px;height:20px;flex:none;margin-top:1px}
.toast .ic svg{width:20px;height:20px;fill:none;stroke-width:2.2}
.toast.ok{border-left-color:var(--good)} .toast.ok .ic svg{stroke:var(--good)}
.toast.error{border-left-color:var(--crit)} .toast.error .ic svg{stroke:var(--crit)}
.toast.info{border-left-color:var(--goose)} .toast.info .ic svg{stroke:var(--goose)}
.toast .tx{flex:1;line-height:1.45}.toast .tx b{display:block;margin-bottom:1px}
.toast .cl{background:none;border:0;color:var(--faint);cursor:pointer;font-size:16px;line-height:1;padding:0 2px}
@keyframes toastIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@media (max-width:600px){#toasts{top:auto;bottom:14px;right:10px;left:10px;max-width:none}}


.bell{position:relative}
.bell-btn{position:relative}
.bell-badge{position:absolute;top:-3px;right:-3px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--crit);color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--bg)}
.bell-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:130;width:340px;max-width:92vw;background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);display:none;overflow:hidden}
.bell-panel.open{display:block}
.bell-head{display:flex;align-items:center;justify-content:space-between;padding:12px 15px;border-bottom:1px solid var(--line-2);font-weight:800;font-size:14px}
.bell-head button{background:none;border:0;color:var(--goose);font-weight:800;font-size:12px;cursor:pointer}
.bell-list{max-height:min(420px,70vh);overflow:auto}
.bell-item{display:flex;gap:10px;padding:12px 15px;border-bottom:1px solid var(--line-2);cursor:pointer;transition:.12s}
.bell-item:last-child{border-bottom:0}
.bell-item:hover{background:var(--goose-soft)}
.bell-item.unread{background:color-mix(in srgb,var(--goose) 7%,transparent)}
.bell-item .dotu{width:8px;height:8px;border-radius:50%;background:var(--goose);flex:none;margin-top:6px}
.bell-item.read .dotu{background:transparent}
.bell-item .bt{font-weight:800;font-size:13px;color:var(--ink)}
.bell-item .bc{font-size:12.5px;color:var(--muted);margin-top:1px}
.bell-item .bd{font-size:11px;color:var(--faint);margin-top:3px}
.bell-empty{padding:26px 15px;text-align:center;color:var(--muted);font-size:13px}
@media (max-width:600px){.bell-panel{position:fixed;top:60px;right:8px;left:8px;width:auto}}

@media (max-width:600px){.top .sub{display:none}.top h1{font-size:18px}.mpick select{max-width:130px;font-size:12px}}

/* --- FIX menú móvil (gana por orden de cascada) --- */
@media (max-width:820px){
  .menu-btn{display:inline-flex !important}
  .side{position:fixed !important;top:0;left:0;bottom:0;width:min(86vw,300px);z-index:200;transform:translateX(-100%);transition:transform .25s ease;padding-top:max(14px,env(safe-area-inset-top))}
  .side.open{transform:none !important;box-shadow:0 0 60px rgba(0,0,0,.5)}
  #navBackdrop.show{display:block}
  .app{grid-template-columns:1fr !important}
}


.fid-btn{display:flex;align-items:center;gap:9px;margin:0 14px 8px;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:var(--sidebar-ink);font-family:var(--body);font-weight:800;font-size:13px;cursor:pointer;transition:.15s}
.fid-btn:hover{background:rgba(255,255,255,.12)}
.fid-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;flex:none}
.fid-btn.on{border-color:color-mix(in srgb,var(--good) 50%,transparent);color:#9fe3c0}


/* ============ PULIDO iOS / PWA (zona segura + móvil pro) ============ */
.top{padding-top:max(15px,env(safe-area-inset-top))}
#login{padding-top:max(24px,env(safe-area-inset-top));padding-bottom:max(24px,env(safe-area-inset-bottom))}
.foot{width:100%;box-sizing:border-box;background:none;border:0;cursor:pointer;font-family:var(--body)}
.foot:hover{background:rgba(255,255,255,.05)}
.foot-cx{width:18px;height:18px;stroke:var(--sidebar-ink);opacity:.5;fill:none;stroke-width:2;flex:none}
@media (max-width:820px){
  .top{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));gap:8px}
  .top h1{font-size:17px}
  .side{padding-top:max(18px,env(safe-area-inset-top)) !important;width:min(88vw,320px) !important}
  .side .brand,.side .logo{padding-top:6px}
  .nav a{padding:14px 14px;font-size:15px;border-radius:12px}
  .nav .lbl{padding-top:16px;font-size:11px}
  .menu-btn{width:42px;height:42px}
  .bell-panel{top:calc(env(safe-area-inset-top) + 58px)}
  .mpick select{max-width:120px}
}
/* menú de usuario (bottom sheet) */
#userMenu{position:fixed;inset:0;z-index:210;display:none;align-items:flex-end;justify-content:center;background:rgba(1,10,25,.5)}
#userMenu.show{display:flex}
.sheet{width:100%;max-width:460px;background:var(--card);border-radius:20px 20px 0 0;padding:10px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px rgba(0,0,0,.3);animation:sheetUp .28s cubic-bezier(.3,.8,.3,1)}
@media(min-width:600px){#userMenu{align-items:center}.sheet{border-radius:18px;margin-bottom:0;padding-bottom:16px}}
@keyframes sheetUp{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
.sheet-grip{width:40px;height:4px;border-radius:2px;background:var(--line);margin:4px auto 12px}
.um-head{display:flex;align-items:center;gap:12px;padding:6px 6px 14px;border-bottom:1px solid var(--line-2);margin-bottom:8px}
.um-head .av{width:44px;height:44px;font-size:18px}
.um-item{display:flex;align-items:center;gap:13px;width:100%;box-sizing:border-box;background:none;border:0;padding:14px 8px;font-family:var(--body);font-size:15px;font-weight:700;color:var(--ink);cursor:pointer;border-radius:10px;text-align:left}
.um-item:hover{background:var(--goose-soft)}
.um-item svg{width:21px;height:21px;stroke:var(--navy);fill:none;stroke-width:2;flex:none}
.um-item .cx{margin-left:auto;stroke:var(--faint)}
.um-item.danger{color:var(--crit)}.um-item.danger svg{stroke:var(--crit)}
.um-item .um-state{margin-left:auto;font-size:12px;font-weight:800;color:var(--good)}
.um-cancel{width:100%;margin-top:8px;padding:14px;border:0;background:var(--line-2);border-radius:12px;font-family:var(--body);font-weight:800;font-size:15px;color:var(--ink);cursor:pointer}
#pwModal{position:fixed;inset:0;z-index:220;display:none;align-items:center;justify-content:center;background:rgba(1,10,25,.5);padding:16px}
#pwModal.show{display:flex}


/* --- tab bar inferior (móvil, look app nativa) --- */
.tabbar{display:none}
@media (max-width:820px){
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:100;
    background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(16px);
    border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));
    justify-content:space-around;align-items:stretch}
  .tabbar .tab{flex:1;min-width:0;background:none;border:0;cursor:pointer;display:flex;flex-direction:column;
    align-items:center;gap:3px;padding:5px 2px;color:var(--faint);font-family:var(--body);font-weight:700;font-size:10.5px}
  .tabbar .tab svg{width:23px;height:23px;stroke:currentColor;fill:none;stroke-width:2}
  .tabbar .tab span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
  .tabbar .tab.on{color:var(--navy)}
  .tabbar .tab.on svg{stroke:var(--navy)}
  :root[data-theme="dark"] .tabbar .tab.on,:root:not([data-theme="light"]) .tabbar .tab.on{color:var(--goose-lite)}
  :root[data-theme="dark"] .tabbar .tab.on svg{stroke:var(--goose-lite)}
  .tabbar .tab .tbadge{position:absolute;top:2px;right:calc(50% - 18px);min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:var(--crit);color:#fff;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center}
  .tabbar .tab{position:relative}
  /* dejar hueco para la barra inferior */
  .wrap{padding-bottom:calc(74px + env(safe-area-inset-bottom)) !important}
}


/* --- planificador móvil: vista por día --- */
.plan-mob{display:none}.plday-sel{display:none}
@media (max-width:820px){
  #plWrap,#hzWrap,#mtWrap{display:none}
  .plan-mob{display:flex;flex-direction:column;gap:9px}
  .plday-sel{display:flex;gap:7px;overflow-x:auto;padding:2px 0 12px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .plday-sel::-webkit-scrollbar{display:none}
  .plday-chip{flex:none;min-width:54px;border:1px solid var(--line);background:var(--card);border-radius:13px;padding:8px 4px;text-align:center;cursor:pointer;font-weight:800;font-size:10.5px;color:var(--muted);line-height:1.1}
  .plday-chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}
  .plday-chip.we{color:var(--gold)}.plday-chip.on.we{color:#fff}
  .plday-chip b{display:block;font-size:17px;color:inherit;margin-top:2px}
  .pm-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:13px;padding:13px 15px;cursor:pointer;box-shadow:var(--shadow)}
  .pm-row:active{background:var(--goose-soft)}
  .pm-nm{flex:1;min-width:0;font-weight:800;font-size:14.5px}
  .pm-nm small{display:block;font-weight:600;font-size:11.5px;color:var(--faint);margin-top:1px}
  .pm-asg{flex:none}.pm-asg .plchip{min-width:66px;font-size:12.5px;padding:7px 8px}
  .pltools{gap:8px}
  #pSave,#pPub{flex:1;justify-content:center}
}


.day-cov{display:none}
@media (max-width:820px){
  .day-cov{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;background:var(--card);border:1px solid var(--line);border-radius:13px;padding:12px 15px;margin-bottom:11px;box-shadow:var(--shadow)}
  .day-cov .dc-big{font-family:var(--display);font-size:22px;font-weight:400;color:var(--navy)}
  .day-cov .dc-lbl{font-size:12px;color:var(--muted);font-weight:700}
  .day-cov .dc-sep{width:1px;height:26px;background:var(--line-2)}
  .day-cov .dc-pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;padding:4px 10px;border-radius:999px;background:var(--line-2);color:var(--muted)}
  .day-cov .dc-pill.m{background:color-mix(in srgb,var(--navy) 12%,transparent);color:var(--navy)}
  .day-cov .dc-pill.t{background:var(--goose-soft);color:var(--navy)}
  .day-cov .dc-pill.vac{background:var(--good-bg);color:var(--good)}
  .day-cov .dc-pill.aus{background:var(--warn-bg);color:var(--warn)}
  .plan-mob,.plday-sel{touch-action:pan-y}
}


/* ============ TABLAS RESPONSIVE (móvil = tarjetas, sin scroll horizontal) ============ */
@media (max-width:600px){
  .ptwrap{border:0;background:none;box-shadow:none;overflow:visible}
  .ptable{display:block}
  .ptable thead{display:none}
  .ptable tbody{display:block}
  .ptable tbody tr{display:block;background:var(--card);border:1px solid var(--line);border-radius:13px;margin-bottom:10px;padding:6px 2px;box-shadow:var(--shadow)}
  .ptable tbody td{display:flex;justify-content:space-between;align-items:center;gap:14px;border:0 !important;padding:8px 14px;text-align:right;font-size:13.5px}
  .ptable tbody td::before{content:attr(data-label);font-weight:800;font-size:11.5px;color:var(--faint);text-align:left;flex:none;text-transform:uppercase;letter-spacing:.03em}
  .ptable tbody td:first-child{display:block;text-align:left;font-weight:800;font-size:15px;padding-bottom:9px;margin-bottom:3px;border-bottom:1px solid var(--line-2) !important}
  .ptable tbody td:first-child::before{display:none}
  .ptable tbody td:first-child .who{justify-content:flex-start}
  .ptable tbody td.empty,.ptable tbody td[colspan]{display:block;text-align:center}
  .ptable tbody td.empty::before,.ptable tbody td[colspan]::before{display:none}
  /* nómina: matriz densa -> scroll cómodo con aviso */
  .nomwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
}
/* resaltar MI fila en turnos */
.pltbl tbody tr.me .nmcol{box-shadow:inset 4px 0 0 var(--goose)}
.pltbl tbody tr.me .nmcol .plrow-nm::after,.hztbl tbody tr.me .nmcol::after{content:" · tú";color:var(--goose);font-weight:800;font-size:11px}
.hztbl tbody tr.me .nmcol{box-shadow:inset 4px 0 0 var(--goose)}
.pm-row.me{border-color:var(--goose);box-shadow:0 0 0 2px var(--goose-soft)}
.pm-row.me .pm-nm::after{content:" · tú";color:var(--goose);font-weight:800;font-size:11px}

/* Mi registro horario */
.mr-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.mr-row{display:grid;grid-template-columns:1.1fr 1fr .6fr auto;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 14px;box-shadow:var(--shadow)}
.mr-row .mr-d{font-weight:800;font-size:13.5px}
.mr-row .mr-h{font-variant-numeric:tabular-nums;color:var(--ink);font-size:13.5px}
.mr-row .mr-hrs{font-variant-numeric:tabular-nums;color:var(--muted);font-weight:800;font-size:13px;text-align:right}
.mr-row .mr-sig{display:flex;align-items:center;gap:8px;justify-content:flex-end}
.mr-row .mr-sig code{font-size:11px;color:var(--faint);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.mr-tot{margin-top:6px;text-align:right;font-size:12.5px;color:var(--muted);font-weight:800}
@media(max-width:600px){.mr-row{grid-template-columns:1fr auto;row-gap:4px}.mr-row .mr-hrs{text-align:left}.mr-row .mr-sig{grid-column:1/-1;justify-content:flex-start}}

/* API Inspección · token */
#inspCard{display:flex;flex-direction:column;gap:14px}
.insp-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.insp-btns{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}
.insp-tokrow label,.insp-caduc label{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);font-weight:800;margin-bottom:6px}
.insp-tok{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.insp-tok code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:var(--line-2);color:var(--ink);padding:8px 12px;border-radius:8px;word-break:break-all}
.chip.crit{background:var(--crit-bg);color:var(--crit)}

/* ===== Configuración con pestañas ===== */
.cfg-nav{display:flex;gap:6px;overflow-x:auto;padding:5px;background:var(--card);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);margin-bottom:20px;-webkit-overflow-scrolling:touch}
.cfg-tab{flex:none;display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--muted);font-family:var(--body);font-weight:800;font-size:13px;padding:9px 15px;border-radius:999px;cursor:pointer;transition:.15s;white-space:nowrap}
.cfg-tab svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;opacity:.85}
.cfg-tab:hover{color:var(--navy)}
.cfg-tab.on{background:var(--navy);color:#fff}
.cfg-tab.on svg{opacity:1}
.cfg-pane{display:none;animation:cfgin .25s ease}
.cfg-pane.on{display:block}
@keyframes cfgin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.sub-h{font-size:12.5px;color:var(--muted);margin-top:2px}
.save-ok{color:var(--good);font-weight:800;font-size:13px}

/* toolbar usuarios */
.usr-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:14px 0 12px}
.usr-tools .srch{flex:1;min-width:240px;position:relative}
.usr-tools .srch svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:16px;height:16px;stroke:var(--faint);fill:none;stroke-width:2;pointer-events:none}
.usr-rolefilter{display:flex;flex-wrap:wrap;gap:8px}
.usr-rolefilter button{border:1px solid var(--line);background:var(--card);color:var(--muted);font-family:var(--body);font-weight:800;font-size:12.5px;padding:8px 14px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:.15s;box-shadow:var(--shadow)}
.usr-rolefilter button:hover{border-color:var(--goose)}
.usr-rolefilter button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.usr-rolefilter button b{display:inline-block;background:var(--line-2);color:var(--muted);border-radius:999px;padding:0 6px;font-size:11px;font-weight:800;min-width:16px;text-align:center}
.usr-rolefilter button.on b{background:rgba(255,255,255,.22);color:#fff}
.usr-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;flex-wrap:wrap}
.usr-count{font-size:12.5px;color:var(--muted);font-weight:800}
.pgbtns{display:flex;gap:8px}

/* filas de ajuste (parámetros/roles) */
.cfg-group{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:6px 20px;margin-bottom:16px}
.cfg-group-h{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);font-weight:800;padding:14px 0 4px}
.set-list .set-row:last-child,.cfg-group .set-row:last-child{border-bottom:0}
.set-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;padding:14px 0;border-bottom:1px solid var(--line-2)}
.set-name{font-weight:700;font-size:14px;color:var(--ink)}
.set-hint{font-size:12.5px;color:var(--muted);margin-top:2px;max-width:52ch}
.set-ctl{display:flex;justify-content:flex-end}
.set-ctl input,.set-ctl select{max-width:200px}
.set-ctl input[type=number],.set-ctl input[type=time]{max-width:140px;text-align:right}
.sw-lbl{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;color:var(--ink);cursor:pointer}
@media(max-width:560px){.set-row{grid-template-columns:1fr;gap:8px}.set-ctl{justify-content:flex-start}}

/* registro: rejilla de acciones sin huecos */
.reg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:4px}
.reg-grid .cfgitem{margin:0}

/* ===== Planificador: autocompletar + pincel ===== */
.pl-auto{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 12px;padding:12px 14px;background:linear-gradient(135deg,var(--goose-soft),var(--card));border:1px solid var(--line);border-radius:var(--r-sm)}
.pl-auto-lbl{display:inline-flex;align-items:center;gap:7px;font-weight:800;font-size:13px;color:var(--navy)}
.pl-auto-lbl svg{width:18px;height:18px;fill:var(--gold);stroke:none}
.pl-brush{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.pl-brush-lbl{font-size:12px;font-weight:800;color:var(--muted)}
.pl-brush button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-family:var(--body);font-weight:800;font-size:12.5px;padding:7px 12px;border-radius:999px;cursor:pointer;transition:.15s;box-shadow:var(--shadow)}
.pl-brush button:hover{border-color:var(--goose)}
.pl-brush button.on{background:var(--navy);color:#fff;border-color:var(--navy);box-shadow:var(--glow)}
.pl-brush .bdot{width:10px;height:10px;border-radius:3px;flex:none}
.bdot.m{background:#e8912a}.bdot.t{background:#5b53c6}.bdot.libre{background:var(--muted)}.bdot.vac{background:var(--good)}.bdot.cust{background:var(--navy)}.bdot.del{background:var(--crit)}
.pl-brush-hint{font-size:12px;color:var(--faint);font-style:italic}
.plwrap.painting{cursor:crosshair}
.plwrap.painting .cell:hover{background:var(--goose-soft);outline:2px solid var(--goose);outline-offset:-2px}
.rowfill{display:inline-block;margin-top:7px;border:1px solid var(--line);background:var(--card);color:var(--navy);font-family:var(--body);font-weight:800;font-size:10.5px;padding:3px 9px;border-radius:999px;cursor:pointer;opacity:.72;transition:.15s}
.rowfill:hover{opacity:1;border-color:var(--goose);transform:translateY(-1px)}

/* Planificador: horas vs contrato + avisos */
.plrow-h.ok{color:var(--good)}
.plrow-h.under{color:var(--warn)}
.plrow-h.over{color:var(--crit)}
.pl-warn{margin:0 0 12px;border-radius:var(--r-sm);padding:11px 14px;font-size:12.5px;border:1px solid var(--line)}
.pl-warn.ok{display:flex;align-items:center;gap:8px;background:var(--good-bg);color:var(--good);font-weight:800;border-color:color-mix(in srgb,var(--good) 25%,transparent)}
.pl-warn.ok svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.4}
.pl-warn:not(.ok){background:var(--warn-bg);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}
.pw-head{display:flex;align-items:center;gap:8px;font-weight:800;color:var(--warn);margin-bottom:6px}
.pw-head svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.pw-item{padding:4px 0 4px 22px;color:var(--ink);position:relative}
.pw-item::before{content:"";position:absolute;left:6px;top:10px;width:7px;height:7px;border-radius:2px}
.pw-item.over::before{background:var(--crit)}
.pw-item.rest::before{background:var(--warn)}

/* Planificador: selección tipo hoja de cálculo */
.plwrap:not(.painting) .cell{cursor:cell}
.cell.sel{background:color-mix(in srgb,var(--goose) 15%,transparent);box-shadow:inset 0 0 0 1px var(--goose)}
.cell.active{outline:2px solid var(--navy);outline-offset:-2px;position:relative;z-index:1}
.pltbl th[data-c]{cursor:pointer;user-select:none}
.pltbl td.nmcol{user-select:none}

/* ===== Turnos abiertos (open shifts) ===== */
.ta-panel{margin-top:20px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:18px 20px}
.ta-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}
.ta-head h4{margin:0;font-family:var(--display);font-weight:400;font-size:19px}
.ta-head>button{margin-left:auto}
.ta-empty{color:var(--muted);font-size:13px;padding:8px 0}
.ta-card{border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;margin-bottom:10px;background:var(--paper)}
.ta-card-h{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.ta-when{flex:1;font-size:13.5px}
.ta-x{margin-left:2px;border:0;background:none;color:var(--faint);cursor:pointer;font-size:15px;font-weight:800;line-height:1}
.ta-x:hover{color:var(--crit)}
.ta-sol{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0 2px;border-top:1px solid var(--line-2);font-size:13px;font-weight:700}
.ta-sol.mut{color:var(--muted);border-top:1px solid var(--line-2);font-weight:600}
.ta-sol-b{display:flex;gap:6px}
.tl-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.tl-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.tl-when{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.tl-when b{font-size:15px}
.tl-when span{font-variant-numeric:tabular-nums;color:var(--navy);font-weight:800}
.tl-nota{font-size:12.5px;color:var(--muted)}
#taEd{position:fixed;inset:0;background:rgba(1,21,47,.45);display:none;align-items:center;justify-content:center;z-index:60;padding:20px}
#taEd.show{display:flex}

/* Presets editables */
#presetEd{position:fixed;inset:0;background:rgba(1,21,47,.45);display:none;align-items:center;justify-content:center;z-index:60;padding:20px}
#presetEd.show{display:flex}
.preset-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.preset-row .pr-nm{flex:1}
.preset-row .pr-tk{width:58px;text-align:center;text-transform:uppercase}
.preset-row input[type=time]{max-width:118px}
.preset-row .pr-sep{color:var(--faint);font-weight:800}
.preset-row .pr-del{border:0;background:none;color:var(--faint);cursor:pointer;font-weight:800;font-size:16px;line-height:1}
.preset-row .pr-del:hover{color:var(--crit)}
.pl-edit-presets{border:1px dashed var(--line);background:transparent;color:var(--muted);font-family:var(--body);font-weight:800;font-size:12px;padding:6px 12px;border-radius:999px;cursor:pointer;display:inline-flex;align-items:center}
.pl-edit-presets:hover{border-color:var(--goose);color:var(--navy)}
.pl-brush kbd{background:rgba(0,41,90,.12);border-radius:4px;padding:0 5px;font-size:10px;font-weight:800;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin-left:2px}
.pl-brush button.on kbd{background:rgba(255,255,255,.25)}

/* Planificador: totales + cobertura + coste */
.pl-foot td{background:var(--line-2);font-weight:800;font-size:11.5px;color:var(--muted);border-top:2px solid var(--line);text-align:center}
.pl-foot .nmcol{color:var(--ink);text-align:left}
.pl-foot td b{color:var(--navy);font-size:14px}
.pl-foot td small{display:block;font-weight:700;color:var(--faint);font-size:10px}
.pl-foot td.pf-thin{background:var(--crit-bg)}
.pl-foot td.pf-thin b{color:var(--crit)}
.pf-empty{color:var(--faint)}
.pl-summary{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow)}
.pls-info{display:flex;align-items:center;gap:9px;font-size:14px;color:var(--ink)}
.pls-info svg{width:18px;height:18px;stroke:var(--goose);fill:none;stroke-width:2}
.pls-info b{color:var(--navy)}
.pls-est{font-size:10px;color:var(--faint);font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.pl-summary #plCovBtn{margin-left:auto}
.pl-covheat{margin-top:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:14px 16px;overflow-x:auto}
.ch-legend{display:flex;gap:16px;margin-bottom:10px;font-size:12px;color:var(--muted)}
.ch-legend span{display:inline-flex;align-items:center;gap:6px}
.ch-sw{width:12px;height:12px;border-radius:3px}
.ch-sw.z{background:var(--line-2)}.ch-sw.thin{background:var(--crit)}.ch-sw.ok{background:var(--good)}
.ch-grid{display:inline-block;min-width:100%}
.ch-row{display:flex;gap:3px;margin-bottom:3px}
.ch-day{width:46px;flex:none;font-size:11px;font-weight:800;color:var(--muted);display:flex;align-items:center}
.ch-day.we{color:var(--goose)}
.ch-c{width:32px;height:26px;flex:none;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;border-radius:5px}
.ch-head .ch-c{background:none;color:var(--faint);font-weight:700;height:18px}
.ch-c.z{background:var(--line-2);color:transparent}
.ch-c.thin{background:var(--crit);color:#fff}
.ch-c.ok{background:var(--good);color:#fff}

/* Cambios de turno (swaps) */
.cb-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:8px}
@media(max-width:720px){.cb-cols{grid-template-columns:1fr}}
.cb-list{display:flex;flex-direction:column;gap:10px}
.cb-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--shadow);padding:13px 15px;display:flex;flex-direction:column;gap:10px;font-size:13.5px}
.cb-card .cb-b{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cb-empty{color:var(--muted);font-size:13px;padding:8px 2px}
#cbEd{position:fixed;inset:0;background:rgba(1,21,47,.45);display:none;align-items:center;justify-content:center;z-index:60;padding:20px}
#cbEd.show{display:flex}

/* ============ FICHA DE EMPLEADO (página con pestañas) ============ */
.fi-head{display:flex;align-items:center;gap:18px;margin:6px 0 20px}
.fi-av{width:74px!important;height:74px!important;font-size:27px!important}
.fi-id{min-width:0;flex:1}
.fi-id h2{font-family:var(--display);font-weight:400;font-size:30px;margin:0 0 7px;color:var(--ink);letter-spacing:.3px}
.fi-meta{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.fi-meta .chip{background:var(--goose-soft);color:var(--navy);font-size:11.5px;font-weight:800;
  padding:3px 10px;border-radius:999px;letter-spacing:.02em}
.fi-meta .chip.gold{background:rgba(195,154,63,.14);color:var(--gold)}
.fi-meta .chip.off{background:var(--crit-bg);color:var(--crit)}
.fi-meta .chip.ok{background:var(--good-bg);color:var(--good)}
.fi-quick{display:flex;flex-wrap:wrap;gap:14px;margin-top:9px}
.fi-quick a{color:var(--muted);font-size:13px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.fi-quick a:hover{color:var(--goose)}
.fi-quick svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.fi-side{text-align:right;flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:7px}

.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}
.tabs button{border:0;background:none;font-family:var(--body);font-size:14px;font-weight:800;color:var(--muted);
  padding:11px 15px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:.15s}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--navy);border-bottom-color:var(--gold)}
:root[data-theme="dark"] .tabs button.on,:root:not([data-theme="light"]) .tabs button.on{color:var(--ink)}
.tabp{display:none}
.tabp.on{display:block;animation:fiIn .25s ease}
@keyframes fiIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.fi-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px 22px;margin-bottom:16px;box-shadow:var(--shadow)}
.fi-card-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px}
.fi-card-h h3{font-family:var(--display);font-weight:400;font-size:19px;margin:0;color:var(--ink)}
.fi-hint{font-size:12px;color:var(--faint)}
.fi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:16px 20px}
.fi-field label{display:block;font-size:11px;font-weight:800;color:var(--muted);letter-spacing:.06em;
  text-transform:uppercase;margin-bottom:5px}
.fi-field input{width:100%;box-sizing:border-box;border:1px solid var(--line);background:var(--paper);color:var(--ink);
  border-radius:var(--ri);padding:10px 12px;font-family:var(--body);font-size:14.5px;outline:none;transition:.15s}
.fi-field input:focus{border-color:var(--goose);box-shadow:0 0 0 3px var(--goose-soft)}
.fi-field input:disabled{background:var(--line-2);color:var(--muted);cursor:not-allowed}
.fi-field input.dirty{border-color:var(--gold);box-shadow:0 0 0 3px rgba(195,154,63,.16)}
.fi-grid.ro .fi-val{font-size:15px;font-weight:700;color:var(--ink);padding:2px 0}
.fi-grid.ro .fi-val.na{color:var(--faint);font-weight:400}
/* de dónde sale cada dato */
.fi-src{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:1px 7px;border-radius:999px;margin-left:7px;vertical-align:1px}
.fi-src.erp{background:var(--goose-soft);color:var(--navy)}
.fi-src.tarjeta{background:rgba(195,154,63,.16);color:var(--gold)}
.fi-src.app{background:var(--good-bg);color:var(--good)}
.fi-actions{display:flex;align-items:center;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line-2);flex-wrap:wrap}
.fi-msg{font-size:13px;font-weight:700}
.fi-msg.ok{color:var(--good)} .fi-msg.err{color:var(--crit)}
.fi-banner{background:var(--warn-bg);color:var(--warn);border-radius:var(--ri);padding:11px 15px;
  font-size:13px;font-weight:700;margin-bottom:16px;line-height:1.5}
.fi-audit{display:flex;flex-direction:column;gap:9px}
.fi-au{display:flex;gap:10px;align-items:baseline;font-size:13px;flex-wrap:wrap;padding-bottom:9px;border-bottom:1px solid var(--line-2)}
.fi-au:last-child{border-bottom:0;padding-bottom:0}
.fi-au b{color:var(--ink)} .fi-au .ts{color:var(--faint);font-size:12px;margin-left:auto}
.fi-au .val{color:var(--muted)} .fi-au .val i{font-style:normal;color:var(--ink);font-weight:700}
.fi-sec{display:flex;flex-direction:column;gap:2px;max-width:460px}
@media(max-width:820px){
  .fi-head{gap:13px;margin-bottom:16px}
  .fi-av{width:58px!important;height:58px!important;font-size:21px!important}
  .fi-id h2{font-size:23px}
  .fi-side{display:none}
  .fi-card{padding:16px 15px}
  .fi-grid{grid-template-columns:1fr}
}
.rev-tag.anom{background:#c0392b;color:#fff}
