@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-vietnamese-wght-normal.XAtsl5Q_.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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-latin-ext-wght-normal.C4zznr8T.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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/archivo-latin-wght-normal.E0tuGl4L.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}@layer reset{*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body,h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0}button,input,select{font:inherit}img,svg{display:block}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}html{scroll-behavior:auto}}}@layer base{:root{color-scheme:light;--paper:#f6f4ef;--panel:#fdfcf9;--ink:#14140f;--muted:#5c5b51;--rule:#14140f;--soft:#d9d6ca;--accent:#d8552f;--st-calculated:#62625a;--st-testing:#93650f;--st-dialed:#3f6b34;--st-revision:#bc3a17;--sans:"Archivo Variable", "Helvetica Neue", Helvetica, Arial, sans-serif;--mono:"SF Mono", ui-monospace, Menlo, Consolas, "Liberation Mono", monospace;--page:1120px;--rule-w:2px}:root[data-theme=dark]{color-scheme:dark;--paper:#141410;--panel:#1b1b16;--ink:#f0eee5;--muted:#a4a296;--rule:#f0eee5;--soft:#35342c;--accent:#f0764d;--st-calculated:#97968a;--st-testing:#d5a13c;--st-dialed:#8cba7c;--st-revision:#f08661}.flav-cocoa{--flav:#46291a;--flav-ink:#f6f4ef;--flav-ink-muted:#f6f4efb8}.flav-coffee{--flav:#b98d5e;--flav-ink:#14140f;--flav-ink-muted:#14140fa8}.flav-vanilla{--flav:#e9c85e;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}.flav-coconut{--flav:#f7f5ef;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}.flav-stracciatella{--flav:#f1efe7;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}.flav-pistachio{--flav:#8fb27c;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}.flav-berry{--flav:#b95d7e;--flav-ink:#f6f4ef;--flav-ink-muted:#f6f4efbd}.flav-citrus{--flav:#dd8a3a;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}.flav-mango{--flav:#efb82f;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}.flav-blue{--flav:#6f95b4;--flav-ink:#14140f;--flav-ink-muted:#14140fa3}body{background:var(--paper);min-width:320px;min-height:100vh;color:var(--ink);font-family:var(--sans);text-rendering:optimizelegibility;font-size:16px;font-weight:420;line-height:1.6}a{color:inherit;text-decoration:none}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}::selection{background:var(--accent);color:#fff}.display{letter-spacing:-.035em;text-transform:lowercase;text-wrap:balance;font-weight:780;line-height:.96}.data{font-family:var(--mono);font-variant-numeric:tabular-nums}.label{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:500}}@layer components{.skip-link{z-index:100;border:var(--rule-w) solid var(--rule);background:var(--paper);color:var(--ink);padding:10px 14px;font-weight:700;transition:translate .14s;position:fixed;top:12px;left:12px;translate:0 -250%}.skip-link:focus{translate:0}.site-header{width:min(calc(100% - 48px), var(--page));border-bottom:var(--rule-w) solid var(--rule);justify-content:space-between;align-items:center;gap:24px;min-height:78px;margin-inline:auto;display:flex}.brand{letter-spacing:-.04em;text-transform:lowercase;font-size:21px;font-weight:800}.brand span{color:var(--accent)}.site-header nav{align-items:center;gap:26px;margin-left:auto;display:flex}.site-header nav a{color:var(--muted);letter-spacing:.01em;text-transform:lowercase;font-size:13.5px;font-weight:560}.site-header nav a:hover{color:var(--ink)}.site-header nav a.active{color:var(--ink);text-decoration:underline;text-decoration-thickness:var(--rule-w);text-underline-offset:6px;text-decoration-color:var(--accent)}.theme-toggle{border:var(--rule-w) solid var(--rule);width:36px;height:36px;color:var(--ink);cursor:pointer;background:0 0;place-items:center;padding:0;display:grid}.theme-toggle:hover{background:var(--ink);color:var(--paper)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.8px;width:16px}.moon-icon,:root[data-theme=dark] .sun-icon{display:none}:root[data-theme=dark] .moon-icon{display:block}.page-shell{width:min(calc(100% - 48px), var(--page));margin-inline:auto}.site-footer{width:min(calc(100% - 48px), var(--page));border-top:var(--rule-w) solid var(--rule);color:var(--muted);text-transform:lowercase;flex-wrap:wrap;justify-content:space-between;gap:8px 30px;margin:0 auto;padding:22px 0 34px;font-size:12.5px;display:flex}.home-hero{border-bottom:var(--rule-w) solid var(--rule);padding:84px 0 64px}.home-hero h1{max-width:12ch;font-size:clamp(54px,9vw,104px)}.home-hero h1 em{color:var(--accent);font-style:normal}.home-hero p{max-width:52ch;color:var(--muted);margin-top:26px;font-size:clamp(15px,1.8vw,17px)}.recipe-index{padding:44px 0 90px}.filter-bar{border:var(--rule-w) solid var(--rule);background:var(--panel);grid-template-columns:1fr 180px 180px;display:grid}.filter-bar label+label{border-left:var(--rule-w) solid var(--rule)}.search-field{align-items:center;gap:12px;padding-left:16px;display:flex}.search-field svg{fill:none;width:17px;stroke:var(--muted);stroke-linecap:round;stroke-width:2px;flex:none}.filter-bar input,.filter-bar select{width:100%;min-height:52px;color:var(--ink);font-family:var(--mono);background:0 0;border:0;border-radius:0;outline:0;padding:0 16px;font-size:12.5px}.filter-bar input{padding-left:0}.filter-bar input::placeholder{color:var(--muted)}.filter-bar :disabled{cursor:not-allowed;opacity:.55}.index-meta{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 20px;padding:14px 2px 10px;display:flex}.index-meta .method-link{font-family:var(--mono);letter-spacing:.06em;color:var(--muted);font-size:11px}.index-meta .method-link:hover{color:var(--accent)}.recipe-list{border-top:var(--rule-w) solid var(--rule)}.recipe-row{border-bottom:var(--rule-w) solid var(--rule);grid-template-columns:86px minmax(0,1.45fr) minmax(0,.8fr) 210px 150px;align-items:center;gap:26px;padding:24px 2px;transition:background .14s;display:grid;position:relative}.recipe-row:hover{background:color-mix(in srgb, var(--flav) 14%, transparent)}.row-link{z-index:2;position:absolute;inset:0}.row-swatch{background:var(--flav);width:86px;height:86px;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent);transition:scale .14s}.recipe-row:hover .row-swatch{scale:1.06}.row-title h2{font-size:clamp(24px,3vw,31px)}.recipe-row:hover .row-title h2{text-underline-offset:5px;text-decoration:underline 3px;text-decoration-color:var(--flav)}.row-title>p{max-width:46ch;color:var(--muted);margin-top:7px;font-size:13.5px;line-height:1.5}.row-facts{font-family:var(--mono);letter-spacing:.04em;color:var(--muted);gap:6px;font-size:11px;display:grid}.row-macros{gap:22px;display:flex}.row-macros span{gap:2px;display:grid}.row-macros strong{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:17px;font-weight:600;line-height:1.1}.row-macros small{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:9px}.status-badge{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;color:var(--status-color);justify-self:end;font-size:10.5px;font-weight:600}.status-badge .status-mark{margin-right:6px}.status-calculated{--status-color:var(--st-calculated)}.status-testing{--status-color:var(--st-testing)}.status-dialed-in{--status-color:var(--st-dialed)}.status-needs-revision{--status-color:var(--st-revision)}.no-results{border-bottom:var(--rule-w) solid var(--rule);text-align:center;padding:70px 20px}.no-results h3{margin:8px 0 16px;font-size:clamp(26px,4vw,38px)}.text-button{border:0;border-bottom:var(--rule-w) solid var(--accent);color:var(--accent);cursor:pointer;font-family:var(--mono);letter-spacing:.06em;background:0 0;padding:0;font-size:12px}.recipe-detail{padding:34px 0 90px}.back-link{font-family:var(--mono);letter-spacing:.06em;color:var(--muted);margin-bottom:26px;font-size:11px;display:inline-block}.back-link:hover{color:var(--accent)}.recipe-hero{background:var(--flav);color:var(--flav-ink);padding:clamp(34px,5vw,58px) clamp(26px,4vw,50px)}.recipe-hero .status-badge{--status-color:var(--flav-ink);justify-self:start}.recipe-hero h1{max-width:14ch;margin:18px 0 16px;font-size:clamp(44px,7.5vw,84px)}.recipe-deck{max-width:56ch;color:var(--flav-ink-muted);font-size:clamp(15px,2vw,18px);line-height:1.55}.status-explainer{color:var(--flav-ink-muted);font-family:var(--mono);letter-spacing:.05em;margin-top:16px;font-size:11px}.recipe-hero-facts{border:var(--rule-w) solid var(--rule);background:var(--panel);border-top:0;grid-template-columns:repeat(4,1fr);display:grid}.recipe-hero-facts div{border-right:1px solid var(--soft);min-height:96px;padding:16px 18px}.recipe-hero-facts div:last-child{border-right:0}.recipe-hero-facts span{margin-bottom:7px;display:block}.recipe-hero-facts strong{font-size:13.5px;font-weight:560;line-height:1.4;display:block}.recipe-actions{color:var(--muted);font-family:var(--mono);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;padding:20px 2px;font-size:11px;display:flex}.primary-button{border:var(--rule-w) solid var(--rule);background:var(--ink);min-height:44px;color:var(--paper);cursor:pointer;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:10px;padding:0 18px;font-size:11.5px;font-weight:600;display:inline-flex}.primary-button:hover{color:var(--ink);background:0 0}.primary-button svg{fill:none;stroke:currentColor;stroke-linejoin:round;stroke-width:1.7px;width:15px}.recipe-alert{border:var(--rule-w) solid var(--rule);border-left:8px solid var(--accent);background:var(--panel);margin-bottom:26px;padding:18px 22px;font-size:13.5px}.recipe-alert strong{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:11px;font-weight:600}.recipe-alert p{color:var(--muted);margin-top:6px}.macro-strip{border:var(--rule-w) solid var(--rule);background:var(--panel);margin-bottom:54px;display:flex}.macro-strip div{border-right:1px solid var(--soft);flex-direction:column;flex:1 1 0;justify-content:center;gap:3px;min-height:88px;padding:14px 18px;display:flex}.macro-strip div:first-child{flex:1.6 1 0}.macro-strip div:last-child{border-right:0}.macro-strip strong{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:23px;font-weight:600;line-height:1.1}.macro-strip div:first-child strong{font-family:var(--sans);font-size:13px;font-weight:560;line-height:1.4}.recipe-columns{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:70px;display:grid}.recipe-section,.spin-plan,.recipe-notes{padding:48px 0}.section-kicker{border-top:var(--rule-w) solid var(--rule);align-items:baseline;gap:14px;margin-bottom:30px;padding-top:14px;display:flex}.section-kicker span{font-family:var(--mono);color:var(--accent);font-size:11px}.section-kicker p{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;font-size:11px;font-weight:600}.section-note{color:var(--muted);margin:-18px 0 24px;font-size:12.5px}.ingredient-group+.ingredient-group{margin-top:32px}.ingredient-group h2,.steps-list h2,.rendered-notes h2{letter-spacing:-.02em;margin-bottom:10px;font-size:19px;font-weight:700}.ingredient-group ul{border-top:1px solid var(--soft);list-style:none}.ingredient-group li{border-bottom:1px solid var(--soft);transition:opacity .14s}.ingredient-group label{cursor:pointer;grid-template-columns:18px 76px 1fr;align-items:start;gap:13px;padding:13px 0;display:grid}.ingredient-group input{opacity:0;width:1px;height:1px;position:absolute}.custom-check{border:var(--rule-w) solid var(--rule);width:17px;height:17px;margin-top:3px;position:relative}.ingredient-group input:checked+.custom-check{background:var(--ink)}.ingredient-group input:checked+.custom-check:after{border-right:2px solid var(--paper);border-bottom:2px solid var(--paper);content:"";width:4px;height:8px;position:absolute;top:1px;left:4px;rotate:45deg}.ingredient-group input:focus-visible+.custom-check{outline:3px solid var(--accent);outline-offset:2px}.ingredient-group li.checked{opacity:.4}.ingredient-group li.checked .ingredient-name,.ingredient-group li.checked .ingredient-amount{text-decoration:line-through}.ingredient-amount{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:13px;font-weight:600}.ingredient-name{font-size:14.5px}.ingredient-name small{color:var(--muted);margin-top:3px;font-size:11px;display:block}.products-note{border-left:var(--rule-w) solid var(--rule);color:var(--muted);margin-top:26px;padding:14px 16px;font-size:12px;line-height:1.55}.steps-list{counter-reset:steps;list-style:none}.steps-list li{counter-increment:steps;grid-template-columns:38px 1fr;gap:16px;padding:0 0 26px;display:grid}.steps-list .step-number:before{color:var(--accent);content:counter(steps, decimal-leading-zero);font-family:var(--mono);font-size:13px}.steps-list p{color:var(--muted);font-size:14.5px}.spin-plan,.recipe-notes{border-top:0}.spin-grid{border:var(--rule-w) solid var(--rule);background:var(--panel);grid-template-columns:repeat(4,1fr);display:grid}.spin-grid article{border-right:1px solid var(--soft);min-height:190px;padding:20px 22px}.spin-grid article:last-child{border-right:0}.spin-grid span{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-size:10px;font-weight:600}.spin-grid p{margin-top:16px;font-size:13px;line-height:1.55}.notes-grid{grid-template-columns:1fr 1fr;gap:50px;display:grid}.rendered-notes{color:var(--muted);font-size:14.5px}.rendered-notes>*+*{margin-top:13px}.rendered-notes ul,.rendered-notes ol{padding-left:20px}.rendered-notes a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.formula-panel{border:var(--rule-w) solid var(--rule);background:var(--panel);align-self:start}.formula-panel summary{cursor:pointer;letter-spacing:-.01em;padding:18px 20px;font-weight:700;list-style:none;position:relative}.formula-panel summary::-webkit-details-marker{display:none}.formula-panel summary:after{content:"+";font-family:var(--mono);font-size:20px;font-weight:400;position:absolute;top:16px;right:20px}.formula-panel[open] summary:after{content:"−"}.formula-panel summary span{color:var(--muted);font-family:var(--mono);letter-spacing:.06em;margin-top:2px;font-size:10px;font-weight:400;display:block}.formula-panel dl,.formula-panel>ul{border-top:var(--rule-w) solid var(--rule);margin:0 20px 20px}.formula-panel dl div{border-bottom:1px solid var(--soft);grid-template-columns:1fr 1fr;gap:14px;padding:10px 0;font-size:12.5px;display:grid}.formula-panel dd{font-family:var(--mono);text-align:right;font-size:12px}.formula-panel>ul{color:var(--muted);padding:14px 0 0 18px;font-size:12px}.simple-hero{border-bottom:var(--rule-w) solid var(--rule);padding:84px 0 60px}.simple-hero h1{max-width:14ch;margin-bottom:24px;font-size:clamp(46px,8vw,92px)}.simple-hero>p:last-child{max-width:56ch;color:var(--muted);font-size:clamp(15px,2vw,17px)}.status-guide{gap:var(--rule-w);border:var(--rule-w) solid var(--rule);background:var(--rule);grid-template-columns:repeat(2,1fr);margin:54px 0 90px;display:grid}.status-guide article{background:var(--paper);grid-template-columns:40px 1fr;gap:16px;min-height:170px;padding:26px;display:grid}.status-guide .status-mark{font-family:var(--mono);color:var(--status-color,var(--ink));font-size:17px}.status-guide strong{letter-spacing:-.02em;text-transform:lowercase;font-size:22px;font-weight:720}.status-guide p{color:var(--muted);margin-top:9px;font-size:13.5px}.method-grid{border-top:var(--rule-w) solid var(--rule);grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:70px;padding:62px 0;display:grid}.method-grid:first-of-type{border-top:0}.method-grid h2{margin-top:10px;font-size:clamp(30px,4vw,42px)}.prose{color:var(--muted);font-size:15.5px}.prose p+p{margin-top:20px}.prose ol{padding-left:22px}.prose li+li{margin-top:13px}.prose code{border:1px solid var(--soft);background:var(--panel);color:var(--ink);padding:2px 6px;font-size:.82em}.not-found{border:var(--rule-w) solid var(--rule);text-align:center;margin:90px 0 110px;padding:80px 20px}.not-found h1{margin:12px 0 16px;font-size:clamp(40px,7vw,72px)}.not-found>p:not(.label){color:var(--muted);margin-bottom:28px}}@layer utilities{.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}[hidden]{display:none!important}}@media (width<=960px){.recipe-row{grid-template-columns:64px minmax(0,1fr) auto;grid-template-areas:"swatch title status""swatch facts facts""swatch macros macros";gap:10px 20px}.row-swatch{grid-area:swatch;align-self:start;width:64px;height:64px}.row-title{grid-area:title}.row-facts{grid-area:facts}.recipe-row .status-badge{grid-area:status;align-self:start;margin-top:8px}.row-macros{grid-area:macros;margin-top:4px}.recipe-columns,.method-grid,.notes-grid{grid-template-columns:1fr;gap:0}.method-grid{gap:26px;padding:48px 0}.notes-grid{gap:40px}.recipe-hero-facts{grid-template-columns:repeat(2,1fr)}.recipe-hero-facts div:nth-child(2n){border-right:0}.recipe-hero-facts div:nth-child(-n+2){border-bottom:1px solid var(--soft)}.spin-grid{grid-template-columns:repeat(2,1fr)}.spin-grid article{border-bottom:1px solid var(--soft);min-height:0}.spin-grid article:nth-child(2n){border-right:0}.spin-grid article:nth-child(n+3){border-bottom:0}.status-guide{grid-template-columns:1fr}.status-guide article{min-height:0}}@media (width<=650px){.site-header,.page-shell,.site-footer{width:min(calc(100% - 28px), var(--page))}.site-header{gap:14px;min-height:66px}.site-header nav{gap:16px}.site-header nav a:last-of-type{display:none}.home-hero{padding:58px 0 46px}.recipe-index{padding-top:30px}.filter-bar{grid-template-columns:1fr 1fr}.filter-bar .search-field{border-bottom:var(--rule-w) solid var(--rule);grid-column:1/-1}.filter-bar label:nth-child(2){border-left:0}.recipe-row{grid-template-columns:44px minmax(0,1fr);grid-template-areas:"swatch title""swatch status""facts facts""macros macros";gap:8px 16px;padding:20px 2px}.row-swatch{width:44px;height:44px}.recipe-row .status-badge{justify-self:start;margin-top:0}.row-facts{margin-top:6px}.macro-strip{flex-wrap:wrap}.macro-strip div{border-bottom:1px solid var(--soft);flex:34%;min-height:74px}.macro-strip div:first-child{border-right:0;flex:100%}.macro-strip div:last-child{border-bottom:0}.recipe-hero-facts{grid-template-columns:1fr}.recipe-hero-facts div{border-right:0;border-bottom:1px solid var(--soft);min-height:0}.recipe-hero-facts div:last-child{border-bottom:0}.spin-grid{grid-template-columns:1fr}.spin-grid article{border-right:0;border-bottom:1px solid var(--soft)}.spin-grid article:last-child{border-bottom:0}.recipe-actions{flex-direction:column;align-items:start}.site-footer{flex-direction:column}}@media print{:root,:root[data-theme=dark]{color-scheme:light;--paper:#fff;--panel:#fff;--ink:#111;--muted:#444;--rule:#111;--soft:#ccc;--accent:#111}@page{margin:15mm}body{font-size:10pt}.no-print,.site-header,.site-footer,.back-link,.theme-toggle{display:none!important}.page-shell{width:100%}.recipe-detail{padding:0}.recipe-hero{color:#111;background:0 0;padding:0 0 6mm}.recipe-hero .status-badge{--status-color:#111}.recipe-deck,.status-explainer{color:#444}.recipe-hero h1{font-size:34pt}.recipe-hero-facts{border-top:var(--rule-w) solid var(--rule);grid-template-columns:repeat(4,1fr)}.macro-strip{margin-bottom:8mm}.recipe-columns{grid-template-columns:.9fr 1.1fr;gap:10mm}.recipe-section,.spin-plan,.recipe-notes{padding:6mm 0}.spin-grid{grid-template-columns:repeat(4,1fr)}.spin-grid article{min-height:0;padding:4mm}.spin-grid p{margin-top:3mm}.custom-check{print-color-adjust:exact}.formula-panel{break-inside:avoid}.formula-panel:not([open])>:not(summary){display:block}}
