:root{--paper: #fcfafb;--surface: #ffffff;--stage-start: #1a1a2e;--stage-end: #3a2a46;--ink: #1a1a2e;--text-2: #6e6e7a;--pink: #e85d9e;--pink-deep: #c9357a;--pink-soft: #fbe4f0;--alert: #ff6343;--holo-1: #c9e4fb;--holo-2: #dcd4f9;--holo-3: #f9d3e9;--holo-4: #f5df9c;--line: #ece8ea;--line-strong: #d9d3d8;--line-control: #8e8791;--muted: #e4dee3;--on-muted: #7e7883;--on-solid: #ffffff;--grad-holo: linear-gradient( 135deg, var(--holo-1) 0%, var(--holo-2) 35%, var(--holo-3) 70%, var(--holo-4) 100% );--grad-stage: linear-gradient(180deg, var(--stage-start) 0%, var(--stage-end) 100%);--r-button: 26px;--r-sheet: 24px;--r-card: 16px;--r-chip: 14px;--r-thumb: 12px;--r-polaroid: 8px;--r-row: 12px;--r-segment: 8px;--r-checkbox: 8px;--r-photo: 4px;--gap-tight: 4px;--gap-inline: 8px;--gap-stack: 12px;--gap-section: 16px;--pad-tight: 4px;--pad-card: 12px;--pad-banner: 12px;--pad-module: 16px;--pad-control-x: 16px;--pad-control-y: 12px;--pad-screen: 24px;--pad-sheet-y: 24px;--pad-badge-x: 8px;--pad-badge-y: 4px;--pad-mark-x: 12px;--pad-mark-y: 8px;--h-button: 52px;--font: "Pretendard Variable", Pretendard, "Noto Sans KR", -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;--font-num: "Inter", var(--font);--font-display: "Black Han Sans", var(--font);--scrim: rgba(26, 26, 46, .72);--scrim-strong: rgba(26, 26, 46, .86);--on-stage-2: rgba(255, 255, 255, .7);--stage-line: rgba(255, 255, 255, .18);--panel: var(--scrim);--panel-line: var(--stage-line);--ink-dark: var(--on-solid);--ink-dim: var(--on-stage-2)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--stage-start);color:var(--on-solid);font-family:var(--font);font-size:14px;line-height:1.4;letter-spacing:0;word-break:keep-all;overflow-wrap:break-word;-webkit-font-smoothing:antialiased}#app{position:relative;width:100vw;height:100dvh;overflow:hidden}#stage{position:absolute;inset:0;z-index:0;background:var(--grad-stage)}#stage:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 45%,transparent 45%,rgba(26,26,46,.72) 100%)}#unity-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1;display:block;background:transparent;mix-blend-mode:lighten;pointer-events:none}#shell{position:absolute;inset:0;z-index:2;display:grid;place-items:center;padding:var(--pad-screen);background:transparent}#shell.shell--empty{pointer-events:none}:focus-visible{outline:2px solid var(--pink);outline-offset:2px}#shell:has(.screen--intro){background:var(--grad-stage)}#shell:has(.screen--paper){background:var(--paper)}#shell:has(.screen--calib){padding:0;place-items:stretch;background:transparent}.screen{position:relative;width:min(620px,100%);max-height:100%;overflow-y:auto;padding:var(--pad-sheet-y) var(--pad-screen);border-radius:var(--r-sheet);background:var(--panel);border:1px solid var(--panel-line);box-shadow:0 18px 48px #1a1a2e6b;color:var(--ink-dark);text-align:center;opacity:0;transform:translateY(12px);transition:opacity .22s ease,transform .22s cubic-bezier(.2,.9,.3,1)}.screen.is-in{opacity:1;transform:none}.screen--wide{width:min(920px,100%)}.screen--bare{background:none;border:none;box-shadow:none;overflow:visible}.screen--paper{--panel: var(--surface);--panel-line: var(--line);--ink-dark: var(--ink);--ink-dim: var(--text-2);background:none;border:none;box-shadow:none;padding:var(--pad-screen) 0;color:var(--ink)}.screen--sheet{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sheet);padding:var(--pad-sheet-y) var(--pad-screen);box-shadow:0 10px 30px #1a1a2e12}.screen--report{text-align:left}.sheet-card{position:relative;margin-top:var(--gap-section);padding:var(--pad-sheet-y) var(--pad-module);border-radius:var(--r-card);background:var(--surface);box-shadow:0 6px 18px #1a1a2e14;text-align:left}.title{margin:0;font-family:var(--font);font-weight:900;font-size:clamp(24px,3.2vw,34px);letter-spacing:0;line-height:1.4;color:var(--ink-dark);overflow-wrap:anywhere}.title--display{font-size:clamp(30px,4.4vw,46px)}.title em{font-style:normal;color:var(--pink)}.screen--paper .title em{color:var(--pink)}.title--countdown{color:var(--pink);white-space:nowrap}.logo{display:block;width:min(200px,52%);margin:0 auto var(--gap-section);height:auto}.wordmark,.section-label{display:block;margin:0 0 var(--gap-inline);font-family:var(--font);font-size:12px;font-weight:700;letter-spacing:0;line-height:1.4;color:var(--ink-dim)}.screen--paper .wordmark,.screen--paper .section-label{color:var(--text-2)}.lede{margin:var(--gap-inline) 0 0;color:var(--ink-dim);font-size:clamp(14px,1.6vw,16px);font-weight:400;line-height:1.4}.howto{list-style:none;margin:var(--pad-module) 0 0;padding:0;text-align:left;display:grid;gap:var(--gap-inline)}.howto li{display:flex;align-items:center;gap:var(--gap-stack);padding:var(--pad-card);border-radius:var(--r-row);background:#ffffff0f;border:1px solid var(--panel-line);font-size:clamp(14px,1.6vw,16px);line-height:1.4;color:var(--ink-dark)}.howto b{color:var(--pink);font-weight:700}.screen--paper .howto li{background:var(--surface)}.screen--paper .howto b{color:var(--pink)}.howto .num{flex:0 0 26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--pink);color:var(--on-solid);font-size:12px;font-weight:700;line-height:1}.btn-row{display:flex;gap:var(--gap-stack);margin-top:var(--pad-module);flex-wrap:wrap;justify-content:center}.btn{flex:1 1 200px;min-height:var(--h-button);padding:var(--pad-control-y) var(--pad-control-x);border:1.5px solid var(--panel-line);border-radius:var(--r-button);background:#ffffff14;color:var(--ink-dark);font-family:inherit;font-size:15px;font-weight:700;line-height:1.4;letter-spacing:0;cursor:pointer;transition:transform .12s ease,background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}.btn:hover{background:#ffffff24}.btn:active{transform:translateY(1px)}.btn:disabled{background:var(--muted);border-color:transparent;color:var(--on-muted);cursor:not-allowed;transform:none;box-shadow:none}.btn--primary{background:var(--pink);border-color:transparent;color:var(--on-solid);font-size:16px;font-weight:900;box-shadow:0 6px 16px #e85d9e47}.btn--primary:hover{background:var(--pink-deep)}.btn--ghost{flex:0 0 auto;background:none;border-color:transparent;color:var(--ink-dim);font-weight:700;box-shadow:none}.btn--ghost:hover{color:var(--ink-dark);background:#ffffff1a}.btn__sub{display:block;margin-top:var(--pad-tight);font-size:11px;font-weight:400;opacity:.85}.screen--paper .btn{background:var(--surface);border-color:var(--ink);color:var(--ink)}.screen--paper .btn:hover{background:var(--pink-soft);border-color:var(--ink)}.screen--paper .btn--ghost{background:none;border-color:transparent;color:var(--text-2)}.screen--paper .btn--ghost:hover{background:var(--pink-soft);color:var(--ink)}.screen--paper .btn--primary{background:var(--pink);border-color:transparent;color:var(--on-solid)}.screen--paper .btn--primary:hover{background:var(--pink-deep)}.status{margin-top:var(--pad-module);font-size:13px;color:var(--ink-dim);display:flex;align-items:center;justify-content:center;gap:var(--gap-inline);min-height:18px}.status .dot{width:8px;height:8px;border-radius:50%;background:var(--pink);animation:pulse 1.1s ease-in-out infinite}.status--ready .dot{background:var(--pink);animation:none}.status--error .dot{background:var(--alert);animation:none}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.notice{margin-top:var(--pad-module);padding:var(--pad-banner) var(--pad-module);border-radius:var(--r-card);background:var(--pink-soft);border:1px solid var(--line);font-size:14px;line-height:1.4;color:var(--ink);text-align:left}.notice--warn{background:var(--holo-4);border-color:var(--line);color:var(--ink)}.privacy{margin:var(--pad-module) 0 0;font-size:12px;line-height:1.4;color:var(--ink-dim)}.screen--paper .privacy{color:var(--text-2)}.perm__badge{width:88px;height:88px;margin:0 auto var(--pad-module);display:grid;place-items:center;border-radius:50%;background:var(--pink-soft);color:var(--pink)}.perm__icon{width:42px;height:42px;display:block}.screen--alert{border-color:var(--alert)}.screen--alert .wordmark{color:var(--alert)}.screen--alert .notice{background:var(--surface);border-color:var(--alert);color:var(--ink)}.checklist{list-style:none;margin:var(--pad-module) 0 0;padding:0;display:grid;gap:var(--gap-inline);text-align:left}.checklist li{display:flex;align-items:center;gap:var(--gap-stack);padding:var(--pad-card);border-radius:var(--r-chip);background:var(--muted);border:1px solid var(--line);font-size:14px;color:var(--on-muted);transition:color .2s ease,background .2s ease,border-color .2s ease}.checklist li.is-ok{color:var(--ink);background:var(--pink-soft);border-color:var(--pink)}.checklist .mark{display:grid;place-items:center;width:18px;height:18px;flex:0 0 18px;color:var(--line-strong)}.checklist .mark svg{width:100%;height:100%;display:block}.checklist .mark .mark__on{opacity:0;transition:opacity .16s ease}.checklist .mark .mark__off{opacity:1;transition:opacity .16s ease}.checklist li.is-ok .mark{color:var(--pink)}.checklist li.is-ok .mark .mark__on{opacity:1}.checklist li.is-ok .mark .mark__off{opacity:0}.checklist.checklist--row{display:flex;flex-wrap:wrap;gap:var(--gap-inline);margin:var(--gap-stack) 0 0}.checklist.checklist--row li{padding:var(--pad-badge-y) var(--pad-control-x);border-radius:var(--r-button);font-size:13px}.calib{--calib-state: var(--alert);width:100%;max-width:none;height:100%;padding:0;border:none;border-radius:0;background:none;box-shadow:none;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;text-align:center;pointer-events:none}.calib.is-near{--calib-state: var(--holo-4)}.calib.is-ok{--calib-state: var(--pink)}.calib>*{pointer-events:auto}.calib__guide{grid-column:1;grid-row:2;place-self:center;height:calc(100% - 2 * var(--gap-stack));width:auto;aspect-ratio:5 / 8;max-width:86%;min-height:0;min-width:0;border:3px dashed var(--calib-state);border-radius:var(--r-card);pointer-events:none;transition:border-color .2s ease}.calib__top{position:relative;z-index:1;grid-column:1;grid-row:1;justify-self:center;width:min(720px,100%);padding:max(var(--pad-module),env(safe-area-inset-top)) var(--pad-module) 0;display:grid;justify-items:center;gap:var(--gap-inline)}.calib__banner{display:grid;justify-items:center;gap:var(--gap-tight);width:100%;padding:var(--gap-inline) var(--pad-module);border-radius:var(--r-card);background:var(--scrim-strong);color:var(--on-solid)}.calib__state{margin:0;font-family:var(--font);font-weight:700;font-size:clamp(16px,2vw,24px);line-height:1.4;letter-spacing:0;color:inherit;overflow-wrap:anywhere}.calib__count{display:none;font-family:var(--font-num);font-weight:700;font-size:clamp(64px,11vw,120px);line-height:.98;color:inherit;font-variant-numeric:tabular-nums}.calib.is-ok .calib__count{display:block}.calib__gauge{width:min(420px,92%);height:12px;border-radius:var(--r-button);background:var(--scrim-strong);overflow:hidden}.calib__gauge-fill{height:100%;width:0%;background:var(--calib-state);border-radius:var(--r-button);transition:width .12s linear,background-color .2s ease}.calib__hint{grid-column:1;grid-row:2;place-self:center;z-index:1;margin:0;max-width:min(24ch,78%);padding:var(--pad-mark-y) var(--pad-control-x);border-radius:var(--r-chip);background:var(--scrim-strong);font-size:clamp(15px,1.8vw,18px);font-weight:500;line-height:1.4;color:var(--on-solid)}.calib__bottom{position:relative;z-index:1;grid-column:1;grid-row:3;justify-self:center;align-self:end;width:min(760px,100%);padding:0 var(--pad-module) max(var(--pad-module),env(safe-area-inset-bottom));display:grid;justify-items:center;gap:var(--gap-stack)}.checklist.checklist--parts{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--gap-inline);margin:0;text-align:center}.checklist.checklist--parts li{min-height:48px;padding:var(--pad-mark-y) var(--pad-control-x);gap:var(--gap-inline);border-radius:var(--r-chip);border:2px solid var(--stage-line);background:var(--scrim-strong);font-size:clamp(18px,2.2vw,22px);font-weight:700;color:var(--on-solid)}.checklist.checklist--parts .mark{color:var(--line-strong)}.checklist.checklist--parts li.is-ok{background:var(--pink-soft);border-color:var(--pink);color:var(--ink)}.checklist.checklist--parts li.is-ok .mark{color:var(--pink)}.checklist.checklist--parts .mark{width:24px;height:24px;flex:0 0 24px}.calib__actions{display:flex;gap:var(--gap-stack);justify-content:center;flex-wrap:wrap}.calib__actions .btn{flex:0 0 auto;min-height:48px;padding:var(--pad-control-y) var(--pad-screen);background:var(--scrim-strong);color:var(--on-solid);border-color:var(--stage-line)}.calib__actions .btn--primary{background:var(--pink);border-color:transparent;color:var(--on-solid)}.calib .notice{margin:0;max-width:44ch;font-size:clamp(14px,1.6vw,16px);text-align:center}.finish-flag{position:absolute;top:var(--pad-sheet-y);right:var(--pad-module);width:44px;height:28px;background:conic-gradient(var(--ink) 25%,transparent 0 50%,var(--ink) 0 75%,transparent 0) 0 0 / 11px 11px}.finish-flag:after{content:"FINISH";position:absolute;left:50%;top:100%;transform:translate(-50%);margin-top:var(--pad-tight);font-family:var(--font);font-size:9px;font-weight:700;letter-spacing:0;color:var(--ink);line-height:1.4}.score{display:grid;gap:0}.score__v{font-family:var(--font);font-weight:900;font-size:clamp(46px,7vw,88px);line-height:1.1;letter-spacing:0;color:var(--ink);font-variant-numeric:tabular-nums}.score__k{font-size:12px;font-weight:700;line-height:1.4;color:var(--text-2)}.metrics{list-style:none;margin:var(--pad-module) 0 0;padding:0;display:grid;gap:var(--gap-stack)}.metric{display:flex;align-items:center;gap:var(--gap-stack)}.metric__k{flex:0 0 auto;min-width:84px;font-size:clamp(14px,1.6vw,15px);font-weight:700;line-height:1.4;color:var(--ink)}.metric__track{position:relative;flex:1 1 auto;height:10px;border-radius:var(--r-button);background:var(--line-strong)}.metric__knob{position:absolute;top:50%;left:0;transform:translate(-50%,-50%);width:34px;height:18px;border-radius:var(--r-button);background:var(--grad-holo);box-shadow:0 2px 6px #1a1a2e2e}.metric__spacer{flex:1 1 auto}.metric__v{flex:0 0 auto;min-width:48px;text-align:right;font-family:var(--font-num);font-size:clamp(15px,2vw,22px);font-weight:700;line-height:1.4;color:var(--ink);font-variant-numeric:tabular-nums}.bubble-row{display:flex;align-items:flex-start;gap:var(--gap-stack);margin-top:var(--gap-section);text-align:left}.bubble__mascot{flex:0 0 auto;width:60px;height:auto;margin-top:var(--pad-tight)}.bubble{flex:1 1 auto;min-width:0;margin:0;padding:var(--pad-card) var(--pad-module);border-radius:var(--r-card);background:var(--surface);border:1px solid var(--line);list-style:none;display:grid;gap:var(--gap-inline)}.bubble li,.bubble p{margin:0;font-size:clamp(14px,1.6vw,15px);font-weight:400;line-height:1.4;color:var(--text-2);overflow-wrap:anywhere}.bubble b{color:var(--ink);font-weight:700}.shot-row{display:flex;gap:var(--gap-section);margin-top:var(--gap-stack);flex-wrap:wrap;justify-content:center}.shot-row .shot-card{flex:0 1 240px;min-width:0}.shot-row .shot-card:nth-child(odd){transform:rotate(-1.6deg)}.shot-row .shot-card:nth-child(2n){transform:rotate(1.4deg)}.shot-row .shot-card{transition:transform .16s ease}.shot-row .shot-card:hover{transform:rotate(0) scale(1.02)}.shot-row .shot-card__actions{padding:var(--gap-inline) var(--gap-stack)}.shot-strip__label{margin:var(--gap-section) 0 0;font-size:12px;font-weight:700;line-height:1.4;color:var(--text-2)}.shot-strip{display:flex;gap:var(--gap-stack);margin-top:var(--gap-inline);padding:var(--pad-tight) var(--pad-tight) var(--pad-card);overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.shot-strip__thumb{flex:0 0 auto;width:150px;aspect-ratio:3 / 4;object-fit:cover;box-sizing:content-box;border:8px solid #FFFFFF;border-bottom-width:26px;border-radius:var(--r-polaroid);cursor:zoom-in;scroll-snap-align:center;box-shadow:0 10px 24px #1a1a2e2e;transition:transform .16s ease}.shot-strip__thumb:first-child{margin-left:auto}.shot-strip__thumb:last-child{margin-right:auto}.shot-strip__thumb:nth-child(odd){transform:rotate(-1.2deg)}.shot-strip__thumb:nth-child(2n){transform:rotate(1.2deg)}.shot-strip__thumb:hover{transform:rotate(0) scale(1.04)}.shot-lightbox{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;gap:var(--gap-stack);padding:var(--pad-screen);background:var(--scrim-strong)}.shot-lightbox__body{display:flex;flex-direction:column;align-items:center;gap:var(--gap-stack);min-width:0}.shot-lightbox__img{max-width:min(88vw,560px);max-height:72vh;border-radius:var(--r-polaroid);box-shadow:0 20px 60px #1a1a2e80}.shot-lightbox__cap{margin:0;color:var(--on-solid);font-size:14px;text-align:center}.shot-lightbox__count{font-family:var(--font-num);color:var(--on-stage-2);font-size:14px;align-self:center}.shot-lightbox__nav{font-size:26px;line-height:1;padding:var(--gap-inline) var(--gap-section);color:var(--on-solid)}.loadbar{width:100%;height:8px;border-radius:var(--r-button);overflow:hidden;margin-top:var(--pad-module);background:var(--line-strong)}.loadbar__fill{height:100%;width:0%;background:var(--pink);transition:width .18s ease}.devhud{position:absolute;top:10px;left:10px;z-index:3;padding:var(--pad-tight) var(--gap-inline);border-radius:var(--r-polaroid);background:var(--scrim-strong);border:1px solid var(--stage-line);font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--on-stage-2);pointer-events:none;white-space:pre}@media(max-width:520px){#shell{padding:var(--pad-module)}.screen{padding:var(--pad-module);border-radius:var(--r-card)}.screen--paper{padding:var(--pad-module) 0}.screen--sheet{padding:var(--pad-sheet-y) var(--pad-module)}.btn{flex:1 1 100%}.finish-flag{display:none}.calib__guide{border-width:2px}.calib__banner{padding:var(--gap-inline) var(--pad-module)}.checklist.checklist--parts{gap:var(--gap-inline)}.checklist.checklist--parts li{padding:var(--gap-inline) var(--pad-card)}.metric__k{min-width:68px}}@media(prefers-reduced-motion:reduce){.screen{transform:none;transition:opacity .16s ease}.status .dot{animation:none;opacity:1}.btn:hover,.btn:active,.shot-row .shot-card:hover,.shot-strip__thumb:hover{transform:none}.calib__gauge-fill{transition:none}}
