/* Sala · sistema visual Tapete Verde */
:root{
  --tapete:#0E3A2D; --tapete-deep:#0A2C22; --tapete-raise:#124434; --tapete-hi:#174F3D;
  --papel:#EDF0EA; --papel-dim:#C7D1CA; --papel-sheet:#F7F8F4;
  --tinta:#13211B; --tinta-2:#47584F;
  --laton:#C9A24B; --laton-ink:#7A5B1C; --laton-soft:rgba(201,162,75,.16);
  --salvia:#8EA699; --senal:#D4472F; --senal-ink:#A3301C; --senal-soft:rgba(212,71,47,.16);
  --ok:#7FB89A;
  --line:rgba(142,166,153,.28); --line-strong:rgba(237,240,234,.45); --line-paper:rgba(19,33,27,.14);
  --f-display:"Bricolage Grotesque","Arial Narrow",system-ui,sans-serif;
  --f-sans:"Instrument Sans","Helvetica Neue",Arial,system-ui,sans-serif;
  --f-serif:"Instrument Serif",Georgia,serif;
  --r:12px; --r-s:8px;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--tapete);color:var(--papel);font:15px/1.55 var(--f-sans);-webkit-font-smoothing:antialiased}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--laton);outline-offset:2px;border-radius:4px}
h1,h2,h3,h4{margin:0;font-family:var(--f-display);letter-spacing:-.01em;text-wrap:balance}
p{margin:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
[hidden]{display:none!important}

/* ---------- Marca ---------- */
.mark{display:inline-block;width:28px;height:28px;flex:none}
.mark svg{width:100%;height:100%;display:block}
.wordmark{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:800;font-size:22px;letter-spacing:.01em;text-decoration:none}

/* ---------- Shell ---------- */
.shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}
.side{background:var(--tapete-deep);border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .org{padding:12px;border:1px solid var(--line);border-radius:var(--r);display:grid;gap:2px}
.side .org b{font-family:var(--f-display);font-size:16px;line-height:1.2}
.side .org small{color:var(--salvia);font-size:12.5px}
.side .org select{margin-top:6px;background:var(--tapete);border:1px solid var(--line);border-radius:6px;padding:6px;font-size:13px}
.nav-g{display:grid;gap:2px}
.nav-g p{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--salvia);padding:6px 10px 4px}
.nav-g a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;text-decoration:none;color:var(--papel-dim);font-weight:500;font-size:14.5px}
.nav-g a:hover{background:rgba(237,240,234,.05);color:var(--papel)}
.nav-g a[aria-current="page"]{background:var(--tapete-raise);color:var(--papel);box-shadow:inset 3px 0 0 var(--laton)}
.nav-g a svg{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nav-g a .cnt{margin-left:auto;background:var(--laton);color:var(--tinta);font-size:11.5px;font-weight:700;border-radius:999px;padding:1px 7px}
.side .foot{margin-top:auto;display:grid;gap:8px;font-size:13px;color:var(--salvia)}
.side .me{display:flex;align-items:center;gap:10px;padding:10px;border-top:1px solid var(--line)}
.av{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--tapete-hi);border:1px solid var(--line-strong);font-weight:700;font-size:13px;flex:none}
.main{min-width:0;padding:28px clamp(16px,3.5vw,44px) 80px}
.topbar{display:none}
@media (max-width:920px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);z-index:50;transform:translateX(-105%);transition:transform .2s}
  .side.open{transform:none;box-shadow:0 0 0 100vmax rgba(4,18,13,.6)}
  .topbar{display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:30;background:var(--tapete-deep);border-bottom:1px solid var(--line);padding:10px 16px}
  .topbar b{font-family:var(--f-display);font-size:17px}
  .main{padding:20px 16px 90px}
}

