/* NOVA DATA CORE — Cosmic Map v5 :: HUD */
:root{
  --void:#05040a; --line:rgba(217,169,59,.26); --line2:rgba(217,169,59,.5);
  --purple:#7B4FD8; --purple-hi:#B79BFF; --gold:#D9A93B; --gold-hi:#F1CF7A;
  --teal:#3FD8C8; --text:#e8e2f5; --muted:#8f88a8; --ok:#5fd6a4; --bad:#e0645f;
  --mono:'Share Tech Mono',monospace; --cond:'Barlow Condensed',sans-serif; --serif:'Cinzel',serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--void);color:var(--text);font-family:'Barlow',system-ui,sans-serif;overflow:hidden;
  -webkit-user-select:none;user-select:none;touch-action:none}
button,input,select{font-family:inherit;font-size:inherit}
a{color:var(--gold-hi)}
.stage{position:fixed;inset:0}
#gl{display:block;width:100%;height:100%;touch-action:none}

.glass{background:rgba(14,9,28,.66);border:1px solid var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.05)}

/* ---- boot / fallback ---- */
.boot{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  pointer-events:none;transition:opacity .6s}
.boot.gone{opacity:0}
.boot .b1{font-family:var(--cond);font-weight:600;letter-spacing:.45em;color:var(--gold);font-size:18px}
.boot .b2{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--muted)}
.nowebgl{position:absolute;inset:0;display:none;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--muted);line-height:1.7}
.nowebgl.show{display:flex}

/* ---- brand + keys ---- */
.brand{position:fixed;left:24px;top:20px;display:flex;align-items:center;gap:11px;text-decoration:none;opacity:.85;z-index:5}
.brand:hover{opacity:1}
.brand .sig-lines line{stroke:var(--purple-hi);stroke-width:1;opacity:.6}
.brand .sig-stars circle{fill:var(--gold-hi)}
.brand span{display:flex;flex-direction:column}
.brand b{font-family:var(--cond);font-weight:600;font-size:15px;letter-spacing:.42em;color:var(--gold)}
.brand i{font-style:normal;font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--muted);margin-top:3px}
.keys{position:fixed;right:24px;top:22px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--muted);
  text-align:right;line-height:1.9;opacity:.7;z-index:5;pointer-events:none}
.keys b{color:var(--gold-hi);font-weight:400}

/* ---- Prime Radiant ---- */
.radiant{position:fixed;left:120px;top:calc(100vh - 260px);width:104px;height:104px;z-index:20;cursor:grab;
  border-radius:50%;outline:none;touch-action:none;-webkit-tap-highlight-color:transparent}
.radiant:active{cursor:grabbing}
.radiant canvas{width:100%;height:100%;display:block}
.radiant:focus-visible{box-shadow:0 0 0 2px var(--gold)}
.petals{position:fixed;left:0;top:0;z-index:19;pointer-events:none}
.pet{position:absolute;width:auto;min-width:126px;padding:9px 16px;border-radius:8px;text-align:center;cursor:pointer;white-space:nowrap;
  font-family:var(--cond);font-weight:600;font-size:14px;letter-spacing:.22em;color:var(--gold-hi);
  transform:translate(-50%,-50%) scale(.6);opacity:0;pointer-events:none;transition:transform .22s cubic-bezier(.2,.9,.3,1.2),opacity .18s}
.pet small{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--muted);margin-top:4px;text-transform:none;font-weight:400}
.petals.open .pet{transform:translate(-50%,-50%) scale(1);opacity:1;pointer-events:auto}
.pet:hover,.pet.on{border-color:var(--gold);box-shadow:0 0 22px rgba(217,169,59,.25)}
.pet.id{color:var(--purple-hi)}
.pet.id.anon{color:var(--teal)}

/* ---- console ---- */
.console{position:fixed;width:340px;max-height:min(70vh,640px);display:flex;flex-direction:column;z-index:18;overflow:hidden}
.con-h{display:flex;align-items:center;padding:12px 14px 10px;border-bottom:1px solid var(--line)}
.con-h b{font-family:var(--cond);font-weight:600;letter-spacing:.3em;font-size:13px;color:var(--gold)}
.x{margin-left:auto;background:none;border:0;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;padding:0 2px}
.x:hover{color:var(--gold-hi)}
.con-b{padding:12px 14px 16px;overflow:auto;font-size:13px}
.fld{margin:0 0 10px}
.fld label{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.26em;color:var(--muted);margin-bottom:5px;text-transform:uppercase}
.fld input,.fld select{width:100%;background:rgba(5,4,10,.55);border:1px solid var(--line);border-radius:6px;color:var(--text);padding:8px 10px;
  font-family:var(--mono);font-size:14px;letter-spacing:.06em;outline:none;-webkit-user-select:text;user-select:text}
