@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-full-normal-7BpKI3vF.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-full-normal-YHFkNujK.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-full-normal-CFFu7zhK.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-full-italic-BHALq22K.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-full-italic-B8-t4Nou.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-full-italic-D2JnYqd-.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-cyrillic-ext-wght-normal-c-5QAGAI.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-cyrillic-wght-normal-BMDVbyM7.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-greek-ext-wght-normal-BXZfsJY4.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-greek-wght-normal-Cc-u-6OI.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-vietnamese-wght-normal-BDs68eHQ.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-latin-ext-wght-normal-C8iNium2.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Sans 3 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-sans-3-latin-wght-normal-Bo_j9asI.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink-950:#0b0a10;--ink-900:#121019;--ink-800:#1b1a2a;--dusk-700:#2a2d45;--dusk-600:#3b405e;--slate-500:#5a6582;--mist-300:#a9b3c4;--cream:#efe5d3;--bone:#ddd2bd;--linen:#d9cbb2;--amber:#d99a52;--glow:#f3c27a;--terracotta:#b8613f;--ember:#d98a5f;--ember-soft:#e8b08e;--sea:#5f9ea0;--sea-soft:#8fbcbc;--rose:#c48a8a;--rose-deep:#9e6468;--moss:#8c9c7a;--moss-deep:#55694f;--straw:#c9b98c;--night-950:var(--ink-950);--night-900:var(--ink-900);--night-800:var(--ink-800);--night-700:var(--dusk-700);--night-600:var(--dusk-600);--dusk-500:var(--slate-500);--lilac-300:var(--mist-300);--lilac-100:#d6dbe4;--cream-50:var(--cream);--cream-100:var(--bone);--peach-300:var(--ember-soft);--fairy-300:var(--glow);--fairy-400:var(--glow);--fairy-500:var(--amber);--rose-400:var(--rose);--rose-500:var(--rose-deep);--ember-300:var(--ember-soft);--ember-400:var(--ember);--ember-600:var(--terracotta);--caspian-300:var(--sea-soft);--caspian-400:var(--sea);--caspian-600:#4f8f93;--moss-300:var(--moss);--moss-500:var(--moss-deep);--moss-700:#3e5140;--earth-500:#9a6a4f;--earth-700:#3a2a26;--water-400:#5d8796;--bg:var(--ink-900);--surface:#121019c7;--surface-strong:#121019e6;--surface-light:#efe5d30b;--surface-hover:#efe5d314;--border:#efe5d31a;--border-strong:#efe5d333;--text:var(--cream);--text-muted:#efe5d3b3;--text-faint:#efe5d38c;--accent:var(--amber);--accent-text:var(--glow);--love:var(--rose);--focus:var(--glow);--danger:#d9a093;--font-display:"Fraunces Variable", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--font-ui:"Source Sans 3 Variable", "Segoe UI", system-ui, -apple-system, sans-serif;--fs-xs:.75rem;--fs-sm:.875rem;--fs-md:1rem;--fs-lg:1.25rem;--fs-xl:1.625rem;--fs-2xl:2.25rem;--fs-3xl:clamp(3rem, 14vw, 5rem);--w-display:360;--track-display:.005em;--track-eyebrow:.18em;--r-xs:8px;--r-sm:12px;--r-md:14px;--r-lg:16px;--r-xl:18px;--r-pill:999px;--shadow-soft:0 12px 32px -14px #040308b3;--shadow-float:0 24px 64px -24px #040308d9;--glow-amber:0 0 0 1px #f3c27a40, 0 8px 28px -10px #d99a528c;--blur:saturate(120%) blur(20px);--ease-out:cubic-bezier(.22, .61, .36, 1);--ease-in-out:cubic-bezier(.45, 0, .25, 1);--ease-spring:var(--ease-out);--dur-fast:.18s;--dur-med:.32s;--dur-slow:.64s;--gutter:20px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--tap:48px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (width<=360px){:root{--gutter:16px}}@media (prefers-reduced-motion:reduce){:root{--dur-fast:0s;--dur-med:0s;--dur-slow:0s}}*,:before,:after{box-sizing:border-box}html,body,#app{height:100%}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-kerning:normal;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;margin:0;font-weight:400;line-height:1.5;overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--r-xs)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}::selection{background:#d99a5259}h1,h2,h3,.display{font-family:var(--font-display);font-optical-sizing:auto;font-weight:var(--w-display);font-variation-settings:"SOFT" 30, "WONK" 0;letter-spacing:var(--track-display);text-wrap:balance;margin:0;line-height:1.12}.wordmark{font-family:var(--font-display);font-optical-sizing:auto;font-variation-settings:"SOFT" 50, "WONK" 0;letter-spacing:.01em;font-style:italic;font-weight:300}.eyebrow{font-size:var(--fs-xs);letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--accent-text);opacity:.9;font-weight:600}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}p{text-wrap:pretty}.btn{min-height:var(--tap);border-radius:var(--r-md);font-weight:600;font-size:var(--fs-md);letter-spacing:.01em;white-space:nowrap;transition:background var(--dur-med) var(--ease-out), border-color var(--dur-med) var(--ease-out), color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out), opacity var(--dur-med);-webkit-user-select:none;user-select:none;border:1px solid #0000;justify-content:center;align-items:center;gap:10px;padding:0 22px;line-height:1.1;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){opacity:.86}.btn:disabled{opacity:.4;cursor:not-allowed}.btn svg{flex:none;width:18px;height:18px}.btn-primary{background:var(--amber);color:var(--ink-900);box-shadow:var(--glow-amber)}.btn-primary:hover:not(:disabled){background:var(--glow)}.btn-secondary{background:var(--surface-light);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:#efe5d34d}.btn-secondary.glass{background:var(--surface)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){color:var(--text);background:var(--surface-light)}.btn-love{background:var(--rose);color:var(--ink-900);box-shadow:0 0 0 1px #e8beba40,0 8px 26px -12px #c48a8a99}.btn-love:hover:not(:disabled){background:#d39d9a}.btn-block{width:100%}.btn-block,.list>.btn{white-space:normal;text-align:center;padding-block:10px}.btn-sm{min-height:44px;font-size:var(--fs-sm);border-radius:var(--r-sm);gap:8px;padding:0 16px}.btn-sm svg{width:16px;height:16px}.icon-btn{width:var(--tap);height:var(--tap);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);color:var(--text);-webkit-backdrop-filter:var(--blur);transition:background var(--dur-med) var(--ease-out), color var(--dur-med) var(--ease-out), border-color var(--dur-med) var(--ease-out);flex:none;place-items:center;padding:0;display:grid}.icon-btn:hover:not(:disabled){background:var(--surface-strong);border-color:var(--border-strong)}.icon-btn:active:not(:disabled){opacity:.8}.icon-btn svg{width:20px;height:20px}.icon-btn.plain{-webkit-backdrop-filter:none;color:var(--text-muted);background:0 0;border-color:#0000}.icon-btn.plain:hover:not(:disabled){background:var(--surface-light);color:var(--text)}.icon-btn[aria-pressed=true],.icon-btn.on{color:var(--glow);background:#d99a5229;border-color:#f3c27a73}.icon-btn:disabled{opacity:.4}.glass{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);-webkit-backdrop-filter:var(--blur);box-shadow:var(--shadow-float)}.field{gap:8px;display:grid}.field>label,.label{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);font-weight:600}.input,.select,.textarea{width:100%;min-height:var(--tap);border-radius:var(--r-sm);border:1px solid var(--border-strong);color:var(--text);transition:border-color var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out), background var(--dur-med);background:#08070c73;padding:0 16px;font-size:16px;font-weight:400}.textarea{resize:vertical;min-height:96px;padding:12px 16px;line-height:1.5}.input::placeholder,.textarea::placeholder{color:#efe5d36b}.input:hover,.select:hover,.textarea:hover{border-color:#efe5d34d}.input:focus,.select:focus,.textarea:focus{border-color:var(--amber);background:#08070c99;outline:none;box-shadow:0 0 0 3px #d99a5238}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);background-position:calc(100% - 21px) 52%,calc(100% - 16px) 52%;background-repeat:no-repeat;background-size:5px 5px;padding-right:40px}.select option,.select optgroup{background:var(--ink-800);color:var(--text)}input[type=date].input{padding-right:12px}input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.9)sepia(.2)opacity(.7)}.error-text{color:var(--danger);font-weight:500;font-size:var(--fs-sm);min-height:1.3em}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border-radius:var(--r-pill);border:1px solid var(--border-strong);min-height:40px;color:var(--text-muted);font-weight:500;font-size:var(--fs-sm);letter-spacing:.01em;transition:background var(--dur-med) var(--ease-out), color var(--dur-med) var(--ease-out), border-color var(--dur-med) var(--ease-out);background:0 0;padding:0 16px}.chip:hover:not(:disabled){color:var(--text);border-color:#efe5d352}.chip[aria-pressed=true]{color:var(--glow);background:#d99a5224;border-color:#f3c27a80}.chip:disabled{opacity:.4;cursor:not-allowed}.chips.scroll{scrollbar-width:none;margin:0 calc(-1 * var(--gutter));padding:2px var(--gutter);flex-wrap:nowrap;overflow-x:auto}.chips.scroll::-webkit-scrollbar{display:none}.chips.scroll .chip{flex:none}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch-btn{width:40px;height:40px;transition:outline-color var(--dur-med) var(--ease-out);outline-offset:3px;border:1px solid #efe5d32e;border-radius:50%;outline:1.5px solid #0000;padding:0}.swatch-btn[aria-pressed=true]{outline-color:var(--glow)}.switch{border:1px solid var(--border-strong);width:48px;height:28px;transition:background var(--dur-med) var(--ease-out), border-color var(--dur-med);background:#efe5d31f;border-radius:99px;flex:none;padding:0;position:relative}.switch:after{content:"";background:var(--bone);width:20px;height:20px;transition:transform var(--dur-med) var(--ease-out), background var(--dur-med);border-radius:50%;position:absolute;top:3px;left:3px}.switch[aria-checked=true]{background:#d99a528c;border-color:#f3c27a99}.switch[aria-checked=true]:after{background:var(--cream);transform:translate(20px)}.switch:before{content:"";position:absolute;inset:-9px -2px}.screen{-webkit-overflow-scrolling:touch;padding:max(24px, var(--safe-top)) max(var(--gutter), var(--safe-right)) max(24px, var(--safe-bottom)) max(var(--gutter), var(--safe-left));background:radial-gradient(70% 45% at 0% 0%, #d98a5f29, transparent 70%), radial-gradient(70% 45% at 100% 0%, #5f9ea029, transparent 70%), radial-gradient(120% 60% at 50% 110%, #2a2d45e6, transparent 70%), linear-gradient(180deg, #1a1a2b 0%, var(--ink-900) 60%, var(--ink-950) 100%);position:fixed;inset:0;overflow:hidden auto}.screen-inner{flex-direction:column;width:100%;max-width:420px;min-height:100%;margin:0 auto;display:flex}.screen .stack{gap:18px;display:grid}.screen-head{text-align:center;margin:20px 0 28px}.screen-head h1{margin-top:10px;font-size:clamp(1.75rem,7vw,2.25rem)}.screen-head p{max-width:32ch;color:var(--text-muted);margin:12px auto 0;font-size:1.0625rem;line-height:1.55}.screen-foot{gap:10px;margin-top:auto;padding-top:28px;display:grid}.steps{justify-content:center;gap:6px;margin-top:8px;display:flex}.steps i{width:28px;height:2px;transition:background var(--dur-slow) var(--ease-out);background:#efe5d329;border-radius:2px}.steps i.on{background:var(--amber)}.back-btn{top:max(16px, var(--safe-top));left:max(12px, var(--safe-left));z-index:2;position:absolute}.welcome-art{flex:1;place-items:center;min-height:240px;display:grid;position:relative}.welcome-art canvas{width:100%;height:100%;position:absolute;inset:0}.welcome-title{text-align:center;position:relative}.welcome-title .wordmark{font-size:var(--fs-3xl);color:var(--cream);line-height:1}.welcome-title p{color:var(--text-muted);font-family:var(--font-display);letter-spacing:.02em;margin:10px 0 0;font-size:1.125rem;font-style:italic;font-weight:300}.gloss{color:var(--text-faint);font-size:var(--fs-sm);text-align:center;letter-spacing:.01em;margin:14px 0 0}.who-grid{grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px;display:grid}.who{border-radius:var(--r-lg);background:var(--surface-light);border:1px solid var(--border);transition:border-color var(--dur-med) var(--ease-out), background var(--dur-med) var(--ease-out);justify-items:center;gap:4px;padding:18px 12px 16px;display:grid}.who:hover{border-color:var(--border-strong)}.who[aria-pressed=true]{background:#d99a5212;border-color:#f3c27a8c}.who canvas{width:110px;height:130px}.who b{font-family:var(--font-display);font-weight:var(--w-display);font-size:var(--fs-lg);letter-spacing:var(--track-display);margin-top:6px}.invite-code{letter-spacing:.1em;text-align:center;border-radius:var(--r-lg);color:var(--glow);-webkit-user-select:all;user-select:all;word-break:break-all;background:#08070c80;border:1px solid #f3c27a59;padding:22px 16px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:clamp(1.2rem,5.8vw,1.6rem);font-weight:500}.creator{gap:16px;display:grid}.creator-stage{place-items:center;height:clamp(190px,34vh,280px);display:grid;position:relative}.creator-stage:before{content:"";aspect-ratio:1;background:radial-gradient(circle, var(--stage-glow,#d98a5f38), transparent 65%);opacity:.8;border-radius:50%;width:64%;position:absolute}.creator-stage canvas{aspect-ratio:3/4;width:auto;height:100%;position:relative}.creator-stage .dice{position:absolute;bottom:8px;right:0}.creator-panel{gap:16px;display:grid}.opt-grid{grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:8px;display:grid}.opt{border-radius:var(--r-sm);background:var(--surface-light);border:1px solid var(--border);color:var(--text-muted);transition:border-color var(--dur-med) var(--ease-out), background var(--dur-med) var(--ease-out), color var(--dur-med);justify-items:center;gap:2px;padding:8px 4px 10px;font-size:12px;font-weight:500;display:grid}.opt:hover{border-color:var(--border-strong)}.opt canvas{width:60px;height:60px}.opt[aria-pressed=true]{color:var(--text);background:#d99a5214;border-color:#f3c27a8c}.world{background:var(--ink-900);position:fixed;inset:0;overflow:hidden}.world canvas.stage{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%;display:block;position:absolute;inset:0}.hud{pointer-events:none;z-index:10;position:absolute;inset:0}.hud>*{pointer-events:auto}.hud-top{top:max(10px, var(--safe-top));left:max(10px, var(--safe-left));right:max(10px, var(--safe-right));pointer-events:none;justify-content:space-between;align-items:center;gap:8px;display:flex;position:absolute}.hud-top>*{pointer-events:auto}.hud-top .right{gap:6px;display:flex}.hud-top .icon-btn{width:44px;height:44px}.icon-btn.quiet-toggle[aria-pressed]{background:var(--surface);border-color:var(--border);color:var(--text)}.icon-btn.quiet-toggle[aria-pressed=false]{color:var(--text-muted)}.presence{border-radius:var(--r-md);min-width:0;max-width:min(72vw,380px);min-height:44px;font-size:var(--fs-sm);text-align:left;color:var(--text);border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:var(--blur);transition:border-color var(--dur-med) var(--ease-out);align-items:center;gap:10px;padding:4px 14px 4px 4px;font-weight:600;display:inline-flex}.presence:hover{border-color:var(--border-strong)}.presence canvas{background:#efe5d30d;border-radius:10px;flex:none;width:34px;height:34px}.presence .txt{min-width:0;line-height:1.25;display:grid}.presence .txt>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.presence .name{align-items:center;gap:8px;min-width:0;display:flex}.presence .name>span:last-child{text-overflow:ellipsis;overflow:hidden}.presence .sub{color:var(--text-muted);letter-spacing:.01em;font-size:12px;font-weight:400}.dot{vertical-align:1px;border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.presence .dot.live{box-shadow:0 0 0 3px color-mix(in srgb, currentColor 22%, transparent);animation:breathe 3.2s var(--ease-in-out) infinite}@keyframes breathe{50%{opacity:.6}}@keyframes pulse{50%{opacity:.6}}.hud-bottom{left:max(10px, var(--safe-left));right:max(10px, var(--safe-right));bottom:max(10px, var(--safe-bottom));pointer-events:none;justify-content:space-between;align-items:center;gap:8px;display:flex;position:absolute}.hud-bottom>*{pointer-events:auto}.dock{border-radius:var(--r-lg);gap:2px;min-width:0;padding:4px;display:flex}.dock .icon-btn{-webkit-backdrop-filter:none;border-radius:var(--r-sm);width:46px;height:46px;color:var(--text-muted);background:0 0;border-color:#0000;position:relative}.dock .icon-btn:hover:not(:disabled){background:var(--surface-light);color:var(--text)}.dock .icon-btn[aria-pressed=true],.dock .icon-btn.on{color:var(--glow);background:#d99a5224;border-color:#0000}.dock .icon-btn .badge{background:var(--rose);width:7px;height:7px;box-shadow:0 0 0 2px var(--ink-900);border-radius:50%;position:absolute;top:9px;right:9px}@media (width<=350px){.dock .icon-btn{width:44px}}@media (width>=760px){.hud-bottom{justify-content:center;gap:12px}.dock .icon-btn{width:50px;height:50px}}.heart-btn{width:56px;height:56px;color:var(--rose);background:var(--surface);-webkit-backdrop-filter:var(--blur);box-shadow:var(--shadow-soft);transition:transform var(--dur-slow) var(--ease-out), background var(--dur-slow) var(--ease-out), color var(--dur-med), box-shadow var(--dur-slow) var(--ease-out), border-color var(--dur-med);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border:1px solid #c48a8a73;border-radius:50%;flex:none;place-items:center;padding:0;display:grid;position:relative}.heart-btn:hover{border-color:#c48a8abf}.heart-btn svg{width:24px;height:24px}.heart-btn.holding{color:#f2d9d4;animation:beat .83s var(--ease-in-out) infinite;background:#9e64688c;border-color:#e8beba99}.heart-btn.sync{box-shadow:0 0 0 1px #f3c27a80,0 0 36px #f3c27a73}@keyframes beat{0%,to{transform:scale(1.02)}15%{transform:scale(1.08)}30%{transform:scale(1.03)}45%{transform:scale(1.07)}}.heart-btn .ring{opacity:0;pointer-events:none;border:1px solid #e8beba99;border-radius:50%;position:absolute;inset:-5px}.heart-btn.holding .ring{animation:ring .83s var(--ease-out) infinite}@keyframes ring{0%{opacity:.6;transform:scale(.94)}to{opacity:0;transform:scale(1.4)}}.context-row{left:50%;bottom:calc(max(10px, var(--safe-bottom)) + 66px);pointer-events:none;flex-wrap:wrap;justify-content:center;gap:8px;width:max-content;max-width:calc(100vw - 20px);display:flex;position:absolute;transform:translate(-50%)}.context-row>*{pointer-events:auto;animation:rise var(--dur-slow) var(--ease-out)}.context-row .btn-secondary.glass{border-color:var(--border-strong);box-shadow:var(--shadow-soft)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}}.hints{left:50%;top:calc(max(10px, var(--safe-top)) + 56px);pointer-events:none;justify-items:center;gap:6px;width:min(400px,100vw - 20px);display:grid;position:absolute;transform:translate(-50%)}.hint{border-radius:var(--r-md);pointer-events:auto;cursor:default;box-shadow:var(--shadow-soft);color:var(--text);animation:drop var(--dur-slow) var(--ease-out);align-items:flex-start;gap:12px;padding:9px 16px 10px 14px;font-size:.84375rem;font-weight:400;line-height:1.45;display:flex}.hint .peri-orb{background:var(--glow);width:6px;height:6px;animation:breathe 3.6s var(--ease-in-out) infinite;border-radius:50%;flex:none;margin-top:6px;box-shadow:0 0 10px 2px #f3c27a8c}.hint.error{border-color:#d9a09366}.hint.error .peri-orb{background:var(--danger);box-shadow:0 0 10px 2px #d9a09373}.hint.love .peri-orb{background:var(--rose);box-shadow:0 0 10px 2px #c48a8a80}.hint button{margin-left:auto}@keyframes drop{0%{opacity:0;transform:translateY(-6px)}}@keyframes float{50%{transform:translateY(-2px)}}.carry-chip{border-radius:var(--r-sm);min-height:44px;font-weight:500;font-size:var(--fs-sm);align-items:center;gap:4px;padding:0 4px 0 16px;display:inline-flex}.carry-chip .icon-btn{width:36px;height:36px}.beat-vignette{pointer-events:none;z-index:5;opacity:0;transition:opacity var(--dur-slow) var(--ease-out);position:absolute;inset:0}.beat-vignette.on{opacity:1;animation:vignette .83s var(--ease-in-out) infinite}@keyframes vignette{0%,to{opacity:.5}15%{opacity:.9}30%{opacity:.6}45%{opacity:.85}}.offline-banner{left:50%;bottom:calc(max(10px, var(--safe-bottom)) + 68px);border-radius:var(--r-md);font-size:var(--fs-sm);color:var(--text-muted);white-space:nowrap;max-width:calc(100vw - 20px);padding:10px 16px;font-weight:500;position:absolute;transform:translate(-50%)}.boot{z-index:50;background:var(--bg);transition:opacity .9s var(--ease-in-out), visibility 0s linear .9s;place-items:center;display:grid;position:fixed;inset:0}.boot.gone{opacity:0;visibility:hidden;pointer-events:none}.logo-mark{width:min(72vw,440px);margin-inline:auto;display:block}.logo-mark img{width:100%;height:auto;display:block}.boot-mark{animation:logo-breathe 3.2s var(--ease-in-out) infinite}@keyframes logo-breathe{50%{opacity:.8}}.emote-tray{left:max(10px, var(--safe-left));bottom:calc(max(10px, var(--safe-bottom)) + 66px);border-radius:var(--r-xl);animation:rise var(--dur-med) var(--ease-out);z-index:12;grid-template-columns:repeat(4,64px);gap:2px;padding:6px;display:grid;position:absolute}@media (width>=760px){.emote-tray{grid-template-columns:repeat(8,66px);left:50%;transform:translate(-50%)}}@media (width<=300px){.emote-tray{grid-template-columns:repeat(4,60px)}}.emote-tray button{border-radius:var(--r-sm);color:var(--text-muted);letter-spacing:.01em;transition:background var(--dur-med) var(--ease-out), color var(--dur-med);background:0 0;border:0;justify-items:center;gap:4px;padding:10px 0 8px;font-size:12px;font-weight:500;display:grid}.emote-tray button:hover,.emote-tray button:focus-visible{background:var(--surface-light);color:var(--text)}.emote-tray .e{place-items:center;height:26px;line-height:1;display:grid}.emote-tray .e svg{width:24px;height:24px}.sheet-backdrop{z-index:40;animation:fade var(--dur-med) var(--ease-out);background:#06050a80;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.sheet{z-index:41;border-radius:var(--r-xl) var(--r-xl) 0 0;background:var(--surface-strong);border:1px solid var(--border);max-height:min(88vh,88dvh);-webkit-backdrop-filter:var(--blur);animation:sheet-up var(--dur-slow) var(--ease-out);padding-bottom:var(--safe-bottom);border-bottom:0;outline:none;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -24px 64px -24px #000000bf}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}.sheet-head{flex:none;align-items:center;gap:12px;padding:18px 12px 8px 24px;display:flex;position:relative}.sheet-head:before{content:"";background:var(--border-strong);border-radius:3px;width:36px;height:3px;margin-left:-18px;position:absolute;top:8px;left:50%}.sheet-head h2{font-size:var(--fs-xl);flex:1;min-width:0;margin-top:6px}.sheet-head .icon-btn{margin-top:4px}.sheet-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:10px 24px 26px;overflow-y:auto}.sheet-foot{border-top:1px solid var(--border);flex:none;gap:10px;padding:14px 24px 18px;display:flex}.sheet-foot .btn{flex:1}@media (width<=360px){.sheet-head{padding-left:18px}.sheet-body,.sheet-foot{padding-left:18px;padding-right:18px}}@media (width>=760px) and (height>=560px){.sheet{border-radius:var(--r-xl);border-bottom:1px solid var(--border);width:min(560px,100vw - 48px);max-height:min(84vh,760px);animation:pop var(--dur-slow) var(--ease-out);padding-bottom:0;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.sheet.wide{width:min(760px,100vw - 48px)}.sheet-head:before{display:none}.sheet-head{padding:22px 16px 8px 32px}.sheet-head h2{font-size:var(--fs-2xl);margin-top:0}.sheet-head .icon-btn{margin-top:0}.sheet-body{padding:10px 32px 30px}.sheet-foot{padding:16px 32px 22px}@keyframes pop{0%{opacity:0;transform:translate(-50%,calc(12px - 50%))}}}.section{margin-top:28px}.section:first-child{margin-top:8px}.section>.label{margin-bottom:12px;display:block}.card{background:var(--surface-light);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px}.row{align-items:center;gap:12px;display:flex}.row.between{justify-content:space-between}.list{gap:10px;display:grid}.kv{gap:3px;display:grid}.kv+.kv{border-top:1px solid var(--border);padding-top:12px}.kv dt{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);font-weight:600}.kv dd{white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-weight:400;line-height:1.5}.allergy{border-radius:var(--r-md);background:#b8613f1f;border:1px solid #d98a5f66;align-items:flex-start;gap:12px;padding:14px 16px;font-weight:400;display:flex}.allergy b{font-weight:600}.allergy svg{width:18px;height:18px;color:var(--ember);flex:none;margin-top:2px}.book-tabs{border-bottom:1px solid var(--border);gap:0;margin-bottom:20px;display:flex}.book-tabs .chip{min-height:46px;font-size:var(--fs-md);background:0 0;border:0;border-bottom:1.5px solid #0000;border-radius:0;flex:1;margin-bottom:-1px}.book-tabs .chip[aria-pressed=true]{color:var(--text);border-bottom-color:var(--tab-c,var(--amber));background:0 0}.page-hero{border-radius:var(--r-lg);box-shadow:none;align-items:center;gap:18px;padding:18px 20px;display:flex}.page-hero canvas{flex:none;width:72px;height:96px}.page-hero h3{font-size:var(--fs-xl)}.page-hero .sub{color:var(--text-muted);font-weight:400;font-size:var(--fs-sm);margin-top:2px}.countdowns{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.countdown{border-radius:var(--r-md);background:var(--surface-light);border:1px solid var(--border);align-content:start;gap:4px;padding:16px 18px;display:grid}.countdown .label{color:var(--text-faint);font-size:11px}.countdown b{font-family:var(--font-display);font-optical-sizing:auto;font-size:var(--fs-xl);font-weight:var(--w-display);letter-spacing:var(--track-display);line-height:1.1;display:block}.countdown span{font-size:var(--fs-sm);color:var(--text-muted);font-weight:400}.empty-note{color:var(--text-muted);font-family:var(--font-display);font-size:1.0625rem;font-style:italic;font-weight:300;line-height:1.5}.note-card{border-color:#c48a8a59}.festive-card{background:linear-gradient(135deg,#b8613f29,#7d3b4524);border-color:#d98a5f4d}.festive-card b{font-family:var(--font-display);font-weight:var(--w-display);font-size:var(--fs-lg)}.seed-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.seed{text-align:left;border-radius:var(--r-md);background:var(--surface-light);border:1px solid var(--border);transition:border-color var(--dur-med) var(--ease-out), background var(--dur-med);gap:4px;padding:14px;display:grid}.seed:hover,.seed:focus-visible{background:#d99a520d;border-color:#f3c27a80}.seed canvas{width:52px;height:52px}.seed b{font-size:var(--fs-md);font-weight:600}.seed small{color:var(--text-muted);font-size:13px;font-weight:400;line-height:1.4}.seed small.faint{color:var(--text-faint)}.seed .tag{letter-spacing:.14em;text-transform:uppercase;color:var(--accent-text);font-size:10px;font-weight:600}.progress{background:#efe5d31a;border-radius:4px;height:4px;overflow:hidden}.progress>i{border-radius:inherit;background:linear-gradient(90deg, var(--moss), var(--amber));height:100%;transition:width var(--dur-slow) var(--ease-out);display:block}.care-days{flex-wrap:wrap;gap:6px;display:flex}.care-days i{border:1px solid var(--border-strong);background:0 0;border-radius:50%;place-items:center;width:24px;height:24px;font-size:11px;font-style:normal;font-weight:600;display:grid}.music{z-index:30;padding:12px max(10px, var(--safe-right)) max(10px, var(--safe-bottom)) max(10px, var(--safe-left));animation:sheet-up var(--dur-slow) var(--ease-out);justify-items:center;gap:10px;display:grid;position:fixed;bottom:0;left:0;right:0}.music-panel{border-radius:var(--r-xl);background:#121019eb;gap:12px;width:min(640px,100%);padding:14px;display:grid}.pads{grid-template-columns:repeat(8,1fr);gap:6px;display:grid}@media (width<=420px){.pads{grid-template-columns:repeat(4,1fr)}.music-panel{padding:12px}}.pad{aspect-ratio:1/1.1;border-radius:var(--r-md);touch-action:none;-webkit-user-select:none;user-select:none;background:var(--ink-800);background:linear-gradient(180deg, color-mix(in srgb, var(--c) 34%, transparent), color-mix(in srgb, var(--c) 12%, transparent)), var(--ink-800);min-height:52px;box-shadow:inset 0 1px 0 color-mix(in srgb, var(--c) 45%, transparent);color:var(--text-muted);font-family:var(--font-display);letter-spacing:.02em;transition:filter .22s var(--ease-out), border-color .22s var(--ease-out), background .22s;border:1px solid #efe5d31f;place-items:end center;padding-bottom:8px;font-size:15px;font-weight:400;display:grid;position:relative;overflow:hidden}.pad:before{content:"";aspect-ratio:1;background:var(--c);opacity:.55;filter:blur(.5px);width:34%;transition:opacity .22s var(--ease-out), box-shadow .22s;border-radius:50%;position:absolute;top:32%;left:50%;transform:translate(-50%,-50%)}.pad.hit{filter:brightness(1.25);border-color:color-mix(in srgb, var(--c) 70%, transparent);color:var(--text)}.pad.hit:before{opacity:1;box-shadow:0 0 24px 4px var(--c)}.pad.partner{border-color:var(--pc);box-shadow:inset 0 0 0 1px var(--pc), 0 0 18px -4px var(--pc)}.music-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.music-tools .icon-btn{width:44px;height:44px}.rec{font-size:var(--fs-sm);font-variant-numeric:tabular-nums;align-items:center;gap:10px;display:inline-flex}.rec-dot{background:var(--terracotta);width:8px;height:8px;animation:breathe 1.6s var(--ease-in-out) infinite;border-radius:50%;box-shadow:0 0 0 3px #b8613f40}.overlay{z-index:45;animation:fade var(--dur-slow) var(--ease-out);position:fixed;inset:0}.overlay canvas{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.overlay .top{top:max(10px, var(--safe-top));left:max(10px, var(--safe-left));right:max(10px, var(--safe-right));justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:absolute}.overlay .bottom{bottom:max(10px, var(--safe-bottom));left:max(10px, var(--safe-left));right:max(10px, var(--safe-right));flex-wrap:wrap;justify-content:center;gap:8px;display:flex;position:absolute}.sky-title{border-radius:var(--r-lg);max-width:min(70vw,420px);padding:12px 18px 13px}.sky-title b{font-family:var(--font-display);font-weight:var(--w-display);font-size:var(--fs-lg);letter-spacing:var(--track-display);line-height:1.2;display:block}.sky-title span{color:var(--text-muted);font-size:var(--fs-sm);margin-top:2px;font-weight:400;line-height:1.4;display:block}.name-form{border-radius:var(--r-lg);align-items:center;gap:6px;width:min(480px,100%);padding:6px;display:flex}.name-form .input{flex:1;min-width:0;min-height:44px}.name-form .icon-btn{width:44px;height:44px}.sky-chips{border-radius:var(--r-lg);scrollbar-width:none;flex-wrap:nowrap;align-items:center;max-width:100%;padding:6px;overflow-x:auto}.sky-chips::-webkit-scrollbar{display:none}.sky-chips .chip{flex:none}.sky-count{letter-spacing:.02em;white-space:nowrap;color:var(--text-muted);align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.sky-count svg{width:13px;height:13px;color:var(--glow)}.spinner{border:1.5px solid #12101940;border-top-color:currentColor;border-radius:50%;width:20px;height:20px;animation:1.1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-fill{place-items:center;display:grid;position:fixed;inset:0}.vase-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;display:grid}.vase-item{border-radius:var(--r-md);background:var(--surface-light);border:1px solid var(--border);text-align:center;color:var(--text);justify-items:center;gap:4px;padding:14px 8px;font-size:13px;font-weight:500;display:grid}.vase-item .faint{font-size:12px;font-weight:400}.vase-item canvas{width:48px;height:48px}.vase-item .btn{margin-top:6px}.big-number{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:0;font-size:clamp(2.4rem,10vw,3.4rem);font-weight:300;line-height:1.05}.melody-list{gap:8px;display:grid}.melody{border-radius:var(--r-md);background:var(--surface-light);border:1px solid var(--border);align-items:center;gap:14px;padding:8px 16px 8px 8px;display:flex}.melody .icon-btn{-webkit-backdrop-filter:none;background:0 0;width:44px;height:44px}.melody .meta{min-width:0;font-size:var(--fs-sm);flex:1;font-weight:500}.melody .meta small{color:var(--text-muted);font-size:13px;font-weight:400;display:block}.new-dot{background:var(--rose);border-radius:50%;flex:none;width:7px;height:7px;box-shadow:0 0 0 3px #c48a8a33}.ask-hand{border-radius:var(--r-md);min-height:52px;font-weight:500;font-size:var(--fs-sm);border-color:#c48a8a66;align-items:center;gap:10px;padding:4px 4px 4px 16px;display:flex}.ask-hand svg{width:18px;height:18px;color:var(--rose);flex:none}.lede{color:var(--text-muted);margin:0 0 18px;line-height:1.55}.foot-note{color:var(--text-faint);font-size:13px;line-height:1.5}.setting-row{min-height:60px;padding:10px 14px 10px 18px}.colophon{color:var(--text-faint);font-family:var(--font-display);font-style:italic;font-weight:300;font-size:var(--fs-sm);text-align:center}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.screen-inner>.stack{flex-direction:column;flex:1;gap:18px;display:flex}.key-guide{color:#efe5d3d1;text-shadow:0 1px 3px #0a0810b3;opacity:0;flex-wrap:wrap;justify-content:center;gap:4px 14px;max-width:min(92vw,720px);padding:6px 12px;font-size:12.5px;transition:opacity .9s;display:flex;pointer-events:none!important}.key-guide.on{opacity:1}.key-guide .dim{opacity:.6}.key-guide kbd{text-align:center;color:#efe5d3f2;background:#12101959;border:1px solid #efe5d359;border-radius:5px;min-width:1.6em;margin-right:3px;padding:0 5px;font:600 11px/1.6 "Source Sans 3 Variable",system-ui,sans-serif;display:inline-block}.key-guide.main{width:100%;padding-top:0;font-size:13px}.key-guide.main kbd{color:#f3d6a0;border-color:#f3c27a99}.range{width:100%;accent-color:var(--amber,#f3c27a);height:28px;margin:4px 0 6px}.arrive{background:var(--ink-900);position:fixed;inset:0;overflow:hidden}.arrive-bg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.arrive-top{left:0;right:0;top:max(18px, var(--safe-top));pointer-events:none;justify-items:center;display:grid;position:absolute}.arrive-top .logo-mark{filter:drop-shadow(0 10px 30px #0a091073);width:clamp(150px,min(24vw,30vh),300px)}.arrive-people{pointer-events:none;position:absolute;inset:0}.arrive-person{pointer-events:auto;color:var(--cream);cursor:pointer;background:0 0;border:0;border-radius:14px;flex-direction:column;justify-content:flex-end;align-items:center;gap:2px;padding:0 0 4px;display:flex;position:absolute}.arrive-person:focus-visible{outline-offset:4px;outline:2px solid #f3c27a99}.arrive-door{left:50%;bottom:max(22px, var(--safe-bottom));width:min(360px, calc(100% - 2 * var(--gutter)));text-align:center;border-radius:var(--r-lg);-webkit-backdrop-filter:blur(14px)saturate(1.1);background:#100f189e;border:1px solid #efe5d314;gap:12px;padding:20px 20px 14px;display:grid;position:absolute;transform:translate(-50%)}.arrive-door h1{color:var(--cream);margin:0 0 2px;font-size:1.375rem}.arrive-door p{color:var(--text-muted);margin:0;font-size:.95rem}.arrive-door .error-text{margin:-4px 0 0}.arrive-door .input,.arrive-door .btn{border-radius:999px;padding-inline:22px}.arrive-invite{color:var(--text-faint);font-size:var(--fs-sm);cursor:pointer;background:0 0;border:0;padding:6px}.arrive-invite:hover{color:var(--text-muted)}.arrive-failed{z-index:60;background:radial-gradient(90% 55% at 50% 100%,#966e7859,#0000 70%),linear-gradient(#2b2c4a 0%,#3b3552 45%,#5b4658 75%,#2a2230 100%)}.arrive-failed .arrive-door{top:50%;bottom:auto;transform:translate(-50%,-30%)}.arrive-failed .arrive-door p{margin-bottom:4px;line-height:1.5}.arrive-door .field{text-align:left;gap:6px;display:grid}.arrive-door .field label{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding-left:18px;font-size:12px}.arrive-door .select{border-radius:999px;padding-inline:22px 40px}.arrive-door .steps{margin:0 0 4px}.arrive-door .invite-code{border-radius:999px;padding:16px;font-size:clamp(1.05rem,4.6vw,1.35rem)}.arrive-door .invite-input{text-align:center;letter-spacing:.06em;font-family:ui-monospace,SF Mono,Menlo,monospace}.arrive-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.arrive-row .btn{border-radius:999px}.arrive-note{color:var(--text-faint)!important;font-size:var(--fs-sm)!important}.arrive-door.arrive-sheet{width:min(560px, calc(100% - 2 * var(--gutter)));top:max(64px, calc(var(--safe-top) + 56px));bottom:max(16px, var(--safe-bottom));flex-direction:column;padding-bottom:18px;display:flex}.arrive-scroll{overscroll-behavior:contain;flex:1;align-content:start;gap:12px;min-height:0;margin:0 -20px;padding:0 20px 8px;display:grid;overflow-y:auto}.arrive-sheet>.btn-primary{flex:none}.arrive .back-btn{z-index:3;color:var(--cream)}
