@font-face{font-family:inter;src:url(../media/inter_latin_wght_normal-s.p.0gsaq8ukbf34m.woff2)format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:inter Fallback;src:local(Arial);ascent-override:89.79%;descent-override:22.36%;line-gap-override:0.0%;size-adjust:107.89%}.inter_642e6f83-module__3CJdba__className{font-family:inter,inter Fallback}.inter_642e6f83-module__3CJdba__variable{--font-inter:"inter", "inter Fallback"}
:root{--font-sans:var(--font-inter),"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Roboto Mono",monospace;--bg:#fff;--surface:#f8f8f8;--soft:#f1f1f1;--text:#1a1a1a;--muted:#6b6b6b;--faint:#a3a3a3;--line:#ebebeb;--line-strong:#ddd;--inverse:#fff;--danger:#b42318;--danger-soft:#fef3f2;--green:#3d7350;--green-soft:#eef6f0;--green-line:#cfe4d6;--roasted:#8a5634;--roasted-soft:#f8f0e9;--roasted-line:#ebd8c9;--tray-green:linear-gradient(150deg,#f6fbf7 0%,#e7f2ea 100%);--tray-roasted:linear-gradient(150deg,#fcf8f4 0%,#f3e6dc 100%);--tray-neutral:linear-gradient(150deg,#f8f8fb 0%,#eeeef5 100%);--tray-signin:linear-gradient(150deg,#f3f9f5 0%,#f7f1ea 55%,#f2e5dc 100%);--shadow-card:0 1px 2px #1010100a;--shadow-pop:0 16px 36px -12px #10101038,0 2px 6px #1010100d;--shadow-button:inset 0 1px 0 #ffffff24,0 1px 2px #00000042;--focus-ring:0 0 0 3px color-mix(in srgb,var(--text) 12%,transparent);--radius-sm:6px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--header-height:64px;--gutter:32px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#111;--surface:#181818;--soft:#232323;--text:#ededed;--muted:#a1a1a1;--faint:#6e6e6e;--line:#262626;--line-strong:#343434;--inverse:#111;--danger:#f97066;--danger-soft:#2a1614;--green:#8fcaa0;--green-soft:#142019;--green-line:#26402f;--roasted:#dcb492;--roasted-soft:#231a14;--roasted-line:#443222;--tray-green:linear-gradient(150deg,#17221b 0%,#101813 100%);--tray-roasted:linear-gradient(150deg,#231a14 0%,#17120e 100%);--tray-neutral:linear-gradient(150deg,#1a1a20 0%,#131317 100%);--tray-signin:linear-gradient(150deg,#15201a 0%,#1b1714 55%,#221912 100%);--shadow-card:none;--shadow-pop:0 18px 40px -10px #000000b3,0 0 0 1px #ffffff0a;--shadow-button:inset 0 1px 0 #ffffff1f,0 1px 2px #00000080;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-height) + 12px)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:15px;line-height:1.55}::selection{background:color-mix(in srgb,var(--text) 16%,transparent)}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-weight:500;line-height:1.2}a{color:inherit;text-decoration:none}svg{flex-shrink:0}img{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button,a,input,textarea,select,summary,label{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--text);outline-offset:2px}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.muted{color:var(--muted);font-size:14px;line-height:1.7}.hint{color:var(--muted);margin:4px 0 18px;font-size:12px;line-height:1.6}.eyebrow{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);color:var(--muted);align-items:center;gap:6px;padding:2px 8px;font-size:12px;font-weight:500;line-height:1.6;display:inline-flex}.hero-enter{animation:.7s cubic-bezier(.2,.7,.2,1) backwards blur-in}.hero-enter.delay-1{animation-delay:70ms}.hero-enter.delay-2{animation-delay:.14s}@keyframes blur-in{0%{opacity:0;filter:blur(8px);transform:translateY(8px)}}@keyframes fade-in{0%{opacity:0}}.button{border-radius:var(--radius);text-align:center;white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 16px;font-size:14px;font-weight:500;line-height:1.2;transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .1s;display:inline-flex}.button:active:not(:disabled){transform:translateY(1px)}.button.primary{background:var(--text);color:var(--inverse);box-shadow:var(--shadow-button)}.button.secondary{background:var(--bg);border-color:var(--line-strong);color:var(--text);box-shadow:var(--shadow-card)}.button.danger-button{color:var(--danger);background:0 0;padding:0 12px}.icon-button{border-radius:var(--radius);width:40px;height:40px;color:var(--text);background:0 0;place-items:center;transition:background-color .15s;display:inline-grid}.text-button{color:var(--muted);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--muted) 45%,transparent);text-decoration-color:color-mix(in srgb,var(--muted) 45%,transparent);text-underline-offset:3px;background:0 0;padding:6px 4px;font-size:13px}input,textarea,select{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);width:100%;min-width:0;min-height:44px;color:var(--text);outline:none;padding:10px 12px;font-size:15px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--text);box-shadow:var(--focus-ring)}input::placeholder,textarea::placeholder{color:var(--faint)}textarea{resize:vertical;line-height:1.6}select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 256 256'%3E%3Cpath fill='%238a8a8a' d='M213.7 101.7l-80 80a8 8 0 0 1-11.3 0l-80-80a8 8 0 0 1 11.3-11.3L128 164.7l74.3-74.3a8 8 0 0 1 11.3 11.3z'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:36px}input[type=checkbox]{width:18px;height:18px;min-height:18px;accent-color:var(--text);flex-shrink:0;margin:0;padding:0}[aria-invalid=true]{border-color:var(--danger)}.chip{border-radius:var(--radius-sm);background:var(--soft);max-width:100%;color:color-mix(in srgb,var(--text) 80%,var(--muted));overflow-wrap:anywhere;border:1px solid #0000;align-items:center;gap:6px;padding:2px 8px;font-size:12px;font-weight:500;line-height:1.55;display:inline-flex}button.chip{border-color:var(--line-strong);background:var(--bg);min-height:32px;color:var(--text);padding:4px 8px 4px 10px;transition:background-color .15s}button.chip svg{color:var(--muted)}.chips{flex-wrap:wrap;gap:6px;display:flex}.segmented{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:2px;padding:3px;display:inline-flex}.segmented button{min-height:30px;color:var(--muted);background:0 0;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;transition:background-color .15s,color .15s,box-shadow .15s;display:inline-flex}.segmented button.active{background:var(--bg);color:var(--text);box-shadow:0 1px 2px #00000014,0 0 0 1px var(--line)}.error{border:1px solid color-mix(in srgb,var(--danger) 22%,transparent);border-radius:var(--radius);background:var(--danger-soft);color:var(--danger);margin:0 0 14px;padding:10px 12px;font-size:13px;line-height:1.55}.field-error{color:var(--danger);font-size:12px}.taste-badges{flex-wrap:wrap;gap:6px;display:flex}.taste-badges>span{border:1px solid var(--line-strong);letter-spacing:.01em;color:var(--text);border-radius:999px;align-items:center;gap:5px;padding:1px 8px 1px 7px;font-size:11px;font-weight:600;line-height:1.6;display:inline-flex}.taste-badges>span:before{content:"";opacity:.5;background:currentColor;border-radius:50%;width:5px;height:5px}.app-shell{flex-direction:column;min-height:100dvh;display:flex}.site-header{z-index:40;padding-top:env(safe-area-inset-top);background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:saturate(1.6)blur(16px);backdrop-filter:saturate(1.6)blur(16px);border-bottom:1px solid #0000;transition:border-color .2s;position:sticky;top:0}.site-header.is-scrolled{border-bottom-color:var(--line)}.header-inner{max-width:1200px;height:var(--header-height);padding:0 var(--gutter);justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.brand{letter-spacing:-.03em;white-space:nowrap;align-items:center;gap:10px;font-size:17px;font-weight:600;display:flex}.brand-dot{color:var(--faint)}.brand-mark{color:var(--text);flex-shrink:0}.row-photo .brand-mark,.card-placeholder .brand-mark{color:var(--muted)}.header-actions{align-items:center;gap:2px;display:flex}.install-button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);height:36px;box-shadow:var(--shadow-card);align-items:center;gap:8px;margin-right:8px;padding:0 12px;font-size:13px;font-weight:500;transition:background-color .15s;display:inline-flex}.loading-screen{color:var(--muted);flex-direction:column;align-items:center;gap:14px;margin:auto;font-size:13px;display:flex}.collection{width:100%;max-width:1200px;padding:48px var(--gutter) 72px;flex:1;margin:0 auto}.collection-hero{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:32px;display:flex}.collection-hero h1{letter-spacing:-.045em;margin:14px 0 10px;font-size:clamp(40px,5vw,60px);font-weight:500;line-height:1.02}.heading-period{color:var(--faint)}.lead{max-width:520px;color:var(--muted);letter-spacing:-.01em;font-size:17px;line-height:1.6}.add-bean{min-height:44px;padding:0 18px;font-size:15px}.category-switch{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:20px;display:grid}.category-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);text-align:left;min-height:84px;box-shadow:var(--shadow-card);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon label count""icon caption count";align-items:center;gap:1px 14px;padding:16px 22px 16px 16px;transition:border-color .2s,background-color .2s;display:grid}.category-icon{border:1px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--muted);border-radius:10px;grid-area:icon;place-items:center;transition:color .2s,background-color .2s,border-color .2s;display:grid}.category-label{letter-spacing:-.01em;color:var(--muted);grid-area:label;font-size:15px;font-weight:500;transition:color .2s}.category-caption{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;grid-area:caption;font-size:12px;overflow:hidden}.category-count{font-family:var(--font-mono);letter-spacing:-.05em;font-variant-numeric:tabular-nums;color:var(--faint);grid-area:count;font-size:32px;font-weight:500;line-height:1;transition:color .2s}.category-card.active .category-label,.category-card.active .category-count{color:var(--text)}.category-card.active .category-icon{background:var(--bg)}.category-card.green.active{background:var(--tray-green);border-color:var(--green-line)}.category-card.green.active .category-icon{color:var(--green);border-color:var(--green-line)}.category-card.roasted.active{background:var(--tray-roasted);border-color:var(--roasted-line)}.category-card.roasted.active .category-icon{color:var(--roasted);border-color:var(--roasted-line)}.toolbar{align-items:stretch;gap:10px;display:flex}.search{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);min-width:0;height:44px;box-shadow:var(--shadow-card);flex:1;align-items:center;gap:10px;padding:0 6px 0 14px;transition:border-color .15s,box-shadow .15s;display:flex}.search:focus-within{border-color:var(--text);box-shadow:var(--focus-ring)}.search>svg{color:var(--muted)}.search input{background:0 0;border:0;height:100%;min-height:0;padding:0;box-shadow:none!important}.search .icon-button{width:32px;height:32px;color:var(--muted);border-radius:6px}.filter-button{height:44px;padding:0 14px}.filter-button.is-active{border-color:var(--text)}.filter-count{border-radius:var(--radius-sm);background:var(--text);min-width:20px;height:20px;color:var(--inverse);font-family:var(--font-mono);place-items:center;padding:0 6px;font-size:11px;font-weight:500;display:inline-grid}.filter-chevron{color:var(--muted);transition:transform .24s}.filter-button[aria-expanded=true] .filter-chevron{transform:rotate(180deg)}.active-filters{flex-wrap:wrap;align-items:center;gap:6px;padding-top:14px;display:flex}.results-bar{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin:22px 0 12px;font-size:13px;display:flex}.results-bar strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text);font-weight:500}.results{transition:opacity .2s}.results.is-refreshing{opacity:.55}.bean-list{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-card);overflow:hidden}.bean-row{border-top:1px solid var(--line);text-align:left;width:100%;animation:.4s cubic-bezier(.2,.7,.2,1) both row-in;animation-delay:calc(var(--i,0) * 28ms);background:0 0;grid-template-columns:96px minmax(0,1fr) auto 18px;align-items:center;gap:20px;padding:16px 20px 16px 16px;transition:background-color .15s;display:grid}.bean-row:first-child{border-top:0}.bean-row:active{background:var(--surface)}.bean-row:focus-visible{outline:2px solid var(--text);outline-offset:-3px}@keyframes row-in{0%{opacity:0;transform:translateY(6px)}}.row-photo{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);place-items:center;width:96px;display:grid;overflow:hidden}.row-photo>img:not(.brand-mark){object-fit:cover;width:100%;height:100%;display:block}.row-main{min-width:0}.row-kicker{color:var(--muted);overflow-wrap:anywhere;align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.roast-dot{background:var(--roast,var(--faint));border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:0 0 0 1px #0000000f}.row-main h2{letter-spacing:-.02em;overflow-wrap:anywhere;margin:4px 0 2px;font-size:18px;font-weight:500;line-height:1.3}.row-origin{color:var(--muted);overflow-wrap:anywhere;font-size:14px}.row-tags{flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;display:flex}.row-tags:empty{display:none}.row-tags>.taste-badges,.row-tags>.chips{display:contents}.more-tags{font-family:var(--font-mono);color:var(--muted);white-space:nowrap;font-size:11px}.row-meta{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap;flex-direction:column;align-items:flex-end;gap:4px;font-size:12px;display:flex}.row-meta span:first-child:not(:only-child){color:var(--text)}.row-chevron{color:var(--faint);transition:transform .15s,color .15s}.masonry{width:100%;max-width:980px;margin:0 auto;position:relative}.bean-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);text-align:left;box-shadow:var(--shadow-card);padding:0;transition:border-color .2s,box-shadow .2s;position:absolute;overflow:hidden}.bean-card>img{background:var(--surface);width:100%;height:auto;display:block}.card-placeholder{aspect-ratio:1.25;background:var(--surface);color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:12px;display:flex}.card-body{padding:16px 18px 18px}.card-body h2{letter-spacing:-.02em;overflow-wrap:anywhere;margin:6px 0 4px;font-size:18px;font-weight:500;line-height:1.3}.card-body>p{color:var(--muted);overflow-wrap:anywhere;font-size:13px}.card-body .row-tags{margin-top:12px}@media (hover:hover){.button.primary:hover:not(:disabled){background:color-mix(in srgb,var(--text) 84%,var(--bg))}.button.secondary:hover:not(:disabled){background:var(--surface)}.button.danger-button:hover:not(:disabled){background:var(--danger-soft)}.icon-button:hover:not(:disabled){background:var(--soft)}.text-button:hover{color:var(--text)}input:hover:not(:focus),textarea:hover:not(:focus),select:hover:not(:focus){border-color:color-mix(in srgb,var(--line-strong) 55%,var(--muted))}button.chip:hover{background:var(--surface)}.segmented button:hover{color:var(--text)}.install-button:hover{background:var(--surface)}.category-card:hover{border-color:var(--line-strong)}.picker-option:hover{background:var(--surface);border-color:color-mix(in srgb,var(--line-strong) 50%,var(--muted))}.photo-picker:hover{border-color:var(--muted)}.flavor-selected .chip button:hover{background:color-mix(in srgb,var(--text) 8%,transparent);color:var(--text)}.flavor-match-list>button:hover{background:var(--surface)}.flavor-add:hover:not(:disabled){background:var(--soft)}.settings-link:hover,.bean-row:hover{background:var(--surface)}.bean-row:hover .row-chevron{color:var(--text);transform:translate(2px)}.bean-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-pop)}}.empty-state{padding:4px 0}.empty-tray{border-radius:var(--radius-xl);background:var(--tray-neutral);padding:28px}.empty-state.green .empty-tray{background:var(--tray-green)}.empty-state.roasted .empty-tray{background:var(--tray-roasted)}.empty-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);text-align:center;max-width:460px;box-shadow:var(--shadow-card);margin:0 auto;padding:36px 28px}.empty-card .brand-mark{margin:0 auto 16px;display:block}.empty-card h2{letter-spacing:-.03em;margin:12px 0 8px;font-size:24px}.empty-card>p:not(.eyebrow){color:var(--muted);font-size:14px;line-height:1.7}.empty-card>.error{margin-top:12px}.empty-card>.button{margin-top:22px}.skeleton-row{border-top:1px solid var(--line);grid-template-columns:96px minmax(0,1fr);align-items:center;gap:20px;padding:16px;display:grid}.skeleton-row:first-child{border-top:0}.skeleton-row>span{aspect-ratio:1;border-radius:var(--radius)}.skeleton-row>div{flex-direction:column;gap:10px;display:flex}.skeleton-row i{border-radius:5px;height:10px;display:block}.skeleton-row i:first-child{width:28%}.skeleton-row i:nth-child(2){width:62%;height:16px}.skeleton-row i:nth-child(3){width:42%}.skeleton-row>span,.skeleton-row i{background:linear-gradient(90deg,var(--soft) 25%,var(--surface) 50%,var(--soft) 75%);background-size:200% 100%;animation:1.4s linear infinite shimmer}.skeleton-row:nth-child(2){opacity:.7}.skeleton-row:nth-child(3){opacity:.4}@keyframes shimmer{to{background-position:-200% 0}}.load-more{text-align:center;margin-top:24px}.site-footer{width:calc(100% - var(--gutter) * 2);border-top:1px solid var(--line);max-width:1136px;color:var(--muted);justify-content:space-between;gap:12px;margin:0 auto;padding:20px 0 28px;font-size:12px;display:flex}.site-footer>span:first-child{font-family:var(--font-mono);letter-spacing:.12em;font-size:11px}.footer-dot{color:var(--faint);margin:0 8px}.fab,.bottom-fade{display:none}.inline-filter-collapse{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .26s,opacity .2s;display:grid}.inline-filter-collapse.expanded{opacity:1;grid-template-rows:1fr}.inline-filter-collapse>div{min-height:0;overflow:clip}.inline-filters{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-card);margin-top:14px;padding:24px 24px 0}.inline-filter-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.inline-filter-heading h2{letter-spacing:-.02em;font-size:17px;font-weight:600}.inline-filter-heading p{color:var(--muted);margin-top:4px;font-size:13px}.inline-filter-heading .icon-button{margin:-8px -8px 0 0}.inline-filter-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.45fr);align-items:start;gap:28px;display:grid}.altitude-filter{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);min-width:0;padding:18px}.altitude-filter-heading{justify-content:space-between;align-items:center;gap:12px;min-height:30px;display:flex}.altitude-filter-heading h3{font-size:13px;font-weight:600}.altitude-filter-heading>span{color:var(--muted);font-size:12px}.altitude-filter-heading .text-button{padding:4px 0}.altitude-range-values{font-family:var(--font-mono);letter-spacing:-.04em;font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:10px;margin:16px 0 8px;font-size:22px;font-weight:500;display:flex}.altitude-range-values small{letter-spacing:0;color:var(--muted);font-size:12px}.altitude-range-values>span{color:var(--faint);font-size:14px}.altitude-slider{isolation:isolate;height:44px;margin:0 14px;position:relative}.altitude-track,.altitude-track-selected{pointer-events:none;border-radius:4px;height:4px;position:absolute;top:20px}.altitude-track{background:var(--line-strong);left:0;right:0}.altitude-track-selected{left:var(--range-start);right:calc(100% - var(--range-end));background:var(--text)}.altitude-slider input[type=range]{width:calc(100% + 28px);height:44px;min-height:44px;box-shadow:none;appearance:none;pointer-events:none;touch-action:pan-y;background:0 0;border:0;outline:none;margin:0;padding:0;position:absolute;top:0;left:-14px}.altitude-slider input[type=range]::-webkit-slider-runnable-track{background:0 0;height:4px}.altitude-slider input[type=range]::-webkit-slider-thumb{border:1.5px solid var(--text);background:var(--bg);appearance:none;pointer-events:auto;cursor:grab;touch-action:none;border-radius:50%;width:26px;height:26px;margin-top:-11px;box-shadow:0 1px 4px #00000029}.altitude-slider input[type=range]::-moz-range-track{background:0 0;height:4px}.altitude-slider input[type=range]::-moz-range-thumb{border:1.5px solid var(--text);background:var(--bg);pointer-events:auto;cursor:grab;touch-action:none;border-radius:50%;width:22px;height:22px;box-shadow:0 1px 4px #00000029}.altitude-slider input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--text);outline-offset:3px}.altitude-slider input[type=range]:focus-visible::-moz-range-thumb{outline:2px solid var(--text);outline-offset:3px}.altitude-slider input[type=range]:active::-webkit-slider-thumb{cursor:grabbing;background:var(--soft)}.altitude-slider .thumb-on-top{z-index:1}.altitude-slider.nearby-handles{margin-top:14px;margin-bottom:14px}.altitude-slider.nearby-handles input:first-of-type{top:-14px}.altitude-slider.nearby-handles input:last-of-type{top:14px}.altitude-scale{font-family:var(--font-mono);color:var(--muted);justify-content:space-between;font-size:11px;display:flex}.altitude-filter .hint{min-height:36px;margin:14px 0 0}.filter-choices{min-width:0}.filter-status{min-height:30px;color:var(--muted);padding:0 0 10px;font-size:13px}.filter-loading{border-radius:var(--radius-lg);background:var(--surface);height:150px;animation:1.8s infinite pulse}@keyframes pulse{50%{opacity:.4}}.facet-collapse,.picker-collapse{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .24s,opacity .2s;display:grid}.facet-collapse.visible,.picker-collapse.expanded{opacity:1;grid-template-rows:1fr}.facet-collapse>div,.picker-collapse>div{min-height:0;overflow:hidden}.facet{border-top:1px solid var(--line)}.picker-trigger{text-align:left;background:0 0;align-items:center;gap:12px;width:100%;min-height:64px;padding:12px 0;display:flex}.picker-trigger>span:first-child{flex:1;min-width:0}.picker-label{margin-bottom:2px;font-size:12px;font-weight:600;display:block}.picker-value{color:var(--muted);overflow-wrap:anywhere;font-size:14px;line-height:1.5;display:block}.picker-value.has-value{color:var(--text)}.picker-available{border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line);font-family:var(--font-mono);color:var(--muted);padding:2px 7px;font-size:11px;animation:.22s choice-in}.picker-trigger>svg{color:var(--muted);transition:transform .2s}.picker-trigger.expanded>svg{transform:rotate(180deg)}.picker-clear{color:var(--muted);text-underline-offset:3px;background:0 0;align-items:center;gap:5px;padding:0 0 12px;font-size:12px;text-decoration:underline;display:flex}.picker-options{overscroll-behavior:contain;scrollbar-width:thin;flex-wrap:wrap;align-content:flex-start;gap:6px;max-height:228px;margin-bottom:14px;display:flex;overflow:auto}.picker-option-wrap{opacity:1;grid-template-rows:1fr;max-width:100%;transition:grid-template-rows .22s,opacity .18s;animation:.22s choice-in;display:grid}.picker-option-wrap.leaving{opacity:0;pointer-events:none;grid-template-rows:0fr}.picker-option-wrap>div{min-height:0;overflow:hidden}.picker-option{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);text-align:left;align-items:center;gap:8px;max-width:100%;min-height:40px;padding:0 12px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s;display:flex}.picker-option.chosen{background:var(--text);border-color:var(--text);color:var(--inverse)}.picker-option.chosen small{color:inherit;opacity:.7}.picker-option:focus-visible{outline-offset:-4px;outline:2px solid}.picker-option:disabled{cursor:default;opacity:.7}.picker-option>span{overflow-wrap:anywhere;min-width:0}.picker-option small{font-family:var(--font-mono);color:var(--muted);padding-left:2px;font-size:11px}.facet-list[aria-busy=true]{cursor:progress}@keyframes choice-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.inline-filter-footer{z-index:3;padding:14px 24px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);border-radius:0 0 var(--radius-lg) var(--radius-lg);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:12px;margin:18px -24px 0;display:flex;position:sticky;bottom:0}.inline-filter-footer .text-button{padding-left:0}.signin{width:100%;max-width:1200px;padding:56px var(--gutter) 72px;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:center;gap:72px;margin:auto;display:grid}.signin-aside h1{letter-spacing:-.05em;margin:20px 0;font-size:clamp(44px,4.8vw,64px);font-weight:500;line-height:1.02}.signin-aside>p{max-width:420px;color:var(--muted);letter-spacing:-.01em;font-size:17px;line-height:1.7}.signin-caption{font-family:var(--font-mono);letter-spacing:.14em;color:var(--faint);margin-top:44px;font-size:11px;display:block}.signin-tray{border-radius:var(--radius-xl);background:var(--tray-signin);padding:32px}.signin-form{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg);width:100%;box-shadow:var(--shadow-card);padding:32px}.signin-form .brand-mark{margin-bottom:18px;display:block}.signin-form h2{letter-spacing:-.03em;margin:12px 0 26px;font-size:24px;line-height:1.25}.field{flex-direction:column;gap:6px;min-width:0;margin-bottom:18px;display:flex}.field>label,.field-label{font-size:13px;font-weight:500}.remember{color:var(--muted);cursor:pointer;align-items:center;gap:10px;margin:4px 0 22px;font-size:14px;display:flex}.signin-submit{justify-content:space-between;width:100%;min-height:46px;padding:0 16px 0 18px;font-size:15px}.signin-private{text-align:center;color:var(--muted);margin-top:18px;font-size:12px}.auth-notice{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-bottom:20px;padding:10px 12px;font-size:13px;line-height:1.6}.modal{width:min(560px,100% - 32px);max-height:calc(var(--visual-height,100dvh) - 56px);border:1px solid var(--line);border-radius:var(--radius-xl);background:var(--bg);color:var(--text);box-shadow:var(--shadow-pop);padding:0;overflow:hidden}.modal[open]{flex-direction:column;animation:.24s cubic-bezier(.2,.8,.2,1) modal-in;display:flex}.modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0c0c0c57}.modal[open]::backdrop{animation:.2s fade-in}.modal.wide{width:min(880px,100% - 32px)}.modal.drawer{width:440px;max-width:100%;height:var(--visual-height,100dvh);max-height:var(--visual-height,100dvh);border-width:0 0 0 1px;border-radius:0;margin:0 0 0 auto}.modal-head{z-index:5;border-bottom:1px solid var(--line);background:var(--bg);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;min-height:60px;padding:10px 12px 10px 24px;display:flex;position:relative}.modal-head h2{letter-spacing:-.01em;font-size:15px;font-weight:600}.modal-scroll{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;scroll-padding:24px 0 110px;overflow:auto}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)scale(.985)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(36px)}}.bean-form{padding:0 32px}.form-intro{padding:22px 0 20px;font-size:14px}.form-intro span{color:var(--muted);margin-top:2px;font-size:13px;display:block}fieldset{border:0;border-top:1px solid var(--line);min-width:0;margin:0;padding:24px 0 6px}legend{float:left;letter-spacing:-.02em;align-items:center;gap:10px;width:100%;margin:0 0 18px;padding:0;font-size:16px;font-weight:600;display:flex}legend+*{clear:both}legend>span{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-family:var(--font-mono);letter-spacing:0;color:var(--muted);padding:1px 6px;font-size:11px;font-weight:500}.bean-form .scan-form-lock{border:0;min-width:0;margin:0;padding:0}.field-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px;display:grid}.origin-fields>.origin-wide,.origin-fields>.altitude-field{grid-column:1/-1}.required{color:var(--muted);margin-left:2px;font-weight:400}.optional-label{color:var(--muted);margin-left:6px;font-size:12px;font-weight:400}.choice-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.choice-row button{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);justify-content:space-between;align-items:center;gap:10px;min-height:48px;padding:0 14px;font-size:14px;font-weight:500;transition:background-color .15s,border-color .15s,color .15s;display:flex}.choice-row .bean-type-choice.green{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}.choice-row .bean-type-choice.roasted{background:var(--roasted-soft);border-color:var(--roasted-line);color:var(--roasted)}.choice-row .bean-type-choice.green.selected{background:var(--green);border-color:var(--green);color:var(--bg)}.choice-row .bean-type-choice.roasted.selected{background:var(--roasted);border-color:var(--roasted);color:var(--bg)}.memo-label{justify-content:space-between;align-items:center;gap:12px;min-height:30px;display:flex}.memo-label label{font-size:13px;font-weight:500}.memo-done{display:none}.char-count{font-family:var(--font-mono);color:var(--muted);align-self:flex-end;font-size:11px}.form-footer{z-index:4;padding:14px 32px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);margin:12px -32px 0;position:sticky;bottom:0}.form-footer>div{justify-content:flex-end;gap:10px;display:flex}.form-footer .button{min-height:44px}.photo-editor-heading{color:var(--muted);justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;font-size:13px;display:flex}.photo-editor-heading>span{font-family:var(--font-mono);white-space:nowrap;font-size:12px}.photo-editor-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:10px;display:grid}.photo-editor-item{aspect-ratio:1;border:1px solid var(--line);background:var(--surface);border-radius:10px;min-width:0;position:relative;overflow:hidden}.photo-editor-item>img{object-fit:contain;width:100%;height:100%}.photo-remove{border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:50%;place-items:center;width:32px;height:32px;display:grid;position:absolute;top:6px;right:6px}.photo-cover-label,.photo-cover-button{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);padding:3px 8px;font-size:11px;font-weight:500;line-height:1.5;position:absolute;bottom:6px;left:6px}.photo-cover-label{background:var(--text);border-color:var(--text);color:var(--inverse)}.photo-cover-button{min-height:30px}.photo-picker{border:1.5px dashed var(--line-strong);border-radius:var(--radius-lg);background:var(--surface);cursor:pointer;align-items:center;gap:14px;min-height:76px;padding:16px 18px;transition:border-color .15s,background-color .15s;display:flex;position:relative}.photo-picker:focus-within{outline:2px solid var(--text);outline-offset:3px}.photo-picker>input{opacity:0;border:0;width:1px;height:1px;min-height:0;padding:0;position:absolute;overflow:hidden}.photo-picker>svg{color:var(--muted)}.photo-picker>span{flex:1;font-size:14px;font-weight:500}.photo-picker small{color:var(--muted);margin-top:2px;font-size:12px;font-weight:400;display:block}.photo-picker.is-disabled{opacity:.55;cursor:wait}.photo-scan-action{margin-top:14px}.photo-scan-action .button{width:100%;min-height:48px;font-size:15px}.photo-scan-action button:disabled{cursor:default}.photo-scan-action p{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.6}.scan-pulse{animation:1.2s ease-in-out infinite scan-pulse}@keyframes scan-pulse{50%{opacity:.3}}.scan-allowance{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);margin:14px 0 16px;padding:12px 14px;font-size:12px}.scan-allowance>div{color:var(--text);justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.scan-allowance strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:500}.scan-allowance p{margin-top:4px;line-height:1.6}.scan-allowance .quota-retry{justify-content:space-between;align-items:center;gap:12px;display:flex}.scan-review{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow-wrap:anywhere;margin:4px 0 18px;padding:16px}.scan-review .hint{margin-bottom:0;font-size:12px;line-height:1.65}.scan-warnings{margin:12px 0;padding-left:18px;font-size:12px;line-height:1.7}.scan-conflicts{margin-top:16px}.scan-conflicts h4{margin:0 0 4px;font-size:12px;font-weight:600}.scan-conflict{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding:12px 0;display:flex}.scan-conflict>div{min-width:0;font-size:12px}.scan-conflict strong,.scan-conflict small,.scan-conflict span{display:block}.scan-conflict strong{margin-bottom:2px;font-weight:600}.scan-conflict small{color:var(--muted);font-size:11px}.scan-conflict .button{flex-shrink:0;min-height:36px;padding:0 12px;font-size:12px}.scan-evidence{border-top:1px solid var(--line);margin-top:14px;font-size:12px}.scan-evidence summary{cursor:pointer;min-height:40px;padding-top:12px}.scan-evidence dl{gap:10px;margin:10px 0 0;display:grid}.scan-evidence dt{color:var(--muted);font-size:11px}.scan-evidence dd{white-space:pre-wrap;margin:2px 0 0;font-size:12px}.section-label{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.section-label h3,.section-label>label{font-size:13px;font-weight:600}.section-label>span{color:var(--muted);font-size:12px}.altitude-mode{align-self:flex-start;max-width:100%}.altitude-mode button{min-height:32px;padding:0 10px;font-size:12px}.altitude-entry{align-items:flex-end;gap:10px;display:flex}.altitude-entry>label{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.altitude-entry>label>span:first-child{color:var(--muted);font-size:12px}.metre-input{display:block;position:relative}.metre-input input{font-variant-numeric:tabular-nums;appearance:textfield;padding-right:32px}.metre-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.metre-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.metre-input>span{color:var(--muted);pointer-events:none;font-size:12px;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.altitude-dash{color:var(--muted);align-self:center;padding-top:20px}.altitude-field .hint{margin:0}.taste-input{border-bottom:1px solid var(--line);margin-bottom:22px;padding-bottom:18px}.taste-score{padding:10px 0 2px}.taste-score-heading{justify-content:space-between;align-items:center;gap:16px;font-size:14px;display:flex}.taste-score-heading output{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:15px;font-weight:500}.taste-score-heading output span{color:var(--muted);font-size:12px;font-weight:400}.taste-score input[type=range]{width:100%;height:44px;min-height:44px;box-shadow:none;appearance:none;cursor:ew-resize;touch-action:pan-y;background:0 0;border:0;padding:0}.taste-score input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(to right,var(--text) var(--fill,0%),var(--line-strong) var(--fill,0%));border-radius:3px;height:6px}.taste-score input[type=range]::-webkit-slider-thumb{border:1.5px solid var(--text);background:var(--bg);appearance:none;border-radius:50%;width:22px;height:22px;margin-top:-8px;box-shadow:0 1px 4px #00000029}.taste-score input[type=range]::-moz-range-track{background:var(--line-strong);border-radius:3px;height:6px}.taste-score input[type=range]::-moz-range-progress{background:var(--text);border-radius:3px;height:6px}.taste-score input[type=range]::-moz-range-thumb{border:1.5px solid var(--text);background:var(--bg);border-radius:50%;width:20px;height:20px;box-shadow:0 1px 4px #00000029}.taste-score input[type=range]:focus-visible{outline:2px solid var(--text);outline-offset:3px;border-radius:4px}.taste-scale{font-family:var(--font-mono);color:var(--faint);justify-content:space-between;margin-top:-8px;padding:0 8px;font-size:10px;display:flex}.extra-tastes{border-top:1px solid var(--line);margin-top:14px;padding-top:2px}.extra-tastes summary{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;min-height:52px;font-size:14px;font-weight:500;list-style:none;display:flex}.extra-tastes summary::-webkit-details-marker{display:none}.extra-tastes summary small{color:var(--muted);margin-left:8px;font-size:12px;font-weight:400}.extra-tastes summary svg{color:var(--muted);transition:transform .2s}.extra-tastes[open] summary svg{transform:rotate(180deg)}.extra-tastes-body{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:2px 14px}.extra-taste-toggle{align-items:center;gap:10px;min-height:46px;font-size:14px;display:flex}.extra-tastes-body .taste-score{padding-top:0;padding-bottom:12px}.flavor-field{min-width:0;margin-bottom:22px}.flavor-field .hint{margin:-2px 0 10px;font-size:12px}.library-compact{margin-bottom:0}.library-compact .section-label{flex-wrap:wrap;gap:4px;margin-bottom:6px}.library-compact .section-label>span{font-size:11px}.flavor-selected{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.flavor-selected .chip{color:var(--text);padding:2px 2px 2px 10px;font-size:13px}.flavor-selected .chip button{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--muted);background:0 0;flex-shrink:0;place-items:center;display:grid}.flavor-search{position:relative}.flavor-search>svg{color:var(--muted);pointer-events:none;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.flavor-search input{padding-left:38px}.flavor-suggestions{border:1px solid var(--line);background:var(--bg);box-shadow:var(--shadow-pop);border-radius:10px;margin-top:6px;overflow:hidden}.flavor-match-list{overscroll-behavior:contain;max-height:176px;scroll-padding:4px;overflow-y:auto}.flavor-match-list:empty{display:none}.flavor-match-list>button{text-align:left;overflow-wrap:anywhere;background:0 0;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:44px;padding:10px 14px;font-size:14px;transition:background-color .15s;display:flex}.flavor-match-list>button>svg{color:var(--muted);flex-shrink:0}.flavor-match-list>button.active{background:var(--surface)}.flavor-match-status{border-top:1px solid var(--line);color:var(--muted);padding:8px 14px;font-size:12px}.flavor-add{border-top:1px solid var(--line);background:var(--surface);text-align:left;overflow-wrap:anywhere;align-items:center;gap:9px;width:100%;min-height:46px;padding:10px 14px;font-size:13px;font-weight:500;display:flex}.flavor-add>svg{flex-shrink:0}.flavor-add:focus-visible,.flavor-match-list>button:focus-visible,.flavor-selected button:focus-visible{outline:2px solid var(--text);outline-offset:-3px}.flavor-add-hint{background:var(--surface);color:var(--muted);padding:0 14px 12px;font-size:11px}.library-compact .flavor-match-status,.library-compact .flavor-add,.library-compact .flavor-match-list>button{padding-left:10px;padding-right:10px}.library-compact .flavor-selected .chip{overflow-wrap:anywhere;max-width:100%}.roast-level-input{--roast-outline:var(--roast-color);border-bottom:1px solid var(--line);margin-bottom:22px;padding-bottom:22px}.roast-level-input .section-label>label{font-size:13px;font-weight:600}.roast-level-input .section-label .text-button{font-size:12px}.roast-level-heading{align-items:center;gap:10px;margin-bottom:4px;font-size:15px;display:flex}.roast-level-heading output{flex:1;min-width:0;font-weight:500}.roast-level-heading>span:last-child{font-family:var(--font-mono);color:var(--muted);font-size:12px}.roast-swatch{background:var(--roast-color);border-radius:50%;flex-shrink:0;width:14px;height:14px;transition:background-color .2s;box-shadow:0 0 0 1px #00000014}.roast-level-input input[type=range]{width:100%;height:44px;min-height:44px;box-shadow:none;appearance:none;cursor:ew-resize;touch-action:pan-y;background:0 0;border:0;margin:0;padding:0;display:block}.roast-level-input input[type=range]::-webkit-slider-runnable-track{background:var(--roast-color);border-radius:3px;height:6px;transition:background-color .2s}.roast-level-input input[type=range]::-webkit-slider-thumb{border:3px solid var(--bg);background:var(--roast-color);width:24px;height:24px;box-shadow:0 0 0 1px var(--roast-outline),0 1px 4px #0003;appearance:none;border-radius:50%;margin-top:-9px;transition:background-color .2s}.roast-level-input input[type=range]::-moz-range-track{background:var(--roast-color);border-radius:3px;height:6px}.roast-level-input input[type=range]::-moz-range-thumb{border:3px solid var(--bg);background:var(--roast-color);width:18px;height:18px;box-shadow:0 0 0 1px var(--roast-outline);border-radius:50%}.roast-level-input input[type=range]:focus-visible{outline:2px solid var(--roast-color);outline-offset:3px;border-radius:4px}.roast-level-scale{color:var(--muted);text-align:center;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;font-size:11px;display:grid}.roast-level-scale>span:first-child{text-align:left}.roast-level-scale>span:last-child{text-align:right}.roast-level-scale .selected{color:var(--text);font-weight:600}.roast-level-input .hint{margin:10px 0 0;font-size:12px}:root[data-theme=dark] .roast-level-input{--roast-outline:#bda58b}:root[data-theme=dark] .roast-level-input input[type=range]::-webkit-slider-runnable-track{box-shadow:0 0 0 1px var(--roast-outline)}:root[data-theme=dark] .roast-level-input input[type=range]::-moz-range-track{box-shadow:0 0 0 1px var(--roast-outline)}.detail-content{--accent:var(--roasted);flex-direction:column;min-height:100%;padding:28px 32px 0;display:flex}.detail-content.green{--accent:var(--green)}.detail-hero{grid-template-columns:260px minmax(0,1fr);align-items:center;gap:28px;margin-bottom:26px;display:grid}.detail-hero.no-photo{grid-template-columns:minmax(0,1fr)}.detail-gallery{border-radius:var(--radius-xl);background:var(--tray-roasted);min-width:0;padding:12px}.detail-content.green .detail-gallery{background:var(--tray-green)}.detail-photo{border-radius:var(--radius);object-fit:contain;width:auto;max-width:100%;height:auto;max-height:320px;margin:0 auto;display:block}.detail-thumbnails{gap:8px;margin-top:10px;display:flex}.detail-thumbnails>button{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);width:52px;height:52px;padding:2px}.detail-thumbnails>button[aria-pressed=true]{border-color:var(--text);box-shadow:0 0 0 1px var(--text)}.detail-thumbnails img{object-fit:cover;border-radius:6px;width:100%;height:100%}.detail-title{min-width:0}.type-pill{border:1px solid var(--roasted-line);background:var(--roasted-soft);color:var(--roasted);border-radius:999px;align-items:center;gap:6px;padding:2px 10px 2px 8px;font-size:12px;font-weight:500;line-height:1.6;display:inline-flex}.type-pill.green{border-color:var(--green-line);background:var(--green-soft);color:var(--green)}.type-dot{background:currentColor;border-radius:50%;width:6px;height:6px}.detail-title h1{letter-spacing:-.035em;overflow-wrap:anywhere;margin:12px 0 8px;font-size:30px;line-height:1.15}.detail-title .muted{overflow-wrap:anywhere;font-size:15px}.detail-card{border:1px solid var(--line);border-radius:var(--radius-lg);margin-bottom:26px;overflow:hidden}.detail-card-head{border-bottom:1px solid var(--line);background:var(--surface);color:var(--muted);padding:9px 16px;font-size:12px;font-weight:600}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.detail-grid>div{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:16px;min-width:0;padding:12px 16px;display:flex}.detail-grid>div:nth-child(-n+2){border-top:0}.detail-grid>div:nth-child(odd){border-right:1px solid var(--line)}.detail-grid>div:last-child:nth-child(odd){border-right:0;grid-column:1/-1}.detail-grid dt{color:var(--muted);flex-shrink:0;font-size:13px}.detail-grid dd{text-align:right;overflow-wrap:anywhere;margin:0;font-size:14px}.detail-section{padding:0 0 26px}.detail-section h3{color:var(--muted);margin-bottom:10px;font-size:12px;font-weight:600}.taste-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 32px;margin:0;display:grid}.taste-details dt{margin-bottom:6px;font-size:13px}.taste-details dd{align-items:center;gap:12px;margin:0;display:flex}.taste-details meter{background:var(--line);appearance:none;border:0;border-radius:3px;flex:1;width:100%;min-width:0;height:6px}.taste-details meter::-webkit-meter-bar{background:var(--line);border:0;border-radius:3px;height:6px}.taste-details meter::-webkit-meter-optimum-value{background:var(--accent);border-radius:3px}.taste-details meter::-moz-meter-bar{background:var(--accent);border-radius:3px}.taste-details dd>span{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.taste-details small{color:var(--muted);font-size:11px}.link-group{flex-wrap:wrap;gap:8px;display:flex}.memo-text{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);white-space:pre-wrap;overflow-wrap:anywhere;padding:14px 16px;font-size:15px;line-height:1.8}.record-dates{font-family:var(--font-mono);color:var(--muted);margin:0 0 20px;font-size:11px}.detail-actions{z-index:4;padding:14px 32px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;gap:10px;margin:auto -32px 0;display:flex;position:sticky;bottom:0}.detail-actions .button{min-height:44px}.settings-content,.manage-tags,.password-form{padding:24px 24px calc(28px + env(safe-area-inset-bottom))}.profile{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);align-items:center;gap:14px;margin-bottom:24px;padding:14px;display:flex}.profile>div{flex:1;min-width:0}.avatar{border:1px solid var(--roasted-line);background:var(--tray-roasted);width:44px;height:44px;color:var(--roasted);border-radius:10px;flex-shrink:0;place-items:center;font-size:18px;font-weight:600;display:grid}.profile h3{overflow-wrap:anywhere;font-size:16px;font-weight:600}.profile p{color:var(--muted);margin-top:1px;font-size:12px}.change-password-button{min-height:36px;padding:0 12px;font-size:13px}.settings-label{color:var(--muted);margin:0 0 8px 2px;font-size:12px;font-weight:600}.settings-group{border:1px solid var(--line);border-radius:var(--radius-lg);margin-bottom:24px;overflow:hidden}.settings-link{border-top:1px solid var(--line);text-align:left;background:0 0;align-items:center;gap:12px;width:100%;min-height:56px;padding:0 14px;font-size:14px;font-weight:500;transition:background-color .15s;display:flex}.settings-link:first-child{border-top:0}.settings-link>span:not(.settings-icon){flex:1}.settings-icon{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:32px;height:32px;color:var(--muted);place-items:center;display:grid}.settings-link small{font-family:var(--font-mono);color:var(--muted);font-size:12px}.settings-link>svg:last-child{color:var(--faint)}.signout-section p{color:var(--muted);margin-top:10px;font-size:12px}.manage-tags>.muted:first-child{margin-bottom:20px}.option-library-intro{font-size:14px;line-height:1.7}.option-library-notice{border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);overflow-wrap:anywhere;margin:0 0 18px;padding:10px 12px;font-size:13px}.add-flavor-form{margin:0 0 22px}.add-flavor-form>label{margin-bottom:6px;font-size:13px;font-weight:500;display:block}.add-flavor-form>div{gap:8px;display:flex}.add-flavor-form input{flex:1;min-width:0}.add-flavor-form .button{flex-shrink:0;min-height:44px}.tag-list{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.tag-list:empty{display:none}.manage-tag-row{border-top:1px solid var(--line);align-items:center;gap:4px;min-height:58px;padding:7px 8px 7px 16px;display:flex}.manage-tag-row:first-child{border-top:0}.manage-tag-row>span{overflow-wrap:anywhere;flex:1;min-width:0;font-size:14px}.manage-tag-row small{font-family:var(--font-mono);color:var(--muted);margin-top:1px;font-size:11px;display:block}.manage-tag-row input{flex:1;min-width:0}.empty-tags{color:var(--muted);padding:22px 0;font-size:14px}.password-intro{color:var(--muted);margin-bottom:22px;font-size:14px}.password-form .hint{margin:0;font-size:12px}.password-notice{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);margin:4px 0 20px;padding:12px 14px;font-size:12px;line-height:1.7}.password-actions{justify-content:flex-end;gap:10px;display:flex}.password-actions .button{min-height:44px}.install-content{padding:28px 32px calc(32px + env(safe-area-inset-bottom));text-align:center}.install-content .brand-mark{margin:0 auto;display:block}.install-content h3{letter-spacing:-.03em;margin:12px 0 22px;font-size:22px}.install-content>p{text-align:left;color:var(--muted);margin-bottom:14px;font-size:14px}.install-content strong{color:var(--text);font-weight:600}.install-content .hint{font-size:12px}.install-content .button{min-height:44px;margin-top:6px}.toast{inset:auto auto calc(24px + env(safe-area-inset-bottom)) 50%;z-index:99;background:var(--text);max-width:calc(100% - 32px);color:var(--inverse);box-shadow:var(--shadow-pop);border:0;border-radius:10px;align-items:center;gap:8px;margin:0;padding:10px 16px;font-size:14px;font-weight:500;animation:.26s cubic-bezier(.2,.8,.2,1) toast-in;display:flex;position:fixed;overflow:visible;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}}@media (min-width:1500px){.header-inner,.collection,.signin{max-width:1280px}.site-footer{max-width:1216px}}@media (max-width:1023px){.signin{gap:40px}.inline-filter-layout{gap:22px}}@media (max-width:767px){:root{--header-height:56px;--gutter:16px}html,body{touch-action:pan-x pan-y}input,select,textarea,.search input,.field .token-box input{font-size:16px}.button{min-height:44px}.header-inner{padding:0 8px 0 16px}.brand{gap:8px;font-size:16px}.brand .brand-mark{width:26px;height:26px}.install-button{width:40px;height:40px;box-shadow:none;background:0 0;border-color:#0000;justify-content:center;margin-right:0;padding:0}.install-button>span{display:none}.collection{padding:22px var(--gutter) 32px}.collection-hero{margin-bottom:20px}.collection-hero h1{margin:10px 0 6px;font-size:38px}.lead{font-size:14px}.collection-hero .add-bean{display:none}.category-switch{gap:10px;margin-bottom:14px}.category-card{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"icon count""label label""caption caption";column-gap:8px;min-height:0;padding:12px 14px 13px}.category-icon{border-radius:var(--radius);width:32px;height:32px;margin-bottom:10px}.category-count{place-self:start end;font-size:26px}.category-label{font-size:14px}.category-caption{font-size:11px}.toolbar{gap:8px}.search{gap:8px;padding-left:12px}.filter-button{gap:6px;padding:0 12px}.filter-chevron{display:none}.results-bar{margin:18px 0 10px}.segmented button{min-height:32px}.view-toggle button{padding:0 9px}.view-toggle button span{display:none}.bean-row{grid-template-columns:72px minmax(0,1fr) 16px;align-items:start;gap:14px;padding:14px 12px}.row-photo{width:72px}.row-meta{display:none}.row-kicker{font-size:11px}.row-main h2{margin:3px 0 1px;font-size:16px}.row-origin{font-size:13px}.row-tags{gap:4px;margin-top:8px}.row-tags .chip{padding:1px 7px;font-size:11px}.row-tags .taste-badges>span{padding:0 7px 0 6px;font-size:10px}.row-chevron{align-self:center}.skeleton-row{grid-template-columns:72px minmax(0,1fr);gap:14px;padding:14px 12px}.card-body{padding:12px 12px 14px}.card-body h2{letter-spacing:-.01em;font-size:15px}.card-body>p{font-size:12px}.card-body .row-kicker{font-size:10px}.card-body .row-tags{gap:4px;margin-top:10px}.card-placeholder .brand-mark{width:64px;height:64px}.empty-tray{padding:10px}.empty-card{padding:30px 20px}.empty-card h2{font-size:22px}.site-footer{padding:18px 0 calc(104px + env(safe-area-inset-bottom));flex-direction:column;gap:4px;font-size:11px}.fab{right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:30;background:var(--text);height:52px;color:var(--inverse);box-shadow:0 12px 28px -10px #00000080,var(--shadow-button);border-radius:14px;align-items:center;gap:8px;padding:0 20px 0 16px;font-size:15px;font-weight:600;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .2s;display:inline-flex;position:fixed}.fab:active{transform:scale(.97)}.fab.is-hidden{opacity:0;pointer-events:none;transform:translateY(120%)}.bottom-fade{z-index:20;height:calc(88px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 25%,color-mix(in srgb,var(--bg) 0%,transparent));pointer-events:none;transition:opacity .2s;display:block;position:fixed;bottom:0;left:0;right:0}.bottom-fade.is-hidden{opacity:0}.inline-filters{padding:18px 16px 0}.inline-filter-heading{margin-bottom:16px}.inline-filter-heading p{font-size:12px}.inline-filter-layout{grid-template-columns:minmax(0,1fr);gap:18px}.altitude-filter{padding:16px}.altitude-range-values{font-size:24px}.picker-trigger{min-height:62px}.picker-option{min-height:44px;font-size:14px}.inline-filter-footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom));margin:16px -16px 0}.inline-filter-footer .button{flex:1;max-width:220px}.signin{padding:28px var(--gutter) 40px;flex-direction:column;align-items:stretch;gap:28px;display:flex}.signin-aside h1{margin:14px 0 12px;font-size:40px}.signin-aside>p{font-size:15px}.signin-caption{display:none}.signin-tray{border-radius:var(--radius-xl);padding:10px}.signin-form{padding:24px 18px}.signin-form .brand-mark{display:none}.signin-form h2{margin:10px 0 22px;font-size:22px}.modal,.modal.wide,.modal.drawer{inset:auto;top:var(--visual-top,0px);width:100%;max-width:100%;height:var(--visual-height,100dvh);max-height:var(--visual-height,100dvh);box-shadow:none;border:0;border-radius:0;margin:0;position:fixed;left:0}.modal[open]{animation:.3s cubic-bezier(.2,.8,.2,1) sheet-in}.modal-head{min-height:60px;padding:max(10px,env(safe-area-inset-top)) 12px 10px 20px}.modal-head .icon-button{border:1px solid var(--line);background:var(--surface);border-radius:50%;width:40px;height:40px}.modal-scroll{scroll-padding:20px 0 110px}.bean-form{padding:0 20px}.form-intro{padding:18px 0 16px;font-size:13px}.form-intro span{font-size:12px}fieldset{padding:22px 0 4px}legend{margin-bottom:16px;font-size:15px}.field-grid{column-gap:12px}.origin-fields input{padding-left:11px;padding-right:11px}.origin-fields .flavor-search input{padding-left:36px}.origin-fields .metre-input input{padding-right:30px}.choice-row button{gap:8px;padding:0 12px}.memo-field textarea{height:clamp(128px,calc(var(--visual-height,100dvh) * .36),260px);max-height:calc(var(--visual-height,100dvh) - 180px);resize:none;min-height:100px;scroll-margin:20px 0}.memo-done{visibility:hidden;border-radius:var(--radius-sm);background:var(--soft);align-items:center;gap:5px;min-height:30px;padding:0 10px;font-size:12px;font-weight:500;display:flex}.memo-field:focus-within .memo-done{visibility:visible}.modal[data-keyboard=true] .form-footer{position:static}.modal[data-keyboard=true] .flavor-match-list{max-height:132px}.modal[data-keyboard=true] .flavor-add-hint{display:none}.form-footer{padding:12px 20px calc(12px + env(safe-area-inset-bottom));margin:12px -20px 0}.form-footer>div{grid-template-columns:minmax(0,1fr) minmax(0,2fr);display:grid}.photo-editor-grid{gap:8px}.photo-picker{gap:10px;padding:14px}.photo-remove{top:4px;right:4px}.photo-cover-label,.photo-cover-button{padding:2px 6px;font-size:10px;bottom:4px;left:4px}.scan-review{padding:14px}.scan-conflict{flex-direction:column;align-items:flex-start;gap:8px}.scan-conflict .button{align-self:flex-end}.extra-tastes summary small{margin:2px 0 0;display:block}.detail-content{padding:20px 20px 0}.detail-hero{grid-template-columns:minmax(0,1fr);gap:18px;margin-bottom:20px}.detail-gallery{padding:10px}.detail-photo{max-height:360px}.detail-thumbnails>button{width:56px;height:56px}.detail-title h1{font-size:26px}.detail-grid{grid-template-columns:minmax(0,1fr)}.detail-grid>div,.detail-grid>div:nth-child(odd){border-right:0}.detail-grid>div:nth-child(2){border-top:1px solid var(--line)}.taste-details{grid-template-columns:minmax(0,1fr);gap:14px}.detail-actions{padding:12px 20px calc(12px + env(safe-area-inset-bottom));margin:auto -20px 0}.detail-actions .button.primary{flex:1;max-width:240px}.settings-content,.manage-tags,.password-form{padding:20px 20px calc(28px + env(safe-area-inset-bottom))}.profile{gap:12px;padding:12px}.profile .avatar{width:40px;height:40px;font-size:17px}.change-password-button{padding:0 10px;font-size:12px}.password-actions{grid-template-columns:minmax(0,1fr) minmax(0,2fr);display:grid}.install-content{padding:24px 22px calc(28px + env(safe-area-inset-bottom))}.toast{bottom:calc(84px + env(safe-area-inset-bottom))}}@media (max-width:374px){.collection-hero h1{font-size:34px}.category-card{padding:11px 12px}.category-count{font-size:22px}.category-label{font-size:13px}.bean-row{grid-template-columns:64px minmax(0,1fr) 14px;gap:12px;padding:12px 10px}.row-photo{width:64px}.row-main h2{font-size:15px}.choice-row button{font-size:13px}.fab{padding:0 16px 0 14px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