/* ---------- Encabezados y piezas ---------- */
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.ph h1{font-size:clamp(28px,4vw,40px);font-weight:800;line-height:1.05}
.ph .sub{color:var(--papel-dim);margin-top:6px;max-width:68ch}
.kicker{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--salvia);margin-bottom:8px}
.kicker::before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid currentColor}
.kicker.laton{color:var(--laton)}.kicker.laton::before{background:var(--laton)}
.h3{font-size:20px;font-weight:700}
.muted{color:var(--salvia)}.dim{color:var(--papel-dim)}
.serif{font-family:var(--f-serif);font-style:italic}
.note{font-size:13px;color:var(--salvia)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.spread{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.stack{display:grid;gap:14px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px;align-items:start}
@media (max-width:1100px){.cols{grid-template-columns:1fr}}
@media (max-width:820px){.grid2,.grid3{grid-template-columns:1fr}}

.panel{background:var(--tapete-deep);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.panel.raise{background:var(--tapete-raise)}
.panel h2{font-size:18px;font-weight:700;margin-bottom:12px}
.paper{background:var(--papel-sheet);color:var(--tinta);border-radius:var(--r);padding:28px clamp(18px,4vw,44px)}
.paper .muted,.paper .note{color:var(--tinta-2)}
.paper h2,.paper h3{color:var(--tapete)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:var(--r-s);border:1px solid var(--line-strong);background:transparent;font-weight:600;font-size:14.5px;line-height:1.2;text-decoration:none;white-space:nowrap;transition:border-color .15s,background .15s}
.btn:hover{border-color:var(--papel);background:rgba(237,240,234,.04)}
.btn.solid{background:var(--papel);color:var(--tinta);border-color:var(--papel)}
.btn.solid:hover{background:#fff}
.btn.laton{background:var(--laton);color:var(--tinta);border-color:var(--laton)}
.btn.laton:hover{background:#d8b45d}
.btn.danger{border-color:rgba(212,71,47,.6);color:#f2a597}
.btn.small{padding:6px 11px;font-size:13px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn.busy{opacity:.7;pointer-events:none}
.paper .btn{border-color:var(--line-paper);color:var(--tinta)}
.paper .btn.solid{background:var(--tapete);color:var(--papel);border-color:var(--tapete)}
.linkbtn{background:none;border:0;padding:0;color:var(--laton);font-weight:600;text-decoration:underline;text-underline-offset:3px}

.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line);white-space:nowrap}
.pill.ok{border-color:rgba(127,184,154,.5);color:var(--ok)}
.pill.warn{border-color:rgba(201,162,75,.6);color:var(--laton)}
.pill.bad{border-color:rgba(212,71,47,.6);color:#f2a597}
.pill.live{background:var(--senal);border-color:var(--senal);color:#fff}
.pill.live::before{content:"";width:7px;height:7px;border-radius:50%;background:#fff;animation:pulse 1.4s infinite}
@keyframes pulse{50%{opacity:.3}}
.tag{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:5px;letter-spacing:.02em}
.tag.decidir{background:var(--laton);color:var(--tinta)}
.tag.debatir{background:var(--papel);color:var(--tinta)}
.tag.informar{border:1px solid var(--salvia);color:var(--salvia)}

/* Formularios */
.field{display:grid;gap:6px}
.field label,.lbl{font-size:13px;font-weight:600;color:var(--papel-dim)}
.input,select.input,textarea.input{width:100%;padding:10px 12px;border-radius:var(--r-s);border:1px solid var(--line-strong);background:var(--tapete);font-size:15px}
textarea.input{min-height:96px;resize:vertical;line-height:1.5}
.input:focus{border-color:var(--laton);outline:none}
.input::placeholder{color:var(--salvia)}
.check{display:flex;gap:10px;align-items:flex-start;font-size:14px}
.check input{margin-top:3px;accent-color:var(--laton)}
.paper .input{background:#fff;border-color:var(--line-paper);color:var(--tinta)}
.err{color:#f2a597;font-size:14px}
.code-in{font-family:ui-monospace,Menlo,monospace;font-size:26px;letter-spacing:.35em;text-align:center}

/* Tablas */
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:12px;font-weight:600;color:var(--salvia);padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr:last-child td{border-bottom:0}
.tbl a{text-decoration:none}.tbl a:hover{text-decoration:underline}
.scroll-x{overflow-x:auto}
.mono{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;word-break:break-all}

/* Barras y medidores */
.mbar{display:block;height:8px;border-radius:99px;background:rgba(237,240,234,.08);overflow:hidden;min-width:60px}
.mbar i{display:block;height:100%;background:var(--papel);border-radius:99px}
.mbar.l i{background:var(--laton)}.mbar.r i{background:var(--senal)}.mbar.g i{background:var(--salvia)}
.budget{display:flex;height:34px;border-radius:8px;overflow:hidden;font-size:12.5px;font-weight:600}
.budget i{display:flex;align-items:center;padding:0 10px;font-style:normal;white-space:nowrap;overflow:hidden}
.budget .decidir{background:var(--laton);color:var(--tinta)}
.budget .debatir{background:var(--papel);color:var(--tinta)}
.budget .informar{background:var(--tapete-hi);color:var(--papel-dim)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.kpis>div{border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;display:grid;gap:2px}
.kpis b{font-family:var(--f-display);font-size:26px;font-weight:800;line-height:1.1}
.kpis span{font-size:13px;color:var(--salvia)}
.kpis b.warn{color:var(--laton)}.kpis b.bad{color:#f2a597}

/* Inicio */
.tasks{display:grid;gap:8px}
.task{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r);text-decoration:none;background:var(--tapete-deep);transition:border-color .15s}
.task:hover{border-color:var(--papel)}
.task svg{width:24px;height:24px;flex:none;stroke:var(--laton);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.task b{display:block;font-weight:600}
.task small{color:var(--salvia);font-size:13px}
.task .go{margin-left:auto;color:var(--salvia);font-size:20px}
.empty{padding:28px;border:1px dashed var(--line);border-radius:var(--r);text-align:center;color:var(--salvia)}

/* Agenda */
.agenda{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.agenda li{border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;background:var(--tapete-deep)}
.agenda li.flag{border-color:rgba(212,71,47,.55);background:linear-gradient(0deg,var(--senal-soft),var(--senal-soft)),var(--tapete-deep)}
.agenda li.blocked{opacity:.75}
.agenda .hd{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.agenda .n{font-family:var(--f-display);font-weight:800;font-size:20px;color:transparent;-webkit-text-stroke:1px var(--salvia);min-width:26px}
.agenda .t{font-weight:600;flex:1;min-width:200px}
.agenda .min{font-size:13px;color:var(--salvia)}
.docs{display:grid;gap:6px;margin-top:10px}
.doc{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;background:rgba(237,240,234,.04);text-decoration:none;font-size:14px}
.doc:hover{background:rgba(237,240,234,.08)}
.doc svg{width:18px;height:18px;stroke:var(--salvia);fill:none;stroke-width:1.8;flex:none}
.doc .r{margin-left:auto;font-size:12px;color:var(--salvia);white-space:nowrap}
.doc.unread b{color:var(--papel)}.doc.unread::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--laton)}
.alert{margin-top:10px;padding:12px 14px;border-radius:8px;border:1px solid rgba(212,71,47,.5);background:rgba(212,71,47,.08);font-size:14px;display:grid;gap:8px}
.alert.ok{border-color:rgba(127,184,154,.45);background:rgba(127,184,154,.07)}
.alert.info{border-color:var(--line);background:rgba(237,240,234,.04)}
.alert.gold{border-color:rgba(201,162,75,.55);background:var(--laton-soft)}

/* Tabs */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;margin-bottom:22px}
.tabs button,.tabs a{background:none;border:0;border-bottom:2px solid transparent;padding:10px 14px;font-weight:600;font-size:14.5px;color:var(--salvia);white-space:nowrap;text-decoration:none}
.tabs [aria-selected="true"]{color:var(--papel);border-bottom-color:var(--laton)}

/* En vivo */
.thermo{display:grid;gap:6px}
.thermo .lv{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--salvia)}
.thermo .lv i{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--salvia)}
.thermo .lv.on{color:var(--papel);font-weight:700}
.thermo .lv.on i{background:var(--laton);border-color:var(--laton);box-shadow:0 0 0 4px var(--laton-soft)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line-strong);border-radius:8px;background:transparent;font-size:13.5px;font-weight:600}
.chip:hover{border-color:var(--papel)}
.chip.on{background:var(--papel);color:var(--tinta);border-color:var(--papel)}
.chip.mute{opacity:.5}
.vrow{display:grid;grid-template-columns:minmax(90px,140px) 1fr 40px;gap:10px;align-items:center;font-size:13.5px}
.vrow b{text-align:right}
.seat-map{display:flex;flex-wrap:wrap;gap:8px}
.seat{display:grid;place-items:center;gap:4px;width:88px;padding:10px 6px;border:1px solid var(--line);border-radius:10px;text-align:center;font-size:12px;background:none}
.seat .av{width:38px;height:38px}
.seat.in{border-color:var(--ok)}.seat.in .av{border-color:var(--ok);background:rgba(127,184,154,.15)}
.seat.conf{border-color:var(--senal)}
.seat.silent .av{box-shadow:0 0 0 3px var(--laton-soft);border-color:var(--laton)}

/* Votaciones */
.vote-box{display:grid;gap:12px}
.choice{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.choice button{padding:14px;border-radius:10px;border:1px solid var(--line-strong);background:none;font-weight:700}
.choice button[aria-pressed="true"]{background:var(--papel);color:var(--tinta)}
.receipt{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:rgba(237,240,234,.06);padding:8px 10px;border-radius:6px;word-break:break-all}

/* Acta */
.acta{max-width:820px}
.acta h2{font-size:22px;margin-bottom:6px}
.acta .art{margin-top:18px;padding-top:14px;border-top:1px solid var(--line-paper)}
.acta .art h3{font-size:16px;margin-bottom:8px}
.acta p{margin:6px 0;line-height:1.6}
.acta textarea{width:100%;min-height:90px;border:1px solid var(--line-paper);border-radius:8px;padding:10px;background:#fff;color:var(--tinta);font:inherit;font-size:14.5px;line-height:1.55}
.acta .agr{border-left:3px solid var(--laton);padding:6px 12px;margin:8px 0;background:rgba(201,162,75,.09)}
.legal{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.legal span{font-size:12px;padding:4px 9px;border:1px solid var(--line-paper);border-radius:6px;color:var(--tinta-2)}
.sigs{display:grid;gap:8px}
.sig{display:flex;align-items:center;gap:10px;font-size:14px}
.sig i{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--salvia);display:grid;place-items:center;font-style:normal;font-size:12px}
.sig.done i{background:var(--ok);border-color:var(--ok);color:var(--tinta)}

/* Matrices */
.heat{display:grid;gap:3px;font-size:11.5px}
.heat .hc{writing-mode:vertical-rl;transform:rotate(180deg);color:var(--salvia);padding:4px 0;max-height:140px;justify-self:center}
.heat .rn{font-size:13px;padding-right:8px;align-self:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.heat button{aspect-ratio:1;border-radius:5px;border:1px solid var(--line);background:none;font-weight:700;font-size:12px}
.heat .h0{background:transparent;color:var(--salvia)}.heat .h1{background:rgba(142,166,153,.28)}.heat .h2{background:rgba(237,240,234,.55);color:var(--tinta)}.heat .h3{background:var(--papel);color:var(--tinta)}
.heat .gap{color:var(--laton);font-weight:700;text-align:center;font-size:11px}
.riskmap{display:grid;grid-template-columns:28px repeat(5,1fr);gap:4px;max-width:520px}
.riskmap .c{aspect-ratio:1.25;border-radius:8px;border:1px solid var(--line);padding:4px;display:flex;flex-wrap:wrap;gap:3px;align-content:flex-start}
.riskmap .c.hi{background:rgba(212,71,47,.3);border-color:rgba(212,71,47,.6)}
.riskmap .c.mid{background:rgba(142,166,153,.16)}
.riskmap .ax{font-size:11px;color:var(--salvia);display:grid;place-items:center}
.riskmap .dot{width:22px;height:22px;border-radius:50%;background:var(--papel);color:var(--tinta);font-size:11px;font-weight:800;display:grid;place-items:center;border:0}

/* Copiloto */
.chat{display:grid;gap:14px}
.msg{padding:14px 16px;border-radius:var(--r);border:1px solid var(--line);font-size:15px;line-height:1.6}
.msg.me{background:var(--tapete-raise);justify-self:end;max-width:80%}
.msg.ai{background:var(--tapete-deep)}
.msg.ai ul{margin:6px 0;padding-left:20px}
.msg .src{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.msg .src a,.msg .src span{font-size:12px;padding:3px 8px;border:1px solid var(--line);border-radius:6px;text-decoration:none;color:var(--papel-dim)}
.cite{font-size:11px;font-weight:700;color:var(--laton);vertical-align:super}

/* Visor */
.viewer{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;height:calc(100vh - 140px)}
.viewer iframe{width:100%;height:100%;border:0;border-radius:var(--r);background:#fff}
@media (max-width:1000px){.viewer{grid-template-columns:1fr;height:auto}.viewer iframe{height:72vh}}

/* Auth */
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)}
.auth .art{background:var(--tapete-deep);border-right:1px solid var(--line);padding:48px;display:flex;flex-direction:column;justify-content:space-between;gap:40px;position:relative;overflow:hidden}
.auth .art h1{font-size:clamp(40px,5vw,64px);font-weight:800;line-height:.95;letter-spacing:-.03em}
.auth .art h1 span{display:block;color:transparent;-webkit-text-stroke:1.6px var(--papel)}
.auth .art .serif{font-size:22px;color:var(--papel-dim);max-width:30ch}
.auth .art ul{list-style:none;padding:0;margin:0;display:grid;gap:10px;font-size:14px;color:var(--papel-dim)}
.auth .art li{display:flex;gap:10px}.auth .art li::before{content:"";width:8px;height:8px;margin-top:7px;border-radius:2px;background:var(--laton);flex:none}
.auth .form{display:grid;place-items:center;padding:40px 20px}
.auth .card{width:min(420px,100%);display:grid;gap:16px}
.auth .card h2{font-size:28px;font-weight:800}
.qr{background:var(--papel);border-radius:12px;padding:12px;width:220px;justify-self:center}
.qr svg{display:block;width:100%;height:auto}
.codes{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;font-family:ui-monospace,Menlo,monospace;font-size:15px;background:var(--tapete-deep);border:1px solid var(--line);border-radius:10px;padding:14px}
@media (max-width:880px){.auth{grid-template-columns:1fr}.auth .art{padding:28px 20px;gap:18px}.auth .art ul{display:none}}

/* Toast y modal */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--papel);color:var(--tinta);padding:12px 18px;border-radius:10px;font-weight:600;font-size:14.5px;z-index:90;box-shadow:0 18px 40px -12px rgba(0,0,0,.5);max-width:min(560px,92vw)}
.toast.bad{background:#f6d3cc;color:var(--senal-ink)}
.modal-bg{position:fixed;inset:0;background:rgba(4,18,13,.72);z-index:80;display:grid;place-items:center;padding:16px}
.modal{background:var(--tapete-deep);border:1px solid var(--line-strong);border-radius:14px;padding:24px;width:min(560px,100%);max-height:90vh;overflow-y:auto;display:grid;gap:14px}
.modal h3{font-size:20px}

/* Cumplimiento */
.ctrl{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:14px 0;border-bottom:1px solid var(--line)}
.ctrl:last-child{border-bottom:0}
.st{width:12px;height:12px;border-radius:50%;margin-top:6px}
.st.al_dia{background:var(--ok)}.st.atencion{background:var(--senal)}.st.manual,.st.pendiente{background:var(--laton)}.st.no_aplica{background:var(--salvia)}
.ring{--p:0;width:110px;height:110px;border-radius:50%;background:conic-gradient(var(--laton) calc(var(--p)*1%),rgba(237,240,234,.08) 0);display:grid;place-items:center;flex:none}
.ring>div{width:86px;height:86px;border-radius:50%;background:var(--tapete-deep);display:grid;place-items:center;text-align:center}
.ring b{font-family:var(--f-display);font-size:24px;line-height:1}
.ring small{font-size:11px;color:var(--salvia)}

/* Verificación pública */
.verify{max-width:760px;margin:0 auto;padding:40px 16px}
.drop{border:1.5px dashed var(--line-strong);border-radius:14px;padding:28px;text-align:center;color:var(--papel-dim)}
.drop.over{border-color:var(--laton);background:var(--laton-soft)}
.result-ok{color:var(--ok)}.result-bad{color:#f2a597}

.loading{display:grid;place-items:center;min-height:40vh;color:var(--salvia)}
.spin{width:28px;height:28px;border-radius:50%;border:2.5px solid var(--line);border-top-color:var(--laton);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.bottomnav{display:none}
@media (max-width:920px){.bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:40;background:var(--tapete-deep);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
 .bottomnav a{flex:1;display:grid;justify-items:center;gap:2px;font-size:11px;color:var(--salvia);text-decoration:none;padding:4px}
 .bottomnav a svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8}
 .bottomnav a[aria-current="page"]{color:var(--papel)}}

aside.stack,section.stack{align-content:start}
.topbar svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}
.pdfpages{height:100%;overflow-y:auto;border-radius:var(--r);background:#2a3a33;padding:14px;display:grid;gap:14px;justify-items:center}
.pdfpages canvas{max-width:100%;height:auto!important;background:#fff;box-shadow:0 10px 30px -12px rgba(0,0,0,.6);border-radius:3px}
.pdfpages .pg{display:grid;gap:4px;justify-items:center;width:100%}
.pdfpages .pg small{color:var(--papel-dim);font-size:12px}
@media (max-width:1000px){.pdfpages{height:72vh}}
@media print{.side,.topbar,.bottomnav,.ph .row{display:none!important}.shell{display:block}body{background:#fff;color:#000}.panel{border-color:#ccc;background:#fff}}

/* Demo */
.demo-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px clamp(16px,3.5vw,44px);background:var(--laton-soft);border-bottom:1px solid rgba(201,162,75,.45);font-size:14px;color:var(--papel)}
.demo-guide{margin:0;padding-left:20px;display:grid;gap:6px;color:var(--papel-dim);font-size:14.5px}
.demo-page{max-width:1180px;margin:0 auto;padding:24px 16px 60px}
.demo-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.demo-hero{max-width:820px;margin:48px 0 32px;display:grid;gap:14px}
.demo-hero h1{font-size:clamp(34px,5vw,56px);font-weight:800;line-height:1.02;letter-spacing:-.02em}
.demo-hero .lede{font-size:17px;color:var(--papel-dim);line-height:1.6}
.demo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.demo-card{position:relative;display:grid;grid-template-rows:auto auto 1fr auto;gap:12px;padding:20px;border:1px solid var(--line);border-radius:var(--r);background:var(--tapete-deep)}
.demo-card.star{grid-column:1/-1;border-color:var(--laton);background:linear-gradient(0deg,var(--laton-soft),var(--laton-soft)),var(--tapete-deep)}
.demo-card.star ul{columns:2;column-gap:28px}
@media (max-width:700px){.demo-card.star ul{columns:1}}
.demo-card .badge{position:absolute;top:16px;right:16px;background:var(--laton);color:var(--tinta);font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px}
.demo-who{display:flex;gap:12px;align-items:center}
.demo-who .av{width:42px;height:42px;font-size:15px}
.demo-who b{display:block;font-family:var(--f-display);font-size:18px}
.demo-who small{color:var(--salvia);font-size:13px}
.demo-card ul{margin:0;padding-left:18px;display:grid;gap:4px;font-size:14px;color:var(--papel-dim)}
.demo-card.star ul{display:block}.demo-card.star li{margin-bottom:4px}
.demo-card .btn{justify-self:start}
