*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--ink:#1c2a24;--muted:#5c6d66;--panel:#fffcf8d1;--line:#1c2a241f;--accent:#3d6b5a}html,body,#root{min-height:100%}body{color:var(--ink);-webkit-font-smoothing:antialiased;background:#eef2ef;font-family:Manrope,system-ui,sans-serif}button,input{font:inherit}.page{background:radial-gradient(80% 50% at 50% -8%,#78968c59,#0000 55%),linear-gradient(#dce6e1 0%,#eef2ef 40%,#f4f1ea 100%);justify-content:center;min-height:100dvh;padding:1.5rem 1.15rem 1rem;display:flex}.shell{flex-direction:column;gap:.75rem;width:min(28rem,100%);min-height:calc(100dvh - 2.5rem);display:flex}.hero{z-index:40;text-align:center;position:relative}.hero-top{justify-content:space-between;align-items:flex-start;min-height:2.4rem;margin-bottom:.35rem;display:flex}.toolbar-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.toolbar-left{justify-content:flex-start}.brand{letter-spacing:-.03em;color:var(--ink);font-family:Fraunces,Georgia,serif;font-size:clamp(2.2rem,7vw,2.9rem);font-weight:600;line-height:1.05}.brand-link{color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;margin:0;padding:0;display:inline}.brand-link:hover{color:color-mix(in srgb, var(--accent) 55%, var(--ink))}.brand-link:focus-visible{outline:2px solid color-mix(in srgb, var(--accent) 55%, transparent);outline-offset:4px;border-radius:.35rem}.sub{color:var(--muted);margin-top:.45rem;font-size:.95rem;line-height:1.4}.cascade-browse-top{color:var(--muted);margin-top:.35rem;padding-left:0;padding-right:0;font-weight:600}.panel{background:var(--panel);border:1px solid var(--line);border-radius:1.15rem;padding:1.2rem;box-shadow:0 14px 32px #1e2d2814}.panel-title{margin-bottom:.35rem;font-family:Fraunces,Georgia,serif;font-size:1.35rem;font-weight:600}.hint{color:var(--muted);margin-bottom:.95rem;font-size:.9rem;line-height:1.45}.btn{cursor:pointer;border:0;border-radius:.7rem;padding:.65rem .9rem;font-weight:600}.btn-ghost{color:var(--ink);background:0 0}.btn-ghost:hover{background:#1c2a240f}.btn-primary{background:var(--ink);color:#f7faf8}.empty,.status{text-align:center;color:var(--muted);padding:.5rem;font-size:.9rem}.error{color:#8a3b2d;background:#8a3b2d14;border-radius:.75rem;padding:.75rem;font-size:.9rem}.context-grid{gap:.65rem;display:grid}.context-card,.primer-card{border:1px solid var(--line);text-align:left;cursor:pointer;width:100%;color:var(--ink);background:#ffffff8c;border-radius:.9rem;padding:.95rem 1rem}.context-card:hover,.primer-card:hover{background:#ffffffd9}.context-label,.primer-title{margin-bottom:.25rem;font-weight:700;display:block}.context-hint,.primer-meta{color:var(--muted);font-size:.85rem;line-height:1.35;display:block}.primer-list{gap:.55rem;margin:0;padding:0;list-style:none;display:grid}.run-progress{color:var(--accent);margin-bottom:.85rem;font-weight:700}.step-grid{gap:.55rem;display:grid}.step-btn{border:1px solid var(--line);cursor:pointer;min-height:3.4rem;color:var(--ink);background:#ffffffa6;border-radius:.85rem;font-weight:700}.step-btn:disabled{opacity:.45;cursor:default}.step-btn.is-current{border-color:color-mix(in srgb, var(--accent) 45%, transparent);background:color-mix(in srgb, var(--accent) 12%, white)}.step-btn.is-done{background:color-mix(in srgb, var(--accent) 22%, white);color:var(--ink)}.stat-row{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.stat-pill{background:color-mix(in srgb, var(--accent) 12%, white);text-align:center;border-radius:.75rem;flex:5rem;gap:.15rem;padding:.7rem;display:grid}.stat-pill strong{font-size:1.25rem}.stat-pill span{color:var(--muted);font-size:.75rem;font-weight:600}.section-label{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:.75rem 0 .45rem;font-size:.78rem}.metric-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.metric-list li{background:#ffffff80;border-radius:.7rem;justify-content:space-between;gap:.75rem;padding:.7rem .8rem;font-size:.9rem;font-weight:600;display:flex}.metric-list em{color:var(--muted);font-size:.8rem;font-style:normal;font-weight:500}.metric-list .muted{color:var(--muted);font-weight:500}.settings-wrap{z-index:50;position:relative}.settings-menu{z-index:60;border:1px solid var(--line);text-align:left;background:#fff;border-radius:.85rem;gap:.25rem;width:min(17.5rem,80vw);padding:.45rem;display:grid;position:absolute;top:calc(100% + .4rem);right:0;box-shadow:0 12px 28px #00000024}.settings-menu p{color:var(--muted);padding:.35rem .55rem .15rem;font-size:.75rem}.settings-menu button{text-align:left;width:100%;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:.55rem;padding:.65rem .7rem;font-weight:600}.settings-menu button:hover{background:#14241f0f}.settings-menu button.danger{color:#8a3b2d}.auth-panel .auth-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.auth-form{gap:.75rem;margin-top:.75rem;display:grid}.auth-form label{gap:.35rem;font-size:.85rem;font-weight:600;display:grid}.auth-form input{border:1px solid var(--line);width:100%;color:var(--ink);background:#ffffffe6;border-radius:.7rem;padding:.7rem .85rem}.cascade-panel{flex-direction:column;flex:auto;min-height:0;margin-top:auto;padding:.75rem;display:flex;overflow:hidden}.cascade{--cascade-base-h:8.5rem;-webkit-user-select:none;user-select:none;touch-action:none;border-radius:1rem;flex-direction:column;flex:auto;min-height:16rem;transition:box-shadow .35s,background .35s;display:flex;position:relative}.cascade.is-dragging{background:#ffffff47}.cascade.is-ready{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 45%, transparent);animation:1.1s ease-in-out infinite cascade-pulse}.cascade.is-sealing{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 28%, transparent);animation:none}.cascade.is-bloom{box-shadow:none;background:0 0;animation:none}.cascade-panel.is-handoff:not(.is-practicing){pointer-events:none}.cascade-panel.is-practicing,.cascade.is-practice{pointer-events:auto}.cascade-session{flex-direction:column;flex:1;min-height:16rem;display:flex}.cascade.is-sealing .cascade-layer,.cascade.is-sealing .cascade-base{animation:.22s cubic-bezier(.33,0,.2,1) forwards cascade-seal-out}.cascade.is-sealing .cascade-fuse{animation:.22s cubic-bezier(.33,0,.2,1) forwards cascade-fuse-seal}@keyframes cascade-seal-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(.45rem)scale(.98)}}@keyframes cascade-fuse-seal{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.96)translateY(-.2rem)}}@keyframes cascade-pulse{0%,to{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 35%, transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb, var(--accent) 18%, transparent)}}.cascade-upper{flex-direction:column;flex:auto;justify-content:flex-end;gap:.65rem;min-height:0;padding-bottom:.55rem;display:flex}.cascade-base{padding-top:.55rem;padding-bottom:max(.25rem, env(safe-area-inset-bottom));border-top:1px dashed color-mix(in srgb, var(--line) 80%, transparent);flex:none;margin-top:auto}.cascade-finger{pointer-events:none;z-index:5;background:radial-gradient(circle,#3d6b5a59,#0000 70%);border:2px solid #3d6b5a73;border-radius:50%;width:2.6rem;height:2.6rem;margin:-1.3rem 0 0 -1.3rem;position:absolute;top:0;left:0}.cascade-fuse{text-align:center;border:1px solid color-mix(in srgb, var(--line) 85%, transparent);background:linear-gradient(#fffcf8eb,#f5f8f6c7);border-radius:1rem;flex-flow:column;flex:none;justify-content:center;align-items:center;gap:.4rem;width:100%;max-width:100%;min-height:2.75rem;margin:0 auto .85rem;padding:.8rem 1.1rem .85rem;display:flex;box-shadow:inset 0 1px #ffffffb3,0 8px 20px #1e2d280d}.cascade-fuse-path{flex-wrap:wrap;justify-content:center;align-items:center;gap:.28rem .4rem;width:100%;min-width:0;display:flex}.cascade-fuse-sentence{letter-spacing:-.015em;max-width:22rem;color:var(--ink);text-wrap:balance;margin:0;font-family:Fraunces,Georgia,serif;font-size:clamp(1.02rem,3.6vw,1.2rem);font-weight:600;line-height:1.35}.cascade-fuse-idle{color:var(--muted);font-size:.85rem;font-weight:600}.cascade-chip{letter-spacing:-.015em;color:var(--ink);align-items:center;gap:.35rem;font-family:Fraunces,Georgia,serif;font-size:clamp(.98rem,3.4vw,1.12rem);font-weight:600;line-height:1.2;display:inline-flex}.cascade-chip-join{color:color-mix(in srgb, var(--muted) 80%, var(--accent));opacity:.85;font-family:Manrope,system-ui,sans-serif;font-size:.85em;font-weight:500}.cascade-ready-tag{letter-spacing:.08em;text-transform:uppercase;color:#fff;background:color-mix(in srgb, var(--accent) 88%, #1c2a24);box-shadow:0 4px 12px color-mix(in srgb, var(--accent) 28%, transparent);border-radius:999px;margin:0;padding:.28rem .7rem;font-size:.68rem;font-weight:700;animation:.35s cubic-bezier(.22,1,.36,1) both cascade-ready-in}@keyframes cascade-ready-in{0%{opacity:0;transform:translateY(.25rem)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.cascade.is-ready .cascade-fuse{border-color:color-mix(in srgb, var(--accent) 35%, var(--line));box-shadow:0 1px 0 #ffffffbf inset, 0 0 0 1px color-mix(in srgb, var(--accent) 18%, transparent), 0 10px 24px #1e2d2812}.cascade-layer{opacity:0;animation:.34s cubic-bezier(.22,1,.36,1) forwards cascade-layer-in;transform:translateY(.45rem)}.cascade-layer.is-base{opacity:1;animation:none;transform:none}.cascade-layer.is-done{opacity:.78}.cascade-layer.is-active{opacity:1}@keyframes cascade-layer-in{to{opacity:1;transform:translateY(0)}}.cascade-layer-prompt{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0 0 .4rem .15rem;font-size:.72rem;font-weight:700}.cascade-options{flex-wrap:wrap;gap:.45rem;display:flex}.cascade-option{--charge:0;--heat:0;text-align:center;border:1px solid var(--line);min-width:5.5rem;color:var(--ink);background:#ffffff9e;border-radius:.95rem;flex:auto;padding:.95rem .75rem;font-size:.95rem;font-weight:700;transition:background .35s,border-color .35s,box-shadow .35s;position:relative;overflow:hidden}.cascade-option.has-heat:not(.is-selected){background:color-mix(in srgb, var(--accent) calc(10% + var(--heat) * 38%), #ffffffe0);border-color:color-mix(in srgb, var(--accent) calc(18% + var(--heat) * 42%), var(--line))}.cascade-option-fill{transform-origin:0;transform:scaleX(var(--charge));background:color-mix(in srgb, var(--accent) 28%, transparent);pointer-events:none;position:absolute;inset:0}.cascade-option-label{z-index:1;position:relative}.cascade-option.is-charging{border-color:color-mix(in srgb, var(--accent) 55%, transparent)}.cascade-option.is-selected{background:color-mix(in srgb, var(--accent) 22%, white);border-color:color-mix(in srgb, var(--accent) 50%, transparent);box-shadow:0 8px 18px #2f554829}.cascade-reveal{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:14rem;padding:1.5rem .75rem 2rem;animation:.35s cubic-bezier(.22,1,.36,1) both cascade-bloom;display:flex;position:relative}.cascade-reveal-glow{pointer-events:none;background:radial-gradient(circle,#3d6b5a33,#0000 68%);border-radius:50%;width:12rem;height:12rem;animation:.45s cubic-bezier(.22,1,.36,1) both cascade-glow;position:absolute}@keyframes cascade-bloom{0%{opacity:0;transform:translateY(.55rem)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes cascade-glow{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.cascade-reveal-kicker{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:.65rem;font-size:.72rem;font-weight:700;animation:.32s cubic-bezier(.22,1,.36,1) 40ms both cascade-rise;position:relative}.cascade-reveal-title{letter-spacing:-.02em;max-width:18rem;font-family:Fraunces,Georgia,serif;font-size:clamp(1.55rem,5.5vw,1.95rem);font-weight:600;line-height:1.2;animation:.36s cubic-bezier(.22,1,.36,1) 80ms both cascade-rise;position:relative}.cascade-reveal-path{color:var(--muted);letter-spacing:.01em;margin-top:.85rem;font-size:.82rem;font-weight:600;animation:.34s cubic-bezier(.22,1,.36,1) .14s both cascade-rise;position:relative}@keyframes cascade-rise{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.practice{--ease-out:cubic-bezier(.22, 1, .36, 1);--dur-fade:.65s;flex-direction:column;flex:1;justify-content:flex-start;gap:.7rem;min-height:16rem;padding:.35rem .15rem .25rem;display:flex}.practice-head.cascade-reveal-static{z-index:2;text-align:center;opacity:0;animation:practice-fade-in var(--dur-fade) var(--ease-out) both;flex-direction:column;align-items:center;padding:.55rem .75rem .1rem;display:flex;position:relative}.practice-head .cascade-reveal-glow{opacity:.78;width:10rem;height:10rem;top:42%;left:50%;transform:translate(-50%,-50%)}.practice-title{text-align:center;letter-spacing:-.015em;max-width:20rem;color:var(--ink);margin:0 auto;font-family:Fraunces,Georgia,serif;font-size:clamp(1.2rem,4.2vw,1.45rem);font-weight:600;line-height:1.25;position:relative}.practice-path{color:var(--muted);letter-spacing:.01em;text-align:center;opacity:0;transition:opacity var(--dur-fade) var(--ease-out);margin-top:.3rem;font-size:.78rem;font-weight:600;position:relative}.practice.stage-path .practice-path,.practice.stage-detail .practice-path,.practice.stage-card .practice-path{opacity:1}.practice-instruction{z-index:1;text-align:center;color:var(--ink);letter-spacing:-.01em;text-wrap:balance;opacity:0;max-width:21rem;transition:opacity var(--dur-fade) var(--ease-out);margin:0 auto;padding:.35rem .65rem .1rem;font-size:clamp(1.12rem,4vw,1.35rem);font-weight:600;line-height:1.4}.practice.stage-detail .practice-instruction,.practice.stage-card .practice-instruction{opacity:1}.practice.stage-title .practice-path,.practice.stage-title .practice-instruction,.practice.stage-path .practice-instruction{opacity:0}.practice-card.is-in{animation:practice-fade-in .7s 80ms var(--ease-out) both}.practice-cancel.is-in{animation:practice-fade-in .55s .28s var(--ease-out) both}@keyframes practice-fade-in{0%{opacity:0}to{opacity:1}}.practice-card{border:1px solid var(--line);cursor:grab;width:100%;min-height:13.5rem;color:var(--ink);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#ffffff8c;border-radius:1.25rem;flex:auto;position:relative;overflow:hidden;box-shadow:0 16px 36px #1e2d2814}.practice-card.has-stage{flex-direction:column;gap:.35rem;min-height:18.5rem;padding:.7rem .75rem .8rem;display:flex}.practice-hud-top,.practice-hud-bottom{text-align:center;pointer-events:none;z-index:2;flex-direction:column;flex:none;justify-content:center;align-items:center;gap:.2rem;display:flex}.practice-hud-top{min-height:1.85rem}.practice-hud-top .practice-count{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:clamp(1.25rem,4.2vw,1.55rem)}.practice-hud-bottom{gap:.15rem;min-height:2.6rem}.practice-hud-bottom .practice-hint{text-wrap:balance;max-width:18rem}.practice-hud-bottom .practice-gesture{margin-top:.1rem}.practice-stage{flex:auto;justify-content:center;align-items:center;width:100%;min-height:12.5rem;display:flex;position:relative}.practice-stage-art{pointer-events:none;justify-content:center;align-items:center;transition:filter .55s cubic-bezier(.33,.1,.2,1),opacity .55s cubic-bezier(.33,.1,.2,1),transform .55s cubic-bezier(.33,.1,.2,1);display:flex;position:absolute;inset:0}.practice-card.has-stage .practice-stage-art .practice-vortex{position:relative}.practice-card.has-physics .practice-stage-art{inset:0}.practice-hud-top.is-dim{opacity:.35;transition:opacity .25s}.practice-begin-cue{z-index:5;pointer-events:none;text-align:center;opacity:1;filter:blur();flex-direction:column;justify-content:center;align-items:center;gap:.45rem;padding:1.1rem 1.25rem;transition:opacity .48s cubic-bezier(.33,.1,.2,1),transform .52s cubic-bezier(.33,.1,.2,1),filter .48s cubic-bezier(.33,.1,.2,1);display:flex;position:absolute;inset:0;transform:scale(1)}.practice-begin-cue-text{letter-spacing:-.02em;color:var(--ink);text-shadow:0 1px 14px #fffcf8f2;max-width:14.5rem;font-family:Fraunces,Georgia,serif;font-size:clamp(1.15rem,4.2vw,1.55rem);font-weight:600;line-height:1.35;transition:transform .4s cubic-bezier(.33,.1,.2,1),color .4s}.practice-begin-cue-amp{color:color-mix(in srgb, var(--accent) 55%, var(--muted));margin:.12rem 0;font-weight:500;display:inline-block}.practice-card.has-begin-cue:not(.is-cue-gone) .practice-stage-art{filter:blur(2.5px)saturate(.98);opacity:.78;transform:none}.practice-card.has-physics.has-begin-cue:not(.is-cue-gone) .practice-stacks{filter:blur(2px);opacity:.72;transition:filter .5s cubic-bezier(.33,.1,.2,1),opacity .5s cubic-bezier(.33,.1,.2,1)}.practice-card.is-cue-focus .practice-begin-cue-text{color:#152019;transform:scale(1.02)}.practice-card.is-cue-focus:not(.is-cue-gone) .practice-stage-art{filter:blur(1.5px)saturate();opacity:.88;transform:none}.practice-card.is-cue-gone .practice-stage-art,.practice-card:not(.has-begin-cue) .practice-stage-art{filter:blur()saturate();opacity:1;transform:none}.practice-card.is-cue-gone .practice-begin-cue,.practice-card:not(.has-begin-cue) .practice-begin-cue{opacity:0;filter:blur(1.5px);pointer-events:none;transform:scale(.97)translateY(-.2rem)}.practice-card.is-cue-gone .practice-hud-top,.practice-card.is-cue-gone .practice-hud-bottom{animation:.45s cubic-bezier(.22,1,.36,1) 80ms both practice-hud-in}@keyframes practice-hud-in{0%{opacity:0;transform:translateY(.35rem)}to{opacity:1;transform:translateY(0)}}.practice-card.has-physics{padding:0;display:block;overflow:visible}.practice-card.has-physics .practice-stage{min-height:0;position:absolute;inset:0}.practice-card.has-physics .practice-card-body{z-index:4;box-sizing:border-box;text-align:center;justify-content:center;align-items:center;width:100%;position:absolute;inset:0}.practice-card.has-physics .practice-count{text-align:center;text-wrap:balance;max-width:14.5rem;font-size:clamp(1.05rem,3.8vw,1.45rem);line-height:1.25}.practice-card.has-physics .practice-count.is-begin{font-size:clamp(1.1rem,4vw,1.5rem)}.practice.is-dragging .practice-card{cursor:grabbing}.practice.is-dragging .practice-card.has-physics .practice-stacks{filter:blur(4px);opacity:.5;transition:filter .22s,opacity .22s}.page:has(.practice.is-dragging:not(.motion-inward)):after{content:"";z-index:0;pointer-events:none;-webkit-backdrop-filter:blur(14px)saturate(1.06);background:#dce6e147;animation:.28s both practice-scrim-in;position:fixed;inset:0}.page:has(.practice.is-dragging:not(.motion-inward))>.shell{z-index:1;position:relative}@keyframes practice-scrim-in{0%{opacity:0}to{opacity:1}}.practice-stacks{pointer-events:none;z-index:1;flex-direction:column-reverse;gap:.45rem;display:flex;position:absolute;inset:18% 16% 22%}.practice-stack{background:color-mix(in srgb, var(--accent) 16%, #fff);opacity:.22;border-radius:.65rem;flex:1;transition:opacity .28s,transform .35s cubic-bezier(.22,1,.36,1),background .28s,box-shadow .28s;transform:scale(.97);box-shadow:inset 0 1px #ffffff59}.practice-stack.is-on{opacity:1;background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 28%, #fff), color-mix(in srgb, var(--accent) 48%, #e8f0ec));transform:scale(1);box-shadow:0 6px 14px #1e2d2824,inset 0 1px #ffffff73}.practice-stack.is-peak{filter:brightness(1.04)}.practice-card.is-drop-ready .practice-stacks{outline:2px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:6px;border-radius:.85rem}.practice-card.is-drop-ready .practice-stack.is-on,.practice-card.is-drop-ready .practice-stack:not(.is-on){box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent), 0 8px 18px #1e2d281f}.practice-card.is-drop-ready .practice-stack.is-peak{filter:brightness(1.08);transform:scale(1.02)}.practice-block{z-index:6;pointer-events:none;background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 32%, #fff), color-mix(in srgb, var(--accent) 52%, #e8f0ec));border-radius:.65rem;width:min(72%,14rem);height:2.15rem;margin:0;position:absolute;box-shadow:0 10px 22px #1e2d2838,inset 0 1px #ffffff80}.practice-block.is-held{z-index:8;will-change:transform, left, top;transition:none}.practice-block.is-held.is-stack{box-shadow:0 14px 28px #1e2d2842,inset 0 1px #ffffff8c}.practice-block.is-throw{animation:.52s cubic-bezier(.15,.7,.25,1) forwards block-throw}.practice-block.is-land{animation:.46s cubic-bezier(.2,.9,.25,1.15) forwards block-land}@keyframes block-throw{0%{opacity:1;filter:blur();transform:translate(-50%,-50%)rotate(0)scale(1.05)}70%{opacity:1}to{transform:translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) rotate(var(--rot)) scale(.9);opacity:0;filter:blur(1px)}}@keyframes block-land{0%{transform:translate(-50%, -50%) rotate(calc(var(--rot) * .4)) scale(1.08);opacity:.95}72%{transform:translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) rotate(0deg) scale(1.03);opacity:1}to{transform:translate(calc(-50% + var(--tx)), calc(-50% + var(--ty))) rotate(0deg) scale(1);opacity:0}}.practice-gesture{letter-spacing:.06em;text-transform:uppercase;color:color-mix(in srgb, var(--accent) 70%, var(--muted));opacity:.85;margin-top:.55rem;font-size:.72rem;font-weight:700}.practice-breathe-ring{border-radius:50%;transition:transform 50ms linear,opacity 50ms linear;transform-origin:50%!important;background:radial-gradient(circle, color-mix(in srgb, var(--accent) 32%, white), transparent 70%)!important;inset:16%!important}.practice-fill{background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 18%, transparent), color-mix(in srgb, var(--accent) 42%, white));transform-origin:bottom;pointer-events:none;transition:transform .45s cubic-bezier(.22,1,.36,1),opacity .45s;position:absolute;inset:0;transform:scaleY(0)}.motion-inward .practice-fill{display:none}.practice-vortex{--pull:0;--fill:0;--vortex:min(100%, 15.25rem);width:var(--vortex);height:var(--vortex);aspect-ratio:1;pointer-events:none;z-index:1;flex:none;position:relative}.practice-vortex-field{background:radial-gradient(circle at center, color-mix(in srgb, var(--accent) calc(18% + var(--pull) * 28%), transparent), transparent 68%);opacity:calc(.35 + var(--pull) * .45 + var(--fill) * .2);transform:scale(calc(1.08 - var(--pull) * .28));border-radius:50%;transition:transform .16s cubic-bezier(.22,1,.36,1),opacity .16s;position:absolute;inset:6%}.practice-vortex-ring{border:2px solid color-mix(in srgb, var(--accent) 72%, #1c2a24);aspect-ratio:1;opacity:.5;border-radius:50%;height:auto;transition:transform .16s cubic-bezier(.22,1,.36,1),opacity .16s,border-color .2s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.practice-vortex-ring.r0{width:100%;opacity:calc(.42 + var(--pull) * .28);transform:translate(-50%, -50%) scale(calc(1 - var(--pull) * .22));border-style:dashed;border-width:1.5px}.practice-vortex-ring.r1{width:72%;opacity:calc(.38 + var(--pull) * .35);transform:translate(-50%, -50%) scale(calc(1 - var(--pull) * .38 - var(--fill) * .04))}.practice-vortex-ring.r2{width:44%;opacity:calc(.45 + var(--pull) * .4);transform:translate(-50%, -50%) scale(calc(1 - var(--pull) * .52 - var(--fill) * .06));border-width:2.5px}.practice-vortex-core{background:radial-gradient(circle at 35% 30%, #f7fffb, var(--accent) 55%, #24362d);width:.95rem;height:.95rem;box-shadow:0 0 0 calc(.2rem + var(--pull) * .35rem + var(--fill) * .45rem) color-mix(in srgb, var(--accent) 30%, transparent), 0 0 22px color-mix(in srgb, var(--accent) 50%, transparent);transform:scale(calc(.85 + var(--fill) * .85 + var(--pull) * .55));border-radius:50%;margin:-.475rem 0 0 -.475rem;transition:transform .16s cubic-bezier(.22,1,.36,1),box-shadow .16s;position:absolute;top:50%;left:50%}.practice-vortex-seed{z-index:4;background:radial-gradient(circle at 32% 28%, #fff, color-mix(in srgb, var(--accent) 75%, #fff) 55%, var(--accent));width:1.35rem;height:1.35rem;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent), 0 8px 18px color-mix(in srgb, var(--accent) 35%, transparent);transform:scale(calc(1.08 - var(--pull) * .48));opacity:calc(1 - var(--pull) * .15);will-change:left, top, transform;border-radius:50%;margin:-.675rem 0 0 -.675rem;position:absolute}.practice-vortex.is-pulling .practice-vortex-ring{border-color:color-mix(in srgb, var(--accent) 40%, #1c2a24)}.practice-vortex-absorb{aspect-ratio:1;border:2px solid color-mix(in srgb, var(--accent) 70%, #fff);background:radial-gradient(circle, color-mix(in srgb, var(--accent) 35%, transparent), transparent 62%);border-radius:50%;width:100%;height:auto;margin:0;animation:.52s cubic-bezier(.18,.86,.22,1) forwards vortex-absorb;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.practice-vortex.is-absorbing .practice-vortex-ring{animation:.52s cubic-bezier(.18,.86,.22,1) forwards vortex-ring-collapse}.practice-vortex.is-absorbing .practice-vortex-core{animation:.52s cubic-bezier(.18,.86,.22,1) forwards vortex-core-bloom}.practice-vortex.is-absorbing .practice-vortex-field{animation:.52s cubic-bezier(.18,.86,.22,1) forwards vortex-field-absorb}@keyframes vortex-absorb{0%{opacity:.85;transform:translate(-50%,-50%)scale(1.05)}55%{opacity:.55}to{opacity:0;transform:translate(-50%,-50%)scale(.12)}}@keyframes vortex-ring-collapse{0%{opacity:.7}to{opacity:0;transform:translate(-50%,-50%)scale(.12)}}@keyframes vortex-core-bloom{0%{transform:scale(1.1)}40%{box-shadow:0 0 0 .85rem color-mix(in srgb, var(--accent) 28%, transparent), 0 0 36px color-mix(in srgb, var(--accent) 55%, transparent);transform:scale(1.85)}to{transform:scale(calc(.85 + var(--fill) * .85))}}@keyframes vortex-field-absorb{0%{opacity:.7;transform:scale(.95)}45%{opacity:.95;transform:scale(1.15)}to{opacity:.35;transform:scale(1)}}@keyframes practice-ripple-in-sharp{0%{opacity:.9;border-width:3px;transform:scale(18)}to{opacity:0;border-width:7px;transform:scale(.15)}}.practice-bloom-fill{background:radial-gradient(circle, color-mix(in srgb, var(--accent) 40%, white), transparent 72%);pointer-events:none;border-radius:50%;width:9rem;height:9rem;margin:-4.5rem 0 0 -4.5rem;transition:transform .5s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;left:50%}.practice-ripple{pointer-events:none;border:2px solid color-mix(in srgb, var(--accent) 55%, transparent);background:radial-gradient(circle,#3d6b5a47,#0000 70%);border-radius:50%;width:14px;height:14px;margin:-7px 0 0 -7px;position:absolute}.practice-ripple.is-outward,.practice-ripple.is-bloom,.practice-ripple.is-breathe{animation:.68s cubic-bezier(.22,1,.36,1) forwards practice-ripple-out}.practice-ripple.is-inward{border:3px solid var(--accent);background:0 0;animation:.4s cubic-bezier(.1,.85,.2,1) forwards practice-ripple-in-sharp}.practice-ripple.is-stack{border-radius:.4rem;width:42%;height:10px;margin:0;animation:.55s cubic-bezier(.22,1,.36,1) forwards practice-ripple-stack;left:29%!important}.practice-ripple.is-destack{animation:.6s cubic-bezier(.22,1,.36,1) forwards practice-ripple-destack}@keyframes practice-ripple-out{0%{opacity:.9;transform:scale(.35)}to{opacity:0;transform:scale(26)}}@keyframes practice-ripple-in{0%{opacity:0;transform:scale(22)}35%{opacity:.7}to{opacity:0;transform:scale(.2)}}@keyframes practice-ripple-stack{0%{opacity:0;transform:translateY(1.2rem)scaleX(.7)}40%{opacity:.75}to{opacity:0;transform:translateY(-2.5rem)scaleX(1)}}@keyframes practice-ripple-destack{0%{opacity:.85;transform:scale(.6)}to{opacity:0;transform:scale(18)translateY(-1.5rem)}}.practice-card-body{z-index:1;pointer-events:none;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.4rem;min-height:13.5rem;padding:1.25rem;display:flex;position:relative}.practice-count{letter-spacing:-.02em;text-align:center;font-family:Fraunces,Georgia,serif;font-size:2rem;font-weight:600}.practice-card.has-stage .practice-bloom-fill,.practice-card.has-stage .practice-breathe-ring,.practice-card.has-stage .practice-fill{inset:12% 18%}.practice-hint{color:var(--muted);text-align:center;max-width:16rem;font-size:.85rem;font-weight:600}.practice-cancel{width:100%}.practice.is-finishing.stage-card .practice-card{box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent);opacity:.55;filter:saturate(.92);transition:box-shadow .45s var(--ease-out), opacity .45s var(--ease-out), filter .45s var(--ease-out);pointer-events:none}.practice.is-finishing.stage-card .practice-instruction{opacity:.35;transition:opacity .45s var(--ease-out)}.practice.stage-seal .practice-head{opacity:.72;transition:opacity .55s var(--ease-out)}.practice-seal{z-index:2;width:100%;min-height:12rem;color:inherit;font:inherit;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;animation:practice-seal-in .7s var(--ease-out) both;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.55rem;margin:0;padding:1.25rem .85rem 1.5rem;display:flex;position:relative}.practice-seal-glow{background:radial-gradient(circle, color-mix(in srgb, var(--accent) 28%, transparent) 0%, color-mix(in srgb, var(--accent) 10%, transparent) 42%, transparent 70%);pointer-events:none;border-radius:50%;width:14rem;height:14rem;animation:2.8s ease-in-out both practice-seal-breathe;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}.practice-seal-path{letter-spacing:.01em;max-width:20rem;color:var(--muted);text-wrap:balance;animation:practice-fade-in .65s 80ms var(--ease-out) both;margin:0;font-size:.88rem;font-weight:600;line-height:1.45;position:relative}.practice-seal-line{letter-spacing:-.015em;max-width:18rem;color:var(--ink);animation:practice-fade-in .7s .22s var(--ease-out) both;margin:.35rem 0 0;font-family:Fraunces,Georgia,serif;font-size:clamp(1.2rem,4.2vw,1.45rem);font-weight:600;line-height:1.3;position:relative}.practice-seal-tap{letter-spacing:.02em;color:var(--muted);animation:practice-fade-in .7s .7s var(--ease-out) both;margin:.85rem 0 0;font-size:.78rem;font-weight:600;position:relative}@keyframes practice-seal-in{0%{opacity:0;transform:translateY(.45rem)}to{opacity:1;transform:translateY(0)}}@keyframes practice-seal-breathe{0%{opacity:.35;transform:translate(-50%,-50%)scale(.92)}45%{opacity:.95;transform:translate(-50%,-50%)scale(1.04)}to{opacity:.7;transform:translate(-50%,-50%)scale(1)}}.motion-breathe .practice-fill{transform-origin:50%;background:radial-gradient(circle, color-mix(in srgb, var(--accent) 30%, white), transparent 68%);border-radius:50%;inset:18%}
