@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--bg:#0b0e19;--panel:#141a2b;--line:#2a3149;--muted:#a3adc5;--violet:#9e83ff;--cyan:#90e0e4}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 20% 10%,#252340 0,transparent 55%),var(--bg);color:#f3f2fc;font:15px 'DM Sans',system-ui,sans-serif}button,input,textarea,select{font:inherit}button,a,input,textarea,select{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;background:#1b2236;color:inherit;border:1px solid var(--line);border-radius:13px;min-height:46px;padding:12px 16px}button:hover{border-color:#9680df;background:#292741}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}a{color:inherit;text-decoration:none}.shell{max-width:1400px;min-height:100dvh;margin:auto;display:grid;grid-template-columns:330px 1fr;gap:60px;padding:42px}.brand{font:700 17px Manrope,system-ui;letter-spacing:3px;display:block;margin-bottom:65px}.brand small{font-size:.85em;letter-spacing:3px;color:var(--cyan)}.brand span{color:var(--violet);font-size:29px;padding:0 5px;vertical-align:-2px}.eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--cyan);font-weight:700}h1{font:500 48px/1.16 Georgia,serif;letter-spacing:-1px;margin:20px 0}h1 em{font-weight:400;color:#b8a5ff}h2{font:500 33px/1.1 Georgia,serif;margin:12px 0}h3{font-size:18px;margin:10px 0}.intro{color:var(--muted);line-height:1.8;font-size:14px}.rail nav{display:grid;gap:8px;margin:35px 0}.rail nav button{text-align:left;background:transparent;border-color:transparent;color:var(--muted)}.rail nav i{font-style:normal;display:inline-block;width:30px}.short{display:none}[hidden]{display:none!important}.hero .abstract{height:100%}.abstract.avatar{font-size:16px}.composer button.live{background:#7a2f4a;border-color:#ff9db5}.rail nav button.active{background:#28233e;border-color:#443764;color:#e4d9ff}.build{font-size:12px;color:#c7cfe0;margin-top:45px}.build p{font-size:11px;color:var(--muted);line-height:1.8}.dot{display:inline-block;width:6px;height:6px;background:var(--cyan);border-radius:50%;margin-right:6px}main{width:100%;max-width:800px;align-self:start;background:linear-gradient(140deg,#161c30e6,#101524);border:1px solid var(--line);border-radius:26px;overflow:hidden;min-height:800px;box-shadow:0 35px 100px #0004}.content{padding:32px}.topline{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px}.tag{padding:7px 11px;border:1px solid var(--line);border-radius:30px;font-size:11px;color:var(--cyan)}.steps{display:flex;gap:6px;margin:24px 0 28px}.steps span{height:4px;flex:1;background:#30344c;border-radius:9px}.steps .done{background:linear-gradient(90deg,#7c77ff,#9fdcec)}.sub{color:var(--muted);line-height:1.6;margin:12px 0 24px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.card{position:relative;padding:0;text-align:left;overflow:hidden;background:#171e30;border:1px solid var(--line);border-radius:17px}.card.selected{border:2px solid #a68bff;box-shadow:0 0 0 3px #9477ff17}.card img{width:100%;height:185px;object-fit:cover;object-position:50% 22%;display:block}.card .info{padding:16px}.card strong{display:block;font-size:17px}.card small{display:block;margin-top:6px;color:var(--muted);line-height:1.5}.check{position:absolute;top:12px;right:12px;border-radius:50%;background:#9a7df5;color:white;width:25px;height:25px;display:grid;place-items:center}.abstract{height:185px;display:grid;place-items:center;background:radial-gradient(circle at 50% 25%,#73969a,#233944 45%,#121a2a);font:50px Georgia;color:#d4e8e8}.sceneArt{height:130px;background:linear-gradient(160deg,#76709911,#101627bb),url('assets/mira.webp') 50% 12%/cover}.sceneArt.city{background:repeating-linear-gradient(90deg,transparent 0 22px,#403b65 23px 30px),linear-gradient(#282e57,#ac7688)}.sceneArt.garden{background:radial-gradient(ellipse at bottom,#385554,#17293a 60%,#595875)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.between{justify-content:space-between}.actions{display:flex;gap:12px;margin-top:28px}.primary{background:linear-gradient(130deg,#a084ed,#6852d8);border:1px solid #b39df4;font-weight:700;box-shadow:0 8px 22px #6e4ad82b}.actions .primary{flex:1}.wide{width:100%}.secondary{background:transparent}.mini{font-size:12px;padding:8px 12px;min-height:38px}.bookCard .actions{flex-wrap:wrap}.bookCard .actions button{flex:1}.voice .play{flex-shrink:0}.notice{border:1px solid #3d4260;background:#25273b;border-radius:12px;padding:12px 15px;font-size:12px;color:#c8cfe3;line-height:1.6;margin:18px 0}.list{display:grid;gap:10px}.voice{display:flex;align-items:center;gap:10px;background:#171e31;border:1px solid var(--line);padding:12px;border-radius:14px}.voice.selected{border-color:#a88cff}.voice .choose{min-width:0;overflow-wrap:anywhere;flex:1;text-align:left;border:0;background:transparent;padding:5px}.voice small{display:block;color:var(--muted);margin-top:5px}.play{width:44px;min-height:44px;padding:5px;border-radius:50%;color:#c3b0ff}.chatHeader{display:flex;align-items:center;gap:13px;padding:17px 22px;border-bottom:1px solid var(--line)}.chatHeader .name{flex:1}.chatHeader small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.avatar{width:38px;height:38px;border-radius:50%;object-fit:cover}.hero{position:relative;background:#111827;height:330px;overflow:hidden}.hero img,.hero video{width:100%;height:100%;object-fit:cover;object-position:50% 24%}.hero::after{content:'';position:absolute;inset:50% 0 0;background:linear-gradient(transparent,#101524)}.hero .overlay{position:absolute;bottom:18px;left:23px;right:23px;z-index:1;display:flex;align-items:end;justify-content:space-between}.hero h2{font-size:26px}.messages{height:245px;overflow-y:auto;padding:15px 24px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}.bubble{max-width:85%;padding:13px 16px;border-radius:16px 16px 16px 3px;background:#232a42;line-height:1.55;overflow-wrap:anywhere;white-space:pre-wrap}.bubble.mine{align-self:flex-end;background:#5043a0;border-radius:16px 16px 3px 16px}.bubble small{display:block;color:#beb8db;font-size:10px;margin-bottom:6px}.bubble button{min-height:28px;padding:3px 8px;margin-top:8px;font-size:11px;background:transparent;display:block}.composer{display:flex;gap:9px;padding:15px 20px}.composer input{min-width:0;border-radius:25px}.composer button{border-radius:50%;width:46px;flex-shrink:0;padding:8px}.demoLine{padding:0 24px 16px;color:var(--muted);font-size:11px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 10px}.list button small{color:var(--muted)}.hero.staged .stageBg,.hero.staged .stageFg{position:absolute;inset:0}.hero.staged .stageBg>*{width:100%;height:100%;object-fit:cover;object-position:50% 50%}.hero.staged .stageFg>*{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 24%}.hero.staged.keyed .stageFg>*{object-fit:contain;object-position:50% 100%}.hero.staged.keyed::after{inset:70% 0 0}.chips{display:flex;gap:8px;padding:10px 20px 0;overflow-x:auto}.chips button{white-space:nowrap;flex-shrink:0}.guideStep{display:flex;gap:12px;align-items:flex-start;margin:16px 0}.guideStep strong{font-size:15px}.guideStep p{color:var(--muted);line-height:1.6;font-size:13px;margin:6px 0 10px}.clipRow{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;margin:8px 0;background:#171e31}.clipRow.ok{border-color:#3f6f73}.fileBtn{display:inline-flex;align-items:center;justify-content:center;margin:0;border:1px solid var(--line);border-radius:13px;cursor:pointer;color:inherit}input[type=range]{padding:0;border:0;background:transparent;accent-color:var(--violet)}.voiceOpt{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid var(--line);border-radius:14px;margin:12px 0 8px;background:#171e31;cursor:pointer}.voiceOpt input{width:auto;margin-top:3px;flex-shrink:0}.voiceOpt strong{font-size:15px;color:#f3f2fc}.voiceOpt small{display:block;color:var(--muted);margin-top:5px;line-height:1.5;font-size:12px}.voiceOpt em.tag{font-style:normal;margin-left:6px;padding:3px 8px;font-size:10px}.voiceOpt:has(input:checked){border-color:#a88cff}.setupRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px;border:1px solid var(--line);border-radius:14px;margin:10px 0;background:#171e31}.setupRow.ok{border-color:#3f6f73}.setupDot{flex:0 0 28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#2a3149;font-weight:700;font-size:13px}.setupRow.ok .setupDot{background:#2f6f6b;color:#dffbf8}.setupText{flex:1;min-width:150px}.setupText small{display:block;color:var(--muted);margin-top:4px;line-height:1.5;font-size:12px}.chatHeader{gap:8px}.hfStatus{flex-basis:100%;color:var(--cyan);font-size:12px;min-height:16px}.buildTag{margin:0;padding:0 24px 8px;color:#6f7893;font-size:10px;text-align:right}.linkish{all:unset;cursor:pointer;color:var(--cyan);text-decoration:underline;margin-left:4px}.demoLine label{align-items:center}.demoLine label{margin:0;display:flex;gap:5px}.demoLine input{width:auto}input,textarea,select{width:100%;padding:13px;border:1px solid #414660;border-radius:11px;background:#101626;color:#f2f3fa}textarea{min-height:100px;resize:vertical;line-height:1.6}label{display:block;font-size:13px;color:#ccd2e1;margin:16px 0 7px}input[type=file]{font-size:12px}dialog{background:#171d30;color:#f2f3fa;border:1px solid #4d456b;border-radius:22px;width:min(520px,94vw);max-height:90dvh;padding:28px}dialog::backdrop{background:#050811b8;backdrop-filter:blur(5px)}.close{position:absolute;right:12px;top:12px;border:0;background:transparent;font-size:22px}.empty{padding:30px;text-align:center;border:1px dashed #454c64;border-radius:15px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#e4dcff;color:#201a32;padding:13px 21px;border-radius:13px;box-shadow:0 5px 40px #0005;max-width:90vw;z-index:10;display:none}.chapter{min-height:330px;font-family:Georgia,serif;font-size:17px}.bookCard{padding:18px;border:1px solid var(--line);border-radius:14px;margin:15px 0}.mobileBrand{font-size:12px;letter-spacing:3px;color:#c1b4e5}.upload{border-style:dashed}.footerNote{color:var(--muted);font-size:11px;line-height:1.6;margin-top:22px}
@media(min-width:1000px){main{max-width:650px;margin:0 auto}.hero{height:360px}}@media(max-width:800px){.shell{display:block;padding:0}.rail{padding:14px 15px 0}.rail .brand{display:inline-block;margin:0;font-size:12px}.rail .brand span{font-size:20px}.rail h1,.rail .intro,.rail>.eyebrow,.build{display:none}.rail nav{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin:12px 0}.rail nav button{font-size:12px;padding:8px 2px;min-height:40px;white-space:nowrap;text-align:center}.rail nav i,.long{display:none}.short{display:inline}.shell:has(main.chatView){display:flex;flex-direction:column;gap:0;height:100dvh}.shell main.chatView{flex:1;min-height:0;display:flex;flex-direction:column}.chatView .hero{flex:0 0 auto;height:30dvh;min-height:190px}.chatView .messages{flex:1;height:auto;min-height:110px}.shell main{border-radius:20px 20px 0 0;border-bottom:0;min-height:calc(100dvh - 105px);max-width:100%}.content{padding:23px 18px}.card img,.abstract{height:160px}.grid{gap:10px}.card .info{padding:12px}.card strong{font-size:15px}.hero{height:32dvh;min-height:235px}.messages{height:29dvh;min-height:175px}.composer{padding:12px}.chatHeader{padding:13px 16px}.demoLine{padding:0 15px 13px}.brand{letter-spacing:3px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.hero.staged .stageBg{overflow:hidden}.hero.staged .stageBg>.stageEvent{position:absolute;inset:0;opacity:0;transition:opacity .3s}.hero.staged .stageBg>.stageEvent.on{opacity:1}

/* Video view: the stage fills the screen and the chat log stays out of the way. */
body.call{overflow:hidden}body.call .rail{display:none}
body.call #stage{position:fixed;inset:0;width:auto;height:auto;margin:0;border:0;border-radius:0;z-index:20;touch-action:none;background:#05070d}
body.call #stage .overlay{display:none}
body.call .hero.staged .stageBg{transform:translate(calc(var(--px,0)*-4.5%),calc(var(--py,0)*-1.2%)) scale(1.11)}
body.call .hero.staged .stageFg{transform-origin:50% 100%;transform:translate(calc(var(--px,0)*-6%),calc(2% + var(--py,0)*-0.8%)) scale(1.06)}
body.call .chatHeader{position:fixed;top:0;left:0;right:0;z-index:30;margin:0;border:0;border-radius:0;background:linear-gradient(#000b,#0000);padding:max(10px,env(safe-area-inset-top)) 12px 26px}
body.call .chatHeader .avatar,body.call #voiceSettings,body.call #bookOpen{display:none}
body.call .chatHeader .mini{background:#0008;backdrop-filter:blur(8px)}
body.call .messages,body.call .buildTag,body.call #message,body.call .composer .primary,body.call .demoLine label{display:none}
body.call .composer{position:fixed;left:0;right:0;bottom:max(18px,env(safe-area-inset-bottom));z-index:30;display:flex;justify-content:center;background:none;border:0;padding:0;margin:0;pointer-events:none}
body.call #mic{pointer-events:auto;width:68px;height:68px;border-radius:50%;font-size:28px;background:#000a;border:1px solid #fff5;backdrop-filter:blur(8px)}
body.call #mic.on{background:var(--violet);box-shadow:0 0 0 7px #9e83ff44}
body.call .demoLine{position:fixed;left:0;right:0;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 78px);z-index:30;margin:0;padding:0 16px;background:none;border:0;display:block;text-align:center;pointer-events:none}
body.call .hfStatus{color:#fff;text-shadow:0 1px 6px #000,0 0 2px #000;font-size:14px}
body.call .chips{position:fixed;left:0;right:0;bottom:calc(max(18px,env(safe-area-inset-bottom)) + 112px);z-index:30;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0 12px}
body.call .chips .mini{background:#0008;backdrop-filter:blur(8px)}
#panLock.on{border-color:var(--violet)}#toast{z-index:60}
@media(orientation:landscape){body.call .composer{left:auto;right:22px;justify-content:flex-end}body.call .chips{left:16px;right:120px;bottom:max(18px,env(safe-area-inset-bottom));justify-content:flex-start}body.call .demoLine{bottom:auto;top:56px}}
@media(orientation:landscape){body.call .hero.staged .stageBg{transform:translate(calc(var(--px,0)*-2.2%),0) scale(1.06)}body.call .hero.staged .stageFg{transform:translate(calc(var(--px,0)*-1%),2%) scale(1.03)}}
#goChips{display:contents}.chips:empty{display:none}.mini.go{border-color:#5f7fa8}
.stageStars{position:absolute;inset:0;width:100%;height:100%}.hero.staged.keyed.fill .stageFg>*{object-fit:cover;object-position:var(--fgx,50%) var(--fgy,50%);transition:object-position 4.6s ease-in-out}body.call .hero.staged.fill .stageFg{transform:translate(calc(var(--px,0)*-2%),calc(var(--py,0)*-1%)) scale(1.04);transform-origin:50% 50%}body.call .hero.staged.fill .stageBg{transform:translate(calc(var(--px,0)*-4%),calc(var(--py,0)*-2%)) scale(1.08)}
body.cockpit [data-act]{display:none}@media(orientation:portrait){.hero.staged.keyed.fill .stageFg>*{object-fit:contain;object-position:50% 50%;transform:scale(1.75);transform-origin:var(--fgx,50%) 50%;transition:transform-origin 4.6s ease-in-out}}

/* Flying: sky behind the windows, thumb sticks, warp flash */
.warpFlash{position:absolute;inset:0;background:#fff;opacity:0;transition:opacity .25s;pointer-events:none}
#flyPad{position:fixed;left:0;right:0;bottom:0;height:0;z-index:31;pointer-events:none}
#flyPad .stick{position:fixed;bottom:max(22px,env(safe-area-inset-bottom));width:112px;height:112px;border-radius:50%;background:#0007;border:1px solid #fff5;backdrop-filter:blur(6px);pointer-events:auto;touch-action:none}
#flyPad .stick[data-stick=steer]{left:18px}#flyPad .stick[data-stick=speed]{right:18px}
#flyPad .stick i{position:absolute;left:50%;top:50%;width:46px;height:46px;margin:-23px;border-radius:50%;background:#ffffff30;border:1px solid #fffa;pointer-events:none}
#flyPad .stick span{position:absolute;left:0;right:0;top:-20px;text-align:center;font-size:11px;color:#fffc;text-shadow:0 1px 4px #000}
body.flying .chips{top:calc(max(10px,env(safe-area-inset-top)) + 56px);bottom:auto}
body.flying .composer{left:0;right:0;justify-content:center}
body.flying .demoLine{bottom:calc(max(18px,env(safe-area-inset-bottom)) + 80px);top:auto}
#stage.redAlert::before{content:'';position:absolute;inset:0;z-index:2;pointer-events:none;box-shadow:inset 0 0 120px 20px #ff1a1a88;animation:alertPulse 1.2s ease-in-out infinite}@keyframes alertPulse{0%,100%{opacity:.25}50%{opacity:.9}}
@media(orientation:portrait){.hero.staged.keyed.fill.tall .stageFg>*{object-fit:cover;object-position:30% 50%;transform:none}}
.cockSplit{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;transition:opacity .45s;overflow:hidden}#stage.split .cockSplit{opacity:1}#stage.split .stageFg{opacity:0;transition:opacity .45s}.hero .cockSplit img{position:absolute;inset:auto;left:50%;transform:translateX(-50%);width:100%;min-width:640px;height:auto;max-height:none;object-fit:fill}.hero .cockSplit .top{top:0}.hero .cockSplit .bot{bottom:0}.cockSplit .top{top:0}.cockSplit .bot{bottom:0}
