.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#1f211d66;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;animation:backdropFadeIn .2s ease forwards}.sidebar-panel{width:280px;max-height:80vh;background-color:var(--color-surface, #fffdf8);border-radius:24px;border:1px solid var(--color-border);box-shadow:var(--shadow-premium, 0 12px 20px rgba(93,86,75,.08));padding:20px;display:flex;flex-direction:column;gap:16px;animation:sidebarOpen .42s cubic-bezier(.34,1.56,.64,1) forwards;overflow-y:auto}.sidebar-header{display:flex;align-items:center;justify-content:space-between}.sidebar-header-left{display:flex;align-items:center;gap:10px}.sidebar-icon-circle{width:32px;height:32px;border-radius:9999px;background-color:var(--color-accent-soft);display:flex;align-items:center;justify-content:center}.sidebar-title{font-size:17px;font-weight:600;color:var(--color-text)}.sidebar-close-btn{width:32px;height:32px;border-radius:9999px;border:none;background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-muted);transition:background-color .15s ease}.sidebar-close-btn:hover{background-color:var(--color-surface-muted, #efe7da)}.sidebar-nav{display:flex;flex-direction:column;gap:6px}.sidebar-nav-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:18px;background-color:var(--color-canvas);border:none;cursor:pointer;text-align:left;transition:background-color .15s ease;width:100%}.sidebar-nav-item:hover{background-color:var(--color-surface-muted, #efe7da)}.sidebar-nav-icon{width:36px;height:36px;border-radius:12px;background-color:var(--color-accent-soft);display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-nav-text{display:flex;flex-direction:column;flex:1;min-width:0}.sidebar-nav-title{font-size:15px;font-weight:600;color:var(--color-text)}.sidebar-nav-desc{font-size:12px;color:var(--color-muted)}@keyframes sidebarOpen{0%{opacity:0;transform:scale(.85)}60%{opacity:1;transform:scale(1.03)}to{opacity:1;transform:scale(1)}}.app-shell{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background-color:var(--color-background);position:relative}.app-topbar{position:sticky;top:0;z-index:90;display:grid;grid-template-columns:42px 42px minmax(0,1fr) 42px 42px;align-items:center;gap:6px;min-height:calc(58px + env(safe-area-inset-top));padding:calc(8px + env(safe-area-inset-top)) 12px 8px;background:color-mix(in srgb,var(--color-background) 92%,transparent);border-bottom:1px solid rgba(221,210,195,.78);box-shadow:0 4px 16px #5d564b0d;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.app-nav-btn,.app-title-btn{min-width:0;border:1px solid transparent;border-radius:9999px;background:transparent;color:var(--color-accent);font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .1s ease,background-color .15s ease,border-color .15s ease,opacity .15s ease}.app-nav-btn{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px}.app-nav-btn:disabled{color:var(--color-muted);cursor:default;opacity:.42}.app-nav-btn:not(:disabled):active,.app-title-btn:active{transform:scale(.95)}.app-nav-btn:not(:disabled):hover,.app-title-btn:hover,.app-nav-btn-active{background:var(--color-accent-soft);border-color:var(--color-border)}.app-title-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 12px;color:var(--color-text)}.app-title-mark{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:28px;height:28px;border-radius:10px;background:var(--color-accent);color:var(--color-canvas);font-size:11px;font-weight:800;letter-spacing:.3px}.app-title-text{min-width:0;overflow:hidden;color:var(--color-text);font-size:16px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.app-shell-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}@media(max-width:360px){.app-topbar{grid-template-columns:38px 38px minmax(0,1fr) 38px 38px;gap:4px;padding-left:8px;padding-right:8px}.app-nav-btn{width:38px;height:38px}.app-title-btn{height:38px;padding:0 8px}}.card{display:flex;flex-direction:column;gap:14px;padding:20px;border-radius:24px}.card-default{background-color:var(--color-surface, #fffdf8);border:1px solid var(--color-border);box-shadow:var(--shadow-soft, 0 6px 16px rgba(93,86,75,.05))}.card-subtle{background-color:var(--color-surface-subtle, #f1eadf);border:none;box-shadow:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:var(--radius-button, 16px);min-height:52px;padding:0 22px;font-size:15px;font-weight:700;letter-spacing:.1px;font-family:var(--font-family-sans);cursor:pointer;position:relative;transition:transform .1s ease,opacity .1s ease;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.btn:active:not(:disabled){transform:scale(.98);opacity:.82}.btn:disabled{cursor:not-allowed;opacity:1}.btn-primary{background-color:var(--color-accent);color:var(--color-canvas);box-shadow:var(--shadow-button, 0 4px 8px rgba(41,68,59,.12))}.btn-primary:hover:not(:disabled){background-color:var(--color-accent-hover, #1e322b)}.btn-primary:disabled{background-color:var(--color-disabled, #b0b7b2);box-shadow:none}.btn-secondary{background-color:var(--color-accent-soft);color:var(--color-accent);box-shadow:none}.btn-secondary:hover:not(:disabled){background-color:var(--color-accent-soft-hover, #cbd9ce)}.btn-secondary:disabled{background-color:var(--color-disabled, #b0b7b2);color:var(--color-canvas)}.btn-danger{background-color:var(--color-danger-bg);color:var(--color-danger-text, #8b2e23);box-shadow:none}.btn-danger:hover:not(:disabled){background-color:#e8c4bc}.btn-ghost{background:transparent;color:var(--color-accent);min-height:42px;box-shadow:none}.btn-ghost:hover:not(:disabled){background-color:var(--color-accent-soft)}.btn-block{width:100%}.btn-loading{pointer-events:none}.btn-spinner-wrapper{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.btn-text-hidden{visibility:hidden}.chip{display:inline-flex;align-items:center;gap:4px;padding:5px 10px;border-radius:9999px;font-size:12px;font-weight:600;letter-spacing:.1px;line-height:1;white-space:nowrap}.chip-default{background-color:var(--color-canvas);border:1px solid var(--color-border);color:var(--color-text)}.chip-accent{background-color:var(--color-accent-soft);border:none;color:var(--color-accent)}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:48px 24px;text-align:center}.error-state-icon{font-size:40px;color:var(--color-danger, #9a523f)}.error-state-title{font-size:18px;font-weight:700;color:var(--color-text)}.error-state-message{font-size:15px;color:var(--color-muted);line-height:22px;max-width:320px}.field-container{display:flex;flex-direction:column;gap:6px;width:100%}.field-label{font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--color-muted)}.field-input-wrapper{position:relative;display:flex;align-items:center;width:100%}.field-input{width:100%;background-color:var(--color-surface, #fffdf8);border:1px solid var(--color-border);border-radius:var(--radius-input, 16px);min-height:54px;padding:0 16px;font-size:16px;font-family:var(--font-family-sans);color:var(--color-text);outline:none;transition:border-color .2s ease,box-shadow .2s ease;box-sizing:border-box}.field-input-with-right{padding-right:48px}.field-input::placeholder{color:#6e685f99}.field-input:focus{border-color:var(--color-accent);border-width:1.5px;box-shadow:0 0 0 3px #29443b14}.field-input-error{border-color:var(--color-danger, #9a523f)}.field-right-element{position:absolute;right:14px;display:flex;align-items:center;justify-content:center}.field-error-message{font-size:13px;color:var(--color-danger, #9a523f);margin-top:4px;display:block}.account-page{padding:20px 20px 80px;max-width:var(--max-width-content);margin:0 auto}.account-loading{font-family:var(--font-family-sans);color:var(--color-muted);text-align:center;padding:60px 0;font-size:16px}.account-profile-container,.account-login-container{max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:16px;width:100%}.profile-card,.login-card{padding:20px;gap:16px;border-radius:24px}.profile-card{align-items:center;text-align:center}.profile-header{display:flex;flex-direction:column;align-items:center;gap:12px;border-bottom:none;padding-bottom:0;width:100%}.profile-avatar{display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;background-color:var(--color-accent-soft);color:var(--color-accent);width:58px;height:58px;border-radius:18px;border:1px solid var(--color-border);flex-shrink:0}.profile-details{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0;width:100%}.profile-name{font-family:var(--font-family-serif);font-size:22px;font-weight:400;line-height:28px;margin:0;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.profile-email{font-family:var(--font-family-sans);color:var(--color-muted);font-size:14px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.profile-form{display:flex;flex-direction:column;gap:14px;width:100%;margin-top:14px}.emoji-picker-section{display:flex;flex-direction:column;gap:8px;width:100%;align-items:center}.emoji-grid{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;width:100%}.emoji-option{display:flex;align-items:center;justify-content:center;aspect-ratio:1;background-color:var(--color-canvas);border:1px solid var(--color-border);border-radius:14px;width:44px;height:44px;font-size:24px;cursor:pointer;transition:transform .1s ease,background-color .15s ease,border-color .15s ease;outline:none;-webkit-tap-highlight-color:transparent;padding:0}.emoji-option:active:not(:disabled){transform:scale(.97);opacity:.72}.emoji-option.selected{background-color:var(--color-accent-soft);border-color:var(--color-accent)}.emoji-option:disabled{opacity:.5;cursor:not-allowed}.custom-emoji-input-wrapper{margin-top:10px;width:100%}.profile-save-actions{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;margin-top:8px}.profile-saved-message{font-family:var(--font-family-sans);font-size:14px;color:var(--color-muted);margin:0}.profile-section{display:flex;flex-direction:column;gap:8px;width:100%}.section-label{font-family:var(--font-family-sans);color:var(--color-muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;margin:0}.plan-badge-container{display:flex;flex-direction:column;gap:10px;background-color:var(--color-surface-subtle);padding:16px;border:none;border-radius:16px;text-align:left}.plan-chip{align-self:flex-start}.plan-description{font-family:var(--font-family-sans);font-size:14px;color:var(--color-text);line-height:1.5;margin:0}.account-signout-action{width:100%;margin-top:8px}.danger-zone-trigger{display:flex;justify-content:center;margin-top:8px}.text-danger-btn{background:transparent;border:none;font-family:var(--font-family-sans);font-size:14px;font-weight:600;color:var(--color-danger);cursor:pointer;padding:8px}.text-danger-btn:hover{text-decoration:underline}.delete-confirm-card{border:1px solid rgba(139,46,35,.15);gap:16px}.delete-title{color:var(--color-danger);font-size:18px;font-family:var(--font-family-serif);margin:0}.delete-warning{font-family:var(--font-family-sans);font-size:14px;color:var(--color-muted);line-height:1.5;margin:0}.delete-form{display:flex;flex-direction:column;gap:16px}.delete-actions{display:flex;gap:12px}.login-title{font-family:var(--font-family-serif);font-size:31px;font-weight:400;text-align:center;color:var(--color-text);margin:0}.login-subtitle{font-family:var(--font-family-sans);color:var(--color-muted);font-size:15px;text-align:center;margin:-6px 0 6px;line-height:1.5}.login-form{display:flex;flex-direction:column;gap:16px}.login-code-sent-msg{font-family:var(--font-family-sans);font-size:14px;color:var(--color-text);line-height:1.5;margin:0}.login-actions-group{display:flex;flex-direction:column;gap:8px}.sso-divider-container{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;margin:8px 0}.sso-divider-line{flex:1;height:1px;background-color:var(--color-border)}.sso-divider-text{font-family:var(--font-family-sans);font-size:13px;color:var(--color-muted);font-weight:600;text-transform:uppercase}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:48px 24px;text-align:center}.loading-state .spinner{width:32px;height:32px;border-width:3px;border-color:var(--color-border);border-top-color:var(--color-accent)}.loading-state-text{font-size:16px;color:var(--color-muted);line-height:24px}.install-prompt-card{padding:16px;max-width:480px;margin:16px auto;gap:12px;position:relative;width:100%}.install-prompt-header{display:flex;align-items:flex-start;gap:12px}.install-prompt-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;height:28px}.install-prompt-text-container{flex:1;min-width:0}.install-prompt-title{font-family:var(--font-family-serif);font-size:16px;font-weight:400;margin:0 0 2px;color:var(--color-text)}.install-prompt-desc{font-family:var(--font-family-sans);font-size:13px;color:var(--color-muted);margin:0;line-height:1.4}.install-prompt-close{background:transparent;border:none;color:var(--color-muted);cursor:pointer;padding:2px;display:flex;align-items:center;justify-content:center;border-radius:9999px;transition:background-color .1s ease}.install-prompt-close:hover{background-color:var(--color-surface-muted)}.install-prompt-actions{display:flex;justify-content:flex-end}.install-ios-instructions{font-family:var(--font-family-sans);font-size:14px;color:var(--color-text);background:var(--color-background);padding:10px 14px;border-radius:12px;width:100%;margin:0;line-height:1.4}.share-icon{font-weight:700;font-size:16px}.extract-form{display:flex;flex-direction:column;gap:14px;width:100%;max-width:480px;margin:0 auto}.extract-camera-btn{background:none;border:none;padding:4px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:opacity .1s ease;-webkit-tap-highlight-color:transparent}.extract-camera-btn:hover{opacity:.8}.extract-camera-btn:active{opacity:.6}.extract-result{max-width:var(--max-width-content);margin:32px auto;padding:0 16px;display:flex;flex-direction:column;gap:20px}.result-actions-top{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}.duplicate-actions{display:flex;align-items:center;gap:10px;background-color:var(--color-danger-bg);padding:8px 12px;border-radius:var(--radius-card, 24px);border:1px solid rgba(139,46,35,.1)}.duplicate-msg{font-family:var(--font-family-sans);font-size:13px;font-weight:600;color:var(--color-danger)}.result-banner{padding:12px 16px;border-radius:16px;font-family:var(--font-family-sans);font-size:14px;line-height:1.4}.error-banner{background-color:var(--color-danger-bg);color:var(--color-danger);border:1px solid rgba(139,46,35,.1)}.source-images-section{margin-bottom:var(--space-xl)}.source-image-grid{display:grid;gap:var(--space-sm);grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.offline-banner{width:100%;max-width:var(--max-width-content);background-color:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--border-radius-md);padding:12px 16px;margin-bottom:16px;font-size:14px;color:var(--color-text);text-align:center}.offline-banner a{color:var(--color-accent);text-decoration:underline}.extract-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:calc(100vh - 48px);min-height:calc(100dvh - 48px);padding:24px}.hero-section{text-align:center;margin-bottom:32px;display:flex;flex-direction:column;gap:16px}.hero-title{font-family:var(--font-family-serif);font-size:40px;font-weight:400;line-height:48px;letter-spacing:-1.4px;color:var(--color-text);max-width:480px;margin:0 auto}.needs-retry-card{max-width:480px;width:100%;text-align:center;gap:20px}.retry-title{font-family:var(--font-family-serif);font-size:22px;font-weight:400;letter-spacing:-.4px}.retry-message{font-size:15px;color:var(--color-muted);line-height:22px}.retry-diagnostics{background-color:var(--color-canvas);padding:16px;border-radius:16px;border:1px solid var(--color-border);display:flex;flex-direction:column;gap:8px}.diagnostic-text{font-size:14px;color:var(--color-text)}.retry-actions{display:flex;flex-direction:column;gap:12px}.failure-container{max-width:480px;width:100%;display:flex;flex-direction:column;gap:24px}.quota-upgrade-card{text-align:center;gap:16px}.quota-upgrade-card h3{font-family:var(--font-family-serif);font-size:20px;font-weight:400}.quota-upgrade-card p{font-size:14px;color:var(--color-muted)}.upgrade-actions{display:flex;flex-direction:column;gap:8px;width:100%}@media(max-width:480px){.hero-title{font-size:32px;line-height:38px}}.household-page{margin:32px auto}.household-header{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.household-header h1,.household-empty-card h1{font-family:var(--font-family-serif);font-size:34px;font-weight:500;line-height:40px;margin:0}.household-header p,.household-empty-card p,.household-card p{color:var(--color-muted);font-family:var(--font-family-sans);line-height:22px;margin:0}.household-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.household-card,.household-empty-card{display:flex;flex-direction:column;gap:16px}.household-card h2,.household-card h3{font-family:var(--font-family-serif);font-weight:500;margin:0}.household-card-header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.household-member-list,.household-pending-list{display:flex;flex-direction:column;gap:10px}.household-member-row,.household-pending-row,.household-invite-share{align-items:center;background:var(--color-surface-subtle);border-radius:16px;display:flex;gap:12px;padding:12px}.household-avatar{align-items:center;background:var(--color-accent-soft);border-radius:999px;color:var(--color-accent);display:flex;flex:0 0 auto;font-weight:800;height:44px;justify-content:center;width:44px}.household-member-copy{display:flex;flex:1;flex-direction:column;gap:3px;min-width:0}.household-member-copy strong,.household-pending-row span:first-child,.household-invite-share strong{color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.household-member-copy span,.household-pending-row span,.household-invite-share span{color:var(--color-muted);font-size:13px}.household-form{align-items:flex-start;display:flex;gap:10px}.household-form .field-container{flex:1}.household-invite-share{justify-content:space-between}.household-invite-share div{display:flex;flex-direction:column;gap:4px}.household-invite-share code{color:var(--color-accent);font-family:var(--font-family-mono, monospace);font-size:14px;word-break:break-all}.household-loading{color:var(--color-muted);font-family:var(--font-family-sans)}.household-footer-actions{display:flex;justify-content:flex-end;margin-top:16px}@media(max-width:720px){.household-form,.household-member-row,.household-pending-row,.household-invite-share{align-items:stretch;flex-direction:column}}.install-page{padding:20px 20px 80px;max-width:var(--max-width-content);margin:0 auto}.install-header{text-align:center;margin-bottom:32px}.install-title{font-family:var(--font-family-serif);font-size:31px;font-weight:400;line-height:36px;letter-spacing:-.8px;color:var(--color-text);margin:0 0 8px}.install-subtitle{font-family:var(--font-family-sans);color:var(--color-muted);font-size:15px;line-height:1.5;margin:0}.install-steps-container{display:flex;flex-direction:column;gap:16px}.install-step-card{padding:20px;gap:14px}.step-card-title{font-family:var(--font-family-serif);font-size:20px;font-weight:400;color:var(--color-text);margin:0 0 4px}.step-list-ordered{padding-left:20px;display:flex;flex-direction:column;gap:10px;margin:0}.step-list-ordered li{font-family:var(--font-family-sans);font-size:15px;color:var(--color-text);line-height:1.5}.share-icon-large{font-weight:700;background-color:var(--color-surface-subtle);padding:2px 6px;border-radius:var(--radius-sm, 12px);font-size:14px}.step-card-footer-note{font-family:var(--font-family-sans);font-size:12px;color:var(--color-muted);line-height:1.5;background-color:var(--color-surface-subtle);padding:12px;border-radius:12px;margin:0}.library-page{padding:20px;max-width:var(--max-width-content);margin:0 auto}.library-header{margin-bottom:24px}.library-title{font-family:var(--font-family-serif);font-size:31px;font-weight:400;line-height:36px;letter-spacing:-.8px;color:var(--color-text);margin:0 0 6px}.library-subtitle{font-family:var(--font-family-sans);color:var(--color-muted);font-size:15px;margin:0}.library-controls{margin-bottom:24px}.library-empty-card{display:flex;flex-direction:column;align-items:center;gap:20px;padding:48px 24px;background-color:var(--color-surface);border:1px dashed var(--color-border);border-radius:24px;text-align:center}.library-empty{font-family:var(--font-family-sans);font-size:16px;color:var(--color-muted);margin:0}.recipes-grid{display:flex;flex-direction:column;gap:12px}.recipe-grid-link{color:inherit;display:block;text-decoration:none}.recipe-grid-card{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:16px 20px;border-radius:16px;cursor:pointer;background-color:var(--color-surface);border:1px solid var(--color-border);transition:transform .1s ease,box-shadow .1s ease}.recipe-grid-link:hover .recipe-grid-card{transform:translateY(-1px);box-shadow:var(--shadow-soft)}.recipe-card-content{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}.recipe-grid-header{display:flex;align-items:center;gap:12px}.recipe-grid-host{font-family:var(--font-family-sans);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--color-muted)}.sync-status{font-family:var(--font-family-sans);font-size:10px;font-weight:700;padding:2px 6px;border-radius:9999px;text-transform:uppercase}.sync-status.synced{color:var(--color-accent);background-color:var(--color-accent-soft)}.sync-status-btn{font-family:var(--font-family-sans);font-size:10px;font-weight:700;padding:2px 8px;border-radius:9999px;border:none;cursor:pointer;text-transform:uppercase;transition:opacity .1s ease}.sync-status-btn.local{color:var(--color-muted);background-color:var(--color-canvas);border:1px solid var(--color-border)}.sync-status-btn.local:hover{background-color:var(--color-surface-muted)}.sync-status-btn.failed{color:var(--color-danger);background-color:var(--color-danger-bg)}.recipe-grid-title{font-family:var(--font-family-serif);font-size:19px;font-weight:400;color:var(--color-text);margin:0;line-height:24px}.recipe-grid-meta{display:flex;gap:6px;flex-wrap:wrap}.recipe-grid-footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px;gap:12px}.recipe-grid-date{font-family:var(--font-family-sans);font-size:12px;color:var(--color-muted)}.recipe-delete-btn{font-family:var(--font-family-sans);font-size:12px;font-weight:700;color:var(--color-danger);background:transparent;border:none;cursor:pointer;padding:4px 8px;border-radius:8px}.recipe-delete-btn:hover{background-color:var(--color-danger-bg)}.recipe-card-arrow{display:flex;align-items:center;justify-content:center;padding-left:12px;flex-shrink:0}.recipe-detail-page{max-width:var(--max-width-content);margin:32px auto;padding:0 20px;display:flex;flex-direction:column;gap:20px}.detail-actions-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.detail-actions-group{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.recipe-action-message{background-color:var(--color-accent-soft);border:1px solid rgba(111,92,255,.18);border-radius:16px;color:var(--color-text);font-family:var(--font-family-sans);font-size:14px;line-height:20px;padding:12px 16px}.recipe-loading{font-family:var(--font-family-sans);color:var(--color-muted);text-align:center;padding:60px 0;font-size:16px}.error-actions{display:flex;justify-content:center;margin-top:16px}@media print{body *{visibility:hidden}.print-target,.print-target *{visibility:visible}.print-target{position:absolute;left:0;top:0;width:100%;border:none!important;box-shadow:none!important;padding:0!important;background:transparent!important}.print-hide{display:none!important}}.recipe-card{padding:20px;gap:18px}.recipe-header{border-bottom:none;padding-bottom:0;display:flex;flex-direction:column;gap:12px}.recipe-title{font-family:var(--font-family-serif);font-size:31px;font-weight:400;line-height:36px;letter-spacing:-.8px;color:var(--color-text);margin:0}.recipe-metadata{display:flex;gap:8px;flex-wrap:wrap}.recipe-source-link{color:inherit;text-decoration:none}.recipe-source-link:hover{text-decoration:underline}.section-title{font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--color-muted);border-bottom:none;margin-bottom:12px;margin-top:10px}.recipe-ingredients-section{display:flex;flex-direction:column}.ingredient-group{margin-bottom:12px}.ingredient-group-title{font-family:var(--font-family-sans);font-size:13px;font-weight:700;color:var(--color-muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px;margin-top:6px}.ingredients-list{list-style:none;display:flex;flex-direction:column;gap:8px;padding:0;margin:0}.ingredient-item{font-family:var(--font-family-sans);font-size:16px;padding-left:16px;position:relative;line-height:22px;color:var(--color-text)}.ingredient-item:before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:9999px;background-color:var(--color-accent)}.steps-list{list-style:none;display:flex;flex-direction:column;gap:16px;padding:0;margin:0}.step-item{display:flex;gap:16px;align-items:flex-start}.step-number{display:flex;align-items:center;justify-content:center;background-color:var(--color-accent-soft);color:var(--color-accent);font-family:var(--font-family-sans);font-weight:700;font-size:14px;width:28px;height:28px;border-radius:50%;flex-shrink:0;margin-top:2px}.step-text{font-family:var(--font-family-sans);font-size:16px;line-height:24px;margin:0;color:var(--color-text)}.recipe-warnings-section{background-color:var(--color-surface-subtle);border-radius:16px;padding:16px}.warnings-title{font-family:var(--font-family-serif);font-size:14px;font-weight:700;margin:0 0 8px}.warnings-list{padding-left:20px;display:flex;flex-direction:column;gap:6px;margin:0}.warning-item{font-family:var(--font-family-sans);font-size:13px;color:var(--color-muted)}.recipe-header-label{font-family:var(--font-family-sans);font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--color-muted)}.recipe-nutrition-section{display:flex;flex-direction:column}.nutrition-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.nutrition-card{display:flex;flex-direction:column;gap:6px;padding:16px;border-radius:20px}.nutrition-card-label{font-family:var(--font-family-sans);font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--color-muted)}.nutrition-card-value{font-family:var(--font-family-sans);font-size:22px;font-weight:700;line-height:28px;letter-spacing:-.4px;color:var(--color-text)}.recipe-notes-card{display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:24px}.recipe-notes-label{font-family:var(--font-family-sans);font-size:12px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--color-muted)}.recipe-notes-text{font-family:var(--font-family-sans);font-size:16px;line-height:24px;color:var(--color-text);margin:0}.source-images-section{margin-bottom:24px}.source-image-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.source-image-thumb{aspect-ratio:3 / 4;border:1px solid var(--color-border);border-radius:16px;object-fit:cover;width:100%}.recipe-editor-backdrop{align-items:center;background:#231f1b6b;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:20px;position:fixed;z-index:50}.recipe-editor-modal{max-height:min(860px,calc(100vh - 40px));max-width:720px;overflow:auto;width:100%}.recipe-editor-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.recipe-editor-header h2{font-family:var(--font-family-serif);font-size:28px;font-weight:500;margin:0}.recipe-editor-close{align-items:center;background:transparent;border:0;border-radius:999px;color:var(--color-muted);cursor:pointer;display:inline-flex;height:44px;justify-content:center;width:44px}.recipe-editor-error{background:var(--color-danger-bg);border:1px solid rgba(139,46,35,.1);border-radius:12px;color:var(--color-danger);font-size:14px;margin-bottom:14px;padding:10px 12px}.recipe-editor-field{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.recipe-editor-field span{color:var(--color-muted);font-family:var(--font-family-sans);font-size:12px;font-weight:700;letter-spacing:1.1px;text-transform:uppercase}.recipe-editor-field input,.recipe-editor-field textarea{background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;color:var(--color-text);font:inherit;line-height:22px;padding:12px 14px;width:100%}.recipe-editor-field textarea{resize:vertical}.recipe-editor-actions{display:flex;gap:10px;justify-content:flex-end}.pricing-page{padding:20px 20px 80px;max-width:var(--max-width-content);margin:0 auto}.pricing-header{text-align:center;margin-bottom:32px}.pricing-title{font-family:var(--font-family-serif);font-size:40px;font-weight:400;line-height:44px;letter-spacing:-1.4px;margin:0 0 10px;color:var(--color-text)}.pricing-subtitle{font-family:var(--font-family-sans);color:var(--color-muted);font-size:15px;line-height:1.5;margin:0}.pricing-grid{display:flex;flex-direction:column;gap:16px;width:100%}.usage-summary-card,.family-manage-card{margin-bottom:20px}.usage-summary-card h2,.family-manage-card h2{font-family:var(--font-family-serif);font-size:24px;font-weight:500;margin:0 0 12px}.usage-summary-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.usage-summary-grid div{background:var(--color-surface);border-radius:16px;display:flex;flex-direction:column;gap:4px;padding:14px}.usage-summary-grid span,.family-manage-card p{color:var(--color-muted);font-family:var(--font-family-sans);font-size:14px;line-height:20px}.usage-summary-grid strong{color:var(--color-text);font-family:var(--font-family-sans);font-size:18px}.family-manage-card{display:flex;flex-direction:column;gap:12px;margin-top:20px}.pricing-card{padding:20px;position:relative;border-radius:24px}.current-plan{border-color:var(--color-accent);border-width:1.5px;box-shadow:var(--shadow-premium)}.current-plan-badge-chip{position:absolute;top:16px;right:16px}.plan-name{font-family:var(--font-family-serif);font-size:24px;font-weight:400;margin:0 0 8px;color:var(--color-text)}.plan-price{display:flex;align-items:baseline;margin-bottom:16px}.price-symbol{font-family:var(--font-family-serif);font-size:20px;font-weight:400;color:var(--color-muted)}.price-amount{font-family:var(--font-family-serif);font-size:36px;font-weight:400;line-height:1;color:var(--color-text)}.price-period{font-family:var(--font-family-sans);font-size:14px;color:var(--color-muted);margin-left:4px}.plan-features{list-style:none;display:flex;flex-direction:column;gap:10px;margin:0 0 24px;padding:0}.plan-features li{font-family:var(--font-family-sans);font-size:14px;color:var(--color-text);position:relative;padding-left:20px;line-height:20px}.plan-features li:before{content:"";position:absolute;left:2px;top:6px;width:7px;height:7px;border-radius:9999px;background-color:var(--color-accent)}.pricing-upgrade-info{display:flex;flex-direction:column;gap:8px}.upgrade-note{font-family:var(--font-family-sans);font-size:11px;color:var(--color-muted);text-align:center;line-height:1.4;margin:0}:root{--color-accent: #29443b;--color-accent-hover: #1e322b;--color-accent-soft: #dde7df;--color-accent-soft-hover: #cbd9ce;--color-background: #f4efe7;--color-border: #ddd2c3;--color-canvas: #fbf7f0;--color-surface: #fffdf8;--color-surface-muted: #efe7da;--color-surface-subtle: #f1eadf;--color-muted: #6e685f;--color-text: #1f211d;--color-danger: #9a523f;--color-danger-bg: #f2d8d2;--color-danger-text: #8b2e23;--color-danger-hover: #72241b;--color-disabled: #b0b7b2;--color-white: #ffffff;--font-family-serif: Georgia, Cambria, "Times New Roman", Times, serif;--font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 20px;--space-xxl: 24px;--space-xxxl: 32px;--max-width-content: 720px;--max-width-grid: 1100px;--border-radius-sm: 8px;--border-radius-md: 16px;--border-radius-lg: 24px;--radius-card: 24px;--radius-button: 16px;--radius-input: 16px;--radius-pill: 9999px;--radius-sm: 12px;--box-shadow: 0 6px 16px rgba(93, 86, 75, .05);--box-shadow-button: 0 4px 8px rgba(41, 68, 59, .12);--shadow-soft: 0 6px 16px rgba(93, 86, 75, .05);--shadow-premium: 0 12px 20px rgba(93, 86, 75, .08);--shadow-button: 0 4px 8px rgba(41, 68, 59, .12);--transition-fast: .15s ease;--transition-normal: .25s ease}*{box-sizing:border-box;margin:0;padding:0}html,body{background-color:var(--color-background);color:var(--color-text);font-family:var(--font-family-sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;padding-bottom:env(safe-area-inset-bottom)}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-serif);color:var(--color-text);font-weight:700;line-height:1.25}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes sidebarOpen{0%{opacity:0;transform:scale(.85)}60%{opacity:1;transform:scale(1.03)}80%{transform:scale(.98)}to{transform:scale(1)}}@keyframes sidebarClose{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes backdropFadeIn{0%{opacity:0}to{opacity:1}}@keyframes backdropFadeOut{0%{opacity:1}to{opacity:0}}.animate-fade-in{animation:fadeIn var(--transition-normal) forwards}.spinner{border:3px solid var(--color-border);border-radius:50%;border-top-color:var(--color-accent);width:20px;height:20px;animation:spin .8s linear infinite;display:inline-block}.container{width:100%;max-width:var(--max-width-content);margin:0 auto;padding:24px 16px}.container-wide{width:100%;max-width:var(--max-width-grid);margin:0 auto;padding:24px 16px}@media(prefers-reduced-motion:reduce){*{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}