.fld input:focus,.fld select:focus{border-color:var(--gold)}
.fld input::placeholder{color:#4e4868}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.seg{display:flex;gap:0;border:1px solid var(--line);border-radius:6px;overflow:hidden;margin-bottom:12px}
.seg button{flex:1;background:transparent;border:0;color:var(--muted);padding:8px 0;cursor:pointer;font-family:var(--cond);font-weight:600;letter-spacing:.24em;font-size:12px}
.seg button.on{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--void)}
.side{border:1px solid rgba(217,169,59,.16);border-radius:8px;padding:10px 10px 2px;margin-bottom:10px}
.side .sl{font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--purple-hi);margin-bottom:8px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;border:1px solid var(--gold);border-radius:6px;
  background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--void);padding:9px 14px;
  font-family:var(--cond);font-weight:600;letter-spacing:.24em;font-size:12px;text-decoration:none}
.btn.ghost{background:transparent;color:var(--gold-hi);border-color:var(--line2)}
.btn.wide{width:100%}
.btn.sm{padding:5px 9px;font-size:11px;letter-spacing:.18em}
.btn.bad{border-color:var(--bad);color:var(--bad);background:transparent}
.btn.dc{background:#5865F2;border-color:#5865F2;color:#fff}
.btn:disabled{opacity:.5;cursor:default}
.msg{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ok);margin-top:10px;line-height:1.6;min-height:1em}
.msg.bad{color:var(--bad)}
.note{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--muted);line-height:1.7;margin:8px 0 0}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.chip{background:transparent;border:1px solid var(--line);border-radius:999px;color:var(--muted);padding:5px 11px;cursor:pointer;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em}
.chip.on{color:var(--gold-hi);border-color:var(--gold)}
.chip.p.on{color:var(--purple-hi);border-color:var(--purple)}
.res{display:flex;align-items:center;gap:8px;padding:8px 8px;border-radius:6px;cursor:pointer;font-family:var(--mono);font-size:12px;letter-spacing:.06em}
.res:hover,.res.sel{background:rgba(217,169,59,.1)}
.res .k{font-size:9px;letter-spacing:.24em;color:var(--muted);width:44px}
.res .n{color:var(--gold-hi)}
.res .n.g{color:var(--teal)}
.res .m{margin-left:auto;color:var(--muted);font-size:10px}
.list .it{border-top:1px solid rgba(217,169,59,.12);padding:9px 0;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-family:var(--mono);font-size:12px}
.list .it:first-child{border-top:0}
.list .it .t{color:var(--gold-hi);cursor:pointer}
.list .it .t.g{color:var(--purple-hi)}
.list .it .w{color:var(--muted);font-size:10px;letter-spacing:.08em;width:100%}
.list .it .acts{margin-left:auto;display:flex;gap:6px}
.tag{font-family:var(--mono);font-size:9px;letter-spacing:.2em;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:2px 6px}
.tag.lock{color:var(--gold);border-color:var(--line2)}
.tag.hid{color:var(--bad);border-color:var(--bad)}
.sect{font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--muted);margin:14px 0 6px}
.toggle{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid rgba(217,169,59,.12);font-family:var(--mono);font-size:12px;cursor:pointer}
.toggle:first-child{border-top:0}
.toggle b{font-weight:400;color:var(--muted);font-size:10px;letter-spacing:.18em}
.toggle.on b{color:var(--gold-hi)}
.id-name{font-family:var(--serif);font-size:20px;color:var(--gold-hi);letter-spacing:.06em}
.id-role{font-family:var(--mono);font-size:10px;letter-spacing:.28em;color:var(--purple-hi);margin:2px 0 14px}

/* ---- card ---- */
.card{position:fixed;right:24px;top:80px;width:340px;max-height:calc(100vh - 190px);overflow:auto;padding:16px 18px;z-index:17}
.card .x{position:absolute;right:10px;top:8px}
.card .h{display:flex;align-items:baseline;gap:10px;border-bottom:1px solid var(--line);padding:0 24px 9px 0;margin-bottom:10px;flex-wrap:wrap}
.card .h b{font-family:var(--serif);font-size:26px;color:var(--gold-hi);letter-spacing:.06em;font-weight:600}
.card .h b.g{color:var(--teal);font-size:22px}
.card .h .k{font-family:var(--mono);font-size:10px;letter-spacing:.28em;color:var(--purple-hi)}
.card .h .sub{width:100%;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--muted)}
.card .r{display:flex;justify-content:space-between;font-family:var(--mono);font-size:12px;padding:4px 0;color:#cfc7e6}
.card .r b{color:var(--gold-hi);font-weight:400}
.card .r b.p{color:var(--purple-hi)}
.card .sec{font-family:var(--mono);font-size:9px;letter-spacing:.3em;color:var(--muted);margin:12px 0 5px}
.card .lane{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;padding:4px 0;cursor:pointer;border-radius:4px}
.card .lane:hover{background:rgba(217,169,59,.08)}
.card .lane i{width:22px;height:2px;border-radius:2px;display:inline-block;flex:none}
.card .lane .n{color:var(--muted);margin-left:auto;font-size:10px;letter-spacing:.06em;white-space:nowrap}
.card .link{margin-top:13px;display:flex;justify-content:space-between;align-items:center;font-family:var(--cond);font-weight:600;font-size:12px;letter-spacing:.24em}
.card .link a{text-decoration:none}
.card .link span{color:var(--muted);font-family:var(--mono);letter-spacing:.1em;font-size:9px;font-weight:400}
.card .live{font-family:var(--mono);font-size:9px;letter-spacing:.24em;color:var(--teal);margin-top:4px}
.card .dim{font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--muted);line-height:1.7}
.card .vs{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin:4px 0 8px}
.card .vs .sd{text-align:center}
.card .vs .sd b{display:block;font-family:var(--serif);font-size:20px;color:var(--gold-hi);cursor:pointer}
.card .vs .sd b.g{color:var(--teal);font-size:16px}
.card .vs .sd i{font-style:normal;font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.12em}
.card .vs .v{font-family:var(--mono);font-size:10px;letter-spacing:.3em;color:var(--purple-hi)}
.card table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11px;margin-top:4px}
.card td{padding:4px 0;border-top:1px solid rgba(217,169,59,.1)}
.card td:first-child{color:var(--muted);letter-spacing:.1em;font-size:10px}
.card td.num{text-align:right;color:var(--gold-hi)}
.card td.num.p{color:var(--purple-hi)}
.card .acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}

