:root{--color-bg: #f5f5f1;--color-surface: #ffffff;--color-ink: #1f2b27;--color-muted: #67736d;--color-border: #dce2dc;--color-primary: #234a3b;--color-primary-strong: #17372a;--color-sage: #dfebdf;--color-sage-ink: #315d46;--color-sage-border: #cfe0d2;--color-beige: #f1eadb;--color-beige-ink: #66583e;--color-blue: #e5eef1;--color-blue-ink: #42616d;--color-amber: #f8e9c6;--color-amber-ink: #795b1d;--color-amber-border: #e8cf93;--shadow-subtle: 0 1px 2px rgb(26 45 36 / 5%);--radius-sm: 8px;--radius-md: 12px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--touch-target: 48px;--mobile-bottom-navigation-height: 80px;--content-width: 1080px}*{box-sizing:border-box}html{background:var(--color-bg)}body{min-width:320px;margin:0;overflow-x:hidden;background:var(--color-bg);color:var(--color-ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.45}button,a,input{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}.app-shell,.app-frame{min-height:100dvh}.mobile-header{display:flex;min-height:calc(var(--touch-target) + env(safe-area-inset-top));align-items:flex-end;justify-content:space-between;padding:calc(var(--space-2) + env(safe-area-inset-top)) var(--space-4) var(--space-2);border-bottom:1px solid var(--color-border);background:#f5f5f1eb}.header-status{color:var(--color-muted);font-size:.8rem;font-weight:650}.sign-out-button{min-height:var(--touch-target);padding:0 var(--space-2);border:0;background:transparent;color:var(--color-muted);cursor:pointer;font:inherit;font-size:.8rem;font-weight:650}.sign-out-button:hover{color:var(--color-primary)}.app-content{width:min(100%,var(--content-width));min-height:calc(100dvh - 112px);margin-inline:auto;padding:var(--space-6) var(--space-4) calc(var(--mobile-bottom-navigation-height) + var(--space-6) + env(safe-area-inset-bottom))}.page{animation:page-enter .18s ease-out both}.page-intro{margin-bottom:var(--space-6)}.eyebrow{margin:0 0 var(--space-1);color:var(--color-primary);font-size:.76rem;font-weight:750;letter-spacing:.08em;text-transform:uppercase}h1{margin:0;font-size:clamp(2rem,6vw,2.75rem);font-weight:730;letter-spacing:0;line-height:1.05}.page-lead{margin:var(--space-2) 0 0;color:var(--color-muted);font-size:1rem}.start-actions{display:grid;gap:var(--space-3)}.start-action{display:grid;min-height:88px;grid-template-columns:var(--touch-target) 1fr 24px;gap:var(--space-3);align-items:center;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-subtle);transition:border-color .16s ease,transform .16s ease}.start-action:focus-visible,.navigation-link:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.start-action:active{transform:scale(.99)}.start-action__icon,.empty-state__icon{display:grid;width:var(--touch-target);height:var(--touch-target);place-items:center;border:1px solid rgb(35 74 59 / 12%);border-radius:var(--radius-sm);background:#ffffff85}.start-action strong,.start-action small{display:block}.start-action strong{font-size:1rem}.start-action small{margin-top:2px;color:var(--color-muted);font-size:.88rem}.surface-card{background:var(--color-surface)}.surface-beige{background:var(--color-beige);border-color:#e3d8c3}.surface-blue{background:var(--color-blue);border-color:#d3e0e5}.surface-sage{background:var(--color-sage);border-color:var(--color-sage-border)}.collection-grid,.offer-grid{display:grid;gap:var(--space-3)}.collection-card,.offer-card{display:grid;gap:var(--space-2);min-height:var(--touch-target);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md)}.collection-card{background:var(--color-beige);color:var(--color-beige-ink)}.offer-card{background:var(--color-surface);color:var(--color-ink)}.offers-page{background:transparent}.collection-empty-state{color:var(--color-muted)}.collection-empty-state h2{color:var(--color-ink)}.offer-skeleton{height:132px;margin-bottom:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-blue);animation:pulse 1s ease-in-out infinite alternate}.offer-skeleton--detail{height:420px}.offer-details{display:grid;gap:var(--space-4)}.offer-hero,.menu-section,.venue-terms{display:grid;gap:var(--space-2);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.offer-hero{background:var(--color-sage);border-color:var(--color-sage-border)}.offer-hero p,.venue-terms p{margin:0}.menu-section{gap:var(--space-3)}.menu-section h2,.venue-terms h2{margin:0;font-size:1.1rem}.menu-section small{color:var(--color-primary);font-weight:750}.menu-item{display:flex;min-height:var(--touch-target);align-items:center;justify-content:space-between;gap:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--color-border)}.menu-item a{color:var(--color-primary);font-size:.82rem;font-weight:750}.venue-terms{background:var(--color-blue);border-color:#d3e0e5}.offer-card span{color:var(--color-muted);font-size:.85rem}.offer-card small{color:var(--color-primary);font-weight:750}@keyframes pulse{to{opacity:.55}}.information-panel{display:flex;gap:var(--space-3);align-items:flex-start;margin-top:var(--space-6);padding:var(--space-4);border:1px solid #d3e0e5;border-radius:var(--radius-md);background:var(--color-blue);color:var(--color-blue-ink)}.information-panel p{margin:0;font-size:.9rem}.information-panel__dot{width:9px;height:9px;flex:0 0 auto;margin-top:.28rem;border-radius:50%;background:var(--color-blue-ink)}.bottom-navigation{position:fixed;z-index:10;right:0;bottom:0;left:0;min-height:calc(var(--mobile-bottom-navigation-height) + env(safe-area-inset-bottom));padding:var(--space-2) var(--space-2) calc(var(--space-2) + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);background:#fffffff5;box-shadow:0 -4px 18px #1f2b270a}.navigation-links{display:flex;min-width:0}.navigation-links--bottom{display:grid;width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}.navigation-link{display:flex;min-width:var(--touch-target);min-height:var(--touch-target);align-items:center;justify-content:center;color:var(--color-muted);font-size:.7rem;font-weight:650}.navigation-links--bottom .navigation-link{min-width:0;flex-direction:column;gap:2px;white-space:nowrap}.navigation-link.is-active{color:var(--color-primary)}.navigation-link.is-active .icon{stroke-width:2.35}.icon{width:21px;height:21px;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.sidebar-navigation,.admin-entry{display:none}.admin-shell,.admin-frame{min-height:100dvh}.admin-sidebar{display:none}.admin-mobile-header{display:flex;min-height:calc(var(--touch-target) + env(safe-area-inset-top));align-items:flex-end;justify-content:space-between;gap:var(--space-2);padding:calc(var(--space-2) + env(safe-area-inset-top)) var(--space-4) var(--space-2);border-bottom:1px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);font-size:.8rem;font-weight:700}.admin-content{width:min(100%,1320px);min-height:calc(100dvh - var(--touch-target));margin-inline:auto;padding:var(--space-6) var(--space-4) calc(var(--space-8) + env(safe-area-inset-bottom))}.admin-page{display:grid;gap:var(--space-5)}.admin-page__header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.admin-page__header .primary-button{margin:0;display:inline-flex;align-items:center}.admin-stat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.admin-stat-card{display:grid;min-height:112px;align-content:space-between;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.admin-stat-card span{color:var(--color-muted);font-size:.84rem;font-weight:700}.admin-stat-card strong{font-size:1.8rem}.admin-stat-card--sage{background:var(--color-sage);border-color:var(--color-sage-border)}.admin-stat-card--blue{background:var(--color-blue)}.admin-stat-card--beige{background:var(--color-beige)}.admin-stat-card--amber{background:var(--color-amber);border-color:var(--color-amber-border)}.admin-stat-card--skeleton{min-height:112px;background:var(--color-blue);animation:pulse 1s ease-in-out infinite alternate}.admin-filters{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.admin-filters label{display:grid;gap:var(--space-1);color:var(--color-muted);font-size:.8rem;font-weight:700}.admin-filters input,.admin-filters select{width:100%;min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.admin-results-count{margin:0;color:var(--color-muted);font-size:.9rem}.admin-recipe-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.admin-recipe-card{display:grid;grid-template-columns:100px minmax(0,1fr);overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.admin-recipe-card__image{display:grid;min-height:100%;place-items:center;overflow:hidden;background:var(--color-blue);color:var(--color-blue-ink);font-size:.75rem;text-align:center}.admin-recipe-card__image img{width:100%;height:100%;object-fit:cover}.admin-recipe-card>div:last-child{display:grid;gap:var(--space-2);padding:var(--space-3)}.admin-recipe-card h2,.admin-recipe-card p{margin:0}.admin-recipe-card h2{overflow-wrap:anywhere;font-size:1rem}.admin-recipe-card p{color:var(--color-muted);font-size:.8rem}.admin-recipe-card strong{color:var(--color-primary);font-size:.85rem}.admin-status{width:fit-content;padding:2px var(--space-2);border-radius:999px;background:var(--color-blue);color:var(--color-blue-ink);font-size:.72rem;font-weight:750}.admin-status--published{background:var(--color-sage);color:var(--color-sage-ink)}.admin-status--archived{background:var(--color-beige);color:var(--color-beige-ink)}.admin-pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);color:var(--color-muted);font-size:.85rem}.admin-detail-layout,.admin-detail-content{display:grid;gap:var(--space-4)}.admin-detail-panel{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.admin-detail-panel h2,.admin-detail-panel p{margin:0}.admin-detail-panel dl{display:grid;gap:var(--space-2);margin:0}.admin-detail-panel dl div{display:flex;justify-content:space-between;gap:var(--space-3)}.admin-detail-panel dt{color:var(--color-muted)}.admin-detail-panel dd{margin:0;font-weight:750}.admin-image-placeholder{display:grid;min-height:180px;place-items:center;padding:var(--space-4);overflow-wrap:anywhere;border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:var(--color-blue);color:var(--color-blue-ink)}.admin-ingredient-list,.admin-step-list{display:grid;gap:var(--space-3);margin:0;padding-left:var(--space-5)}.admin-ingredient-list li{display:flex;justify-content:space-between;gap:var(--space-3)}.admin-ingredient-list span{color:var(--color-muted)}.admin-step-list p{margin-top:var(--space-1);color:var(--color-muted)}.admin-editor-layout,.admin-editor-form{display:grid;gap:var(--space-4)}.admin-editor-aside{display:grid;align-self:start;gap:var(--space-3)}.admin-readonly-content{margin:0;white-space:pre-wrap;color:var(--color-muted);font:inherit;line-height:1.55}.admin-access-denied{display:grid;min-height:100dvh;align-content:center;justify-items:center;gap:var(--space-3);padding:var(--space-6);text-align:center}.admin-access-denied h1,.admin-access-denied p{margin:0}.brand-mark{display:inline-flex;min-height:var(--touch-target);align-items:center;gap:var(--space-2);color:var(--color-primary);font-size:.9rem;font-weight:700}.brand-mark__symbol{display:grid;width:28px;height:28px;place-items:center;border-radius:7px;background:var(--color-primary);color:#fff;font-family:Georgia,serif;font-size:1rem}.brand-mark__wordmark strong{font-weight:800}.empty-page{display:grid;min-height:min(520px,calc(100dvh - 160px));place-items:center}.empty-state{display:grid;width:min(100%,520px);gap:var(--space-5);padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.empty-state--beige{background:var(--color-beige);border-color:#e3d8c3}.empty-state--blue{background:var(--color-blue);border-color:#d3e0e5}.empty-state h1{font-size:1.7rem}.empty-state p:not(.eyebrow){margin:var(--space-2) 0 0;color:var(--color-muted)}.route-fallback{display:grid;min-height:220px;place-items:center}.route-fallback span{width:28px;height:28px;border:3px solid var(--color-sage);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}.login-page{display:grid;min-height:100dvh;place-items:center;padding:calc(var(--space-6) + env(safe-area-inset-top)) var(--space-4) calc(var(--space-6) + env(safe-area-inset-bottom))}.login-panel{display:grid;width:min(100%,420px);gap:var(--space-6);padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-subtle)}.configuration-panel{background:var(--color-blue);border-color:#d3e0e5}.login-panel h1{font-size:1.85rem}.login-form{display:grid;gap:var(--space-2)}.login-form label{margin-top:var(--space-2);color:var(--color-ink);font-size:.9rem;font-weight:700}.login-form input{width:100%;min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.login-form input:focus-visible,.primary-button:focus-visible,.sign-out-button:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.primary-button{min-height:var(--touch-target);margin-top:var(--space-4);padding:0 var(--space-4);border:0;border-radius:var(--radius-sm);background:var(--color-primary);color:#fff;cursor:pointer;font:inherit;font-weight:750}.primary-button:disabled{cursor:wait;opacity:.72}.form-error{margin:var(--space-2) 0 0;color:#9b2c2c;font-size:.9rem}.secondary-button{display:inline-flex;min-height:var(--touch-target);align-items:center;justify-content:center;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);cursor:pointer;font:inherit;font-weight:750}.secondary-button:disabled{cursor:wait;opacity:.72}.recipe-add-button{display:inline-flex;align-items:center;margin-top:var(--space-3)}.recipe-header-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.recipe-header-actions .recipe-add-button{margin-top:var(--space-3)}.recipe-products-link{display:inline-flex;align-items:center;margin-top:var(--space-3)}.user-products-page{display:grid;gap:var(--space-4)}.user-products-header{display:grid;gap:var(--space-4);margin-bottom:var(--space-2)}.user-product-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.user-product-card{display:grid;gap:var(--space-3);min-height:164px;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.user-product-card__body{display:grid;gap:var(--space-1)}.user-product-card__label{color:var(--color-sage-ink);font-size:.78rem;font-weight:750}.user-product-card h2,.user-product-card p{margin:0}.user-product-card h2{overflow-wrap:anywhere;font-size:1.1rem}.user-product-card p{color:var(--color-muted);font-size:.9rem}.user-product-card p strong{color:var(--color-ink)}.user-product-card__edit{display:inline-flex;min-height:var(--touch-target);align-items:center;justify-content:center}.user-product-skeleton{display:grid;min-height:164px;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.user-product-skeleton span{display:block;min-height:16px;border-radius:var(--radius-sm);background:var(--color-blue)}.user-product-skeleton span:first-child{width:32%}.user-product-skeleton span:nth-child(2){width:70%;min-height:28px}.user-product-skeleton span:last-child{width:52%}.user-product-form{display:grid;gap:var(--space-4)}.user-product-form__pair{display:grid;gap:var(--space-3)}.price-input{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.price-input input{border:0!important}.price-input span{padding-inline:var(--space-3);color:var(--color-muted);font-weight:700}.user-product-price-preview{display:grid;gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-sage-border);background:var(--color-sage);color:var(--color-sage-ink)}.user-product-price-preview strong{color:var(--color-primary-strong)}.user-product-price-preview small{color:var(--color-sage-ink)}.user-product-delete{min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-amber-border);border-radius:var(--radius-sm);background:var(--color-amber);color:var(--color-amber-ink);cursor:pointer;font:inherit;font-weight:750}.user-product-delete:disabled{cursor:wait;opacity:.72}.recipe-detail__actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.recipe-editor-page{display:grid;max-width:760px;gap:var(--space-5);padding-bottom:calc(var(--space-8) + env(safe-area-inset-bottom))}.recipe-editor-header{display:grid;gap:var(--space-2)}.recipe-editor-header h1,.recipe-editor-header p{margin:0}.recipe-editor-form{display:grid;gap:var(--space-4)}.recipe-editor-panel{display:grid;gap:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.recipe-editor-panel--beige{background:var(--color-beige);border-color:#e3d8c3}.recipe-editor-panel h2{margin:0;font-size:1.18rem}.recipe-editor-panel label{display:grid;gap:var(--space-2);color:var(--color-ink);font-size:.9rem;font-weight:700}.recipe-editor-panel input,.recipe-editor-panel select,.recipe-editor-panel textarea{width:100%;min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.recipe-editor-panel textarea{min-height:112px;padding-block:var(--space-3);resize:vertical}.recipe-editor-panel [aria-invalid=true]{border-color:var(--color-amber-border);background:var(--color-amber)}.recipe-editor-portions{display:grid;gap:var(--space-3)}.recipe-editor-help{margin:-2px 0 0;color:var(--color-muted);font-size:.85rem}.recipe-editor-field-error{color:var(--color-amber-ink);font-size:.82rem}.recipe-image-panel__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}.recipe-image-panel__heading h2,.recipe-image-panel__heading p{margin:0}.recipe-image-panel__heading p{margin-top:var(--space-1);color:var(--color-muted);font-size:.85rem}.recipe-image-panel__preview{display:grid;place-items:center;min-height:176px;overflow:hidden;border:1px dashed var(--color-border);border-radius:var(--radius-sm);background:var(--color-beige);color:var(--color-beige-ink)}.recipe-image-panel__preview img{display:block;width:100%;max-height:320px;object-fit:cover}.recipe-image-panel__actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.recipe-image-panel__actions label{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.recipe-image-panel__actions label[aria-disabled=true]{cursor:not-allowed;opacity:.6}.recipe-image-panel__actions input[type=file]{position:absolute;width:1px;height:1px;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap}.recipe-editor-actions{display:flex;justify-content:flex-end;gap:var(--space-3);flex-wrap:wrap}.recipe-editor-actions .primary-button{margin-top:0}.recipe-editor-skeleton{display:grid;gap:var(--space-4)}.recipe-editor-skeleton span{display:block;min-height:120px;border-radius:var(--radius-sm);background:var(--color-blue)}.recipe-ingredients-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.recipe-ingredients-heading>div{display:grid;gap:var(--space-2)}.recipe-ingredients-heading .secondary-button{flex:0 0 auto}.recipe-ingredients-empty{margin:0;padding:var(--space-3);border:1px dashed var(--color-border);color:var(--color-muted)}.recipe-product-selector{display:grid;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);background:var(--color-blue)}.recipe-product-selector-state{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.recipe-product-results{display:grid;margin:0;padding:0;list-style:none;border:1px solid var(--color-border);background:var(--color-surface)}.recipe-product-results li+li{border-top:1px solid var(--color-border)}.recipe-product-results button{display:grid;width:100%;min-height:var(--touch-target);gap:2px;padding:var(--space-3);border:0;background:var(--color-surface);color:var(--color-ink);text-align:left;cursor:pointer;font:inherit}.recipe-product-results button:hover,.recipe-product-results button:focus-visible{background:var(--color-sage)}.recipe-product-results span,.recipe-ingredient-item h3{overflow-wrap:anywhere}.recipe-product-results small,.recipe-ingredient-item p{color:var(--color-muted);font-size:.82rem;font-weight:700}.recipe-ingredient-list{display:grid;gap:var(--space-3)}.recipe-ingredient-item{display:grid;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.recipe-ingredient-item header,.recipe-ingredient-item h3,.recipe-ingredient-item p{margin:0}.recipe-ingredient-item header>div{display:grid;gap:2px}.recipe-ingredient-item h3{font-size:1rem}.recipe-ingredient-fields{display:grid;gap:var(--space-3)}.recipe-ingredient-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.recipe-ingredient-delete{min-height:var(--touch-target);padding:0 var(--space-2);border:1px solid var(--color-amber-border);border-radius:var(--radius-sm);background:var(--color-amber);color:var(--color-amber-ink);cursor:pointer;font:inherit;font-weight:750}.recipe-ingredient-delete:disabled{cursor:wait;opacity:.72}.recipe-preparation-list{display:grid;gap:var(--space-3)}.recipe-preparation-item{display:grid;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.recipe-preparation-item h3{margin:0;font-size:1rem}.recipe-preparation-item label{display:grid;gap:var(--space-2);color:var(--color-ink);font-size:.9rem;font-weight:700}.recipe-preparation-item input,.recipe-preparation-item textarea{width:100%;min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.recipe-preparation-item textarea{min-height:112px;padding-block:var(--space-3);resize:vertical}.recipe-preparation-item [aria-invalid=true]{border-color:var(--color-amber-border);background:var(--color-amber)}.recipe-preparation-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}@media(min-width:640px){.recipe-editor-portions{grid-template-columns:repeat(3,minmax(0,1fr))}.recipe-ingredient-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:640px){.user-product-form__pair{grid-template-columns:repeat(2,minmax(0,1fr))}}.editor-page{padding-bottom:calc(var(--space-8) + env(safe-area-inset-bottom))}.editor-grid,.editor-sections{display:grid;gap:var(--space-4)}.editor-grid{margin-top:var(--space-4)}.editor-panel,.editor-section{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.editor-panel--venue{background:var(--color-blue)}.editor-panel label,.editor-section label{display:grid;gap:var(--space-2);color:var(--color-ink);font-size:.9rem;font-weight:700}.editor-panel input:not([type=checkbox]),.editor-panel textarea,.editor-section input,.editor-section select{width:100%;min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.editor-panel textarea{min-height:112px;padding-block:var(--space-3);resize:vertical}.editor-sections{margin-top:var(--space-5)}.editor-sections__heading,.editor-section__actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);flex-wrap:wrap}.editor-sections__heading button,.editor-section__actions button,.editor-actions>button{min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit;font-weight:700}.editor-section small{color:var(--color-muted);font-weight:700}.editor-section__items{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);color:var(--color-muted)}.editor-section__items>p{margin:0;padding:var(--space-2) 0}.editor-item{display:grid;gap:var(--space-3);padding:var(--space-3) 0}.editor-item+.editor-item{border-top:1px solid var(--color-border)}.editor-item__main{display:grid;gap:var(--space-2);min-width:0}.editor-item__main strong{color:var(--color-ink);overflow-wrap:anywhere}.editor-item__main label span{color:var(--color-muted);font-weight:400}.editor-item__main textarea{width:100%;min-height:84px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit;resize:vertical}.editor-item__actions,.editor-item__actions>div,.editor-item-add{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.editor-item__actions{justify-content:space-between}.editor-item__actions button,.editor-item-add button,.recipe-selector button{min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit;font-weight:700}.editor-item__included{display:flex!important;align-items:center;min-height:var(--touch-target);gap:var(--space-2)}.editor-item__included input{width:auto!important;min-height:auto!important}.editor-item-add{padding-top:var(--space-1)}.editor-section__delete{color:#9b2c2c!important}.editor-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-5)}.editor-actions .primary-button{margin-top:0}.recipe-selector{position:fixed;z-index:20;inset:0;display:grid;align-items:end;background:#10181473}.recipe-selector__panel{display:grid;gap:var(--space-3);max-height:min(78dvh,720px);padding:var(--space-4);overflow:auto;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--color-surface);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}.recipe-selector__heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.recipe-selector__heading h2{margin:0}.recipe-selector__results{display:grid;gap:var(--space-2)}.recipe-selector__results button{display:grid;min-height:var(--touch-target);gap:2px;padding:var(--space-3);text-align:left}.recipe-selector__results small{color:var(--color-muted)}@media(min-width:768px){.recipe-selector{align-items:center;justify-items:center;padding:var(--space-4)}.recipe-selector__panel{width:min(100%,560px);border-radius:var(--radius-sm)}}@media(min-width:768px){.editor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.recipes-page__header{display:grid;gap:var(--space-4);margin-bottom:var(--space-6)}.recipe-search{position:relative}.recipe-search input{width:100%;min-height:var(--touch-target);padding:0 76px 0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.recipe-search button{position:absolute;top:0;right:0;min-height:var(--touch-target);padding:0 var(--space-3);border:0;background:transparent;color:var(--color-primary);cursor:pointer;font:inherit;font-size:.82rem;font-weight:750}.category-filters{display:flex;gap:var(--space-2);overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.category-filters button{min-height:40px;flex:0 0 auto;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-muted);cursor:pointer;font:inherit;font-size:.85rem;font-weight:700}.category-filters button.is-active{border-color:var(--color-primary);background:var(--color-sage);color:var(--color-primary-strong)}.recipe-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.recipe-card{display:grid;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.recipe-card:focus-visible{outline:3px solid var(--color-primary);outline-offset:2px}.recipe-card__image{display:grid;aspect-ratio:16 / 9;place-items:center;overflow:hidden;background:var(--color-blue);color:var(--color-blue-ink);font-size:.85rem}.recipe-card__image img{width:100%;height:100%;object-fit:cover}.recipe-card__body{display:grid;gap:var(--space-2);padding:var(--space-4)}.recipe-card__category{color:var(--color-sage-ink);font-size:.78rem;font-weight:750}.recipe-card h2{margin:0;font-size:1.08rem;line-height:1.2}.recipe-card p{display:-webkit-box;margin:0;overflow:hidden;color:var(--color-muted);font-size:.9rem;-webkit-box-orient:vertical;-webkit-line-clamp:3}.recipe-card__price{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-2);color:var(--color-muted);font-size:.78rem}.recipe-card__price strong{color:var(--color-primary-strong);font-size:1rem}.text-link{display:inline-flex;min-height:var(--touch-target);align-items:center;color:var(--color-primary);font-weight:750}.catalog-state--private{background:var(--color-beige);border-color:#e3d8c3}.user-recipe-card .recipe-card__category{color:var(--color-blue-ink)}.catalog-state{display:grid;gap:var(--space-3);max-width:520px;padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.catalog-state h2,.catalog-state p{margin:0}.catalog-state p{color:var(--color-muted)}.catalog-more{display:grid;place-items:center;margin-top:var(--space-6)}.recipe-skeleton{display:grid;gap:var(--space-3);min-height:290px;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.recipe-skeleton span{display:block;border-radius:var(--radius-sm);background:var(--color-blue)}.recipe-skeleton span:first-child{min-height:150px}.recipe-skeleton span:nth-child(2){width:60%;min-height:20px}.recipe-skeleton span:last-child{width:82%;min-height:14px}.detail-placeholder{display:grid;gap:var(--space-4);max-width:620px}.detail-placeholder .page-lead{margin:0}.back-link{width:fit-content;min-height:var(--touch-target);display:inline-flex;align-items:center;color:var(--color-primary);font-weight:750}.detail-id{color:var(--color-muted);font-size:.8rem}.recipe-detail{display:grid;gap:var(--space-5);max-width:1120px}.recipe-detail__hero{display:grid;aspect-ratio:16 / 9;place-items:center;overflow:hidden;border-radius:var(--radius-md);background:var(--color-blue);color:var(--color-blue-ink)}.recipe-detail__hero img{width:100%;height:100%;object-fit:cover}.recipe-detail__layout{display:grid;gap:var(--space-5)}.recipe-detail__content,.calculation-card{display:grid;gap:var(--space-4)}.recipe-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--color-muted)}.recipe-section{display:grid;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.recipe-section h2,.calculation-card h2{margin:0;font-size:1.2rem}.scaling-panel{display:grid;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.scaling-panel h2,.scaling-panel p{margin:0}.scaling-panel>p{color:var(--color-muted);font-size:.9rem}.scaling-modes{display:flex;gap:var(--space-2)}.scaling-modes button,.scaling-reset{min-height:var(--touch-target);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit;font-weight:700}.scaling-modes button{flex:1}.scaling-modes button.is-active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.scaling-panel label{display:grid;gap:var(--space-1);color:var(--color-muted);font-size:.85rem;font-weight:700}.scaling-panel input,.scaling-panel select{min-height:var(--touch-target);padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);font:inherit}.scaling-input-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,.65fr);gap:var(--space-3)}.scaling-summary{color:var(--color-primary)!important;font-weight:700}.scaling-warning{color:var(--color-amber-ink)!important}.scaling-reset{width:fit-content;padding:0 var(--space-3)}.ingredient-line{display:flex;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.ingredient-line span{display:grid;gap:2px}.ingredient-line small{color:var(--color-sage-ink);font-size:.75rem;font-weight:700}.ingredient-line em{color:var(--color-muted);font-size:.8rem;font-style:normal}.preparation-step{display:grid;grid-template-columns:28px 1fr;gap:var(--space-3)}.preparation-step b{color:var(--color-primary)}.preparation-step p{margin:var(--space-1) 0 0;color:var(--color-muted)}.calculation-card{align-self:start;padding:var(--space-5);border:1px solid var(--color-sage-border);border-radius:var(--radius-md);background:var(--color-sage)}.calculation-card__metric{display:flex;justify-content:space-between;gap:var(--space-3)}.calculation-card__notice,.calculation-card__warning{margin:0;color:var(--color-sage-ink);font-size:.85rem}.calculation-card--incomplete{border-color:var(--color-amber-border);background:var(--color-amber)}.calculation-card--incomplete .calculation-card__notice,.calculation-card--incomplete .calculation-card__warning{color:var(--color-amber-ink)}.calculation-card__missing-list{display:grid;gap:var(--space-1);margin:0;padding-left:var(--space-5);color:var(--color-amber-ink);font-size:.9rem}.calculation-card__more{width:fit-content;min-height:var(--touch-target);padding:0;border:0;background:transparent;color:var(--color-amber-ink);cursor:pointer;font:inherit;font-weight:750;text-decoration:underline}@keyframes page-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(1turn)}}@media(min-width:960px){.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar-navigation{display:flex;min-height:100dvh;flex-direction:column;padding:var(--space-5);border-right:1px solid var(--color-border);background:#fbfbf8}.navigation-links--sidebar{flex-direction:column;gap:var(--space-1);margin-top:var(--space-8)}.navigation-links--sidebar .navigation-link{justify-content:flex-start;gap:var(--space-3);padding:0 var(--space-3);border-radius:var(--radius-sm)}.navigation-links--sidebar .navigation-link.is-active{background:var(--color-sage);color:var(--color-primary-strong)}.sidebar-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;color:var(--color-muted);font-size:.78rem}.admin-entry{display:inline-flex;min-height:var(--touch-target);align-items:center;margin-top:var(--space-3);padding:0 var(--space-3);border:1px solid var(--color-sage-border);border-radius:var(--radius-sm);color:var(--color-primary);font-size:.84rem;font-weight:750}.mobile-header,.bottom-navigation{display:none}.app-content{min-height:100dvh;padding:56px clamp(32px,6vw,88px)}.admin-shell{display:grid;grid-template-columns:248px minmax(0,1fr)}.admin-sidebar{display:flex;min-height:100dvh;flex-direction:column;padding:var(--space-5);border-right:1px solid var(--color-border);background:#fbfbf8}.admin-sidebar>p{margin:var(--space-5) 0 var(--space-2);color:var(--color-muted);font-size:.78rem;font-weight:750;text-transform:uppercase}.admin-sidebar nav{display:grid;gap:var(--space-1)}.admin-sidebar nav a{display:flex;min-height:var(--touch-target);align-items:center;padding:0 var(--space-3);border-radius:var(--radius-sm);color:var(--color-muted);font-weight:700}.admin-sidebar nav a.active{background:var(--color-sage);color:var(--color-primary-strong)}.admin-sidebar .sign-out-button{width:fit-content;margin-top:auto}.admin-mobile-header{display:none}.admin-content{min-height:100dvh;padding:56px clamp(32px,5vw,88px)}.admin-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-filters{grid-template-columns:minmax(200px,2fr) repeat(3,minmax(140px,1fr))}.admin-recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-recipe-card{grid-template-columns:1fr}.admin-recipe-card__image{min-height:148px}.admin-detail-layout{grid-template-columns:minmax(0,1fr) minmax(280px,360px)}.admin-detail-layout>.calculation-card{position:sticky;top:var(--space-6)}.admin-editor-layout{grid-template-columns:minmax(0,1fr) minmax(260px,320px)}.admin-editor-aside{position:sticky;top:var(--space-6)}.start-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.start-action{min-height:176px;grid-template-columns:1fr;align-content:start}.start-action>.icon{justify-self:end}.empty-state{grid-template-columns:var(--touch-target) 1fr;align-items:start}.recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.user-products-header{grid-template-columns:minmax(0,1fr) minmax(280px,360px);align-items:end}.user-product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.recipe-detail__layout{grid-template-columns:minmax(0,1fr) minmax(280px,360px)}}@media(max-width:959px){.system-offers-page .page-intro{margin-bottom:var(--space-4)}.system-offers-page h1{font-size:1.85rem}.system-offers-page .offer-card{gap:var(--space-1);padding:var(--space-3)}.system-offers-page .offer-card small{color:var(--color-muted);font-weight:500;line-height:1.35}.system-offers-page .offer-card b{margin-top:var(--space-1);color:var(--color-primary);font-size:.95rem}.recipe-detail__content>h1{font-size:1.78rem;line-height:1.12}.scaling-panel{gap:var(--space-2);padding:var(--space-3)}.scaling-panel h2{font-size:1.2rem;line-height:1.2}}@media(min-width:1240px){.recipe-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.user-product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
