@import "https://fonts.googleapis.com/css2?family=Baloo+2:wght@400;500;600;700;800&family=Nunito:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400;1,600&display=swap";:root{--blue-interactive:#3e8fd0;--blue-decorative:#6fb3e8;--blue-700:#2c6da6;--blue-600:#3e8fd0;--blue-300:#6fb3e8;--blue-100:#dcebf9;--blue-50:#eef5fc;--ink-900:#1f2a37;--ink-700:#3a4756;--ink-500:#64748b;--ink-400:#94a3b8;--ink-300:#cbd5e1;--ink-200:#e2e8f0;--ink-100:#edf1f7;--paper:#fff;--canvas:#f4f7fb;--green:#34b37a;--green-100:#dff4ea;--amber:#f4a63b;--amber-100:#fceeda;--coral:#f0655a;--coral-100:#fde3e0;--violet:#8b7ce8;--violet-100:#eae6fb;--rose-100:#fbe1ee;--orange:#ff9e5e;--orange-100:#ffe8d3;--peach:#e8935a;--peach-100:#fce7d6;--teal:#2fa89e;--teal-100:#daf3f1;--sand:#c99a5b;--sand-100:#f5ebda;--mint:#6fbe8f;--mint-100:#e3f5ea;--slate:#7c8ca6;--slate-100:#e7ebf1;--member-1:#3e8fd0;--member-2:#34b37a;--member-3:#f4a63b;--member-4:#f0655a;--member-5:#8b7ce8;--member-6:#e86fb3;--bg-app:var(--canvas);--bg-subtle:var(--blue-50);--surface-card:var(--paper);--surface-sunken:var(--ink-100);--text-strong:var(--ink-900);--text-body:var(--ink-700);--text-muted:var(--ink-500);--text-placeholder:var(--ink-400);--text-on-brand:#fff;--text-link:var(--blue-interactive);--border-default:var(--ink-200);--border-strong:var(--ink-300);--border-focus:var(--blue-interactive);--action-primary:var(--blue-interactive);--action-primary-hover:#3684c4;--action-primary-press:var(--blue-700);--action-tint:var(--blue-100);--status-done:var(--green);--status-pending:var(--amber);--status-overdue:var(--coral);--status-reward:var(--violet);--font-display:"Baloo 2", system-ui, sans-serif;--font-body:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, Menlo, Consolas, monospace;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--text-display:40px;--text-h1:32px;--text-h2:26px;--text-h3:21px;--text-title:18px;--text-body-lg:17px;--text-body-md:15px;--text-body-sm:13px;--text-caption:12px;--text-overline:11px;--lh-tight:1.1;--lh-snug:1.25;--lh-normal:1.45;--lh-relaxed:1.6;--ls-tight:-.01em;--ls-normal:0;--ls-wide:.04em;--ls-overline:.08em;--space-0:0;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--gap-inline:var(--space-2);--gap-stack:var(--space-3);--pad-control:var(--space-3);--pad-card:var(--space-4);--pad-screen:var(--space-4);--pad-section:var(--space-8);--tabbar-height:64px;--appbar-height:56px;--touch-target:44px;--content-max:1120px;--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-round:999px;--radius-button:var(--radius-sm);--radius-field:var(--radius-sm);--radius-card:var(--radius-md);--radius-sheet:var(--radius-lg);--shadow-xs:0 1px 2px #1f2a370f;--shadow-sm:0 2px 6px #1f2a3714;--shadow-md:0 6px 16px #1f2a371a;--shadow-lg:0 14px 34px #1f2a3724;--shadow-brand:0 8px 20px #3e8fd047;--ring-focus:0 0 0 3px #3e8fd059;--elevation-card:var(--shadow-sm);--elevation-raised:var(--shadow-md);--elevation-overlay:var(--shadow-lg);--elevation-nav:0 -2px 12px #1f2a370f;--dur-fast:.12s;--dur-base:.2s;--dur-slow:.32s;--ease-standard:cubic-bezier(.2, 0, .1, 1);--ease-emphasized:cubic-bezier(.2, .7, .2, 1);--ease-bounce:cubic-bezier(.34, 1.56, .64, 1);--press-scale:.97;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{background:var(--bg-app);color:var(--text-strong);font-family:var(--font-body);margin:0}h1,h2,h3,h4{font-family:var(--font-display)}.auth-page,.app-page{max-width:26rem;margin:0 auto;padding:2rem 1.25rem 3rem}.app-page{max-width:40rem}.auth-page h1,.app-header h1{margin:0 0 1rem;font-size:1.5rem}.app-header__brand{font-family:var(--font-display);margin:0 0 1rem;font-size:1.5rem;font-weight:700}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.75rem;margin-bottom:1.5rem;display:flex}.app-header nav{align-items:center;gap:.75rem;font-size:.9rem;display:flex}.auth-tabs{gap:.5rem;margin-bottom:1.25rem;display:flex}.auth-tabs button{border:1px solid var(--border-default);font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;flex:1;padding:.6rem .75rem}.auth-tabs button.is-active{background:var(--surface-card);border-color:var(--action-primary);color:var(--text-strong);font-weight:600}.auth-form{background:var(--surface-card);border-radius:1rem;flex-direction:column;gap:.35rem;margin-bottom:1rem;padding:1.25rem;display:flex}.auth-hint{color:var(--text-muted);margin:.15rem 0 0;font-size:.8rem}.auth-error{color:var(--coral);margin:.75rem 0 0;font-size:.9rem}.auth-success{color:var(--green);margin:.75rem 0 0;font-size:.9rem}.auth-notice{background:var(--surface-card);border:1px solid var(--border-default);border-radius:.75rem;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.9rem}.auth-form-section{background:var(--surface-card);border-radius:1rem;margin-bottom:1.25rem;padding:1.25rem}.auth-form-section h2,.auth-form-section h3{margin:0 0 .35rem;font-size:1.05rem}.auth-form-section .auth-form{margin-bottom:0;padding:0}.member-list{flex-direction:column;gap:.5rem;margin:0 0 1.25rem;padding:0;list-style:none;display:flex}.member-row{background:var(--surface-card);border-radius:.75rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.member-row__info{flex-direction:column;gap:.2rem;min-width:0;display:flex}.member-row__name{font-weight:600}.member-row__email{color:var(--text-muted);overflow-wrap:anywhere;font-size:.85rem}.member-row__badges{gap:.4rem;display:flex}.press-confirm-btn{min-width:8.25rem;position:relative}.press-confirm-btn--armed{animation:1.4s ease-out infinite press-confirm-pulse}.press-confirm-btn--armed:focus-visible{animation:none}.press-confirm-btn__warn-icon{flex:none}.press-confirm-btn__countdown{transform-origin:0;background:#ffffffd9;border-radius:2px;height:2.5px;animation-name:press-confirm-countdown;animation-timing-function:linear;animation-fill-mode:forwards;position:absolute;bottom:4px;left:12px;right:12px}@keyframes press-confirm-pulse{0%{box-shadow:0 0 #f0655a8c}70%{box-shadow:0 0 0 8px #f0655a00}to{box-shadow:0 0 #f0655a00}}@keyframes press-confirm-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.press-confirm-icon-btn--armed{animation:1.4s ease-out infinite press-confirm-pulse}.press-confirm-icon-btn--armed:focus-visible{animation:none}.press-confirm-icon-btn__countdown{transform-origin:0;background:#ffffffd9;border-radius:2px;height:2.5px;animation-name:press-confirm-countdown;animation-timing-function:linear;animation-fill-mode:forwards;position:absolute;bottom:5px;left:6px;right:6px}.spinner{vertical-align:-.2em;border:2px solid;border-right-color:#0000;border-radius:50%;width:1em;height:1em;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.task-list{flex-direction:column;gap:.5rem;margin:0 0 1.25rem;padding:0;list-style:none;display:flex}.task-row__main{flex-direction:column;flex:1;gap:.35rem;min-width:0;display:flex}.task-row__title--done{color:var(--text-muted);font-weight:600;text-decoration:line-through}.task-row__meta{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.task-row__deadline{color:var(--text-muted);font-size:.8rem}.task-form__options{border:1px solid var(--border-default);border-radius:.6rem;flex-wrap:wrap;gap:.6rem 1rem;margin:0;padding:.6rem .75rem;display:flex}.task-form__options legend{color:var(--text-muted);padding:0 .3rem;font-size:.85rem}.task-form__inline-field{align-items:center;gap:6px var(--space-2);flex-wrap:wrap;display:flex}.task-form__inline-field-label{font-family:var(--font-body);color:var(--text-body);flex:none;font-size:13px;font-weight:700}.task-form__inline-field-control{flex:none}.task-form__inline-field-trailing{font-family:var(--font-body);color:var(--text-muted);flex:none;font-size:13px}.text-link{color:var(--text-link);font-weight:700;text-decoration:none}.text-link:hover,.text-link:focus-visible{text-decoration:underline}.back-link{margin-bottom:var(--space-3);align-items:center;gap:4px;font-size:.875rem;display:inline-flex}.list-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-bottom:1.25rem;display:grid}.consent-banner{left:0;right:0;bottom:calc(var(--tabbar-height) + env(safe-area-inset-bottom,0px));z-index:90;background:var(--surface-card);border-top:1px solid var(--border-default);box-shadow:var(--elevation-nav);padding:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex;position:fixed}@media (width>=768px){.consent-banner{bottom:0}}.consent-banner__body{color:var(--text-muted);flex:20rem;margin:0;font-size:.85rem;line-height:1.4}.consent-banner__actions{gap:var(--space-2);flex-shrink:0;display:flex}.privacy-page__updated{color:var(--text-muted);margin-top:-.75rem;font-size:.85rem}.privacy-page__section{margin-bottom:var(--space-6)}.privacy-page__section h2{margin-bottom:var(--space-2);font-size:1.1rem}.privacy-page__section p{color:var(--text-body);line-height:1.5}.policy-changelog{gap:var(--space-4);padding-left:var(--space-5);margin:0;display:grid}.policy-changelog__item--new{padding-left:var(--space-3);border-left:3px solid var(--action-primary)}.policy-changelog__version{align-items:center;gap:var(--space-2);margin:0;font-weight:700;display:flex}.policy-changelog__badge{padding:.05rem var(--space-2);border-radius:var(--radius-round);background:var(--action-primary);color:var(--text-on-brand);letter-spacing:.02em;text-transform:uppercase;font-size:.7rem;font-weight:700;display:inline-block}.policy-changelog__summary{margin:var(--space-1) 0 0;color:var(--text-muted);line-height:1.5}.landing-hero{grid-template-columns:1fr}.landing-hero>div:last-child{order:-1}.landing-features{grid-template-columns:repeat(2,1fr)}@media (width>=640px){.landing-features{grid-template-columns:repeat(3,1fr)}}@media (width>=900px){.landing-hero{grid-template-columns:1.1fr .9fr}.landing-hero>div:last-child{order:0}}@media (width<=560px){.landing-nav a:first-of-type{display:none}}.recipe-wall{border-radius:var(--radius-lg);background:linear-gradient(#2c3e66 0%,#3e4f86 55%,#5b4e9a 100%);flex-direction:column;gap:6px;padding-block:14px 10px;display:flex;overflow:hidden;box-shadow:inset 0 2px 10px #00000040}.recipe-wall__row{touch-action:pan-y;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overflow:hidden}.recipe-wall__track{will-change:transform;gap:10px;width:max-content;padding-block:8px;display:flex}.recipe-wall--static .recipe-wall__row{touch-action:auto;scrollbar-width:none;overflow-x:auto}.recipe-wall--static .recipe-wall__track{will-change:auto;padding-inline:12px}.recipe-wall__hint{color:#c8d3f0;text-align:center;margin:2px 12px 0;font-size:12px;font-weight:600}.recipe-wall__card{cursor:pointer;width:104px;height:140px;font:inherit;transition:transform .18s var(--ease-standard), box-shadow .18s var(--ease-standard);background:linear-gradient(160deg,#eef2f9,#b9c6de);border:0;border-radius:12px;flex:none;padding:5px 5px 24px;position:relative;box-shadow:0 6px 14px #00000059}.recipe-wall__card img{object-fit:cover;background:#dde4f0;border-radius:8px;width:100%;height:100%;display:block}.recipe-wall__card:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,#0000 20%,#ffb4e638 38%,#a0dcff3d 50%,#beffc82e 62%,#0000 80%);position:absolute;inset:0}.recipe-wall__name{font-family:var(--font-body);color:#1f2a37;text-align:left;white-space:nowrap;text-overflow:ellipsis;padding-inline:7px;font-size:10.5px;font-weight:800;line-height:1.2;position:absolute;inset:auto 0 5px;overflow:hidden}.recipe-wall__stars{font-family:var(--font-body);color:#ffd66b;align-items:center;gap:2px;font-size:10px;font-weight:800;display:inline-flex}.recipe-wall__card .recipe-wall__stars{z-index:1;background:#1f2a37b8;border-radius:6px;padding:1px 5px;position:absolute;top:9px;left:9px}.recipe-wall__card--gold{background:linear-gradient(160deg,#ffe7a3,#e5a93b 55%,#ffe09a)}.recipe-wall__card--gold:after{background:linear-gradient(115deg,#0000 30%,#ffffff8c 45%,#ffecaa59 52%,#0000 66%) 0 0/260% 100% no-repeat;animation:3.6s ease-in-out infinite recipe-wall-foil}.recipe-wall__card--lifted{z-index:1;transform:translateY(-4px)scale(1.08);box-shadow:0 0 0 3px #ffd66b,0 0 26px #ffd66bbf,0 10px 18px #0006}.recipe-wall--spinning .recipe-wall__card{cursor:default}.recipe-wall__card:focus-visible{outline-offset:2px;outline:3px solid #ffd66b}@keyframes recipe-wall-foil{0%,40%{background-position:160% 0}80%,to{background-position:-60% 0}}@media (prefers-reduced-motion:reduce){.recipe-wall__card--gold:after{animation:none}}.deck-draw{z-index:100;padding:20px 16px calc(20px + env(safe-area-inset-bottom,0px));overscroll-behavior:contain;animation:deck-fade .18s var(--ease-standard);background:radial-gradient(120% 80% at 50% 40%,#3e4f86e0,#141a30f0);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.deck-draw__close{top:calc(14px + env(safe-area-inset-top,0px));color:#fff;cursor:pointer;background:#ffffff29;border:none;border-radius:999px;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex;position:absolute;right:14px}.deck-draw__close:focus-visible{outline-offset:2px;outline:3px solid #ffd66b}.deck-draw__stage{flex-direction:column;align-items:center;gap:18px;width:min(280px,100%);display:flex;position:relative}.deck-draw__actions{flex-direction:column;gap:12px;width:100%;display:flex}.deck-draw__row{gap:10px;display:flex}.deck-draw__error{border-radius:var(--radius-md);background:var(--coral-100);color:#9b2c22;margin:0;padding:8px 12px;font-size:13px;font-weight:700}.deck-card{background:linear-gradient(160deg,#eef2f9,#b9c6de);border-radius:18px;width:min(250px,100%);padding:10px 10px 0;animation:.52s cubic-bezier(.2,1.1,.3,1) deck-flip-in;position:relative;box-shadow:0 18px 40px #00000073}.deck-card--gold{background:linear-gradient(160deg,#ffe7a3,#e5a93b 55%,#ffe09a);box-shadow:0 0 0 2px #ffd66b99,0 0 34px #ffd66b73,0 18px 40px #00000073}.deck-card--gold:after{content:"";border-radius:inherit;pointer-events:none;background:linear-gradient(115deg,#0000 30%,#ffffff8c 45%,#ffecaa4d 52%,#0000 66%) 0 0/260% 100% no-repeat;animation:3.6s ease-in-out infinite recipe-wall-foil;position:absolute;inset:0}.deck-card__photo-wrap{position:relative}.deck-card__planned{color:#fff;font-family:var(--font-body);background:#1f2a37d1;border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:12px;font-weight:800;display:inline-flex;position:absolute;bottom:8px;left:8px}.deck-card__photo{aspect-ratio:1;object-fit:cover;background:#dde4f0;border-radius:12px;width:100%;display:block}.deck-card .recipe-wall__stars{background:#1f2a37bf;border-radius:8px;padding:2px 7px;font-size:12.5px;position:absolute;top:18px;left:18px}.deck-card__fave{color:#8a5a0b;font-family:var(--font-body);letter-spacing:.04em;text-transform:uppercase;background:#fff;border-radius:8px;padding:2px 8px;font-size:11px;font-weight:900;position:absolute;top:18px;right:18px}.deck-card__banner{flex-direction:column;gap:2px;padding:10px 4px 12px;display:flex}.deck-card__banner h2{font-family:var(--font-display);color:#1f2a37;text-wrap:balance;margin:0;font-size:21px;font-weight:800;line-height:1.12}.deck-card__banner>span{font-family:var(--font-body);color:#3a4756;font-size:12.5px;font-weight:800}.deck-card--fly{animation:.65s cubic-bezier(.5,0,.75,0) forwards deck-fly}.deck-card--flip-out{animation:.28s ease-in forwards deck-flip-out}.deck-dice--rolling{animation:.6s cubic-bezier(.3,1.5,.5,1) deck-dice}.deck-confetti{z-index:1;pointer-events:none;width:0;height:0;position:absolute;top:38%;left:50%}.deck-confetti i{opacity:0;border-radius:3px;width:11px;height:17px;animation:.9s cubic-bezier(.2,.8,.3,1) forwards deck-confetti;position:absolute}.deck-toast{left:50%;bottom:calc(var(--tabbar-height) + 16px + env(safe-area-inset-bottom,0px));z-index:110;color:#fff;width:max-content;max-width:calc(100% - 32px);font-family:var(--font-body);background:#1f2a37;border-radius:14px;align-items:center;gap:14px;padding:10px 10px 10px 16px;font-size:14px;font-weight:700;animation:.32s cubic-bezier(.2,1.3,.4,1) deck-toast-in;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 12px 28px #00000047}.deck-toast__undo{color:#ffd66b;font:800 14px var(--font-body);cursor:pointer;background:#ffffff24;border:none;border-radius:10px;flex:none;padding:7px 12px}@keyframes deck-fade{0%{opacity:0}}@keyframes deck-flip-in{0%{opacity:0;transform:perspective(800px)rotateY(-100deg)scale(.7)}}@keyframes deck-flip-out{to{opacity:0;transform:perspective(800px)rotateY(90deg)scale(.8)}}@keyframes deck-fly{30%{transform:scale(1.06)rotate(-3deg)}to{opacity:0;transform:translateY(-120vh)scale(.3)rotate(12deg)}}@keyframes deck-dice{to{transform:rotate(720deg)scale(1.25)}}@keyframes deck-confetti{0%{opacity:1;transform:translate(0)rotate(0)}to{opacity:0;transform:translate(var(--x), var(--y)) rotate(var(--r))}}@keyframes deck-toast-in{0%{opacity:0;transform:translate(-50%,24px)}}@media (prefers-reduced-motion:reduce){.deck-draw,.deck-card,.deck-card--gold:after,.deck-card--fly,.deck-card--flip-out,.deck-dice--rolling,.deck-confetti i,.deck-toast{animation:none}}.folder-tab--shimmer{overflow:hidden}.folder-tab--shimmer:after{content:"";z-index:-1;pointer-events:none;background:linear-gradient(110deg,#0000 30%,#d6deec8c 42%,#fffffff2 50%,#d6deec8c 58%,#0000 70%) 160% 0/300% 100% no-repeat;animation:12s ease-in-out -6.8s infinite folder-tab-shimmer;position:absolute;inset:0}@keyframes folder-tab-shimmer{0%,82%{background-position:160% 0}to{background-position:-60% 0}}@media (prefers-reduced-motion:reduce){.folder-tab--shimmer:after{animation:none}}.recipe-print-sheet{display:none}@media print{body:has(>.recipe-print-sheet)>:not(.recipe-print-sheet){display:none!important}body:has(>.recipe-print-sheet){background:#fff!important}.recipe-print-sheet{color:#000;font-family:Georgia,Times New Roman,serif;font-size:11pt;line-height:1.5;display:block}.recipe-print-sheet h1{margin:0 0 12pt;font-size:22pt}.recipe-print-sheet h2{break-after:avoid;margin:16pt 0 6pt;font-size:13pt}.recipe-print-sheet h3{break-after:avoid;margin:10pt 0 4pt;font-size:11pt}.recipe-print-sheet img{object-fit:cover;border-radius:6pt;max-width:100%;max-height:8cm;margin-bottom:8pt;display:block}.recipe-print-sheet ul,.recipe-print-sheet ol{margin:0;padding-left:18pt}.recipe-print-sheet li{break-inside:avoid;margin-bottom:4pt}.recipe-print-sheet__prose{white-space:pre-wrap;margin:0}.recipe-print-sheet__meta{color:#444;margin:-8pt 0 12pt}.recipe-print-sheet__note{color:#444;font-size:10pt}}
