:root{--ink:#e8e4dc;--ink-dim:#a9a49a;--paper:#d8d2c4;--paper-2:#c9c2b2;--line:#e8e4dc29;--bg:#05060a;--accent:#8c1c1c;--panel:#07080ca8;--panel-solid:#08090ded}*{box-sizing:border-box}html,body,#root,.app{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:Courier New,ui-monospace,monospace;overflow:hidden}.app canvas{touch-action:none;outline:none;display:block}.film{pointer-events:none;z-index:5;background:radial-gradient(120% 90% at 50% 45%,#0000 42%,#00000080 80%,#000000d1 100%);position:fixed;inset:0}.film:after{content:"";opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");position:absolute;inset:0}.bar-top{z-index:30;padding:calc(14px + env(safe-area-inset-top)) calc(18px + env(safe-area-inset-right)) 14px calc(18px + env(safe-area-inset-left));pointer-events:none;background:linear-gradient(#030407db,#0304072e 70%,#0000);justify-content:space-between;align-items:flex-start;gap:16px;display:flex;position:fixed;top:0;left:0;right:0}.bar-top>*{pointer-events:auto}.brand{flex-direction:column;gap:4px;min-width:0;display:flex}.brand-name{letter-spacing:.16em;text-transform:uppercase;color:var(--paper);white-space:nowrap;font-family:Georgia,Times New Roman,serif;font-size:clamp(18px,2.4vw,24px);line-height:1}.brand-name .amp{color:var(--accent);margin:0 .03em}.brand-sub{letter-spacing:.24em;text-transform:uppercase;color:var(--ink-dim);white-space:nowrap;font-size:10px}.top-actions{align-items:center;gap:6px;display:flex}.link-btn{font:inherit;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);cursor:pointer;background:0 0;border:1px solid #0000;padding:9px 10px;font-size:11px;transition:color .16s,border-color .16s}.link-btn:hover{color:var(--paper);border-color:var(--line)}.icon-btn{width:40px;height:40px;color:var(--ink);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:2px;place-items:center;padding:0;transition:background .16s,border-color .16s,color .16s,opacity .16s;display:grid}.icon-btn svg{width:20px;height:20px;display:block}.icon-btn:hover:not(:disabled){background:#181614e6;border-color:#e8e4dc6b}.icon-btn:focus-visible,.link-btn:focus-visible,.vp-btn:focus-visible,.chip:focus-visible,.sp-enable:focus-visible,.sp-close:focus-visible,.calibrate-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon-btn[aria-pressed=true]{color:#0d0e12;background:var(--paper);border-color:var(--paper)}.icon-btn[aria-expanded=true]{border-color:#d8d2c4a6}.icon-btn:disabled{opacity:.3;cursor:not-allowed;background:0 0;border-style:dashed}.sound-panel{top:calc(100% - 6px);right:calc(18px + env(safe-area-inset-right));background:var(--panel-solid);border:1px solid var(--line);width:min(300px,100vw - 24px);max-height:min(70vh,420px);padding:12px 14px 14px;animation:.18s ease-out panelIn;position:absolute;overflow:auto;box-shadow:0 18px 50px #0009}@keyframes panelIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.sp-head{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-dim);justify-content:space-between;align-items:center;margin-bottom:10px;font-size:10px;display:flex}.sp-close{width:26px;height:26px;font:inherit;color:var(--ink-dim);border:1px solid var(--line);cursor:pointer;background:0 0;place-items:center;padding:0;font-size:12px;display:grid}.sp-close:hover{color:var(--paper);border-color:#e8e4dc66}.sp-enable{width:100%;font:inherit;letter-spacing:.16em;text-transform:uppercase;color:#0d0e12;background:var(--paper);border:1px solid var(--paper);cursor:pointer;margin-bottom:10px;padding:9px 10px;font-size:10px}.sp-row{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);grid-template-columns:74px 1fr;align-items:center;gap:10px;padding:3px 0;font-size:10px;display:grid}.sp-row input[type=range]{width:100%;height:24px;accent-color:var(--paper)}.sp-layers{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.chip{font:inherit;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-dim);border:1px solid var(--line);cursor:pointer;background:0 0;padding:6px 10px;font-size:10px}.chip.is-on,.chip[aria-pressed=true]{color:var(--paper);box-shadow:inset 0 -2px 0 var(--accent);border-color:#d8d2c499}.bar-bottom{z-index:30;padding:12px calc(18px + env(safe-area-inset-right)) calc(12px + env(safe-area-inset-bottom)) calc(18px + env(safe-area-inset-left));pointer-events:none;background:linear-gradient(#0000,#03040733 30%,#030407e6);justify-content:space-between;align-items:center;gap:12px;display:flex;position:fixed;bottom:0;left:0;right:0}.bar-bottom>*{pointer-events:auto}.vp-group{background:var(--panel);border:1px solid var(--line);gap:4px;padding:4px;display:flex}.vp-btn{min-width:44px;height:44px;font:inherit;letter-spacing:.12em;color:var(--ink-dim);cursor:pointer;background:0 0;border:1px solid #0000;padding:0 10px;font-size:12px;transition:color .15s,background .15s,border-color .15s}.vp-btn:hover{color:var(--paper);border-color:var(--line)}.vp-btn.is-active{color:#0d0e12;background:var(--paper);border-color:var(--paper)}.tools{background:var(--panel);border:1px solid var(--line);gap:4px;padding:4px;display:flex}.calibrate-chip{left:50%;bottom:calc(82px + env(safe-area-inset-bottom));z-index:29;font:inherit;letter-spacing:.14em;text-transform:uppercase;color:var(--paper);background:var(--panel-solid);border:1px solid var(--line);cursor:pointer;padding:7px 12px;font-size:10px;position:fixed;transform:translate(-50%)}.hint{z-index:25;bottom:calc(84px + env(safe-area-inset-bottom));left:calc(18px + env(safe-area-inset-left));border-left:2px solid var(--accent);max-width:300px;color:var(--ink-dim);background:#06070ad1;padding:12px 16px;font-size:12px;line-height:1.5;position:fixed}.hint b{color:var(--paper);letter-spacing:.2em;text-transform:uppercase;margin-bottom:6px;font-size:10px;display:block}.hint .x{margin-top:8px}.btn{font:inherit;letter-spacing:.18em;text-transform:uppercase;color:var(--paper);border:1px solid var(--line);cursor:pointer;background:#08090c9e;padding:8px 14px;font-size:11px}.btn:hover{background:#181614d9}.btn.small{letter-spacing:.12em;padding:4px 9px;font-size:10px}.markers{z-index:15;pointer-events:none;position:fixed;inset:0}.marker{font:inherit;letter-spacing:.12em;text-transform:uppercase;color:var(--paper);border:1px solid var(--line);cursor:pointer;pointer-events:auto;opacity:0;background:#06070ab8;align-items:center;gap:7px;padding:5px 10px 5px 6px;font-size:10.5px;transition:opacity .25s,background .15s,border-color .15s;display:inline-flex;position:absolute;top:0;left:0}.marker:before{content:attr(data-num);color:#0b0b0d;background:var(--paper);border-radius:50%;place-items:center;width:16px;height:16px;font-size:9px;display:grid}.marker.show{opacity:.88}.marker.show:hover,.marker.show.hover{opacity:1;background:#1c1614eb;border-color:#d8d2c4cc}.card{z-index:40;top:50%;right:calc(20px + env(safe-area-inset-right));color:#1a1a1c;background:linear-gradient(160deg,#e4ded0 0%,#d2cbba 100%);border:1px solid #00000059;width:min(360px,100vw - 28px);max-height:76vh;padding:20px 22px 18px;font-size:13px;line-height:1.55;animation:.28s ease-out cardIn;position:fixed;overflow:auto;transform:translateY(-50%);box-shadow:0 18px 60px #000000bf,0 0 0 5px #d8d2c414}.card h2{letter-spacing:.1em;text-transform:uppercase;margin:0 0 2px;font-size:17px}.card .sub{letter-spacing:.16em;text-transform:uppercase;color:#14161a99;border-bottom:1px solid #14161a40;margin:0 0 12px;padding-bottom:10px;font-size:11px}.card p{margin:0 0 10px}.card .stamp{border:2px solid var(--accent);color:var(--accent);letter-spacing:.3em;text-transform:uppercase;margin:12px 0 14px;padding:4px 10px;font-size:10px;display:inline-block;transform:rotate(-2deg)}.card .row{flex-wrap:wrap;gap:8px;display:flex}.card .ink-btn{font:inherit;letter-spacing:.16em;text-transform:uppercase;color:var(--paper);cursor:pointer;background:#1a1a1c;border:1px solid #1a1a1c;padding:8px 14px;font-size:11px}.card .ink-btn.ghost{color:#1a1a1c;background:0 0}.card .close{color:#14161a99;cursor:pointer;background:0 0;border:none;padding:4px;font-size:15px;line-height:1;position:absolute;top:6px;right:8px}@keyframes cardIn{0%{opacity:0;transform:translateY(-46%)translate(14px)}to{opacity:1;transform:translateY(-50%)translate(0)}}.modal{z-index:45;background:#030407d1;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal .card{animation:none;position:static;transform:none}@media (width<=640px){.brand-sub{letter-spacing:.1em;white-space:normal;max-width:190px;font-size:9px}.bar-top{padding-top:calc(8px + env(safe-area-inset-top))}.link-btn{letter-spacing:.1em;padding:8px 6px;font-size:10px}.icon-btn{width:38px;height:38px}.vp-btn{min-width:40px;height:40px;padding:0 6px}.bar-bottom{gap:8px}.hint{left:calc(12px + env(safe-area-inset-left));right:calc(12px + env(safe-area-inset-right));bottom:calc(132px + env(safe-area-inset-bottom));max-width:none}.card{top:auto;left:12px;right:12px;bottom:calc(86px + env(safe-area-inset-bottom));max-height:48vh;animation:none;transform:none}}@media (width<=380px){.link-btn{padding:8px 4px;font-size:9px}.vp-btn{min-width:36px}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.boot{z-index:60;padding:calc(26px + env(safe-area-inset-top)) calc(20px + env(safe-area-inset-right)) calc(26px + env(safe-area-inset-bottom)) calc(20px + env(safe-area-inset-left));background:radial-gradient(at 50% 38%,#0b0c11 0%,#05060a 55%,#010102 100%);place-items:center;transition:opacity .65s,visibility .65s;display:grid;position:fixed;inset:0}.boot.is-leaving{opacity:0;visibility:hidden;pointer-events:none}.boot-inner{text-align:center;width:100%;max-width:460px}.boot-mark{letter-spacing:.14em;text-transform:uppercase;color:var(--paper);text-shadow:0 2px 24px #000000e6;font-family:Georgia,Times New Roman,serif;font-size:clamp(34px,9vw,56px)}.boot-mark span{color:var(--accent);margin:0 .04em}.boot-sub{letter-spacing:.28em;text-transform:uppercase;color:var(--ink-dim);margin-top:10px;font-size:clamp(10px,2.6vw,12px)}.boot-rule{background:#e8e4dc24;width:min(320px,82%);height:1px;margin:30px auto 22px;position:relative;overflow:hidden}.boot-rule i{background:linear-gradient(90deg, transparent, var(--paper), transparent);width:38%;height:1px;animation:1.6s linear infinite bootSweep;position:absolute;top:0;left:0}.boot-rule.is-ready i{background:#d8d2c4b3;width:100%;animation:none}.boot-rule.is-error{background:#8c1c1c4d}.boot-rule.is-error i{background:var(--accent);width:100%;animation:none}@keyframes bootSweep{0%{transform:translate(-100%)}to{transform:translate(360%)}}.boot-steps{text-align:left;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:inline-grid}.boot-steps li{letter-spacing:.12em;text-transform:uppercase;color:#6f6b63;align-items:center;gap:10px;font:11px/1.2 Courier New,monospace;display:flex}.boot-steps li em{color:#4c4842;margin-left:4px;font-style:normal}.boot-steps li[data-state=active]{color:var(--paper)}.boot-steps li[data-state=done]{color:#8f8a80}.boot-steps li[data-state=error]{color:#b4534d}.boot-dot{border:1px solid;width:7px;height:7px;transform:rotate(45deg)}.boot-steps li[data-state=done] .boot-dot{background:currentColor}.boot-steps li[data-state=active] .boot-dot{animation:1.4s ease-in-out infinite bootPulse}@keyframes bootPulse{50%{opacity:.25}}.boot-status{letter-spacing:.1em;text-transform:uppercase;color:#8f8a80;min-height:18px;font:11px/1.6 Courier New,monospace}.boot-error{color:#c06a63;word-break:break-word;margin-top:10px;font:11px/1.6 Courier New,monospace}.boot-enter{letter-spacing:.3em;text-transform:uppercase;color:#0b0b0d;background:var(--paper);border:1px solid var(--paper);cursor:pointer;min-height:44px;margin-top:22px;padding:13px 34px;font:12px/1 Courier New,monospace;transition:background .2s,opacity .2s}.boot-enter:hover:not(:disabled){background:#efe9dc}.boot-enter:disabled{opacity:.55;cursor:default}.boot-enter:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=480px){.boot-mark{letter-spacing:.1em}.boot-sub{letter-spacing:.2em}}
