/* ═══════════ MetalOS · sistema visual (UI-2 / UI-3) ═══════════
   Tokens → base → componentes → layout → Centro de Operaciones → portales.
   Sin estilos en línea (CSP): todo vive aquí. Tema claro por defecto; los tokens también admiten [data-theme=dark]. */
:root{
  /* superficies y texto */
  --bg:#f3f6fb;--surface:#fff;--surface2:#fafbfc;--hover:#f1f3f6;--ink:#18212b;--ink2:#566170;--ink3:#8a94a2;
  --line:#e3e8f0;--line2:#cdd5e1;--field:#c3cad3;
  /* marca */
  --accent:#1a5fd0;--accent-h:#1450b0;--accent-ink:#fff;--accent-soft:#e8f0fd;--accent-line:#bcd3f7;
  /* navegación lateral */
  --side:#f7f9fd;--side2:#e3e9f3;--side-ink:#3a4658;--side-dim:#7a8699;--side-on:#fff;--side-mark:#1a5fd0;
  /* estados */
  --ok:#17703f;--warn:#8f5a00;--bad:#b3261e;--info:#1a5fd0;
  --ok-bg:#e6f4ec;--warn-bg:#fdf1d8;--bad-bg:#fcebe9;--info-bg:#e8f0fd;--muted-bg:#eceff3;
  /* forma */
  --r:10px;--r-sm:8px;--r-lg:14px;--sh1:0 1px 2px rgba(16,24,40,.05);--sh2:0 8px 24px rgba(16,24,40,.12);
  /* escala tipográfica y espaciado */
  --fs-xs:11.5px;--fs-sm:12.5px;--fs:14px;--fs-lg:16px;--fs-xl:22px;--sp1:4px;--sp2:8px;--sp3:12px;--sp4:16px;--sp5:24px;
  --font:"Inter","Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"Cascadia Mono",Consolas,"SFMono-Regular",Menlo,monospace;
}
:root[data-theme=dark]{
  --bg:#0f161d;--surface:#16202a;--surface2:#1a2530;--hover:#1f2c38;--ink:#e6ebf0;--ink2:#a2afbc;--ink3:#7b8896;--line:#263441;--line2:#33444f;--field:#3b4c5a;
  --accent:#4fb6d8;--accent-h:#6cc4e2;--accent-ink:#06222d;--accent-soft:#16323f;--accent-line:#21495b;
  --ok:#5fcf91;--warn:#e8b64f;--bad:#ff8a80;--info:#74c0ea;--ok-bg:#16301f;--warn-bg:#33290f;--bad-bg:#3a1a18;--info-bg:#132b3a;--muted-bg:#212d38;
  --side:#131f2b;--side2:#1b2a39;--side-ink:#c9d3dd;--side-dim:#7f90a1;--side-on:rgba(255,255,255,.09);--side-mark:#7fb0ff;
  --sh1:none;--sh2:0 8px 24px rgba(0,0,0,.5);color-scheme:dark;
}
*{box-sizing:border-box}
html{font-size:14px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--fs);line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-underline-offset:2px}a:hover{color:var(--accent-h)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--surface);padding:8px 12px;z-index:99;border-radius:var(--r-sm);box-shadow:var(--sh2)}
.ico{flex:none;display:block}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
h1{font-size:var(--fs-xl);line-height:1.25;margin:0 0 4px;font-weight:650;letter-spacing:-.012em}
h2{font-size:var(--fs);margin:0;font-weight:600;letter-spacing:-.003em}
.sub{color:var(--ink2);margin:0 0 var(--sp4)}

/* ───────── Estructura: menú lateral + barra superior ───────── */
.shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.navtoggle{position:absolute;opacity:0;pointer-events:none}
.scrim{display:none}
.side{background:var(--side);color:var(--side-ink);padding:14px 10px 16px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--side2) transparent}
.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 14px;margin-bottom:4px;border-bottom:1px solid var(--side2);color:#fff;text-decoration:none}
.brand:hover{color:#fff}
.brand b{font-size:15px;letter-spacing:.1px;font-weight:650;display:block;line-height:1.2}
.brand small{display:block;color:var(--side-dim);font-size:var(--fs-xs);line-height:1.3;margin-top:1px}
.logo{width:32px;height:32px;border-radius:9px;background:linear-gradient(180deg,#1479a1,#0d6e92);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18);display:grid;place-items:center;font-weight:700;color:#fff;font-size:15px;flex:none}
.nav h3{font-size:10.5px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--side-dim);margin:16px 10px 5px}
.nav h3:first-child{margin-top:6px}
.nav a{position:relative;display:flex;align-items:center;gap:10px;color:var(--side-ink);text-decoration:none;padding:7px 10px;border-radius:var(--r-sm);font-size:13.5px;line-height:1.3;transition:background .12s,color .12s}
.nav a .ico{width:17px;height:17px;color:var(--side-dim);transition:color .12s}
.nav a .lbl{flex:1;min-width:0}
.nav a:hover{background:var(--side-on);color:#fff}.nav a:hover .ico{color:#dbe5ee}
.nav a[aria-current=page]{background:var(--side-on);color:#fff;font-weight:600}
.nav a[aria-current=page]::before{content:"";position:absolute;left:-10px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--side-mark)}
.nav a[aria-current=page] .ico{color:var(--side-mark)}
.nav a:focus-visible{outline-color:var(--side-mark)}
.nav .count{background:var(--accent);color:#fff;border-radius:10px;font-size:11px;font-weight:600;padding:0 7px;line-height:18px;min-width:20px;text-align:center}
.nav .soon{font-size:10px;color:#e6c06a;border:1px solid rgba(230,192,106,.4);border-radius:8px;padding:0 6px;line-height:16px;white-space:nowrap}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;gap:12px;align-items:center;padding:10px 24px;background:rgba(255,255,255,.92);backdrop-filter:saturate(1.4) blur(6px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
:root[data-theme=dark] .top{background:rgba(22,32,42,.92)}
.burger{display:none;cursor:pointer;padding:7px;border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);background:var(--surface)}
.top form.search{flex:1;max-width:560px;display:flex;gap:8px;position:relative;align-items:center}
.top form.search>.ico{position:absolute;left:11px;color:var(--ink3);pointer-events:none;width:16px;height:16px}
.top input[type=search]{flex:1;padding:8px 10px 8px 34px;background:var(--bg);border-color:transparent}
.top input[type=search]:hover{border-color:var(--line2)}.top input[type=search]:focus{background:var(--surface)}
.top .right{margin-left:auto;display:flex;gap:8px;align-items:center}
details.menu{position:relative}details.menu>summary{list-style:none;cursor:pointer}
details.menu>summary::-webkit-details-marker{display:none}
details.menu .pop{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-width:240px;padding:6px;box-shadow:var(--sh2);z-index:10}
details.menu .pop a,details.menu .pop button{display:flex;align-items:center;gap:9px;width:100%;text-align:left;padding:8px 10px;border:0;background:none;color:var(--ink);text-decoration:none;border-radius:var(--r-sm);font:inherit;cursor:pointer}
details.menu .pop a:hover,details.menu .pop button:hover{background:var(--hover)}
details.menu .pop .ico{color:var(--ink3);width:16px;height:16px}
details.menu .pop hr{border:0;border-top:1px solid var(--line);margin:6px 0}
.pop .who{padding:8px 10px 6px}.pop .who b{display:block}.pop .who span{color:var(--ink2);font-size:var(--fs-sm);word-break:break-all}
.pop .who .badge{margin-top:6px}
.iconbtn{position:relative;padding:7px 8px}
.iconbtn .badge{position:absolute;top:-6px;right:-6px;padding:0 6px;line-height:17px;font-size:11px;border:2px solid var(--surface)}
.userbtn{padding:4px 10px 4px 5px;gap:8px}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:11.5px;font-weight:700;border:1px solid var(--accent-line)}
.userbtn .uname{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.adminchip{font-size:10.5px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:10px;padding:0 7px;line-height:17px}
.content{padding:24px 28px 56px;max-width:1360px;width:100%}

/* ───────── Botones y campos ───────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line2);background:var(--surface);color:var(--ink);padding:7px 13px;border-radius:var(--r-sm);font:inherit;font-weight:500;text-decoration:none;cursor:pointer;line-height:1.25;box-shadow:var(--sh1);transition:background .12s,border-color .12s}
.btn:hover{background:var(--hover);color:var(--ink)}
.btn .ico{width:16px;height:16px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);box-shadow:none}
.btn.primary:hover{background:var(--accent-h);border-color:var(--accent-h);color:var(--accent-ink)}
.btn.danger{color:var(--bad);border-color:#e8bdb9}.btn.danger:hover{background:var(--bad-bg)}
.btn.small{padding:3px 9px;font-size:var(--fs-sm)}
.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--accent)}.btn.ghost:hover{background:var(--accent-soft)}
input[type=text],input[type=search],input[type=password],input[type=email],input[type=date],select,textarea{font:inherit;padding:7px 10px;border:1px solid var(--field);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);width:100%;transition:border-color .12s,box-shadow .12s}
input:hover,select:hover,textarea:hover{border-color:var(--ink3)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
::placeholder{color:var(--ink3)}
.top input[type=search]{width:auto}

/* ───────── Tarjetas, encabezados de sección, tablas ───────── */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:var(--sp4);box-shadow:var(--sh1);overflow:hidden}
.panel>header{display:flex;justify-content:space-between;align-items:center;gap:var(--sp3);padding:12px 16px;border-bottom:1px solid var(--line)}
.panel>header h2{display:flex;align-items:center;gap:8px}
.panel>header h2 .count,.count-pill{background:var(--muted-bg);color:var(--ink2);border-radius:10px;font-size:var(--fs-xs);font-weight:600;padding:0 8px;line-height:19px}
.panel .pad{padding:14px 16px}
table{border-collapse:collapse;width:100%}
th,td{text-align:left;padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:var(--fs-xs);color:var(--ink2);font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:var(--surface2);white-space:nowrap}
tbody tr{transition:background .1s}tbody tr:hover{background:var(--surface2)}
tr:last-child td{border-bottom:0}
td a{font-weight:500;text-decoration:none}td a:hover{text-decoration:underline}
.tablewrap{overflow-x:auto}
.mono{font-family:var(--mono);font-size:12px;color:var(--ink2);white-space:nowrap}
td.mono{letter-spacing:.01em}
.badge{display:inline-flex;align-items:center;gap:6px;padding:1px 9px;border-radius:10px;font-size:var(--fs-sm);font-weight:500;white-space:nowrap;line-height:1.55}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8;flex:none}
.badge.count-badge::before,.iconbtn .badge::before,.pop .badge.plain::before{display:none}
.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}
.badge.info{background:var(--info-bg);color:var(--info)}.badge.muted{background:var(--muted-bg);color:var(--ink2)}
.prio.urgente{color:var(--bad);font-weight:600}.prio.alta{color:var(--warn);font-weight:600}.prio.baja{color:var(--ink2)}
.late{color:var(--bad);font-weight:600}.muted-text{color:var(--ink2)}
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:26px 16px;margin:0;color:var(--ink2)}
.empty p{margin:0;color:var(--ink);font-weight:500}.empty small{color:var(--ink2);max-width:360px}
.empty-ico{width:40px;height:40px;border-radius:50%;background:var(--muted-bg);color:var(--ink3);display:grid;place-items:center;margin-bottom:4px}
.empty-ico .ico{width:20px;height:20px}
p.empty{display:block;text-align:left;padding:14px 16px;color:var(--ink2)}
.filters{display:flex;flex-wrap:wrap;gap:var(--sp2);align-items:end;padding:12px 16px;border-bottom:1px solid var(--line);background:var(--surface2)}
.filters label{display:block;font-size:var(--fs-sm);color:var(--ink2);margin-bottom:2px}.filters>div{min-width:130px}
.pager{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;color:var(--ink2);border-top:1px solid var(--line);font-size:var(--fs-sm)}
.pg{padding:3px 10px;border:1px solid var(--line2);border-radius:var(--r-sm);text-decoration:none;margin-left:4px;background:var(--surface)}.pg:hover{background:var(--hover)}.pg.off{color:var(--ink3);background:transparent}
.field{margin-bottom:var(--sp3)}.field label{display:block;font-weight:600;margin-bottom:4px}.hint{color:var(--ink2);display:block;margin-top:3px;font-size:var(--fs-sm)}
.has-error input,.has-error textarea,.has-error select{border-color:var(--bad)}.err{color:var(--bad);display:block;margin-top:3px;font-size:var(--fs-sm)}
.form{max-width:700px}.row{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp3)}
.flash{padding:10px 14px;border-radius:var(--r);margin-bottom:var(--sp3);border:1px solid}
.flash.ok{background:var(--ok-bg);border-color:#a9d6bb;color:var(--ok)}.flash.error{background:var(--bad-bg);border-color:#e8bdb9;color:var(--bad)}
.kv{display:grid;grid-template-columns:160px 1fr;gap:6px 14px;margin:0}.kv dt{color:var(--ink2)}.kv dd{margin:0}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{padding:10px 16px;border-bottom:1px solid var(--line);display:flex;gap:12px}
.timeline li:last-child{border-bottom:0}.timeline time{color:var(--ink2);min-width:112px;font-size:var(--fs-sm);white-space:nowrap}
.comment{padding:10px 16px;border-bottom:1px solid var(--line)}.comment small{color:var(--ink2)}.comment p{margin:3px 0 0;white-space:pre-wrap}
.actions{display:flex;gap:var(--sp2);flex-wrap:wrap;align-items:flex-start}
.actionbox{border:1px solid var(--line);border-radius:var(--r);padding:12px;margin:0 16px 14px;background:var(--surface2)}
.matrix td,.matrix th{text-align:center}.matrix td:first-child,.matrix th:first-child{text-align:left}
.notice{background:var(--warn-bg);border:1px solid #ecd49a;color:var(--warn);padding:10px 14px;border-radius:var(--r);margin-bottom:var(--sp3)}
.demo{background:#efe7ff;color:#4b2e8a;border-radius:4px;font-size:11px;padding:0 6px;margin-left:4px}

/* ───────── Acceso ───────── */
.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:radial-gradient(1200px 500px at 50% -10%,var(--accent-soft),transparent 70%),var(--bg)}
.logincard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px;width:100%;max-width:400px;box-shadow:var(--sh2)}
.logincard .brand{color:var(--ink);padding:0 0 14px;border-bottom:1px solid var(--line);margin:0}
.logincard .brand small{color:var(--ink2)}
.logincard h1{margin-top:16px}

/* ───────── Centro de Operaciones ───────── */
.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp4);flex-wrap:wrap;margin-bottom:var(--sp4)}
.pagehead h1{margin:0}.pagehead .sub{margin:2px 0 0}
.pagehead .chips{margin-left:auto}
.chips{display:flex;gap:var(--sp2);flex-wrap:wrap}
.hero{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;margin-bottom:var(--sp4)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:var(--sp3);margin-bottom:var(--sp4)}
.kpi{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;text-decoration:none;color:var(--ink);box-shadow:var(--sh1);transition:border-color .12s,box-shadow .12s}
.kpi:hover{border-color:var(--accent-line);box-shadow:0 2px 8px rgba(16,24,40,.08);color:var(--ink)}
.kpi .kico{grid-row:1/3;width:38px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}
.kpi b{font-size:26px;line-height:1.05;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi span.kl{color:var(--ink2);font-size:var(--fs-sm);line-height:1.3}
.kpi .flag{grid-column:1/-1;margin-top:8px;font-size:var(--fs-xs);font-weight:600;color:var(--bad)}
.kpi.alert{border-color:#efc3bf;background:linear-gradient(0deg,var(--surface),var(--surface))}
.kpi.alert .kico{background:var(--bad-bg);color:var(--bad)}.kpi.alert b{color:var(--bad)}
.kpi.attn .kico{background:var(--warn-bg);color:var(--warn)}
.ops{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--sp4);align-items:start}
.ops>div{min-width:0}
.panel.lead{border-color:var(--accent-line);box-shadow:0 1px 3px rgba(13,110,146,.08)}
.panel.lead>header{background:linear-gradient(0deg,var(--surface),var(--accent-soft));}
.panel.quiet{box-shadow:none}
.timeline.compact li{padding:9px 16px}
.feed li{gap:10px;align-items:flex-start}
.feed .dot{width:8px;height:8px;border-radius:50%;background:var(--accent-line);margin-top:7px;flex:none}
.feed .dot.new{background:var(--accent)}
.feed time{min-width:0;display:block;font-size:var(--fs-xs)}
.modgrid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp2);padding:12px}
.modtile{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:var(--r);text-decoration:none;color:var(--ink);background:var(--surface);min-width:0}
.modtile:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--ink)}
.modtile .mico{width:30px;height:30px;border-radius:8px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;flex:none}
.modtile b{display:block;font-weight:600;line-height:1.25;font-size:13px}.modtile small{color:var(--ink2);display:block;line-height:1.25;font-size:var(--fs-xs)}

/* ───────── Portal Talento Humano ───────── */
.subnav{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:0 0 var(--sp4)}
.subnav a{padding:8px 14px;text-decoration:none;color:var(--ink2);border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:6px 6px 0 0;font-weight:500}
.subnav a:hover{background:var(--hover);color:var(--ink)}.subnav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.subnav.minor{margin-top:-6px}.subnav.minor a{font-size:13px;padding:6px 12px}
.tabbar{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 var(--sp3)}
.tabbar a{padding:4px 12px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink2);background:var(--surface);font-size:var(--fs-sm)}
.tabbar a:hover{background:var(--hover);color:var(--ink)}
.tabbar a[aria-current=page]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp3);margin-bottom:var(--sp4)}
.card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;text-decoration:none;color:var(--ink);box-shadow:var(--sh1);transition:border-color .12s,box-shadow .12s}
.card:hover{border-color:var(--accent-line);box-shadow:0 2px 8px rgba(16,24,40,.08);color:var(--ink)}.card b{display:block;font-size:15px;margin-bottom:3px}.card span{color:var(--ink2);font-size:var(--fs-sm)}
.card .num{display:inline-block;background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:0 7px;font-size:var(--fs-sm);font-weight:700;margin-right:6px}
.compact th,.compact td{padding:6px 12px;font-size:13px}
.sortlink{color:inherit;text-decoration:none}.sortlink:hover{text-decoration:underline}
.idmask{font-family:var(--mono);letter-spacing:.5px}
details.add{margin:0 16px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface2)}
details.add>summary{cursor:pointer;padding:9px 13px;font-weight:600;color:var(--accent)}
details.add>.pad{border-top:1px solid var(--line)}
.row3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp3)}.row4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp3)}
.small-text{font-size:var(--fs-sm)}.pre{white-space:pre-wrap}
.flagrow{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}
.sensitive{border-left:3px solid var(--warn);padding-left:10px}
.cols2{columns:2;column-gap:20px}
.bar{display:inline-block;height:8px;background:var(--accent);border-radius:4px;vertical-align:middle}
.inline{display:inline}
.mb{margin-bottom:10px}.idmask.big{font-size:18px}.filters .grow{min-width:220px}.filters .selfc{align-self:center}.form.panel{max-width:860px}
.pad.tight{padding:6px 8px}.sub.flush{margin:0}.ml-auto{margin-left:auto}.rolerow{display:flex;gap:8px;align-items:center;margin-bottom:6px}.grow1{flex:1}.selfc{align-self:center}

