:root{--bg: #14100e;--ink: #f4ece0;--accent: #c8963e;--accent2: #7b2d26;--good: #7cfc9b;--panel: rgba(20, 16, 14, .72)}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:PingFang SC,Noto Sans CJK SC,Microsoft YaHei,system-ui,sans-serif;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}#stage{position:fixed;inset:0;overflow:hidden;background:#000}#video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}#stage.mirror #video,#stage.mirror .hud-skeleton,#stage.mirror .hud-particles{transform:scaleX(-1)}.hud-skeleton{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}.stage-vignette{position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 76% 66% at 50% 42%,transparent 55%,rgba(16,9,5,.52) 100%),linear-gradient(#462a1412,#462a1412)}.card{position:absolute;left:50%;transform:translate(-50%);width:min(92vw,520px);background:var(--panel);backdrop-filter:blur(6px);border:1px solid rgba(200,150,62,.35);border-radius:16px;z-index:2}#scene{top:3vh;height:36vh;z-index:2}#scene canvas{border-radius:16px}#text{bottom:20vh;padding:14px 18px;z-index:2}.beat-meta{font-size:12px;letter-spacing:.1em;color:var(--accent);text-transform:uppercase}.beat-title{margin:4px 0 8px;font-size:22px}.beat-body{margin:0;font-size:15px;line-height:1.7;color:#e7dccb}.recap{max-height:24vh;overflow-y:auto;margin:6px 0;text-align:left}.recap-item{display:flex;align-items:center;gap:8px;font-size:13px;padding:3px 2px;color:#e7dccb}.recap-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.recap-n{color:#9a8f7d;width:20px;text-align:right;font-variant-numeric:tabular-nums}.fn-establishment{background:#e7b876}.fn-tension{background:#c0533a}.fn-embodied_trial{background:#8fa1ad}.fn-recognition{background:#e8c07a}.fn-return{background:#b57f45}.hud-fps{position:absolute;top:10px;left:12px;z-index:3;font:600 13px/1 ui-monospace,monospace;background:#00000073;padding:5px 8px;border-radius:8px;color:var(--good)}.demo-badge{position:absolute;top:12px;right:12px;z-index:3;font:600 12px/1 ui-monospace,monospace;letter-spacing:.08em;color:#14100e;background:var(--accent);padding:5px 10px;border-radius:8px}.hud-hint{position:absolute;bottom:3vh;left:50%;transform:translate(-50%);z-index:3;display:flex;flex-direction:column;align-items:center;gap:6px}.hud-ringwrap{position:relative;width:96px;height:96px}.hud-ringsvg{position:absolute;inset:0;width:96px;height:96px;transform:rotate(-90deg)}.hud-ring-bg{fill:none;stroke:#ffffff2e;stroke-width:6}.hud-ring-fg{fill:none;stroke:var(--good);stroke-width:6;stroke-linecap:round;transition:stroke-dashoffset .08s linear}.hud-hint-img{position:absolute;inset:12px;width:72px;height:72px;object-fit:contain;border-radius:50%;background:#0006}.hud-hint-label{font-size:14px;font-weight:600;text-shadow:0 1px 3px #000}.hud-hint-img{transition:filter .1s linear,transform .1s linear}.hud-hint-status{font-size:12px;color:#ffcf9a;min-height:15px;text-shadow:0 1px 3px #000;opacity:0;transition:opacity .2s}.hud-hint.attract .hud-ringwrap{animation:attract 1.6s ease-in-out infinite}.hud-hint.attract .hud-hint-label{animation:attract-label 1.6s ease-in-out infinite}@keyframes attract{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes attract-label{0%,to{opacity:.7}50%{opacity:1}}.hud-conf{width:120px;height:6px;background:#fff3;border-radius:3px;overflow:hidden}.hud-conf-fill{height:100%;width:0%;background:var(--accent);transition:width .08s linear}.hud-fallback{margin-top:4px;padding:8px 16px;font-size:14px;color:#14100e;background:var(--accent);border:none;border-radius:20px;font-weight:700}.hud-dots{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:3;display:flex;gap:7px;padding:6px 10px;background:#00000059;border-radius:14px}.hud-dots i{width:8px;height:8px;border-radius:50%;background:#ffffff59;transition:background .3s,transform .3s}.hud-dots i.done{background:var(--accent)}.hud-dots i.now{background:var(--good);transform:scale(1.4)}.overlay{position:fixed;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 30%,#281c14eb,#0a0806f7);padding:24px}.overlay .panel{width:min(92vw,460px);text-align:center;border:1px solid rgba(200,150,62,.4);border-radius:18px;padding:28px 24px;background:#14100eb3}.overlay .seal{font-size:13px;letter-spacing:.3em;color:var(--accent)}.overlay h1{font-size:26px;margin:10px 0 6px}.overlay p{font-size:15px;line-height:1.7;color:#e7dccb;margin:8px 0}.overlay .privacy{font-size:12px;color:#9a8f7d;margin-top:14px}.overlay button{margin-top:18px;padding:13px 30px;font-size:17px;font-weight:700;color:#14100e;background:var(--accent);border:none;border-radius:24px;cursor:pointer}.longpress-ring{position:fixed;z-index:5;pointer-events:none;width:66px;height:66px;margin:-33px 0 0 -33px;border-radius:50%;background:conic-gradient(var(--good) var(--p, 0%),rgba(255,255,255,.16) 0);-webkit-mask:radial-gradient(closest-side,transparent 66%,#000 68%);mask:radial-gradient(closest-side,transparent 66%,#000 68%);opacity:0;transition:opacity .15s}.longpress-hint{position:absolute;bottom:6px;left:50%;transform:translate(-50%);z-index:3;font-size:11px;color:#fff0d666;pointer-events:none}.hud-flash{position:fixed;inset:0;z-index:4;pointer-events:none;background:radial-gradient(circle,rgba(255,240,205,.62),rgba(232,190,108,.12) 45%,transparent 70%);opacity:0}.hud-flash.show{animation:flash .45s ease-out}@keyframes flash{0%{opacity:0}12%{opacity:1}to{opacity:0}}#stage.punch{animation:punch .24s ease-out}@keyframes punch{0%{transform:scale(1)}32%{transform:scale(1.02)}to{transform:scale(1)}}.page{max-width:720px;margin:0 auto;padding:20px}.page h1{color:var(--accent)}button.primary{padding:12px 20px;font-size:16px;font-weight:700;color:#14100e;background:var(--accent);border:none;border-radius:10px;cursor:pointer}button.ghost{padding:10px 16px;font-size:14px;color:var(--ink);background:transparent;border:1px solid var(--accent);border-radius:10px;cursor:pointer}table{border-collapse:collapse;width:100%;margin-top:12px;font-size:13px}th,td{border:1px solid rgba(200,150,62,.3);padding:6px 8px;text-align:center}th{background:#c8963e26}label{display:block;margin:8px 0 4px;font-size:14px;color:var(--accent)}input,select,textarea{width:100%;padding:8px 10px;font-size:14px;background:#211a15;color:var(--ink);border:1px solid rgba(200,150,62,.4);border-radius:8px}textarea{min-height:80px;font-family:inherit}.row{display:flex;gap:10px;flex-wrap:wrap}.warn{color:#ff8f6b}.hidden{display:none}
