:root{--keyboard-offset:0px;--bottom-inset:max(env(safe-area-inset-bottom,0px), var(--keyboard-offset));--bg:#f8f7f4;--surface:#fff;--surface-elevated:#f0efec;--text-primary:#1a1a1a;--text-secondary:#6b6b6b;--text-tertiary:#6a6a6a;--accent:#2dd4a8;--accent-strong:#0a7a5f;--accent-hover:#086a52;--accent-subtle:#2dd4a814;--accent-text:#0a7a5f;--accent-text-hover:#075a45;--danger:#ef4444;--danger-text:#c81e1e;--danger-bg:#ef44440f;--success:#22c55e;--border:#0000000f;--border-strong:#00000029;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 4px 12px #0000000f;--shadow-lg:0 8px 24px #00000014;--font-body:"Outfit", system-ui, -apple-system, sans-serif;--font-heading:"Red Hat Display", "Outfit", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Consolas, monospace;--text-overline:.6875rem;--text-meta:.75rem;--text-caption:.8125rem;--text-body-sm:.875rem;--text-body:.9375rem;--text-body-lg:1rem;--text-title-sm:1.0625rem;--text-title:1.125rem;--text-title-lg:1.25rem;--text-headline:1.375rem;--text-headline-lg:1.5rem;--text-display-sm:1.625rem;--text-display:2rem;--text-display-lg:2.5rem;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--radius-full:9999px;--transition:.2s cubic-bezier(.16, 1, .3, 1);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;font-family:var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text-secondary);background:var(--bg);font-synthesis:style;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}[data-theme=dark]{--bg:#111113;--surface:#1a1a1e;--surface-elevated:#222226;--text-primary:#f0f0f0;--text-secondary:#9a9a9a;--text-tertiary:#8a8a8a;--accent:#34d9ad;--accent-strong:#0a7a5f;--accent-hover:#086a52;--accent-subtle:#34d9ad1a;--accent-text:#34d9ad;--accent-text-hover:#7cf0d2;--danger:#f87171;--danger-text:#f87171;--danger-bg:#f871711a;--success:#4ade80;--border:#ffffff14;--border-strong:#fff3;--shadow-sm:0 1px 2px #0003;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 24px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){[data-theme=system]{--bg:#111113;--surface:#1a1a1e;--surface-elevated:#222226;--text-primary:#f0f0f0;--text-secondary:#9a9a9a;--text-tertiary:#8a8a8a;--accent:#34d9ad;--accent-strong:#0a7a5f;--accent-hover:#086a52;--accent-subtle:#34d9ad1a;--accent-text:#34d9ad;--accent-text-hover:#7cf0d2;--danger:#f87171;--danger-bg:#f871711a;--success:#4ade80;--border:#ffffff14;--border-strong:#fff3;--shadow-sm:0 1px 2px #0003;--shadow-md:0 4px 12px #0000004d;--shadow-lg:0 8px 24px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}a:focus-visible,button:focus-visible,[role=button]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px;border-radius:var(--radius-sm)}main[tabindex="-1"]:focus-visible{outline:none}.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box}html{scroll-padding-top:64px;scroll-padding-bottom:calc(var(--keyboard-offset) + 12px)}body{font-size:var(--text-body);padding-bottom:var(--keyboard-offset);margin:0}#root{flex-direction:column;width:100%;max-width:640px;min-height:100svh;margin:0 auto;display:flex}@media (width>=768px){body{background:var(--surface-elevated)}#root{background:var(--bg);min-height:100svh;box-shadow:var(--shadow-lg), 0 0 0 1px var(--border);position:relative}}h1,h2,h3,h4{font-family:var(--font-heading);color:var(--text-primary);letter-spacing:-.02em;margin:0;font-weight:700}h1{font-size:clamp(var(--text-headline-lg), 5vw, var(--text-display))}h2{font-size:clamp(var(--text-title), 4vw, var(--text-headline));font-weight:600}h3{font-size:clamp(var(--text-body-lg), 3.5vw, var(--text-title));font-weight:600}p{margin:0}a{color:var(--accent-text);transition:color var(--transition);text-decoration:none}a:hover{color:var(--accent-text-hover)}.loading-screen{min-height:100svh;color:var(--text-tertiary);font-size:var(--text-body);justify-content:center;align-items:center;display:flex}.auth-page{min-height:100svh;padding:var(--space-6) var(--space-4);background:var(--bg);justify-content:center;align-items:center;display:flex;overflow-y:auto}.auth-card{width:100%;max-width:400px}.auth-wordmark{text-align:center;font-family:var(--font-heading);font-size:clamp(var(--text-display), 8vw, var(--text-display-lg));color:var(--accent-text);letter-spacing:-.03em;margin-bottom:var(--space-1);font-weight:700;display:block}.auth-tagline{text-align:center;color:var(--text-tertiary);font-size:var(--text-body);margin-bottom:var(--space-8);text-wrap:pretty;display:block}.auth-form{gap:var(--space-4);flex-direction:column;display:flex}.password-wrapper{position:relative}.password-wrapper .form-input{width:100%;padding-right:48px}.password-toggle{width:44px;height:44px;color:var(--text-tertiary);cursor:pointer;border-radius:var(--radius-sm);-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;right:2px;transform:translateY(-50%)}.password-toggle:hover{color:var(--text-secondary)}.auth-error{background:var(--danger-bg);color:var(--danger-text);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-body-sm);border:1px solid #ef444426;font-weight:500}.auth-footer{text-align:center;margin-top:var(--space-6);font-size:var(--text-body-sm);color:var(--text-secondary)}.form-label{gap:var(--space-1);font-size:var(--text-body-sm);color:var(--text-primary);flex-direction:column;font-weight:500;display:flex}.form-input{font-family:var(--font-body);font-size:var(--text-body-lg);height:48px;padding:0 var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text-primary);transition:border-color var(--transition), box-shadow var(--transition);appearance:none;outline:none}.form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.form-input::placeholder{color:var(--text-tertiary)}select.form-input{padding-right:var(--space-10);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%239a9a9a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat}textarea.form-input{height:auto;padding:var(--space-3) var(--space-4);resize:vertical}.btn{font-family:var(--font-body);font-size:var(--text-body);border-radius:var(--radius-lg);cursor:pointer;height:48px;padding:0 var(--space-5);justify-content:center;align-items:center;gap:var(--space-2);transition:all var(--transition);white-space:nowrap;border:none;font-weight:500;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-strong);color:#fff;font-weight:600}@media (hover:hover){.btn-primary:hover:not(:disabled){background:var(--accent-hover)}}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-secondary{color:var(--accent-text);border:1px solid var(--accent);background:0 0}@media (hover:hover){.btn-secondary:hover:not(:disabled){background:var(--accent-subtle)}}.btn-ghost{color:var(--text-secondary);padding:0 var(--space-3);border-radius:var(--radius-sm);background:0 0;min-width:44px;height:44px}.btn-danger{background:var(--danger-text);color:#fff;font-weight:600}@media (hover:hover){.btn-danger:hover:not(:disabled){filter:brightness(.92)}.btn-ghost:hover:not(:disabled){color:var(--text-primary);background:var(--accent-subtle)}}.page{background:var(--bg);flex-direction:column;min-height:100svh;display:flex}.page-with-sidebar{flex-direction:column;display:flex}.page-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--bg);z-index:10;-webkit-backdrop-filter:blur(12px);justify-content:space-between;align-items:center;min-height:52px;display:flex;position:sticky;top:0}.page-header h1{font-size:var(--text-headline);color:var(--accent-text);letter-spacing:-.02em;font-weight:700}.page-header-title{text-align:center;font-family:var(--font-heading);font-size:var(--text-title-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.02em;flex:1;font-weight:600;overflow:hidden}.page-content{padding:var(--space-4);flex:1}.home-header-left{align-items:baseline;gap:var(--space-4);display:flex}.home-subtitle{font-size:var(--text-body);color:var(--text-tertiary);font-weight:400}.home-header-right>a{justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.home-header-right{align-items:center;gap:var(--space-3);display:flex}.home-create-btn,.home-join-btn{height:36px!important;padding:0 var(--space-4)!important;font-size:var(--text-caption)!important;border-radius:var(--radius-sm)!important}.group-actions{gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.group-actions .btn{flex:1}.group-grid{flex-direction:column;gap:1px;display:flex}.group-card{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4);background:var(--surface);color:var(--text-primary);border-bottom:1px solid var(--border);transition:background var(--transition);text-decoration:none;display:flex}.group-card:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.group-card:last-child{border-radius:0 0 var(--radius-md) var(--radius-md);border-bottom:none}.group-card:only-child{border-radius:var(--radius-md)}.group-card:hover{background:var(--surface-elevated);text-decoration:none}.group-card-icon{border-radius:var(--radius-md);color:#fff;width:40px;height:40px;font-family:var(--font-heading);font-weight:700;font-size:var(--text-title-sm);letter-spacing:-.02em;flex-shrink:0;justify-content:center;align-items:center;display:flex}.group-card-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.group-card-name{font-weight:500;font-size:var(--text-body-lg)}.group-card-role{font-size:var(--text-meta);color:var(--text-tertiary);text-transform:capitalize}.group-card-arrow{color:var(--text-tertiary);flex-shrink:0;font-size:18px}.empty-state{text-align:center;padding:var(--space-12) var(--space-4);color:var(--text-tertiary);font-size:var(--text-body)}.load-error-retry{margin-top:var(--space-3)}.empty-state-icon{margin-bottom:var(--space-4);opacity:.4;color:var(--accent-text);font-size:48px;display:block}.modal-overlay{padding:0;padding-bottom:var(--keyboard-offset);z-index:100;-webkit-backdrop-filter:blur(4px);background:#0006;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}@media (width>=640px){.modal-overlay{padding:var(--space-4);padding-bottom:max(var(--space-4), var(--keyboard-offset));align-items:center}}.modal{background:var(--surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:440px;padding:var(--space-5);padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom,0px));box-shadow:var(--shadow-lg);max-height:min(90vh, calc(100vh - var(--keyboard-offset)));overscroll-behavior:contain;overflow-y:auto}@media (width>=640px){.modal{border-radius:var(--radius-xl)}}.modal:before{content:"";background:var(--border);border-radius:var(--radius-full);width:36px;height:4px;margin:0 auto var(--space-4);display:block}@media (width>=640px){.modal:before{display:none}}.modal-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.modal-header h2{font-size:var(--text-title)}.modal-form{gap:var(--space-4);flex-direction:column;display:flex}.tab-placeholder{min-height:200px;color:var(--text-tertiary);justify-content:center;align-items:center;display:flex}.tab-content{flex:1}.hub-cards{gap:var(--space-3);flex-direction:column;display:flex}.hub-card{align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-primary);transition:background var(--transition), border-color var(--transition);text-decoration:none;display:flex}.hub-card:hover{background:var(--surface-hover);border-color:var(--accent)}.hub-card-icon{border-radius:var(--radius-md);background:var(--accent-subtle);width:40px;height:40px;color:var(--accent-text);flex-shrink:0;justify-content:center;align-items:center;display:flex}.hub-card-title{font-size:var(--text-body-lg);font-weight:600;font-family:var(--font-heading);flex:1}.hub-card-arrow{color:var(--text-tertiary);flex-shrink:0}.lists-tab{gap:var(--space-4);flex-direction:column;display:flex}.lists-grid{flex-direction:column;gap:1px;display:flex}.list-card{padding:var(--space-4);background:var(--surface);cursor:pointer;text-align:left;font-family:var(--font-body);font-size:var(--text-body-lg);color:var(--text-primary);border:none;border-bottom:1px solid var(--border);width:100%;transition:background var(--transition);justify-content:space-between;align-items:center;display:flex}.list-card:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.list-card:last-child{border-radius:0 0 var(--radius-md) var(--radius-md);border-bottom:none}.list-card:only-child{border-radius:var(--radius-md)}.list-card:hover{background:var(--surface-elevated)}.list-card-info{align-items:center;gap:var(--space-3);display:flex}.list-card-name{font-weight:500}.list-card-type{font-size:var(--text-meta);color:var(--accent-text);background:var(--accent-subtle);border-radius:var(--radius-full);text-transform:capitalize;padding:2px 8px;font-weight:500}.list-card-arrow{color:var(--text-tertiary);font-size:18px}.create-list-form{gap:var(--space-3);padding:var(--space-4);background:var(--surface);border-radius:var(--radius-md);flex-direction:column;display:flex}.create-list-actions{gap:var(--space-2);justify-content:flex-end;display:flex}.create-list-btn{width:100%;margin-top:var(--space-4)}.list-detail{flex-direction:column;flex:1;min-height:0;padding-bottom:72px;display:flex}.list-detail-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:none}@media (width>=768px){.list-detail-header{display:flex}}.list-detail-title{text-align:center;font-family:var(--font-heading);font-size:var(--text-title-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.02em;flex:1;font-weight:600;overflow:hidden}@media (width<=1023px){:is(html:has(.list-detail),body:has(.list-detail)){padding-bottom:0;scroll-padding:0;overflow:hidden}.page-with-sidebar:has(.list-detail){top:var(--visual-viewport-top,0px);width:100%;max-width:640px;height:var(--visual-viewport-height,100dvh);min-height:0;position:fixed;left:50%;overflow:hidden;transform:translate(-50%)}.main-content:has(.list-detail){min-height:0}:is(.main-content:has(.list-detail)>.page-header,.list-detail>.list-detail-header,.list-detail>.online-users){flex-shrink:0}.page-content:has(.list-detail){flex-direction:column;min-height:0;padding-bottom:0;display:flex;overflow:hidden}.list-detail{padding-bottom:0;overflow:hidden}.list-detail>.pull-to-refresh{overscroll-behavior-y:contain;flex:1;min-height:0}.list-detail>.add-task-bar-wrapper{flex-shrink:0;max-width:none;max-height:65%;position:static;overflow-y:auto;transform:none}.list-detail .add-task-bar{padding-bottom:calc(var(--space-3) + max(0px, env(safe-area-inset-bottom,0px) - var(--keyboard-offset)))}}.task-list{flex-direction:column;gap:1px;display:flex}.task-item-swipe-wrapper{position:relative;overflow:hidden}.task-item-swipe-bg{background:var(--success);width:100%;padding-left:var(--space-5);color:#fff;opacity:0;border-radius:var(--radius-md);align-items:center;font-size:20px;font-weight:600;display:flex;position:absolute;top:0;bottom:0;left:0}.task-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border-bottom:1px solid var(--border);min-height:48px;transition:opacity var(--transition);display:flex}.task-completed{opacity:.45}.task-checkbox{border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;color:#0000;width:22px;height:22px;transition:all var(--transition);background:0 0;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.task-completed .task-checkbox{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.task-checkbox-icon{width:12px;height:12px;display:none}.task-completed .task-checkbox-icon{display:block}.task-content{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.task-title{font-size:var(--text-body);color:var(--text-primary);overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;line-height:1.4}.task-completed .task-title{color:var(--text-tertiary);text-decoration:line-through}.task-meta{align-items:center;gap:var(--space-1);font-size:var(--text-meta);color:var(--text-tertiary);display:inline-flex}.task-delete{width:28px;height:28px;font-size:var(--text-body-lg);cursor:pointer;color:var(--text-tertiary);border-radius:var(--radius-sm);transition:all var(--transition);opacity:.5;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.task-delete:after{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.task-delete:hover{opacity:1;color:var(--danger-text);background:var(--danger-bg)}.add-task-bar{gap:var(--space-2);padding:var(--space-3) var(--space-4);padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border);display:flex}.add-task-input{flex:1;min-width:0}.add-task-btn{border-radius:var(--radius-lg);flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;padding:0;display:flex}.add-task-btn svg{width:20px;height:20px}.add-task-bar-wrapper{bottom:var(--keyboard-offset);z-index:9;width:100%;max-width:640px;position:fixed;left:50%;transform:translate(-50%)}.recurrence-toggle{border-radius:var(--radius-md);width:40px;height:40px;color:var(--text-tertiary);transition:all var(--transition);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.recurrence-toggle.active{color:var(--accent-text);background:var(--accent-subtle)}.recurrence-panel{gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border-top:1px solid var(--border);flex-direction:column;display:flex}.recurrence-presets{gap:var(--space-2);display:flex}.recurrence-preset{padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);font-size:var(--text-caption);font-family:var(--font-body);cursor:pointer;transition:all var(--transition);background:0 0;flex:1}.recurrence-preset.active{background:var(--accent-subtle);border-color:var(--accent);color:var(--accent-text)}.recurrence-custom{align-items:center;gap:var(--space-2);display:flex}.recurrence-label{font-size:var(--text-caption);color:var(--text-secondary);white-space:nowrap}.recurrence-number{width:56px;height:36px;padding:0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-body-lg);font-family:var(--font-body);color:var(--text-primary);background:var(--surface);text-align:center}.recurrence-unit{height:36px;padding:0 var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-body-lg);font-family:var(--font-body);color:var(--text-primary);background:var(--surface)}.recurrence-weekdays{gap:var(--space-2);display:flex}.weekday-btn{border:1px solid var(--border);border-radius:var(--radius-full);width:36px;height:36px;color:var(--text-secondary);font-size:var(--text-caption);font-weight:500;font-family:var(--font-body);cursor:pointer;transition:all var(--transition);background:0 0;justify-content:center;align-items:center;padding:0;display:flex}.weekday-btn.active{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.recurrence-due{align-items:center;gap:var(--space-2);display:flex}.recurrence-date-input{height:36px;font-size:var(--text-body-lg);flex:1}.task-recurring-icon{color:var(--accent-text);margin-right:var(--space-1);vertical-align:middle;align-items:center;display:inline-flex}.task-overdue{color:var(--danger-text);font-weight:500}.expenses-tab{gap:var(--space-4);flex-direction:column;display:flex;position:relative}.expenses-subtab-toggle{background:var(--surface-elevated);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.expenses-subtab-btn{text-align:center;border-radius:var(--radius-sm);height:44px;font-size:var(--text-body-sm);font-weight:500;font-family:var(--font-body);cursor:pointer;color:var(--text-tertiary);transition:all var(--transition);background:0 0;border:none;flex:1}.expenses-subtab-btn.active{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.statistics-view{gap:var(--space-4);flex-direction:column;display:flex}.period-selector{align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.period-mode-toggle{background:var(--surface-elevated);border-radius:var(--radius-sm);gap:2px;padding:2px;display:flex}.period-mode-btn{padding:var(--space-1) var(--space-4);border-radius:calc(var(--radius-sm) - 2px);color:var(--text-tertiary);font-size:var(--text-caption);font-weight:500;font-family:var(--font-body);cursor:pointer;transition:all var(--transition);background:0 0;border:none}.period-mode-btn.active{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.period-nav{align-items:center;gap:var(--space-3);display:flex}.period-arrow{justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:flex}.period-arrow:disabled{opacity:.25}.period-label{font-size:var(--text-title-sm);color:var(--text-primary);text-align:center;text-transform:capitalize;min-width:160px;font-weight:600}.donut-chart-wrapper{padding:var(--space-2) 0;justify-content:center;display:flex}.donut-chart{border-radius:var(--radius-full);justify-content:center;align-items:center;width:180px;height:180px;display:flex}.donut-hole{border-radius:var(--radius-full);background:var(--bg);flex-direction:column;justify-content:center;align-items:center;gap:2px;width:60%;height:60%;display:flex}.donut-total{font-size:var(--text-title);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:700}.donut-subtitle{font-size:var(--text-overline);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.category-legend{background:var(--surface);border-radius:var(--radius-md);flex-direction:column;display:flex;overflow:hidden}.category-legend-row{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);display:flex}.category-legend-row:last-child{border-bottom:none}.category-dot{border-radius:var(--radius-full);flex-shrink:0;width:10px;height:10px}.category-label{font-size:var(--text-body-sm);color:var(--text-primary);flex:1;min-width:0}.category-amount{font-size:var(--text-body-sm);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:600}.category-pct{font-size:var(--text-meta);color:var(--text-tertiary);font-variant-numeric:tabular-nums;text-align:right;min-width:32px}.stats-footer{text-align:center;font-size:var(--text-caption);color:var(--text-tertiary);padding:var(--space-2) 0}.balance-summary{background:var(--surface);border-radius:var(--radius-md);padding:var(--space-5) var(--space-5);margin-bottom:var(--space-2);border-left:4px solid var(--accent);position:relative;overflow:hidden}.balance-loading,.balance-error{text-align:center;color:var(--text-tertiary);font-size:var(--text-body-sm)}.balance-settled{text-align:center;color:var(--accent-text);font-weight:600;font-size:var(--text-body)}.balance-list{gap:var(--space-2);margin-bottom:var(--space-3);flex-direction:column;display:flex}.balance-row{font-size:var(--text-body-sm);color:var(--text-secondary);line-height:1.5}.balance-row .balance-text strong{font-variant-numeric:tabular-nums;font-weight:600}.balance-row.balance-owe .balance-text strong{color:var(--danger-text)}.balance-row.balance-owed .balance-text strong{color:var(--success)}.balance-settle-btn{color:var(--accent-text);font-family:var(--font-body);font-size:var(--text-body-sm);cursor:pointer;padding:var(--space-2) 0;width:auto;min-height:44px;transition:color var(--transition);background:0 0;border:none;align-items:center;font-weight:600;display:inline-flex}.balance-settle-btn:hover{color:var(--accent-text-hover)}.expense-list{flex-direction:column;gap:1px;padding-bottom:144px;display:flex}.expense-item{padding:var(--space-3) var(--space-4);background:var(--surface);justify-content:space-between;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--border);transition:background var(--transition);display:flex}button.expense-item{width:100%;font:inherit;color:inherit;text-align:start;border:none;border-bottom:1px solid var(--border);cursor:pointer}.expense-list>:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.expense-list>:last-child{border-radius:0 0 var(--radius-md) var(--radius-md);border-bottom:none}.expense-list>:only-child{border-radius:var(--radius-md)}.expense-item:hover{background:var(--surface-elevated)}.expense-item-left{align-items:center;gap:var(--space-3);flex:1;min-width:0;display:flex}.expense-category-icon{background:var(--surface-elevated);border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;display:flex}.expense-item-info{flex-direction:column;gap:1px;min-width:0;display:flex}.expense-item-title{font-size:var(--text-body);color:var(--text-primary);overflow-wrap:break-word;font-weight:500;line-height:1.4}.expense-item-meta{font-size:var(--text-meta);color:var(--text-tertiary)}.expense-category-badge{display:none}.expense-item-right{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.expense-item-amount{font-size:var(--text-body-lg);color:var(--text-primary);font-variant-numeric:tabular-nums;font-weight:600}.expense-item-original{font-size:var(--text-meta);color:var(--text-tertiary);font-variant-numeric:tabular-nums}.settlement-item{padding:var(--space-3) var(--space-4);background:var(--surface);justify-content:space-between;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--border);display:flex}.settlement-item-left{align-items:center;gap:var(--space-3);flex:1;min-width:0;display:flex}.settlement-icon{width:36px;height:36px;color:var(--accent-text);flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:flex}.settlement-item-info{flex-direction:column;gap:1px;min-width:0;display:flex}.settlement-item-title{font-size:var(--text-body);color:var(--text-primary);font-weight:500}.settlement-item-meta{font-size:var(--text-meta);color:var(--text-tertiary)}.settlement-item-amount{font-size:var(--text-body-lg);color:var(--accent-text);font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:600}.fab{bottom:calc(var(--bottom-inset) + 76px);border-radius:var(--radius-full);background:var(--accent-strong);color:#fff;cursor:pointer;width:52px;height:52px;box-shadow:var(--shadow-lg);z-index:9;transition:transform var(--transition), background var(--transition);border:none;justify-content:center;align-items:center;font-size:24px;line-height:1;display:flex;position:fixed;right:max(20px,50vw - 300px)}.fab:hover{background:var(--accent-hover);transform:scale(1.05)}.fab:active{transform:scale(.95)}.expense-form-overlay{background:var(--bg);z-index:200;overscroll-behavior:contain;scroll-padding-top:64px;scroll-padding-bottom:calc(var(--keyboard-offset) + 12px);flex-direction:column;display:flex;position:fixed;inset:0;overflow-y:auto}@media (width>=768px){.expense-form-overlay{max-width:640px;box-shadow:var(--shadow-lg);left:50%;transform:translate(-50%)}}.expense-form-container{width:100%;max-width:480px;padding-bottom:calc(var(--keyboard-offset) + env(safe-area-inset-bottom,0px));flex-direction:column;flex:1;margin:0 auto;display:flex}.expense-form-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);background:var(--bg);z-index:1;justify-content:space-between;align-items:center;min-height:52px;display:flex;position:sticky;top:0}.expense-form-header h2{font-size:var(--text-title-sm);font-weight:600}.expense-form-save{color:var(--accent-text);font-weight:600}.expense-form{gap:var(--space-4);padding:var(--space-4);flex-direction:column;display:flex}.expense-form-row{gap:var(--space-3);display:flex}.expense-split-section{gap:var(--space-3);flex-direction:column;display:flex}.expense-split-toggle{background:var(--surface-elevated);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.expense-split-btn{text-align:center;border-radius:var(--radius-sm);height:36px;font-size:var(--text-body-sm);flex:1;font-weight:500}.expense-split-toggle .btn-primary{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.expense-split-toggle .btn-ghost{color:var(--text-tertiary);background:0 0;height:36px}.expense-split-toggle .btn-ghost:hover:not(:disabled){color:var(--text-secondary);background:0 0}.expense-participants{gap:var(--space-2);flex-direction:column;display:flex}.expense-participant-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;flex-wrap:wrap;display:flex}.expense-participant-check{align-items:center;gap:var(--space-2);font-size:var(--text-body);color:var(--text-primary);cursor:pointer;flex:1;min-width:0;display:flex}.expense-participant-check input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);border-radius:var(--radius-sm);flex-shrink:0}.expense-custom-amount-wrapper{align-items:center;gap:var(--space-1);flex-shrink:0;display:flex}.expense-custom-amount{text-align:right;width:90px;padding:var(--space-2) var(--space-2);font-size:var(--text-body-lg);font-variant-numeric:tabular-nums;height:36px}.expense-custom-currency{font-size:var(--text-caption);color:var(--text-tertiary);min-width:30px}.split-hint{font-size:var(--text-caption);color:var(--text-tertiary);margin:var(--space-1) 0 var(--space-2)}.split-selector-content{padding:var(--space-4);gap:var(--space-4);flex-direction:column;display:flex}.split-selector-subtitle{font-size:var(--text-body-sm);color:var(--text-secondary);text-align:center;padding:var(--space-2) var(--space-4);background:var(--surface-elevated);border-radius:var(--radius-md)}.split-selector-options{flex-direction:column;display:flex}.split-selector-option{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4);border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;background:0 0;width:100%;font-family:inherit;display:flex}.split-selector-option:first-child{border-top:1px solid var(--border)}.split-selector-option:hover,.split-selector-option.active{background:var(--surface-elevated)}.split-selector-option-text{flex-direction:column;gap:2px;display:flex}.split-selector-option-title{font-size:var(--text-body);color:var(--text-primary);font-weight:500}.split-selector-owed{font-size:var(--text-body-sm);font-weight:500}.split-selector-owed-positive{color:var(--accent-text)}.split-selector-owed-negative{color:var(--danger-text)}.split-selector-check{color:var(--accent-text);flex-shrink:0;font-size:20px}.split-selector-custom-btn{margin-top:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);align-self:center}.split-selector-group-option{padding:var(--space-4);border-bottom:1px solid var(--border);gap:var(--space-2);flex-direction:column;display:flex}.split-selector-group-option:first-child{border-top:1px solid var(--border)}.split-selector-group-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.split-selector-dropdown{flex-shrink:0;width:auto}.split-selector-group-label{font-size:var(--text-body);color:var(--text-primary);white-space:nowrap}.split-selector-group-detail{font-size:var(--text-body-sm);color:var(--text-secondary)}.split-selector-group-btn{padding:var(--space-1) var(--space-4);font-size:var(--text-body-sm);align-self:flex-end}.split-summary{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface-elevated);border-radius:var(--radius-md);cursor:pointer;border:1px solid var(--border);display:flex}.split-summary:hover{border-color:var(--text-tertiary)}.split-summary-text{flex-direction:column;gap:2px;display:flex}.split-summary-title{font-size:var(--text-body);color:var(--text-primary);font-weight:500}.split-summary-detail{font-size:var(--text-caption)}.split-summary-change{font-size:var(--text-caption);color:var(--accent-text);white-space:nowrap;font-weight:500}.settle-modal{max-width:440px}.settle-list{gap:var(--space-2);flex-direction:column;display:flex}.settle-section-label{font-size:var(--text-overline);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-top:var(--space-2);font-weight:600}.settle-row{padding:var(--space-3) var(--space-4);background:var(--surface-elevated);border-radius:var(--radius-md);flex-direction:column;display:flex}.settle-row-done{opacity:.45}.settle-row-info{flex-direction:column;gap:2px;min-width:0;display:flex}.settle-row-text{font-size:var(--text-body-sm);color:var(--text-secondary)}.settle-row-amount{font-size:var(--text-body);color:var(--text-primary);font-variant-numeric:tabular-nums}.settle-row-btn{padding:0 var(--space-4);font-size:var(--text-caption);border-radius:var(--radius-sm);flex-shrink:0;height:36px}.settle-row-check{color:var(--success);font-weight:500;font-size:var(--text-caption)}.settle-row-main{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;display:flex}.settle-row-actions{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.settle-qr-toggle{color:var(--text-tertiary);padding:0 var(--space-2)!important;height:36px!important}.settle-qr-toggle:hover:not(:disabled){color:var(--accent-text)}.settle-qr-section{align-items:center;gap:var(--space-3);padding:var(--space-4) 0 var(--space-2);border-top:1px solid var(--border);margin-top:var(--space-3);flex-direction:column;display:flex}.settle-qr-image{border-radius:var(--radius-md);width:180px;height:180px}.settle-qr-details{flex-direction:column;align-items:center;gap:2px;display:flex}.settle-qr-label{font-size:var(--text-meta);color:var(--text-tertiary)}.settle-qr-iban{font-family:var(--font-mono);font-size:var(--text-caption);color:var(--text-secondary);letter-spacing:.02em}.settle-qr-bank{font-size:var(--text-meta);color:var(--text-tertiary)}.activity-tab{flex-direction:column;display:flex}.activity-feed{padding-left:var(--space-5);flex-direction:column;display:flex;position:relative}.activity-feed:before{content:"";background:var(--border);width:1px;position:absolute;top:18px;bottom:18px;left:10px}.activity-item{gap:var(--space-3);padding:var(--space-3) 0;display:flex;position:relative}.activity-icon{border-radius:var(--radius-full);background:var(--accent-subtle);width:32px;height:32px;color:var(--accent-text);font-size:var(--text-body-sm);margin-left:calc(-1 * var(--space-5) - 5px);z-index:1;border:2px solid var(--bg);flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.activity-content{min-width:0;padding-top:var(--space-1);flex-direction:column;flex:1;gap:2px;display:flex}.activity-text{font-size:var(--text-body-sm);color:var(--text-secondary);overflow-wrap:break-word;line-height:1.45}.activity-text strong{color:var(--text-primary);font-weight:500}.activity-time{font-size:var(--text-meta);color:var(--text-tertiary)}.settings-content{gap:var(--space-6);padding:var(--space-4);-webkit-overflow-scrolling:touch;width:100%;max-width:560px;padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));flex-direction:column;margin:0 auto;display:flex;overflow-y:auto}.offline-banner{padding:var(--space-2) var(--space-4);background:var(--surface-elevated);color:var(--text-secondary);font-size:var(--text-caption);text-align:center;border-bottom:1px solid var(--border);font-weight:500}.notification-banner{align-items:center;gap:var(--space-1) var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);margin-bottom:var(--space-3);border-radius:var(--radius-md);background:var(--surface);box-shadow:0 0 0 1px var(--border);flex-wrap:wrap;display:flex}.notification-banner p{padding-block:var(--space-2);font-size:var(--text-body-sm);color:var(--text-secondary);text-wrap:pretty;flex:220px;margin:0;line-height:1.4}.notification-banner .notification-banner-detail{font-family:var(--font-mono);font-size:var(--text-overline);color:var(--text-tertiary);overflow-wrap:break-word;flex-basis:100%;order:1;padding-top:0}.notification-banner-actions{gap:var(--space-1);margin-left:auto;display:flex}.settings-error{background:var(--danger-bg);color:var(--danger-text);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-body-sm)}.settings-hint{font-size:var(--text-caption);color:var(--text-secondary);margin:0 0 8px}.settings-section{gap:var(--space-3);flex-direction:column;display:flex}.settings-section-title{font-size:var(--text-overline);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);font-weight:600}.settings-value-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border-radius:var(--radius-md);display:flex}.settings-value{font-size:var(--text-body);color:var(--text-primary);font-weight:500}.settings-edit-row{gap:var(--space-2);align-items:center;display:flex}.settings-edit-row .form-input{flex:1}.settings-invite-code{font-family:var(--font-mono);font-size:var(--text-body-lg);color:var(--accent-text);letter-spacing:.05em;font-weight:600}.settings-copy-btn{padding:0 var(--space-4);font-size:var(--text-caption);flex-shrink:0;height:36px}.settings-members-list{flex-direction:column;gap:1px;display:flex}.settings-member-row{padding:var(--space-3) var(--space-4);background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex}.settings-member-row:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.settings-member-row:last-child{border-radius:0 0 var(--radius-md) var(--radius-md);border-bottom:none}.settings-member-row:only-child{border-radius:var(--radius-md)}.settings-member-info{align-items:center;gap:var(--space-3);display:flex}.settings-member-avatar{border-radius:var(--radius-full);background:var(--accent-subtle);width:32px;height:32px;color:var(--accent-text);font-size:var(--text-caption);flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.settings-member-name{font-size:var(--text-body);color:var(--text-primary);font-weight:500}.settings-member-you{color:var(--text-tertiary);font-size:var(--text-caption);font-weight:400}.settings-member-role{font-size:var(--text-meta);color:var(--text-tertiary);background:var(--surface-elevated);border-radius:var(--radius-full);text-transform:capitalize;padding:2px 8px;font-weight:500}.settings-toggle-row{cursor:pointer;justify-content:space-between;align-items:center;padding:8px 0;display:flex}.settings-toggle-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.settings-danger-section{margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--border)}.settings-leave-btn{background:var(--danger-bg);width:100%;color:var(--danger-text);height:48px;font-weight:600}.settings-leave-btn:hover:not(:disabled){background:var(--danger);color:#fff}.currency-manager{gap:var(--space-3);flex-direction:column;display:flex}.currency-loading,.currency-empty{font-size:var(--text-body-sm);color:var(--text-tertiary)}.currency-error{font-size:var(--text-caption);color:var(--danger-text)}.currency-list{flex-direction:column;gap:1px;display:flex}.currency-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);border-bottom:1px solid var(--border);display:flex}.currency-item:first-child{border-radius:var(--radius-md) var(--radius-md) 0 0}.currency-item:last-child{border-radius:0 0 var(--radius-md) var(--radius-md);border-bottom:none}.currency-item:only-child{border-radius:var(--radius-md)}.currency-item-info{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.currency-code{font-size:var(--text-body-sm);color:var(--text-primary);font-weight:600;font-family:var(--font-mono)}.currency-name{font-size:var(--text-meta);color:var(--text-tertiary)}.currency-item-rate{flex-shrink:0}.currency-rate-btn{border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);font-family:var(--font-mono);font-size:var(--text-body-sm);color:var(--text-primary);cursor:pointer;transition:border-color var(--transition);background:0 0;border:1px solid #0000}.currency-rate-btn:hover{border-color:var(--accent)}.currency-edit-rate{gap:var(--space-1);align-items:center;display:flex}.currency-rate-input{width:80px;padding:var(--space-1) var(--space-2);font-size:var(--text-body-lg);height:32px}.currency-item-actions{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.currency-auto-label{align-items:center;gap:var(--space-1);cursor:pointer;font-size:var(--text-meta);display:flex}.currency-auto-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.currency-auto-text{color:var(--text-tertiary);font-size:var(--text-meta)}.currency-delete-btn{padding:var(--space-1) var(--space-2);font-size:var(--text-body-lg);color:var(--text-tertiary);height:32px}.currency-delete-btn:hover:not(:disabled){color:var(--danger-text);background:var(--danger-bg)}.currency-add-btn{width:100%}.currency-add-form{gap:var(--space-3);padding:var(--space-4);background:var(--surface);border-radius:var(--radius-md);flex-direction:column;display:flex}.currency-add-row{gap:var(--space-2);display:flex}.currency-add-row .form-input{flex:1;min-width:0}.currency-add-actions{gap:var(--space-2);justify-content:flex-end;display:flex}.online-users{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-caption);display:flex}.online-dot{border-radius:var(--radius-full);background:var(--accent-subtle);width:24px;height:24px;color:var(--accent-text);font-size:var(--text-overline);flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex;position:relative}.online-dot:after{content:"";border-radius:var(--radius-full);background:var(--success);border:2px solid var(--bg);width:8px;height:8px;position:absolute;bottom:-1px;right:-1px}.online-avatar-wrapper{display:inline-flex;position:relative}.online-avatar-wrapper:after{content:"";background:var(--success);border:2px solid var(--bg);border-radius:9999px;width:8px;height:8px;position:absolute;bottom:-1px;right:-1px}.online-label{color:var(--text-tertiary);font-size:var(--text-caption);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pull-to-refresh{-webkit-overflow-scrolling:touch;position:relative;overflow-y:auto}.pull-indicator{text-align:center;padding:var(--space-3);color:var(--text-tertiary);font-size:var(--text-caption);transition:opacity .2s}.account-content{gap:var(--space-6);flex-direction:column;width:100%;padding:0;display:flex}.account-avatar-section{align-items:center;gap:var(--space-3);padding:var(--space-6) var(--space-4);background:0 0;flex-direction:column;display:flex}.account-avatar-wrapper{cursor:pointer;border-radius:9999px;display:block;position:relative;overflow:hidden}.account-avatar-wrapper:focus-within{outline:2px solid var(--accent-strong);outline-offset:2px}.account-avatar-wrapper:hover:after,.account-avatar-wrapper:focus-within:after{content:attr(data-label);color:#fff;font-size:var(--text-caption);background:#00000080;border-radius:9999px;justify-content:center;align-items:center;font-weight:600;display:flex;position:absolute;inset:0}.account-avatar-input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.account-remove-avatar{font-size:var(--text-caption);color:var(--text-tertiary);cursor:pointer;padding:var(--space-1) var(--space-2);font-family:var(--font-body);transition:color var(--transition);background:0 0;border:none}.account-remove-avatar:hover{color:var(--danger-text)}.account-sections{gap:var(--space-6);padding:0 var(--space-4) var(--space-6);flex-direction:column;width:100%;max-width:560px;margin:0 auto;display:flex}.account-iban-display{font-family:var(--font-mono);font-size:var(--text-body);letter-spacing:.03em;color:var(--text-primary)}.account-iban-hint{font-size:var(--text-meta);color:var(--text-tertiary);margin-top:var(--space-1)}.account-password-form{gap:var(--space-3);flex-direction:column;display:flex}.account-password-success{color:var(--success);font-size:var(--text-body-sm);font-weight:500}.theme-toggle{background:var(--surface-elevated);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.theme-toggle-btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);height:44px;color:var(--text-tertiary);font-family:var(--font-body);font-size:var(--text-body-sm);cursor:pointer;transition:all var(--transition);background:0 0;border:none;flex:1;font-weight:500;display:flex}.theme-toggle-btn:hover{color:var(--text-secondary)}.theme-toggle-btn-active{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.avatar{object-fit:cover;border-radius:9999px;flex-shrink:0}.avatar-initials{color:#fff;font-family:var(--font-heading);letter-spacing:-.02em;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.sidebar{display:none}.main-content{flex-direction:column;flex:1;min-width:0;min-height:100svh;display:flex}.desktop-only{display:none!important}@media (width>=1024px){body{background-color:#e7e5e0;background-image:radial-gradient(at 25% 0,#2dd4a812,#0000 50%),radial-gradient(at 75% 100%,#2dd4a80a,#0000 50%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box}#root{max-width:none;box-shadow:none;background:0 0}.page{background:var(--bg);box-shadow:0 1px 2px #00000008, 0 6px 20px #0000000f, 0 0 0 1px var(--border);border-radius:var(--radius-xl);animation:.5s cubic-bezier(.16,1,.3,1) both fadeInUp}.page-with-sidebar{max-width:none;box-shadow:none;border-radius:0;flex-direction:row;min-height:100dvh;margin:0;padding-bottom:0;animation:none}.page-with-sidebar .main-content{min-height:100dvh}.home-page{max-width:none;box-shadow:none;border-radius:0;min-height:100svh;margin:0;animation:none}.home-page .page-header{padding:var(--space-5) var(--space-8);border-bottom:1px solid var(--border);background:linear-gradient(180deg, var(--accent-subtle) 0%, var(--bg) 100%);min-height:64px}.home-page .page-header h1{font-size:var(--text-display-sm);letter-spacing:-.03em;font-weight:800}.home-page .page-content{padding:var(--space-8);max-width:1100px;margin:0 auto}.home-page .group-grid{gap:var(--space-5);grid-template-columns:repeat(2,1fr);display:grid}@media (width>=1400px){.home-page .group-grid{grid-template-columns:repeat(3,1fr)}}.home-page .group-card{border-radius:var(--radius-lg);border:1px solid var(--border);border-bottom:1px solid var(--border);padding:var(--space-5) var(--space-5);transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s cubic-bezier(.16,1,.3,1),border-color .3s cubic-bezier(.16,1,.3,1);animation:.5s cubic-bezier(.16,1,.3,1) both fadeInUp}.home-page .group-card:first-child{animation-delay:50ms}.home-page .group-card:nth-child(2){animation-delay:.1s}.home-page .group-card:nth-child(3){animation-delay:.15s}.home-page .group-card:nth-child(4){animation-delay:.2s}.home-page .group-card:nth-child(5){animation-delay:.25s}.home-page .group-card:nth-child(6){animation-delay:.3s}.home-page .group-card:first-child,.home-page .group-card:last-child,.home-page .group-card:only-child{border-radius:var(--radius-lg)}.home-page .group-card:hover{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent), 0 12px 32px #2dd4a81f;background:var(--surface);transform:translateY(-3px)}.home-page .group-card-icon{width:48px;height:48px;font-size:var(--text-title-lg);border-radius:var(--radius-md)}.home-page .group-card-name{font-size:var(--text-title-sm);font-weight:600}.auth-page{box-shadow:none;background:var(--bg);border-radius:0}.mobile-only{display:none!important}.desktop-only{display:inline!important}.page-with-sidebar .page-header{border-bottom:1px solid var(--border);padding:var(--space-4) var(--space-8);justify-content:flex-start;min-height:60px}.page-with-sidebar .page-header-title{text-align:left;font-size:var(--text-headline);letter-spacing:-.02em;font-weight:700}.hub-cards{display:none}.sidebar{background:var(--surface);border-right:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex-direction:column;flex-shrink:0;width:280px;height:100svh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar-header{padding:var(--space-6) var(--space-5) var(--space-5)}.sidebar-back{align-items:center;gap:var(--space-2);font-family:var(--font-body);font-size:var(--text-caption);color:var(--text-tertiary);cursor:pointer;padding:var(--space-1) 0;margin-bottom:var(--space-4);transition:color var(--transition);background:0 0;border:none;display:flex}.sidebar-back:hover{color:var(--accent-text)}.sidebar-group-name{font-family:var(--font-heading);font-size:var(--text-headline);color:var(--text-primary);letter-spacing:-.03em;overflow-wrap:break-word;font-weight:700;line-height:1.25}.sidebar-nav{padding:var(--space-3) var(--space-3);flex-direction:column;flex:1;gap:2px;display:flex}.sidebar-nav-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font-body);font-size:var(--text-body-sm);color:var(--text-secondary);text-align:left;width:100%;transition:all var(--transition);background:0 0;border:none;font-weight:500;display:flex;position:relative}.sidebar-nav-item:hover{background:var(--accent-subtle);color:var(--text-primary)}.sidebar-nav-item-active{background:var(--accent-subtle);color:var(--accent-text);font-weight:600}.sidebar-nav-item-active:before{content:"";background:var(--accent);border-radius:0 3px 3px 0;width:3px;position:absolute;top:6px;bottom:6px;left:0}.sidebar-nav-icon{flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.sidebar-nav-label{flex:1}.sidebar-nav-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:7px;height:7px}.sidebar-footer{padding:var(--space-3) var(--space-3);border-top:1px solid var(--border)}.sidebar-brand{padding:var(--space-3) var(--space-3) var(--space-2);font-family:var(--font-heading);font-size:var(--text-body-sm);color:var(--accent-text);letter-spacing:-.02em;opacity:.35;transition:opacity var(--transition);font-weight:700}.sidebar-brand:hover{opacity:.6}.sidebar-user-link{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-sm);color:var(--text-secondary);font-family:var(--font-body);font-size:var(--text-caption);cursor:pointer;text-align:left;width:100%;transition:all var(--transition);background:0 0;border:none;font-weight:500;text-decoration:none;display:flex}.sidebar-user-link:hover{background:var(--accent-subtle);color:var(--text-primary)}.sidebar-user-link-active{background:var(--accent-subtle);color:var(--accent-text)}.sidebar-user-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-content{padding:var(--space-5) var(--space-6)}.expense-item{padding:var(--space-4) var(--space-5)}.expense-category-icon{border-radius:var(--radius-md);width:42px;height:42px;font-size:20px}.expense-item-amount{font-size:var(--text-title-sm)}.list-card{padding:var(--space-4) var(--space-5)}.task-item{padding:var(--space-3) var(--space-5)}.balance-summary{padding:var(--space-6);border-radius:var(--radius-lg)}.activity-icon{width:36px;height:36px;font-size:var(--text-body)}.settings-content{max-width:600px;padding:var(--space-6)}.empty-state{padding:var(--space-16) var(--space-8)}.empty-state-icon{font-size:56px}.auth-card{background:var(--surface);padding:var(--space-8);border-radius:var(--radius-xl);box-shadow:0 1px 2px #00000008, 0 6px 20px #0000000f, 0 0 0 1px var(--border);animation:.5s cubic-bezier(.16,1,.3,1) both fadeInUp}.expense-form-container{max-width:520px;padding:var(--space-2) 0}.fab{width:56px;height:56px;box-shadow:0 4px 16px #2dd4a84d, var(--shadow-lg);font-size:26px;transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s cubic-bezier(.16,1,.3,1),background .25s;bottom:32px;right:32px}.fab:hover{box-shadow:0 8px 24px #2dd4a859, var(--shadow-lg);transform:scale(1.08)}.add-task-bar-wrapper{width:auto;max-width:none;bottom:0;left:280px;right:0;transform:none}.expense-form-overlay{width:auto;max-width:none;left:280px;right:0;transform:none}.account-page{max-width:none;box-shadow:none;border-radius:0;min-height:100svh;margin:0;animation:none}.account-page .page-header{padding:var(--space-4) var(--space-8);justify-content:flex-start;min-height:60px}.account-page .page-header-title{text-align:left;font-size:var(--text-headline);letter-spacing:-.02em;font-weight:700}.account-avatar-section{padding:var(--space-10) var(--space-8) var(--space-8)}.account-sections{max-width:600px;padding:0 var(--space-8) var(--space-10);gap:var(--space-8)}[data-theme=dark] body{background-color:#0c0c0e;background-image:radial-gradient(at 25% 0,#34d9ad0d,#0000 50%),radial-gradient(at 75% 100%,#34d9ad08,#0000 50%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box}[data-theme=dark] .page{box-shadow:0 1px 3px #0003, 0 8px 24px #00000040, 0 0 0 1px var(--border)}[data-theme=dark] .home-page .group-card:hover{box-shadow:0 0 0 1px var(--accent), 0 12px 32px #34d9ad14}[data-theme=dark] .fab{box-shadow:0 4px 16px #34d9ad33,0 8px 24px #0000004d}[data-theme=dark] .auth-card{box-shadow:0 1px 3px #0003, 0 8px 24px #00000040, 0 0 0 1px var(--border)}}@media (width>=1024px) and (prefers-color-scheme:dark){[data-theme=system] body{background-color:#0c0c0e;background-image:radial-gradient(at 25% 0,#34d9ad0d,#0000 50%),radial-gradient(at 75% 100%,#34d9ad08,#0000 50%);background-position:0 0;background-repeat:repeat;background-size:auto;background-attachment:scroll;background-origin:padding-box;background-clip:border-box}[data-theme=system] .page{box-shadow:0 1px 3px #0003, 0 8px 24px #00000040, 0 0 0 1px var(--border)}[data-theme=system] .home-page .group-card:hover{box-shadow:0 0 0 1px var(--accent), 0 12px 32px #34d9ad14}[data-theme=system] .fab{box-shadow:0 4px 16px #34d9ad33,0 8px 24px #0000004d}[data-theme=system] .auth-card{box-shadow:0 1px 3px #0003, 0 8px 24px #00000040, 0 0 0 1px var(--border)}}.toast-container{bottom:calc(var(--bottom-inset) + 72px);z-index:1000;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{background:var(--text-primary,#1a1a1a);color:var(--bg,#f8f7f4);font-size:var(--text-caption);pointer-events:auto;border-radius:8px;align-items:center;gap:12px;padding:12px 16px;animation:.2s ease-out toast-in;display:flex;box-shadow:0 4px 12px #00000026}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-action{color:var(--accent,#2dd4a8);cursor:pointer;font-weight:600;font-size:var(--text-caption);white-space:nowrap;background:0 0;border:none;padding:0;position:relative}.toast-action:after{content:"";width:calc(100% + 16px);height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.toast-dismiss{color:var(--bg,#f8f7f4);opacity:.7;cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;width:28px;height:28px;margin:-6px -6px -6px 0;padding:0;display:flex;position:relative}.toast-dismiss:after{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.toast-dismiss:hover{opacity:1}.deleted-items-list{flex-direction:column;display:flex}.deleted-item-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.deleted-item-row:last-child{border-bottom:none}.deleted-item-info{flex-direction:column;gap:2px;min-width:0;display:flex}.deleted-item-title{font-size:var(--text-caption);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.deleted-item-meta{font-size:var(--text-meta);color:var(--text-secondary)}.milkdown-wrapper{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);min-width:0;overflow:hidden}.milkdown-toolbar{align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border);background:var(--surface-elevated);display:flex}.milkdown-toolbar button{border-radius:var(--radius-sm);width:44px;height:40px;color:var(--text-secondary);cursor:pointer;transition:var(--transition);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.milkdown-toolbar button:hover{background:var(--accent-subtle);color:var(--text-primary)}.milkdown-toolbar-sep{background:var(--border);width:1px;height:20px;margin:0 var(--space-1)}.milkdown-body{padding:var(--space-4);min-height:200px;max-height:min(50dvh, calc(100dvh - var(--keyboard-offset) - 120px));overscroll-behavior:contain;overflow-y:auto}.milkdown-body:focus-within{box-shadow:0 0 0 3px var(--accent-subtle);border-radius:var(--radius-sm)}.milkdown-readonly .milkdown-body:focus-within{box-shadow:none}.milkdown-body .ProseMirror{font-family:var(--font-body);font-size:var(--text-body-lg);color:var(--text-primary);overflow-wrap:break-word;outline:none;min-height:180px;line-height:1.7}.milkdown-body .ProseMirror p{margin:0 0 var(--space-3)}.milkdown-body .ProseMirror h1,.milkdown-body .ProseMirror h2,.milkdown-body .ProseMirror h3{font-family:var(--font-heading);margin:var(--space-4) 0 var(--space-2);line-height:1.3}.milkdown-body .ProseMirror h1{font-size:var(--text-headline-lg)}.milkdown-body .ProseMirror h2{font-size:var(--text-title-lg)}.milkdown-body .ProseMirror h3{font-size:var(--text-title-sm)}.milkdown-body .ProseMirror blockquote{border-left:3px solid var(--accent);padding-left:var(--space-4);margin:var(--space-3) 0;color:var(--text-secondary)}.milkdown-body .ProseMirror ul,.milkdown-body .ProseMirror ol{padding-left:var(--space-5);margin:var(--space-2) 0}.milkdown-body .ProseMirror a{color:var(--accent-text);text-decoration:underline}.milkdown-body .ProseMirror strong{font-weight:600}.milkdown-readonly .milkdown-body{min-height:auto;padding:0}.milkdown-readonly .milkdown-body .ProseMirror{min-height:auto}.memories-tab{padding:var(--space-4);padding-bottom:calc(var(--bottom-inset) + 96px)}.memories-empty{text-align:center;padding:48px var(--space-4);color:var(--text-secondary)}.memories-empty-art{color:var(--text-tertiary);opacity:.7;margin-bottom:var(--space-4)}.memories-empty-title{font-size:var(--text-title-sm);color:var(--text-primary);margin-bottom:var(--space-1);text-wrap:balance;font-weight:600}.memories-empty-hint{font-size:var(--text-body-sm);color:var(--text-tertiary);margin-bottom:var(--space-5);text-wrap:pretty}.memories-month-header{font-family:var(--font-heading);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary);margin:var(--space-6) 0 var(--space-3);font-weight:600}.memories-month-group:first-child .memories-month-header{margin-top:0}.memories-grid{gap:var(--space-3);grid-template-columns:1fr;display:grid}@media (width>=768px){.memories-grid{gap:var(--space-4);grid-template-columns:repeat(2,1fr);align-items:start}}@media (width>=1200px){.memories-grid{grid-template-columns:repeat(3,1fr)}}.skeleton{background:linear-gradient(100deg, var(--surface-elevated) 40%, var(--surface) 50%, var(--surface-elevated) 60%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton-month{width:110px;height:14px;margin-bottom:var(--space-3)}.memory-card-skeleton{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding-bottom:var(--space-4);overflow:hidden}.memory-card-skeleton .skeleton-image{aspect-ratio:16/10;margin-bottom:var(--space-3);border-radius:0}.memory-card-skeleton.compact{padding-top:var(--space-4)}.skeleton-line{height:13px;margin:0 var(--space-4) var(--space-2)}.skeleton-line.short{width:45%}.memory-card{color:inherit;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;transition:var(--transition);text-decoration:none;display:block;overflow:hidden}.memory-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.memory-card-image{aspect-ratio:16/10;background:var(--surface-elevated);width:100%;overflow:hidden}.memory-card-image img{object-fit:cover;width:100%;height:100%}.memory-card-body{padding:var(--space-3) var(--space-4)}.memory-card-text .memory-card-body{padding:var(--space-3) var(--space-4) var(--space-4) calc(var(--space-4) - 3px);border-left:3px solid var(--accent);border-radius:inherit}.memory-card-title{font-family:var(--font-heading);font-size:var(--text-body-lg);margin:0 0 var(--space-1);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.memory-card-meta{gap:var(--space-2);font-size:var(--text-meta);color:var(--text-tertiary);flex-wrap:wrap;display:flex}.memory-card-meta span:not(:last-child):after{content:"·";margin-left:var(--space-2)}.memory-card-preview{font-size:var(--text-caption);color:var(--text-secondary);margin:var(--space-2) 0 0;-webkit-line-clamp:2;-webkit-hyphens:auto;hyphens:auto;-webkit-box-orient:vertical;line-height:1.5;display:-webkit-box;overflow:hidden}.memory-form-page{width:100%;max-width:720px;padding:var(--space-4);min-height:100dvh;margin:0 auto}.memory-form-header{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);z-index:10;background:var(--bg);padding:var(--space-2) 0;grid-template-columns:44px 1fr auto;display:grid;position:sticky;top:0}.memory-form-header h2{font-family:var(--font-heading);font-size:var(--text-title-sm);text-align:center;white-space:nowrap;text-overflow:ellipsis;margin:0;font-weight:700;overflow:hidden}.memory-form-close{width:44px;height:44px;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.memory-form-close:hover{color:var(--text-primary);background:var(--surface-elevated)}.memory-form-save{padding:var(--space-2) var(--space-4);background:var(--accent-strong);color:#fff;border-radius:var(--radius-full);font-size:var(--text-body-sm);cursor:pointer;transition:var(--transition);border:none;font-weight:600}.memory-form-save,.memory-detail-edit-btn,.settings-copy-btn{position:relative}.memory-form-save:after,.memory-detail-edit-btn:after,.settings-copy-btn:after{content:"";height:44px;position:absolute;inset:50% 0 auto;transform:translateY(-50%)}.memory-form-save:hover{background:var(--accent-hover)}.memory-form-save:disabled{opacity:.5;cursor:not-allowed}.memory-form-error{background:var(--danger-bg);color:var(--danger-text);padding:var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-body-sm);margin-bottom:var(--space-4)}.memory-form-fields{gap:var(--space-4);flex-direction:column;min-width:0;display:flex;overflow-x:hidden}.memory-form-title-input{font-family:var(--font-heading);font-size:var(--text-headline);color:var(--text-primary);width:100%;min-width:0;padding:var(--space-2) 0;text-overflow:ellipsis;background:0 0;border:none;outline:none;font-weight:700}.memory-form-title-input::placeholder{color:var(--text-tertiary)}.memory-form-row{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}@media (width<=480px){.memory-form-row{grid-template-columns:1fr}}.memory-form-field label{font-size:var(--text-meta);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--space-1);font-weight:600;display:block}.memory-form-field input{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:var(--text-body-lg);color:var(--text-primary);font-family:var(--font-body)}.memory-form-add-photos{border:1px solid var(--border);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);min-height:36px;font-size:var(--text-caption);color:var(--accent-text);cursor:pointer;transition:var(--transition);background:0 0;font-weight:600}.memory-form-add-photos:hover{background:var(--accent-subtle)}.memory-photo-strip{gap:var(--space-2);padding-bottom:var(--space-1);-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;overflow-x:auto}.memory-photo-strip::-webkit-scrollbar{display:none}.memory-photo-add-tile{justify-content:center;align-items:center;gap:var(--space-1);border:1.5px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--surface);width:96px;height:96px;color:var(--accent-text);font-size:var(--text-overline);cursor:pointer;transition:var(--transition);flex-direction:column;flex-shrink:0;font-weight:600;display:flex}.memory-photo-add-tile:hover{border-color:var(--accent);background:var(--accent-subtle)}.memory-photo-thumb{border-radius:var(--radius-md);flex-shrink:0;width:96px;height:96px;position:relative;overflow:hidden}.memory-photo-thumb img{object-fit:cover;width:100%;height:100%}.memory-form-photo-remove{color:#fff;cursor:pointer;background:#0000008c;border:none;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;display:flex;position:absolute;top:4px;right:4px}.memory-attachments{margin-top:var(--space-4)}.memory-attachments-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.memory-attachments-header label{font-size:var(--text-meta);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.memory-attachments-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.memory-attachment-item{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;position:relative;overflow:hidden}.memory-attachment-item img{object-fit:cover;width:100%;height:100%}.memory-attachment-photo{cursor:zoom-in;background:0 0;border:none;width:100%;height:100%;padding:0;display:block}.memory-attachment-item.is-cover{outline:2px solid var(--accent);outline-offset:-2px}.memory-attachment-cover-badge{top:var(--space-1);left:var(--space-1);background:var(--accent-strong);color:#fff;font-size:var(--text-overline);text-transform:uppercase;letter-spacing:.05em;border-radius:var(--radius-sm);padding:2px 6px;font-weight:700;position:absolute}.memory-attachment-actions{opacity:0;transition:var(--transition);background:#00000080;gap:1px;display:flex;position:absolute;bottom:0;left:0;right:0}.memory-attachment-item:hover .memory-attachment-actions{opacity:1}@media (hover:none){.memory-attachment-actions{opacity:1}}.memory-attachment-actions button{color:#fff;font-size:var(--text-overline);padding:var(--space-2);cursor:pointer;background:0 0;border:none;flex:1;font-weight:600}.memory-attachment-actions button:hover{background:#ffffff1a}.memory-attachment-remove{color:#ff6b6b!important}.memory-attachment-item.uploading{pointer-events:none}.memory-attachment-item.uploading img{opacity:.4}.memory-attachment-progress{background:#0009;justify-content:center;align-items:center;height:28px;display:flex;position:absolute;bottom:0;left:0;right:0}.memory-attachment-progress-bar{background:var(--accent);opacity:.5;transition:width .15s;position:absolute;top:0;bottom:0;left:0}.memory-attachment-progress-text{font-size:var(--text-overline);color:#fff;font-weight:700;position:relative}.memory-detail-page{width:100%;max-width:720px;padding:var(--space-4);padding-bottom:var(--space-16);min-height:100dvh;margin:0 auto;overflow-x:hidden}.memory-detail-header{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.memory-detail-header.editing{z-index:10;background:var(--bg);padding:var(--space-2) 0;margin-bottom:var(--space-3);position:sticky;top:0}.memory-detail-back{width:44px;height:44px;color:var(--text-tertiary);cursor:pointer;margin-left:calc(-1 * var(--space-3));border-radius:var(--radius-sm);transition:var(--transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.memory-detail-back:hover{color:var(--text-primary);background:var(--surface-elevated)}.memory-detail-header-actions{align-items:center;gap:var(--space-2);display:flex}.memory-detail-edit-btn{background:var(--surface-elevated);border-radius:var(--radius-full);padding:var(--space-2) var(--space-4);font-size:var(--text-caption);color:var(--text-secondary);cursor:pointer;transition:var(--transition);border:none;font-weight:600}.memory-detail-edit-btn:hover{color:var(--accent-text);background:var(--accent-subtle)}.memory-detail-danger-zone{padding-top:var(--space-6);margin-top:var(--space-2);border-top:1px solid var(--border);justify-content:center;display:flex}.memory-detail-delete-btn{border-radius:var(--radius-full);padding:var(--space-2) var(--space-4);min-height:44px;font-size:var(--text-body-sm);color:var(--danger-text);cursor:pointer;transition:var(--transition);background:0 0;border:none;font-weight:500}.memory-detail-delete-btn:hover{background:var(--danger-bg)}.memory-detail-cover{border-radius:var(--radius-xl);width:100%;margin-bottom:var(--space-6);box-shadow:var(--shadow-md);cursor:zoom-in;background:0 0;border:none;padding:0;display:block;overflow:hidden}.memory-detail-cover img{object-fit:cover;width:100%;max-height:480px;display:block}.memory-detail-content{flex-direction:column;display:flex}.memory-detail-title{font-family:var(--font-heading);font-size:var(--text-display);margin:0 0 var(--space-3);letter-spacing:-.025em;color:var(--text-primary);text-wrap:balance;font-weight:700;line-height:1.15}.memory-detail-meta{align-items:center;gap:var(--space-1) var(--space-3);font-size:var(--text-caption);color:var(--text-tertiary);padding-bottom:var(--space-5);border-bottom:1px solid var(--border);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.memory-detail-meta span{align-items:center;display:inline-flex}.memory-detail-meta span:not(:last-child):after{content:"·";margin-left:var(--space-3);opacity:.4}.memory-detail-body{margin:var(--space-4) 0}.memory-detail-body .milkdown-wrapper{background:0 0;border:none}.memory-detail-body .milkdown-body .ProseMirror{-webkit-hyphens:auto;hyphens:auto;max-width:65ch}.memory-detail-content .memory-attachments{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--border)}.memory-detail-content .memory-attachments-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.memory-detail-content .memory-attachment-item{border-radius:var(--radius-md);transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s cubic-bezier(.16,1,.3,1)}.memory-detail-content .memory-attachment-item:hover{box-shadow:var(--shadow-md);transform:scale(1.03)}@media (width<=480px){.memory-detail-title{font-size:var(--text-display-sm)}.memory-detail-cover img{max-height:320px}.memory-detail-content .memory-attachments-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}.memory-detail-skeleton .skeleton-cover{aspect-ratio:16/10;border-radius:var(--radius-xl);margin:52px 0 var(--space-6)}.memory-detail-skeleton .skeleton-title{width:60%;height:26px;margin-bottom:var(--space-4)}.memory-detail-skeleton .skeleton-line{margin:0 0 var(--space-2)}@media (width>=1024px){.memory-detail-page,.memory-form-page{background:var(--bg);box-shadow:0 1px 2px #00000008, 0 6px 20px #0000000f, 0 0 0 1px var(--border);border-radius:var(--radius-xl);margin:var(--space-6) auto;min-height:calc(100dvh - 2 * var(--space-6));padding:var(--space-5) var(--space-8) var(--space-10);animation:.5s cubic-bezier(.16,1,.3,1) both fadeInUp}.memory-form-header,.memory-detail-header.editing{border-radius:var(--radius-md)}}.lightbox{z-index:100;background:#08080af0;outline:none;flex-direction:column;animation:.18s ease-out lightbox-in;display:flex;position:fixed;inset:0}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}.lightbox-topbar{z-index:2;padding:calc(env(safe-area-inset-top,0px) + var(--space-3)) var(--space-4) var(--space-3);pointer-events:none;background:linear-gradient(#00000073,#0000);justify-content:space-between;align-items:center;display:flex;position:absolute;top:0;left:0;right:0}.lightbox-counter{color:#ffffffd9;font-size:var(--text-body-sm);font-variant-numeric:tabular-nums;font-weight:600}.lightbox-close{pointer-events:auto;border-radius:var(--radius-full);color:#fff;cursor:pointer;width:44px;height:44px;transition:background var(--transition);background:#ffffff1f;border:none;justify-content:center;align-items:center;display:flex}.lightbox-close:hover{background:#ffffff3d}.lightbox-track{scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:none;flex:1;display:flex;overflow-x:auto}@media (prefers-reduced-motion:reduce){.lightbox-track{scroll-behavior:auto}}.lightbox-track::-webkit-scrollbar{display:none}.lightbox-slide{scroll-snap-align:center;scroll-snap-stop:always;width:100%;padding:var(--space-4);flex:0 0 100%;justify-content:center;align-items:center;display:flex}.lightbox-slide img{max-width:100%;max-height:calc(100dvh - 2 * var(--space-4));object-fit:contain;border-radius:var(--radius-sm)}.lightbox-nav{padding:0 var(--space-4);pointer-events:none;justify-content:space-between;align-items:center;display:none;position:absolute;inset:0}@media (hover:hover){.lightbox-nav{display:flex}}.lightbox-arrow{pointer-events:auto;border-radius:var(--radius-full);color:#fff;cursor:pointer;width:44px;height:44px;transition:background var(--transition), opacity var(--transition);background:#ffffff1f;border:none;justify-content:center;align-items:center;display:flex}.lightbox-arrow:hover:not(:disabled){background:#ffffff3d}.lightbox-arrow:disabled{opacity:0;pointer-events:none}.confirm-sheet-overlay{inset:0;top:var(--visual-viewport-top,0px);height:var(--visual-viewport-height,100dvh);z-index:110;background:#0006;justify-content:center;align-items:flex-end;animation:.16s ease-out lightbox-in;display:flex;position:fixed;bottom:auto}.confirm-sheet{background:var(--surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:480px;padding:var(--space-5) var(--space-5) max(var(--space-5), calc(env(safe-area-inset-bottom,0px) - var(--keyboard-offset,0px) + var(--space-5)));overscroll-behavior:contain;outline:none;max-height:100%;animation:.22s cubic-bezier(.16,1,.3,1) sheet-up;overflow-y:auto}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.confirm-sheet-title{font-size:var(--text-title-sm);margin:0 0 var(--space-2);text-wrap:balance;font-weight:700}.confirm-sheet-message{font-size:var(--text-body-sm);color:var(--text-secondary);margin:0 0 var(--space-5);text-wrap:pretty}.confirm-sheet-actions{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}[data-theme=dark] .confirm-sheet-overlay{background:#0009}[data-theme=dark] .confirm-sheet{background:var(--surface-elevated);box-shadow:0 0 0 1px var(--border-strong), var(--shadow-lg)}[data-theme=dark] .confirm-sheet .form-input:not(:focus){border-color:var(--border-strong)}@media (prefers-color-scheme:dark){[data-theme=system] .confirm-sheet-overlay{background:#0009}[data-theme=system] .confirm-sheet{background:var(--surface-elevated);box-shadow:0 0 0 1px var(--border-strong), var(--shadow-lg)}[data-theme=system] .confirm-sheet .form-input:not(:focus){border-color:var(--border-strong)}}@media (width>=640px){.confirm-sheet-overlay{padding:var(--space-4);align-items:center}.confirm-sheet{border-radius:var(--radius-xl);max-width:400px;padding:var(--space-6)}}.recipes-tab{flex-direction:column;gap:12px;padding-bottom:96px;display:flex}.recipes-toolbar{flex-direction:column;gap:8px;display:flex}.recipes-search{width:100%}.recipes-chips{scrollbar-width:none;gap:6px;padding-block:4px;display:flex;overflow-x:auto}.recipes-chips::-webkit-scrollbar{display:none}.chip-toggle{border:1px solid var(--border);background:var(--surface);min-height:36px;color:var(--text-secondary);border-radius:var(--radius-full);font:inherit;font-size:var(--text-body-sm);cursor:pointer;flex:none;align-items:center;padding:6px 14px;display:inline-flex;position:relative}.chip-toggle:after{content:"";position:absolute;inset:-4px 0}.chip-toggle[aria-pressed=true]{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}.recipes-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width>=768px){.recipes-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.recipe-card{text-align:left;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);cursor:pointer;min-width:0;font:inherit;color:inherit;box-shadow:var(--shadow-sm);flex-direction:column;padding:0;display:flex;overflow:hidden}.recipe-card-image{aspect-ratio:4/3;background:var(--surface-elevated);position:relative}.recipe-card-image img{object-fit:cover;width:100%;height:100%;display:block}.recipe-card-placeholder{background:radial-gradient(circle at 50% 50%, var(--surface) 0 26%, transparent 27%), radial-gradient(circle at 30% 20%, var(--accent-subtle), transparent 60%), var(--surface-elevated);filter:saturate(.7);place-items:center;height:100%;font-size:32px;display:grid}.recipe-card-favorite{color:#f5b301;text-shadow:0 1px 2px #0006;position:absolute;top:8px;right:8px}.recipe-card-body{flex-direction:column;gap:2px;min-width:0;padding:8px 10px 10px;display:flex}.recipe-card-title{font-weight:600;font-size:var(--text-body-sm);-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.recipe-card-meta{font-size:var(--text-meta);color:var(--text-secondary);align-items:center;gap:6px;display:flex}.recipe-card-importing .recipe-card-image{animation:1.5s ease-in-out infinite recipe-pulse}.recipe-card-failed{cursor:default;gap:6px;padding:12px}.recipe-card-error{font-size:var(--text-meta);color:var(--danger);margin:0}.recipe-card-actions{flex-wrap:wrap;gap:6px;display:flex}.spinner-inline{border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite recipe-spin}@keyframes recipe-spin{to{transform:rotate(360deg)}}@keyframes recipe-pulse{50%{opacity:.55}}.recipe-detail{flex-direction:column;gap:16px;padding-bottom:120px;display:flex}.recipe-hero{aspect-ratio:16/10;border-radius:var(--radius-lg);background:var(--surface-elevated);overflow:hidden}.recipe-hero img{object-fit:cover;width:100%;height:100%}.recipe-meta{color:var(--text-secondary);font-size:var(--text-body-sm);flex-wrap:wrap;gap:8px 16px;display:flex}.recipe-section-title{font-size:var(--text-title-sm);margin:0 0 8px;font-weight:600}.servings-stepper{align-items:center;gap:8px;display:inline-flex}.servings-stepper button{border-radius:var(--radius-full);width:44px;height:44px;font-size:var(--text-title-sm);padding:0}.ingredient-group-heading{font-size:var(--text-body-sm);color:var(--text-secondary);margin:12px 0 4px;font-weight:600}.ingredient-list{margin:0;padding:0;list-style:none}.ingredient-row{border-bottom:1px solid var(--border);grid-template-columns:5.5em 1fr;gap:8px;padding:6px 0;display:grid}.ingredient-amount{font-variant-numeric:tabular-nums;text-align:right;color:var(--text-secondary)}.ingredient-note{color:var(--text-secondary)}.step-list{flex-direction:column;gap:12px;margin:0;padding-left:1.4em;display:flex}.step-badges{gap:6px;margin-top:4px;display:flex}.step-badge{font-size:var(--text-meta);border-radius:var(--radius-full);background:var(--surface-elevated);padding:2px 8px}.recipe-actions{flex-wrap:wrap;gap:8px;display:flex}.recipe-photos{gap:8px;display:flex;overflow-x:auto}.recipe-photo-thumb{border-radius:var(--radius-md);background:0 0;border:2px solid #0000;flex:none;width:88px;height:88px;padding:0;overflow:hidden}.recipe-photo-thumb[data-cover=true]{border-color:var(--accent-strong)}.recipe-photo-thumb img{object-fit:cover;width:100%;height:100%}.form-field{gap:var(--space-1);flex-direction:column;display:flex}.input-row{gap:var(--space-2);align-items:center;display:flex}.input-row>input,.input-row>.form-field{flex:1;min-width:0}.form-field>.form-input{width:100%;min-width:0}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-body-sm)}.recipe-import-form{gap:var(--space-4);flex-direction:column;display:flex}.recipe-import-modes{gap:var(--space-2);margin-bottom:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.confirm-sheet .recipe-import-form textarea.form-input{min-height:4.5em;max-height:calc(var(--visual-viewport-height,100dvh) - 226px)}.recipe-import-photo-pick{cursor:pointer;position:relative}.recipe-import-photo-pick:focus-within{outline:2px solid var(--accent-strong);outline-offset:2px}.recipe-import-photos{gap:var(--space-2);margin:var(--space-2) 0;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));padding:0;list-style:none;display:grid}.recipe-import-photo{aspect-ratio:3/4;border-radius:var(--radius-md);background:var(--surface-elevated);box-shadow:0 0 0 1px var(--border);position:relative;overflow:hidden}.recipe-import-photo img{object-fit:cover;width:100%;height:100%;display:block}.recipe-import-photo-index{border-radius:var(--radius-full);color:#fff;min-width:18px;height:18px;font-size:var(--text-overline);font-variant-numeric:tabular-nums;background:#0000008c;place-items:center;padding:0 5px;font-weight:600;display:grid;position:absolute;bottom:4px;left:4px}.recipe-import-photo-remove{border-radius:var(--radius-full);color:#fff;cursor:pointer;background:#0000008c;border:0;place-items:center;width:22px;height:22px;padding:0;display:grid;position:absolute;top:4px;right:4px}.recipe-import-photo-remove:after{content:"";position:absolute;inset:-11px}.recipe-import-photo-remove:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.recipe-import-photo-limit{color:var(--danger-text)}.page-header .recipe-edit-title{font-size:var(--text-title-sm);color:var(--text-primary)}.recipe-edit-form{gap:var(--space-4);flex-direction:column;display:flex}.recipe-edit-form textarea{min-height:10em;font-family:inherit}.tag-input{gap:var(--space-1);flex-direction:column;display:flex}.tag-input .recipes-chips:empty{display:none}.form-field .form-label{margin:0;display:block}.form-help{font-size:var(--text-meta);color:var(--text-secondary);margin:2px 0 0}.token-once{font-family:ui-monospace,monospace;font-size:var(--text-meta);word-break:break-all;background:var(--surface-elevated);border-radius:var(--radius-md);padding:8px}@media (prefers-reduced-motion:reduce){.recipe-card-importing .recipe-card-image,.spinner-inline{animation:none}}.recipe-section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.nutrition-summary{gap:var(--space-2);margin:var(--space-3) 0 var(--space-2);flex-direction:column;display:flex}.nutrition-panel{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-elevated)}.nutrition-row{gap:var(--space-2);width:100%;min-height:44px;padding:var(--space-3);border-radius:var(--radius-md);color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;display:flex}.nutrition-row:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.nutrition-values{justify-content:space-between;gap:var(--space-2);grid-template-columns:repeat(4,auto);display:grid}.nutrition-value{flex-direction:column;display:flex}.nutrition-value strong{font-size:var(--text-body-lg);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.nutrition-label{font-size:var(--text-meta);color:var(--text-secondary);-webkit-hyphens:none;hyphens:none;overflow-wrap:normal;white-space:nowrap}.nutrition-caption{align-items:center;gap:var(--space-2);font-size:var(--text-meta);color:var(--text-secondary);display:flex}.nutrition-badge{border-radius:var(--radius-full);background:var(--surface);color:var(--text-secondary);font-size:var(--text-meta);padding:1px 8px;font-weight:500}.nutrition-chevron{flex:none;margin-left:auto;transition:transform .15s}.nutrition-row[aria-expanded=true] .nutrition-chevron{transform:rotate(180deg)}.nutrition-total{font-size:var(--text-meta);color:var(--text-secondary);font-variant-numeric:tabular-nums;margin:0}.nutrition-details{gap:var(--space-3);margin:0 var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border);flex-direction:column;display:flex}.nutrition-details[hidden]{display:none}.nutrition-more{gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.nutrition-more dt{font-size:var(--text-meta);color:var(--text-secondary)}.nutrition-more dd{font-variant-numeric:tabular-nums;margin:0}.nutrition-reestimate{justify-content:space-between;align-items:center;gap:var(--space-2);font-size:var(--text-meta);color:var(--text-secondary);flex-wrap:wrap;display:flex}.nutrition-reestimate .btn{min-height:44px}@media (prefers-reduced-motion:reduce){.nutrition-chevron{transition:none}}.recipe-nutrition-edit{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);padding:0 var(--space-4)}.recipe-nutrition-edit[open]{padding-bottom:var(--space-4)}.recipe-nutrition-edit>summary{align-items:center;gap:var(--space-2);cursor:pointer;min-height:48px;font-weight:600;list-style:none;display:flex}.recipe-nutrition-edit>summary::-webkit-details-marker{display:none}.recipe-nutrition-edit>summary:after{content:"";border-bottom:2px solid;border-right:2px solid;width:8px;height:8px;margin-left:auto;transition:transform .15s;transform:rotate(45deg)}.recipe-nutrition-edit[open]>summary:after{transform:rotate(-135deg)}.recipe-nutrition-edit>summary:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px;border-radius:var(--radius-sm)}.nutrition-fields{gap:var(--space-3);margin-top:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.nutrition-field-error{font-size:var(--text-meta);color:var(--danger-text);margin:2px 0 0}@media (prefers-reduced-motion:reduce){.recipe-nutrition-edit>summary:after{transition:none}}.settings-card{gap:var(--space-4);padding:var(--space-4);background:var(--surface);border-radius:var(--radius-md);flex-direction:column;display:flex}.settings-card .form-input{background:var(--bg)}.settings-card .settings-list-item:first-child{padding-top:0}.settings-disclosure summary{justify-content:space-between;align-items:center;gap:var(--space-2);min-height:44px;font-size:var(--text-body);color:var(--text-primary);cursor:pointer;font-weight:500;list-style:none;display:flex}.settings-disclosure summary::-webkit-details-marker{display:none}.settings-disclosure summary:after{content:"";width:8px;height:8px;margin-right:var(--space-1);border-right:1.5px solid var(--text-tertiary);border-bottom:1.5px solid var(--text-tertiary);transition:transform var(--transition);flex:none;transform:rotate(45deg)translateY(-2px)}.settings-disclosure[open] summary:after{transform:rotate(-135deg)translateY(-2px)}.settings-disclosure ol{margin:var(--space-2) 0 0;padding-left:var(--space-5);font-size:var(--text-body-sm);color:var(--text-secondary);line-height:1.5}.settings-disclosure-heading{margin:var(--space-4) 0 0;font-size:var(--text-body-sm);color:var(--text-primary);font-weight:600}.shortcut-downloads{gap:var(--space-2);flex-direction:column;display:flex}.shortcut-downloads .btn{white-space:normal;text-align:center;height:auto;min-height:48px}.settings-list{margin:0;padding:0;list-style:none}.settings-list-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:8px 0;display:flex}.shopping-sort-toggle{gap:var(--space-2);padding:var(--space-2) var(--space-4);display:flex}.shopping-section-heading{padding:var(--space-4) var(--space-4) var(--space-1);font-size:var(--text-meta);color:var(--text-secondary);background:var(--bg);margin:0;font-weight:600}.task-quantity{font-size:var(--text-body-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0}.task-recipes{gap:var(--space-1);flex-wrap:wrap;min-width:0;margin-top:2px;display:flex}.task-recipe-chip{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:var(--text-meta);color:var(--accent-text);background:var(--accent-subtle);border-radius:var(--radius-full);padding:1px 8px;overflow:hidden}.task-section-btn{cursor:pointer;width:28px;height:28px;color:var(--text-tertiary);border-radius:var(--radius-sm);opacity:.6;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.task-section-btn:after{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.task-section-btn:hover{opacity:1}.section-picker-list{gap:var(--space-1);margin:var(--space-3) 0 var(--space-4);overscroll-behavior:contain;flex-direction:column;min-height:0;display:flex;overflow-y:auto}.section-picker-option{min-height:44px;padding:var(--space-2) var(--space-4);text-align:left;font:inherit;color:var(--text-primary);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer}.section-picker-option[aria-pressed=true]{border-color:var(--accent-strong);background:var(--accent-subtle);font-weight:600}.section-picker-actions{grid-template-columns:1fr}.section-picker-sheet{flex-direction:column;max-height:min(85dvh,100%);display:flex;overflow:hidden}.section-picker-sheet>*{flex-shrink:0}.section-picker-sheet>.section-picker-list{flex-shrink:1}.add-to-shopping-sheet{gap:var(--space-4);flex-direction:column;max-height:min(85dvh,100%);display:flex;overflow-y:auto}.shopping-pick-list{margin:0;padding:0;list-style:none}.shopping-pick-row{align-items:center;gap:var(--space-3);border-bottom:1px solid var(--border);cursor:pointer;min-height:44px;display:flex}.shopping-pick-row input{width:20px;height:20px;accent-color:var(--accent-strong);flex-shrink:0}.shopping-pick-row .ingredient-amount{min-width:64px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.shopping-pick-name{overflow-wrap:anywhere;min-width:0}.shopping-target{gap:var(--space-2);flex-direction:column;display:flex}.shopping-source-title{align-items:center;gap:var(--space-3);cursor:pointer;min-height:44px;display:flex}.shopping-source-title input{width:20px;height:20px;accent-color:var(--accent-strong);flex-shrink:0}.shopping-source-meta{color:var(--text-secondary);font-size:.85em;display:block}.cook-page{z-index:60;box-sizing:border-box;background:var(--bg);max-width:100vw;height:100dvh;color:var(--text-primary);padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);grid-template-rows:auto auto minmax(0,1fr) auto;display:grid;position:fixed;inset:0;overflow:hidden}.cook-header{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);grid-row:1;grid-template-columns:44px minmax(0,1fr) auto;display:grid}.cook-header-title{font-family:var(--font-heading);font-size:var(--text-title-sm);text-overflow:ellipsis;white-space:nowrap;margin:0;font-weight:600;overflow:hidden}.cook-progress-bar{border-radius:var(--radius-full);background:var(--surface-elevated);grid-column:1/-1;height:4px;overflow:hidden}.cook-progress-bar>span{background:var(--accent);height:100%;transition:width var(--transition);display:block}.cook-status{grid-row:2;min-width:0}.cook-timer-bar{padding-bottom:var(--space-1)}.cook-timer-list{gap:var(--space-2);padding:var(--space-1) var(--space-4);overscroll-behavior-x:contain;scroll-snap-type:x proximity;scroll-padding-inline:var(--space-4);scrollbar-width:none;margin:0;list-style:none;display:flex;position:relative;overflow-x:auto}.cook-timer-list::-webkit-scrollbar{display:none}@media (prefers-reduced-motion:no-preference){.cook-timer-list{scroll-behavior:smooth}}.cook-push-hint{align-items:center;gap:var(--space-1);margin:0 var(--space-4) var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-3);border-radius:var(--radius-md);background:var(--surface);box-shadow:0 0 0 1px var(--border);display:flex}.cook-push-hint-text{min-width:0;font-size:var(--text-caption);color:var(--text-secondary);text-wrap:pretty;flex:1;margin:0;line-height:1.35}.cook-push-hint-enable{color:var(--accent-text);font-size:var(--text-body-sm);flex:none;font-weight:600}.cook-push-hint-close{border-radius:var(--radius-full);width:44px;height:44px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;display:grid}.cook-timer-chip{scroll-snap-align:start;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-3);border-radius:var(--radius-full);background:var(--surface);box-shadow:var(--shadow-sm), 0 0 0 1px var(--border);font-size:var(--text-body-sm);flex:none;display:flex}.cook-timer-time{font-variant-numeric:tabular-nums;font-weight:600}.cook-timer-chip[data-done]{background:var(--accent-strong);color:#fff;animation:.9s ease-in-out infinite alternate cook-timer-pulse}@keyframes cook-timer-pulse{0%{box-shadow:0 0 #2dd4a88c}to{box-shadow:0 0 0 8px #2dd4a800}}.cook-timer-close{width:44px;height:44px;margin:calc(var(--space-1) * -1) 0;border-radius:var(--radius-full);color:inherit;cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.cook-main{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;grid-row:3;min-width:0;position:relative;overflow:hidden auto}.cook-panel{max-width:560px;padding:var(--space-6) var(--space-4) var(--space-8);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.cook-title{overflow-wrap:anywhere;font-family:var(--font-heading);font-size:clamp(var(--text-headline), 4vw + .5rem, var(--text-display));text-wrap:balance;margin:0;line-height:1.2}.cook-hint{color:var(--text-secondary);font-size:var(--text-body);margin:0}.cook-primary{min-height:52px;font-size:var(--text-body-lg)}.cook-actions{gap:var(--space-3);display:flex}.cook-actions .btn{flex:1;min-height:48px}.cook-step{touch-action:pan-y;min-height:100%;position:relative}.cook-zone{width:50%;min-width:44px;padding:0 var(--space-2);color:var(--text-tertiary);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;align-items:center;display:flex;position:absolute;top:0;bottom:0}.cook-zone-prev{justify-content:flex-start;left:0}.cook-zone-next{justify-content:flex-end;right:0}.cook-zone:active{background:var(--accent-subtle)}.cook-zone:focus-visible{outline:2px solid var(--accent-strong);outline-offset:-4px}.cook-zone-chevron{opacity:.4;font-size:2rem;line-height:1}.cook-step-content{z-index:1;pointer-events:none;max-width:640px;padding:var(--space-6) var(--space-10) var(--space-8);gap:var(--space-5);flex-direction:column;margin:0 auto;display:flex;position:relative}.cook-step-content button,.cook-step-content a{pointer-events:auto}.cook-step-counter{font-size:var(--text-overline);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin:0;font-weight:600}.cook-step-text{overflow-wrap:anywhere;color:var(--text-primary);text-wrap:pretty;margin:0;font-size:clamp(1.375rem,3vw + .85rem,2.25rem);font-weight:500;line-height:1.4}.cook-step-temp{align-self:flex-start;margin:0}.cook-step .ingredient-groups{font-size:var(--text-body-lg)}.cook-timer-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.cook-timer-actions .btn{min-height:48px}.timer-edit-stepper{justify-content:center;align-items:center;gap:var(--space-2);margin:var(--space-4) 0;flex-wrap:wrap;display:flex}.timer-edit-stepper .btn{border-radius:var(--radius-full);min-width:44px;height:44px;font-size:var(--text-title-sm);flex:0 auto;padding:0}.timer-edit-value{text-align:center;min-width:5em;font-size:var(--text-title-lg);font-variant-numeric:tabular-nums;font-weight:600}.cook-finish label.btn{cursor:pointer;position:relative}.cook-finish label.btn:focus-within{outline:2px solid var(--accent-strong);outline-offset:2px}@media (orientation:landscape) and (height<=500px){.cook-header{padding-block:var(--space-1)}.cook-step-content{padding:var(--space-3) var(--space-10) var(--space-4);gap:var(--space-3)}.cook-step-text{font-size:var(--text-title-lg);line-height:1.35}.cook-step .ingredient-groups{font-size:var(--text-body)}.cook-panel{padding-block:var(--space-3) var(--space-4);gap:var(--space-3)}.cook-title{font-size:var(--text-title-lg)}}@media (prefers-reduced-motion:reduce){.cook-timer-chip[data-done]{animation:none}.cook-progress-bar>span{transition:none}}.cook-banners{gap:var(--space-2);flex-direction:column;display:flex}.cook-banner{align-items:center;gap:var(--space-3);width:100%;min-height:52px;padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);background:var(--accent-subtle);box-shadow:0 0 0 1px var(--border);color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;display:flex}.cook-banner:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.cook-banner-dot{border-radius:var(--radius-full);background:var(--accent);flex:none;width:10px;height:10px;animation:1.6s ease-in-out infinite cook-banner-pulse}@keyframes cook-banner-pulse{50%{opacity:.35}}.cook-banner-text{min-width:0;font-size:var(--text-body);overflow-wrap:anywhere;flex:1}.cook-banner-action{color:var(--accent-text);flex:none;font-weight:600}@media (prefers-reduced-motion:reduce){.cook-banner-dot{animation:none}}.cook-header-people{align-items:center;gap:var(--space-2);min-width:0;display:flex}.cook-presence{padding:0 var(--space-1);margin:0;list-style:none;display:flex}.cook-presence li+li{margin-left:calc(var(--space-2) * -1)}.cook-presence .avatar{border-radius:var(--radius-full);box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--accent);display:block}.cook-presence li[data-previewing] .avatar{box-shadow:0 0 0 2px var(--bg);outline:2px dashed var(--text-tertiary);outline-offset:2px}.cook-invite{align-items:center;gap:var(--space-1);min-height:44px;padding:0 var(--space-3);border-radius:var(--radius-full);font-size:var(--text-body-sm);white-space:nowrap;display:inline-flex}.cook-preview-badge{margin-right:var(--space-2);padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--accent-subtle);color:var(--accent-text);box-shadow:0 0 0 1px var(--accent);display:inline-block}.cook-together-bar{gap:var(--space-2);margin-bottom:calc(env(safe-area-inset-bottom,0px) * -1);padding:var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border);background:var(--surface);flex-direction:column;grid-row:4;display:flex}.cook-together-status{min-height:1.4em;font-size:var(--text-body-sm);color:var(--text-secondary);text-wrap:pretty;margin:0}.cook-together-bar[data-moved] .cook-together-status{color:var(--accent-text);font-weight:600}.cook-together-actions{gap:var(--space-2);display:flex}.cook-together-actions .btn{white-space:normal;text-wrap:balance;flex:1 1 0;min-width:0;min-height:48px}.cook-finish-note{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--accent-subtle);color:var(--accent-text);margin:0;font-weight:600}@media (orientation:landscape) and (height<=500px){.cook-together-bar{padding-block:var(--space-1) calc(var(--space-1) + env(safe-area-inset-bottom,0px));flex-direction:row;align-items:center}.cook-together-status{flex:1;min-width:0}.cook-together-actions .btn{flex:none;min-height:44px}}@media (width<=1023px){.recipe-detail-aside,.recipe-detail-main,.recipe-edit-texts{display:contents}}@media (width>=1024px){.page-with-sidebar .main-content{--content-max:880px;--content-inline:max(var(--space-8), calc((100% - var(--content-max)) / 2))}.page-with-sidebar .main-content:has(.recipes-tab){--content-max:1120px}.page-with-sidebar .main-content:has(.settings-content){--content-max:600px}.page-with-sidebar .settings-content{max-width:none;padding:0}.account-page .page-header{padding-inline:max(var(--space-8), calc((100% - 600px) / 2 - var(--space-2)))}.page-with-sidebar .main-content>.page-header,.page-with-sidebar .main-content>.page-content{padding-inline:var(--content-inline)}.page-with-sidebar .main-content>.page-content{padding-block:var(--space-6) var(--space-12)}.page-with-sidebar .add-task-bar{padding-inline:var(--content-inline)}.shopping-sort-toggle{padding-inline:0}.shopping-section-heading{padding-inline:var(--space-1);font-size:var(--text-overline);letter-spacing:.08em;text-transform:uppercase}.recipes-tab{gap:var(--space-5)}.recipes-toolbar{align-items:center;gap:var(--space-3) var(--space-4);flex-flow:wrap}.recipes-search{flex:0 340px}.recipes-toolbar .recipes-chips{flex-wrap:wrap;flex:320px;overflow:visible}.recipes-grid{gap:var(--space-6) var(--space-5);grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.recipe-card{border-radius:var(--radius-lg);transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s cubic-bezier(.16,1,.3,1)}.recipe-card-image{overflow:hidden}.recipe-card-image img{transition:transform .6s cubic-bezier(.16,1,.3,1)}.recipe-card:not(.recipe-card-failed):hover{transform:translateY(-3px);box-shadow:0 2px 4px #0000000a,0 14px 32px #00000017}.recipe-card:hover .recipe-card-image img{transform:scale(1.04)}.recipe-card:focus-visible{outline:2px solid var(--accent-strong);outline-offset:3px}.recipe-card-placeholder{font-size:40px}.recipe-card-body{gap:var(--space-1);padding:var(--space-3) var(--space-4) var(--space-4)}.recipe-card-title{font-family:var(--font-heading);font-size:var(--text-body-lg);letter-spacing:-.01em;color:var(--text-primary);font-weight:700}.recipe-card-meta{font-size:var(--text-caption)}.recipe-detail-page,.recipe-edit-page{width:calc(100% - 2 * var(--space-8));margin:var(--space-6) auto;min-height:calc(100dvh - 2 * var(--space-6))}.recipe-detail-page{max-width:1120px}.recipe-edit-page{max-width:980px}.recipe-detail-page>.page-header,.recipe-edit-page>.page-header{padding:var(--space-4) var(--space-6);border-radius:var(--radius-xl) var(--radius-xl) 0 0;gap:var(--space-3)}.recipe-detail-page>.page-header h1{text-align:left;font-size:var(--text-display-sm);letter-spacing:-.03em;color:var(--text-primary);font-weight:800}.recipe-detail{align-items:start;gap:var(--space-12);padding:var(--space-8) var(--space-10) var(--space-16);grid-template-columns:minmax(320px,380px) minmax(0,1fr);display:grid}.recipe-detail-aside{top:calc(76px + var(--space-6));max-height:calc(100dvh - 76px - var(--space-12));scrollbar-width:thin;gap:var(--space-4);flex-direction:column;margin:-2px;padding:2px;display:flex;position:sticky;overflow-y:auto}.recipe-detail-main{gap:var(--space-10);flex-direction:column;min-width:0;display:flex}.recipe-hero{aspect-ratio:4/3}.recipe-detail-aside .recipe-actions .btn{flex:1}.recipe-detail-aside .recipes-chips{flex-wrap:wrap;overflow:visible}.recipe-detail-aside>section{padding:var(--space-5);background:var(--surface);border-radius:var(--radius-lg);box-shadow:0 0 0 1px var(--border)}.recipe-detail-aside .ingredient-groups>:last-child .ingredient-row:last-child,.cook-step-content>.ingredient-groups>:last-child .ingredient-row:last-child{border-bottom:0}.cook-step-content>.ingredient-groups>:first-child .ingredient-group-heading{margin-top:0}.recipe-detail .recipe-section-title{margin-bottom:var(--space-3);font-size:var(--text-overline);letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);font-weight:700}.recipe-detail-aside .recipe-section-header .recipe-section-title{margin-bottom:0}.recipe-detail-main .step-list{counter-reset:recipe-step;gap:var(--space-8);padding:0;list-style:none}.recipe-detail-main .step-list>li{counter-increment:recipe-step;column-gap:var(--space-4);max-width:62ch;font-size:var(--text-body-lg);color:var(--text-primary);grid-template-columns:3.25rem minmax(0,1fr);line-height:1.7;display:grid}.recipe-detail-main .step-list>li:before{content:counter(recipe-step, decimal-leading-zero);font-family:var(--font-heading);letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:var(--accent-strong);grid-row:span 2;padding-top:.15em;font-size:1.75rem;font-weight:800;line-height:1}.recipe-detail-main .step-badges{margin-top:var(--space-2);grid-column:2}.recipe-detail-main .step-badge{font-size:var(--text-caption);padding:3px 10px}.recipe-detail-main .recipe-photos{flex-wrap:wrap;overflow:visible}.recipe-detail-main .recipe-photo-thumb{width:120px;height:120px}.recipe-manage-actions{margin-top:var(--space-4);padding-top:var(--space-5);border-top:1px solid var(--border)}.recipe-manage-actions .btn-danger{color:var(--danger-text);background:0 0;margin-left:auto}.recipe-manage-actions .btn-danger:hover:not(:disabled){background:var(--danger-bg);filter:none}.recipe-detail>.cook-banners{grid-column:1/-1}.cook-banner:hover .cook-banner-action{text-underline-offset:3px;text-decoration:underline}.recipe-detail-aside .nutrition-summary{margin:var(--space-3) 0 var(--space-4)}.nutrition-panel:hover{border-color:var(--accent)}.recipe-edit-page>.page-content{padding:var(--space-8) var(--space-10) var(--space-12)}.recipe-edit-form{gap:var(--space-5)}.recipe-edit-texts{gap:var(--space-6);grid-template-columns:minmax(0,2fr) minmax(0,3fr);display:grid}.recipe-edit-texts textarea{min-height:24em;line-height:1.6}.nutrition-fields{grid-template-columns:repeat(4,minmax(0,1fr))}.cook-header{padding:var(--space-4) var(--space-8)}.cook-header-title{font-size:var(--text-title)}.cook-timer-list{padding-inline:var(--space-8);scroll-padding-inline:var(--space-8)}.cook-panel{max-width:640px;padding-top:var(--space-12);gap:var(--space-5)}.cook-title{font-size:var(--text-display-lg);letter-spacing:-.03em}.cook-step-content{max-width:1040px;padding:var(--space-12) var(--space-16) var(--space-10);align-content:start;column-gap:var(--space-12);row-gap:var(--space-6);grid-template-columns:minmax(0,1fr) 300px;display:grid}.cook-step-content>*{grid-column:1}.cook-step-content>.cook-step-temp{justify-self:start}.cook-step-content>.ingredient-groups{padding:var(--space-5);background:var(--surface);border-radius:var(--radius-lg);box-shadow:0 0 0 1px var(--border);grid-area:1/2/span 6;align-self:start}.cook-step-text{letter-spacing:-.015em;font-size:clamp(2rem,1.2rem + 1.6vw,2.75rem);line-height:1.3}.cook-timer-actions .btn{min-width:200px}.cook-step-content>.cook-primary{justify-self:start;min-width:260px}.cook-zone{width:50%;padding-inline:var(--space-6);transition:background .3s}.cook-zone-chevron{font-size:2.75rem;transition:opacity .2s,transform .3s cubic-bezier(.16,1,.3,1)}.cook-zone-prev:hover{background:linear-gradient(to right, var(--accent-subtle), transparent 40%)}.cook-zone-next:hover{background:linear-gradient(to left, var(--accent-subtle), transparent 40%)}.cook-zone:hover .cook-zone-chevron{opacity:.9;color:var(--accent-text)}.cook-zone-prev:hover .cook-zone-chevron{transform:translate(-4px)}.cook-zone-next:hover .cook-zone-chevron{transform:translate(4px)}.cook-together-bar{justify-content:space-between;align-items:center;gap:var(--space-6);padding-inline:var(--space-8);flex-direction:row}.cook-together-status{font-size:var(--text-body)}.cook-together-actions .btn{flex:none;min-width:200px}.cook-invite{padding-inline:var(--space-4)}}@media (width>=1024px) and (prefers-reduced-motion:reduce){.recipe-card,.recipe-card-image img,.cook-zone-chevron{transition:none}.recipe-card:not(.recipe-card-failed):hover,.recipe-card:hover .recipe-card-image img,.cook-zone-prev:hover .cook-zone-chevron,.cook-zone-next:hover .cook-zone-chevron{transform:none}}.recipes-view-toggle{border-radius:var(--radius-full);background:var(--surface-elevated);grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.recipes-view-option{border-radius:var(--radius-full);min-height:44px;font-size:var(--text-body-sm);color:var(--text-secondary);transition:background var(--transition), color var(--transition);justify-content:center;align-items:center;font-weight:600;text-decoration:none;display:flex}.recipes-view-option[aria-current=page]{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.recipes-view-option:focus-visible,.plan-entry-button:focus-visible,.plan-day-toggle:focus-visible,.plan-day-add:focus-visible,.plan-day-option:focus-visible,.plan-picker-row:focus-visible{outline:2px solid var(--accent-strong);outline-offset:2px}.planner{gap:var(--space-3);touch-action:pan-y;flex-direction:column;display:flex}.planner-header{align-items:center;gap:var(--space-2);grid-template-columns:44px minmax(0,1fr) 44px;display:grid}.planner-nav{font-size:var(--text-title-lg)}.planner-week{flex-direction:column;align-items:center;min-width:0;display:flex}.planner-week-range{font-size:var(--text-title-sm);font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-weight:700}.planner-week-number{font-size:var(--text-meta);color:var(--text-tertiary)}.planner-actions{justify-content:flex-end;gap:var(--space-2);grid-column:1/-1;display:flex}.planner-days{gap:var(--space-3);flex-direction:column;display:flex}.planner-skeleton{height:96px}.plan-day{padding:var(--space-1) var(--space-3) var(--space-3);background:var(--surface);border-radius:var(--radius-lg);box-shadow:0 0 0 1px var(--border)}.plan-day-today{box-shadow:0 0 0 2px var(--accent)}.plan-day-past{padding-bottom:var(--space-1);background:0 0}.plan-day-past .plan-entry-title{color:var(--text-secondary)}.plan-day-drop{background:var(--accent-subtle);box-shadow:0 0 0 2px var(--accent-strong)}.plan-day-header{align-items:center;gap:var(--space-2);min-height:44px;display:flex}.plan-day-title{min-width:0;font-size:var(--text-body);flex:1;margin:0;font-weight:700}.plan-day-toggle{align-items:center;gap:var(--space-2);width:100%;min-height:44px;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:flex}.plan-day-toggle:after{content:"›";color:var(--text-tertiary);transition:transform var(--transition);margin-left:auto}.plan-day-toggle[aria-expanded=true]:after{transform:rotate(90deg)}.plan-day-name{overflow-wrap:normal;word-break:normal;-webkit-hyphens:none;hyphens:none;min-width:0}.plan-day-count{font-size:var(--text-caption);color:var(--text-tertiary);white-space:nowrap;font-weight:400}.plan-day-add{border-radius:var(--radius-full);background:var(--accent-subtle);width:44px;height:44px;color:var(--accent-text);cursor:pointer;border:0;flex:none;font-size:22px;line-height:1}.plan-day-empty{padding-bottom:var(--space-1);font-size:var(--text-body-sm);color:var(--text-tertiary);margin:0}.plan-entries{gap:var(--space-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.plan-entry-button{align-items:center;gap:var(--space-3);width:100%;min-height:52px;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font:inherit;color:inherit;text-align:left;cursor:pointer;touch-action:pan-y;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:0 0;border:0;display:flex}.plan-entry-button:active{background:var(--accent-subtle)}.plan-thumb{border-radius:var(--radius-sm);background:var(--surface-elevated);flex:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;display:inline-flex;overflow:hidden}.plan-thumb img{object-fit:cover;-webkit-user-drag:none;width:100%;height:100%;display:block}.plan-entry-text{flex-direction:column;min-width:0;display:flex}.plan-entry-title{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-weight:500;display:-webkit-box;overflow:hidden}.plan-entry-meta{font-size:var(--text-caption);color:var(--text-secondary)}.plan-entry[data-cooked] .plan-entry-meta{color:var(--accent-text)}.plan-entry[data-kind=deleted] .plan-entry-title{color:var(--text-tertiary);text-decoration:line-through}.plan-day-nutrition{margin:var(--space-2) 0 0;padding-top:var(--space-2);border-top:1px solid var(--border);font-size:var(--text-caption);color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-direction:column;gap:2px;display:flex}.plan-day-nutrition-label{font-size:var(--text-meta);color:var(--text-tertiary)}.plan-sheet{gap:var(--space-4);max-height:min(85dvh,100%);scroll-padding-bottom:calc(var(--keyboard-offset,0px) + 12px);flex-direction:column;display:flex}.plan-sheet .confirm-sheet-title,.plan-sheet .confirm-sheet-message{margin:0}.plan-sheet-subtitle{margin:0 0 var(--space-2);font-size:var(--text-overline);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);font-weight:700}.plan-sheet-actions{grid-template-columns:1fr}.plan-day-picker-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));display:grid}.plan-day-option{min-height:56px;padding:var(--space-2) var(--space-3);border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface);font:inherit;color:var(--text-primary);text-align:left;cursor:pointer;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;display:flex}.plan-day-option[data-today]{border-color:var(--accent)}.plan-day-option[aria-current=date]{background:var(--accent-subtle)}.plan-day-option:disabled{opacity:.4;cursor:not-allowed}.plan-day-option-name{font-size:var(--text-body-sm);font-weight:600}.plan-day-option-count{font-size:var(--text-meta);color:var(--text-secondary)}.plan-picker-search{margin:0}.plan-picker-search .form-input{width:100%}.plan-picker-text{height:auto;min-height:48px;padding-block:var(--space-2);white-space:normal;text-align:left;overflow-wrap:anywhere}.plan-picker-list{margin:0;padding:0;list-style:none}.plan-picker-row{align-items:center;gap:var(--space-3);width:100%;min-height:52px;padding:var(--space-1) 0;border:0;border-bottom:1px solid var(--border);font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;display:flex}.plan-picker-title{overflow-wrap:anywhere;flex:1;min-width:0}.plan-picker-fav{color:var(--accent-text)}.plan-entry-actions{gap:var(--space-2);flex-direction:column;display:flex}.plan-entry-actions .btn{width:100%}.plan-remove{color:var(--danger-text);border-color:var(--danger-text)}.plan-range{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.plan-range-field{gap:var(--space-1);min-width:0;font-size:var(--text-body-sm);color:var(--text-secondary);flex-direction:column;display:flex}.plan-range-field .form-input{width:100%;min-width:0;font-size:max(16px, var(--text-body))}@media (width<=359px){.plan-range{grid-template-columns:1fr}}.plan-shop-summary{font-size:var(--text-body-sm);margin:0;padding:0;list-style:none}.plan-shop-summary li{padding:var(--space-2) 0;border-bottom:1px solid var(--border)}.plan-shop-flag{color:var(--text-tertiary)}.shopping-source+.shopping-source{margin-top:var(--space-4)}@media (prefers-reduced-motion:reduce){.plan-day-toggle:after,.recipes-view-option{transition:none}}@media (width>=1024px){.sidebar-nav-subitem{padding-left:calc(var(--space-4) + 20px + var(--space-3));font-size:var(--text-caption)}.recipes-view-toggle{width:320px}.page-with-sidebar .main-content:has(.recipes-tab-plan){--content-max:720px}.planner{gap:var(--space-5)}.planner-header{grid-template-columns:44px auto 44px minmax(0,1fr);justify-items:start}.planner-week{padding-inline:var(--space-2);align-items:flex-start}.planner-actions{grid-column:auto;justify-self:end}.plan-day-past .plan-entry{opacity:.72}.plan-entry-button{cursor:grab}.plan-entry-button:active{cursor:grabbing}}@media (width>=1024px) and (pointer:fine){.planner{touch-action:auto}.plan-day-toggle{min-height:36px}.plan-day-add{width:32px;height:32px;font-size:18px}}@media (width>=1280px){.page-with-sidebar .main-content:has(.recipes-tab-plan){--content-max:1280px}.planner-days{gap:var(--space-2);grid-template-columns:repeat(7,minmax(0,1fr));align-items:stretch;display:grid}.planner-skeleton{height:320px}.plan-day{min-height:320px;padding:var(--space-2);flex-direction:column;display:flex}.plan-day-past:has(.plan-day-toggle[aria-expanded=false]){align-self:start;min-height:0}.plan-day-toggle{flex-wrap:wrap;row-gap:0}.plan-day-header{align-items:flex-start;min-height:36px}.plan-day-title{font-size:var(--text-caption)}.plan-entry-button{align-items:stretch;gap:var(--space-1);min-height:0;padding:var(--space-2);background:var(--surface-elevated);flex-direction:column}.plan-entry .plan-thumb{aspect-ratio:4/3;width:100%;height:auto}.plan-entry-title{font-size:var(--text-caption);-webkit-line-clamp:3}.plan-entry-meta{font-size:var(--text-meta)}.plan-day-nutrition{font-size:var(--text-meta);margin-top:auto}}@media (width>=1280px) and (width<=1439px){.plan-entry .plan-thumb{display:none}}
