:root{--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 48px;--space-8: 64px;--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--serif: "Instrument Serif", "GT Sectra", "Tiempos Headline", Georgia, "Times New Roman", serif;--sans: "Inter", "Söhne", "Geist", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display-xl: 48px/56px var(--serif);--font-display-lg: 36px/44px var(--serif);--font-display-md: 28px/36px var(--serif);--font-display-sm: 22px/28px var(--serif);--font-body-lg: 18px/28px var(--sans);--font-body: 16px/24px var(--sans);--font-body-sm: 14px/20px var(--sans);--font-caption: 12px/16px var(--sans)}[data-theme=light]{--bg: #f9f2e0;--bg-elev: #fdf7e8;--ink: #2b2622;--muted: #7a6f5e;--border: #e0d2b2;--accent: #d35a26;--creamy-outline: #b8a570;--shadow-soft: 0 1px 2px rgba(60, 30, 10, .06);--shadow-lift: 0 4px 14px rgba(60, 30, 10, .1);--shadow-modal: 0 16px 48px rgba(40, 20, 8, .22);--bar-track: #c5b48d;--hue-salty: #c98770;--hue-sweet: #e8a52a;--hue-sour: #d9c41c;--hue-bitter: #7a3380;--hue-umami: #a83f1a;--hue-fatty: #f0c75c;--hue-creamy: #ece4c8;--hue-crunchy: #c97a1f;--hue-spicy: #d8261b;--hue-smoky: #685e60;--hue-green: #5d9930}[data-theme=dark]{--bg: #1a1612;--bg-elev: #221c17;--ink: #ece4d2;--muted: #a09b91;--border: #33291f;--accent: #e8784a;--creamy-outline: #7a6d52;--shadow-soft: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lift: 0 4px 14px rgba(0, 0, 0, .45);--shadow-modal: 0 16px 48px rgba(0, 0, 0, .6);--bar-track: #3d3025;--hue-salty: #dba18a;--hue-sweet: #f0b855;--hue-sour: #ecd640;--hue-bitter: #a570ad;--hue-umami: #c95f3c;--hue-fatty: #f0d985;--hue-creamy: #f0e9cb;--hue-crunchy: #d99e4a;--hue-spicy: #ec4530;--hue-smoky: #978a8d;--hue-green: #82b052}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background-color:var(--bg);background-image:var(--bg-texture, none);color:var(--ink);font:var(--font-body);font-feature-settings:"ss01" on,"cv11" on;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease;min-height:100vh}[data-theme=light]{--bg-texture: linear-gradient(rgba(216, 110, 60, .05), rgba(216, 110, 60, .05)), radial-gradient(ellipse 80% 60% at 0% 0%, rgba(120, 170, 90, .14), transparent 60%), radial-gradient(ellipse 70% 60% at 100% 100%, rgba(220, 165, 60, .1), transparent 60%), repeating-linear-gradient(90deg, rgba(80, 55, 25, .025) 0 1px, transparent 1px 4px);background-attachment:fixed,fixed,fixed,scroll}[data-theme=dark]{--bg-texture: radial-gradient(ellipse 90% 70% at 0% 0%, rgba(255, 150, 80, .15), transparent 60%), radial-gradient(ellipse 80% 70% at 100% 100%, rgba(220, 80, 30, .1), transparent 60%), repeating-linear-gradient(90deg, rgba(255, 235, 200, .03) 0 1px, transparent 1px 4px);background-attachment:fixed,fixed,scroll}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}input{font-family:inherit;color:inherit}.num{font-variant-numeric:tabular-nums;font-weight:600}.app{max-width:720px;margin:0 auto;padding:var(--space-5) var(--space-5) var(--space-8)}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) 0}.wordmark{font:var(--font-display-md);font-weight:400;letter-spacing:-.01em;display:inline-flex;align-items:baseline;gap:6px}.wordmark .glyph{font-size:.8em;line-height:1;color:var(--accent)}.theme-toggle{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:var(--radius-pill);border:1px solid var(--border);background:transparent;transition:border-color .2s ease}.theme-toggle:hover{border-color:var(--ink)}.theme-toggle .seg{width:30px;height:26px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--muted);border-radius:var(--radius-pill);transition:background-color .22s ease,color .22s ease}.theme-toggle .seg.active{background:var(--accent);color:#fff}[data-theme=dark] .theme-toggle .seg.active{color:#1a1612}.tagline{font:var(--font-display-xl);font-weight:500;margin:var(--space-6) 0 var(--space-8);letter-spacing:-.015em;text-wrap:balance;animation:tagline-swap .42s cubic-bezier(.22,.61,.36,1)}@keyframes tagline-swap{0%{opacity:0;transform:translateY(6px);filter:blur(2px)}60%{filter:blur(0)}to{opacity:1;transform:translateY(0);filter:blur(0)}}.tagline em{font-style:italic;color:var(--accent);display:inline-block;animation:tagline-em .52s cubic-bezier(.22,.61,.36,1);animation-delay:80ms;animation-fill-mode:both}@keyframes tagline-em{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){.tagline,.tagline em{animation:none}}@media (max-width: 768px){.tagline{font:var(--font-display-lg);font-weight:500}}.instrument{display:flex;flex-direction:column;gap:var(--space-7)}.cluster{display:flex;flex-direction:column;gap:var(--space-4)}.row{display:grid;grid-template-columns:minmax(0,1fr) 96px 24px auto;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;transition:opacity .2s ease}.row.skipped{opacity:.55}.bar-wrap{position:relative;width:100%;height:28px;cursor:pointer;-webkit-user-select:none;user-select:none}.bar-track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bar-track);border-radius:var(--radius-pill);box-shadow:inset 0 1px 2px #0000002e}.bar-fill{position:absolute;top:0;left:0;bottom:0;border-radius:var(--radius-pill);background-color:var(--hue);transition:width 80ms linear,background-color .2s ease;min-width:0;box-shadow:inset 0 1px #ffffff1f,inset 0 -1px #00000014}.bar-wrap[data-flavor=creamy] .bar-fill{box-shadow:inset 0 0 0 1px var(--creamy-outline)}.bar-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius-md)}.row-label{font-family:var(--serif);font-style:italic;font-size:26px;line-height:28px;letter-spacing:-.01em;color:var(--ink)}.row-value{font:var(--font-body);font-variant-numeric:tabular-nums;font-weight:600;text-align:right;color:var(--ink)}.row.skipped .row-value{color:var(--muted)}.priority-chips{display:flex;gap:var(--space-1)}.priority-dial{display:inline-flex;align-items:center;gap:8px;height:28px}.dial-step{border-radius:50%;background:var(--bar-track);cursor:pointer;border:none;padding:0;transition:background-color .12s ease,transform .1s ease;box-shadow:inset 0 1px 1px #0000001f}.dial-step[data-level="1"]{width:12px;height:12px}.dial-step[data-level="2"]{width:18px;height:18px}.dial-step[data-level="3"]{width:24px;height:24px}.dial-step:hover:not(.lit){background:var(--muted)}.dial-step.lit{background:var(--hue);box-shadow:inset 0 1px #ffffff2e,inset 0 -1px #0000001a}.dial-step:active{transform:scale(.92)}.dial-step:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.dial-skip{margin-left:12px;width:28px;height:28px;border-radius:50%;border:1.5px dashed var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--muted);background:transparent;cursor:pointer;transition:border-color .12s ease,color .12s ease,background-color .12s ease}.dial-skip:hover{border-color:var(--ink);color:var(--ink)}.dial-skip.lit{border-color:var(--ink);color:var(--ink);border-style:dashed}.chip{font:var(--font-body-sm);font-weight:500;padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;color:var(--muted);transition:background-color .1s ease,color .1s ease,border-color .1s ease;white-space:nowrap}.chip:hover{border-color:var(--ink);color:var(--ink)}.chip.selected{background:var(--hue);color:var(--chip-fg, #fff);border-color:transparent}.chip.skip-chip{border-style:dashed}.chip.skip-chip.selected{background:transparent;color:var(--ink);border-color:var(--ink);border-style:dashed}.chip.selected[data-tone=pale]{color:#2b2622}.subordinate{display:flex;flex-direction:column;gap:var(--space-6)}.subordinate-top{margin-bottom:var(--space-8)}.subordinate-bottom{margin-top:var(--space-8)}.annotated{display:grid;grid-template-columns:130px 1fr;gap:0 28px;align-items:start}.marginalia{font-family:var(--serif);font-style:italic;font-size:22px;line-height:1.25;color:var(--ink);letter-spacing:-.005em;text-align:right;padding-top:8px;padding-right:28px;border-right:1px solid var(--border);position:relative}.marginalia:after{content:"";position:absolute;right:-4px;top:16px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.chip-cloud{display:flex;flex-wrap:wrap;gap:var(--space-2)}.chip-tag{font:500 13px/1 var(--sans);padding:8px 14px 8px 12px;border-radius:var(--radius-xs);border:1px dashed var(--border);background:transparent;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background-color .12s ease,color .12s ease,border-color .12s ease}.chip-tag:hover{border-color:var(--ink);color:var(--ink)}.chip-tag .ico{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--accent);opacity:.7;line-height:1}.chip-tag.selected{background:var(--ink);color:var(--bg);border-color:var(--ink);border-style:solid}[data-theme=light] .chip-tag:not(.selected),[data-theme=light] .dial-skip:not(.lit){border-color:#b8a370}[data-theme=dark] .chip-tag:not(.selected),[data-theme=dark] .dial-skip:not(.lit){border-color:#604c3a}.chip-tag.selected .ico{color:var(--bg);opacity:1}.chip-tag.meal.selected{background:var(--accent);color:#fff;border-color:var(--accent)}.chip-tag.meal.selected .ico{color:#fff}[data-theme=dark] .chip-tag.meal.selected,[data-theme=dark] .chip-tag.meal.selected .ico{color:#1a1612}@media (max-width: 640px){.annotated{grid-template-columns:1fr;gap:var(--space-3)}.marginalia{text-align:left;border-right:none;border-bottom:1px solid var(--border);padding-right:0;padding-bottom:var(--space-2)}.marginalia:after{right:auto;left:-4px;top:auto;bottom:-4px}}.pantry-header{display:inline-flex;align-items:center;gap:var(--space-2);font:var(--font-body-sm);color:var(--muted);padding:4px 0;cursor:pointer;transition:color .12s ease}.pantry-header:hover{color:var(--ink)}.pantry-header .caret{display:inline-block;width:10px;transition:transform .18s ease;color:var(--muted)}.pantry-header.open .caret{transform:rotate(90deg)}.pantry-count{color:var(--ink);font-weight:500}.pantry-body{margin-top:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.pantry-input{width:100%;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 14px;font:var(--font-body);color:var(--ink);transition:border-color .12s ease,background-color .2s ease}.pantry-input::placeholder{color:var(--muted)}.pantry-input:focus{outline:none;border-color:var(--ink)}.pantry-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.pantry-chip{font:var(--font-body-sm);font-weight:500;padding:6px 10px 6px 12px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-pill);display:inline-flex;align-items:center;gap:6px;color:var(--ink)}.pantry-chip .x{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;color:var(--muted);font-size:11px;line-height:1;cursor:pointer;transition:background .12s ease,color .12s ease}.pantry-chip .x:hover{background:var(--ink);color:var(--bg)}.qlabel{font:var(--font-body-sm);color:var(--muted)}.qlabel-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.submit-wrap{margin-top:var(--space-8);display:flex;justify-content:center}.submit{min-width:240px;height:52px;padding:0 var(--space-6);background:var(--accent);color:#fff;font:var(--font-body);font-weight:600;border-radius:var(--radius-md);display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:filter .15s ease,transform 80ms ease;box-shadow:var(--shadow-soft)}.submit:hover{filter:brightness(1.05)}.submit:active{transform:translateY(1px)}[data-theme=dark] .submit{color:#1a1612}@media (max-width: 640px){.app{padding:var(--space-4)}.row{grid-template-columns:1fr;gap:var(--space-2)}.row .bar-wrap{height:32px;grid-column:1 / -1}.row-tail{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.row-label{grid-row:auto}.priority-chips{flex-wrap:wrap}.submit{width:100%}}@media (prefers-reduced-motion: reduce){*{transition-duration:0s!important;animation-duration:0s!important}}.pantry-autocomplete{position:relative}.pantry-suggestions{list-style:none;margin:4px 0 0;padding:0;position:absolute;left:0;right:0;z-index:10;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lift);max-height:240px;overflow-y:auto}.pantry-suggestions li button{display:block;width:100%;text-align:left;padding:8px 12px;background:transparent;border:none;font:var(--font-body);color:var(--ink);cursor:pointer}.pantry-suggestions li button:hover{background:var(--bg)}.pantry-no-match{margin:6px 0 0;font:var(--font-body-sm);color:var(--muted)}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin:var(--space-4) 0;padding:10px 14px;background:color-mix(in srgb,var(--hue-spicy) 8%,transparent);border:1px solid var(--hue-spicy);border-radius:var(--radius-md);color:var(--ink);font:var(--font-body-sm)}.error-dismiss{border:none;background:none;color:var(--ink);font-size:1.2rem;line-height:1;cursor:pointer}[data-theme=light]{--match-high-bg: #5a7245;--match-high-fg: #f9f2e0;--match-mod-bg: #d4a045;--match-mod-fg: #2b2622;--match-low-bg: #9b938a;--match-low-fg: #f9f2e0}[data-theme=dark]{--match-high-bg: #7a9560;--match-high-fg: #1a1612;--match-mod-bg: #e8b85a;--match-mod-fg: #2b2622;--match-low-bg: #5a544c;--match-low-fg: #ece4d2}.results{margin-top:var(--space-7)}.results-header{display:flex;align-items:center;gap:var(--space-3);font:var(--font-caption);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:var(--space-5) 0 var(--space-6)}.results-header .line{height:1px;background:var(--border);flex-shrink:0}.results-header .line.short{width:22px}.results-header .line.fill{flex:1;min-width:18px}.results-header .count,.results-header .empty-msg,.results-header .empty-hint{white-space:nowrap}.results-header .empty-hint{color:var(--muted);opacity:.85}.reroll-chip{font:var(--font-body-sm);font-weight:500;text-transform:lowercase;letter-spacing:0;padding:6px 14px;border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--muted);background:transparent;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:border-color .12s ease,color .12s ease}.reroll-chip:hover{border-color:var(--ink);color:var(--ink)}.reroll-chip .arrow{display:inline-block;font-size:13px;transition:transform .32s ease}.reroll-chip:hover .arrow{transform:rotate(120deg)}.recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}@media (max-width: 640px){.recipe-grid{grid-template-columns:1fr;gap:var(--space-4)}}.recipe-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);box-shadow:var(--shadow-soft);transition:transform .22s ease,box-shadow .22s ease}.recipe-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}.card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3)}.card-title{margin:0;font-family:var(--serif);font-weight:500;font-size:28px;line-height:32px;letter-spacing:-.01em;color:var(--ink);text-wrap:balance}.card-meta{font:var(--font-body-sm);color:var(--muted)}.card-meta .sep{margin:0 6px;opacity:.55}.match-badge{display:inline-flex;align-items:center;font-family:var(--sans);font-weight:700;font-size:13px;line-height:1;font-variant-numeric:tabular-nums;padding:4px 10px;border-radius:var(--radius-pill);white-space:nowrap;flex-shrink:0;letter-spacing:0}.match-high{background:var(--match-high-bg);color:var(--match-high-fg)}.match-mod{background:var(--match-mod-bg);color:var(--match-mod-fg)}.match-low{background:var(--match-low-bg);color:var(--match-low-fg)}.card-viz{position:relative;width:120px;height:120px;align-self:center;margin:var(--space-2) 0}.viz-pane{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .25s ease;pointer-events:none}.viz-pane.active{opacity:1;pointer-events:auto}.diamond{position:relative;width:100%;height:100%}.diamond-fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--diamond-conic);opacity:.55;clip-path:var(--diamond-clip);-webkit-clip-path:var(--diamond-clip)}.diamond-svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:visible}.diamond-svg .ring,.diamond-svg .spoke{stroke:var(--border);fill:none}.diamond-svg .ring{stroke-opacity:.35;stroke-width:1}.diamond-svg .spoke{stroke-opacity:.45;stroke-width:1}.diamond-svg .user-seg{stroke:var(--ink);fill:none;stroke-linecap:round;stroke-linejoin:round}.barcode{width:100%;height:100%;display:flex;align-items:flex-end;gap:6px}.barcode .seg{flex:1 1 0;min-width:0;background:var(--seg-hue);border-radius:2px;box-shadow:inset 0 1px #ffffff1a,inset 0 -1px #0000000f;transition:background-color .2s ease,height .2s ease}.barcode .seg[data-flavor=creamy]{box-shadow:inset 0 0 0 1px var(--creamy-outline),inset 0 1px #ffffff1a}.card-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-2)}.viz-toggle{display:inline-flex;gap:2px;border:1px solid var(--border);border-radius:var(--radius-pill);padding:2px}.viz-tab{font:var(--font-body-sm);font-weight:500;padding:4px 11px;border-radius:var(--radius-pill);color:var(--muted);cursor:pointer;border:none;background:none;display:inline-flex;align-items:center;gap:5px;transition:background-color .15s ease,color .15s ease;white-space:nowrap}.viz-tab:hover:not(.active){color:var(--ink)}.viz-tab.active{background:var(--ink);color:var(--bg)}.viz-tab .gly{font-size:11px;line-height:1;letter-spacing:-.04em}.card-cta{font:var(--font-body-sm);font-weight:600;color:var(--accent);cursor:pointer;background:none;border:none;padding:4px 0;transition:filter .12s ease,gap .18s ease;display:inline-flex;align-items:center;gap:6px}.card-cta:hover{filter:brightness(.92);gap:9px}.card-cta .arrow{display:inline-block}@media (prefers-reduced-motion: reduce){.viz-pane,.recipe-card,.reroll-chip .arrow,.card-cta{transition:none!important}}.chromatic-key{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;padding:12px 16px;margin-bottom:var(--space-5);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-md)}.chromatic-key .key-label{font:var(--font-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}.chromatic-key .key-item{display:inline-flex;align-items:center;gap:7px;font-family:var(--serif);font-style:italic;font-size:15px;line-height:18px;letter-spacing:-.005em;color:var(--ink)}.chromatic-key .key-swatch{display:inline-block;width:14px;height:6px;background:var(--hue);border-radius:var(--radius-pill);flex-shrink:0;box-shadow:inset 0 1px #ffffff1f,inset 0 -1px #00000014}.chromatic-key .key-item[data-flavor=creamy] .key-swatch{box-shadow:inset 0 0 0 1px var(--creamy-outline),inset 0 1px #ffffff1a}.card-viz{width:220px;height:220px}.diamond-svg .diamond-label{font-family:var(--serif);font-style:italic;font-size:20px;font-weight:500;letter-spacing:-.005em;paint-order:stroke;stroke:var(--bg-elev);stroke-width:3px;stroke-linejoin:round;pointer-events:none}.diamond-svg .diamond-label[data-flavor=creamy]{stroke:var(--ink);stroke-width:.75px}.diamond-wheel{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--diamond-conic);opacity:.22;clip-path:circle(41.67% at 50% 50%);-webkit-clip-path:circle(41.67% at 50% 50%);pointer-events:none}.diamond-svg .user-seg{stroke-opacity:.55}.diamond-svg .recipe-outline{fill:none;stroke:var(--ink);stroke-width:.75;stroke-opacity:.32;stroke-linejoin:round}.barcode{align-items:stretch}.barcode .seg-col{flex:1 1 0;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px}.barcode .seg{flex:none;width:100%}.barcode .seg-label{font-family:var(--serif);font-style:italic;font-size:13px;line-height:1;color:var(--ink);letter-spacing:-.005em;white-space:nowrap;transform:translate(-12px) rotate(-45deg);transform-origin:top right;flex-shrink:0;margin-top:4px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2814086b;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-5);animation:backdrop-in .2s ease}[data-theme=dark] .modal-backdrop{background:#0000009e}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-modal);width:100%;max-width:720px;max-height:88vh;overflow-y:auto;padding:var(--space-6);position:relative;animation:modal-in .24s cubic-bezier(.22,.61,.36,1)}@keyframes modal-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@media (max-width: 640px){.modal-backdrop{padding:0;align-items:flex-end}.modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-width:100%;max-height:94vh;padding:var(--space-5);animation:modal-up .26s cubic-bezier(.22,.61,.36,1)}}@keyframes modal-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.modal-backdrop,.modal{animation:none!important}}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-3)}.modal-title{margin:0;font-family:var(--serif);font-weight:500;font-size:36px;line-height:40px;letter-spacing:-.015em;color:var(--ink);text-wrap:balance;flex:1;min-width:0}.modal-close{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:border-color .12s ease,color .12s ease,background-color .12s ease}.modal-close:hover{border-color:var(--ink);color:var(--ink)}.modal-meta{font:var(--font-body-sm);color:var(--muted);margin-bottom:var(--space-6);display:flex;align-items:center;gap:var(--space-3)}.modal-meta .meta-text{flex:1}.modal-meta .sep{margin:0 6px;opacity:.55}.modal-body{display:grid;grid-template-columns:240px 1fr;gap:var(--space-6);align-items:start}@media (max-width: 760px){.modal-body{grid-template-columns:1fr;gap:var(--space-6)}}.tune-panel .panel-head{margin:0 0 var(--space-3);font-family:var(--serif);font-weight:500;font-size:22px;line-height:28px;color:var(--ink)}.tune-legend{font:var(--font-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.05em;display:flex;flex-direction:column;gap:4px;margin-bottom:var(--space-4)}.tune-legend .swatch{display:inline-flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.05em}.tune-legend .swatch:before{content:"";display:inline-block;width:22px;height:6px;border-radius:var(--radius-pill)}.tune-legend .swatch.you:before{border:1.5px dotted var(--ink);background:transparent;height:7px}.tune-legend .swatch.recipe:before{background:var(--ink)}.tune-rows{display:flex;flex-direction:column;gap:10px}.tune-row{display:grid;grid-template-columns:56px 1fr;gap:var(--space-3);align-items:center}.tune-row .tune-label{font-family:var(--serif);font-style:italic;font-size:16px;line-height:18px;color:var(--ink);text-align:right;letter-spacing:-.005em}.tune-bars{display:flex;flex-direction:column;gap:3px}.tune-bar{height:8px;border-radius:var(--radius-pill);background:transparent;position:relative}.tune-bar-fill{height:100%;border-radius:var(--radius-pill);min-width:4px;box-sizing:border-box}.tune-bar.user .tune-bar-fill{border:1.5px dotted var(--hue);background:transparent}.tune-bar.recipe .tune-bar-fill{background:var(--hue);box-shadow:inset 0 1px #ffffff1f,inset 0 -1px #00000014}.tune-row.skipped{opacity:.55}.tune-row .tune-skip{font:var(--font-body-sm);font-style:italic;color:var(--muted)}.modal-section+.modal-section{margin-top:var(--space-6)}.modal-section .section-head{margin:0 0 var(--space-3);font-family:var(--serif);font-weight:500;font-size:22px;line-height:28px;color:var(--ink)}.ingredients-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.ingredients-list li{display:grid;grid-template-columns:14px 96px 1fr;gap:14px;align-items:baseline;font:var(--font-body)}.ingredients-list .pantry-check{color:var(--accent);font-size:12px;line-height:1.4;font-weight:700}.ingredients-list .ing-qty{font-variant-numeric:tabular-nums;color:var(--accent);font-weight:500;text-align:right}.ingredients-list .ing-name{color:var(--ink)}.instructions-body{font:var(--font-body-lg);color:var(--ink);white-space:pre-wrap;margin:0}.modal-footer{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-7);padding-top:var(--space-4);border-top:1px solid var(--border)}.shop-chip{font:var(--font-body-sm);font-weight:500;padding:8px 16px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:border-color .14s ease,color .14s ease,gap .18s ease}.shop-chip:hover{border-color:var(--accent);color:var(--accent);gap:11px}.shop-chip .arrow{display:inline-block}.close-btn{font:var(--font-body-sm);font-weight:500;color:var(--muted);background:none;border:none;cursor:pointer;padding:8px 12px;transition:color .12s ease}.close-btn:hover{color:var(--ink)}.back-chip{font:var(--font-body-sm);font-weight:500;padding:6px 12px 6px 10px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:border-color .12s ease,color .12s ease}.back-chip:hover{border-color:var(--ink);color:var(--ink)}.shopping-intro{font:var(--font-body-sm);color:var(--muted);margin-bottom:var(--space-5);display:flex;align-items:center;gap:8px}.shopping-list{list-style:none;padding:0;margin:0}.shopping-list li{display:grid;grid-template-columns:22px 96px 1fr;gap:14px;align-items:center;font:var(--font-body);padding:12px 0;border-bottom:1px solid var(--border)}.shopping-list li:last-child{border-bottom:none}.shopping-list .check{width:20px;height:20px;border:1.5px solid var(--border);border-radius:var(--radius-xs);cursor:pointer;position:relative;display:inline-flex;align-items:center;justify-content:center;background:transparent;padding:0;flex-shrink:0;transition:border-color .12s ease,background-color .12s ease}.shopping-list .check:hover{border-color:var(--ink)}.shopping-list .check.checked{background:var(--accent);border-color:var(--accent)}.shopping-list .check.checked:after{content:"";width:5px;height:9px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg) translate(-1px,-1px)}[data-theme=dark] .shopping-list .check.checked:after{border-color:#1a1612}.shopping-list .ing-qty{font-variant-numeric:tabular-nums;font-weight:500;color:var(--accent);text-align:right}.shopping-list .ing-name{color:var(--ink);transition:color .12s ease,text-decoration-color .12s ease}.shopping-list li.pantry-pre .ing-qty,.shopping-list li.pantry-pre .ing-name{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--muted)}.shopping-list li.user-checked .ing-name{text-decoration:line-through;color:var(--muted)}.shopping-list li.user-checked .ing-qty{color:var(--muted)}.skip-link{position:absolute;top:8px;left:8px;z-index:200;padding:10px 16px;background:var(--ink);color:var(--bg);border-radius:var(--radius-md);font:var(--font-body-sm);font-weight:600;text-decoration:none;transform:translateY(-200%);transition:transform .18s ease}.skip-link:focus,.skip-link:focus-visible{transform:translateY(0);outline:2px solid var(--accent);outline-offset:2px}.theme-toggle:focus-visible,.chip-tag:focus-visible,.dial-step:focus-visible,.dial-skip:focus-visible,.pantry-header:focus-visible,.pantry-input:focus-visible,.pantry-chip .x:focus-visible,.submit:focus-visible,.reroll-chip:focus-visible,.card-cta:focus-visible,.viz-tab:focus-visible,.shop-chip:focus-visible,.back-chip:focus-visible,.close-btn:focus-visible,.modal-close:focus-visible,.shopping-list .check:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-sm)}.recipe-card:focus-within{box-shadow:var(--shadow-lift);transform:translateY(-1px)}.pantry-chip .x:focus-visible{border-radius:50%}@media (max-width: 640px){.modal-header{padding-top:28px;position:relative;cursor:grab;touch-action:pan-x}.modal-header:active{cursor:grabbing}.modal-header:before{content:"";position:absolute;top:10px;left:50%;transform:translate(-50%);width:44px;height:4px;border-radius:var(--radius-pill);background:var(--border)}.modal{transition:transform .22s cubic-bezier(.22,.61,.36,1),opacity .22s ease}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}.modal-backdrop,.modal,.recipe-card,.viz-pane.active{opacity:1!important;transform:none!important}@media (max-width: 640px){.modal{transform:none!important}}.reroll-chip:hover .arrow,.card-cta:hover,.shop-chip:hover{transform:none!important}html{scroll-behavior:auto!important}}
