@font-face{font-family:IKEA Sans;src:local("IKEA Sans"),url(/fonts/IKEASans-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:IKEA Sans;src:local("IKEA Sans Bold"),url(/fonts/IKEASans-Bold.woff2) format("woff2");font-weight:700;font-display:swap}:root{--bg: #fff;--surface: #fff;--surface-hover: #f4f5f7;--border: rgba(0, 0, 0, .12);--border-strong: rgba(0, 0, 0, .3);--text: #000;--text-muted: #555;--accent: #b4b9c1;--accent-edge: #8a9099;--danger-edge: #e5484d;--focus: #0058a3;--radius: 12px;--field-height: 2.9rem;--gloss: linear-gradient(180deg, #fff 0%, #f3f4f6 100%);--gloss-accent: linear-gradient(180deg, #dfe2e6 0%, #c6cad1 100%);--gloss-danger: linear-gradient(180deg, #ffeeee 0%, #ffd6d6 100%);--highlight: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 -1px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 2px rgba(16, 24, 40, .1), 0 1px 1px rgba(16, 24, 40, .05);--shadow-md: 0 2px 4px rgba(16, 24, 40, .06), 0 6px 16px rgba(16, 24, 40, .12);--shadow-lg: 0 4px 8px rgba(16, 24, 40, .06), 0 16px 40px rgba(16, 24, 40, .18)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:IKEA Sans,Noto Sans Variable,system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;min-height:100vh;line-height:1.5}button,input{font-family:inherit}header{position:relative;background:var(--gloss);box-shadow:var(--shadow-sm),var(--highlight);padding:2.5rem 1.5rem 2rem;text-align:center}.header-inner h1{font-size:clamp(1.6rem,4vw,2.4rem);font-weight:700;letter-spacing:-.02em;color:var(--text)}.home{color:inherit;text-decoration:none}.home:focus-visible{outline:2px solid var(--focus);outline-offset:4px;border-radius:4px}.header-inner p{color:var(--text-muted);font-size:.95rem;margin-top:.35rem}.search-section{max-width:720px;margin:2rem auto 0;padding:0 1.25rem}.search-row{display:flex;align-items:flex-start;gap:.6rem}.chips-input{position:relative;flex:1 1 auto;min-width:0;min-height:var(--field-height);display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;background:var(--gloss);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm),var(--highlight);padding:.4rem .8rem;cursor:text;transition:border-color .15s,box-shadow .15s}.chips-input:focus-within{border-color:var(--focus);box-shadow:var(--shadow-sm),0 0 0 3px #0058a32e}.chips{display:contents}.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .6rem;border-radius:20px;font-size:.85rem;font-weight:500;white-space:nowrap;-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-sm),var(--highlight)}.chip.include{background:var(--gloss-accent);border:1px solid var(--accent-edge)}.chip.exclude{background:var(--gloss-danger);border:1px solid var(--danger-edge)}.chip-remove{background:none;border:none;color:inherit;opacity:.6;cursor:pointer;font-size:.75rem;line-height:1;padding:0;display:flex;align-items:center}.chip-remove:hover{opacity:1}#search-input{flex:1 1 160px;min-width:120px;background:none;border:none;outline:none;color:var(--text);font-size:.95rem;padding:.15rem .2rem}#search-input::placeholder{color:var(--text-muted)}.match{flex:none;display:flex;align-items:stretch;gap:2px;height:var(--field-height);padding:3px;background:#eef0f2;border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px 3px #0000002e}.match-opt{padding:0 .85rem;background:none;border:1px solid transparent;border-radius:9px;color:var(--text);font-size:.85rem;font-weight:600;white-space:nowrap;cursor:pointer;transition:background .15s}.match-opt:hover{background:#ffffffb3}.match-opt[aria-pressed=true]{background:var(--gloss-accent);border-color:var(--accent-edge);box-shadow:var(--shadow-sm),var(--highlight)}.match-opt:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.hint{margin-top:.6rem;font-size:.78rem;color:var(--text-muted)}.hint code{font-family:SF Mono,Fira Mono,monospace;background:var(--gloss);border:1px solid var(--border);border-radius:4px;padding:0 4px;font-size:.75rem}.hint kbd{font-family:inherit;background:var(--gloss);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-size:.75rem}.suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:10;list-style:none;padding:.25rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.suggestion{display:flex;justify-content:space-between;gap:1rem;padding:.4rem .6rem;border-radius:8px;font-size:.9rem;cursor:pointer}.suggestion.active,.suggestion:hover{background:var(--surface-hover)}.suggestion-meta{color:var(--text-muted);font-size:.75rem;white-space:nowrap}.link-btn{background:none;border:none;padding:0;font:inherit;color:var(--text);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.link-btn:hover{color:var(--focus)}.link-btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;width:min(320px,85vw);overflow-y:auto;padding:.75rem 1rem 2rem;background:var(--surface);border-right:1px solid var(--border);box-shadow:var(--shadow-lg);transform:translate(-100%);visibility:hidden;transition:transform .2s,visibility 0s .2s}body[data-sidebar=open] .sidebar{transform:none;visibility:visible;transition:transform .2s}.sidebar-head{display:flex;align-items:center;justify-content:space-between}.sidebar-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text)}.sidebar-close{width:28px;height:28px;background:var(--gloss);border:1px solid var(--border);border-radius:50%;box-shadow:var(--shadow-sm),var(--highlight);color:var(--text);font-size:.75rem;cursor:pointer}.sidebar-close:hover{border-color:var(--border-strong)}@media(min-width:1720px){.sidebar{width:260px;transform:none;visibility:visible;transition:none}body[data-sidebar=closed] .sidebar,.sidebar-close{display:none}}.category{border-bottom:1px solid var(--border)}.category-title{display:flex;align-items:center;gap:.5rem;padding:.55rem 0;font-size:.85rem;font-weight:700;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.category-title::-webkit-details-marker{display:none}.category-title:before{content:"▸";color:var(--text);font-size:.7rem;transition:transform .15s}.category[open]>.category-title:before{transform:rotate(90deg)}.category-count{margin-left:auto;padding:0 .45rem;border-radius:10px;background:var(--gloss-accent);border:1px solid var(--accent-edge);font-size:.72rem}.pills{display:flex;flex-wrap:wrap;gap:.4rem;padding:.15rem 0 .85rem}.pill,.show-more{display:inline-flex;align-items:center;gap:.4rem;border-radius:20px;font-size:.85rem;padding:.3rem .7rem;cursor:pointer;transition:border-color .15s,box-shadow .15s}.pill{background:var(--gloss);border:1px solid var(--border);box-shadow:var(--shadow-sm),var(--highlight);color:var(--text)}.pill:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md),var(--highlight)}.pill:focus-visible,.show-more:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.pill-count{color:var(--text-muted);font-size:.72rem}.pill.selected{background:var(--gloss-accent);border-color:var(--accent-edge);box-shadow:inset 0 2px 4px #0003}.pill.excluded{background:var(--gloss-danger);border-color:var(--danger-edge);text-decoration:line-through}.show-more{background:none;border:1px dashed var(--border-strong);color:var(--text)}.show-more:hover{background:var(--surface-hover)}.start{text-align:center;color:var(--text-muted);padding:1rem 0;font-size:.95rem}.results-section{max-width:1200px;margin:2.5rem auto 4rem;padding:0 1.25rem}.result-count{color:var(--text-muted);font-size:.85rem;margin-bottom:1.25rem}.empty{text-align:center;color:var(--text-muted);padding:4rem 0;font-size:1rem}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem}.card{display:block;color:inherit;text-decoration:none;background:var(--gloss);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm),var(--highlight);overflow:hidden;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}.card:hover{transform:translateY(-3px);border-color:var(--border-strong);box-shadow:var(--shadow-lg),var(--highlight)}.card:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.card-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--surface-hover)}.card-img-placeholder{width:100%;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;background:var(--surface-hover);font-size:2.5rem}.card-body{padding:.85rem 1rem 1rem}.card-name{font-size:.975rem;font-weight:700;margin-bottom:.45rem;line-height:1.3}.card-ingredients{font-size:.78rem;color:var(--text-muted);line-height:1.5}.detail{max-width:960px;margin:2rem auto 4rem;padding:0 1.25rem}.back{display:inline-block;margin-bottom:1rem;color:var(--text);font-size:.9rem;text-underline-offset:2px}.back:hover{color:var(--focus)}.back:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}.recipe{display:grid;gap:1.5rem;padding:1.5rem;background:var(--gloss);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md),var(--highlight)}@media(min-width:760px){.recipe{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:2rem;padding:2rem}.recipe-media{position:sticky;top:1rem;align-self:start}}.recipe-info:only-child{grid-column:1 / -1}.recipe-img{width:100%;aspect-ratio:1;border-radius:8px;display:block;object-fit:cover;box-shadow:var(--shadow-sm)}.recipe-img-placeholder{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;background:var(--surface-hover);border-radius:8px;font-size:4rem}.recipe-name{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;line-height:1.2;margin-bottom:1.25rem}.recipe-name:focus{outline:none}.recipe-section-title{display:inline-block;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text);border-bottom:3px solid var(--accent);margin-bottom:.6rem}.recipe-ingredients{list-style:none;margin-bottom:1.5rem;display:flex;flex-direction:column;gap:.35rem}.recipe-ingredient{display:flex;align-items:baseline;gap:.5rem;font-size:.9rem}.ingredient-amount{color:var(--text);font-weight:700;font-size:.85rem;min-width:60px;text-align:right;flex-shrink:0}.ingredient-name{color:var(--text)}.recipe-text{font-size:.9rem;color:var(--text);line-height:1.65;margin-bottom:1.5rem}.recipe-garnish{font-size:.875rem;color:var(--text);margin-bottom:1.5rem;padding:.6rem .9rem;background:var(--gloss);border-radius:8px;border-left:3px solid var(--accent-edge);box-shadow:var(--shadow-sm),var(--highlight)}.recipe-garnish span{font-weight:700}.recipe-links{display:flex;gap:.75rem;flex-wrap:wrap}.btn-link{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1rem;border-radius:8px;font-size:.85rem;font-weight:500;text-decoration:none;transition:box-shadow .15s}.btn-yt{background:var(--gloss);color:var(--text);border:1px solid var(--border);box-shadow:var(--shadow-sm),var(--highlight)}.btn-yt:hover{box-shadow:var(--shadow-md),var(--highlight)}@media(max-width:560px){.search-row{flex-wrap:wrap}.chips-input,.match{flex:1 1 100%}.match-opt{flex:1}}@media(max-width:480px){header{padding:1.75rem 1rem 1.5rem}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.9rem}}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-cyrillic-ext-wght-normal-DSNfmdVt.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-cyrillic-wght-normal-B2hlT84T.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-devanagari-wght-normal-Cv-Vwajv.woff2) format("woff2-variations");unicode-range:U+0900-097F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-greek-ext-wght-normal-12T8GTDR.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-greek-wght-normal-Ymb6dZNd.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-vietnamese-wght-normal-DLTJy58D.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-latin-ext-wght-normal-W1qJv59z.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/noto-sans-latin-wght-normal-BYSzYMf3.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
