:root{font-family:Arial,Helvetica,sans-serif;color-scheme:dark;--ink:#f0e8db;--muted:#b4a391;--accent:#edb476;--glass:#16120ec9}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#110e0b;color:var(--ink)}body.snow{--muted:#a0b2c4;--accent:#c1e4ec;--glass:#0d1822cf;background:#0c151e}button{font:inherit;color:inherit;border:0;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:color .18s,background .18s,opacity .18s}button:disabled{opacity:.23;cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button:hover:not(:disabled){background:#ffffff0d}[hidden]{display:none!important}#stage{position:fixed;inset:0}#scene{width:100%;height:100%;display:block;pointer-events:none}header{position:fixed;z-index:5;left:30px;right:30px;top:max(23px,env(safe-area-inset-top));display:flex;align-items:center;justify-content:space-between;gap:20px;pointer-events:none}header>*,header button{pointer-events:auto}.seasons{display:flex;align-items:center;background:var(--glass);border:1px solid #ffffff10;border-radius:40px;padding:4px;backdrop-filter:blur(18px);gap:2px}.seasons button{font-size:12px;padding:11px 19px;border-radius:30px;color:var(--muted)}.seasons button[aria-pressed=true]{color:var(--ink);background:#ffffff10}.colors{display:flex;align-items:center;gap:5px;position:absolute;right:64px;background:var(--glass);backdrop-filter:blur(18px);padding:5px 9px;border:1px solid #ffffff10;border-radius:40px}.colors button{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:1px solid transparent}.colors button[aria-pressed=true]{border-color:#e9e0d9a6}.colors i{display:block;width:20px;height:20px;border-radius:50%;box-shadow:inset -3px -3px 5px #0003}.colors [data-color='0'] i{background:#d2752a}.colors [data-color='1'] i{background:#d8cbaa}.colors [data-color='2'] i{background:#65734c}.snow .colors [data-color='0'] i{background:#e0edf6}.snow .colors [data-color='1'] i{background:#e7dce5}.snow .colors [data-color='2'] i{background:#c8dfd3}.round{width:42px;height:42px;border-radius:50%;font-size:25px;display:grid;place-items:center;flex-shrink:0}.quiet{font-size:15px;background:var(--glass);border:1px solid #ffffff10}.bottom{position:fixed;z-index:5;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:calc(100% - 24px);display:flex;align-items:center;flex-direction:column;gap:14px}#status{font-size:11px;letter-spacing:.1px;color:var(--muted);margin:0;text-align:center;text-shadow:0 2px 8px #000;min-height:14px;pointer-events:none}.dock{display:flex;align-items:center;gap:6px;border:1px solid #ffffff16;background:var(--glass);box-shadow:0 8px 35px #0004;backdrop-filter:blur(22px);border-radius:50px;padding:7px}.separator{width:1px;height:20px;background:#ffffff15;margin:0 5px}.camera{display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 19px;border-radius:30px;font-size:12px;white-space:nowrap;background:var(--accent);color:#21160e;font-weight:600}.camera:hover:not(:disabled){background:#f2cb9d}.snow .camera{color:#142733}.snow .camera:hover:not(:disabled){background:#d6e9ed}.camera-icon{width:15px;height:11px;border:1.5px solid currentColor;border-radius:3px;position:relative}.camera-icon:before{content:'';width:5px;height:5px;border:1px solid currentColor;border-radius:50%;position:absolute;left:3px;top:1.5px}.camera-icon:after{content:'';position:absolute;top:-4px;left:3px;width:6px;height:3px;border:1px solid currentColor;border-bottom:0;border-radius:2px 2px 0 0}.camera.active{background:#ffffff0c;color:var(--ink);font-weight:400}.camera.active .camera-icon:after{background:#a7bc7f;border-color:#a7bc7f}.done{font-size:12px;padding:13px 17px;border-radius:30px;white-space:nowrap}.done span{margin-left:9px;color:var(--accent)}#hand-cursor{position:fixed;pointer-events:none;z-index:20;width:30px;height:30px;border:1px solid #f4cf91;border-radius:50%;transform:translate(-50%,-50%);display:grid;place-items:center;box-shadow:0 0 28px #e8b8782a;background:#160d0920}#hand-cursor i{width:4px;height:4px;background:#fff0d4;border-radius:50%}#hand-cursor.pinched{background:#edc48a;box-shadow:0 0 28px #e8b87877}#hand-cursor.pinched i{background:#fff}#camera-preview{position:fixed;right:28px;top:88px;width:108px;height:81px;border-radius:12px;overflow:hidden;border:1px solid #ffffff25;background:#000;z-index:4;box-shadow:0 10px 25px #0004}#camera-preview video,#camera-preview canvas{position:absolute;inset:0;width:100%;height:100%;transform:scaleX(-1);object-fit:fill}#camera-led{position:absolute;top:8px;left:8px;width:5px;height:5px;border-radius:50%;background:#b8d492;box-shadow:0 0 9px #b8d49299}dialog{position:fixed;border:1px solid #ffffff20;border-radius:22px;padding:40px;width:min(390px,calc(100% - 32px));background:#171411ed;color:var(--ink);box-shadow:0 30px 150px #0009;text-align:center;backdrop-filter:blur(24px)}.snow dialog{background:#111f2bee}dialog::backdrop{background:#06040385;backdrop-filter:blur(14px)}dialog .close{position:absolute;top:9px;right:9px;color:var(--muted);font-size:22px}h1{font:32px/1.2 Georgia,serif;font-weight:400;margin:17px 0 26px;letter-spacing:-.8px}dialog p{font-size:14px;line-height:1.9;margin:20px 0}dialog .muted{font-size:12px;color:var(--muted);line-height:1.9}dialog small{display:block;font-size:10px;color:var(--muted);margin-top:22px}.gesture-pic{font-size:40px;color:var(--accent);height:60px;display:grid;place-items:center}.pill,.outline{display:block;width:100%;border-radius:30px;font-size:12px;padding:15px 20px;min-height:46px}.pill{color:#27180c;background:var(--accent);font-weight:600}.pill:hover:not(:disabled){background:#f6cea2}.outline{border:1px solid #ffffff25}.gift-buttons{display:flex;flex-direction:column;gap:12px}.text-button{font-size:11px;color:var(--muted);padding:10px}.muted#local-note{font-size:10px;margin-bottom:0}input{width:100%;font-size:11px;color:var(--ink);background:#ffffff08;border:1px solid #ffffff25;padding:12px;border-radius:6px;margin-top:12px}#toast{position:fixed;bottom:150px;left:50%;transform:translateX(-50%);z-index:40;font-size:12px;line-height:1.6;max-width:calc(100% - 40px);width:max-content;background:#211b15ee;border:1px solid #ffffff1f;border-radius:12px;padding:13px 20px;box-shadow:0 10px 40px #0008;text-align:center}.receiving #editor-header,.receiving #editor-bottom{display:none}
@media(max-width:650px){header{left:14px;right:14px;top:max(17px,env(safe-area-inset-top));gap:10px}.seasons button{padding:10px 12px;font-size:11px}.colors{left:auto;right:42px;transform:none;gap:2px;padding:4px}.colors button{width:29px;height:29px}.colors i{width:17px;height:17px}.quiet{height:32px;width:32px;font-size:13px}.bottom{bottom:max(20px,env(safe-area-inset-bottom));gap:15px;width:max-content}.dock{padding:6px;gap:2px}.dock .round{width:35px;height:37px;font-size:22px}.camera{font-size:11px;padding:13px 15px;gap:8px}.separator{margin:0 4px}.done{font-size:11px;padding:12px}.done span{margin-left:4px}#status{font-size:10px}#camera-preview{right:16px;top:75px;width:80px;height:60px;border-radius:8px}dialog{padding:32px 25px}h1{font-size:29px}#toast{bottom:130px;font-size:11px}}
@media(max-width:360px){header{left:10px;right:10px}.seasons button{padding:9px 9px}.colors{right:37px}.colors button{width:26px;height:27px}.dock .round{width:30px}.camera{padding:12px}.done{padding:12px 9px}}
@media(prefers-reduced-motion:reduce){button{transition:none}}
/* The Snow camera is the mirrored scene background, not a thumbnail. */
#stage{z-index:1;pointer-events:none}
body.camera-live #camera-preview{position:fixed;inset:0;width:100%;height:100%;border:0;border-radius:0;box-shadow:none;z-index:0;background:#0b131a}
body.camera-live #camera-preview video{object-fit:cover;transform:scaleX(-1)}
body.camera-live #landmarks,body.camera-live #camera-led{display:none}
body.camera-live #status{color:#fff;text-shadow:0 1px 8px #000,0 1px 3px #000}
body.camera-live header .seasons,body.camera-live header .colors,body.camera-live header .quiet{background:#101b25a8}

#fresh-snow{position:absolute;right:211px;font-size:24px}.snow #hand-cursor{border-color:#e3f3ff;background:#cce5f222;width:38px;height:38px}.snow #hand-cursor i{background:#fff}.snow #hand-cursor.sculpting{background:#e1f0fa66}#hand-cursor.carving{width:14px;height:36px;border-radius:60% 20% 15% 15%;background:linear-gradient(90deg,#a8aeb0,#f9ffff 50%,#788587);border:1px solid #d2ded9;transform:translate(-50%,-85%) rotate(25deg)}#hand-cursor.carving i{display:none}#hand-cursor.dwelling{background:conic-gradient(#e9e0cb calc(var(--progress,0)*1turn),#ffffff0a 0)}#hand-ready{position:fixed;z-index:8;left:50%;top:24%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:10px;color:#fff4df;font-size:13px;pointer-events:none;text-shadow:0 1px 10px #000}.ready-hand{font-size:55px;animation:showhand 2s infinite}#help-dialog{width:min(450px,calc(100% - 30px));padding:30px 36px}.guide-dots{display:flex;justify-content:center;gap:7px;margin:4px 0 20px}.guide-dots i{width:5px;height:5px;border-radius:50%;background:#ffffff26}.guide-dots i.active{background:var(--accent)}.gesture-stage{height:170px;position:relative;display:flex;align-items:center;justify-content:center;color:var(--accent);margin:0 0 12px}.demo-hand{width:125px;height:150px;overflow:visible;filter:drop-shadow(0 9px 20px #0004)}.demo-hand.point .middle{d:path('M72 91 L72 84 Q72 73 81 73 Q90 73 90 84 L90 91')}.demo-hand.point .ring{d:path('M90 94 L90 89 Q90 78 99 78 Q108 78 108 89 L108 98')}.demo-hand.point .pinky{d:path('M108 99 L108 100 Q108 89 117 89 Q126 89 126 100 L126 117 Q126 137 111 154 L111 165')}.demo-hand.left{transform:scaleX(-1)}.two-hands{display:flex;gap:26px}.two-hands .demo-hand{width:100px}.knead-demo .demo-hand{animation:gatherleft 3s infinite}.knead-demo .demo-hand.left{animation:gatherright 3s infinite}.trace-demo .demo-hand{animation:tracehand 4s infinite}.demo-loop{width:180px;height:140px;stroke:var(--accent);stroke-width:9;stroke-linecap:round;fill:none;stroke-dasharray:400;animation:cutloop 4s infinite}#guide-body p{font-size:13px;line-height:1.8;margin:8px 0 22px}#guide-body h1{font-size:30px;margin:0 0 14px}dialog::backdrop{backdrop-filter:blur(7px)}
@keyframes gatherleft{0%,100%{transform:translate(20px,10px) rotate(12deg)}50%{transform:translate(-15px,0) rotate(-12deg)}}@keyframes gatherright{0%,100%{transform:translate(-20px,10px) scaleX(-1) rotate(12deg)}50%{transform:translate(15px,0) scaleX(-1) rotate(-12deg)}}@keyframes tracehand{0%,100%{transform:translate(-25px,10px)}50%{transform:translate(25px,-10px)}}@keyframes cutloop{0%,10%{stroke-dashoffset:400}80%,100%{stroke-dashoffset:0}}@keyframes showhand{0%,100%{transform:translateY(6px);opacity:.6}50%{transform:translateY(-6px);opacity:1}}
@media(max-width:650px){#fresh-snow{right:144px;width:29px;height:34px;font-size:21px}.snow .colors{right:43px}.snow .seasons button{padding:10px 9px}.snow .colors button{width:25px}.snow #fresh-snow{right:137px}.gesture-stage{height:150px}}
@media(prefers-reduced-motion:reduce){.gesture-stage *,.ready-hand{animation:none!important}.demo-loop{stroke-dashoffset:0}}

.snow .pill:hover:not(:disabled){background:#d6e9ed}.knead-demo .index{animation:curlindex 3s infinite}.knead-demo .middle{animation:curlmiddle 3s infinite}.knead-demo .ring{animation:curlring 3s infinite}.knead-demo .pinky{animation:curlpinky 3s infinite}@keyframes curlindex{0%,100%{d:path('M54 108 54 43 Q54 32 63 32 Q72 32 72 43 L72 94')}45%,60%{d:path('M54 108 54 91 Q54 80 63 80 Q72 80 72 91 L72 94')}}@keyframes curlmiddle{0%,100%{d:path('M72 91 72 24 Q72 13 81 13 Q90 13 90 24 L90 91')}45%,60%{d:path('M72 91 L72 84 Q72 73 81 73 Q90 73 90 84 L90 91')}}@keyframes curlring{0%,100%{d:path('M90 94 90 34 Q90 23 99 23 Q108 23 108 34 L108 98')}45%,60%{d:path('M90 94 L90 89 Q90 78 99 78 Q108 78 108 89 L108 98')}}@keyframes curlpinky{0%,100%{d:path('M108 99 108 59 Q108 48 117 48 Q126 48 126 59 L126 117 Q126 137 111 154 L111 165')}45%,60%{d:path('M108 99 L108 100 Q108 89 117 89 Q126 89 126 100 L126 117 Q126 137 111 154 L111 165')}}

.tool-picker{position:fixed;left:30px;top:83px;z-index:8;display:flex;gap:3px;border:1px solid #ffffff20;background:var(--glass);border-radius:30px;padding:4px;backdrop-filter:blur(14px)}.tool-picker button{padding:9px 17px;border-radius:25px;font-size:12px;color:var(--muted)}.tool-picker [aria-pressed=true]{background:var(--accent);color:#21160f}.snow .tool-picker,.receiving .tool-picker{display:none}#camera-preview{width:160px;height:120px}#hand-cursor{z-index:60}#cursor-caption{position:absolute;top:36px;left:50%;transform:translateX(-50%);font:11px Arial;white-space:nowrap;padding:6px 10px;border-radius:14px;border:1px solid #ffffff30;background:#121519df;color:#f7eddf;box-shadow:0 4px 12px #0005}#hand-cursor.carving{width:27px;height:27px;border-radius:50%;background:#e9ad654d;border:2px solid #ffcf89;transform:translate(-50%,-50%);box-shadow:0 0 22px #f0a34266}#hand-cursor.carving i{display:block;background:#fff0d4;width:5px;height:5px}#hand-cursor.carving #cursor-caption{color:#ffdca4}#hand-cursor.writing{border-color:#eee6dc}#practice-overlay{position:fixed;inset:0;z-index:25;pointer-events:none}#practice-target{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);width:112px;height:112px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#bde6cb calc(var(--progress,0)*1turn),#ffffff13 0);border:1px solid #fff7;box-shadow:0 0 0 10px #0002,0 0 90px #b6d5e533}#practice-target i{width:80px;height:80px;border:1px dashed #fff9;border-radius:50%;background:#14202966}#practice-target.ready i:after{content:'✓';display:grid;place-items:center;height:100%;font-size:34px;color:#c9f5d5}#practice-card{position:absolute;bottom:110px;left:50%;transform:translateX(-50%);width:min(350px,calc(100% - 36px));border:1px solid #ffffff33;border-radius:20px;padding:17px 22px;background:#141c24ed;box-shadow:0 8px 40px #0006;pointer-events:auto;text-align:center}#practice-note{font-size:13px;line-height:1.6;color:#f6f0e8;margin:0 0 14px}.snow.camera-live #camera-preview{z-index:0}.receiving #practice-overlay{display:none}#practice-start:disabled{opacity:.35}
@media(max-width:650px){.tool-picker{left:14px;top:69px}.tool-picker button{padding:8px 12px;font-size:11px}#camera-preview{top:110px;width:112px;height:84px}#practice-card{bottom:105px}#cursor-caption{font-size:10px;max-width:200px}#practice-target{width:100px;height:100px}}

#practice-target.grip-step i:after{content:'✊';display:grid;place-items:center;height:100%;font-size:34px}

#stage{touch-action:none}.snow #inspect-hint{display:none}#hand-cursor.turning{border-color:#d4e8d9;background:#c5e6d425}.receiving:not(.snow) #stage{cursor:grab;pointer-events:auto}.receiving:not(.snow) #stage:active{cursor:grabbing}

.snow #hand-cursor.writing{width:12px;height:12px;border:1px solid #f3fbff;background:#e9f9ff17;box-shadow:0 0 8px #d9f6ff44}.snow #hand-cursor.writing i{width:2px;height:2px}#hand-cursor.writing #cursor-caption{top:21px}

.clap-demo .demo-hand:not(.left){animation:clapright 2.6s ease-in-out infinite}.clap-demo .demo-hand.left{animation:clapleft 2.6s ease-in-out infinite}@keyframes clapright{0%,25%,75%,100%{transform:translateX(7px)}45%,55%{transform:translateX(-25px)}}@keyframes clapleft{0%,25%,75%,100%{transform:translateX(-7px) scaleX(-1)}45%,55%{transform:translateX(25px) scaleX(-1)}}@media(prefers-reduced-motion:reduce){.clap-demo .demo-hand{animation:none!important}}

.hand-role{position:fixed;z-index:19;transform:translate(-50%,30px);pointer-events:none;white-space:nowrap;font:11px/1.4 Arial;padding:6px 10px;border-radius:20px;background:#18201ee6;border:1px solid #ffffff45;color:#fff;box-shadow:0 3px 15px #0003}.hand-role.holding{background:#243e30e8;border-color:#c1e6bd}.camera-live #camera-preview{z-index:0}.camera-live:not(.snow) #camera-preview:after{content:'';position:absolute;inset:0;background:#1d110d22;pointer-events:none}.two-hands{display:flex;justify-content:center;gap:12px}.two-hands .demo-hand{width:95px}.hand-label{font-size:12px;color:#f4d4ac}.gesture-pair{display:flex;justify-content:center;gap:32px}.gesture-pair>div{display:grid;justify-items:center}.gesture-pair .demo-hand{height:130px;width:95px}.camera-live #status{font-size:12px}.camera-live #hand-cursor:not(.dwelling) #cursor-caption{display:none}

.model-actions{display:flex;gap:8px}.model-actions button{flex:1}.model-actions select{max-width:135px;padding:8px;border:1px solid #ffffff25;border-radius:20px;background:#181a1e;color:var(--ink);font:12px Arial}.camera-on #camera-preview{inset:auto;top:88px;right:28px;width:144px;height:108px;z-index:4;border-radius:12px}.camera-on #camera-preview video{object-fit:cover}.camera-on #landmarks{display:block}@media(max-width:650px){.camera-on #camera-preview{top:112px;right:14px;width:104px;height:78px}.model-actions select{max-width:120px}}

.image-actions{display:flex;gap:8px}.image-actions button{flex:1;padding-inline:10px}.gift-buttons .share-caption{margin:0;color:var(--muted);font-size:11px}.gift-link{display:flex;align-items:center;justify-content:center;gap:8px;padding-top:5px}.gift-link a{font-size:11px;color:var(--muted);text-decoration:none;overflow-wrap:anywhere}.gift-link button{font-size:22px;width:36px;height:36px}#manual-site-link{margin-top:0}#gift-dialog{max-height:calc(100dvh - 32px);overflow:auto}

.receiving #stage{touch-action:none}

.receiving.snow #inspect-hint{display:block}.receiving #stage{cursor:grab}

body.snow.camera-live #camera-preview{position:fixed;inset:0;width:100%;height:100%;border:0;border-radius:0;box-shadow:none;z-index:0}body.snow.camera-live #camera-preview video{object-fit:cover}body.snow.camera-live #landmarks,body.snow.camera-live #camera-led{display:none}body.snow.camera-live #stage{z-index:1}body.snow.camera-live #status{color:white}body.snow.camera-live #hand-cursor:not(.dwelling) #cursor-caption{display:block}

.snow-steps{gap:8px}.snow-steps .demo-hand{width:75px;height:110px}.snow-steps .hand-label{font-size:11px}.throw-demo .demo-hand{animation:push-open 2.8s ease-in-out infinite}@keyframes push-open{0%,30%,100%{transform:scale(.82)}65%{transform:scale(1.08)}}@media(prefers-reduced-motion:reduce){.throw-demo .demo-hand{animation:none}}

/* Snow stays clear of tracking labels. The live region remains accessible. */
body.snow.camera-live #hand-cursor:not(.dwelling),body.snow #hand-roles{display:none}body.snow.camera-live #status{opacity:0;pointer-events:none}
.snow-steps .clap-demo{grid-template-columns:36px 36px;grid-template-rows:110px auto;align-items:center}.snow-steps .clap-demo .demo-hand{width:36px}.snow-steps .clap-demo .hand-label{grid-column:1 / -1}

.site-name{font:500 15px/1.2 Arial;color:#f6eadb;letter-spacing:.02em;padding:12px 4px;pointer-events:none}.snow .site-name{color:#e7f3f8}
