:root{--surface:#100c18;--elevated:#1a1426;--raised:#261d38;--line:#3a2f52;--text-1:#fbf6ff;--text-2:#c9bfdd;--text-3:#948aae;--accent:#f4c54b;--on-accent:#1b1405;--state:#5fdc9b;--on-state:#0b1a12;--notice:#ff6e6e;--estimate:#e0b35a;--overlay:#06030cbd;--glow:#5fdc9b59;--font-display:"Bricolage Grotesque", "Archivo", system-ui, sans-serif;--font-body:"Archivo", system-ui, sans-serif;--size-13:13px;--size-14:14px;--size-15:15px;--size-17:17px;--size-18:18px;--size-20:20px;--size-22:22px;--size-24:24px;--size-30:30px;--size-34:34px;--leading-body:1.5;--leading-sheet:1.55;--leading-display:1.05;--tracking-display:-.02em;--space-1:4px;--space-2:6px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:18px;--space-7:24px;--space-8:32px;--column:560px;--card-scroll-margin:16px;--radius-sheet:20px;--radius-card:14px;--radius-control:12px;--radius-row:8px;--radius-pill:999px;--reel-spin:1.7s;--reel-land:.9s;--reel-max:2.5s;--card-tip:.26s;--sheet-rise:.5s;--sheet-delay:.12s;--overlay-fade:.3s;--save-glow:.22s;--quick:.15s;--ease-out:cubic-bezier(.12, .9, .25, 1);--ease-overshoot:cubic-bezier(.2, 1.1, .3, 1);--ease-in:ease-in}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--surface);color:var(--text-2);font-family:var(--font-body);font-size:var(--size-17);line-height:var(--leading-body);-webkit-text-size-adjust:100%}body{min-height:100vh}body.modal-open{overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}button:disabled{cursor:default}img{max-width:100%;display:block}svg{flex:none;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}h1,h2,h3,.display{font-family:var(--font-display);color:var(--text-1);letter-spacing:var(--tracking-display);font-weight:700;line-height:var(--leading-display)}.page{max-width:var(--column);padding:var(--space-6) var(--space-6) 80px;margin:0 auto}.stack>*+*{margin-top:var(--space-5)}.hidden{display:none}#main-content:focus{outline:none}.section-title{font-size:var(--size-22);margin-bottom:var(--space-4);font-weight:800}.empty{color:var(--text-3);font-size:var(--size-15)}.skip-link{z-index:999;background:var(--accent);color:var(--on-accent);border-radius:0 0 var(--radius-row) 0;padding:10px 20px;font-weight:600;text-decoration:none;position:absolute;top:-100px;left:0}.skip-link:focus{top:0}.notice{color:var(--notice);font-size:var(--size-15);text-align:center;padding:var(--space-4) 0}header.top{padding:var(--space-2) 0 var(--space-7)}.wordmark{font-size:var(--size-22);font-variation-settings:"opsz" 96;font-weight:800}.tagline{color:var(--text-3);font-size:var(--size-14);margin-top:var(--space-1)}.field{display:block}.field-label{color:var(--text-2);font-size:var(--size-14);margin-bottom:var(--space-2);display:block}.field-hint{color:var(--text-3);font-size:var(--size-13);margin-top:var(--space-2);display:block}input[type=text]{width:100%;font:inherit;color:var(--text-1);background:var(--elevated);border:1px solid var(--line);border-radius:var(--radius-control);padding:14px 16px}input[type=text]::placeholder{color:var(--text-3)}input[type=text]:focus-visible{outline-offset:2px}.vibe{border:1px solid var(--line);border-radius:var(--radius-control);background:var(--elevated);min-width:0;padding:10px 0 8px;position:relative}.vibe-head{align-items:baseline;gap:var(--space-2);font-size:var(--size-14);color:var(--text-3);padding:0 14px 6px;display:flex}.vibe-legend{float:left;color:var(--text-2)}.vibe-hint{flex:1}.vibe-toggle{color:var(--text-2);font-size:var(--size-14);text-underline-offset:3px;text-decoration:underline}.vibe-marker{background:var(--accent);border-radius:0 0 2px 2px;width:2px;height:8px;position:absolute;top:0;left:50%;transform:translate(-50%)}.vibe-all .vibe-marker{display:none}.vibe-rail{gap:var(--space-2);scroll-snap-type:x mandatory;scrollbar-width:none;padding:6px calc(50% - 60px);display:flex;overflow-x:auto}.vibe-rail::-webkit-scrollbar{display:none}.vibe-item{scroll-snap-align:center;flex:none;width:120px;position:relative}.vibe-input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.vibe-name{text-align:center;border-radius:var(--radius-row);font-family:var(--font-display);font-weight:700;font-size:var(--size-20);color:var(--text-3);transition:color var(--quick), background var(--quick), transform var(--quick);padding:10px 0;display:block}.vibe-input:checked+.vibe-name{color:var(--on-accent);background:var(--accent);transform:scale(1.02)}.vibe-input:focus-visible+.vibe-name{outline:2px solid var(--accent);outline-offset:2px}.vibe-all .vibe-rail{grid-template-columns:repeat(2,1fr);padding:10px 12px 6px;display:grid;overflow:visible}.vibe-all .vibe-item{width:auto}.vibe-all .vibe-name{text-align:left;background:var(--raised);color:var(--text-2);font-size:var(--size-18);padding:12px;transform:none}.vibe-all .vibe-input:checked+.vibe-name{background:var(--accent);color:var(--on-accent)}.btn-spin{border-radius:var(--radius-control);background:var(--accent);width:100%;color:var(--on-accent);font-family:var(--font-display);font-weight:800;font-size:var(--size-20);letter-spacing:-.01em;transition:transform var(--quick);padding:16px}.btn-spin:active{transform:scale(.985)}.btn-spin:focus-visible{outline-color:var(--text-1)}.btn-spin:disabled{background:var(--raised);color:var(--text-3)}.surprise{text-align:center;margin-top:var(--space-3)}.btn-link{color:var(--text-2);font-size:var(--size-15);text-underline-offset:3px;padding:var(--space-1) var(--space-2);border-radius:4px;text-decoration:underline}.btn-link:hover{color:var(--text-1)}.btn-link:disabled{color:var(--text-3);text-decoration:none}.history{padding-top:var(--space-3)}.btn-text{align-items:center;gap:var(--space-3);color:var(--text-2);font-size:var(--size-15);padding:var(--space-2) 0;font-weight:500;display:inline-flex}.btn-text:hover{color:var(--text-1)}@media (width>=720px){.vibe-all .vibe-rail{grid-template-columns:repeat(5,1fr)}}.reel.hidden{display:none}.reel{border-radius:var(--radius-control);background:var(--elevated);border:1px solid var(--line);height:228px;position:relative;overflow:hidden}.reel:before,.reel:after{content:"";z-index:2;pointer-events:none;height:76px;position:absolute;left:0;right:0}.reel:before{background:linear-gradient(var(--elevated), transparent);top:0}.reel:after{background:linear-gradient(transparent, var(--elevated));bottom:0}.payline{border:2px solid var(--accent);z-index:3;pointer-events:none;opacity:.5;height:76px;transition:opacity var(--overlay-fade);border-radius:10px;position:absolute;top:76px;left:10px;right:10px}.reel.landed .payline{opacity:1}.strip{will-change:transform}.reel.spinning .strip{animation:.56s linear infinite reel-loop}@keyframes reel-loop{0%{transform:translateY(0)}to{transform:translateY(-456px)}}.row{align-items:center;gap:14px;height:76px;padding:0 22px;display:flex}.row-img{border-radius:var(--radius-row);object-fit:cover;background:var(--raised);width:52px;height:52px}.row-img:not([src]){visibility:hidden}.row-name{font-family:var(--font-display);font-weight:700;font-size:var(--size-20);color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.row.skeleton .row-name{background:var(--raised);border-radius:7px;width:46%;height:14px;display:block}.row.pick .row-name{color:var(--text-2)}.reel.landed .row.pick .row-name{color:var(--text-1)}@media (width<=360px){.row-name{font-size:var(--size-18)}}@media (prefers-reduced-motion:reduce){.reel.spinning .strip{animation:none}.strip{transition:none!important}.payline{transition:none}}.result{outline:none}.result.hidden{display:none}.card{background:var(--elevated);border:1px solid var(--line);border-radius:var(--radius-card);transform-origin:50% 0;animation:payout .5s var(--ease-out);transition:transform var(--card-tip) var(--ease-in), opacity var(--card-tip) var(--ease-in);overflow:hidden}.result.pulse .card{animation:payout .5s var(--ease-out), pulse .9s ease .5s}.result.away .card{opacity:0;transform:perspective(900px)rotateX(-14deg)translateY(-10px)}@keyframes payout{0%{opacity:0;transform:translateY(-18px)scaleY(.96)}to{opacity:1;transform:none}}.card-media{aspect-ratio:16/9;background:var(--raised);overflow:hidden}.card-media img{object-fit:cover;width:100%;height:100%}.card-body{padding:var(--space-5) var(--space-6) var(--space-6)}.card-title{font-size:var(--size-30);margin-bottom:var(--space-2);font-variation-settings:"opsz" 96}.desc{margin-bottom:var(--space-4)}.pills{gap:var(--space-2);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.pill{background:var(--raised);border-radius:var(--radius-pill);font-size:var(--size-14);color:var(--text-2);padding:6px 12px}.pill b{color:var(--text-1);font-weight:600}.card-actions{gap:var(--space-3);grid-template-columns:1fr auto;display:grid}.btn-primary{border-radius:var(--radius-control);background:var(--accent);color:var(--on-accent);font-family:var(--font-display);font-weight:800;font-size:var(--size-18);transition:transform var(--quick);padding:14px}.btn-primary:active{transform:scale(.985)}.btn-ghost{justify-content:center;align-items:center;gap:var(--space-3);border-radius:var(--radius-control);background:var(--raised);color:var(--text-1);padding:12px 14px;font-weight:500;display:inline-flex}.btn-save{align-items:center;gap:var(--space-3);border-radius:var(--radius-control);background:var(--raised);color:var(--text-1);transition:color var(--save-glow), border-color var(--save-glow), box-shadow var(--save-glow);border:1px solid #0000;padding:12px 14px;font-weight:500;display:inline-flex}.btn-save[aria-pressed=true]{color:var(--state);border-color:var(--state);box-shadow:0 0 0 1px var(--state), 0 0 18px var(--glow)}.btn-save[aria-pressed=true] svg{fill:currentColor}.save-note{color:var(--text-3);font-size:var(--size-14);margin-top:var(--space-3)}.save-note.hidden{display:none}.card-again{margin-top:var(--space-4)}.card-again .btn-ghost{width:100%;color:var(--text-2);border:1px solid var(--line);background:0 0}.card-again .btn-ghost:hover{color:var(--text-1);border-color:var(--text-3)}.message{color:var(--text-2);text-align:center;padding:var(--space-4) 0}.message.notice,.search-note.notice{color:var(--notice)}.message.exhausted{color:var(--text-2)}.btn-inline{color:var(--accent);font:inherit;text-underline-offset:3px;border-radius:4px;padding:0 2px;text-decoration:underline}.btn-inline:hover{color:var(--text-1)}.search-note{font-size:var(--size-14);text-align:center;margin-top:var(--space-4)}@media (width<=360px){.card-title{font-size:26px}}@media (prefers-reduced-motion:reduce){.card,.result.pulse .card{transition:none;animation:none}.result.away .card{opacity:.4;transform:none}.btn-save,.btn-primary{transition:none}}.overlay{background:var(--overlay);opacity:0;pointer-events:none;transition:opacity var(--overlay-fade) ease;z-index:20;position:fixed;inset:0}.overlay.on{opacity:1;pointer-events:auto}.sheet{z-index:30;background:var(--elevated);border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;max-height:94vh;transition:transform var(--sheet-rise) var(--ease-overshoot) var(--sheet-delay);flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(104%)}.sheet.hidden{display:none}.sheet.open{transform:none}.sheet-scroll{flex:auto;min-height:0;overflow-y:auto}.sheet-media{border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;background:var(--raised);height:min(58vw,240px);overflow:hidden}.sheet-media img{object-fit:cover;width:100%;height:100%}.sheet-img.hidden{display:none}.sheet-body{padding:var(--space-6) var(--space-6) var(--space-7);font-size:var(--size-18);line-height:var(--leading-sheet)}.eyebrow{color:var(--text-3);font-size:var(--size-14);margin-bottom:var(--space-2)}.eyebrow:empty{display:none}.sheet-title{font-size:var(--size-34);margin-bottom:var(--space-4);font-variation-settings:"opsz" 96}.sheet-meta{gap:var(--space-2);padding-bottom:var(--space-4);border-bottom:1px solid var(--line);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.meta-item{background:var(--raised);border-radius:var(--radius-pill);font-size:var(--size-14);color:var(--text-1);padding:6px 12px}.meta-item.meta-estimate{color:var(--estimate)}.meta-item.meta-none{color:var(--text-3)}.sheet-heading{font-size:var(--size-22);margin:var(--space-6) 0 var(--space-3);justify-content:space-between;align-items:baseline;font-weight:800;display:flex}.sheet-count{font-family:var(--font-body);font-weight:400;font-size:var(--size-14);color:var(--text-3)}.ingredients{list-style:none}.ingredients li{border-top:1px solid var(--line)}.ingredient{gap:var(--space-4);cursor:pointer;grid-template-columns:28px 96px 1fr;align-items:center;min-height:52px;padding:12px 0;display:grid}.tick{appearance:none;border:2px solid var(--text-3);cursor:pointer;background:0 0;border-radius:6px;place-items:center;width:26px;height:26px;margin:0;display:grid}.tick:after{content:"";border:2.5px solid var(--on-state);opacity:0;border-top:0;border-right:0;width:12px;height:7px;transform:rotate(-45deg)translate(1px,-1px)}.tick:checked{background:var(--state);border-color:var(--state)}.tick:checked:after{opacity:1}.measure{color:var(--text-2);font-variant-numeric:tabular-nums}.name{color:var(--text-1)}.tick:checked~.measure,.tick:checked~.name{color:var(--text-3);text-decoration:line-through}.steps{counter-reset:step;list-style:none}.steps li{counter-increment:step;gap:var(--space-4);border-top:1px solid var(--line);grid-template-columns:40px 1fr;padding:14px 0;display:grid}.steps li:before{content:counter(step);background:var(--text-1);width:36px;height:36px;color:var(--surface);font-family:var(--font-display);font-weight:800;font-size:var(--size-20);border-radius:50%;place-items:center;display:grid}.steps p{color:var(--text-1)}.sheet-status{color:var(--text-3);font-size:var(--size-14);text-align:center;margin-top:var(--space-4)}.sheet-status:empty{display:none}.sheet-bar{background:var(--line);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);flex:none;grid-template-columns:1fr 1fr 1fr;gap:1px;display:grid}.bar-btn{background:var(--elevated);color:var(--text-1);min-height:60px;font-size:var(--size-14);transition:color var(--save-glow);flex-direction:column;justify-content:center;align-items:center;gap:4px;font-weight:500;display:flex}.bar-btn:focus-visible{outline-offset:-3px}.bar-btn[aria-pressed=true]{color:var(--state);text-shadow:0 0 12px var(--glow)}.bar-btn[aria-pressed=true] svg{fill:currentColor}@media (width>=1024px){.sheet{border-radius:var(--radius-sheet);opacity:0;width:min(640px,92vw);max-height:88vh;transition:transform var(--sheet-rise) var(--ease-overshoot) var(--sheet-delay), opacity var(--overlay-fade) ease var(--sheet-delay);inset:50% auto auto 50%;transform:translate(-50%,-44%)}.sheet.open{opacity:1;transform:translate(-50%,-50%)}.sheet-bar{border-radius:0 0 var(--radius-sheet) var(--radius-sheet);overflow:hidden}}@media (width<=360px){.ingredient{grid-template-columns:28px 84px 1fr}.sheet-title{font-size:30px}}@media (prefers-reduced-motion:reduce){.overlay,.sheet,.bar-btn{transition:none}}.favourites-list{gap:var(--space-4);flex-direction:column;display:flex}.fav{gap:var(--space-4);padding:var(--space-4);background:var(--elevated);border:1px solid var(--line);border-radius:var(--radius-card);grid-template-columns:84px 1fr;display:grid;position:relative}.fav-img,.fav-placeholder{border-radius:var(--radius-row);object-fit:cover;background:var(--raised);width:84px;height:84px}.fav-body{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.fav-title{font-size:var(--size-18);align-items:center;gap:var(--space-3);display:flex}.lamp{background:var(--state);width:10px;height:10px;box-shadow:0 0 0 2px var(--elevated), 0 0 10px var(--glow);border-radius:50%;flex:none}.fav-desc{color:var(--text-2);font-size:var(--size-15);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.45;display:-webkit-box;overflow:hidden}.fav-actions{align-items:center;gap:var(--space-3);margin-top:var(--space-1);display:flex}.fav-view-btn{border-radius:var(--radius-control);background:var(--raised);color:var(--text-1);font-weight:500;font-size:var(--size-15);flex:1;padding:10px 14px}.fav-view-btn:hover{color:var(--text-1);background:var(--line)}.remove-btn{border-radius:var(--radius-row);width:40px;height:40px;color:var(--text-3);transition:color var(--quick);place-items:center;display:grid}.remove-btn:hover{color:var(--notice)}@media (width<=360px){.fav{grid-template-columns:64px 1fr}.fav-img,.fav-placeholder{width:64px;height:64px}}.recent.hidden{display:none}.recent-list{gap:var(--space-4);padding:var(--space-1) var(--space-1) var(--space-3);scrollbar-width:thin;scrollbar-color:var(--raised) transparent;display:flex;overflow-x:auto}.recent-card{align-items:center;gap:var(--space-3);border-radius:var(--radius-control);width:100px;color:var(--text-2);font:inherit;letter-spacing:normal;transition:transform var(--quick);flex-direction:column;flex:none;padding:0;display:flex}.recent-card:hover{color:var(--text-1);transform:translateY(-3px)}.recent-img,.recent-placeholder{border-radius:var(--radius-control);object-fit:cover;background:var(--raised);width:100px;height:100px;transition:border-color var(--quick);border:2px solid #0000}.recent-card:hover .recent-img,.recent-card:focus-visible .recent-img,.recent-card:hover .recent-placeholder{border-color:var(--accent)}.recent-name{font-size:var(--size-14);text-align:center;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;width:100%;line-height:1.3;display:-webkit-box;overflow:hidden}@media (prefers-reduced-motion:reduce){.recent-card,.recent-img,.recent-placeholder{transition:none}.recent-card:hover{transform:none}}.site-footer{text-align:center;padding:var(--space-7) 0 0;margin-top:var(--space-8);border-top:1px solid var(--line)}.site-footer p{color:var(--text-3);font-size:var(--size-14)}.site-footer a{color:var(--text-2);text-underline-offset:3px;text-decoration:underline}.site-footer a:hover{color:var(--text-1)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{box-shadow:0 0 #0000}50%{box-shadow:0 0 0 3px var(--line)}}@media (prefers-reduced-motion:reduce){.vibe-name,.btn-spin,.btn-text,.fav-view-btn,.remove-btn,.vibe-toggle{transition:none}}
