@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:400;font-display:swap;src:url(../assets/fonts/cormorant-0.ttf)format("truetype")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(../assets/fonts/cormorant-1.ttf)format("truetype")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(../assets/fonts/cormorant-2.ttf)format("truetype")}@font-face{font-family:WuSong Chinese;src:url(../assets/fonts/wusong-chinese.ttf)format("truetype");font-display:swap;font-weight:400}:root{--ink:#120b07;--lacquer:#7a1712;--gold:#d6a650;--paper:#f3dfb5;--paper-dim:#f3dfb5b8;--font-en:"Cormorant Garamond", "Iowan Old Style", Georgia, serif;--font-zh:"WuSong Chinese", "STKaiti", "Kaiti SC", "KaiTi", serif}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--paper);font-family:var(--font-en);-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}#app{position:fixed;inset:0}#stage{width:100%;height:100%;display:block;position:absolute;inset:0}.zh{font-family:var(--font-zh)}#ui{pointer-events:none;position:absolute;inset:0}#act-title{opacity:0;align-items:baseline;gap:14px;transition:opacity 1.2s;display:flex;position:absolute;top:28px;left:36px}#act-title.show{opacity:1}#act-title .zh{color:var(--gold);letter-spacing:.08em;font-size:34px}#act-title .en{color:var(--paper-dim);font-size:18px;font-style:italic}#hud{color:var(--paper-dim);flex-direction:column;align-items:flex-end;gap:10px;font-size:17px;display:flex;position:absolute;top:30px;right:36px}#hud .row{align-items:center;gap:10px;display:flex}#hud .zh{color:var(--gold);font-size:22px}#hud .value{color:var(--paper);text-align:right;font-variant-numeric:tabular-nums;min-width:64px;font-size:22px}#hud .pips{letter-spacing:4px;color:var(--gold);font-size:20px}#hud .bar{background:#00000059;border:1px solid #d6a65099;width:220px;height:10px}#hud .bar>i{background:linear-gradient(90deg,#a3241a,#e0492f);height:100%;transition:width .15s;display:block}#prompt,#subtitle{text-align:center;opacity:0;text-shadow:0 2px 12px #000000d9;flex-direction:column;align-items:center;gap:4px;max-width:min(900px,86vw);transition:opacity .6s;display:flex;position:absolute;left:50%;transform:translate(-50%)}#prompt.show,#subtitle.show{opacity:1}#prompt{top:13%}#prompt .en{color:var(--paper);font-size:26px;font-weight:600}#prompt .zh{color:var(--gold);font-size:22px}#prompt.pulse .en{animation:1.6s ease-in-out infinite pulse}#subtitle{bottom:5.5%}#subtitle .en{color:var(--paper);font-size:24px;font-style:italic}#subtitle .zh{color:var(--paper-dim);font-size:21px}@keyframes pulse{50%{opacity:.55}}.panel{text-align:center;background:radial-gradient(at 50% 42%,#7a171247,#0000 60%),#0a0604c7;flex-direction:column;justify-content:center;align-items:center;padding:6vh 8vw;transition:opacity .8s;display:flex;position:absolute;inset:0}.panel[hidden]{display:none}.panel.fade{opacity:0;pointer-events:none}.kicker{text-transform:uppercase;letter-spacing:.32em;color:var(--gold);margin:0 0 18px;font-size:13px}h1{flex-direction:column;align-items:center;gap:6px;margin:0;font-weight:400;display:flex}h1 .zh{color:var(--paper);text-shadow:0 0 40px #d6782873;font-size:clamp(64px,11vw,132px);line-height:1}h1 .en{color:var(--gold);font-size:clamp(22px,2.6vw,34px);font-style:italic}.lede{max-width:620px;color:var(--paper-dim);margin:28px 0 34px;font-size:20px;line-height:1.55}.lede.small{margin:0;font-size:17px}.actions{flex-wrap:wrap;justify-content:center;gap:14px;display:flex}button{font-family:var(--font-en);color:var(--paper);cursor:pointer;background:0 0;border:1px solid #d6a6508c;flex-direction:column;align-items:center;gap:2px;padding:12px 22px;font-size:18px;transition:background .2s,border-color .2s,transform .2s;display:flex}button small{font-family:var(--font-zh);color:var(--gold);font-size:15px}button:hover{border-color:var(--gold);background:#d6a6501f;transform:translateY(-1px)}button.primary{background:var(--lacquer);border-color:var(--gold)}button.primary:hover{background:#8f1d16}button.ghost{border-color:#0000}button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.note{color:#f3dfb580;margin-top:26px;font-size:14px}.error{color:#ff9b80;font-size:16px}#webcam{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}#debug{background:#000;border:1px solid #d6a65080;width:320px;height:240px;position:absolute;bottom:16px;left:16px}#voice-toggle{z-index:20;background:#160d08e0;padding:8px 12px;font-size:14px;position:fixed;bottom:16px;right:18px}#voice-toggle[hidden]{display:none}@media (width<=700px){#subtitle{width:88%;bottom:54px}#subtitle .en{font-size:18px}#subtitle .zh{font-size:17px}}#voice-toggle{font-family:"WuSong Chinese", var(--font-en)}#prompt.show{background:#120b07c2;border:1px solid #d6a65040;border-radius:4px;padding:9px 18px}.note a{color:var(--paper-dim);text-underline-offset:3px}[hidden]{display:none!important}#hand-overlay{pointer-events:none;z-index:28;width:100%;height:100%;position:fixed;inset:0}#camera-panel{z-index:35;background:#18100dec;border:1px solid #8a6339;border-radius:8px;width:240px;font-family:system-ui,sans-serif;position:fixed;bottom:22px;right:22px;overflow:hidden;box-shadow:0 10px 40px #0009,inset 0 0 0 3px #ffffff05}#camera-panel header{letter-spacing:.16em;color:#d7b577;justify-content:space-between;align-items:center;padding:7px 11px;font-size:10px;display:flex}#camera-collapse{border:0;padding:0 5px;font:18px system-ui}#camera-view{aspect-ratio:16/9;background:#080706;position:relative}#camera-view #webcam{opacity:1;object-fit:contain;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}#camera-bones{width:100%;height:100%;position:absolute;inset:0}.camera-guide{border:1px dashed #ffffff50;border-radius:20px;position:absolute;inset:16% 14%}#camera-status{color:#f5e4c3;margin:9px 10px 5px;font-size:11px}.camera-legend{color:#bba78b;margin:5px 10px 9px;font-size:10px}.camera-legend span{color:#83d9da}.camera-legend b{color:#ffcf74;font-weight:400}#switch-mouse{color:#cfb58e;border:0;border-top:1px solid #ffffff16;width:100%;padding:8px;font:10px system-ui}#camera-panel.collapsed #camera-view,#camera-panel.collapsed .camera-legend{display:none}#voice-toggle{z-index:40;border-radius:3px;top:20px;bottom:auto;right:22px}#calibration{z-index:25;text-align:center;background:linear-gradient(140deg,#302014ed,#120e0beb);border:1px solid #b78b4c77;border-radius:4px;width:min(560px,85vw);padding:22px 30px;position:fixed;top:10%;left:50%;transform:translate(-50%);box-shadow:0 20px 80px #0008}#calibration h2{margin:5px;font-size:30px;font-weight:400}#calibration h2 span{font-family:var(--font-zh);color:var(--gold);font-size:23px;display:block}#calibration-text{min-height:65px;font-size:22px;line-height:1.5}.calibration-meter{background:#ffffff20;height:4px}.calibration-meter i{background:#e9bf72;width:0;height:100%;display:block}#tracking-lost{z-index:29;text-align:center;background:#1b1009ed;border:1px solid #e2b264;border-radius:4px;padding:20px 28px;font-size:23px;position:fixed;top:38%;left:50%;transform:translate(-50%)}#tracking-lost span{font-family:var(--font-zh);font-size:16px;line-height:2}#chapter-progress{color:#c6ae8c;letter-spacing:.16em;z-index:12;font:10px system-ui;position:fixed;bottom:22px;left:28px}#act-title{flex-direction:column;gap:3px;top:24px;left:28px}#act-title .zh{font-size:25px}#act-title .en{font-size:15px}#hud{background:#160d078c;border:1px solid #d6a65022;border-radius:4px;gap:5px;padding:10px 12px;font-size:12px;top:80px;right:24px}#hud:empty{display:none}#hud .zh{font-size:16px}#hud .value{min-width:50px;font-size:17px}#hud .bar{width:100px;height:6px}#prompt{width:max-content;max-width:60vw;top:15%}#prompt .en{font-size:21px}#prompt .zh{font-size:17px}#subtitle{background:linear-gradient(90deg,#0000,#120b07bd 15% 85%,#0000);border-radius:3px;width:760px;max-width:65vw;padding:12px 20px;bottom:6.5%}#subtitle .en{font-size:22px}#subtitle .zh{font-size:18px}body.camera-mode #subtitle{max-width:calc(100vw - 570px);left:45%}@media (width<=900px){#camera-panel{width:170px;bottom:10px;right:10px}body.camera-mode #subtitle{max-width:70vw;bottom:7%;left:37%}#prompt{max-width:65vw}#hud .bar{width:70px}#act-title .en{max-width:220px}#chapter-progress{bottom:12px;left:12px}}@media (width<=600px){#camera-panel{width:138px}#camera-status{font-size:9px}#camera-panel header{font-size:8px}#subtitle .en{font-size:17px}#subtitle .zh{font-size:14px}body.camera-mode #subtitle{max-width:calc(100vw - 165px);bottom:6%;left:calc(50vw - 75px)}#prompt{max-width:88vw;top:22%}#prompt .en{font-size:17px}#prompt .zh{font-size:15px}#act-title{top:18px;left:14px}#act-title .zh{font-size:22px}#hud{top:70px;right:10px}#voice-toggle{font-size:11px;top:16px;right:10px}#tracking-lost{width:80vw;font-size:18px}}#start{text-align:left;background:radial-gradient(at 76% 42%,#42261977,#0000 65%),linear-gradient(110deg,#110d0bf5,#130d09d9);grid-template-columns:minmax(320px,.9fr) minmax(450px,1.25fr);align-items:center;gap:5vw;padding:7vh 6vw 10vh;display:grid}.start-copy{z-index:1;max-width:570px}#start h1{align-items:flex-start;gap:16px}#start h1 .zh{letter-spacing:.035em;text-shadow:0 3px 1px #0008,0 0 40px #9d5d1b30;font-size:clamp(54px,5.5vw,96px)}#start h1 .en{color:#d4ad70;font-size:clamp(25px,2.5vw,42px)}#start .kicker{letter-spacing:.24em;color:#ba9867;margin-bottom:35px;font:10px system-ui}#start .lede{color:#c9baa4;margin:28px 0;font-size:21px;line-height:1.6}#start .actions{justify-content:flex-start;gap:10px}#start button{border-radius:3px;padding:13px 20px;font-size:17px;box-shadow:inset 0 1px #ffffff15,0 4px 12px #0003}#start button.primary{background:linear-gradient(#973629,#651b14);border-color:#bd8e52}#start button.ghost{box-shadow:none;padding-left:0}#start .note{color:#9c8a72;margin-top:15px;font-size:12px;line-height:1.5}#start .note a{color:#a9977f}.start-art{background:#21140c;border:1px solid #9e764434;align-self:center;padding:10px;position:relative;transform:perspective(1500px)rotateY(-4deg);box-shadow:0 30px 100px #0009}.start-art:before{content:"";pointer-events:none;z-index:1;border:5px ridge #55371c77;position:absolute;inset:0;box-shadow:inset 0 0 45px #000a}.start-art img{aspect-ratio:1.3;object-fit:cover;filter:sepia(.13)brightness(.85);width:100%;display:block}.art-label{text-align:center;letter-spacing:.2em;text-shadow:0 1px 8px #000;background:linear-gradient(#0000,#000a);padding:35px 0 8px;font:9px system-ui;position:absolute;bottom:30px;left:0;right:0}.art-label span{font:16px var(--font-zh);letter-spacing:.1em;color:#dfc394;margin-top:12px;display:block}.start-footer{letter-spacing:.2em;color:#8f795e;border-top:1px solid #c49b5a25;justify-content:space-between;padding-top:17px;font:9px system-ui;display:flex;position:absolute;bottom:24px;left:6vw;right:6vw}#cinematic{z-index:30;background:#080604;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#cinematic-video{object-fit:contain;width:100%;height:100%}#skip-film{background:#17110cbf;border-radius:4px;font-size:14px;position:absolute;top:24px;right:28px}#film-caption{text-align:center;color:#efdab6;text-shadow:0 2px 8px #000;font-size:22px;position:absolute;bottom:5%}@media (width<=1000px){#start{grid-template-columns:1fr 1fr;gap:3vw;padding:7vh 5vw}#start .lede{font-size:18px}#start button{padding:10px 14px}#start h1 .zh{font-size:60px}.start-art img{aspect-ratio:.9}#start .kicker{margin-bottom:24px}}@media (width<=700px){#start{justify-content:center;padding:7vh 7vw 9vh;display:flex;overflow:auto}.start-copy{max-width:500px}.start-art{z-index:0;opacity:.16;padding:0;position:absolute;inset:0;transform:none}.start-art img{object-fit:cover;width:100%;height:100%}.art-label{display:none}#start h1 .zh{font-size:64px}#start .lede{max-width:420px;font-size:18px}#start .kicker{font-size:9px}#start .note{font-size:11px}.start-footer{font-size:8px;bottom:18px}.start-footer span:last-child{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.start-art{transform:none}}body.film-playing #voice-toggle,body.film-playing #chapter-progress,body.film-playing #ui{visibility:hidden}html[data-language=en] .zh,html[data-language=zh] .en{display:none!important}html[data-language=zh] body,html[data-language=zh] button{font-family:var(--font-zh)}html[data-language=zh] #start .kicker{font-family:var(--font-zh);letter-spacing:.15em;font-size:14px}html[data-language=zh] #start .lede{font-size:20px;line-height:1.9}html[data-language=en] #start h1 .en{color:var(--paper);font-size:clamp(42px,4.8vw,78px);font-style:normal;line-height:1.05}html[data-language=en] #act-title .en{color:var(--gold);font-size:23px}html[data-language=zh] #subtitle .zh{color:var(--paper);font-size:21px;line-height:1.6}html[data-language=zh] #prompt.pulse .zh{animation:1.6s ease-in-out infinite pulse}#language-toggle{z-index:45;background:#160d08e0;border-radius:3px;min-width:76px;padding:8px 12px;font-size:14px;position:fixed;top:20px;right:130px}body.film-playing #language-toggle{right:155px}.art-label>span{font:inherit;letter-spacing:inherit;color:inherit;margin:0}@media (width<=600px){#language-toggle{min-width:58px;padding:8px;font-size:11px;top:16px;right:103px}html[data-language=en] #act-title .en{max-width:170px;font-size:18px}html[data-language=zh] #subtitle .zh{font-size:16px}html[data-language=zh] #start .lede{font-size:17px}#act-title{max-width:calc(100vw - 190px)}body.film-playing #language-toggle{right:140px}}
