*{box-sizing:border-box}
:root{--bg:#070b10;--ink:#e7eef6;--muted:#93a6b8;--line:rgba(255,255,255,.12);--amber:#f0a84b;--good:#38d39f;--bad:#e05a4f}
html,body{height:100%;margin:0;background:var(--bg);color:var(--ink);font-family:"Microsoft YaHei","Segoe UI",system-ui,sans-serif;overflow:hidden}
#app{position:relative;width:100%;height:100dvh;overflow:hidden}
#scene{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,transparent 42%,rgba(0,0,0,.5) 100%)}
.hud{position:absolute;left:calc(env(safe-area-inset-left) + 18px);right:calc(env(safe-area-inset-right) + 18px);top:calc(env(safe-area-inset-top) + 14px);display:flex;justify-content:space-between;align-items:center;gap:12px;z-index:20;pointer-events:none}
.brand{display:flex;align-items:center;gap:10px;background:rgba(7,12,18,.66);border:1px solid var(--line);padding:8px 12px;border-radius:10px;backdrop-filter:blur(10px)}
.brand b{font-size:15px;letter-spacing:.12em}
.brand em{font-style:normal;color:var(--amber);font-size:11px;letter-spacing:.08em}
.dot{width:7px;height:7px;border-radius:50%;background:var(--good);box-shadow:0 0 12px var(--good)}
.hud-right{display:flex;gap:8px}
.pill{background:rgba(7,12,18,.66);border:1px solid var(--line);padding:7px 10px;border-radius:8px;font-size:11px;color:var(--muted);backdrop-filter:blur(10px)}
.pill b{color:var(--ink);font-weight:600}
.stats{display:none;position:absolute;right:calc(env(safe-area-inset-right) + 18px);top:calc(env(safe-area-inset-top) + 62px);z-index:20;color:#6f8598;font:10px/1.4 ui-monospace,Consolas,monospace;letter-spacing:.04em;pointer-events:none}
body.debug .stats{display:block}
.brief{position:absolute;left:calc(env(safe-area-inset-left) + 18px);top:calc(env(safe-area-inset-top) + 70px);width:min(360px,calc(100% - 36px));z-index:15;background:linear-gradient(180deg,rgba(8,14,20,.9),rgba(8,14,20,.72));border:1px solid var(--line);border-left:2px solid var(--amber);border-radius:12px;padding:14px 16px;backdrop-filter:blur(14px);box-shadow:0 18px 50px rgba(0,0,0,.35)}
.brief-kicker{color:var(--amber);font-size:10px;letter-spacing:.16em;margin-bottom:8px}
.brief h2{font-size:17px;line-height:1.4;margin:0 0 8px;font-weight:600}
.brief p{margin:0;color:#a9bacb;font-size:12px;line-height:1.75}
.brief-note{display:none;margin-top:10px;padding-top:9px;border-top:1px solid rgba(255,255,255,.08);color:#71869a;font-size:11px;line-height:1.6}
.dock{transition:opacity .25s ease,transform .25s ease;position:absolute;right:calc(env(safe-area-inset-right) + 18px);bottom:calc(env(safe-area-inset-bottom) + 18px);width:min(430px,calc(100% - 36px));z-index:25;background:linear-gradient(180deg,rgba(9,15,22,.94),rgba(7,11,16,.98));border:1px solid var(--line);border-radius:14px;padding:13px;backdrop-filter:blur(16px);box-shadow:0 24px 70px rgba(0,0,0,.5)}
.dock-head{display:flex;justify-content:space-between;gap:8px;align-items:center;color:#dce8f4;font-size:13px;margin-bottom:9px}
.hint{color:#6f8598;font-size:10px;font-weight:400}
.options{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.opt{appearance:none;text-align:left;position:relative;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.035);color:#dbe6f1;border-radius:9px;padding:9px 10px 9px 40px;font:inherit;font-size:12px;line-height:1.5;cursor:pointer;transition:.16s;min-height:48px}
.opt:hover{border-color:rgba(240,168,75,.5);background:rgba(240,168,75,.07)}
.opt.selected{border-color:var(--amber);background:rgba(240,168,75,.14)}
.opt.good{border-color:var(--good);background:rgba(56,211,159,.1)}
.opt.bad{border-color:var(--bad);background:rgba(224,90,79,.1)}
.opt .k{position:absolute;left:9px;top:9px;width:18px;text-align:center;color:var(--amber);font-weight:700;margin:0}
.opt:disabled{cursor:default;opacity:.9}
.dock-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;color:#7e93a6;font-size:11px}
.dock-actions{display:flex;gap:7px;align-items:center}
#retryBtn{appearance:none;border:1px solid rgba(240,168,75,.5);background:rgba(240,168,75,.12);color:#ffdca8;border-radius:7px;padding:6px 10px;font:inherit;font-size:11px;cursor:pointer}
#reset{appearance:none;border:1px solid var(--line);background:transparent;color:#b9c9d8;border-radius:7px;padding:6px 10px;font:inherit;font-size:11px;cursor:pointer}
#reset:hover{border-color:rgba(255,255,255,.3)}
.toast{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 300px);transform:translate(-50%,10px);z-index:40;max-width:min(520px,calc(100% - 32px));padding:11px 14px;border-radius:10px;border:1px solid var(--line);background:rgba(7,12,18,.94);color:#dce8f4;font-size:12px;line-height:1.65;opacity:0;pointer-events:none;transition:.25s;backdrop-filter:blur(12px)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.good{border-color:rgba(56,211,159,.45)}.toast.bad{border-color:rgba(224,90,79,.45)}
.debug{position:absolute;left:18px;bottom:18px;z-index:30;color:#5f7386;font:10px/1.4 ui-monospace,Consolas,monospace;white-space:pre;pointer-events:none}
@media (max-width:760px){
  .hud{left:calc(env(safe-area-inset-left) + 12px);right:calc(env(safe-area-inset-right) + 12px);top:calc(env(safe-area-inset-top) + 10px)}
  .brand em{display:none}
  .brand{padding:7px 9px}.brand b{font-size:13px}
  .stats{right:calc(env(safe-area-inset-right) + 12px);top:calc(env(safe-area-inset-top) + 52px);font-size:9px}
  .brief{left:calc(env(safe-area-inset-left) + 12px);right:calc(env(safe-area-inset-right) + 12px);top:calc(env(safe-area-inset-top) + 54px);width:auto;padding:11px 13px}
  .brief h2{font-size:15px}.brief p,.brief-note{display:none}
  .brief{padding:9px 12px}.brief-kicker{margin-bottom:4px}
  .dock{left:calc(env(safe-area-inset-left) + 10px);right:calc(env(safe-area-inset-right) + 10px);bottom:calc(env(safe-area-inset-bottom) + 10px);width:auto;padding:11px;border-radius:13px}
  .options{gap:6px}.opt{font-size:11px;padding:8px 9px 8px 38px;min-height:46px}
  .dock-head{font-size:12px}.hint{display:none}
  .toast{bottom:calc(env(safe-area-inset-bottom) + 280px);font-size:11px}
}
@media (max-width:340px){.options{grid-template-columns:1fr}.opt{min-height:40px}}
/* P2.1 evidence hotspots */
.hotspots{position:absolute;inset:0;z-index:18;pointer-events:none;transition:opacity .2s}
.hotspots.hidden{opacity:0;pointer-events:none}
.hotspot{position:absolute;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:50%;border:1px solid rgba(240,168,75,.85);background:rgba(8,14,20,.86);color:#ffdca8;font:600 12px/30px ui-monospace,Consolas,monospace;text-align:center;padding:0;cursor:pointer;pointer-events:auto;box-shadow:0 0 0 4px rgba(240,168,75,.09),0 6px 18px rgba(0,0,0,.5);transition:.18s;backdrop-filter:blur(4px)}
.hotspot em{position:absolute;left:50%;top:33px;transform:translateX(-50%);font:9px/1.2 "Microsoft YaHei",sans-serif;color:#d8c09a;background:rgba(7,12,18,.7);border:1px solid rgba(255,255,255,.1);padding:2px 4px;border-radius:3px;white-space:nowrap;font-style:normal;pointer-events:none}
.hotspot::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:1px solid rgba(240,168,75,.35);animation:hsPulse 2.2s ease-out infinite;pointer-events:none}
.hotspot:hover{background:rgba(240,168,75,.2);transform:translate(-50%,-50%) scale(1.08)}
.hotspot.seen{border-color:rgba(56,211,159,.8);color:#baf5df;box-shadow:0 0 0 4px rgba(56,211,159,.08),0 6px 18px rgba(0,0,0,.5)}
.hotspot.seen::after{display:none}
.hotspot.hidden{display:none}
@keyframes hsPulse{0%{transform:scale(.8);opacity:.9}70%{transform:scale(1.35);opacity:0}100%{transform:scale(1.35);opacity:0}}
.observe-hint{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 248px);transform:translateX(-50%);z-index:19;background:rgba(7,12,18,.78);border:1px solid rgba(240,168,75,.28);color:#ffdca8;border-radius:999px;padding:7px 13px;font-size:11px;letter-spacing:.04em;pointer-events:none;backdrop-filter:blur(8px);transition:.25s;white-space:nowrap}
.observe-hint.hide{opacity:0;transform:translate(-50%,8px)}
.evidence-card{position:absolute;right:calc(env(safe-area-inset-right) + 18px);top:calc(env(safe-area-inset-top) + 112px);width:min(340px,calc(100% - 36px));z-index:35;background:linear-gradient(180deg,rgba(9,15,22,.97),rgba(7,11,16,.98));border:1px solid rgba(255,255,255,.14);border-left:2px solid var(--amber);border-radius:12px;padding:14px;box-shadow:0 24px 70px rgba(0,0,0,.55);backdrop-filter:blur(16px);transform:translateX(12px);opacity:0;pointer-events:none;visibility:hidden;transition:.2s}
.evidence-card.show{transform:none;opacity:1;pointer-events:auto;visibility:visible}
.ev-top{display:flex;align-items:center;gap:6px;color:var(--amber);font:10px/1.2 ui-monospace,Consolas,monospace;letter-spacing:.1em;margin-bottom:7px}
#evRecord{color:#71869a;letter-spacing:0;margin-left:auto}
.ev-top .ev-continue{padding:4px 7px;font-size:10px}
.ev-close{appearance:none;border:0;background:transparent;color:#8498aa;font-size:22px;line-height:1;padding:0 2px;cursor:pointer}
.ev-close:hover{color:#fff}
.evidence-card h3{margin:0 0 7px;font-size:16px;line-height:1.35;font-weight:600}
.evidence-card p{margin:0;color:#a9bacb;font-size:12px;line-height:1.7}
.ev-unknown{margin-top:10px;padding-top:9px;border-top:1px solid rgba(255,255,255,.09);color:#7e93a6;font-size:11px;line-height:1.6}
.ev-unknown b{color:#e0b06a;font-weight:600;margin-right:5px}
.ev-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:11px;padding-top:9px;border-top:1px solid rgba(255,255,255,.08);color:#6f8598;font-size:10px}
.ev-continue{appearance:none;border:1px solid rgba(240,168,75,.45);background:rgba(240,168,75,.1);color:#ffdca8;border-radius:7px;padding:6px 9px;font:inherit;font-size:11px;cursor:pointer}
@media (max-width:760px){
  .observe-hint{bottom:calc(env(safe-area-inset-bottom) + 300px);font-size:10px}
  .evidence-card{left:calc(env(safe-area-inset-left) + 10px);right:calc(env(safe-area-inset-right) + 10px);top:auto;bottom:calc(env(safe-area-inset-bottom) + 10px);width:auto;transform:translateY(10px);z-index:50;padding:13px}
  .evidence-card.show{transform:none}
  .evidence-card p{font-size:12px}
}
/* P2.2 consequence + result */
.impact-flash{position:absolute;inset:0;z-index:60;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 52% 43%,rgba(255,70,50,.55),rgba(120,20,15,.25) 45%,transparent 72%);mix-blend-mode:screen;transition:opacity .08s}
.impact-flash.on{opacity:1;animation:impactFade .65s ease-out forwards}
@keyframes impactFade{0%{opacity:1}55%{opacity:.65}100%{opacity:0}}
.crash-label,.skip-label{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) scale(.94);z-index:62;pointer-events:none;opacity:0;font:700 clamp(22px,4vw,40px)/1.1 ui-monospace,Consolas,monospace;letter-spacing:.18em;padding:10px 16px;border-radius:6px;background:rgba(7,11,16,.78);border:1px solid rgba(255,255,255,.16);transition:.18s;white-space:nowrap}
.crash-label{color:#ff6a5b;border-color:rgba(255,90,75,.6);text-shadow:0 0 18px rgba(255,60,40,.6)}
.skip-label{top:24%;color:#f0c06a;border-color:rgba(240,192,106,.5);font-size:clamp(14px,2.2vw,22px)}
.crash-label.show,.skip-label.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.result-panel{position:absolute;right:calc(env(safe-area-inset-right) + 18px);bottom:calc(env(safe-area-inset-bottom) + 18px);z-index:70;width:min(430px,calc(100% - 36px));background:linear-gradient(180deg,rgba(10,16,23,.98),rgba(6,10,15,.99));border:1px solid rgba(255,255,255,.14);border-left:2px solid var(--amber);border-radius:13px;padding:15px;box-shadow:0 26px 80px rgba(0,0,0,.6);backdrop-filter:blur(18px);transform:translateY(12px);opacity:0;pointer-events:none;visibility:hidden;transition:.24s}
.result-panel.show{transform:none;opacity:1;pointer-events:auto;visibility:visible}
.rp-top{display:flex;justify-content:space-between;align-items:center;color:var(--amber);font:10px/1.2 ui-monospace,Consolas,monospace;letter-spacing:.14em}
.rp-close{appearance:none;border:0;background:transparent;color:#8498aa;font-size:21px;line-height:1;cursor:pointer}
.rp-scoreline{display:flex;align-items:baseline;gap:5px;margin:8px 0 4px;color:#8fa4b6;font:12px/1.2 ui-monospace,Consolas,monospace}
.rp-scoreline b{font:700 34px/1 ui-monospace,Consolas,monospace;color:#f2f7fc}
.rp-scoreline em{font-style:normal;margin-left:auto;font-size:11px;color:#e7b36a;letter-spacing:.06em}
.result-panel>p{margin:4px 0 10px;color:#b4c4d3;font-size:12px;line-height:1.7}
.rp-evidence{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-top:1px solid rgba(255,255,255,.08);border-bottom:1px solid rgba(255,255,255,.08);color:#7e93a6;font-size:11px}
.rp-evidence b{color:#d9e8f5;font:600 13px ui-monospace,Consolas,monospace}
.rp-mentor{display:flex;gap:8px;margin:10px 0;color:#7e93a6;font-size:11px;line-height:1.6}
.rp-mentor>span{color:var(--amber);flex:0 0 auto;background:rgba(240,168,75,.1);border:1px solid rgba(240,168,75,.28);border-radius:4px;padding:2px 5px;height:fit-content;font-size:10px}
.rp-mentor p{margin:0;color:#c7d5e2}
.rp-actions{display:flex;gap:8px;justify-content:flex-end}
.rp-actions button{appearance:none;border:1px solid rgba(240,168,75,.4);background:rgba(240,168,75,.1);color:#ffdca8;border-radius:7px;padding:7px 11px;font:inherit;font-size:11px;cursor:pointer}
.rp-actions button:first-child{border-color:rgba(255,255,255,.14);background:transparent;color:#aebfce}
@media (max-width:760px){.result-panel{left:calc(env(safe-area-inset-left) + 10px);right:calc(env(safe-area-inset-right) + 10px);bottom:calc(env(safe-area-inset-bottom) + 10px);width:auto;z-index:70}.crash-label,.skip-label{top:34%}.result-panel>p{font-size:12px}}
#app.shake{animation:appShake .4s ease-in-out}
@keyframes appShake{0%,100%{transform:translate(0,0)}18%{transform:translate(-5px,3px)}36%{transform:translate(5px,-3px)}54%{transform:translate(-3px,-2px)}72%{transform:translate(3px,2px)}}
/* P3 review fixes */
body.performing .dock,body.observing .dock{opacity:0;transform:translateY(16px);pointer-events:none}
.rp-chips{display:flex;flex-wrap:wrap;gap:4px;margin:7px 0 2px}
.rp-chips span{font-size:9px;line-height:1.2;padding:2px 4px;border-radius:3px;border:1px solid rgba(255,255,255,.1);color:#5f7487;background:rgba(255,255,255,.02)}
.rp-chips span.on{border-color:rgba(56,211,159,.4);color:#9fe9cc;background:rgba(56,211,159,.08)}
.hotspot.need{border-color:#fff2b0;color:#fff2b0;animation:needPulse .7s ease-in-out infinite}
@keyframes needPulse{0%,100%{box-shadow:0 0 0 4px rgba(240,168,75,.08),0 0 16px rgba(240,168,75,.45)}50%{box-shadow:0 0 0 8px rgba(240,168,75,.12),0 0 26px rgba(255,215,120,.85)}}
body.reviewing .dock .options,body.reviewing .dock .dock-head{display:none}
body.reviewing .dock{padding:10px 12px}
body.reviewing .dock-foot{margin-top:0}
.rp-key{margin:8px 0 2px;color:#8fa4b6;font-size:11px;line-height:1.6}
.rp-key b{color:#ffdca8;font-weight:600}
.zhao-bubble{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%) scale(.95);z-index:45;pointer-events:none;opacity:0;max-width:250px;background:rgba(7,12,18,.94);border:1px solid rgba(255,255,255,.16);border-left:2px solid #93a6b8;border-radius:9px;padding:9px 12px;color:#dbe8f4;font-size:12px;line-height:1.6;box-shadow:0 14px 40px rgba(0,0,0,.5);transition:.18s;backdrop-filter:blur(10px)}
.zhao-bubble.show{opacity:1;transform:translate(-50%,-100%) scale(1)}
.ev-judge{margin:8px 0 4px;padding:9px 0 2px;border-top:1px solid rgba(255,255,255,.08)}
.ev-judge p{margin:0 0 8px;color:#ffdca8;font-size:12px}
.ev-judge-btns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ev-judge-btns button{appearance:none;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.05);color:#dce8f4;border-radius:8px;padding:9px;font:600 13px/1.2 "Microsoft YaHei",sans-serif;cursor:pointer}
.ev-judge-btns button[data-v="abnormal"]{border-color:rgba(240,168,75,.5);color:#ffdca8}
.ev-judge-btns button:active{transform:scale(.98)}
.ev-verdict{margin-top:9px;font-size:11px;line-height:1.5;padding:7px 8px;border-radius:6px;background:rgba(56,211,159,.08);color:#9fe8cb;border-left:2px solid rgba(56,211,159,.5)}
.ev-verdict.bad{background:rgba(224,90,79,.08);color:#f0a39b;border-left-color:rgba(224,90,79,.55)}
.anomaly-progress{font:600 10px/1 ui-monospace,Consolas,monospace;letter-spacing:.04em;color:#ffdca8;border:1px solid rgba(240,168,75,.35);background:rgba(240,168,75,.08);padding:4px 7px;border-radius:999px;white-space:nowrap;transition:.2s}
.anomaly-progress.bump{background:rgba(240,168,75,.28);transform:scale(1.06)}
.brief-mobile{display:none}
.rp-judge{font:600 11px/1.4 ui-monospace,Consolas,monospace;color:#9fe8cb;margin-top:6px;padding:5px 7px;border-radius:5px;background:rgba(56,211,159,.07)}
@media (max-width:760px){.brief p.brief-mobile{display:block;margin:6px 0 0;color:#c8d7e4;font-size:12px;line-height:1.55}}
.boot{position:absolute;inset:0;z-index:18;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:radial-gradient(circle at 50% 42%,#101a24,#070b10 65%);color:#dce8f4;transition:opacity .45s ease;pointer-events:none}
.boot b{font-size:13px;letter-spacing:.12em}
.boot span{font:10px/1.4 ui-monospace,Consolas,monospace;color:#7e93a5;letter-spacing:.06em}
.boot-ring{width:22px;height:22px;border:2px solid rgba(240,168,75,.18);border-top-color:#f0a84b;border-radius:50%;animation:bootspin .9s linear infinite;margin-bottom:2px}
.boot.done{opacity:0}
@keyframes bootspin{to{transform:rotate(360deg)}}
.brief-toggle{position:absolute;right:10px;top:10px;z-index:2;appearance:none;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.04);color:#9fb3c6;border-radius:999px;padding:2px 7px;font:10px/1.4 "Microsoft YaHei",sans-serif;cursor:pointer}
.brief-toggle:hover{border-color:rgba(240,168,75,.5);color:#ffdca8}
.brief h2{padding-right:42px}
.brief.collapsed{padding:8px 12px}
.brief.collapsed .brief-kicker,.brief.collapsed p,.brief.collapsed .brief-note{display:none!important}
.brief.collapsed h2{font-size:13px;margin:0;padding-right:48px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brief.collapsed .brief-toggle{top:6px}
