@import "https://fonts.googleapis.com/css2?family=Archivo+Black&family=Oswald:wght@600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap";:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f7f4ee;--surface:#efebe2;--surface2:#e8e2d6;--surface3:#e0d9cc;--text:#2a3a2b;--muted:#7a8c6a;--muted2:#5a6e4a;--olive:#3d5a3e;--olive2:#4e7250;--accent:#c45c3a;--accent2:#a8472a;--accent-bg:#c45c3a12;--olive-bg:#3d5a3e12;--border:#d8d1c4;--border2:#c8bfb0;--p-color:#3d6b8c;--c-color:#c9910a;--f-color:#c45c3a;--p-bg:#3d6b8c14;--c-bg:#c9910a14;--f-bg:#c45c3a14;--danger:#c62828;--success:#2e7d32;--shadow:0 2px 16px #2a3a2b0f}*{box-sizing:border-box}html{background:var(--bg);min-height:100%}body{min-width:320px;color:var(--text);background:var(--bg);margin:0;font-family:Plus Jakarta Sans,sans-serif}body:before{content:"";pointer-events:none;opacity:.035;z-index:-1;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='96' height='96' viewBox='0 0 96 96'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='96' height='96' filter='url(%23n)' opacity='.72'/%3E%3C/svg%3E");position:fixed;inset:0}button,input,select{font:inherit}button{cursor:pointer}.app-shell{width:min(1180px,100% - 32px);margin:0 auto;padding:24px 0 52px}.app-header{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:20px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:4px;padding:16px 24px;display:flex}.header-brand{align-items:center;gap:12px;display:flex}.header-brand .eyebrow{margin:0}.wordmark{letter-spacing:-.04em;font-family:Archivo Black,sans-serif;font-size:1.35rem;line-height:1}.wordmark-plate{color:var(--olive)}.wordmark-flex{color:var(--accent)}.eyebrow{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;margin:0 0 8px;font-size:.63rem;font-weight:700}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:.01em;text-transform:uppercase;font-family:Oswald,sans-serif;font-weight:700}h1{max-width:720px;margin-bottom:12px;font-size:clamp(2.8rem,6vw,5rem);line-height:.94}h2{margin-bottom:0;font-size:clamp(1.8rem,3.5vw,2.6rem);line-height:1}h3{margin-bottom:12px;font-size:1.45rem;line-height:1.05}.feedback-link{border:1px solid var(--accent);background:var(--accent);color:var(--bg);letter-spacing:.08em;text-transform:uppercase;border-radius:14px;justify-content:center;align-items:center;padding:11px 14px;font-size:.78rem;font-weight:800;text-decoration:none;transition:background .15s,transform .15s;display:inline-flex}.feedback-link:hover{background:var(--accent2);transform:translateY(-1px)}.workspace-grid{grid-template-columns:minmax(320px,420px) minmax(0,1fr);align-items:start;gap:20px;margin-top:20px;display:grid}.control-stack{gap:14px;display:grid}.panel,.result-stage{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:20px}.panel{padding:20px}.result-stage{background:var(--bg);min-height:650px;padding:24px}.panel-heading,.row-heading,.result-header,.section-title-row,.drawer-header,.drawer-actions{justify-content:space-between;align-items:center;gap:16px;display:flex}.panel-heading{align-items:flex-start;margin-bottom:16px}.row-heading{align-items:center}.recipe-list{gap:8px;display:grid}.recipe-option{border:1px solid var(--border);width:100%;color:var(--text);text-align:left;background:var(--surface2);border-radius:14px;justify-content:space-between;gap:14px;padding:13px 14px;transition:transform .15s,border-color .15s,background .15s;display:flex}.recipe-option:hover{border-color:var(--border2);background:var(--surface3);transform:translateY(-1px)}.recipe-option.active{border-color:var(--olive);background:var(--olive-bg)}.recipe-option strong{font-family:Oswald,sans-serif;font-size:1.15rem;font-weight:600;line-height:1.1;display:block}.recipe-option small{color:var(--muted2);margin-top:4px;font-size:.68rem;font-weight:600;display:block}.base-cal{color:var(--olive);flex:none;font-size:.68rem;font-weight:700}.slider-block{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) minmax(108px,max-content) minmax(40px,max-content);align-items:center;gap:8px;padding:14px 0;display:grid}.slider-block:not(.calorie-block),.derived-fat{grid-template-columns:minmax(0,1fr) minmax(108px,max-content) minmax(40px,max-content);column-gap:8px}.slider-block:last-of-type{border-bottom:0}.slider-block input[type=range]{--range-color:var(--olive);background:linear-gradient(to right, var(--range-color) 0 var(--range-progress,50%), var(--bg) var(--range-progress,50%) 100%);appearance:none;border-radius:999px;outline:none;grid-column:1/-1;width:100%;height:10px}.slider-block input[type=range]::-webkit-slider-runnable-track{background:0 0;border-radius:999px;height:10px}.slider-block input[type=range]::-webkit-slider-thumb{border:3px solid var(--bg);background:var(--range-color);appearance:none;border-radius:50%;width:22px;height:22px;margin-top:-6px;box-shadow:0 2px 8px #2a3a2b2e}.slider-block input[type=range]::-moz-range-track{background:0 0;border-radius:999px;height:10px}.slider-block input[type=range]::-moz-range-progress{background:var(--range-color);border-radius:999px;height:10px}.slider-block input[type=range]::-moz-range-thumb{border:3px solid var(--bg);background:var(--range-color);border-radius:50%;width:16px;height:16px;box-shadow:0 2px 8px #2a3a2b2e}.slider-block.protein input{--range-color:var(--p-color)}.slider-block.protein .slider-label,.slider-block.protein strong{color:var(--p-color)}.slider-block.carbs input{--range-color:var(--c-color)}.slider-block.carbs .slider-label,.slider-block.carbs strong{color:var(--c-color)}.slider-block strong{text-align:right;justify-self:end;font-family:Oswald,sans-serif;font-size:2rem;font-weight:700;line-height:1}.slider-block small{color:var(--muted2);font-family:Plus Jakarta Sans,sans-serif;font-size:.68rem;font-weight:700}.slider-block em{color:var(--muted2);text-align:right;justify-self:end;font-size:.78rem;font-style:normal;font-weight:700}.slider-label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.88rem;font-weight:700}.derived-fat{background:var(--surface2);border:1px solid #c45c3a1f;border-radius:14px;align-items:center;gap:8px;margin:14px -14px 0;padding:14px;display:grid}.derived-fat-copy{gap:4px;display:grid}.derived-fat span{color:var(--f-color);letter-spacing:.08em;text-transform:uppercase;font-size:.88rem;font-weight:700}.derived-fat strong{color:var(--f-color);text-align:right;justify-self:end;font-family:Oswald,sans-serif;font-size:2rem;font-weight:700;line-height:1}.derived-fat small{color:var(--muted2);font-size:.68rem;font-weight:700}.derived-fat em{color:var(--muted2);text-align:right;justify-self:end;font-size:.78rem;font-style:normal;font-weight:700}.profile-buttons{flex-wrap:wrap;gap:8px;display:flex}.profile-button,.ghost-button,.primary-button,.icon-button{border:1px solid var(--border2);color:var(--olive);letter-spacing:.04em;background:0 0;font-family:Plus Jakarta Sans,sans-serif;font-size:.78rem;font-weight:700;transition:background .15s,color .15s,border-color .15s}.profile-button{background:var(--olive-bg);border-radius:20px;padding:8px 13px}.profile-button.active{border-color:var(--olive);background:var(--olive);color:var(--bg)}.ghost-button{background:var(--bg);border-radius:20px;padding:8px 13px}.ghost-button:hover,.icon-button:hover{border-color:var(--olive);background:var(--olive);color:var(--bg)}.primary-button{border-color:var(--olive);background:var(--olive);color:var(--bg);border-radius:6px;padding:10px 16px}.primary-button:hover{background:var(--olive2)}.primary-button:disabled{opacity:.45;cursor:not-allowed}.icon-button{background:var(--bg);border-radius:20px;padding:8px 12px}.hint-copy{color:var(--muted2);margin:12px 0 0;font-size:.95rem;font-weight:500;line-height:1.45}.result-header{align-items:flex-start;margin-bottom:18px}.status-pill{border:1px solid var(--olive);background:var(--olive-bg);color:var(--olive);letter-spacing:.08em;text-transform:uppercase;border-radius:20px;flex:none;padding:8px 12px;font-size:.68rem;font-weight:700}.status-constrained,.status-degraded{border-color:var(--accent);background:var(--accent-bg);color:var(--accent)}.status-infeasible,.status-error{border-color:var(--danger);color:var(--danger);background:#c6282814}.status-detail{border:1px solid var(--border);background:var(--surface);color:var(--muted2);border-radius:14px;margin-bottom:14px;padding:12px 14px;font-size:.92rem;font-weight:700;line-height:1.45}.recipe-result{gap:16px;transition:opacity .18s;display:grid}.recipe-result.soft-loading{opacity:.72}.result-subhead{justify-content:space-between;align-items:center;gap:14px;display:flex}.result-subhead span,.mode-label{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;flex:none;font-size:.63rem;font-weight:800}.result-subhead p{color:var(--muted2);text-align:right;margin:0;font-size:.78rem;font-weight:700;line-height:1.35}.macro-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.macro-card{border:1px solid var(--border);background:var(--surface);border-radius:14px;padding:14px}.macro-card span{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;font-size:.63rem;font-weight:700;display:block}.macro-card strong{margin-top:4px;font-family:Oswald,sans-serif;font-size:2.35rem;font-weight:700;line-height:1;display:block}.macro-card.protein strong{color:var(--p-color)}.macro-card.carbs strong{color:var(--c-color)}.macro-card.fat strong{color:var(--f-color)}.macro-card.calories strong{color:var(--olive)}.result-section{border:1px solid var(--border);background:var(--surface);border-radius:20px;padding:18px}.section-title-row span{color:var(--muted2);font-size:.68rem;font-weight:700}.display-mode-row{border:1px solid var(--border);background:var(--surface2);border-radius:14px;justify-content:space-between;align-items:center;gap:16px;margin:14px 0;padding:12px;display:flex}.display-mode-row p{color:var(--muted2);margin:4px 0 0;font-size:.78rem;font-weight:600;line-height:1.4}.mode-toggle{border:1px solid var(--border2);background:var(--bg);border-radius:999px;flex:none;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:inline-grid}.mode-toggle button{min-width:92px;color:var(--olive);letter-spacing:.06em;text-transform:uppercase;background:0 0;border:0;border-radius:999px;padding:8px 11px;font-size:.72rem;font-weight:800}.mode-toggle button.active{background:var(--olive);color:var(--bg)}.ingredient-list{gap:8px;display:grid}.ingredient-row{background:var(--surface2);border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px;display:grid}.ingredient-row.swapped{background:var(--accent-bg)}.ingredient-row.added{background:var(--olive-bg)}.ingredient-row strong{margin-top:2px;font-family:Oswald,sans-serif;font-size:1.15rem;font-weight:600;display:block}.ingredient-row small{color:var(--muted2);margin-top:3px;font-size:.68rem;font-weight:600;line-height:1.35;display:block}.crossed{color:var(--muted);text-decoration:line-through}.swap-word{color:var(--accent)}.ingredient-qty{color:var(--olive);text-align:right;font-family:Oswald,sans-serif;font-size:1.2rem;font-weight:600}.ingredient-qty small{color:var(--muted2);font-family:Plus Jakarta Sans,sans-serif;font-size:.56rem;font-weight:700}.explanation-panel,.notes-panel{border:1px solid var(--border);background:var(--surface);border-radius:16px;padding:16px 18px}.explanation-panel summary{color:var(--accent);letter-spacing:.04em;cursor:pointer;font-size:.78rem;font-weight:700}.explanation-panel ul{color:var(--muted2);margin:12px 0 0;padding-left:19px;font-weight:500;line-height:1.5}.notes-panel p{color:var(--muted2);margin-bottom:8px;font-weight:500}.notes-panel p:last-child{margin-bottom:0}.steps-section ol{gap:10px;margin:0;padding:0;list-style:none;display:grid}.steps-section li{grid-template-columns:32px minmax(0,1fr);gap:12px;display:grid}.steps-section li>span{background:var(--olive);width:32px;height:32px;color:var(--bg);border-radius:50%;place-items:center;font-family:Oswald,sans-serif;font-weight:700;display:grid}.steps-section p{color:var(--text);margin-bottom:4px;font-weight:500;line-height:1.5}.steps-section small{color:var(--accent);font-size:.68rem;font-weight:700}.soft-error{color:var(--danger);background:#c6282814;border:1px solid #c6282840;border-radius:14px;padding:13px 15px;font-weight:600;line-height:1.45}.result-error{margin-bottom:14px}.loading-block,.empty-result,.skeleton-stack div{background:var(--surface2);border-radius:14px}.loading-block{color:var(--muted2);padding:16px;font-weight:700}.empty-result{color:var(--muted2);padding:32px}.empty-result h3{color:var(--text)}.skeleton-stack{gap:12px;display:grid}.skeleton-stack div{height:86px;animation:1.2s ease-in-out infinite pulse}.drawer-backdrop{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#2a3a2b47;justify-content:flex-end;display:flex;position:fixed;inset:0}.target-drawer{background:var(--bg);width:min(560px,100%);height:100%;padding:26px;overflow-y:auto;box-shadow:-10px 0 28px #2a3a2b1f}.privacy-note{color:var(--muted2);font-weight:500;line-height:1.5}.helper-grid{grid-template-columns:1fr 1fr;gap:12px;margin-top:18px;display:grid}.field{gap:6px;display:grid}.field.wide{grid-column:1/-1}.field span{color:var(--accent);letter-spacing:.16em;text-transform:uppercase;font-size:.63rem;font-weight:700}.field input,.field select{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:12px;padding:11px 12px}.calculation-card{border:1px solid var(--border);background:var(--surface);border-radius:16px;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px;padding:14px;display:grid}.calculation-card div{gap:3px;display:grid}.calculation-card span{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;font-size:.63rem;font-weight:700}.calculation-card strong{font-family:Oswald,sans-serif;font-size:2rem;font-weight:700;line-height:1}.calculation-card small{color:var(--muted2);font-size:.68rem;font-weight:600;line-height:1.35}.helper-warnings{color:var(--danger);margin-top:12px;font-size:.95rem;font-weight:600;line-height:1.45}.drawer-actions{margin-top:20px}.error-shell{place-items:center;min-height:100vh;display:grid}.error-card{border:1px solid var(--border);background:var(--surface);max-width:560px;box-shadow:var(--shadow);border-radius:20px;padding:28px}@keyframes pulse{0%,to{opacity:.55}50%{opacity:1}}@media (width<=860px){.app-shell{width:min(100% - 20px,680px);padding-top:10px}.app-header{border-radius:16px;padding:12px 16px}.workspace-grid{grid-template-columns:1fr}.result-stage{min-height:0;padding:18px}.macro-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.result-header{z-index:5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);background:#f7f4eeeb;margin:-18px -18px 18px;padding:16px 18px;position:sticky;top:0}}@media (width<=520px){h1{font-size:2.9rem}.panel,.result-stage{border-radius:16px}.panel-heading,.row-heading,.result-header,.drawer-header,.drawer-actions,.result-subhead,.display-mode-row{flex-direction:column;align-items:stretch}.result-subhead p{text-align:left}.mode-toggle{width:100%}.mode-toggle button{min-width:0}.recipe-option,.ingredient-row{grid-template-columns:1fr}.base-cal,.ingredient-qty{text-align:left}.slider-block,.slider-block:not(.calorie-block),.derived-fat{grid-template-columns:minmax(0,1fr) minmax(96px,max-content) minmax(36px,max-content)}.slider-block em{grid-column:auto}.helper-grid,.calculation-card{grid-template-columns:1fr}.target-drawer{padding:18px}}
