*{margin:0;padding:0;box-sizing:border-box}
body{background:#05070f;color:#fff;font-family:Arial,sans-serif;min-height:100vh;overflow-x:hidden}
.hidden{display:none!important}
button{font-family:inherit}

/* stars */
.stars{position:fixed;inset:0;z-index:0}
.star{position:absolute;background:#fff;border-radius:50%;animation:tw 3s infinite ease-in-out}
@keyframes tw{0%,100%{opacity:.2}50%{opacity:1}}

/* start + back */
#startScreen{position:fixed;inset:0;z-index:30;background:rgba(5,7,15,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px}
#startScreen h1{font-size:3.5rem;letter-spacing:6px;color:#fc3d21}
#startBtn,.back,.tools button,.q,#mic,#send,.stages button{background:#0b3d91;color:#fff;border:2px solid #fff;border-radius:12px;cursor:pointer;transition:transform .2s,background .2s}
#startBtn{padding:16px 34px;font-size:1.3rem}
#startBtn:hover,.stages button:hover{transform:scale(1.08);background:#fc3d21}
.back{position:fixed;top:14px;left:14px;z-index:25;padding:8px 16px}
.back:hover,.tools button:hover,.q:hover,#mic:hover,#send:hover{background:#fc3d21}

/* screens */
.screen{position:relative;z-index:2;min-height:100vh;padding:60px 18px 110px}
#home{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center}
.panel{background:rgba(11,61,145,.35);border:2px solid #1e5fd1;border-radius:14px;padding:14px;overflow-y:auto}
.panel h2{color:#fc3d21;margin-bottom:12px;font-size:1.2rem}
.grid3{display:grid;grid-template-columns:300px 1fr 300px;gap:16px;height:calc(100vh - 190px)}
.grid2{display:grid;grid-template-columns:1fr 340px;gap:16px;height:calc(100vh - 190px)}
.center{position:relative}
.small{font-size:.9rem;display:block;margin-bottom:8px}

/* FRY */
.fry{width:190px;animation:fl 4s infinite ease-in-out}
@keyframes fl{50%{transform:translateY(-14px)}}
.arm-wave{transform-origin:151px 135px}
.talking .arm-wave{animation:wv .6s infinite alternate}
@keyframes wv{to{transform:rotate(-25deg)}}
.mouth{transform-origin:100px 92px}
.talking .mouth{animation:tk .22s infinite alternate}
@keyframes tk{to{transform:scaleY(3.2)}}
#mini{position:fixed;left:14px;bottom:76px;width:84px;z-index:15}
[data-s=home] #mini,[data-s=home] .back{display:none}
.bubble{max-width:460px;min-height:64px;background:#fff;color:#05070f;border-radius:18px;padding:16px 22px;font-size:1.15rem;font-weight:bold;opacity:0;transition:opacity .4s}
.bubble.show{opacity:1}
.stages{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:20px;opacity:0;pointer-events:none;transition:all .6s}
.stages.show{opacity:1;pointer-events:auto}
.stages button{padding:14px 22px;font-size:1rem}

/* devices */
#picker{text-align:center;padding-top:20px}
#robot{font-size:90px;animation:dr 1.2s ease-out forwards}
@keyframes dr{from{transform:translateY(-300px)}}
.hint{margin:10px 0 24px;font-size:1.3rem;color:#fc3d21;font-weight:bold}
#cards{display:flex;flex-wrap:wrap;gap:20px;justify-content:center}
.dcard{width:165px;padding:16px 8px;border-radius:16px;background:#0b3d91;border:2px solid #fff;cursor:pointer;opacity:0;animation:ap .6s forwards,bob 3s infinite ease-in-out;font-size:.9rem}
.dcard:hover{background:#fc3d21}
.dcard .ic{font-size:48px}
@keyframes ap{to{opacity:1}}
@keyframes bob{50%{margin-top:-8px}}
.q{width:100%;text-align:left;padding:10px;margin-top:8px;font-size:.95rem;border-width:1px}
.a{background:#fff;color:#05070f;border-radius:8px;padding:10px;margin-top:6px;font-size:.95rem;line-height:1.4}
#mv{width:100%;height:100%}
.tools{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);display:flex;gap:8px;flex-wrap:wrap;justify-content:center}
.tools button{padding:8px 14px}
.hotspot{background:#fc3d21;color:#fff;border:2px solid #fff;border-radius:20px;padding:4px 10px;font-size:12px;cursor:pointer}
#fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#aab4cc;gap:10px}
#fallback .big{font-size:110px}
.panel img{width:100%;border-radius:10px;margin-bottom:4px}
.panel small{display:block;color:#aab4cc;margin-bottom:12px}

/* search */
.col{display:flex;flex-direction:column}
#chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
#chips button{background:#0b3d91;color:#fff;border:1px solid #fff;border-radius:16px;padding:6px 12px;cursor:pointer;font-size:.85rem}
#chips button:hover{background:#fc3d21}
#chatLog{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}
.msg{padding:10px 14px;border-radius:12px;max-width:85%;line-height:1.4;white-space:pre-wrap}
.msg.u{align-self:flex-end;background:#0b3d91;border:1px solid #fff}
.msg.f{align-self:flex-start;background:#fff;color:#05070f}
.card{background:rgba(255,255,255,.08);border-radius:10px;padding:10px;margin-bottom:10px;font-size:.9rem;line-height:1.4}
.card b{color:#ffb347}

/* lab + phenomena */
canvas{width:100%;max-height:calc(100vh - 290px);background:#02030a;border-radius:12px;border:2px solid #1e5fd1}
#planetBtns,#phBtns{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
#planetBtns button,#phBtns button{background:#0b3d91;color:#fff;border:2px solid #fff;border-radius:10px;padding:7px 12px;cursor:pointer}
#planetBtns button.on,#phBtns button.on,#planetBtns button:hover,#phBtns button:hover{background:#fc3d21}
.lab label{display:block;margin:10px 0;font-size:.95rem}
.lab input[type=range]{width:100%}
#labOut{margin:12px 0;white-space:pre-line}
#phStep{margin-top:14px}

/* chat bar */
#chatBar{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);width:min(640px,94vw);z-index:20}
#chatBar .row{display:flex;gap:8px}
#chatInput{flex:1;padding:12px 14px;border-radius:12px;border:2px solid #fff;background:#0b1530;color:#fff;font-size:1rem}
#mic,#send{padding:0 16px;font-size:1.1rem}
#mic.on{background:#fc3d21;animation:pl .8s infinite alternate}
@keyframes pl{to{transform:scale(1.12)}}
#fryReply{background:#fff;color:#05070f;border-radius:14px;padding:12px 16px;margin-bottom:8px;max-height:26vh;overflow-y:auto;font-weight:bold}
[data-s=search] #fryReply{display:none}

@media(max-width:900px){.grid3,.grid2{grid-template-columns:1fr;height:auto}#mv{height:55vh}}

/* three.js viewer */
#stage3d{position:relative;width:100%;height:100%;overflow:hidden}
#stage3d canvas{display:block;width:100%;height:100%}
#labels{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
#labels .hotspot{position:absolute;left:0;top:0;pointer-events:auto;white-space:nowrap}
#loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#aab4cc;pointer-events:none}
#viewer.noPhotos{grid-template-columns:300px 1fr}
#viewer.noPhotos #photos{display:none}