@import url("https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700;9..144,800&family=Manrope:wght@300;400;500;600;700&display=swap");:root{--bg:#1a120c;--bg-2:#221710;--surface:#2a1d15;--surface-2:#34251b;--line:#4a352a;--line-soft:rgba(255,230,200,0.08);--ink:#f3e7d3;--ink-soft:#c9b69b;--ink-mute:#8a7560;--crema:#d6a86b;--crema-2:#e9c891;--espresso:#4a2f1f;--accent:#c97a4a;--danger:#c54c3a;--warning:#c8922a;--shadow:0 12px 40px rgba(0,0,0,0.45);--tooltip-bg:#3a2718;--disabled-opacity:0.55;--font-serif:"Fraunces",serif;--radius-pill:999px;--radius-sm:6px;--duration-enter:280ms;--ease-enter:cubic-bezier(0.2,0.9,0.3,1);--z-brew-overlay:10;--z-topbar:30;--z-tabbar:40;--z-brew-screen:60;--z-modal:100}:root[data-theme=light]{--bg:#faf5ef;--bg-2:#f3ebe0;--surface:#ece0d0;--surface-2:#e2d3be;--line:#cebfa8;--line-soft:rgba(100,70,40,0.08);--ink:#2a1a0e;--ink-soft:#5c3d26;--ink-mute:#8a6e52;--crema:#7a4a28;--crema-2:#5e3418;--espresso:#3e2010;--accent:#8a5030;--danger:#b83a2a;--warning:#9a6a10;--shadow:0 12px 40px rgba(0,0,0,0.12);--tooltip-bg:#f3ebe0}[data-theme=light] .tabbar{background:color-mix(in srgb,var(--bg-2) 94%,transparent);border-top:1px solid var(--line)}[data-theme=light] .brand-mark{text-shadow:none}[data-theme=light] .primary-btn,[data-theme=light] .tab-primary{background:var(--crema);color:var(--bg)}[data-theme=light] .recipe-brew-btn{color:var(--bg)}[data-theme=light] .section{border-color:var(--line);box-shadow:0 2px 14px rgba(90,50,25,.07),0 1px 3px rgba(90,50,25,.04)}[data-theme=light] .active-bag-card{box-shadow:0 2px 10px rgba(90,50,25,.08);border-color:var(--line)}[data-theme=light] .active-bag-card:hover{box-shadow:0 4px 16px rgba(90,50,25,.13)}[data-theme=light] .coffee-row{border-left:3px solid var(--crema);box-shadow:0 1px 4px rgba(90,50,25,.06)}[data-theme=light] .bag-row{background:var(--bg);border-color:var(--line)}[data-theme=light] .bm-pill{border-color:var(--line)}[data-theme=light] .bm-pill.is-active{color:var(--bg)}[data-theme=light] .seg{border-color:var(--line)}[data-theme=light] .redial-btn,[data-theme=light] .seg-btn.is-active{background:var(--crema);color:var(--bg)}[data-theme=light] .redial-btn{border-left-color:var(--line)}[data-theme=light] .top-card{box-shadow:0 2px 14px rgba(90,50,25,.09),0 1px 3px rgba(90,50,25,.06);border-color:transparent}[data-theme=light] .top-card:hover{box-shadow:0 4px 20px rgba(90,50,25,.14),0 1px 4px rgba(90,50,25,.08)}[data-theme=light] .day-label{color:var(--ink-soft)}[data-theme=light] .day-label:after{background:var(--line)}[data-theme=light] .shot-card{border-left:3px solid var(--crema)}[data-theme=light] .ghost-btn.full{background:color-mix(in srgb,var(--crema) 8%,var(--bg));border-color:color-mix(in srgb,var(--crema) 35%,transparent);color:var(--ink-soft)}[data-theme=light] .ghost-btn.full:hover{background:color-mix(in srgb,var(--crema) 14%,var(--bg));border-color:var(--crema);color:var(--crema)}[data-theme=light] .icon-btn{border-color:var(--line);background:var(--surface)}[data-theme=light] .icon-btn:hover{background:var(--surface-2);border-color:var(--crema);color:var(--crema)}[data-theme=light] .icon-btn-danger{color:var(--danger)}[data-theme=light] .icon-btn-danger:hover{background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger)}[data-theme=light] .brew-skip-all.is-dim{color:color-mix(in srgb,var(--danger) 70%,transparent)}[data-theme=light] .brew-skip-all.is-dim:hover{color:var(--danger)}[data-theme=light] .info-btn{background:color-mix(in srgb,var(--crema) 15%,transparent);color:var(--crema)}[data-theme=light] .info-btn:hover{background:color-mix(in srgb,var(--crema) 28%,transparent)}[data-theme=light] .cta{color:var(--bg);box-shadow:0 8px 24px rgba(90,50,25,.2)}[data-theme=light] .brew-back-badge,[data-theme=light] .brew-start-btn{color:var(--bg)}[data-theme=light] .brew-params{border-bottom-color:var(--line)}[data-theme=light] .brew-sheet-head-paused,[data-theme=light] .brew-steps-btn.is-active{background:color-mix(in srgb,var(--crema) 12%,transparent)}[data-theme=light] .brew-screen{background:radial-gradient(560px 420px at 50% 38%,rgba(214,168,107,.18),transparent 65%),var(--bg)}[data-theme=light] .brew-arc-track{stroke:#b8a48e}[data-theme=light] .brew-arc-zone{filter:drop-shadow(0 6px 28px rgba(90,50,25,.12))}[data-theme=light] .brew-reset-btn{background:var(--surface);border-color:var(--line);box-shadow:0 2px 8px rgba(90,50,25,.07)}[data-theme=light] .brew-reset-hint{color:var(--ink-soft);opacity:.8}[data-theme=light] .brew-seg{background:#b09878}[data-theme=light] .brew-next-label{color:var(--ink-soft)}[data-theme=light] .brew-water-wrap{background:color-mix(in srgb,var(--crema) 10%,transparent);border-color:color-mix(in srgb,var(--crema) 35%,transparent)}[data-theme=light] .brew-sheet-progress-seg{background:var(--line)}[data-theme=light] .brew-step-sheet{box-shadow:0 -4px 32px rgba(90,50,25,.14),0 -1px 4px rgba(90,50,25,.08)}[data-theme=light] .brew-sheet-step.is-current{background:color-mix(in srgb,var(--crema) 14%,transparent)}[data-theme=light] .brew-sheet-step{border-bottom-color:var(--line)}[data-theme=light] .recipe-step-num{background:var(--surface-2);border:1px solid var(--line)}[data-theme=light] .brew-sheet-step:not(.is-current) .recipe-step-water{color:var(--ink-soft)}[data-theme=light] .brew-sheet-step.is-future{opacity:.6}[data-theme=light] .brew-sheet-show-more{color:var(--ink-mute)}[data-theme=light] .brew-sheet-group-body{border-left-color:var(--line)}[data-theme=light] .brew-sheet-divider{border-top-color:var(--line)}[data-theme=light] .sort-dropdown-trigger{background:var(--surface);border-color:var(--line)}[data-theme=light] .sort-dropdown-trigger:hover{background:var(--surface-2);border-color:var(--crema)}[data-theme=light] .sort-dropdown-menu{background:var(--surface);border-color:var(--line)}[data-theme=light] .sort-dropdown-item:hover{background:var(--surface-2)}[data-theme=light] .chip-taste-sour{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}[data-theme=light] .chip-taste-balanced{background:color-mix(in srgb,var(--crema) 14%,transparent);color:var(--crema);border-color:color-mix(in srgb,var(--crema) 40%,transparent)}[data-theme=light] .simple-taste.is-bitter.is-active{background:rgba(74,47,31,.1);border-color:#a0826a}[data-theme=light] .simple-taste.is-bitter.is-active strong{color:#7a5540}[data-theme=light] .chip{background:var(--surface-2);border-color:var(--line);color:var(--ink-soft)}[data-theme=light] .chip.is-active{background:var(--crema);border-color:var(--crema);color:var(--bg)}[data-theme=light] .stat{background:var(--surface);border-color:var(--line)}[data-theme=light] .recipe-card .stat{background:var(--bg);border-color:var(--line)}[data-theme=light] .stat.is-hl{background:rgba(122,74,40,.14);border-color:rgba(122,74,40,.35)}[data-theme=light] .recipe-card,[data-theme=light] .shot-card{box-shadow:0 2px 14px rgba(90,50,25,.09),0 1px 3px rgba(90,50,25,.06);border-color:transparent}[data-theme=light] .recipe-card:hover,[data-theme=light] .shot-card:hover{box-shadow:0 4px 20px rgba(90,50,25,.14),0 1px 4px rgba(90,50,25,.08);border-color:transparent}[data-theme=light] .recipe-card.is-pinned{border-color:color-mix(in srgb,var(--crema) 45%,transparent)}[data-theme=light] .brew-streak{background:color-mix(in srgb,var(--crema) 15%,transparent)}[data-theme=light] .app-root{background:radial-gradient(1200px 600px at 100% -10%,rgba(214,168,107,.28),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(201,122,74,.18),transparent 60%),var(--bg)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Manrope,system-ui,sans-serif}button{cursor:pointer;border:none;background:none;color:inherit}button,input,select,textarea{font-family:inherit}.app-root{height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(1200px 600px at 100% -10%,rgba(214,168,107,.1),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(201,122,74,.08),transparent 60%),var(--bg);position:relative}.app-scroll{flex:1 1;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column}.app-scroll:has(.recipe-detail-page){overflow:hidden}main.screen:has(.recipe-detail-page){flex:1 1;min-height:0;padding:0;display:flex;flex-direction:column}.app-scroll,.modal-scroll{scrollbar-width:thin;scrollbar-color:var(--line) transparent}.app-scroll::-webkit-scrollbar,.modal-scroll::-webkit-scrollbar{width:4px}.app-scroll::-webkit-scrollbar-track,.modal-scroll::-webkit-scrollbar-track{background:transparent}.app-scroll::-webkit-scrollbar-thumb,.modal-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--radius-pill)}.modal-scroll::-webkit-scrollbar-track{margin-top:8px;margin-bottom:8px}.app-root:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.95 0 0 0 0 0.85 0 0 0 0 0.7 0 0 0 0.025 0'/></filter><rect width='160' height='160' filter='url(%23n)'/></svg>");pointer-events:none;z-index:1;mix-blend-mode:overlay;opacity:.6}.offline-banner{position:-webkit-sticky;position:sticky;top:0;z-index:calc(var(--z-topbar) + 1);background:var(--warning);color:#fff;font-size:12px;font-weight:500;text-align:center;padding:6px 16px;letter-spacing:.01em}[data-theme=light] .offline-banner{color:#fff}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-topbar);display:flex;flex-direction:column;padding:10px 18px 0;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 95%,transparent),color-mix(in srgb,var(--bg) 85%,transparent) 70%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar-brand-row{padding-bottom:10px}.topbar-brand-row,.topbar-page-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.topbar-page-row{padding:6px 0 8px;border-top:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.topbar-page-title{min-width:0;overflow:hidden}.topbar-eyebrow{display:none}.topbar-page-name{font-size:13px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-page-right{align-items:center;gap:8px}.brand,.topbar-page-right{display:flex;flex-shrink:0}.brand{align-items:flex-start;gap:10px;perspective:320px;margin-left:-6px}.brand-link{text-decoration:none;color:inherit;display:flex;flex-direction:column}.brand-mark{font-size:38px;line-height:.75;color:var(--crema);text-shadow:0 0 24px rgba(214,168,107,.5);transition:opacity .15s;transform-origin:center;background:none;border:none;padding:0;cursor:pointer}.brand-mark:hover{opacity:.75}@keyframes brand-spin{0%{transform:rotateY(0deg)}to{transform:rotateY(1turn)}}.brand-mark.is-spinning{animation:brand-spin .5s cubic-bezier(.4,0,.2,1) forwards}.brand-name{font-family:var(--font-serif);font-size:20px;font-weight:700;letter-spacing:.18em;line-height:1}.brand-sub{font-size:10px;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-mute);margin-top:-2px}@media (max-width:430px){.topbar-brand-row .brand-sub{display:none}}.topbar-brand-row .brand-name{font-size:16px;letter-spacing:.08em}.topbar-pill{display:inline-flex;align-items:stretch;gap:2px;min-width:0;padding:0 2px;border:1px solid var(--line);border-radius:var(--radius-pill);overflow:hidden}.topbar-pill-mode,.topbar-pill-stat{display:inline-flex;align-items:center;gap:4px;min-width:0;padding:9px 6px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;transition:color .12s ease}.topbar-pill-stat{color:var(--ink-soft)}.topbar-pill-stat:hover{color:var(--ink)}.topbar-pill-num{font-family:ui-monospace,SF Mono,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;font-size:15px;color:var(--ink)}.topbar-pill-sep{align-self:center;color:var(--ink-mute);opacity:.55;font-weight:400;flex-shrink:0}.topbar-pill-mode{color:var(--crema)}.topbar-pill-mode:hover{color:var(--crema-2)}.topbar-pill-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.screen{position:relative;z-index:2;padding:8px 18px 24px;width:100%;max-width:860px;margin:0 auto}.feed-seg-ctrl{display:flex;gap:4px;padding:4px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin-bottom:16px}.feed-seg-btn{flex:1 1;padding:7px 12px;border-radius:7px;font-size:13px;font-weight:600;color:var(--ink-mute);transition:background .15s,color .15s;text-align:center}.feed-seg-btn.is-active{background:var(--surface-2);color:var(--ink)}.feed-head{justify-content:space-between;margin:14px 0 18px;gap:12px}.feed-head,.feed-head-right{display:flex;align-items:flex-end}.feed-head-right{flex-direction:column;gap:6px}.brew-streak{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:.04em;padding:3px 9px;border-radius:20px;background:color-mix(in srgb,var(--crema) 18%,transparent);color:var(--crema);white-space:nowrap}.brew-streak.is-cold{background:color-mix(in srgb,var(--ink-mute) 15%,transparent);color:var(--ink-mute)}.eyebrow{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-mute)}h1{font-size:34px;line-height:1;margin:4px 0 0;letter-spacing:-.01em}h1,h2{font-family:var(--font-serif);font-weight:600}h2{font-size:22px;margin:0}.setup-chip{display:inline-flex;align-items:center;gap:6px;font-size:11px;padding:6px 10px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius-pill);color:var(--ink-soft)}.setup-chip-name{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-context-row{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.day-group{margin-bottom:22px}.feed>.day-group:first-child{margin-top:4px}.feed-filters{margin-bottom:16px}.feed-filter-bar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.feed-filter-toggle{display:flex;align-items:center;gap:5px;padding:5px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-soft);font-size:12px;font-family:var(--font-sans);cursor:pointer;transition:border-color .15s,color .15s}.feed-filter-toggle.has-active,.feed-filter-toggle.is-open{border-color:var(--crema);color:var(--crema)}.feed-filter-panel{display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;margin-bottom:8px}.feed-search-wrap{position:relative;display:flex;align-items:center}.feed-search-icon{position:absolute;left:10px;color:var(--ink-mute);pointer-events:none}.feed-search{width:100%;padding:8px 32px 8px 30px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink);font-size:13px;font-family:var(--font-sans);outline:none}.feed-search:focus{border-color:var(--crema)}.feed-search::placeholder{color:var(--ink-mute)}.feed-search::-webkit-search-cancel-button{display:none}.feed-search-clear{position:absolute;right:10px;padding:2px;display:flex}.feed-filter-clear,.feed-search-clear{background:none;border:none;color:var(--ink-mute);cursor:pointer}.feed-filter-clear{font-size:12px;padding:0;text-decoration:underline}.feed-filter-clear:hover{color:var(--ink-soft)}[data-theme=light] .feed-search{background:var(--bg)}.shot-list{display:grid;grid-gap:8px;gap:8px}.day-label{font-family:var(--font-serif);font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-mute);margin:8px 4px 10px;display:flex;align-items:center;gap:12px}.day-label:after{content:"";flex:1 1;height:1px;background:var(--line-soft)}.swipe-wrap{position:relative;overflow:hidden;border-radius:14px;margin-bottom:8px}.swipe-bg{position:absolute;top:0;bottom:0;width:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;pointer-events:none}.swipe-bg-delete{right:0;background:var(--danger);color:#fff;border-radius:8px 0 0 8px}.swipe-bg-repeat{left:0;background:var(--espresso);color:var(--crema);border-radius:0 8px 8px 0}.swipe-wrap.snap-open .swipe-bg{pointer-events:auto;cursor:pointer}.swipe-wrap.snap-open .swipe-bg:active{filter:brightness(.88)}.swipe-card-inner{position:relative;z-index:1;touch-action:pan-y;background:var(--bg);border-radius:inherit}.swipe-close-overlay{position:absolute;inset:0;z-index:5;cursor:default}.swipe-confirm{position:absolute;inset:0;z-index:10;display:flex;align-items:center;gap:10px;padding:0 14px;background:color-mix(in srgb,var(--surface) 88%,var(--danger));border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);border-radius:inherit;animation:swipe-confirm-in .15s ease}@keyframes swipe-confirm-in{0%{opacity:0}to{opacity:1}}.swipe-confirm-msg{flex:1 1;font-size:13px;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.swipe-confirm-btns{display:flex;gap:6px;flex-shrink:0}.swipe-confirm-btns .ghost-btn{font-size:12px;padding:5px 12px}.swipe-confirm-btns .ghost-btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.swipe-confirm-btns .ghost-btn.danger:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.swipe-bg-archive{right:0;background:#3d3028;color:var(--crema-2);border-radius:8px 0 0 8px}.swipe-bg-pin{background:color-mix(in srgb,var(--crema) 22%,var(--espresso));color:var(--crema)}.swipe-bg-edit,.swipe-bg-pin{left:0;border-radius:0 8px 8px 0}.swipe-bg-edit{background:#1c2a20;color:#7dbf90}.swipe-wrap--sm{border-radius:8px;margin-bottom:0}.swipe-wrap--recipe{border-radius:14px;margin-bottom:0}[data-theme=light] .swipe-bg-repeat{background:var(--crema);color:var(--bg)}[data-theme=light] .swipe-bg-delete{background:var(--danger);color:#fff}[data-theme=light] .swipe-bg-archive{background:#8a7060;color:#fff}[data-theme=light] .swipe-bg-pin{background:var(--espresso);color:var(--crema)}[data-theme=light] .swipe-bg-edit{background:#2e4a34;color:#c0ebc8}[data-theme=light] .swipe-card-inner{background:var(--bg)}[data-theme=light] .swipe-wrap--recipe{box-shadow:0 2px 14px rgba(90,50,25,.09),0 1px 3px rgba(90,50,25,.06)}[data-theme=light] .swipe-wrap--recipe:hover{box-shadow:0 4px 20px rgba(90,50,25,.14),0 1px 4px rgba(90,50,25,.08)}[data-theme=light] .swipe-wrap--recipe .recipe-card{box-shadow:none}.shot-card{width:100%;display:flex;align-items:stretch;background:var(--surface);border:1px solid var(--line-soft);border-radius:14px;text-align:left;overflow:hidden;position:relative;transition:border-color .12s ease,background .12s ease}.shot-card:hover{border-color:var(--line);background:var(--surface-2)}.shot-card-body{display:flex;flex-direction:column;gap:5px;padding:12px 14px;flex:1 1;min-width:0;cursor:pointer}.shot-card-body:active{opacity:.85}.shot-card-top{display:flex;align-items:center;gap:8px;min-width:0}.shot-card-bottom{display:flex;align-items:center;gap:10px}.shot-card-rating{display:flex;align-items:center;gap:5px;flex-shrink:0}.shot-time{font-family:var(--font-serif);font-size:12px;color:var(--crema-2);flex-shrink:0}.brew-card-note-icon{color:var(--crema);opacity:.5;flex-shrink:0}[data-theme=light] .brew-card-note-icon{opacity:.6}.shot-coffee{font-family:var(--font-serif);font-weight:600;font-size:17px;color:var(--ink);flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shot-sub{font-size:12.5px;color:var(--ink-soft);flex:1 1;min-width:0}.shot-sub .dot{color:var(--ink-mute);margin:0 4px}.shot-sub .ratio{color:var(--crema);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.warn{color:var(--accent)}@media (min-width:641px){.swipe-bg{display:none}}@media (max-width:640px){.shot-card .redial-btn,.top-card .redial-btn{display:none}}.chips{display:flex;flex-wrap:wrap;gap:5px}.chip{font-size:11px;padding:4px 9px;border-radius:var(--radius-pill);background:rgba(214,168,107,.06);border:1px solid rgba(214,168,107,.18);color:var(--crema-2)}.chip.is-active{background:var(--crema);color:var(--espresso);border-color:var(--crema-2);font-weight:600}.chip-fault{background:rgba(197,76,58,.08);border-color:rgba(197,76,58,.25);color:#e08f7a}.chip-fault.is-active{background:var(--danger);color:#fff;border-color:var(--danger)}.chip-taste-sour{background:rgba(201,122,74,.12);color:#e0a489;border-color:rgba(201,122,74,.3)}.chip-taste-balanced{background:rgba(214,168,107,.18);color:var(--crema);border-color:var(--crema)}.chip-taste-bitter{background:rgba(74,47,31,.4);color:#c9a384;border-color:rgba(74,47,31,.5)}.chip-overflow{background:transparent;border-color:rgba(214,168,107,.12);color:var(--ink-mute)}.chip-link{cursor:pointer}.chip-link:hover{background:rgba(214,168,107,.15)}.stars{display:flex;gap:2px}.star{font-size:28px;line-height:1;color:var(--line);transition:color .12s ease;padding:0}.star.on{color:var(--crema);text-shadow:0 0 12px rgba(214,168,107,.4)}.stars.small .star{font-size:12px}.empty{text-align:center;padding:60px 24px}.empty-mark{font-size:56px;color:var(--crema);margin-bottom:18px;text-shadow:0 0 36px rgba(214,168,107,.4)}.empty h2{font-size:26px;margin-bottom:8px}.empty p{color:var(--ink-soft);margin:0 0 22px;font-size:14px;line-height:1.6}.empty-actions{display:flex;flex-wrap:wrap;gap:10px}.cta,.empty-actions{justify-content:center}.cta{display:inline-flex;align-items:center;gap:8px;padding:12px 22px;background:var(--crema);color:var(--espresso);border-radius:var(--radius-pill);font-weight:700;font-size:14px;letter-spacing:.04em;box-shadow:0 8px 24px rgba(214,168,107,.25)}.cta:active{transform:translateY(1px)}.cta.full{flex:1 1;justify-content:center}.cta.is-disabled-visual,.cta:disabled{opacity:var(--disabled-opacity)}.cta:disabled{cursor:not-allowed}.nav-guard-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:calc(var(--z-tabbar) + 1);animation:fadeIn .16s ease}.nav-guard-sheet{position:fixed;bottom:0;left:0;right:0;z-index:calc(var(--z-tabbar) + 2);background:var(--surface-2);border-top:1px solid var(--line);border-radius:20px 20px 0 0;padding:8px 20px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;animation:slideUpSheet .24s var(--ease-enter)}.nav-guard-msg{font-size:15px;font-weight:600;color:var(--ink);margin:4px 0 2px;text-align:center}.nav-guard-actions{display:flex;flex-direction:column;gap:8px}.tabbar{flex-shrink:0;z-index:var(--z-tabbar);display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr;padding:8px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(26,18,12,.92);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line-soft)}.tab-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px;border-radius:12px;color:var(--ink-mute);transition:color .12s ease;font-size:10px;letter-spacing:.12em;text-transform:uppercase;text-decoration:none}.tab-btn.is-active{color:var(--crema)}.tab-primary-slot{display:flex;align-items:center;justify-content:center}.tab-primary{width:44px;height:44px;background:var(--crema);color:var(--espresso);border-radius:var(--radius-pill);display:grid;place-items:center;text-decoration:none;transition:transform .12s ease,opacity .12s ease}.tab-primary:active{transform:scale(.92);opacity:.85}.editor-head{display:flex;align-items:center;gap:14px;margin:8px 0 18px}.editor-head--compact{margin-bottom:8px}.editor-title{flex:1 1}.editor-nav-label{font-size:18px;font-weight:700;color:var(--ink);letter-spacing:.01em}.brew-recipe-nudge{display:block;text-align:center;font-size:12.5px;color:var(--crema);padding:10px 16px 0;text-decoration:none;opacity:.8}.brew-recipe-nudge:hover{opacity:1}.brew-timer-nudge{display:block;width:100%;text-align:center;font-size:12.5px;color:var(--crema);opacity:.75;padding:2px 0 14px;background:none;border:none;cursor:pointer}.brew-timer-nudge:hover{opacity:1}.recipe-brew-cta{margin-bottom:14px}.recipe-qp-wrap{padding:0 0 4px}.recipe-qp-toggle{display:flex;align-items:center;gap:6px;background:none;border:none;padding:0;cursor:pointer;margin-bottom:8px}.recipe-qp-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute)}.recipe-qp-label-static{display:block;margin-bottom:8px}.recipe-qp-chevron{color:var(--ink-mute);transition:transform .2s}.recipe-qp-chevron.is-open{transform:rotate(180deg)}.recipe-qp-selected{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-radius:16px;border:1px solid var(--crema);background:var(--surface);margin-bottom:12px}.recipe-qp-selected-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1}.recipe-qp-selected-name{font-size:13px;font-weight:600;color:var(--ink)}.recipe-qp-selected-author{font-size:11px;color:var(--ink-mute)}.recipe-qp-guide{flex-shrink:0;padding:6px 12px;border-radius:var(--radius-pill);border:none;background:var(--crema);color:var(--espresso);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;transition:opacity .15s}.recipe-qp-guide:hover{opacity:.85}.recipe-qp-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:1px solid var(--line);background:var(--surface-2);color:var(--ink-soft);cursor:pointer;transition:border-color .15s,color .15s}.recipe-qp-clear:hover{border-color:var(--danger);color:var(--danger)}.recipe-toggle,.recipe-toggle-row{display:flex;align-items:center;gap:8px}.recipe-toggle{justify-content:space-between;flex:1 1;padding:0;background:none;border:none;cursor:pointer;min-width:0}.recipe-toggle-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);transition:color .15s}.recipe-toggle:hover .recipe-toggle-label{color:var(--ink)}.recipe-toggle-selected-name{font-size:13px;font-weight:600;color:var(--ink);text-align:left}.recipe-toggle-coffee,.recipe-toggle-selected-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recipe-toggle-coffee{font-size:11px;color:var(--ink-soft);flex:1 1;min-width:0}.recipe-toggle-chevron{color:var(--ink-mute);flex-shrink:0;transition:transform .22s ease,color .15s}.recipe-toggle:hover .recipe-toggle-chevron{color:var(--ink)}.recipe-toggle-chevron.is-open{transform:rotate(180deg)}.recipe-toggle-deselect{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:color-mix(in srgb,var(--ink-mute) 15%,transparent);color:var(--ink-mute);border:none;cursor:pointer;flex-shrink:0}.recipe-toggle-deselect:hover{background:color-mix(in srgb,var(--ink-mute) 25%,transparent);color:var(--ink)}.recipe-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:8px;gap:8px;margin-top:10px;padding-bottom:12px}.recipe-card-pick{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:10px 12px;border-radius:16px;border:1px solid var(--line);background:var(--surface-2);cursor:pointer;text-align:left;transition:border-color .15s}.recipe-card-pick:hover{border-color:var(--crema)}.recipe-card-pick.is-active{border-color:var(--crema);background:var(--surface)}.recipe-card-pick-name{font-size:12px;font-weight:600;color:var(--ink);line-height:1.3}.recipe-card-pick-author{font-size:10px;color:var(--ink-mute);margin-top:-2px}.recipe-card-pick-stats{display:flex;flex-wrap:nowrap;gap:6px;margin-top:2px;overflow:hidden}.recipe-card-pick-stats span{font-size:11px;color:var(--crema);font-weight:500;white-space:nowrap}.recipe-card-ice{display:inline-flex;align-items:center;gap:2px}.app-scroll:has(.brew-editor-page){overflow:hidden}main.screen:has(.brew-editor-page){flex:1 1;min-height:0;padding:0;display:flex;flex-direction:column}.brew-editor-page{flex:1 1;min-height:0;display:flex;flex-direction:column}.brew-editor-body{flex:1 1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:0 18px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.brew-editor-body .editor-head{margin-top:8px}.brew-editor-body::-webkit-scrollbar{width:4px}.brew-editor-body::-webkit-scrollbar-track{background:transparent}.brew-editor-body::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--radius-pill)}.icon-btn{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-soft);transition:background .12s ease,border-color .12s ease,color .12s ease}.icon-btn,.icon-btn:hover{background:var(--surface-2)}.icon-btn:hover{border-color:var(--crema);color:var(--crema)}.icon-btn-small{width:28px;height:28px}.icon-btn.is-active{background:color-mix(in srgb,var(--crema) 18%,transparent);border-color:var(--crema);color:var(--crema)}.share-btn-wrap{position:relative;display:flex}.qr-code-wrap{display:flex;justify-content:center;padding:8px 20px 28px;color:var(--text-1)}.modal-sub{font-size:13px;color:var(--text-2);margin-top:2px}.share-copied-pill{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--crema);color:var(--espresso);font-size:11px;font-weight:600;letter-spacing:.04em;padding:3px 8px;border-radius:var(--radius-pill);white-space:nowrap;pointer-events:none;z-index:10;animation:fade-in-up .15s ease forwards}@keyframes fade-in-up{0%{opacity:0;transform:translateX(-50%) translateY(4px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}.primary-btn{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;background:var(--crema);color:var(--espresso);border-radius:var(--radius-pill);font-weight:700;font-size:13px;letter-spacing:.04em;text-decoration:none}.primary-btn.full{width:100%;justify-content:center}.primary-btn:active{transform:translateY(1px)}.primary-btn:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.ghost-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:transparent;border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-soft);font-size:12.5px;text-decoration:none}.ghost-btn:hover{border-color:var(--crema);color:var(--crema)}.ghost-btn:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.ghost-btn:disabled:hover{border-color:var(--line);color:var(--ink-soft)}.ghost-btn.full{flex:1 1;width:100%;justify-content:center;padding:10px 16px;background:color-mix(in srgb,var(--crema) 6%,transparent);border-color:color-mix(in srgb,var(--crema) 28%,transparent)}.ghost-btn.sm{padding:4px 10px;font-size:11px}.ghost-btn.danger{color:#e08f7a;border-color:rgba(197,76,58,.4)}.ghost-btn.is-confirm{color:#e08f7a;border-color:rgba(197,76,58,.5)}.ghost-btn.danger:hover{border-color:var(--danger);color:#fff;background:rgba(197,76,58,.15)}[data-theme=light] .ghost-btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}[data-theme=light] .ghost-btn.danger:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.brew-method-row-wrap{position:relative;margin-bottom:2px}.brew-method-row-wrap:after{content:"";position:absolute;right:0;top:0;bottom:12px;width:48px;background:linear-gradient(to right,transparent,var(--bg));pointer-events:none}.brew-method-row{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;margin-bottom:0;scrollbar-width:none}.brew-method-row::-webkit-scrollbar{display:none}.bm-pill{white-space:nowrap;padding:7px 14px;font-size:12px;letter-spacing:.05em;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius-pill);color:var(--ink-soft)}.bm-pill.is-active{background:var(--espresso);color:var(--crema);border-color:var(--crema)}.preview-card{margin:6px 0 18px;padding:18px;background:linear-gradient(180deg,var(--surface-2),var(--surface));border:1px solid var(--line-soft);border-radius:18px;box-shadow:var(--shadow)}.preview-card--hint{margin-bottom:0}.preview-card--5{padding-left:10px;padding-right:10px}.preview-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px;margin:8px 0 10px}.preview-stats--5{grid-template-columns:repeat(5,1fr)}.brew-editor-summary{position:-webkit-sticky;position:sticky;top:0;z-index:3;background:var(--bg);border-bottom:1px solid var(--line-soft);margin-bottom:16px;padding-bottom:12px;transition:padding-bottom .16s ease}.brew-editor-summary .preview-card{margin:6px 0 0}.brew-editor-summary.is-compact{padding-bottom:8px}.brew-editor-summary.is-compact .preview-stats{margin:6px 0}.brew-editor-summary.is-compact .preview-stats .stat{padding:6px 4px}.brew-editor-summary.is-compact .preview-stats .stat-input,.brew-editor-summary.is-compact .preview-stats .stat-val{font-size:15px}.brew-editor-summary.is-compact .espresso-style-desc,.brew-editor-summary.is-compact .preview-stats .stat-lbl{display:none}.preview-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:10px;gap:10px}.preview-row--5{grid-template-columns:repeat(5,1fr);gap:6px}.stat{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:8px 4px;background:rgba(255,255,255,.02);border-radius:12px;border:1px solid var(--line-soft);min-width:0}.stat.is-hl{background:rgba(214,168,107,.1);border-color:rgba(214,168,107,.25)}.stat-val{font-family:var(--font-serif);font-size:18px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.stat.is-hl .stat-val{color:var(--crema)}.stat-lbl{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-top:2px}[data-theme=light] .stat-editable,[data-theme=light] .stat-editing{border-color:var(--line);border-bottom:3px solid var(--crema)!important}.preview-sub{text-align:center;margin-top:12px;font-size:12px;color:var(--ink-mute)}.preview-stats .stat{padding:10px 4px}.preview-stats .stat-input,.preview-stats .stat-val{font-size:20px}.preview-stats .stat-lbl{font-size:10px;margin-top:3px}.brew-editor-no-coffee{margin:8px 0 0;font-size:12px;text-align:center}.section{background:var(--surface);border:1px solid var(--line-soft);border-radius:16px;margin-bottom:12px;overflow:hidden}.setup>button:first-child,.setup>section:first-child{margin-top:8px}.section-head{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;font-size:14px;font-weight:600;color:var(--ink)}.section-head.static{cursor:default}.section-title{display:flex;align-items:center;gap:10px}.section-icon{color:var(--crema);display:flex}.section-warn-dot{width:7px;height:7px;border-radius:50%;background:var(--crema);flex-shrink:0}.section-body{padding:4px 16px 16px}.prep-copy-btn{margin-bottom:10px}.section-summary{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--ink-mute);min-width:0;max-width:55%}.section-summary-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field{display:block;margin-bottom:12px}.field-label{display:flex;align-items:center;flex-wrap:wrap;row-gap:3px;gap:6px;min-height:14px;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:6px;white-space:nowrap}.field-label-slot{margin-left:auto;white-space:nowrap}.field-clear-btn{display:flex;align-items:center;padding:2px 4px;border-radius:4px;color:var(--ink-mute);background:none;border:none;cursor:pointer;opacity:.7;transition:opacity .15s,color .15s;letter-spacing:0;text-transform:none;font-size:11px}.field-clear-btn:hover{opacity:1;color:var(--danger)}.field-match-toggle{display:flex;align-items:center;gap:4px;color:var(--ink-mute);letter-spacing:0;text-transform:none;font-size:11px;white-space:nowrap;flex-shrink:0;cursor:pointer}.field-match-toggle input[type=checkbox]{width:13px;height:13px;margin:0;accent-color:var(--crema);cursor:pointer}.field-match-toggle:has(input:checked){color:var(--crema-2)}.input{width:100%;padding:11px 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;color:var(--ink);font-size:15px;transition:border-color .12s ease}.input:focus{outline:none;border-color:var(--crema)}.input.is-error,.input.is-error:focus{border-color:var(--danger)}.input-readonly{color:var(--ink-2);cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none}textarea.input{resize:vertical;font-family:inherit}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-mute) 50%),linear-gradient(135deg,var(--ink-mute) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:32px}.select-btn{width:100%;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;color:var(--ink);display:flex;align-items:center;justify-content:space-between;text-align:left;margin-bottom:12px}.select-btn .muted{color:var(--ink-mute)}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.form-actions,.row-gap{display:flex;gap:8px}.form-actions{flex-direction:row-reverse}.form-actions>button{flex:1 1;display:flex;justify-content:center;align-items:center}.coffee-meta{display:flex;flex-wrap:wrap;gap:5px;margin:2px 0 8px}.freshness-tip{font-size:12px;line-height:1.55;padding:9px 12px;border-radius:8px;border-left:3px solid;background:var(--surface-2);margin-bottom:8px}.freshness-tip.is-peak{border-color:var(--crema);color:var(--ink-soft)}.freshness-tip.is-caution{border-color:var(--accent);color:var(--ink-soft)}.freshness-tip.is-aging{border-color:var(--ink-mute);color:var(--ink-mute)}.freshness-tip.is-stale{border-color:var(--accent);color:var(--ink-soft)}.bag-notes{font-size:12px;color:var(--ink-mute);font-style:italic;margin-bottom:4px}.bag-notes-label{font-style:normal;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);margin-right:4px}.tag{font-size:11px;padding:3px 9px;background:rgba(255,255,255,.03);border:1px solid var(--line-soft);border-radius:var(--radius-pill);color:var(--ink-soft)}[data-theme=light] .tag{background:var(--surface-2);border-color:var(--line);color:var(--ink-soft)}.info-wrap{position:relative;display:inline-flex}.info-btn{display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--crema) 8%,transparent);border:none;color:var(--crema-2);cursor:pointer;padding:4px;border-radius:50%;transition:color .12s ease,background .12s ease}.info-btn:hover{color:var(--crema);background:color-mix(in srgb,var(--crema) 18%,transparent)}.tooltip{top:100%;left:-8px;margin-top:6px;z-index:50;width:280px;max-width:calc(100vw - 36px);padding:10px 12px;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);font-size:12px;line-height:1.5;color:var(--ink);animation:fadeIn .12s ease;text-transform:none;letter-spacing:0;font-weight:400}.tooltip,.tooltip:before{position:absolute;background:var(--tooltip-bg)}.tooltip:before{content:"";top:-5px;left:14px;width:8px;height:8px;border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}.tooltip--flip:before{left:auto;right:14px}.tooltip--above:before{top:auto;bottom:-5px;border-left:none;border-top:none;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.tooltip--flip.tooltip--above:before{left:auto;right:14px}.tooltip-text{color:var(--ink)}.tooltip-link{display:inline-block;margin-top:6px;font-size:11px;color:var(--crema);font-weight:600;letter-spacing:.04em}.tooltip-long{margin-top:6px;padding-top:6px;border-top:1px solid color-mix(in srgb,var(--line) 60%,transparent);font-size:11.5px;line-height:1.55;color:var(--ink-soft)}.tooltip-related{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.tooltip-related-chip{font-size:10.5px;padding:2px 7px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--crema) 12%,transparent);color:var(--crema);border:1px solid color-mix(in srgb,var(--crema) 25%,transparent);cursor:pointer;font-weight:500;letter-spacing:0;text-transform:none}.tooltip-related-chip:hover{background:color-mix(in srgb,var(--crema) 22%,transparent)}.tip-sheet-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:calc(var(--z-modal) + 10);display:flex;align-items:flex-end;animation:fadeIn .16s ease}.tip-sheet{width:100%;background:var(--surface);border-radius:16px 16px 0 0;padding:12px 20px calc(28px + env(safe-area-inset-bottom));animation:slideUpSheet .22s var(--ease-enter)}.tip-sheet-handle{width:36px;height:4px;background:var(--line);border-radius:2px;margin:0 auto 16px}.tip-sheet .tooltip-text{font-size:14px;line-height:1.6;color:var(--ink)}.tip-sheet .tooltip-link{font-size:12px;margin-top:10px}.tip-sheet .tooltip-long{font-size:13px;line-height:1.65;margin-top:10px;padding-top:10px}.tip-sheet .tooltip-related{margin-top:12px}.tip-sheet .tooltip-related-chip{font-size:12px;padding:3px 10px}.tip-sheet-dismiss{display:block;width:100%;margin-top:16px;padding:12px;background:var(--surface-2);border:none;border-radius:10px;font-size:14px;font-weight:600;color:var(--ink);cursor:pointer}.prep-toggles{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;align-items:center}.field>.prep-toggles{margin-bottom:0}.prep-toggle-wrap{position:relative;display:inline-flex}.prep-toggle-wrap .prep-toggle{padding-right:32px}.prep-toggle-wrap .info-wrap{position:absolute;right:4px;top:50%;transform:translateY(-50%)}.prep-toggle-wrap .info-btn{width:20px;height:20px}.prep-toggle{display:inline-flex;align-items:center;gap:4px;padding:8px 10px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius-pill);color:var(--ink-soft);font-size:12.5px}.prep-toggle.is-active{background:rgba(214,168,107,.12);border-color:var(--crema);color:var(--crema)}.feature-toggles-list{display:flex;flex-direction:column}.feature-toggle{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline:none;text-align:left;width:100%;background:none;border:none;border-bottom:1px solid var(--line)}.feature-toggle:last-child{border-bottom:none}.feature-toggle:focus-visible .toggle-switch{box-shadow:0 0 0 2px var(--crema)}.feature-toggle:disabled{opacity:.38;cursor:not-allowed}.feature-toggle-text{flex:1 1;min-width:0}.feature-toggle-label{font-size:14px;color:var(--ink);font-weight:500;line-height:1.3}.feature-toggle-desc{font-size:12px;color:var(--ink-mute);margin-top:2px;line-height:1.4}.feature-toggle-picker{cursor:default}.feature-toggle-select{width:auto;flex:none;padding:8px 28px 8px 10px;font-size:14px}.setup-cost-fields{padding:14px 0 2px}.toggle-switch{flex-shrink:0;width:44px;height:26px;border-radius:13px;background:var(--surface-2);position:relative;transition:background .2s ease}.toggle-switch.is-on{background:var(--crema)}.toggle-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.35);transition:transform .2s cubic-bezier(.34,1.1,.64,1)}.toggle-switch.is-on .toggle-thumb{transform:translateX(18px)}[data-theme=light] .toggle-thumb{box-shadow:0 1px 3px rgba(0,0,0,.2)}[data-theme=light] .toggle-switch.is-on{background:var(--crema)}.simple-taste-row{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:6px;gap:6px}.simple-taste{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;color:var(--ink-soft);text-align:left}.simple-taste strong{font-size:13px;color:var(--ink);font-weight:600}.simple-taste span{font-size:10.5px;color:var(--ink-mute);line-height:1.3}.simple-taste.is-active{border-color:var(--crema);background:rgba(214,168,107,.08)}.simple-taste.is-active strong{color:var(--crema)}.simple-taste.is-sour.is-active{border-color:var(--accent);background:rgba(201,122,74,.1)}.simple-taste.is-sour.is-active strong{color:var(--accent)}.simple-taste.is-bitter.is-active{border-color:#c9a384;background:rgba(74,47,31,.3)}.simple-taste.is-bitter.is-active strong{color:#c9a384}.balance{margin-bottom:14px}.bal-row{display:grid;grid-template-columns:80px 1fr 32px;align-items:center;grid-gap:12px;gap:12px;margin-bottom:18px}.bal-label{font-size:12px;color:var(--ink-soft);letter-spacing:.05em}.slider{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:8px;padding:10px 0;background:linear-gradient(to right,var(--c) var(--p),var(--line) var(--p)) 50% /100% 8px no-repeat;border-radius:var(--radius-pill);outline:none;cursor:pointer;box-sizing:border-box}.slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:30px;height:20px;background:var(--c);border:2px solid rgba(255,255,255,.55);border-radius:10px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.5)}.slider::-moz-range-thumb{width:30px;height:20px;background:var(--c);border:2px solid rgba(255,255,255,.55);border-radius:10px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.5)}[data-theme=light] .slider::-webkit-slider-thumb{border-color:rgba(255,255,255,.8)}[data-theme=light] .slider::-moz-range-thumb{border-color:rgba(255,255,255,.8)}.slider::-webkit-slider-runnable-track{border-radius:var(--radius-pill)}.slider::-moz-range-track{height:8px;border-radius:var(--radius-pill)}.bal-num{font-family:var(--font-serif);font-size:16px;color:var(--crema-2);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.taste-profile{width:100%}.taste-profile .eyebrow{margin-bottom:10px}.bal-mini{display:grid;grid-gap:8px;gap:8px;width:100%}.bal-mini-row{display:grid;grid-template-columns:76px 1fr 22px;grid-gap:10px;gap:10px;align-items:center}.bal-mini-l{font-size:11px;color:var(--ink-soft)}.bal-mini-bar{height:7px;background:var(--line);overflow:hidden}.bal-mini-bar,.bal-mini-bar>div{border-radius:var(--radius-pill)}.bal-mini-bar>div{height:100%}.bal-mini-n{font-size:11px;color:var(--ink-mute);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.espresso-style-badge{font-size:12px;font-weight:600;color:var(--crema);letter-spacing:.04em}.espresso-style-hint{font-weight:400;color:var(--ink-soft)}.brew-cost-note,.espresso-style-note{display:flex;align-items:center;gap:8px;padding:8px 12px;margin:0 0 14px;border-left:2px solid var(--crema);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.espresso-style-note{background:rgba(214,168,107,.08)}.brew-cost-note{background:color-mix(in srgb,var(--crema) 8%,transparent)}.brew-cost-label,.espresso-style-label{font-size:13px;font-weight:600;color:var(--crema);letter-spacing:.03em}.espresso-flow-stat,.espresso-style-desc{font-size:12px;color:var(--ink-soft)}.espresso-flow-stat{margin-left:auto;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.espresso-flow-unit{font-weight:400;color:var(--ink-mute)}[data-theme=light] .espresso-style-note{background:rgba(140,90,40,.07)}.espresso-style-note.brew-editor-hint{margin:8px 0 0}.recipe-detail-body .espresso-style-note{margin-top:0}.brew-cost-value{margin-left:auto;font-size:13px;font-weight:600;color:var(--ink-soft);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.recipe-detail-body .brew-cost-note{margin-top:0}.recipe-detail-body .stat{padding:10px 4px}.recipe-detail-body .stat-input,.recipe-detail-body .stat-val{font-size:20px}.recipe-detail-body .stat-lbl{font-size:10px;margin-top:3px}.recipe-detail-body .recipe-stats--5 .stat{padding:10px 2px}.recipe-detail-body .recipe-stats--5 .stat-input,.recipe-detail-body .recipe-stats--5 .stat-val{font-size:16px}.coffee-quickpicks{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.coffee-qp-chip{display:flex;flex-direction:column;align-items:flex-start;padding:6px 12px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--surface-2);cursor:pointer;transition:border-color .15s,background .15s;text-align:left}.coffee-qp-chip.is-active,.coffee-qp-chip:hover{border-color:var(--crema)}.coffee-qp-name{font-size:12px;font-weight:600;color:var(--ink)}.coffee-qp-sub{font-size:10px;color:var(--ink-mute);margin-top:1px}[data-theme=light] .coffee-qp-chip.is-active{background:transparent}.flavor-groups{display:grid;grid-gap:12px;gap:12px}.flavor-group-label{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:6px}.seg{display:flex;gap:4px;padding:4px;background:var(--surface);border:1px solid var(--line-soft);margin-bottom:16px}.seg,.seg-btn{border-radius:var(--radius-pill)}.seg-btn{flex:1 1;padding:9px 12px;font-size:12.5px;font-weight:500;color:var(--ink-soft);letter-spacing:.04em}.seg-btn.is-active{background:var(--espresso);color:var(--crema)}.top-controls{display:flex;flex-direction:column;gap:10px;margin-bottom:16px;margin-top:8px}.top-controls-row{display:flex;align-items:center;gap:10px}.seg-compact{flex:1 1}.top-coffee-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px}.top-session-count{font-size:11px;color:var(--ink-mute)}.top-list{display:grid;grid-gap:10px;gap:10px}.top-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:14px;padding:0 0 0 16px;display:grid;grid-template-columns:auto 1fr auto;grid-gap:14px;gap:14px;align-items:stretch;position:relative;overflow:hidden}.top-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--crema),var(--accent))}.top-rank{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--crema);font-family:var(--font-serif);font-size:14px}.top-coffee{cursor:pointer;min-width:0;padding:16px 0}.top-coffee-name{display:flex;align-items:center;gap:7px;margin-bottom:3px}.top-coffee-name-text{font-family:var(--font-serif);font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-coffee-sub{font-size:11px;color:var(--ink-mute);margin-bottom:6px}.top-stats{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:var(--ink-soft);margin-bottom:8px}.top-stats span{display:inline-flex;align-items:center;gap:3px}.redial-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0 18px;background:var(--espresso);border:none;border-left:1px solid var(--crema-dim,rgba(214,168,107,.3));border-radius:0 14px 14px 0;color:var(--crema);font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:600;min-width:64px}.redial-btn:active{opacity:.8}.setup-explain{font-size:12px;color:var(--ink-mute);margin:0 0 12px;line-height:1.5}.setup-explain-warn{color:var(--warning)}.setup-about{display:flex;flex-direction:column;gap:6px}.setup-about-row{display:flex;align-items:baseline;justify-content:space-between}.setup-version-chip{font-size:11px;padding:3px 9px;background:color-mix(in srgb,var(--crema) 14%,transparent);border:1px solid color-mix(in srgb,var(--crema) 30%,transparent);border-radius:var(--radius-pill);color:var(--crema);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.setup-version-date{font-size:12px;color:var(--ink-mute)}.setup-about .ghost-btn{margin-top:10px}.mode-grid{display:grid;grid-gap:8px;gap:8px}.mode-card{text-align:left;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;color:var(--ink-soft);transition:border-color .12s ease,background .12s ease}.mode-card:hover{border-color:var(--line)}.mode-card.is-active{background:rgba(214,168,107,.08);border-color:var(--crema);color:var(--crema)}.mode-card-head{display:flex;align-items:center;gap:8px;margin-bottom:4px}.mode-card-title{font-size:14px;font-weight:600;flex:1 1}.mode-card-check{color:var(--crema)}.mode-card-blurb{font-size:12px;line-height:1.5;color:var(--ink-mute)}.mode-card.is-active .mode-card-blurb{color:var(--crema-2)}.picker-list{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.picker-row{width:100%;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;color:var(--ink)}.picker-row.is-active{background:rgba(214,168,107,.08);border-color:var(--crema);color:var(--crema)}.picker-row.is-active .picker-sub{color:var(--crema-2)}.picker-row.is-disabled{opacity:.35;cursor:not-allowed}.picker-title{font-size:14px;font-weight:500}.picker-sub{font-size:11.5px;color:var(--ink-mute);margin-top:2px}.picker-row-main{flex:1 1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:8px;background:none;border:none;padding:0;text-align:left;color:inherit;cursor:pointer}.picker-row-main:disabled{cursor:not-allowed}.picker-row-actions{display:flex;gap:4px;flex-shrink:0}@media (min-width:600px),(orientation:landscape){.cols-2{grid-template-columns:1fr 1fr}}.multi-list{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.multi-item{width:100%;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;color:var(--ink);font-size:13px}.multi-item.is-active{background:rgba(214,168,107,.08);border-color:var(--crema);color:var(--crema)}.multi-item.is-active .picker-sub{color:var(--crema-2)}.muted{color:var(--ink-mute)}.small{font-size:12px}.add-form{margin-top:12px;padding:14px;background:var(--bg-2);border:1px dashed var(--line);border-radius:12px}.coffee-list{display:grid;grid-gap:6px;gap:6px;margin-bottom:12px}.coffee-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px}.coffee-row-confirm{flex-wrap:wrap;gap:8px}.coffee-confirm-msg{display:flex;align-items:center;gap:6px;font-size:13px;flex:1 1;min-width:0}.coffee-row-info{display:flex;flex-direction:column;gap:2px;min-width:0}.coffee-row-name{font-size:14px;font-weight:600}.coffee-row-origin{font-size:12px;color:var(--crema);font-style:italic}.bag-list{display:grid;grid-gap:4px;gap:4px;margin:4px 0 4px 16px}.bag-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px;background:var(--bg-1);border:1px solid var(--line);border-radius:8px}.bag-row.is-active-bag{border-color:color-mix(in srgb,var(--crema) 50%,var(--line))}.bag-active-pill{font-size:10px;font-weight:600;letter-spacing:.04em;padding:1px 6px;border-radius:20px;color:var(--crema);background:color-mix(in srgb,var(--crema) 15%,transparent)}.bag-row-info{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;flex:1 1}.bag-row-date{font-size:12px;color:var(--ink-2)}.bag-row-no-date{font-size:12px;color:var(--ink-mute)}.bag-row-meta{font-size:11px;color:var(--ink-mute)}.bag-row-price{font-size:11px;font-weight:600;color:var(--crema);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bag-row-actions{display:flex;gap:4px;flex-shrink:0}@media (max-width:640px){.bag-row-actions .icon-btn-swipe-dup,.coffee-row-actions .icon-btn-swipe-dup{display:none}}.bag-freshness-pill{font-size:10px;font-weight:600;letter-spacing:.04em;padding:1px 6px;border-radius:20px}.active-bag-freshness.is-peak,.bag-freshness-pill.is-peak{color:var(--crema)}.active-bag-freshness.is-caution,.bag-freshness-pill.is-caution{color:var(--accent)}.active-bag-freshness.is-aging,.bag-freshness-pill.is-aging{color:var(--ink-mute)}.active-bag-freshness.is-stale,.bag-freshness-pill.is-stale{color:var(--accent)}.bag-freshness-pill.is-peak{background:color-mix(in srgb,var(--crema) 15%,transparent)}.bag-freshness-pill.is-caution{background:color-mix(in srgb,var(--accent) 15%,transparent)}.bag-freshness-pill.is-aging{background:color-mix(in srgb,var(--ink-mute) 15%,transparent)}.bag-freshness-pill.is-stale{background:color-mix(in srgb,var(--accent) 15%,transparent)}.inline-link{background:none;border:none;padding:0;color:var(--crema);cursor:pointer;font-size:inherit;text-decoration:underline}.bag-stock-pill{font-size:10px;font-weight:600;letter-spacing:.04em;padding:1px 6px;border-radius:20px}.bag-stock-pill.is-ok{color:var(--ink-mute);background:color-mix(in srgb,var(--ink-mute) 15%,transparent)}.bag-stock-pill.is-empty,.bag-stock-pill.is-low{color:var(--danger);background:color-mix(in srgb,var(--danger) 15%,transparent)}.bag-stock-pill.is-finished{color:var(--crema);background:color-mix(in srgb,var(--crema) 15%,transparent)}.archived-bags{margin-top:4px}.archived-bags-toggle{font-size:11px;color:var(--ink-mute);cursor:pointer;list-style:none;padding:4px 2px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.archived-bags-toggle::-webkit-details-marker{display:none}.archived-bags-toggle:before{content:"▸ "}details[open] .archived-bags-toggle:before{content:"▾ "}.archived-bags-list{display:grid;grid-gap:4px;gap:4px;margin-top:4px}.archived-bag-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;background:transparent;border:1px dashed var(--line-soft);border-radius:8px;opacity:.7}.archived-bag-label{font-size:11.5px;color:var(--ink-mute)}[data-theme=light] .archived-bag-row{border-color:var(--line)}.bag-form{margin:4px 0 4px 16px}.bag-list .recipe-fork-confirm{margin-top:6px;padding:10px 12px;background:color-mix(in srgb,var(--surface) 88%,var(--crema));border:1px solid color-mix(in srgb,var(--crema) 30%,transparent);border-radius:10px;animation:swipe-confirm-in .15s ease}.bag-list .recipe-fork-confirm p{font-size:12.5px;color:var(--ink);margin:0 0 8px}.bag-list .recipe-fork-confirm .row-gap{gap:6px}.bag-list .recipe-fork-confirm .ghost-btn,.bag-list .recipe-fork-confirm .primary-btn{font-size:12px;padding:5px 12px}.active-bags-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-bottom:4px}@media (min-width:500px){.active-bags-grid{grid-template-columns:repeat(3,1fr)}}.active-bag-card{text-align:left;padding:14px;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;color:var(--ink);transition:border-color .12s ease,background .12s ease;cursor:pointer;display:flex;flex-direction:column;gap:3px}.active-bag-card:hover{border-color:var(--crema);background:var(--surface)}.active-bag-card:active{transform:scale(.98)}.active-bag-method{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:4px}.active-bag-name{font-family:var(--font-serif);font-size:15px;font-weight:600;line-height:1.2}.active-bag-sub{font-size:11px;color:var(--ink-mute)}.active-bag-freshness{margin-top:6px}.active-bag-freshness,.active-bag-stock{font-size:10.5px;font-weight:600;letter-spacing:.04em}.active-bag-stock{margin-top:3px}.active-bag-stock.is-ok{color:var(--ink-mute)}.active-bag-stock.is-empty,.active-bag-stock.is-low{color:var(--danger)}.active-bag-stock.is-finished{color:var(--crema)}.active-bag-days{font-weight:400;color:var(--ink-mute)}.modal-bg{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;animation:fadeIn .2s ease}.modal-sheet{width:100%;max-width:720px;margin:0 auto;background:linear-gradient(180deg,var(--surface-2),var(--surface));border-top-left-radius:24px;border-top-right-radius:24px;padding-top:8px;max-height:90vh;max-height:90dvh;display:flex;flex-direction:column;box-shadow:var(--shadow);animation:slideUp var(--duration-enter) var(--ease-enter)}.modal-scroll{padding:0 20px;overflow-y:auto;flex:1 1;min-height:0}.modal-footer{padding:12px 20px 36px;flex-shrink:0;border-top:1px solid var(--line-soft);display:grid;grid-gap:10px;gap:10px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideUp{0%{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideUpCenter{0%{transform:translateX(-50%) translateY(24px);opacity:0}to{transform:translateX(-50%) translateY(0);opacity:1}}@keyframes slideInRight{0%{transform:translateX(32px);opacity:0}to{transform:translateX(0);opacity:1}}.modal-grip{display:flex;align-items:flex-start;justify-content:center;width:60px;min-height:44px;padding-top:10px;margin:0 auto -4px;cursor:-webkit-grab;cursor:grab;background:transparent;border:none}.modal-grip:after{content:"";display:block;width:40px;height:4px;background:var(--line);border-radius:var(--radius-pill);transition:background .15s}.modal-grip:hover:after{background:var(--ink-mute)}@media (min-width:641px){.modal-grip{display:none}.modal-scroll{padding-top:20px}}.brew-sheet-backdrop{position:absolute;inset:0;z-index:9}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;gap:12px}.modal-head h2{font-size:22px;margin-top:2px}.detail-stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin-bottom:14px}.detail-rating{flex-direction:column;align-items:flex-start;gap:14px;padding:14px 0;border-top:1px solid var(--line-soft);margin-bottom:14px}.detail-rating,.detail-row{display:flex;border-bottom:1px solid var(--line-soft)}.detail-row{justify-content:space-between;gap:12px;padding:10px 0;font-size:13px}.detail-row-l{color:var(--ink-mute);letter-spacing:.05em}.detail-row-r{color:var(--ink);font-weight:500}.detail-prep{margin:14px 0}.detail-prep .eyebrow{margin-bottom:6px}.detail-notes,.detail-notes-empty{margin-top:8px;padding:10px 12px;border-radius:10px;font-size:13px}.detail-notes{background:var(--bg-2);color:var(--ink-soft);line-height:1.5;white-space:pre-wrap;border-left:2px solid var(--crema)}.detail-notes-empty{display:block;width:100%;min-height:80px;background:transparent;border:1px dashed var(--ink-mute);color:var(--ink-mute);text-align:left;cursor:pointer}.detail-notes-empty:hover{border-color:var(--ink-soft);color:var(--ink-soft)}.detail-actions{display:flex;flex-direction:column;gap:8px;margin-top:18px}.detail-actions .primary-btn{width:100%;justify-content:center;padding:13px 16px;font-size:14px}.detail-actions .ghost-btn{width:100%;justify-content:center;padding:11px 16px}.brew-delta{margin:14px 0;padding:12px 14px;background:var(--surface-2);border-radius:12px}.brew-delta .eyebrow{margin-bottom:8px;display:flex;align-items:baseline;gap:6px}.brew-delta-eyebrow-date{font-size:10px;color:var(--ink-mute);opacity:.6;text-transform:lowercase;letter-spacing:0;font-weight:400}.brew-delta-row{display:flex;align-items:center;gap:0;padding:4px 0;font-size:13px}.brew-delta-label{color:var(--ink-mute);width:90px;flex-shrink:0;font-size:11px;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.brew-delta-change{display:flex;align-items:center;gap:6px;flex:1 1}.brew-delta-prev{color:var(--ink-mute);font-size:12px}.brew-delta-arrow{color:var(--line);font-size:10px}.brew-delta-curr{color:var(--crema);font-weight:600}.brew-delta-badge{font-size:11px;font-weight:700;padding:2px 7px;border-radius:99px;margin-left:auto}.brew-delta-badge.is-up{background:color-mix(in srgb,#5db96a 18%,transparent);color:#6bc971}.brew-delta-badge.is-down{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.brew-delta--secondary{opacity:.55;margin-top:4px;border:1px solid var(--line);background:transparent}.brew-delta-merged-head{display:grid;grid-template-columns:90px 52px 1fr 1fr;grid-gap:0 8px;gap:0 8px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid var(--line-soft)}.brew-delta-col-head{display:flex;flex-direction:column;gap:1px}.brew-delta-col-head .eyebrow{margin-bottom:0}.brew-delta-col-now .eyebrow{color:var(--crema)}.brew-delta-col-label{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute)}.brew-delta-row--merged{display:grid;grid-template-columns:90px 52px 1fr 1fr;grid-gap:0 8px;gap:0 8px;align-items:center}.brew-delta-curr--now{font-weight:600;color:var(--crema);font-size:13px}.brew-delta-change--col{display:flex;align-items:center;justify-content:space-between;gap:4px}.brew-delta-change--col .brew-delta-prev,.brew-delta-same{color:var(--ink-mute);font-size:12px}.brew-delta-same{opacity:.4}[data-theme=light] .brew-delta--secondary{opacity:1;background:var(--bg-2);border:1px solid var(--ink-mute)}[data-theme=light] .brew-delta-badge.is-up{background:color-mix(in srgb,#3a9944 18%,transparent);color:#2d7a34}[data-theme=light] .brew-delta--secondary .brew-delta-arrow,[data-theme=light] .brew-delta--secondary .brew-delta-eyebrow-date,[data-theme=light] .brew-delta--secondary .brew-delta-label,[data-theme=light] .brew-delta--secondary .brew-delta-prev{opacity:.7}[data-theme=light] .brew-delta-col-label,[data-theme=light] .brew-delta-label{color:var(--ink-soft)}[data-theme=light] .brew-delta-eyebrow-date{opacity:1}[data-theme=light] .brew-delta-change--col .brew-delta-prev,[data-theme=light] .brew-delta-prev{color:var(--ink-soft)}[data-theme=light] .brew-delta-arrow{color:var(--ink-mute)}[data-theme=light] .brew-delta-same{opacity:.6}[data-theme=light] .brew-delta-merged-head{border-bottom-color:var(--line)}.choke-warning{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-radius:10px;background:color-mix(in srgb,var(--warning) 12%,transparent);border:1px solid color-mix(in srgb,var(--warning) 35%,transparent);color:var(--warning);font-size:13px;line-height:1.45;margin-bottom:4px}.choke-warning span:last-child{opacity:.8;font-size:12px}.next-time-callout{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-radius:10px;background:color-mix(in srgb,var(--crema) 10%,transparent);border-left:3px solid var(--crema);margin:0 0 12px;font-size:13px;line-height:1.5}.next-time-callout-head{display:flex;align-items:center;justify-content:space-between}.next-time-callout-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--crema);opacity:.8}.next-time-callout-dismiss{background:none;border:none;cursor:pointer;padding:0;line-height:1;color:var(--ink-mute);opacity:.6}.next-time-callout-dismiss:hover{opacity:1}.next-time-callout-text{color:var(--ink-soft)}.next-time-note-wrap{padding:0 16px 16px}[data-theme=light] .next-time-callout{background:color-mix(in srgb,var(--crema) 12%,transparent)}[data-theme=light] .next-time-callout-label{opacity:1}[data-theme=light] .next-time-callout-text{color:var(--ink)}.grade-reminder-text{color:var(--ink-soft);font-size:14px;line-height:1.5;margin:0 0 8px}[data-theme=light] .grade-reminder-text{color:var(--ink)}.detail-next-time-note{display:flex;flex-direction:column;gap:2px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line-soft);font-size:13px}.detail-next-time-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--crema);opacity:.8}.detail-next-time-text{color:var(--ink-soft);line-height:1.5}[data-theme=light] .detail-next-time-label{opacity:1}[data-theme=light] .detail-next-time-text{color:var(--ink)}.chip-choked{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);font-weight:600}.shot-card--choked{background:color-mix(in srgb,var(--danger) 7%,var(--surface));border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.shot-card--choked:hover{background:color-mix(in srgb,var(--danger) 10%,var(--surface));border-color:color-mix(in srgb,var(--danger) 45%,transparent)}.shot-choked-badge{display:inline-block;flex-shrink:0;font-size:9.5px;font-weight:600;color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);border-radius:var(--radius-pill);padding:1px 7px;margin-left:6px;vertical-align:middle}[data-theme=light] .shot-card--choked{background:color-mix(in srgb,var(--danger) 5%,var(--surface));border-color:color-mix(in srgb,var(--danger) 22%,transparent)}[data-theme=light] .shot-card--choked:hover{background:color-mix(in srgb,var(--danger) 8%,var(--surface));border-color:color-mix(in srgb,var(--danger) 35%,transparent)}[data-theme=light] .shot-choked-badge{color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,transparent);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.nail-it-overlay{position:fixed;inset:0;z-index:calc(var(--z-modal) + 50);background:var(--bg);flex-direction:column;padding:0 24px env(safe-area-inset-bottom)}.nail-it-body,.nail-it-overlay{display:flex;align-items:center}.nail-it-body{flex:1 1;flex-direction:column;justify-content:center;text-align:center;padding:40px 0 20px;width:100%;max-width:400px}.nail-it-emoji{font-size:44px;margin-bottom:14px;line-height:1}.nail-it-title{font-size:26px;font-weight:700;color:var(--crema);margin-bottom:4px;line-height:1.25}.nail-it-coffee{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--crema-2);margin-bottom:8px}.nail-it-stars{font-size:18px;color:var(--crema);letter-spacing:2px;margin-bottom:20px}.nail-it-grind-hero{display:flex;flex-direction:column;align-items:center;gap:2px;background:color-mix(in srgb,var(--crema) 8%,transparent);border:1px solid color-mix(in srgb,var(--crema) 20%,transparent);border-radius:14px;padding:14px 32px;margin-bottom:16px;min-width:160px}.nail-it-grind-hero.has-rpm{flex-direction:row;gap:28px}.nail-it-grind-col{display:flex;flex-direction:column;align-items:center;gap:2px}.nail-it-grind-label{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute)}.nail-it-grind-value{font-size:32px;font-weight:700;color:var(--crema);line-height:1.1}.nail-it-grind-value.is-missing{font-size:14px;color:var(--ink-mute);font-weight:400;font-style:italic}.nail-it-sub{color:var(--ink-soft);font-size:13px;line-height:1.55;margin-bottom:20px;max-width:260px}.nail-it-card{background:var(--surface-2);border-radius:14px;padding:4px 18px;width:100%;max-width:320px}.nail-it-stat{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.nail-it-stat:last-child{border-bottom:none}.nail-it-stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-mute)}.nail-it-stat-value{font-size:14px;font-weight:600;color:var(--ink)}.nail-it-footer{padding:16px 0 32px;width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:12px}.nail-it-skip{background:none;border:none;color:var(--ink-mute);font-size:13px;cursor:pointer;padding:4px 12px}.nail-it-skip:hover{color:var(--ink-soft)}.screen-inner{padding:0}.screen-head{display:flex;align-items:flex-end;justify-content:space-between;margin:14px 0 18px}.screen-head h2{font-size:22px}.glossary-back-row{display:flex;align-items:center;margin-bottom:10px}.glossary-search{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;margin-bottom:14px;color:var(--ink-mute)}.glossary-input{flex:1 1;background:none;border:none;outline:none;color:var(--ink);font-size:15px}.glossary-list{display:grid;grid-gap:6px;gap:6px}.glossary-card{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;overflow:hidden}.glossary-card.is-open{border-color:var(--crema)}.glossary-head{width:100%;text-align:left;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:12px 14px}.glossary-term{font-family:var(--font-serif);font-size:16px;font-weight:600;color:var(--ink);margin-bottom:4px}.glossary-card.is-open .glossary-term{color:var(--crema)}.glossary-short{font-size:12.5px;color:var(--ink-soft);line-height:1.5}.glossary-body{padding:0 14px 14px;font-size:13px;color:var(--ink-soft);line-height:1.6}.glossary-body p{margin:0 0 12px}.glossary-related{margin-top:8px}.glossary-related .eyebrow{margin-bottom:6px;display:block}.recipe-controls{display:flex;flex-direction:column;gap:6px;margin-top:8px;margin-bottom:12px}.recipe-sort-row{display:flex;justify-content:flex-end}.recipe-filter-chips-row{display:flex;align-items:center;gap:6px;min-width:0}.filter-chips{display:flex;flex:1 1;min-width:0;gap:6px;overflow-x:auto;scrollbar-width:none}.filter-chips::-webkit-scrollbar{display:none}.filter-chips .chip{flex-shrink:0;white-space:nowrap}.recipe-filter-toggle{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:none;color:var(--ink-mute);cursor:pointer;transition:color .14s,background .14s,border-color .14s}.recipe-filter-toggle:hover{color:var(--ink);background:var(--surface-2)}.recipe-filter-toggle svg{transition:transform .22s ease}.recipe-filter-toggle.is-open svg{transform:rotate(180deg)}.recipe-list{display:grid;grid-gap:8px;gap:8px}@media (min-width:640px){.recipe-controls{flex-direction:row;align-items:center;gap:12px}.recipe-sort-row{flex-shrink:0}.recipe-list{grid-template-columns:1fr 1fr}.recipe-card-body{padding:8px 12px}.recipe-brew-btn{padding:12px 16px}.shot-list{align-items:start}.shot-list,.top-list{grid-template-columns:1fr 1fr}}.recipe-card{min-width:0;width:100%;background:var(--surface);border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;display:flex;flex-direction:row;align-items:stretch;text-align:left;cursor:pointer;transition:background .15s,border-color .15s}.recipe-card:hover{background:var(--surface-2);border-color:var(--line)}.recipe-card-body{padding:10px 12px;flex:1 1;min-width:0}.recipe-method-tag{display:inline-flex;align-items:center;flex-shrink:0}.recipe-card .stat{padding:5px 4px}.recipe-card .stat-val{font-size:15px}.recipe-name{display:flex;align-items:center;gap:6px;min-width:0;margin-bottom:5px}.recipe-name-text{font-family:var(--font-serif);font-size:18px;font-weight:600;color:var(--ink);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:1 1}.recipe-card.is-pinned{border-color:color-mix(in srgb,var(--crema) 35%,transparent)}.recipe-cold-icon{flex-shrink:0;color:var(--ink-soft);opacity:.7}.recipe-pin-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;border:1px solid transparent;background:none;color:var(--ink-mute);opacity:0;pointer-events:none;transition:opacity .14s ease,color .14s ease,border-color .14s ease,background .14s ease}.recipe-card:hover .recipe-pin-btn{opacity:1;pointer-events:auto}.recipe-card.is-pinned .recipe-pin-btn{opacity:1;pointer-events:auto;color:var(--crema);background:color-mix(in srgb,var(--crema) 18%,transparent);border-color:color-mix(in srgb,var(--crema) 35%,transparent)}.recipe-pin-btn:hover{color:var(--crema);border-color:var(--line)}@media (hover:none){.recipe-pin-btn{opacity:1;pointer-events:auto}}@media (pointer:coarse){.recipe-pin-btn{width:44px;height:44px}}.recipe-delete-btn{display:none;flex-shrink:0;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;border:1px solid transparent;background:none;color:var(--ink-mute);opacity:0;pointer-events:none;cursor:pointer;transition:opacity .14s ease,color .14s ease,border-color .14s ease,background .14s ease}@media (min-width:641px){.recipe-delete-btn{display:inline-flex}.recipe-card:hover .recipe-delete-btn{opacity:1;pointer-events:auto}.recipe-delete-btn:hover{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent);background:color-mix(in srgb,var(--danger) 8%,transparent)}}.recipe-author{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow:hidden;min-width:0;font-size:12px;color:var(--ink-mute);margin-bottom:10px}.recipe-author span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sort-dropdown{position:relative;flex-shrink:0}.sort-dropdown-trigger{display:flex;align-items:center;gap:6px;background:rgba(214,168,107,.06);border:1px solid rgba(214,168,107,.18);border-radius:var(--radius-pill);color:var(--crema-2);font-size:11px;font-family:inherit;padding:5px 12px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.sort-dropdown-trigger:hover{background:rgba(214,168,107,.1);border-color:rgba(214,168,107,.28)}.sort-dropdown-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:50;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:4px;min-width:140px;box-shadow:0 8px 24px rgba(0,0,0,.4)}.sort-dropdown-item{display:block;width:100%;padding:7px 12px;border-radius:7px;font-size:12px;font-family:inherit;color:var(--ink-mute);text-align:left;transition:background .1s,color .1s}.sort-dropdown-item:hover{background:rgba(214,168,107,.08);color:var(--ink)}.sort-dropdown-item.is-active{color:var(--crema);font-weight:600}.brew-method-badge{display:inline-block;flex-shrink:0;font-size:9.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--radius-pill);padding:1px 7px;margin-left:8px;vertical-align:middle}.top-method-badge{margin-left:0;flex-shrink:0}.recipe-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px;margin-bottom:10px}.recipe-stats--5{grid-template-columns:repeat(5,1fr)}.recipe-detail-body .recipe-stats{grid-template-columns:repeat(auto-fit,minmax(70px,1fr))}.recipe-detail-body .recipe-stats--5{grid-template-columns:repeat(5,1fr)}.recipe-brew-btn{display:flex;align-items:center;justify-content:center;padding:10px 14px;background:var(--crema);border-left:none;color:var(--espresso);font-weight:700;font-size:13px;letter-spacing:.04em;writing-mode:vertical-rl;-webkit-text-orientation:mixed;text-orientation:mixed;white-space:nowrap;flex-shrink:0;transition:background .15s,filter .15s}.recipe-brew-btn:hover{filter:brightness(1.08)}.recipe-brew-btn:active{filter:brightness(.96)}.recipe-grind{font-size:11.5px;color:var(--ink-mute);margin-top:10px}.recipe-grind .eyebrow{margin-right:4px}.recipe-detail-page{flex:1 1;min-height:0;display:flex;flex-direction:column}.recipe-detail-body{flex:1 1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:8px 18px 0;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.recipe-detail-body::-webkit-scrollbar{width:4px}.recipe-detail-body::-webkit-scrollbar-track{background:transparent}.recipe-detail-body::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--radius-pill)}.recipe-detail-page>.recipe-detail-page-head{flex-shrink:0;padding:12px 18px 0;margin-bottom:12px}.recipe-detail-page>.import-tabs{flex-shrink:0;margin:0 18px 12px}.recipe-detail-page-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;padding-top:4px}.recipe-detail-page-head .icon-btn{margin-top:2px;flex-shrink:0}.recipe-detail-page-title{flex:1 1;min-width:0}.recipe-detail-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}@media (max-width:640px) and (orientation:portrait){.recipe-detail-page-head{flex-wrap:wrap;align-items:center;row-gap:8px}.recipe-detail-page-head>.icon-btn{margin-top:0}.recipe-detail-actions{width:100%;justify-content:flex-end}}.recipe-detail-page-title h2{font-size:22px;margin-top:2px}.brew-detail-name-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.brew-detail-recipe-tag{display:inline-flex;align-items:center;gap:5px;margin-top:6px;padding:3px 10px 3px 8px;border-radius:var(--radius-pill);border:1px solid color-mix(in srgb,var(--crema) 35%,transparent);background:color-mix(in srgb,var(--crema) 8%,transparent);color:var(--crema);font-size:12px;font-weight:600;text-decoration:none;width:-moz-fit-content;width:fit-content}.brew-detail-recipe-tag:hover{background:color-mix(in srgb,var(--crema) 16%,transparent)}.recipe-detail-subtitle{font-size:12px;color:var(--ink-mute);margin-top:3px;letter-spacing:.02em}.recipe-detail-tags{display:flex;align-items:center;gap:8px;margin-top:6px;flex-wrap:wrap}.recipe-detail-page-title .recipe-author{margin-top:4px}.recipe-detail-tags .brew-method-badge{margin-left:0}.recipe-detail-tags .recipe-detail-subtitle{margin-top:0}.recipe-detail-page-footer{flex-shrink:0;padding:16px 18px 20px;background:linear-gradient(to bottom,transparent,var(--bg) 32%);display:grid;grid-gap:10px;gap:10px}.recipe-steps{display:grid;grid-gap:0;gap:0;margin-bottom:18px}.recipe-step{display:grid;grid-template-columns:36px 16px 1fr;align-items:flex-start;grid-gap:8px;gap:8px;padding:8px 0;border-bottom:1px solid var(--line-soft)}.recipe-step:last-child{border-bottom:none}.recipe-step-time{font-family:var(--font-serif);font-size:12px;color:var(--ink-mute);text-align:right;padding-top:2px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.recipe-step-time.is-label{font-family:var(--font-sans);font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding-top:4px}.recipe-step-dot{width:8px;height:8px;border-radius:var(--radius-pill);background:var(--line);margin-top:5px;flex-shrink:0}.recipe-step-dot.is-prep{background:rgba(214,168,107,.5)}.recipe-step-dot.is-post{background:var(--ink-mute)}.recipe-step-body{display:flex;align-items:flex-start;gap:8px}.recipe-step-num{font-size:10px;color:var(--ink-mute);background:var(--bg-2);border-radius:var(--radius-pill);width:18px;height:18px;display:grid;place-items:center;flex-shrink:0;font-weight:700;letter-spacing:.02em}.recipe-step-action{font-size:13.5px;color:var(--ink);line-height:1.4;flex:1 1;min-width:0}.recipe-step-water{font-family:var(--font-serif);font-size:13px;font-weight:700;color:var(--crema);white-space:nowrap}.recipe-notes{background:var(--bg-2);border-radius:10px;padding:12px 14px;margin-bottom:18px;font-size:12.5px;color:var(--ink-soft);line-height:1.6}.recipe-notes p{margin:0}.recipe-steps-label{margin:16px 0 8px}.recipe-notes-label{margin-bottom:6px}.recipe-scale-hint{font-size:12px;color:var(--ink-mute);margin:6px 0 2px}.recipe-scale-hint strong{color:var(--crema)}.stat-editable{position:relative;cursor:pointer;width:100%;background:none;border:1px solid var(--line-soft);border-bottom:2px solid var(--crema);font:inherit;transition:border-color .12s ease}.stat-editable.is-hl{border-bottom-color:var(--crema)}.stat-editable:hover{border-top-color:var(--line);border-left-color:var(--line);border-right-color:var(--line)}.stat-editing{cursor:default;border-bottom:2px solid var(--crema)}.stat-editable .stat-val,.stat-editing .stat-input{color:var(--crema)}.stat-input{display:block;font-family:var(--font-serif);font-size:18px;font-weight:600;line-height:normal;color:var(--ink);background:none;border:none;outline:none;text-align:center;width:100%;padding:0;-moz-appearance:textfield}.stat-input::-webkit-inner-spin-button,.stat-input::-webkit-outer-spin-button{-webkit-appearance:none}.stat.is-hl .stat-input{color:var(--crema)}.recipe-detail-footer-row{display:flex;align-items:center;gap:10px}.recipe-fork-confirm{padding:14px 20px;background:var(--surface-2);border-top:1px solid var(--line-soft)}.recipe-fork-confirm p{font-size:13px;color:var(--ink-soft);margin:0 0 12px;line-height:1.5}.recipe-editor-nav{display:flex;align-items:center;gap:10px;padding:10px 18px 8px;flex-shrink:0}.recipe-editor-name-area{padding:0 20px 10px;border-bottom:1px solid var(--line-soft);flex-shrink:0;transition:padding .16s ease}.recipe-editor-name-area.is-compact{padding-bottom:6px}.recipe-editor-name-input{flex:1 1;min-width:0;background:none;border:none;outline:none;font-family:var(--font-serif);font-size:20px;font-weight:600;color:var(--ink);padding:0;line-height:1.25}.recipe-editor-name-input::placeholder{color:var(--ink-mute)}.recipe-editor-name-hint{font-size:11px;color:var(--accent);margin-top:2px}.recipe-editor-live-stats{display:flex;align-items:center;flex-wrap:wrap;column-gap:6px;row-gap:4px;margin-top:6px;transition:margin-top .16s ease}.recipe-editor-live-stat{display:flex;align-items:baseline;gap:3px;flex-shrink:0;white-space:nowrap}.recipe-editor-live-val{font-family:var(--font-serif);font-size:14px;font-weight:600;color:var(--crema-2);white-space:nowrap;transition:font-size .16s ease}.recipe-editor-live-lbl{font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute);white-space:nowrap}.recipe-editor-live-sep{color:var(--line);font-size:14px;flex-shrink:0}.recipe-editor-name-area.is-compact .recipe-editor-live-stats{margin-top:3px}.recipe-editor-name-area.is-compact .recipe-editor-live-val{font-size:13px}.recipe-editor-name-area.is-compact .recipe-editor-live-lbl{display:none}.recipe-editor-name-area.is-compact .recipe-editor-live-sep{font-size:12px;color:var(--ink-mute)}.recipe-editor-time-hint{font-family:var(--font-serif);font-size:10px;color:var(--crema);margin-left:5px;font-weight:600;letter-spacing:.02em}.recipe-editor-token-hint{font-size:11px;color:var(--ink-mute);margin-top:4px}.recipe-editor-token-hint .token-chip{font-family:var(--font-mono,monospace);font-size:11px;color:var(--ink-soft);background:var(--surface-raised,rgba(255,255,255,.06));border:1px solid var(--line-soft);border-radius:4px;padding:2px 6px;margin:0 3px 0 0;cursor:pointer}.recipe-editor-token-hint .token-chip:active{transform:translateY(1px)}.recipe-editor-token-hint .token-chip-unit{color:var(--ink-mute);margin-left:2px;font-size:9px}[data-theme=light] .recipe-editor-token-hint .token-chip{background:rgba(0,0,0,.04)}.recipe-editor-empty-steps{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:20px;border:1px dashed var(--line);border-radius:10px;color:var(--ink-mute);font-size:13px;cursor:pointer;transition:border-color .15s,color .15s}.recipe-editor-empty-steps:hover{border-color:var(--crema);color:var(--crema)}.recipe-editor-empty-steps.is-below-suggestion{margin-top:8px}.recipe-editor-prep-suggestion{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;font-size:13px;color:var(--text-2);margin-top:8px;margin-bottom:8px}.recipe-editor-prep-suggestion-actions{display:flex;gap:8px}.import-parsed{display:flex;flex-direction:column;gap:6px;padding:16px 0 8px}.import-parsed-name{font-size:16px;font-weight:600;color:var(--text-1)}.import-parsed-meta{font-size:13px;color:var(--text-2)}.import-duplicate-warning{margin-top:10px;padding:8px 12px;border-radius:var(--radius);background:color-mix(in srgb,var(--warning) 12%,transparent);border:1px solid color-mix(in srgb,var(--warning) 35%,transparent);color:var(--warning);font-size:13px;line-height:1.4}.recipe-editor-section{margin-bottom:20px}.recipe-editor-section:first-of-type{margin-top:4px}.recipe-editor-section-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:0;background:none;border:none;cursor:pointer;margin-bottom:12px}.recipe-editor-details-summary{flex:1 1;font-size:12px;color:var(--ink-soft);text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recipe-editor-section-toggle .eyebrow{transition:color .12s ease}.recipe-editor-section-toggle svg{color:var(--ink-mute);flex-shrink:0;transition:color .12s ease}.recipe-editor-section-toggle:hover .eyebrow,.recipe-editor-section-toggle:hover svg{color:var(--ink-soft)}.recipe-editor-method-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.recipe-editor-method-row .field-label{margin-bottom:0;white-space:nowrap}.recipe-editor-method-row .recipe-method-pills{margin-top:0}.recipe-editor-danger-zone{padding-top:8px;border-top:1px solid rgba(197,76,58,.2)}.recipe-method-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.recipe-editor-steps-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.recipe-editor-water-check{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,transparent);font-size:12px;color:var(--accent);margin-bottom:10px}.recipe-editor-water-check svg{flex-shrink:0}.recipe-editor-water-check strong{font-weight:700}.is-water-flagged .input{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--bg-2))}.is-water-flagged .input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.recipe-editor-water-flag-icon{color:var(--accent);margin-right:3px;flex-shrink:0}.recipe-editor-step-footer-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}.recipe-editor-pour-rate{font-size:11px;color:var(--ink-mute);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.recipe-editor-steps{display:grid;grid-gap:8px;gap:8px}.editor-bottom-spacer{height:24px}.recipe-editor-step{background:var(--surface);border:1px solid var(--line-soft);border-radius:12px;padding:12px 14px;display:grid;grid-gap:10px;gap:10px;min-width:0;transition:border-color .15s,padding .15s}.recipe-editor-step.is-collapsed{padding:8px 12px}.recipe-editor-step.is-post,.recipe-editor-step.is-prep{background:rgba(214,168,107,.05);border-color:rgba(214,168,107,.25)}.recipe-editor-step-summary{display:flex;align-items:center;gap:6px;min-width:0}.recipe-editor-step-summary-main{display:flex;align-items:center;gap:8px;flex:1 1;min-width:0;text-align:left;background:none;border:none;padding:0;cursor:pointer}.recipe-editor-step-preview{font-size:13px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1;min-width:0}.recipe-editor-step-preview em{color:var(--ink-mute);font-style:normal}.recipe-editor-step-summary-right{display:flex;align-items:center;gap:3px;flex-shrink:0}.recipe-editor-step-dur{font-family:var(--font-serif);font-size:11px;color:var(--ink-mute);margin-right:4px;white-space:nowrap}.recipe-editor-step-chevron{display:grid;place-items:center;color:var(--ink-mute);padding:4px;margin-left:2px}.recipe-editor-postbrew-dot,.recipe-editor-prebrew-dot{width:6px;height:6px;border-radius:var(--radius-pill);flex-shrink:0}.recipe-editor-prebrew-dot{background:var(--crema)}.recipe-editor-postbrew-dot{background:var(--ink-mute)}.recipe-editor-step-body{padding-top:10px;border-top:1px solid var(--line-soft);margin-top:10px;display:grid;grid-gap:8px;gap:8px}.recipe-editor-step-timing{display:grid;grid-template-columns:1fr 1.5fr;grid-gap:8px;gap:8px}.step-kind-seg{display:flex;border:1px solid var(--line);border-radius:var(--radius-pill);overflow:hidden;width:-moz-fit-content;width:fit-content}.step-kind-btn{padding:5px 12px;font-size:11px;font-weight:600;background:none;border:none;border-right:1px solid var(--line);color:var(--ink-mute);cursor:pointer;transition:background .12s,color .12s}.step-kind-btn:last-child{border-right:none}.step-kind-btn:hover{color:var(--fg)}.step-kind-btn.is-active{background:var(--surface-2);color:var(--fg)}.recipe-editor-step-controls{display:none}.icon-btn-danger{color:#e08f7a}.icon-btn-danger:hover{background:rgba(197,76,58,.12);color:#e08f7a}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:8px;gap:8px}.import-tabs{display:flex;gap:4px;margin-bottom:18px;background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:4px}.import-tab{flex:1 1;padding:7px 12px;border-radius:7px;font-size:13px;font-weight:600;color:var(--ink-mute);transition:background .15s,color .15s;text-align:center}.import-tab.is-active{background:var(--surface-2);color:var(--ink)}.import-guide-intro{font-size:13px;color:var(--ink-soft);margin:0 0 16px;line-height:1.55}.import-guide-rules{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:16px}.import-guide-rules .eyebrow{margin-bottom:8px}.import-guide-rules .eyebrow:not(:first-child){margin-top:14px}.import-rule{font-size:12.5px;color:var(--ink-soft);padding:3px 0;line-height:1.6}.import-required{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--crema);font-weight:600;margin-left:4px}.import-methods{display:inline-flex;flex-wrap:wrap;gap:4px}.import-methods code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font-size:11px}.import-example-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.import-example-json{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;padding:14px;font-size:11.5px;color:var(--ink-soft);overflow-x:auto;line-height:1.6;white-space:pre;margin:0 0 18px}.import-textarea{font-family:monospace;font-size:12px;line-height:1.6;resize:vertical}.import-error{margin-top:8px;padding:10px 12px;background:rgba(197,76,58,.1);border:1px solid rgba(197,76,58,.3);border-radius:8px;font-size:12.5px;color:#e08f7a;line-height:1.5}code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font-size:12px;font-family:monospace}.brew-screen{position:fixed;inset:0;z-index:var(--z-brew-screen);background:var(--bg);display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom,16px);overscroll-behavior:none}.brew-topbar{display:flex;align-items:center;gap:8px;padding:10px 16px 6px;flex-shrink:0}.brew-recipe-name{font-family:var(--font-serif);font-size:15px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brew-step-counter{font-size:12px;color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase}.brew-timer-wrap{display:flex;flex-direction:column;align-items:flex-end}.brew-elapsed{font-family:var(--font-serif);font-size:17px;color:var(--crema-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.brew-elapsed-label{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-top:1px;text-align:right}.brew-params{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 8px;padding:3px 16px 5px;border-bottom:1px solid var(--line-soft);flex-shrink:0}.brew-param{display:flex;align-items:baseline;gap:3px;white-space:nowrap}.brew-param-val{font-family:var(--font-serif);font-size:13px;font-weight:600;color:var(--ink)}.brew-param-lbl{font-size:10px;color:var(--ink-mute);letter-spacing:.05em}.brew-params-sep{color:var(--line);font-size:12px;flex-shrink:0}.brew-prep-zone{padding:0 24px 24px;max-width:680px;width:100%;margin:0 auto}.brew-prep-content,.brew-prep-zone{flex:1 1;display:flex;flex-direction:column}.brew-prep-content{justify-content:center;gap:16px}.brew-prep-eyebrow{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--crema)}.brew-prep-footer{display:flex;flex-direction:column;gap:12px;padding-bottom:env(safe-area-inset-bottom,0)}.brew-prep-dots{display:flex;gap:8px;justify-content:center}.brew-prep-dot{width:6px;height:6px;border-radius:var(--radius-pill);background:var(--line);transition:background .2s ease}.brew-prep-dot.is-active{background:var(--crema)}.brew-prep-actions{display:flex;gap:10px}.brew-prep-actions .ghost-btn{flex:0 0 auto}.brew-prep-actions .cta{flex:1 1}.brew-prep-secondary{display:flex;gap:12px;align-items:center;justify-content:center}.brew-prep-secondary-sep{color:var(--ink-mute);font-size:12px;opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.brew-skip-all{background:none;border:none;color:var(--ink-soft);font-size:12px;padding:6px 0 0;cursor:pointer;text-align:center}.brew-skip-all:hover{color:var(--ink)}.brew-skip-all.is-dim{font-size:11px;color:rgba(224,143,122,.65)}.brew-skip-all.is-dim:hover{color:#e08f7a}@media (min-width:641px){.brew-prep-zone{padding:0 80px 40px;max-width:1100px;justify-content:center;gap:32px}.brew-prep-content{flex:0 0 auto}}.brew-main{flex:1 1;display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:80px;gap:80px;padding:0 80px;max-width:1100px;width:100%;margin:0 auto;min-height:0}.brew-main-left{display:flex;flex-direction:column;gap:16px;min-width:0}.brew-main-eyebrow{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);animation:fadeIn .3s ease}.brew-main-eyebrow.is-idle{color:var(--crema);animation:idlePulse 2s ease-in-out infinite}.brew-action{font-family:var(--font-serif);font-size:clamp(24px,3vw,40px);font-weight:600;color:var(--ink);line-height:1.2}.brew-main-water{display:flex;align-items:baseline;gap:10px}.brew-main-water-amount{font-family:var(--font-serif);font-size:36px;font-weight:700;color:var(--crema);line-height:1}.brew-main-water-label{font-size:11px;color:var(--ink-mute);letter-spacing:.15em;text-transform:uppercase}.brew-next-hint{font-size:13px;color:var(--ink-mute);line-height:1.5;min-height:40px;padding-top:8px;border-top:1px solid var(--line-soft)}.brew-next-hint strong{color:var(--ink-soft)}.brew-main-ring{position:relative;width:240px;height:240px;flex-shrink:0;padding:0;cursor:pointer;border-radius:var(--radius-pill);transition:transform .12s ease}.brew-main-ring:active{transform:scale(.97)}.brew-main-ring-icon{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.brew-main-ring-elapsed{font-family:var(--font-serif);font-size:15px;color:var(--ink-mute);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.brew-main-ring-countdown{font-family:var(--font-serif);font-size:52px;line-height:1;color:var(--crema);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.brew-main-ring-countdown.is-urgent{color:var(--crema-2);animation:countdownPulse 1s ease-in-out infinite}.brew-main-ring-countdown-unit{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);margin-top:2px}.brew-ring-icon{display:flex;align-items:center;justify-content:center;pointer-events:none;transition:opacity .2s}.brew-ring-icon.is-brewing{opacity:.25}.brew-main-ring:hover .brew-ring-icon.is-brewing{opacity:.6}.brew-ring-icon.is-paused{opacity:1}.brew-timeline-wrap{padding:0 20px;flex-shrink:0;margin:6px 0 16px}.brew-timeline{display:flex;gap:4px;border-radius:var(--radius-pill);overflow:visible}.brew-seg,.brew-timeline{height:12px;position:relative}.brew-seg{border-radius:3px;background:var(--line);overflow:hidden;cursor:pointer;flex-shrink:0;transition:background .2s ease}.brew-seg.is-done{background:var(--crema);overflow:visible}.brew-seg.is-current{background:var(--line);overflow:hidden}.brew-seg.is-current:after{content:"";position:absolute;inset:0;background:var(--crema);transform-origin:left center;transform:scaleX(var(--seg-progress,0));transition:transform .1s linear}.brew-seg-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:11.5px;width:max-content;max-width:200px;white-space:normal;z-index:var(--z-brew-overlay);color:var(--ink);box-shadow:var(--shadow);pointer-events:none;line-height:1.4}.brew-seg-tooltip-time{font-family:var(--font-serif);color:var(--crema);font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.brew-seg.is-jumpable{cursor:pointer}.brew-seg.is-jumpable:hover{opacity:.75}.brew-timeline-hint{text-align:center;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);margin-top:8px;opacity:.7}.brew-resume-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;color:var(--ink-mute);background:var(--surface-2);border:1px solid var(--line-soft);border-radius:12px;padding:12px 16px;margin:8px 24px 0}.brew-resume-restart{font-size:11px;color:var(--crema);background:none;border:none;cursor:pointer;padding:0;white-space:nowrap;text-decoration:underline;text-underline-offset:2px}.brew-controls{display:flex;align-items:center;justify-content:space-between;padding:4px 24px 16px;flex-shrink:0}.brew-reset-wrap{position:relative;display:flex;align-items:center;justify-content:center}.brew-reset-hint{position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);white-space:nowrap;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);opacity:.55;pointer-events:none}@media (max-width:640px){.brew-controls{padding-bottom:20px}}@media (min-width:641px){.brew-topbar{padding-left:80px;padding-right:80px;box-sizing:border-box}.brew-controls,.brew-topbar{max-width:1100px;width:100%;margin-left:auto;margin-right:auto}.brew-controls{padding:4px 80px 16px}.brew-timeline-wrap{padding:0 80px;max-width:1100px;width:100%;margin-left:auto;margin-right:auto;box-sizing:border-box}.brew-resume-banner{margin:8px auto 0;max-width:calc(1100px - 160px)}}.brew-guided-right{width:100%;display:flex;flex-direction:column;align-items:center}.brew-ls-controls{display:none}.brew-classic-body,.brew-pt-controls{display:contents}@media (orientation:landscape) and (max-height:540px){.brew-topbar{padding:4px 16px;max-width:none;margin:0}.brew-params{display:none}.brew-timeline-wrap{padding:5px 12px;max-width:none;margin:0}.brew-screen{--ls-size:min(38vw,calc(100svh - 156px))}.brew-arc-zone{flex-direction:row;align-items:center;justify-content:flex-start;padding:4px 16px;gap:16px;min-height:0}.brew-arc-dial{width:var(--ls-size);height:var(--ls-size);flex-shrink:0;justify-content:center}.brew-arc-svg,.brew-countdown-arc{width:100%;height:100%}.brew-countdown-num{font-size:clamp(32px,10svh,64px)}.brew-arc-hint{display:none}.brew-guided-right{flex:1 1;min-width:0;display:flex;flex-direction:column;justify-content:space-between;gap:8px}.brew-guided-right .brew-step-info{text-align:left;padding:0}.brew-ls-controls{display:flex;justify-content:flex-end;gap:10px}.brew-ls-controls .brew-controls{padding:0}.brew-pt-controls,.brew-reset-hint{display:none}.brew-classic-body{flex:1 1;min-height:0;display:flex;flex-direction:column}.brew-classic-body .brew-main{flex:1 1;min-height:0;padding:4px 16px;gap:24px;max-width:none;grid-template-columns:auto 1fr}.brew-classic-body .brew-main-left{order:2}.brew-classic-body .brew-main-ring{order:1;width:var(--ls-size);height:var(--ls-size)}.brew-classic-body .brew-main-ring svg{width:100%;height:100%}.brew-classic-body .brew-controls{padding:4px 16px 8px;max-width:none;margin:0;justify-content:flex-end;gap:10px}.brew-screen .brew-step-sheet{top:0;left:auto;right:0;bottom:0;width:55%;min-width:0;max-width:none;max-height:none;border-radius:0;border-top-left-radius:20px;border-bottom-left-radius:20px;animation-name:slideInRight;transform:none}.brew-screen .brew-step-sheet .modal-grip{display:none}.brew-screen .brew-sheet-head{padding:8px 16px 0}.brew-screen .brew-sheet-head-title{font-size:16px;margin-bottom:6px}.brew-screen .brew-sheet-progress{padding-bottom:8px}.brew-screen .brew-sheet-steps{padding:0 16px}.brew-screen .brew-sheet-step{min-height:44px;padding:8px 6px}.brew-screen .brew-sheet-step .recipe-step-action{font-size:14px}.brew-screen .brew-sheet-step.is-current{padding:10px}.brew-screen .brew-sheet-step.is-current .recipe-step-action{font-size:16px}.brew-screen .brew-sheet-step.is-current .brew-sheet-step-countdown{font-size:20px}.brew-screen .brew-sheet-step.is-current .recipe-step-water{font-size:18px}.brew-screen .brew-sheet-divider{padding:6px 0 4px;margin-top:6px}.brew-screen .brew-sheet-cta{padding:10px 16px max(10px,env(safe-area-inset-bottom))}}@media (orientation:landscape) and (max-height:500px){.brew-done{flex-direction:row;align-items:center;justify-content:center;gap:24px;padding:8px 40px}.brew-done-left{flex-direction:column;align-items:center;flex:1 0}.brew-done-left,.brew-done-right{display:flex;justify-content:center}.brew-done-right{flex-direction:column;align-items:stretch;gap:12px;min-width:0;width:min(300px,48vw)}.brew-done-mark{font-size:52px}.brew-done-steam{height:52px;gap:4px}.brew-steam-wisp:first-child{width:7px;height:32px}.brew-steam-wisp:nth-child(2){width:10px;height:42px}.brew-steam-wisp:nth-child(3){width:7px;height:28px}.brew-done-title{font-size:26px;margin:0}.brew-done-value{font-size:32px}.brew-done-actions,.brew-done-post{margin-top:0;width:100%}.brew-done-actions{grid-template-columns:1fr 1fr}}.brew-steps-btn{width:60px;height:60px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);color:var(--ink-mute);display:grid;place-items:center;transition:color .15s,border-color .15s}.brew-steps-btn.is-active,.brew-steps-btn:hover{color:var(--crema);border-color:var(--crema)}.brew-steps-btn.is-active{background:rgba(214,168,107,.08)}.brew-start-btn{width:76px;height:76px;border-radius:var(--radius-pill);background:var(--crema);color:var(--espresso);display:grid;place-items:center;box-shadow:0 8px 28px rgba(214,168,107,.35);transition:transform .12s ease,box-shadow .12s ease}.brew-start-btn:active{transform:scale(.94);box-shadow:0 4px 14px rgba(214,168,107,.2)}.brew-start-btn.is-paused{background:var(--surface-2);color:var(--crema);border:2px solid var(--crema);box-shadow:none}.brew-reset-btn{width:60px;height:60px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);color:var(--ink-mute);display:grid;place-items:center;position:relative;overflow:hidden;transition:color .2s,border-color .2s;touch-action:none}.brew-reset-btn:hover{color:var(--ink-soft);border-color:var(--line)}.brew-reset-btn.is-holding{color:var(--danger);border-color:var(--danger)}.brew-reset-btn.is-holding:before{content:"";position:absolute;inset:3px;border-radius:var(--radius-pill);background:var(--danger);opacity:0;animation:holdPulse .6s ease forwards}@keyframes holdPulse{0%{opacity:0;transform:scale(.4)}60%{opacity:.18;transform:scale(.9)}to{opacity:.28;transform:scale(1)}}.brew-back-wrap{position:relative;display:inline-flex}.brew-back-badge{position:absolute;top:-4px;right:-6px;font-size:8px;letter-spacing:.06em;background:var(--crema);color:var(--espresso);padding:1px 5px;border-radius:var(--radius-pill);pointer-events:none;white-space:nowrap}.brew-arc-hint,.brew-back-badge{font-weight:700;text-transform:uppercase}.brew-arc-hint{font-size:10px;letter-spacing:.25em;color:var(--crema);text-align:center;margin-bottom:10px;visibility:hidden}.brew-arc-hint.is-paused{visibility:visible}.brew-arc-hint.is-idle{visibility:visible;animation:idlePulse 2s ease-in-out infinite}.brew-countdown-arc[data-brewing=true] .brew-arc-track{animation:arcPulse 2.5s ease-in-out infinite}@keyframes arcPulse{0%,to{opacity:.35}50%{opacity:.65}}.brew-done-left,.brew-done-right{display:flex;flex-direction:column;align-items:center;gap:8px}.brew-done-right{width:100%;max-width:320px}.brew-done{flex:1 1;justify-content:center;gap:20px;padding:32px 24px;text-align:center}.brew-done,.brew-done-mug-wrap{display:flex;flex-direction:column;align-items:center}.brew-done-steam{display:flex;align-items:flex-end;justify-content:center;gap:4px;height:62px;margin-bottom:-8px}.brew-steam-wisp{display:block;border-radius:50%;background:linear-gradient(0deg,rgba(214,168,107,.55),rgba(214,168,107,.1),transparent);filter:blur(5px);animation:steamRise 3.68s ease-in-out infinite;opacity:0}.brew-steam-wisp:first-child{width:8px;height:40px;animation-delay:0s}.brew-steam-wisp:nth-child(2){width:13px;height:54px;animation-delay:1.22s}.brew-steam-wisp:nth-child(3){width:8px;height:36px;animation-delay:2.46s}@keyframes steamRise{0%{opacity:0;transform:translateY(8px) translateX(-5px)}25%{opacity:.7;transform:translateY(2px) translateX(4px)}62%{opacity:.42;transform:translateY(-22px) translateX(-4px)}to{opacity:0;transform:translateY(-50px) translateX(5px)}}@media (prefers-reduced-motion:reduce){.brew-steam-wisp{animation:none;opacity:.4}}.brew-done-mark{font-size:76px;filter:drop-shadow(0 0 28px rgba(214,168,107,.5))}.brew-done-time{display:flex;flex-direction:column;align-items:center;gap:2px}.brew-done-value{font-family:var(--font-serif);font-size:36px;font-weight:700;color:var(--crema);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.brew-done-label{font-size:11px;color:var(--ink-mute);letter-spacing:.1em;text-transform:uppercase}@keyframes stepFlash{0%,to{border-color:var(--line-soft);box-shadow:none}40%{border-color:var(--crema);box-shadow:0 0 0 3px rgba(214,168,107,.18)}}.brew-main-left.flash,.brew-main-ring.flash{animation:stepFlash .6s ease forwards}.brew-topbar-center{flex:1 1;min-width:0;text-align:center}.brew-topbar-end{display:flex;align-items:center;gap:8px}.brew-done-title{font-family:var(--font-serif);font-size:28px;font-weight:600;margin:0 0 4px}.brew-done-post{width:100%;padding:14px 16px;background:var(--surface);border-radius:12px;text-align:left}.brew-done-post-label{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--crema);margin-bottom:8px}.brew-done-post-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.brew-done-post-item{font-size:14px;color:var(--fg);line-height:1.4;padding-left:12px;position:relative}.brew-done-post-item:before{content:"·";position:absolute;left:0;color:var(--crema)}.brew-done-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;width:100%}.brew-water-wrap{display:flex;align-items:center;gap:6px;background:rgba(214,168,107,.1);border:1px solid rgba(214,168,107,.18);border-radius:99px;padding:5px 14px}.brew-water-amount{font-family:var(--font-serif);font-size:18px;font-weight:700;color:var(--crema);line-height:1}.brew-water-unit{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute)}.brew-step-info.flash{animation:stepFlash .6s ease forwards}.brew-arc-zone{flex:1 1;justify-content:flex-start;padding:clamp(12px,3dvh,32px) 20px 0;min-height:0;overflow:hidden}.brew-arc-dial,.brew-arc-zone{display:flex;flex-direction:column;align-items:center}.brew-countdown-arc{position:relative;width:300px;height:300px;flex-shrink:0;padding:0;cursor:pointer}.brew-arc-content,.brew-arc-svg{position:absolute;inset:0}.brew-arc-content{display:flex;flex-direction:column;align-items:center;justify-content:center}.brew-countdown-num{font-family:var(--font-sans);font-size:clamp(64px,18vw,92px);font-weight:700;color:var(--crema);line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:center}.brew-countdown-num.is-urgent{color:var(--crema-2);animation:countdownPulse 1s ease-in-out infinite}@keyframes countdownPulse{0%,to{opacity:1}50%{opacity:.65}}.brew-countdown-unit{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute);text-align:center;margin-top:4px}.brew-step-info{text-align:center;padding:16px 20px 8px;max-width:400px;width:100%;display:flex;flex-direction:column;align-items:center;gap:10px}.brew-step-info .brew-action{font-size:clamp(20px,5vw,26px)}.brew-next-label{font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);line-height:1.5;overflow:hidden;text-overflow:ellipsis;max-width:100%}@keyframes idlePulse{0%,to{opacity:.6}50%{opacity:1}}.brew-bottom-bar{gap:40px;padding:12px 24px max(12px,env(safe-area-inset-bottom))}.brew-bottom-bar,.brew-play-btn{display:flex;align-items:center;justify-content:center;flex-shrink:0}.brew-play-btn{width:72px;height:72px;border-radius:50%;background:var(--crema);color:var(--espresso);border:none;cursor:pointer;box-shadow:0 8px 28px rgba(214,168,107,.35);transition:transform 90ms ease,box-shadow 90ms ease}.brew-play-btn:active{transform:scale(.93)}.brew-play-btn.is-idle{animation:startGlow 2s ease-in-out infinite}@keyframes startGlow{0%,to{box-shadow:0 8px 28px rgba(214,168,107,.35),0 0 0 0 rgba(214,168,107,.2)}50%{box-shadow:0 8px 28px rgba(214,168,107,.35),0 0 0 12px rgba(214,168,107,.08)}}.brew-step-sheet{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,var(--surface-2),var(--surface));border-top-left-radius:24px;border-top-right-radius:24px;padding:8px 0 0;max-height:78vh;overflow-y:auto;z-index:var(--z-brew-overlay);animation:slideUp var(--duration-enter) var(--ease-enter);box-shadow:var(--shadow);scrollbar-width:none;-ms-overflow-style:none}.brew-step-sheet::-webkit-scrollbar{display:none}@media (min-width:641px){.brew-step-sheet{width:100%;min-width:500px;max-width:680px;left:50%;right:auto;transform:translateX(-50%);animation-name:slideUpCenter}}.brew-sheet-head{padding:4px 20px 0}.brew-sheet-head-title{font-family:var(--font-serif);font-size:20px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:10px}.brew-sheet-head-of{font-size:14px;color:var(--ink-mute);font-weight:400}.brew-sheet-head-paused{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--crema);background:rgba(214,168,107,.12);padding:3px 8px;border-radius:99px}.brew-sheet-jump-hint{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);text-align:right;padding:5px 0 0;opacity:.7}.brew-sheet-progress{display:flex;gap:4px;padding-bottom:14px}.brew-sheet-progress-seg{height:3px;flex:1 1;background:var(--line);border-radius:99px;transition:background .3s}.brew-sheet-progress-seg.is-done{background:var(--crema);opacity:.65}.brew-sheet-progress-seg.is-current{background:var(--crema)}.brew-sheet-steps{padding:0 20px}.brew-sheet-group-body{border-left:2px solid var(--line-soft);margin-left:11px;padding-left:12px}.brew-sheet-step{display:grid;grid-template-columns:26px 1fr auto;grid-gap:10px;gap:10px;align-items:center;min-height:64px;padding:14px 8px;border-bottom:1px solid var(--line-soft);border-left:3px solid transparent;margin-left:-3px;border-radius:0}.brew-sheet-step .recipe-step-action{font-size:17px}.brew-sheet-step .recipe-step-num{width:22px;height:22px;font-size:11px}.brew-sheet-step:last-child{border-bottom:none}.brew-sheet-step.is-done{opacity:.4}.brew-sheet-step.is-done.is-jumpable{cursor:pointer}.brew-sheet-step.is-done.is-jumpable:active{opacity:.6;background:rgba(214,168,107,.06)}.brew-sheet-step.is-current{border-left-color:var(--crema);background:rgba(214,168,107,.1);border-radius:10px;border-bottom-color:transparent;padding:16px 12px;margin:4px 0 4px -3px;grid-template-columns:26px 1fr;grid-template-rows:auto auto;grid-template-areas:"num action" ". meta";align-items:start}.brew-sheet-step.is-current .recipe-step-num{grid-area:num;background:var(--crema);color:var(--bg);width:26px;height:26px;font-size:12px;margin-top:2px}.brew-sheet-step.is-current .recipe-step-action{grid-area:action;font-size:19px;font-weight:600;color:var(--crema)}.brew-sheet-step.is-current .brew-sheet-step-meta{grid-area:meta;flex-direction:row;align-items:baseline;justify-content:flex-start;gap:20px;padding-top:10px}.brew-sheet-step.is-current .brew-sheet-step-countdown{font-size:28px}.brew-sheet-step.is-current .brew-sheet-step-countdown-sub{font-size:11px;margin-left:2px}.brew-sheet-step.is-current .recipe-step-water{font-size:26px;font-weight:700}.brew-sheet-step.is-future{cursor:pointer;opacity:.45}.brew-sheet-step.is-future:active{opacity:.7;background:rgba(214,168,107,.06)}.brew-sheet-step.is-next{opacity:.8}.brew-sheet-step-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px}.brew-sheet-divider{padding:6px 0 0;border-top:1px solid var(--line-soft);margin-top:8px}.brew-sheet-show-more{display:flex;align-items:center;justify-content:center;width:100%;padding:12px 8px;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--crema);background:none;border:none;cursor:pointer;opacity:.65;border-bottom:1px solid var(--line-soft)}.brew-sheet-show-more:hover{opacity:1}.brew-sheet-step-dur{font-size:13px;color:var(--ink-mute)}.brew-sheet-step .recipe-step-water{font-size:15px}.brew-sheet-step-countdown{font-family:var(--font-serif);font-size:17px;font-weight:700;color:var(--crema)}.brew-sheet-step-countdown-sub{font-family:var(--font-sans);font-size:10px;font-weight:400;color:var(--ink-mute);letter-spacing:.04em}.brew-sheet-prep-summary{display:grid;grid-template-columns:26px 1fr auto;grid-gap:10px;gap:10px;align-items:center;min-height:52px;padding:12px 8px;border-bottom:1px solid var(--line-soft);border-left:3px solid transparent;margin-left:-3px;width:calc(100% + 3px);opacity:.5;cursor:pointer;background:none;border-top:none;border-right:none;text-align:left}.brew-sheet-prep-summary:active{opacity:.75}.brew-sheet-prep-text{font-size:15px;color:var(--ink-soft)}.brew-sheet-prep-expand{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--crema)}.brew-sheet-cta{position:-webkit-sticky;position:sticky;bottom:0;padding:16px 20px max(16px,env(safe-area-inset-bottom));background:linear-gradient(180deg,transparent,var(--surface) 30%);display:flex;gap:8px}.brew-sheet-cta .cta{display:flex;justify-content:center;flex:1 1}.brew-sheet-cta .ghost-btn{flex:1 1;width:auto}.auth-screen{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;z-index:2}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line-soft);border-radius:18px;padding:32px 28px;box-shadow:var(--shadow)}.auth-card h1{font-size:28px;margin-bottom:4px}.auth-card .eyebrow{margin-bottom:16px}.auth-card p.muted{font-size:13px;line-height:1.5;margin:0 0 20px}.auth-card .field:last-of-type{margin-bottom:20px}.auth-card .primary-btn{width:100%;justify-content:center;padding:12px 16px;font-size:14px}.auth-foot{margin-top:16px;text-align:center;font-size:13px;color:var(--ink-mute)}.auth-foot a{color:var(--crema);text-decoration:none}.auth-foot a:hover{text-decoration:underline}.auth-error{background:rgba(197,76,58,.1);border:1px solid rgba(197,76,58,.3);border-radius:8px;color:#e08f7a}.auth-error,.auth-info{margin-bottom:14px;padding:10px 12px;font-size:12.5px;line-height:1.4}.auth-info{background:rgba(214,168,107,.08);border:1px solid rgba(214,168,107,.25);border-radius:8px;color:var(--crema-2)}.release-notes-sheet{max-height:82vh}.release-notes-releases{display:grid;grid-gap:0;gap:0}.release-notes-section{padding-bottom:20px}.release-notes-section+.release-notes-section{padding-top:20px;border-top:1px solid var(--line-soft)}.release-notes-section-head{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.release-notes-version-row{display:flex;align-items:center;gap:8px}.release-notes-date{font-size:11px;color:var(--ink-mute)}.release-notes-version{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--crema);background:rgba(214,168,107,.12);border:1px solid rgba(214,168,107,.25);border-radius:var(--radius-pill);padding:2px 8px;flex-shrink:0}.release-notes-title{font-family:var(--font-serif);font-size:15px;font-weight:500;color:var(--ink)}.release-notes-section:nth-child(2) .release-notes-title{color:var(--ink-soft);font-weight:500}.release-notes-section:nth-child(2) .release-notes-version{opacity:.7}.release-notes-section:nth-child(2) .release-notes-item{font-size:12px;color:var(--ink-mute)}.release-notes-section:nth-child(n+3) .release-notes-title{color:var(--ink-mute);font-weight:500}.release-notes-section:nth-child(n+3) .release-notes-version{opacity:.45}.release-notes-section:nth-child(n+3) .release-notes-date{opacity:.6}.release-notes-section:nth-child(n+3) .release-notes-item{font-size:12px;color:var(--ink-mute);opacity:.75}.release-notes-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:0;gap:0}.release-notes-item{display:flex;align-items:flex-start;gap:12px;padding:7px 2px;border-bottom:1px solid var(--line-soft);font-size:13px;line-height:1.45;color:var(--ink-soft)}.release-notes-item:last-child{border-bottom:none}.release-notes-emoji{font-size:15px;flex-shrink:0;margin-top:1px}.release-notes-show-more{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:14px;font-size:13px;color:var(--ink-mute);background:none;border:none;border-top:1px solid var(--line-soft);cursor:pointer;transition:color .14s}.release-notes-show-more:hover{color:var(--ink)}.release-notes-footer{padding:16px 0 4px}.app-scroll:has(.smart-start-page){overflow:hidden}main.screen:has(.smart-start-page){flex:1 1;min-height:0;padding:0;display:flex;flex-direction:column}.smart-start-page{flex:1 1;min-height:0;display:flex;flex-direction:column}.smart-start-scroll{flex:1 1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 12px 12px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.smart-start-scroll::-webkit-scrollbar{width:4px}.smart-start-scroll::-webkit-scrollbar-track{background:transparent}.smart-start-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--radius-pill)}.smart-start-heading{font-family:var(--font-serif);font-size:22px;font-weight:700;color:var(--ink);margin:0 0 20px}.smart-start-section{margin-bottom:20px}.smart-start-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:8px}.coffee-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:8px;gap:8px;margin-bottom:10px}.coffee-chip{display:flex;flex-direction:column;align-items:flex-start;padding:10px 14px;background:var(--bg-2);border:1.5px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .15s,background .15s;text-align:left;min-height:48px}.coffee-chip.is-active{border-color:var(--crema);background:color-mix(in srgb,var(--crema) 8%,transparent)}.coffee-chip:active{opacity:.75}.coffee-chip-name{font-size:14px;font-weight:600;color:var(--ink);line-height:1.3}.coffee-chip-sub{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--ink-mute);margin-top:3px}.coffee-chip-recent{font-size:10px;font-weight:700;color:var(--crema);text-transform:uppercase;letter-spacing:.05em}.coffee-chip-sub-sep{color:var(--line)}.coffee-chip-more .coffee-chip-name{color:var(--ink-mute)}.method-pills{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));grid-gap:8px;gap:8px}.method-pill{min-height:48px;padding:0 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px;font-size:14px;font-weight:500;color:var(--ink-soft);white-space:nowrap;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.method-pill.is-active{border-color:var(--crema);color:var(--crema);background:color-mix(in srgb,var(--crema) 10%,transparent)}.method-pill:active{opacity:.75}.recommendation-card{margin-top:16px;margin-bottom:20px;padding:14px 16px;background:color-mix(in srgb,var(--crema) 5%,var(--bg-2));border:1px solid color-mix(in srgb,var(--crema) 22%,var(--line));border-radius:14px;animation:rec-card-in .2s ease both}.recommendation-card.is-empty{background:var(--bg-2);border:1px dashed var(--line)}@keyframes rec-card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.rec-header{display:flex;align-items:flex-start;justify-content:space-between}.rec-title-group{display:flex;flex-direction:column;gap:2px}.rec-label{font-size:12px;font-weight:600;color:var(--ink)}.rec-based-on{font-size:12px;color:var(--ink-mute)}.rec-rating{display:flex;align-items:center;gap:4px;font-size:16px;font-weight:700}.rec-rating,.rec-star{color:var(--crema)}.rec-grind-row{display:flex;align-items:center;justify-content:space-between;padding:9px 0;margin:10px 0 9px;border-top:1px solid color-mix(in srgb,var(--line) 55%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 55%,transparent)}.rec-grind-row.is-missing{padding:6px 0;margin:10px 0 8px}.rec-grind-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-mute)}.rec-grind-value{font-size:20px;font-weight:600;color:var(--ink);font-family:var(--font-serif)}.rec-grind-value.is-missing{font-size:12px;font-weight:400;font-style:italic;color:var(--ink-mute);font-family:inherit}.rec-params{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px}.rec-param{font-size:13px;font-weight:500;color:var(--ink)}.rec-arrow{font-size:11px;color:var(--ink-mute);font-weight:400;margin:0 1px}.rec-param-sub{font-size:12px;color:var(--ink-soft)}.rec-sep{font-size:12px;color:var(--ink-mute)}.rec-empty-text{font-size:14px;color:var(--ink-mute);margin:0;line-height:1.5}.smart-start-footer{display:flex;flex-direction:column;gap:8px;padding:12px 18px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--line-soft)}.smart-start-setup-hint{font-size:12px;color:var(--ink-mute);line-height:1.5;margin-top:8px}[data-theme=light] .coffee-chip.is-active{background:color-mix(in srgb,var(--crema) 6%,transparent)}[data-theme=light] .method-pill.is-active{background:transparent;color:var(--crema)}[data-theme=light] .dismissible-banner{box-shadow:0 4px 12px rgba(0,0,0,.1)}.dismissible-banner{position:fixed;left:12px;right:12px;z-index:calc(var(--z-modal) - 1);background:var(--surface-2);border:1px solid color-mix(in srgb,var(--crema) 30%,transparent);border-radius:12px;padding:12px 14px;display:flex;align-items:center;gap:12px;box-shadow:0 4px 20px rgba(0,0,0,.35)}.dismissible-banner-text{flex:1 1;display:flex;flex-direction:column;gap:2px;min-width:0}.dismissible-banner-text strong{font-size:13px;font-weight:600;color:var(--ink)}.dismissible-banner-text span{font-size:12px;color:var(--ink-soft)}.dismissible-banner-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.install-prompt{bottom:calc(var(--tabbar-h, 64px) + env(safe-area-inset-bottom, 0px))}.backup-prompt{bottom:calc(var(--tabbar-h, 64px) + env(safe-area-inset-bottom, 0px) + 68px)}.error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60dvh;gap:12px;padding:32px 24px;text-align:center}.error-boundary-cup{position:relative;width:64px;height:56px;display:flex;align-items:flex-end;justify-content:center}.error-boundary-cup-svg{width:64px;height:48px;overflow:visible}.error-boundary-steam{position:absolute;top:-2px;width:4px;height:16px;border-radius:var(--radius-pill);background:var(--ink-soft);opacity:0;animation:error-steam-rise 2.6s ease-in-out infinite}.error-boundary-steam:first-child{left:20px;animation-delay:0s}.error-boundary-steam:nth-child(2){left:30px;animation-delay:.6s}.error-boundary-steam:nth-child(3){left:40px;animation-delay:1.2s}@keyframes error-steam-rise{0%{transform:translateY(0) scaleY(.6);opacity:0}25%{opacity:.5}to{transform:translateY(-26px) scaleY(1.1);opacity:0}}@media (prefers-reduced-motion:reduce){.error-boundary-steam{animation:none;opacity:.3}}.error-boundary-title{font-family:var(--font-serif);font-size:22px;color:var(--ink)}.error-boundary-body{font-size:14px;color:var(--ink-soft);max-width:280px;line-height:1.5}.toast-stack{position:fixed;bottom:calc(64px + env(safe-area-inset-bottom, 0px) + 8px);left:50%;transform:translateX(-50%);z-index:calc(var(--z-modal) - 1);flex-direction:column;gap:8px;pointer-events:none}.toast,.toast-stack{display:flex;align-items:center}.toast{gap:12px;padding:10px 16px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-pill);box-shadow:var(--shadow);pointer-events:auto;white-space:nowrap;animation:toast-in .22s var(--ease-enter) both}@keyframes toast-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.toast-msg{font-size:13px;color:var(--ink-soft)}.toast-undo{font-size:13px;font-weight:600;color:var(--crema);background:none;border:none;cursor:pointer;padding:0}.toast-undo:hover{opacity:.8}[data-theme=light] .toast{background:var(--surface)}.toast-success{background:color-mix(in srgb,var(--crema) 20%,var(--surface-2));border-color:color-mix(in srgb,var(--crema) 55%,transparent);color:var(--crema)}.toast-success .toast-msg{color:var(--ink);font-weight:600}[data-theme=light] .toast-success{background:color-mix(in srgb,var(--crema) 14%,var(--surface))}@media (pointer:coarse){.info-btn{padding:5px;position:relative}.info-btn:after{content:"";position:absolute;inset:-8px}.icon-btn{width:44px;height:44px}.icon-btn-small{width:36px;height:36px}.chip{padding:6px 10px;font-size:12px}.slider::-webkit-slider-thumb{width:36px;height:28px}.slider::-moz-range-thumb{width:36px;height:28px}}.insights{padding-bottom:24px}.insights-stats.preview-stats{margin-bottom:18px}.insights-spotlight{display:flex;flex-direction:column;gap:2px;padding:9px 14px;margin-bottom:18px;background:color-mix(in srgb,var(--crema) 8%,transparent);border:1px solid color-mix(in srgb,var(--crema) 25%,transparent);border-radius:14px}[data-theme=light] .insights-spotlight{background:color-mix(in srgb,var(--crema) 10%,transparent);border-color:color-mix(in srgb,var(--crema) 30%,transparent)}.insights-spotlight-lbl{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mute)}.insights-spotlight-name{font-family:var(--font-serif);font-size:17px;font-weight:600;color:var(--crema);line-height:1.25}.insights-spotlight-sub{font-size:12px;color:var(--ink-soft)}.insights-filter{margin-bottom:14px}.insights-filter-row{display:flex;gap:10px}.insights-filter-row>*{flex:1 1;min-width:0}.insights-section-title{font-family:var(--font-serif);font-size:15px;font-weight:600;color:var(--ink);margin:0 0 10px}.insights-trend-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.insights-trend-head .insights-section-title{margin:0 0 10px}.insights-zoom{display:flex;gap:3px;padding:3px;background:var(--bg-2);border:1px solid var(--line);border-radius:9px;margin-bottom:10px}.insights-zoom-btn{padding:5px 10px;border-radius:6px;font-size:12px;font-weight:600;color:var(--ink-mute);transition:background .15s,color .15s;white-space:nowrap}.insights-zoom-btn.is-active{background:var(--surface-2);color:var(--ink)}.insights-trend-hint{margin:-6px 0 8px}.insights-breakeven,.insights-savings{padding:9px 14px;margin-bottom:10px;background:color-mix(in srgb,var(--crema) 8%,transparent);border:1px solid color-mix(in srgb,var(--crema) 25%,transparent);border-radius:14px;font-size:13px;color:var(--ink-soft)}.insights-breakeven p,.insights-savings p{margin:0}.insights-breakeven strong,.insights-savings strong{color:var(--crema);font-weight:600}[data-theme=light] .insights-breakeven,[data-theme=light] .insights-savings{background:color-mix(in srgb,var(--crema) 10%,transparent);border-color:color-mix(in srgb,var(--crema) 30%,transparent)}.insights-cost-prompt{font-size:13px;color:var(--ink-mute);margin:0 0 10px}.insights-cost-prompt a{color:var(--crema);text-decoration:underline}.insights-cost-stats{margin-bottom:10px}.insights-cost-leaderboard{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.insights-cost-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13px}.insights-cost-row-lbl{color:var(--ink-mute);flex-shrink:0}.insights-cost-row-val{color:var(--ink-soft);text-align:right}.insights-chart-wrap{position:relative}.insights-chart{display:block;overflow:visible}.insights-chart.is-clickable{cursor:pointer}.insights-chart-grid{stroke:var(--line-soft);stroke-width:1}.insights-chart-axis{fill:var(--ink-mute);font-size:9px;font-family:var(--font-sans)}.insights-chart-line{fill:none;stroke:var(--crema);stroke-width:2}.insights-chart-dot{fill:var(--crema-2);stroke:var(--bg);stroke-width:1}.insights-chart-dot.is-hovered{fill:var(--crema);stroke:var(--crema-2);stroke-width:2}.insights-chart-crosshair{stroke:var(--line);stroke-width:1;stroke-dasharray:3 3;pointer-events:none}.insights-chart-tooltip{margin-top:8px;padding:6px 10px;background:var(--surface);border:1px solid var(--line);border-radius:10px;font-size:12px;color:var(--ink-soft);display:inline-block}.insights-chart-tooltip.is-empty{visibility:hidden}.insights-chart-tooltip strong{color:var(--crema)}.insights-chart-tooltip-notes{margin-top:4px;color:var(--ink-mute);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insights-chart-tooltip-hint{margin-top:4px;color:var(--crema);font-size:11px}.landing{position:relative;z-index:2;min-height:100dvh;padding:64px 24px 48px;overflow-y:auto}.landing,.landing-hero{display:flex;flex-direction:column;align-items:center}.landing-hero{width:100%;max-width:420px;text-align:center}.landing-mark{font-size:40px;color:var(--crema);margin-bottom:12px;text-shadow:0 0 24px color-mix(in srgb,var(--crema) 45%,transparent)}.landing-hero .eyebrow{margin-bottom:6px}.landing-title{font-family:var(--font-serif);font-size:40px;font-weight:700;letter-spacing:.1em;margin:0 0 14px}.landing-tagline{color:var(--ink-soft);font-size:15px;line-height:1.6;margin:0 0 28px}.landing-cta{display:flex;gap:10px;width:100%}.landing-cta .ghost-btn,.landing-cta .primary-btn{flex:1 1}.landing-features{width:100%;max-width:720px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:20px;gap:20px;margin-top:64px}.landing-feature{background:var(--surface);border:1px solid var(--line-soft);border-radius:16px;padding:20px}@media (max-width:480px){.landing{padding:28px 20px 20px}.landing-mark{font-size:32px;margin-bottom:6px}.landing-title{font-size:32px;margin-bottom:8px}.landing-tagline{margin-bottom:16px}.landing-features{margin-top:24px;gap:10px}.landing-feature{padding:12px 14px}.landing-feature h2{font-size:14px;margin-bottom:4px}.landing-feature p{font-size:12.5px;line-height:1.45}}.landing-feature h2{font-family:var(--font-serif);font-size:16px;font-weight:600;margin:0 0 8px}.landing-feature p{color:var(--ink-soft);font-size:13px;line-height:1.55;margin:0}@media (max-width:640px){.landing-features{grid-template-columns:1fr}}[data-theme=light] .landing-feature{border-color:var(--line);box-shadow:0 2px 14px rgba(90,50,25,.07),0 1px 3px rgba(90,50,25,.04)}.donate-card{display:flex;flex-direction:column;gap:12px}.donate-blurb{font-size:13px;line-height:1.5;color:var(--ink-soft);margin:0}.donate-amounts{display:flex;gap:8px;flex-wrap:wrap}.donate-chip{padding:7px 16px;border-radius:var(--radius-pill);border:1px solid var(--line);background:transparent;color:var(--ink-soft);font-size:13px;font-weight:600}.donate-chip:hover{border-color:var(--crema);color:var(--crema)}.donate-chip.is-active{background:var(--crema);border-color:var(--crema);color:var(--espresso)}.donate-btn{margin-top:2px}[data-theme=light] .donate-chip.is-active{color:var(--bg)}