@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-base: #0a0a0c;--bg-surface: #131316;--bg-surface-hover: #17171b;--bg-elevated: #1b1b20;--bg-input: #202027;--bg-inset: #0d0d10;--border: #26262e;--border-strong: #33333d;--border-subtle: #1e1e25;--text: #f2f2f5;--text-muted: #9a9aa6;--text-faint: #63636e;--text-on-accent: #ffffff;--red-400: #ff6b83;--red-500: #ff3b5c;--red-600: #e11d48;--red-700: #be123c;--red-soft: rgba(255, 59, 92, .14);--red-border: rgba(255, 59, 92, .32);--purple-400: #c084fc;--purple-500: #a855f7;--purple-600: #8b5cf6;--purple-700: #7c3aed;--purple-soft: rgba(168, 85, 247, .14);--purple-border: rgba(168, 85, 247, .32);--shared-gradient: linear-gradient(135deg, #ff3b5c 0%, #a855f7 100%);--shared-soft: rgba(199, 72, 174, .12);--accent: var(--red-500);--accent-strong: var(--red-600);--accent-soft: var(--red-soft);--accent-border: var(--red-border);--success: #22c55e;--success-soft: rgba(34, 197, 94, .14);--warning: #f59e0b;--warning-soft: rgba(245, 158, 11, .14);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .14);--info: #38bdf8;--font-text: "Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI";--font: var(--font-text), sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.125rem;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.65;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--radius-xl: 22px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 16px 48px rgba(0, 0, 0, .55);--ease: cubic-bezier(.32, .72, 0, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration: .18s;--duration-slow: .26s;--nav-height: 64px;--sidebar-width: 248px;--header-height: 60px;--content-max: 1180px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--z-nav: 100;--z-header: 90;--z-sheet: 200;--z-dialog: 300;--z-toast: 400}[data-person=red]{--accent: var(--red-500);--accent-strong: var(--red-600);--accent-soft: var(--red-soft);--accent-border: var(--red-border)}[data-person=purple]{--accent: var(--purple-500);--accent-strong: var(--purple-600);--accent-soft: var(--purple-soft);--accent-border: var(--purple-border)}[data-person=both]{--accent: var(--purple-500);--accent-strong: var(--red-500);--accent-soft: var(--shared-soft);--accent-border: var(--border-strong)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}button,.chip,.filter-chip,.bottom-nav__item{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}body{background:var(--bg-base);color:var(--text);font-family:var(--font-text),var(--emoji-font),sans-serif;font-size:var(--text-base);line-height:var(--leading-normal);font-weight:var(--weight-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overscroll-behavior-y:none;min-height:100dvh}#root{min-height:100dvh;isolation:isolate}h1,h2,h3,h4{line-height:var(--leading-tight);font-weight:var(--weight-semibold);letter-spacing:-.015em}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}.tabular{font-variant-numeric:tabular-nums}ul,ol{list-style:none}img{display:block;max-width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}:focus:not(:focus-visible){outline:none}::selection{background:var(--accent-soft);color:var(--text)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full);border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-track{background:transparent}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes scale-in{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.55}}.animate-fade-in{animation:fade-in var(--duration) var(--ease-out) both}.animate-slide-up{animation:slide-up var(--duration) var(--ease-out) both}.animate-scale-in{animation:scale-in var(--duration-fast) var(--ease-out) both}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:30ms}.stagger>*:nth-child(3){animation-delay:60ms}.stagger>*:nth-child(4){animation-delay:90ms}.stagger>*:nth-child(5){animation-delay:.12s}.stagger>*:nth-child(6){animation-delay:.15s}.stagger>*:nth-child(n+7){animation-delay:.18s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@font-face{font-family:CozyEmoji Apple;src:url(/emoji/apple.woff2) format("woff2"),url(/emoji/apple.ttf) format("truetype");font-display:swap}@font-face{font-family:CozyEmoji Samsung;src:url(/emoji/samsung.woff2) format("woff2"),url(/emoji/samsung.ttf) format("truetype");font-display:swap}@font-face{font-family:CozyEmoji Noto;src:url(/emoji/noto.woff2) format("woff2"),url(/emoji/noto.ttf) format("truetype");font-display:swap}@font-face{font-family:CozyEmoji Twemoji;src:url(/emoji/twemoji.woff2) format("woff2"),url(/emoji/twemoji.ttf) format("truetype");font-display:swap}@font-face{font-family:CozyEmoji Fluent;src:url(/emoji/fluent.woff2) format("woff2"),url(/emoji/fluent.ttf) format("truetype");font-display:swap}:root{--emoji-system: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "Android Emoji", "EmojiSymbols", sans-serif;--emoji-font: var(--emoji-system)}:root[data-emoji-set=apple]{--emoji-font: "CozyEmoji Apple", var(--emoji-system)}:root[data-emoji-set=samsung]{--emoji-font: "CozyEmoji Samsung", var(--emoji-system)}:root[data-emoji-set=noto]{--emoji-font: "CozyEmoji Noto", var(--emoji-system)}:root[data-emoji-set=twemoji]{--emoji-font: "CozyEmoji Twemoji", var(--emoji-system)}:root[data-emoji-set=fluent]{--emoji-font: "CozyEmoji Fluent", var(--emoji-system)}.emoji,.chat-bubble__body,.chat-composer__input{font-family:var(--font-text),var(--emoji-font),sans-serif}.chat-reaction,.emoji-picker button{font-family:var(--emoji-font),var(--font-text),sans-serif}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-height) + var(--safe-bottom) + var(--space-4));z-index:var(--z-toast);display:flex;align-items:center;gap:var(--space-4);max-width:min(440px,calc(100vw - var(--space-8)));padding:var(--space-3) var(--space-4);background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:slide-up var(--duration) var(--ease-out)}.toast__message{font-size:var(--text-sm);flex:1}.toast__undo{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--accent);white-space:nowrap}@media(min-width:900px){.toast{bottom:var(--space-6);left:calc(50% + var(--sidebar-width) / 2)}}.update-prompt{position:fixed;left:50%;transform:translate(-50%);top:calc(var(--safe-top) + var(--space-3));z-index:var(--z-toast);display:flex;align-items:center;gap:var(--space-3);max-width:min(440px,calc(100vw - var(--space-6)));padding:var(--space-3) var(--space-4);background:var(--bg-elevated);border:1px solid var(--accent-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);animation:slide-up var(--duration) var(--ease-out)}.update-prompt__icon{color:var(--accent);flex-shrink:0}.update-prompt__text{flex:1;font-size:var(--text-sm);white-space:nowrap}.update-prompt__action{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--accent);white-space:nowrap}.update-prompt__dismiss{font-size:var(--text-sm);color:var(--text-faint);white-space:nowrap}.update-prompt__dismiss:hover{color:var(--text-muted)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:var(--z-nav);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:calc(var(--nav-height) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:var(--bg-surface);border-top:1px solid var(--border-subtle)}.bottom-nav__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-faint);text-decoration:none;position:relative;transition:color var(--duration-fast) var(--ease)}.bottom-nav__item:hover{text-decoration:none;color:var(--text-muted)}.bottom-nav__item.is-active{color:var(--accent)}.bottom-nav__item.is-active:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:26px;height:2px;border-radius:0 0 var(--radius-full) var(--radius-full);background:var(--accent)}.bottom-nav__label{font-size:10px;font-weight:var(--weight-medium);letter-spacing:.01em}@media(min-width:900px){.bottom-nav{display:none}}.person{display:inline-flex;align-items:center;gap:var(--space-2)}.person__avatar{display:grid;place-items:center;border-radius:var(--radius-full);background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border);font-weight:var(--weight-semibold);overflow:hidden;flex-shrink:0}.person__avatar img{width:100%;height:100%;object-fit:cover}.person--sm .person__avatar{width:24px;height:24px;font-size:10px}.person--md .person__avatar{width:32px;height:32px;font-size:var(--text-xs)}.person--lg .person__avatar{width:44px;height:44px;font-size:var(--text-sm)}.person__shared{width:100%;height:100%;background:var(--shared-gradient)}.person__name{font-size:var(--text-sm);color:var(--text-muted)}.sidebar{display:none}@media(min-width:900px){.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);display:flex;flex-direction:column;background:var(--bg-surface);border-right:1px solid var(--border-subtle);padding:var(--space-5) var(--space-3);z-index:var(--z-nav)}}.sidebar__brand{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-2) var(--space-6)}.sidebar__mark{width:26px;height:26px;border-radius:var(--radius-sm);background:var(--shared-gradient);flex-shrink:0}.sidebar__name{font-size:var(--text-lg);font-weight:var(--weight-semibold);letter-spacing:-.02em}.sidebar__nav{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-5)}.sidebar__group{display:flex;flex-direction:column;gap:2px}.sidebar__group-label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;padding:0 var(--space-3) var(--space-2)}.sidebar__link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);text-decoration:none;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.sidebar__link:hover{background:var(--bg-surface-hover);color:var(--text);text-decoration:none}.sidebar__link.is-active{background:var(--accent-soft);color:var(--accent)}.sidebar__footer{border-top:1px solid var(--border-subtle);padding-top:var(--space-3);margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.sidebar__user{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3)}.sidebar__logout{color:var(--text-faint);padding:var(--space-1);border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease)}.sidebar__logout:hover{color:var(--danger)}.sidebar__badge{display:grid;place-items:center;min-width:20px;height:20px;margin-left:auto;padding:0 6px;background:var(--accent);border-radius:var(--radius-full);color:var(--text-on-accent);font-size:11px;font-weight:var(--weight-semibold)}.connection{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-xs);font-weight:var(--weight-medium);animation:fade-in var(--duration) var(--ease-out)}.connection--connecting{background:var(--bg-input);color:var(--text-muted)}.connection--offline{background:var(--warning-soft);color:var(--warning)}.connection__spin{animation:spin 1.4s linear infinite}.connection__retry{padding:2px 8px;background:transparent;border:1px solid currentColor;border-radius:var(--radius-full);color:inherit;font-family:inherit;font-size:var(--text-xs);font-weight:var(--weight-medium);cursor:pointer}.connection__retry:hover{background:color-mix(in srgb,currentColor 12%,transparent)}.shell{min-height:100dvh;background:var(--bg-base)}.shell__main{min-height:100dvh;display:flex;flex-direction:column;padding-top:var(--safe-top);padding-bottom:calc(var(--nav-height) + var(--safe-bottom))}.shell__content{flex:1;min-height:0;width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-5) var(--space-4)}.shell__content:has(>.is-full-height){display:flex;flex-direction:column}.shell__main:has(.is-full-height){height:100dvh;overflow:hidden}@media(min-width:900px){.shell__main{margin-left:var(--sidebar-width);padding-bottom:0}.shell__content{padding:var(--space-8)}}.spinner-wrap{display:inline-flex;align-items:center;gap:var(--space-3)}.spinner{display:block;border-style:solid;border-color:var(--border-strong);border-top-color:var(--accent);border-radius:var(--radius-full);animation:spin .72s linear infinite}.spinner__label{font-size:var(--text-sm);color:var(--text-muted)}.spinner-page{display:grid;place-items:center;min-height:100dvh;background:var(--bg-base)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border-radius:var(--radius);font-weight:var(--weight-medium);white-space:nowrap;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.btn:active:not(:disabled){transform:scale(.97)}.btn--sm{height:34px;padding:0 var(--space-3);font-size:var(--text-sm)}.btn--md{height:42px;padding:0 var(--space-4);font-size:var(--text-base)}.btn--lg{height:50px;padding:0 var(--space-6);font-size:var(--text-base)}.btn--full{width:100%}.btn--primary{background:var(--accent);color:var(--text-on-accent)}.btn--primary:hover:not(:disabled){background:var(--accent-strong)}.btn--secondary{background:var(--bg-input);color:var(--text);border:1px solid var(--border)}.btn--secondary:hover:not(:disabled){background:var(--bg-elevated);border-color:var(--border-strong)}.btn--ghost{background:transparent;color:var(--text-muted)}.btn--ghost:hover:not(:disabled){background:var(--bg-surface-hover);color:var(--text)}.btn--danger{background:var(--danger-soft);color:var(--danger);border:1px solid transparent}.btn--danger:hover:not(:disabled){background:var(--danger);color:var(--text-on-accent)}.btn__spinner{width:15px;height:15px;border:2px solid currentColor;border-top-color:transparent;border-radius:var(--radius-full);animation:spin .7s linear infinite}.btn--loading .btn__label{opacity:.7}.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);min-height:100dvh;padding:var(--space-6) var(--space-5);text-align:center}.error-screen__icon{display:grid;place-items:center;width:56px;height:56px;background:var(--warning-soft);border-radius:var(--radius-full);color:var(--warning)}.error-screen h1{font-size:var(--text-lg)}.error-screen p{max-width:34ch;color:var(--text-muted);font-size:var(--text-sm);line-height:var(--leading-relaxed)}.checkbox{display:grid;place-items:center;flex-shrink:0;border:2px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-on-accent);background:transparent;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.checkbox--md{width:22px;height:22px}.checkbox--lg{width:26px;height:26px}.checkbox:hover:not(:disabled){border-color:var(--accent)}.checkbox:active:not(:disabled){transform:scale(.88)}.checkbox.is-checked{background:var(--accent);border-color:var(--accent)}.home{display:flex;flex-direction:column;gap:var(--space-4)}.home__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-2)}.home__date{font-size:var(--text-sm);color:var(--text-muted);text-transform:capitalize}.home__greeting{font-size:var(--text-2xl);letter-spacing:-.02em;margin-top:var(--space-1)}.home__card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-4)}.home__card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.home__card-title{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.home__more{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--text-faint);text-decoration:none;transition:color var(--duration-fast) var(--ease)}.home__more:hover{color:var(--accent);text-decoration:none}.home__empty{font-size:var(--text-sm);color:var(--text-faint);padding:var(--space-2) 0}.home__list{display:flex;flex-direction:column;gap:var(--space-2)}.home__entry{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0}.home__entry+.home__entry{border-top:1px solid var(--border-subtle);padding-top:var(--space-3)}.home__entry-bar{width:3px;align-self:stretch;min-height:30px;border-radius:var(--radius-full);background:var(--accent);flex-shrink:0}.home__entry-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.home__entry-title{font-size:var(--text-sm);word-break:break-word}.home__entry-meta{font-size:var(--text-xs);color:var(--text-faint)}.home__entry-meta.is-overdue{color:var(--danger);font-weight:var(--weight-medium)}.home__shopping{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text);text-decoration:none;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.home__shopping:hover{background:var(--bg-surface-hover);border-color:var(--border);text-decoration:none}.home__shopping-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);flex-shrink:0}.home__shopping-arrow{color:var(--text-faint);flex-shrink:0}.home__avatar{flex-shrink:0;border-radius:var(--radius-full);transition:opacity var(--duration-fast) var(--ease)}.home__avatar:hover{opacity:.8;text-decoration:none}.home__entry-link{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;color:inherit;text-decoration:none}.home__entry-link:hover{text-decoration:none}.home__rest{padding:var(--space-2) 0 0;text-align:center}.home__rest a{color:var(--text-faint);font-size:var(--text-xs);text-decoration:none}.home__deal-icon{display:grid;place-items:center;width:26px;height:26px;flex:none;background:var(--accent-soft);border-radius:var(--radius-full);color:var(--accent)}.home__protein{display:flex;flex-direction:column;gap:5px;padding-bottom:var(--space-2)}.home__protein-bar{height:6px;background:var(--bg-inset);border-radius:var(--radius-full);overflow:hidden}.home__protein-bar span{display:block;height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width var(--duration) var(--ease-out)}.login{min-height:100dvh;display:grid;place-items:center;padding:var(--space-6);background:radial-gradient(1000px 500px at 12% -10%,var(--red-soft),transparent 60%),radial-gradient(900px 450px at 88% 110%,var(--purple-soft),transparent 60%),var(--bg-base)}.login__card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:var(--space-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-8) var(--space-6);box-shadow:var(--shadow-lg)}.login__brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.login__mark{width:46px;height:46px;border-radius:var(--radius);background:var(--shared-gradient);margin-bottom:var(--space-2)}.login__title{font-size:var(--text-2xl);letter-spacing:-.02em}.login__subtitle{font-size:var(--text-sm);color:var(--text-muted)}.login__error{font-size:var(--text-sm);color:var(--danger);background:var(--danger-soft);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted)}.field__input{height:46px;padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);transition:border-color var(--duration-fast) var(--ease)}.field__input:focus{outline:none;border-color:var(--accent)}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);overflow:hidden}.card--interactive{cursor:pointer;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.card--interactive:hover{background:var(--bg-surface-hover);border-color:var(--border)}.card--interactive:active{transform:scale(.995)}.card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-4) 0}.card__title{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text)}.card__action{display:flex;align-items:center;gap:var(--space-2)}.card__body{padding:var(--space-4)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.page-header__title{font-size:var(--text-2xl);letter-spacing:-.02em}.page-header__subtitle{margin-top:var(--space-1);font-size:var(--text-sm);color:var(--text-muted)}.page-header__action{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}@media(max-width:560px){.page-header{flex-direction:column;align-items:stretch;gap:var(--space-3)}.page-header__action{flex-wrap:wrap}.page-header__action .btn{flex:1;justify-content:center}}.toggle{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;cursor:pointer}.toggle.is-disabled{cursor:not-allowed;opacity:.5}.toggle__text{display:flex;flex-direction:column;gap:2px}.toggle__label{font-size:var(--text-sm);font-weight:var(--weight-medium)}.toggle__description{font-size:var(--text-xs);color:var(--text-muted);line-height:var(--leading-normal)}.toggle__track{position:relative;width:44px;height:26px;flex-shrink:0;border-radius:var(--radius-full);background:var(--bg-input);border:1px solid var(--border);transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.toggle__thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:var(--radius-full);background:var(--text-faint);transition:transform var(--duration) var(--ease),background var(--duration-fast) var(--ease)}.toggle input:checked+.toggle__track{background:var(--accent-soft);border-color:var(--accent-border)}.toggle input:checked+.toggle__track .toggle__thumb{transform:translate(18px);background:var(--accent)}.toggle input:focus-visible+.toggle__track{outline:2px solid var(--accent);outline-offset:2px}.settings{display:flex;flex-direction:column;gap:var(--space-4);max-width:640px}.settings__row{display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-4)}.settings__row:last-child{padding-bottom:0}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip{padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);background:var(--bg-input);border:1px solid var(--border);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.chip:hover{border-color:var(--border-strong);color:var(--text)}.chip.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.chip--red.is-active{background:var(--red-soft);border-color:var(--red-border);color:var(--red-500)}.chip--purple.is-active{background:var(--purple-soft);border-color:var(--purple-border);color:var(--purple-500)}.settings__notice{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);margin-bottom:var(--space-4);background:var(--warning-soft);border-radius:var(--radius);color:var(--warning)}.settings__notice-title{font-size:var(--text-sm);font-weight:var(--weight-medium)}.settings__notice-text{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}.settings__group+.settings__group{margin-top:var(--space-4)}.settings__group-title{margin-bottom:2px;color:var(--text-faint);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:.04em;text-transform:uppercase}.settings__toggles{display:flex;flex-direction:column}.settings__toggles>.toggle+.toggle{border-top:1px solid var(--border-subtle)}.settings__quiet{border-top:1px solid var(--border-subtle);margin-top:var(--space-2);padding-top:var(--space-2)}.settings__times{display:flex;gap:var(--space-3);padding-bottom:var(--space-3)}.field--inline{flex-direction:row;align-items:center;gap:var(--space-2)}.field--inline .field__input{height:38px;width:auto}.settings__test{border-top:1px solid var(--border-subtle);padding-top:var(--space-4)}.settings__hint{font-size:var(--text-sm);color:var(--text-muted)}.device-list{display:flex;flex-direction:column}.device{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0}.device+.device{border-top:1px solid var(--border-subtle)}.device__icon{color:var(--text-faint);flex-shrink:0}.device__text{flex:1;min-width:0}.device__name{font-size:var(--text-sm);font-weight:var(--weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device__meta{font-size:var(--text-xs);color:var(--text-muted)}.device__remove{color:var(--text-faint);padding:var(--space-2);border-radius:var(--radius-sm);transition:color var(--duration-fast) var(--ease);flex-shrink:0}.device__remove:hover{color:var(--danger)}.settings__test-result{margin-top:var(--space-2);font-size:var(--text-xs);color:var(--text-muted);line-height:var(--leading-normal)}.settings__hint{margin:var(--space-2) 0 0;color:var(--text-faint);font-size:var(--text-xs);line-height:var(--leading-normal)}.settings__hint code{padding:1px 5px;background:var(--bg-inset);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:11px}.chip__note{margin-left:6px;color:var(--text-faint);font-size:10px;font-style:normal}.more{display:flex;flex-direction:column;gap:var(--space-6)}.more__profile{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text);text-decoration:none;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.more__profile:hover{background:var(--bg-surface-hover);border-color:var(--border);text-decoration:none}.more__profile-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.more__profile-name{font-size:var(--text-base);font-weight:var(--weight-medium)}.more__profile-hint{font-size:var(--text-xs);color:var(--text-faint)}.more__arrow{color:var(--text-faint);flex-shrink:0}.more__group-title{font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:var(--space-3);padding-left:var(--space-1)}.more__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}.more__tile{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);color:var(--text);text-decoration:none;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.more__tile:hover{background:var(--bg-surface-hover);border-color:var(--border);text-decoration:none}.more__tile:active{transform:scale(.98)}.more__tile-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);flex-shrink:0}.more__tile-label{font-size:var(--text-sm);font-weight:var(--weight-medium)}.more__footer{display:flex;justify-content:center;padding-top:var(--space-2)}@media(min-width:900px){.more__group,.more__footer{display:none}}.more__tile-icon{position:relative}.more__tile-badge{position:absolute;top:-4px;right:-6px;display:grid;place-items:center;min-width:18px;height:18px;padding:0 5px;background:var(--accent);border-radius:var(--radius-full);color:var(--text-on-accent);font-size:10px;font-weight:var(--weight-semibold)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-12) var(--space-6);text-align:center}.empty-state__icon{display:grid;place-items:center;width:60px;height:60px;border-radius:var(--radius-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-faint);margin-bottom:var(--space-1)}.empty-state__title{font-size:var(--text-lg);font-weight:var(--weight-medium);color:var(--text)}.empty-state__text{font-size:var(--text-sm);color:var(--text-muted);max-width:34ch;line-height:var(--leading-relaxed)}.empty-state__action{margin-top:var(--space-2)}.form-field{display:flex;flex-direction:column;gap:var(--space-2)}.form-field__label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted)}.form-field__hint{font-size:var(--text-xs);color:var(--text-faint);line-height:var(--leading-normal)}.form-input{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);transition:border-color var(--duration-fast) var(--ease)}.form-input::placeholder{color:var(--text-faint)}.form-input:focus{outline:none;border-color:var(--accent)}.form-input--area{min-height:84px;resize:vertical;line-height:var(--leading-normal);padding-top:var(--space-3)}.form-input--select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:linear-gradient(45deg,transparent 50%,var(--text-faint) 50%),linear-gradient(135deg,var(--text-faint) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:var(--space-8)}.segmented{display:flex;gap:2px;padding:3px;background:var(--bg-inset);border:1px solid var(--border-subtle);border-radius:var(--radius)}.segmented__option{flex:1;padding:var(--space-2) var(--space-2);border-radius:calc(var(--radius) - 3px);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted);white-space:nowrap;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.segmented__option:hover{color:var(--text)}.segmented__option.is-active{background:var(--bg-input);color:var(--accent);box-shadow:var(--shadow-sm)}.todo-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-left:3px solid var(--accent);border-radius:var(--radius);transition:background var(--duration-fast) var(--ease),opacity var(--duration) var(--ease)}.todo-row:hover{background:var(--bg-surface-hover)}.todo-row.is-done{opacity:.45;border-left-color:var(--border-strong)}.todo-row.is-done .todo-row__title{text-decoration:line-through}.todo-row.is-overdue{border-left-color:var(--danger)}.todo-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left}.todo-row__title{font-size:var(--text-base);line-height:1.35;word-break:break-word}.todo-row__meta{display:flex;flex-wrap:wrap;gap:var(--space-2)}.todo-row__due,.todo-row__tag{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--text-faint)}.todo-row__due.is-overdue{color:var(--danger);font-weight:var(--weight-medium)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-sheet);background:#0009;display:flex;align-items:flex-end;justify-content:center;animation:fade-in var(--duration-fast) var(--ease-out)}.sheet{width:100%;max-height:92dvh;display:flex;flex-direction:column;background:var(--bg-elevated);border-top:1px solid var(--border);border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:sheet-in var(--duration) var(--ease);padding-bottom:var(--safe-bottom)}.sheet__header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-4);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.sheet__grabber{position:absolute;top:var(--space-2);left:50%;transform:translate(-50%);width:36px;height:4px;border-radius:var(--radius-full);background:var(--border-strong)}.sheet__title{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.sheet__close{color:var(--text-faint);padding:var(--space-1);border-radius:var(--radius-sm);flex-shrink:0;transition:color var(--duration-fast) var(--ease)}.sheet__close:hover{color:var(--text)}.sheet__body{flex:1;overflow-y:auto;padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.sheet__footer{display:flex;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border-subtle);flex-shrink:0}.sheet__footer>*{flex:1}@media(min-width:720px){.sheet-backdrop{align-items:center}.sheet{max-width:520px;border-radius:var(--radius-xl);border:1px solid var(--border);animation:scale-in var(--duration) var(--ease-out);box-shadow:var(--shadow-lg)}.sheet__grabber{display:none}}.person-picker{display:flex;flex-wrap:wrap;gap:var(--space-2)}.person-picker__option{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3) var(--space-2) var(--space-2);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-input);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.person-picker__option:hover{border-color:var(--border-strong);color:var(--text)}.person-picker__option.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.recurrence{display:flex;flex-direction:column;gap:var(--space-3)}.recurrence__custom{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);background:var(--bg-inset);border:1px solid var(--border-subtle);border-radius:var(--radius);animation:fade-in var(--duration-fast) var(--ease-out)}.recurrence__row{display:grid;grid-template-columns:90px 1fr;gap:var(--space-3)}.recurrence__days{display:flex;gap:var(--space-1)}.recurrence__day{flex:1;height:38px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-muted);font-size:var(--text-xs);font-weight:var(--weight-medium);transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.recurrence__day:hover{border-color:var(--border-strong);color:var(--text)}.recurrence__day.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.todos{display:flex;flex-direction:column}.todos__lists{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-3);margin-bottom:var(--space-1);scrollbar-width:none}.todos__lists::-webkit-scrollbar{display:none}.todos__list-tab{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.todos__list-tab.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.todos__count{display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-full);background:var(--bg-inset);font-size:11px;font-variant-numeric:tabular-nums}.todos__filter{margin-bottom:var(--space-4)}.todos__list{display:flex;flex-direction:column;gap:var(--space-2)}.todos__list>*{animation:slide-up var(--duration) var(--ease-out) both}.recipe-form{display:flex;flex-direction:column;gap:var(--space-4)}.recipe-form__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.recipe-form__section{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border-subtle)}.recipe-form__heading{margin:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.recipe-form__image{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:132px;padding:var(--space-4);background:var(--bg-inset);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;overflow:hidden}.recipe-form__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.recipe-form__image span{position:relative;padding:4px 10px;background:var(--bg-base);border-radius:var(--radius-full)}.ingredient-row{display:grid;grid-template-columns:62px 58px 1fr 32px;gap:var(--space-2);align-items:center}.step-row{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--bg-inset);border:1px solid var(--border-subtle);border-radius:var(--radius)}.step-row__head{display:flex;align-items:center;justify-content:space-between}.step-row__number{display:inline-flex;align-items:center;gap:4px;color:var(--text-faint);font-size:var(--text-xs)}.row-delete{display:grid;place-items:center;width:32px;height:32px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-faint);cursor:pointer}.row-delete:hover{background:var(--danger-soft);color:var(--danger)}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag-list__tag{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--radius-full);font-size:var(--text-xs)}.tag-list__tag button{display:grid;place-items:center;background:transparent;border:none;color:inherit;cursor:pointer;opacity:.7}.tag-list__add{display:flex;gap:var(--space-2)}.tag-list__add .form-input{flex:1}.recipes__actions{display:flex;gap:var(--space-2)}.recipes__search{position:relative;margin-bottom:var(--space-3)}.recipes__search-icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-faint);pointer-events:none}.recipes__search-input{width:100%;padding:var(--space-3) var(--space-3) var(--space-3) calc(var(--space-3) * 2 + 16px);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-size:var(--text-base);font-family:inherit}.recipes__search-input:focus{outline:none;border-color:var(--accent-border)}.recipes__filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.filter-chip{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;background:var(--bg-surface);border:1px solid var(--border);border-radius:999px;color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;transition:background var(--duration-fast),border-color var(--duration-fast),color var(--duration-fast)}.filter-chip:hover{background:var(--bg-surface-hover);color:var(--text)}.filter-chip.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--text)}.filter-chip--clear{color:var(--text-faint)}.recipes__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}.recipe-card{display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;text-decoration:none;color:inherit;transition:border-color var(--duration-fast),transform var(--duration-fast)}.recipe-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.recipe-card__image{position:relative;aspect-ratio:4 / 3;background:var(--bg-inset);display:flex;align-items:center;justify-content:center}.recipe-card__image img{width:100%;height:100%;object-fit:cover}.recipe-card__placeholder{color:var(--text-faint)}.recipe-card__favorite{position:absolute;top:var(--space-2);right:var(--space-2);display:grid;place-items:center;width:26px;height:26px;border-radius:999px;background:var(--bg-base);color:var(--red-500)}.recipe-card__body{padding:var(--space-3);display:flex;flex-direction:column;gap:6px}.recipe-card__title{margin:0;font-size:var(--text-sm);font-weight:600;line-height:1.3}.recipe-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--text-faint);font-size:var(--text-xs)}.recipe-card__meta span{display:inline-flex;align-items:center;gap:4px}.cookable-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.cookable{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.cookable__main{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);color:var(--text);text-decoration:none}.cookable__main:hover{text-decoration:none}.cookable__text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.cookable__title{font-size:var(--text-base)}.cookable__meta{color:var(--text-muted);font-size:var(--text-xs)}.cookable__missing{color:var(--text-faint);font-size:var(--text-xs)}.cookable__uses-up{display:inline-flex;align-items:center;gap:4px;color:var(--warning);font-size:var(--text-xs)}.cookable__share{flex:none;color:var(--accent);font-size:var(--text-lg);font-weight:var(--weight-medium)}.recipe-detail{display:flex;flex-direction:column;gap:var(--space-5);padding-bottom:var(--space-10)}.recipe-detail__missing{color:var(--text-muted)}.recipe-detail__hero{position:relative;margin:calc(var(--space-4) * -1) calc(var(--space-4) * -1) 0}.recipe-detail__image{display:block;width:100%;max-height:320px;object-fit:cover;background:var(--bg-inset)}.recipe-detail__image--empty{display:grid;place-items:center;height:180px;color:var(--text-faint)}.recipe-detail__back,.recipe-detail__favorite{position:absolute;top:var(--space-4);display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-base);color:var(--text);cursor:pointer}.recipe-detail__back{left:var(--space-4);text-decoration:none}.recipe-detail__favorite{right:var(--space-4)}.recipe-detail__favorite.is-active{color:var(--red-500);border-color:var(--red-border)}.recipe-detail__head{display:flex;flex-direction:column;gap:var(--space-2)}.recipe-detail__title{margin:0;font-size:var(--text-2xl);font-weight:var(--weight-bold);line-height:var(--leading-tight)}.recipe-detail__text{margin:0;color:var(--text-muted);line-height:var(--leading-relaxed)}.recipe-detail__meta{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--text-faint);font-size:var(--text-xs)}.recipe-detail__meta span{display:inline-flex;align-items:center;gap:4px}.recipe-detail__rating{display:flex;align-items:center;gap:2px}.recipe-detail__rating-label{margin-left:var(--space-2);color:var(--text-faint);font-size:var(--text-xs)}.star{display:grid;place-items:center;padding:2px;background:transparent;border:none;color:var(--text-faint);cursor:pointer}.star.is-on{color:var(--warning)}.recipe-detail__tags{display:flex;flex-wrap:wrap;gap:var(--space-2);color:var(--text-muted);font-size:var(--text-xs)}.recipe-detail__actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.recipe-detail__section{display:flex;flex-direction:column;gap:var(--space-3)}.recipe-detail__section h2{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold)}.recipe-detail__section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.portions{display:inline-flex;align-items:center;gap:var(--space-2);padding:3px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full)}.portions button{display:grid;place-items:center;width:28px;height:28px;background:var(--bg-elevated);border:none;border-radius:var(--radius-full);color:var(--text);cursor:pointer}.portions span{display:inline-flex;align-items:center;gap:4px;min-width:46px;justify-content:center;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.ingredient-group__name{margin:0 0 var(--space-2);font-size:var(--text-sm);color:var(--text-muted)}.ingredient-list{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.ingredient-list li{display:grid;grid-template-columns:auto 88px 1fr;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2);border-radius:var(--radius-sm)}.ingredient-list li:hover{background:var(--bg-surface)}.ingredient-list li.is-ticked{color:var(--text-faint);text-decoration:line-through}.ingredient-list__amount{color:var(--accent);font-size:var(--text-sm);font-variant-numeric:tabular-nums;text-align:right}.ingredient-list__have{display:inline-flex;align-items:center;gap:3px;margin-left:var(--space-2);padding:1px 6px;background:var(--success-soft);border-radius:var(--radius-full);color:var(--success);font-size:10px;vertical-align:middle}.ingredient-list li.is-ticked .ingredient-list__have{display:none}.ingredient-list li.is-ticked .ingredient-list__amount{color:inherit}.step-list{display:flex;flex-direction:column;gap:var(--space-3);margin:0;padding:0;list-style:none;counter-reset:step}.step-list li{display:grid;grid-template-columns:30px 1fr;gap:var(--space-3);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius)}.step-list li p{margin:0;line-height:var(--leading-relaxed);white-space:pre-wrap}.step-list__number{display:grid;place-items:center;width:30px;height:30px;background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--radius-full);color:var(--accent);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.step-list__timers{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-2)}.step-list__timers span{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;background:var(--bg-elevated);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs)}.history-list{margin:0;padding:0;list-style:none;color:var(--text-muted);font-size:var(--text-sm);display:flex;flex-direction:column;gap:4px}.recipe-detail__source{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted);font-size:var(--text-sm)}.recipe-detail__danger{padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}.muted-note{display:flex;align-items:center;gap:6px;margin:var(--space-3) 0 0;color:var(--text-faint);font-size:var(--text-xs)}.import-warning{display:flex;align-items:center;gap:6px;padding:var(--space-3);background:var(--warning-soft);border-radius:var(--radius);color:var(--text);font-size:var(--text-sm)}@media(min-width:720px){.recipe-detail__hero{margin:0;border-radius:var(--radius-lg);overflow:hidden}}.cook{display:flex;flex-direction:column;gap:var(--space-4);min-height:100%;padding-bottom:var(--space-10)}.cook__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.cook__recipe{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold)}.cook__progress{margin:2px 0 0;color:var(--text-faint);font-size:var(--text-xs)}.cook__close{display:grid;place-items:center;width:38px;height:38px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text);cursor:pointer}.cook__bar{height:4px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.cook__bar span{display:block;height:100%;background:var(--accent);transition:width var(--duration) var(--ease)}.cook__timers{display:flex;flex-wrap:wrap;gap:var(--space-2)}.cook__timer{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--accent-soft);border:1px solid var(--accent-border);border-radius:var(--radius-full);color:var(--text);font-size:var(--text-sm);font-family:inherit;cursor:pointer}.cook__timer strong{font-variant-numeric:tabular-nums}.cook__step{padding:var(--space-5);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.cook__step p{margin:0;font-size:var(--text-lg);line-height:var(--leading-relaxed);white-space:pre-wrap}.cook__step-timers{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.cook__ingredients h2{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.cook__ingredients ul{display:flex;flex-direction:column;gap:2px;margin:0;padding:0;list-style:none}.cook__ingredients li{display:grid;grid-template-columns:auto 88px 1fr;align-items:center;gap:var(--space-3);padding:var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-sm)}.cook__ingredients li.is-ticked{color:var(--text-faint);text-decoration:line-through}.cook__ingredients li span:nth-of-type(1){color:var(--accent);text-align:right;font-variant-numeric:tabular-nums}.cook__ingredients li.is-ticked span:nth-of-type(1){color:inherit}.cook__foot{position:sticky;bottom:calc(var(--safe-bottom) + var(--space-2));display:flex;justify-content:space-between;gap:var(--space-3);padding-top:var(--space-2);background:linear-gradient(to top,var(--bg-base) 70%,transparent)}.mealplan{display:flex;flex-direction:column;gap:var(--space-4);padding-bottom:var(--space-10)}.mealplan__actions{display:flex;gap:var(--space-2)}.mealplan__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.mealplan__nav,.mealplan__views{display:inline-flex;gap:2px;padding:3px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full)}.mealplan__nav button,.mealplan__views button{display:grid;place-items:center;min-width:34px;height:30px;padding:0 var(--space-3);background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer}.mealplan__nav button:hover,.mealplan__views button:hover{background:var(--bg-elevated);color:var(--text)}.mealplan__views button.is-active{background:var(--accent-soft);color:var(--text)}.mealplan__grid{display:grid;gap:var(--space-3)}.mealplan__grid--week{grid-template-columns:1fr}.mealplan__grid--month{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.plan-day{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius)}.plan-day.is-today{border-color:var(--accent-border)}.plan-day__head{display:flex;align-items:baseline;gap:var(--space-2)}.plan-day__weekday{font-size:var(--text-sm);font-weight:var(--weight-semibold)}.plan-day__date{color:var(--text-faint);font-size:var(--text-xs)}.plan-day__away{display:inline-flex;align-items:center;gap:3px;margin-left:auto;padding:2px 7px;background:var(--warning-soft);border-radius:var(--radius-full);color:var(--warning);font-size:var(--text-xs)}.plan-day__slots{display:flex;flex-direction:column;gap:var(--space-2)}.plan-day__empty{display:grid;place-items:center;height:34px;background:transparent;border:1px dashed var(--border);border-radius:var(--radius-sm);color:var(--text-faint);cursor:pointer}.plan-slot{display:flex;flex-direction:column;gap:4px}.plan-slot__label{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;padding:2px 4px;background:transparent;border:none;color:var(--text-faint);font-size:var(--text-xs);font-family:inherit;cursor:pointer}.plan-slot__label:hover{color:var(--text)}.plan-entry{display:flex;align-items:stretch;gap:var(--space-2);background:var(--bg-elevated);border:1px solid var(--border-subtle);border-left:3px solid var(--accent);border-radius:var(--radius-sm);overflow:hidden}.plan-entry.is-cooked{opacity:.6}.plan-entry__main{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-items:center;gap:0 var(--space-2);flex:1;padding:var(--space-2);background:transparent;border:none;color:inherit;text-align:left;font-family:inherit;cursor:pointer}.plan-entry__main img{grid-row:span 2;width:34px;height:34px;border-radius:var(--radius-sm);object-fit:cover}.plan-entry__title{font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1.25}.plan-entry__meta{color:var(--text-faint);font-size:var(--text-xs)}.plan-entry__cooked{display:grid;place-items:center;width:36px;background:transparent;border:none;border-left:1px solid var(--border-subtle);color:var(--text-faint);cursor:pointer}.plan-entry__cooked:hover{background:var(--success-soft);color:var(--success)}.mealplan__suggestions h2{display:flex;align-items:center;gap:6px;margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.mealplan__suggestion-row{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-2)}.suggestion{display:flex;flex-direction:column;gap:4px;flex:0 0 132px;padding:var(--space-2);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:inherit;text-align:left;font-family:inherit;cursor:pointer}.suggestion img,.suggestion__placeholder{width:100%;height:72px;border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-inset);display:grid;place-items:center;color:var(--text-faint)}.suggestion__title{font-size:var(--text-xs);font-weight:var(--weight-medium);line-height:1.25}.suggestion__reason{color:var(--text-faint);font-size:var(--text-xs)}.meal-form{display:flex;flex-direction:column;gap:var(--space-4)}.meal-form__search{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-faint)}.meal-form__search input{flex:1;padding:var(--space-3) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.meal-form__search input:focus{outline:none}.meal-form__recipes{display:flex;flex-direction:column;gap:2px;max-height:240px;overflow-y:auto;margin:0;padding:0;list-style:none}.meal-form__recipes button{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;padding:var(--space-3);background:var(--bg-surface);border:1px solid transparent;border-radius:var(--radius-sm);color:inherit;text-align:left;font-family:inherit;font-size:var(--text-sm);cursor:pointer}.meal-form__recipes button.is-active{background:var(--accent-soft);border-color:var(--accent-border)}.meal-form__recipes em{color:var(--text-faint);font-size:var(--text-xs);font-style:normal}.meal-form__empty{padding:var(--space-3);color:var(--text-faint);font-size:var(--text-sm)}@media(min-width:900px){.mealplan__grid--week{grid-template-columns:repeat(7,1fr);align-items:start}.plan-day{min-height:200px}}.product-picker{display:flex;align-items:center;gap:var(--space-2)}.product-picker--open{display:block;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.product-picker__chosen{display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0;padding:var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:inherit;font-size:var(--text-base);text-align:left;cursor:pointer}.product-picker__chosen.is-empty{color:var(--text-faint)}.product-picker__chosen span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.product-picker__clear{display:grid;place-items:center;width:34px;height:34px;flex:none;background:transparent;border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-faint);cursor:pointer}.product-picker__search{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);border-bottom:1px solid var(--border-subtle);color:var(--text-faint)}.product-picker__search input{flex:1;padding:var(--space-3) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.product-picker__search input:focus{outline:none}.product-picker__search button{background:transparent;border:none;color:var(--text-faint);cursor:pointer}.product-picker__list{margin:0;padding:0;list-style:none;max-height:220px;overflow-y:auto}.product-picker__list button{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-3);background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-sm);text-align:left;cursor:pointer}.product-picker__list button:hover,.product-picker__list button.is-chosen{background:var(--bg-surface)}.product-picker__list em{color:var(--text-faint);font-style:normal}.product-picker__empty{padding:var(--space-3);color:var(--text-faint);font-size:var(--text-sm)}.more{display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-10)}.more__actions{display:flex;gap:var(--space-2)}.more__tabs{display:inline-flex;gap:2px;padding:3px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);align-self:flex-start}.more__tabs button{padding:6px var(--space-4);background:transparent;border:none;border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-sm);font-family:inherit;cursor:pointer}.more__tabs button.is-active{background:var(--accent-soft);color:var(--text)}.more__search{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-faint)}.more__search input{flex:1;padding:var(--space-3) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.more__search input:focus{outline:none}.more__filters{display:flex;flex-wrap:wrap;gap:var(--space-2)}.product-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.product{display:flex;align-items:stretch;gap:var(--space-2);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.product__main{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;padding:var(--space-3);background:transparent;border:none;color:inherit;text-align:left;font-family:inherit;cursor:pointer}.product__main img,.product__placeholder{width:44px;height:44px;flex:none;border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-inset);display:grid;place-items:center;color:var(--text-faint)}.product__text{display:flex;flex-direction:column;gap:2px;min-width:0}.product__title{font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1.25;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.product__variant{color:var(--text-muted);font-size:var(--text-xs)}.product__price{display:flex;align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:var(--text-xs)}.product__price s{color:var(--text-faint)}.product__price em{color:var(--warning);font-style:normal}.product__watch{margin-left:auto;color:var(--accent)}.product__stock{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:var(--space-2);border-left:1px solid var(--border-subtle)}.product__stock button{display:grid;place-items:center;width:28px;height:24px;background:var(--bg-elevated);border:none;border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.product__stock span{display:flex;flex-direction:column;align-items:center;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.product__stock em{color:var(--text-faint);font-size:10px;font-style:normal}.more__shop-link{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted);font-size:var(--text-xs)}.product-form{display:flex;flex-direction:column;gap:var(--space-4)}.product-form__head{display:flex;gap:var(--space-3);align-items:center}.product-form__head img{width:64px;height:64px;border-radius:var(--radius);object-fit:cover;background:var(--bg-inset)}.product-form__price{display:flex;gap:var(--space-2);margin:0 0 2px;font-size:var(--text-lg);font-weight:var(--weight-semibold)}.product-form__price s{color:var(--text-faint);font-size:var(--text-sm);font-weight:var(--weight-normal);align-self:center}.product-form__variant{margin:0 0 4px;color:var(--text-muted);font-size:var(--text-sm)}.product-form__section{display:flex;flex-direction:column;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border-subtle)}.product-form__section h3{margin:0;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.product-form__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);align-items:end}.intake{display:flex;flex-direction:column;gap:var(--space-3)}.intake__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.intake__count{margin:0;font-size:var(--text-lg);font-weight:var(--weight-semibold)}.intake__protein{margin:2px 0 0;color:var(--accent);font-size:var(--text-sm)}.intake__protein--muted{color:var(--text-faint)}.intake__bar{height:6px;background:var(--bg-elevated);border-radius:var(--radius-full);overflow:hidden}.intake__bar span{display:block;height:100%;background:var(--accent);transition:width var(--duration) var(--ease)}.intake__list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.intake__list li{display:grid;grid-template-columns:auto 46px 1fr auto;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius)}.intake__list li.is-done{opacity:.6}.intake__tick{display:grid;place-items:center;width:30px;height:30px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-faint);cursor:pointer}.intake__list li.is-done .intake__tick{background:var(--success-soft);border-color:transparent;color:var(--success)}.intake__time{color:var(--text-faint);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.intake__text{display:flex;flex-direction:column;gap:2px;min-width:0}.intake__title{font-size:var(--text-sm);font-weight:var(--weight-medium)}.intake__meta{color:var(--text-faint);font-size:var(--text-xs)}.intake__remove{display:grid;place-items:center;width:30px;height:30px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-faint);cursor:pointer}.intake__remove:hover{background:var(--danger-soft);color:var(--danger)}.intake-form{display:flex;flex-direction:column;gap:var(--space-4)}.intake-slot{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--bg-inset);border:1px solid var(--border-subtle);border-radius:var(--radius)}.intake-slot__row{display:flex;gap:var(--space-2);align-items:center}.intake-slot__row .form-input{flex:1}.intake-slot__time{max-width:140px}.product-form__actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.stock{display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-10)}.stock__actions{display:flex;gap:var(--space-2)}.stock__search{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-faint)}.stock__search input{flex:1;padding:var(--space-3) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.stock__search input:focus{outline:none}.stock__filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.stock__filters .filter-chip em{margin-left:4px;color:var(--text-faint);font-size:10px;font-style:normal}.stock__filter-gap{flex:1;min-width:var(--space-2)}.stock-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.stock-item{display:flex;align-items:stretch;background:var(--bg-surface);border:1px solid var(--border);border-left:3px solid transparent;border-radius:var(--radius);overflow:hidden}.stock-item.is-low{border-left-color:var(--warning)}.stock-item.is-expired{border-left-color:var(--danger)}.stock-item__main{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;padding:var(--space-3);background:transparent;border:none;color:inherit;text-align:left;font-family:inherit;cursor:pointer}.stock-item__main img,.stock-item__placeholder{width:42px;height:42px;flex:none;border-radius:var(--radius-sm);object-fit:cover;background:var(--bg-inset);display:grid;place-items:center;color:var(--text-faint)}.stock-item__text{display:flex;flex-direction:column;gap:2px;min-width:0}.stock-item__name{font-size:var(--text-sm);font-weight:var(--weight-medium)}.stock-item__meta{color:var(--text-faint);font-size:var(--text-xs)}.stock-item__expiry{display:inline-flex;align-items:center;gap:4px;color:var(--warning);font-size:var(--text-xs)}.stock-item.is-expired .stock-item__expiry{color:var(--danger)}.stock-item__count{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:var(--space-2);border-left:1px solid var(--border-subtle)}.stock-item__count button{display:grid;place-items:center;width:28px;height:24px;background:var(--bg-elevated);border:none;border-radius:var(--radius-sm);color:var(--text);cursor:pointer}.stock-item__count span{display:flex;flex-direction:column;align-items:center;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.stock-item__count em{color:var(--text-faint);font-size:10px;font-style:normal}.stock-form{display:flex;flex-direction:column;gap:var(--space-4)}.stock-form__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);align-items:end}.stock-form__image{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:110px;padding:var(--space-4);background:var(--bg-inset);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;overflow:hidden}.stock-form__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.stock-form__image span{position:relative;padding:4px 10px;background:var(--bg-base);border-radius:var(--radius-full)}.stock-form__link{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted);font-size:var(--text-sm)}.stock-form__history{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border-subtle)}.stock-form__history>button{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;background:transparent;border:none;color:var(--text-muted);font-family:inherit;font-size:var(--text-sm);cursor:pointer}.stock-form__history ul{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.stock-form__history li{display:flex;justify-content:space-between;gap:var(--space-2);padding:var(--space-2);background:var(--bg-inset);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--text-xs)}.stock-item.is-more .stock-item__placeholder{color:var(--accent)}.stock-form__more{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-inset);border-radius:var(--radius)}.stock-form__more img{width:48px;height:48px;flex:none;object-fit:contain;background:var(--bg-base);border-radius:var(--radius-sm)}.stock-form__more p{margin:0;color:var(--text-muted);font-size:var(--text-xs);line-height:var(--leading-normal)}.stock-form__more-link{display:inline-flex;align-items:center;gap:5px;margin-top:var(--space-2);padding:0;background:transparent;border:none;color:var(--accent);font-family:inherit;font-size:var(--text-xs);cursor:pointer}.bucket{display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-10)}.bucket__search{display:flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-faint)}.bucket__search input{flex:1;padding:var(--space-3) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.bucket__search input:focus{outline:none}.bucket__filters{display:flex;flex-wrap:wrap;gap:var(--space-2)}.bucket__filters .filter-chip em{margin-left:4px;color:var(--text-faint);font-size:10px;font-style:normal}.bucket__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--space-3)}.bucket-card{display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius-lg);overflow:hidden}.bucket-card[data-person=both]{border-top-color:transparent;background-image:var(--shared-gradient);background-repeat:no-repeat;background-size:100% 3px}.bucket-card.is-done{opacity:.85}.bucket-card__main{display:flex;flex-direction:column;flex:1;padding:0;background:transparent;border:none;color:inherit;text-align:left;font-family:inherit;cursor:pointer}.bucket-card__image{position:relative;aspect-ratio:16 / 10;background:var(--bg-inset);display:grid;place-items:center;color:var(--text-faint)}.bucket-card__image img{width:100%;height:100%;object-fit:cover}.bucket-card__status{position:absolute;top:var(--space-2);left:var(--space-2);padding:3px 9px;background:var(--bg-base);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs)}.bucket-card.is-done .bucket-card__status{background:var(--success-soft);color:var(--success)}.bucket-card__body{display:flex;flex-direction:column;gap:6px;padding:var(--space-3)}.bucket-card__body h3{margin:0;font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:1.25}.bucket-card__body p{margin:0;color:var(--text-muted);font-size:var(--text-sm);line-height:var(--leading-normal);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.bucket-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--text-faint);font-size:var(--text-xs)}.bucket-card__meta span{display:inline-flex;align-items:center;gap:4px}.bucket-card__note{margin:0;padding-top:var(--space-2);border-top:1px solid var(--border-subtle);color:var(--text-muted);font-size:var(--text-sm);font-style:italic}.bucket-card__complete{display:flex;align-items:center;justify-content:center;gap:6px;padding:var(--space-3);background:var(--bg-elevated);border:none;border-top:1px solid var(--border-subtle);color:var(--text-muted);font-family:inherit;font-size:var(--text-sm);cursor:pointer}.bucket-card__complete:hover{background:var(--success-soft);color:var(--success)}.bucket-form{display:flex;flex-direction:column;gap:var(--space-4)}.bucket-form__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);align-items:end}.bucket-form__image{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:120px;padding:var(--space-4);background:var(--bg-inset);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;overflow:hidden}.bucket-form__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.bucket-form__image span{position:relative;padding:4px 10px;background:var(--bg-base);border-radius:var(--radius-full)}.bucket-form__done{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);background:var(--success-soft);border-radius:var(--radius)}.bucket-form__done p{margin:0;font-size:var(--text-sm)}.bucket-form__links h3{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted)}.bucket-form__link{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2);background:var(--bg-inset);border-radius:var(--radius-sm);font-size:var(--text-sm)}.bucket-form__link a{color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bucket-form__link button{display:grid;place-items:center;background:transparent;border:none;color:var(--text-faint);cursor:pointer}.bucket-form__photos{display:flex;flex-wrap:wrap;gap:var(--space-2)}.bucket-form__photo{position:relative;width:86px;height:86px;border-radius:var(--radius-sm);overflow:hidden}.bucket-form__photo img{width:100%;height:100%;object-fit:cover}.bucket-form__photo button{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:20px;height:20px;background:var(--bg-base);border:none;border-radius:var(--radius-full);color:var(--text);cursor:pointer}.bucket-form__add-photo{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:86px;height:86px;background:var(--bg-inset);border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);cursor:pointer}.sticker-picker{display:flex;flex-direction:column;gap:var(--space-3);max-height:min(60dvh,520px)}.sticker-picker__search{display:flex;align-items:center;gap:var(--space-2);flex:none;padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-faint)}.sticker-picker__search input{flex:1;padding:var(--space-2) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.sticker-picker__search input:focus{outline:none}.sticker-picker__tabs{display:flex;gap:var(--space-2);flex:none;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.sticker-picker__tabs::-webkit-scrollbar{display:none}.sticker-picker__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:var(--space-2);min-height:0;overflow-y:auto}.sticker-picker__item{display:grid;place-items:center;padding:4px;background:transparent;border:none;border-radius:var(--radius);cursor:pointer}.sticker-picker__item:hover{background:var(--bg-surface)}.sticker{position:relative;display:grid;place-items:center;flex:none}.sticker__canvas,.sticker__canvas svg{width:100%;height:100%;display:block}.sticker__fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;line-height:1}.chat-row.is-sticker .chat-bubble{padding:0;background:transparent;border-color:transparent}.chat-row.is-sticker .chat-bubble__meta{padding:0 4px 2px}.sticker-picker__emoji{display:grid;place-items:center;width:56px;height:56px;font-family:var(--font),var(--emoji-font);font-size:38px;line-height:1}.sticker-preview{display:flex;align-items:center;gap:var(--space-3);flex:none;min-height:108px;padding:var(--space-2) var(--space-3);background:var(--bg-inset);border-radius:var(--radius)}.sticker-preview__hint{color:var(--text-faint);font-size:var(--text-xs);line-height:var(--leading-normal)}.sticker-preview__name{color:var(--text-muted);font-size:var(--text-sm)}.sticker-picker__item:active .sticker-picker__emoji{transform:scale(.88)}.sticker-picker__emoji{transition:transform var(--duration-fast) var(--ease)}.chat{display:flex;flex-direction:column;flex:1;min-height:0}.chat__scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-4)}.chat__older{display:flex;justify-content:center;padding:var(--space-2) 0}.chat__day{align-self:center;margin:var(--space-3) auto var(--space-2);padding:3px 12px;background:var(--bg-surface);border-radius:var(--radius-full);color:var(--text-faint);font-size:var(--text-xs);width:fit-content}.chat-row{position:relative;display:flex;align-items:flex-end;gap:var(--space-2);padding:2px 0}.chat-row.is-own{flex-direction:row-reverse}.chat-bubble{position:relative;max-width:min(76%,560px);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-sm)}.chat-row.is-own .chat-bubble{background:var(--accent-soft);border-color:var(--accent-border);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-sm)}.chat-bubble__reply{display:flex;align-items:center;gap:5px;margin-bottom:var(--space-2);padding-left:var(--space-2);border-left:2px solid var(--accent);color:var(--text-faint);font-size:var(--text-xs)}.chat-bubble__reply span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.chat-bubble__image{display:block;margin-bottom:var(--space-2);border-radius:var(--radius);overflow:hidden}.chat-bubble__image img{display:block;max-width:100%;max-height:320px;object-fit:cover}.chat-bubble__body{margin:0;line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere}.chat-bubble__meta{display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:4px;color:var(--text-faint);font-size:11px}.chat-bubble__read{color:var(--accent)}.chat-bubble__reactions{display:flex;flex-wrap:wrap;gap:4px;margin-top:var(--space-2)}.chat-reaction{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text);font-size:var(--text-xs);cursor:pointer}.chat-reaction em{color:var(--text-faint);font-size:10px;font-style:normal}.chat-row__actions{display:flex;gap:2px;opacity:0;transition:opacity var(--duration-fast) var(--ease)}.chat-row:hover .chat-row__actions,.chat-row:focus-within .chat-row__actions{opacity:1}.chat-row__actions button{display:grid;place-items:center;width:28px;height:28px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-faint);cursor:pointer}.chat-row__actions button:hover{background:var(--bg-surface);color:var(--text)}.emoji-picker{position:absolute;bottom:100%;z-index:2;display:flex;gap:2px;padding:4px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-full);box-shadow:var(--shadow)}.chat-row.is-own .emoji-picker{right:0}.emoji-picker button{display:grid;place-items:center;width:32px;height:32px;background:transparent;border:none;border-radius:var(--radius-full);font-size:18px;cursor:pointer}.emoji-picker button:hover{background:var(--bg-surface)}.chat__typing{display:flex;gap:4px;align-items:center;align-self:flex-start;padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:fit-content}.chat__typing span{width:6px;height:6px;border-radius:var(--radius-full);background:var(--accent);animation:chat-typing 1.2s infinite ease-in-out}.chat__typing span:nth-child(2){animation-delay:.15s}.chat__typing span:nth-child(3){animation-delay:.3s}@keyframes chat-typing{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@media(prefers-reduced-motion:reduce){.chat__typing span{animation:none;opacity:.6}}.chat-composer{position:sticky;bottom:0;display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-2);background:var(--bg-base)}.chat-composer__context{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-surface);border-left:2px solid var(--accent);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--text-xs)}.chat-composer__context span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-composer__context button{display:grid;place-items:center;background:transparent;border:none;color:var(--text-faint);cursor:pointer}.chat-composer__attachment{position:relative;width:92px;height:92px;border-radius:var(--radius);overflow:hidden}.chat-composer__attachment img{width:100%;height:100%;object-fit:cover}.chat-composer__attachment button{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:20px;height:20px;background:var(--bg-base);border:none;border-radius:var(--radius-full);color:var(--text);cursor:pointer}.chat-composer__row{display:flex;align-items:flex-end;gap:var(--space-2)}.chat-composer__input{flex:1;max-height:160px;padding:var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);font-size:var(--text-base);line-height:var(--leading-normal);resize:vertical}.chat-composer__input:focus{outline:none;border-color:var(--accent-border)}.chat-composer__icon,.chat-composer__send{display:grid;place-items:center;width:42px;height:42px;flex:none;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-surface);color:var(--text-muted);cursor:pointer}.chat-composer__send{background:var(--accent);border-color:transparent;color:var(--text-on-accent)}.chat-composer__send:disabled{background:var(--bg-surface);color:var(--text-faint);cursor:default}.wishlists{display:flex;flex-direction:column;gap:var(--space-3);padding-bottom:var(--space-10)}.wishlists__tabs{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-2);scrollbar-width:none}.wishlists__tabs::-webkit-scrollbar{display:none}.wishlists__tab{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-sm);font-family:inherit;white-space:nowrap;cursor:pointer}.wishlists__tab.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--text)}.wishlists__tab span{display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;background:var(--bg-inset);border-radius:var(--radius-full);font-size:11px}.wishlists__tab--icon{width:34px;padding:var(--space-2);justify-content:center;color:var(--text-faint)}.wishlists__surprise{display:flex;align-items:center;gap:6px;margin:0;padding:var(--space-2) var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-xs)}.wishlists__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--space-3)}.wish-card{display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.wish-card.is-reserved{border-color:var(--warning)}.wish-card.is-bought{border-color:var(--success);opacity:.8}.wish-card__main{display:flex;flex-direction:column;flex:1;padding:0;background:transparent;border:none;color:inherit;text-align:left;font-family:inherit;cursor:pointer}.wish-card__image{position:relative;aspect-ratio:4 / 3;background:var(--bg-inset);display:grid;place-items:center;color:var(--text-faint)}.wish-card__image img{width:100%;height:100%;object-fit:contain;background:var(--bg-inset)}.wish-card__status{position:absolute;top:var(--space-2);left:var(--space-2);padding:3px 9px;background:var(--bg-base);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-xs)}.wish-card.is-bought .wish-card__status{background:var(--success-soft);color:var(--success)}.wish-card.is-reserved .wish-card__status{background:var(--warning-soft);color:var(--warning)}.wish-card__body{display:flex;flex-direction:column;gap:5px;padding:var(--space-3)}.wish-card__body h3{margin:0;font-size:var(--text-base);font-weight:var(--weight-semibold);line-height:1.25}.wish-card__body p{margin:0;color:var(--text-muted);font-size:var(--text-sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.wish-card__meta{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--text-faint);font-size:var(--text-xs)}.wish-card__meta span:first-child{color:var(--accent);font-variant-numeric:tabular-nums}.wish-card__actions{display:flex;align-items:stretch;border-top:1px solid var(--border-subtle)}.wish-card__actions button,.wish-card__actions a{display:inline-flex;align-items:center;justify-content:center;gap:5px;flex:1;padding:var(--space-2);background:transparent;border:none;border-right:1px solid var(--border-subtle);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);text-decoration:none;cursor:pointer}.wish-card__actions>:last-child{border-right:none}.wish-card__actions button:hover,.wish-card__actions a:hover{background:var(--bg-elevated);color:var(--text)}.wish-form{display:flex;flex-direction:column;gap:var(--space-4)}.wish-form__row{display:flex;gap:var(--space-2);align-items:center}.wish-form__row .form-input{flex:1}.wish-form__image{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);min-height:120px;padding:var(--space-4);background:var(--bg-inset);border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-muted);font-size:var(--text-xs);font-family:inherit;cursor:pointer;overflow:hidden}.wish-form__image img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;background:var(--bg-inset)}.wish-form__image span{position:relative;padding:4px 10px;background:var(--bg-base);border-radius:var(--radius-full)}.wish-form__link,.wish-form__hint{display:flex;align-items:center;gap:6px;margin:0;color:var(--text-muted);font-size:var(--text-xs)}.shopping{display:flex;flex-direction:column}.shopping__lists{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:var(--space-3);scrollbar-width:none}.shopping__lists::-webkit-scrollbar{display:none}.shopping__tab{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-muted);font-size:var(--text-sm);font-weight:var(--weight-medium);white-space:nowrap}.shopping__tab.is-active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}.shopping__tab--icon{width:34px;padding:var(--space-2);justify-content:center;color:var(--text-faint)}.shopping__tab--icon:hover{background:var(--bg-surface-hover);color:var(--text)}.shopping__count{display:grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-full);background:var(--bg-inset);font-size:11px;font-variant-numeric:tabular-nums}.shopping__add{position:sticky;top:var(--space-2);z-index:2;display:flex;gap:var(--space-2);margin-bottom:var(--space-5)}.shopping__input{flex:1;height:46px;padding:0 var(--space-4);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);transition:border-color var(--duration-fast) var(--ease)}.shopping__input::placeholder{color:var(--text-faint)}.shopping__input:focus{outline:none;border-color:var(--accent)}.shopping__group{margin-bottom:var(--space-5)}.shopping__group-title{font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:var(--space-2);padding-left:var(--space-1)}.shopping__items{display:flex;flex-direction:column;gap:2px}.shopping-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius);transition:background var(--duration-fast) var(--ease),opacity var(--duration) var(--ease)}.shopping-item:hover{background:var(--bg-surface-hover)}.shopping-item.is-checked{opacity:.45}.shopping-item.is-checked .shopping-item__name{text-decoration:line-through}.shopping-item__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left}.shopping-item__name{font-size:var(--text-base);word-break:break-word}.shopping-item__note{font-size:var(--text-xs);color:var(--text-faint)}.shopping-item__quantity{font-size:var(--text-sm);color:var(--text-muted);font-weight:var(--weight-medium);white-space:nowrap;flex-shrink:0}.shopping__done{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:var(--space-3);align-items:flex-start}.shopping__done-toggle{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-muted)}.shopping__chevron{transition:transform var(--duration) var(--ease)}.shopping__chevron.is-open{transform:rotate(180deg)}.item-sheet__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.notes__search{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);padding:0 var(--space-3);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-faint)}.notes__search input{flex:1;padding:var(--space-3) 0;background:transparent;border:none;color:var(--text);font-family:inherit;font-size:var(--text-base)}.notes__search input:focus{outline:none}.notes__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}.notes__rule{margin:var(--space-4) 0;border:none;border-top:1px dashed var(--border-subtle)}.note{position:relative;display:flex;border-radius:var(--radius-lg);border:1px solid var(--note-border, var(--border));background:var(--note-bg, var(--bg-surface));overflow:hidden}.note__body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0;padding:var(--space-3);padding-right:var(--space-5);background:transparent;border:none;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}.note__body h3{font-size:var(--text-sm);font-weight:var(--weight-medium)}.note__body p{margin:0;color:var(--text-muted);font-size:var(--text-sm);line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden}.note__date{margin-top:auto;padding-top:var(--space-2);color:var(--text-faint);font-size:11px}.note__pin{position:absolute;top:4px;right:4px;display:grid;place-items:center;width:26px;height:26px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-faint);cursor:pointer}.note__pin:hover{background:var(--bg-elevated);color:var(--text)}.note--yellow{--note-bg: rgba(245, 158, 11, .12);--note-border: rgba(245, 158, 11, .3)}.note--red{--note-bg: rgba(255, 59, 92, .12);--note-border: rgba(255, 59, 92, .3)}.note--purple{--note-bg: rgba(168, 85, 247, .12);--note-border: rgba(168, 85, 247, .3)}.note--green{--note-bg: rgba(34, 197, 94, .12);--note-border: rgba(34, 197, 94, .3)}.note--blue{--note-bg: rgba(59, 130, 246, .12);--note-border: rgba(59, 130, 246, .3)}.note--plain{--note-bg: var(--bg-surface);--note-border: var(--border)}.note-form{display:flex;flex-direction:column;gap:var(--space-4)}.note-form__colors{display:flex;gap:var(--space-2)}.note-swatch{width:30px;height:30px;border-radius:var(--radius-full);border:2px solid transparent;background:var(--note-bg);cursor:pointer}.note-swatch.is-active{border-color:var(--text)}.note-swatch--yellow{--note-bg: rgba(245, 158, 11, .55)}.note-swatch--red{--note-bg: rgba(255, 59, 92, .55)}.note-swatch--purple{--note-bg: rgba(168, 85, 247, .55)}.note-swatch--green{--note-bg: rgba(34, 197, 94, .55)}.note-swatch--blue{--note-bg: rgba(59, 130, 246, .55)}.note-swatch--plain{--note-bg: var(--bg-elevated)}.note__remind{display:inline-flex;align-items:center;gap:4px;margin-top:4px;color:var(--text-muted);font-size:11px}.note__remind.is-due{color:var(--accent)}.note-form__row{display:flex;align-items:center;gap:var(--space-2)}.occasion-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.occasion{display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.occasion.is-soon{border-color:var(--accent-border);background:var(--accent-soft)}.occasion__main{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-3);background:transparent;border:none;color:var(--text);font-family:inherit;text-align:left;cursor:pointer}.occasion__icon{display:grid;place-items:center;width:34px;height:34px;flex:none;background:var(--bg-inset);border-radius:var(--radius-full);color:var(--person-color, var(--text-muted))}.occasion.is-soon .occasion__icon{background:var(--bg-base);color:var(--accent)}.occasion__text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.occasion__title{font-size:var(--text-base);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.occasion__meta{color:var(--text-muted);font-size:var(--text-xs)}.occasion__countdown{flex:none;color:var(--text-muted);font-size:var(--text-sm)}.occasion.is-soon .occasion__countdown{color:var(--accent);font-weight:var(--weight-medium)}.occasion__wishlist{display:flex;align-items:center;gap:5px;padding:var(--space-2) var(--space-3);border-top:1px solid var(--accent-border);color:var(--accent);font-size:var(--text-xs);text-decoration:none}.occasion-form{display:flex;flex-direction:column;gap:var(--space-4)}.occasion-form__row{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:var(--space-3)}.trash__hint{margin-bottom:var(--space-3);color:var(--text-faint);font-size:var(--text-xs)}.trash-list{display:flex;flex-direction:column;gap:var(--space-2);margin:0;padding:0;list-style:none}.trash-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.trash-item__text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.trash-item__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-item__meta{color:var(--text-faint);font-size:var(--text-xs)}.trash-item__restore{display:flex;align-items:center;gap:5px;flex:none;padding:6px 10px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-muted);font-family:inherit;font-size:var(--text-xs);cursor:pointer}.trash-item__restore:hover{border-color:var(--accent-border);color:var(--accent)}.location-field,.location-field__input{position:relative}.location-field__icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-faint);pointer-events:none}.location-field__input .form-input{padding-left:calc(var(--space-3) + 22px)}.location-field__suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:5;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;animation:fade-in var(--duration-fast) var(--ease-out)}.location-field__suggestion{display:flex;align-items:center}.location-field__suggestion+.location-field__suggestion{border-top:1px solid var(--border-subtle)}.location-field__pick{flex:1;text-align:left;padding:var(--space-3);font-size:var(--text-sm);color:var(--text)}.location-field__pick:hover{background:var(--bg-surface-hover)}.location-field__remove{padding:var(--space-3) var(--space-3);color:var(--text-faint);transition:color var(--duration-fast) var(--ease)}.location-field__remove:hover{color:var(--danger)}.entry-sheet__times{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);animation:fade-in var(--duration-fast) var(--ease-out)}.calendar{display:flex;flex-direction:column}.calendar__controls{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-3)}.calendar__nav{display:flex;align-items:center;gap:var(--space-2)}.calendar__arrow{display:grid;place-items:center;width:38px;height:38px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);color:var(--text-muted);flex-shrink:0;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.calendar__arrow:hover{background:var(--bg-surface-hover);color:var(--text)}.calendar__today{flex:1;height:38px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);color:var(--text);font-size:var(--text-sm);font-weight:var(--weight-medium)}.calendar__today:hover{background:var(--bg-surface-hover)}.calendar__filter{margin-bottom:var(--space-5)}.calendar__days{display:flex;flex-direction:column;gap:var(--space-5)}.calendar__day-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-muted);margin-bottom:var(--space-2);padding-left:var(--space-1)}.calendar__day-title.is-today{color:var(--accent)}.calendar__items{display:flex;flex-direction:column;gap:var(--space-2)}.occurrence{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-surface);border:1px solid var(--border-subtle);border-left:3px solid var(--accent);border-radius:var(--radius);transition:background var(--duration-fast) var(--ease)}.occurrence:hover{background:var(--bg-surface-hover)}.occurrence--absence{border-left-style:dashed}.occurrence__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left}.occurrence__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.occurrence__title{font-size:var(--text-base);word-break:break-word}.occurrence__time{font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;flex-shrink:0}.occurrence__meta{display:flex;flex-wrap:wrap;gap:var(--space-3)}.occurrence__tag{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);color:var(--text-faint)}.occurrence__side{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1);flex-shrink:0}.occurrence__skip{font-size:11px;color:var(--text-faint);transition:color var(--duration-fast) var(--ease)}.occurrence__skip:hover{color:var(--danger)}@media(min-width:720px){.calendar__controls{flex-direction:row;align-items:center;justify-content:space-between}.calendar__nav{max-width:320px;flex:1}}