/* ───────── Adaptación a tableta y móvil ───────── */
@media(max-width:1180px){.ops{grid-template-columns:minmax(0,1fr)}.content{padding:20px 20px 48px}}
@media(max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .burger{display:inline-flex}
  .side{position:fixed;inset:0 auto 0 0;width:min(86vw,300px);height:100%;z-index:30;transform:translateX(-102%);visibility:hidden;transition:transform .18s ease,visibility 0s .18s;box-shadow:var(--sh2)}
  .navtoggle:checked~.shell .side{transform:none;visibility:visible;transition:transform .18s ease}
  .navtoggle:focus-visible~.shell .burger{outline:2px solid var(--accent);outline-offset:2px}
  .scrim{position:fixed;inset:0;background:rgba(10,18,26,.45);z-index:25}
  .navtoggle:checked~.shell .scrim{display:block}
  .top{padding:8px 12px;gap:8px}
  .top form.search{min-width:0}.top form.search input[type=search]{min-width:0;width:100%}.top .right{flex:none}
  .top form.search .btn{display:none}
  .userbtn .uname,.userbtn .ico{display:none}.userbtn{padding:4px}
  .top .right .qa-label{display:none}
  .grid2,.row,.row3,.row4{grid-template-columns:1fr}.cols2{columns:1}
  .content{padding:16px 14px 40px}
  h1{font-size:20px}
  .kpis{grid-template-columns:1fr 1fr}.kpi{padding:12px}.kpi b{font-size:22px}
  .kv{grid-template-columns:1fr;gap:0}.kv dt{margin-top:8px}
  th,td{padding:8px 10px}
  .modgrid{grid-template-columns:1fr}
}
@media(max-width:520px){.kpi{grid-template-columns:1fr;row-gap:6px}.kpi .kico{grid-row:auto;width:30px;height:30px}.kpi .kico .ico{width:16px;height:16px}.pagehead .chips{margin-left:0;width:100%}.pagehead .chips .btn{flex:1}}
@media(max-width:340px){.kpis{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{.side,.top{display:none}.shell{display:block}.content{padding:0}}
.feed a{text-decoration:none;font-weight:500}.feed a:hover{text-decoration:underline}

/* ───────── Talento Humano: personas, expediente, fichas ───────── */
.pav{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:50%;font-size:13px;font-weight:650;letter-spacing:.02em;flex:none;border:1px solid transparent}
.pav.sm{width:28px;height:28px;font-size:11.5px}.pav.lg{width:76px;height:76px;font-size:26px;border-width:2px}
.av-0{background:#e3f1f7;color:#0b5a85;border-color:#bfdceb}.av-1{background:#e6f4ec;color:#17703f;border-color:#bfe0cc}.av-2{background:#fdf1d8;color:#8f5a00;border-color:#f0d9a0}
.av-3{background:#f1e8fb;color:#5b2f9a;border-color:#dac8f0}.av-4{background:#fce9ec;color:#a02640;border-color:#f0c4cd}.av-5{background:#e7ecfb;color:#2f4ca0;border-color:#c5d0f0}
.av-6{background:#eaf4e0;color:#4a7413;border-color:#cde3b3}.av-7{background:#f3ece4;color:#7a4a1e;border-color:#e1d0bc}
table.people th,table.people td{padding:10px 14px;vertical-align:middle}
.person{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}
.person:hover{text-decoration:none}.person:hover b{color:var(--accent)}
.person b{font-weight:600;display:inline}.person small,.stack small{display:block;color:var(--ink2);font-size:var(--fs-sm);font-family:var(--font)}
.stack{display:block}.stack b{font-weight:500;display:block}
.tightrow{margin:0;gap:4px}
.filters .grow{flex:1 1 280px}
.profile{display:flex;gap:20px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 22px;margin-bottom:var(--sp4);box-shadow:var(--sh1)}
.pinfo{flex:1;min-width:0}.pinfo h1{margin:0;font-size:24px}.pinfo .role{margin:2px 0 10px;color:var(--ink2);font-size:var(--fs-lg)}.pinfo .sep{color:var(--ink3)}
.chipline{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.chip{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--surface2);color:var(--ink2);border-radius:14px;padding:1px 10px;font-size:var(--fs-sm);line-height:1.6;text-decoration:none}
.chip.link{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.chip.link:hover{text-decoration:underline}
.pact{display:flex;flex-direction:column;gap:8px;align-self:flex-start}
.split{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:var(--sp4);align-items:start}.split>div{min-width:0}
.tabbar{display:flex;flex-wrap:nowrap;gap:2px;overflow-x:auto;margin:0 0 var(--sp4);border-bottom:1px solid var(--line);scrollbar-width:thin}
.tabbar a{flex:none;padding:9px 14px;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;border-radius:6px 6px 0 0;background:transparent;color:var(--ink2);font-size:13.5px;font-weight:500;white-space:nowrap}
.tabbar a:hover{background:var(--hover);color:var(--ink)}
.tabbar a[aria-current=page]{background:transparent;color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.kv{gap:0 18px}
.kv dt,.kv dd{padding:9px 0;border-bottom:1px solid var(--line)}
.kv dt{color:var(--ink2);font-size:var(--fs-sm);padding-top:11px}
.kv dt:nth-last-of-type(1),.kv dd:last-of-type{border-bottom:0}
@media(max-width:900px){.profile{flex-wrap:wrap;padding:16px}.pact{flex-direction:row;width:100%}.pav.lg{width:60px;height:60px;font-size:21px}.split{grid-template-columns:1fr}.pinfo h1{font-size:20px}}
/* ajustes de pulido */
.tabbar{flex-wrap:wrap;overflow:visible;gap:6px;border-bottom:0;margin-bottom:var(--sp4)}
.tabbar a{border:1px solid var(--line);border-radius:16px;margin-bottom:0;padding:5px 13px;background:var(--surface);font-size:var(--fs-sm)}
.tabbar a:hover{background:var(--hover)}
.tabbar a[aria-current=page]{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent);border-bottom-color:var(--accent-line);font-weight:600}
.kv dt,.kv dd{padding:7px 0}.kv dt{padding-top:9px}
.filters .selfc{align-self:end;padding-bottom:9px}.filters>.btn{align-self:end}
.pact .btn{justify-content:flex-start}
@media(min-width:1100px){.kv.two{grid-template-columns:minmax(110px,160px) 1fr minmax(110px,160px) 1fr;column-gap:24px}.split .kv.two{grid-template-columns:150px 1fr}}
@media(max-width:900px){.subnav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.subnav a{flex:none;white-space:nowrap}}

/* Adjuntos y fotos */
.pav{overflow:hidden}.pav img{width:100%;height:100%;object-fit:cover;display:block}
.photoblock{display:flex;gap:16px;align-items:center}.photoblock>div{flex:1;min-width:0}
.attlist{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}
.attlist li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface)}
.attlist li a{font-weight:550;overflow-wrap:anywhere}.attlist small{color:var(--muted)}.attico{display:inline-grid;color:var(--muted)}.attico svg{width:16px;height:16px}
.attlist form.inline{margin-left:auto}
.attach-fields{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:start}.attach-fields .or{align-self:center;color:var(--muted);font-size:12px;padding-top:6px}
input[type=file]{font:inherit;width:100%;padding:6px;border:1px dashed var(--field);border-radius:var(--r-sm);background:var(--bg)}
.subh{font-size:13px;margin:0 0 8px}
@media(max-width:700px){.attach-fields{grid-template-columns:1fr}.attach-fields .or{padding:0}.photoblock{flex-wrap:wrap}}
.tablewrap .attach-fields,.attlist .attach-fields{grid-template-columns:1fr}.tablewrap .attach-fields .or{padding:0}

/* ═══════════ UI-3 · estructura con barra superior de marca, menú claro y portada tipo SaaS ═══════════ */
.shell{grid-template-columns:260px minmax(0,1fr);grid-template-rows:auto 1fr;min-height:100vh}
.top{grid-column:1/-1;grid-row:1;position:sticky;top:0;z-index:20;padding:0 24px 0 0;height:64px;gap:16px;background:var(--surface);backdrop-filter:none}
.top .brand{display:flex;align-items:center;gap:10px;width:260px;flex:none;padding:0 20px;height:100%;border:0;margin:0;color:var(--ink);text-decoration:none}
.top .brand::after{content:"";margin-left:8px;height:28px;border-right:1px solid var(--line)}
.bmark{width:auto;height:38px;flex:none;display:block;object-fit:contain}
.bname{font-size:21px;font-weight:700;letter-spacing:-.02em;color:var(--accent);line-height:1}.bname b{font-weight:700;color:var(--ink)}
.top .brand:hover{color:var(--ink)}
.top form.search{max-width:640px}
.top input[type=search]{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px 10px 38px}
.top .right{gap:12px}
.top .btn.primary{padding:9px 14px;border-radius:10px;font-weight:600}
.top .btn.primary .ico:last-child{width:14px;height:14px}
.iconbtn{border:0;background:transparent;box-shadow:none;padding:9px}.iconbtn:hover{background:var(--hover)}
.iconbtn .badge{background:#e5484d;color:#fff;border-color:var(--surface);top:-2px;right:-2px;border-radius:10px;font-size:10.5px;line-height:15px;padding:0 5px}
.userbtn{border:0;box-shadow:none;background:transparent;padding:4px 6px;gap:10px}.userbtn:hover{background:var(--hover)}
.userbtn .avatar{width:38px;height:38px;background:var(--accent);color:#fff;border:0;font-size:13px}
.userbtn .uwho{display:flex;flex-direction:column;text-align:left;line-height:1.2}.userbtn .uwho small{color:var(--ink2);font-size:12px}.userbtn .uname{font-weight:650;max-width:150px}
.side{grid-column:1;grid-row:2;top:64px;height:calc(100vh - 64px);padding:14px 14px 12px;background:var(--side);border-right:1px solid var(--side2);gap:2px}
.nav h3{color:var(--side-dim);margin:18px 10px 6px;font-size:11px}.nav h3:first-child{margin-top:4px}
.nav a{padding:9px 12px;border-radius:10px;font-weight:500;color:var(--side-ink)}
.nav a .ico{color:#6b7a90;width:18px;height:18px}
.nav a:hover{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(16,24,40,.06)}.nav a:hover .ico{color:var(--accent)}
.nav a[aria-current=page]{background:var(--accent);color:#fff;font-weight:600;box-shadow:0 2px 6px rgba(26,95,208,.3)}
.nav a[aria-current=page]::before{display:none}.nav a[aria-current=page] .ico{color:#fff}
.nav .count{background:var(--accent);color:#fff;font-size:11.5px}.nav a[aria-current=page] .count{background:#fff;color:var(--accent)}
.nav .soon{color:#8a6a1c;border-color:#e3cf9a;background:#fff8e6}
.sidefoot{margin:auto 0 0;padding:12px 10px 0;font-size:11.5px;color:var(--side-dim);border-top:1px solid var(--side2)}
:root[data-theme=dark] .top{background:var(--surface)}:root[data-theme=dark] .nav a:hover{background:var(--side-on);color:#fff}
.main{grid-column:2;grid-row:2}
.content{padding:20px 28px 56px;max-width:1480px}
.panel{border-radius:var(--r-lg);box-shadow:0 1px 3px rgba(16,24,40,.05)}
.btn{border-radius:var(--r-sm)}
.logincard .brand{display:flex;gap:10px;align-items:center;padding:0 0 16px}.logincard .brand .bname{font-size:24px}.logincard .bmark{width:auto;height:46px}

/* Portada */
.hero{position:relative;overflow:hidden;display:flex;align-items:stretch;gap:16px;min-height:168px;border:1px solid var(--line);border-radius:var(--r-lg);background:linear-gradient(100deg,#fff 0%,#f4f8ff 45%,#dfeafc 100%);margin-bottom:16px}
.hero-text{position:relative;z-index:2;padding:24px 28px;max-width:640px;display:flex;flex-direction:column;justify-content:center}
.eyebrow{margin:0 0 6px;font-size:12px;font-weight:700;letter-spacing:.14em;color:var(--accent)}
.hero h1{font-size:28px;margin:0 0 6px;letter-spacing:-.02em}.hero .sub{margin:0 0 14px;max-width:520px}
.hero .chips{margin-top:2px}
.hero-art{position:absolute;right:0;bottom:0;height:100%;width:62%;max-width:700px;z-index:1;pointer-events:none}
.hero-claim{position:absolute;z-index:2;right:28px;top:22px;margin:0;text-align:right;font-size:18px;line-height:1.25;color:var(--ink);font-weight:500;padding-right:0}.hero-claim b{color:var(--accent);font-weight:650}
.kpis{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:20px}
.kpi{grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;padding:18px 18px 14px;border-radius:var(--r-lg);box-shadow:0 1px 3px rgba(16,24,40,.05);column-gap:14px}
.kpi .kico{grid-row:1/3;width:52px;height:52px;border-radius:14px}.kpi .kico .ico{width:26px;height:26px}
.kpi b{font-size:32px}.kpi span.kl{font-size:13.5px;color:var(--ink);line-height:1.25;align-self:start}
.kpi .kstat{grid-column:1/-1;margin-top:12px;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600}.kstat .ico{width:14px;height:14px}
.kstat.ok{color:var(--ok)}.kstat.warn{color:#c26a00}.kstat.bad{color:var(--bad)}.kstat.info{color:var(--accent)}
.kpi .kgo{position:absolute;right:14px;bottom:12px;color:var(--ink3)}.kpi .kgo .ico{width:15px;height:15px}
.k-blue .kico{background:#e3eeff;color:#1a5fd0}.k-violet .kico{background:#efe7fd;color:#7a3fd1}.k-teal .kico{background:#dff5ef;color:#0f8a6d}.k-slate .kico{background:#e7ebf2;color:#5b6b82}.k-indigo .kico{background:#e4e9ff;color:#3a4fd6}
.kpi.alert{border-color:#f0c4c1}.kpi.alert .kico{background:var(--bad-bg);color:var(--bad)}.kpi.alert b{color:var(--ink)}
.kpi.attn .kico{background:var(--warn-bg);color:#c26a00}
.sech{display:flex;align-items:center;gap:8px;font-size:16px;margin:0 0 12px}.sech .ico{width:18px;height:18px;color:var(--accent)}
.modsec{margin-bottom:20px}
.modcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.mcard{position:relative;display:grid;grid-template-columns:auto 1fr;column-gap:10px;row-gap:4px;align-items:center;padding:16px 16px 14px;border:1px solid var(--line);border-top:3px solid var(--mc,var(--accent));border-radius:var(--r-lg);background:var(--surface);text-decoration:none;color:var(--ink);box-shadow:0 1px 3px rgba(16,24,40,.05);transition:box-shadow .15s,transform .15s}
.mcard:hover{box-shadow:0 6px 18px rgba(16,24,40,.1);transform:translateY(-1px);color:var(--ink)}
.mcard .mico{width:42px;height:42px;border-radius:12px;background:var(--mb,var(--accent-soft));color:var(--mc,var(--accent));display:grid;place-items:center}.mcard .mico .ico{width:22px;height:22px}
.mcard .mnum{font-size:18px;font-weight:650;color:var(--mc,var(--accent));opacity:.75;justify-self:start}
.mcard b{grid-column:1/-1;font-size:15px;line-height:1.25;margin-top:6px}.mcard small{grid-column:1/-1;color:var(--ink2);font-size:12.5px;padding-right:34px}
.mcard .mgo{position:absolute;right:14px;bottom:14px;width:28px;height:28px;border-radius:50%;background:var(--mb,var(--accent-soft));color:var(--mc,var(--accent));display:grid;place-items:center}.mcard .mgo .ico{width:15px;height:15px}
.m-blue{--mc:#1a5fd0;--mb:#e3eeff}.m-violet{--mc:#7a3fd1;--mb:#efe7fd}.m-teal{--mc:#0f8a6d;--mb:#dff5ef}.m-amber{--mc:#d9780a;--mb:#fdeed9}.m-indigo{--mc:#3a4fd6;--mb:#e4e9ff}
.quicksec{margin-bottom:20px}
.qgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.qtile{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 10px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);text-decoration:none;color:var(--ink);font-size:13px;font-weight:500;text-align:center;box-shadow:0 1px 3px rgba(16,24,40,.05)}
.qtile:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--ink)}
.qico{position:relative;width:42px;height:42px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}.qico .ico{width:21px;height:21px}
.qn{position:absolute;top:-6px;right:-8px;background:var(--accent);color:#fff;border-radius:10px;font-size:11px;font-weight:600;line-height:17px;min-width:19px;padding:0 5px}
.ops{grid-template-columns:minmax(0,1fr) 380px}

@media(max-width:1100px){.hero-claim{display:none}}
@media(max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}
  .top{padding:0 12px 0 8px;height:56px;gap:8px}
  .top .brand{width:auto;padding:0 4px;gap:8px}.top .brand::after{display:none}.bname{font-size:18px}.bmark{width:auto;height:34px}
  .side{top:0;height:100%;grid-row:auto}
  .main{grid-column:1;grid-row:2}
  .hero{min-height:0}.hero-text{padding:18px}.hero h1{font-size:22px}.hero-art{opacity:.35;width:100%}
  .top .right .qa-label,.top .right .btn.primary .ico:last-child{display:none}
  .userbtn .uwho{display:none}
}
@media(max-width:560px){.top .brand .bname{display:none}}
.bname,.bname b{white-space:nowrap}.bname b{display:inline}
.hero{min-height:190px}.hero-art{height:62%;width:58%}
.top .brand .bname b,.logincard .bname b{font-size:inherit;font-weight:700;color:var(--ink);display:inline;line-height:inherit}
@media(max-width:1180px){.ops{grid-template-columns:minmax(0,1fr)}}
/* Banner con fotografía */
.hero{background:linear-gradient(90deg,#fff 0%,#fff 34%,rgba(255,255,255,.55) 52%,rgba(255,255,255,0) 70%),url(/static/hero-banner.jpg) right center/auto 100% no-repeat,#d4eafc;min-height:190px}
.hero-claim{text-shadow:0 0 12px rgba(255,255,255,.9)}
@media(max-width:900px){.hero{background:linear-gradient(90deg,rgba(255,255,255,.95),rgba(255,255,255,.7)),url(/static/hero-banner.jpg) right center/auto 100% no-repeat,#d4eafc}}

/* Configuración del superadmin */
.subnav{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 16px;border-bottom:1px solid var(--line);padding-bottom:0}
.subnav a{padding:8px 14px;border-radius:8px 8px 0 0;text-decoration:none;color:var(--ink2);font-weight:500;font-size:14px;border-bottom:2px solid transparent;margin-bottom:-1px}
.subnav a:hover{color:var(--ink);background:var(--surface2)}.subnav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}
.cfgrow{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:end}.cfgrow label{display:block;font-size:12.5px;color:var(--ink2)}.cfgrow select{display:block;margin-top:2px;min-width:150px}
.cfgrow .chk{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--ink)}
.bannerprev{display:block;max-width:100%;width:760px;height:auto;max-height:260px;object-fit:cover;object-position:right center;border-radius:var(--r-lg);border:1px solid var(--line);background:#d4eafc}
.vlabel{display:block;margin-bottom:4px;font-size:13px;color:var(--ink)}
.stepfields{border-top:1px dashed var(--line);margin-top:8px;padding-top:8px}.subh{font-size:14px;margin:10px 0 6px}
.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}.hero-actions .btn{display:inline-flex;align-items:center;gap:6px}.hero-actions .ico{width:16px;height:16px}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tablewrap td a.mono{word-break:break-all;display:inline-block;max-width:150px}
.linkfile{display:grid;gap:6px}.linkfile .or{font-size:12px;color:var(--muted)}.linkfile input[type=file]{padding:8px;border:1px dashed var(--line,#cbd5e1);border-radius:10px;background:var(--surface-2,#f8fafc);font-size:13px}
.kindpick,.audience{border:1px solid var(--line,#e2e8f0);border-radius:12px;padding:12px 14px;margin:0 0 16px}.kindpick legend,.audience legend{font-weight:600;padding:0 6px}
.kindpick{display:grid;gap:8px}.choice{display:flex;gap:10px;align-items:flex-start;cursor:pointer}.choice small{display:block;color:var(--muted)}
.picklist{max-height:260px;overflow:auto;border:1px solid var(--line,#e2e8f0);border-radius:10px;padding:8px 12px;display:grid;gap:4px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.picklist.small{max-height:150px}
.check{display:flex;gap:8px;align-items:center;font-weight:400}
.ainotice{border:1px solid #c7d2fe;background:#eef2ff;color:#312e81;border-radius:12px;padding:10px 14px;margin:0 0 14px}.ainotice.warn{border-color:#fcd34d;background:#fffbeb;color:#78350f}.ainotice ul{margin:6px 0 0 18px;padding:0}
.btn.ai{border-color:#a5b4fc;color:#3730a3;background:#eef2ff}.aisug{border-left:3px solid #818cf8;padding:4px 12px;margin:0 0 12px}
.askbox{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 16px}.askbox input[type=search]{flex:1 1 320px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:12px;font-size:15px;background:var(--surface)}.askbox.compact{margin:12px 0 10px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.actgroup{margin:0 0 22px}.actgrid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.actcard{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);text-decoration:none;color:var(--ink);box-shadow:0 1px 3px rgba(16,24,40,.05)}
.actcard:hover{border-color:var(--accent-line);background:var(--accent-soft);color:var(--ink)}.acttxt{flex:1;min-width:0}.acttxt b{display:block;font-size:14.5px}.acttxt small{display:block;color:var(--muted);margin-top:3px;line-height:1.35}
.actico{flex:none;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:#eaf1ff;color:#1d4ed8}.actico svg{width:20px;height:20px}.actico.a1{background:#f3e8ff;color:#7e22ce}.actico.a2{background:#dcfce7;color:#15803d}.actico.a3{background:#fef3c7;color:#b45309}.actico.a4{background:#e0e7ff;color:#4338ca}.actgo{color:var(--muted);align-self:center}.actgo svg{width:16px;height:16px}
.actsec{margin:0 0 8px}

/* Lista de accesos rápidos mientras se escribe */
.askbox{position:relative}
.qpop{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:60;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.18);padding:6px;max-height:70vh;overflow:auto;text-align:left}
.top form.search .qpop{min-width:min(460px,92vw)}
.qpop[hidden]{display:none}
.qhead{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink3);padding:6px 10px 4px}
.qempty{padding:10px;color:var(--ink3);font-size:14px}
.qitem{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border-radius:8px;text-decoration:none;color:inherit}
.qitem b{font-size:14px}.qitem small{font-size:12.5px;color:var(--ink3);line-height:1.35}
.qitem:hover,.qitem.on{background:var(--brand-soft,#e8f0fe)}
.qfoot{border-top:1px solid var(--line);border-radius:0 0 8px 8px;margin-top:4px}

/* Chat interno, MetalOS IA y comunicados */
.chatshell{display:grid;grid-template-columns:320px 1fr;gap:0;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);height:calc(100vh - 150px);min-height:480px;overflow:hidden}
.chatlist{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--surface2)}
.chatlist ul{list-style:none;margin:0;padding:6px;overflow:auto;flex:1}
.chatsearch{padding:10px 10px 6px}.chatsearch input{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.chatnew{display:flex;gap:6px;padding:4px 10px 8px;flex-wrap:wrap}
.conv{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;text-decoration:none;color:inherit}
.conv:hover{background:var(--hover)}.conv.on{background:var(--accent-soft)}
.ctxt{display:flex;flex-direction:column;min-width:0;flex:1}.ctxt b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ctxt small{color:var(--ink3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avatar.grp{background:var(--accent-soft);color:var(--accent)}.avatar.grp svg{width:18px;height:18px}.avatar.sm{width:30px;height:30px;font-size:11px;flex:none}.avatar.botav{background:#eef2ff;color:#4338ca}
.chatpane{display:flex;flex-direction:column;min-width:0;min-height:0}
.chathead{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.chathead h2{margin:0;font-size:17px}.chathead small{color:var(--ink3)}.chatacts{display:flex;gap:6px}
.chatlog{flex:1;overflow:auto;padding:14px 16px;display:flex;flex-direction:column;gap:12px;min-height:0}
.msg{display:flex;gap:10px;align-items:flex-start;max-width:78%}.msg.mine{align-self:flex-end;flex-direction:row-reverse}
.mbody{background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:8px 12px;min-width:120px}.msg.mine .mbody{background:var(--accent-soft);border-color:var(--accent-line)}
.mhead{display:flex;gap:10px;align-items:baseline;font-size:12.5px}.mhead time{color:var(--ink3);font-size:11.5px}
.mbody p{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.mact{display:none;gap:12px;margin-top:6px;font-size:12px}.msg:hover .mact,.msg:focus-within .mact{display:flex}.mact a{color:var(--accent);text-decoration:none}
.chatimg img{display:block;max-width:260px;max-height:200px;border-radius:10px;margin-top:6px}
.chatfile{display:inline-flex;gap:6px;align-items:center;margin-top:6px;padding:6px 10px;border:1px solid var(--line);border-radius:8px;text-decoration:none;color:inherit;background:var(--surface)}.chatfile svg{width:16px;height:16px}
.composer{border-top:1px solid var(--line);padding:10px 14px;display:flex;flex-direction:column;gap:8px}
.composer textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:12px;resize:vertical;font:inherit}
.composeact{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;align-items:center}.attach{cursor:pointer}
.chatblank{margin:auto;text-align:center;color:var(--ink3);max-width:420px;padding:24px}.chatblank svg{width:44px;height:44px}.chatblank.small{text-align:left;margin:0}
.btn.ai{background:#eef2ff;border-color:#c7d2fe;color:#3730a3}
.props{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.prop{border:1px dashed var(--accent-line);border-radius:12px;padding:10px 12px;background:var(--surface)}.prop label{display:block;font-size:12.5px;color:var(--ink2);margin:6px 0}.prop input[type=text]{width:100%;padding:7px 10px;border:1px solid var(--line);border-radius:8px}
.propmeta{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:13px;margin:6px 0}
.iachat .chatlog{min-height:320px;max-height:60vh}.msg.bot{max-width:92%}
.dirlist{list-style:none;margin:0;padding:6px;max-height:420px;overflow:auto}.dirrow{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:8px 10px;border:0;background:none;border-radius:10px;cursor:pointer;font:inherit;color:inherit}.dirrow:hover{background:var(--hover)}.dirrow small{display:block;color:var(--ink3)}
.annlist{list-style:none;margin:0;padding:0}.annlist li a{display:flex;flex-direction:column;gap:3px;padding:12px 16px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}.annlist li:hover{background:var(--hover)}.annlist small{color:var(--ink3)}.annlist li.unread a{border-left:3px solid var(--accent);background:var(--accent-soft)}
.annsec{margin:18px 0}.annsec .annlist{border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}
@media (max-width:820px){.chatshell{grid-template-columns:1fr;height:auto;min-height:0}.chatshell.has-conv .chatlist{display:none}.chatshell:not(.has-conv) .chatpane{display:none}.chatlog{max-height:60vh}.msg{max-width:92%}}
.hero .askbox{max-width:560px}.hero .askbox input[type=search]{flex:1 1 300px;min-width:260px}
.hero{overflow:visible}.hero .qpop{z-index:80}
.hero .askbox{max-width:640px;flex-wrap:nowrap}.hero .askbox input[type=search]{flex:1 1 200px;min-width:0}

/* Botón flotante del chat */
.fab{position:fixed;right:22px;bottom:22px;z-index:70}
.fab>summary{list-style:none;width:56px;height:56px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 24px rgba(16,24,40,.28);position:relative}
.fab>summary::-webkit-details-marker{display:none}.fab>summary svg{width:26px;height:26px}.fab>summary:hover{background:var(--accent-h)}
.fabn{position:absolute;top:-4px;right:-4px;min-width:21px;height:21px;padding:0 5px;border-radius:11px;background:var(--bad);color:#fff;font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--surface)}
.fabpanel{position:absolute;right:0;bottom:68px;width:340px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--sh2);overflow:hidden}
.fabpanel header,.fabpanel footer{display:flex;justify-content:space-between;align-items:center;padding:10px 14px}.fabpanel header{border-bottom:1px solid var(--line)}.fabpanel footer{border-top:1px solid var(--line);background:var(--surface2)}
.fabpanel header a,.fabpanel footer a{color:var(--accent);text-decoration:none;font-size:13px;display:inline-flex;gap:4px;align-items:center}.fabpanel header svg{width:14px;height:14px}
.fabpanel ul{list-style:none;margin:0;padding:6px;max-height:320px;overflow:auto}.fabpanel li a{display:flex;align-items:center;gap:10px;padding:8px;border-radius:10px;text-decoration:none;color:inherit}.fabpanel li a:hover{background:var(--hover)}
@media (max-width:820px){.fab{right:14px;bottom:14px}}
.qrimg{display:block;margin:0 auto 12px;background:#fff;padding:8px;border-radius:12px;border:1px solid var(--line,#e2e8f0)}
[hidden]{display:none!important}
.certbody{background:#e9edf3;margin:0;padding:16px}
.certbar{max-width:794px;margin:0 auto 12px;display:flex;gap:8px}
.cert{max-width:794px;min-height:1000px;margin:0 auto;background:#fff;padding:72px 80px;box-shadow:0 2px 14px rgba(0,0,0,.12);font-family:Georgia,'Times New Roman',serif;color:#111;line-height:1.7;display:flex;flex-direction:column}
.cert header{border-bottom:2px solid #0f3d5e;padding-bottom:12px;margin-bottom:36px;display:flex;flex-direction:column;gap:2px}.certco{font-size:20px;letter-spacing:.02em;color:#0f3d5e}
.cert h1{text-align:center;font-size:22px;letter-spacing:.12em;margin:0 0 4px}.certno{text-align:center;margin:0 0 32px;color:#555}.cert p{text-align:justify;margin:0 0 18px;font-size:16px}
.certsign{margin-top:90px;text-align:center;display:flex;flex-direction:column;align-items:center}.certsign .line{width:260px;border-top:1px solid #111;margin-bottom:6px}
.cert footer{margin-top:auto;padding-top:40px;font-size:12px;color:#555;text-align:center;word-break:break-all}
.cert.verify{min-height:0;text-align:center}.cert.verify h1.ok{color:#15803d}.cert.verify h1.bad{color:#b91c1c}
@media print{.noprint{display:none!important}.certbody{background:#fff;padding:0}.cert{box-shadow:none;padding:40px 48px;min-height:0;max-width:none}}
.labels{max-width:794px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.labels .lbl{margin:0;background:#fff;border:1px dashed #6b7787;border-radius:6px;padding:12px;text-align:center;break-inside:avoid}.labels .lbl img{display:block;margin:0 auto 6px}.labels .lbl figcaption{display:flex;flex-direction:column;font-size:14px}.labels .lbl figcaption b{font-size:18px}
.pricebox{border:1.5px solid var(--line,#e2e8f0);border-radius:10px;padding:8px 14px;margin:8px 0 14px}.pricebox legend{font-weight:700;padding:0 6px}.inline-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.bad-text{color:#b3261e;font-weight:700}
@media print{.labels{max-width:none}}

/* ───── Tienda Mat-Mac: punto de venta, caja, delivery, reportes ───── */
.posgrid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:var(--sp3);align-items:start}
.posadd{display:flex;gap:var(--sp2);align-items:center;margin-bottom:var(--sp2)}.posadd input[type=text],.posadd input[type=search]{flex:1;min-width:0;font-size:1.05rem}
.qtyin{width:76px;text-align:right}.big{font-size:1.1rem;padding:12px 16px;width:100%}.subtotal{font-size:1.15rem}.rowbad{background:var(--bad-bg)}
form.inline{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}.pick{list-style:none;margin:0 0 var(--sp2);padding:0}.pick li{padding:6px 0;border-bottom:1px solid var(--line)}
ul.cards{display:grid;list-style:none;margin:0;padding:var(--sp3);gap:var(--sp3)}ul.cards li{border:1px solid var(--line);border-radius:var(--r);padding:12px;background:var(--surface2);display:grid;gap:8px}
.check-group{border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;margin:0 0 var(--sp3)}.check-group legend{padding:0 6px;font-weight:600}.check-group .check{display:inline-flex;margin-right:16px}
.barcell{width:40%}.barcell progress{width:100%;height:10px}.kpi.k-amber b{color:var(--warn)}
.ticket{max-width:340px;margin:0 auto;background:#fff;color:#111;padding:16px 14px;font-size:13px;font-family:ui-monospace,Consolas,monospace;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.ticket h1{font-size:16px;text-align:center;margin:0 0 4px}.ticket .c{text-align:center;margin:4px 0}.ticket table{width:100%;border-collapse:collapse;margin:8px 0;border-top:1px dashed #555;border-bottom:1px dashed #555}
.ticket td{padding:3px 0;vertical-align:top;border:0}.ticket td.num{text-align:right;white-space:nowrap}.ticket tfoot td{padding-top:6px}.ticketvoid{max-width:340px;margin:16px auto 0;display:grid;gap:6px}
@media(max-width:900px){.posgrid{grid-template-columns:1fr}.posadd{flex-wrap:wrap}}
@media print{.ticket{box-shadow:none;max-width:none;padding:0}}
.tabs{display:flex;flex-wrap:wrap;gap:2px 4px;margin:0 0 var(--sp3);padding-bottom:0;border-bottom:1px solid var(--line)}
.tab{padding:9px 13px;margin-bottom:-1px;border:1px solid transparent;border-radius:8px 8px 0 0;color:var(--ink2);font-weight:600;font-size:var(--fs-sm);text-decoration:none;white-space:nowrap}
.tab:hover{background:var(--hover);color:var(--ink)}.tab.on{background:var(--surface);border-color:var(--line);border-bottom-color:var(--surface);color:var(--accent)}
form.inline input[type=text],form.inline input[type=number],form.inline select{width:auto;min-width:0;max-width:200px}form.inline input.qtyin{width:76px}
.thumbimg{max-width:100%;height:auto;border:1px solid var(--border,#bbb);vertical-align:middle}

/* ═══════════ Menú contraíble, más espacio de trabajo y estructura tipo app ═══════════ */
[hidden]{display:none!important}
.content{max-width:1920px;padding:20px 32px 56px}
.nav h3{margin:14px 0 2px;padding:0}.nav .ngrp:first-child h3{margin-top:0}
.ghead{display:flex;align-items:center;justify-content:space-between;text-align:left;width:100%;padding:8px 10px;border:0;background:transparent;border-radius:8px;cursor:pointer;font:inherit;font-size:11px;font-weight:650;letter-spacing:.09em;text-transform:uppercase;color:var(--side-dim)}
.ghead:hover{background:rgba(26,95,208,.07);color:var(--ink)}.ghead .ico{width:14px;height:14px;transition:transform .15s}
.ngrp.closed .ghead .ico{transform:rotate(-90deg)}.ngrp.closed .glinks{display:none}
.glinks{display:flex;flex-direction:column;gap:2px}
.navcollapse{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin-left:-6px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--ink2);cursor:pointer}
.navcollapse:hover{background:var(--hover);color:var(--ink)}
.appbar{display:none}
@media(min-width:901px){
  .shell{transition:grid-template-columns .18s ease}
  html[data-nav=mini] .shell{grid-template-columns:74px minmax(0,1fr)}
  html[data-nav=mini] .top .brand{width:auto;padding:0 0 0 18px}html[data-nav=mini] .top .brand .bname,html[data-nav=mini] .top .brand::after{display:none}
  html[data-nav=mini] .side{padding:12px 9px;overflow-x:hidden}
  html[data-nav=mini] .nav h3{margin:6px 6px;height:1px;background:var(--side2)}html[data-nav=mini] .ghead{display:none}
  html[data-nav=mini] .ngrp.closed .glinks{display:flex}
  html[data-nav=mini] .nav a{justify-content:center;padding:11px 0}
  html[data-nav=mini] .nav a .lbl,html[data-nav=mini] .nav a .soon,html[data-nav=mini] .sidefoot{display:none}
  html[data-nav=mini] .nav a .count{position:absolute;top:1px;right:3px;min-width:17px;font-size:10px;line-height:16px;padding:0 4px}
}
@media(max-width:900px){
  html{scroll-padding-bottom:80px}
  body{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;touch-action:manipulation}
  .navcollapse,.burger{display:none!important}
  .top{padding-top:env(safe-area-inset-top);height:calc(56px + env(safe-area-inset-top))}
  .content{padding:14px 14px calc(88px + env(safe-area-inset-bottom))}
  .side{padding-top:calc(14px + env(safe-area-inset-top));padding-bottom:calc(14px + env(safe-area-inset-bottom));border-radius:0 18px 18px 0;width:min(88vw,320px)}
  .nav a{padding:12px 12px;font-size:15px}.ghead{padding:11px 10px;font-size:11.5px}
  .appbar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;left:0;right:0;bottom:0;z-index:28;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px rgba(16,24,40,.08)}
  .ab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:52px;padding:4px 2px;color:var(--ink2);text-decoration:none;font-size:11px;font-weight:600;border-radius:12px;cursor:pointer;user-select:none}
  .ab .ico{width:23px;height:23px}.ab[aria-current=page]{color:var(--accent)}.ab[aria-current=page]::before{content:"";position:absolute;top:-7px;width:26px;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}
  .ab:active{background:var(--accent-soft)}
  .abn{position:absolute;top:2px;left:calc(50% + 6px);min-width:17px;padding:0 5px;border-radius:9px;background:#e5484d;color:#fff;font:700 10px/17px var(--font);text-align:center;font-style:normal}
  .navtoggle:checked~.shell .appbar .ab[for=navtoggle]{color:var(--accent);background:var(--accent-soft)}
  .fab{display:none}
  /* buscador del celular: un ícono que se expande al tocarlo */
  .top form.search{flex:1;min-width:0;max-width:none;position:relative;display:flex;justify-content:flex-end}
  .top form.search input[type=search]{width:42px;min-width:0;padding:10px 0 10px 0;color:transparent;background:transparent;border-color:transparent;cursor:pointer;transition:width .18s}
  .top form.search .ico{left:12px}
  .top form.search:focus-within{position:absolute;left:8px;right:8px;top:calc(8px + env(safe-area-inset-top));z-index:40;background:var(--surface);border-radius:12px;box-shadow:var(--sh2)}
  .top form.search:focus-within input[type=search]{width:100%;color:var(--ink);background:var(--bg);border-color:var(--line);padding-left:38px;cursor:text}
  .top form.search:focus-within .btn{display:inline-flex}
  input,select,textarea{font-size:16px}.btn{min-height:42px}
  .tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
}
@media(display-mode:standalone){body{user-select:none}input,textarea,[contenteditable],.content p,.content td{user-select:text}}
/* aviso de instalación (PWA) de MetalOS */
.pwa-banner{position:fixed;left:10px;right:10px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:50;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:center;padding:12px 14px;background:var(--surface);border:1px solid var(--accent-line);border-radius:16px;box-shadow:var(--sh2);animation:pwaup .35s ease both}
.pwa-banner.nobar{bottom:calc(14px + env(safe-area-inset-bottom))}
.pwa-banner .pico{width:44px;height:44px;border-radius:11px;grid-row:span 2}.pwa-banner b{font-size:14.5px}.pwa-banner p{margin:0;color:var(--ink2);font-size:12.5px;line-height:1.35}
.pwa-banner .pact{grid-column:1/-1;display:flex;gap:8px;justify-content:flex-end;margin-top:6px}
@keyframes pwaup{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}
.offline{max-width:420px;margin:18vh auto 0;text-align:center;padding:24px}.offline img{width:72px;height:72px;border-radius:18px}
@media(max-width:900px){
  .top form.search input[type=search]:not(:focus)::placeholder{color:transparent}
  .top .right .btn.primary{width:42px;padding:0;justify-content:center}.top .right .btn.primary .ico{margin:0}
  .tabs{flex-wrap:nowrap;overflow-x:auto;gap:2px;margin-left:-14px;margin-right:-14px;padding:0 14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.tabs::-webkit-scrollbar{display:none}
  .tab{flex:none;padding:12px 14px}
}
@media(max-width:900px){.hero .askbox{flex-wrap:wrap}.hero .askbox input[type=search]{flex:1 1 100%;min-width:0}.hero .askbox .btn{flex:1}}
.pwa-go,.pwa-no{font:inherit;font-size:13.5px;font-weight:600;padding:9px 16px;border-radius:10px;cursor:pointer;border:1px solid var(--line2);background:var(--surface);color:var(--ink)}
.pwa-go{background:var(--accent);border-color:var(--accent);color:#fff}.pwa-go:hover{background:var(--accent-h)}.pwa-no{color:var(--ink2)}
.pwa-banner .pico{border-radius:12px}

/* ---- Roles y permisos ---- */
.rolegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:var(--sp3)}
.rolecard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--sh1)}
.rolecard header{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.rolecard h2{margin:0;font-size:1.05rem}
.rolecard p{margin:0;color:var(--ink2);font-size:var(--fs-sm)}
.rolestats{display:flex;gap:22px;margin:0}.rolestats div{display:flex;flex-direction:column}.rolestats dt{font-size:var(--fs-xs);color:var(--ink3)}.rolestats dd{margin:0;font-size:1.4rem;font-weight:700}
.rolecard footer{margin-top:auto;padding-top:4px}
.crumb{margin:0 0 6px}
.rbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}
.rbar input[type=search]{flex:1 1 260px;min-height:40px}
.rcopy,.rexp{display:inline-flex;gap:6px;align-items:center}
.rleg{display:flex;flex-wrap:wrap;gap:4px 16px;margin:0 0 12px;font-size:var(--fs-xs);color:var(--ink2)}
.rgroup{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);margin-bottom:var(--sp3);overflow:hidden}
.rgroup[hidden]{display:none}
.rgroup>summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;list-style:none;background:var(--surface2)}
.rgroup>summary::-webkit-details-marker{display:none}
.rgroup>summary::before{content:"▸";margin-right:8px;color:var(--ink3);transition:transform .15s}
.rgroup[open]>summary::before{transform:rotate(90deg)}
.rgroup>summary .gt{flex:1;display:flex;flex-direction:column}.rgroup>summary small{color:var(--ink2);font-weight:400}
.gc{font-size:var(--fs-sm);padding:2px 10px;border-radius:10px;background:var(--muted-bg);color:var(--ink2);white-space:nowrap}
.gc.some{background:var(--info-bg);color:var(--info)}.gc.full{background:var(--ok-bg);color:var(--ok)}
.gtools{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 16px;border-top:1px solid var(--line);font-size:var(--fs-sm);color:var(--ink2)}
.rperms{list-style:none;margin:0;padding:0}
.rperm{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line)}
.rperm[hidden]{display:none}
.rperm.on{background:var(--accent-soft)}
.rperm .pn{display:flex;flex-direction:column;min-width:220px;flex:1 1 260px}.rperm .pn small{color:var(--ink3);font-size:11px}
.psc{display:flex;flex-wrap:wrap;gap:6px}
.sc{position:relative;cursor:pointer}
.sc input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.sc span{display:inline-block;padding:6px 12px;border:1px solid var(--line2);border-radius:16px;font-size:var(--fs-sm);color:var(--ink2);background:var(--surface);user-select:none;transition:background .12s,color .12s}
.sc:hover span{background:var(--hover)}
.sc input:checked+span{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}
.sc input:focus-visible+span{outline:3px solid var(--accent-line);outline-offset:2px}
.sc input:disabled+span{opacity:.75;cursor:default}
.rolefm.locked .sc{cursor:default}
.savebar{position:sticky;bottom:0;z-index:20;display:flex;gap:10px;align-items:center;padding:12px 16px;margin-top:var(--sp3);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 -4px 16px rgba(16,24,40,.08)}
.savebar .sp{flex:1}.rolefm.dirty .savebar{border-color:var(--accent);}
.cmp>summary{padding:12px 16px;cursor:pointer;background:var(--surface2)}
.cmp .matrix td.no{color:var(--ink3)}.cmp .matrix td.yes{font-weight:600;color:var(--ok);background:var(--ok-bg);white-space:nowrap;font-size:var(--fs-sm)}
.cmp .matrix td.yes.s-global{color:var(--accent)}
.cmp .matrix th{font-size:var(--fs-sm)}
@media(max-width:640px){.savebar{position:fixed;left:8px;right:8px;bottom:calc(64px + env(safe-area-inset-bottom,0px))}.rolefm{padding-bottom:70px}.rperm .pn{min-width:0}}
.rolecard .chip b{margin-left:6px;color:var(--accent)}

/* ---- Mi perfil ---- */
.pf-hero{display:flex;gap:20px;align-items:center;flex-wrap:wrap;padding:24px;margin-bottom:var(--sp4);background:linear-gradient(135deg,var(--accent-soft),var(--surface));border:1px solid var(--accent-line);border-radius:var(--r-lg)}
.pf-av{width:84px;height:84px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:2rem;font-weight:700;flex:none;box-shadow:0 0 0 4px var(--surface)}
.pf-id{flex:1 1 260px;min-width:0}.pf-id h1{margin:0 0 2px}.pf-id p{margin:0 0 10px;color:var(--ink2);overflow-wrap:anywhere}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--sp3)}
.pf-sess{list-style:none;margin:0;padding:0}.pf-sess li{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--line)}
.pf-sess small{display:block;color:var(--ink2)}
@media(max-width:600px){.pf-hero{padding:16px;gap:14px}.pf-av{width:64px;height:64px;font-size:1.5rem}.pf-act{width:100%}.pf-act .btn{width:100%}}

/* ---- Asistencia ---- */
.monthnav{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}
.att-today{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;margin-bottom:var(--sp3);background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--ink3);border-radius:var(--r-lg)}
.att-today.in{border-left-color:var(--ok)}.att-today div{display:flex;flex-direction:column;gap:2px}.att-today b{font-size:1.2rem}.att-today small,.att-today span{color:var(--ink2)}
input.mini{width:90px;min-height:32px;padding:4px 8px}.inline{display:inline-flex;gap:6px;align-items:center}
.linkbox{width:100%;font-family:var(--mono,monospace);font-size:.85rem}.ok-box{background:var(--ok-bg);border-color:var(--ok);color:var(--ink)}
.k-linkqr{display:flex;gap:12px;align-items:center}.k-linkqr svg{width:140px;height:140px;background:#fff}
.fld-btn{align-self:end;padding-bottom:16px}
.scan .scan-kind{font-size:1.3rem;font-weight:700;margin:10px 0}.btn.big{width:100%;min-height:56px;font-size:1.15rem}
/* Pantalla de marcación */
.kiosk{position:fixed;inset:0;display:grid;grid-template-columns:1fr 1fr;gap:0;background:#0f161d;color:#e6ebf0;overflow:auto}
.kiosk .k-left,.kiosk .k-right{padding:clamp(16px,3vw,40px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px}
.kiosk .k-right{background:#16202a;border-left:1px solid #263441}
.k-point{margin:0;font-size:1.1rem;color:#a2afbc}.k-clock{margin:0;font-size:clamp(3rem,9vw,6.5rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.k-date{margin:0 0 8px;font-size:1.2rem;color:#a2afbc}.k-date::first-letter{text-transform:uppercase}
.k-qr{background:#fff;padding:12px;border-radius:16px;width:min(320px,60vw)}.k-qr svg{display:block;width:100%;height:auto}.k-bar{height:6px;background:#d5dbe3;border-radius:3px;margin-top:8px;overflow:hidden}.k-bar i{display:block;height:100%;width:100%;background:#0d6e92}
.k-hint{margin:6px 0 0;font-size:1.05rem}.k-hint small{color:#a2afbc}
.kiosk h1{margin:0 0 6px;font-size:1.6rem;color:#fff}
.kiosk form{width:min(360px,100%);display:flex;flex-direction:column;gap:6px;text-align:left}.kiosk label{font-weight:600;color:#c9d2db}
.kiosk input{font-size:1.6rem;padding:12px 14px;border-radius:10px;border:2px solid #33444f;background:#0f161d;color:#fff;letter-spacing:.12em;min-height:56px}
.kiosk input:focus{outline:3px solid #4aa3c7;border-color:#4aa3c7}.kiosk form .btn{min-height:56px;font-size:1.2rem;margin-top:6px}
.k-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:min(360px,100%)}.k-pad button{min-height:56px;font-size:1.5rem;font-weight:600;border-radius:10px;border:1px solid #33444f;background:#1f2c38;color:#fff;cursor:pointer}.k-pad button:active{background:#0d6e92}
.k-help{margin:4px 0 0;color:#a2afbc;font-size:.95rem}
.k-result{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:24px;z-index:10}.k-result[hidden]{display:none}
.k-result b{font-size:clamp(2.2rem,6vw,4rem)}.k-result span{font-size:clamp(1.3rem,3vw,2rem)}.k-result.ok{background:#0e6b3a;color:#fff}.k-result.bad{background:#9b1c1c;color:#fff}
@media(max-width:820px){.kiosk{grid-template-columns:1fr}.kiosk .k-right{border-left:0;border-top:1px solid #263441}}
@media print{.rail,.side,header.top,.subnav,.btn,nav{display:none!important}}

/* ───── Plan estratégico ───── */
progress.meter{appearance:none;-webkit-appearance:none;width:100%;height:9px;border:0;border-radius:5px;background:var(--muted-bg);overflow:hidden;vertical-align:middle}
progress.meter::-webkit-progress-bar{background:var(--muted-bg);border-radius:5px}
progress.meter::-webkit-progress-value{border-radius:5px;background:var(--accent)}progress.meter::-moz-progress-bar{border-radius:5px;background:var(--accent)}
progress.meter.good::-webkit-progress-value{background:var(--ok)}progress.meter.good::-moz-progress-bar{background:var(--ok)}
progress.meter.mid::-webkit-progress-value{background:var(--warn)}progress.meter.mid::-moz-progress-bar{background:var(--warn)}
progress.meter.low::-webkit-progress-value{background:var(--bad)}progress.meter.low::-moz-progress-bar{background:var(--bad)}
.objpanel>header{align-items:center;gap:var(--sp4)}.objpanel>header h2{margin:0}
.objscore{display:flex;align-items:center;gap:10px;min-width:170px;margin-left:auto}.objscore progress{flex:1;min-width:110px}.objscore b{font-size:1.15rem;font-variant-numeric:tabular-nums;min-width:3ch;text-align:right}
.spark{display:block}.spark .sp-l{stroke:var(--accent);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}.spark .sp-d{fill:var(--accent)}
.plan-chart{width:100%;height:auto;max-height:260px;display:block}
.plan-chart .ch-grid{stroke:var(--line);stroke-width:1}.plan-chart .ch-lbl{fill:var(--ink3);font-size:11px}
.plan-chart .ch-line{stroke:var(--accent);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}
.plan-chart .ch-target{stroke:var(--warn);stroke-width:1.6;stroke-dasharray:6 5}.plan-chart .ch-band{fill:var(--warn-bg);opacity:.75}
.plan-chart .ch-dot{stroke:var(--surface);stroke-width:2}.plan-chart .ch-dot.cumple{fill:var(--ok)}.plan-chart .ch-dot.no_cumple{fill:var(--bad)}
.targetbox{border:1px solid var(--line);border-radius:10px;padding:4px 14px 10px;margin:0 0 var(--sp3)}.targetbox legend{padding:0 6px;font-weight:600;font-size:var(--fs-sm);color:var(--ink2)}
.crumb{margin:0 0 6px;color:var(--ink2);font-size:var(--fs-sm)}.crumb a{color:var(--ink2)}
td.wrap{white-space:normal;min-width:220px;max-width:460px}
.filters.inline{display:inline-flex;gap:6px;align-items:end;padding:0;border:0;background:none}
.actform{border-top:1px solid var(--line)}

/* Equipos TIC */
.dl{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:6px 16px;margin:0}.dl dt{color:var(--ink2);font-size:var(--fs-sm)}.dl dd{margin:0;overflow-wrap:anywhere}
.narrow{width:84px}.checks{display:flex;flex-wrap:wrap;gap:6px 18px}.checks label{display:flex;gap:6px;align-items:center;font-weight:400}
.ticchips{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--sp3);padding:0}.ticchips li{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:3px 6px 3px 12px;background:var(--surface2)}
.linkbtn{background:none;border:0;padding:0 4px;color:var(--accent);cursor:pointer;font:inherit;font-size:var(--fs-sm);text-decoration:underline}
form.inline{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}.kpi[href]{text-decoration:none;color:inherit}

/* ───────── Ingreso (MetalOS) ───────── */
.mx,.mx-intro{--mx-bg:#060a12;--mx-cy:#35c8ff;--mx-cy2:#1b7fe0;--mx-amb:#ffb347;--mx-ink:#dbe7f3;--mx-dim:#8da2b7;--mx-font:Bahnschrift,"DIN Alternate","Segoe UI Semibold","Segoe UI",Inter,system-ui,sans-serif;color:var(--mx-ink);font-family:var(--mx-font)}
.mx{position:relative;min-height:100vh;min-height:100dvh;overflow:hidden;background:radial-gradient(900px 520px at 78% 18%,rgba(34,140,220,.22),transparent 70%),radial-gradient(700px 500px at 10% 100%,rgba(20,90,170,.25),transparent 70%),linear-gradient(180deg,#070c15,#05080f);display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr);align-items:center}
.mx::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(70,170,230,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(70,170,230,.07) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at 50% 55%,#000 30%,transparent 78%);mask-image:radial-gradient(ellipse at 50% 55%,#000 30%,transparent 78%);pointer-events:none}
.mx-scene{position:absolute;left:0;bottom:0;width:100%;height:72%;pointer-events:none}
.mx-scene .bp path{fill:none;stroke:rgba(80,190,255,.28);stroke-width:1.4;stroke-dasharray:6 7}.mx-scene .bp circle{fill:#06101c;stroke:rgba(80,190,255,.6);stroke-width:1.5}
.mx-scene .rail,.mx-scene .limb{fill:none;stroke:#6f879e;stroke-width:11;stroke-linecap:round;stroke-linejoin:round}.mx-scene .limb{stroke:#8aa3ba}.mx-scene .body{fill:#162537;stroke:#47657f;stroke-width:2}.mx-scene .joint{fill:#0e1a29;stroke:#9fb8cc;stroke-width:3}.mx-scene .tip{fill:#ffd9a0}
.mx-scene .col{fill:url(#gMach);stroke:#3a5873;stroke-width:1.5}.mx-scene .beam{fill:#142236;stroke:#47657f;stroke-width:2}.mx-scene .cyl{fill:#1b2d44;stroke:#5b7d99;stroke-width:2}.mx-scene .die{fill:#0f1b2b;stroke:#47657f;stroke-width:2}
.mx-scene .lamp{fill:#35e0a0;animation:mxLamp 3.5s steps(1) infinite -2.72s}.mx-scene .lamp.l2{animation-delay:-3.16s}
.mx-scene .rod{fill:#9fb8cc}.mx-scene .punch{fill:url(#gSteel);stroke:#0b1320;stroke-width:1.5}.mx-scene .punchhi{stroke:#fff;stroke-opacity:.6;stroke-width:2}
.mx-scene .piston{fill:#9fb8cc}.mx-scene .jawb{fill:#243a54;stroke:#7fa0bd;stroke-width:2}.mx-scene .roll{fill:#0e1a29;stroke:#bcd3e6;stroke-width:2.5}.mx-scene .jaw path{stroke:#6f8ba5;stroke-width:2}
.mx-scene .lbl circle{fill:rgba(53,200,255,.14);stroke:#35c8ff;stroke-width:1.5}.mx-scene .lbl .n{fill:#7fdcff;font-size:13px;font-weight:700}.mx-scene .lbl .t{fill:#9fb6cb;font-size:15px;letter-spacing:.14em;text-transform:uppercase}
.mx-scene .flow{stroke:#5fd0ff;stroke-opacity:.7;stroke-width:2;stroke-dasharray:12 12;animation:mxBelt .3333s linear infinite}
.mx-scene .led{fill:#35e0a0}.mx-scene .weld{opacity:0}.mx-scene .rays path{fill:none;stroke:#cdf3ff;stroke-width:2.2;stroke-linecap:round}
.mx-scene .sp{fill:#ffd27a;opacity:0}
.mx-scene .spin{transform-box:fill-box;transform-origin:center;animation:mxSpin 3.4s linear infinite}
.mx-scene .it{opacity:0;animation:mxTravel 14s linear infinite}.mx-scene .it1{animation-delay:-3.5s}.mx-scene .it2{animation-delay:-7s}.mx-scene .it3{animation-delay:-10.5s}
.mx-scene .st{opacity:0}.mx-scene .st1{animation:mxS1 14s linear infinite}.mx-scene .st2{animation:mxS2 14s linear infinite}.mx-scene .st3{animation:mxS3 14s linear infinite}.mx-scene .st4{animation:mxS4 14s linear infinite}
.mx-scene .it1 .st{animation-delay:-3.5s}.mx-scene .it2 .st{animation-delay:-7s}.mx-scene .it3 .st{animation-delay:-10.5s}
.mx-scene .ram{animation:mxRam 3.5s ease-in-out infinite -2.72s}.mx-scene .jl{animation:mxJawL 3.5s ease-in-out infinite -3.16s}.mx-scene .jr{animation:mxJawR 3.5s ease-in-out infinite -3.16s}
.mx-scene .weld{animation:mxWeld 3.5s linear infinite -.11s}.mx-scene .torch{animation:mxTorch 3.5s ease-in-out infinite -.11s}
.mx-scene .sp{animation:mxSpark 3.5s cubic-bezier(.2,.6,.4,1) infinite -.11s}
.mx-scene .sp0{--dx:-70px;--dy:34px}.mx-scene .sp1{--dx:-44px;--dy:60px}.mx-scene .sp2{--dx:-18px;--dy:80px}.mx-scene .sp3{--dx:12px;--dy:70px}.mx-scene .sp4{--dx:40px;--dy:54px}.mx-scene .sp5{--dx:72px;--dy:30px}.mx-scene .sp6{--dx:-90px;--dy:62px}.mx-scene .sp7{--dx:92px;--dy:64px}.mx-scene .sp8{--dx:4px;--dy:96px}
@keyframes mxSpin{to{transform:rotate(360deg)}}
@keyframes mxBelt{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
@keyframes mxLamp{0%,100%{fill:#35e0a0}38%,52%{fill:#ffb347}}
@keyframes mxTravel{0%{transform:translateX(-110px);opacity:0}3%{opacity:1}96%{opacity:1}100%{transform:translateX(900px);opacity:0}}
@keyframes mxS1{0%,40%{opacity:1}41%,100%{opacity:0}}
@keyframes mxS2{0%,40%{opacity:0}41%,61%{opacity:1}62%,100%{opacity:0}}
@keyframes mxS3{0%,61%{opacity:0}62%,83%{opacity:1}84%,100%{opacity:0}}
@keyframes mxS4{0%,83%{opacity:0}84%,100%{opacity:1}}
@keyframes mxRam{0%,24%{transform:translateY(-6px)}38%,44%{transform:translateY(52px)}60%,100%{transform:translateY(-6px)}}
@keyframes mxJawL{0%,24%{transform:translateX(-26px)}38%,46%{transform:translateX(14px)}62%,100%{transform:translateX(-26px)}}
@keyframes mxJawR{0%,24%{transform:translateX(26px)}38%,46%{transform:translateX(-14px)}62%,100%{transform:translateX(26px)}}
@keyframes mxWeld{0%,34%{opacity:0}36%{opacity:1}38%{opacity:.3}40%{opacity:1}42%{opacity:.5}44%{opacity:.95}49%,100%{opacity:0}}
@keyframes mxTorch{0%,24%{transform:translateY(-30px)}36%,46%{transform:translateY(0)}60%,100%{transform:translateY(-30px)}}
@keyframes mxSpark{0%,36%{opacity:0;transform:translate(0,0)}38%{opacity:1}60%{opacity:0;transform:translate(var(--dx),var(--dy))}100%{opacity:0;transform:translate(var(--dx),var(--dy))}}
.mx-tag{position:absolute;left:clamp(20px,4vw,56px);top:clamp(20px,4vh,44px);margin:0;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--mx-dim);line-height:1.7}.mx-tag span{color:var(--mx-cy)}
.mx-panel{position:relative;z-index:2;grid-column:2;justify-self:center;width:min(100% - 32px,408px);margin:24px 0;padding:30px 30px 26px;border-radius:6px;background:linear-gradient(160deg,rgba(14,26,42,.82),rgba(7,13,22,.86));-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(80,190,255,.22);box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 60px rgba(40,150,230,.12),inset 0 1px 0 rgba(255,255,255,.06);animation:mxIn .8s cubic-bezier(.2,.7,.2,1) both}
.mx-c{position:absolute;width:16px;height:16px;border:2px solid var(--mx-cy);pointer-events:none;filter:drop-shadow(0 0 5px rgba(53,200,255,.8))}.mx-c.tl{left:-1px;top:-1px;border-right:0;border-bottom:0}.mx-c.tr{right:-1px;top:-1px;border-left:0;border-bottom:0}.mx-c.bl{left:-1px;bottom:-1px;border-right:0;border-top:0}.mx-c.br{right:-1px;bottom:-1px;border-left:0;border-top:0}
.mx-logo{margin:-6px 0 14px;text-align:center}.mx-logo img{display:block;margin:0 auto;width:210px;height:auto;filter:drop-shadow(0 6px 18px rgba(40,170,255,.35))}
.mx-mark{display:block;margin:-6px auto 4px;width:92px;height:auto;filter:drop-shadow(0 6px 18px rgba(40,170,255,.45))}
.mx-word{margin:0;text-align:center;font-size:36px;line-height:1.1;font-weight:700;letter-spacing:.05em;text-transform:none}
.mx-word span{background:linear-gradient(180deg,#fff 10%,#b6c7d6 48%,#6d8195 52%,#dbe6ef 90%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}.mx-word b{color:var(--mx-cy);font-weight:700;text-shadow:0 0 18px rgba(53,200,255,.6)}
.mx-sub{margin:6px 0 20px;text-align:center;color:var(--mx-dim);font-size:14px}
.mx-err{margin:0 0 14px;padding:9px 12px;border-radius:4px;background:rgba(255,90,80,.12);border:1px solid rgba(255,110,100,.5);color:#ffc1bb;font-size:14px}
.mx-f{display:block;margin-bottom:14px}.mx-f>span:first-child{display:block;margin-bottom:5px;font-size:13px;color:var(--mx-dim);letter-spacing:.02em}
.mx-in{display:flex;align-items:center;gap:10px;padding:0 12px;height:46px;border-radius:4px;background:rgba(3,8,15,.72);border:1px solid rgba(110,150,190,.28);color:var(--mx-dim);transition:border-color .15s,box-shadow .15s}
.mx-in:focus-within{border-color:var(--mx-cy);box-shadow:0 0 0 3px rgba(53,200,255,.18),0 0 22px rgba(53,200,255,.18);color:var(--mx-cy)}
.mx .mx-in input{flex:1;min-width:0;height:100%;padding:0;border-radius:0;box-shadow:none;background:transparent;border:0;outline:0;color:#f1f7fd;font:inherit;font-size:16px}.mx .mx-in input:focus,.mx .mx-in input:focus-visible{outline:0;box-shadow:none;border:0;background:transparent}.mx-in input:-webkit-autofill{-webkit-text-fill-color:#f1f7fd;box-shadow:0 0 0 40px #0a1320 inset}
.mx-eye{display:grid;place-items:center;width:32px;height:32px;margin-right:-6px;border:0;border-radius:4px;background:transparent;color:var(--mx-dim);cursor:pointer}.mx-eye:hover,.mx-eye[aria-pressed=true]{color:var(--mx-cy)}.mx-eye:focus-visible{outline:2px solid var(--mx-cy)}
.mx-caps{display:block;margin-top:5px;color:var(--mx-amb);font-size:12.5px}
.mx-go{position:relative;overflow:hidden;width:100%;height:48px;margin-top:6px;border:0;border-radius:4px;font:inherit;font-size:16px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#031018;cursor:pointer;background:linear-gradient(180deg,#5fdcff,#1fa4f0);box-shadow:0 0 0 1px rgba(150,230,255,.6),0 8px 28px rgba(31,164,240,.4);transition:transform .12s,box-shadow .2s}
.mx-go::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:skewX(-20deg);animation:mxSweep 4.2s ease-in-out infinite 1.2s}
.mx-go:hover{box-shadow:0 0 0 1px #aef0ff,0 10px 36px rgba(53,200,255,.6)}.mx-go:active{transform:translateY(1px)}.mx-go:focus-visible{outline:2px solid #fff;outline-offset:3px}.mx-go[data-busy]{filter:saturate(.6);pointer-events:none}
.mx-foot{position:absolute;left:0;right:0;bottom:12px;margin:0;text-align:center;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:rgba(141,162,183,.7);z-index:2}
@keyframes mxIn{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
@keyframes mxSweep{0%,70%{left:-60%}100%{left:140%}}
@media (max-width:900px){.mx{grid-template-columns:1fr;align-items:end}.mx-panel{grid-column:1;margin:0 0 56px}.mx-scene{height:46%;bottom:auto;top:0;opacity:.9}.mx-tag{display:none}.mx{align-content:end}}
@media (max-width:420px){.mx-panel{padding:22px 18px}.mx-word{font-size:30px}}

/* Pantalla de entrada tras iniciar sesión */
.mx-intro{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:radial-gradient(700px 500px at 50% 42%,rgba(30,130,210,.3),transparent 70%),#05080f;overflow:hidden;transition:opacity .5s ease,transform .5s ease}
.mx-intro.out{opacity:0;transform:scale(1.06)}
.in-grid{position:absolute;inset:-10%;background-image:linear-gradient(rgba(70,170,230,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(70,170,230,.09) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(circle at 50% 45%,#000 10%,transparent 65%);mask-image:radial-gradient(circle at 50% 45%,#000 10%,transparent 65%);animation:inGrid 6s linear infinite}
.in-core{position:relative;width:min(62vw,300px);aspect-ratio:1;display:grid;place-items:center}
.in-ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.in-ring circle{fill:none;stroke:var(--mx-cy);stroke-linecap:round;transform-box:fill-box;transform-origin:center}
.in-ring .r1{stroke-width:2;stroke-dasharray:1168;stroke-dashoffset:1168;animation:inDraw 1.3s .1s cubic-bezier(.5,0,.2,1) forwards,inSpin 14s linear infinite}
.in-ring .r2{stroke-width:3;stroke-opacity:.8;stroke-dasharray:90 40 30 40;animation:inSpin 5s linear infinite reverse}
.in-ring .r3{stroke-width:1.5;stroke-opacity:.5;stroke-dasharray:4 9;animation:inSpin 9s linear infinite}
.in-ring .tk{stroke:rgba(110,210,255,.7);stroke-width:1.6;opacity:0;animation:inTick .5s forwards}
.in-mark{position:relative;width:52%;height:auto;opacity:0;filter:drop-shadow(0 0 24px rgba(53,200,255,.7));animation:inMark 1s .5s cubic-bezier(.2,.8,.2,1) forwards,inGlow 1.6s 1.5s ease-in-out infinite}
.in-scan{position:absolute;left:27%;right:27%;top:20%;height:2px;background:linear-gradient(90deg,transparent,#9fe9ff,transparent);box-shadow:0 0 14px #5fdcff;opacity:0;animation:inScan 1.5s 1s ease-in-out 2}
.in-hello{margin:14px 0 0;font-size:clamp(22px,4vw,30px);font-weight:600;letter-spacing:.04em;opacity:0;animation:inUp .6s 1s both}.in-hello b{color:var(--mx-cy);font-weight:700}
.in-status{margin:0;min-height:1.5em;font-size:14px;color:var(--mx-dim);letter-spacing:.06em;opacity:0;animation:inUp .6s 1.2s both}
.in-meter{display:flex;align-items:center;gap:12px;width:min(78vw,320px);opacity:0;animation:inUp .6s 1.2s both}.in-meter span{min-width:3.2em;text-align:right;font-size:13px;color:var(--mx-cy);font-variant-numeric:tabular-nums}
.in-bar{flex:1;height:6px;appearance:none;-webkit-appearance:none;border:0;border-radius:3px;background:rgba(110,160,200,.2);overflow:hidden}
.in-bar::-webkit-progress-bar{background:rgba(110,160,200,.2);border-radius:3px}.in-bar::-webkit-progress-value{background:linear-gradient(90deg,#1b7fe0,#5fdcff);border-radius:3px;box-shadow:0 0 12px #35c8ff}.in-bar::-moz-progress-bar{background:linear-gradient(90deg,#1b7fe0,#5fdcff);border-radius:3px}
@keyframes inDraw{to{stroke-dashoffset:0}}@keyframes inSpin{to{transform:rotate(360deg)}}@keyframes inTick{to{opacity:1}}
@keyframes inMark{from{opacity:0;transform:scale(.7);filter:blur(12px) drop-shadow(0 0 24px rgba(53,200,255,.7))}to{opacity:1;transform:none}}
@keyframes inGlow{50%{filter:drop-shadow(0 0 40px rgba(95,220,255,.95))}}
@keyframes inScan{0%{opacity:0;top:20%}15%,85%{opacity:1}100%{opacity:0;top:78%}}
@keyframes inUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes inGrid{to{background-position:0 44px}}
@media (prefers-reduced-motion:reduce){.mx *,.mx-intro *,.mx-panel{animation:none!important}.mx-scene .it{opacity:1}.mx-scene .st4{opacity:1}.in-ring .r1{stroke-dashoffset:0}.in-ring .tk,.in-mark,.in-hello,.in-status,.in-meter{opacity:1}.mx-intro{transition:none}}

.in-ring .tk:nth-of-type(4){animation-delay:0.20s}.in-ring .tk:nth-of-type(7){animation-delay:0.24s}.in-ring .tk:nth-of-type(10){animation-delay:0.29s}.in-ring .tk:nth-of-type(13){animation-delay:0.34s}.in-ring .tk:nth-of-type(16){animation-delay:0.38s}.in-ring .tk:nth-of-type(19){animation-delay:0.42s}.in-ring .tk:nth-of-type(22){animation-delay:0.47s}.in-ring .tk:nth-of-type(25){animation-delay:0.52s}.in-ring .tk:nth-of-type(28){animation-delay:0.56s}.in-ring .tk:nth-of-type(31){animation-delay:0.60s}.in-ring .tk:nth-of-type(34){animation-delay:0.65s}.in-ring .tk:nth-of-type(37){animation-delay:0.70s}.in-ring .tk:nth-of-type(40){animation-delay:0.74s}.in-ring .tk:nth-of-type(43){animation-delay:0.78s}.in-ring .tk:nth-of-type(46){animation-delay:0.83s}.in-ring .tk:nth-of-type(49){animation-delay:0.88s}.in-ring .tk:nth-of-type(52){animation-delay:0.92s}.in-ring .tk:nth-of-type(55){animation-delay:0.97s}.in-ring .tk:nth-of-type(58){animation-delay:1.01s}.in-ring .tk:nth-of-type(61){animation-delay:1.05s}
/* ── Asignar a personas ── */
.asg-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:16px;align-items:start}
.asg-main{display:grid;gap:16px}.asg-card{padding:18px 20px}.asg-card .field:last-child{margin-bottom:0}
.asg-h{display:flex;align-items:center;gap:10px;font-size:16px;margin:0 0 14px}.asg-n{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:13px;font-weight:700}
.kindcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.kcard{display:block;cursor:pointer;position:relative}
.kcard input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.kc{display:grid;gap:4px;height:100%;padding:12px;border:1px solid var(--line2);border-radius:var(--r);background:var(--surface);transition:border-color .15s,background .15s}
.kc .ico{width:22px;height:22px;color:var(--ink3)}.kc b{font-size:14px}.kc small{color:var(--ink2);font-size:12px;line-height:1.35}
.kcard:hover .kc{border-color:var(--accent-line)}.kcard input:checked+.kc{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.kcard input:checked+.kc .ico{color:var(--accent)}
.kcard input:focus-visible+.kc{outline:2px solid var(--accent);outline-offset:2px}
.asg-dates{align-items:start}
.asg:has(input[name=kind][value=tarea]:checked) .f-ev,.asg:has(input[name=kind][value=aviso]:checked) .f-ev,.asg:has(input[name=kind][value=aviso]:checked) .f-due,.asg:has(input[name=kind][value=invitacion]:checked) .f-due{display:none}
.asg:has(input[name=kind][value=aviso]:checked) .asg-dates{display:none}
.asg-bar{margin-top:16px;display:flex;gap:8px}
.audience.aud{border:0;padding:0;margin:0;min-width:0}.aud legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.aud-sum{margin:0 0 12px;padding:9px 12px;border-radius:var(--r-sm);background:var(--muted-bg);color:var(--ink2);font-size:13px}.aud-sum.on{background:var(--ok-bg);color:var(--ok);font-weight:600}
.aud-all{display:flex;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line2);border-radius:var(--r);cursor:pointer;margin-bottom:14px}.aud-all small{display:block;color:var(--ink2)}.aud-all:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.aud-block{margin-bottom:14px}.aud-block .subh{margin:0 0 8px;font-size:13px;color:var(--ink2);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{position:relative;cursor:pointer}.chip input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.chip span{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--line2);border-radius:999px;background:var(--surface);font-size:13px}.chip small{color:var(--ink3);font-size:11px}
.chip input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.chip input:checked+span small{color:inherit;opacity:.85}.chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.aud.all-on .chips,.aud.all-on .aud-block:last-of-type{opacity:.45;pointer-events:none}
.aud-selected{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.aud-selected:empty{display:none}
.aud-selected .tag{border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit}.aud-selected .tag:hover{background:var(--accent);color:var(--accent-ink)}
.aud-people{border:1px solid var(--line2);border-radius:var(--r);background:var(--surface)}
.aud-people>summary{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;list-style:none;font-weight:600;font-size:13px}.aud-people>summary::-webkit-details-marker{display:none}
.aud-people>summary .ico{width:16px;height:16px;color:var(--ink3)}.aud-people>summary em{margin-left:auto;font-style:normal;color:var(--accent);font-size:12px}
.aud-search{padding:0 12px 8px}.aud-search input{width:100%}
.aud-list{max-height:280px;overflow:auto;border-top:1px solid var(--line);padding:4px 12px 10px}
.aud-grp h5{margin:10px 0 4px;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink3)}
.aud-p{display:flex;gap:8px;align-items:center;padding:4px 0;font-weight:400;cursor:pointer}.aud-p[hidden],.aud-grp[hidden]{display:none}.aud-none{color:var(--ink2);margin:10px 0 0}
@media (max-width:960px){.asg-grid{grid-template-columns:1fr}}
@media (max-width:560px){.kindcards{grid-template-columns:1fr}.asg-card{padding:14px}}
.form.asg{max-width:none}
.asg-dates input{width:100%}
.asg .asg-dates .field input[type]{width:100%;max-width:none}
/* ── Mat-Mac: navegación por secciones ── */
.mmnav{margin:0 0 var(--sp3)}
.mmgroups{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.mmg{padding:8px 16px;border-radius:999px;border:1px solid var(--line2);background:var(--surface);color:var(--ink2);font-weight:700;font-size:var(--fs-sm);text-decoration:none}
.mmg:hover{background:var(--hover);color:var(--ink)}.mmg.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.mmsub{display:flex;flex-wrap:wrap;gap:2px 4px;border-bottom:1px solid var(--line)}
.mms{padding:8px 12px;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--ink2);font-weight:600;font-size:var(--fs-sm);text-decoration:none;white-space:nowrap}
.mms:hover{color:var(--ink);background:var(--hover);border-radius:6px 6px 0 0}.mms.on{color:var(--accent);border-bottom-color:var(--accent)}
@media(max-width:700px){.mmgroups,.mmsub{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.mmg,.mms{flex:none}}
/* ── Mat-Mac: punto de venta, productos ── */
.possearch input[type=search]{font-size:1.1rem;padding:12px 14px}
.posres{margin-top:4px}.posres[aria-busy=true]{opacity:.6}
.pchips{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:thin}
.pchip{flex:none;padding:5px 12px;border:1px solid var(--line2);border-radius:999px;background:var(--surface);color:var(--ink2);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap}
.pchip:hover{background:var(--hover);color:var(--ink)}.pchip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.posres-hint{padding:18px 4px}.posres-hint .pchip{display:inline-block;background:var(--accent);border-color:var(--accent);color:var(--accent-ink);padding:8px 16px;margin-top:6px}
.posres-t{margin:0 0 8px;font-weight:600;color:var(--ink2);font-size:13px}
.pgrid{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:6px;max-height:460px;overflow:auto}
.pcard{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.pcard.out{opacity:.55}.pinfo{display:grid;min-width:0}.pinfo b{overflow:hidden;text-overflow:ellipsis}.pinfo small{color:var(--ink3)}
.pbuy{display:flex;align-items:center;gap:12px;flex:none}.pprice{text-align:right;min-width:64px}.pstock{font-size:12px;color:var(--ink2);min-width:64px;text-align:right}.pstock.bad{color:var(--bad);font-weight:700}.pstock.low{color:var(--warn);font-weight:600}
@media(max-width:560px){.pcard{flex-direction:column;align-items:stretch}.pbuy{justify-content:space-between}}
/* ── Mat-Mac: configuración ── */
.cfg{display:grid;grid-template-columns:190px minmax(0,1fr);gap:20px;align-items:start}
.cfg-index{position:sticky;top:84px;display:grid;gap:2px}.cfg-index a{padding:8px 12px;border-radius:var(--r-sm);color:var(--ink2);font-weight:600;font-size:var(--fs-sm);text-decoration:none}.cfg-index a:hover{background:var(--hover);color:var(--ink)}
.cfg-body{display:grid;gap:16px;min-width:0}.cfg-form{display:grid;gap:16px;max-width:none}.cfg-card{scroll-margin-top:84px}.cfg-card h2{margin:0 0 2px;font-size:17px}.cfg-card>.pad>.muted-text:first-of-type{margin:0 0 14px}
.cfgopen{margin-bottom:12px;padding:10px 12px;border:1px solid var(--line2);border-radius:var(--r);background:var(--surface2)}
.cfg-save{display:flex;align-items:center;gap:12px;margin-top:8px;position:sticky;bottom:0;z-index:30;padding:12px 16px;background:var(--surface,#fff);border:1px solid var(--line2);border-radius:var(--r);box-shadow:0 -6px 18px rgba(0,0,0,.08)}
@media(max-width:900px){.cfg{grid-template-columns:1fr}.cfg-index{position:static;grid-auto-flow:column;overflow-x:auto}.cfg-index a{white-space:nowrap}}

/* ───── CRM comercial ───── */
.crmtabs{flex-wrap:wrap;margin-bottom:var(--sp4)}
.crmgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;margin-bottom:16px}
.crmgrid>.panel{margin:0}
.crmbars{width:100%;height:auto;max-height:230px}.crmbars .bar{fill:var(--info)}.crmbars .blab{fill:var(--ink3);font-size:11px}.crmbars .axis{stroke:var(--line2);stroke-width:1}
.funnel .frow{display:grid;grid-template-columns:130px 1fr 130px;gap:10px;align-items:center;padding:5px 0}
.funnel .fbar svg{width:100%;height:10px;display:block;background:var(--muted-bg);border-radius:3px}
.funnel .fb{fill:var(--info)}.funnel .fb.ok{fill:var(--ok)}.funnel .fb.warn{fill:var(--warn)}.funnel .fb.bad{fill:var(--bad)}
.funnel .fn{text-align:right;white-space:nowrap}.funnel .fn small{color:var(--ink3);margin-left:4px}
.agsum{display:flex;gap:12px}.agsum .ag{flex:1;text-align:center;padding:14px 8px;border:1px solid var(--line);border-radius:var(--r);text-decoration:none;color:var(--ink)}
.agsum .ag b{display:block;font-size:26px}.agsum .ag small{color:var(--ink2)}.agsum .ag.bad b{color:var(--bad)}.agsum .ag.warn b{color:var(--warn)}
.kvs{display:flex;flex-direction:column;gap:8px}.kvs a{color:var(--ink);text-decoration:none}.kvs a b{font-size:18px}
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(250px,1fr);gap:12px;overflow-x:auto;padding-bottom:10px;align-items:start}
.bcol{background:var(--surface2);border:1px solid var(--line);border-top:3px solid var(--info);border-radius:var(--r);min-width:0}
.bcol.ok{border-top-color:var(--ok)}.bcol.warn{border-top-color:var(--warn)}.bcol.bad{border-top-color:var(--bad)}
.bcol>header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px}.bcol h2{margin:0;font-size:14px}
.bcards{display:flex;flex-direction:column;gap:8px;padding:0 10px 10px}
.bcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px;box-shadow:var(--sh1)}
.bcard .bt{font-weight:600;text-decoration:none;color:var(--ink)}.bcard p{margin:4px 0 6px;color:var(--ink2);font-size:var(--fs-sm);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.bcard .bm{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:var(--fs-sm)}.bmove{display:inline-flex;gap:4px}.bmove form{margin:0}
.quotenext{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.qline{border-top:1px solid var(--line)}
.mapgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:4px 16px}
.nowrap{white-space:nowrap}
@media (max-width:640px){.funnel .frow{grid-template-columns:100px 1fr 90px}.agsum{flex-direction:column}}

/* Editor visual del sitio: formularios dentro del panel lateral */
body.embed{background:var(--bg,#fff)}.embedc{max-width:none;padding:16px 18px 40px}.embedc .pagehead h1{font-size:1.25rem}.embedc .pagehead{margin-bottom:12px}.embedc .panel{margin-bottom:14px}.embedc .kpis{display:none}

/* ═══════════ Espacio compacto: contenido más ancho y banner de inicio más bajo ═══════════ */
.content{padding:12px 14px 40px;max-width:none}
.hero{min-height:0;margin-bottom:12px}
.hero-text{padding:14px 20px}
.hero h1{font-size:26px;margin:0 0 2px}.hero .sub{margin:0 0 10px}.hero .eyebrow{margin:0 0 2px}
.hero-claim{top:14px;right:20px}
@media(max-width:1180px){.content{padding:12px 12px 40px}}
@media(max-width:760px){.content{padding:10px 10px calc(88px + env(safe-area-inset-bottom))}.hero-text{padding:14px}}

/* ═══════════ CRM: expediente de gestión ═══════════ */
.pbar{display:inline-flex;align-items:center;gap:8px;min-width:96px}.pbar svg{flex:1;height:8px;min-width:60px;display:block}.pbar b{font-size:12px;font-variant-numeric:tabular-nums;min-width:34px;text-align:right}
.pbar .pt{fill:var(--line,#e3e8f0)}.pbar .pf{fill:#e0a526}.pbar .pf.low{fill:#d9822b}.pbar .pf.mid{fill:#e0a526}.pbar .pf.good{fill:#2f80ed}.pbar .pf.done{fill:#1f9d6a}
.pbar.big{display:flex;min-width:0;width:100%}.pbar.big svg{height:14px}.pbar.big b{font-size:20px;min-width:56px}.pbar.small svg{height:6px}.pbar.small{width:100%}
.gstate .pad{display:flex;flex-direction:column;gap:14px}
.gstages{display:flex;flex-wrap:wrap;gap:8px}.gstages form{margin:0}
.gst{display:inline-flex;align-items:center;padding:8px 16px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink2);font:inherit;font-weight:600;cursor:pointer}
button.gst:hover{border-color:var(--accent);color:var(--accent)}.gst.on{background:var(--accent);border-color:var(--accent);color:#fff;cursor:default}.gst.on.ok{background:#1f9d6a;border-color:#1f9d6a}.gst.on.warn{background:#d9822b;border-color:#d9822b}.gst.on.bad{background:#c0392b;border-color:#c0392b}
.gprog{display:flex;flex-direction:column;gap:8px}.gpl{display:flex;align-items:center;gap:14px}.gpl>b{min-width:56px}.gquick{display:flex;gap:6px;flex-wrap:wrap}.gquick form{margin:0}
.gnext{display:flex;align-items:center;gap:10px;margin:0;padding:10px 12px;border-radius:10px;background:var(--bg-soft,#f2f6fc);border:1px solid var(--line)}.gnext.late{background:#fdf0ee;border-color:#f0c4be}.gnext svg{flex:none;width:18px;height:18px}
.gx{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.gmain,.gside{display:flex;flex-direction:column;gap:14px;min-width:0}.gmain .panel,.gside .panel{margin:0}
.crumb{margin:0 0 4px;font-size:var(--fs-sm);color:var(--ink2)}
.gsteps{list-style:none;margin:0;padding:6px 12px}.gsteps li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}.gsteps li:last-child{border-bottom:0}.gsteps form{margin:0}
.gtx{flex:1;min-width:0}.gsteps li.done .gtx{color:var(--ink2);text-decoration:line-through}
.gchk{width:26px;height:26px;border-radius:8px;border:2px solid var(--line);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer;color:#fff;flex:none}.gchk svg{width:16px;height:16px}.gchk.on{background:#1f9d6a;border-color:#1f9d6a}span.gchk{cursor:default}
.gadd{display:flex;gap:8px;padding:12px;border-top:1px solid var(--line)}.gadd input{flex:1;min-width:0}
.ggal{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;padding:12px}
.ggal figure{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface);display:flex;flex-direction:column}
.ggal img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--bg-soft,#eef2f8)}
.ggal figcaption{display:flex;flex-direction:column;gap:2px;padding:8px 10px;font-size:var(--fs-sm)}.ggal figcaption span{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ggal figcaption form{margin-top:4px}
.gup,.gnote{border-top:1px solid var(--line)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--ink2)}.btn.ghost:hover{color:#c0392b;background:#fdf0ee}
.glog{list-style:none;margin:0;padding:6px 14px 14px}.glog li{display:flex;gap:12px;padding:8px 0;position:relative}
.glog li::before{content:"";position:absolute;left:5px;top:22px;bottom:-8px;width:2px;background:var(--line)}.glog li:last-child::before{display:none}
.gdot{width:12px;height:12px;border-radius:50%;background:var(--accent);flex:none;margin-top:5px}.k-etapa .gdot{background:#d9822b}.k-archivo .gdot{background:#7a5af8}.k-paso .gdot,.k-progreso .gdot{background:#1f9d6a}.k-creada .gdot,.k-edicion .gdot,.k-plan .gdot{background:#8a96a8}
.glog p{margin:0}
.attn{border-left:4px solid #d9822b}.attnl{list-style:none;margin:0;padding:4px 14px 12px}.attnl li{display:grid;grid-template-columns:minmax(0,1fr) auto 120px;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.attnl li:last-child{border-bottom:0}.attnl a{color:var(--ink);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attnl a:hover{color:var(--accent)}
.bcard .pbar.small{margin:2px 0 4px}
@media(max-width:1000px){.gx{grid-template-columns:minmax(0,1fr)}.attnl li{grid-template-columns:minmax(0,1fr) auto}.attnl .pbar{display:none}}

/* ═══════════ Formularios del CRM por secciones ═══════════ */
.cform{display:flex;flex-direction:column;gap:14px;max-width:1100px}.cform .panel{margin:0}
.fg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 16px;align-items:start}.fg .field{margin:0}.fg .span3{grid-column:1/-1}.fg .cact{align-self:end;padding-bottom:10px}
.cform .panel>header h2{display:flex;align-items:center;gap:8px}.cform .panel>header h2 svg{width:18px;height:18px;color:var(--accent)}
.savebar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 -6px 18px rgba(20,40,80,.08)}
@media(max-width:900px){.fg{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.fg{grid-template-columns:minmax(0,1fr)}}

/* ═══════════ CRM: formulario de gestión y comunicación ═══════════ */
.gform{display:flex;flex-direction:column;gap:14px;max-width:1040px}.gform .panel{margin:0}
.gsec>header{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.gsec>header h2{display:flex;align-items:center;gap:10px;margin:0}.gsec>header .hint{margin:0}
.gsico{display:inline-flex;width:30px;height:30px;border-radius:9px;background:var(--accent-soft,#e8f0fe);color:var(--accent);align-items:center;justify-content:center}.gsico svg{width:17px;height:17px}
.gsec .row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.gsec .field{margin-bottom:12px}
.gradio{gap:8px}.gradio label.gst{position:relative;margin:0;cursor:pointer}.gradio input{position:absolute;opacity:0;inset:0;cursor:pointer}
.gradio label.gst:has(input:checked){background:var(--accent);border-color:var(--accent);color:#fff}.gradio label.gst.ok:has(input:checked){background:#1f9d6a;border-color:#1f9d6a}.gradio label.gst.warn:has(input:checked){background:#d9822b;border-color:#d9822b}
.gradio label.gst:has(input:focus-visible){outline:3px solid var(--accent-line,#9ec2ff);outline-offset:2px}
.gbar{position:sticky;bottom:0;z-index:5;display:flex;gap:10px;padding:12px 16px;margin:0 -2px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 -6px 18px rgba(20,40,80,.08)}
.gcontact{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line)}
.gtpl{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.gtpl .chip{text-decoration:none}.gtpl .chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.gbtns{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:6px}.gbtns.sec{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.grem{list-style:none;margin:0;padding:4px 14px}.grem li{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.grem li:last-child{border-bottom:0}.grem li.cancelado{opacity:.55}.grem form{margin:0}
.grf,.gcomm{border-top:1px solid var(--line)}.gcomm textarea{min-height:110px}
@media(max-width:700px){.gbar{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom))}.grem li{grid-template-columns:minmax(0,1fr) auto}}
.gsec input[type=time],.gsec input[type=date],.grf input[type=time],.grf input[type=date]{width:100%}

/* ═══════════ CRM: ficha organizada (pasos, siguiente paso, actividad) ═══════════ */
.gnav{display:flex;gap:6px;flex-wrap:wrap;position:sticky;top:0;z-index:6;background:var(--bg,#f4f7fb);padding:8px 0;margin:0 0 6px}
.gnav a{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink);text-decoration:none;font-weight:600;font-size:var(--fs-sm)}.gnav a:hover{border-color:var(--accent);color:var(--accent)}.gnav svg{width:15px;height:15px}
.gsrow{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.gsteps li{padding:8px 0}.gtt{font-weight:500}
.gdue{position:relative}.gdue summary{list-style:none;cursor:pointer}.gdue summary::-webkit-details-marker{display:none}
.gduef{position:absolute;z-index:8;right:0;top:100%;margin-top:4px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;width:310px;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px rgba(20,40,80,.16)}.gduef input{flex:1;min-width:110px}.gduef small{flex-basis:100%}
.gsugg{padding:12px 14px;border-top:1px solid var(--line);background:var(--bg-soft,#f7f9fd)}.gsh{margin:0 0 8px;font-weight:600;font-size:var(--fs-sm);color:var(--ink2)}
.gchips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.gchips form{margin:0}.gchips .chip{cursor:pointer;font:inherit;font-size:var(--fs-sm);padding:6px 12px}.gchips .chip:hover{border-color:var(--accent);color:var(--accent)}.gchips .chip svg{width:14px;height:14px;margin-right:4px}
.gadd{flex-wrap:wrap}.gadd input[type=date],.gadd input[type=time]{flex:0 0 150px}.gaddh{margin:0;padding-top:0}
.gnextc{border-left:4px solid var(--accent)}.gnextc.late{border-left-color:#c0392b}.gnt{margin:0 0 6px;font-size:1.05rem;font-weight:600}.gnd{display:flex;align-items:center;gap:6px;margin:0 0 10px;color:var(--ink2)}.gnd.late{color:#c0392b;font-weight:600}.gnd svg{width:16px;height:16px}
.gdet{border-top:1px solid var(--line);padding:10px 14px}.gdet summary{list-style:none;cursor:pointer;display:inline-flex}.gdet summary::-webkit-details-marker{display:none}.gdet .grf{border-top:0;padding:10px 0 0}
.gkinds{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.gkinds label.chip{position:relative;cursor:pointer;margin:0}.gkinds input{position:absolute;opacity:0;inset:0;cursor:pointer}.gkinds label.chip:has(input:checked){background:var(--accent);border-color:var(--accent);color:#fff}.gkinds label.chip:has(input:focus-visible){outline:3px solid var(--accent-line,#9ec2ff);outline-offset:2px}
.gk{display:inline-block;margin-right:6px;padding:1px 8px;border-radius:999px;background:var(--bg-soft,#eef2f8);font-size:11px;font-weight:700;color:var(--ink2)}
.k-llamada .gdot,.k-visita .gdot,.k-whatsapp .gdot,.k-correo .gdot{background:#0e9aa7}.k-recordatorio .gdot{background:#e0a526}
@media(max-width:700px){.gduef{position:static;width:auto;margin-top:6px}.gnav{overflow-x:auto;flex-wrap:nowrap}}
.gsrow>.gtx{flex:1 1 220px}.gsrow>.gdue{margin-left:auto}
.gside .grem li{grid-template-columns:minmax(0,1fr) auto}.gside .grem li form{grid-column:1/-1;justify-self:start}

/* Mantenimientos: agenda y programación */
.actions-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
td.actions{white-space:nowrap}
td.actions form.inline{display:inline-flex;gap:4px;align-items:center;margin:2px 0}
td.actions input[type=date]{width:128px;padding:4px 6px;font-size:.82rem;height:30px}
td.actions .btn.small{height:30px}
.plainlist{list-style:none;margin:8px 0;padding:0;display:grid;gap:4px}
form.form fieldset{border:0;border-top:1px solid var(--line,#e3e8ef);margin:0 0 12px;padding:10px 0 0}
form.form fieldset legend{font-weight:600;padding:0 6px 0 0;font-size:.9rem}

/* Mapa para ubicar la tienda (configuración de Mat-Mac) */
.sp{margin:8px 0 14px}
.sp-bar{display:flex;gap:8px;flex-wrap:wrap;position:relative;margin-bottom:8px}
.sp-bar .sp-search{flex:1;min-width:220px;position:relative}
.sp-bar input[type=search]{width:100%}
.sp-sugg{position:absolute;left:0;right:0;top:100%;z-index:20;margin:2px 0 0;padding:0;list-style:none;background:var(--surface,#fff);border:1px solid var(--line,#d6dde6);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);max-height:240px;overflow:auto}
.sp-sugg[hidden]{display:none}
.sp-sugg li{padding:8px 12px;cursor:pointer;font-size:.88rem}
.sp-sugg li:hover{background:var(--hover,#eef3fb)}
.sp-map{position:relative;height:340px;overflow:hidden;border:1px solid var(--line,#d6dde6);border-radius:10px;background:#dfe6dc;touch-action:none;cursor:grab;user-select:none}
.sp-map:focus-visible{outline:3px solid #1f5fd1;outline-offset:2px}
.sp-tiles{position:absolute;left:0;top:0;width:0;height:0}
.sp-tiles img{position:absolute;width:256px;height:256px;max-width:none;pointer-events:none}
.sp-pin{position:absolute;left:50%;top:50%;width:24px;height:24px;margin:-32px 0 0 -12px;background:#d63a2f;border:3px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 2px 6px rgba(0,0,0,.4);z-index:3}
.sp-pin::after{content:"";position:absolute;left:5px;top:5px;width:8px;height:8px;background:#fff;border-radius:50%}
.sp-zoom{position:absolute;right:8px;top:8px;display:flex;flex-direction:column;gap:4px;z-index:5}
.sp-zoom button{width:36px;height:36px;font:700 1.2rem/1 inherit;background:#fff;border:1px solid var(--line,#c5cdd8);border-radius:8px;cursor:pointer}
.sp-attr{position:absolute;left:6px;bottom:4px;font-size:.68rem;background:rgba(255,255,255,.8);padding:1px 5px;border-radius:4px;z-index:5}

/* Adjuntos de tareas, asignaciones y comunicados */
.attach-f{border:0;border-top:1px solid var(--line2);margin:14px 0 4px;padding:10px 0 0}.attach-f legend{font-weight:600;font-size:.9rem;padding-right:6px}
.attach-grid{display:flex;flex-wrap:wrap;gap:10px}.attach-grid a{display:block;border:1px solid var(--line2);border-radius:var(--r);overflow:hidden;background:var(--surface2)}
.attach-grid img{display:block;width:150px;height:110px;object-fit:cover}
.attach-links{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:6px}.attach-links a{word-break:break-all}

/* Logo horizontal de MetalOS, sin fondo */
.top .brand{width:260px;padding:0 20px;background:none;justify-content:center}
.top .brand::after{display:none}
.blogo{display:block;height:auto;width:auto;max-width:200px;max-height:48px;object-fit:contain;object-position:center}
.logincard .blogo{max-width:260px;max-height:70px}
@media (max-width:900px){.top .brand{width:auto;padding:0 10px}.blogo{max-width:150px;max-height:38px}}
.offline .off-logo{width:auto;height:110px;max-width:100%;margin:0 auto 10px;display:block}

/* Portada: la foto empieza donde termina el botón Buscar, para tapar menos el texto */
.hero{background:linear-gradient(90deg,#fff 0%,#fff 35%,rgba(255,255,255,.6) 38%,rgba(255,255,255,0) 43%),url(/static/hero-banner.jpg) right center/64% 100% no-repeat,#fff}
@media(max-width:1100px){.hero{background:linear-gradient(90deg,#fff 0%,#fff 45%,rgba(255,255,255,.6) 50%,rgba(255,255,255,0) 58%),url(/static/hero-banner.jpg) right center/56% 100% no-repeat,#fff}}
@media(max-width:900px){.hero{background:linear-gradient(90deg,rgba(255,255,255,.95),rgba(255,255,255,.7)),url(/static/hero-banner.jpg) right center/cover no-repeat,#d4eafc}}

.top .brand{padding:0 12px}
.blogo{max-width:236px;max-height:58px}

/* Usuarios y accesos */
.uhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.uact{display:flex;gap:8px;flex-wrap:wrap;padding-top:6px}
.ustats{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 14px}.ustat{display:flex;flex-direction:column;min-width:120px;padding:10px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);text-decoration:none}
.ustat b{font-size:22px;line-height:1.1}.ustat span{font-size:13px;color:var(--ink2)}.ustat.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.ustat:hover{border-color:var(--accent)}
.utag{display:inline-block;margin:1px 4px 1px 0;padding:1px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;white-space:nowrap}
.prgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.prcard{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:var(--surface)}
.prcard:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.prcard small{display:block;color:var(--ink2);font-size:13px;margin-top:2px}.prcard input{margin-top:4px}
.notice.ok{background:#e8f6ee;border-color:#9fd5b5}.notice.warn{background:#fff6e0;border-color:#f0cf80}
.mx-alt{margin:12px 0 0;text-align:center;font-size:13px;color:rgba(190,205,220,.85)}.mx-alt a{color:#8fd0ff}
.mx-ok{margin:0 0 14px;padding:9px 12px;border-radius:4px;background:rgba(60,200,120,.12);border:1px solid rgba(90,220,150,.5);color:#bff0d3;font-size:14px}
.prcard>span{flex:1;min-width:0;text-align:left;display:block}.prcard>span b{display:block}.prgrid{padding-bottom:6px}.prcard{height:auto}

.emp-pick{position:relative}.emp-list{position:absolute;z-index:30;left:0;right:0;top:100%;margin:4px 0 0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh2,0 8px 24px rgba(0,0,0,.14));max-height:320px;overflow:auto}
.emp-list li{display:block;padding:8px 10px;border-radius:8px;cursor:pointer}.emp-list li:hover,.emp-list li.on{background:var(--accent-soft)}.emp-list b{display:block}.emp-list small{color:var(--ink2)}
.emp-chosen{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:8px 12px;border-radius:12px;background:var(--accent-soft);border:1px solid var(--accent-line,var(--line))}.emp-chosen[hidden]{display:none}

/* Talento Humano: inicio, vacaciones y solicitud */
.thhero{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:0 0 16px}.thhero h1{margin:0}.thhi{margin:0 0 2px;color:var(--accent);font-weight:600;font-size:15px}.thhero .sub{margin:4px 0 0}
.thact{display:flex;gap:8px;flex-wrap:wrap}.thact .btn{display:inline-flex;align-items:center;gap:6px}
.thkpis,.vks{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 16px}
.thk,.vk{position:relative;display:grid;grid-template-columns:auto 1fr;column-gap:12px;align-items:center;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);text-decoration:none}
.thk:hover,.vk:hover{border-color:var(--accent-line,var(--accent));color:var(--ink)}
.thki{grid-row:1/3;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}
.thk b,.vk b{font-size:26px;line-height:1.05;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.vk{grid-template-columns:1fr}.vk b.sm{font-size:19px;line-height:1.4}
.thk span:last-child,.vk span{color:var(--ink2);font-size:13px;line-height:1.3}
.thk.warn .thki{background:var(--warn-bg,#fff3d6);color:var(--warn,#a86a00)}.vk.warn b{color:var(--warn,#a86a00)}.thk.bad .thki{background:var(--bad-bg,#fde8e6);color:var(--bad,#c0392b)}.thk.bad b{color:var(--bad,#c0392b)}.vk.on b{color:var(--accent)}
.thgrid,.vgrid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:8px}
@media(max-width:1000px){.thgrid,.vgrid{grid-template-columns:1fr}}
.thtodo,.vaway{list-style:none;margin:0;padding:6px 8px}.thtodo li a{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:10px;color:var(--ink);text-decoration:none}.thtodo li a:hover{background:var(--accent-soft)}.thtodo li a span{flex:1}.thtodo .ico{color:var(--ink2)}
.thtodo .n{min-width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:16px;font-weight:650;background:var(--accent-soft);color:var(--accent)}.thtodo .n.warn{background:var(--warn-bg,#fff3d6);color:var(--warn,#a86a00)}.thtodo .n.bad{background:var(--bad-bg,#fde8e6);color:var(--bad,#c0392b)}
.vaway li{display:flex;align-items:center;gap:12px;padding:9px 8px;border-bottom:1px solid var(--line)}.vaway li:last-child{border-bottom:0}.vwho{flex:1;min-width:0;display:flex;flex-direction:column}.vwho small,.vwhen small{color:var(--ink2);font-size:12.5px}.vwhen{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right}
.thsec{margin:20px 0 10px;font-size:16px}.thcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}
.thc{display:flex;gap:14px;align-items:flex-start;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);text-decoration:none;transition:border-color .15s,transform .15s}
.thc:hover{border-color:var(--accent);transform:translateY(-1px);color:var(--ink)}.thci{flex:none;width:42px;height:42px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}
.thct{display:flex;flex-direction:column;gap:3px}.thct b{font-size:15px}.thct span{color:var(--ink2);font-size:13.5px;line-height:1.35}
td.num,th.num{text-align:right}

.vaway{max-height:360px;overflow:auto}

.row[hidden],.row3[hidden],.row4[hidden]{display:none}
.vtop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px}
#calc ul{margin:6px 0 4px;padding-left:18px}#calc p{margin:2px 0}

/* Tablas de procesos: código compacto, asunto en dos líneas máximo, nombres legibles */
td.codecell{width:1%;white-space:nowrap;padding-right:6px}
.code{font-family:var(--mono);font-size:11.5px;color:var(--ink2);background:var(--bg2,#eef1f6);border-radius:6px;padding:2px 6px;letter-spacing:0}
td a.subj{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35;min-width:150px}
td.who{font-size:13px;color:var(--ink2);min-width:110px}
.panel td,.panel th{padding-top:8px;padding-bottom:8px}
td.typ{font-size:13px;color:var(--ink2);max-width:170px;line-height:1.35}

/* Registro de entrada y salida */
.attcard{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 20px;margin:0 0 16px;background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--ink3);border-radius:var(--r-lg)}
.attcard.in{border-left-color:var(--ok)}
.attcard .ac-main{display:flex;flex-direction:column;gap:3px;min-width:220px;flex:1}.attcard .ac-main b{font-size:1.25rem}.attcard small,.attcard .ac-time{color:var(--ink2);font-size:13px}
.attcard .ac-timer{font-variant-numeric:tabular-nums;color:var(--ink)}
.attcard form{display:flex;flex-direction:column;align-items:stretch;gap:4px;min-width:200px}.attcard .btn.big{width:100%;min-height:52px;font-size:1.05rem}
.attcard .btn.out{background:var(--ink);color:#fff;border-color:var(--ink)}
.attcard .ac-off{margin:0;max-width:260px}
.kpis.presence{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.kpi.big-in{grid-column:span 2;border-left:5px solid var(--ok)}.kpi.big-in b{font-size:34px}.kpi.big-in b small{font-size:16px;color:var(--ink2);font-weight:500}
a.kpi{text-decoration:none;color:inherit}
.areabars{list-style:none;margin:0;padding:0;display:grid;gap:10px}.areabars li{display:grid;grid-template-columns:minmax(110px,180px) 1fr minmax(180px,auto);gap:12px;align-items:center}
.areabars .ab-name{font-weight:600;font-size:14px}.areabars .ab-bar{display:flex;height:12px;background:var(--line);border-radius:6px;overflow:hidden}.areabars .ab-bar i{display:block;height:100%}
.areabars .ab-bar .ab-in{background:var(--ok)}.areabars .ab-bar .ab-out{background:var(--ink3)}.areabars .ab-n{font-size:13px;color:var(--ink2)}
@media(max-width:700px){.areabars li{grid-template-columns:1fr}.kpi.big-in{grid-column:span 1}}
.presline{display:flex;align-items:baseline;gap:10px}.presline b{font-size:34px;font-variant-numeric:tabular-nums}.presline span{color:var(--ink2)}
.ab-bar.wide{display:flex;height:12px;background:var(--line);border-radius:6px;overflow:hidden;margin:6px 0}.ab-bar.wide i.ab-in{display:block;height:100%;background:var(--ok)}
.kpi.txt b{font-size:20px;line-height:1.2}
.vmg{display:flex;align-items:center;gap:14px}.vmg h1{margin:0}.vmg .sub{margin:2px 0 0}

/* Decisión única sobre una solicitud */
.decision .decopts{display:grid;gap:6px;margin:8px 0 12px}
.decopt{display:flex;gap:10px;align-items:flex-start;padding:9px 11px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);cursor:pointer}
.decopt input{margin-top:3px}
.decopt span{display:flex;flex-direction:column;gap:1px}
.decopt small{color:var(--muted,#6b7280);font-size:.82em}
.decopt.on{border-color:var(--primary,#1d5fd1);box-shadow:0 0 0 1px var(--primary,#1d5fd1) inset}
.certbox{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.certbox input{flex:1 1 200px;min-width:160px}

/* Promociones: tipos, formulario y panel de ganancia */
.promo-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:16px;align-items:start}
.promo-side{position:sticky;top:12px}
@media (max-width:900px){.promo-grid{grid-template-columns:1fr}.promo-side{position:static}}
.ptype-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-top:6px}
.ptype{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);cursor:pointer;position:relative}
.ptype input{position:absolute;opacity:0;inset:0;cursor:pointer}
.ptype small{color:var(--muted,#6b7280);font-size:.82em}
.ptype.on{border-color:var(--primary,#1d5fd1);box-shadow:0 0 0 1px var(--primary,#1d5fd1) inset;background:var(--surface2)}
.ptype:focus-within{outline:2px solid var(--primary,#1d5fd1);outline-offset:2px}
.pcfg [hidden],.pscope[hidden],[data-pick][hidden],.pcombo[hidden]{display:none!important}
.combo-row{display:grid;grid-template-columns:minmax(0,1fr) 90px;gap:10px}
.gan h3{margin:0 0 8px;font-size:1rem}
.gtab{width:100%;border-collapse:collapse;font-size:.92em}
.gtab th{text-align:left;font-weight:600;color:var(--muted,#6b7280);padding:4px 6px}
.gtab td{padding:6px;border-top:1px solid var(--line)}
.gtab tr.g-ok td:nth-child(4),.gtab tr.g-ok td:nth-child(5){color:#15803d}
.gtab tr.g-warn td:nth-child(4),.gtab tr.g-warn td:nth-child(5){color:#b45309}
.gtab tr.g-bad td{background:#fef2f2}.gtab tr.g-bad td:nth-child(4),.gtab tr.g-bad td:nth-child(5){color:#b91c1c}
.gtab tr.gnote td{border-top:0;padding:0 6px 8px;color:var(--muted,#6b7280);font-size:.88em}
.gwarn{margin:8px 0}
@media (prefers-color-scheme:dark){.gtab tr.g-bad td{background:#3b1414}.gtab tr.g-ok td:nth-child(4),.gtab tr.g-ok td:nth-child(5){color:#4ade80}}
.promo-form.form{max-width:none}
.promo-grid{grid-template-columns:minmax(0,1.35fr) minmax(320px,1fr)}
.gan .gtab td,.gan .gtab th{white-space:nowrap}.gan .gtab tr.gnote td{white-space:normal}

/* Marcación: escáner y QR en vivo */
.ac-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.ac-actions form{margin:0}
.scanbox{position:relative;margin:12px 0;border-radius:14px;overflow:hidden;background:#0f172a;min-height:120px;display:none}
.scanbox.on{display:block}.scanbox video{display:block;width:100%;max-height:60vh;object-fit:cover}
.scanframe{position:absolute;inset:18%;border:3px solid #fff;border-radius:14px;box-shadow:0 0 0 999px rgba(0,0,0,.35);pointer-events:none}
.qrgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}
.qrlive{max-width:360px;margin:0 auto}.qrlive .qrimg{background:#fff;border-radius:12px;padding:8px;min-height:200px}.qrlive .qrimg svg{width:100%;height:auto;display:block}
.qrlive .k-bar{height:6px;background:var(--line);border-radius:3px;margin-top:8px;overflow:hidden}.qrlive .k-bar i{display:block;height:100%;width:100%;background:var(--accent,#1d5fd1)}

/* ── Vacaciones: disposición principal + lateral, tarjeta de saldo ── */
.vlay{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
.vlay>.vmain,.vlay>.vside{display:flex;flex-direction:column;gap:16px;min-width:0}
.vlay .panel{margin:0}
.vside{position:sticky;top:12px}
@media(max-width:1100px){.vlay{grid-template-columns:1fr}.vside{position:static}}
.vbal{padding:18px;display:flex;flex-direction:column;gap:12px}
.vbal .vn{display:flex;align-items:baseline;gap:8px}.vbal .vn b{font-size:40px;line-height:1;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--accent)}
.vbal .vn span{color:var(--ink2);font-size:13px}.vbal.low .vn b{color:var(--bad)}.vbal.warn .vn b{color:var(--warn)}
.vbar{height:8px;border-radius:99px;background:var(--muted-bg);overflow:hidden}.vbar i{display:block;height:100%;border-radius:99px;background:var(--accent)}
.vbal.low .vbar i,.vbar.low i{background:var(--bad)}.vbal.warn .vbar i,.vbar.warn i{background:var(--warn)}
.vbar-cap{display:flex;justify-content:space-between;color:var(--ink3);font-size:11.5px;margin-top:-6px}
.vcalc{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.vcalc li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px;color:var(--ink2)}
.vcalc li b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.vcalc li.tot{border-bottom:0;color:var(--ink)}.vcalc li.tot b{color:var(--accent);font-size:15px}
.vside .notice{margin:0}
.vhelp{margin:0;padding:12px 16px;border-top:1px solid var(--line);color:var(--ink2);font-size:12.5px}.vhelp summary{cursor:pointer;color:var(--ink);font-weight:600}.vhelp p{margin:8px 0 0}
.vmini{display:flex;align-items:center;gap:10px;justify-content:flex-end}.vmini .vbar{width:64px;height:6px}
.vwho small.muted-text{color:var(--ink3)}
.vtabs{display:flex;gap:6px;flex-wrap:wrap;padding:0 16px 12px}
.vreg summary{cursor:pointer;list-style:none;padding:14px 16px;font-weight:600;display:flex;justify-content:space-between;align-items:center}.vreg summary::-webkit-details-marker{display:none}
.vreg summary::after{content:"+";color:var(--ink2);font-size:18px}.vreg[open] summary::after{content:"–"}.vreg[open] summary{border-bottom:1px solid var(--line)}
.vpend{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line)}.vpend:last-child{border-bottom:0}
.vpend .vwho b{font-size:14px}
.vcount{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:99px;background:var(--warn-bg);color:var(--warn);font-size:12px;font-weight:700;margin-left:8px}
.vcalc li small{color:var(--ink3);font-size:12px}

/* ── Vacaciones: versión compacta (se ve bien al 100 %) ── */
.vmod{font-size:13px}
.vmod .vks{grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:8px;margin:0 0 12px}
.vmod .vk{padding:9px 12px}.vmod .vk b{font-size:20px}.vmod .vk span{font-size:12px}
.vmod .vlay{grid-template-columns:minmax(0,1fr) 300px;gap:12px}.vmod .vlay>.vmain,.vmod .vlay>.vside{gap:12px}
@media(max-width:1180px){.vmod .vlay{grid-template-columns:1fr}}
.vmod .panel>header{padding:9px 14px}.vmod .panel>header h2{font-size:14px;margin:0}
.vmod .pad{padding:10px 14px}
.vmod .filters{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;padding:10px 14px}
.vmod .filters>div{flex:1 1 130px;min-width:0}.vmod .filters label{font-size:11.5px;margin-bottom:2px}
.vmod .filters input,.vmod .filters select{height:32px;padding:4px 8px;font-size:13px;width:100%}
.vmod .filters .btn{height:32px;padding:0 14px;font-size:13px}
.vmod table th{padding:7px 10px;font-size:11px}.vmod table td{padding:7px 10px;font-size:13px}
.vmod .btn.small{padding:3px 9px;font-size:12px}
.vmod .vaway li{flex-wrap:wrap;gap:6px 10px;padding:8px 10px}.vmod .vwho{flex:1 1 150px}.vmod .vwho small,.vmod .vwhen small{font-size:12px}
.vmod .vwhen{flex-direction:row;align-items:center;gap:8px;text-align:left}
.vmod .vbal{padding:14px;gap:10px}.vmod .vbal .vn b{font-size:30px}
.vmod .vcalc li{padding:6px 0;font-size:12.5px}
.vmod .vhelp{padding:10px 14px;font-size:12px}
.vmod .vpend{padding:10px 14px}.vmod .vreg summary{padding:11px 14px}
.vmod .vmini .vbar{width:52px}
.vmod .avatar{transform:scale(.9)}

/* ── Escala general de la aplicación en escritorio (0.85 = 85 %). Cambie --z para ajustar: .75 más pequeño, 1 sin reducción ── */
@media(min-width:901px){
  :root{--z:.85}
  .shell{zoom:var(--z);min-height:calc(100vh / var(--z))}
  .side{height:calc(100vh / var(--z) - 64px)}
  .chatshell{height:calc(100vh / var(--z) - 150px)}
}
.vmod .vchk{display:flex;align-items:center;gap:6px;flex:0 0 auto;height:32px;font-size:13px;color:var(--ink2);cursor:pointer;white-space:nowrap}.vmod .vchk input{width:auto;height:auto;margin:0}

/* ── Gift cards (Mad Mac) ── */
.gcv{display:flex;flex-direction:column;gap:4px;align-items:flex-start;padding:16px 18px;border:1px solid var(--line);border-left:4px solid var(--ok);border-radius:var(--r);background:var(--ok-bg)}
.gcv-bal{font-size:1.9rem;line-height:1.1}
.gcv-code{font-family:var(--mono);font-size:1.05rem;letter-spacing:.06em;user-select:all}
.gcv.vencida,.gcv.anulada,.gcv.pendiente{border-left-color:var(--line);background:transparent}
.gcv.vencida .gcv-bal,.gcv.anulada .gcv-bal,.gcv.pendiente .gcv-bal{opacity:.55}
.gdp{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.gdp .gdopt{position:relative;display:block;cursor:pointer;border:2px solid var(--line);border-radius:8px;padding:5px;background:var(--surface)}
.gdp .gdopt input{position:absolute;opacity:0;pointer-events:none}
.gdp .gdopt img{width:100%;height:auto;display:block;border-radius:6px}
.gdp .gdopt span{display:block;text-align:center;font-size:var(--fs-xs);margin-top:3px}
.gdp .gdopt:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-line)}
.gdp .gdopt:focus-within{outline:2px solid var(--accent)}
.gcimg{width:100%;max-width:500px;height:auto;display:block;border-radius:12px;margin-bottom:12px}
.gcinfo{margin:6px 0;font-size:var(--fs-xs)}.gcinfo.ok{color:var(--ok)}.gcinfo.bad{color:var(--bad)}
.gccam{margin:8px 0}.gccam video{max-width:100%;border-radius:8px;display:block;margin-bottom:6px}

/* Pedido de Mat Mac (admin): pasos, siguiente acción y resumen del pago */
.ordgrid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--sp4);align-items:start}
.ordgrid>aside{position:sticky;top:76px}
.osteps{list-style:none;display:flex;gap:6px;margin:0 0 var(--sp4);padding:0}
.osteps li{flex:1;min-width:0;padding-top:9px;border-top:4px solid var(--line2);font-size:var(--fs-sm);color:var(--ink3)}
.osteps li.done{border-top-color:var(--ok);color:var(--ink2)}
.osteps li.now{border-top-color:var(--accent);color:var(--ink);font-weight:600}
.osteps li.bad{border-top-color:var(--bad);color:var(--bad);font-weight:600}
.nextact .btn.primary{width:100%;justify-content:center;padding:10px 14px;font-weight:600}
.nextact .pad>form+form,.nextact .pad>form+p,.nextact .pad>p+form{margin-top:var(--sp3)}
.nextact .pad .field{margin-bottom:var(--sp3)}
.nextact form.inline{display:flex;gap:var(--sp2);align-items:center}.nextact form.inline input{flex:1;min-width:0}
.payhow{margin:0 0 var(--sp3);font-weight:600}
.payrows{display:grid;grid-template-columns:1fr auto;gap:6px 12px;margin:0}.payrows dt{color:var(--ink2)}.payrows dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.payrows .due{padding-top:8px;border-top:1px solid var(--line);font-weight:600;color:var(--ink)}.payrows dd.warn{color:var(--warn)}.payrows dd.ok{color:var(--ok)}
@media(max-width:1000px){.ordgrid{grid-template-columns:1fr}.ordgrid>aside{position:static}.osteps{flex-wrap:wrap}.osteps li{flex:1 1 30%}}

/* Etiquetas QR (perchas y productos) */
.markbar{display:inline-flex;gap:6px}.panel>header .actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.chooser{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.choice{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer}.choice:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.choice small{display:block;color:var(--ink2);font-size:var(--fs-sm)}
.lblprods{max-height:380px;overflow:auto}.lblprods thead th{position:sticky;top:0;background:var(--surface2)}
.stickybar{position:sticky;bottom:0;display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh2);margin-bottom:var(--sp4)}.stickybar b{margin-right:auto}

/* Inventario físico */
.cnt-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:var(--sp4)}
.cnt-sum>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px}.cnt-sum b{display:block;font-size:var(--fs-xl);font-variant-numeric:tabular-nums}.cnt-sum b small{font-size:var(--fs);font-weight:500;color:var(--ink2)}
.cnt-sum span{color:var(--ink2);font-size:var(--fs-sm)}.cnt-sum .bad b{color:var(--bad)}
.scanrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:var(--sp3)}.scanrow input[type=text]{flex:1;min-width:200px;font-size:var(--fs-lg);padding:10px 12px}.rackpick{margin-top:var(--sp3)}.rackpick label{color:var(--ink2)}
.qtyform{margin-top:var(--sp3);padding:14px;border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:var(--r)}.qtyhead{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:var(--sp3)}
.qtyform input[type=text]{font-size:26px;padding:10px 12px;max-width:200px;font-variant-numeric:tabular-nums}
.pendlist{margin:8px 0 0;padding-left:18px;columns:2}.pendlist li{margin:2px 0}
.mmsub.inner{padding:0 16px}tr.row-bad td{background:var(--bad-bg)}tr.row-over td{background:var(--info-bg)}
@media(max-width:700px){.pendlist{columns:1}.stickybar .btn{flex:1}}
.rackpick select{flex:1;min-width:200px;max-width:420px}

/* Etiqueta de 9 × 5 cm, 2 columnas en A4. Zonas fijas: QR | cuerpo | pie. Blanco y negro para impresoras térmicas. */
@page a4{size:A4;margin:10mm}@page roll{size:90mm 50mm;margin:0}
.lbsheet{display:grid;justify-content:center;margin:0 auto}.lbsheet.a4{page:a4;grid-template-columns:repeat(2,90mm);gap:2mm 5mm}.lbsheet.roll{page:roll;grid-template-columns:90mm;gap:6mm 0}
.lb{width:90mm;height:50mm;box-sizing:border-box;margin:0;padding:3mm 3.5mm 0;display:grid;grid-template-columns:36mm minmax(0,1fr);grid-template-rows:minmax(0,1fr) 7mm;grid-template-areas:"q body" "foot foot";column-gap:3.5mm;background:#fff;color:#000;overflow:hidden;break-inside:avoid;outline:.2mm dashed #9aa4b2;font-family:Inter,"Segoe UI",system-ui,Arial,sans-serif}
.lbq{grid-area:q;display:flex;align-items:center;justify-content:center;min-width:0}.lbq .qr{width:36mm;height:36mm;display:block}
.lbbody{grid-area:body;display:flex;flex-direction:column;justify-content:space-between;min-width:0;min-height:0;padding-bottom:1.5mm}
.lbname{font-size:4.4mm;font-weight:700;line-height:1.12;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.lbprice{display:flex;flex-direction:column;align-items:flex-start;gap:1mm}
.lbfoot{grid-area:foot;display:flex;justify-content:space-between;align-items:center;gap:3mm;border-top:.25mm solid #000;min-width:0}
.lbsku{font-size:3.2mm;font-weight:800;letter-spacing:.03em;white-space:nowrap}.lbnote{font-size:2.8mm;color:#222;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.lp{display:inline-flex;align-items:flex-start;line-height:.9;font-variant-numeric:tabular-nums;white-space:nowrap}
.lp .cur{font-style:normal;font-weight:800;font-size:8mm;margin-top:1.6mm;margin-right:.5mm}.lp .int{font-weight:800;letter-spacing:-.03em;font-size:20mm}.lp .dec{font-style:normal;font-weight:800;font-size:8.5mm;margin-top:1.6mm;margin-left:.7mm}
.lp.n2 .int{font-size:17mm}.lp.n3 .int{font-size:13mm}.lp.n4 .int{font-size:10mm}.lp.n3 .cur,.lp.n3 .dec,.lp.n4 .cur,.lp.n4 .dec{font-size:6mm;margin-top:1mm}
.lb.off .lp .int{font-size:14mm}.lb.off .lp.n2 .int{font-size:12mm}.lb.off .lp.n3 .int{font-size:10mm}.lb.off .lp.n4 .int{font-size:8mm}.lb.off .lp .cur,.lb.off .lp .dec{font-size:6.5mm;margin-top:1.1mm}.lb.off .lp.n3 .cur,.lb.off .lp.n3 .dec,.lb.off .lp.n4 .cur,.lb.off .lp.n4 .dec{font-size:5mm;margin-top:.8mm}
.lboff{display:flex;align-items:center;gap:2.5mm;width:100%}.lbpct{flex:none;background:#000;color:#fff;font-weight:800;font-size:8mm;line-height:1;padding:1.2mm 2.2mm;border-radius:1.3mm;letter-spacing:-.02em}
.lbwas{display:flex;flex-direction:column;line-height:1.05;color:#222;white-space:nowrap;min-width:0}.lbwas small{font-size:2.8mm}.lbwas s{font-size:3.6mm;font-weight:700;text-decoration-thickness:.4mm}
.lb.off .lbname{font-size:3.9mm}.lb.off .lbnote{font-weight:700;color:#000}
.lbtag{font-size:3mm;letter-spacing:.18em;text-transform:uppercase;font-weight:700}.lbrack{font-weight:800;line-height:1;letter-spacing:-.01em;white-space:nowrap}.lbrack.k1{font-size:15mm}.lbrack.k2{font-size:8.5mm}.lbrack.k3{font-size:7mm}
.lb.rack .lbbody{justify-content:center;gap:2mm}.lb.rack .lbname{font-size:4.6mm}
@media screen{.lbsheet .lb{box-shadow:var(--sh1);outline:none;border:1px solid var(--line2)}}
@media print{.lbsheet.roll .lb{outline:none;break-after:page}.certbody{background:#fff;padding:0}}

/* ── Ficha de usuario: encabezado, perfiles, flujo de aprobación y permisos por tema ── */
.backlink{display:inline-block;margin:0 0 8px;color:var(--ink2);font-size:var(--fs-sm);text-decoration:none}.backlink:hover{color:var(--accent)}
.uhero{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:16px 18px;margin-bottom:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.uhero .pav.lg{flex:none}.uhero-main{flex:1;min-width:240px}.uhero-main h1{margin:0 0 2px;font-size:22px}.uhero-meta{margin:2px 0;color:var(--ink2);font-size:var(--fs-sm)}.uhero-meta b{color:var(--ink)}
.uhero-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:360px}
.inl{display:inline;margin-left:8px}
.prlist{display:flex;flex-direction:column;gap:8px}
.prrow{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.prrow.on{border-color:var(--ok);background:var(--ok-bg,#e8f6ee)}.prrow small{display:block;color:var(--ink2);font-size:13px;margin-top:2px}
.prtick{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-size:13px;font-weight:700;color:#fff}.prrow.on .prtick{background:var(--ok);border-color:var(--ok)}
.udet summary{cursor:pointer;font-weight:600;margin-bottom:8px}
.pgrp{border-bottom:1px solid var(--line)}.pgrp:last-child{border-bottom:0}.pgrp summary{display:flex;justify-content:space-between;align-items:center;padding:10px 4px;cursor:pointer}
.ptab{width:100%;border-collapse:collapse;margin:0 0 8px}.ptab td{padding:6px 4px;border-top:1px solid var(--line);vertical-align:top;font-size:var(--fs-sm)}.ptab .pscope{text-align:right;white-space:nowrap;color:var(--ink2)}
.aprflow{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.aprstep{display:flex;gap:12px;align-items:center;padding:10px 0;position:relative}.aprstep+.aprstep{border-top:1px dashed var(--line)}
.aprstep small{display:block;color:var(--ink2);font-size:12.5px}.aprstep b{display:block}
.aprn{flex:none;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:13px;background:var(--accent-soft);color:var(--accent)}
.aprstep.ok .aprn{background:var(--ok);color:#fff}.aprstep.warn .aprn{background:var(--warn-bg,#fff6e0);color:var(--warn);border:1px solid var(--warn)}
.aprstep.warn b{color:var(--warn)}
.areagrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 14px}.areaopt{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:8px}
@media(max-width:700px){.uhero-tags{justify-content:flex-start;max-width:none}.prrow{flex-wrap:wrap}}
.ugrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(430px,1fr));gap:14px;align-items:start}.ucol{min-width:0}
.areagrid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.areaopt label{white-space:nowrap}
@media(max-width:520px){.ugrid{grid-template-columns:1fr}}

/* ── RP: formulario y gestión ── */
.rpform{max-width:920px}
.rpsec>header h2{display:flex;align-items:center;gap:10px}
.rpn{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;font-size:var(--fs-sm);font-weight:700}
.prgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--sp2)}
.prcard{display:block;position:relative;cursor:pointer}
.prcard input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.prcard>span{display:flex;flex-direction:column;gap:2px;height:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.prcard:hover>span{border-color:var(--accent)}
.prcard input:checked+span{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--hover)}
.prcard input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
.prcard small{color:var(--ink2);font-size:var(--fs-xs);line-height:1.35}
.rpwho{font-style:normal;font-size:var(--fs-xs);color:var(--accent);font-weight:600;margin-top:2px}
.rpsub{margin-top:var(--sp3)}
.rpmore{margin-top:var(--sp2)}.rpmore>summary{cursor:pointer;color:var(--accent);font-weight:600;font-size:var(--fs-sm)}
.rproute .rpsteps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--sp2)}
.rpsteps li{flex:1 1 150px;padding:8px 12px;border-left:3px solid var(--accent);background:var(--surface2);border-radius:0 8px 8px 0}
.rpsteps b{display:block}.rpsteps small{color:var(--ink2)}
.rpform:has(input[name="f_tipo_solicitud"][data-pay="0"]:checked) :is(.rppay,.paystep){display:none}
.rphead{display:flex;flex-wrap:wrap;gap:var(--sp3);justify-content:space-between;align-items:flex-start}
.rphead .uact{display:flex;gap:var(--sp2);flex-wrap:wrap}
.rptable .subj{font-weight:600}.rptable .num{text-align:right;white-space:nowrap}
.rptable .codecell{white-space:nowrap;font-variant-numeric:tabular-nums}
.rpact{white-space:nowrap}.rpact .inl,.rpact details{display:inline-block;vertical-align:top}
.rpedit[open]{display:block;white-space:normal;min-width:320px;margin:6px 0}
.rpedit>summary{list-style:none;cursor:pointer}.rpedit>summary::-webkit-details-marker{display:none}
.rpedit form{padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface2)}
.backlink{display:inline-block;margin-bottom:var(--sp2);color:var(--ink2);text-decoration:none;font-size:var(--fs-sm)}
tr.muted td{color:var(--ink2)}
.rpform .prcard{border:0;padding:0;margin:0;background:none;box-shadow:none;font-weight:400;display:block}
.rpform .prcard>span b{font-weight:600}
.prgrid2{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:var(--sp3)}
.rpfacts{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--sp3) var(--sp4)}
.rpfact span{display:block;font-size:var(--fs-xs);color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}
.rpfact b{display:block;font-weight:600;overflow-wrap:anywhere}.rpfact.wide{grid-column:span 2}
.rpflow{list-style:none;margin:var(--sp4) 0 0;padding:var(--sp3) 0 0;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:var(--sp2)}
.rpflow li{flex:1 1 130px;position:relative;padding:8px 10px 8px 26px;border-radius:8px;background:var(--surface2);color:var(--ink2)}
.rpflow li b{display:block;color:var(--ink)}.rpflow li small{display:block;font-size:var(--fs-xs)}
.rpflow .dot{position:absolute;left:9px;top:13px;width:10px;height:10px;border-radius:50%;border:2px solid var(--line);background:var(--surface)}
.rpflow .done .dot{background:var(--ok,#1a8a4a);border-color:var(--ok,#1a8a4a)}
.rpflow .now{background:var(--hover);box-shadow:inset 0 0 0 1px var(--accent)}.rpflow .now .dot{background:var(--accent);border-color:var(--accent)}
.rpflow .skip{opacity:.55;text-decoration:line-through}.rpnote{margin:var(--sp3) 0 0}
.rpkpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--sp3);margin:var(--sp3) 0}
.rpkpi{display:block;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface);text-decoration:none;color:var(--ink)}
.rpkpi b{display:block;font-size:var(--fs-xl,24px);line-height:1.1}.rpkpi span{font-size:var(--fs-sm);color:var(--ink2)}
.rpkpi.warn{border-color:var(--accent)}.rpkpi.warn b{color:var(--accent)}.rpkpi.on{box-shadow:inset 0 0 0 1px var(--accent)}
.rpsummary{display:flex;flex-wrap:wrap;gap:var(--sp2) var(--sp5);padding:12px 16px;border-bottom:1px solid var(--line)}
.rpsummary b{display:block;font-size:var(--fs-lg,18px)}.rpsummary span{font-size:var(--fs-xs);color:var(--ink2);text-transform:uppercase;letter-spacing:.04em}
.rpage{font-variant-numeric:tabular-nums}.rpage.old{color:var(--bad,#b3261e);font-weight:600}
.asg:not(:has(input[name=kind][value=tarea]:checked)) .f-meta{display:none}
.mgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:0 0 16px}
.mcard{display:grid;gap:2px;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.mcard .mlabel{color:var(--ink2);font-size:13px;font-weight:600}.mcard b{font-size:34px;line-height:1.1;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.mcard .mval{color:var(--ink2);font-size:14px}.mcard small{color:var(--ink2);font-size:12.5px;margin-top:6px}
.mcard.ecometas{border-color:var(--accent-line,var(--line))}
.mcta{display:grid;align-content:center;gap:8px;padding:16px}.mcta .btn{justify-self:start}
.mwho{display:flex;align-items:center;gap:10px}
.ok-text{color:var(--ok,#1a7f4b)}
.ledger details.rev summary{list-style:none;cursor:pointer;display:inline-block}.ledger details.rev form{display:flex;gap:6px;margin-top:6px}

.mcard.origin{align-content:center}.mcard b.sm{font-size:22px}.mcard b.sm small{font-size:13px;font-weight:500;color:var(--ink2);letter-spacing:0}
.row2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp3)}@media(max-width:700px){.row2{grid-template-columns:1fr}}

/* ───────── Academia Metalectri ───────── */
.aca{--ac:#e8590c;--ac-h:#c94a07;--ac-ink:#fff;--ac-soft:#fff1e6;--ac-line:#ffd0ab;--gr:#232b34;--gr2:#323d49;--ac-glow:#ffb36b;container-type:inline-size}
:root[data-theme=dark] .aca{--ac:#ff8a3d;--ac-h:#ffa05f;--ac-ink:#2a1100;--ac-soft:#3a2414;--ac-line:#6b3f1f;--gr:#0c1218;--gr2:#1b2631}
.aca .btn.primary{background:var(--ac);border-color:var(--ac);color:var(--ac-ink)}.aca .btn.primary:hover{background:var(--ac-h);border-color:var(--ac-h);color:var(--ac-ink)}
.aca .btn.big{padding:12px 20px;font-size:var(--fs-lg);font-weight:600;width:100%}
.aca a{color:var(--ac-h)}.aca a.btn{color:var(--ink)}.aca a.btn.primary{color:var(--ac-ink)}
:root[data-theme=dark] .aca a{color:var(--ac)}
.aca progress{appearance:none;-webkit-appearance:none;width:100%;height:8px;border:0;border-radius:99px;background:var(--line);overflow:hidden;vertical-align:middle}
.aca progress::-webkit-progress-bar{background:var(--line);border-radius:99px}.aca progress::-webkit-progress-value{background:linear-gradient(90deg,var(--ac),var(--ac-glow));border-radius:99px}.aca progress::-moz-progress-bar{background:var(--ac);border-radius:99px}
.aca .muted-text{color:var(--ink2)}.aca .small-text{font-size:var(--fs-sm)}.aca .block{display:block}.aca .err-text{color:var(--bad);font-weight:600}.aca .warn-text{color:var(--warn);font-weight:700}
.aca .inl{display:inline-block;margin:0}.aca .pad{padding:var(--sp4)}.aca .num{text-align:right;font-variant-numeric:tabular-nums}
.aca .count-pill{display:inline-block;min-width:22px;padding:0 7px;border-radius:99px;background:var(--ac-soft);color:var(--ac-h);font-size:var(--fs-sm);font-weight:700;text-align:center}
.aca-h1{font-size:26px;margin:4px 0 var(--sp4)}
.aca-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp4);flex-wrap:wrap}
.aca-head .newc{position:relative}.aca-head .newc>summary{list-style:none;cursor:pointer}.aca-head .newc>summary::-webkit-details-marker{display:none}
.aca-head .newc[open]{flex:1 1 100%}.aca-head .newc[open]>summary{margin-bottom:var(--sp3)}.aca-head .newc[open]>form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}

/* barra y marca */
.aca-bar{display:flex;align-items:center;gap:var(--sp5);flex-wrap:wrap;padding:0 0 var(--sp3);margin-bottom:var(--sp4);border-bottom:1px solid var(--line)}
.aca-brand{text-decoration:none;display:inline-flex}.aca-logo{display:inline-flex;align-items:center;gap:10px}.aca-word{display:flex;flex-direction:column;line-height:1}
.aca-word small{font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--ink2);font-weight:600}.aca-word b{font-size:19px;letter-spacing:.05em;color:var(--ink);font-weight:800}
.aca .aca-bar nav{display:flex;gap:2px;flex-wrap:wrap;margin-left:auto}
.aca .aca-bar nav a{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:var(--r-sm);color:var(--ink2);text-decoration:none;font-weight:550}
.aca .aca-bar nav a:hover{background:var(--hover);color:var(--ink)}.aca .aca-bar nav a[aria-current=page]{background:var(--ac-soft);color:var(--ac-h);box-shadow:inset 0 -2px 0 var(--ac)}
:root[data-theme=dark] .aca .aca-bar nav a[aria-current=page]{color:var(--ac)}
.aico{width:18px;height:18px;flex:none}

/* portada */
.aca-hero{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:var(--sp5);align-items:center;padding:38px 40px;margin-bottom:var(--sp5);border-radius:20px;color:#f6f1ea;overflow:hidden;background:radial-gradient(120% 140% at 100% 0,#5a2a0b 0,transparent 55%),linear-gradient(135deg,#1b232c,#2a3541 60%,#37291d)}
.aca-hero .eyebrow{margin:0 0 10px;font-size:var(--fs-sm);letter-spacing:.2em;text-transform:uppercase;color:var(--ac-glow);font-weight:700}
.aca-hero h1{font-size:clamp(26px,3.4vw,40px);line-height:1.1;letter-spacing:-.02em;font-weight:800;margin:0 0 14px;max-width:18ch}
.aca-hero .lead{font-size:var(--fs-lg);color:#d9d2c8;max-width:52ch;margin:0 0 22px}
.aca-search{display:flex;gap:8px;max-width:560px;background:rgba(255,255,255,.96);padding:6px;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.35);align-items:center}
.aca-search>span{color:#6b7480;padding-left:10px;display:flex}.aca-search input{flex:1;border:0;background:transparent;padding:10px 6px;font-size:var(--fs-lg);color:#18212b;min-width:0;outline:0}
.aca-search:focus-within{outline:3px solid var(--ac-glow)}
.aca-stats{display:flex;gap:28px;list-style:none;margin:24px 0 0;padding:0;flex-wrap:wrap}.aca-stats li{display:flex;flex-direction:column}.aca-stats b{font-size:24px;font-weight:800;color:#fff;line-height:1.1}.aca-stats span{font-size:var(--fs-sm);color:#bdb4a8}
.aca-hero .hv{position:relative;min-height:220px}
.hx{position:absolute;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.hx1{width:190px;height:210px;right:6%;top:6%;background:linear-gradient(145deg,#ff8a3d,#c2410c);box-shadow:0 20px 50px rgba(232,89,12,.45)}.hx2{width:110px;height:122px;left:14%;bottom:2%;background:linear-gradient(145deg,#4a5866,#2b343e)}.hx3{width:64px;height:72px;right:0;bottom:10%;background:linear-gradient(145deg,#ffd166,#f59e0b)}
.hbolt{position:absolute;right:calc(6% + 60px);top:calc(6% + 62px);color:#2a1100;display:flex}.hbolt .aico{width:70px;height:70px;stroke-width:1.6;fill:#ffd166}
.aca-sec{margin-bottom:var(--sp5)}.aca-sec>header{display:flex;justify-content:space-between;align-items:baseline;gap:var(--sp3);margin-bottom:var(--sp3)}.aca-sec h2{font-size:20px;font-weight:750;letter-spacing:-.01em}.aca-sec>header a{display:inline-flex;align-items:center;gap:6px;font-weight:600;text-decoration:none}
.aca-req{margin-bottom:var(--sp4)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:var(--sp3)}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border:1px solid var(--line2);border-radius:99px;background:var(--surface);color:var(--ink)!important;text-decoration:none;font-weight:550;font-size:var(--fs-sm)}
.chip small{color:var(--ink3);font-weight:700}.chip:hover{border-color:var(--ac);background:var(--ac-soft)}.chip.on{background:var(--gr);border-color:var(--gr);color:#fff!important}.chip.on small{color:var(--ac-glow)}
.aca .filters{display:flex;gap:var(--sp3);flex-wrap:wrap;align-items:flex-end;margin-bottom:var(--sp4)}.aca .filters>div{display:flex;flex-direction:column;gap:3px;min-width:150px}.aca .filters label{font-size:var(--fs-sm);color:var(--ink2);font-weight:600}

/* tarjetas */
.cgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--sp4)}
.ccard{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--sh1);transition:transform .15s,box-shadow .15s,border-color .15s}
.ccard:hover{transform:translateY(-3px);box-shadow:var(--sh2);border-color:var(--ac-line)}
.cv,.cvp,.chead,.editor-head{--c1:#e8590c;--c2:#7c2d12;--c3:#ff8a3d;background:radial-gradient(90% 120% at 90% 0,var(--c3) 0,transparent 60%),linear-gradient(135deg,var(--c1),var(--c2))}
.cv-acero{--c1:#5b6b7b;--c2:#232b34;--c3:#9fb3c8}.cv-verde{--c1:#2f8f5b;--c2:#0f3d28;--c3:#7be0a8}.cv-azul{--c1:#1f6feb;--c2:#0b2a66;--c3:#7cc4ff}.cv-grafito{--c1:#3a4450;--c2:#11161c;--c3:#ff8a3d}.cv-rojo{--c1:#d62d20;--c2:#5c0f0a;--c3:#ffb199}
.cv{position:relative;display:block;aspect-ratio:16/9;text-decoration:none}
.cv::before,.cvp::before,.chead::before,.editor-head::before{content:"";position:absolute;inset:0;opacity:.16;background:repeating-linear-gradient(60deg,#fff 0 1px,transparent 1px 26px),repeating-linear-gradient(-60deg,#fff 0 1px,transparent 1px 26px);pointer-events:none}
.cv::after{content:"";position:absolute;right:-22px;bottom:-30px;width:110px;height:122px;background:rgba(255,255,255,.14);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.cv-cat{position:absolute;left:12px;top:12px;padding:3px 10px;border-radius:99px;background:rgba(0,0,0,.34);color:#fff;font-size:11.5px;font-weight:700;letter-spacing:.04em;backdrop-filter:blur(4px)}
.cv-req{position:absolute;left:12px;bottom:12px;padding:3px 10px;border-radius:6px;background:#fff;color:#b3261e;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.cb{display:flex;flex-direction:column;gap:6px;padding:14px 16px 16px;flex:1}.cb h3{margin:0;font-size:var(--fs-lg);line-height:1.3;font-weight:700}.cb h3 a{color:var(--ink);text-decoration:none}.cb h3 a:hover{color:var(--ac-h)}
.cinst{margin:0;color:var(--ink2);font-size:var(--fs-sm)}.cmeta{display:flex;gap:6px 12px;flex-wrap:wrap;font-size:var(--fs-sm);color:var(--ink2);align-items:center}.cprog{margin-top:auto;padding-top:8px;display:flex;flex-direction:column;gap:5px}.cprog small{color:var(--ink2)}
.aca-stars{display:inline-flex;align-items:center;gap:4px;color:var(--ink2)}.aca-stars b{color:#b45309;font-weight:800}:root[data-theme=dark] .aca-stars b{color:#ffc46b}.aca-stars .st{color:#f59e0b;letter-spacing:1px}.aca-stars .st.off{color:var(--line2)}

/* ficha del curso */
.chead{position:relative;border-radius:20px;padding:34px 36px;color:#fff;overflow:hidden;margin-bottom:var(--sp5)}.chead>.ci{position:relative;max-width:760px}
.crumb{font-size:var(--fs-sm);margin-bottom:12px}.crumb a{color:inherit!important;opacity:.85}.chead .crumb a{text-decoration:none}
.chead h1{font-size:clamp(26px,3.2vw,38px);line-height:1.12;font-weight:800;letter-spacing:-.02em;margin:0 0 10px}.chead .lead{font-size:var(--fs-lg);opacity:.92;margin:0 0 14px}
.chead .cm{display:flex;gap:6px 18px;flex-wrap:wrap;font-size:var(--fs-sm);align-items:center}.chead .aca-stars,.chead .aca-stars b{color:#fff}.chead .by{margin:14px 0 0;font-size:var(--fs-sm)}.tag-req{background:#fff;color:#b3261e;padding:2px 8px;border-radius:6px;font-weight:800}
.cbody{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--sp5);align-items:start}.cside{position:sticky;top:76px}
.aca-box{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px 22px;margin-bottom:var(--sp4)}.aca-box h2{font-size:19px;font-weight:750;margin:0 0 12px;display:flex;align-items:center;gap:8px}
.outs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 22px}.outs li{display:flex;gap:9px;align-items:flex-start}.outs .aico{color:var(--ok);margin-top:2px}
.acc{border:1px solid var(--line);border-radius:12px;margin-bottom:8px;background:var(--surface2);overflow:hidden}.acc>summary{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;font-weight:650;list-style:none}.acc>summary::-webkit-details-marker{display:none}.acc>summary::before{content:"▸";margin-right:8px;color:var(--ac);transition:transform .15s}.acc[open]>summary::before{transform:rotate(90deg)}.acc>summary>span{flex:1}.acc>summary small{color:var(--ink2);font-weight:500}
.acc ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.acc li{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 14px;border-bottom:1px solid var(--line)}.acc li:last-child{border-bottom:0}.acc li a,.acc li .nl{display:flex;gap:9px;align-items:center;color:var(--ink);text-decoration:none;flex:1;min-width:0}.acc li a:hover{color:var(--ac-h)}.acc li small{color:var(--ink3);white-space:nowrap}.acc li.done .aico{color:var(--ok)}.acc li .aico{color:var(--ink3)}
.prose p{margin:0 0 .8em;max-width:70ch}.plain{margin:0;padding-left:20px}.reviews{list-style:none;margin:0 0 var(--sp3);padding:0;display:grid;gap:12px}.reviews li{padding-bottom:12px;border-bottom:1px solid var(--line)}.reviews p{margin:4px 0}.reviews small{color:var(--ink3)}
.rate-form{display:grid;gap:10px;margin-top:var(--sp3);padding-top:var(--sp3);border-top:1px dashed var(--line2)}.rate-form fieldset{border:0;margin:0;padding:0}.rate-form legend{font-weight:650;margin-bottom:4px}.rate-form textarea{width:100%}
.rate-stars{display:inline-flex;flex-direction:row-reverse;justify-content:flex-end}.rate-stars input{position:absolute;opacity:0}.rate-stars label{font-size:30px;line-height:1;color:var(--line2);cursor:pointer;padding:0 2px}.rate-stars input:checked~label,.rate-stars label:hover,.rate-stars label:hover~label{color:#f59e0b}.rate-stars input:focus-visible+label{outline:2px solid var(--ac);border-radius:4px}
.aca-buy{background:var(--surface);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--sh2);display:grid;gap:14px;padding-bottom:18px}.aca-buy>*:not(.cvp){margin-left:18px;margin-right:18px}
.cvp{position:relative;aspect-ratio:16/8;display:grid;place-items:center}.cvp .cv-ico{position:relative;display:grid;place-items:center;width:68px;height:68px;border-radius:50%;background:rgba(255,255,255,.95);color:var(--ac)}.cv-ico .aico{width:30px;height:30px;fill:currentColor}
.myprog{display:grid;gap:7px}.myprog>div:first-child{display:flex;justify-content:space-between;align-items:baseline}.myprog b{font-size:26px;font-weight:800}.myprog span{color:var(--ink2)}
.inc{list-style:none;margin:0;padding:0;display:grid;gap:8px;color:var(--ink2);font-size:var(--fs-sm)}.inc li{display:flex;gap:9px;align-items:center}.inc .aico{color:var(--ac)}

/* reproductor */
.player-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--sp4);align-items:start}.pmain{min-width:0}
.pmain .crumb{margin-bottom:10px}.pmain .crumb a{display:inline-flex;gap:6px;align-items:center;text-decoration:none;font-weight:600}
.player,.embed{width:100%;aspect-ratio:16/9;background:#000;border-radius:14px;display:block;box-shadow:var(--sh2)}.embed{overflow:hidden}.embed iframe{width:100%;height:100%;border:0;display:block}.embed.doc{aspect-ratio:auto;height:min(78vh,720px);background:var(--surface2)}
.filecard{display:flex;gap:18px;align-items:center;padding:30px;border:1px dashed var(--ac-line);background:var(--ac-soft);border-radius:14px}.filecard>.aico{width:48px;height:48px;color:var(--ac)}.filecard b{font-size:var(--fs-lg)}.filecard small{display:block;color:var(--ink2)}
.reading{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:28px 32px;font-size:16px;line-height:1.75}.reading p{max-width:68ch}
.pbar{display:flex;justify-content:space-between;gap:var(--sp4);align-items:center;flex-wrap:wrap;margin:var(--sp4) 0 var(--sp3)}.pbar h1{font-size:22px;margin:0}.pbar p{margin:2px 0 0}.pnav{display:flex;justify-content:space-between;gap:var(--sp3)}
.pside{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px}.pside-h{display:grid;gap:6px;padding:4px 4px 12px}.pside-h small{color:var(--ink2)}
.pside li.cur{background:var(--ac-soft);box-shadow:inset 3px 0 var(--ac)}.pside li.cur a{font-weight:700}
.aca-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--gr);color:#fff;padding:12px 20px;border-radius:12px;box-shadow:var(--sh2);z-index:50;max-width:90vw}

/* puntaje */
.score-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--sp4);margin-bottom:var(--sp4)}.score-main{display:flex;gap:var(--sp5);align-items:center;padding:var(--sp5);margin:0}.score-grid>.panel{margin:0}
.ring{position:relative;width:170px;flex:none}.ring svg{width:100%;display:block}.ring circle{fill:none;stroke-width:10}.ring .rt{stroke:var(--line)}.ring .rv{stroke:var(--ac);stroke-linecap:round}
.ring>div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring b{font-size:40px;font-weight:800;line-height:1;letter-spacing:-.03em}.ring small{color:var(--ink2)}
.sm p{margin:0 0 10px}.parts{list-style:none;margin:0;padding:var(--sp3) var(--sp4);display:grid;gap:14px}.parts li{display:grid;grid-template-columns:1fr 1.2fr;gap:12px;align-items:center}.parts small{display:block;color:var(--ink2)}
.pv{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}.pv span{font-weight:750;min-width:46px;text-align:right}.pv em{font-style:normal;color:var(--ink3);font-size:var(--fs-sm)}
.certs{list-style:none;margin:0;padding:var(--sp2) var(--sp4);display:grid}.certs li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.certs li:last-child{border:0}.certs li span{display:flex;gap:10px;align-items:center}.certs small{color:var(--ink2)}.certs .aico{color:var(--ac)}
.tablewrap{overflow:auto}

/* examen */
.gate{max-width:720px;margin:0 auto}.gate h1{font-size:24px;display:flex;gap:10px;align-items:center}.gate h2{font-size:16px;margin:18px 0 8px}
.rules{margin:0 0 8px;padding-left:20px;display:grid;gap:4px}.steps{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:8px}.steps li{display:flex;gap:10px;align-items:center;color:var(--ink2)}.steps li.ok{color:var(--ink)}.steps li.ok .aico{color:var(--ok)}
.codeform label{display:block;font-weight:700;margin-bottom:6px}.codeform>div{display:flex;gap:10px;flex-wrap:wrap}.codein{font-family:var(--mono);font-size:28px;letter-spacing:.35em;text-align:center;width:11ch;padding:8px 10px;border:2px solid var(--line2);border-radius:12px;background:var(--surface);color:var(--ink)}.codein:focus{border-color:var(--ac);outline:0}.codeform .btn.big{width:auto}
.result{text-align:center;padding:36px}.result .rbig{width:76px;height:76px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;background:var(--muted-bg)}.result .rbig .aico{width:36px;height:36px}.result.ok .rbig{background:var(--ok-bg);color:var(--ok)}.result.warn .rbig{background:var(--warn-bg);color:var(--warn)}.result.bad .rbig{background:var(--bad-bg);color:var(--bad)}
.result .score{margin:10px 0}.result .score b{font-size:56px;font-weight:800;letter-spacing:-.03em}.result .score span{font-size:20px;color:var(--ink2)}
.examwrap{max-width:820px;margin:0 auto;user-select:none}.exhead{position:sticky;top:60px;z-index:5;display:grid;grid-template-columns:1fr auto auto;gap:var(--sp5);align-items:center;background:var(--gr);color:#fff;padding:12px 20px;border-radius:14px;box-shadow:var(--sh2);margin-bottom:var(--sp4)}
.exhead small{display:block;opacity:.7;font-size:11.5px}.extimer{text-align:center}.extimer span{font-family:var(--mono);font-size:30px;font-weight:700;letter-spacing:.04em}.extimer.low span{color:var(--ac-glow)}.extimer.crit span{color:#ff6b5e}
.exprog{text-align:center;font-weight:700;font-size:20px}.exprog b{color:var(--ac-glow)}
.qcard{display:grid;grid-template-columns:44px 1fr;gap:var(--sp3);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px;margin-bottom:var(--sp3)}
.aq-n{width:36px;height:36px;border-radius:10px;background:var(--ac-soft);color:var(--ac-h);display:grid;place-items:center;font-weight:800}.qb h2{font-size:17px;line-height:1.4;margin:0 0 4px}.qh{margin:0 0 12px;color:var(--ink2);font-size:var(--fs-sm)}.qh em{font-style:normal;font-weight:700;color:var(--ac-h)}
.qopts{display:grid;gap:8px}.opt{display:flex;gap:12px;align-items:center;padding:12px 14px;border:1.5px solid var(--line2);border-radius:12px;cursor:pointer;background:var(--surface2);transition:border-color .12s,background .12s}.opt:hover{border-color:var(--ac)}
.opt input{position:absolute;opacity:0}.opt .mk{width:20px;height:20px;border:2px solid var(--field);border-radius:50%;flex:none;display:grid;place-items:center}.opt input[type=checkbox]+.mk{border-radius:6px}
.opt input:checked+.mk{border-color:var(--ac);background:var(--ac)}.opt input:checked+.mk::after{content:"";width:8px;height:8px;border-radius:50%;background:#fff}.opt input[type=checkbox]:checked+.mk::after{border-radius:2px}
.opt:has(input:checked){border-color:var(--ac);background:var(--ac-soft)}.opt:has(input:focus-visible){outline:2px solid var(--ac);outline-offset:2px}
.exfoot{display:flex;justify-content:space-between;align-items:center;gap:var(--sp4);flex-wrap:wrap;padding:var(--sp4) 0 var(--sp5)}.exfoot .btn.big{width:auto}

/* certificado */
.acert{display:grid;place-items:center;padding:var(--sp3) 0}.cert-in{width:min(920px,100%);aspect-ratio:1.414;background:#fffdf8;color:#1c1b19;border:1px solid #e2d9c8;border-radius:6px;padding:48px 56px;text-align:center;display:flex;flex-direction:column;justify-content:center;gap:6px;position:relative;box-shadow:var(--sh2);outline:10px solid #fffdf8;outline-offset:-22px;background-image:linear-gradient(#fffdf8,#fffdf8),repeating-linear-gradient(45deg,#e8590c 0 2px,transparent 2px 14px)}
.cert-in::before{content:"";position:absolute;inset:14px;border:2px solid #e8590c;border-radius:4px;pointer-events:none}.cert-top{display:flex;justify-content:center;margin-bottom:8px}.acert .aca-word small{color:#6b6459}.acert .aca-word b{color:#1c1b19}
.cert-k{letter-spacing:.3em;text-transform:uppercase;color:#c2410c;font-weight:800;font-size:13px;margin:6px 0}.cert-t{color:#6b6459;margin:0}.acert h1{font-size:clamp(28px,5vw,48px);font-weight:800;letter-spacing:-.02em;margin:6px 0;color:#1c1b19}.acert h2{font-size:clamp(20px,3vw,28px);color:#c2410c;margin:4px 0;font-weight:750}
.cert-m{color:#6b6459;margin:8px 0 0}.cert-f{display:flex;justify-content:space-between;align-items:flex-end;margin-top:auto;padding-top:24px;color:#6b6459;font-size:var(--fs-sm)}.cert-f code{font-family:var(--mono)}

/* gestión y supervisión */
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp4);align-items:start}.two.wide{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr)}.two>.panel{margin:0}
.grid-form{display:grid;gap:var(--sp3)}.fc2,.fc3,.fc4{display:grid;gap:var(--sp3)}.fc2{grid-template-columns:repeat(2,minmax(0,1fr))}.fc3{grid-template-columns:repeat(3,minmax(0,1fr))}.fc4{grid-template-columns:repeat(4,minmax(0,1fr))}
.aca .grid-form input:not([type=checkbox]):not([type=radio]),.aca .grid-form select,.aca .grid-form textarea{width:100%}.chk{display:flex;gap:8px;align-items:center}.chk.alignend{align-self:end;padding-bottom:8px}
.editor-head{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:var(--sp4);flex-wrap:wrap;border-radius:18px;padding:24px 28px;color:#fff;overflow:hidden;margin-bottom:var(--sp4)}.editor-head>*{position:relative}.editor-head h1{margin:2px 0 6px;font-size:26px;font-weight:800}.editor-head small{opacity:.85}.editor-head p{margin:0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.rowbtns{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.inline-d{position:relative}.inline-d>summary,.voidd>summary{list-style:none;cursor:pointer}.inline-d>summary::-webkit-details-marker,.voidd>summary::-webkit-details-marker{display:none}
.inline-d>form,.voidd>form{position:absolute;right:0;z-index:6;display:flex;gap:6px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh2);margin-top:4px}.inline-d input,.voidd input{min-width:230px}
.sec .lrows,.qlist{list-style:none;margin:0;padding:0}.lrows>li{display:flex;justify-content:space-between;gap:var(--sp3);align-items:center;padding:10px 16px;border-bottom:1px solid var(--line)}.lrows .lt{display:flex;flex-direction:column;min-width:0}.lrows small{color:var(--ink2)}
.lrows>li.editrow,.qlist>li.editrow{display:block;padding:0;background:var(--surface2)}.lrows>li.editing,.qlist>li.editing{background:var(--ac-soft)}
.add{border-top:1px solid var(--line)}.add>summary{cursor:pointer;padding:12px 16px;font-weight:650;display:flex;gap:8px;align-items:center;color:var(--ac-h)}.add[open]>summary{border-bottom:1px solid var(--line)}
.qlist{counter-reset:q}.qlist>li{counter-increment:q;display:flex;justify-content:space-between;gap:var(--sp3);padding:14px 16px;border-bottom:1px solid var(--line)}.qlist>li::before{content:counter(q);flex:none;width:28px;height:28px;border-radius:8px;background:var(--ac-soft);color:var(--ac-h);display:grid;place-items:center;font-weight:800;font-size:var(--fs-sm)}.qlist>li>div{flex:1;min-width:0}.qlist>li.editrow::before{display:none}
.qlist ul{list-style:none;margin:6px 0;padding:0;display:grid;gap:3px}.qlist ul li{display:flex;gap:6px;align-items:center;color:var(--ink2)}.qlist ul li.ok{color:var(--ok);font-weight:650}.qlist ul .aico{width:15px;height:15px}
.inline-form{display:flex;gap:var(--sp2);flex-wrap:wrap}.inline-form input{flex:1;min-width:240px}.actions-row{display:flex;gap:var(--sp3);flex-wrap:wrap;margin-bottom:var(--sp4);align-items:center}
.session-head{display:flex;justify-content:space-between;gap:var(--sp5);align-items:center;flex-wrap:wrap;background:var(--gr);color:#f3ede4;border-radius:18px;padding:24px 28px;margin-bottom:var(--sp4)}.session-head h1{color:#fff;margin:2px 0 6px}.session-head small{color:var(--ac-glow);font-weight:700;letter-spacing:.06em;text-transform:uppercase}.session-head p{margin:0 0 6px;color:#c9c1b5}
.bigcode{text-align:center;padding:14px 26px;border:2px dashed var(--ac-glow);border-radius:16px}.bigcode small{display:block}.bigcode b{display:block;font-family:var(--mono);font-size:54px;letter-spacing:.18em;line-height:1.15;color:#fff;padding-left:.18em}.bigcode span{font-size:var(--fs-sm);color:#c9c1b5}
.codepill{font-family:var(--mono);font-weight:700;letter-spacing:.12em;background:var(--ac-soft);color:var(--ac-h);padding:2px 8px;border-radius:6px}
.tiers{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.tiers li{padding:12px;border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column}.tiers b{font-size:28px;font-weight:800;color:var(--ac-h)}.tiers span{font-size:var(--fs-sm);color:var(--ink2)}
.scorepill{display:grid;grid-template-columns:90px auto;gap:8px;align-items:center}.scorepill progress{height:7px}

@container (max-width:900px){.aca-hero{grid-template-columns:1fr;padding:28px 24px}.aca-hero .hv{display:none}.cbody,.player-wrap,.score-grid,.two,.two.wide{grid-template-columns:1fr}.cside,.pside{position:static;max-height:none}.outs{grid-template-columns:1fr}.fc4{grid-template-columns:repeat(2,minmax(0,1fr))}.fc3{grid-template-columns:1fr 1fr}.player-wrap .pside{order:2}}
@container (max-width:560px){.fc2,.fc3,.fc4,.parts li{grid-template-columns:1fr}.score-main{flex-direction:column;text-align:center}.qcard{grid-template-columns:1fr}.exhead{grid-template-columns:1fr 1fr;gap:var(--sp3)}.exhead>div:first-child{grid-column:1/-1}.aca .aca-bar nav{margin-left:0}.cert-in{padding:26px 22px}.bigcode b{font-size:40px}.chead{padding:24px 20px}}
@media (prefers-reduced-motion:reduce){.ccard,.opt,.acc>summary::before{transition:none}.ccard:hover{transform:none}}
@media print{.aca-bar,.noprint,.top,.side,.shell>aside{display:none!important}.cert-in{box-shadow:none;width:100%}body{background:#fff}}

.cv .cv-ico{position:absolute;right:14px;bottom:14px;width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.95);color:var(--ac);display:grid;place-items:center;z-index:1}.cv .cv-ico .aico{width:20px;height:20px;fill:currentColor}
.chead .crumb,.chead .crumb a{color:#fff!important;opacity:1}.chead .crumb a{text-decoration:underline;text-underline-offset:3px}
.aca-buy>.btn.big{width:auto}.aca-buy form .btn.big{width:100%}.rate-form .btn{justify-self:start}
.session-head .muted-text{color:#c9c1b5}.actions-row form{display:flex;gap:8px;align-items:center}.actions-row select{width:auto}
.fc2,.fc3,.fc4{columns:auto!important}
.aca .subnav a{color:var(--ink2)}.aca .subnav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--ac);box-shadow:inset 0 -2px 0 var(--ac)}
.aca .cb h3 a{color:var(--ink)}.aca .cb h3 a:hover{color:var(--ac-h)}
:root[data-theme=dark] .aca .notice.warn{background:var(--warn-bg);color:var(--warn)}
@container (max-width:900px){.cside{order:-1}}
.price{font-weight:800}.price.free{color:var(--ok)}.price.paid{color:var(--ac-h)}
.bigprice{margin:0;font-size:30px;font-weight:800;letter-spacing:-.02em}.bigprice.free{color:var(--ok)}.bigprice.paid{color:var(--ink)}
.pricebox{display:grid;gap:4px}.pricebox .disc{margin:0;display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:var(--ink2)}.paynote{margin:-4px 0 0}
.giftbox{border:1px dashed var(--ac-line);border-radius:12px;background:var(--ac-soft)}.giftbox>summary{cursor:pointer;padding:10px 14px;font-weight:650;display:flex;gap:8px;align-items:center;list-style:none}.giftbox>summary::-webkit-details-marker{display:none}
.giftform{display:grid;gap:6px;padding:0 14px 14px}.giftform input,.giftform select{width:100%}.giftform p{margin:0 0 4px}

/* ───────── Academia · pago y cobros ───────── */
.aca .mono{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase}.aca .bad-text{color:var(--bad)}.aca .notice.bad{background:var(--bad-bg);color:var(--bad);border-color:transparent}
.navbadge{font-style:normal;font-size:11px;font-weight:800;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--ac);color:var(--ac-ink);display:inline-grid;place-items:center}
.checkout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--sp5);align-items:start}.co-main{display:grid;gap:var(--sp3);min-width:0}
.mtiles{border:0;margin:0;padding:0;display:grid;gap:10px;min-width:0}
.mtile{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:4px 14px;align-items:center;padding:14px 16px;background:var(--surface);border:1.5px solid var(--line2);border-radius:14px;cursor:pointer;transition:border-color .12s,box-shadow .12s,background .12s}
.mtile:hover:not(.off){border-color:var(--ac)}.mtile input[type=radio]{position:absolute;opacity:0;pointer-events:none}
.mtile:has(input:checked){border-color:var(--ac);background:var(--ac-soft);box-shadow:0 0 0 3px var(--ac-line)}.mtile:has(input:focus-visible){outline:2px solid var(--ac);outline-offset:3px}
.mtile.off{opacity:.6;cursor:not-allowed;background:var(--surface2)}
.mt-ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--hover);color:var(--ink2)}.mt-ico .aico{width:22px;height:22px}.mtile:has(input:checked) .mt-ico{background:var(--ac);color:var(--ac-ink)}
.mt-body{display:flex;flex-direction:column;min-width:0}.mt-body b{font-size:var(--fs-lg);font-weight:700}.mt-body small{color:var(--ink2)}.mt-body small.bad{color:var(--bad)}
.mt-tag{font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap}.mt-tag.now{background:var(--ok-bg);color:var(--ok)}.mt-tag.wait{background:var(--muted-bg);color:var(--ink2)}
.mfields{grid-column:1/-1;display:none;padding:12px 0 2px 58px;gap:10px}.mtile:has(input:checked) .mfields{display:grid}
.mfields .field{display:grid;gap:4px}.mfields input[type=text],.mfields select{width:100%;max-width:420px}.mf-note{margin:0;color:var(--ink2)}.mf-note b{color:var(--ink)}
.bankbox{border:1px solid var(--ac-line);background:var(--surface);border-radius:10px;padding:10px 14px;max-width:420px}.bankbox small{color:var(--ink2)}.bankbox pre,.inline-bank pre{margin:4px 0 0;font:inherit;font-weight:650;white-space:pre-wrap}
.auth{align-items:flex-start;line-height:1.4}.auth input{margin-top:3px}.auth.has-error{color:var(--bad)}
.giftmsg label{display:block;font-weight:650;margin-bottom:6px}.giftmsg input{width:100%}
.co-side{position:sticky;top:76px}.co-sum{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:10px;box-shadow:var(--sh2)}
.co-cv{position:relative;aspect-ratio:16/6;border-radius:10px;display:flex;align-items:flex-end;padding:10px;overflow:hidden;background:radial-gradient(90% 120% at 90% 0,var(--c3,#ff8a3d) 0,transparent 60%),linear-gradient(135deg,var(--c1,#e8590c),var(--c2,#7c2d12))}.co-cv span{background:rgba(0,0,0,.35);color:#fff;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:99px}
.co-sum h2{font-size:17px;line-height:1.3}.co-sum p{margin:0}.co-sum dl{margin:0;display:grid;gap:6px}.co-sum dl>div{display:flex;justify-content:space-between;gap:12px}.co-sum dt{color:var(--ink2)}.co-sum dd{margin:0;font-weight:650;text-align:right}
.co-sum .tot{border-top:1px solid var(--line);padding-top:10px;margin-top:4px}.co-sum .tot dt{color:var(--ink);font-weight:700}.co-sum .tot dd{font-size:24px;font-weight:800;letter-spacing:-.02em}
.paylist,.queue{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.payrow,.qrow{display:grid;grid-template-columns:44px minmax(0,1fr) auto auto auto;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 16px}
.qrow{grid-template-columns:44px minmax(0,1fr) auto auto}.qrow:hover,.payrow:hover{border-color:var(--ac-line)}
.pr-ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--ac-soft);color:var(--ac-h)}.pr-ico .aico{width:22px;height:22px}
.pr-main,.qr-main{display:flex;flex-direction:column;min-width:0}.pr-main a,.qr-main>b{color:var(--ink);text-decoration:none;font-weight:700}.pr-main small,.qr-main small{color:var(--ink2)}.qr-det{color:var(--ink)!important}
.pr-amt{font-weight:800;font-size:var(--fs-lg);text-align:right;font-variant-numeric:tabular-nums}.pr-st{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.pr-st small{color:var(--ink3)}.qr-act{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.inline-bank{margin-top:6px}.inline-bank summary{cursor:pointer;font-weight:650}
.kpis{list-style:none;margin:0 0 var(--sp4);padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp3)}.kpis li{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column}
.kpis li.hot{border-color:var(--ac);background:var(--ac-soft)}.kpis small{color:var(--ink2);font-weight:600}.kpis b{font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.2}.kpis span{color:var(--ink2);font-size:var(--fs-sm)}
.mset{display:grid;gap:8px}.mset-row{display:grid;grid-template-columns:auto 44px 1fr;gap:12px;align-items:center;padding:10px 14px;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:var(--surface)}.mset-row small{display:block;color:var(--ink2)}.mset-row:has(input:checked){border-color:var(--ac);background:var(--ac-soft)}
@container (max-width:900px){.checkout{grid-template-columns:1fr}.co-side{position:static}.co-cv{display:none}.kpis{grid-template-columns:1fr}.payrow,.qrow{grid-template-columns:44px minmax(0,1fr) auto}.pr-st,.pr-act,.qr-act{grid-column:2/-1;align-items:flex-start;justify-content:flex-start}}
@container (max-width:560px){.mtile{grid-template-columns:44px minmax(0,1fr)}.mt-tag{grid-column:2}.mfields{padding-left:0}}
.aca .grid-form input[type=number],.aca .grid-form input[type=month],.aca .filters input[type=month]{font:inherit;padding:7px 10px;border:1px solid var(--field);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);width:100%;max-width:180px;transition:border-color .12s,box-shadow .12s}
.aca .grid-form input[type=number]:focus,.aca .filters input[type=month]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft, rgba(234,88,12,.18))}

/* ── Fondo de efectivo ── */
.fe-head{display:flex;gap:var(--sp4);justify-content:space-between;align-items:flex-start;flex-wrap:wrap;margin-bottom:var(--sp3)}.fe-head h1{margin:0}.fe-head .sub{margin:4px 0 0;max-width:62ch}
.fe-kpis li{display:grid;gap:2px}.fe-kpis small{color:var(--ink2)}.fe-kpis b{font-size:1.5rem;font-variant-numeric:tabular-nums}.fe-kpis span{color:var(--ink2);font-size:.8rem}.fe-kpis li.hot{border-color:var(--accent-line,#f2b48a);background:var(--accent-soft,#fff3e8)}
.fe-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp3)}
.fe-card{border:1px solid var(--line);border-radius:14px;background:var(--surface);transition:box-shadow .15s,border-color .15s}.fe-card:hover{box-shadow:0 6px 18px rgba(20,30,50,.08);border-color:var(--accent-line,#f2b48a)}.fe-card.anulada,.fe-card.cerrada{background:var(--surface2,var(--surface))}
.fe-card-main{display:grid;gap:6px;padding:16px;text-decoration:none;color:inherit}.fe-kind{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);font-weight:700}.fe-card-t{font-size:1.25rem}.fe-card-main small{color:var(--ink2)}
.fe-card-amt{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}.fe-card-amt b{font-size:1.4rem;font-variant-numeric:tabular-nums}.fe-card-foot{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}
progress.fe-bar{width:100%;height:8px;border:0;border-radius:6px;appearance:none;-webkit-appearance:none;background:var(--muted-bg,#e9edf3);overflow:hidden}
progress.fe-bar::-webkit-progress-bar{background:var(--muted-bg,#e9edf3);border-radius:6px}progress.fe-bar::-webkit-progress-value{background:var(--accent);border-radius:6px}progress.fe-bar::-moz-progress-bar{background:var(--accent);border-radius:6px}
progress.fe-bar.high::-webkit-progress-value{background:#d97706}progress.fe-bar.high::-moz-progress-bar{background:#d97706}progress.fe-bar.full::-webkit-progress-value{background:#c0392b}progress.fe-bar.full::-moz-progress-bar{background:#c0392b}
.fe-table{width:100%;border-collapse:collapse}.fe-table th{text-align:left;font-size:.75rem;color:var(--ink2);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.fe-table td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}.fe-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.fe-table tr.void td{opacity:.55;text-decoration:line-through}.fe-table tr.void td small{text-decoration:none}
.fe-obs{color:#b3261e}.fe-row-act{white-space:nowrap}.fe-row-act .btn{margin:0 4px 4px 0}
.fe-sum{padding:20px;display:grid;gap:14px;margin-bottom:var(--sp4)}.fe-sum h1{margin:2px 0 0}.fe-sum .sub{margin:2px 0 0}.fe-sum-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.fe-sum-st{display:grid;gap:4px;justify-items:end}
.fe-nums{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.fe-nums>div{display:grid;gap:2px}.fe-nums small{color:var(--ink2)}.fe-nums b{font-size:1.7rem;font-variant-numeric:tabular-nums}.fe-nums .zero b{color:#c0392b}
.fe-add,.fe-close{margin-bottom:var(--sp4)}.fe-add>summary,.fe-close>summary{cursor:pointer;padding:14px 18px;font-weight:650;display:flex;gap:8px;align-items:center;list-style:none}.fe-add>summary::-webkit-details-marker,.fe-close>summary::-webkit-details-marker{display:none}
.fe-add[open]>summary,.fe-close[open]>summary{border-bottom:1px solid var(--line)}
.fe-money{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-items:end}.fe-total{display:grid;gap:2px;padding:8px 12px;border-radius:10px;background:var(--accent-soft,#fff3e8);border:1px solid var(--accent-line,#f2b48a)}.fe-total output{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums}
.fe-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.fe-diff{margin:0;padding:8px 12px;border-radius:8px;font-weight:600}.fe-diff.ok{background:#e6f4ea;color:#1e6b34}.fe-diff.warn{background:#fff3e0;color:#9a5b00}
.fe-kinds{border:0;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.fe-kinds legend{font-weight:600;margin-bottom:8px;padding:0}
.fe-kind-opt{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:12px;padding:14px;cursor:pointer;background:var(--surface)}.fe-kind-opt:has(input:checked){border-color:var(--accent);background:var(--accent-soft,#fff3e8);box-shadow:0 0 0 2px var(--accent-line,#f2b48a) inset}.fe-kind-opt span{display:grid;gap:3px}.fe-kind-opt small{color:var(--ink2)}.fe-typ{font-weight:600}
.fe-queue{list-style:none;margin:0;padding:0;display:grid;gap:10px}.fe-q{display:grid;grid-template-columns:1fr auto;gap:8px 16px;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--surface)}.fe-q.observado{background:var(--surface2,var(--surface));border-style:dashed}
.fe-q-main{display:grid;gap:3px}.fe-q-main small{color:var(--ink2)}.fe-amt{font-size:1.3rem;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.fe-review{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.4fr auto;gap:8px;align-items:center}.fe-q-act{display:flex;gap:6px}
.fe-void form{display:grid;gap:6px;margin-top:6px;min-width:220px}.fe-sign{display:grid;grid-template-columns:1fr 1fr;gap:48px;margin-top:56px;text-align:center}.fe-sign .line{display:block;border-top:1px solid #222;margin-bottom:6px}.fe-sign small{display:block;color:#555}
.fe-rep{width:100%;border-collapse:collapse;font-size:.8rem;margin:12px 0}.fe-rep th,.fe-rep td{border:1px solid #999;padding:4px 6px;vertical-align:top;text-align:left}.fe-rep .n{text-align:right;white-space:nowrap}.fe-report{max-width:none}
@media (max-width:720px){.fe-nums,.fe-money{grid-template-columns:1fr 1fr}.fe-review{grid-template-columns:1fr}.fe-q{grid-template-columns:1fr}.fe-amt{text-align:left}.fe-sum-st{justify-items:start}}
.fe-table small.block,.fe-q small.block{display:block;margin-top:2px}.fe-kpis li.hot{background:#fff4e5;border-color:#f0c48a}
.fe-q-doc{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-top:4px}.fe-q-doc a{display:inline-flex;gap:5px;align-items:center}.fe-q-doc svg,.fe-row-act svg{width:14px;height:14px;flex:none}
.fe-actions .btn.big{width:auto;flex:0 0 auto}.fe-review input{width:100%}
/* Fondo de efectivo · libros */
.fe-pos{color:#146c43}.fe-neg{color:#b42318}.fe-cards .fe-nums{margin:10px 0}
.fe-kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.fe-cards:has(.fe-nums b){grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.fe-cards .fe-nums b{font-size:1.2rem;white-space:nowrap}
.fe-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;border:0;padding:0;margin:14px 0}.fe-checks legend{font-weight:600;margin-bottom:8px;padding:0}
.fe-check{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--surface);cursor:pointer}.fe-check span{display:grid;gap:2px}.fe-check small{color:var(--ink2)}
.fe-fundform h2{margin:0 0 8px}.fe-fundform{display:grid;gap:12px}.fe-actions{display:flex;gap:10px}
.fe-fundform,.panel.fe-form{padding:18px 20px}.fe-fundform .grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
a.fe-kind-opt{text-decoration:none;color:inherit}a.fe-kind-opt:hover{border-color:var(--accent)}a.fe-kind-opt b{text-decoration:none}
.fe-steps{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.fe-steps>li{border:1px solid var(--line);border-radius:12px;padding:12px 14px;display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;background:var(--surface)}
.fe-steps>li>b{min-width:190px}.fe-steps>li.done{border-color:var(--ok-line,#9fd4b0)}.fe-steps>li.wait{opacity:.65}.fe-steps>li.now{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-line,#f2b48a) inset}.fe-steps>li form.grid-form{flex:1 1 100%}
/* Reclutamiento: pruebas por fase */
.rec-part{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);padding:10px 14px;margin:10px 0}
.rec-part.empty-part{background:var(--surface2)}
.rec-part .kv{margin:8px 0}
.rec-pts{white-space:nowrap;color:var(--ink2)}
.rec-qhead{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}.rec-qopts{border:1px dashed var(--line2);border-radius:var(--r-sm);padding:10px 14px;margin:10px 0}.rec-qopts legend{font-weight:600;padding:0 6px;color:var(--ink2)}
.rec-url{width:100%;max-width:520px;font-family:ui-monospace,monospace;font-size:12px}
/* Prueba pública */
.rec-public{max-width:760px;margin:0 auto;padding:20px 16px 48px}.rec-public header{margin-bottom:18px}.rec-brand{color:var(--ink2);font-size:13px;margin:0 0 4px}.rec-public h1{margin:0 0 8px}
.rec-who{margin:0 0 8px}.rec-timer{font-weight:600;background:var(--info-bg);color:var(--info);padding:8px 12px;border-radius:var(--r-sm)}.rec-timer-out{background:var(--bad-bg);color:var(--bad)}
.rec-q{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;margin:12px 0}.rec-q.has-error{border-color:var(--bad)}.rec-q h2{font-size:16px;margin:0 0 6px}.rec-q h2 label{font-weight:600;margin:0}
.rec-q input[type=text],.rec-q input[type=email],.rec-q input[type=url],.rec-q input[type=date],.rec-q select,.rec-q textarea{width:100%;max-width:none}
.rec-opts{display:grid;gap:8px}.rec-opt{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px;cursor:pointer}.rec-opt:hover{background:var(--hover)}.rec-opt input{margin-top:3px}
.rec-scale{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.rec-sc{display:inline-flex;flex-direction:column;align-items:center;gap:2px;border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 12px;cursor:pointer}
.rec-match{display:grid;gap:8px}.rec-mrow{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:center}.rec-media{max-width:100%;height:auto;border-radius:var(--r-sm)}
@media (max-width:560px){.rec-mrow{grid-template-columns:1fr}}
.btn.big{padding:12px 22px;font-size:16px}
/* FODA (Plan estratégico) */
tr.is-off{opacity:.6}
.fe{display:inline-flex;gap:6px;align-items:center;margin-top:6px;white-space:nowrap}
.fe input[type=text]{width:64px}
/* Matriz de riesgos y oportunidades (SGI) */
.ro-heat{min-width:560px}.ro-heat th{font-weight:600;white-space:nowrap}.ro-heat td{text-align:center;font-weight:650;font-variant-numeric:tabular-nums}
.ro-heat td.h-bad{background:var(--bad-bg);color:var(--bad)}.ro-heat td.h-warn{background:var(--warn-bg);color:var(--warn)}.ro-heat td.h-ok{background:var(--ok-bg);color:var(--ok)}
/* Proyectos de ventas: fotos de las actividades */
.pv-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;padding:12px 16px}
.pv-photo{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--bg2,transparent)}
.pv-photo img{display:block;width:100%;height:150px;object-fit:cover}
.pv-photo figcaption{padding:6px 8px;font-size:var(--fs-sm)}.pv-photo figcaption form{margin-top:6px;display:flex;gap:4px}.pv-photo figcaption input{min-width:0;flex:1}
/* Metrología: foto del equipo y filas anuladas */
.me-photo{display:block;max-width:100%;max-height:260px;border-radius:8px;object-fit:contain}
tr.muted-row td{opacity:.6}
