*{box-sizing:border-box;margin:0;padding:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}html,body{background:var(--color-bg-deep);height:100%;color:var(--color-text);font-family:var(--font-family);-webkit-user-select:none;user-select:none;overflow:hidden}#app{height:100%;position:relative}.title-screen{background:linear-gradient(#00000059, #00000059), repeating-linear-gradient(0deg, transparent 0 63px, var(--color-tile-b) 63px 64px), repeating-linear-gradient(90deg, transparent 0 63px, var(--color-tile-b) 63px 64px), var(--color-bg-deep);flex-direction:column;justify-content:center;align-items:center;gap:2rem;display:flex;position:absolute;inset:0}.title-sub{color:var(--color-hologram);letter-spacing:var(--font-holo-letter-spacing);text-transform:uppercase;font-size:clamp(.7rem,2vw,.9rem)}.title-main{color:var(--color-text);letter-spacing:.12em;text-align:center;text-shadow:0 0 var(--glow-blur) var(--color-hologram);font-size:clamp(1.8rem,6vw,3.5rem);font-weight:700}.title-buttons{flex-direction:column;align-items:center;gap:1rem;display:flex}.title-start{border:var(--stroke-outline) solid var(--color-hologram);border-radius:var(--corner-radius);color:var(--color-hologram);letter-spacing:var(--font-holo-letter-spacing);cursor:pointer;min-height:44px;text-shadow:0 0 var(--glow-blur) var(--color-hologram);box-shadow:0 0 var(--glow-blur) color-mix(in srgb, var(--color-hologram) 40%, transparent);background:0 0;padding:.9rem 2.4rem;font-family:inherit;font-size:1rem;transition:background .2s}.title-start:hover,.title-start:active{background:color-mix(in srgb, var(--color-hologram) 15%, transparent)}.char-select{background:var(--color-bg-deep);z-index:150;flex-direction:column;justify-content:center;align-items:center;gap:2rem;display:flex;position:absolute;inset:0}.char-select-row{gap:2.5rem;display:flex}.char-select-btn{border:var(--stroke-outline) solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-hologram) 6%, transparent);cursor:pointer;justify-content:center;align-items:center;width:132px;height:172px;transition:border-color .15s,box-shadow .15s;display:flex}.char-select-btn:hover,.char-select-btn:focus-visible{border-color:var(--color-hologram);box-shadow:0 0 var(--glow-blur) color-mix(in srgb, var(--color-hologram) 50%, transparent)}.char-select-btn img{width:84px;image-rendering:pixelated}.dialogue-box{left:50%;bottom:max(24px, env(safe-area-inset-bottom));border:var(--stroke-outline) solid var(--color-hologram);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 88%, var(--color-hologram));width:min(680px,100% - 32px);box-shadow:0 0 var(--glow-blur) color-mix(in srgb, var(--color-hologram) 50%, transparent);cursor:pointer;z-index:100;padding:1rem 1.2rem;position:absolute;transform:translate(-50%)}.dialogue-speaker{color:var(--color-hologram);letter-spacing:var(--font-holo-letter-spacing);margin-bottom:.5rem;font-size:.8rem}.dialogue-text{white-space:pre-line;font-size:.95rem;line-height:1.7}.dialogue-hint{text-align:right;color:var(--color-line);margin-top:.5rem;font-size:.75rem;animation:1.2s infinite dialogue-blink}@keyframes dialogue-blink{50%{opacity:.2}}.game-canvas{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.game-ui{pointer-events:none;position:absolute;inset:0}.game-ui .dialogue-box{pointer-events:auto}.interact-label{color:var(--color-text);white-space:nowrap;text-shadow:0 1px 4px var(--color-bg-deep);font-size:.85rem;font-weight:600;position:absolute;transform:translate(-50%,-130%)}.puzzle-overlay{background:color-mix(in srgb, var(--color-bg-deep) 55%, transparent);pointer-events:auto;z-index:50;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.puzzle-frame{border:var(--stroke-outline) solid var(--color-hologram);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 92%, var(--color-hologram));width:min(760px,100% - 24px);max-height:calc(100% - 24px);box-shadow:0 0 calc(var(--glow-blur) * 2) color-mix(in srgb, var(--color-hologram) 45%, transparent);padding:.9rem 1rem 1rem;position:relative;overflow-y:auto}.puzzle-overlay.solved{pointer-events:none}.puzzle-overlay.solved .puzzle-frame{border-color:var(--color-success);box-shadow:0 0 calc(var(--glow-blur) * 2) color-mix(in srgb, var(--color-success) 55%, transparent)}.puzzle-frame.danger-flash{animation:.5s ease-out danger-flash}@keyframes danger-flash{0%,60%{border-color:var(--color-danger);box-shadow:0 0 calc(var(--glow-blur) * 2) var(--color-danger)}to{border-color:var(--color-hologram)}}.puzzle-title{color:var(--color-hologram);letter-spacing:var(--font-holo-letter-spacing);margin-bottom:.6rem;padding-right:48px;font-size:.85rem}.puzzle-close{border:var(--stroke-outline) solid var(--color-line);border-radius:var(--corner-radius);width:44px;height:44px;color:var(--color-text);cursor:pointer;background:0 0;font-size:1rem;position:absolute;top:8px;right:8px}.puzzle-hint-bar{border-top:1px solid var(--color-line);margin-top:.8rem;padding-top:.7rem}.puzzle-hint-button{border:1px solid var(--color-success);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-success) 12%, transparent);min-height:40px;color:var(--color-success);letter-spacing:.08em;cursor:pointer;padding:.35rem 1.1rem;font-family:inherit;font-size:.85rem}.puzzle-hint-button:disabled{opacity:.5;cursor:default}.puzzle-hint-list{flex-direction:column;gap:.35rem;margin-top:.5rem;display:flex}.puzzle-hint-item{color:var(--color-text);opacity:.9;font-size:.85rem;line-height:1.6}.puzzle-body.bohr-root{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:1rem;display:flex}.bohr-svg{flex:none;width:min(320px,76vw)}.bohr-nucleus{fill:var(--color-screen-bright);stroke:var(--color-hologram);stroke-width:2px}.bohr-orbit{fill:none;stroke:var(--color-line);stroke-width:1.2px}.bohr-orbit-hit{fill:none;stroke:#0000;stroke-width:22px;pointer-events:stroke;cursor:pointer}.bohr-orbit-label{fill:var(--color-text);pointer-events:none;font-size:11px}.bohr-orbit-dot{fill:var(--color-line);opacity:.55;cursor:pointer}.bohr-orbit-dot:hover{fill:var(--color-hologram);opacity:.9}.bohr-caption{fill:var(--color-line);text-anchor:middle;font-size:9.5px}.bohr-electron{fill:var(--color-hologram);stroke:var(--color-screen-bright);stroke-width:1.5px;cursor:grab;filter:drop-shadow(0 0 5px var(--color-hologram))}.bohr-electron.selected{stroke:var(--color-success);stroke-width:3px;filter:drop-shadow(0 0 9px var(--color-success))}.bohr-jump-tag{fill:var(--color-success);font-size:11px;font-weight:700}.spectrum-panel{flex-direction:column;flex:260px;gap:.5rem;min-width:240px;display:flex}.spectrum-counter{color:var(--color-hologram);letter-spacing:.15em;font-size:.85rem;font-weight:700}.spectrum-strip{border:1px solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 80%, black);height:48px;position:relative;overflow:hidden}.spectrum-line{width:4px;position:absolute;top:0;bottom:0;transform:translate(-50%)}.spectrum-strip-range{color:var(--color-line);text-align:center;letter-spacing:.1em;font-size:.7rem}.spectrum-feedback{min-height:3.2em;color:var(--color-text);font-size:.85rem;line-height:1.55}.spectrum-done{color:var(--color-success);letter-spacing:.1em;text-shadow:0 0 var(--glow-blur) var(--color-success);font-size:.9rem;font-weight:700}.puzzle-body.prism-root{flex-direction:column;gap:.8rem;display:flex}.prism-svg{background:color-mix(in srgb, var(--color-bg-deep) 85%, black);border:1px solid var(--color-line);border-radius:var(--corner-radius);width:100%}.prism-device{fill:var(--color-console-body);stroke:var(--color-line);stroke-width:1.5px}.prism-detector-face{stroke:var(--color-success);stroke-width:3px}.prism-glass{fill:color-mix(in srgb, var(--color-hologram) 16%, transparent);stroke:var(--color-hologram);stroke-width:1.5px}.prism-tag-tir{fill:var(--color-success);font-size:12px;font-weight:700}.prism-tag-loss{fill:var(--color-danger);font-size:11px}.prism-tag-minor{fill:var(--color-line);font-size:10px}.prism-panel{flex-direction:column;gap:.6rem;display:flex}.prism-meter-label{color:var(--color-hologram);letter-spacing:.08em;margin-bottom:.25rem;font-size:.82rem}.prism-meter{border:1px solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 80%, black);height:16px;position:relative;overflow:hidden}.prism-meter-fill{background:var(--color-danger);width:0;height:100%;transition:width .25s}.prism-meter-fill.over{background:var(--color-success)}.prism-meter-threshold{background:var(--color-text);opacity:.7;width:2px;position:absolute;top:0;bottom:0}.prism-controls{flex-wrap:wrap;gap:1.2rem;display:flex}.prism-control-row{color:var(--color-text);align-items:center;gap:.5rem;font-size:.9rem;display:flex}.prism-control-row button{border:var(--stroke-outline) solid var(--color-hologram);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-hologram) 12%, transparent);width:44px;height:44px;color:var(--color-hologram);cursor:pointer;font-size:1.2rem}.prism-angle{text-align:center;min-width:3.2em;color:var(--color-hologram);font-variant-numeric:tabular-nums}.puzzle-body.traj-root{flex-direction:column;gap:.8rem;display:flex}.traj-svg{background:color-mix(in srgb, var(--color-bg-deep) 85%, black);border:1px solid var(--color-line);border-radius:var(--corner-radius);width:100%}.traj-ground{stroke:var(--color-line);stroke-width:2px}.traj-device{fill:var(--color-console-body);stroke:var(--color-line);stroke-width:1.5px}.traj-rail{fill:none;stroke:var(--color-hologram);stroke-width:2.5px}.traj-spring{fill:none;stroke:var(--color-text);stroke-width:2.5px;stroke-linejoin:round;opacity:.85}.traj-hint{fill:none;stroke:var(--color-line);stroke-width:1.5px;stroke-dasharray:3 3;opacity:.7}.traj-ring{fill:none;stroke:var(--color-line);stroke-width:2.5px;stroke-dasharray:4 3}.traj-ring.hit{stroke:var(--color-success);stroke-dasharray:none;filter:drop-shadow(0 0 6px var(--color-success))}.traj-ring-label{fill:var(--color-text);opacity:.8;font-size:11px}.traj-trail{fill:none;stroke:var(--color-success);stroke-width:1.5px;opacity:.65}.traj-ball{fill:var(--color-screen-bright);stroke:var(--color-hologram);stroke-width:1.5px;filter:drop-shadow(0 0 4px var(--color-hologram))}.traj-energy{color:var(--color-text);letter-spacing:.02em;font-size:.85rem}.traj-energy b{color:var(--color-hologram)}.traj-launch{border:var(--stroke-outline) solid var(--color-success);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-success) 14%, transparent);min-height:44px;color:var(--color-success);letter-spacing:.2em;cursor:pointer;align-self:flex-start;padding:.5rem 2rem;font-family:inherit;font-size:1rem;font-weight:700}.traj-launch:disabled{opacity:.5}.puzzle-body.induction-root{flex-direction:column;gap:.8rem;display:flex}.induction-svg{background:color-mix(in srgb, var(--color-bg-deep) 85%, black);border:1px solid var(--color-line);border-radius:var(--corner-radius);touch-action:none;width:100%}.induction-axis{stroke:var(--color-line);stroke-width:1.5px;stroke-dasharray:5 5}.induction-coil{fill:none;stroke:var(--color-hologram);stroke-width:2.5px}.induction-magnet{cursor:grab}.induction-pole-n{fill:var(--color-danger);stroke:var(--color-char-dark);stroke-width:2px}.induction-pole-s{fill:var(--color-hologram);stroke:var(--color-char-dark);stroke-width:2px}.induction-pole-label{fill:var(--color-screen-bright);text-anchor:middle;pointer-events:none;font-size:15px;font-weight:700}.induction-meter-arc{fill:none;stroke:var(--color-line);stroke-width:2px}.induction-needle{stroke:var(--color-success);stroke-width:2.5px;stroke-linecap:round}.induction-meter-label{fill:var(--color-line);text-anchor:middle;font-size:10px}.puzzle-body.torque-root{flex-direction:column;gap:.8rem;display:flex}.torque-svg{background:color-mix(in srgb, var(--color-bg-deep) 85%, black);border:1px solid var(--color-line);border-radius:var(--corner-radius);touch-action:none;width:100%}.torque-fulcrum{fill:var(--color-hologram);stroke:var(--color-char-dark);stroke-width:2px}.torque-beam{stroke:var(--color-hologram);stroke-width:5px;stroke-linecap:round}.torque-load{fill:var(--color-danger);stroke:var(--color-char-dark);stroke-width:2px}.torque-slot{fill:var(--color-line);cursor:pointer}.torque-weight-label{fill:var(--color-screen-bright);text-anchor:middle;pointer-events:none;font-size:12px;font-weight:700}.torque-dist-label{fill:var(--color-text);text-anchor:middle;opacity:.7;pointer-events:none;font-size:10px}.torque-drag{cursor:grab}.torque-drag.dragging{cursor:grabbing}.torque-wA{fill:color-mix(in srgb, var(--color-danger) 70%, var(--color-bg-deep));stroke:var(--color-char-dark);stroke-width:2px}.torque-wB{fill:color-mix(in srgb, var(--color-success) 70%, var(--color-bg-deep));stroke:var(--color-char-dark);stroke-width:2px}.torque-drag.placed rect{filter:drop-shadow(0 0 5px var(--color-hologram))}.torque-readout{color:var(--color-text);letter-spacing:.02em;font-size:.9rem}.torque-readout b{color:var(--color-hologram);font-variant-numeric:tabular-nums}.note-overlay{background:color-mix(in srgb, var(--color-bg-deep) 55%, transparent);pointer-events:auto;z-index:80;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.note-panel{border:var(--stroke-outline) solid var(--color-success);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 90%, var(--color-success));width:min(560px,100% - 32px);max-height:calc(100% - 32px);box-shadow:0 0 calc(var(--glow-blur) * 2) color-mix(in srgb, var(--color-success) 35%, transparent);flex-direction:column;gap:.8rem;padding:1rem 1.2rem;display:flex;overflow-y:auto}.note-header{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.note-title{color:var(--color-success);letter-spacing:.08em;font-weight:700}.note-badge{border:1px solid var(--color-danger);border-radius:var(--corner-radius);color:var(--color-danger);letter-spacing:.08em;padding:.15rem .5rem;font-size:.72rem}.note-body{white-space:pre-line;font-size:.92rem;line-height:1.8}.overlay-actions{justify-content:flex-end;align-items:center;gap:.7rem;display:flex}.overlay-hint{color:color-mix(in srgb, var(--color-text) 55%, transparent);letter-spacing:.08em;font-size:.72rem}.note-close{border:var(--stroke-outline) solid var(--color-line);border-radius:var(--corner-radius);min-height:44px;color:var(--color-text);cursor:pointer;background:0 0;align-self:flex-end;padding:.4rem 1.4rem;font-family:inherit}.note-counter{top:max(10px, env(safe-area-inset-top));color:var(--color-success);letter-spacing:.15em;text-shadow:0 0 var(--glow-blur) color-mix(in srgb, var(--color-success) 60%, transparent);pointer-events:auto;cursor:pointer;background:color-mix(in srgb, var(--color-bg-deep) 70%, transparent);border:1px solid color-mix(in srgb, var(--color-success) 40%, transparent);border-radius:var(--corner-radius);min-height:40px;padding:.4rem .7rem;font-family:inherit;font-size:.8rem;position:absolute;right:12px}.journal-overlay{background:color-mix(in srgb, var(--color-bg-deep) 55%, transparent);pointer-events:auto;z-index:70;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.journal-panel{border:var(--stroke-outline) solid var(--color-success);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 92%, var(--color-success));width:min(520px,100% - 32px);max-height:calc(100% - 32px);box-shadow:0 0 calc(var(--glow-blur) * 2) color-mix(in srgb, var(--color-success) 30%, transparent);padding:1rem 1.1rem;overflow-y:auto}.journal-header{justify-content:space-between;align-items:center;margin-bottom:.8rem;display:flex}.journal-title{color:var(--color-success);letter-spacing:.08em;font-weight:700}.journal-close{border:1px solid var(--color-line);border-radius:var(--corner-radius);width:40px;height:40px;color:var(--color-text);cursor:pointer;background:0 0}.journal-list{flex-direction:column;gap:.4rem;display:flex}.journal-item{text-align:left;border:1px solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 80%, transparent);color:var(--color-text);cursor:pointer;min-height:44px;padding:.6rem .8rem;font-family:inherit;font-size:.9rem}.journal-item:disabled{opacity:.4;cursor:default;color:var(--color-line)}.journal-item:not(:disabled):hover{border-color:var(--color-success)}.mute-button{top:max(10px, env(safe-area-inset-top));border:1px solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 70%, transparent);cursor:pointer;pointer-events:auto;z-index:90;width:40px;height:40px;font-size:1.1rem;line-height:1;position:absolute;left:12px}.discovery-overlay{background:color-mix(in srgb, var(--color-bg-deep) 55%, transparent);pointer-events:auto;z-index:60;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.discovery-panel{border:var(--stroke-outline) solid var(--color-hologram);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 90%, var(--color-hologram));width:min(520px,100% - 32px);max-height:calc(100% - 32px);box-shadow:0 0 calc(var(--glow-blur) * 2) color-mix(in srgb, var(--color-hologram) 40%, transparent);flex-direction:column;gap:.8rem;padding:1rem 1.2rem;display:flex;overflow-y:auto}.discovery-badge{border:1px solid var(--color-success);border-radius:var(--corner-radius);color:var(--color-success);letter-spacing:.05em;text-shadow:0 0 var(--glow-blur) color-mix(in srgb, var(--color-success) 60%, transparent);align-self:flex-start;padding:.3rem .7rem;font-size:.85rem;font-weight:700}.discovery-body{white-space:pre-line;font-size:.92rem;line-height:1.8}.discovery-footer{color:color-mix(in srgb, var(--color-text) 55%, transparent);border-top:1px solid color-mix(in srgb, var(--color-line) 60%, transparent);padding-top:.6rem;font-size:.82rem;line-height:1.6}.keypad-overlay{background:color-mix(in srgb, var(--color-bg-deep) 55%, transparent);pointer-events:auto;z-index:60;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.keypad-panel{border:var(--stroke-outline) solid var(--color-hologram);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 92%, var(--color-hologram));box-shadow:0 0 calc(var(--glow-blur) * 2) color-mix(in srgb, var(--color-hologram) 45%, transparent);flex-direction:column;gap:.8rem;width:min(280px,100% - 48px);padding:1rem 1.2rem 1.2rem;display:flex;position:relative}.keypad-prompt{color:var(--color-hologram);letter-spacing:.08em;padding-right:44px;font-size:.82rem;line-height:1.5}.keypad-display{border:1px solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 80%, black);color:var(--color-success);letter-spacing:.3em;text-align:center;font-variant-numeric:tabular-nums;padding:.5rem;font-size:1.6rem;font-weight:700}.keypad-display.wrong{color:var(--color-danger);animation:.3s keypad-shake}@keyframes keypad-shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}.keypad-grid{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.keypad-key{border:var(--stroke-outline) solid var(--color-line);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-hologram) 8%, transparent);min-height:48px;color:var(--color-text);cursor:pointer;font-family:inherit;font-size:1.15rem}.keypad-key:active{background:color-mix(in srgb, var(--color-hologram) 25%, transparent)}.item-hud{top:max(60px, calc(env(safe-area-inset-top) + 48px));pointer-events:none;flex-direction:column;gap:6px;display:flex;position:absolute;right:12px}.item-chip{border:var(--stroke-outline) solid var(--color-success);border-radius:var(--corner-radius);background:color-mix(in srgb, var(--color-bg-deep) 82%, var(--color-success));cursor:pointer;pointer-events:auto;width:44px;height:44px;font-size:1.3rem}.ending-screen{background:color-mix(in srgb, var(--color-bg-deep) 88%, black);z-index:200;pointer-events:auto;flex-direction:column;justify-content:center;align-items:center;gap:1.6rem;animation:2s ease-out ending-fade;display:flex;position:absolute;inset:0}@keyframes ending-fade{0%{opacity:0}}.ending-hint{color:var(--color-line);letter-spacing:.15em;font-size:.9rem}.joystick-layer{pointer-events:none;position:absolute;inset:0}.joystick-base{left:max(24px, env(safe-area-inset-left));bottom:max(28px, env(safe-area-inset-bottom));border:var(--stroke-outline) solid var(--color-line);background:color-mix(in srgb, var(--color-bg-deep) 60%, transparent);pointer-events:auto;touch-action:none;border-radius:50%;width:108px;height:108px;position:absolute}.joystick-knob{background:color-mix(in srgb, var(--color-hologram) 45%, var(--color-bg-deep));border:var(--stroke-outline) solid var(--color-hologram);width:44px;height:44px;box-shadow:0 0 var(--glow-blur) color-mix(in srgb, var(--color-hologram) 40%, transparent);border-radius:50%;margin:-22px 0 0 -22px;position:absolute;top:50%;left:50%}.act-button{right:max(28px, env(safe-area-inset-right));bottom:max(40px, env(safe-area-inset-bottom));border:var(--stroke-outline) solid var(--color-hologram);background:color-mix(in srgb, var(--color-hologram) 18%, var(--color-bg-deep));width:68px;height:68px;color:var(--color-hologram);letter-spacing:.1em;pointer-events:auto;cursor:pointer;border-radius:50%;font-family:inherit;font-weight:700;position:absolute}
