@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#fbf7f1;--surface:#fff;--surface-2:#f5efe6;--surface-3:#ede5d9;--ink:#1e1b2e;--ink-2:#4a465c;--ink-3:#6b6779;--line:#e8dfd2;--coral:#f0643f;--coral-ink:#b83a1c;--coral-soft:#ffe3d8;--mint:#8fd3b6;--mint-soft:#dcf3e8;--butter:#ffd46b;--lilac:#c9b8ff;--ok:#1d7048;--ok-soft:#dcf2e5;--warn:#8a5a00;--warn-soft:#fff1cc;--danger:#c0352a;--danger-soft:#fde4e0;--r-s:12px;--r:18px;--r-l:24px;--r-full:999px;--shadow-1:0 1px 2px #1e1b2e0d, 0 2px 8px #1e1b2e0a;--shadow-2:0 2px 6px #1e1b2e0f, 0 12px 32px #1e1b2e14;--shadow-3:0 -8px 40px #1e1b2e29;--font:"Plus Jakarta Sans Variable", "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--ease:cubic-bezier(.2, .8, .2, 1);--spring:cubic-bezier(.34, 1.4, .64, 1);--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--gutter:16px;--maxw:1180px}@media (width>=768px){:root{--gutter:28px}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background:var(--bg)}html.is-locked{overflow:hidden}body{min-height:100dvh;font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto;margin:0;font-size:16px;line-height:1.5;overflow-x:clip}img,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit}h1,h2,h3,h4,p{margin:0}h1,h2,h3{letter-spacing:-.02em;line-height:1.15}ul,ol{margin:0;padding:0}[hidden]{display:none!important}:focus-visible{outline:3px solid color-mix(in srgb, var(--coral) 70%, white);outline-offset:2px;border-radius:8px}.icon{flex:none;display:inline-flex}::selection{background:var(--coral-soft)}.btn{border-radius:var(--r-full);white-space:nowrap;min-height:48px;transition:transform .15s var(--ease), background-color .2s, box-shadow .2s, opacity .2s;-webkit-user-select:none;user-select:none;border:0;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5}.btn--lg{min-height:54px;padding:0 26px;font-size:16px}.btn--block{width:100%}.btn--grow{flex:1}.btn--primary{background:var(--ink);color:#fff;box-shadow:0 6px 16px #1e1b2e2e}.btn--primary:hover:not(:disabled){background:#2d2944}.btn--soft{background:var(--surface-2);color:var(--ink)}.btn--soft:hover:not(:disabled){background:var(--surface-3)}.btn--soft.is-success{background:var(--ok-soft);color:var(--ok)}.btn--ghost{color:var(--ink-2);box-shadow:inset 0 0 0 1.5px var(--line);background:0 0}.btn--ghost:hover:not(:disabled){background:var(--surface-2)}.btn--danger{background:var(--danger);color:#fff}.btn--danger-soft{background:var(--danger-soft);color:var(--danger)}.btn.is-loading{pointer-events:none;position:relative}.btn.is-loading:before{content:"";border:2.5px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.btn.is-loading .icon{display:none}.icon-btn{width:44px;height:44px;color:var(--ink);transition:background-color .2s, transform .15s var(--ease);background:0 0;border:0;border-radius:50%;flex:none;place-items:center;text-decoration:none;display:inline-grid}.icon-btn:hover{background:#1e1b2e0f}.icon-btn:active{transform:scale(.92)}.icon-btn--solid{background:var(--ink);color:#fff}.icon-btn--solid:hover{background:#2d2944}.icon-btn--float{box-shadow:var(--shadow-1);background:#ffffffeb}.icon-btn--float:hover{background:#fff}.link-btn{min-height:44px;color:var(--coral-ink);text-underline-offset:3px;background:0 0;border:0;padding:0 6px;font-size:14px;font-weight:700;text-decoration:underline;text-decoration-thickness:1.5px}.field{gap:6px;display:grid}.field-label{color:var(--ink-2);font-size:14px;font-weight:700}.input{border:1.5px solid var(--line);border-radius:var(--r-s);background:var(--surface);width:100%;min-height:50px;padding:0 16px;font-size:16px;transition:border-color .2s,box-shadow .2s}.input:focus{border-color:var(--ink);outline:none;box-shadow:0 0 0 4px #1e1b2e14}.input-wrap{display:block;position:relative}.input-wrap .input{padding-right:84px}.input-addon{min-height:42px;color:var(--ink-2);background:0 0;border:0;border-radius:10px;padding:0 14px;font-size:14px;font-weight:700;position:absolute;top:50%;right:4px;translate:0 -50%}.input-row{gap:8px;display:flex}.input-row .input{flex:1;min-width:0}.input-row .btn{flex:none;padding:0 16px}.form-error{border-radius:var(--r-s);background:var(--danger-soft);color:var(--danger);align-items:flex-start;gap:8px;padding:12px 14px;font-size:14px;font-weight:600;display:flex}.pill{border-radius:var(--r-full);height:26px;color:var(--ink);white-space:nowrap;background:#ffffffb3;align-items:center;gap:5px;padding:0 10px;font-size:12.5px;font-weight:700;display:inline-flex}.pill--lg{gap:6px;height:34px;padding:0 14px;font-size:14px}.pill--vega{color:var(--ok);background:#fff}.pill--muted{background:var(--surface-2);color:var(--ink-2)}.chip{border-radius:var(--r-full);background:var(--surface);min-height:44px;box-shadow:inset 0 0 0 1.5px var(--line);color:var(--ink);white-space:nowrap;transition:background-color .2s, box-shadow .2s, transform .15s var(--ease), color .2s;border:0;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:700;display:inline-flex}.chip:active{transform:scale(.95)}.notice{border-radius:var(--r-s);background:var(--surface-2);color:var(--ink-2);align-items:center;gap:10px;padding:12px 14px;font-size:14px;font-weight:600;display:flex}.notice>span:not(.icon){flex:1}.notice .link-btn{min-height:32px}.notice--warn{background:var(--warn-soft);color:var(--warn)}.notice--ok{background:var(--ok-soft);color:var(--ok)}.card{background:var(--surface);border-radius:var(--r-l);box-shadow:var(--shadow-1)}.sk{background:#1e1b2e12;border-radius:6px;height:12px;display:block;position:relative;overflow:hidden}.sk:after,.tile--skeleton .flag:after{content:"";background:linear-gradient(90deg,#0000,#fff9,#0000);animation:1.4s infinite shimmer;position:absolute;inset:0;translate:-100%}.sk--s{width:40%}.sk--m{border-radius:11px;width:55%;height:22px}.sk--l{width:85%;height:16px}.sk--xl{border-radius:10px;width:80%;height:30px}@keyframes spin{to{rotate:360deg}}@keyframes shimmer{to{translate:100%}}@keyframes page-in{0%{opacity:0;translate:0 8px}to{opacity:1;translate:0}}@keyframes tile-in{0%{opacity:0;translate:0 10px;scale:.92}to{opacity:1;translate:0;scale:1}}@keyframes pop{0%{opacity:0;scale:.6}60%{opacity:1;scale:1.08}to{scale:1}}@keyframes roll{0%{rotate:0deg;scale:1}50%{scale:1.15}to{rotate:720deg;scale:1}}@keyframes float{0%,to{translate:0}50%{translate:0 -10px}}.page-enter{animation:page-in .32s var(--ease) backwards}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.wordmark{letter-spacing:-.045em;color:var(--ink);-webkit-user-select:none;user-select:none;align-items:baseline;font-weight:800;line-height:1;display:inline-flex}.wordmark--m{font-size:30px}.wordmark--l{font-size:52px}.wm-ball{border-radius:50%;width:.56em;height:.56em;margin:0 .02em 0 .03em;display:inline-block;position:relative;translate:0 .02em}.wm-ball:after{content:"";background:#ffffffa6;border-radius:50%;width:28%;height:22%;position:absolute;top:18%;left:20%;rotate:-30deg}.wm-ball--coral{background:var(--coral)}.wm-ball--mint{background:var(--mint)}.wm-link{background:0 0;border:0;align-items:center;min-height:44px;padding:0;text-decoration:none;display:inline-flex}.wm-link:hover .wm-ball--coral{animation:roll .8s var(--ease)}.wm-link:hover .wm-ball--mint{animation:roll .8s 80ms var(--ease)}.flag{color:var(--ink-2);background:#fff;border-radius:50%;flex:none;place-items:center;display:inline-grid;position:relative;overflow:hidden;box-shadow:0 0 0 3px #ffffffe6,0 4px 14px #1e1b2e1f}.flag img{object-fit:cover;width:100%;height:100%}.flag--neutral{background:#fff}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}@media (width>=768px){.grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}}@media (width>=1100px){.grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}}.grid--state{display:block}.tile{background:var(--tile,var(--surface-2));min-height:200px;color:var(--ink);isolation:isolate;transition:transform .25s var(--spring), box-shadow .25s var(--ease);border-radius:22px;flex-direction:column;justify-content:flex-end;padding:80px 14px 14px;text-decoration:none;display:flex;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #1e1b2e0a}.tile:before{content:"";aspect-ratio:1;z-index:-1;background:#ffffff59;border-radius:50%;width:90%;position:absolute;inset:auto auto -40% -30%}a.tile:hover{box-shadow:var(--shadow-2);transform:translateY(-3px)}a.tile:active{transform:scale(.97)}.tile-in{animation:tile-in .42s var(--spring) backwards;animation-delay:calc(var(--i,0) * 35ms)}.tile-flag{width:86px;height:86px;transition:rotate .4s var(--spring), scale .4s var(--spring);position:absolute;top:-12px;right:-12px;box-shadow:0 0 0 4px #ffffffd9,0 6px 18px #1e1b2e1f}.tile-flag.flag--neutral .icon,.tile-flag.flag--neutral svg{width:34px;height:34px;translate:-6px 6px}a.tile:hover .tile-flag{rotate:-8deg;scale:1.04}.tile-body{gap:4px;display:grid}.tile-cuisine{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:800;overflow:hidden}.tile-title{letter-spacing:-.015em;-webkit-line-clamp:3;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;-webkit-box-orient:vertical;font-size:16px;font-weight:800;line-height:1.22;display:-webkit-box;overflow:hidden}.tile-meta{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}@media (width>=768px){.tile{border-radius:24px;min-height:236px;padding:100px 18px 18px}.tile-flag{width:108px;height:108px}.tile-title{font-size:18px}}.tile--skeleton{background:var(--surface-2)}.tile--skeleton .flag{background:var(--surface-3);box-shadow:0 0 0 4px #fff9}.tile--skeleton .tile-body{gap:10px}.state{text-align:center;justify-items:center;gap:10px;max-width:440px;margin:24px auto;padding:32px 20px;display:grid}.state h2{font-size:22px;font-weight:800}.state p{color:var(--ink-2)}.state-art{margin-bottom:6px;animation:5s ease-in-out infinite float}.state-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px;display:flex}.state--page{margin-top:15vh}.overlay{z-index:50;display:flex;position:fixed;inset:0}.backdrop{opacity:0;transition:opacity .24s var(--ease);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1e1b2e61;position:absolute;inset:0}.overlay.is-open .backdrop{opacity:1}.overlay.is-closing .backdrop{opacity:0}.overlay--sheet{justify-content:center;align-items:flex-end}.sheet{background:var(--surface);width:100%;max-width:560px;max-height:min(88dvh,760px);box-shadow:var(--shadow-3);transition:translate .34s var(--ease), transform .2s var(--ease);padding-left:var(--safe-l);padding-right:var(--safe-r);border-radius:28px 28px 0 0;outline:none;flex-direction:column;display:flex;position:relative;translate:0 100%}.overlay.is-open .sheet{translate:0}.overlay.is-closing .sheet{transition-duration:.24s;translate:0 100%}@media (width>=768px){.overlay--sheet{align-items:center}.sheet{opacity:0;transition:translate .3s var(--ease), opacity .2s;border-radius:28px;translate:0 40px}.overlay.is-open .sheet{opacity:1}.overlay.is-closing .sheet{opacity:0;translate:0 40px}}.sheet-handle{touch-action:none;cursor:grab;flex:none;place-items:center;width:100%;height:22px;display:grid}.sheet-handle:before{content:"";background:var(--surface-3);border-radius:3px;width:40px;height:5px}.sheet-header{touch-action:none;flex:none;justify-content:space-between;align-items:center;padding:0 12px 6px 22px;display:flex}.sheet-header h2{font-size:22px;font-weight:800}.sheet-body{overscroll-behavior:contain;flex:1;padding:6px 22px 20px;overflow-y:auto}.sheet-footer{padding:14px 22px calc(14px + var(--safe-b));border-top:1px solid var(--line);flex:none;gap:10px;display:flex}.overlay--dialog{padding:20px calc(20px + var(--safe-r)) calc(20px + var(--safe-b)) calc(20px + var(--safe-l));justify-content:center;align-items:center}.dialog{border-radius:var(--r-l);background:var(--surface);width:100%;max-width:400px;box-shadow:var(--shadow-2);opacity:0;transition:scale .26s var(--spring), opacity .2s;padding:26px 22px 20px;position:relative;scale:.94}.overlay.is-open .dialog{opacity:1;scale:1}.overlay.is-closing .dialog{opacity:0;scale:.96}.dialog h2{margin-bottom:8px;font-size:21px;font-weight:800}.dialog p{color:var(--ink-2);overflow-wrap:anywhere}.dialog-actions{gap:10px;margin-top:22px;display:flex}.dialog-actions .btn{flex:1;padding:0 12px}#toasts{left:0;right:0;bottom:calc(16px + var(--safe-b));z-index:80;padding:0 var(--gutter);pointer-events:none;justify-items:center;gap:8px;display:grid;position:fixed}.toast{border-radius:var(--r-full);background:var(--ink);color:#fff;max-width:480px;box-shadow:var(--shadow-2);opacity:0;transition:translate .3s var(--spring), opacity .2s;align-items:center;gap:10px;padding:12px 18px;font-size:14.5px;font-weight:600;display:flex;translate:0 16px}.toast.is-visible{opacity:1;translate:0}.toast--error{background:var(--danger)}.toast .icon{color:var(--mint)}.toast--error .icon{color:#fff}.switch{border-radius:var(--r-full);background:var(--surface-3);width:60px;height:36px;transition:background-color .25s var(--ease);border:0;flex:none;position:relative}.switch:after{content:"";position:absolute;inset:-4px}.switch-thumb{width:28px;height:28px;transition:translate .3s var(--spring);background:#fff;border-radius:50%;position:absolute;top:4px;left:4px;box-shadow:0 2px 6px #1e1b2e33}.switch[aria-checked=true]{background:var(--ok)}.switch[aria-checked=true] .switch-thumb{translate:24px}.segmented{border-radius:var(--r-full);background:var(--surface-2);grid-auto-columns:1fr;grid-auto-flow:column;gap:4px;padding:4px;display:grid}.seg-btn{border-radius:var(--r-full);min-height:44px;color:var(--ink-2);white-space:nowrap;background:0 0;border:0;padding:0 10px;font-size:14px;font-weight:700;transition:background-color .2s,color .2s,box-shadow .2s}.seg-btn.is-active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.segmented--s .seg-btn{min-height:40px;font-size:13px}.page{min-height:100dvh;padding-left:var(--safe-l);padding-right:var(--safe-r)}.ov-top{max-width:var(--maxw);padding:calc(10px + var(--safe-t)) var(--gutter) 4px;justify-content:space-between;align-items:center;gap:12px;margin:0 auto;display:flex}.ov-actions{gap:4px;display:flex}.ov-actions .icon-btn.is-rolling .icon{animation:roll .5s var(--ease)}.ov-sticky{top:var(--safe-t);z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(14px);backdrop-filter:saturate(1.4)blur(14px);padding-top:8px;position:sticky}.page--overview:before{content:"";height:var(--safe-t);z-index:11;background:var(--bg);position:fixed;inset:0 0 auto}.ov-sticky>*{max-width:var(--maxw);margin-left:auto;margin-right:auto}.search-row{padding:0 var(--gutter);gap:8px;display:flex}.search{flex:1;align-items:center;min-width:0;display:flex;position:relative}.search-icon{color:var(--ink-3);pointer-events:none;position:absolute;left:16px}.search-input{border-radius:var(--r-full);background:var(--surface);width:100%;height:50px;box-shadow:var(--shadow-1), inset 0 0 0 1px var(--line);appearance:none;border:0;padding:0 46px;font-size:16px;font-weight:500;transition:box-shadow .2s}.search-input::placeholder{color:var(--ink-3)}.search-input:focus{box-shadow:var(--shadow-1), inset 0 0 0 2px var(--ink);outline:none}.search-input::-webkit-search-cancel-button{display:none}.search-clear{width:44px;height:44px;color:var(--ink-3);background:0 0;border:0;border-radius:50%;place-items:center;display:grid;position:absolute;right:3px}.filter-btn{background:var(--surface);width:50px;height:50px;box-shadow:var(--shadow-1), inset 0 0 0 1px var(--line);transition:background-color .2s, color .2s, transform .15s var(--ease);border:0;border-radius:50%;flex:none;place-items:center;display:grid;position:relative}.filter-btn:active{transform:scale(.92)}.filter-btn.is-active{background:var(--ink);color:#fff;box-shadow:var(--shadow-1)}.filter-badge{border-radius:var(--r-full);background:var(--coral);color:#fff;min-width:22px;height:22px;box-shadow:0 0 0 2px var(--bg);animation:pop .35s var(--spring);place-items:center;padding:0 6px;font-size:12px;font-weight:800;display:grid;position:absolute;top:-2px;right:-2px}.chip-row{padding:10px var(--gutter) 12px;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;gap:8px;display:flex;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.chip-row::-webkit-scrollbar{display:none}.chip-row:after{content:"";flex:0 0 16px}.chip--cuisine{scroll-snap-align:start;padding:0 16px 0 6px}.chip--cuisine:first-child{padding:0 18px}.chip-flag{width:30px;height:30px;box-shadow:none;border:1px solid #1e1b2e14}.chip-flag.flag--neutral{background:var(--surface-2);border:0}.chip-flag svg{width:17px;height:17px}.chip--cuisine.is-active{background:var(--ink);color:#fff;box-shadow:none}.ov-main{max-width:var(--maxw);padding:6px var(--gutter) calc(40px + var(--safe-b));margin:0 auto}.banner-slot:not(:empty){margin-bottom:12px}.active-filters{animation:page-in .25s var(--ease);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.chip--removable{background:var(--coral-soft);min-height:36px;box-shadow:none;color:var(--coral-ink);gap:4px;padding:0 8px 0 14px;position:relative}.chip--removable:after{content:"";position:absolute;inset:-4px 0}.chip--removable .icon{opacity:.8}.result-count{color:var(--ink-3);margin:2px 2px 12px;font-size:13.5px;font-weight:600}.filter-sheet{gap:4px;display:grid}.fs-section{border-bottom:1px solid var(--line);gap:10px;padding:16px 0;display:grid}.fs-section:last-child{border-bottom:0}.fs-section h3{font-size:16px;font-weight:800}.fs-hint{color:var(--ink-3);margin-top:-6px;font-size:13.5px}.fs-row{justify-content:space-between;align-items:center;gap:16px;display:flex}.fs-row .fs-hint{margin-top:2px}.chip-wrap{flex-wrap:wrap;gap:8px;display:flex}.chip--suggest{background:var(--surface-2);min-height:38px;box-shadow:none;gap:4px;padding:0 14px 0 10px;font-weight:600}.topbar{z-index:10;padding:calc(8px + var(--safe-t)) var(--gutter) 8px;align-items:center;gap:10px;transition:background-color .25s,box-shadow .25s;display:flex;position:sticky;top:0}.topbar.is-scrolled{background:color-mix(in srgb, var(--tile,var(--bg)) 92%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 1px #1e1b2e0f}.topbar-title{white-space:nowrap;text-overflow:ellipsis;opacity:0;min-width:0;transition:opacity .2s, translate .25s var(--ease);flex:1;font-size:16px;font-weight:800;overflow:hidden;translate:0 6px}.topbar.is-scrolled .topbar-title{opacity:1;translate:0}.topbar--plain{padding-left:max(var(--gutter), (100% - 920px) / 2 - 54px);background:color-mix(in srgb, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.topbar-heading{font-size:20px;font-weight:800}.page--recipe .topbar{margin-bottom:calc(-60px - var(--safe-t))}.recipe-hero{padding:calc(72px + var(--safe-t)) max(var(--gutter), (100% - 820px) / 2) 34px;background:var(--tile,var(--surface-2));isolation:isolate;justify-items:start;gap:10px;display:grid;position:relative;overflow:hidden}.recipe-hero:before{content:"";aspect-ratio:1;z-index:-1;background:#ffffff4d;border-radius:50%;width:280px;position:absolute;bottom:-120px;right:-80px}.hero-flag{width:88px;height:88px;animation:pop .5s var(--spring) backwards;margin-bottom:6px;box-shadow:0 0 0 5px #ffffffe6,0 10px 30px #1e1b2e24}.hero-flag.flag--neutral svg{width:40px;height:40px}.hero-cuisine{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-size:13px;font-weight:800}.recipe-title{letter-spacing:-.03em;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;font-size:clamp(28px,7.5vw,44px);font-weight:800;line-height:1.08}.hero-meta{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.hero-meta .pill--vega{height:34px;padding:0 14px;font-size:14px}.source-link{min-height:44px;color:var(--ink);text-underline-offset:3px;overflow-wrap:anywhere;align-items:center;gap:6px;max-width:100%;margin-top:2px;font-size:14px;font-weight:700;-webkit-text-decoration:underline #1e1b2e59;text-decoration:underline #1e1b2e59;display:inline-flex}.recipe-body{max-width:820px;padding:0 var(--gutter) calc(40px + var(--safe-b));gap:14px;margin:-16px auto 0;display:grid;position:relative}.recipe-section{padding:22px 18px}@media (width>=768px){.recipe-section{padding:28px}}.recipe-section h2{margin-bottom:14px;font-size:21px;font-weight:800}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.section-head h2{margin-bottom:0}.stepper{border-radius:var(--r-full);background:var(--surface-2);align-items:center;gap:2px;padding:3px;display:inline-flex}.step-btn{background:var(--surface);width:44px;height:44px;box-shadow:var(--shadow-1);transition:transform .15s var(--ease), opacity .2s;border:0;border-radius:50%;place-items:center;display:grid}.step-btn:active:not(:disabled){transform:scale(.88)}.step-btn:disabled{opacity:.35;box-shadow:none}.stepper-value{justify-items:center;min-width:68px;line-height:1.05;display:grid}.stepper-value strong{font-variant-numeric:tabular-nums;font-size:20px;font-weight:800}.stepper-value span{color:var(--ink-3);font-size:12px;font-weight:600}.reset-portions{min-height:36px;margin-bottom:4px;padding:0;font-size:13.5px}.ing-list{margin-top:8px;list-style:none}.ing-list li+li{border-top:1px dashed var(--line)}.ing{text-align:left;background:0 0;border:0;grid-template-columns:24px minmax(64px,auto) 1fr;align-items:baseline;gap:12px;width:100%;min-height:48px;padding:11px 2px;font-size:16.5px;transition:opacity .2s;display:grid}.ing-check{width:22px;height:22px;box-shadow:inset 0 0 0 2px var(--line);color:#0000;border-radius:50%;align-self:center;place-items:center;transition:background-color .2s,color .2s,box-shadow .2s;display:grid}.ing-qty{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:800}.ing-name{overflow-wrap:anywhere;font-weight:500}.ing-note{color:var(--ink-3);margin-top:1px;font-size:14px;display:block}.ing.is-done{opacity:.45}.ing.is-done .ing-name{text-decoration:line-through}.ing.is-done .ing-check{background:var(--ok);color:#fff;box-shadow:none}.steps{gap:6px;list-style:none;display:grid}.step{border-radius:var(--r);text-align:left;background:0 0;border:0;grid-template-columns:40px 1fr;gap:14px;width:100%;padding:12px 4px;transition:opacity .2s,background-color .2s;display:grid}.step-num{background:var(--tile,var(--surface-2));border-radius:50%;place-items:center;width:40px;height:40px;font-size:17px;font-weight:800;transition:background-color .2s,color .2s;display:grid}.step-text{overflow-wrap:anywhere;padding-top:5px;font-size:18.5px;line-height:1.6}@media (width>=768px){.step-text{font-size:19.5px}}.step.is-done{opacity:.45}.step.is-done .step-num{background:var(--ok);color:#fff}.steps+.fs-hint{margin-top:12px}.notes p{white-space:pre-wrap;color:var(--ink-2);font-size:16.5px}.recipe-tags{flex-wrap:wrap;gap:8px;padding:4px 2px;display:flex}.tag{border-radius:var(--r-full);background:var(--surface-2);color:var(--ink-2);padding:7px 14px;font-size:14px;font-weight:700}.recipe-danger{margin-top:18px}.recipe-hero--skeleton{align-content:end;min-height:340px}.recipe-hero--skeleton .flag{background:#fff9}.add-main{max-width:920px;padding:4px var(--gutter) calc(120px + var(--safe-b));gap:14px;margin:0 auto;display:grid}.add-intro{color:var(--ink-2)}.prompt-block{overflow:hidden}.prompt-block summary{cursor:pointer;align-items:center;gap:12px;min-height:64px;padding:12px 16px;list-style:none;display:flex}.prompt-block summary::-webkit-details-marker{display:none}.prompt-icon{background:var(--lilac);border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.prompt-summary{flex:1;display:grid}.prompt-summary small{color:var(--ink-3);font-size:13.5px}.prompt-chevron{transition:rotate .25s var(--ease);color:var(--ink-3)}.prompt-block[open] .prompt-chevron{rotate:180deg}.prompt-content{justify-items:start;gap:14px;padding:0 16px 18px;display:grid}.prompt-howto{color:var(--ink-2);gap:2px;padding-left:20px;font-size:14.5px;display:grid}.prompt-text{border-radius:var(--r-s);background:var(--surface-2);width:100%;max-height:340px;font-family:var(--mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:14px;font-size:12.5px;line-height:1.55;overflow:auto}.input-card{gap:10px;padding:12px;display:grid}.dropzone{border-radius:var(--r);position:relative}.json-input{border:2px dashed var(--line);border-radius:var(--r);background:var(--bg);width:100%;min-height:260px;font-family:var(--mono);resize:vertical;tab-size:2;padding:16px;font-size:13.5px;line-height:1.55;transition:border-color .2s,background-color .2s;display:block}.json-input:focus{border-color:var(--ink-3);background:var(--surface);border-style:solid;outline:none}@media (width>=768px){.json-input{min-height:320px}}.drop-hint{border-radius:var(--r);border:2px dashed var(--coral);background:color-mix(in srgb, var(--coral-soft) 92%, transparent);color:var(--coral-ink);opacity:0;pointer-events:none;place-content:center;justify-items:center;gap:8px;font-weight:800;transition:opacity .15s;display:grid;position:absolute;inset:0}.dropzone.is-dragging .drop-hint{opacity:1}.input-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.drop-tip{color:var(--ink-3);font-size:13.5px}@media (hover:none){.drop-tip{display:none}}.import-result{gap:14px;display:grid}.import-result:empty{display:none}.error-card{box-shadow:inset 0 0 0 1.5px #f3c1b9, var(--shadow-1);gap:10px;padding:18px;display:grid}.error-head{color:var(--danger);align-items:center;gap:10px;display:flex}.error-head h3{font-size:17px;font-weight:800}.error-card .hint{font-weight:700}.error-card .raw{font-family:var(--mono);color:var(--ink-3);overflow-wrap:anywhere;font-size:12.5px}.error-group{border-radius:var(--r-s);background:var(--danger-soft);padding:12px 14px}.error-group h4{color:var(--danger);margin-bottom:6px;font-size:14.5px;font-weight:800}.error-group ul{overflow-wrap:anywhere;gap:4px;padding-left:18px;font-size:14.5px;display:grid}.dup-card{gap:12px;padding:18px;display:grid}.dup-card h3{font-size:17px;font-weight:800}.dup{border-radius:var(--r-s);background:var(--warn-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.dup-text{color:var(--ink-2);flex:220px;gap:2px;font-size:14px;display:grid}.dup-text strong{color:var(--ink);font-size:15px}.dup .segmented{background:#fff9;flex:240px}.preview-title{margin-top:6px;font-size:17px;font-weight:800}.grid--preview .tile{animation:tile-in .4s var(--spring) backwards}.tile.is-skipped{opacity:.45;filter:grayscale(.6)}.skip-label{border-radius:var(--r-full);background:var(--ink);color:#fff;padding:4px 10px;font-size:12px;font-weight:700;position:absolute;top:12px;left:12px}.save-bar{z-index:20;padding:12px calc(var(--gutter) + var(--safe-r)) calc(12px + var(--safe-b)) calc(var(--gutter) + var(--safe-l));background:color-mix(in srgb, var(--bg) 90%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 -1px 0 var(--line);animation:page-in .25s var(--ease);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.save-bar .btn{max-width:520px}.success{text-align:center;justify-items:center;gap:10px;padding:32px 20px;display:grid}.success h2{font-size:24px;font-weight:800}.success p{color:var(--ink-2)}.success-icon{background:var(--mint);width:72px;height:72px;color:var(--ink);animation:pop .5s var(--spring);border-radius:50%;place-items:center;display:grid}.page--login{padding:calc(24px + var(--safe-t)) var(--gutter) calc(24px + var(--safe-b));place-items:center;display:grid;position:relative;overflow:hidden}.login-card{z-index:1;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);width:100%;max-width:420px;box-shadow:var(--shadow-2);background:#ffffffdb;border-radius:32px;gap:18px;padding:36px 24px 28px;display:grid;position:relative}.login-card .wordmark{justify-self:center}.login-form{gap:16px;margin-top:4px;display:grid}.login-foot{text-align:center;color:var(--ink-3);font-size:13px}.login-balls .lb{border-radius:50%;animation:7s ease-in-out infinite float;position:absolute}.lb:after{content:"";background:#ffffff8c;border-radius:50%;width:26%;height:20%;position:absolute;top:16%;left:20%;rotate:-30deg}.lb--1{background:var(--coral);width:220px;height:220px;top:-70px;right:-60px}.lb--2{background:var(--mint);width:130px;height:130px;animation-delay:-2s;bottom:8%;left:-40px}.lb--3{background:var(--butter);width:70px;height:70px;animation-delay:-4s;top:18%;left:10%}.lb--4{background:var(--lilac);width:90px;height:90px;animation-delay:-1s;bottom:-20px;right:16%}
