:root{--bg: #0a0f0a;--fg: #33ff66;--fg-dim: #1a8833;--fg-accent: #00ee55;--fg-error: #ff4444;--fg-system: #22cc44;--fg-chat: #66ffaa;--fg-success: #44ff88;--fg-agent: #22ddff;--glow: rgba(51, 255, 102, .45);--glow-dim: rgba(51, 255, 102, .12);--border: rgba(51, 255, 102, .18);--scanline: rgba(0, 0, 0, .07)}[data-theme=remote]{--bg: #0f0800;--fg: #ff5544;--fg-dim: #882200;--fg-accent: #ffb000;--fg-error: #ff2222;--fg-system: #cc4400;--fg-chat: #ffcc44;--fg-success: #ffb000;--fg-agent: #22ddff;--glow: rgba(255, 85, 68, .5);--glow-dim: rgba(255, 85, 68, .12);--border: rgba(255, 85, 68, .2);--scanline: rgba(0, 0, 0, .09)}[data-theme=hostile]{--bg: #0d0a12;--fg: #cc66ff;--fg-dim: #663388;--fg-accent: #ff44cc;--fg-error: #ff2288;--fg-system: #9944cc;--fg-chat: #dd88ff;--fg-success: #cc66ff;--fg-agent: #22ddff;--glow: rgba(204, 102, 255, .5);--glow-dim: rgba(204, 102, 255, .12);--border: rgba(204, 102, 255, .2);--scanline: rgba(0, 0, 0, .09)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;overflow:hidden;overscroll-behavior:none}body{height:100%;overflow:hidden;background:var(--bg);color:var(--fg);font-family:ui-monospace,SF Mono,Menlo,Consolas,Courier New,monospace;font-size:14px;line-height:1.6;animation:crt-flicker 8s infinite;transition:background .3s ease,color .3s ease}.crt-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;pointer-events:none}.crt-overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(to bottom,transparent,transparent 2px,var(--scanline) 2px,var(--scanline) 4px)}.crt-overlay:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%)}.screen{display:none;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}.screen.active{display:flex}#screen-title{align-items:center;justify-content:center;padding:2rem 1.5rem;text-align:center}.title-container{display:flex;flex-direction:column;align-items:center;gap:1rem;max-width:600px;width:100%}.title-logo{position:relative;font-size:clamp(3.2rem,14vw,7.5rem);font-weight:900;letter-spacing:.18em;color:var(--fg);text-shadow:0 0 20px var(--glow),0 0 60px var(--glow-dim),0 0 100px var(--glow-dim);animation:title-appear .6s cubic-bezier(.22,1,.36,1) both}.title-logo--small{font-size:clamp(2rem,10vw,4rem);animation:none;opacity:1}.title-logo:before,.title-logo:after{content:attr(data-text);position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.title-logo:before{color:#f05;animation:title-glitch-before .6s ease-out both}.title-logo:after{color:#0ff;animation:title-glitch-after .6s ease-out both}.title-logo--small:before,.title-logo--small:after{animation:none;opacity:0}.title-subtitle{font-size:clamp(.75rem,3.5vw,1.05rem);color:var(--fg-dim);letter-spacing:.2em;text-transform:uppercase;opacity:0;animation:fade-in .4s .5s ease-out forwards}.title-hint{font-size:.72rem;color:var(--fg-dim);opacity:0;animation:fade-in .4s .9s ease-out forwards}.btn-start{margin-top:2rem;padding:.75rem 2rem;background:transparent;border:1px solid var(--fg);color:var(--fg);font-family:inherit;font-size:1rem;letter-spacing:.1em;cursor:pointer;text-shadow:0 0 8px var(--glow);box-shadow:0 0 12px var(--glow-dim),inset 0 0 12px var(--glow-dim);transition:box-shadow .2s,background .2s;opacity:0;animation:fade-in .4s 1.1s ease-out forwards}.btn-start:hover,.btn-start:focus-visible{background:var(--glow-dim);box-shadow:0 0 24px var(--glow),inset 0 0 16px var(--glow-dim);outline:none}#screen-chapter-select{align-items:center;justify-content:center;padding:2rem 1.5rem}.chapter-select-container{display:flex;flex-direction:column;align-items:center;gap:1.5rem;max-width:520px;width:100%}.chapter-select-subtitle{color:var(--fg-dim);font-size:.85rem;letter-spacing:.15em}.chapter-list{display:flex;flex-direction:column;gap:.75rem;width:100%}.chapter-item{display:flex;flex-direction:column;gap:.2rem;padding:1rem 1.25rem;background:transparent;border:1px solid var(--border);color:var(--fg);font-family:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s}.chapter-item:hover,.chapter-item:focus-visible{border-color:var(--fg);background:var(--glow-dim);outline:none}.chapter-num{font-size:.72rem;color:var(--fg-dim);letter-spacing:.15em}.chapter-name{font-size:1rem;letter-spacing:.05em}.chapter-status{font-size:.75rem;color:var(--fg-accent)}#screen-chat{align-items:center;justify-content:center}.chat-container{display:flex;flex-direction:column;width:100%;max-width:520px;height:100%;height:100dvh}.chat-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border);flex-shrink:0}.chat-contact{font-size:.95rem;color:var(--fg);text-shadow:0 0 8px var(--glow)}.chat-status{font-size:.75rem;color:var(--fg-dim);letter-spacing:.08em}.chat-messages{flex:1;overflow-y:auto;padding:1.5rem 1.25rem;display:flex;flex-direction:column;gap:.85rem;scrollbar-width:thin;scrollbar-color:var(--fg-dim) transparent}.chat-bubble{display:inline-block;max-width:85%;padding:.6rem .9rem;border:1px solid var(--border);border-radius:0 8px 8px;color:var(--fg);font-size:.9rem;line-height:1.5;animation:bubble-appear .25s ease-out both;align-self:flex-start}.chat-bubble--agent{border-color:var(--fg-agent);color:var(--fg-agent);border-radius:8px 8px 8px 0;text-shadow:0 0 6px rgba(34,221,255,.3)}.chat-footer{padding:1.25rem;border-top:1px solid var(--border);flex-shrink:0;display:flex;justify-content:center}.btn-terminal{padding:.75rem 1.75rem;background:transparent;border:1px solid var(--fg);color:var(--fg);font-family:inherit;font-size:.95rem;letter-spacing:.08em;cursor:pointer;text-shadow:0 0 8px var(--glow);box-shadow:0 0 12px var(--glow-dim);transition:box-shadow .2s,background .2s;animation:fade-in .3s ease-out}.btn-terminal:hover,.btn-terminal:focus-visible{background:var(--glow-dim);box-shadow:0 0 20px var(--glow);outline:none}#screen-terminal{background:var(--bg);transition:background .3s ease}.terminal-wrapper{display:flex;width:100%;height:100%;justify-content:center;align-items:stretch}.terminal-monitor{display:flex;flex-direction:column;width:100%;height:100%;overflow:hidden}.watchdog-wrapper{display:flex;align-items:center;gap:.5rem;padding:.3rem .75rem;border-bottom:1px solid var(--border);flex-shrink:0;height:28px;font-size:.68rem}.watchdog-bar-track{flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden}.watchdog-bar-fill{height:100%;width:0%;border-radius:2px;transition:width .4s ease,background-color .4s ease}.watchdog-bar-fill[data-level=green]{background:#3f6}.watchdog-bar-fill[data-level=amber]{background:#ffb000}.watchdog-bar-fill[data-level=red]{background:#f32;animation:watchdog-pulse .6s ease-in-out infinite}.watchdog-bar-fill[data-level=frozen]{background:var(--fg-agent)}.watchdog-label{color:var(--fg-dim);letter-spacing:.08em;flex-shrink:0}.watchdog-countdown{color:var(--fg-agent);font-size:.65rem;min-width:7rem;text-align:right;flex-shrink:0}.terminal-output{flex:1;overflow-y:auto;padding:1rem 1rem .5rem;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--fg-dim) transparent}.terminal-output::-webkit-scrollbar{width:5px}.terminal-output::-webkit-scrollbar-thumb{background:var(--fg-dim);border-radius:3px}.terminal-bottom{flex-shrink:0;border-top:1px solid var(--border);background:var(--bg)}.terminal-chips{display:flex;gap:.4rem;padding:.5rem .75rem;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.terminal-chips::-webkit-scrollbar{display:none}.chip{flex-shrink:0;padding:.3rem .65rem;background:transparent;border:1px solid var(--border);color:var(--fg-dim);font-family:inherit;font-size:.72rem;letter-spacing:.05em;cursor:pointer;border-radius:3px;transition:border-color .15s,color .15s,background .15s;white-space:nowrap;min-height:36px;display:inline-flex;align-items:center}.chip:hover,.chip:focus-visible{border-color:var(--fg);color:var(--fg);background:var(--glow-dim);outline:none}.terminal-input-row{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;padding-bottom:calc(.6rem + env(safe-area-inset-bottom,0px))}.terminal-prompt{color:var(--fg-dim);font-size:.82rem;white-space:nowrap;flex-shrink:0;letter-spacing:.03em}.terminal-input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--fg);font-family:inherit;font-size:.9rem;caret-color:var(--fg)}.terminal-input:disabled{opacity:.5;cursor:not-allowed}.line{min-height:1.4em;word-break:break-word;white-space:pre-wrap}.line--output{color:var(--fg)}.line--error{color:var(--fg-error)}.line--system{color:var(--fg-system);opacity:.85}.line--chat{color:var(--fg-chat);font-style:italic}.line--prompt{color:var(--fg-dim)}.line--success{color:var(--fg-success);text-shadow:0 0 8px var(--glow-dim)}.line--dim{color:var(--fg-dim);opacity:.6}.line--agent{color:var(--fg-agent);text-shadow:0 0 8px rgba(34,221,255,.3)}.ending-footer{padding:1.25rem 1rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;align-items:center;gap:.75rem;border-top:1px solid var(--border);animation:fade-in .5s ease-out}.btn-replay,.btn-next-chapter{padding:.75rem 1.75rem;background:transparent;border:1px solid var(--fg);color:var(--fg);font-family:inherit;font-size:.95rem;letter-spacing:.08em;cursor:pointer;text-shadow:0 0 8px var(--glow);box-shadow:0 0 16px var(--glow-dim);transition:box-shadow .2s,background .2s}.btn-next-chapter{border-color:var(--fg-agent);color:var(--fg-agent);text-shadow:0 0 8px rgba(34,221,255,.4);box-shadow:0 0 16px #22ddff1a}.btn-replay:hover,.btn-replay:focus-visible,.btn-next-chapter:hover,.btn-next-chapter:focus-visible{background:var(--glow-dim);box-shadow:0 0 28px var(--glow);outline:none}.ending-credit{font-size:.68rem;color:var(--fg-dim);letter-spacing:.12em;opacity:.6;text-align:center}.glitch-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;pointer-events:none;animation:screen-glitch .7s steps(1) forwards}.glitch-overlay--fade{animation:glitch-fade .15s ease-out forwards}#screen-map{background:var(--bg)}.map-container{display:flex;flex-direction:column;height:100%}.map-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.map-title{font-size:.78rem;color:var(--fg-dim);letter-spacing:.15em;text-transform:uppercase}.map-close-btn{background:transparent;border:1px solid var(--border);color:var(--fg-dim);font-family:inherit;font-size:.75rem;padding:.3rem .75rem;cursor:pointer;letter-spacing:.05em;transition:border-color .15s,color .15s;min-height:36px}.map-close-btn:hover,.map-close-btn:focus-visible{border-color:var(--fg);color:var(--fg);outline:none}.map-svg-container{flex:1;position:relative;overflow:hidden}.map-edge{stroke-width:.4;fill:none}.map-edge--live{stroke:var(--fg-dim);stroke-dasharray:2 2;animation:dash-travel 3s linear infinite}.map-edge--locked{stroke:var(--fg-dim);opacity:.25}.map-node-circle{fill:var(--bg);stroke-width:.6}.map-node--origin .map-node-circle{stroke:var(--fg-dim);opacity:.45}.map-node--active .map-node-circle{stroke:var(--fg);fill:var(--glow-dim)}.map-node--locked .map-node-circle{stroke:var(--fg-dim);opacity:.3}.map-node--completed .map-node-circle{stroke:var(--fg-dim);opacity:.5;fill:var(--fg-dim)}.map-node--signaling .map-node-circle{stroke:var(--fg-agent);fill:#22ddff1a}.map-pulse{fill:none;stroke-width:.5;opacity:0}.map-node--active .map-pulse{stroke:var(--fg);animation:node-pulse 2s ease-out infinite}.map-node--signaling .map-pulse{stroke:var(--fg-agent);animation:node-pulse 1.2s ease-out infinite}.map-label{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:2.8px;fill:var(--fg-dim)}.map-node--active .map-label{fill:var(--fg)}.map-node--signaling .map-label{fill:var(--fg-agent)}.map-node--locked .map-label{opacity:.4}.map-node--completed .map-label{opacity:.5}.map-panel{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background:var(--bg);border:1px solid var(--border);padding:1rem 1.25rem;min-width:200px;max-width:280px;animation:fade-in .2s ease-out;z-index:10}.map-panel-ip{font-size:.95rem;color:var(--fg);margin-bottom:.5rem}.map-panel-row{display:flex;justify-content:space-between;font-size:.8rem;color:var(--fg-dim);gap:.5rem}.map-panel-val{color:var(--fg)}.map-panel-msg{font-size:.8rem;color:var(--fg-dim);margin-bottom:.5rem}.map-panel-connect{display:block;width:100%;margin-top:.75rem;padding:.5rem;background:transparent;border:1px solid var(--fg);color:var(--fg);font-family:inherit;font-size:.85rem;cursor:pointer;letter-spacing:.08em;transition:background .15s}.map-panel-connect:hover{background:var(--glow-dim)}.map-panel-close{display:block;margin-top:.5rem;background:transparent;border:none;color:var(--fg-dim);font-family:inherit;font-size:.75rem;cursor:pointer;letter-spacing:.05em}.map-ending-footer{padding:1.25rem 1rem;padding-bottom:calc(1.25rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);display:flex;flex-direction:column;align-items:center;gap:.75rem;animation:fade-in .5s ease-out}.map-ending-msg{font-size:.9rem;color:var(--fg-agent);letter-spacing:.1em;text-align:center;text-shadow:0 0 10px rgba(34,221,255,.4);animation:fade-in .6s .3s ease-out both}@keyframes crt-flicker{0%,96%,to{opacity:1}96.5%{opacity:.96}97%{opacity:1}97.8%{opacity:.94}98%{opacity:1}}@keyframes title-appear{0%{opacity:0;transform:translate(-6px) skew(-2deg)}60%{opacity:1;transform:translate(1px) skew(0)}to{opacity:1;transform:translate(0)}}@keyframes title-glitch-before{0%{opacity:.8;transform:translate(-8px);clip-path:inset(15% 0 55% 0)}15%{opacity:.5;transform:translate(4px);clip-path:inset(50% 0 20% 0)}30%{opacity:0}to{opacity:0}}@keyframes title-glitch-after{0%{opacity:.8;transform:translate(8px);clip-path:inset(55% 0 15% 0)}15%{opacity:.5;transform:translate(-4px);clip-path:inset(20% 0 50% 0)}30%{opacity:0}to{opacity:0}}@keyframes screen-glitch{0%{background:#ff00502e;clip-path:inset(5% 0 80% 0);transform:translate(-4px)}8%{background:#00ffdc26;clip-path:inset(40% 0 30% 0);transform:translate(4px)}16%{background:#ff00501f;clip-path:inset(70% 0 8% 0);transform:translate(-2px)}24%{background:#00ffdc1a;clip-path:inset(15% 0 65% 0);transform:translate(3px)}32%{background:#ffb4001a;clip-path:inset(55% 0 25% 0);transform:translate(-3px)}40%{background:#ff005026;clip-path:inset(85% 0 3% 0);transform:translate(4px)}48%{background:#00ffdc1f;clip-path:inset(30% 0 48% 0);transform:translate(-4px)}56%{background:#ff005014;clip-path:inset(60% 0 18% 0);transform:translate(2px)}64%{background:#00ffdc1a;clip-path:inset(10% 0 72% 0);transform:translate(-2px)}72%{background:#ffb4001f;clip-path:inset(45% 0 35% 0);transform:translate(3px)}80%{background:#ff00500f;clip-path:inset(78% 0 10% 0);transform:translate(-1px)}90%{background:#0000004d;clip-path:none}to{opacity:1;clip-path:none}}@keyframes glitch-fade{to{opacity:0}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes bubble-appear{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes watchdog-pulse{0%,to{opacity:1}50%{opacity:.55}}@keyframes node-pulse{0%{r:4.5;opacity:.6}70%{r:8;opacity:0}to{r:8;opacity:0}}@keyframes dash-travel{to{stroke-dashoffset:-12}}@media (min-width: 768px){.terminal-wrapper{align-items:center;padding:2rem;background:color-mix(in srgb,var(--bg) 95%,black)}.terminal-monitor{max-width:720px;width:100%;height:calc(100vh - 4rem);height:calc(100dvh - 4rem);border:1px solid var(--border);border-radius:6px;box-shadow:0 0 0 1px color-mix(in srgb,var(--bg) 80%,black),0 0 40px var(--glow-dim),inset 0 0 60px #0000004d}.terminal-output{padding:1.25rem 1.5rem .5rem;font-size:.88rem}.terminal-input-row{padding:.75rem 1.5rem}.terminal-chips{padding:.5rem 1.5rem}.watchdog-wrapper{padding-left:1.5rem;padding-right:1.5rem}body{font-size:15px}.map-panel{bottom:2rem}}@media (min-width: 1200px){body{font-size:15.5px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}body{animation:none}.glitch-overlay{display:none!important}.map-pulse{display:none}}
