/* River — JARVIS HUD teması (renkler/font JARVIS ui.py'den uyarlandı) */
@font-face{font-family:"Grift";src:url("/static/fonts/Grift-Regular.ttf");font-weight:400}
@font-face{font-family:"Grift";src:url("/static/fonts/Grift-Bold.ttf");font-weight:700}
@font-face{font-family:"GriftXB";src:url("/static/fonts/Grift-ExtraBold.ttf");font-weight:800}

:root{
  --bg:#020c0c; --pri:#00d4c0; --mid:#006a62; --dim:#0a2a28; --dimmer:#061414;
  --text:#7dfff6; --panel:#030f0f; --green:#00ff88; --red:#ff3344; --gold:#ffcc00;
  --org:#ff6600; --hdr:#010a0a;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);
  font-family:"Grift","Segoe UI",Roboto,sans-serif}
body{display:flex;flex-direction:column;overflow:hidden;position:relative}

/* Arka plan: nokta ızgarası + tarama çizgisi */
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:radial-gradient(var(--dimmer) 1px,transparent 1px);
  background-size:72px 72px;opacity:.6}
body::after{content:"";position:fixed;left:0;right:0;height:80px;z-index:1;pointer-events:none;
  background:linear-gradient(#081818,transparent);opacity:.5;animation:scan 7s linear infinite}
@keyframes scan{0%{top:-80px}100%{top:100%}}

/* Köşe parantezleri (HUD çerçevesi) */
.bracket{position:fixed;width:22px;height:22px;z-index:6;pointer-events:none;border:2px solid var(--pri)}
.bracket.tl{top:8px;left:8px;border-right:0;border-bottom:0}
.bracket.tr{top:8px;right:8px;border-left:0;border-bottom:0}
.bracket.bl{bottom:8px;left:8px;border-right:0;border-top:0}
.bracket.br{bottom:8px;right:8px;border-left:0;border-top:0}

header,main,footer{position:relative;z-index:2}
header{display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--hdr);
  border-bottom:1px solid var(--mid);box-shadow:0 1px 12px rgba(0,180,165,.25)}
.brand{font-family:"GriftXB";font-weight:800;font-size:22px;letter-spacing:3px;color:var(--pri);
  text-shadow:0 0 12px rgba(0,212,192,.5)}
.brand small{display:block;font-family:"Grift";font-weight:400;font-size:9px;
  letter-spacing:1px;color:var(--mid);margin-top:-2px}
.status{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--mid);margin-left:auto}
.dot{width:9px;height:9px;border-radius:50%;background:var(--red);transition:.3s}
.dot.on{background:var(--green);box-shadow:0 0 8px var(--green)}
.voiceToggle{font-size:11px;color:var(--mid);display:flex;align-items:center;gap:4px}

main{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:82%;padding:10px 13px;border-radius:12px;line-height:1.45;font-size:15px;
  white-space:pre-wrap;word-wrap:break-word;animation:pop .15s ease}
.msg.user{align-self:flex-end;background:#08201e;border:1px solid var(--dim);color:#d0f0ee;
  border-bottom-right-radius:3px}
.msg.river{align-self:flex-start;background:var(--panel);border:1px solid var(--mid);
  border-bottom-left-radius:3px;color:var(--text)}
.msg.tool{align-self:flex-start;background:transparent;color:var(--mid);font-size:12px;
  font-style:italic;padding:2px 6px}
@keyframes pop{from{opacity:0;transform:translateY(4px)}to{opacity:1}}

footer{display:flex;align-items:center;gap:10px;padding:12px;background:var(--hdr);
  border-top:1px solid var(--dim)}
#input{flex:1;background:#000d0c;border:1px solid var(--dim);color:var(--text);
  padding:12px 14px;border-radius:20px;font-size:16px;outline:none;font-family:"Grift"}
#input:focus{border-color:var(--pri);box-shadow:0 0 8px rgba(0,212,192,.3)}
.mic,.send{width:46px;height:46px;border-radius:50%;border:none;cursor:pointer;font-size:19px;
  display:grid;place-items:center;flex:0 0 auto}
.mic{background:var(--dim);color:var(--text)}
.mic.rec{background:var(--red);color:#fff;animation:pulse 1s infinite}
.send{background:var(--pri);color:#00140f}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}

/* Açılış (orb) ekranı */
#launch{position:fixed;inset:0;z-index:40;background:var(--bg);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
#launch.hidden{display:none}
.orbWrap{background:none;border:none;padding:0;cursor:pointer;line-height:0}
#orbCanvas{width:min(80vw,360px);height:min(80vw,360px)}
.brandBig{font-family:"GriftXB";font-weight:800;font-size:30px;letter-spacing:10px;color:var(--pri);
  text-shadow:0 0 16px rgba(0,212,192,.6);margin-top:-6px}
.brandSub{font-size:11px;letter-spacing:2px;color:var(--mid);margin-top:-6px}
.launchText{font-size:15px;color:var(--text);letter-spacing:.3px;margin-top:6px}
.skip{background:none;border:none;color:var(--mid);font-size:13px;text-decoration:underline;cursor:pointer}

/* BOOT ekranı */
#boot{position:fixed;inset:0;z-index:60;background:var(--bg);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
#boot.hidden{display:none}
#boot .bootBrand{font-family:"GriftXB";font-weight:800;font-size:38px;letter-spacing:12px;
  color:var(--pri);text-shadow:0 0 20px rgba(0,212,192,.7)}
#boot .bootMsg{font-size:12px;letter-spacing:3px;color:var(--mid);margin-bottom:14px}
#bootLog{font-family:"Grift";font-size:12px;color:var(--green);min-height:96px;width:min(86vw,420px);
  white-space:pre-line;line-height:1.7}
.bootBox{border:1px solid var(--mid);padding:26px 34px;position:relative;background:#00080a}
.bootBox .bracket{position:absolute}
