:root{--blue: #B9DDF2;--blue-soft: #CFE6F5;--blue-deep: #5E9CC4;--bg: #E4F1FA;--card: #FFFFFF;--pink: #F6D6E2;--pink-deep: #D98BA8;--ink: #26394A;--ink-soft: #5B6E7F;--ink-faint: #8A9AA8;--sage: #83B5A6;--sage-soft: #E2F0EB;--line: #D6E5EF;--gold: #C2A15F;--gold-soft: #F4ECD9;--parchment: #FBF6EA;--night: #24324A;--danger: #C8566F;--radius: 18px;--radius-sm: 12px;--shadow: 0 1px 2px rgba(38, 57, 74, .05), 0 6px 18px rgba(38, 57, 74, .07);--shadow-lg: 0 10px 40px rgba(38, 57, 74, .16);--serif: "Playfair Display", Georgia, serif;--sans: "Nunito", system-ui, -apple-system, sans-serif;--mark: "Cinzel", "Playfair Display", serif;--nav-h: 68px;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}img{max-width:100%;display:block}a{color:var(--blue-deep)}h1,h2,h3{font-family:var(--serif);font-weight:600;margin:0;letter-spacing:-.01em}h1{font-size:30px;line-height:1.1}h2{font-size:22px;line-height:1.2}h3{font-size:18px;line-height:1.25}p{margin:0}.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.small{font-size:14px}.tiny{font-size:12.5px}.center{text-align:center}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:12px}.stack.tight{gap:6px}.stack.loose{gap:22px}.grow{flex:1;min-width:0}.hidden{display:none!important}.app{max-width:600px;margin:0 auto;min-height:100dvh;padding:0 16px calc(var(--nav-h) + 28px + env(safe-area-inset-bottom));position:relative}.page{padding-top:calc(14px + env(safe-area-inset-top));animation:pagein .25s ease}@keyframes pagein{0%{opacity:0}to{opacity:1}}.topbar{display:flex;align-items:center;gap:12px;margin-bottom:18px;min-height:44px}.topbar h1{flex:1}.back{width:40px;height:40px;border-radius:50%;border:0;background:var(--card);box-shadow:var(--shadow);display:grid;place-items:center;flex:none}.wordmark{font-family:var(--mark);font-weight:600;letter-spacing:.04em;font-size:15px;color:var(--ink)}.wordmark .spark{color:var(--gold)}.nav{position:fixed;left:0;right:0;bottom:0;z-index:40;background:#fffffff0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.nav-inner{max-width:600px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr);height:var(--nav-h)}.nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--ink-faint);font-size:11px;font-weight:700;min-width:0}.nav a.on{color:var(--ink)}.nav a .pill{padding:4px 12px;border-radius:999px;transition:background .2s;display:grid;place-items:center}.nav a.on .pill{background:var(--blue)}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card.flat{box-shadow:none;border:1px solid var(--line)}.card.blue{background:var(--blue-soft);box-shadow:none}.card.pink{background:#fceef3;box-shadow:none}.card.sage{background:var(--sage-soft);box-shadow:none}.card.parch{background:var(--parchment);box-shadow:none;border:1px solid #EFE3C8}.card.night{background:var(--night);color:#f2f6fa;box-shadow:var(--shadow);background-image:radial-gradient(1.2px 1.2px at 12% 22%,#fff9 50%,transparent 51%),radial-gradient(1px 1px at 78% 18%,#fff8 50%,transparent 51%),radial-gradient(1.4px 1.4px at 62% 74%,#ffe9b8aa 50%,transparent 51%),radial-gradient(1px 1px at 30% 82%,#fff7 50%,transparent 51%),radial-gradient(1px 1px at 90% 60%,#fff6 50%,transparent 51%)}.card.night .muted{color:#c5d3e0}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:26px 2px 10px}.section-head h2{font-size:20px}.section-head a,.link-btn{font-size:14px;font-weight:700;color:var(--blue-deep);text-decoration:none;background:none;border:0;padding:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:12px 18px;font-weight:800;font-size:15px;background:var(--ink);color:#fff;min-height:46px;text-decoration:none;transition:transform .12s ease,opacity .2s}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5}.btn.blue{background:var(--blue);color:var(--ink)}.btn.pink{background:var(--pink);color:var(--ink)}.btn.sage{background:var(--sage);color:#fff}.btn.ghost{background:var(--card);color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}.btn.gold{background:var(--gold);color:#fff}.btn.danger{background:#fbe7ec;color:var(--danger)}.btn.small{padding:8px 12px;min-height:36px;font-size:14px;border-radius:11px}.btn.block{width:100%}.btn .spell{font-family:var(--serif);font-style:italic;font-weight:500;opacity:.75;font-size:13px}.icon-btn{width:40px;height:40px;border-radius:12px;border:0;background:var(--card);display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px var(--line);flex:none}.icon-btn.plain{box-shadow:none;background:transparent}.icon-btn.on{background:var(--pink);box-shadow:none}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;background:var(--card);border:1.5px solid var(--line);font-size:14px;font-weight:700;white-space:nowrap;color:var(--ink-soft)}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 16px 6px;margin:0 -16px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.tag{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:700;color:var(--ink-soft)}.badge{display:inline-block;font-size:11.5px;font-weight:800;padding:3px 8px;border-radius:999px;background:var(--blue-soft);color:var(--ink)}.badge.pink{background:var(--pink)}.badge.sage{background:var(--sage-soft);color:#3f7466}.badge.gold{background:var(--gold-soft);color:#8a6b2e}label.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:700;color:var(--ink-soft)}.input,textarea.input,select.input{width:100%;border:1.5px solid var(--line);background:#fff;border-radius:12px;padding:11px 13px;font-size:16px;color:var(--ink);outline:none;transition:border-color .15s}.input:focus{border-color:var(--blue-deep)}textarea.input{resize:vertical;min-height:90px;line-height:1.45}.search{position:relative}.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--ink-faint)}.search .input{padding-left:40px;background:var(--card);border-color:transparent;box-shadow:var(--shadow)}.rgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.rcard{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);text-decoration:none;color:inherit;display:flex;flex-direction:column;position:relative}.rcard .ph{aspect-ratio:4/3;background:var(--blue-soft);position:relative;overflow:hidden}.rcard .ph img{width:100%;height:100%;object-fit:cover}.rcard .body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:4px}.rcard h3{font-size:15.5px;font-family:var(--sans);font-weight:800;letter-spacing:0}.rcard .heart{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;background:#fffd;display:grid;place-items:center;color:var(--pink-deep)}.rrow{display:flex;gap:12px;align-items:center;background:var(--card);border-radius:var(--radius);padding:10px;box-shadow:var(--shadow);text-decoration:none;color:inherit}.rrow .ph{width:74px;height:74px;border-radius:13px;overflow:hidden;flex:none;background:var(--blue-soft)}.rrow .ph img{width:100%;height:100%;object-fit:cover}.rrow h3{font-size:16px;font-family:var(--sans);font-weight:800;letter-spacing:0}.ph-fallback{width:100%;height:100%;display:grid;place-items:center;font-size:34px;background:linear-gradient(135deg,var(--blue-soft),#FCEEF3)}.hero-img{margin:0 -16px;aspect-ratio:16/11;overflow:hidden;position:relative;background:var(--blue-soft)}.hero-img img{width:100%;height:100%;object-fit:cover}.hero-img .top-actions{position:absolute;top:calc(12px + env(safe-area-inset-top));left:12px;right:12px;display:flex;justify-content:space-between}.hero-img .top-actions .back,.hero-img .top-actions .icon-btn{background:#fffe;box-shadow:var(--shadow)}.sheet-top{margin:-26px -16px 0;position:relative;background:var(--bg);border-radius:24px 24px 0 0;padding:20px 16px 0}.ing{display:flex;gap:12px;padding:11px 0;border-bottom:1px solid var(--line);align-items:flex-start}.ing:last-child{border-bottom:0}.ing .dot{width:8px;height:8px;border-radius:50%;background:var(--blue);margin-top:8px;flex:none}.step{display:flex;gap:14px;padding:12px 0}.step .n{width:30px;height:30px;border-radius:50%;background:var(--blue-soft);font-weight:800;display:grid;place-items:center;flex:none;font-size:14px}.stepper{display:inline-flex;align-items:center;background:var(--card);border-radius:12px;box-shadow:inset 0 0 0 1.5px var(--line)}.stepper button{border:0;background:none;width:38px;height:38px;display:grid;place-items:center}.stepper span{min-width:34px;text-align:center;font-weight:800}.scrim{position:fixed;inset:0;background:#1c28366b;z-index:80;animation:fade .2s ease both}@keyframes fade{0%{opacity:0}}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:81;max-height:92dvh;overflow-y:auto;background:var(--bg);border-radius:24px 24px 0 0;box-shadow:var(--shadow-lg);padding:10px 18px calc(22px + env(safe-area-inset-bottom));max-width:600px;margin:0 auto;animation:up .28s cubic-bezier(.2,.9,.3,1) both}@keyframes up{0%{transform:translateY(100%)}}.sheet .grab{width:42px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 14px}.sheet-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px}.option{display:flex;gap:14px;align-items:center;padding:14px;border-radius:16px;background:var(--card);box-shadow:var(--shadow);border:0;text-align:left;width:100%}.option .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--blue-soft);flex:none}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + 18px + env(safe-area-inset-bottom));z-index:90;background:var(--ink);color:#fff;padding:11px 18px;border-radius:14px;font-weight:700;font-size:14.5px;box-shadow:var(--shadow-lg);animation:toast .3s ease both;max-width:calc(100% - 32px);text-align:center}.toast.err{background:var(--danger)}@keyframes toast{0%{opacity:0;transform:translate(-50%,10px)}}.grundy-card{display:flex;gap:14px;align-items:center}.bubble{background:var(--card);border-radius:18px 18px 18px 6px;padding:12px 14px;box-shadow:var(--shadow);max-width:86%;white-space:pre-wrap;word-wrap:break-word}.bubble.me{background:var(--blue);border-radius:18px 18px 6px;margin-left:auto;box-shadow:none}.bubble p+p{margin-top:8px}.chat-wrap{display:flex;flex-direction:column;gap:12px;padding-bottom:150px}.composer{position:fixed;left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:30;background:linear-gradient(to top,var(--bg) 70%,transparent);padding:18px 16px 10px}.composer-inner{max-width:568px;margin:0 auto;display:flex;gap:8px;align-items:flex-end;background:var(--card);border-radius:22px;padding:6px 6px 6px 8px;box-shadow:var(--shadow-lg)}.composer textarea{flex:1;border:0;outline:none;resize:none;padding:9px 4px;max-height:160px;background:transparent;font-size:16px}.send{width:40px;height:40px;border-radius:50%;background:var(--ink);color:#fff;border:0;display:grid;place-items:center;flex:none}.typing span{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ink-faint);margin-right:4px;animation:blink 1.2s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.25}30%{opacity:1}}.week-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.day{background:var(--card);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);min-height:70px;transition:box-shadow .15s,background .15s}.day.today{box-shadow:0 0 0 2px var(--blue),var(--shadow)}.day.over{background:var(--blue-soft)}.day-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.day-head b{font-size:15px}.meal{display:flex;gap:10px;align-items:center;padding:8px;border-radius:13px;background:var(--bg);touch-action:none}.meal+.meal{margin-top:8px}.meal .ph{width:50px;height:50px;border-radius:10px;overflow:hidden;flex:none;background:var(--blue-soft)}.meal .ph img{width:100%;height:100%;object-fit:cover}.meal.drag{opacity:.4}.meal.lefty{background:var(--sage-soft)}.handle{color:var(--ink-faint);padding:6px 2px;cursor:grab;touch-action:none}.drag-ghost{box-shadow:var(--shadow-lg);background:#fff;transform:rotate(-1.5deg)}.empty-day{display:flex;gap:8px}.empty-day button{flex:1;border:1.5px dashed var(--line);background:none;border-radius:12px;padding:10px;font-weight:700;color:var(--ink-faint);font-size:14px}.dept{margin-top:18px}.dept h4{margin:0 0 6px 2px;font-size:13px;font-weight:800;color:var(--ink-faint);letter-spacing:.02em}.item{display:flex;align-items:center;gap:12px;padding:11px 12px;background:var(--card);border-radius:14px;box-shadow:var(--shadow)}.item+.item{margin-top:7px}.check{width:26px;height:26px;border-radius:8px;border:2px solid var(--blue-deep);display:grid;place-items:center;flex:none;background:#fff;color:#fff;transition:all .15s}.item.done .check{background:var(--sage);border-color:var(--sage)}.item.done .name{text-decoration:line-through;color:var(--ink-faint)}.price{font-weight:800;font-size:14.5px;white-space:nowrap}.src{font-size:11px;font-weight:800;color:var(--ink-faint)}.progress{height:10px;background:var(--line);border-radius:99px;overflow:hidden}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--blue-deep),var(--sage));border-radius:99px;transition:width .4s ease}.progress.over>i{background:var(--danger)}.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--line);border-radius:13px;padding:3px;gap:3px}.seg button{border:0;background:none;padding:9px;border-radius:10px;font-weight:800;font-size:14px;color:var(--ink-soft)}.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 4px #00000012}.cook{position:fixed;inset:0;z-index:70;background:var(--bg);display:flex;flex-direction:column;padding:calc(12px + env(safe-area-inset-top)) 18px calc(18px + env(safe-area-inset-bottom))}.cook-inner{max-width:640px;margin:0 auto;width:100%;height:100%;display:flex;flex-direction:column}.cook-step{flex:1;display:flex;flex-direction:column;justify-content:center;gap:18px}.cook-step .big{font-size:25px;line-height:1.38;font-weight:700}.dots{display:flex;gap:5px}.dots i{flex:1;height:5px;border-radius:3px;background:var(--line)}.dots i.on{background:var(--blue-deep)}.timer{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;background:var(--card);box-shadow:var(--shadow)}.timer .t{font-variant-numeric:tabular-nums;font-weight:800;font-size:22px;min-width:76px}.timer.ring{background:var(--pink);animation:ring 1s infinite}@keyframes ring{50%{transform:scale(1.02)}}.empty{text-align:center;padding:30px 16px;color:var(--ink-soft);display:flex;flex-direction:column;align-items:center;gap:10px}.spinner{width:22px;height:22px;border-radius:50%;border:3px solid var(--blue);border-top-color:var(--ink);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.divider{height:1px;background:var(--line);margin:14px 0}.points{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:#8a6b2e;background:var(--gold-soft);padding:4px 10px;border-radius:999px;font-size:13px}.spell-line{font-family:var(--serif);font-style:italic;color:var(--gold);font-size:14px}.sparkle{color:var(--gold)}.lesson{display:flex;gap:12px;align-items:center;padding:13px;background:var(--card);border-radius:15px;box-shadow:var(--shadow);width:100%;border:0;text-align:left}.lesson+.lesson{margin-top:8px}.lesson .mark{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:var(--blue-soft);flex:none;font-weight:800}.lesson.done .mark{background:var(--sage);color:#fff}.family-card{background:var(--parchment);border:1px solid #EFE3C8;border-radius:16px;padding:14px;text-decoration:none;color:inherit;display:flex;gap:12px;align-items:center;box-shadow:0 1px #efe3c8}.family-card h3{font-family:var(--serif);font-size:18px}.scan-img{border-radius:14px;overflow:hidden;border:1px solid var(--line)}.takeout{display:flex;gap:10px}.takeout a{flex:1;text-decoration:none;color:#fff;font-weight:800;text-align:center;padding:12px;border-radius:13px}.auth{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:22px;padding:30px 6px}.house-dot{width:14px;height:14px;border-radius:50%;display:inline-block}.md p+p,.md ul,.md ol{margin-top:8px}.md ul,.md ol{padding-left:20px;margin-bottom:0}.md h4{margin:10px 0 4px;font-size:15px}.fab{position:fixed;right:max(16px,calc(50% - 284px));bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));z-index:35;width:56px;height:56px;border-radius:18px;background:var(--ink);color:#fff;border:0;display:grid;place-items:center;box-shadow:var(--shadow-lg)}@media(min-width:520px){.rgrid{grid-template-columns:1fr 1fr 1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.door{display:flex;align-items:center;gap:16px;padding:18px;border-radius:20px;box-shadow:var(--shadow);width:100%;text-align:left;transition:transform .12s ease}.door:active{transform:scale(.98)}.door-ic{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;flex:none}.door-title{display:block;font-family:var(--serif);font-size:21px;font-weight:600;line-height:1.15}.door-line{display:block;font-size:14.5px;opacity:.8;margin-top:3px}.night-door{background-image:radial-gradient(1px 1px at 80% 25%,#fff9 50%,transparent 51%),radial-gradient(1.3px 1.3px at 65% 75%,#ffe9b8aa 50%,transparent 51%),radial-gradient(1px 1px at 92% 70%,#fff7 50%,transparent 51%)}.intro{position:fixed;inset:0;z-index:100;background:radial-gradient(ellipse at 50% 40%,#33476a,#1b2638 70%);display:grid;place-items:center;overflow:hidden;transition:opacity .5s ease;cursor:pointer}.intro.out{opacity:0;pointer-events:none}.intro-stars{position:absolute;inset:-20%;background-image:radial-gradient(1.2px 1.2px at 10% 20%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 30% 70%,#fffc 50%,transparent 51%),radial-gradient(1.5px 1.5px at 55% 15%,#F4E7C8 50%,transparent 51%),radial-gradient(1px 1px at 80% 40%,#fffa 50%,transparent 51%),radial-gradient(1.2px 1.2px at 70% 85%,#fff 50%,transparent 51%),radial-gradient(1px 1px at 20% 45%,#F4E7C8 50%,transparent 51%),radial-gradient(1.3px 1.3px at 90% 15%,#fffb 50%,transparent 51%),radial-gradient(1px 1px at 45% 55%,#fff8 50%,transparent 51%);background-size:300px 300px;animation:twinkle 2.4s ease-in-out infinite alternate,drift 30s linear infinite}@keyframes twinkle{0%{opacity:.45}to{opacity:1}}@keyframes drift{to{transform:translateY(-60px)}}.intro-stage{position:absolute;left:50%;top:44%;width:320px;height:280px;transform:translate(-50%,-50%) scale(1.15)}@media(min-width:700px){.intro-stage{transform:translate(-50%,-50%) scale(1.7)}.intro-word{top:calc(44% + 190px)!important}.intro-word>span{font-size:40px!important}}.intro-svg{position:absolute;inset:0;width:320px;height:280px}.intro-trail{stroke-dasharray:700;stroke-dashoffset:700;animation:draw 1.3s cubic-bezier(.5,.1,.3,1) forwards,trailfade .8s ease 1.4s forwards;filter:drop-shadow(0 0 4px #F4E7C8)}@keyframes draw{to{stroke-dashoffset:0}}@keyframes trailfade{to{opacity:.15}}.intro-spark{position:absolute;left:0;top:0;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#fff;box-shadow:0 0 10px 4px #f4e7c8,0 0 30px 10px #c2a15f88;offset-rotate:0deg;animation:fly 1.3s cubic-bezier(.5,.1,.3,1) forwards,pop .5s ease 1.3s forwards}@keyframes fly{0%{offset-distance:0%}to{offset-distance:100%}}@keyframes pop{50%{transform:scale(3);opacity:1}to{transform:scale(.2);opacity:0}}.intro-word{position:absolute;left:0;right:0;top:calc(44% + 140px);text-align:center}.intro-word>span{font-family:var(--mark);font-size:30px;font-weight:600;letter-spacing:.08em;color:transparent;background:linear-gradient(100deg,#c2a15f 20%,#fff 45%,#f4e7c8 55%,#c2a15f 80%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;opacity:0;animation:wordin .7s ease 1.2s forwards,shimmer 1.6s ease 1.3s forwards}@keyframes wordin{0%{opacity:0;transform:translateY(8px);letter-spacing:.2em}to{opacity:1;transform:none;letter-spacing:.08em}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.door{opacity:0;animation:doorin .5s cubic-bezier(.2,.9,.3,1) forwards}.door:nth-child(1){animation-delay:.05s}.door:nth-child(2){animation-delay:.15s}.door:nth-child(3){animation-delay:.25s}.door:nth-child(4){animation-delay:.35s}@keyframes doorin{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}.welcome-hero .grundy-float{animation:float 4s ease-in-out infinite}@keyframes float{50%{transform:translateY(-5px)}}@media(prefers-reduced-motion:reduce){.door{opacity:1}}.pensieve-hero{position:relative;overflow:hidden;padding:26px 20px;min-height:130px;display:flex;align-items:flex-end}.basin{position:absolute;right:-30px;top:-30px;width:170px;height:170px}.basin span{position:absolute;inset:0;border-radius:50%;border:2px solid #C9D6E8;opacity:.35;animation:swirl 9s linear infinite}.basin span:nth-child(2){inset:22px;opacity:.5;animation-duration:6s;animation-direction:reverse;border-color:#f4e7c8;border-style:dashed}.basin span:nth-child(3){inset:48px;opacity:.6;animation-duration:4s;background:radial-gradient(circle,#ffffff40,transparent 70%)}@keyframes swirl{to{transform:rotate(360deg)}}.memory{display:flex;gap:12px;align-items:center;background:var(--card);border-radius:16px;padding:10px;box-shadow:var(--shadow)}.memory.on{box-shadow:0 0 0 2px var(--gold),var(--shadow)}.memory-play{width:58px;height:58px;border-radius:14px;border:0;background:var(--night);position:relative;overflow:hidden;display:grid;place-items:center;flex:none;padding:0}.memory-play img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.75}.memory-play .mp-ic{position:relative;width:32px;height:32px;border-radius:50%;background:#fffe;display:grid;place-items:center;color:var(--night)}.memory-play svg+.mp-ic{position:absolute}.memory-text{border:0;background:none;text-align:left;padding:0;display:flex;flex-direction:column;gap:2px}.scrub{width:100%;margin:12px 0 2px;accent-color:#F4E7C8}.mini-player{position:fixed;left:0;right:0;bottom:calc(var(--nav-h) + env(safe-area-inset-bottom));z-index:39;padding:0 12px 8px}.mini-inner{max-width:576px;margin:0 auto;background:var(--night);color:#fff;border-radius:16px;padding:8px 8px 8px 14px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-lg)}.mini-inner b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.worlds{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.world{display:flex;flex-direction:column;align-items:center;gap:6px;width:70px;animation:worldin .5s cubic-bezier(.2,.9,.3,1) both}.world-ic{width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:var(--blue-soft);color:var(--ink)}.world-label{font-size:12px;font-weight:800;color:var(--ink-soft)}.worlds.dark .world-ic{background:#ffffff18;color:#f4e7c8;box-shadow:inset 0 0 0 1px #f4e7c855}.worlds.dark .world-label{color:#c5d3e0}.world:nth-child(1) .world-ic{color:var(--blue)}.world:nth-child(3) .world-ic{color:var(--pink)}@keyframes worldin{0%{opacity:0;transform:translateY(8px) scale(.9)}}.intro-worlds{margin-top:22px}.intro-worlds .world{animation-delay:1.9s!important;opacity:0;animation-fill-mode:forwards}.intro-worlds .world:nth-child(2){animation-delay:2.05s!important}.intro-worlds .world:nth-child(3){animation-delay:2.2s!important}.intro-worlds .world:nth-child(4){animation-delay:2.35s!important}@keyframes worldin2{to{opacity:1;transform:none}}.intro-worlds .world{animation-name:worldin2;transform:translateY(8px) scale(.9)}.grundy .g-head,.grundy .g-ear-l,.grundy .g-ear-r,.grundy .g-lid,.grundy .g-breathe{transform-box:fill-box}.grundy.alive .g-head{transform-origin:50% 90%;animation:g-bob 5s ease-in-out infinite}.grundy.alive .g-breathe{transform-origin:50% 100%;animation:g-breathe 3.2s ease-in-out infinite}.grundy.alive .g-lid{transform-origin:50% 0%;animation:g-blink 5.5s infinite}.grundy.alive .g-ear-l{transform-origin:90% 60%;animation:g-ear 7s ease-in-out infinite}.grundy.alive .g-ear-r{transform-origin:10% 60%;animation:g-ear-r 9s ease-in-out 2s infinite}.grundy.thinking .g-head{animation:g-think 1.6s ease-in-out infinite}.grundy.wink .g-lid:first-of-type{transform:scaleY(2.1)}@keyframes g-bob{0%,to{transform:rotate(0) translateY(0)}30%{transform:rotate(-2deg) translateY(-.6px)}60%{transform:rotate(1.5deg) translateY(0)}}@keyframes g-breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.04)}}@keyframes g-blink{0%,90%,to{transform:scaleY(1)}93%,96%{transform:scaleY(2.2)}}@keyframes g-ear{0%,80%,to{transform:rotate(0)}84%{transform:rotate(-14deg)}88%{transform:rotate(4deg)}92%{transform:rotate(-8deg)}}@keyframes g-ear-r{0%,85%,to{transform:rotate(0)}89%{transform:rotate(12deg)}93%{transform:rotate(-3deg)}}@keyframes g-think{0%,to{transform:rotate(-7deg)}50%{transform:rotate(-3deg) translateY(-1px)}}@media(prefers-reduced-motion:reduce){.grundy *{animation:none!important}}.intro{background:radial-gradient(ellipse at 50% 35%,#34486b,#1a2436 62%,#111827)}.candle{position:absolute;width:10px;height:34px;opacity:0;animation:candle-bob 3.6s ease-in-out infinite,candle-in 1.6s ease forwards}.candle .wax{position:absolute;bottom:0;left:0;width:10px;height:26px;border-radius:2px;background:linear-gradient(90deg,#ede4d3,#fffdf7 45%,#d9cdb6)}.candle .flame{position:absolute;top:0;left:1px;width:8px;height:11px;border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff6d0,#ffc857 55%,#ff8a3d);box-shadow:0 0 12px 4px #ffc85766,0 0 30px 10px #ffc85722;animation:flicker .18s ease-in-out infinite alternate}@keyframes candle-in{to{opacity:.95}}@keyframes candle-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-9px)}}@keyframes flicker{0%{transform:scaleY(1) rotate(-2deg)}to{transform:scaleY(1.12) rotate(2deg)}}.castle{position:absolute;left:0;right:0;bottom:0;width:100%;height:30vh;transform:translateY(100%);animation:castle-up 2.2s cubic-bezier(.2,.8,.3,1) .3s forwards}.castle .windows rect{opacity:0;animation:window-on .4s ease forwards}.castle .windows rect:nth-child(1){animation-delay:2.4s}.castle .windows rect:nth-child(2){animation-delay:2.7s}.castle .windows rect:nth-child(3){animation-delay:2.95s}.castle .windows rect:nth-child(4){animation-delay:3.2s}.castle .windows rect:nth-child(5){animation-delay:3.45s}@keyframes castle-up{to{transform:translateY(0)}}@keyframes window-on{to{opacity:1}}.intro-stage{top:42%!important}.intro-trail{animation:draw 2s cubic-bezier(.5,.1,.3,1) 1.1s forwards,trailfade 1.2s ease 3.4s forwards!important}.intro-spark{opacity:0;animation:fly 2s cubic-bezier(.5,.1,.3,1) 1.1s forwards,sparkon .01s linear 1.1s forwards,pop .7s ease 3.1s forwards!important}@keyframes sparkon{to{opacity:1}}.intro-center{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}.intro-grundy{opacity:0;transform:scale(.3);animation:grundy-pop .8s cubic-bezier(.3,1.6,.5,1) 5.1s forwards;border-radius:50%;box-shadow:0 0 0 3px #f4e7c8,0 0 40px 6px #f4e7c855}@keyframes grundy-pop{to{opacity:1;transform:scale(1)}}.intro-title{width:min(92vw,520px);height:auto;overflow:visible}.intro-title text{font-family:var(--mark);font-size:38px;font-weight:600;letter-spacing:2px}.title-stroke{fill:none;stroke:#f4e7c8;stroke-width:.8;stroke-dasharray:600;stroke-dashoffset:600;animation:write 2.4s ease-in-out 2.5s forwards,strokefade .9s ease 5s forwards}.title-fill{opacity:0;animation:fillin 1.2s ease 4.2s forwards;filter:drop-shadow(0 0 8px #F4E7C866)}@keyframes write{to{stroke-dashoffset:0}}@keyframes strokefade{to{opacity:0}}@keyframes fillin{to{opacity:1}}.burst{position:absolute;left:50%;top:50%;width:0;height:0}.burst i{position:absolute;width:6px;height:6px;margin:-3px;border-radius:50%;background:#fff4d6;box-shadow:0 0 8px 2px #f4e7c8;opacity:0;animation:burst 1.3s ease-out 4.7s forwards}.burst i:nth-child(3n){width:4px;height:4px;background:#f6d6e2}.burst i:nth-child(4n){background:#b9ddf2}@keyframes burst{0%{opacity:1;transform:rotate(var(--a)) translate(0) scale(1)}to{opacity:0;transform:rotate(var(--a)) translate(var(--d)) scale(.3)}}.intro-worlds{margin-top:10px!important}.intro-worlds .world{animation-delay:6s!important}.intro-worlds .world:nth-child(2){animation-delay:6.25s!important}.intro-worlds .world:nth-child(3){animation-delay:6.5s!important}.intro-worlds .world:nth-child(4){animation-delay:6.75s!important}.intro-skip{position:absolute;bottom:calc(18px + env(safe-area-inset-bottom));left:0;right:0;text-align:center;font-size:12px;color:#c5d3e0;opacity:0;animation:fillin .6s ease 1.5s forwards;z-index:2}.intro-worlds .world{animation-duration:.7s!important}.intro .title-fill{animation:fillin 1.2s ease 4.2s forwards,titleglow 1.6s ease-in-out 6.6s forwards}@keyframes titleglow{50%{filter:drop-shadow(0 0 16px #FFF4D6)}}.grundy-fab{position:fixed;z-index:38;right:max(10px,calc(50% - 290px));bottom:calc(var(--nav-h) + 12px + env(safe-area-inset-bottom));width:62px;height:62px;border-radius:50%;display:grid;place-items:center;background:#fff;box-shadow:0 6px 22px #26394a40,0 0 0 3px var(--blue);animation:fab-in .5s cubic-bezier(.3,1.5,.5,1) both,fab-hop 6s ease-in-out 2s infinite}.grundy-fab:active{transform:scale(.94)}@keyframes fab-in{0%{opacity:0;transform:scale(.4)}}@keyframes fab-hop{0%,88%,to{transform:translateY(0)}92%{transform:translateY(-8px)}96%{transform:translateY(0)}}.mini-player~.grundy-fab{bottom:calc(var(--nav-h) + 80px + env(safe-area-inset-bottom))}@media(prefers-reduced-motion:reduce){.grundy-fab{animation:none}}.mini-player{z-index:45}.mini-player.no-nav{bottom:env(safe-area-inset-bottom)}.mini-inner{flex-direction:column;align-items:stretch;gap:2px;padding:10px 12px 8px}.mini-cover{width:42px;height:42px;border-radius:10px;overflow:hidden;flex:none;background:#ffffff1c;display:grid;place-items:center}.mini-cover img{width:100%;height:100%;object-fit:cover}.mini-player .scrub{margin:8px 0 0;height:18px}.mini-controls{display:grid;grid-template-columns:40px repeat(5,1fr) 40px;align-items:center}.mini-controls button{border:0;background:none;color:#fff;height:40px;display:grid;place-items:center;position:relative}.mini-controls button span{position:absolute;font-size:8px;font-weight:800;top:50%;left:50%;transform:translate(-50%,-45%)}.mini-controls .mini-play{width:44px;height:44px;margin:0 auto;border-radius:50%;background:#f4e7c8;color:var(--night)}.mini-time{color:#c5d3e0;font-variant-numeric:tabular-nums}body.has-player .app{padding-bottom:calc(var(--nav-h) + 170px + env(safe-area-inset-bottom))}body.has-player .grundy-fab{bottom:calc(var(--nav-h) + 162px + env(safe-area-inset-bottom))}body.has-player .composer{bottom:calc(var(--nav-h) + 150px + env(safe-area-inset-bottom))}.memory-cover{width:60px;height:60px;border-radius:12px;overflow:hidden;border:0;padding:0;flex:none;background:var(--night);display:grid;place-items:center;box-shadow:0 2px 8px #26394a2e}.memory-cover img{width:100%;height:100%;object-fit:cover}.memory-play-btn{width:42px;height:42px;border-radius:50%;border:0;flex:none;display:grid;place-items:center;background:var(--night);color:#f4e7c8;transition:transform .12s ease}.memory-play-btn:active{transform:scale(.92)}.memory-play-btn.on{background:var(--gold);color:#fff}.memory-heart{width:38px;height:38px;border:0;background:none;color:var(--ink-faint);display:grid;place-items:center;flex:none;border-radius:50%;transition:transform .15s ease,color .15s}.memory-heart.on{color:var(--pink-deep);animation:heart-pop .35s ease}@keyframes heart-pop{50%{transform:scale(1.3)}}.setup{min-height:100dvh;padding-bottom:120px}.setup-top{display:flex;align-items:center;gap:14px;margin-bottom:22px}.setup-progress{flex:1;height:8px;border-radius:99px;background:var(--line);overflow:hidden}.setup-progress i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--blue-deep),var(--gold));transition:width .35s ease}.setup-q h1{font-size:30px}.setup-hero{min-height:70dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding-top:20px}.setup-hero h1{font-size:32px}.setup-row{width:100%;display:flex;align-items:center;gap:14px;padding:15px 16px;border-radius:18px;background:var(--card);border:2px solid transparent;box-shadow:var(--shadow);text-align:left;transition:border-color .15s,background .15s}.setup-row+.setup-row{margin-top:10px}.setup-row.on{border-color:var(--blue-deep);background:#eef7fd}.setup-row.big{padding:14px}.setup-row.col{flex-direction:column;align-items:stretch}.setup-row .grow{display:flex;flex-direction:column;gap:2px}.setup-row .emoji{font-size:24px;width:32px;text-align:center}.setup-row .swatch{width:54px;height:54px;border-radius:15px;flex:none}.setup-row .swatch.emoji{display:grid;place-items:center;font-size:26px;background:var(--bg)}.setup-row .tick,.setup-days .tick,.setup-tile .corner{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;border:2px solid var(--line);color:#fff}.setup-row.on .tick{background:var(--blue-deep);border-color:var(--blue-deep)}.setup-row .radio{width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;flex:none}.setup-row.on .radio{border-color:var(--blue-deep)}.setup-row .radio i{width:12px;height:12px;border-radius:50%;background:var(--blue-deep)}.setup-sum{margin-top:14px;display:flex;justify-content:space-between;align-items:center;padding:18px;border-radius:18px;background:var(--parchment);font-weight:800;color:var(--ink-soft)}.setup-sum b{font-size:28px;color:var(--blue-deep)}.round-btn{width:40px;height:40px;border-radius:50%;border:1.5px solid var(--line);background:#fff;display:grid;place-items:center;flex:none}.round-btn.dark{background:var(--ink);color:#fff;border-color:var(--ink)}.setup-days{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:40px}.setup-days button{border:2px solid var(--line);background:var(--card);border-radius:22px;padding:14px 0 10px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:var(--shadow)}.setup-days button b{font-size:18px}.setup-days button.on{border-color:var(--blue-deep);background:#eef7fd}.setup-days button.on .tick{background:var(--blue-deep);border-color:var(--blue-deep)}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.setup-grid.three{grid-template-columns:repeat(3,1fr)}.setup-grid.four{grid-template-columns:repeat(4,1fr);gap:8px}.setup-tile{position:relative;border:2px solid transparent;background:var(--card);border-radius:18px;padding:16px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;box-shadow:var(--shadow);min-height:108px;justify-content:center}.setup-tile.small{min-height:92px;padding:10px 4px;font-size:13px}.setup-tile.small b{font-size:12.5px;line-height:1.2}.setup-tile.on{border-color:var(--blue-deep);background:#eef7fd}.setup-tile .tile-emoji{font-size:30px;line-height:1.1}.setup-tile.small .tile-emoji{font-size:26px}.setup-tile .corner{position:absolute;top:6px;right:6px;width:22px;height:22px;background:var(--blue-deep);border-color:var(--blue-deep)}.store-mark{font-family:var(--sans);font-weight:900;font-size:22px;letter-spacing:-.01em}.setup-chip{display:inline-flex;align-items:center;gap:7px;padding:9px 14px;border-radius:999px;border:1.5px solid var(--line);background:var(--card);font-weight:700;font-size:15px;box-shadow:var(--shadow)}.setup-chip span{font-size:18px}.setup-chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}.setup-foot{position:fixed;left:0;right:0;bottom:0;padding:14px 16px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 75%,transparent);display:flex;flex-direction:column;align-items:center;z-index:30}.setup-foot .btn{max-width:568px;min-height:56px;font-size:17px;border-radius:18px}.budget-big{display:flex;align-items:baseline;justify-content:center;font-family:var(--serif);font-weight:700;font-size:64px;color:var(--ink)}.budget-big input{border:0;background:none;font:inherit;width:3.2ch;text-align:left;outline:none;color:inherit}.budget-range{width:100%;accent-color:var(--blue-deep);height:28px}.puff-stage{position:relative;width:58px;height:58px;flex:none;transform-origin:center}.puff-wand{position:absolute;top:-4px;right:-6px;transform-origin:15% 85%;animation:wand-tap 1.75s ease-in-out infinite}@keyframes wand-tap{0%,to{transform:rotate(0)}15%{transform:rotate(-18deg)}25%{transform:rotate(6deg)}35%{transform:rotate(0)}}.puff-spark{position:absolute;top:2px;right:4px;width:8px;height:8px;border-radius:50%;background:#fff4d6;box-shadow:0 0 6px 3px #f4e7c8,0 0 14px 6px #f2b33d88;opacity:0;animation:spark-pop 1.75s ease-out infinite;animation-delay:.38s}@keyframes spark-pop{0%{opacity:0;transform:scale(.4)}10%{opacity:1;transform:scale(1.3)}35%,to{opacity:0;transform:scale(.2)}}.puff{position:absolute;top:8px;width:11px;height:9px;border-radius:48% 52% 42% 58%/58% 46% 54% 42%;background:radial-gradient(circle at 35% 30%,#ffd27a,#f59e2b 55%,#e07b12);box-shadow:inset -1px -1px #c9650a55,0 1px 1px #0002;opacity:0;animation:puff-fall 1.75s cubic-bezier(.45,0,.7,1) infinite}.puff:after{content:"";position:absolute;left:3px;top:2px;width:2px;height:2px;border-radius:50%;background:#e07b12;box-shadow:4px 3px #e07b12}@keyframes puff-fall{0%{opacity:0;transform:translateY(0) rotate(0)}12%{opacity:1}70%{opacity:1;transform:translateY(34px) rotate(var(--r))}82%{transform:translateY(31px) rotate(var(--r))}to{opacity:0;transform:translateY(36px) rotate(var(--r))}}.puff-bowl{position:absolute;left:10px;bottom:2px;width:38px;height:14px;border-radius:0 0 20px 20px;background:linear-gradient(#b9ddf2,#8ec3e3);box-shadow:inset 0 3px #fff8}@media(prefers-reduced-motion:reduce){.puff,.puff-wand,.puff-spark{animation:none}.puff{opacity:1;top:34px}}.setup-tile.store{min-height:128px;gap:6px}.store-logo{width:72px;height:52px;object-fit:contain}.setup-tile.store .corner{font-size:12px;font-weight:800}.puff-icon{position:relative;display:inline-block;width:34px;height:30px}.puff-icon i{position:absolute;width:10px;height:9px;border-radius:48% 52% 42% 58%/58% 46% 54% 42%;background:radial-gradient(circle at 35% 30%,#ffd27a,#f59e2b 55%,#e07b12);box-shadow:0 1px 1px #0002}.puff-icon b{position:absolute;left:1px;bottom:0;width:32px;height:12px;border-radius:0 0 16px 16px;background:linear-gradient(#b9ddf2,#8ec3e3)}.cal{display:grid;grid-template-columns:18px repeat(var(--cols),minmax(0,1fr));gap:6px 5px;align-items:center}.cal-corner{height:1px}.cal-day{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;color:var(--ink)}.cal-dow{font-size:12px;font-weight:800;color:var(--ink-faint)}.cal-num{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:17px;transition:background .15s}.cal-day.today .cal-dow{color:var(--blue-deep)}.cal-day.sel .cal-num{background:var(--ink);color:#fff;box-shadow:0 4px 12px #26394a40}.cal-day.today:not(.sel) .cal-num{box-shadow:inset 0 0 0 2px var(--blue)}.cal-dot{width:5px;height:5px;border-radius:50%;background:transparent}.cal-dot.on{background:var(--gold)}.cal-slot{font-size:11px;font-weight:800;color:var(--ink-faint);text-align:center}.cal-cell-wrap{border-radius:14px;transition:box-shadow .15s}.cal-cell-wrap.over{box-shadow:0 0 0 2px var(--blue-deep)}.cal-cell{position:relative;width:100%;aspect-ratio:1;border-radius:13px;overflow:hidden;border:0;padding:0;background:var(--blue-soft);box-shadow:0 2px 6px #26394a26;display:block;touch-action:none}.cal-cell img,.cal-cell .ph-fallback{width:100%;height:100%;object-fit:cover;font-size:18px}.cal-cell.sel{box-shadow:0 0 0 2px var(--ink),0 2px 6px #26394a33}.cal-cell.dragging{opacity:.35}.cal-cell.lefty{outline:2px dashed var(--sage);outline-offset:-2px}.cal-cell.empty{background:#eef4f8;box-shadow:none;display:grid;place-items:center;color:var(--ink-faint);border:1.5px dashed #D5E2EC}.cal-cell.empty.past{opacity:.45;border-style:solid}.cal-cell.empty.sel{border-color:var(--ink)}.cal-done{position:absolute;right:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--sage);color:#fff;display:grid;place-items:center}.cal-more{position:absolute;right:3px;bottom:3px;font-size:10px;font-weight:800;background:#000a;color:#fff;padding:1px 5px;border-radius:99px}.cal-cell.drag-ghost{width:56px;transform:rotate(-3deg);box-shadow:var(--shadow-lg)}.plan-card{display:flex;gap:12px;align-items:center;background:var(--card);border-radius:18px;padding:10px;box-shadow:var(--shadow)}.plan-card.lefty{background:var(--sage-soft)}.plan-card .ph{width:84px;height:84px;border-radius:14px;overflow:hidden;flex:none;background:var(--blue-soft);display:block}.plan-card .ph img,.plan-card .ph .ph-fallback{width:100%;height:100%;object-fit:cover}.plan-slot{display:block;font-size:11.5px;font-weight:800;letter-spacing:.03em;color:var(--ink-faint);text-transform:uppercase}.plan-title{display:block;font-size:16.5px;line-height:1.25;margin:2px 0 4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.swap-btn{border:0;border-radius:14px;background:var(--bg);box-shadow:inset 0 0 0 1.5px var(--line);width:58px;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;font-weight:800;color:var(--ink)}.plan-empty{border:1.5px dashed var(--line);background:none;border-radius:16px;padding:14px;font-weight:800;color:var(--ink-soft);display:flex;align-items:center;justify-content:center;gap:6px}.pick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pick-card{border:0;background:var(--card);border-radius:14px;overflow:hidden;padding:0 0 8px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;text-align:left}.pick-card .ph{aspect-ratio:1;display:block;background:var(--blue-soft)}.pick-card .ph img,.pick-card .ph .ph-fallback{width:100%;height:100%;object-fit:cover}.pick-card .tiny{padding:0 8px;line-height:1.25}.grundy-bubble{position:fixed;z-index:39;right:max(84px,calc(50% - 216px));bottom:calc(var(--nav-h) + 40px + env(safe-area-inset-bottom));max-width:min(270px,calc(100vw - 110px));animation:bubble-in .45s cubic-bezier(.3,1.4,.5,1) both}body.has-player .grundy-bubble{bottom:calc(var(--nav-h) + 190px + env(safe-area-inset-bottom))}.grundy-bubble-body{display:block;width:100%;text-align:left;border:0;background:#fff;color:var(--ink);font-weight:700;font-size:14px;line-height:1.35;padding:12px 30px 12px 14px;border-radius:18px 18px 4px;box-shadow:0 8px 28px #26394a38,0 0 0 1.5px var(--blue);font-family:var(--sans)}.grundy-bubble-body:after{content:"";position:absolute;right:-9px;bottom:6px;width:16px;height:16px;background:#fff;transform:rotate(45deg);box-shadow:1.5px -1.5px 0 var(--blue);clip-path:polygon(50% 0,100% 0,100% 50%)}.grundy-bubble-x{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;border:0;background:var(--bg);display:grid;place-items:center;color:var(--ink-faint)}@keyframes bubble-in{0%{opacity:0;transform:translateY(8px) scale(.9);transform-origin:bottom right}}.proposal{margin-top:12px;padding:12px;border-radius:14px;background:var(--parchment);border:1px solid #EFE3C8}.proposal.done{padding:8px 12px;background:var(--sage-soft);border-color:transparent}.proposal.done .small{display:inline-flex;align-items:center;gap:6px}.proposal-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:#fff;border-radius:11px;padding:9px 10px;box-shadow:var(--shadow)}.proposal-row .check{width:22px;height:22px;border-radius:7px}.proposal-row:not(.on) .grow{color:var(--ink-faint);text-decoration:line-through}.item.on-conv{box-shadow:0 0 0 2px var(--blue-deep),var(--shadow)}.call-david{background:var(--blue);color:var(--ink);box-shadow:inset 0 0 0 2px var(--blue-deep),0 4px 14px #5e9cc459;font-size:16px;font-weight:800}.call-david .spell{opacity:.8}.call-david:active{background:#a6d2ec}.reminder-row{display:flex;align-items:flex-start;gap:12px;padding:12px;border-radius:14px;background:var(--bg)}.reminder-row.off{opacity:.6}.reminder-emoji{font-size:22px;width:28px;text-align:center}.input.mini{width:auto;padding:6px 8px;font-size:14px;border-radius:9px}.toggle{width:46px;height:28px;border-radius:99px;border:0;background:var(--line);position:relative;flex:none;transition:background .15s;margin-top:2px}.toggle i{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .15s}.toggle.on{background:var(--sage)}.toggle.on i{transform:translate(18px)}.toast{pointer-events:none}body.has-player .toast{bottom:calc(var(--nav-h, 70px) + 84px + env(safe-area-inset-bottom))}.input.mini{font-size:16px}.autofix-note{align-self:center;background:var(--blue-soft);border-radius:999px;padding:6px 14px;margin:4px 0}
