:root{font-family:system-ui,-apple-system,Segoe UI,Microsoft YaHei,PingFang SC,sans-serif;color:#f5f1e9;background:#080a12;font-synthesis:none;text-rendering:optimizeLegibility;--accent: #ff436f;--muted: #9798a8}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100dvh;overflow:hidden;overscroll-behavior:none;background:radial-gradient(circle at 14% 5%,rgba(78,88,179,.14),transparent 32%),#080a12}button,canvas{-webkit-tap-highlight-color:transparent}.app-shell{width:min(100%,520px);min-height:100dvh;margin:0 auto;padding:max(20px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));display:grid;grid-template-rows:auto auto minmax(320px,1fr) auto;gap:11px}.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:flex-end;gap:10px;padding:4px 2px}.topbar-title{min-width:0}.topbar-title .eyebrow{min-width:0;display:flex;align-items:center;gap:5px;overflow:hidden;white-space:nowrap}.topbar-title .eyebrow span{min-width:0;overflow:hidden;text-overflow:ellipsis}.topbar-title .eyebrow b,.topbar-title .eyebrow i{flex:0 0 auto;padding:2px 5px;border-radius:99px;font-style:normal;letter-spacing:.08em}.topbar-title .eyebrow b{color:#ff9cb2;background:#ff436f17}.topbar-title .eyebrow i{color:#8eeec1;background:#67edb014}.eyebrow{margin:0 0 4px;color:#77798b;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9px;font-weight:600;letter-spacing:.18em}h1{margin:0;font-size:clamp(28px,8vw,42px);line-height:1;letter-spacing:-.06em;font-weight:900}.topbar-actions{flex:0 0 auto;display:flex;align-items:center;gap:7px}.sound-toggle{min-height:32px;padding:7px 9px;border:1px solid rgba(119,167,255,.16);border-radius:99px;color:#8e94a8;background:#77a7ff0b;font:inherit;font-size:9px;cursor:pointer}.sound-toggle span{margin-right:3px;font-size:11px}.sound-toggle[aria-pressed=true]{color:#dce6ff;border-color:#77a7ff52}.needle-progress{margin-bottom:2px;padding:8px 12px;display:flex;align-items:center;gap:4px;border:1px solid rgba(255,255,255,.1);border-radius:99px;color:#bbbcca;background:#ffffff09;font-size:11px}.needle-progress strong{color:#f4f1ea;font-size:12px}.home-shell{position:relative;width:min(100%,520px);min-height:100dvh;margin:0 auto;padding:max(34px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow:hidden;isolation:isolate;background:linear-gradient(180deg,#080a120a,#080a12 76%),#080a12}.home-orb{position:absolute;z-index:-1;border-radius:50%;filter:blur(3px);pointer-events:none}.home-orb-one{width:330px;height:330px;top:-150px;right:-120px;background:radial-gradient(circle at 42% 55%,rgba(255,67,111,.42),transparent 66%)}.home-orb-two{width:280px;height:280px;top:250px;left:-170px;background:radial-gradient(circle,rgba(91,109,255,.23),transparent 68%)}.home-header{padding:2px 3px 22px}.home-tag{margin:16px 0 12px;display:inline-flex;padding:6px 10px;border:1px solid rgba(103,237,176,.19);border-radius:99px;color:#83d9ae;background:#67edb00e;font-size:9px}.home-header h1{font-size:clamp(62px,19vw,90px);line-height:.82;letter-spacing:-.09em}.home-header>p:last-child{width:min(88%,360px);margin:18px 0 0;color:#989aa8;font-size:12px;line-height:1.65}.patient-card{position:relative;min-height:184px;margin-top:auto;padding:18px;overflow:hidden;border:1px solid rgba(255,255,255,.095);border-radius:26px;background:radial-gradient(circle at 4% 0%,rgba(255,67,111,.11),transparent 34%),#ffffff09;box-shadow:0 24px 64px #00000040;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.loading-pulse{width:7px;height:7px;display:inline-block;border-radius:50%;background:#77a7ff;box-shadow:0 0 12px #77a7ffb3;animation:loading-pulse 1s ease-in-out infinite}.patient-skeleton{display:grid;gap:14px}.patient-skeleton small,.review-skeleton small{display:flex;align-items:center;justify-content:center;gap:7px;color:#747685;font-size:9px}.skeleton-heading{display:flex;align-items:center;gap:11px}.skeleton-heading>div{flex:1;display:grid;gap:7px}.skeleton-block{position:relative;display:block;overflow:hidden;border-radius:8px;background:#ffffff0f}.skeleton-block:after{position:absolute;inset:0;content:"";background:linear-gradient(100deg,transparent 18%,rgba(255,255,255,.11) 48%,transparent 78%);transform:translate(-100%);animation:skeleton-shimmer 1.45s ease-in-out infinite}.skeleton-avatar{width:47px;height:47px;flex:0 0 auto;border-radius:16px}.skeleton-name{width:46%;height:14px}.skeleton-tag{width:28%;height:8px}.skeleton-dialog{height:48px}.skeleton-traits{height:24px}.patient-card-top{display:flex;align-items:center;gap:11px}.patient-avatar{width:47px;height:47px;flex:0 0 auto;display:grid;place-items:center;border:1px solid rgba(255,88,127,.35);border-radius:16px;color:#ff7897;background:linear-gradient(145deg,#ff436f30,#5b6dff14);font-size:19px;font-weight:800}.patient-card-top>div:nth-child(2){min-width:0;flex:1}.patient-card-top p{margin:0 0 2px;color:#6f7180;font-size:8px;letter-spacing:.13em}.patient-card-top h2{margin:0;font-size:18px}.patient-card-top h2 small{color:#777987;font-size:10px;font-weight:500}.patient-card-top div>span{color:#ff7897;font-size:9px}.patient-card-top button{min-height:34px;padding:0 11px;border:1px solid rgba(255,255,255,.09);border-radius:99px;color:#afb0bd;background:#ffffff09;font:inherit;font-size:9px;cursor:pointer}.patient-card-top button:disabled{cursor:wait;opacity:.62}.patient-card blockquote{margin:15px 0;padding:11px 13px;border-left:2px solid #ff436f;border-radius:3px 12px 12px 3px;color:#c7c4c2;background:#ff436f0d;font-size:11px;line-height:1.6}.patient-traits{display:grid;grid-template-columns:1fr 1fr;gap:12px}.patient-traits>div{display:grid;grid-template-columns:1fr auto;gap:5px}.patient-traits span{color:#777987;font-size:9px}.patient-traits strong{color:#ece8e2;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px}.patient-traits i{grid-column:1 / -1;height:4px;overflow:hidden;border-radius:99px;background:#ffffff12}.patient-traits b{height:100%;display:block;border-radius:inherit;background:linear-gradient(90deg,#77a7ff,#ff436f)}.patient-challenge{--challenge-color: #77a7ff;margin-top:14px;padding:10px 11px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px;border:1px solid color-mix(in srgb,var(--challenge-color) 22%,transparent);border-radius:14px;background:color-mix(in srgb,var(--challenge-color) 6%,transparent)}.patient-challenge>span{padding:5px 7px;border-radius:8px;color:var(--challenge-color);background:color-mix(in srgb,var(--challenge-color) 11%,transparent);font-size:8px;font-weight:800;white-space:nowrap}.patient-challenge>div{min-width:0;display:grid;gap:2px}.patient-challenge strong{color:#e8e5df;font-size:10px}.patient-challenge small{overflow:hidden;color:#828493;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.mode-select{margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-entry{min-width:0;min-height:94px;padding:13px 14px;display:grid;align-content:center;justify-items:start;gap:4px;border:1px solid rgba(255,255,255,.11);border-radius:19px;color:#f6f2eb;text-align:left;font:inherit;cursor:pointer;transition:transform .16s ease,border-color .16s ease,filter .16s ease}.mode-entry-simple{background:radial-gradient(circle at 100% 0%,rgba(103,237,176,.18),transparent 52%),#67edb00e}.mode-entry-challenge{border-color:#ff436f40;background:radial-gradient(circle at 100% 0%,rgba(255,67,111,.25),transparent 54%),#ff436f11;box-shadow:0 13px 34px #ff365f1f}.mode-entry span{padding:3px 6px;border-radius:7px;color:#82e6b7;background:#67edb01a;font-size:8px;font-weight:900;letter-spacing:.08em}.mode-entry-challenge span{color:#ff7797;background:#ff436f1f}.mode-entry strong{font-size:15px;font-weight:900}.mode-entry small{color:#858795;font-size:9px;line-height:1.45}.mode-entry:not(:disabled):active{transform:scale(.975)}.mode-entry:disabled{cursor:wait;filter:saturate(.45);opacity:.58;box-shadow:none}.home-disclaimer{margin:11px 10px 0;color:#575967;text-align:center;font-size:8px;line-height:1.55}.patient-status{padding:10px 11px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;border:1px solid rgba(255,255,255,.075);border-radius:18px;background:#ffffff07}.status-item{--status-color: #67edb0;min-width:0;display:grid;grid-template-columns:1fr auto;gap:3px 4px}.status-item span{overflow:hidden;color:#77798a;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.status-item strong{color:var(--status-color);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:11px}.status-item i{grid-column:1 / -1;height:3px;overflow:hidden;border-radius:99px;background:#ffffff12}.status-item b{height:100%;display:block;border-radius:inherit;background:var(--status-color);box-shadow:0 0 7px color-mix(in srgb,var(--status-color) 55%,transparent);transition:width .42s cubic-bezier(.2,.8,.2,1)}.scene-card{position:relative;min-height:0;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:28px;background:#0b0d16;box-shadow:0 26px 80px #00000047;touch-action:none}.scene-card:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 60px #0a0a12bf}.scene-card canvas{display:block;width:100%;height:100%;cursor:grab}.scene-card canvas:active{cursor:grabbing}.model-loading-overlay{--model-progress: 12%;position:absolute;z-index:9;inset:0;padding:28px;display:grid;place-content:center;justify-items:center;gap:9px;color:#f2eee7;text-align:center;background:radial-gradient(circle at 50% 42%,rgba(103,237,176,.11),transparent 30%),#080a12f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:opacity .24s ease}.model-loading-overlay strong{margin-top:5px;font-size:15px}.model-loading-overlay>span{color:#848796;font-size:10px}.model-loading-overlay>small{color:#67edb0;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9px}.loading-hand-icon{position:relative;width:58px;height:58px;display:grid;place-items:center}.loading-hand-icon:before,.loading-hand-icon:after,.loading-hand-icon i{content:"";position:absolute;border:1px solid rgba(103,237,176,.52);border-radius:50%;box-shadow:0 0 18px #67edb01f;animation:model-loader-pulse 1.5s ease-in-out infinite}.loading-hand-icon:before{width:48px;height:48px}.loading-hand-icon:after{width:29px;height:29px;animation-delay:.16s}.loading-hand-icon i{width:7px;height:7px;border:0;background:#67edb0}.loading-hand-icon i:nth-child(1){transform:translate(-23px,6px)}.loading-hand-icon i:nth-child(2){transform:translate(18px,-17px);animation-delay:.26s}.loading-hand-icon i:nth-child(3){transform:translate(17px,20px);animation-delay:.42s}.model-loading-track{width:min(62vw,230px);height:4px;margin-top:8px;overflow:hidden;border-radius:99px;background:#ffffff13}.model-loading-track i{width:var(--model-progress);height:100%;display:block;border-radius:inherit;background:linear-gradient(90deg,#4c9c7a,#67edb0);box-shadow:0 0 12px #67edb061;transition:width .22s ease}.scene-badge{position:absolute;z-index:2;top:16px;left:16px;display:flex;align-items:center;gap:9px;color:#9fa0ae;font-size:11px}.scene-badge span{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.11);border-radius:50%;color:#f3f0e9;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.challenge-hud{--challenge-color: #77a7ff;position:absolute;z-index:2;top:58px;left:16px;max-width:calc(100% - 32px);padding:8px 10px;display:grid;gap:2px;border:1px solid color-mix(in srgb,var(--challenge-color) 22%,transparent);border-radius:12px;background:#080a12b3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:border-color .24s ease,background .24s ease}.challenge-hud span{color:var(--challenge-color);font-size:8px;font-weight:700}.challenge-hud strong{color:#d9d6d1;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9px}.challenge-hud.is-risk{border-color:#ff436f61;background:#2c0914c7}.state-stressed .scene-card{box-shadow:0 26px 80px #00000047,0 0 38px #ff436f14}.state-stressed .aim-tip{border-color:#ff8aa542}.aim-tip{position:absolute;z-index:2;top:18px;right:16px;padding:8px 11px;display:flex;align-items:center;gap:7px;border:1px solid rgba(103,237,176,.18);border-radius:99px;color:#c6dace;background:#081210a8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:10px}.aim-tip i{width:6px;height:6px;border-radius:50%;background:#67edb0;box-shadow:0 0 10px #67edb0}.scene-card.is-charging{border-color:#67edb052;box-shadow:0 26px 80px #00000047,inset 0 0 42px #67edb00f,0 0 32px #67edb014}.charge-console{--charge-progress: 0%;--charge-cursor: 0%;--charge-stability: 0%;position:absolute;z-index:5;bottom:62px;left:50%;width:min(78%,300px);padding:12px 14px 11px;border:1px solid rgba(255,255,255,.13);border-radius:18px;color:#f5f2ec;background:#070a11e0;box-shadow:0 18px 50px #0000006b;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transform:translate(-50%);animation:charge-console-in .18s ease-out}.charge-heading{margin-bottom:9px;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.08em}.charge-heading span{color:#a7a8b4}.charge-heading strong{color:#ffcf6d;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:18px}.charge-track{position:relative;height:13px;border:1px solid rgba(255,255,255,.1);border-radius:99px;background:linear-gradient(90deg,#ff436f47,#ffcf6d33 34%,#67edb040,#ffcf6d33 66%,#ff436f47)}.charge-sweet-spot{position:absolute;inset:-3px 34%;border:1px solid rgba(103,237,176,.82);border-radius:99px;box-shadow:0 0 13px #67edb061}.charge-cursor{position:absolute;top:50%;left:var(--charge-cursor);width:4px;height:25px;border-radius:99px;background:#fff9ed;box-shadow:0 0 11px #fff2bc;transform:translate(-50%,-50%)}.charge-power{height:3px;margin-top:8px;overflow:hidden;border-radius:99px;background:#ffffff12}.charge-power i{width:var(--charge-progress);height:100%;display:block;border-radius:inherit;background:linear-gradient(90deg,#ffcf6d,#67edb0);box-shadow:0 0 9px #67edb06b}.charge-console small{margin-top:7px;display:block;color:#9294a2;text-align:center;font-size:9px}.charge-console.is-perfect{border-color:#67edb09e;box-shadow:0 18px 50px #0000006b,0 0 30px #67edb033}.charge-console.is-perfect .charge-heading strong,.charge-console.is-perfect small{color:#67edb0}.insertion-status{--result-color: #67edb0;position:absolute;z-index:4;top:58px;left:50%;padding:8px 12px;display:flex;align-items:center;gap:7px;border:1px solid color-mix(in srgb,var(--result-color) 35%,transparent);border-radius:99px;color:#f4f1ea;background:#080a12c7;box-shadow:0 0 24px color-mix(in srgb,var(--result-color) 18%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:10px;transform:translate(-50%);animation:insertion-pop .22s ease-out}.insertion-status span{color:var(--result-color);font-size:16px}.screen-effect{position:fixed;z-index:12;inset:0;overflow:hidden;opacity:0;pointer-events:none}.midpoint-atmosphere{position:fixed;z-index:12;inset:0;pointer-events:none}.midpoint-atmosphere.effect-heartbeat{background:radial-gradient(circle,transparent 30%,rgba(255,54,95,.38));animation:midpoint-heartbeat .9s ease-in-out 2}.midpoint-atmosphere.effect-cold-flash{background:#6697ff38;mix-blend-mode:screen;animation:midpoint-flash .72s ease-out both}.midpoint-atmosphere.effect-warm-glow{background:radial-gradient(circle at 50% 52%,rgba(255,200,106,.28),transparent 62%);animation:midpoint-warmth 1.5s ease-in-out both}@keyframes midpoint-heartbeat{0%,to{opacity:.15;transform:scale(1)}35%{opacity:1;transform:scale(1.025)}55%{opacity:.35;transform:scale(1)}72%{opacity:.86;transform:scale(1.014)}}@keyframes midpoint-flash{0%{opacity:0}18%{opacity:1}to{opacity:.14}}@keyframes midpoint-warmth{0%{opacity:0;transform:scale(.92)}45%{opacity:1}to{opacity:.4;transform:scale(1.08)}}.impact-burst,.impact-speed-lines{position:absolute;top:50%;left:50%}.impact-burst{width:min(110vw,720px);aspect-ratio:1;border:2px solid currentColor;border-radius:50%;box-shadow:0 0 30px currentColor,inset 0 0 60px color-mix(in srgb,currentColor 30%,transparent);transform:translate(-50%,-50%) scale(.08);animation:impact-burst .94s cubic-bezier(.05,.8,.18,1) both}.impact-speed-lines i{--ray-angle: 0deg;--ray-delay: 0ms;position:absolute;width:min(36vw,220px);height:2px;display:block;border-radius:99px;background:linear-gradient(90deg,currentColor,transparent);box-shadow:0 0 8px currentColor;transform-origin:0 50%;animation:impact-ray .64s var(--ray-delay) cubic-bezier(.08,.72,.2,1) both}.result-success .screen-effect{color:#67edb0;background:radial-gradient(circle at 50% 48%,rgba(103,237,176,.25),transparent 54%);mix-blend-mode:screen;animation:success-glow 2.8s ease-out both}.result-blood .screen-effect{color:#ff365f;background:radial-gradient(circle at 50% 46%,rgba(255,54,95,.3) 0,transparent 26%,rgba(141,0,32,.28) 56%,rgba(62,0,18,.76) 100%);animation:blood-pulse 2.8s cubic-bezier(.16,.78,.3,1) both;animation-delay:0ms}.result-blood .screen-effect:after{content:"";position:absolute;inset:-8%;background:radial-gradient(ellipse at 9% 19%,rgba(196,7,48,.88) 0 1.1%,transparent 1.4%),radial-gradient(ellipse at 91% 28%,rgba(255,35,81,.76) 0 1.8%,transparent 2.1%),radial-gradient(ellipse at 16% 78%,rgba(130,0,32,.9) 0 2.4%,transparent 2.8%),radial-gradient(ellipse at 82% 84%,rgba(187,8,47,.8) 0 1.3%,transparent 1.7%),radial-gradient(ellipse at 70% 10%,rgba(112,0,27,.75) 0 .8%,transparent 1.2%);animation:blood-splatter 2.8s cubic-bezier(.08,.76,.14,1) both;animation-delay:0ms}.result-nerve .screen-effect{color:#8cb5ff;background:linear-gradient(115deg,transparent 39%,rgba(183,211,255,.62) 48%,transparent 56%),repeating-conic-gradient(from 12deg at 50% 50%,transparent 0 8deg,rgba(74,129,255,.16) 9deg 10deg);mix-blend-mode:screen;animation:nerve-flash .11s steps(2) 9;animation-delay:0ms}.result-bruise .screen-effect{color:#a878ff;background:radial-gradient(circle at 50% 48%,rgba(168,120,255,.18),transparent 25%),radial-gradient(circle at 50% 48%,transparent 28%,rgba(91,47,132,.55));animation:bruise-vignette 2.8s ease-out both;animation-delay:0ms}.result-bone .screen-effect{color:#fff2cf;background:radial-gradient(circle at 50% 48%,rgba(255,249,224,.66),transparent 36%);mix-blend-mode:screen;animation:bone-flash 2.8s ease-out both;animation-delay:0ms}.reaction-vasovagal .screen-effect{color:#f1c66e;background:radial-gradient(circle at 50% 46%,transparent 12%,rgba(18,20,27,.4) 44%,rgba(0,0,0,.94) 100%),linear-gradient(#ccc4a32e,#14161b4d);mix-blend-mode:normal;animation:vasovagal-tunnel 3s ease-in-out both}.reaction-hematoma .impact-burst{border-width:5px;filter:blur(1px)}.result-success .scene-card,.result-blood .scene-card,.result-nerve .scene-card,.result-bruise .scene-card{animation:impact-card .88s cubic-bezier(.08,.72,.2,1) both}.result-bone .scene-card{animation:impact-card .88s cubic-bezier(.08,.72,.2,1) both,bone-jolt .18s 70ms ease-out 3}.reaction-stuck-needle .scene-card{animation:impact-card .88s cubic-bezier(.08,.72,.2,1) both,stuck-needle-jolt .24s 80ms ease-in-out 4}.impact-callout{--impact-color: #67edb0;position:fixed;z-index:14;top:48%;left:50%;width:92%;display:grid;place-items:center;color:var(--impact-color);text-align:center;text-shadow:0 0 24px color-mix(in srgb,var(--impact-color) 80%,transparent);transform:translate(-50%,-50%);pointer-events:none;animation:impact-callout 2.75s cubic-bezier(.08,.72,.2,1) both}.result-success .impact-callout{--impact-color: #67edb0}.result-blood .impact-callout{--impact-color: #ff365f}.result-nerve .impact-callout{--impact-color: #8cb5ff}.result-bruise .impact-callout{--impact-color: #b287ff}.result-bone .impact-callout{--impact-color: #fff2cf}.impact-callout>span{margin-bottom:-3px;font-size:34px;font-weight:900}.impact-callout strong{max-width:min(92vw,480px);color:#fffdf7;font-family:PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:clamp(34px,10vw,54px);font-weight:900;line-height:1.08;letter-spacing:.01em;text-wrap:balance;text-shadow:0 2px 0 color-mix(in srgb,var(--impact-color) 42%,#161824),0 0 12px color-mix(in srgb,var(--impact-color) 72%,transparent),0 0 30px color-mix(in srgb,var(--impact-color) 36%,transparent);-webkit-font-smoothing:antialiased}.impact-callout small{margin-top:10px;padding:5px 10px;border:1px solid color-mix(in srgb,var(--impact-color) 42%,transparent);border-radius:99px;color:var(--impact-color);background:#05070cc7;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;letter-spacing:.08em}.gesture-guide{position:absolute;z-index:2;right:15px;bottom:14px;left:15px;padding:10px 12px;display:flex;justify-content:space-around;border:1px solid rgba(255,255,255,.07);border-radius:16px;color:#9293a2;background:#080a12b3;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);font-size:10px}.gesture-guide div{display:flex;align-items:center;gap:6px}.gesture-icon{color:#e7e2d9;font-size:16px}.control-panel{padding:17px 18px;display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid rgba(255,255,255,.08);border-radius:22px;background:#ffffff09}.target-copy{min-width:0}.target-copy .label{margin:0 0 3px;color:var(--accent);font-size:10px;font-weight:700;letter-spacing:.18em}.target-copy h2{margin:0;font-size:17px;line-height:1.35}.target-copy>p:last-child{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.45;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.shot-dots{flex:0 0 auto;display:flex;gap:6px}.shot-dots span{width:8px;height:8px;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:#ffffff0a}.shot-dots span.done{border-color:#ff567f;background:#ff567f;box-shadow:0 0 9px #ff567f8c}.shot-dots span.done.success{border-color:#67edb0;background:#67edb0;box-shadow:0 0 9px #67edb08c}.shot-dots span.done.blood{border-color:#ff365f;background:#ff365f}.shot-dots span.done.nerve{border-color:#77a7ff;background:#77a7ff}.shot-dots span.done.bruise{border-color:#a878ff;background:#a878ff}.shot-dots span.done.bone{border-color:#f4dfb5;background:#f4dfb5}.feedback-backdrop{position:fixed;z-index:20;inset:0;padding:20px;display:grid;place-items:center;background:#04050ab3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:backdrop-in .18s ease-out}.feedback-card{--result-color: #67edb0;width:min(100%,360px);max-height:calc(100dvh - 40px);overflow-y:auto;padding:25px;border:1px solid color-mix(in srgb,var(--result-color) 32%,transparent);border-radius:28px;text-align:center;background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--result-color) 16%,transparent),transparent 45%),#12141e;box-shadow:0 30px 90px #0000008c;animation:card-in .24s cubic-bezier(.2,.8,.2,1)}.result-icon{width:64px;height:64px;margin:0 auto 15px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--result-color) 48%,transparent);border-radius:50%;color:var(--result-color);background:color-mix(in srgb,var(--result-color) 10%,transparent);box-shadow:0 0 32px color-mix(in srgb,var(--result-color) 22%,transparent);font-size:32px;font-weight:500}.feedback-kicker{margin:0 0 6px!important;color:var(--result-color)!important;font-size:10px!important;font-weight:700;letter-spacing:.15em}.feedback-card h2{margin:0;font-size:28px}.feedback-card>p{margin:9px auto 20px;color:#a9aab7;font-size:13px;line-height:1.65}.patient-reaction{margin:-7px 0 14px;padding:11px 12px;border-left:2px solid var(--result-color);border-radius:3px 12px 12px 3px;color:#c7c4c2;text-align:left;background:color-mix(in srgb,var(--result-color) 6%,transparent);font-size:11px;line-height:1.55}.patient-reaction span{margin-right:6px;color:var(--result-color);font-size:9px;font-weight:800}.knowledge-card{margin:0 0 14px;padding:13px 14px;display:grid;gap:5px;border:1px solid color-mix(in srgb,var(--result-color) 18%,transparent);border-radius:15px;text-align:left;background:color-mix(in srgb,var(--result-color) 5%,transparent)}.knowledge-card strong{color:var(--result-color);font-size:13px}.knowledge-card em{color:#bcb8c2;font-size:10px;font-style:normal}.knowledge-card span{color:#dedbe0;font-size:11px;line-height:1.55}.knowledge-card span b{color:#a9a4af;font-weight:600}.knowledge-card small{color:#898b99;font-size:10px;line-height:1.5}.knowledge-card .source-note{padding-top:5px;border-top:1px solid rgba(255,255,255,.06);color:#6f7280;font-size:9px}.distance-row,.event-zone-row,.reaction-type{margin-bottom:16px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(255,255,255,.07);border-radius:14px;color:#8e909f;background:#ffffff06;font-size:11px}.event-zone-row{margin-bottom:8px;border-color:color-mix(in srgb,var(--result-color) 16%,transparent)}.midpoint-event{--midpoint-color: #77a7ff;margin:0 0 14px;padding:13px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 10px;border:1px solid color-mix(in srgb,var(--midpoint-color) 32%,transparent);border-radius:15px;text-align:left;background:radial-gradient(circle at 100% 0%,color-mix(in srgb,var(--midpoint-color) 18%,transparent),transparent 50%),color-mix(in srgb,var(--midpoint-color) 6%,#11131d)}.midpoint-event.mood-calm{--midpoint-color: #67edb0}.midpoint-event.mood-nervous{--midpoint-color: #ff668a}.midpoint-event.mood-impressed{--midpoint-color: #ffd36a}.midpoint-event.mood-suspicious{--midpoint-color: #77a7ff}.midpoint-event>span{color:var(--midpoint-color);font-size:8px;font-weight:800;letter-spacing:.08em}.midpoint-event>strong{color:#f3efe8;font-size:10px}.midpoint-event>p{grid-column:1 / -1;margin:5px 0 0;color:#d5d2d0;font-size:11px;font-weight:650;line-height:1.55}.reaction-type{margin-bottom:8px;border-color:color-mix(in srgb,var(--result-color) 24%,transparent)}.reaction-type strong{color:var(--result-color);font-size:12px}.reaction-type.severity-abnormal{background:color-mix(in srgb,var(--result-color) 9%,rgba(255,255,255,.025))}.feedback-card.severity-abnormal{box-shadow:0 30px 90px #0000008c,0 0 44px color-mix(in srgb,var(--result-color) 14%,transparent)}.event-zone-row strong{color:var(--result-color);font-size:12px}.distance-row strong{color:#f5f1e9;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:16px}.feedback-card .safety-note{margin:-4px 2px 14px;padding:10px 12px;border-left:2px solid var(--result-color);border-radius:3px 10px 10px 3px;color:#a7a9b7;background:color-mix(in srgb,var(--result-color) 7%,transparent);text-align:left;font-size:10px;line-height:1.55}.state-delta{margin:-3px 0 13px;display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.state-delta span{padding:5px 8px;border:1px solid rgba(255,255,255,.08);border-radius:99px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:9px}.state-delta .harm{color:#ff8298;background:#ff365f14}.state-delta .good{color:#78e3b1;background:#67edb012}.feedback-card button{width:100%;min-height:48px;border:0;border-radius:15px;color:#090b10;background:var(--result-color);box-shadow:0 10px 28px color-mix(in srgb,var(--result-color) 18%,transparent);font:inherit;font-size:14px;font-weight:800;cursor:pointer}.feedback-card button:active{transform:scale(.98)}.feedback-card .education-note{margin:11px 0 0;color:#696b79;font-size:9px;line-height:1.45}.summary-shell{width:min(100%,520px);height:100dvh;margin:0 auto;padding:max(28px,env(safe-area-inset-top)) 18px max(26px,env(safe-area-inset-bottom));overflow-y:auto;background:radial-gradient(circle at 82% 2%,rgba(255,67,111,.16),transparent 26%),radial-gradient(circle at 8% 44%,rgba(91,109,255,.12),transparent 30%),#080a12}.summary-header{padding:4px 4px 22px}.summary-header>span{margin:14px 0 8px;display:inline-flex;padding:6px 10px;border:1px solid rgba(103,237,176,.22);border-radius:99px;color:#67edb0;background:#67edb00f;font-size:10px}.summary-header h1{font-size:clamp(40px,12vw,58px);line-height:.94}.summary-header>p:last-child{margin:12px 0 0;color:#a9aab8;font-size:13px}.score-card{padding:18px;display:flex;align-items:center;gap:20px;border:1px solid rgba(255,255,255,.09);border-radius:26px;background:radial-gradient(circle at 15% 50%,rgba(255,67,111,.13),transparent 42%),#ffffff09}.score-ring{--score: 75;position:relative;width:108px;height:108px;flex:0 0 auto;display:grid;place-content:center;border-radius:50%;text-align:center;background:radial-gradient(circle,#10121b 59%,transparent 61%),conic-gradient(#ff436f calc(var(--score) * 1%),#ffffff13 0);box-shadow:0 0 40px #ff436f1f}.score-ring strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:34px;line-height:1}.score-ring span{margin-top:4px;color:#858796;font-size:9px}.score-copy{min-width:0}.score-copy p{margin:0 0 7px;color:#858796;font-size:10px;letter-spacing:.12em}.rating-stars{display:flex;gap:3px;color:#343641;font-size:19px}.rating-stars span.active{color:#ffd36a;text-shadow:0 0 10px rgba(255,211,106,.36)}.score-copy small{margin-top:8px;display:block;color:#626473;font-size:9px}.challenge-result{--challenge-color: #77a7ff;margin-top:12px;padding:14px 16px;display:flex;align-items:center;gap:12px;border:1px solid color-mix(in srgb,var(--challenge-color) 25%,transparent);border-radius:20px;background:color-mix(in srgb,var(--challenge-color) 6%,transparent)}.challenge-result>span{width:36px;height:36px;flex:0 0 auto;display:grid;place-items:center;border-radius:50%;color:#080a12;background:var(--challenge-color);font-size:18px;font-weight:900}.challenge-result.is-failed{--challenge-color: #ff668a !important}.challenge-result>div{min-width:0;display:grid;gap:2px}.challenge-result p{margin:0;color:var(--challenge-color);font-size:8px;font-weight:800;letter-spacing:.08em}.challenge-result strong{font-size:12px}.challenge-result small{color:#7d7f8e;font-size:9px}.challenge-result em{margin-top:3px;color:#a9abb8;font-size:9px;font-style:normal;line-height:1.45}.summary-shell>.patient-status{margin-top:12px}.ai-review{margin-top:12px;padding:20px;border:1px solid rgba(119,167,255,.13);border-radius:24px;background:linear-gradient(145deg,rgba(119,167,255,.075),transparent 52%),#ffffff06}.ai-review>p{margin:0 0 8px;color:#77a7ff;font-size:10px;font-weight:700;letter-spacing:.16em}.ai-review h2{margin:0;color:#ece8e2;font-size:16px;line-height:1.55}.ai-review blockquote{margin:14px 0 0;padding:12px 14px;border-left:2px solid #ff436f;border-radius:3px 12px 12px 3px;color:#b8bac7;background:#ff436f0e;font-size:12px;line-height:1.6}.ai-review.is-loading{min-height:174px}.review-skeleton{display:grid;gap:9px}.review-skeleton .skeleton-block{height:16px}.review-skeleton .skeleton-block.short{width:62%}.review-skeleton small{margin-top:16px}.share-section{margin-top:12px;padding:18px;border:1px solid rgba(255,255,255,.075);border-radius:24px;background:#ffffff07}.share-card{position:relative;min-height:390px;padding:20px;overflow:hidden;display:flex;flex-direction:column;border:1px solid rgba(255,255,255,.13);border-radius:24px;color:#f6f2eb;background:radial-gradient(circle at 88% 8%,rgba(255,72,113,.34),transparent 30%),radial-gradient(circle at 5% 72%,rgba(91,109,255,.27),transparent 36%),linear-gradient(155deg,#171a28,#0c0e17 58%,#15101a);box-shadow:inset 0 1px #ffffff14,0 20px 55px #00000052}.share-card:before{content:"？";position:absolute;right:-16px;bottom:-62px;color:#ffffff06;font-size:220px;font-weight:1000;line-height:1;transform:rotate(8deg);pointer-events:none}.share-card>*{position:relative;z-index:1}.share-card>header{display:flex;align-items:flex-start;justify-content:space-between}.share-card>header>div{display:grid;gap:2px}.share-card>header small{color:#7f8190;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:7px;letter-spacing:.16em}.share-card>header strong{font-size:23px;letter-spacing:-.05em}.share-card>header>span{padding:6px 9px;border:1px solid rgba(103,237,176,.26);border-radius:99px;color:#8af0c0;background:#67edb012;font-size:8px}.share-patient{margin-top:22px;padding:13px;display:grid;grid-template-columns:43px minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.075);border-radius:17px;background:#ffffff09}.share-patient>span{width:43px;height:43px;display:grid;place-items:center;border-radius:50%;color:#0c1015;background:linear-gradient(135deg,#ff8aa5,#67edb0);font-size:18px;font-weight:900}.share-patient>div:not(.share-satisfaction){min-width:0;display:grid;gap:2px}.share-patient small{color:#767987;font-size:7px}.share-patient>div>strong{font-size:12px}.share-patient em{overflow:hidden;color:#9b9ca8;font-size:8px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.share-satisfaction{display:grid;justify-items:end}.share-satisfaction strong{color:#ffd36a;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:26px!important;line-height:1}.share-hit-strip{margin-top:16px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.share-hit-strip>span{--share-hit-color: #67edb0;min-width:0;padding:8px 3px 7px;display:grid;justify-items:center;gap:4px;border:1px solid color-mix(in srgb,var(--share-hit-color) 28%,transparent);border-radius:12px;color:var(--share-hit-color);background:color-mix(in srgb,var(--share-hit-color) 7%,transparent)}.share-hit-strip i{font-size:17px;font-style:normal;line-height:1}.share-hit-strip small{color:#7d7e8b;font-size:7px;white-space:nowrap}.share-card blockquote{min-height:86px;margin:18px 0 0;padding:13px 14px;display:grid;align-content:center;gap:8px;border-left:2px solid #ff668a;border-radius:3px 14px 14px 3px;color:#e7e3de;background:#ff668a0e;font-size:13px;font-weight:650;line-height:1.6}.share-card blockquote:before{content:"AI 趣评";display:block;color:#ff7897;font-size:7px;letter-spacing:.12em}.share-card blockquote .skeleton-block{height:13px}.share-card>footer{margin-top:auto;padding-top:18px;display:flex;align-items:flex-end;justify-content:space-between;gap:10px}.share-card>footer span{color:#a9abb7;font-size:8px}.share-card>footer small{max-width:180px;color:#5e606e;text-align:right;font-size:7px;line-height:1.4}.share-download-button{margin-top:12px;width:100%;min-height:45px;border:0;border-radius:14px;color:#0a0c11;background:#67edb0;font:inherit;font-size:11px;font-weight:800;cursor:pointer}.share-download-button:disabled{cursor:wait;opacity:.45}.share-status{margin:9px 4px 0;color:#ff8ba3;text-align:center;font-size:8px}.share-status.success{color:#67edb0}.needle-history{margin-top:12px;padding:18px;border:1px solid rgba(255,255,255,.075);border-radius:24px;background:#ffffff07}.section-heading{margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}.section-heading span{font-size:13px;font-weight:700}.section-heading small{color:#6f7180;font-size:9px}.needle-history article{padding:10px 0;display:flex;align-items:center;gap:11px;border-top:1px solid rgba(255,255,255,.055)}.history-icon{--history-color: #67edb0;width:31px;height:31px;flex:0 0 auto;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--history-color) 38%,transparent);border-radius:50%;color:var(--history-color);background:color-mix(in srgb,var(--history-color) 7%,transparent)}.needle-history article>div{min-width:0;display:grid;gap:3px}.needle-history article strong{font-size:11px}.needle-history article small{overflow:hidden;color:#777987;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.restart-button{width:100%;min-height:52px;margin-top:14px;border:0;border-radius:17px;color:#090b10;background:linear-gradient(135deg,#ff668a,#ff365f);box-shadow:0 14px 34px #ff365f30;font:inherit;font-size:14px;font-weight:800;cursor:pointer}.summary-disclaimer{margin:12px 12px 0;color:#5f6170;text-align:center;font-size:9px;line-height:1.55}@keyframes backdrop-in{0%{opacity:0}}@keyframes model-loader-pulse{0%,to{opacity:.38;filter:brightness(.82)}50%{opacity:1;filter:brightness(1.28)}}@keyframes insertion-pop{0%{opacity:0;transform:translate(-50%,-6px) scale(.94)}}@keyframes charge-console-in{0%{opacity:0;transform:translate(-50%,8px) scale(.95)}}@keyframes impact-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.06)}9%{opacity:1}72%{opacity:.55}to{opacity:0;transform:translate(-50%,-50%) scale(1.08)}}@keyframes impact-ray{0%{opacity:0;transform:rotate(var(--ray-angle)) translate(32px) scaleX(0)}18%{opacity:1}to{opacity:0;transform:rotate(var(--ray-angle)) translate(72px) scaleX(1.2)}}@keyframes impact-card{0%{transform:scale(1)}7%{transform:scale(.985);filter:brightness(1.9)}13%{transform:scale(1.035)}42%{transform:scale(1.01);filter:brightness(1.15)}to{transform:scale(1);filter:brightness(1)}}@keyframes impact-callout{0%{opacity:0;transform:translate(-50%,-50%) scale(2.5);filter:blur(8px)}7%{opacity:1;transform:translate(-50%,-50%) scale(.92);filter:blur(0)}14%{transform:translate(-50%,-50%) scale(1.04)}64%{opacity:1}to{opacity:0;transform:translate(-50%,-58%) scale(.96)}}@keyframes success-glow{0%{opacity:0;transform:scale(.82)}14%{opacity:1;transform:scale(1.04)}to{opacity:0;transform:scale(1)}}@keyframes blood-pulse{0%{opacity:0;transform:scale(.86)}18%{opacity:1;transform:scale(1.08)}34%{opacity:.6;transform:scale(1)}55%{opacity:.95}to{opacity:.34;transform:scale(1.03)}}@keyframes blood-splatter{0%{opacity:0;transform:scale(.65)}12%{opacity:1;transform:scale(1.06)}to{opacity:.52;transform:scale(1)}}@keyframes nerve-flash{0%,to{opacity:0}50%{opacity:1}}@keyframes bruise-vignette{0%{opacity:0;transform:scale(.72)}18%{opacity:1;transform:scale(1.05)}to{opacity:.58;transform:scale(1)}}@keyframes bone-flash{0%,8%{opacity:0}11%{opacity:1}18%{opacity:.2}28%{opacity:.72}to{opacity:0}}@keyframes vasovagal-tunnel{0%{opacity:0;filter:grayscale(0)}22%{opacity:.95;filter:grayscale(.75)}58%{opacity:.72;filter:grayscale(1)}to{opacity:.28;filter:grayscale(.8)}}@keyframes stuck-needle-jolt{0%,to{transform:translate(0) rotate(0)}35%{transform:translate(-3px) rotate(-.18deg)}70%{transform:translate(3px) rotate(.18deg)}}@keyframes bone-jolt{0%,to{transform:translate(0)}25%{transform:translate(-4px) rotate(-.25deg)}65%{transform:translate(4px) rotate(.25deg)}}@keyframes card-in{0%{opacity:0;transform:translateY(16px) scale(.96)}}@keyframes skeleton-shimmer{to{transform:translate(100%)}}@keyframes loading-pulse{0%,to{opacity:.45;transform:scale(.82)}50%{opacity:1;transform:scale(1.15)}}@media(min-width:700px){body{overflow:auto}.app-shell{min-height:760px;height:100dvh;max-height:920px;padding-block:28px}}@media(max-height:680px){.home-shell{overflow-y:auto}.app-shell{grid-template-rows:auto auto minmax(280px,1fr) auto;gap:8px;padding-top:max(12px,env(safe-area-inset-top))}.patient-status{padding-block:7px}.gesture-guide{bottom:10px}.control-panel{padding-block:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.skeleton-block:after,.loading-pulse{animation:none!important}}
