@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.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:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.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 dark;--ground:#f5f0e8;--surface:#fcfaf6;--ink:#221a14;--muted:#6b5f55;--line:#e3dacd;--edge:#978877;--accent:#a4561a;--on-accent:#fff9f2;--on-ink:var(--ground);--danger:#b3261e;--focus-ring:var(--ink);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-md:12px;--radius-sm:8px;--control-height:48px;--target-min:44px;--header-height:60px;--font-sans:"Geist Variable", Geist, "Helvetica Neue", Arial, sans-serif;--gutter-left:max(var(--space-6), env(safe-area-inset-left));--gutter-right:max(var(--space-6), env(safe-area-inset-right))}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--ground:#16110d;--surface:#201914;--ink:#f2eae0;--muted:#a69888;--line:#382d25;--edge:#74665a;--accent:#e39a55;--on-accent:#1a120c;--danger:#f2b8b5}}*,:before,:after{box-sizing:border-box}body{background:var(--ground);min-height:100svh;color:var(--ink);font-family:var(--font-sans);-webkit-text-size-adjust:100%;margin:0;font-size:16px;line-height:1.45}:focus-visible,input[type=date]:focus-within{outline:2px solid var(--focus-ring);outline-offset:2px}a{color:var(--ink);text-underline-offset:3px}h1{letter-spacing:-.02em;text-wrap:balance;margin:0;font-size:34px;font-weight:600;line-height:1.1}h2{margin:0;font-size:17px;font-weight:600;line-height:24px}h3{color:var(--muted);margin:0;font-size:14px;font-weight:600;line-height:20px}p{margin:0}.muted{color:var(--muted)}.small{font-size:14px;line-height:20px}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}[hidden]{display:none!important}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app-header{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:calc(var(--header-height) + env(safe-area-inset-top));padding:env(safe-area-inset-top) var(--gutter-right) 0 var(--gutter-left);background:var(--ground);border-bottom:1px solid var(--line);display:flex}.app-header nav{gap:var(--space-4);min-width:0;display:flex}.app-header nav a{min-height:var(--target-min);align-items:center;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.app-header nav a.who{min-width:0;line-height:var(--target-min);text-overflow:ellipsis;white-space:nowrap;color:var(--muted);display:block;overflow:hidden}.app-name{min-height:var(--target-min);color:var(--ink);letter-spacing:-.03em;align-items:center;font-size:20px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.back{align-items:center;gap:var(--space-1);min-width:0;min-height:var(--target-min);font-weight:500;text-decoration:none;display:inline-flex}.back span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.back svg{flex:none}.page{gap:var(--space-6);max-width:40rem;padding:var(--space-8) var(--gutter-right) calc(var(--space-10) + env(safe-area-inset-bottom)) var(--gutter-left);flex-direction:column;margin:0 auto;display:flex}.page.intro{padding-top:var(--space-10)}.page.sections{gap:var(--space-10)}.page-title{gap:var(--space-1);flex-direction:column;display:flex}.page-title .muted{font-size:14px;line-height:20px}.page-intro{gap:var(--space-2);flex-direction:column;display:flex}.text-link{min-height:var(--target-min);align-self:flex-start;align-items:center;font-weight:500;display:inline-flex}.align-start{align-self:flex-start}button,.button{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-height);padding:0 var(--space-5);border:1px solid var(--accent);border-radius:var(--radius-md);background:var(--accent);color:var(--on-accent);font:inherit;text-align:center;cursor:pointer;font-weight:600;text-decoration:none;display:inline-flex}button.secondary,.button.secondary{border-color:var(--edge);color:var(--ink);background:0 0;font-weight:500}button:disabled,.button[aria-disabled=true]{background:var(--line);border-color:var(--line);color:var(--muted);cursor:not-allowed}.actions{gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.form{gap:var(--space-4);flex-direction:column;display:flex}.form.roomy{gap:var(--space-6)}.form>.actions,.form>button{margin-top:var(--space-2)}.field{gap:var(--space-2);flex-direction:column;display:flex}.field label,fieldset legend{padding:0;font-size:14px;font-weight:600;line-height:20px}.field label .muted,fieldset legend .muted{font-weight:400}input,select,textarea{width:100%;min-height:var(--control-height);padding:0 var(--space-4);background:var(--surface);border:1px solid var(--edge);border-radius:var(--radius-md);color:var(--ink);font:inherit;font-size:max(1rem,16px)}input[type=search]{appearance:none}input[type=date]{text-align:left;display:block}input[inputmode=decimal],input[inputmode=numeric]{font-variant-numeric:tabular-nums}textarea{padding:var(--space-3) var(--space-4);resize:vertical;min-height:96px}[aria-invalid=true]{border-color:var(--danger)}.hint{color:var(--muted);font-size:14px;line-height:20px}.error{align-items:flex-start;gap:var(--space-2);color:var(--danger);font-size:14px;line-height:20px;display:flex}.error svg{flex:none;margin-top:2px}input[type=checkbox]{width:22px;height:22px;min-height:0;accent-color:var(--ink);flex:none;margin:0;padding:0}.check{align-self:flex-start;align-items:center;gap:var(--space-3);min-height:var(--target-min);cursor:pointer;font-weight:500;display:inline-flex}.photo-input{position:relative;overflow:hidden}.photo-input input{opacity:0;cursor:pointer;min-height:0;position:absolute;inset:0}.photo-input[aria-disabled=true] input{cursor:not-allowed}.photo-input:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}button.link-button{min-height:var(--target-min);color:var(--ink);text-underline-offset:3px;background:0 0;border:0;border-radius:0;padding:0;font-size:14px;font-weight:500;text-decoration:underline}button.link-button:disabled{color:var(--muted);background:0 0}fieldset{border:0;min-width:0;margin:0;padding:0}.choices{gap:var(--space-1);padding:var(--space-1);background:var(--surface);border:1px solid var(--edge);border-radius:var(--radius-md);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}fieldset[aria-invalid=true] .choices{border-color:var(--danger)}.choice{justify-content:center;align-items:center;gap:var(--space-1);min-height:var(--target-min);border-radius:var(--radius-sm);font-variant-numeric:tabular-nums;cursor:pointer;font-weight:500;display:flex;position:relative}.choice input{opacity:0;cursor:pointer;width:100%;min-height:0;margin:0;position:absolute;inset:0}.choice:has(input:checked){background:var(--ink);color:var(--on-ink)}.choice:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}.grind-stepper{gap:var(--space-2);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.grind-stepper button{padding:0 var(--space-4)}.grind-stepper input{text-align:center;font-variant-numeric:tabular-nums;font-size:20px;font-weight:500}.shot-fields{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;display:grid}.recipe{gap:var(--space-6);padding:var(--space-6);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);flex-direction:column;display:flex}.recipe-label{color:var(--muted);font-size:14px;font-weight:600;line-height:20px}.dose{align-items:baseline;gap:var(--space-2);color:var(--accent);display:flex}.dose-figure{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:96px;font-weight:500;line-height:1}.dose-unit{font-size:17px;font-weight:600}.recipe-numbers{gap:var(--space-3);padding-top:var(--space-6);border-top:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;display:grid}.recipe-numbers div{gap:var(--space-1);flex-direction:column;display:flex}.recipe-numbers dt{color:var(--muted);font-size:14px;line-height:20px}.recipe-numbers dd{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-size:20px;font-weight:500;line-height:28px}.recipe-meta{gap:var(--space-1);flex-direction:column;display:flex}.recipe-meta .muted{font-size:14px;line-height:20px}.recipe-switcher{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.recipe-switcher li{border-bottom:1px solid var(--line)}.recipe-switcher li:last-child{border-bottom:0}.recipe-switcher a{padding:10px 0;line-height:24px;text-decoration:none;display:block}.recipe-switcher a[aria-current]{font-weight:600}.section{gap:var(--space-2);padding-top:var(--space-8);border-top:1px solid var(--line);flex-direction:column;display:flex}.section>.button,.section>button{margin-top:var(--space-2);align-self:flex-start}.section>h3{margin-top:var(--space-4)}.ratings{margin:0;padding:0;list-style:none}.ratings li{gap:var(--space-1);padding:var(--space-4) 0;border-bottom:1px solid var(--line);flex-direction:column;display:flex}.ratings li:last-child{border-bottom:0}.rating-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.rating-who{flex-direction:column;gap:2px;display:flex}.rating-side{align-items:center;gap:var(--space-3);display:flex}.rating-side .text-link{font-size:14px}.rating-name{font-weight:500}.buy-again{color:var(--muted);font-size:14px;line-height:20px}.stars{letter-spacing:2px;color:var(--ink);white-space:nowrap;font-size:17px}.stars .off{color:var(--edge)}.purchases{margin:0;padding:0;list-style:none}.purchases li{justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--line);display:flex}.purchase-figures{font-variant-numeric:tabular-nums;white-space:nowrap}.details{flex-direction:column;margin:0;display:flex}.details div{gap:var(--space-3);padding:var(--space-2) 0;grid-template-columns:112px minmax(0,1fr);display:grid}.details dt{color:var(--muted);font-size:14px;line-height:23px}.details dd{margin:0}.bean-photos{gap:var(--space-3);flex-direction:column;display:flex}.bean-photo-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.bean-photo-grid li{flex-direction:column;display:flex}.bean-photo-grid li.cover{grid-column:1/-1}.photo-link{border-radius:var(--radius-md);display:block}.bean-photo-grid img,.photo-grid img,.photo-full{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);width:100%;display:block}.bean-photo-grid img{aspect-ratio:4/3;object-fit:cover}.bean-photo-grid li.cover img{max-height:20rem}.photo-controls{align-items:center;column-gap:var(--space-4);min-height:var(--target-min);flex-wrap:wrap;display:flex}.bean-photos>.photo-input{align-self:flex-start}.photo-full{height:auto}.photo-grid{gap:var(--space-3);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.photo-grid li{gap:var(--space-2);flex-direction:column;display:flex}.photo-grid img{aspect-ratio:3/4;object-fit:cover;border-radius:var(--radius-sm)}.photo-grid button{padding:0 var(--space-2)}.photo-keep{cursor:pointer;flex-direction:column;display:flex}.photo-keep:has(input:not(:checked)) img{opacity:.4}.photo-keep .check{align-self:stretch}.library-heading{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.library-heading>div{flex-direction:column;gap:2px;display:flex}.search{gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto;display:grid}.bean-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.bean-list li{border-bottom:1px solid var(--line)}.bean-list a{justify-content:space-between;align-items:center;gap:var(--space-3);min-height:var(--target-min);padding:var(--space-4) 0;color:inherit;text-decoration:none;display:flex}.bean-text{flex-direction:column;gap:2px;min-width:0;display:flex}.bean-name{font-size:17px;font-weight:500;line-height:24px}.bean-meta{color:var(--muted);font-size:14px;line-height:20px}.bean-dose{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:18px;font-weight:500}.bean-dose .unit,.bean-dose.none{color:var(--muted);font-size:14px}.notice{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--surface);border:1px solid var(--edge);border-radius:var(--radius-md);display:flex}.notice svg{flex:none;margin-top:2px}.notice.error{border-color:var(--danger);font-size:16px;line-height:1.45}.notice .notice-text{color:var(--ink)}.equipment-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.equipment-list>li{gap:var(--space-3);padding:var(--space-4) 0;border-bottom:1px solid var(--line);flex-direction:column;display:flex}.equipment-name{font-size:17px;font-weight:500;line-height:24px}.equipment-form,.retire-confirm{padding:var(--space-6);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md)}.equipment-form h3{color:var(--ink);font-size:17px;line-height:24px}.shot-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.shot-list>li{gap:var(--space-3);padding:var(--space-4) 0;border-bottom:1px solid var(--line);flex-direction:column;display:flex}.shot-list>li>div{flex-direction:column;gap:2px;display:flex}.shot-author{font-weight:500}.shot-numbers{font-variant-numeric:tabular-nums;font-weight:500}.row>.retire-confirm{flex-basis:100%}
