.driver-active .driver-overlay,.driver-active *{pointer-events:none}.driver-active .driver-active-element,.driver-active .driver-active-element *,.driver-popover,.driver-popover *{pointer-events:auto}@keyframes animate-fade-in{0%{opacity:0}to{opacity:1}}.driver-fade .driver-overlay{animation:animate-fade-in .2s ease-in-out}.driver-fade .driver-popover{animation:animate-fade-in .2s}.driver-popover{all:unset;box-sizing:border-box;color:#2d2d2d;margin:0;padding:15px;border-radius:5px;min-width:250px;max-width:300px;box-shadow:0 1px 10px #0006;z-index:1000000000;position:fixed;top:0;right:0;background-color:#fff}.driver-popover *{font-family:Helvetica Neue,Inter,ui-sans-serif,"Apple Color Emoji",Helvetica,Arial,sans-serif}.driver-popover-title{font:19px/normal sans-serif;font-weight:700;display:block;position:relative;line-height:1.5;zoom:1;margin:0}.driver-popover-close-btn{all:unset;position:absolute;top:0;right:0;width:32px;height:28px;cursor:pointer;font-size:18px;font-weight:500;color:#d2d2d2;z-index:1;text-align:center;transition:color;transition-duration:.2s}.driver-popover-close-btn:hover,.driver-popover-close-btn:focus{color:#2d2d2d}.driver-popover-title[style*=block]+.driver-popover-description{margin-top:5px}.driver-popover-description{margin-bottom:0;font:14px/normal sans-serif;line-height:1.5;font-weight:400;zoom:1}.driver-popover-footer{margin-top:15px;text-align:right;zoom:1;display:flex;align-items:center;justify-content:space-between}.driver-popover-progress-text{font-size:13px;font-weight:400;color:#727272;zoom:1}.driver-popover-footer button{all:unset;display:inline-block;box-sizing:border-box;padding:3px 7px;text-decoration:none;text-shadow:1px 1px 0 #fff;background-color:#fff;color:#2d2d2d;font:12px/normal sans-serif;cursor:pointer;outline:0;zoom:1;line-height:1.3;border:1px solid #ccc;border-radius:3px}.driver-popover-footer .driver-popover-btn-disabled{opacity:.5;pointer-events:none}:not(body):has(>.driver-active-element){overflow:hidden!important}.driver-no-interaction,.driver-no-interaction *{pointer-events:none!important}.driver-popover-footer button:hover,.driver-popover-footer button:focus{background-color:#f7f7f7}.driver-popover-navigation-btns{display:flex;flex-grow:1;justify-content:flex-end}.driver-popover-navigation-btns button+button{margin-left:4px}.driver-popover-arrow{content:"";position:absolute;border:5px solid #fff}.driver-popover-arrow-side-over{display:none}.driver-popover-arrow-side-left{left:100%;border-right-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-right{right:100%;border-left-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-top{top:100%;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.driver-popover-arrow-side-bottom{bottom:100%;border-left-color:transparent;border-top-color:transparent;border-right-color:transparent}.driver-popover-arrow-side-center{display:none}.driver-popover-arrow-side-left.driver-popover-arrow-align-start,.driver-popover-arrow-side-right.driver-popover-arrow-align-start{top:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-start,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-start{left:15px}.driver-popover-arrow-align-end.driver-popover-arrow-side-left,.driver-popover-arrow-align-end.driver-popover-arrow-side-right{bottom:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-end,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-end{right:15px}.driver-popover-arrow-side-left.driver-popover-arrow-align-center,.driver-popover-arrow-side-right.driver-popover-arrow-align-center{top:50%;margin-top:-5px}.driver-popover-arrow-side-top.driver-popover-arrow-align-center,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-center{left:50%;margin-left:-5px}.driver-popover-arrow-none{display:none}:root,:root[data-theme=dark]{--bg: #0c1117;--bg-elev: #11161d;--surface: #161b22;--surface-2: #1c232c;--surface-3: #242d38;--text: #e6e8eb;--text-strong: #f5f7fa;--muted: #8b95a3;--muted-strong: #b0b9c5;--border: #232a35;--border-strong: #2d3744;--primary: #e07a5f;--primary-hover: #ec8a70;--primary-soft: rgba(224, 122, 95, .16);--on-primary: #1a0d09;--accent: #81b29a;--accent-soft: rgba(129, 178, 154, .16);--warning: #f2cc8f;--warning-soft: rgba(242, 204, 143, .16);--on-warning: #2a1f08;--danger: #e0586f;--danger-soft: rgba(224, 88, 111, .16);--success: #81b29a;--focus-ring: 0 0 0 3px rgba(224, 122, 95, .35);--shadow-1: 0 1px 2px rgba(0, 0, 0, .35);--shadow-2: 0 4px 14px rgba(0, 0, 0, .4);--shadow-3: 0 12px 32px rgba(0, 0, 0, .5);--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--radius-pill: 999px;--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;--content-max: 1200px;--scrim: rgba(0, 0, 0, .35);--scrim-strong: rgba(0, 0, 0, .5);--topbar-h: 61px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;font-family:var(--font-sans);color-scheme:dark}:root[data-theme=light]{--bg: #fafaf7;--bg-elev: #ffffff;--surface: #ffffff;--surface-2: #f5f1ea;--surface-3: #ece6dc;--text: #1f2933;--text-strong: #0f1620;--muted: #6b7480;--muted-strong: #4a5260;--border: #e8e2d4;--border-strong: #d6cebe;--primary: #d4623e;--primary-hover: #c25735;--primary-soft: rgba(212, 98, 62, .12);--on-primary: #ffffff;--accent: #5a8a72;--accent-soft: rgba(90, 138, 114, .12);--warning: #c89a3c;--warning-soft: rgba(200, 154, 60, .14);--on-warning: #2a1f08;--danger: #c94557;--danger-soft: rgba(201, 69, 87, .1);--success: #5a8a72;--focus-ring: 0 0 0 3px rgba(212, 98, 62, .25);--shadow-1: 0 1px 2px rgba(31, 41, 51, .06);--shadow-2: 0 4px 14px rgba(31, 41, 51, .08);--shadow-3: 0 12px 32px rgba(31, 41, 51, .12);color-scheme:light}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{font-size:15px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-strong);letter-spacing:-.01em}h1{font-size:28px;font-weight:700}h2{font-size:18px;font-weight:600}h3{font-size:15px;font-weight:600}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover)}button{font-family:inherit;font-size:14px;font-weight:500;line-height:1.2;cursor:pointer;border:1px solid transparent;background:var(--surface-2);color:var(--text);padding:9px 14px;border-radius:var(--radius-sm);transition:background-color .12s ease,color .12s ease,border-color .12s ease,transform .12s ease,box-shadow .12s ease}button:hover{background:var(--surface-3)}button:active{transform:translateY(1px)}button:focus-visible{outline:none;box-shadow:var(--focus-ring)}button.primary{background:var(--primary);color:var(--on-primary);font-weight:600;border-color:transparent;box-shadow:var(--shadow-1)}button.primary:hover{background:var(--primary-hover)}button:disabled{opacity:.5;cursor:not-allowed;transform:none}.icon-btn{width:38px;height:38px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);background:transparent;color:var(--muted-strong);border:1px solid transparent}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn:active{transform:translateY(1px)}input,textarea,select{font-family:inherit;font-size:15px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:11px 14px;width:100%;text-overflow:ellipsis;transition:border-color .12s ease,box-shadow .12s ease}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:var(--focus-ring)}.input-error,input.input-error:focus,textarea.input-error:focus{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.field-error{margin:var(--space-1) 0 0;font-size:13px;color:var(--danger)}input:disabled,textarea:disabled,select:disabled{opacity:.6}.btn-primary{background:var(--primary);color:var(--on-primary);font-weight:600;border-color:transparent;box-shadow:var(--shadow-1)}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--surface-2);color:var(--text);border-color:var(--border)}.btn-secondary:hover{background:var(--surface-3)}.btn-ghost{background:transparent;color:var(--muted-strong);border-color:transparent}.btn-ghost:hover{background:var(--surface-2);color:var(--text)}.btn-danger{background:var(--danger);color:#fff;font-weight:600;border-color:transparent}.btn-danger:hover{filter:brightness(1.08);background:var(--danger)}.link-button{background:none;border:none;color:var(--primary);cursor:pointer;padding:0;font:inherit}.link-button:hover{color:var(--primary-hover);background:none;text-decoration:underline}.text-display{font-size:28px;font-weight:700;letter-spacing:-.01em;color:var(--text-strong)}.text-title{font-size:22px;font-weight:650;letter-spacing:-.01em;color:var(--text-strong)}.text-heading{font-size:18px;font-weight:600;color:var(--text-strong)}.text-body{font-size:15px;font-weight:400}.text-label{font-size:13px;font-weight:500}.text-caption{font-size:12px;font-weight:400;color:var(--muted)}.stack-1{margin-top:var(--space-1)}.stack-2{margin-top:var(--space-2)}.stack-3{margin-top:var(--space-3)}.stack-4{margin-top:var(--space-4)}.stack-6{margin-top:var(--space-6)}.text-center{text-align:center}.text-danger{color:var(--danger)}.btn-block{width:100%}.inline-block{display:inline-block}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.suspense-fallback{padding:var(--space-6)}.link-button-muted{color:var(--muted)}.link-button-muted:hover{color:var(--text)}.auth-success{text-align:center;color:var(--accent);margin:0 0 var(--space-3)}.auth-success-strong{font-weight:600}.app-container{display:flex;flex-direction:column;height:100%;background:var(--bg)}.top-bar{padding:12px 16px;background:var(--bg-elev);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px)}.top-bar-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);width:100%;max-width:var(--content-max);margin:0 auto}.top-bar-actions{display:flex;align-items:center;gap:4px}.top-nav{display:flex;align-items:center;gap:var(--space-1);flex:1;margin-left:var(--space-6)}.top-nav button{display:inline-flex;align-items:center;gap:var(--space-2);background:transparent;border:none;color:var(--muted-strong);font-size:14px;font-weight:500;padding:8px 14px;border-radius:var(--radius-pill)}.top-nav button:hover{background:var(--surface-2);color:var(--text)}.top-nav button.active{color:var(--primary);font-weight:600;background:var(--primary-soft)}@media (min-width: 900px){.top-bar{padding:12px 24px}}.profile-avatar{width:36px;height:36px;padding:0;border-radius:50%;background:var(--surface-2);color:var(--text-strong);font-weight:600;font-size:13px;letter-spacing:.02em;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border)}.profile-avatar:hover{background:var(--surface-3)}.profile-menu{position:relative}.profile-menu-pop{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:var(--space-1);z-index:60;display:flex;flex-direction:column;animation:fade-in .12s ease}.profile-menu-name{padding:8px 12px 6px;font-size:12px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:var(--space-1)}.profile-menu-pop button{display:flex;align-items:center;gap:var(--space-2);width:100%;text-align:left;background:transparent;border:none;color:var(--text);font-size:14px;padding:9px 12px;border-radius:var(--radius-sm)}.profile-menu-pop button:hover{background:var(--surface-2)}.profile-menu-pop button svg{color:var(--muted);flex-shrink:0}.profile-menu-pop button.profile-menu-danger,.profile-menu-pop button.profile-menu-danger svg{color:var(--danger)}.profile-menu-sep{height:1px;background:var(--border);margin:var(--space-1) 0}.add-form{display:flex;gap:8px;margin-bottom:14px;align-items:stretch}.add-input-wrap{flex:1;min-width:0;position:relative}.add-typeahead{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-2);z-index:5;overflow:hidden}.add-typeahead-row{display:flex;align-items:center;justify-content:space-between;width:100%;padding:9px 12px;background:transparent;border:none;border-bottom:1px solid var(--border);color:var(--text);font-size:13px;text-align:left}.add-typeahead-row:last-child{border-bottom:none}.add-typeahead-row span{color:var(--muted)}.add-typeahead-row strong{color:var(--text-strong);font-weight:600}.add-typeahead-exact{background:var(--warning-soft)}.add-typeahead-add{justify-content:flex-start;gap:6px;border-left:2px solid var(--accent, #4a9)}.add-typeahead-add .muted{color:var(--muted);font-size:12px}button.add-typeahead-row{cursor:pointer}button.add-typeahead-row:hover{background:var(--surface-2)}div.add-typeahead-row{cursor:default}div.add-typeahead-row:hover{background:var(--surface-2)}.add-typeahead-row-split{padding:0}.add-typeahead-goto{flex:1;display:flex;align-items:center;gap:8px;padding:9px 12px;background:transparent;border:none;color:var(--text);font-size:13px;cursor:pointer;text-align:left}.add-typeahead-goto:hover{background:var(--surface-2)}.add-typeahead-need-more{flex-shrink:0;padding:3px 10px;margin:0 10px;background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:12px;font-size:11px;cursor:pointer;white-space:nowrap}.add-typeahead-need-more:hover{border-color:var(--warning, #f59e0b);color:var(--warning, #f59e0b)}.add-typeahead-need-more.is-active{border-color:var(--warning, #f59e0b);color:var(--warning, #f59e0b);background:var(--warning-soft)}.add-typeahead-out{flex-shrink:0;display:inline-flex;align-items:center;gap:3px;padding:3px 10px;margin:0 10px 0 0;background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:12px;font-size:11px;cursor:pointer;white-space:nowrap}.add-typeahead-out:hover{border-color:var(--danger);color:var(--danger)}.admin-accordion{border:1px solid var(--border);border-radius:var(--radius, 8px);overflow:hidden;margin-top:12px}.admin-accordion-item{border-bottom:1px solid var(--border)}.admin-accordion-item:last-child{border-bottom:none}.admin-accordion-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:10px 14px;background:transparent;border:none;text-align:left;cursor:pointer;font-size:13px;color:var(--text);gap:8px}.admin-accordion-trigger:hover{background:var(--surface-2)}.admin-accordion-trigger.is-open{background:var(--surface);font-weight:600}.admin-accordion-name{flex:1}.admin-accordion-chevron{color:var(--muted);font-size:12px;flex-shrink:0}.admin-accordion-body{padding:16px;border-top:1px solid var(--border);background:var(--bg)}.brand{display:inline-flex;align-items:center;gap:10px;color:var(--text-strong);font-weight:700;text-decoration:none}.brand:hover{color:var(--text-strong)}.brand-name{font-size:19px;letter-spacing:-.01em}.beta-badge{font-size:9px;font-weight:700;letter-spacing:.06em;color:var(--on-primary);background:var(--primary);border-radius:4px;padding:2px 5px;line-height:1;align-self:center;margin-left:2px;opacity:.85}.bug-report-btn{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:500;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:5px 10px;cursor:pointer;transition:color .12s,background .12s;white-space:nowrap}.bug-report-btn:hover{color:var(--text);background:var(--surface-3)}@media (max-width: 400px){.bug-report-btn span{display:none}.bug-report-btn{padding:7px}}.brand-mark{width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,var(--primary),var(--primary-hover));color:var(--on-primary);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-family:var(--font-display);font-size:17px;box-shadow:var(--shadow-1),inset 0 1px #ffffff2e}.brand-mark-lg{width:56px;height:56px;border-radius:16px;font-size:28px}.brand-stack{text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:24px}.brand-stack h1{margin:0}.brand-tagline{margin:0;font-size:13px}.content{flex:1;overflow-y:auto;padding:var(--space-4) var(--space-4) 120px}.content-inner{width:100%;max-width:var(--content-max);margin:0 auto}@media (min-width: 900px){.content{padding:var(--space-6) var(--space-8) 120px}}.page-header{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:4px 0 14px}.muted{color:var(--muted);font-size:13px}.bottom-nav{width:100%;background:var(--bg-elev);border-top:1px solid var(--border);display:flex;justify-content:space-around;padding:8px 8px calc(8px + env(safe-area-inset-bottom));flex-shrink:0}.bottom-nav button{background:transparent;color:var(--muted);flex:1;font-size:12px;font-weight:500;padding:8px 4px;border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;gap:4px;border:none}.bottom-nav button:hover{background:var(--surface-2)}.bottom-nav button.active{color:var(--primary);font-weight:600;background:var(--primary-soft)}.section{margin-bottom:22px}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;gap:8px}.section-header h2{margin:0}.board-occasion{margin:0 0 14px}.section.highlight h2{color:var(--primary);position:relative}.section.highlight h2:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--primary);margin-right:8px;vertical-align:middle}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-3)}@media (min-width: 900px){.card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--space-4)}}.browse-search{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;color:var(--muted);margin-bottom:10px}.browse-search input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:15px}.browse-search input::placeholder{color:var(--muted)}.browse-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.browse-filters select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:7px 10px;font-size:13px;min-height:36px;max-width:48%}.browse-clear{background:none;border:1px solid var(--border);color:var(--muted-strong);border-radius:var(--radius-sm);padding:7px 12px;font-size:13px;cursor:pointer}.browse-clear:hover{border-color:var(--primary);color:var(--primary)}.browse-count{margin:2px 0 12px;font-size:13px}.browse-pager{display:flex;align-items:center;justify-content:center;gap:16px;margin:20px 0 8px}.browse-pager button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:8px 16px;font-size:13px;min-height:38px;cursor:pointer}.browse-pager button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.browse-pager button:disabled{opacity:.4;cursor:not-allowed}.recipe-card{position:relative;background:var(--surface);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);cursor:pointer;display:flex;flex-direction:column;box-shadow:var(--shadow-1);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.recipe-card-img,.recipe-card-placeholder{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover;background:var(--surface-2);flex-shrink:0}.recipe-card-placeholder{display:grid;place-items:center;color:var(--muted);background:linear-gradient(160deg,var(--surface-2),var(--surface-3))}.badge-new{margin-left:6px;font-size:.65em;background:var(--accent);color:var(--on-primary);border-radius:4px;padding:1px 5px;vertical-align:middle;font-weight:700;letter-spacing:.03em}.recipe-sheet-hero{display:block;width:100%;height:190px;object-fit:cover;background:var(--surface-2)}.recipe-card-actions{display:flex;justify-content:flex-end;gap:2px;margin:auto -12px -12px;padding:5px 8px;border-top:1px solid var(--border)}.recipe-icon-btn{display:grid;place-items:center;width:28px;height:28px;padding:0;border:none;border-radius:8px;background:transparent;color:var(--muted);cursor:pointer;transition:background .14s ease,color .14s ease}.recipe-icon-btn:hover{background:var(--surface-2)}.recipe-icon-btn.fav:hover,.recipe-icon-btn.fav.on{color:var(--primary)}.recipe-icon-btn.hide:hover{color:var(--danger)}.ingredient-optional{color:var(--muted)}.optional-tag{font-style:italic;font-size:.85em}.hidden-recipes-toggle{background:none;border:none;color:var(--muted);font-size:13px;cursor:pointer;padding:4px 0}.hidden-recipes-list{list-style:none;margin:8px 0 0;padding:0}.hidden-recipes-list li{display:flex;align-items:center;justify-content:space-between;padding:6px 0;font-size:13px;border-bottom:1px solid var(--border)}.hidden-recipes-list button{background:none;border:1px solid var(--border);border-radius:var(--radius-sm, 6px);padding:3px 10px;font-size:12px;cursor:pointer;color:var(--text)}.saved-recipes-toggle{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:var(--text-strong);font-size:14px;font-weight:600;cursor:pointer;padding:4px 0}.saved-recipes-caret{color:var(--muted);font-weight:400}.saved-recipes-list{list-style:none;margin:8px 0 0;padding:0}.saved-recipes-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.saved-recipe-open{flex:1;background:none;border:none;padding:0;text-align:left;font-size:14px;color:var(--text);cursor:pointer}.saved-recipe-open:hover{color:var(--primary);text-decoration:underline}.saved-recipe-remove{background:none;border:1px solid var(--border);border-radius:var(--radius-sm, 6px);padding:3px 10px;font-size:12px;cursor:pointer;color:var(--muted)}.saved-recipe-remove:hover{color:var(--danger);border-color:var(--danger)}.icon-btn.on{color:var(--primary)}.help-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.help-legend li{display:flex;align-items:flex-start;gap:10px;color:var(--muted);font-size:.92em}.help-legend li svg{flex-shrink:0;margin-top:1px;color:var(--text)}.ingredient-modal{max-width:440px}.ingredient-modal h3{margin:0 0 10px;padding-right:28px}.ingredient-modal-actions{display:flex;gap:8px;margin-bottom:14px}.ingredient-action-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:500;color:var(--text);background:transparent;border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer}.ingredient-action-btn:hover{border-color:var(--accent);color:var(--accent)}.ingredient-action-danger:hover{border-color:var(--danger);color:var(--danger)}.ingredient-remove-link{display:block;background:none;border:none;padding:0;margin:-4px 0 14px;font-size:12px;color:var(--muted);text-decoration:underline;cursor:pointer}.ingredient-remove-link:hover{color:var(--danger)}.ingredient-canonical{font-size:.9em;margin:0 0 10px}.ingredient-props{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.ingredient-prop-chip{font-size:.78em;font-weight:600;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:3px 10px}.ingredient-shelf{font-size:.88em;margin:0 0 10px}.ingredient-aka{font-size:.85em;margin:12px 0 0}.ingredient-report-all{margin-top:16px;display:inline-flex;align-items:center;gap:6px;font-size:.9em;color:var(--muted)}.ingredient-report-all:hover{color:var(--danger)}.chat-empty{display:flex;flex-direction:column;gap:10px}.chat-empty-tip{font-size:12px}.chat-chips{display:flex;flex-wrap:wrap;gap:8px}.chat-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:6px 12px;font-size:13px;color:var(--text);cursor:pointer;transition:background .14s ease,border-color .14s ease}.chat-chip:hover{background:var(--surface-3, var(--surface-2));border-color:var(--primary)}.recipe-card:hover{transform:translateY(-2px);border-color:var(--border-strong);box-shadow:var(--shadow-2)}.recipe-card .body{padding:12px;display:flex;flex-direction:column;flex:1}.recipe-card .title{font-size:14px;font-weight:600;color:var(--text-strong);line-height:1.3}.recipe-card .source{font-size:11px;color:var(--muted);margin-top:6px}.recipe-card .recipe-meta{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);margin-top:6px}.recipe-card .missing{font-size:11px;color:var(--warning);margin-top:6px}.add-missing-btn{display:inline-flex;align-items:center;gap:5px;margin-top:8px;padding:5px 10px;font-size:11px;font-weight:600;line-height:1;color:var(--accent);background:var(--accent-soft);border:none;border-radius:var(--radius-pill, 999px)}.add-missing-btn:hover{background:var(--accent);color:var(--on-accent, #fff)}.recipe-subs{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.recipe-sub-chip{font-size:11px;line-height:1.3;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.recipe-subs-modal{margin:10px 0 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.section-move select{font-size:12px;padding:2px 4px;border-radius:6px;border:1px solid var(--border, rgba(0,0,0,.15));background:transparent;color:var(--muted);cursor:pointer}.add-missing-btn{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:6px 10px;border-radius:var(--radius-pill);background:var(--surface-2)}.empty-strict{padding:16px;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius);text-align:center}@media (min-width: 900px){.pantry-layout{display:grid;grid-template-columns:320px 1fr;gap:var(--space-8);align-items:start}.pantry-rail{position:sticky;top:0;max-height:calc(100vh - var(--topbar-h) - var(--space-10));overflow-y:auto}.pantry-group-rows{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));column-gap:var(--space-6)}.pantry-group-rows .pantry-row:last-child{border-bottom:1px solid var(--border)}}.row-hover-actions{display:none}@media (min-width: 900px){.row-hover-actions{display:flex;align-items:center;gap:var(--space-1);opacity:0;transition:opacity .12s ease}.pantry-row:hover .row-hover-actions,.row-hover-actions:focus-within{opacity:1}.pantry-row .row-menu-wrap{display:none}}.row-hover-btn{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;font-size:12px;color:var(--muted-strong);background:transparent;border:1px solid var(--border);border-radius:var(--radius-pill);white-space:nowrap}.row-hover-btn:hover{background:var(--surface-2);color:var(--text)}.row-hover-btn.row-hover-danger:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.add-typeahead-loading{display:flex;flex-direction:column;gap:var(--space-2);padding:10px 12px}.pantry-row,.shopping-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 4px;border-bottom:1px solid var(--border)}.pantry-row:last-child,.shopping-row:last-child{border-bottom:none}.row-name{flex:1;min-width:0;font-size:15px;color:var(--text);overflow-wrap:anywhere}.row-name-btn{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:0;font-family:inherit;color:inherit;text-align:left;cursor:pointer}.row-name-btn:hover{color:var(--primary)}.row-icon{background:transparent;color:var(--muted);border:none;padding:0;width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0}.row-icon:hover{background:var(--surface-2);color:var(--text)}.row-icon-warning{color:var(--warning)}.row-icon-danger{color:var(--muted)}.row-icon-danger:hover{background:var(--danger-soft);color:var(--danger)}.restock-pill{background:transparent;border:1px solid var(--border);color:var(--muted);padding:5px 12px;font-size:12px;border-radius:var(--radius-pill);line-height:1;font-weight:500;display:inline-flex;align-items:center;gap:4px;white-space:nowrap;flex-shrink:0}.restock-pill:hover{color:var(--accent);border-color:var(--accent)}.restock-pill.flash{background:var(--accent);border-color:var(--accent);color:var(--on-accent, #fff);font-weight:600}.restock-pill.on-warning{color:var(--warning);border-color:var(--warning);background:var(--warning-soft, transparent);font-weight:600}.restock-pill.on-accent{color:var(--accent);border-color:var(--accent);font-weight:600}.restock-pill.on-accent:hover{background:var(--accent);color:var(--on-accent, #fff)}.row-menu-wrap{position:relative;flex-shrink:0}.row-menu{position:absolute;z-index:10;top:calc(100% + 4px);right:0;min-width:150px;display:flex;flex-direction:column;padding:4px;background:var(--surface, #fff);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 16px #0000001f}.row-menu-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:none;border:none;border-radius:6px;font-size:13px;font-weight:500;color:var(--text);text-align:left;cursor:pointer;white-space:nowrap}.row-menu-item:hover{background:var(--surface-2)}.row-menu-item.row-menu-danger{color:var(--danger)}.row-menu-item.row-menu-danger:hover{background:var(--danger-soft)}.pantry-group-label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:4px 0 6px}.pantry-group-label.warning{color:var(--warning)}.pantry-category-section{margin-bottom:2px}.pantry-category-header{display:flex;align-items:center;gap:6px;width:100%;padding:7px 2px;background:transparent;border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.pantry-category-header:hover{color:var(--text)}.pantry-category-right{margin-left:auto;display:flex;align-items:center;gap:6px}.pantry-category-count{font-weight:400;font-size:10px;opacity:.7}.pantry-category-chevron{font-size:10px}.pantry-row.is-low{border-left:2px solid var(--warning);padding-left:8px}.pantry-row.is-low .row-name{color:var(--text)}.low-mark{color:var(--warning);margin-right:5px;vertical-align:-2px}.unrecognized-badge{margin-left:8px;padding:1px 6px;border:1px solid var(--border);border-radius:10px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);vertical-align:1px;cursor:help}.pantry-row.is-needed{border-left:2px solid var(--accent);padding-left:8px}.pantry-row.is-needed .row-name{color:var(--muted)}.shopping-badge{margin-left:8px;padding:1px 6px;border:1px solid var(--border);border-radius:10px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;vertical-align:1px}.shopping-badge-out{color:var(--accent);border-color:var(--accent)}.shopping-badge-low{color:var(--warning);border-color:var(--warning)}.clear-bought-btn{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:6px 12px;background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:var(--radius-pill)}.clear-bought-btn:hover{color:var(--danger);border-color:var(--danger)}.guidance-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-bottom:14px;box-shadow:var(--shadow-1)}.guidance-card p{margin:0 0 10px;font-size:14px}.quick-add-grid{display:flex;flex-wrap:wrap;gap:8px}.quick-add-btn{background:var(--surface-2);color:var(--text);border:1px solid var(--border);padding:6px 12px;font-size:13px;border-radius:var(--radius-pill)}.quick-add-btn:hover{border-color:var(--primary);color:var(--primary)}.tabs{display:inline-flex;gap:4px;margin-bottom:16px;padding:4px;background:var(--surface-2);border-radius:var(--radius-pill)}.tabs button{background:transparent;color:var(--muted);padding:7px 14px;border-radius:var(--radius-pill);font-weight:500;border:none}.tabs button:hover{color:var(--text);background:transparent}.tabs button.active{background:var(--bg-elev);color:var(--text-strong);font-weight:600;box-shadow:var(--shadow-1)}.tabs-row{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.tabs-row .tabs{margin-bottom:0;flex:1;min-width:0}.time-filter-wrap{position:relative;flex-shrink:0}.time-filter-btn{display:flex;align-items:center;gap:5px;padding:7px 12px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--muted);border:none;cursor:pointer;font-size:13px;font-weight:500;white-space:nowrap;transition:background .15s,color .15s}.time-filter-btn:hover,.time-filter-btn.open{background:var(--surface-3);color:var(--text)}.time-filter-btn.filtered{color:var(--primary)}.time-filter-popup{position:absolute;top:calc(100% + 6px);right:0;min-width:148px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-2);padding:6px;z-index:50}.time-filter-popup-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:4px 8px 8px;margin:0}.time-filter-popup-label-divider{margin-top:6px;padding-top:10px;border-top:1px solid var(--border)}.time-filter-option{display:block;width:100%;text-align:left;padding:8px 10px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text);font-size:14px;cursor:pointer;transition:background .12s}.time-filter-option:hover{background:var(--surface-2)}.time-filter-option.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.cuisine-filter-select{width:100%;margin-top:4px;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:14px;cursor:pointer}.section-exhausted-note{margin-top:10px;font-size:13px;font-style:italic}.onboarding-tip{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius-sm);padding:6px 10px;margin-bottom:12px;font-size:13px;color:var(--muted-strong)}.onboarding-tip-text{flex:1;font-size:.82rem;line-height:1.4;color:var(--text)}.onboarding-tip-dismiss{flex-shrink:0;background:transparent;border:none;color:var(--muted);cursor:pointer;padding:2px;border-radius:4px;display:flex;align-items:center}.onboarding-tip-dismiss:hover{color:var(--text)}.onboarding-tip-chat{position:fixed;right:8px;bottom:calc(168px + env(safe-area-inset-bottom));width:210px;margin-bottom:0;z-index:31}.onboarding-tip-chat:after{content:"";position:absolute;bottom:-8px;right:22px;border:8px solid transparent;border-top-color:var(--primary);border-bottom:0}.chat-bubble{position:fixed;right:16px;bottom:calc(96px + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-hover));color:var(--on-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--shadow-3);border:none;z-index:30;transition:transform .16s ease}.chat-bubble:hover{transform:translateY(-2px)}@media (min-width: 900px){.chat-bubble{right:24px;bottom:24px}.onboarding-tip-chat{right:16px;bottom:96px}}.chat-bubble-badge{position:absolute;top:-2px;right:-2px;min-width:20px;height:20px;border-radius:10px;padding:0 6px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--bg-elev)}.chat-bubble-error{outline:2px solid var(--danger);outline-offset:2px}.chat-bubble-badge-error{background:var(--danger)}.chat-status-pill{font-size:11px;padding:3px 8px;border-radius:var(--radius-pill);background:var(--surface-2);color:var(--muted);margin-left:8px}.chat-status-sending,.chat-status-thinking{color:var(--primary)}.chat-status-applying{color:var(--success)}.chat-status-error{color:#fff;background:var(--danger)}.chat-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:49;animation:fade-in .16s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.chat-panel{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:720px;background:var(--bg-elev);border-top:1px solid var(--border);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);display:flex;flex-direction:column;z-index:50;box-shadow:var(--shadow-3);animation:slide-up .2s ease;transition:height .22s ease}.chat-panel.dragging{transition:none}.chat-panel.expanded{border-top-left-radius:0;border-top-right-radius:0}@media (min-width: 900px){.chat-panel{left:auto;right:24px;bottom:92px;transform:none;width:380px;max-width:calc(100vw - 48px);height:min(560px,calc(100vh - 140px));border:1px solid var(--border);border-radius:var(--radius-lg)}.chat-panel .sheet-handle{display:none}}.chat-panel .header{display:flex;justify-content:space-between;align-items:center;padding:8px 16px 12px;border-bottom:1px solid var(--border)}.chat-panel .header-actions{display:flex;align-items:center;gap:6px}@media (min-width: 900px){.chat-panel .header{padding-top:12px}}.sheet-handle{display:flex;align-items:center;justify-content:center;height:22px;flex-shrink:0;cursor:ns-resize;touch-action:none;-webkit-user-select:none;user-select:none}.sheet-handle-grip{display:block;width:40px;height:4px;border-radius:999px;background:var(--border-strong);transition:background-color .12s ease,width .12s ease}.sheet-handle:hover .sheet-handle-grip,.sheet-handle:active .sheet-handle-grip{background:var(--muted);width:56px}.chat-panel .body{flex:1;overflow-y:auto;padding:12px 16px}.chat-panel .input-row{display:flex;gap:8px;padding:12px 14px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border);align-items:center;background:var(--bg-elev)}.chat-panel .input-row input{flex:1}.chat-msg{padding:10px 14px;border-radius:16px;margin-bottom:8px;max-width:80%;font-size:14px;line-height:1.4;word-wrap:break-word}.chat-msg.user{background:var(--primary);color:var(--on-primary);margin-left:auto;border-bottom-right-radius:4px}.chat-msg.assistant{background:var(--surface-2);border-bottom-left-radius:4px}.chat-msg.error{background:var(--danger);color:#fff}.chat-msg.pending{background:var(--surface-2);min-height:30px}.typing-dots{display:inline-flex;gap:4px;align-items:center}.typing-dots span{width:6px;height:6px;border-radius:50%;background:var(--muted);animation:typing-pulse 1.2s ease-in-out infinite}.typing-dots span:nth-child(2){animation-delay:.15s}.typing-dots span:nth-child(3){animation-delay:.3s}@keyframes typing-pulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.status-toast-stack{position:fixed;right:16px;bottom:calc(170px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;z-index:90;pointer-events:none}@media (min-width: 900px){.status-toast-stack{bottom:auto;top:calc(var(--topbar-h) + 16px);right:24px;align-items:flex-end}}.status-toast{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;background:var(--bg-elev);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-pill);padding:10px 14px;font-size:13px;box-shadow:var(--shadow-2);max-width:min(80vw,360px);text-align:left;cursor:pointer;animation:slide-up .16s ease}.status-toast-success{border-color:var(--success)}.status-toast-error{border-color:var(--danger);background:var(--danger);color:#fff}.status-toast-progress{border-color:var(--primary)}.status-toast-info{border-color:var(--border)}.status-toast-msg{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-toast-x{font-size:18px;line-height:1;margin-left:4px;opacity:.85}.status-toast-undo{margin-left:8px;padding:4px 12px;border-radius:var(--radius-pill);background:transparent;color:var(--primary);border:1px solid currentColor;font-size:12px;font-weight:600;flex-shrink:0}.status-toast-undo:hover{background:var(--primary-soft)}.status-toast-interactive{cursor:pointer}.status-toast:not(.status-toast-interactive){cursor:default}.status-toast-spinner{width:12px;height:12px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:status-toast-spin .8s linear infinite;flex-shrink:0}@keyframes status-toast-spin{to{transform:rotate(360deg)}}.login-page,.onboarding-page{max-width:380px;margin:0 auto;padding:48px 20px 24px}.login-page form,.onboarding-page form{display:flex;flex-direction:column;gap:12px;margin-top:16px}.invite-expired{margin-top:24px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);text-align:center}.invite-expired h2{font-size:18px}.google-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:11px 16px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:14px;font-weight:600;box-shadow:var(--shadow-1);margin-bottom:14px}.google-btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.google-btn:active{transform:translateY(1px)}.google-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.auth-subtitle{text-align:center}.verify-heading{margin:0 0 var(--space-2)}.auth-field{display:flex;flex-direction:column}.auth-error{color:var(--danger);margin:0}.auth-forgot{text-align:right;margin:6px 0 0}.auth-forgot a{font-size:.85em;color:var(--muted)}.auth-forgot a:hover{color:var(--text)}.auth-footer{text-align:center;margin-top:var(--space-4)}.auth-footer .link-button{color:var(--accent)}.auth-legal{text-align:center;margin-top:var(--space-6);font-size:.78em;color:var(--muted)}.auth-legal a{color:var(--muted)}.auth-legal a:hover{color:var(--text)}.auth-divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;margin:4px 0 12px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:200;display:flex;align-items:flex-end;justify-content:center;animation:fade-in .16s ease}.modal{background:var(--bg-elev);width:100%;max-width:600px;max-height:90vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0;overflow-y:auto;padding:20px;box-shadow:var(--shadow-3);animation:slide-up .22s ease;position:relative}.modal .close{position:absolute;top:12px;right:12px;background:transparent}.modal h3{margin-top:0}@media (min-width: 900px){.modal-backdrop{align-items:center;padding:var(--space-6)}.modal{border-radius:var(--radius-lg);animation:fade-in .16s ease}}.confirm-dialog{max-width:420px}.confirm-dialog-body{color:var(--muted-strong);margin:var(--space-2) 0 0}.confirm-dialog-actions{display:flex;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5)}.member-load-error-msg{margin:0}.report-challenge-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.reports-list{display:flex;flex-direction:column;gap:var(--space-4)}.reports-empty-icon{color:var(--muted);opacity:.4}.legal-links{line-height:2}.legal-links a{color:var(--accent);display:block}.legal-ul{padding-left:1.2em}.legal-quote{border-left:3px solid var(--accent);padding-left:1em}.accent-link{color:var(--accent)}.legal-body{padding:0 var(--space-4) var(--space-10)}.legal-body h1{margin-bottom:var(--space-1)}.legal-also{margin-top:var(--space-8);border-top:1px solid var(--border);padding-top:var(--space-4)}.legal-also p{font-size:.85em}.legal-also a{color:var(--accent);margin-right:var(--space-3)}.not-found-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-6)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-10) var(--space-4)}.empty-state-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);color:var(--muted);margin-bottom:var(--space-1)}.empty-state-title{margin:0;font-size:15px;font-weight:600;color:var(--text-strong)}.empty-state-body{margin:0;font-size:13px;color:var(--muted);max-width:360px}.empty-state-action{margin-top:var(--space-2)}.skeleton{background:var(--surface-2);border-radius:var(--radius-sm);position:relative;overflow:hidden}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,var(--surface-3),transparent);transform:translate(-100%);animation:skeleton-shimmer 1.2s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.skeleton:after{animation:none}}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.skeleton-line{height:14px}.skeleton-line-wide{width:80%}.skeleton-line-narrow{width:45%}.skeleton-line+.skeleton-line{margin-top:var(--space-2)}.skeleton-row{height:44px;border-radius:var(--radius)}.skeleton-row+.skeleton-row{margin-top:var(--space-2)}.skeleton-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.skeleton-media{aspect-ratio:16 / 10;border-radius:0}.skeleton-card-body{padding:var(--space-3)}.page-head{margin-bottom:var(--space-5)}.page-head-back{display:inline-flex;align-items:center;gap:var(--space-1);padding:6px 10px 6px 6px;margin-bottom:var(--space-2)}.page-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.page-head-title{margin:0;font-size:22px;font-weight:650;letter-spacing:-.01em}.page-head-subtitle{margin:var(--space-1) 0 0;color:var(--muted);font-size:13px}.page-head-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.recipe-modal-backdrop{top:var(--topbar-h)}.recipe-sheet{background:var(--bg-elev);width:100%;max-width:720px;height:100%;border-radius:0;box-shadow:var(--shadow-3);display:flex;flex-direction:column;overflow:hidden;position:relative;animation:slide-up .22s ease}.recipe-sheet-close-floating{position:absolute;top:calc(8px + env(safe-area-inset-top));right:8px;z-index:5;background:var(--scrim);color:#fff;box-shadow:var(--shadow-2)}.recipe-sheet-close-floating:hover{background:var(--scrim-strong);color:#fff}@media (min-width: 900px){.recipe-modal-backdrop{top:0;align-items:center;padding:var(--space-6)}.recipe-sheet{max-width:960px;height:auto;max-height:85vh;border-radius:var(--radius-lg);animation:fade-in .16s ease}.recipe-sheet-hero{height:260px;flex-shrink:0}.recipe-sheet-header{padding:var(--space-4) var(--space-6) var(--space-1)}.recipe-sheet-toolbar{padding:var(--space-2) var(--space-6);justify-content:flex-end}.recipe-sheet-toolbar .tabs{display:none}.recipe-sheet-content{display:grid;grid-template-columns:340px 1fr;gap:var(--space-8);align-items:start;padding:var(--space-5) var(--space-6)}.recipe-missing-list,.meal-pairing,.recipe-sheet-footer,.recipe-ai-disclaimer{padding-inline:var(--space-6)}}.recipe-sheet-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column}.recipe-sheet-header{padding:12px 56px 4px 16px}.recipe-sheet-header h3{margin:0 0 4px}.recipe-sheet-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.recipe-sheet-toolbar .tabs{margin-bottom:0}.recipe-sheet-content{display:flex;flex-direction:column;gap:18px;padding:12px 16px}.recipe-pane h4{margin:0 0 8px;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.recipe-ingredients{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px}.recipe-ingredients li{padding:6px 0;border-bottom:1px solid var(--border);font-size:14px}.recipe-ingredients li:last-child{border-bottom:none}.ingredient-sub-wrap{position:relative;display:inline-block}.ingredient-sub-mark{display:inline-flex;align-items:center;justify-content:center;margin-left:6px;padding:1px 4px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-alt, transparent);color:var(--muted);cursor:pointer;vertical-align:middle;line-height:1}.ingredient-sub-mark:hover,.ingredient-sub-mark.open{color:var(--accent);border-color:var(--accent)}.ingredient-sub-popover{position:absolute;z-index:10;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);min-width:180px;max-width:260px;padding:8px 10px;background:var(--surface, #fff);color:var(--text, #111);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 16px #0000001f;font-size:12px;line-height:1.4;white-space:normal;text-align:center}.ingredient-sub-popover:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--surface, #fff)}.technique-wrap{position:relative;display:inline}.technique-term{padding:0;border:none;background:transparent;color:inherit;font:inherit;cursor:help;text-decoration:underline dotted;text-underline-offset:2px;text-decoration-color:var(--accent)}.technique-term:hover,.technique-term.open{color:var(--accent)}.technique-popover{position:absolute;z-index:20;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);width:240px;max-width:78vw;padding:10px;background:var(--surface, #fff);color:var(--text, #111);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 20px #00000029;font-size:12px;line-height:1.45;white-space:normal;text-align:left}.technique-popover:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--surface, #fff)}.technique-popover-img{display:block;width:100%;height:120px;object-fit:cover;border-radius:6px;margin-bottom:6px}.technique-popover-title{display:block;margin-bottom:2px}.technique-popover-desc{display:block;color:var(--muted)}.recipe-report-btn{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted);background:transparent;border:none;cursor:pointer;padding:4px 8px;margin-left:auto;border-radius:6px}.recipe-report-btn:hover{color:var(--danger);background:var(--danger-soft)}.recipe-cooked-btn{display:flex;align-items:center;gap:6px;font-size:13px;padding:7px 12px}.cook-mode-start-btn{display:flex;align-items:center;gap:6px;font-size:12px;padding:6px 10px}.cook-mode{position:fixed;top:0;right:0;bottom:0;left:0;z-index:250;background:var(--bg-elev);display:flex;flex-direction:column;padding:var(--space-6);padding-top:calc(var(--space-6) + env(safe-area-inset-top));padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom))}.cook-mode-progress{height:4px;background:var(--border);border-radius:2px;overflow:hidden;flex-shrink:0}.cook-mode-progress-bar{height:100%;background:var(--primary);transition:width .2s ease}.cook-mode-close{position:absolute;top:calc(var(--space-4) + env(safe-area-inset-top));right:var(--space-4)}.cook-mode-counter{margin-top:var(--space-5);text-align:center;color:var(--muted);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em}.cook-mode-step{flex:1;display:flex;align-items:flex-start;padding:var(--space-6) var(--space-2);overflow-y:auto}.cook-mode-step-text{margin:0;width:100%;text-align:left;font-size:24px;line-height:1.5;font-weight:500;color:var(--text-strong)}.cook-mode-nav{display:flex;gap:var(--space-3);flex-shrink:0}.cook-mode-nav-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:var(--space-4);font-size:16px;font-weight:600}.cook-mode-finish{flex:2}@media (min-width: 900px){.cook-mode-step{max-width:720px;margin:0 auto}.cook-mode-step-text{font-size:28px}.cook-mode-nav{max-width:720px;width:100%;margin:0 auto}}.feedback-modal{max-width:420px}.cook-used-modal{max-width:440px}.cook-used-title{margin:0 0 .25rem;font-size:1.1rem}.cook-used-sub{margin:0 0 1rem;color:var(--text-2);font-size:.9rem;line-height:1.4}.cook-used-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem;max-height:50vh;overflow-y:auto}.cook-used-row{display:flex;flex-direction:column;gap:.4rem}.cook-used-name{font-weight:600;font-size:.95rem}.cook-used-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem}.cook-used-pill{padding:.45rem .4rem;border:1px solid var(--border);background:var(--surface-2);color:var(--text-2);border-radius:var(--radius-pill);font-size:.8rem;font-weight:600;cursor:pointer;transition:background .12s,color .12s,border-color .12s}.cook-used-pill.is-active.cook-used-pill--keep{background:var(--surface-3);color:var(--text-1);border-color:var(--border)}.cook-used-pill.is-active.cook-used-pill--low{background:var(--warning-soft);color:var(--warning);border-color:var(--warning)}.cook-used-pill.is-active.cook-used-pill--out{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.cook-used-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.1rem}.feedback-type-badge{display:inline-block;font-size:.78em;font-weight:600;background:var(--primary-soft);color:var(--primary);border-radius:var(--radius-pill);padding:2px 10px;margin-bottom:8px}.feedback-textarea{width:100%;min-height:72px;resize:vertical;padding:8px 10px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-size:.9rem;font-family:var(--font-sans)}.feedback-textarea:focus{border-color:var(--primary);outline:none}.experience-stars{display:flex;gap:4px;margin:8px 0 12px}.experience-stars button{background:none;border:none;padding:0;font-size:1.8rem;line-height:1;cursor:pointer;color:var(--border)}.experience-stars button.active{color:var(--primary)}input.feedback-textarea{min-height:0;resize:none;margin-bottom:var(--space-2)}.modal-title-icon{display:flex;align-items:center;gap:var(--space-2)}.modal-lede{color:var(--muted);font-size:.85em;margin:0 0 var(--space-3)}.feedback-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.reports-page{padding-bottom:48px}.reports-state{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px 28px;text-align:center}.reports-state p{font-size:14px;max-width:280px;margin:0;line-height:1.55}.reports-empty strong{font-size:17px;font-weight:600;color:var(--text)}.report-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg, 16px);overflow:hidden;box-shadow:var(--shadow-1)}.report-group-label{display:flex;align-items:center;gap:6px;margin:0;padding:10px 14px 8px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border)}.report-group-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--radius-pill);background:var(--surface-2);font-size:10px;font-weight:700;color:var(--muted);letter-spacing:0}.report-list{list-style:none;margin:0;padding:0}.report-row{border-bottom:1px solid var(--border)}.report-row:last-child{border-bottom:none}.report-row-head{display:flex;align-items:stretch}.report-row-toggle{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:11px 10px 11px 14px;background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important;cursor:pointer;text-align:left;color:var(--text);font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;transition:background .1s}.report-row-toggle:hover{background:var(--surface-2)!important}.report-row-toggle:active{transform:none}.report-badge{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;padding:3px 8px;border-radius:var(--radius-pill);font-size:10px;font-weight:700;letter-spacing:.03em;white-space:nowrap}.report-label{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.report-type{font-size:13px;font-weight:500;color:var(--text)}.report-subject{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-chevron{flex-shrink:0;color:var(--muted);transition:transform .18s}.report-chevron.open{transform:rotate(90deg)}.report-delete{display:flex;align-items:center;justify-content:center;width:44px;padding:0;border:none!important;border-left:1px solid var(--border)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:var(--muted);cursor:pointer;transition:color .15s,background .1s;flex-shrink:0}.report-delete:hover{color:var(--danger);background:var(--danger-soft)!important}.report-delete:active{transform:none}.report-row-body{display:flex;flex-direction:column;gap:8px;padding:10px 14px 14px;background:var(--surface-2);border-top:1px solid var(--border)}.report-quote{margin:0;padding:8px 11px;background:var(--surface);border-left:3px solid var(--border-strong);border-radius:var(--radius-sm);font-size:13px;font-style:italic;color:var(--text);line-height:1.5}.report-explain{margin:0;font-size:13px;color:var(--muted);line-height:1.55}.report-date{font-size:11px;color:var(--muted)}.recipe-steps{margin:0;padding-left:24px;display:flex;flex-direction:column;gap:12px}.recipe-steps li{line-height:1.55;font-size:15px}.step-amount{display:inline;color:var(--primary);font-size:.85em;font-weight:500;white-space:nowrap}.recipe-sheet-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:12px}.recipe-sheet-footer-actions{display:flex;align-items:center;gap:8px}.recipe-ai-disclaimer{font-size:.75em;text-align:center;padding:6px 16px calc(8px + env(safe-area-inset-bottom));line-height:1.4}.inline-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.inline-toggle input{width:auto;margin:0}.account-page{max-width:640px;margin:0 auto;padding:16px}.account-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.account-header h2{margin:0}.back-btn{display:inline-flex;align-items:center;gap:4px;background:transparent;color:var(--primary);padding:0;border:none;cursor:pointer;font:inherit}.account-section{border-top:1px solid var(--border);padding:18px 0}.account-section h3{margin:0 0 12px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.member-list{list-style:none;padding:0;margin:0}.member-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:10px 0;border-bottom:1px solid var(--border)}.member-row:last-child{border-bottom:none}.member-identity{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.member-name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-email{font-size:.82em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px;flex-shrink:0}.member-role-badge{font-size:.72em;text-transform:uppercase;letter-spacing:.04em;font-weight:600;color:var(--muted);background:var(--bg-subtle, rgba(127, 127, 127, .12));border-radius:999px;padding:2px 8px}.member-role-badge.is-owner{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.member-btn{font-size:.82em;padding:4px 10px;white-space:nowrap}.member-btn-danger{color:var(--danger)}.member-load-error{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.account-card{border-top:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg, 16px);padding:16px;margin-bottom:14px;box-shadow:var(--shadow-1)}.account-card h3{display:flex;align-items:center;gap:8px}.account-identity{display:flex;align-items:center;gap:12px;margin-bottom:16px}.account-avatar{width:44px;height:44px;flex-shrink:0;border-radius:50%;background:var(--primary, #2563eb);color:#fff;display:grid;place-items:center;font-size:18px;font-weight:600}.account-identity-text{display:flex;flex-direction:column;min-width:0}.account-identity-email{font-weight:600;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-identity-meta{font-size:.82em;text-transform:capitalize}.account-field-label{display:block;font-size:.82em;font-weight:600;color:var(--muted);margin-bottom:6px}.account-inline-form{display:flex;gap:8px;align-items:flex-start}.account-inline-form input{min-width:0}.account-subblock{margin-top:16px}.account-stack{display:flex;flex-direction:column;gap:8px;align-items:stretch}.account-stack button{align-self:flex-start}.account-hint{font-size:.85em;margin:0 0 10px}.account-error{color:var(--danger);font-size:.85em;margin:6px 0 0}.account-btn-row{display:flex;gap:8px;flex-wrap:wrap}.account-danger-link{margin-top:12px;background:none;border:none;color:var(--danger);cursor:pointer;padding:0;font:inherit}.account-signout{display:inline-flex;align-items:center;gap:6px}.danger-zone{border-color:color-mix(in srgb,var(--danger) 30%,var(--border))}.account-delete-confirm{margin-top:12px}.account-delete-btn{background:var(--danger);color:#fff;border-color:var(--danger)}.account-delete-btn:disabled{opacity:.5;cursor:default}.meal-pairing{padding:10px 16px;font-size:.92em;border-top:1px solid var(--border)}.servings-stepper{display:inline-flex;align-items:center;gap:10px;margin:0 0 12px;font-size:.9em}.servings-stepper button{width:28px;height:28px;border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--text);font-size:1.1em;line-height:1;cursor:pointer}.servings-stepper button:disabled{opacity:.4;cursor:default}.onboarding-staples{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px}.onboarding-group{margin:14px 0}.onboarding-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.onboarding-group-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.staple-addgroup{background:transparent;border:none;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;padding:0}.staple-addall{width:100%;border:1px dashed var(--accent);border-radius:var(--radius-pill, 999px);background:var(--accent-soft);color:var(--accent);padding:9px 12px;font-size:.9em;font-weight:600;cursor:pointer;margin:4px 0 6px}.staple-addall:hover{background:var(--accent);color:var(--on-accent, #fff)}.staple-chip{border:1px solid var(--border);border-radius:999px;background:transparent;padding:6px 12px;font-size:.9em;cursor:pointer;color:var(--text)}.staple-chip:hover{border-color:var(--accent, #2563eb)}.onboarding-chosen{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:14px 0}.onboarding-chosen li{display:inline-flex;align-items:center;gap:6px;background:var(--surface, rgba(127, 127, 127, .12));border-radius:999px;padding:6px 6px 6px 12px;font-size:.9em}.onboarding-chosen li button{border:none;background:transparent;cursor:pointer;font-size:1.1em;line-height:1;color:var(--muted);padding:0 4px}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.segmented button{border:none;background:transparent;padding:8px 14px;font-size:.9em;cursor:pointer;color:var(--text)}.segmented button+button{border-left:1px solid var(--border)}.segmented button.segmented-on{background:var(--accent, #2563eb);color:#fff}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.admin-shell{min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-sans)}@media (min-width: 900px){.admin-shell{display:grid;grid-template-columns:220px 1fr}}.admin-nav{background:var(--surface);border-right:1px solid var(--border);padding:16px 0;flex-direction:column;display:none}@media (min-width: 900px){.admin-nav{display:flex;position:sticky;top:0;height:100vh;overflow-y:auto}}@media (max-width: 899px){.admin-shell.drawer-open .admin-nav{display:flex;position:fixed;inset:0 auto 0 0;width:260px;z-index:200;box-shadow:var(--shadow-3);overflow-y:auto}.admin-shell.drawer-open .admin-drawer-overlay{display:block}}.admin-drawer-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:199}.admin-brand{padding:0 16px 12px;border-bottom:1px solid var(--border);margin-bottom:8px}.admin-brand strong{font-size:15px;color:var(--text-strong)}.admin-brand small{display:block;color:var(--muted);font-size:11px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-nav-group{padding:12px 16px 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.admin-nav nav{display:flex;flex-direction:column}.admin-nav-group summary{cursor:pointer;list-style:none;padding:10px 20px 6px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);-webkit-user-select:none;user-select:none}.admin-nav-group summary::-webkit-details-marker{display:none}.admin-nav-group summary:after{content:" ▸";font-size:9px}.admin-nav-group[open] summary:after{content:" ▾"}.admin-nav-group summary:hover{color:var(--text)}.admin-nav nav a{padding:8px 16px;color:var(--text);text-decoration:none;font-size:14px;border-left:2px solid transparent;transition:background .12s,color .12s;min-height:38px;display:flex;align-items:center;gap:8px}.admin-nav nav a:hover{background:var(--primary-soft);color:var(--text-strong)}.admin-nav nav a.active{background:var(--primary-soft);color:var(--primary);border-left-color:var(--primary);padding-left:14px;font-weight:500}.admin-nav-footer{margin-top:auto;padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.admin-nav-footer button,.admin-nav-footer a{background:transparent;border:1px solid var(--border);color:var(--text);padding:6px 10px;cursor:pointer;text-decoration:none;font-size:12px;border-radius:var(--radius-sm);transition:border-color .12s;text-align:center;display:block}.admin-nav-footer button:hover,.admin-nav-footer a:hover{border-color:var(--primary);color:var(--primary)}.admin-topbar{display:none}@media (max-width: 899px){.admin-topbar{display:flex;align-items:center;gap:8px;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.admin-topbar .admin-topbar-title{flex:1;font-size:15px;font-weight:600;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-topbar button{background:none;border:none;color:var(--text);cursor:pointer;padding:6px;min-width:38px;min-height:38px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm)}.admin-topbar button:hover{background:var(--surface-2)}}.admin-main{padding:20px 16px 80px;overflow:auto;min-height:100vh}@media (min-width: 900px){.admin-main{padding:24px}}.admin-main h1,.admin-main h2,.admin-main h3{color:var(--text-strong);margin-top:0}.admin-hub{padding:16px}.admin-hub-section{margin-bottom:24px}.admin-hub-section-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:10px}.admin-hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.admin-hub-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 12px;cursor:pointer;text-decoration:none;color:var(--text);transition:box-shadow .16s,border-color .16s,transform .16s;display:flex;flex-direction:column;gap:6px;min-height:80px}.admin-hub-card:hover{box-shadow:var(--shadow-2);border-color:var(--primary);transform:translateY(-1px)}.admin-hub-card .hub-card-label{font-size:13px;font-weight:500;color:var(--text-strong)}.admin-hub-card .hub-card-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;background:var(--danger);color:#fff;border-radius:var(--radius-pill);font-size:10px;font-weight:700;padding:0 5px;align-self:flex-start}.admin-page-header{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.admin-page-header h1{margin:0;font-size:20px;font-weight:700;color:var(--text-strong)}.admin-page-header .badge{background:var(--surface-2);border:1px solid var(--border);padding:2px 8px;border-radius:var(--radius-sm);font-size:11px;color:var(--muted)}.admin-page-header .badge.red{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.admin-page-header button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:5px 12px;cursor:pointer;border-radius:var(--radius-sm);font-size:12px;transition:border-color .12s;min-height:32px}.admin-page-header button:hover{border-color:var(--primary);color:var(--primary)}.admin-page-header .toast,.admin-main .toast{color:var(--accent);font-size:12px}.admin-table{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:24px}.admin-table th,.admin-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}.admin-table th{background:var(--surface);color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;position:sticky;top:0;z-index:1}.admin-table tr:hover td{background:var(--primary-soft)}.admin-table tr.selected td{background:var(--primary-soft);border-left:2px solid var(--primary)}.admin-table tr.muted{opacity:.5}.admin-table .red{color:var(--danger)}.admin-table .green{color:var(--success)}.admin-table .warn{color:var(--warning)}.admin-table button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:3px 8px;cursor:pointer;border-radius:var(--radius-sm);font-size:11px;margin-right:4px;transition:border-color .12s}.admin-table button:hover{border-color:var(--primary);color:var(--primary)}.admin-table-scroll{overflow-x:auto;margin-bottom:24px}.admin-table-scroll .admin-table{margin-bottom:0}@media (max-width: 899px){.admin-table thead{display:none}.admin-table,.admin-table tbody,.admin-table tr{display:block}.admin-table tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px;margin-bottom:8px}.admin-table tr:hover td{background:transparent}.admin-table tr.selected{border-color:var(--primary)}.admin-table td{display:flex;gap:8px;border:none;padding:3px 0;font-size:13px}.admin-table td:before{content:attr(data-label);font-weight:600;color:var(--muted);font-size:11px;text-transform:uppercase;min-width:90px;flex-shrink:0;padding-top:1px}.admin-table td:empty{display:none}}.admin-filter-row{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}.admin-filter-row input[type=search],.admin-filter-row input[type=text],.admin-filter-row select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:7px 10px;border-radius:var(--radius-sm);font-size:13px;min-height:36px;min-width:0;flex:1 1 160px;max-width:280px}.admin-filter-row input:focus,.admin-filter-row select:focus{outline:none;border-color:var(--primary)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:24px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow-1)}.kpi-card.anomaly{border-color:var(--danger)}.kpi-card .kpi-name{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.kpi-card .kpi-value{font-size:24px;font-weight:700;color:var(--text-strong);margin:6px 0}.kpi-card .kpi-anomaly{color:var(--danger);font-size:11px}.kpi-card .kpi-hint{font-size:11px;color:var(--muted);line-height:1.35}.stat-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px}.stat-dot.ok{background:var(--success)}.stat-dot.warn{background:var(--warning)}.stat-dot.err{background:var(--danger)}.admin-split{display:grid;gap:16px}@media (min-width: 900px){.admin-split{grid-template-columns:1fr 360px}}.admin-split-list,.admin-split-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;overflow:auto}@media (min-width: 900px){.admin-split-list,.admin-split-detail{max-height:calc(100vh - 180px)}}.ingredient-detail h3{margin:0 0 8px;color:var(--text-strong)}.ingredient-detail section{margin-top:16px}.ingredient-detail-grid{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;font-size:13px;margin:0 0 12px}.ingredient-detail-grid dt{color:var(--muted)}.ingredient-detail-grid dd{margin:0}.chip-list{list-style:none;margin:4px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.chip-list .chip{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);padding:2px 10px;font-size:12px;color:var(--text);display:flex;align-items:center;gap:4px}.chip-list .chip button{background:none;border:none;color:var(--muted);cursor:pointer;padding:0;font-size:13px;line-height:1}.chip-list .chip button:hover{color:var(--danger)}.link-btn{background:none!important;border:none!important;color:var(--primary)!important;padding:0!important;margin:0!important;cursor:pointer;font:inherit;text-decoration:underline}.badge.warn{display:inline-block;background:var(--warning-soft);color:var(--warning);border:1px solid var(--warning);border-radius:var(--radius-sm);font-size:10px;padding:1px 5px;margin-left:6px;text-transform:uppercase;letter-spacing:.04em}.admin-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}.admin-modal{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:20px;width:min(560px,92vw);max-height:90vh;overflow:auto;color:var(--text);box-shadow:var(--shadow-3)}.admin-modal.wide{width:min(880px,96vw)}.admin-modal header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.admin-modal header h3{margin:0;color:var(--text-strong)}.admin-modal header button{background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer;padding:4px;border-radius:var(--radius-sm)}.admin-modal header button:hover{color:var(--text-strong)}.admin-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;flex-wrap:wrap}.admin-modal-actions button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:7px 16px;cursor:pointer;border-radius:var(--radius-sm);font-size:13px;min-height:36px;transition:border-color .12s}.admin-modal-actions button:hover{border-color:var(--primary);color:var(--primary)}.admin-modal-actions button.danger{border-color:var(--danger);color:var(--danger)}.admin-modal-actions button.danger:hover{background:var(--danger-soft)}.admin-modal-error{color:var(--danger);margin:8px 0;font-size:12px}.admin-modal-stack{display:flex;flex-direction:column;gap:10px}.admin-modal-stack button{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:8px 16px;cursor:pointer;border-radius:var(--radius-sm);font-size:13px;min-height:38px;transition:border-color .12s}.admin-modal-stack button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.admin-modal-stack button:disabled{opacity:.5;cursor:not-allowed}.admin-modal-or{text-align:center;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em;margin:12px 0}.admin-modal input[type=text],.admin-modal input[type=password],.admin-modal textarea{width:100%;background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:var(--radius-sm);font-size:14px;box-sizing:border-box}.admin-modal input:focus,.admin-modal textarea:focus{outline:none;border-color:var(--primary)}.admin-filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.admin-filters input,.admin-page-header input{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:6px 10px;border-radius:var(--radius-sm);font-size:13px}.admin-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;font-size:13px}.admin-detail pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;overflow-x:auto;font-size:11px}.admin-pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;margin:4px 0 12px;max-height:320px;overflow:auto;font-size:11px;white-space:pre-wrap;word-break:break-word}.link-button{background:none;border:none;padding:0;cursor:pointer;color:var(--accent, #4a9);font-size:12px}.admin-budget{margin:24px 0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.admin-error{color:var(--danger);background:var(--danger-soft);padding:12px;border-radius:var(--radius-sm);font-size:13px}.admin-inline-edit{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.admin-inline-edit input,.admin-inline-edit select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:4px 8px;border-radius:var(--radius-sm);font-size:13px;min-width:0;flex:1}.admin-inline-edit input:focus,.admin-inline-edit select:focus{outline:none;border-color:var(--primary)}.admin-inline-edit .save-btn{background:var(--primary);color:var(--on-primary);border:none;padding:4px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:12px;font-weight:600}.admin-inline-edit .save-btn:hover{background:var(--primary-hover)}.admin-cmdk{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:min(620px,94vw);margin-top:10vh;padding:0;box-shadow:var(--shadow-3)}.admin-cmdk input{width:100%;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text);padding:16px;font-size:16px;outline:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.admin-cmdk input:focus{border-bottom-color:var(--primary)}.admin-cmdk-list{list-style:none;margin:0;padding:4px 0;max-height:50vh;overflow-y:auto}.admin-cmdk-list li{display:flex;gap:12px;padding:8px 16px;cursor:pointer;font-size:13px;transition:background 80ms}.admin-cmdk-list li.active{background:var(--primary-soft)}.admin-cmdk-list li .kind{color:var(--muted);font-size:10px;text-transform:uppercase;width:90px;flex-shrink:0}.admin-cmdk-list li .sub{color:var(--muted);font-size:11px;margin-left:auto}.admin-cmdk-list li.empty{color:var(--muted);cursor:default}.teaser-card{gap:6px}.teaser-card .teaser-title{background:none;border:none;padding:0;font-weight:600;color:var(--accent);cursor:pointer;font-size:15px;text-align:left}.teaser-card .teaser-title:hover{text-decoration:underline}.pantry-row.jump-highlight{animation:jump-flash 1.6s ease-out;border-radius:8px}@keyframes jump-flash{0%{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}70%{background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}to{background:transparent;box-shadow:0 0 0 0 transparent}}.error-boundary-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:var(--bg)}.error-boundary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px 28px;max-width:400px;width:100%;text-align:center;box-shadow:var(--shadow-2)}.error-boundary-card h2{margin:0 0 10px}.error-boundary-card p{color:var(--muted);margin:0 0 20px}.app-splash{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--bg)}.app-splash-dot{width:10px;height:10px;border-radius:50%;background:var(--primary);animation:splash-pulse 1.2s ease-in-out infinite}@keyframes splash-pulse{0%,to{opacity:.3;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}.offline-banner{display:flex;align-items:center;justify-content:center;gap:7px;padding:8px 16px;background:var(--warning-soft);color:var(--warning);font-size:13px;font-weight:500;border-bottom:1px solid color-mix(in srgb,var(--warning) 25%,transparent)}.sw-update-toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:12px 16px;box-shadow:var(--shadow-3);z-index:9999;white-space:nowrap;font-size:14px}.sw-update-toast button{padding:6px 12px;font-size:13px}.account-header-name{font-size:16px;font-weight:600;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-tabs{display:flex;gap:0;margin-bottom:16px;border-bottom:1px solid var(--border)}.account-tab{flex:1;min-width:0;background:transparent;border:none;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);font-size:13px;font-weight:500;padding:9px 4px;cursor:pointer;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .12s,border-color .12s;margin-bottom:-1px}.account-tab:hover{color:var(--text);background:transparent}.account-tab-active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.welcome-backdrop{display:flex;align-items:center;justify-content:center;padding:20px;z-index:1000}.welcome-inline{display:flex;justify-content:center;padding:8px 0 24px}.welcome-card{position:relative;width:100%;max-width:380px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-3);padding:28px 24px 20px;text-align:center;animation:slide-up .22s ease}.welcome-skip{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--muted);font-size:.85rem;cursor:pointer;padding:4px 6px}.welcome-skip:hover{color:var(--text)}.welcome-illustration{width:88px;height:88px;margin:4px auto 16px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--primary) 14%,transparent);color:var(--primary)}.welcome-title{margin:0 0 8px;font-size:1.25rem;font-family:var(--font-display)}.welcome-body{margin:0 0 18px;color:var(--muted);line-height:1.5;font-size:.95rem}.welcome-dots{display:flex;justify-content:center;gap:7px;margin-bottom:18px}.welcome-dot{width:7px;height:7px;border-radius:50%;background:var(--border);transition:background .16s ease,width .16s ease}.welcome-dot.active{width:20px;border-radius:var(--radius-pill);background:var(--primary)}.welcome-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.welcome-actions .primary{min-width:96px}.driver-popover{background:var(--bg-elev);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-3)}.driver-popover-title{color:var(--text);font-family:var(--font-display)}.driver-popover-description,.driver-popover-progress-text{color:var(--muted)}.driver-popover-arrow{color:var(--bg-elev)}.driver-popover .driver-popover-close-btn{color:var(--muted)}.driver-popover .driver-popover-close-btn:hover{color:var(--text)}.driver-popover .driver-popover-footer button{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);text-shadow:none;padding:6px 12px}.driver-popover .driver-popover-footer button:hover{background:var(--surface)}.driver-popover .driver-popover-footer .driver-popover-next-btn{background:var(--primary);border-color:var(--primary);color:#fff}.driver-popover .driver-popover-footer .driver-popover-next-btn:hover{background:var(--primary-hover)}.example-section .example-note{margin:0 0 12px;font-size:.9rem}.example-card{position:relative}.example-card .recipe-card{border-style:dashed;opacity:.92;cursor:default}.example-ribbon{position:absolute;top:8px;right:8px;z-index:1;background:var(--accent);color:#fff;font-size:.62rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;border-radius:var(--radius-pill);pointer-events:none}
