@font-face{font-family:Stylish;src:url(/fonts/Stylish-Regular.ttf) format("truetype");font-display:swap}:root{font-family:Segoe UI,Malgun Gothic,sans-serif;color:#244d4c;background:#89b5c3;font-synthesis:none;--paper:#fff7e7;--ink:#244d4c;--muted:#647e77;--teal:#285f59;--line:#dacfb5}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;transition:background .2s,transform .2s}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible{outline:3px solid #f4bc56;outline-offset:5px}button:hover:not(:disabled){transform:translateY(-2px)}[hidden]{display:none!important}#scene,#scene canvas,.vignette{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.vignette{pointer-events:none;background:linear-gradient(90deg,rgba(27,52,48,.25),transparent 60%),linear-gradient(0deg,rgba(22,49,42,.22),transparent 30%)}body[data-phase=demo] .vignette{background:linear-gradient(90deg,rgba(255,246,224,.95),rgba(255,246,224,.8) 27%,rgba(255,246,224,.1) 57%,transparent 76%)}header{position:fixed;left:4vw;right:3vw;top:32px;display:flex;justify-content:space-between;align-items:center;z-index:5;pointer-events:none}header>*{pointer-events:auto}#brand{display:flex;align-items:center;gap:13px;text-decoration:none;color:var(--ink);font-size:10px;line-height:1.5;letter-spacing:3px;font-weight:600}#brand strong{font-size:12px;letter-spacing:2px}.bird-mark{font:64px Georgia;line-height:40px;transform:rotate(-18deg)}#brand.compact{color:var(--paper)}nav{display:flex;gap:10px}.icon-button{background:#fff6e6e8;border:1px solid #ffffff60;border-radius:50%;width:42px;height:42px;color:var(--ink);font-size:22px;box-shadow:0 2px 12px #193d3910}#sound[aria-pressed=true]{background:#244d4c;color:var(--paper)}#landing{position:fixed;left:7vw;top:50%;transform:translateY(-46%);width:400px;max-width:85vw}.eyebrow{font-size:10px;letter-spacing:2.4px;font-weight:700;display:flex;align-items:center;gap:10px;color:#5b796a}.eyebrow>span{width:24px;height:1px;background:currentColor}h1{font-family:Stylish,Georgia,serif;font-weight:400;font-size:72px;line-height:1.16;letter-spacing:-3px;margin:24px 0 22px;color:#244d4c}p{line-height:1.8}.intro{font-size:15px;color:#5b7164;margin:0 0 28px}.course-selector{display:flex;gap:12px;margin-bottom:18px}.course-selector button{border:0;border-bottom:2px solid transparent;background:transparent;color:#6c7f71;padding:10px 0;margin-right:15px;font-size:13px;font-weight:600}.course-selector button span{font-size:10px;margin-left:8px;font-weight:400}.course-selector button[aria-pressed=true]{color:var(--ink);border-color:var(--ink)}.primary{display:flex;align-items:center;justify-content:space-between;background:var(--teal);color:#fff8e6;border:1px solid #2d635e;border-radius:3px;padding:17px 23px;min-height:56px;width:100%;font-size:15px;font-weight:600;letter-spacing:.5px;box-shadow:0 5px 18px #244d4c12}.primary:hover{background:#1c4d48}.primary span:last-child{font-size:22px;font-weight:400}.device-note{font-size:10px;letter-spacing:1px;color:#6e8176;display:flex;gap:7px;align-items:center;margin:12px 0 22px}.status-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#7c9982}.text-button{padding:8px 0;border:0;background:transparent;color:var(--ink);font-size:12px}.text-button span{margin-left:15px}.small-button{padding:10px 16px;border:1px solid var(--line);border-radius:3px;background:#fff9ec;color:var(--ink)}footer{position:fixed;bottom:31px;left:4vw;right:3vw;display:flex;justify-content:space-between;color:var(--ink);font-size:10px;letter-spacing:2px}footer span:last-child{color:#fff7e7;letter-spacing:1px}.paper-panel{position:fixed;width:440px;max-width:calc(100vw - 32px);top:50%;left:50%;transform:translate(-50%,-50%);padding:30px 34px;background:#fff7e9f5;border:1px solid #ffffff88;box-shadow:0 20px 80px #173d4930;border-radius:7px;max-height:calc(100dvh - 150px);overflow:auto;z-index:6}h2{font-family:Stylish,Georgia,serif;font-size:35px;line-height:1.25;font-weight:400;letter-spacing:-1px;margin:16px 0 12px}.paper-panel>p{font-size:12px;color:var(--muted)}.paper-panel .privacy{font-size:9px;margin-top:18px;margin-bottom:4px}.camera-frame{position:relative;width:100%;aspect-ratio:4/3;background:#dce1d4;border-radius:4px;overflow:hidden}.camera-frame canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform:scaleX(-1)}#depth-label{position:absolute;bottom:10px;left:10px;color:#fff;font-size:11px;background:#1c4447bb;border-radius:20px;padding:5px 10px}.progress-track{height:3px;background:#dfd9c9;margin-top:14px;border-radius:3px;overflow:hidden}#calibration-progress{height:100%;background:#397a67;width:0}#pose-status{font-size:11px;line-height:1.6;min-height:32px}.practice-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.practice-grid span{border:1px solid #dbd3be;border-radius:4px;padding:9px;text-align:center;font-size:12px}.practice-grid span.done{background:#d2e3cf;border-color:#94b4a0}.stats{position:fixed;display:flex;gap:40px;top:28px;left:50%;transform:translate(-50%);background:#fff8e9ed;border-radius:5px;padding:16px 32px;box-shadow:0 3px 25px #163d4b15}.stats div{min-width:75px}.stats span{display:block;font-size:9px;color:var(--muted);letter-spacing:1px;margin-bottom:7px}.stats strong{font-size:23px;line-height:1;font-weight:500;font-variant-numeric:tabular-nums}.route-track{position:fixed;top:111px;left:50%;transform:translate(-50%);width:360px;max-width:50vw;height:2px;background:#ffffff40}#route-progress{height:100%;background:#ffedbf;transition:width .3s}.ring-guide{position:fixed;bottom:35px;left:50%;transform:translate(-50%);text-align:center;color:#fff7e7;text-shadow:0 2px 10px #183b3d}.ring-guide>span{font-size:10px;letter-spacing:3px}.ring-guide>div{display:flex;gap:12px;align-items:center;margin-top:8px}.ring-guide strong{font-size:14px;font-weight:500;white-space:nowrap}#direction{display:inline-block;font-size:25px;font-style:normal;transform-origin:center}#combo{position:fixed;top:135px;left:50%;transform:translate(-50%);font-size:13px;letter-spacing:3px;color:#fff7df;text-shadow:0 2px 10px #214c42}#countdown{position:fixed;left:50%;top:44%;transform:translate(-50%,-50%);font:120px Georgia;color:#fff7e7;text-shadow:0 8px 50px #254e4f55;pointer-events:none}#notice{position:fixed;left:50%;top:25%;transform:translate(-50%);border-radius:30px;padding:12px 22px;background:#fff6dfee;box-shadow:0 4px 20px #234d4922;color:var(--ink);font-size:13px;text-align:center;max-width:90vw;z-index:7}.result-panel{text-align:center}.result-panel .eyebrow{justify-content:center}.total-score{margin:20px 0}.total-score strong{display:block;font:64px Georgia;color:var(--teal)}.total-score span{font-size:9px;letter-spacing:3px}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px 10px;margin:25px 0 30px}.result-grid dt{font-size:10px;color:var(--muted);margin-bottom:6px}.result-grid dd{margin:0;font-size:18px}.result-panel .text-button{margin-top:13px}dialog{border:1px solid #fff8;border-radius:7px;max-width:min(470px,calc(100vw - 32px));max-height:85dvh;background:var(--paper);padding:35px;color:var(--ink);box-shadow:0 30px 100px #183b4244}dialog::backdrop{background:#14393955;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog .icon-button{position:absolute;right:10px;top:10px;width:30px;height:30px;background:none;border:0}dialog p{font-size:13px}dialog .credits{font-size:10px;color:var(--muted);border-top:1px solid var(--line);padding-top:15px}dialog a{color:inherit}.loading{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#f5eedc;color:var(--ink);z-index:10}.loading p{font-size:12px;letter-spacing:1px}.loading-bird{font:80px Georgia;animation:float 1.8s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0) rotate(-10deg)}50%{transform:translateY(-14px) rotate(10deg)}}@media(max-width:700px){header{top:20px;left:22px;right:20px}#brand{font-size:8px;letter-spacing:2px;gap:7px}#brand strong{font-size:10px}.bird-mark{font-size:46px}.icon-button{width:35px;height:35px;font-size:19px}nav{gap:7px}#landing{left:8vw;top:48%;width:350px;max-width:84vw}h1{font-size:58px}.intro{font-size:13px}.eyebrow{font-size:8px;letter-spacing:1.8px}body[data-phase=demo] .vignette{background:linear-gradient(90deg,#fff6e0ed,#fff6e0a0 65%,#fff6e030)}footer{bottom:22px;left:8vw;font-size:8px}footer span:last-child{display:none}.stats{top:80px;padding:13px 20px;gap:24px;width:calc(100vw - 44px);justify-content:space-between}.stats div{min-width:50px}.stats strong{font-size:20px}.route-track{top:155px;max-width:80vw}#combo{top:172px}.paper-panel{padding:23px;max-height:calc(100dvh - 130px);top:54%}h2{font-size:30px}#notice{top:26%;font-size:12px;width:max-content;max-width:85vw}.ring-guide{bottom:26px}}@media(max-height:650px)and (min-width:701px){#landing{top:53%;width:330px}h1{font-size:48px;margin:12px 0}.intro{font-size:12px;margin-bottom:10px}.course-selector{margin-bottom:8px}.device-note{margin-bottom:7px}.primary{padding:12px 20px;min-height:48px}header{top:20px}footer{bottom:18px}.paper-panel{max-height:calc(100dvh - 80px)}}@media(max-height:500px){#landing{top:56%;width:310px}h1{font-size:38px;margin:8px 0}.intro{font-size:11px;line-height:1.5;margin-bottom:4px}.course-selector{margin:0}.course-selector button{padding:7px 0}.device-note{margin:5px 0}.primary{min-height:40px;padding:9px 16px;font-size:12px}footer{display:none}header{top:12px}#landing .eyebrow{font-size:7px}.paper-panel{max-height:calc(100dvh - 52px)}}body{--flight-top:0px;--monitor-width:clamp(152px,22vw,240px)}#scene,.vignette{top:0;bottom:0;height:100dvh}#scene canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}#camera-panel{position:fixed;z-index:4;width:var(--monitor-width);padding:3px;background:#fff7e9e8;border:1px solid #ffffffb0;box-shadow:0 10px 32px #173d4933,0 2px 6px #173d491a;border-radius:12px;overflow:hidden}#camera-panel .camera-frame{width:100%;aspect-ratio:16/9;background:#1d383d;border-radius:8px}#camera-panel .camera-frame canvas{object-fit:contain}#auto-start-hint{text-align:center;font-size:12px;color:var(--teal);padding:10px;background:#dcebd8;border-radius:4px}#ring-pointer{position:fixed;width:46px;height:46px;transform:translate(-50%,-100%);pointer-events:none;z-index:3;border-radius:50%;background:#244d4cdb;border:1px solid #fff4c8b0;box-shadow:0 3px 16px #173d4950}#ring-pointer svg{display:block;width:100%;height:100%;fill:none;stroke:#fff1ba;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}body[data-camera-visible=true] #brand{visibility:hidden}body[data-camera-visible=true] header{top:10px;right:12px}body[data-camera-visible=true] nav{gap:6px}body[data-camera-visible=true] .icon-button{width:29px;height:29px;font-size:17px}@media(orientation:portrait){body{--monitor-width:clamp(172px,48vw,420px)}body[data-camera-visible=true]{--flight-top:calc(var(--monitor-width)*9/16 + 22px)}#camera-panel{top:12px;left:12px}body[data-camera-visible=true] header{top:20px;right:22px}body[data-camera-visible=true] .stats{top:calc(var(--flight-top) + 10px);padding:10px 16px;gap:12px;width:calc(100vw - 32px)}body[data-camera-visible=true] .stats strong{font-size:20px}body[data-camera-visible=true] .stats span{margin-bottom:5px;font-size:8px}body[data-camera-visible=true] .route-track{top:calc(var(--flight-top) + 69px);width:calc(100vw - 48px);max-width:none}body[data-camera-visible=true] #combo{top:calc(var(--flight-top) + 80px);font-size:10px}body[data-camera-visible=true] #countdown{top:calc(var(--flight-top) + (100dvh - var(--flight-top))*.42)}body[data-camera-visible=true] #notice{top:calc(var(--flight-top) + 104px);padding:8px 14px;font-size:11px}body[data-camera-visible=true] #setup{top:calc(var(--flight-top) + (100dvh - var(--flight-top))*.5);max-height:calc(100dvh - var(--flight-top) - 28px)}}@media(orientation:landscape){#camera-panel{top:56px;right:14px}body[data-camera-visible=true] #setup{left:calc((100vw - var(--monitor-width) - 28px)/2);max-width:calc(100vw - var(--monitor-width) - 60px)}}@media(orientation:landscape)and (max-width:1000px){body[data-camera-visible=true] .stats{top:12px;left:16px;right:calc(var(--monitor-width) + 28px);width:auto;transform:none;gap:16px;padding:10px 16px}body[data-camera-visible=true] .stats strong{font-size:18px}body[data-camera-visible=true] .route-track{top:74px;left:16px;right:calc(var(--monitor-width) + 28px);width:auto;max-width:none;transform:none}body[data-camera-visible=true] #combo{top:84px;left:calc((100vw - var(--monitor-width) - 12px)/2);font-size:10px}body[data-camera-visible=true] #notice{top:110px;left:calc((100vw - var(--monitor-width) - 12px)/2);font-size:10px;padding:7px 12px}}body[data-guided=true] .vignette{z-index:2;background:#eef2e4d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}body[data-guided=true] #notice{top:auto;bottom:18px;font-size:12px}#pose-guide{position:fixed;top:66px;right:24px;bottom:20px;left:24px;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:safe center;gap:18px;text-align:center;overflow:auto}.guide-heading{flex:none;width:100%}.guide-kicker{display:flex;justify-content:center;align-items:center;gap:14px;color:#6b8175;font-size:11px;font-weight:600;letter-spacing:2px}#guide-number{color:#2c695d;background:#dae5d7;border-radius:20px;padding:5px 12px;font-variant-numeric:tabular-nums;letter-spacing:1px}#guide-title{font-size:clamp(30px,3.8vw,54px);margin:12px 0 6px;line-height:1.2;letter-spacing:-1.5px}#guide-description{font-size:14px;line-height:1.6;color:#607b70;margin:0}#guide-camera-slot{flex:none;width:min(100%,1040px,calc((100dvh - 400px)*16/9))}#pose-guide #camera-panel{position:relative;inset:auto;width:100%;padding:6px;border-radius:22px;border:1px solid #ffffffd9;background:#fff8ec;box-shadow:0 18px 65px #244d4c2b;transition:border-color .25s,box-shadow .25s}#pose-guide .camera-frame{border-radius:16px}#pose-guide[data-success=true] #camera-panel{border-color:#5fa98c;box-shadow:0 0 0 3px #8fc6a977,0 18px 65px #244d4c2b}#camera-preview{z-index:0}#skeleton{z-index:2}#pose-silhouette{position:absolute;top:4%;right:5%;bottom:0;left:5%;z-index:1;opacity:.18;pointer-events:none;transform-origin:50% 95%;transition:transform .45s}#pose-silhouette img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;pointer-events:none}.ghost-raised,.ghost-fold{visibility:hidden}#pose-silhouette[data-step=left]{transform:rotate(-16deg) scale(.88)}#pose-silhouette[data-step=right]{transform:rotate(16deg) scale(.88)}#pose-silhouette[data-step=down] .ghost-spread{visibility:hidden}#pose-silhouette[data-step=down] .ghost-fold{visibility:visible}#pose-silhouette[data-step=up] .ghost-spread{animation:guide-flap-low 1.6s ease-in-out infinite}#pose-silhouette[data-step=up] .ghost-raised{visibility:visible;animation:guide-flap-high 1.6s ease-in-out infinite}@keyframes guide-flap-low{0%,15%,to{opacity:1}45%,65%{opacity:0}}@keyframes guide-flap-high{0%,15%,to{opacity:0}45%,65%{opacity:1}}#guide-check{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:grid;place-items:center;background:#1f695a12;pointer-events:none}#guide-check svg{width:72px;height:72px;padding:10px;background:#edf8e7ed;border-radius:50%;box-shadow:0 5px 30px #174a4440;fill:none;stroke:#347b65;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;animation:guide-check-in .3s ease-out both}@keyframes guide-check-in{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.guide-footer{flex:none;width:min(100%,600px)}#pose-guide .progress-track{height:4px;margin:0 auto;width:min(100%,360px);background:#cddbc9}#pose-guide #pose-status{font-size:13px;min-height:22px;margin:10px 0 12px;line-height:1.5}.guide-steps{display:flex;gap:6px;padding:0;list-style:none;margin:0 auto;width:min(100%,480px)}.guide-steps li{flex:1;border-top:3px solid #c8d4c3;padding-top:7px;font-size:11px;color:#829184}.guide-steps li.current{color:#2c6659;font-weight:700;border-color:#71a18a}.guide-steps li.done{color:#34715c;border-color:#4f9276}.guide-note{font-size:10px;color:#7b8b7c;margin:12px 0 0;line-height:1.5}#guide-back{font-size:11px;color:#6b8175;padding:6px 0}@media(orientation:portrait){#pose-guide{top:70px;right:16px;bottom:20px;left:16px;gap:22px}#guide-camera-slot{width:min(100%,1040px)}#guide-description{font-size:12px;max-width:90%;margin:auto}#pose-guide #camera-panel{padding:4px;border-radius:16px}#pose-guide .camera-frame{border-radius:11px}}@media(max-height:650px){#pose-guide{top:52px;right:16px;bottom:10px;left:16px;gap:10px}#guide-title{font-size:32px;margin:7px 0 4px}#guide-description{font-size:12px}.guide-kicker{font-size:9px;gap:10px}#guide-number{padding:3px 9px}#guide-camera-slot{width:min(100%,calc((100dvh - 290px)*16/9))}#pose-guide #pose-status{font-size:11px;margin:7px 0;min-height:17px}.guide-steps li{font-size:10px;padding-top:5px}.guide-note{margin-top:6px;font-size:9px}}@media(orientation:landscape)and (max-height:500px){#pose-guide{top:44px;right:16px;bottom:8px;left:16px;gap:7px}#guide-title{font-size:27px;margin:4px 0}#guide-description{font-size:11px}.guide-kicker{display:none}#guide-camera-slot{width:min(100%,calc((100dvh - 205px)*16/9))}#pose-guide #camera-panel{padding:3px;border-radius:12px}#pose-guide .camera-frame{border-radius:8px}.guide-note,#guide-back{display:none}.guide-steps{width:330px;max-width:100%}}
