:root{
  --bg:#050505; --panel:#0d0d0d; --panel2:#111214; --line:#1c2a2b;
  --cyan:#00f2ea; --purple:#a855f7; --lime:#c6ff3d; --text:#e5e5e5; --muted:#8a9296;
  --display:"Chakra Petch",system-ui,sans-serif; --mono:"Fira Code",ui-monospace,Menlo,Consolas,monospace;
  --chat-w:420px; --top-h:52px;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:var(--mono);font-size:14px;overflow:hidden}
button,input,textarea{font:inherit;color:inherit}
a{color:var(--cyan)}
.scan{position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.35;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px)}
.eyebrow{color:var(--cyan);font-size:11px;letter-spacing:.14em;text-transform:uppercase}

/* header */
.top{height:var(--top-h);display:flex;align-items:center;gap:14px;padding:0 18px;border-bottom:1px solid var(--line);background:#070808;position:relative;z-index:5}
.brand{font-family:var(--display);font-weight:700;font-size:20px;letter-spacing:.06em;color:#fff;text-decoration:none}
.brand span{color:var(--cyan);margin-left:6px}
.slash{color:var(--muted);font-size:12px;letter-spacing:.12em}
.top-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.top-link{font-size:12px;text-decoration:none;color:var(--muted)}
.top-link:hover{color:var(--cyan)}
.chip{display:inline-flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--line);font-size:11px;letter-spacing:.08em;color:var(--muted)}
.chip i{width:7px;height:7px;border-radius:50%;background:#555}
.chip.on{color:var(--lime);border-color:#34440f}.chip.on i{background:var(--lime);box-shadow:0 0 8px var(--lime)}
.chip.off{color:#ff6b6b;border-color:#4a1d1d}.chip.off i{background:#ff6b6b}

/* layout */
.layout{display:grid;grid-template-columns:minmax(0,1fr) var(--chat-w);height:calc(100dvh - var(--top-h))}
.stage{position:relative;min-width:0;background:#000;overflow:hidden}
#universe-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}

/* loading */
.loading{position:absolute;inset:0;display:grid;place-items:center;background:#050505;z-index:6;transition:opacity .6s}
.loading.done{opacity:0;pointer-events:none}
.load-box{width:min(420px,86%)}
.load-box h1{font-family:var(--display);font-size:30px;margin:8px 0 18px}
.bar{height:3px;background:#161a1a}.bar i{display:block;height:100%;width:6%;background:linear-gradient(90deg,var(--cyan),var(--purple));transition:width .4s}
.load-box small{display:block;margin-top:12px;color:var(--muted);line-height:1.5}

/* target card */
.card{position:absolute;left:18px;top:18px;width:min(340px,calc(100% - 36px));padding:16px 18px;background:rgba(10,10,12,.78);backdrop-filter:blur(10px);border:1px solid rgba(0,242,234,.28);z-index:3;animation:rise .35s ease}
.card h2{font-family:var(--display);font-size:30px;margin:4px 0 8px;color:#fff}
.card p{margin:0 0 12px;color:#c9d0d3;line-height:1.55;font-size:13px}
.card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:12px}
.card dt{color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.card dd{margin:0;color:var(--lime);text-align:right}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* tools */
.tools{position:absolute;right:14px;top:14px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;z-index:3;max-width:60%}
.tools button,.scales button,.chat-actions button,.linkish{background:rgba(8,10,10,.72);border:1px solid var(--line);padding:6px 10px;font-size:11px;letter-spacing:.08em;cursor:pointer;color:var(--text)}
.tools button:hover,.scales button:hover,.chat-actions button:hover{border-color:var(--cyan);color:var(--cyan)}
.tools button[aria-pressed=false]{color:var(--muted)}
.tools b{color:var(--lime);font-weight:500}

/* dock */
.dock{position:absolute;left:0;right:0;bottom:0;padding:14px 18px 16px;background:linear-gradient(0deg,rgba(5,5,5,.94),rgba(5,5,5,0));z-index:3;display:flex;flex-direction:column;gap:10px}
.scales{display:flex;gap:6px;flex-wrap:wrap}
.scales button.on{border-color:var(--cyan);color:var(--cyan);background:rgba(0,242,234,.08)}
.dest-row{display:flex;gap:10px;align-items:center;min-width:0}
#dest-search{flex:0 0 220px;background:rgba(8,10,10,.8);border:1px solid var(--line);padding:7px 10px;font-size:12px;outline:none}
#dest-search:focus{border-color:var(--cyan)}
.dest{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;min-width:0;padding-bottom:2px}
.dest::-webkit-scrollbar{display:none}
.dest button{flex:0 0 auto;background:rgba(8,10,10,.72);border:1px solid var(--line);padding:6px 11px;font-size:12px;cursor:pointer;white-space:nowrap}
.dest button:hover{border-color:var(--purple);color:#d8b4fe}
.dest button.on{border-color:var(--purple);background:rgba(168,85,247,.16);color:#e9d5ff}

/* chat */
.chat{display:flex;flex-direction:column;min-height:0;background:var(--panel);border-left:1px solid var(--line);position:relative;z-index:4}
.chat-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 18px 12px;border-bottom:1px solid var(--line)}
.chat-head h2{font-family:var(--display);font-size:22px;margin:4px 0 0;color:#fff}
.chat-actions{display:flex;gap:6px}
.thread{flex:1;min-height:0;overflow-y:auto;padding:16px 18px;display:flex;flex-direction:column;gap:14px;scroll-behavior:smooth}
.msg{max-width:100%;line-height:1.6;font-size:13px;word-wrap:break-word;overflow-wrap:anywhere}
.msg .who{display:block;font-size:10px;letter-spacing:.14em;margin-bottom:5px;text-transform:uppercase}
.msg.user .who{color:var(--cyan)}.msg.ai .who{color:var(--purple)}
.msg.user .body{color:#fff;border-left:2px solid var(--cyan);padding-left:10px}
.msg.ai .body{color:#d8dcde}
.body p{margin:0 0 .7em}.body p:last-child{margin:0}
.body ul,.body ol{margin:.2em 0 .7em 1.2em;padding:0}
.body code{background:#16191a;padding:1px 5px;color:var(--lime)}
.body pre{background:#08090a;border:1px solid var(--line);padding:10px 12px;overflow-x:auto;margin:.5em 0}
.body pre code{background:none;padding:0;color:#d8dcde}
.body h3,.body h4{font-family:var(--display);margin:.6em 0 .3em;color:#fff}
.msg.err .body{color:#ff9b9b}
.cursor::after{content:"▍";color:var(--cyan);animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.tool{display:flex;align-items:center;gap:8px;border:1px solid #2b1747;background:rgba(168,85,247,.07);padding:7px 10px;font-size:12px;color:#d8b4fe}
.tool .ok{color:var(--lime)}.tool code{background:none;color:#e9d5ff;padding:0}
.chips{display:flex;gap:6px;flex-wrap:wrap;padding:0 18px 10px}
.chips button{background:transparent;border:1px solid var(--line);padding:6px 9px;font-size:11px;cursor:pointer;color:var(--muted);text-align:left}
.chips button:hover{border-color:var(--cyan);color:var(--cyan)}
.composer{display:flex;gap:8px;padding:12px 18px;border-top:1px solid var(--line);align-items:flex-end}
.composer textarea{flex:1;resize:none;max-height:140px;background:#0a0b0c;border:1px solid var(--line);padding:10px 12px;outline:none;line-height:1.45}
.composer textarea:focus{border-color:var(--cyan)}
.composer button{border:1px solid var(--cyan);background:rgba(0,242,234,.1);color:var(--cyan);padding:10px 14px;cursor:pointer;letter-spacing:.08em;font-size:12px}
.composer button:hover{background:rgba(0,242,234,.2)}
.composer button#stop{border-color:#ff6b6b;color:#ff6b6b;background:rgba(255,107,107,.08)}
.composer button:disabled{opacity:.4;cursor:default}
.legal{padding:0 18px 12px;color:#5d676b;font-size:10.5px;line-height:1.5}
.linkish{background:none;border:0;padding:0;color:var(--cyan);text-decoration:underline;font-size:inherit;letter-spacing:0}

/* credits dialog */
dialog{background:var(--panel);color:var(--text);border:1px solid var(--cyan);max-width:560px;width:calc(100% - 32px);padding:22px 24px}
dialog::backdrop{background:rgba(0,0,0,.7)}
dialog h2{font-family:var(--display);margin:6px 0 12px}
dialog li{margin:0 0 10px;line-height:1.55;font-size:13px}
dialog .note{color:var(--muted);font-size:12px}
dialog .x{position:absolute;right:10px;top:8px;background:none;border:0;font-size:24px;cursor:pointer}

.only-mobile{display:none}

@media (max-width:900px){
  :root{--chat-w:100%}
  .slash,.top-link{display:none}
  .layout{display:block;height:calc(100dvh - var(--top-h))}
  .stage{height:100%}
  .chat{position:fixed;left:0;right:0;bottom:0;height:68dvh;border-left:0;border-top:1px solid var(--cyan);transform:translateY(105%);transition:transform .3s ease;z-index:20;box-shadow:0 -20px 40px rgba(0,0,0,.6)}
  .chat.open{transform:none}
  .only-mobile{display:inline-block}
  .fab{position:fixed;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:15;background:var(--cyan);color:#001a19;border:0;padding:12px 16px;font-family:var(--display);font-weight:700;letter-spacing:.1em;cursor:pointer}
  .chat.open ~ .fab{display:none}
  .card{top:10px;left:10px;width:calc(100% - 20px);padding:12px 14px}
  .card h2{font-size:22px}
  .card p{display:none}
  .tools{top:auto;right:auto;left:10px;bottom:112px;max-width:calc(100% - 20px);justify-content:flex-start}
  .dock{padding:10px 10px 74px}
  #dest-search{flex:0 0 130px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.thread{scroll-behavior:auto}}
