@font-face{font-family:Archivo;font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/archivo-normal-latin.woff2)format("woff2");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}@font-face{font-family:Archivo;font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/archivo-normal-latin-ext.woff2)format("woff2");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:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/instrument-serif-normal-latin.woff2)format("woff2");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}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/instrument-serif-normal-latin-ext.woff2)format("woff2");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:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/instrument-serif-italic-latin.woff2)format("woff2");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}@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/instrument-serif-italic-latin-ext.woff2)format("woff2");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}:root{--bg:#f2f2f0;--surface:#fff;--surface-muted:#f7f7f5;--sidebar:#101010;--sidebar-hover:#262626;--text:#101010;--text-muted:#767676;--text-faint:#a0a0a0;--border:#ebebeb;--rule-strong:#101010;--accent:#b96035;--accent-deep:#8f4425;--accent-soft:#f1dfd2;--on-accent:#fff;--band:#101010;--on-band:#fff;--sidebar-accent:#d78355;--success:#1c6b3a;--danger:#a3271f;--roast-light:#e6dccb;--roast-light-ink:#2a2118;--roast-medium:#7d5f4b;--roast-medium-ink:#f4ece3;--roast-dark:#2f221b;--roast-dark-ink:#eadfd5;--roast-unknown:#101010;--roast-unknown-ink:#fff;--shadow:none;--radius:0;--sidebar-width:232px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--font-display:"Instrument Serif",Georgia,serif;color:var(--text);background:var(--bg);font-family:Archivo,system-ui,sans-serif}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dark{--bg:#121212;--surface:#1b1b1b;--surface-muted:#242424;--sidebar:#000;--sidebar-hover:#202020;--text:#f4f4f2;--text-muted:#9a9a9a;--text-faint:#6f6f6f;--border:#2e2e2e;--rule-strong:#f4f4f2;--accent:#d78355;--accent-deep:#ef9b6c;--accent-soft:#4b2d21;--on-accent:#1f120c;--band:#f4f4f2;--on-band:#121212;--success:#6fbf8b;--danger:#e38279;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}#__nuxt,body,html{min-height:100%;margin:0}body{background:var(--bg);min-width:320px}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-shell{min-height:100vh;display:flex}.sidebar{z-index:20;width:var(--sidebar-width);color:#fbf4ee;background:var(--sidebar);flex-direction:column;padding:24px 12px 14px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.brand{letter-spacing:-.02em;align-items:center;gap:11px;padding:0 12px 24px;font-size:20px;font-weight:650;display:flex}.brand-mark{flex:none;width:28px;height:28px;display:block}.primary-nav,.secondary-nav{gap:2px;display:grid}.secondary-nav{margin-top:18px}.nav-group{color:#8d857f;margin:0 0 4px;padding:0 12px;font-size:12px}.nav-link{color:#d8c9bf;background:0 0;border:0;border-radius:0;align-items:center;gap:12px;min-height:40px;padding:0 12px;font-size:14px;transition:background-color .16s,color .16s;display:flex;position:relative}.nav-link.is-active,.nav-link.router-link-active,.nav-link:hover{color:#fff8f2;background:var(--sidebar-hover)}.nav-link.is-active,.nav-link.router-link-active{box-shadow:inset 2px 0 0 var(--sidebar-accent)}.nav-link[href=\/].router-link-active:not(.router-link-exact-active){color:#d8c9bf;box-shadow:none;background:0 0}.nav-more{display:none}.nav-count{min-width:22px;height:22px;color:var(--on-accent);background:var(--accent);border-radius:0;place-items:center;margin-left:auto;padding:0 5px;font-size:12px;font-weight:700;display:inline-grid}.nav-dot{background:var(--sidebar-accent);width:7px;height:7px;position:absolute;top:6px;right:calc(50% - 16px)}.sidebar-spacer{flex:1;min-height:18px}.profile{border-top:1px solid var(--sidebar-hover);align-items:center;gap:10px;padding:12px 6px 0 12px;display:flex}.profile-avatar{width:32px;height:32px;color:var(--on-accent);background:var(--sidebar-accent);border-radius:0;flex:0 0 32px;place-items:center;font-size:12px;font-weight:700;display:grid}.profile-name{color:#f7ebe3;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13px;overflow:hidden}.profile-menu-button{color:#d8c9bf;background:0 0;border:0;place-items:center;width:34px;height:34px;display:grid}.profile-menu-button:hover{color:#fff8f2;background:var(--sidebar-hover)}.menu-panel{border:1px solid var(--rule-strong);min-width:220px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);color:var(--text);background:var(--surface);margin:0;padding:6px 0;position:fixed;inset:auto;overflow-y:auto;box-shadow:0 14px 40px #0000002e}.menu-item{width:100%;min-height:40px;color:var(--text);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:0 14px;font-size:14px;display:flex}.menu-item:focus-visible,.menu-item:hover{background:var(--surface-muted)}.menu-item.danger{color:var(--danger)}.menu-item:disabled{cursor:not-allowed;opacity:.45}.menu-item .nav-count{margin-left:auto}.menu-item-static:hover{background:0 0}.menu-item-static .language-switch{width:100%}.menu-group{color:var(--text-muted);margin:6px 0 2px;padding:0 14px;font-size:12px}.menu-separator{background:var(--border);height:1px;margin:6px 0}.menu-section{gap:8px;padding:10px 14px;display:grid}.menu-section+.menu-section{border-top:1px solid var(--border)}.menu-section>strong{color:var(--text-muted);font-size:12px;font-weight:600}.sheet{width:100%;max-width:none;height:100%;max-height:none;color:var(--text);background:0 0;border:0;margin:0;padding:0}.sheet::backdrop{background:#10101075}.sheet-frame{background:var(--bg);flex-direction:column;height:100%;margin-left:auto;display:flex;overflow:hidden;box-shadow:-12px 0 40px #00000038}.sheet-side .sheet-frame{width:min(580px,100%)}.sheet-side.sheet-wide .sheet-frame{width:min(760px,100%)}.sheet-center{place-items:center;padding:24px;display:grid}.sheet-center[open]{display:grid}.sheet-center .sheet-frame{border:1px solid var(--rule-strong);width:min(560px,100%);height:auto;max-height:min(86vh,100%);margin:0;box-shadow:0 18px 60px #00000047}.sheet-head{border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:flex-start;gap:14px;padding:18px 22px 14px;display:flex}.sheet-title{min-width:0}.sheet-title h2{font-family:var(--font-display);overflow-wrap:anywhere;margin:0;font-size:30px;font-weight:400;line-height:1.05}.sheet-title p{color:var(--text-muted);margin:5px 0 0;font-size:13px}.sheet-body{flex:1;align-content:start;gap:18px;padding:20px 22px 28px;display:grid;overflow-y:auto}.sheet-foot{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 22px;display:flex}.sheet-foot .spacer{flex:1}.sheet .section-heading h2,.sheet-body>h3{letter-spacing:0;margin:0;font-size:15px}.sheet .settings-panel{background:0 0;border:0;padding:0}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.toolbar .search-field{flex:280px;min-width:0}.segmented{border:1px solid var(--border);background:var(--surface-muted);padding:3px;display:inline-flex}.segmented button{min-height:36px;color:var(--text-muted);white-space:nowrap;background:0 0;border:0;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:650;display:inline-flex}.segmented button.is-active{color:var(--text);background:var(--surface);box-shadow:inset 0 0 0 1px var(--border)}.segmented .count{color:var(--text-faint);font-variant-numeric:tabular-nums;font-weight:500}.filter-button{border:1px solid var(--border);min-height:44px;color:var(--text);background:var(--surface);align-items:center;gap:8px;padding:0 14px;font-size:13px;font-weight:650;display:inline-flex}.filter-button:hover{background:var(--surface-muted)}.filter-button .count{min-width:20px;height:20px;color:var(--on-accent);background:var(--accent);place-items:center;padding:0 5px;font-size:11px;display:inline-grid}.active-filters{flex-wrap:wrap;align-items:center;gap:6px;margin:-4px 0 14px;display:flex}.active-filter{min-height:28px;color:var(--accent-deep);background:var(--accent-soft);border:0;align-items:center;gap:6px;padding:0 4px 0 10px;font-size:12px;font-weight:650;display:inline-flex}.active-filter svg{opacity:.7}.facet-rail{display:none}@media (width>=1100px){.has-facet-rail .filter-menu-trigger{display:none}.has-facet-rail .facet-layout{grid-template-columns:210px minmax(0,1fr);align-items:start;gap:24px;display:grid}.facet-rail{gap:18px;max-height:calc(100vh - 32px);display:grid;position:sticky;top:16px;overflow-y:auto}}.facet-rail-section{gap:1px;display:grid}.facet-rail-section>strong{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:700}.facet-rail-item{min-height:32px;color:var(--text);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:10px;padding:0 8px;font-size:13.5px;display:flex}.facet-rail-item:hover{background:var(--surface-muted)}.facet-rail-item.is-active{color:var(--accent-deep);background:var(--accent-soft);font-weight:650}.facet-rail-item .count{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12px}.facet-rail-item.is-active .count{color:inherit}.facet-rail .coffee-rating-stars{padding:4px 8px}.facet-swatch{border:1px solid var(--border);background:var(--roast-unknown);width:10px;height:10px;margin-right:8px;display:inline-block}.facet-swatch[data-roast=light]{background:var(--roast-light)}.facet-swatch[data-roast=medium]{background:var(--roast-medium)}.facet-swatch[data-roast=dark]{background:var(--roast-dark)}.ledger{border:1px solid var(--border);background:var(--surface)}.ledger-row{border-bottom:1px solid var(--border);align-items:center;gap:14px;min-height:72px;padding:10px 12px 10px 14px;display:flex}.ledger-row:last-child{border-bottom:0}.ledger-row.is-clickable{cursor:pointer}.ledger-row.is-clickable:hover{background:var(--surface-muted)}.ledger-main{min-width:0;color:inherit;text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:14px;padding:0;display:flex}.ledger-copy{flex:1;gap:3px;min-width:0;display:grid}.ledger-title{font-family:var(--font-display);font-size:21px;font-weight:400;line-height:1.15}.ledger-meta,.ledger-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ledger-meta{color:var(--text-muted);font-size:12.5px}.ledger-aside{color:var(--text-muted);font-variant-numeric:tabular-nums;gap:12px;font-size:12.5px}.ledger-actions,.ledger-aside{flex:none;align-items:center;display:flex}.ledger-actions{gap:6px}.ledger-thumb{width:48px;height:48px;color:var(--text-muted);background:var(--surface-muted);flex:0 0 48px;place-items:center;display:grid;overflow:hidden}.ledger-thumb img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.ledger-thumb[data-roast=light]{background:var(--roast-light);color:var(--roast-light-ink)}.ledger-thumb[data-roast=medium]{background:var(--roast-medium);color:var(--roast-medium-ink)}.ledger-thumb[data-roast=dark]{background:var(--roast-dark);color:var(--roast-dark-ink)}.mini-meter{background:var(--surface-muted);width:72px;height:4px}.mini-meter span{background:var(--accent);height:100%;display:block}.show-more{border:1px solid var(--border);color:var(--text-muted);background:var(--surface-muted);border-top:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;font-size:13px;display:flex}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.tabs{border-bottom:1px solid var(--border);scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}.tabs a,.tabs button{min-height:42px;color:var(--text-muted);white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;align-items:center;gap:7px;padding:0 14px;font-size:13.5px;font-weight:650;display:inline-flex}.tabs .is-active{border-bottom-color:var(--accent);color:var(--text)}.tabs .count{color:var(--text-faint);font-weight:500}.main-content{width:calc(100% - var(--sidebar-width));min-height:100vh;margin-left:var(--sidebar-width)}.page-wrap{width:min(1180px,100%);margin:0 auto;padding:30px 42px 68px}.topbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:32px;display:flex}.topbar h1{letter-spacing:-.045em;margin:0;font-size:clamp(26px,3vw,38px);font-weight:680;line-height:1.08}.topbar p{color:var(--text-muted);margin:8px 0 0;font-size:14px}.topbar-actions{flex-wrap:wrap;gap:10px;display:flex}.page-action{min-height:46px;color:var(--on-accent);background:var(--accent);border:0;border-radius:0;align-items:center;gap:9px;padding:0 18px;font-weight:650;transition:background-color .16s,transform .16s;display:inline-flex}.page-action:hover{background:var(--accent-deep)}.page-action:active{transform:translateY(1px)}.page-action.secondary{border:1px solid var(--border);color:var(--text);background:var(--surface)}.page-action.secondary:hover{background:var(--surface-muted)}.page-action.secondary.danger{border-color:var(--danger);color:var(--danger)}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;display:grid}.dashboard-wide{grid-column:1/-1}.home-greeting{letter-spacing:-.02em!important;font-size:clamp(36px,4.6vw,58px)!important;font-weight:400!important}.dashboard-head{border-top:1px solid var(--rule-strong);justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;padding-top:9px;display:flex}.dashboard-head h2{letter-spacing:0;margin:0;font-size:14px;font-weight:650}.dashboard-more{color:var(--text-muted);align-items:center;gap:3px;font-size:13px;display:inline-flex}.dashboard-more:hover{color:var(--text)}.dashboard-empty{color:var(--text-muted);margin:0;padding:18px 0;font-size:14px}.tile-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.tile{border:1px solid var(--border);min-width:0;color:var(--text);background:var(--surface);grid-template-rows:auto 1fr auto;display:grid}.tile:hover{border-color:var(--rule-strong)}.tile-media{aspect-ratio:16/9;color:var(--accent-deep);background:var(--accent-soft);place-items:center;display:grid;overflow:hidden}.tile-media img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.tile-copy{gap:3px;min-width:0;padding:12px 12px 6px;display:grid}.tile-title{font-family:var(--font-display);font-size:21px;line-height:1.1}.tile-meta,.tile-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tile-meta{color:var(--text-muted);font-size:12px}.tile-cta{gap:6px;padding:8px 12px 12px;font-size:12.5px;font-weight:650;display:inline-flex}.home-notice,.tile-cta{color:var(--accent-deep);align-items:center}.home-notice{border:1px solid var(--accent);background:var(--accent-soft);gap:12px;padding:14px 16px;font-size:14px;font-weight:600;display:flex}.home-notice span{flex:1}.dashboard-wide .band-label{color:inherit;border:0;margin:0;padding:0}.band-value{align-items:center;gap:13px;min-width:0;display:flex}.band-name{font-family:var(--font-display);text-overflow:ellipsis;white-space:nowrap;font-size:25px;line-height:1.1;overflow:hidden}.band-meta{color:inherit;opacity:.66;font-size:12px}.list-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:0;overflow:hidden}.list-row{border-bottom:1px solid var(--border);align-items:center;gap:13px;min-height:70px;padding:12px 16px;display:flex}.list-row:last-child{border-bottom:0}.list-row.interactive{transition:background-color .16s}.list-row.interactive:hover{background:var(--surface-muted)}.row-icon{border:1px solid var(--border);width:36px;height:36px;color:var(--accent-deep);background:var(--surface-muted);border-radius:0;flex:0 0 36px;place-items:center;display:grid}.row-copy{flex:1;min-width:0}.row-meta{text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:12px;display:block;overflow:hidden}.row-chevron,.row-meta{color:var(--text-muted)}.row-chevron{flex:none}.row-avatar{width:36px;height:36px;color:var(--accent-deep);background:var(--accent-soft);border-radius:0;flex:0 0 36px;place-items:center;font-size:12px;font-weight:700;display:grid}.row-star{color:var(--accent);flex:none}.empty-state{color:var(--text-muted);text-align:center;padding:28px 18px;font-size:14px}.search-field{border:1px solid var(--border);min-width:260px;color:var(--text-muted);background:var(--surface);border-radius:0;align-items:center;gap:9px;padding:0 12px;display:flex}.search-field input{width:100%;min-height:42px;color:var(--text);background:0 0;border:0;outline:0}.collection-list{gap:10px;display:grid}.recipe-groups{gap:14px;display:grid}.recipe-group-header{width:100%;color:var(--text);text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;padding:4px 2px;font-size:25px;font-weight:400;display:flex}.recipe-group-title{align-items:center;gap:8px;display:inline-flex}.recipe-group-chevron{color:var(--text-muted);flex:none;transition:transform .16s}.recipe-group.open .recipe-group-chevron{transform:rotate(90deg)}.recipe-group-body{transition:grid-template-rows .3s cubic-bezier(.16,1,.3,1);display:grid;overflow:hidden}.recipe-group-body.open{grid-template-rows:minmax(0,1fr)}.recipe-group-body>.collection-list{min-height:0;padding-top:10px;overflow:hidden}@media (prefers-reduced-motion:reduce){.recipe-group-body{transition:none}}.coffee-item{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:0;flex-wrap:wrap;align-items:center;gap:16px;padding:16px;display:flex}.coffee-avatar{width:52px;height:52px;color:var(--text-muted);background:var(--surface-muted);border-radius:0;flex:0 0 52px;place-items:center;font-size:19px;display:grid}.coffee-avatar[data-roast=light]{background:var(--roast-light);color:var(--roast-light-ink)}.coffee-avatar[data-roast=medium]{background:var(--roast-medium);color:var(--roast-medium-ink)}.coffee-avatar[data-roast=dark]{background:var(--roast-dark);color:var(--roast-dark-ink)}.coffee-copy{flex:1;min-width:200px}.coffee-copy h3{margin:0;font-size:23px}.coffee-copy p{color:var(--text-muted);margin:5px 0 0;font-size:13px}.coffee-meta>*+:before{color:var(--text-muted);content:" · "}.coffee-meta a{color:var(--accent-deep);text-underline-offset:3px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.coffee-meta a:hover{text-decoration-color:currentColor}.library-entry-reason{color:var(--danger)}.coffee-image{-o-object-fit:cover;object-fit:cover}.coffee-image-button{background:0 0;border:0;border-radius:0;flex:0 0 52px;width:52px;height:52px;padding:0}.coffee-image-button .coffee-avatar{width:100%;height:100%}.coffee-image-button:hover .coffee-image{opacity:.84}.coffee-form{margin:-10px 0 24px}.coffee-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;display:grid}.coffee-form-wide{grid-column:1/-1}.batch-form,.coffee-form-actions,.image-actions,.image-url-form{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.coffee-form-actions{justify-content:flex-end;margin-top:4px}.archive-toggle{color:var(--text-muted);align-items:center;gap:7px;font-size:13px;display:inline-flex}.batch-list{flex-wrap:wrap;gap:7px;display:flex}.batch-form,.batch-list{margin-bottom:11px}.batch-form input,.coffee-edit-form input,.coffee-edit-form textarea,.image-url-form input{border:1px solid var(--border);min-width:150px;min-height:34px;color:var(--text);background:var(--surface);border-radius:0;padding:0 9px;font-size:13px}.image-url-form{margin-top:11px}.image-url-form input{flex:240px}.coffee-edit-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:11px 0;display:grid}.coffee-edit-form textarea{resize:vertical;grid-column:1/-1;min-height:62px;padding-top:8px}.coffee-edit-form button{justify-self:start}.coffee-image-editor{border-top:1px solid var(--border);margin:11px 0;padding-top:11px}.coffee-image-editor-heading{margin-bottom:9px}.coffee-image-editor-heading strong{font-size:13px;display:block}.coffee-image-editor-heading p{color:var(--text-muted);margin:4px 0 0;font-size:12px}.image-actions{border-top:1px solid var(--border);padding-top:11px}.coffee-image-editor .image-actions{border-top:0;padding-top:0}.tag{min-height:24px;color:var(--accent-deep);background:var(--accent-soft);border-radius:0;align-items:center;padding:0 8px;font-size:12px;font-weight:650;display:inline-flex}.coffee-tags{gap:6px;margin-top:7px}.coffee-tags,.tag-filter{flex-wrap:wrap;display:flex}.tag-filter{align-items:center;gap:7px}.tag-filter-row{margin:-8px 0 12px}.rating-filter-row{margin:0 0 20px}.tag-toggle{border:1px solid var(--border);min-height:30px;color:var(--text-muted);background:var(--surface);border-radius:0;align-items:center;padding:0 11px;font-size:12px;font-weight:650;display:inline-flex}.tag-toggle:hover{background:var(--surface-muted)}.tag-toggle.is-active{color:var(--accent-deep);background:var(--accent-soft);border-color:#0000}.tag-field{border:0;min-width:0;margin-bottom:16px;padding:0}.tag-field legend{color:var(--text-muted);margin-bottom:7px;padding:0;font-size:13px;font-weight:650}.coffee-edit-form .tag-field{grid-column:1/-1;margin-bottom:0}.coffee-supply-cell{min-width:130px}.batch-amount,.batch-roasted-on{border:1px solid var(--border);min-height:20px;color:var(--text);background:var(--surface);border-radius:0;margin-left:6px;padding:0 4px;font-size:12px}.batch-amount{width:62px}.batch-list .tag{flex-wrap:wrap;max-width:100%}.batch-frozen{align-items:center;gap:3px;margin-left:6px;font-size:12px;display:inline-flex}.batch-frozen input{margin:0}.supply-meter{background:var(--surface-muted);border-radius:0;width:100%;height:6px;margin:5px 0 3px;overflow:hidden}.supply-meter span{background:var(--accent);border-radius:0;height:100%;transition:width .32s;display:block}.coffee-rating-form{border-bottom:1px solid var(--border);grid-template-columns:minmax(160px,240px) minmax(220px,1fr);align-items:start;gap:8px 12px;margin-bottom:11px;padding-bottom:11px;display:grid}.coffee-rating-form .form-field{margin-bottom:0}.coffee-rating-form .form-field span{color:var(--text-muted);font-size:13px;font-weight:650}.coffee-rating-form textarea{min-height:70px}.coffee-rating-actions{flex-wrap:wrap;grid-column:1/-1;gap:9px;display:flex}.data-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px;display:grid}.data-cell{border:1px solid var(--border);background:var(--surface);border-radius:0;padding:12px}.data-cell label{color:var(--text-muted);letter-spacing:.16em;text-transform:uppercase;margin-bottom:5px;font-size:9.5px;font-weight:600;display:block}.data-cell label a{color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.data-cell label a:hover{text-decoration-color:currentColor}.data-cell strong{font-size:15px}.data-cell span{color:var(--text-muted);margin-top:3px;font-size:12px;display:block}.image-preview-dialog{border:1px solid var(--border);background:var(--surface);border-radius:0;gap:12px;width:min(820px,100%);padding:14px;display:grid;position:relative;box-shadow:0 16px 50px #0000003d}.image-preview-dialog img{-o-object-fit:contain;object-fit:contain;border-radius:0;width:100%;max-height:78vh;display:block}.image-preview-dialog p{margin:0;font-size:14px;font-weight:650}.image-preview-close{z-index:1;position:absolute;top:22px;right:22px}.roaster-notes-review-hint{margin-top:6px}.review-dialog{border:1px solid var(--border);background:var(--surface);border-radius:0;gap:12px;width:min(620px,100%);max-height:84vh;padding:16px;display:grid;overflow-y:auto;box-shadow:0 16px 50px #0000003d}.review-dialog-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.review-dialog-heading strong{font-size:15px;display:block}.review-dialog-hint{color:var(--text-muted);margin:4px 0 0;font-size:12px}.review-match-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.review-match{border:1px solid var(--border);background:var(--surface-muted);cursor:pointer;border-radius:0;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:9px 11px;display:grid}.review-match small{color:var(--text-muted);font-size:11px;display:block}.review-match-path{margin-top:2px}.review-match-source{overflow-wrap:anywhere;margin-top:4px}.review-dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:9px;display:flex}.brew-page{background:var(--bg);flex:1;width:100%;min-height:100vh;padding:22px 26px 40px}.brew-header{justify-content:space-between;align-items:center;gap:12px;max-width:720px;margin:0 auto;display:flex}.brew-header h1{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:clamp(21px,3.4vw,30px);overflow:hidden}.icon-button{border:1px solid var(--border);width:42px;height:42px;color:var(--text);background:var(--surface);border-radius:0;place-items:center;display:inline-grid}.brew-content{flex-direction:column;justify-content:center;align-items:center;max-width:720px;min-height:calc(100vh - 92px);margin:0 auto;padding:30px 0 28px;display:flex}.brew-timer-block{width:100%;color:inherit;text-align:center;background:0 0;border:0;border-radius:0;margin:0 0 30px;padding:6px 0;display:block}.brew-timer-block:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.brew-timer{color:var(--text);letter-spacing:-.08em;margin:0;font-size:clamp(76px,17vw,156px);font-weight:700;line-height:.9;display:block}.brew-timer-secondary{color:var(--text-muted);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;gap:7px;margin-top:10px;font-size:16px;display:flex}.brew-timer-block:hover .brew-timer-secondary{color:var(--text)}.step-line{grid-template-columns:repeat(4,1fr);align-items:center;width:min(100%,530px);margin:0 auto 36px;display:grid}.step-dot{border:2px solid var(--border);width:32px;height:32px;color:var(--text-muted);background:var(--surface);border-radius:0;place-items:center;margin:0 auto;font-size:13px;font-weight:700;display:grid;position:relative}.step-dot:not(:last-child):after{z-index:-1;background:var(--border);content:"";width:calc(100% + 26px);height:2px;position:absolute;top:14px;left:30px}.step-dot.done{border-color:var(--text);color:var(--on-accent);background:var(--text)}.step-dot.active{border-color:var(--accent);color:var(--accent);background:var(--surface)}.brew-illustration{width:82px;height:82px;color:var(--accent-deep);border:1px solid var(--border);background:var(--surface-muted);border-radius:0;place-items:center;margin:0 auto 16px;display:grid}.brew-step-name{text-align:center;margin:0;font-size:clamp(40px,10vw,76px)}.brew-target-label{text-align:center;margin:20px 0 0}.brew-target{text-align:center;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0 9px;margin:4px 0 0;font-size:clamp(24px,5vw,34px);font-weight:600;display:flex}.brew-target-value{color:var(--accent);white-space:nowrap;font-variant-numeric:tabular-nums;align-items:baseline;display:inline-flex}.brew-target-value strong{font-weight:700}.brew-target-unit{margin-left:3px;font-size:.62em;font-weight:650}.brew-target-role{color:var(--text-muted);font-size:.55em;font-weight:650}.brew-target-arrow{color:var(--text-muted);font-size:.7em}.brew-detail{text-align:center;max-width:44ch;margin:6px auto 12px}.brew-detail,.brew-remaining{color:var(--text-muted);font-size:16px}.brew-remaining{justify-content:center;align-items:center;gap:8px;margin:0 0 18px;display:flex}.next-step{width:min(100%,720px);margin:40px auto 28px}.next-step-value{flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:6px 14px;min-width:0;display:flex}.next-step-name{overflow-wrap:anywhere;min-width:0;font-family:var(--font-display);align-items:baseline;gap:8px;font-size:23px;font-weight:400;line-height:1.15;display:inline-flex}.next-step-time{font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:inline-flex}.next-step-target{opacity:.66;font-variant-numeric:tabular-nums}.brew-actions{gap:12px;width:min(100%,720px);display:grid}.brew-next{min-height:64px;color:var(--on-accent);background:var(--accent);border:0;border-radius:0;justify-content:center;align-items:center;gap:12px;font-size:22px;font-weight:700;display:flex}.brew-next:hover{background:var(--accent-deep)}.brew-secondary{grid-template-columns:1fr 1fr;gap:12px;display:grid}.brew-secondary button{border:1px solid var(--text);min-height:50px;color:var(--text);background:0 0;border-radius:0;justify-content:center;align-items:center;gap:8px;font-size:14px;display:flex}.brew-secondary button:hover{background:var(--surface-muted)}.journal-row{flex-wrap:wrap}.login-page{background:var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.legal-draft-note{color:var(--text-muted);background:var(--surface-muted);margin:0 0 18px;padding:10px 12px;font-size:13px;line-height:1.5}.legal-draft-note,.login-panel{border:1px solid var(--border);border-radius:0}.login-panel{background:var(--surface);width:min(440px,100%);box-shadow:var(--shadow);padding:34px}.login-panel h1{letter-spacing:-.05em;margin:0 0 8px;font-size:31px}.login-panel p{color:var(--text-muted);margin:0 0 24px;line-height:1.5}.form-field{gap:7px;margin-bottom:16px;display:grid}.form-field label{color:var(--text-muted);font-size:13px;font-weight:650}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--border);min-height:44px;color:var(--text);background:var(--surface);border-radius:0;outline:0;padding:0 12px}.form-field textarea{resize:vertical;min-height:92px;padding-top:12px}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-error{color:var(--danger);margin:10px 0 0;font-size:13px}.demo-note{border-left:3px solid var(--accent);color:var(--text-muted);margin-top:18px;padding:11px 12px;line-height:1.45}.demo-note,.form-success{background:var(--surface-muted);font-size:13px}.form-success{border-left:3px solid var(--success);color:var(--success);margin:12px 0;padding:10px 12px}.settings-section.settings-preferences{margin-top:0}.preferences-panel{margin-bottom:0}.settings-section{margin-top:34px}.section-heading{justify-content:space-between;align-items:end;gap:20px;margin-bottom:14px;display:flex}.section-heading h2{margin:0}.section-heading h2:not(.kicker){letter-spacing:-.025em;font-size:20px}.settings-section>.section-heading{border-top:1px solid var(--rule-strong);align-items:stretch;padding-top:9px}.section-heading p{color:var(--text-muted);margin:5px 0 0;font-size:13px}.settings-row-title{color:var(--text);font-size:14px;font-weight:600;line-height:1.25;display:block}.settings-select{border:1px solid var(--border);min-height:42px;color:var(--text);background:var(--surface);border-radius:0;outline:0;padding:0 10px}.settings-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.settings-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:0;padding:18px}.settings-panel-title{align-items:flex-start;gap:11px;margin-bottom:18px;display:flex}.settings-panel-title>svg{color:var(--accent-deep);flex:none;margin-top:2px}.settings-panel-title h3{margin:0;font-size:15px}.settings-panel-title p{color:var(--text-muted);margin:4px 0 0;font-size:12px;line-height:1.4}.compact-form{gap:12px;display:grid}.compact-form label,.inline-reset-form label,.user-create-form label{color:var(--text-muted);gap:6px;font-size:12px;font-weight:650;display:grid}.compact-form input,.inline-reset-form input,.user-create-form input,.user-create-form select{border:1px solid var(--border);min-height:42px;color:var(--text);background:var(--surface);border-radius:0;outline:0;padding:0 11px}.compact-form input:focus,.inline-reset-form input:focus,.user-create-form input:focus,.user-create-form select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.form-status{color:var(--text-muted);justify-content:space-between;align-items:center;gap:10px;font-size:13px;font-weight:650;display:flex}.intensity-grid{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;display:grid}.intensity-grid .hint{font-size:11px;font-weight:400}.rating-details{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.rating-details summary{color:var(--text-muted);cursor:pointer;font-size:13px}.rating-details>.compact-form{margin-top:16px}.chip-remove{color:inherit;cursor:pointer;background:0 0;border:0;margin-left:4px;font-weight:700}.form-hint{color:var(--text-muted);margin:0;font-size:12px}.status-line{color:var(--success);align-items:center;gap:7px;margin:0;font-size:13px;font-weight:650;display:flex}.security-recommendation{border-left:3px solid var(--accent);color:var(--text);background:var(--surface-muted);margin:0 0 14px;padding:10px 12px;font-size:13px;line-height:1.45}.totp-setup>p{color:var(--text-muted);font-size:13px;line-height:1.45}.totp-setup>code{overflow-wrap:anywhere;border:1px solid var(--border);background:var(--surface-muted);padding:10px;font-size:13px;display:block}.recovery-codes{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px;padding:0;list-style:none;display:grid}.recovery-codes code{color:var(--text);font-size:13px}.sessions-panel{margin-top:14px}.session-list{border-top:1px solid var(--border);margin:0 -18px 16px}.session-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:14px;padding:13px 18px;display:flex}.session-info{min-width:0}.session-heading{align-items:center;gap:8px;display:flex}.session-row strong{font-size:13px}.session-info>span{color:var(--text-muted);margin-top:4px;font-size:12px;display:block}.danger-zone{border-color:var(--danger)}.text-button{border:1px solid var(--border);min-height:34px;color:var(--text);background:0 0;border-radius:0;justify-content:center;align-items:center;gap:6px;padding:0 9px;font-size:12px;font-weight:650;display:inline-flex}.text-button:hover{background:var(--surface-muted)}.text-button.danger{color:var(--danger)}.text-button:disabled{cursor:not-allowed;opacity:.45}.user-create-form{grid-template-columns:1fr 1fr 1.2fr .75fr auto;align-items:end;gap:12px;display:grid}.user-admin-list{gap:8px;margin-top:14px;display:grid}.user-admin-row{border:1px solid var(--border);background:var(--surface);border-radius:0;grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;gap:18px;padding:14px 16px;display:grid}.user-admin-identity{align-items:center;gap:11px;min-width:0;display:flex}.user-admin-identity h3{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:14px;overflow:hidden}.user-admin-identity p{color:var(--text-muted);margin:4px 0 0;font-size:12px}.user-admin-state{color:var(--text-muted);align-items:center;gap:10px;font-size:12px;display:flex}.security-state{align-items:center;gap:5px;display:inline-flex}.user-admin-actions{flex-wrap:wrap;justify-content:flex-end;gap:7px;display:flex}.inline-reset-form{border-top:1px solid var(--border);grid-column:1/-1;grid-template-columns:minmax(220px,1fr) auto;align-items:end;gap:10px;padding-top:12px;display:grid}.library-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;display:grid}.library-card{border:1px solid var(--border);min-width:0;color:var(--text);background:var(--surface);box-shadow:var(--shadow);text-align:left;cursor:pointer;border-radius:0;flex-direction:column;padding:0;transition:transform .16s,border-color .16s;display:flex;overflow:hidden}.library-card:focus-visible,.library-card:hover{border-color:var(--accent);transform:translateY(-2px)}.library-card-media,.library-sheet-hero{color:var(--accent-deep);background:var(--accent-soft);place-items:center;display:grid;position:relative}.library-card-media{aspect-ratio:4/3}.library-card-media[data-method=espresso],.library-sheet-hero[data-method=espresso]{color:var(--roast-dark-ink);background:var(--roast-dark)}.library-card-media img,.library-sheet-hero img{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.library-card-pill{color:var(--text);background:var(--surface);letter-spacing:.04em;text-transform:uppercase;padding:4px 8px;font-size:11px;font-weight:700;position:absolute;top:10px;left:10px}.library-card-pill.is-end{color:var(--on-accent);background:var(--accent);left:auto;right:10px}.library-card-pill.is-failed{background:var(--danger)}.library-card-body{gap:4px;padding:14px;display:grid}.library-card-body strong.display{overflow-wrap:anywhere;font-size:21px;font-weight:400;line-height:1.15}.library-card-coffee{color:var(--text-muted);font-size:13px}.library-card-foot{justify-content:space-between;align-items:center;gap:8px;margin-top:8px;display:flex}.library-card-counts{color:var(--text-muted);font-variant-numeric:tabular-nums;flex:none;align-items:center;gap:4px;font-size:12.5px;display:inline-flex}.library-card-counts svg:nth-of-type(2){margin-left:8px}.library-author{min-width:0;color:var(--text-muted);align-items:center;gap:7px;margin:0;font-size:12.5px;display:inline-flex}.library-initials{width:20px;height:20px;color:var(--on-accent);background:var(--accent);border-radius:999px;flex:0 0 20px;place-items:center;font-size:9px;font-weight:750;display:inline-grid}.library-sheet-hero{flex:0 0 200px}.library-sheet-close{position:absolute;top:14px;right:14px}.library-sheet-social{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:13px;display:flex}.library-facts{gap:22px;display:grid}.library-facts-stats{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.library-facts-heading{border-top:1px solid var(--rule-strong);margin:0 0 10px;padding-top:9px}.library-facts-steps{margin:0;padding:0;list-style:none;display:grid}.library-facts-steps li{border-bottom:1px solid var(--border);grid-template-columns:52px 1fr;gap:12px;padding:10px 0;display:grid}.library-facts-time{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700}.library-facts-meta{color:var(--text-muted);margin-top:2px;font-size:12px;display:block}.library-facts-steps p{margin:4px 0 0;font-size:14px;line-height:1.45}.library-facts-coffee{margin:0 0 4px;font-size:22px}.library-facts-hints{grid-template-columns:auto 1fr;gap:6px 14px;margin:12px 0 0;font-size:13px;display:grid}.library-facts-hints dt{color:var(--text-muted)}.library-facts-hints dd{margin:0}.library-pagination{color:var(--text-muted);justify-content:center;align-items:center;gap:14px;padding:12px;display:flex}.library-description{color:var(--text);margin:0;line-height:1.5}.library-steps{gap:8px;margin:0;padding-left:22px;display:grid}.library-steps li{padding-left:3px}.library-steps li span{color:var(--text-muted);margin-top:2px;font-size:12px;display:block}.library-publish-form,.library-report-form{gap:7px;display:grid}.library-publish-form label,.library-report-form label{color:var(--text-muted);font-size:12px;font-weight:650}.library-publish-form input,.library-publish-form select,.library-publish-form textarea,.library-report-form select,.library-report-form textarea{border:1px solid var(--border);min-height:40px;color:var(--text);background:var(--surface);border-radius:0;padding:8px 10px}.library-publish-form textarea,.library-report-form textarea{resize:vertical;min-height:78px}.library-publish-form{gap:14px;margin-top:24px}.library-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.library-paywall-copy{align-items:center;gap:14px;min-width:0;display:flex}.library-paywall h2{color:inherit;margin:0;font-size:13px;line-height:1.35}.library-paywall p{color:var(--text-muted);margin:5px 0 0;font-size:13px}.library-paywall .page-action{width:auto;margin-left:auto}.library-publish-preview h4.display{margin:0;font-size:28px}.knowledge-toolbar{gap:12px;margin-bottom:26px;display:grid}.knowledge-toolbar .search-field{max-width:640px}.knowledge-toolbar .search-field input{min-height:48px;font-size:15px}.knowledge-category-nav{flex-wrap:wrap;gap:6px;display:flex}.knowledge-list{gap:30px;display:grid}.knowledge-group-title{border-top:1px solid var(--rule-strong);align-items:baseline;gap:8px;margin:0 0 12px;padding-top:9px;font-size:14px;font-weight:650;display:flex}.knowledge-group-title span{color:var(--text-muted);font-weight:500}.knowledge-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.knowledge-entry-row{display:flex}.knowledge-entry-link{border:1px solid var(--border);background:var(--surface);flex-direction:column;flex:1;gap:6px;min-width:0;padding:16px 18px;display:flex}.knowledge-entry-link:hover{border-color:var(--rule-strong)}.knowledge-entry-category{color:var(--accent-deep);margin:0;font-size:12px;font-weight:650}.knowledge-entry-link h3{margin:0;font-size:24px;line-height:1.1}.knowledge-entry-summary{color:var(--text-muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.knowledge-entry-tendencies{color:var(--text);margin:auto 0 0;padding-top:6px;font-size:12px;font-weight:650;line-height:1.45}.knowledge-back{color:var(--text-muted);align-items:center;gap:7px;margin-bottom:24px;font-size:13px;font-weight:650;display:inline-flex}.knowledge-back:hover{color:var(--text)}.knowledge-article{width:min(720px,100%);margin:0 auto}.knowledge-steps{gap:4px;margin-bottom:16px;display:flex}.knowledge-steps button{background:var(--border);cursor:pointer;border:0;border-radius:0;flex:1;height:4px;padding:0}.knowledge-steps button.is-done{background:var(--accent)}.knowledge-cards{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;grid-auto-columns:100%;grid-auto-flow:column;display:grid;overflow-x:auto}.knowledge-cards::-webkit-scrollbar{display:none}.knowledge-card{border:1px solid var(--rule-strong);background:var(--surface);scroll-snap-align:start;scroll-snap-stop:always;min-width:0;min-height:440px;padding:40px 44px}.knowledge-card .knowledge-entry-category{letter-spacing:.12em;margin-bottom:16px}.knowledge-card-intro{flex-direction:column;justify-content:center;display:flex}.knowledge-card-intro h1{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:clamp(46px,8vw,78px);font-weight:400;line-height:.96}.knowledge-summary{max-width:52ch;margin:22px 0 0;font-size:18px;line-height:1.55}.knowledge-tendencies{flex-wrap:wrap;gap:8px;margin:26px 0 0;padding:0;list-style:none;display:flex}.knowledge-tendencies li{border:1px solid var(--accent);color:var(--accent-deep);padding:7px 11px;font-size:13px;font-weight:650;line-height:1.35}.knowledge-card h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 18px;font-size:40px;font-weight:400;line-height:1.05}.knowledge-section li,.knowledge-section p{max-width:62ch;margin:0 0 14px;font-size:17px;line-height:1.7}.knowledge-section ul{margin:0;padding-left:20px}.knowledge-related-list{border-top:1px solid var(--border);display:grid}.knowledge-related-link{border-bottom:1px solid var(--border);gap:3px;padding:12px 0;display:grid}.knowledge-related-link strong{font-size:15px}.knowledge-related-link span{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.knowledge-related-link:hover strong{color:var(--accent-deep)}.knowledge-sources{margin-top:24px}.knowledge-sources h3{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;margin:0 0 8px;font-size:11px;font-weight:700}.knowledge-sources ul{gap:7px;margin:0;padding:0;list-style:none;display:grid}.knowledge-sources li{gap:2px;display:grid}.knowledge-sources li a{width:fit-content;max-width:100%;color:var(--text);overflow-wrap:anywhere;text-underline-offset:3px;align-items:center;gap:6px;font-size:13px;font-weight:600;text-decoration:underline;display:inline-flex}.knowledge-sources li a:hover{color:var(--accent-deep)}.knowledge-sources li>span,.knowledge-sources>p{color:var(--text-muted);font-size:12px}.knowledge-sources>p{margin:12px 0 0}.knowledge-card-nav{justify-content:space-between;gap:12px;margin-top:14px;display:flex}.knowledge-card-nav .page-action{width:auto;min-width:0}.knowledge-card-nav .page-action span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.knowledge-card-nav .page-action:disabled{opacity:.35;cursor:default}@media (width<=700px){.knowledge-category-nav{scrollbar-width:none;flex-wrap:nowrap;margin:0 -16px;padding:0 16px;overflow-x:auto}.knowledge-category-nav .tag-toggle{flex:none}.knowledge-card{min-height:60vh;padding:26px 20px}.knowledge-card h2{font-size:32px}.knowledge-section li,.knowledge-section p{font-size:16px}.knowledge-card-nav .page-action:last-child{flex:1;justify-content:center}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=900px){:root{--sidebar-width:72px}.sidebar{padding:20px 10px 14px}.brand{justify-content:center;padding:0 0 24px}.brand span,.nav-group,.nav-link span,.profile-name{display:none}.secondary-nav{border-top:1px solid var(--sidebar-hover);margin-top:10px;padding-top:10px}.nav-link{justify-content:center;padding:0}.nav-link .nav-count{min-width:18px;height:18px;font-size:10px;position:absolute;top:2px;right:6px}.profile{flex-direction:column;padding:12px 0 0}.page-wrap{padding:26px 22px 58px}}@media (width<=700px){:root{--sidebar-width:0px}.sidebar{flex-direction:row;align-items:center;width:100%;max-width:100vw;height:62px;padding:0 4px;position:fixed;top:auto;bottom:0;right:0;overflow:visible}.brand,.profile,.secondary-nav,.sidebar-spacer{display:none}.primary-nav{flex:1;gap:2px;min-width:0;display:flex}.primary-nav .nav-link{flex-direction:column;flex:1 1 0;justify-content:center;gap:3px;min-width:0;min-height:54px}.primary-nav .nav-link span:not(.nav-dot){text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:10.5px;display:block;overflow:hidden}.nav-link.is-active,.nav-link.router-link-active{box-shadow:inset 0 2px 0 var(--sidebar-accent)}.nav-more{display:flex}.main-content{width:100%;margin-left:0;padding-bottom:62px}.page-wrap{padding:24px 16px 54px}.topbar{flex-direction:column;align-items:flex-start;margin-bottom:24px}.page-action{justify-content:center;width:100%}.topbar-actions{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px;width:100%;display:grid}.topbar-actions .page-action{min-height:44px;padding:0 10px;font-size:14px}.ledger-actions .page-action,.sheet-foot .page-action{width:auto}.dashboard-grid{grid-template-columns:minmax(0,1fr);gap:26px}.tile-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.search-field{min-width:0}.data-grid{grid-template-columns:1fr 1fr}.coffee-form-grid,.coffee-rating-form{grid-template-columns:1fr}.coffee-form-wide{grid-column:auto}.library-form-grid,.settings-grid{grid-template-columns:1fr}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-card-body{padding:10px}.library-card-pill.is-end{inset:auto auto 8px 8px}.library-card-body strong.display{font-size:17px}.library-card-foot{flex-wrap:wrap}.library-paywall{flex-wrap:wrap;align-items:flex-start}.library-paywall .page-action{width:100%;margin-left:0}.user-admin-row,.user-create-form{grid-template-columns:1fr}.user-admin-row{align-items:start}.user-admin-state{flex-wrap:wrap}.user-admin-actions{justify-content:flex-start}.inline-reset-form{grid-template-columns:1fr}.brew-page{padding:14px 16px 32px}.brew-content{min-height:calc(100vh - 72px);padding:16px 0 22px}.brew-timer-block{margin-bottom:24px}.next-step{margin-top:30px}.next-step-value{justify-content:flex-start}.brew-secondary{grid-template-columns:1fr}.login-panel{padding:26px 22px}}.display{font-family:var(--font-display);letter-spacing:-.015em;font-weight:400;line-height:1.04}.kicker{letter-spacing:.2em;font-size:10.5px}.kicker,.stamp{color:var(--text-muted);text-transform:uppercase;font-weight:600}.stamp{letter-spacing:.14em;white-space:nowrap;border:1.5px solid;padding:4px 7px;font-size:9.5px;display:inline-block}.stamp.is-ready{color:var(--success)}.stamp.is-failed{color:var(--danger)}.stamp.is-strong{color:var(--text)}.band{background:var(--band);color:var(--on-band);justify-content:space-between;align-items:center;gap:24px;padding:13px 18px;display:flex}.band .band-label{letter-spacing:.18em;text-transform:uppercase;opacity:.66;font-size:10.5px}.roast-head{background:var(--roast-unknown);color:var(--roast-unknown-ink);padding:28px}.roast-head[data-roast=light]{background:var(--roast-light);color:var(--roast-light-ink)}.roast-head[data-roast=medium]{background:var(--roast-medium);color:var(--roast-medium-ink)}.roast-head[data-roast=dark]{background:var(--roast-dark);color:var(--roast-dark-ink)}.roast-head .kicker{color:inherit;opacity:.72;margin:0}.roast-head .roast-name{margin:14px 0 0;font-size:clamp(34px,5vw,64px)}.roast-head dl{border-top:1px solid;margin:26px 0 0;display:flex}.roast-head dl>div{border-right:1px solid;flex:1;padding:12px 14px 0 0}.roast-head dl>div+div{padding-left:14px}.roast-head dl>div:last-child{border-right:0}.roast-head dt{letter-spacing:.16em;text-transform:uppercase;opacity:.68;margin:0;font-size:9.5px}.roast-head dd{margin:5px 0 0;font-size:16px;font-weight:600}@media (width<=700px){.band{align-items:stretch;gap:0}.band,.roast-head dl{flex-direction:column}.roast-head dl>div{border-bottom:1px solid;border-right:0;padding:10px 0}.roast-head dl>div+div{padding-left:0}.roast-head dl>div:last-child{border-bottom:0}}.journal-open{gap:10px;margin-bottom:22px;display:grid}.journal-group-header{justify-content:flex-start}.journal-row{color:inherit;text-decoration:none}.journal-row:hover{background:var(--surface-muted)}.coffee-ledger .coffee-tags{gap:4px;margin-top:3px;display:flex}.coffee-ledger .coffee-tags .tag{min-height:20px;padding:0 6px;font-size:11px}.coffee-ledger .roaster-notes-review-hint{min-height:28px;color:var(--accent-deep);border-color:#0000;flex:none;margin:0;font-weight:600}.coffee-ledger .roaster-notes-review-hint:hover{border-color:var(--border)}.coffee-supply-cell{justify-items:end;gap:4px;min-width:72px;display:grid}.coffee-rating-cell{min-width:0}.sort-field select{appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 0),linear-gradient(135deg,currentColor 50%,#0000 0);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px;padding-right:30px}.coffee-sheet-head{padding:18px 22px 0}.coffee-sheet-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.coffee-sheet-top .icon-button{color:inherit;background:0 0;border-color:currentColor}.coffee-sheet-identity{align-items:center;gap:16px;margin-top:10px;display:flex}.coffee-sheet-identity .coffee-image-button{flex:0 0 76px;width:76px;height:76px}.coffee-sheet-identity .coffee-image{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.coffee-sheet-head .roast-name{overflow-wrap:anywhere;margin:0;font-size:clamp(32px,4vw,46px)}.coffee-sheet-head dl{margin-top:18px}.coffee-sheet-head dl>div{padding-bottom:12px}.coffee-sheet-head dd a,.coffee-sheet-head dt a{color:inherit;text-underline-offset:3px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000}.coffee-sheet-head dd a:hover,.coffee-sheet-head dt a:hover{text-decoration-color:currentColor}.coffee-sheet-head dd{font-size:14px}.sheet-tabs{background:var(--surface);padding:0 14px}.coffee-sheet-notes{color:var(--text-muted);margin:0;font-size:13.5px;line-height:1.55}.coffee-sheet-notes strong{color:var(--text);margin-bottom:3px;font-size:13px;display:block}.sheet .coffee-rating-form{padding-bottom:16px}.sheet .batch-list{border:1px solid var(--border);background:var(--surface);gap:0;margin:0;padding:0;list-style:none;display:grid}.sheet .batch-list .tag.batch-row{border-bottom:1px solid var(--border);min-height:0;color:var(--text);background:0 0;gap:8px;padding:12px 14px;font-size:13px;font-weight:400;display:grid}.sheet .batch-list .batch-row:last-child{border-bottom:0}.batch-row-head strong{margin-right:6px}.batch-row-edit{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.batch-row-edit .batch-amount,.batch-row-edit .batch-currency,.batch-row-edit .batch-merchant,.batch-row-edit .batch-price,.batch-row-edit .batch-roasted-on{border:1px solid var(--border);min-height:34px;color:var(--text);background:var(--surface);margin:0;padding:0 8px;font-size:13px}.batch-row-edit .batch-amount,.batch-row-edit .batch-price{width:96px}.batch-row-edit .batch-merchant{border-radius:0;width:160px;max-width:100%}.batch-row-edit .batch-price-input{gap:4px;display:inline-flex}.batch-row-edit .batch-frozen{margin:0}.batch-row-edit .chip-remove{color:var(--text-muted);margin-left:auto;padding:6px}.batch-row-edit .chip-remove:hover{color:var(--danger)}.sheet .batch-form{border:1px dashed var(--border);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:14px;display:grid}.sheet .batch-form input:not([type=checkbox]),.sheet .batch-form select{border:1px solid var(--border);width:100%;min-width:0;min-height:38px;color:var(--text);background:var(--surface);padding:0 9px;font-size:13px}.batch-form-title{grid-column:1/-1;font-size:13px}.sheet .batch-form .batch-frozen{margin:0}.sheet .batch-form button{justify-self:end}.sheet .coffee-edit-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px;margin:0}.sheet .coffee-edit-form .form-field input,.sheet .coffee-edit-form .form-field textarea{width:100%;min-height:42px;font-size:14px}.sheet .coffee-edit-form .form-field textarea{min-height:90px;padding:10px 12px}.sheet .coffee-edit-form .coffee-form-wide{grid-column:1/-1}.coffee-supply-detail,.sheet .coffee-image-editor{margin:0}.tile-media:not(:has(img)){aspect-ratio:auto;height:64px}.image-preview-dialog{box-shadow:none;border:0}@media (width<=700px){.ledger-row{flex-wrap:wrap;gap:10px}.ledger-main{flex-basis:calc(100% - 52px)}.coffee-ledger .ledger-aside{order:3;justify-content:space-between;width:100%;padding-left:62px}.coffee-ledger .roaster-notes-review-hint{order:4;margin-left:62px}.ledger-title{font-size:19px}.toolbar .filter-button,.toolbar .segmented,.toolbar .sort-field{flex:auto}.toolbar .segmented button{flex:1;justify-content:center}.sheet-side .sheet-frame,.sheet-side.sheet-wide .sheet-frame,.sort-field select{width:100%}.sheet .batch-form,.sheet .coffee-edit-form{grid-template-columns:1fr}.sheet-center{align-items:end;padding:0}.sheet-center .sheet-frame{border-width:1px 0 0;width:100%;max-height:92vh}.sheet-body{padding:16px 16px 24px}.sheet-foot,.sheet-head{padding-left:16px;padding-right:16px}.coffee-sheet-head{padding:16px 16px 0}.show-more{text-align:center;flex-direction:column;align-items:stretch}}.sheet-frame>section.settings-panel{padding:20px 22px;overflow-y:auto}.recipe-groups{gap:18px}.recipe-group-header{border-top:1px solid var(--rule-strong);gap:12px;padding:8px 0;font-size:23px}.recipe-group-thumb{flex-basis:36px;width:36px;height:36px}.recipe-group-title{flex:1;min-width:0}.recipe-group-count{color:var(--text-muted);font-variant-numeric:tabular-nums;font-family:Archivo,system-ui,sans-serif;font-size:13px}.recipe-group-body>.ledger{min-height:0;overflow:hidden}.recipe-group-body{grid-template-rows:minmax(0,0fr)}.recipe-group-body>*{min-height:0;overflow:hidden}.recipe-row{flex-wrap:wrap;min-height:64px}.recipe-row .ledger-title{align-items:center;gap:8px;max-width:100%;font-size:19px;display:inline-flex}.recipe-provenance{color:var(--text-muted);flex-wrap:wrap;gap:4px 10px;margin:0;font-size:12px;display:flex}.recipe-provenance a{color:var(--accent-deep);text-underline-offset:3px;text-decoration:underline}.brew-button{border-color:var(--accent);color:var(--accent-deep)}.brew-button:hover{color:var(--on-accent);background:var(--accent)}.recipe-form{gap:16px}.recipe-kind{justify-self:start}.recipe-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px;display:grid}.recipe-form-wide{grid-column:1/-1}.recipe-form-heading{border-top:1px solid var(--border);margin:8px 0 0;padding-top:10px;font-size:14px}.recipe-step{border:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin:0;padding:14px;display:grid}.recipe-step legend{color:var(--text-muted);padding:0 6px;font-size:12.5px;font-weight:650}.recipe-step .text-button{grid-column:1/-1;justify-self:start}.recipe-add-step{justify-self:start}.compact-form select,.compact-form textarea{border:1px solid var(--border);min-height:42px;color:var(--text);background:var(--surface);border-radius:0;outline:0;padding:0 11px}.form-status{justify-content:flex-start;margin:6px 0 0}.fact-grid{border:1px solid var(--border);background:var(--surface);grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:0;margin:0;display:grid}.fact-grid>div{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:12px 14px}.fact-grid dt{color:var(--text-muted);font-size:12px}.fact-grid dd{font-variant-numeric:tabular-nums;margin:4px 0 0;font-size:17px;font-weight:600}.sheet-title .kicker{margin:0 0 4px}.sheet-title p a{color:var(--accent-deep);text-underline-offset:3px;text-decoration:underline}@media (width<=700px){.recipe-form-grid,.recipe-step{grid-template-columns:1fr}.recipe-row .ledger-actions{margin-left:auto}}.journal-stats{margin-bottom:22px}.journal-stats .fact-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.journal-stats .fact-grid dd{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.journal-open{margin-bottom:26px}.dashboard-head h2 .count{color:var(--accent-deep);margin-left:4px}.menu-field{color:var(--text-muted);gap:5px;font-size:12px;font-weight:600;display:grid}.menu-field select{width:100%}.journal-row .ledger-title{font-size:19px}@media (width<=900px){.journal-stats .fact-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=700px){.journal-stats .fact-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}button.dashboard-more{background:0 0;border:0;padding:0}.detail-head{border-bottom:1px solid var(--rule-strong);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:26px;padding-bottom:18px;display:flex}.detail-head .kicker{margin:0 0 8px}.detail-head h1{margin:0;font-size:clamp(38px,5vw,60px)}.detail-sub{color:var(--text-muted);margin:8px 0 0;font-size:14px}.detail-sub a{color:var(--accent-deep);text-underline-offset:3px;text-decoration:underline}.detail-head-actions{align-items:center;gap:10px;display:flex}.detail-layout{grid-template-columns:minmax(0,1.7fr) minmax(260px,1fr);align-items:start;gap:34px;display:grid}.detail-aside,.detail-main{gap:28px;min-width:0;display:grid}.detail-aside{gap:12px;position:sticky;top:24px}.detail-section h2{margin:0 0 12px;font-size:15px}.detail-section h2 a{color:inherit}.detail-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-note{color:var(--text-muted);margin:0;font-size:13px;line-height:1.5}.detail-aside .rating-details{margin-top:6px}.detail-aside .rating-details summary h2{margin:0;font-size:14px;display:inline}@media (width<=900px){.detail-layout{grid-template-columns:1fr}.detail-aside{position:static}}.sheet .library-sheet-hero{flex:0 0 200px}.library-sheet-intro{gap:8px;display:grid}.library-sheet-intro .kicker,.library-sheet-intro h2{margin:0}.library-sheet-intro h2{font-size:36px;line-height:1.05}.library-adopt-target{border:1px solid var(--border);min-width:0;min-height:46px;color:var(--text);background:var(--surface);flex:200px;padding:0 10px}.sheet-foot .icon-button.is-voted{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.library-pagination{margin-top:16px}.library-publish-form{margin-top:0}.equipment-toolbar{border-bottom:1px solid var(--border);justify-content:space-between}.equipment-toolbar .tabs{border-bottom:0}.equipment-panel{gap:12px;display:grid}.equipment-add{border:1px dashed var(--border);flex-wrap:wrap;align-items:end;gap:10px;padding:14px;display:flex}.equipment-add label{color:var(--text-muted);flex:200px;gap:6px;font-size:12px;font-weight:650;display:grid}.equipment-add input,.equipment-add select,.equipment-edit input,.equipment-edit select{border:1px solid var(--border);min-height:42px;color:var(--text);background:var(--surface);padding:0 11px;font-size:14px}.equipment-add .form-hint{flex-basis:100%}.equipment-edit{flex-wrap:wrap;flex:1;align-items:center;gap:8px;display:flex}.equipment-edit input{flex:200px}.sheet-frame>.review-dialog{width:100%;max-height:none;box-shadow:none;border:0}.settings-layout{grid-template-columns:190px minmax(0,1fr);align-items:start;gap:40px;display:grid}.settings-nav{border-left:1px solid var(--border);display:grid;position:sticky;top:24px}.settings-nav a{color:var(--text-muted);border-left:2px solid #0000;margin-left:-1px;padding:8px 14px;font-size:13.5px}.settings-nav a:hover{color:var(--text)}.settings-nav a.is-active{border-left-color:var(--accent);color:var(--text);font-weight:650}.settings-content{min-width:0}.settings-anchor,.settings-content>section{scroll-margin-top:20px}.settings-content>.settings-section:first-child{margin-top:0}html{scroll-behavior:smooth}@media (width<=900px){.settings-layout{grid-template-columns:1fr;gap:18px}.settings-nav{z-index:5;border-left:0;border-bottom:1px solid var(--border);background:var(--bg);scrollbar-width:none;gap:2px;margin:0 -22px;padding:6px 22px;display:flex;top:0;overflow-x:auto}.settings-nav a{border-bottom:2px solid #0000;border-left:0;flex:none;margin:0;padding:8px 12px}.settings-nav a.is-active{border-bottom-color:var(--accent)}}@media (width<=700px){.settings-nav{margin:0 -16px;padding:6px 16px}}.admin-create summary{cursor:pointer;margin:0;list-style:none}.admin-create summary::-webkit-details-marker{display:none}.admin-create[open] summary{margin-bottom:16px}.admin-user-search{margin:14px 0 0}.user-admin-list{gap:0}.user-admin-list .user-admin-row{border:0;border-bottom:1px solid var(--border)}.user-admin-list .user-admin-row:last-child{border-bottom:0}.user-admin-row .profile-avatar{color:var(--on-accent);background:var(--accent)}.coffee-rating-form .form-field span a{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:3px}.collection-search .search-field input{min-height:48px;font-size:15px}.collection-results{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;display:grid}@media (width<=900px){.collection-results{grid-template-columns:1fr}}.quick-brew-layout{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:28px;display:grid}.quick-brew-panel{gap:12px;min-width:0;display:grid}.quick-brew-panel .recipe-form-heading{border-top:1px solid var(--rule-strong);margin:0;padding-top:9px}.quick-brew-start{justify-content:center;min-height:54px;margin-top:6px;font-size:16px}@media (width<=900px){.quick-brew-layout{grid-template-columns:1fr}}@media (width<=700px){.coffee-sheet-head dl{flex-direction:row;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.coffee-sheet-head dl>div,.coffee-sheet-head dl>div+div{border-bottom:1px solid;border-right:0;padding:10px 10px 10px 0}}