/* ---- ribbon ---- */
.ribbon{position:fixed;left:0;right:0;bottom:0;padding:0 56px 14px;z-index:15;pointer-events:none}
.rb-top{display:flex;align-items:center;gap:10px;pointer-events:auto;margin-bottom:6px}
.rb-lab{font-family:var(--mono);font-size:11px;letter-spacing:.28em;color:var(--gold-hi);white-space:nowrap}
.rb-lab em{color:var(--muted);font-style:normal;margin-left:12px;letter-spacing:.16em}
.rb-nav{background:transparent;border:1px solid var(--line);border-radius:6px;color:var(--gold-hi);cursor:pointer;padding:3px 8px;font-size:12px}
.rb-nav:hover{border-color:var(--gold)}
.rb-all{margin-left:auto;background:transparent;border:1px solid var(--line);border-radius:6px;color:var(--muted);cursor:pointer;padding:4px 10px;
  font-family:var(--cond);font-weight:600;letter-spacing:.22em;font-size:11px}
.rb-all.on{color:var(--void);background:linear-gradient(180deg,var(--gold-hi),var(--gold));border-color:var(--gold)}
.rb-strip{position:relative;height:30px;pointer-events:auto;display:flex;align-items:flex-end;cursor:pointer}
.rb-strip:before{content:"";position:absolute;left:0;right:0;bottom:10px;height:1px;background:linear-gradient(90deg,rgba(217,169,59,.1),rgba(241,207,122,.75))}
.tick{flex:1;position:relative;height:100%;min-width:2px}
.tick:after{content:"";position:absolute;left:50%;bottom:7px;width:1px;height:6px;background:rgba(217,169,59,.3)}
.tick.has:after{height:10px;background:rgba(217,169,59,.75)}
.tick.has.lock:before{content:"⬡";position:absolute;left:50%;transform:translateX(-50%);top:0;font-size:8px;color:rgba(217,169,59,.5)}
.tick.cur:after{width:2px;height:22px;background:var(--gold-hi);box-shadow:0 0 8px var(--gold-hi)}
.tick:hover:after{background:var(--gold-hi)}

/* ---- toast + modal ---- */
.toast{position:fixed;left:50%;top:22px;transform:translate(-50%,-30px);opacity:0;z-index:40;pointer-events:none;
  background:rgba(14,9,28,.9);border:1px solid var(--line2);border-radius:8px;padding:9px 16px;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--gold-hi);transition:.25s}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{color:var(--bad);border-color:var(--bad)}
.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background:rgba(3,2,8,.6)}
.modal[hidden]{display:none}
.modal-b{width:min(420px,92vw);padding:18px 20px}
.m-h{font-family:var(--cond);font-weight:600;letter-spacing:.3em;color:var(--gold);font-size:13px;margin-bottom:12px}
.m-body{font-family:var(--mono);font-size:13px;line-height:2;letter-spacing:.04em}
.m-body b{color:var(--gold-hi);font-weight:400}
.m-body .k{color:var(--muted);display:inline-block;width:110px;font-size:10px;letter-spacing:.24em}
.m-f{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}

/* ---- narrow ---- */
@media (max-width:860px){
  .keys{display:none}
  .brand{left:14px;top:12px}
  .brand b{font-size:12px;letter-spacing:.3em}
  .radiant{left:calc(50vw - 42px);top:calc(100dvh - 215px);width:84px;height:84px}
  .pet{min-width:0;font-size:12.5px;letter-spacing:.16em;padding:8px 12px}
  .console{left:0!important;right:0!important;top:auto!important;bottom:0;width:100%;max-height:62vh;border-radius:14px 14px 0 0}
  .card{left:0;right:0;top:auto;bottom:0;width:100%;max-height:62vh;border-radius:14px 14px 0 0}
  .ribbon{padding:0 14px 10px}
  .rb-lab{font-size:9px;letter-spacing:.18em}
  .rb-lab em{display:none}
  body.sheet .ribbon{display:none}
}
@media (prefers-reduced-motion:reduce){ .pet{transition:none} }
