:root{--bg:#071018;--panel:#101d26;--paper:#e9e7df;--ink:#17232a;--muted:#83939c;--line:#29414d;--cyan:#7be4d1;--amber:#f1c46c;--pink:#fc74c8;--violet:#9a7cff;--danger:#ff8177;--radius:4px;--mono:'Courier New',monospace;--sans:system-ui,-apple-system,'Segoe UI',sans-serif}
*{box-sizing:border-box}html{background:var(--bg);color:#edf6f3;font-family:var(--sans);scroll-behavior:smooth}body{margin:0;min-height:100svh;overflow-x:hidden;background:radial-gradient(circle at 80% 0,#122b35 0,transparent 36%),linear-gradient(145deg,#071018,#0b151d)}button,input{font:inherit}.noise{position:fixed;inset:0;opacity:.045;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;background:#fff;color:#000;padding:.75rem;z-index:20}.topbar{height:76px;padding:14px max(18px,env(safe-area-inset-left));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:2}.brand{display:flex;gap:10px;color:#dcebe7;text-decoration:none;font:10px/1.35 var(--mono);letter-spacing:.14em}.brand-mark{display:grid;place-items:center;border:1px solid var(--cyan);color:var(--cyan);width:42px;font-size:13px}.kit-chip{font:11px var(--mono);letter-spacing:.14em;color:var(--muted)}.kit-chip strong{color:var(--cyan)}main{position:relative;z-index:1;width:min(100%,980px);margin:auto;padding:28px 18px 80px}.eyebrow{font:600 11px var(--mono);letter-spacing:.2em;color:var(--cyan);text-transform:uppercase}.hero h1,.page-title{font:600 clamp(30px,8vw,62px)/.97 var(--mono);letter-spacing:-.05em;margin:12px 0}.hero h1 span{display:block;color:var(--muted);font-size:.45em;letter-spacing:.05em;margin-top:12px}.lead{font-size:clamp(16px,4vw,20px);color:#bfcbc8;max-width:650px;line-height:1.65}.terminal{border:1px solid var(--line);background:#071017cc;padding:20px;margin:24px 0;font:13px/1.8 var(--mono);box-shadow:0 20px 60px #0005}.terminal-line{opacity:0;animation:lineIn .35s forwards}.terminal .secure{color:var(--amber)}@keyframes lineIn{to{opacity:1}}.card{background:var(--paper);color:var(--ink);padding:24px;margin:18px 0;border-radius:var(--radius);box-shadow:0 16px 40px #0003;position:relative}.card:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cyan)}.card h2,.card h3{font-family:var(--mono);margin-top:0}.field{margin:18px 0}.field label{display:block;font-weight:700;margin-bottom:8px}.field input{width:100%;min-height:52px;padding:12px 14px;border:1px solid #aab5b5;background:#fff;color:#111;border-radius:3px;font-size:18px}.field input:focus,.btn:focus-visible,.glyph-btn:focus-visible{outline:3px solid var(--amber);outline-offset:3px}.btn{border:1px solid var(--cyan);background:var(--cyan);color:#071018;min-height:50px;padding:12px 18px;font:700 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:3px}.btn:hover{filter:brightness(1.1)}.btn.secondary{background:transparent;color:var(--cyan)}.btn.ghost{border-color:var(--line);background:transparent;color:#d5e2df}.btn:disabled{opacity:.4;cursor:not-allowed}.actions{display:flex;gap:10px;flex-wrap:wrap}.error{color:#8c1713;background:#ffe5df;padding:12px;border-left:3px solid var(--danger);margin:12px 0}.success{color:#064e43;background:#dafbf3;padding:12px;border-left:3px solid #1f9e86;margin:12px 0}.dashboard-head{display:flex;align-items:end;justify-content:space-between;gap:18px}.progress{height:4px;background:var(--line);margin:24px 0 32px}.progress span{display:block;height:100%;background:var(--cyan);transition:width .4s}.case-grid{display:grid;gap:12px}.case{display:block;text-decoration:none;color:#eaf3f1;padding:20px;border:1px solid var(--line);background:#0d1921;position:relative;transition:.2s}.case:hover{border-color:var(--cyan);transform:translateY(-2px)}.case b{display:block;font:18px var(--mono);margin:8px 0}.case-status{font:10px var(--mono);letter-spacing:.12em;color:var(--amber)}.case.done .case-status{color:var(--cyan)}.case.locked{opacity:.55}.glyph-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:18px 0}.glyph-btn{min-height:106px;border:1px solid #a8b4b4;background:#fff;color:#17232a;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font:700 11px var(--mono);text-transform:uppercase}.glyph{width:40px;height:40px}.glyph.large{width:58px;height:58px}.route-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.route-choice{min-height:72px}.sequence{font:15px var(--mono);min-height:28px;color:var(--cyan);letter-spacing:.08em}.hint{border:1px dashed var(--line);padding:16px;margin-top:24px}.hint .btn{min-height:42px}.hint-text{color:#c9d5d2;line-height:1.55}.honorine{background:radial-gradient(circle at 20% 10%,#351553,transparent 35%),radial-gradient(circle at 90% 20%,#11385e,transparent 40%),#090817;min-height:calc(100svh - 76px);width:100vw;margin-left:calc(50% - 50vw);padding:30px max(18px,calc((100vw - 980px)/2 + 18px))}.honorine .eyebrow{color:var(--pink)}.honorine .card:before{background:linear-gradient(var(--pink),var(--violet))}.fragment{display:flex;align-items:center;gap:16px;padding:20px;border:1px solid var(--line);margin:10px 0}.fragment .glyph{color:var(--cyan)}.final-order{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin:32px 0}.final-order .glyph{filter:brightness(0) invert(1);animation:float 2s ease-in-out infinite}.final-order i{color:var(--muted)}@keyframes float{50%{transform:translateY(-7px)}}.toast{position:fixed;z-index:30;left:50%;bottom:24px;transform:translate(-50%,30px);opacity:0;background:#e9e7df;color:#17232a;padding:13px 18px;box-shadow:0 10px 30px #0007;transition:.25s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%,0)}.reset-link{display:inline-block;color:var(--muted);font-size:12px;margin-top:50px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.profile-grid{display:grid;gap:10px;margin:24px 0}.profile-choice{text-align:left;cursor:pointer;font-family:var(--sans)}.profile-note{font-size:12px;color:#66777c}.profile-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:22px;font:12px var(--mono);letter-spacing:.08em}.profile-bar .btn{min-height:40px;padding:8px 12px}
.subject-case.available{border:2px solid var(--amber);background:linear-gradient(135deg,#18272d,#25321d);box-shadow:0 0 0 1px #f2b84b33,0 14px 40px #0006;animation:accessPulse 2.4s ease-in-out infinite}.subject-case.available .case-status{color:var(--amber);font-weight:800}.subject-case.available b{font-size:clamp(20px,5vw,27px)}.subject-access-panel{margin:34px auto;border:2px solid var(--amber);box-shadow:0 18px 55px #0006,0 0 28px #f2b84b30;text-align:center}.subject-access-panel:before{background:var(--amber)}.subject-access-panel .field{text-align:left;max-width:560px;margin:24px auto}.primary-cta{min-height:68px;padding:18px 28px;font-size:clamp(13px,3vw,17px);box-shadow:0 10px 30px #08b9b344}.device-access{display:grid;justify-items:center;gap:12px;margin:42px auto 18px;padding:32px 18px;border:1px solid var(--cyan);background:#0b1c24;text-align:center}.device-access .primary-cta{width:min(100%,560px);min-height:82px;font-size:clamp(15px,4vw,21px)}@keyframes accessPulse{50%{border-color:var(--cyan);box-shadow:0 0 0 4px #08b9b318,0 18px 46px #0007}}
@media(min-width:700px){main{padding-top:55px}.case-grid,.profile-grid{grid-template-columns:1fr 1fr}.glyph-grid{grid-template-columns:repeat(4,1fr)}.card{padding:34px}.route-buttons{grid-template-columns:repeat(4,1fr)}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
.incident-card{display:grid;grid-template-columns:1fr;gap:4px}.incident-card p{margin:4px 0}.camera-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:24px 0}.camera-card{padding:0;border:1px solid var(--line);background:#0b161e;color:#eaf3f1;text-align:left;cursor:pointer;min-width:0}.camera-card:hover,.camera-card:focus-visible{border-color:var(--cyan);outline:2px solid var(--cyan);outline-offset:2px}.camera-card img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;filter:saturate(.7) contrast(1.05)}.camera-card span{display:block;padding:11px}.camera-card b{display:block;font:600 11px var(--mono)}.camera-card small{display:block;color:var(--cyan);font:9px var(--mono);margin-top:7px}.camera-card[data-open-camera="cam-06"] small{color:var(--amber)}.surveillance-step{border-top:1px solid var(--line);margin-top:34px;padding-top:26px}.camera-dialog{width:min(96vw,1050px);max-height:94svh;padding:0;border:1px solid var(--cyan);background:#071018;color:#edf6f3}.camera-dialog::backdrop{background:#02070bd9}.camera-dialog-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;background:#0c1a23;border-bottom:1px solid var(--line)}.camera-dialog-head b{display:block;color:var(--cyan);font:10px var(--mono);margin-top:6px}.camera-viewport{width:100%;overflow:auto;background:#020609;touch-action:pan-x pan-y pinch-zoom}.camera-viewport img{display:block;width:100%;height:auto;transition:width .2s}.camera-viewport.zoomed img{width:175%;max-width:none}.camera-navigation{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;padding:12px}.camera-navigation .btn{min-width:0;padding-inline:10px}.camera-navigation #next-camera{justify-self:stretch}.camera-dialog .btn{font-size:10px}.route-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(min-width:700px){.camera-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.incident-card{grid-template-columns:1fr 1fr}.route-buttons{grid-template-columns:repeat(3,minmax(0,1fr))}}
.mission-intro{max-width:900px;margin:auto}.mission-video{position:relative;aspect-ratio:16/9;background:#02070b;border:1px solid var(--line);overflow:auto}.mission-video video{display:block;width:100%;height:100%;object-fit:contain}.mission-fallback{display:none;padding:24px;font:clamp(12px,3vw,16px)/1.6 var(--mono);color:#dce8e5}.mission-fallback.visible{display:block}.mission-brief{margin-top:28px;padding:clamp(22px,5vw,42px);border:1px solid var(--line);background:#0b171f}.mission-brief h2{font:600 clamp(21px,5vw,34px)/1.2 var(--mono)}.mission-brief li{margin:9px 0}.arrival{color:var(--cyan);font:15px var(--mono)}.mission-warning{display:block;margin-top:26px;padding:18px;border:1px solid var(--amber);color:var(--amber);font:15px/1.5 var(--mono)}.dashboard-tools{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:34px}.dashboard-tools .reset-link{margin-top:0}.debug-panel{position:fixed;z-index:40;right:10px;bottom:10px;width:min(92vw,430px);padding:10px;background:#24132a;border:1px solid var(--pink);box-shadow:0 10px 35px #0008}.debug-panel summary{cursor:pointer;font:11px var(--mono);color:#fff}.debug-panel .actions{margin-top:10px}.debug-panel button{padding:7px;background:#fff;border:0;cursor:pointer;font:10px var(--mono)}
@media(max-width:430px){.mission-video{aspect-ratio:9/14}.mission-video video{object-fit:contain}.camera-dialog-head{align-items:flex-start;flex-direction:column}.debug-panel{right:4%;bottom:6px}}
.route-choice.selected,.route-choice.selected:disabled{background:var(--cyan);border-color:var(--cyan);color:#071018;opacity:1;box-shadow:inset 0 0 0 2px #071018}.glyph-btn.selected{background:#ccefe7;border-color:#168675;box-shadow:inset 0 0 0 3px #168675}
.honorine{color:#eee9ff;background:radial-gradient(circle at 18% 12%,#57317355,transparent 30%),radial-gradient(circle at 85% 6%,#1d64a544,transparent 28%),linear-gradient(155deg,#090918,#16102c 55%,#071424);min-height:calc(100svh - 76px)}.honorine .page-title{color:#fff;text-shadow:0 0 25px #b967d966}.honorine .lead{color:#d8cfeb}.honorine .eyebrow{color:#d7ae70}.honorine>.btn.ghost{color:#f4edff;border-color:#8167a2}.magic-intro,.uv-heading{margin:24px 0;padding:clamp(20px,5vw,38px);border:1px solid #765695;background:#0c1022cc;box-shadow:0 18px 55px #0005}.magic-intro p,.uv-heading p{line-height:1.7}.uv-heading h2{font:600 clamp(22px,5vw,36px) var(--mono);margin:.4em 0}.uv-stage{position:relative;width:100%;margin:18px auto;border:1px solid #8d6fb1;background:#080716;overflow:hidden;isolation:isolate;touch-action:none;user-select:none;-webkit-user-select:none;cursor:crosshair;box-shadow:0 20px 65px #0008,0 0 24px #713ca844}.uv-stage.missing{aspect-ratio:3/2}.uv-base{display:block;width:100%;height:auto}.uv-placeholder{display:none;position:absolute;inset:0;place-items:center;padding:25px;text-align:center;color:#bcaed0;background:repeating-linear-gradient(135deg,#17132b,#17132b 12px,#1d1835 12px,#1d1835 24px);font:13px var(--mono)}.uv-stage.missing .uv-placeholder{display:grid}.uv-layer{position:absolute;inset:0;opacity:0;pointer-events:none;overflow:hidden;-webkit-mask-image:radial-gradient(circle 1px at -999px -999px,black,transparent);mask-image:radial-gradient(circle 1px at -999px -999px,black,transparent);will-change:mask-image,-webkit-mask-image,opacity}.uv-layer>img{display:block;width:100%;height:100%;object-fit:contain;filter:contrast(1.28) saturate(.7) hue-rotate(38deg) brightness(.76)}.uv-stage.lamp-active .uv-layer{opacity:1}.uv-secret{position:absolute;z-index:2;color:#a7e7ff;font-family:var(--mono);font-weight:700;letter-spacing:.08em;white-space:nowrap;text-shadow:0 0 4px #fff,0 0 9px #70cfff,0 0 20px #8d3cff;mix-blend-mode:screen}.uv-halo{position:absolute;z-index:3;left:0;top:0;width:var(--uv-size);height:var(--uv-size);border-radius:50%;opacity:0;pointer-events:none;background:radial-gradient(circle,#a25bff18 0,#7148e22c 42%,#3a1f8250 65%,transparent 76%);box-shadow:0 0 32px #9258ff88,inset 0 0 28px #69c7ff55;will-change:transform}.uv-stage.lamp-active .uv-halo{opacity:1}.uv-stage.debug-reveal .uv-layer{opacity:1;-webkit-mask-image:none!important;mask-image:none!important;-webkit-clip-path:none!important;clip-path:none!important}.uv-debug-info{display:grid;gap:5px;padding:12px;border:1px dashed #d7ae70;background:#211838;color:#f0e7ff;font:11px/1.5 var(--mono)}.uv-debug-info span{display:block}.honorine-uv .card{margin-top:22px}.honorine-uv .glyph-btn{color:#17232a}.honorine .hint{border-color:#80689c}.honorine .hint-text{color:#e7def5}
@media(max-width:600px){.uv-stage{width:calc(100% + 12px);margin-left:-6px}.uv-halo{width:min(var(--uv-size),42vw);height:min(var(--uv-size),42vw)}.honorine-uv .card{padding:20px}.honorine-uv .field input{font-size:16px}}
.final-success{position:relative;display:grid;justify-items:center;text-align:center;overflow:hidden;padding:clamp(24px,6vw,64px) 0}.final-success .page-title{color:#fff;text-shadow:0 0 28px #7be4d188}.success-burst{position:relative;display:grid;place-items:center;width:150px;height:150px;margin:8px auto 26px;border:2px solid var(--cyan);border-radius:50%;background:#0e292d;box-shadow:0 0 0 12px #7be4d116,0 0 55px #7be4d166;animation:successPulse 1.5s ease-in-out infinite}.success-burst span{font:700 70px var(--mono);color:var(--cyan);animation:successReveal .65s cubic-bezier(.2,1.8,.5,1) both}.success-burst i{--angle:calc(var(--spark)*20deg);position:absolute;width:7px;height:25px;border-radius:5px;background:var(--amber);transform:rotate(var(--angle)) translateY(-108px);animation:spark 1.4s calc(var(--spark)*-.06s) ease-in-out infinite}.code-ready{display:flex;gap:12px;margin:22px 0 8px}.code-ready b{display:grid;place-items:center;width:56px;height:68px;border:1px solid var(--cyan);background:#0c1c25;color:var(--cyan);font:34px var(--mono);box-shadow:0 8px 25px #0005}.final-instruction{width:min(100%,760px);border:2px solid var(--amber);margin:28px auto}.final-instruction:before{background:var(--amber)}.final-instruction strong{display:block;margin-top:22px;padding:18px;background:#17232a;color:#fff;font:700 clamp(15px,4vw,22px)/1.45 var(--mono);letter-spacing:.04em}.final-success>.btn{margin-top:12px}@keyframes successPulse{50%{transform:scale(1.06);box-shadow:0 0 0 22px #7be4d10b,0 0 75px #7be4d188}}@keyframes successReveal{from{opacity:0;transform:scale(.2) rotate(-25deg)}}@keyframes spark{50%{opacity:.35;transform:rotate(var(--angle)) translateY(-120px) scaleY(.55)}}
