@font-face{font-family:VT323;src:url('assets/VT323-Regular.ttf') format('truetype');font-display:swap}
.intro-wordmark{position:absolute;z-index:35;top:max(35px,env(safe-area-inset-top));left:max(42px,env(safe-area-inset-left));font:800 27px/1 Arial,sans-serif;letter-spacing:-.035em;color:#e6eadf;pointer-events:none;text-shadow:0 2px 18px #0008;transition:opacity 1.2s ease,transform 1.6s ease,visibility 0s 0s}
.intro-finished .intro-wordmark{opacity:0;transform:translateY(-7px);visibility:hidden;transition:opacity 1.2s ease,transform 1.6s ease,visibility 0s 1.2s}
@media(max-width:650px){.intro-wordmark{top:max(25px,env(safe-area-inset-top));left:max(22px,env(safe-area-inset-left));font-size:24px}}
:root{color-scheme:dark;--green:#9dffb5;--ink:#080b09;--screen-x:36.55%;--screen-y:26%;--screen-w:29.15%;--screen-h:31.1%;--camera-scale:1;--camera-x:0px;--camera-y:0px}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;background:var(--ink)}body{font-family:Arial,'Malgun Gothic',sans-serif;color:#e6eadf;overflow:hidden}button{font:inherit}button:focus-visible{outline:2px solid var(--green);outline-offset:6px}button:disabled{opacity:.35;cursor:default}[hidden]{display:none!important}#experience{height:100%;height:100svh;min-height:360px;overflow:hidden;position:relative;isolation:isolate;background:#070908}.ambient{position:absolute;inset:-8%;background:center/cover url('assets/study.webp');filter:blur(24px) brightness(.38);opacity:0;transition:opacity 1.6s}.room{position:absolute;left:50%;top:50%;width:1536px;height:1024px;transform:translate(calc(-50% + var(--camera-x)),calc(-50% + var(--camera-y))) scale(var(--camera-scale));transform-origin:50% 50%;transition:transform var(--zoom-duration,5000ms) cubic-bezier(.25,.04,.12,1),opacity 1.5s;opacity:0;will-change:transform}.study{display:block;width:100%;height:100%;object-fit:contain;user-select:none}.loaded .room,.loaded .ambient{opacity:1}.screen{position:absolute;left:var(--screen-x);top:var(--screen-y);width:var(--screen-w);height:var(--screen-h);border-radius:6% / 7%;overflow:hidden;background:#010403;isolation:isolate;opacity:0;transition:opacity .12s;box-shadow:inset 0 0 14px 7px #000}.powered .screen{opacity:1}.screen-light{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 47%,#0c2714 0%,#041309 48%,#000602 100%);opacity:.75}.glass{position:absolute;inset:0;z-index:9;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 1.4em .4em #0009;background:linear-gradient(125deg,#e3ffed05 0%,transparent 45%,#03230815);border:1px solid #8ef2a80c}.boot-flash{position:absolute;z-index:11;top:50%;left:7%;right:7%;height:2px;background:#b5ffd3;box-shadow:0 0 20px 6px #69ff98;opacity:0}.powered .boot-flash{animation:power-flash .7s ease-out both}.boot{position:absolute;inset:16% 11%;color:#88e99c;font-family:VT323,monospace;font-size:clamp(13px,1.1vw,21px);line-height:1.3;text-shadow:0 0 5px #52de68aa;opacity:.85}.boot span:first-child{color:#c5fad0}.boot-finished .boot{opacity:0;transition:opacity .15s}.cursor{animation:cursor 1s steps(1) infinite}.agent{position:absolute;inset:0;opacity:0;transition:opacity .7s}.awake .agent{opacity:1}.eye-motion{position:absolute;inset:0;transform:translate(var(--look-x,0px),var(--look-y,0px));transition:transform .6s ease-out}.blink{position:absolute;inset:0;transform-origin:50% 45%;animation:blink 8.7s infinite}.eyes{position:absolute;width:155%;max-width:none;height:155%;object-fit:contain;left:-27.5%;top:-35%;mix-blend-mode:screen;pointer-events:none}.echo{opacity:0}.glitching .echo-a{opacity:.72;clip-path:inset(32% 0 53% 0);transform:translateX(9px);filter:hue-rotate(32deg)}.glitching .echo-b{opacity:.75;clip-path:inset(53% 0 32% 0);transform:translateX(-12px);filter:hue-rotate(280deg)}.glitching .eye-motion{filter:brightness(1.7);transform:translate(2px,-1px)}.agent-caption{position:absolute;left:0;right:0;bottom:19%;text-align:center;font-family:VT323,monospace;letter-spacing:.14em;font-size:clamp(13px,1.3vw,24px);color:#9debab;text-shadow:0 0 7px #4cdb7877}.signal{display:inline-block;width:.32em;height:.32em;vertical-align:middle;background:#8df2a4;box-shadow:0 0 6px #80f794;margin-right:.65em}.screen-id,.screen-state{position:absolute;bottom:7%;font-family:VT323,monospace;font-size:clamp(12px,.9vw,16px);color:#598669;letter-spacing:.08em}.screen-id{left:9%}.screen-state{right:9%}.scanlines{position:absolute;inset:0;z-index:10;pointer-events:none;background:repeating-linear-gradient(0deg,#0002 0px,#0002 1px,transparent 1px,transparent 3px);opacity:.65}.screen-spill{position:absolute;left:26%;top:20%;width:48%;height:65%;border-radius:50%;pointer-events:none;background:radial-gradient(ellipse,#74ff9017,transparent 65%);mix-blend-mode:screen;opacity:0;transition:opacity 1.7s}.awake .screen-spill{opacity:1}#static{position:absolute;inset:0;width:100%;height:100%;opacity:.07;mix-blend-mode:screen;pointer-events:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#0008,transparent 25%,transparent 69%,#000b),radial-gradient(ellipse at center,transparent 40%,#0005)}.topbar{position:absolute;top:35px;left:42px;right:42px;display:flex;justify-content:space-between;align-items:flex-start;pointer-events:none}.wordmark{font-size:23px;font-weight:800;line-height:.87;letter-spacing:-.06em;position:relative;opacity:.88}.wordmark>span{font:10px Arial;position:absolute;right:-11px;top:-2px}.session{font-family:VT323,monospace;text-align:right;display:grid;gap:5px;font-size:17px;letter-spacing:.1em;color:#c6cfbe}.session-sub{font-size:14px;color:#808d7f}.controls{position:absolute;left:42px;right:42px;bottom:30px;display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.room-label{display:grid;gap:8px}.tiny{font-family:VT323,monospace;letter-spacing:.12em;font-size:14px;color:#acb6a5}.status{font-size:14px;color:#d4decd;line-height:1.5}nav{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}nav button,.error button{border:1px solid #acbea72b;border-radius:3px;padding:11px 13px;background:#070d08a8;backdrop-filter:blur(12px);color:#dde8d9;font-size:14px;display:flex;gap:8px;align-items:center;cursor:pointer;transition:background .2s,border-color .2s}nav button:hover:not(:disabled){background:#233827a8;border-color:#a6e7ae77}nav button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4}nav button[aria-pressed=true]{color:#a9f3b3;border-color:#77c28477}.loading{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;gap:14px;width:210px;font-size:14px;color:#bbc7b8;transition:opacity .5s}.loading-number{font:18px VT323,monospace;color:#9dffb5}.loading-track{display:block;height:1px;background:#76b48d33;overflow:hidden}.loading-track:after{content:'';display:block;background:#aaffc7;width:45%;height:100%;animation:load 1.1s ease-in-out infinite}.loaded .loading{opacity:0;pointer-events:none}.error{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;z-index:25;background:#080b09}.error p{font-size:16px}.error button{margin-top:10px}.screen,.room,.agent{touch-action:pan-y}
@keyframes power-flash{0%{opacity:0;transform:scaleX(.01)}20%{opacity:1;transform:scaleX(.7)}55%{opacity:.8;transform:scaleX(1)}100%{opacity:0;transform:scaleY(55)}}@keyframes cursor{50%{opacity:0}}@keyframes load{from{transform:translateX(-110%)}to{transform:translateX(330%)}}@keyframes blink{0%,43%,46%,83%,86%,100%{transform:scaleY(1)}44.5%,84.5%{transform:scaleY(.08)}}
@media(max-width:650px){.topbar{top:25px;left:22px;right:22px}.wordmark{font-size:21px}.session{font-size:14px;letter-spacing:.025em}.session-sub{font-size:12px}.controls{left:20px;right:20px;bottom:22px;display:grid;gap:18px}.room-label{gap:5px}.controls nav{justify-content:flex-start;gap:7px}.controls button{padding:11px 10px;font-size:13px}.boot{font-size:15px}.agent-caption{font-size:17px}.screen-id,.screen-state{font-size:12px}.status{font-size:14px}}@media(max-height:500px) and (min-width:651px){.topbar{top:20px}.controls{bottom:18px}.room-label{gap:4px}.wordmark{font-size:20px}}

#boot-lines{white-space:pre-line}
.wordmark .provisional{position:static;font:16px VT323,monospace;color:#b1c4af;letter-spacing:.06em;margin-left:8px}
/* Composite emitted light onto the photographed glass, without a second bezel. */
.screen{background:transparent;box-shadow:none;mix-blend-mode:screen;border-radius:0}
.screen-light{background:radial-gradient(ellipse at 50% 46%,#1a51201a 0%,#08260c0b 45%,transparent 70%);opacity:1}
.glass{display:none}
.scanlines{opacity:.3;mask-image:radial-gradient(ellipse at center,#000 35%,transparent 72%)}
#static{opacity:.025;mask-image:radial-gradient(ellipse at center,#000 30%,transparent 75%)}
.eyes{top:-27.5%}
.blink{transform-origin:50% 50%}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.controls{left:auto;right:24px;bottom:22px;display:block}
.controls nav{gap:8px;justify-content:flex-end}
.controls button{height:40px;width:40px;display:grid;place-content:center;padding:0;border:0;border-radius:50%;background:#02080560;opacity:.42}
.controls button:hover:not(:disabled),.controls button:focus-visible{opacity:1;background:#122018b0}
.controls button[aria-pressed=true]{color:#baffc6}
@media(max-width:650px){.controls{left:auto;right:16px;bottom:18px}.controls button{width:42px;height:42px}}
/* The conversation and desktop live inside the photographed CRT glass. */
.screen{container-type:inline-size;overflow:hidden}
.dialogue{position:absolute;inset:48% 9% 7%;z-index:12;display:flex;flex-direction:column;justify-content:flex-start;text-align:center;font-family:VT323,monospace;color:#aaffb9}
.speech{font-size:5.4cqw;line-height:1.04;margin:0 0 3cqw;min-height:2.1em;white-space:pre-line;text-shadow:0 0 8px #6cef8566}
.choices{display:flex;flex-wrap:wrap;justify-content:center;gap:1.3cqw}
.choices button{font:3.3cqw/1.05 VT323,monospace;color:#9bd4a6;background:#00130477;border:1px solid #78b98865;padding:1.25cqw 2.1cqw;cursor:pointer;transition:background .2s,color .2s}
.choices button:hover,.choices button:focus-visible{color:#e1ffe7;background:#29653c80;border-color:#b2ffc5;outline:none}
.choices button:disabled{opacity:.35;cursor:default}
.conversing .eye-motion{inset:-13% 8% 43%;transition:inset 1.4s ease,transform .5s}
.conversing .eyes{top:-27.5%}
.speaking .blink{filter:brightness(1.2);animation:voice-glow .18s alternate infinite}
.voice-prompt{position:absolute;right:-5%;bottom:0;border:0;background:transparent;color:#98e7ae;width:5cqw;height:5cqw;padding:0;cursor:pointer;opacity:.7}
.voice-prompt svg{width:100%;height:100%;stroke:currentColor;stroke-width:1.3;fill:none}
.voice-prompt:hover{opacity:1}
.entering .agent,.entering .dialogue{opacity:0;transition:opacity .45s,filter .45s;filter:blur(3px)}
.desktop{position:absolute;inset:6% 5.5% 6%;z-index:15;font-family:VT323,monospace;color:#a9e6b7;opacity:0;transform:scale(.97);transition:opacity .9s,transform .9s}
.desktop-open .desktop{opacity:1;transform:scale(1)}
.desktop-open .agent{opacity:0}
.desktop-icons{position:absolute;left:0;top:0;display:grid;gap:1.5cqw;z-index:2;width:15%}
.desktop-icon{font:3.2cqw/1 VT323,monospace;color:#b0e6bc;border:1px solid transparent;background:none;padding:1cqw 0;display:grid;justify-items:center;gap:1cqw;cursor:pointer;text-shadow:0 0 3px #9efeac55}
.desktop-icon svg{width:6.1cqw;height:6.1cqw;fill:none;stroke:#94deaa;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 2px #5ace82)}
.desktop-icon:hover,.desktop-icon:focus-visible{background:#16402580;border:1px dotted #86d69d;outline:0}
.desktop-signature{position:absolute;left:25%;right:2%;top:29%;font-size:16cqw;letter-spacing:-.04em;color:#44755077;text-align:center;user-select:none;pointer-events:none}
.desktop-signature span{display:block;font-size:3.2cqw;letter-spacing:.1em;color:#77b18499;margin-top:1cqw}
.taskbar{position:absolute;left:0;right:0;bottom:0;height:7cqw;display:flex;align-items:center;gap:2cqw;border-top:1px solid #6cad7d80;background:#0a24167f;font-size:3.1cqw}
.taskbar button{font:inherit;border:0;border-right:1px solid #6393716b;color:#b7ebc3;background:#12382280;padding:1.2cqw 2cqw;cursor:pointer;height:100%}
.taskbar button:hover{background:#2b513699}.mini-face{font:3cqw VT323,monospace;color:#9bffb2;letter-spacing:-.17em;margin-right:1cqw}
#desk-clock{margin-left:auto;padding-right:1.2cqw;color:#7da98b;font-size:2.9cqw}
#task-name{font-size:2.9cqw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-window{position:absolute;left:20%;top:12%;width:77%;max-height:76%;background:#04160d;border:1px solid #7bbc91;box-shadow:.7cqw .7cqw 0 #031308;z-index:5;display:flex;flex-direction:column;overflow:hidden;outline:none}
.window-bar{height:6.2cqw;min-height:6.2cqw;background:#1d5130;display:flex;align-items:center;justify-content:space-between;padding-left:1.5cqw;color:#d1f1d8;font-size:3.2cqw;cursor:grab;touch-action:none;user-select:none;border-bottom:1px solid #7bbc91}
.window-bar:active{cursor:grabbing}.window-bar button{font:4cqw/1 VT323,monospace;color:#caffd6;background:#092b16;border:0;border-left:1px solid #7bbc91;width:6cqw;height:100%;cursor:pointer}.window-bar button:hover{background:#307b49}
.window-body{padding:3.2cqw;font:3.25cqw/1.18 VT323,monospace;overflow:auto;color:#a9d5b5;scrollbar-width:thin;scrollbar-color:#497459 #07190d}
.window-body p{margin:0 0 2.5cqw}.window-body p:last-child{margin-bottom:0}.window-body h1{font:6.2cqw/.95 VT323,monospace;color:#d0ffde;margin:0 0 2cqw}.window-body .muted{color:#77a887}.window-body button,.window-body a{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font:3.3cqw VT323,monospace;background:#1d4329;color:#ceffd9;border:1px solid #71b887;padding:1.4cqw 2.5cqw;cursor:pointer}.window-body button:disabled{opacity:.4;cursor:default}.window-body button:hover:not(:disabled),.window-body a:hover{background:#326647}.contract-address{display:block;user-select:all;overflow-wrap:anywhere;font:2.8cqw/1.2 VT323,monospace;padding:2cqw;background:#0d2a19;border:1px dashed #416f50;margin:2cqw 0 3cqw}
@keyframes voice-glow{from{filter:brightness(.95)}to{filter:brightness(1.15)}}
@media(max-width:650px){.dialogue{inset:43% 7% 5%}.speech{font-size:6.2cqw;margin-bottom:2cqw}.choices{gap:1.5cqw}.choices button{font-size:4.4cqw;padding:1.7cqw 2.5cqw}.conversing .eye-motion{inset:-15% 8% 47%}.desktop-icon{font-size:4.3cqw;gap:1.2cqw}.desktop-icons{width:18%;gap:1.2cqw}.desktop-icon svg{width:7cqw;height:7cqw}.window-body{font-size:4.5cqw;padding:3cqw}.window-bar{font-size:4.3cqw;height:7.6cqw;min-height:7.6cqw}.window-body button,.window-body a{font-size:4.4cqw}.app-window{left:15%;top:5%;width:83%;max-height:82%}.taskbar{height:8cqw;font-size:4cqw}.contract-address{font-size:3.8cqw}.voice-prompt{width:6cqw;height:6cqw}.desktop-signature span{font-size:4cqw}}

/* Full-screen entrance: charge, eye contact, signal break, then the room. */
.loading{position:absolute;inset:0;left:0;top:0;transform:none;width:100%;height:100%;display:block;z-index:30;background:#000;overflow:hidden;transition:none}
.loaded .loading{opacity:1;pointer-events:auto}
.loading-meter{position:absolute;left:50%;top:50%;width:clamp(190px,23vw,310px);height:15px;padding:4px;transform:translate(-50%,-50%);border:1px solid #7fc99555;box-shadow:0 0 26px #58ff8510;transition:opacity .2s,transform .4s}
.loading-meter>span{display:block;width:100%;height:100%;transform:scaleX(0);transform-origin:left center;background:repeating-linear-gradient(90deg,#9affb4 0px,#9affb4 5px,transparent 5px,transparent 8px);filter:drop-shadow(0 0 4px #6aff95)}
.intro-eye-pair{position:absolute;left:50%;top:50%;width:min(780px,90vw);aspect-ratio:1.5;opacity:0;transform:translate(-50%,-50%) scale(.95);transition:opacity .14s,transform .7s}
.intro-eye-pair img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;mix-blend-mode:screen}
.intro-eye-echo{opacity:0}
.eyes-on .loading-meter{opacity:0;transform:translate(-50%,-50%) scaleX(1.025)}
.eyes-on .intro-eye-pair{opacity:1;transform:translate(-50%,-50%) scale(1)}
#intro-static{position:absolute;inset:0;width:100%;height:100%;opacity:0;pointer-events:none;image-rendering:pixelated;mix-blend-mode:screen}
.intro-tear{position:absolute;inset:0;opacity:0;background:repeating-linear-gradient(0deg,transparent 0px,transparent 3px,#0008 4px,#193b2533 5px);pointer-events:none}
.loading.glitch-out{animation:signal-cut 1s linear both}
.glitch-out .intro-eye-pair{animation:eye-signal-break .7s steps(1) both}
.glitch-out .intro-eye-echo{opacity:.75;clip-path:inset(44% 0 40%);transform:translateX(35px)}
.glitch-out #intro-static{opacity:.25;animation:noise-cut .85s ease-out both}
.glitch-out .intro-tear{opacity:.75}
@keyframes signal-cut{0%,18%{opacity:1}28%{opacity:.82}38%{opacity:.94}62%{opacity:.38}100%{opacity:0}}
@keyframes eye-signal-break{0%{transform:translate(-50%,-50%)}17%{transform:translate(-47%,-50%) skewX(8deg)}32%{transform:translate(-51%,-49%) skewX(-5deg);clip-path:inset(15% 0 20%)}48%{transform:translate(-50%,-50%) scaleY(.7);clip-path:inset(30% 0 30%)}70%,100%{opacity:0;transform:translate(-50%,-50%) scaleY(.02)}}
@keyframes noise-cut{0%{opacity:.1}20%{opacity:.32}55%{opacity:.15}100%{opacity:0}}
