:root{--bg-0:#0e0b14;--bg-1:#15111d;--surface:#211a2e;--surface-2:#2a2238;--line:#332a42;--text:#f4efe6;--muted:#9a8fab;--text-faint:color-mix(in srgb, var(--text) 60%, transparent);--hairline:#f4efe614;--ui-accent:#d8d2e8;--sand:#e8c39e;--water:#5fb8d6;--lava:#ff6b4a;--slime:#93c9a4;--foil:#c9b8ff;--text-2xs:11px;--text-xs:12px;--text-sm:14px;--text-md:16px;--text-lg:20px;--text-xl:26px;--text-2xl:34px;--leading-tight:1.12;--leading-snug:1.3;--leading-normal:1.6;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.04em;--tracking-label:.08em;--e1:0 1px 2px #0000004d, 0 3px 10px #00000038, inset 0 1px 0 #ffffff0d;--e2:0 4px 18px #0000005c, 0 1px 3px #0000004d, inset 0 1px 0 #ffffff12;--e3:0 16px 48px #00000085, 0 4px 12px #00000052, inset 0 1px 0 #ffffff14;--glass-1:blur(12px) saturate(135%);--glass-2:blur(22px) saturate(140%);--glass-fill:color-mix(in srgb, var(--surface) 62%, transparent);--font-display:"Clash Display", "General Sans", "Zen Kaku Gothic New", "Noto Sans JP", system-ui, sans-serif;--font-body:"Zen Kaku Gothic New", "Noto Sans JP", system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, "SFMono-Regular", monospace;--sp-xs:4px;--sp-sm:8px;--sp-md:12px;--sp-lg:16px;--sp-xl:24px;--sp-2xl:32px;--sp-3xl:48px;--r-sm:10px;--r-md:16px;--r-lg:24px;--r-full:999px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--z-ambient:0;--z-content:10;--z-gear:50;--z-sheet:100;--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-out:cubic-bezier(.22, 1, .36, 1)}.btn-ghost{justify-content:center;align-items:center;gap:var(--sp-sm);border-radius:var(--r-full);border:1px solid color-mix(in srgb, var(--accent,var(--ui-accent)) 38%, var(--hairline));background:var(--glass-fill);min-height:44px;-webkit-backdrop-filter:var(--glass-1);backdrop-filter:var(--glass-1);box-shadow:var(--e1), 0 6px 22px color-mix(in srgb, var(--accent,var(--ui-accent)) 14%, transparent);color:var(--text);font-family:var(--font-body);font-feature-settings:"palt" 1;font-size:var(--text-sm);letter-spacing:var(--tracking-wide);cursor:pointer;transition:transform .22s var(--ease-spring), box-shadow .3s, border-color .25s, opacity .2s;padding:0 20px;display:inline-flex}.btn-ghost:active{transform:scale(.94)}.btn-ghost:disabled,.btn-ghost[aria-disabled=true]{opacity:.4;pointer-events:none;box-shadow:none}.btn-ghost svg{width:16px;height:16px}@keyframes dockIn{0%{opacity:0;transform:translateY(16px)}}@keyframes ctrlFadeIn{0%{opacity:0}}@keyframes hintIn{0%{opacity:0}}[class$=-hint]{animation:hintIn .6s var(--ease-out) backwards}:root[data-reduce-motion=true] [class$=-hint]{animation:none}*{box-sizing:border-box}html,body{background:var(--bg-0);height:100%;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;padding:0}body{overscroll-behavior:none;touch-action:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;position:fixed;inset:0;overflow:hidden}#app{position:fixed;inset:0}canvas{display:block}button{color:inherit;font-family:inherit}:focus-visible{outline:2px solid color-mix(in srgb, var(--ui-accent) 75%, transparent);outline-offset:2px}.ambient{z-index:var(--z-ambient);pointer-events:none;position:fixed;inset:0;overflow:hidden}.ambient__blob{mix-blend-mode:screen;will-change:transform;border-radius:50%;width:92vmax;height:92vmax;position:absolute}.ambient__blob--1{background:radial-gradient(circle at center, color-mix(in srgb, var(--foil) 16%, transparent) 0%, transparent 60%);animation:46s ease-in-out infinite drift1;top:-32vmax;left:-22vmax}.ambient__blob--2{background:radial-gradient(circle at center, color-mix(in srgb, var(--water) 13%, transparent) 0%, transparent 60%);animation:58s ease-in-out infinite drift2;bottom:-36vmax;right:-26vmax}.ambient__blob--3{background:radial-gradient(circle at center, color-mix(in srgb, var(--lava) 9%, transparent) 0%, transparent 62%);animation:72s ease-in-out infinite drift3;top:18vmax;right:-14vmax}@keyframes drift1{0%,to{transform:translate(0)scale(1)}50%{transform:translate(8vmax,6vmax)scale(1.12)}}@keyframes drift2{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-7vmax,-5vmax)scale(1.15)}}@keyframes drift3{0%,to{transform:translate(0)scale(1)}50%{transform:translate(-6vmax,8vmax)scale(.9)}}.ambient__grid{background-image:linear-gradient(#f4efe606 1px,#0000 1px),linear-gradient(90deg,#f4efe606 1px,#0000 1px);background-size:44px 44px;position:absolute;inset:-2px;-webkit-mask-image:radial-gradient(#000 28%,#0000 78%);mask-image:radial-gradient(#000 28%,#0000 78%)}:root[data-reduce-motion=true] .ambient__blob{animation:none}.film{z-index:90;pointer-events:none;position:fixed;inset:0}.film__grain{opacity:.05;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px 160px;animation:1.1s steps(2,end) infinite filmGrain;position:absolute;inset:0}@keyframes filmGrain{0%{transform:translate(0)}50%{transform:translate(-4px,3px)}to{transform:translate(3px,-2px)}}.film__vignette{background:radial-gradient(#0000 56%,#00000080 100%);position:absolute;inset:0}:root[data-reduce-motion=true] .film__grain{animation:none}.fps{top:calc(var(--safe-t) + 12px);left:calc(var(--safe-l) + 64px);z-index:95;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--hairline);font-family:var(--font-mono);letter-spacing:.05em;color:var(--slime);pointer-events:none;opacity:0;background:#00000080;border-radius:8px;padding:3px 9px;font-size:12px;transition:opacity .2s;position:fixed}.fps.is-on{opacity:1}.gear{top:calc(var(--safe-t) + 12px);right:calc(var(--safe-r) + 12px);z-index:var(--z-gear);border:1px solid var(--hairline);background:var(--glass-fill);width:44px;height:44px;-webkit-backdrop-filter:var(--glass-1);backdrop-filter:var(--glass-1);box-shadow:var(--e1);color:var(--muted);cursor:pointer;transition:transform .25s var(--ease-spring), color .2s, box-shadow .25s;border-radius:50%;place-items:center;display:grid;position:fixed}.gear:hover{color:var(--text)}.gear:active{transform:scale(.9)}.gear svg{width:22px;height:22px}.sheet-backdrop{z-index:var(--z-sheet);-webkit-backdrop-filter:blur();backdrop-filter:blur();pointer-events:none;transition:background .32s var(--ease-out), backdrop-filter .32s var(--ease-out);background:#07050c00;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-backdrop.open{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:auto;background:#07050c80}.sheet{width:min(560px,100%);padding:8px 20px calc(var(--safe-b) + 24px);background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--e3);transition:transform .44s var(--ease-out);border-bottom:none;transform:translateY(102%)}.sheet-backdrop.open .sheet{transform:translateY(0)}.sheet__handle{background:var(--line);border-radius:2px;width:40px;height:4px;margin:6px auto 14px}.sheet__head{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.sheet__head h2{font-family:var(--font-body);font-weight:700;font-size:var(--text-lg);line-height:var(--leading-snug);letter-spacing:var(--tracking-normal);font-feature-settings:"palt" 1;color:var(--text);margin:0}.sheet__close{border:1px solid var(--hairline);width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border-radius:50%;font-size:15px;transition:color .2s,background .2s;position:relative}.sheet__close:after{content:"";position:absolute;inset:-5px}.sheet__close:active{background:var(--surface);transform:scale(.92)}.row{border-bottom:1px solid color-mix(in srgb, var(--line) 55%, transparent);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.row:last-of-type{border-bottom:none}.row--stack{flex-direction:column;align-items:stretch;gap:12px}.row__label{flex-direction:column;display:flex}.row__title{font-size:var(--text-md);letter-spacing:var(--tracking-normal);font-feature-settings:"palt" 1;color:var(--text)}.row__sub{font-size:var(--text-xs);letter-spacing:var(--tracking-normal);color:var(--muted);margin-top:2px}.switch{border:1px solid var(--line);background:var(--bg-0);cursor:pointer;width:52px;height:32px;transition:background .25s, border-color .25s, box-shadow .25s, transform .18s var(--ease-spring);border-radius:999px;flex:none;position:relative}.switch:active{transform:scale(.94)}.switch:after{content:"";position:absolute;inset:-8px -6px}.switch__dot{background:var(--muted);width:24px;height:24px;transition:transform .28s var(--ease-spring), background .25s;border-radius:50%;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.switch[aria-checked=true]{background:color-mix(in srgb, var(--ui-accent) 22%, var(--bg-0));border-color:color-mix(in srgb, var(--ui-accent) 46%, transparent);box-shadow:0 0 16px color-mix(in srgb, var(--ui-accent) 26%, transparent);animation:switchOn .42s var(--ease-out)}@keyframes switchOn{0%{box-shadow:0 0 #0000}55%{box-shadow:0 0 26px color-mix(in srgb, var(--ui-accent) 52%, transparent)}to{box-shadow:0 0 16px color-mix(in srgb, var(--ui-accent) 26%, transparent)}}:root[data-reduce-motion=true] .switch[aria-checked=true]{animation:none}.switch[aria-checked=true] .switch__dot{background:var(--ui-accent);transform:translate(20px,-50%)}.seg{border:1px solid var(--line);background:var(--bg-0);border-radius:12px;gap:4px;padding:4px;display:flex}.seg__btn{min-height:44px;color:var(--muted);font-family:var(--font-body);font-size:var(--text-sm);letter-spacing:var(--tracking-normal);cursor:pointer;transition:color .2s, background .25s, box-shadow .25s, transform .18s var(--ease-spring);background:0 0;border:none;border-radius:9px;flex:1}.seg__btn:active{transform:scale(.95)}.seg__btn[aria-pressed=true]{color:var(--text);background:color-mix(in srgb, var(--ui-accent) 18%, var(--bg-1));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ui-accent) 38%, transparent)}.sheet__note{margin:var(--sp-lg) 0 0;font-size:var(--text-xs);line-height:var(--leading-normal);color:var(--text-faint)}:root[data-reduce-motion=true] .sheet,:root[data-reduce-motion=true] .sheet-backdrop{transition-duration:.12s}.hub{z-index:var(--z-content);touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:calc(var(--safe-t) + var(--sp-2xl)) max(var(--sp-xl), var(--safe-r)) calc(var(--safe-b) + var(--sp-2xl)) max(var(--sp-xl), var(--safe-l));position:fixed;inset:0;overflow-y:auto}.hub__head{margin:var(--sp-lg) 0 var(--sp-2xl);text-align:center}.hub__mark{width:56px;height:56px;margin:0 auto var(--sp-sm);filter:drop-shadow(0 4px calc(14px + var(--dew,0) * 22px) color-mix(in srgb, var(--foil) calc(24% + var(--dew,0) * 50%), transparent));animation:markFloat 7s var(--ease-out) infinite;display:block;position:relative}.hub__mark:after{content:"";background:radial-gradient(circle at 35% 30%, #fff, color-mix(in srgb, var(--foil) 70%, transparent) 70%, transparent 72%);width:8px;height:8px;opacity:calc(var(--dew,0) * .9);filter:drop-shadow(0 0 6px color-mix(in srgb, var(--foil) 60%, transparent));pointer-events:none;border-radius:50%;position:absolute;top:6px;right:10px}.hub__mark svg{width:100%;height:100%;display:block}@keyframes markFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.hub__title{font-family:var(--font-display);font-size:clamp(40px,13vw,64px);font-weight:600;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--text);text-shadow:0 0 44px color-mix(in srgb, var(--foil) 24%, transparent);margin:0}.hub__sub{margin:var(--sp-sm) 0 0;font-family:var(--font-body);font-size:var(--text-sm);font-feature-settings:"palt" 1;letter-spacing:var(--tracking-label);color:var(--text-faint)}.hub__grid{gap:var(--sp-lg);flex-direction:column;max-width:520px;margin:0 auto;display:flex}.card{align-items:center;gap:var(--sp-lg);width:100%;min-height:112px;padding:var(--sp-lg);text-align:left;cursor:pointer;border-radius:var(--r-md);border:1px solid var(--hairline);background:linear-gradient(150deg, color-mix(in srgb, var(--accent) 14%, var(--surface)), var(--surface) 72%);color:var(--text);box-shadow:var(--e1), inset 0 -1px 0 #00000038;transition:transform .32s var(--ease-spring), box-shadow .32s var(--ease-out), border-color .32s;display:flex}@media (hover:hover){.card:not(.card--soon):hover{border-color:color-mix(in srgb, var(--accent) 40%, transparent);box-shadow:var(--e2), 0 14px 44px color-mix(in srgb, var(--accent) 18%, transparent);transform:translateY(-2px)}}.card:not(.card--soon):active{box-shadow:var(--e1), 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent), 0 10px 30px color-mix(in srgb, var(--accent) 22%, transparent);transform:scale(.97)}.card{animation:cardIn .5s var(--ease-out) backwards;animation-delay:calc(var(--i,0) * 70ms)}@keyframes cardIn{0%{opacity:0;transform:translateY(14px)}}.card__preview{border-radius:var(--r-sm);background:radial-gradient(120% 120% at 30% 18%, color-mix(in srgb, var(--accent) 40%, var(--surface-2)), color-mix(in srgb, var(--accent) 10%, var(--bg-1)) 78%);width:84px;height:84px;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--accent) 26%, transparent), inset 0 1px 0 #ffffff14;flex:none;position:relative;overflow:hidden}.card__preview:before{content:"";position:absolute;inset:0}.card__preview:after{content:"";background:radial-gradient(40% 40% at 50% 50%, color-mix(in srgb, var(--accent) 60%, white 16%), transparent 70%);mix-blend-mode:screen;opacity:.7;animation:cardGlow calc(6s + var(--i,0) * .5s) ease-in-out infinite;animation-delay:calc(var(--i,0) * -700ms);position:absolute;inset:-32%}@keyframes cardGlow{0%,to{transform:translate(-16%,-12%)scale(1)}50%{transform:translate(16%,14%)scale(1.22)}}.card[data-toy-id=bubble] .card__preview:before{background-image:radial-gradient(circle at 50% 42%, color-mix(in srgb, var(--accent) 92%, white) 0 30%, color-mix(in srgb, var(--accent) 40%, transparent) 38%, transparent 52%);background-position:4px 4px;background-size:26px 26px}.card[data-toy-id=cut] .card__preview:before{background:linear-gradient(128deg, color-mix(in srgb, var(--accent) 30%, transparent) 0 47%, color-mix(in srgb, var(--accent) 95%, white) 48.5% 51.5%, color-mix(in srgb, var(--accent) 16%, transparent) 53% 100%)}.card[data-toy-id=wash] .card__preview:before{background:repeating-linear-gradient(62deg, color-mix(in srgb, var(--accent) 70%, white) 0 1.5px, transparent 1.5px 9px), radial-gradient(60% 60% at 22% 80%, #281e168c, transparent 70%)}.card[data-toy-id=sand] .card__preview:before{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 22%, transparent) 0 34%, color-mix(in srgb, var(--accent) 52%, transparent) 34% 58%, color-mix(in srgb, var(--accent) 82%, white 4%) 58% 78%, color-mix(in srgb, var(--accent) 95%, white 8%) 78% 100%)}.card__body{gap:var(--sp-xs);flex-direction:column;min-width:0;display:flex}.card__name{font-family:var(--font-body);font-weight:700;font-size:var(--text-xl);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);font-feature-settings:"palt" 1;color:var(--text)}.card__tag{font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--leading-snug);letter-spacing:var(--tracking-normal);font-feature-settings:"palt" 1;color:var(--muted)}.card__preview--garden{background-position:50%;background-size:cover}.card__preview--garden:before{display:none}.hub__head{position:relative}.hub__note{z-index:2;color:color-mix(in srgb, var(--foil) 85%, white);text-shadow:0 0 10px color-mix(in srgb, var(--foil) 70%, transparent);opacity:0;pointer-events:none;animation:noteFloat 2.3s var(--ease-out) var(--delay,0s) forwards;font-size:15px;position:absolute;top:34px;left:50%}@keyframes noteFloat{0%{opacity:0;transform:translate(var(--dx,0), 6px) scale(.8)}22%{opacity:.9}to{opacity:0;transform:translate(calc(var(--dx,0) * 1.4), -54px) scale(1.05)}}.card--soon{cursor:default;border:1px dashed color-mix(in srgb, var(--text) 14%, transparent);min-height:92px;box-shadow:none;opacity:.55;background:0 0}.card__preview--soon{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--text) 12%, transparent);color:var(--text-faint);font-family:var(--font-display);font-size:var(--text-2xl);background:0 0;place-items:center;font-weight:400;line-height:1;display:grid}.card__name--soon{color:var(--muted);font-weight:500}:root[data-reduce-motion=true] .card,:root[data-reduce-motion=true] .hub__mark,:root[data-reduce-motion=true] .card__preview:after{animation:none}.toy-screen{z-index:60;background:radial-gradient(140% 90% at 50% -10%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 60%),  radial-gradient(62% 46% at 50% 47%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 72%), var(--bg-0);position:fixed;inset:0;overflow:hidden}.toy-screen__stage{position:absolute;inset:0}.toy-screen.is-leaving{transition:transform .4s var(--ease-out), filter .4s var(--ease-out);filter:brightness(1.05)saturate(1.03);transform:scale(.992)}.toy-back{top:calc(var(--safe-t) + 12px);left:calc(var(--safe-l) + 12px);z-index:5;border:1px solid var(--hairline);background:var(--glass-fill);width:44px;height:44px;-webkit-backdrop-filter:var(--glass-1);backdrop-filter:var(--glass-1);box-shadow:var(--e1);color:var(--text);cursor:pointer;transition:transform .25s var(--ease-spring), box-shadow .25s;border-radius:50%;place-items:center;display:grid;position:absolute}.toy-back:active{transform:scale(.9)}.toy-back svg{width:22px;height:22px}.toy-screen__name{top:calc(var(--safe-t) + 12px);z-index:4;height:44px;padding-inline:max(60px, calc(var(--safe-l) + 60px));text-align:center;font-family:var(--font-body);font-weight:500;font-size:var(--text-sm);letter-spacing:var(--tracking-label);font-feature-settings:"palt" 1;color:var(--muted);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;left:0;right:0}.morph{z-index:55;pointer-events:none;will-change:transform, opacity;background:radial-gradient(120% 85% at 50% 0%, color-mix(in srgb, var(--accent) 60%, transparent), transparent 68%), linear-gradient(160deg, color-mix(in srgb, var(--accent) 42%, var(--bg-1)), var(--bg-1));border-radius:40px;position:fixed;inset:0}.sand-dock{z-index:6;align-items:center;gap:var(--sp-md);padding:var(--sp-md) max(var(--sp-md), var(--safe-l)) calc(var(--safe-b) + var(--sp-md)) max(var(--sp-md), var(--safe-r));background:linear-gradient(to top, color-mix(in srgb, var(--bg-0) 92%, transparent), transparent);animation:dockIn .5s var(--ease-out) .15s both;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}:root[data-reduce-motion=true] .sand-dock{animation:none}.sand-mats{gap:var(--sp-md);scrollbar-width:none;width:auto;max-width:100%;padding:16px;scroll-padding-inline:16px;display:flex;overflow-x:auto}.sand-mats::-webkit-scrollbar{display:none}.sand-mat{cursor:pointer;width:50px;min-height:44px;transition:transform .18s var(--ease-spring);background:0 0;border:none;flex-direction:column;flex:none;align-items:center;gap:4px;padding:6px 0;display:flex}.sand-mat:active{transform:scale(.92)}.sand-mat__dot{background:var(--c);width:30px;height:30px;box-shadow:inset 0 1px 2px #fff6, 0 0 0 1px var(--hairline);transition:transform .2s var(--ease-spring), box-shadow .2s;border-radius:50%}.sand-mat__label{font-family:var(--font-body);color:var(--muted);font-size:11px;transition:color .2s}.sand-mat.is-on .sand-mat__dot{box-shadow:inset 0 1px 2px #ffffff80, 0 0 0 2px var(--text), 0 0 14px var(--c);transform:scale(1.18)}.sand-mat.is-on .sand-mat__label{color:var(--text)}.sand-mat.is-extra{display:none}.sand-dock.show-all .sand-mat.is-extra{display:flex}.sand-more{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 55%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:38px;height:38px;color:var(--muted);cursor:pointer;transition:color .2s, border-color .2s, transform .18s var(--ease-spring);border-radius:50%;flex:none;align-self:center;margin:0 2px;font-size:18px;line-height:1}.sand-more:active{transform:scale(.92)}.sand-dock.show-all .sand-more{color:var(--text);border-color:color-mix(in srgb, var(--text) 40%, transparent)}.sand-hint{z-index:5;pointer-events:none;font-family:var(--font-body);font-size:var(--text-sm);letter-spacing:var(--tracking-label);font-feature-settings:"palt" 1;color:var(--text-faint);text-shadow:0 1px 6px #00000080;transition:opacity .5s;position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)}.sand-hint.is-hidden{opacity:0}.sand-tools{justify-content:space-between;align-items:center;gap:var(--sp-md);width:100%;max-width:520px;display:flex}.sand-sizes{gap:var(--sp-sm);display:flex}.sand-size{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 60%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.sand-size span{background:var(--muted);border-radius:50%;display:block}.sand-size.is-on{border-color:color-mix(in srgb, var(--sand) 60%, transparent);box-shadow:0 0 14px color-mix(in srgb, var(--sand) 30%, transparent)}.sand-size.is-on span{background:var(--text)}.sand-size{transition:border-color .2s, box-shadow .2s, transform .18s var(--ease-spring)}.sand-size:active{transform:scale(.94)}.sand-acts{gap:var(--sp-sm);display:flex}.sand-act{font-size:var(--text-xs);letter-spacing:var(--tracking-normal);padding:0 13px}.sand-garden{z-index:8;-webkit-backdrop-filter:blur();backdrop-filter:blur();transition:background .24s var(--ease-out), backdrop-filter .24s var(--ease-out);background:#07050c00;justify-content:center;align-items:flex-end;display:flex;position:absolute;inset:0}.sand-garden.open{-webkit-backdrop-filter:var(--glass-1);backdrop-filter:var(--glass-1);background:#07050c80}.sand-garden__panel{width:min(560px,100%);max-height:76%;padding:8px max(16px, var(--safe-l)) calc(var(--safe-b) + 16px) max(16px, var(--safe-r));background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) 0 0;box-shadow:var(--e3);transition:transform .4s var(--ease-out);border-bottom:none;flex-direction:column;display:flex;transform:translateY(102%)}.sand-garden.open .sand-garden__panel{transform:translateY(0)}.sand-garden__head{justify-content:space-between;align-items:center;padding:8px 2px 12px;display:flex}.sand-garden__head h2{font-family:var(--font-body);font-weight:700;font-size:var(--text-lg);font-feature-settings:"palt" 1;color:var(--text);margin:0}.sand-garden__close{border:1px solid var(--hairline);width:36px;height:36px;color:var(--muted);cursor:pointer;transition:transform .18s var(--ease-spring), background .2s;background:0 0;border-radius:50%;font-size:15px}.sand-garden__close:active{background:var(--surface);transform:scale(.92)}.sand-garden__grid{gap:var(--sp-md);grid-template-columns:repeat(2,1fr);padding-bottom:4px;display:grid;overflow-y:auto}.garden-card{border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--surface);box-shadow:var(--e1);cursor:pointer;transition:transform .2s var(--ease-spring);position:relative;overflow:hidden}.garden-card:active{transform:scale(.97)}.garden-card img{width:100%;height:auto;display:block}.garden-name{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:var(--tracking-normal);font-feature-settings:"palt" 1;color:var(--muted);padding:6px 10px 9px;display:block}.garden-del{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);width:26px;height:26px;color:var(--text);cursor:pointer;background:#07050c80;border:none;border-radius:50%;font-size:14px;line-height:1;position:absolute;top:6px;right:6px}.sand-garden__empty{text-align:center;color:var(--text-faint);font-family:var(--font-body);font-size:var(--text-sm);line-height:var(--leading-normal);grid-column:1/-1;padding:32px 0}.finale{z-index:20;pointer-events:none;position:absolute;inset:0;overflow:hidden}.finale__flash{background:radial-gradient(circle at var(--cx) var(--cy), var(--c,#fff), color-mix(in srgb, var(--c,#fff) 34%, transparent) 20%, transparent 46%);transform-origin:var(--cx) var(--cy);opacity:0;mix-blend-mode:screen;animation:.44s cubic-bezier(.22,1,.36,1) forwards finaleFlash;position:absolute;inset:0}@keyframes finaleFlash{0%{opacity:0;transform:scale(.28)}24%{opacity:.82}to{opacity:0;transform:scale(1.7)}}.finale__flash--soft{animation:.52s ease-out forwards finaleFlashSoft}@keyframes finaleFlashSoft{0%{opacity:0}30%{opacity:.4}to{opacity:0}}.finale__petal{left:var(--cx);top:var(--cy);width:var(--sz);height:var(--sz);margin:calc(var(--sz) / -2) 0 0 calc(var(--sz) / -2);background:radial-gradient(circle at 35% 30%, #fff, var(--c,#fff) 68%, transparent);box-shadow:0 0 9px var(--c,#fff);opacity:0;animation:finalePetal var(--d,.9s) cubic-bezier(.18, .9, .3, 1) var(--delay,0s) forwards;border-radius:50%;position:absolute}@keyframes finalePetal{0%{opacity:0;transform:translate(0)scale(.4)}16%{opacity:1}to{opacity:0;transform:translate(var(--dx,0), var(--dy,-140px)) scale(1)}}.bubble-refill{left:50%;bottom:calc(var(--safe-b) + 20px);z-index:6;animation:ctrlFadeIn .5s var(--ease-out) .15s both;position:absolute;transform:translate(-50%)}:root[data-reduce-motion=true] .bubble-refill{animation:none}.bubble-refill:active{transform:translate(-50%)scale(.94)}.wash-ring{top:calc(var(--safe-t) + 14px);z-index:6;pointer-events:none;opacity:.5;width:40px;height:40px;position:absolute;left:50%;transform:translate(-50%)}.wash-ring svg{width:40px;height:40px;transform:rotate(-90deg)}.wash-ring circle{fill:none;stroke-width:2.5px}.wash-ring .t{stroke:color-mix(in srgb, var(--line) 40%, transparent)}.wash-ring .f{stroke:color-mix(in srgb, var(--water) 75%, transparent);stroke-linecap:round;transition:stroke-dashoffset .4s ease-out}.wash-ring__pct{font-family:var(--font-mono);font-feature-settings:"tnum" 1;font-size:var(--text-2xs);color:var(--text-faint);place-items:center;display:grid;position:absolute;inset:0}.wash-hint{z-index:5;font-family:var(--font-body);font-size:var(--text-sm);letter-spacing:var(--tracking-label);font-feature-settings:"palt" 1;color:var(--text-faint);pointer-events:none;text-shadow:0 1px 6px #00000080;transition:opacity .4s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wash-hint.is-hidden{opacity:0}.wash-dock{z-index:6;align-items:center;gap:var(--sp-md);padding:var(--sp-md) max(var(--sp-md), var(--safe-l)) calc(var(--safe-b) + var(--sp-md)) max(var(--sp-md), var(--safe-r));background:linear-gradient(to top, color-mix(in srgb, var(--bg-0) 90%, transparent), transparent);animation:dockIn .5s var(--ease-out) .15s both;flex-direction:column;display:flex;position:absolute;bottom:0;left:0;right:0}:root[data-reduce-motion=true] .wash-dock{animation:none}.wash-surfs{gap:var(--sp-sm);justify-content:center;width:100%;max-width:520px;display:flex}.wash-surf{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 60%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);min-height:44px;color:var(--muted);font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;transition:color .2s, border-color .2s, box-shadow .2s, transform .18s var(--ease-spring);border-radius:12px;padding:0 18px}.wash-surf:active{transform:scale(.94)}.wash-surf.is-on{color:var(--text);border-color:color-mix(in srgb, var(--water) 55%, transparent);box-shadow:0 0 14px color-mix(in srgb, var(--water) 26%, transparent)}.wash-tools{justify-content:space-between;align-items:center;gap:var(--sp-md);width:100%;max-width:520px;display:flex}.wash-press-grp{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-0) 60%, transparent);border-radius:12px;gap:4px;padding:4px;display:flex}.wash-press{min-width:48px;min-height:44px;color:var(--muted);font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;transition:color .2s, background .25s, box-shadow .25s, transform .18s var(--ease-spring);background:0 0;border:none;border-radius:9px}.wash-press:active{transform:scale(.95)}.wash-press.is-on{color:var(--text);background:color-mix(in srgb, var(--water) 22%, var(--bg-1));box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--water) 40%, transparent)}.cut-hint{top:calc(var(--safe-t) + 80px);z-index:5;font-family:var(--font-body);font-size:var(--text-sm);letter-spacing:var(--tracking-label);font-feature-settings:"palt" 1;color:var(--text-faint);pointer-events:none;transition:opacity .4s;position:absolute;left:50%;transform:translate(-50%)}.cut-hint.is-hidden{opacity:0}
