:root{--ink: #e8e0d2;--dim: #8a8070;--blood: #9c2a1c;--gold: #cea600;--bg: #14110d}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg)}body{font-family:Space Mono,monospace;color:var(--ink);cursor:default;user-select:none}#scene{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;display:block;touch-action:none}.grain{position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.06;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:overlay}.hud-top{position:fixed;top:22px;left:26px;z-index:10;display:flex;flex-direction:column;gap:4px}.hud-top .mark{font-size:18px;letter-spacing:4px;color:var(--gold)}.hud-top .sub{font-size:10px;letter-spacing:3px;color:var(--dim);transition:color .4s}.hud-top .name-input{font-family:Cormorant Garamond,serif;font-style:italic;font-size:23px;line-height:1.05;letter-spacing:.5px;color:var(--dim);background:transparent;cursor:text;border:none;border-bottom:1px solid rgba(206,166,0,0);padding:2px 2px 3px;width:248px;outline:none;margin:2px 0 1px -2px;transition:border-color .25s,color .25s}.hud-top .name-input::placeholder{color:var(--dim);font-size:16px;opacity:.55}.hud-top .name-input:hover{border-bottom-color:#cea60040}.hud-top .name-input:focus{border-bottom-color:#cea60099;color:var(--ink)}.hud-top .name-input.bound{color:var(--gold)}@keyframes bindflash{0%{text-shadow:0 0 0 rgba(206,166,0,0)}30%{text-shadow:0 0 16px rgba(206,166,0,.95)}to{text-shadow:0 0 0 rgba(206,166,0,0)}}.hud-top .name-input.flash{animation:bindflash .75s ease-out}.hud-top .bind-row{display:flex;gap:12px;align-items:center;margin-top:3px}.mini-btn{font-family:Space Mono,monospace;font-size:9px;letter-spacing:2px;color:var(--dim);background:transparent;border:none;padding:0;cursor:pointer;transition:color .18s}.mini-btn:hover{color:var(--gold)}.mini-btn.dim{color:var(--blood);opacity:.7}.mini-btn.dim:hover{color:var(--blood);opacity:1}.hair-toggle{display:flex;align-items:center;gap:8px;margin-top:6px;cursor:pointer;user-select:none}.hair-toggle input{display:none}.hair-toggle .switch{width:30px;height:16px;border-radius:8px;flex:0 0 auto;background:#ffffff1a;border:1px solid rgba(206,166,0,.3);position:relative;transition:background .2s,border-color .2s}.hair-toggle .switch:after{content:"";position:absolute;top:1px;left:1px;width:12px;height:12px;border-radius:50%;background:var(--dim);transition:transform .2s,background .2s}.hair-toggle input:checked+.switch{background:#cea60059;border-color:var(--gold)}.hair-toggle input:checked+.switch:after{transform:translate(14px);background:var(--gold)}.hair-toggle .switch-label{font-size:9px;letter-spacing:2px;color:var(--dim);transition:color .18s}.hair-toggle:hover .switch-label{color:var(--ink)}.hair-toggle input:checked~.switch-label{color:var(--gold)}.webcam{position:fixed;top:250px;right:26px;z-index:10;width:200px;display:flex;flex-direction:column;gap:8px}.switch-stack-toggle.hidden{display:none}.contract-panel{display:grid;gap:8px;padding:10px 11px 12px;background:#14110dad;border:1px solid rgba(206,166,0,.24);backdrop-filter:blur(6px)}.contract-panel.hidden{display:none}.contract-title{color:var(--gold);font-size:10px;font-weight:700;letter-spacing:2px}.contract-status{min-height:28px;color:var(--dim);font-size:9px;line-height:1.45;letter-spacing:1px}.contract-voice-debug{min-height:42px;padding-top:8px;border-top:1px solid rgba(206,166,0,.16);color:#e8e0d2a8;font-size:8px;line-height:1.45;letter-spacing:1px;overflow-wrap:anywhere}.kon-btn{height:32px;font-family:inherit;font-size:12px;font-weight:700;letter-spacing:3px;color:var(--bg);background:var(--gold);border:1px solid var(--gold);cursor:pointer;transition:opacity .18s,filter .18s}.kon-btn:hover{filter:brightness(1.12)}.kon-btn:disabled{cursor:default;opacity:.36;filter:none}.cam-wrap{position:relative;width:200px;height:150px;overflow:hidden;border:1px solid rgba(206,166,0,.25);background:#000}.cam-wrap video,.cam-wrap canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.cam-wrap video{transform:scaleX(-1)}.cam-status{position:absolute;bottom:4px;left:6px;z-index:2;font:9px Space Mono,monospace;letter-spacing:1px;color:var(--gold);text-shadow:0 0 4px #000}.impact-flash{position:fixed;inset:0;z-index:6;pointer-events:none;opacity:0;background:radial-gradient(circle,#9c2a1c00 45%,#9c2a1c8c)}.impact-flash.hit{animation:impactflash .26s ease-out}@keyframes impactflash{0%{opacity:0}18%{opacity:1}to{opacity:0}}.punch-reticle{position:fixed;z-index:8;width:52px;height:52px;margin:-26px 0 0 -26px;border:2px dashed rgba(206,166,0,.45);border-radius:50%;pointer-events:none;transition:width .08s,height .08s,border-color .08s}.punch-reticle:after{content:"";position:absolute;inset:42%;border-radius:50%;background:#cea60099}.punch-reticle.open{border-color:#cea600d9;border-style:solid}.punch-reticle.fist{width:38px;height:38px;margin:-19px 0 0 -19px;border-color:#9c2a1cf2;border-style:solid}.punch-burst{position:fixed;z-index:8;width:64px;height:64px;margin:-32px 0 0 -32px;border:3px solid #fff;border-radius:50%;pointer-events:none;opacity:0}.punch-burst.go{animation:punchburst .34s ease-out}@keyframes punchburst{0%{transform:scale(.4);opacity:1;border-color:#fff}to{transform:scale(2.4);opacity:0;border-color:#9c2a1c99}}.tools{position:fixed;top:22px;left:50%;transform:translate(-50%);z-index:10;display:flex;gap:8px}.tool{font-family:inherit;font-size:11px;letter-spacing:2px;color:var(--dim);background:#14110d99;border:1px solid rgba(206,166,0,.25);padding:8px 14px;cursor:pointer;backdrop-filter:blur(6px);transition:all .18s}.tool:hover{color:var(--ink);border-color:#cea60080}.tool.active{color:var(--bg);background:var(--gold);border-color:var(--gold)}.readout{position:fixed;top:80px;right:26px;z-index:10;width:188px;padding:14px 16px;background:#14110d8c;border:1px solid rgba(206,166,0,.2);backdrop-filter:blur(6px)}.readout .row{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}.readout label{font-size:9px;letter-spacing:2px;color:var(--dim)}.readout .row span{font-size:13px;color:var(--ink)}.readout .bar{height:3px;background:#ffffff14;overflow:hidden}.readout .bar span{display:block;height:100%;width:0%;background:var(--blood);transition:width .4s}.lighter-debug-panel{position:fixed;left:26px;top:170px;z-index:11;width:360px;max-width:calc(100vw - 52px);max-height:calc(100vh - 230px);overflow-y:auto;padding:14px 16px;background:#0c0907e6;border:1px solid rgba(206,166,0,.4);border-radius:8px;backdrop-filter:blur(8px)}.lighter-debug-panel.hidden{display:none}.lighter-debug-panel .panel-title{color:var(--gold);font-size:11px;font-weight:700;letter-spacing:2px;margin-bottom:10px}.lighter-debug-panel .lid-debug{justify-content:space-between;margin:8px 0 0}.lighter-debug-panel .lid-debug .switch-label{flex:1;text-align:right;white-space:nowrap}.lid-tuner,.fire-tuner{display:grid;gap:8px;margin:12px 0 16px;padding:12px 0 14px;border-top:1px solid rgba(206,166,0,.16);border-bottom:1px solid rgba(206,166,0,.16)}.fire-tuner{margin-bottom:0}.lighter-debug-panel .subpanel-title{margin:0 0 4px;color:#ffd228db}.lid-tuner .tune-row,.fire-tuner .tune-row{display:grid;grid-template-columns:74px 1fr 56px;align-items:center;gap:10px}.lid-tuner label,.lid-tuner span,.fire-tuner label,.fire-tuner span{font-size:8px;letter-spacing:1px;color:var(--dim)}.lid-tuner input[type=range],.fire-tuner input[type=range]{width:100%;accent-color:var(--gold)}.lid-copy{justify-self:start;margin-top:4px}.lid-values{color:var(--gold);font-size:9px;line-height:1.35;letter-spacing:1px;user-select:text;word-break:normal}.fire-stats{min-height:42px;color:#e2d5b1cc;font-size:9px;line-height:1.45;letter-spacing:1px;border-top:1px solid rgba(206,166,0,.1);padding-top:8px;user-select:text}.hud-bottom{position:fixed;bottom:20px;left:26px;right:26px;z-index:10;display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:2px;color:var(--dim)}.hud-bottom .reset{cursor:pointer;color:var(--dim);transition:color .18s}.hud-bottom .reset:hover{color:var(--gold)}.loader{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--bg);transition:opacity .8s;font-size:12px;letter-spacing:3px;color:var(--dim)}.loader.hidden{opacity:0;pointer-events:none}@media (max-width: 760px){.hud-top{top:max(10px,env(safe-area-inset-top));left:12px;right:138px;gap:2px}.hud-top .mark{font-size:13px;letter-spacing:2px}.hud-top .name-input{font-size:18px;width:100%;margin-top:0}.hud-top .name-input::placeholder{font-size:13px}.hud-top .sub{font-size:8px;letter-spacing:2px}.hud-top .bind-row{gap:10px;margin-top:2px}.hair-toggle{margin-top:4px}.readout{top:max(10px,env(safe-area-inset-top));right:12px;width:118px;padding:9px 10px}.readout .row{margin-bottom:5px}.readout label{font-size:7px;letter-spacing:1px}.readout .row span{font-size:11px}.webcam{top:auto;bottom:calc(122px + env(safe-area-inset-bottom));right:12px;width:148px;gap:6px}.webcam .switch-label{white-space:nowrap}.cam-wrap{width:148px;height:111px}.contract-panel{padding:8px 9px 9px}.contract-voice-debug{min-height:0}.tools{top:auto;bottom:calc(40px + env(safe-area-inset-bottom));left:0;right:0;transform:none;flex-wrap:wrap;justify-content:center;gap:6px;padding:0 12px}.tool{flex:0 0 auto;font-size:10px;letter-spacing:1px;padding:10px 13px}.hud-bottom{bottom:calc(10px + env(safe-area-inset-bottom));left:12px;right:12px;justify-content:flex-end;font-size:9px;letter-spacing:1px}.hud-bottom #hint{display:none}.lighter-debug-panel{left:12px;right:12px;top:auto;bottom:calc(122px + env(safe-area-inset-bottom));width:auto;max-width:none;max-height:46vh;z-index:21}.lid-tuner .tune-row,.fire-tuner .tune-row{grid-template-columns:58px 1fr 44px;gap:8px}#statsPanel{right:auto!important;left:8px!important;bottom:calc(212px + env(safe-area-inset-bottom))!important;transform:scale(.72);transform-origin:bottom left}#perfPanel{right:auto!important;left:8px!important;bottom:calc(126px + env(safe-area-inset-bottom))!important;font-size:8px!important;transform:scale(.9);transform-origin:bottom left}}
