: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:flex;align-items:flex-end;justify-content:space-between;padding:4px 2px}.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}.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{margin-top:auto;padding:18px;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)}.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)}.start-treatment{width:100%;min-height:58px;margin-top:12px;padding:0 19px;display:flex;align-items:center;justify-content:space-between;border:0;border-radius:18px;color:#090b10;background:linear-gradient(135deg,#ff7797,#ff365f);box-shadow:0 16px 36px #ff365f38;font:inherit;cursor:pointer}.start-treatment span{font-size:15px;font-weight:900}.start-treatment small{color:#090b109e;font-size:9px;font-weight:700}.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}.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}.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}.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;pointer-events:none}.result-blood .screen-effect{background:radial-gradient(circle at 50% 46%,transparent 34%,rgba(141,0,32,.16) 58%,rgba(91,0,25,.52) 100%);animation:blood-pulse 2.4s cubic-bezier(.16,.78,.3,1) both}.result-nerve .screen-effect{background:linear-gradient(115deg,transparent 42%,rgba(126,171,255,.34) 48%,transparent 54%);mix-blend-mode:screen;animation:nerve-flash .13s steps(2) 5}.result-bruise .screen-effect{background:radial-gradient(circle at 50% 48%,transparent 30%,rgba(91,47,132,.34));animation:bruise-vignette 2.4s ease-out both}.result-bone .scene-card{animation:bone-jolt .26s ease-out 2}.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;overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.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}.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 span{color:#dedbe0;font-size:11px;line-height:1.55}.knowledge-card small{color:#898b99;font-size:10px;line-height:1.5}.distance-row,.event-zone-row{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)}.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}.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}.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 insertion-pop{0%{opacity:0;transform:translate(-50%,-6px) scale(.94)}}@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 nerve-flash{0%,to{opacity:0}50%{opacity:1}}@keyframes bruise-vignette{0%{opacity:0}to{opacity:1}}@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)}}@media(min-width:700px){body{overflow:auto}.app-shell{min-height:760px;height:100dvh;max-height:920px;padding-block:28px}}@media(max-height:680px){.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}}
