:root{
  --bg:#050912; --surface:rgba(10,18,38,.74); --surface2:#0d1a33; --line:#1d3358; --fg:#eaf6ff; --mute:#8fb0d4;
  --gold:#5ad7ff; --on:#031620; --danger:#ff8a8a; --ok:#6ee7b7;
  --k0:#5ad7ff; --k1:#9a8cff; --k2:#6dffc2; --k3:#c39bff; --k4:#ff8fd0; --k5:#ffd27a;
  --font-display:"Bricolage Grotesque","Segoe UI",system-ui,sans-serif;
  --font-body:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  color-scheme:dark;
}
html{background:var(--bg)}
#net{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.glow{position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(640px 440px at 82% 22%,rgba(40,120,255,.22),transparent 70%),radial-gradient(520px 420px at 6% 92%,rgba(130,80,255,.18),transparent 70%)}
*{box-sizing:border-box}
html,body{margin:0}
body{background:transparent;color:var(--fg);font:15px/1.55 var(--font-body);min-height:100vh;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));
  padding-top:env(safe-area-inset-top,0px);padding-bottom:calc(56px + env(safe-area-inset-bottom,0px))}
h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:6px}
.wrap{max-width:1120px;margin:0 auto}
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-block:18px;flex-wrap:wrap}
.mark{font:700 20px var(--font-display);letter-spacing:.02em;display:flex;align-items:center;gap:10px}
.mark i{width:18px;height:18px;border-radius:50%;border:2px solid var(--gold);border-left-color:transparent;border-bottom-color:transparent;display:inline-block;transform:rotate(30deg)}
.bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.who{font:12px var(--font-mono);color:var(--mute);margin-right:4px;overflow-wrap:anywhere}
.btn{display:inline-block;text-decoration:none;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:8px 14px;cursor:pointer}
.btn:hover{border-color:var(--gold)}
.btn.primary{background:var(--gold);color:var(--on);border-color:var(--gold);font-weight:500}
.btn.danger{color:var(--danger)}
.btn.sm{padding:5px 10px;font-size:13px}
.btn[disabled]{opacity:.5;cursor:default}
/* login */
.gate{min-height:100vh;display:grid;place-items:center;padding-block:32px}
.panel{backdrop-filter:blur(10px);width:100%;max-width:400px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:28px;display:flex;flex-direction:column;gap:14px}
.panel h1{font-size:30px;line-height:1.1}
.panel p{margin:0;color:var(--mute)}
.field{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--mute)}
.field input,.field select,.field textarea{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--fg);font-size:15px;width:100%}
.field textarea{resize:vertical;min-height:64px}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--gold)}
.msg{font-size:13.5px;min-height:1.2em;color:var(--danger)}
.msg.ok{color:var(--ok)}
.linkbtn{background:none;border:0;color:var(--mute);cursor:pointer;text-decoration:underline;padding:0;font-size:13.5px;text-align:left}
/* hero */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:32px;align-items:center;padding-block:8px 28px}
.hero h1{font-size:clamp(32px,5vw,54px);line-height:1.03;font-weight:700}
.hero p{color:var(--mute);max-width:46ch;margin:14px 0 22px;font-size:16px}
.search{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:4px 14px;max-width:440px}
.search input{flex:1;min-width:0;background:none;border:0;padding:11px 0;color:var(--fg)}
.search input:focus{outline:none}.search:focus-within{border-color:var(--gold)}
.stage{position:relative;aspect-ratio:1;max-width:100%}
canvas{width:100%;height:100%;display:block}
.tip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12.5px;white-space:nowrap;transform:translate(-50%,-130%);opacity:0;transition:opacity .15s}
.legend{font:12px var(--font-mono);color:var(--mute);text-align:center;margin-top:6px}
/* biblioteca */
.chips{display:flex;flex-wrap:wrap;gap:8px;padding-top:22px;padding-bottom:22px;border-top:1px solid var(--line)}
.chip{background:none;border:1px solid var(--line);border-radius:99px;padding:7px 14px;cursor:pointer;display:flex;align-items:center;gap:8px}
.chip .n{font:12px var(--font-mono);color:var(--mute)}
.chip[aria-pressed="true"]{border-color:var(--gold);background:var(--surface)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--c,var(--gold));display:inline-block;flex:none}
section.cat{padding-block:8px 20px}
section.cat h2{font-size:24px;display:flex;align-items:center;gap:12px;margin-bottom:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr));gap:16px}
.card{backdrop-filter:blur(8px);background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:10px;min-width:0;scroll-margin-top:24px}
.card.hot{border-color:var(--c);box-shadow:0 0 0 1px var(--c)}
.meta{display:flex;justify-content:space-between;gap:8px;font:12px var(--font-mono);color:var(--mute)}
.meta span{min-width:0;overflow-wrap:anywhere}
.card h3{font-size:19px;line-height:1.2;overflow-wrap:anywhere}
.card p{margin:0;color:var(--mute);overflow-wrap:anywhere}
.learn{border-top:1px dashed var(--line);padding-top:10px;font-size:14px;overflow-wrap:anywhere}
.learn b{font:500 12px var(--font-mono);color:var(--c);display:block;margin-bottom:2px}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:4px}
.empty{color:var(--mute);padding:32px;border:1px dashed var(--line);border-radius:14px;text-align:center}
.empty b{color:var(--fg)}
/* diálogos */
dialog{background:var(--surface2);color:var(--fg);border:1px solid var(--line);border-radius:16px;padding:24px;width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow:auto}
dialog::backdrop{background:rgba(5,8,16,.7)}
dialog h2{font-size:22px;margin-bottom:14px}
.form{display:flex;flex-direction:column;gap:12px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.row>*{min-width:0}
.people{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.person{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:8px 12px}
.person .em{flex:1 1 180px;overflow-wrap:anywhere}
.person select{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:5px 8px}
.linkbox{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:12.5px var(--font-mono);overflow-wrap:anywhere;user-select:all}
.drop{position:fixed;inset:0;background:rgba(5,8,16,.82);display:grid;place-items:center;z-index:50;pointer-events:none}
.drop[hidden]{display:none}
.drop div{border:2px dashed var(--gold);border-radius:20px;padding:48px 56px;font:700 26px var(--font-display);color:#fff;text-align:center;margin:16px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);background:var(--surface2);border:1px solid var(--line);padding:10px 16px;border-radius:10px;opacity:0;transition:.2s;pointer-events:none;z-index:60;max-width:calc(100vw - 32px)}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media(max-width:820px){.hero{grid-template-columns:1fr}.stage{max-width:400px;margin:0 auto;width:100%}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
