:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--black:#121212;--yellow:#ffc62b;--yellow-strong:#f0b400;--yellow-soft:#fff4cc;--red:#d62828;--red-strong:#b3161b;--red-soft:#fde8e8;--bg:#fbf8ef;--surface:#fff;--surface-sunken:#f6f2e6;--border:#e8e2cf;--text:#141414;--text-muted:#5c574a;--on-black:#f3efe3;--on-black-muted:#a8a292;--series-ale:#d62828;--series-lager:#c99700;--stage-brewed-bg:#f1efe8;--stage-brewed-fg:#3d3a33;--stage-brewed-accent:#8a857a;--stage-fermenting-bg:#fde8e8;--stage-fermenting-fg:#a3161a;--stage-fermenting-accent:#d62828;--stage-lagering-bg:#fff4cc;--stage-lagering-fg:#6b4f00;--stage-lagering-accent:#e0a800;--stage-bottled-bg:#121212;--stage-bottled-fg:#ffc62b;--stage-bottled-accent:#121212;--primary:var(--yellow);--primary-hover:var(--yellow-strong);--primary-press:#d9a200;--primary-soft:var(--yellow-soft);--on-primary:var(--black);--danger:var(--red);--danger-strong:var(--red-strong);--danger-soft:var(--red-soft);--success:#1e6b34;--success-soft:#e4f3e8;--warning:#9a4a00;--warning-soft:#fff0d9;--border-strong:#8f887a;--focus-ring:var(--black);--shadow-raised:0 4px 12px #0000001f;--shadow-overlay:0 8px 24px #00000029;--duration-instant:.1s;--duration-quick:.15s;--control-sm:2rem;--control-md:2.5rem;--control-touch:2.75rem;color:var(--text);background-color:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--yellow-soft:#ffc62b24;--red:#e5484d;--red-strong:#ff6b6b;--red-soft:#e5484d29;--bg:#0f0f0f;--surface:#1a1a19;--surface-sunken:#141413;--border:#2e2c27;--text:#f3efe3;--text-muted:#a8a292;--series-ale:#c62828;--series-lager:#bb8a00;--stage-brewed-bg:#ffffff14;--stage-brewed-fg:#d6d2c4;--stage-brewed-accent:#6f6a5f;--stage-fermenting-bg:#e5484d2e;--stage-fermenting-fg:#ff9a9a;--stage-fermenting-accent:#e5484d;--stage-lagering-bg:#ffc62b29;--stage-lagering-fg:#ffd666;--stage-lagering-accent:#ffc62b;--stage-bottled-bg:#000;--stage-bottled-fg:#ffc62b;--stage-bottled-accent:#ffc62b;--success:#6fd08a;--success-soft:#6fd08a24;--warning:#ffb54d;--warning-soft:#ffb54d24;--border-strong:#6f6a5f;--focus-ring:var(--yellow)}}body{margin:0}main{max-width:1040px;margin:0 auto;padding:2rem 1.5rem 4rem}h2{letter-spacing:-.01em;margin:.25rem 0 1rem;font-size:1.6rem}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}a{color:inherit;-webkit-text-decoration-color:var(--primary-hover);text-decoration-color:var(--primary-hover);text-underline-offset:3px;text-decoration-thickness:2px}a:hover{color:var(--danger);-webkit-text-decoration-color:var(--danger);text-decoration-color:var(--danger)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.app-header :focus-visible,.hero:focus-visible{outline-color:var(--yellow)}.page-status{color:var(--text-muted)}.empty-state{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin:0 0 2rem;display:flex}.empty-state p{margin:0}.app-header{background:var(--black);color:var(--on-black);border-bottom:4px solid var(--yellow);box-shadow:inset 0 -7px 0 -4px var(--red)}.app-header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;max-width:1040px;margin:0 auto;padding:1rem 1.5rem;display:flex}.brand{color:inherit;align-items:center;gap:.75rem;text-decoration:none;display:flex}.brand:hover{color:inherit}.brand>span{flex-direction:column;line-height:1.15;display:flex}.brand-mark{width:40px;height:40px}.brand-mark .glass,.brand-mark .handle{fill:none;stroke:var(--on-black);stroke-width:1.6px;stroke-linejoin:round}.brand-mark .beer{fill:var(--yellow)}.brand-mark .foam{fill:var(--on-black)}.brand-name{color:var(--yellow);letter-spacing:-.02em;font-size:1.5rem;font-weight:800}.brand-tagline{color:var(--on-black-muted);font-size:.8rem}.tabs{background:#ffffff0f;border-radius:999px;gap:.25rem;padding:.25rem;display:flex}.tabs a{color:var(--on-black);border-radius:999px;padding:.4rem 1rem;font-weight:500;text-decoration:none}.tabs a:hover{color:var(--yellow)}.tabs a.active{background:var(--yellow);color:var(--black);font-weight:700}.unit-toggle{background:#ffffff0f;border-radius:999px;padding:.2rem;display:flex}.unit-toggle button{color:var(--on-black-muted);background:0 0;border:none;border-radius:999px;padding:.25rem .65rem;font-size:.875rem;font-weight:600}.unit-toggle button:hover:not(:disabled),.unit-toggle button:active:not(:disabled){color:var(--yellow);background:0 0}.unit-toggle button.active,.unit-toggle button.active:hover:not(:disabled),.unit-toggle button.active:active:not(:disabled){background:var(--on-black);color:var(--black)}@media (pointer:coarse){.tabs a,.unit-toggle button,.profile-link{min-height:var(--control-touch);align-items:center;display:inline-flex}}.profile-avatar{background:var(--yellow);width:1.8rem;height:1.8rem;color:var(--black);border-radius:50%;flex:none;place-items:center;font-size:.875rem;font-weight:700;display:inline-grid}.profile-link{color:var(--on-black);background:#ffffff0f;border-radius:999px;align-items:center;gap:.5rem;padding:.2rem .8rem .2rem .2rem;font-weight:500;text-decoration:none;display:flex}.profile-link:hover,.profile-link.active{color:var(--yellow)}.account-menu>.profile-link:hover:not(:disabled),.account-menu>.profile-link:active:not(:disabled){background:#ffffff1a}.auth-screen{max-width:26rem;margin:3rem auto;padding:0 1.5rem}.auth-screen h1{margin-bottom:.25rem}.auth-switch{text-align:center}.account-loading{text-align:center;margin-top:3rem}.recipe-form.danger-zone{border-top-color:var(--danger)}button{font:inherit;border:1px solid var(--border-strong);background:var(--surface);color:inherit;cursor:pointer;transition:background-color var(--duration-instant) ease-out, border-color var(--duration-instant) ease-out, color var(--duration-instant) ease-out;border-radius:8px;padding:.45rem 1rem;font-weight:500}button:hover:not(:disabled){border-color:var(--text)}button:active:not(:disabled){background:var(--surface-sunken)}button.primary,button[type=submit]{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:700}button.primary:hover:not(:disabled),button[type=submit]:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}button.primary:active:not(:disabled),button[type=submit]:active:not(:disabled){background:var(--primary-press);border-color:var(--primary-press)}button:disabled{opacity:.5;cursor:default}button.danger{color:var(--danger);border-color:var(--danger);background:var(--surface)}button.danger:hover:not(:disabled){background:var(--danger);border-color:var(--danger);color:var(--on-danger)}button.link,button.link:hover:not(:disabled),button.link:active:not(:disabled){text-decoration:underline;-webkit-text-decoration-color:var(--primary-hover);text-decoration-color:var(--primary-hover);text-underline-offset:3px;background:0 0;border:none;padding:0;text-decoration-thickness:2px}button.link.danger{color:var(--danger);-webkit-text-decoration-color:var(--danger);text-decoration-color:var(--danger)}button.link.danger:hover:not(:disabled){color:var(--danger-strong)}a.button-primary{min-height:var(--control-md);box-sizing:border-box;background:var(--primary);color:var(--on-primary);transition:background-color var(--duration-instant) ease-out;border-radius:8px;align-items:center;padding:.5rem 1rem;font-weight:700;text-decoration:none;display:inline-flex}a.button-primary:hover{background:var(--primary-hover);color:var(--on-primary)}a.button-primary:active{background:var(--primary-press)}.section-header{justify-content:space-between;align-items:center;gap:1rem;margin:.25rem 0 1rem;display:flex}.section-header h2{margin:0}.section-header .actions{gap:.5rem;display:flex}.breadcrumb{color:var(--text-muted);margin-bottom:0;font-size:.875rem}.muted{color:var(--text-muted);font-size:.875rem}[role=alert]{color:var(--danger-strong);background:var(--danger-soft);border-left:4px solid var(--danger);border-radius:6px;padding:.5rem .75rem .5rem 2.25rem;position:relative}[role=alert]:before{content:"";background:currentColor;width:1rem;height:1rem;position:absolute;top:.75em;left:.75rem;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5M12 16.5h.01'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5M12 16.5h.01'/%3E%3C/svg%3E") 50%/contain no-repeat}svg.icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none}.success-message{color:var(--success);align-items:center;gap:.25rem;font-size:.875rem;display:inline-flex}.notice-warning{color:var(--warning);background:var(--warning-soft);border-left:4px solid var(--warning);border-radius:6px;align-items:baseline;gap:.5rem;padding:.5rem .75rem;display:flex}.notice-warning svg.icon{align-self:center}table{border-collapse:separate;border-spacing:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;margin-top:1rem;overflow:hidden}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:.625rem .875rem}th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}@media (width<=720px){table.scroll-x{white-space:nowrap;display:block;overflow-x:auto}}tbody tr:last-child td{border-bottom:none}th{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--surface-sunken);border-bottom:2px solid var(--primary);font-size:.8rem;font-weight:700}.clickable-rows tbody tr{cursor:pointer}.clickable-rows tbody tr:hover{background:var(--primary-soft)}.clickable-rows td:first-child a{font-weight:600}.actions-col{white-space:nowrap;text-align:right;cursor:default}.actions-col>*+*{margin-left:.75rem}table.numeric td:nth-child(n+2),table.numeric th:nth-child(n+2),.chart-table td:nth-child(n+2),.chart-table th:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}table.numeric.numeric-from-4 td:nth-child(-n+3),table.numeric.numeric-from-4 th:nth-child(-n+3){text-align:left}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:.375rem;padding:.125rem .625rem;font-size:.8rem;font-weight:600;display:inline-flex}.badge .dot{background:var(--series);border-radius:50%;width:8px;height:8px}.type-ale{background:var(--danger-soft);color:var(--danger-strong)}.type-lager{background:var(--primary-soft);color:var(--stage-lagering-fg)}.badge.stage-brewed{background:var(--stage-brewed-bg);color:var(--stage-brewed-fg)}.badge.stage-fermenting{background:var(--stage-fermenting-bg);color:var(--stage-fermenting-fg)}.badge.stage-lagering{background:var(--stage-lagering-bg);color:var(--stage-lagering-fg)}.badge.stage-bottled{background:var(--stage-bottled-bg);color:var(--stage-bottled-fg);box-shadow:inset 0 0 0 1px var(--stage-bottled-accent)}.recipe-form{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--primary);border-radius:10px;margin:1rem 0 1.5rem;padding:1.25rem 1.5rem}.recipe-form h3{margin-top:0}.recipe-form .grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem 1rem;display:grid}.recipe-form .grid>.wide{grid-column:span 2}.recipe-form label,.tool-card label{flex-direction:column;gap:.25rem;margin-bottom:.75rem;font-size:.875rem;font-weight:500;display:flex}.recipe-form input,.recipe-form textarea,.recipe-form select,.tool-card input,.tool-card select{font:inherit;border:1px solid var(--border-strong);background:var(--surface-sunken);color:var(--text);border-radius:8px;padding:.5rem .625rem;font-size:1rem;font-weight:400}.recipe-form input:focus,.recipe-form textarea:focus,.recipe-form select:focus,.tool-card input:focus,.tool-card select:focus{border-color:var(--primary-hover);box-shadow:0 0 0 3px var(--primary-soft)}.recipe-form input:focus:not(:focus-visible),.recipe-form textarea:focus:not(:focus-visible),.recipe-form select:focus:not(:focus-visible),.tool-card input:focus:not(:focus-visible),.tool-card select:focus:not(:focus-visible){outline:none}.recipe-form [aria-invalid=true]{border-color:var(--danger)}.recipe-form [aria-invalid=true]:focus{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.input-with-unit{align-items:center;gap:.5rem;display:flex}.input-with-unit input{flex:1;min-width:0}.input-unit{color:var(--text-muted);white-space:nowrap;font-weight:500}.recipe-form fieldset{border:1px solid var(--border);border-radius:8px;margin:0 0 1rem;padding:.5rem 1rem 0}.recipe-form legend{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:0 .35rem;font-size:.8rem;font-weight:700}.recipe-form .actions{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.recipe-form .actions .apart{margin-left:auto}.details{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-top:1rem;padding:1.25rem 1.5rem}.details h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:2px solid var(--primary);margin:1.5rem 0 .5rem;padding-bottom:.375rem;font-size:.8rem;display:inline-block}.details dl{grid-template-columns:max-content 1fr;align-items:center;gap:.45rem 1.5rem;margin:0;display:grid}.details dt{color:var(--text-muted)}.details dd{margin:0}.details dl.muted{border-top:1px solid var(--border);margin-top:2rem;padding-top:1rem}.details .notes{white-space:pre-wrap;max-width:65ch;margin:0}.danger-zone{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--danger);border-radius:10px;margin:2rem 0 0;padding:1.25rem 1.5rem}.danger-zone h3{margin:0 0 .25rem;font-size:1rem}.danger-zone p{max-width:65ch;margin:0 0 1rem}.dashboard h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);align-items:center;gap:.5rem;margin:2rem 0 .75rem;font-size:.8rem;display:flex}.dashboard h3:before{content:"";background:var(--danger);border-radius:2px;width:14px;height:4px}.hero{color:var(--on-black);background:linear-gradient(115deg, var(--black) 0 72%, var(--red) 72% 77%, var(--black) 77% 79%, var(--yellow) 79% 86%, var(--black) 86%);border:1px solid var(--border);border-radius:14px;flex-direction:column;margin-bottom:1.25rem;padding:1.5rem 1.75rem;display:flex}.hero .stat-label,.hero .stat-detail{color:var(--on-black-muted);opacity:1}.hero-value{color:var(--yellow);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:3.25rem;font-weight:800;line-height:1.1}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;display:grid}.stat-tile{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--primary);border-radius:10px;flex-direction:column;gap:.25rem;padding:.75rem 1rem;display:flex}.stat-label{color:var(--text-muted);font-size:.8rem;font-weight:600}.stat-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700;line-height:1.1}.stat-value small,.hero-value small{letter-spacing:0;font-size:.55em;font-weight:600}.stat-value small{color:var(--text-muted)}.hero-value small{color:var(--on-black-muted)}.stat-detail{color:var(--text-muted);font-size:.8rem}.pipeline .stat-tile{border-top:1px solid var(--border);border-left:5px solid var(--tone-accent);background:var(--tone-bg)}.pipeline .stat-tile .stat-value{color:var(--tone-fg)}.stat-tile.stage-brewed{--tone-bg:var(--stage-brewed-bg);--tone-fg:var(--stage-brewed-fg);--tone-accent:var(--stage-brewed-accent)}.stat-tile.stage-fermenting{--tone-bg:var(--stage-fermenting-bg);--tone-fg:var(--stage-fermenting-fg);--tone-accent:var(--stage-fermenting-accent)}.stat-tile.stage-lagering{--tone-bg:var(--stage-lagering-bg);--tone-fg:var(--stage-lagering-fg);--tone-accent:var(--stage-lagering-accent)}.stat-tile.stage-bottled{--tone-bg:var(--stage-bottled-bg);--tone-fg:var(--stage-bottled-fg);--tone-accent:var(--primary)}.stat-tile.stage-bottled .stat-label,.stat-tile.stage-bottled .stat-detail{color:var(--on-black-muted)}a.stat-link{transition:transform var(--duration-instant) ease-out, box-shadow var(--duration-instant) ease-out;text-decoration:none}a.stat-tile.stat-link{color:inherit}a.hero.stat-link{color:var(--on-black)}a.stat-link:hover{box-shadow:var(--shadow-raised);transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){a.stat-link:hover{transform:none}}a.stat-link .stat-value,a.stat-link .hero-value{text-underline-offset:4px;-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:2px}a.stat-link:hover .stat-value,a.stat-link:hover .hero-value{text-decoration-color:currentColor}.list-filters{align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.list-filters label.inline-field{color:var(--text-muted);align-items:center;gap:.375rem;font-size:.875rem;display:flex}.list-filters select{font:inherit;min-height:var(--control-sm);border:1px solid var(--border-strong);background:var(--surface-sunken);color:var(--text);border-radius:8px;padding:0 .5rem}@media (pointer:coarse){.list-filters select{min-height:var(--control-touch)}}.list-filters select:focus{border-color:var(--primary-hover);box-shadow:0 0 0 3px var(--primary-soft)}.series-ale{--series:var(--series-ale)}.series-lager{--series:var(--series-lager)}.chart{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin:0;padding:1rem 1.25rem .75rem}.chart-plot{position:relative}.chart svg{width:100%;height:auto;display:block}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-axis{fill:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.6875rem}.chart-bar{fill:var(--series)}.chart-col.hovered .chart-bar{opacity:.8}.swatch{background:var(--series);vertical-align:baseline;border-radius:2px;width:10px;height:10px;margin-right:.4rem;display:inline-block}.chart-legend{gap:1rem;margin:0 0 .5rem;padding:0;font-size:.875rem;list-style:none;display:flex}.chart-tooltip{font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;background:var(--black);color:var(--on-black);border:1px solid color-mix(in srgb, var(--on-black) 18%, transparent);box-shadow:var(--shadow-overlay);border-radius:8px;flex-direction:column;padding:.5rem .75rem;font-size:.875rem;display:flex;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.chart-tooltip strong{color:var(--yellow)}.tooltip-row{align-items:center;display:flex}.chart-table summary{cursor:pointer;color:var(--text-muted);margin-top:.5rem;font-size:.875rem}.combobox{flex-direction:column;display:flex;position:relative}.combobox-list{z-index:10;background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--primary);width:max(100%,460px);max-width:calc(100vw - 2rem);max-height:320px;box-shadow:var(--shadow-overlay);border-radius:10px;margin:0;padding:.25rem;list-style:none;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto}.combobox-list.stale li{opacity:.55}.combobox-list li{cursor:pointer;border-radius:6px;flex-direction:column;padding:.5rem .75rem;display:flex}.combobox-list li.active{background:var(--primary-soft)}.combobox-heading{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.5rem .75rem .25rem;font-size:.72rem;font-weight:700}.combobox-title{font-weight:600}.combobox-tag{vertical-align:.1em;white-space:nowrap;color:var(--stage-lagering-fg);background:var(--primary-soft);border-radius:999px;margin-left:.5rem;padding:.0625rem .5rem;font-size:.72rem;font-weight:600}.combobox-meta{color:var(--text-muted);font-size:.8rem;font-weight:400}.ingredient-sections{flex-direction:column;gap:.75rem;margin-bottom:1rem;display:flex}.add-section{border:1px dashed var(--border-strong);color:var(--text-muted);background:0 0;align-self:flex-start;font-weight:600}.add-section:hover:not(:disabled){border-color:var(--primary-hover);color:var(--text);background:var(--primary-soft)}.recipe-form fieldset.ingredients{margin:0;padding-bottom:.75rem}.ingredient-panel{box-sizing:border-box;border:1px solid var(--border);background:var(--surface);border-radius:8px;align-self:stretch;width:100%;min-width:0}.ingredient-panel>summary{cursor:pointer;text-transform:uppercase;letter-spacing:.05em;padding:.875rem 1rem;font-size:.8rem;font-weight:700}.ingredient-panel>summary:hover{background:var(--primary-soft);border-radius:8px}.ingredient-panel-count{color:var(--text-muted);font-weight:400}.ingredient-panel-content{padding:.25rem 1rem .75rem}.ingredient-row{align-items:center;gap:.5rem;margin-bottom:.5rem;display:grid}.ingredient-row.grain{grid-template-columns:minmax(0,1fr) 6.5rem 3.5rem 4.5rem}.ingredient-row.hop{grid-template-columns:minmax(0,1fr) 5rem 5rem 6.5rem 7rem 2.5rem 4.5rem}.ingredient-row.header{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.25rem;font-size:.72rem;font-weight:700}.ingredient-row .hop-use{color:var(--text-muted);font-size:.875rem}.ingredient-row input:disabled{opacity:.5}.ingredient-row>button{justify-self:end}.ingredient-share{font-variant-numeric:tabular-nums;color:var(--text-muted);text-align:right}.ingredient-footer{justify-content:space-between;align-items:center;margin-top:.5rem;display:flex}.ingredient-table{margin-top:.25rem}.ingredient-table tfoot td{border-top:2px solid var(--border);border-bottom:none;font-weight:700}@media (width<=720px){.ingredient-row.grain,.ingredient-row.hop{grid-template-columns:repeat(3,minmax(0,1fr))}.ingredient-row>:first-child{grid-column:1/-1}.ingredient-row.header{display:none}}abbr.style-code{text-underline-offset:3px;cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.grain-footer-right{align-items:center;gap:1rem;display:flex}.recipe-form label.inline-field{color:var(--text-muted);flex-direction:row;align-items:center;gap:.375rem;margin:0;font-size:.875rem}.recipe-form label.inline-field input{width:7.5rem;min-height:var(--control-sm);padding:.25rem .5rem}.grain-estimate{background:var(--primary-soft);border-left:3px solid var(--primary);font-variant-numeric:tabular-nums;border-radius:8px;margin-top:.75rem;padding:.75rem 1rem}.grain-estimate-values{flex-wrap:wrap;gap:.25rem 1.5rem;display:flex}.grain-estimate-values button.link{margin-left:.5rem;font-size:.875rem}.grain-estimate-note{margin:.25rem 0 0;font-size:.8rem}.beer-swatch{vertical-align:-.1em;border-radius:50%;width:.9em;height:.9em;margin-right:.35rem;display:inline-block;box-shadow:0 0 0 1px #7f7f7f80}.efficiency-select{align-items:center;gap:.5rem;display:inline-flex}.recipe-form label.inline-field select{min-height:var(--control-sm);padding:.25rem .5rem}.recipe-form .efficiency-select label.inline-field input{width:5.5rem}.temperature-source{margin:0 0 .75rem;font-size:.8rem}.style-card{background:var(--primary-soft);border-left:3px solid var(--primary);border-radius:8px;margin:-.25rem 0 1rem;padding:.75rem 1rem}.style-card-header{flex-wrap:wrap;align-items:baseline;gap:.25rem .6rem;display:flex}.style-card-header .muted{font-size:.875rem}.style-card-impression{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:65ch;margin:.25rem 0 .5rem;font-size:.875rem;display:-webkit-box;overflow:hidden}.style-figures{grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:.5rem 1rem;display:grid}.style-figure{flex-direction:column;display:flex}.style-figure-label{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:.72rem;font-weight:700}.style-figure-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.style-figure-note{color:var(--text-muted);font-size:.8rem}.beer-swatch.range{border-radius:999px;width:1.6em}.style-card-note,.style-card-examples{margin:.5rem 0 0;font-size:.875rem}.style-card-examples .style-figure-label{margin-right:.35rem}.steps{counter-reset:step;gap:.25rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.steps li{flex:1;min-width:0}.steps button{border:none;border-bottom:3px solid var(--border);width:100%;color:var(--text-muted);text-align:left;background:0 0;border-radius:0;align-items:center;gap:.5rem;padding:.45rem .6rem;font-weight:600;display:flex}.steps button:disabled{opacity:1;cursor:default}.steps li.reachable button{color:var(--text);border-bottom-color:var(--primary-hover)}.steps li.reachable button:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary-hover)}.steps li.current button{color:var(--text);border-bottom-color:var(--danger)}.step-number{background:var(--surface-sunken);border:1px solid var(--border);border-radius:50%;flex:none;justify-content:center;align-items:center;width:1.6rem;height:1.6rem;font-size:.8rem;display:inline-flex}.steps li.reachable .step-number{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.steps li.current .step-number{background:var(--black);border-color:var(--black);color:var(--yellow)}.step-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.step-intro{flex-wrap:wrap;align-items:baseline;gap:.25rem .6rem;margin-bottom:.9rem;display:flex}.step-actions{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;margin-top:1.25rem;padding-top:1rem;display:flex}.step-actions .actions{align-items:center}@media (width<=720px){.step-title{display:none}.steps button{justify-content:center}}.step-actions .skip{order:-1}.step-actions button[type=submit]:not(.primary){background:var(--surface);border-color:var(--border-strong);color:inherit;font-weight:500}.step-actions button[type=submit]:not(.primary):hover:not(:disabled){background:var(--surface);border-color:var(--text)}.step-actions button[type=submit]:not(.primary):active:not(:disabled){background:var(--surface-sunken);border-color:var(--text)}.recipe-form .field-hint,.tool-card .field-hint{color:var(--text-muted);font-size:.8rem;font-weight:400}.recipe-form .field-hint.error{color:var(--danger-strong)}.recipe-form .field-hint .suggested{color:var(--text);font-weight:600}.water-section{margin-bottom:1rem}.water-method{flex-wrap:wrap;align-items:center;gap:.4rem 1rem;display:flex}.water-plan{margin-top:.6rem}.water-plan .water-volumes{grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));gap:.75rem;margin:0 0 .75rem;display:grid}.water-volume{border:1px solid var(--border);border-top:3px solid var(--border);background:var(--surface);border-radius:8px;min-width:0;padding:1rem 1.125rem}.water-volume-total{border-top-color:var(--primary);background:var(--primary-soft)}.water-volumes dt{color:var(--text-muted);font-size:.8rem;font-weight:600}.water-volumes dd{margin:0}.water-volumes .water-volume-amount{font-variant-numeric:tabular-nums;margin:.25rem 0;font-size:1.75rem;font-weight:700;line-height:1.2}.water-volume-amount span{color:var(--text-muted);font-size:1rem;font-weight:400}.water-volume-hint{color:var(--text-muted);font-size:.8rem}@media (width<=720px){.water-plan .water-volumes{grid-template-columns:repeat(2,minmax(0,1fr))}.water-volume-total{grid-column:1/-1}}.water-assumptions{margin-top:.6rem}.water-assumptions summary{cursor:pointer;color:var(--text-muted);margin-bottom:.5rem;font-size:.875rem}.equipment-intro{max-width:60ch;margin-top:0}.equipment-water{border:1px solid var(--border);border-radius:8px;margin:0 0 1rem;padding:.5rem 1rem}.equipment-water[open]{padding-bottom:0}.equipment-water summary{cursor:pointer;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:.8rem;font-weight:700}.equipment-water summary .muted{font-size:inherit;text-transform:none;letter-spacing:normal;font-weight:400}.equipment-water[open] summary{margin-bottom:.75rem}.equipment-nav{flex-wrap:wrap;gap:.5rem 1.25rem;margin-bottom:1.5rem;font-size:.875rem;display:flex}.equipment-stage{margin-bottom:2rem;scroll-margin-top:1rem}.equipment-stage>h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:2px solid var(--primary);padding-bottom:.375rem;font-size:.8rem}.equipment-kind{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;padding:1.25rem 1.5rem;scroll-margin-top:1rem}.equipment-kind .section-header{align-items:flex-start;margin:0 0 .5rem}.equipment-kind h4{margin:0}.equipment-kind .section-header p{max-width:65ch;margin:.25rem 0 0}.equipment-empty{margin:.25rem 0 0}.equipment-list{margin:0;padding:0;list-style:none}.equipment-list>li{border-top:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:1rem;padding:.75rem 0;display:flex}.equipment-list>li:has(>form){display:block}.recipe-form.equipment-item-form{background:0 0;border:none;margin:0;padding:.5rem 0 .25rem}.title-block h2{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.title-block h2 .badge{font-size:.8rem}.title-block h2{margin-bottom:.2rem}.title-sub{margin:0}.batch-view{flex-direction:column;gap:1rem;display:flex}.batch-view .stat-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.25rem 1.5rem}.panel h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0 0 1rem;font-size:.8rem}.panel h4{margin:1rem 0 .25rem;font-size:1rem}.panel-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1rem;display:grid}.panel .panel-grid{gap:1.5rem}.panel-list{grid-template-columns:max-content 1fr;gap:.5rem 1.25rem;margin:0;display:grid}.panel-list dt{color:var(--text-muted)}.panel-list dd{margin:0;font-weight:500}.panel table{background:0 0;border:none;border-radius:0;margin:0}.panel th,.panel td{padding:.5rem}.panel thead th{border-bottom:1px solid var(--border);background:0 0}.compare-table tbody th{font-size:inherit;text-transform:none;letter-spacing:0;color:var(--text-muted);border-bottom:1px solid var(--border);background:0 0;font-weight:500}.compare-table tbody tr:last-child th{border-bottom:none}.compare-table td,.panel td.num{font-variant-numeric:tabular-nums;white-space:nowrap}.compare-table td:not(:last-child),.compare-table thead th:not(:first-child,:last-child){text-align:right}.panel td.muted{white-space:nowrap}.batch-meta{margin:0;font-size:.8rem}.batch-table tr.stage-brewed{--tone-bg:var(--stage-brewed-bg);--tone-accent:var(--stage-brewed-accent)}.batch-table tr.stage-fermenting{--tone-bg:var(--stage-fermenting-bg);--tone-accent:var(--stage-fermenting-accent);--tone-on-accent:#fff}.batch-table tr.stage-lagering{--tone-bg:var(--stage-lagering-bg);--tone-accent:var(--stage-lagering-accent);--tone-active:var(--series-lager);--tone-on-accent:var(--black)}@media (prefers-color-scheme:dark){.batch-table tr.stage-fermenting{--tone-on-accent:var(--black)}}.batch-table tr.stage-bottled{--tone-bg:var(--primary-soft);--tone-accent:var(--primary)}.batch-table tr.expanded td,.batch-table tr.batch-details-row td{background:var(--tone-bg)}.batch-table tr.expanded td:first-child,.batch-table tr.batch-details-row td{box-shadow:inset 5px 0 0 var(--tone-accent)}.batch-table tr.expanded .badge:not(.stage-bottled){background:var(--surface)}.batch-table tr.expanded td{border-bottom:none}.batch-table tr.batch-details-row td{white-space:normal;padding-top:0;padding-bottom:.875rem}.batch-table tbody tr.expanded:hover td,.batch-table tbody tr.expanded:hover+tr.batch-details-row td,.batch-table tbody tr.batch-details-row:hover td{background:color-mix(in srgb, var(--tone-accent) 22%, var(--surface))}.batch-table tbody tr.expanded:has(+tr.batch-details-row:hover) td{background:color-mix(in srgb, var(--tone-accent) 22%, var(--surface))}.batch-table tr.batch-gap td{background:var(--bg);border-top:1px solid var(--border);border-bottom:1px solid var(--border);height:.625rem;padding:0}.clickable-rows tbody tr.batch-gap{cursor:default}.clickable-rows tbody tr.batch-gap:hover{background:0 0}.batch-row-details{box-sizing:border-box;background:var(--surface);border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(20rem,30rem) 9rem;align-items:center;gap:.75rem 1.5rem;padding:.75rem 1rem;display:grid;box-shadow:0 1px 2px #0000000f}.batch-row-details .batch-progress-stage{background:var(--surface-sunken)}.batch-row-details .batch-progress-stage.active{border-top-color:var(--tone-active,var(--tone-accent));background:var(--tone-active,var(--tone-accent));color:var(--tone-on-accent,var(--text))}.batch-row-details .batch-progress-stage.active .batch-progress-when{opacity:.85}.batch-progress-top{justify-content:space-between;align-items:center;gap:.25rem;min-width:0;display:flex}.batch-progress-now{background:var(--tone-on-accent,var(--text));color:var(--tone-active,var(--tone-accent));letter-spacing:.05em;text-transform:uppercase;border-radius:999px;flex:none;padding:0 .375rem;font-size:.65rem;font-weight:800;line-height:1.5}@media (width<=720px){.batch-row-details{grid-template-columns:minmax(0,1fr);max-width:calc(100vw - 3.75rem);position:sticky;left:.875rem}.batch-row-details .batch-key-figure{grid-column:auto;justify-self:start;align-items:flex-start}}.batch-facts{flex-wrap:wrap;gap:.5rem 1.5rem;margin:0;display:flex}.batch-fact dt{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:.72rem;font-weight:700}.batch-fact dd{margin:0;font-size:.875rem}.batch-fact-value{font-variant-numeric:tabular-nums;font-weight:600}.batch-progress{grid-auto-columns:minmax(4.5rem,1fr);grid-auto-flow:column;gap:2px;margin:0;padding:0;list-style:none;display:grid}.batch-progress-stage{border-top:3px solid var(--border);background:var(--surface-sunken);min-width:0;color:var(--text-muted);flex-direction:column;padding:.375rem .5rem;display:flex}.batch-progress-stage:first-child{border-radius:0 0 0 6px}.batch-progress-stage:last-child{border-radius:0 0 6px}.batch-progress-stage.done{border-top-color:var(--primary);color:var(--text)}.batch-progress-stage.active{border-top-color:var(--danger);background:var(--danger-soft);color:var(--text)}.batch-progress-stage.next{border-top-style:dashed;border-top-color:var(--danger)}.batch-progress-label,.batch-progress-when{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.batch-progress-label{font-size:.8rem;font-weight:700}.batch-progress-when{font-variant-numeric:tabular-nums;font-size:.72rem}.batch-key-figure{flex-direction:column;grid-column:3;justify-self:end;align-items:flex-end;display:flex}.batch-key-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700;line-height:1.1}.batch-key-value small{color:var(--text-muted);font-size:.55em;font-weight:600}.batch-key-detail{color:var(--text-muted);font-size:.8rem}.batch-progress-stage.has-action{background:0 0;border-top:none;margin-left:.375rem;padding:0}.batch-progress-action,.batch-progress-action:hover:not(:disabled),.batch-progress-action:active:not(:disabled){width:100%;height:100%;min-height:var(--control-md);border:1px solid var(--primary-press);background:var(--primary);color:var(--on-primary);text-align:left;box-shadow:0 2px 0 var(--primary-press), 0 3px 8px #0000002e;transition:transform var(--duration-instant) ease-out, box-shadow var(--duration-instant) ease-out, background-color var(--duration-instant) ease-out;border-radius:8px;flex-direction:column;justify-content:center;gap:.125rem;padding:.375rem .625rem;display:flex}.batch-progress-action:hover:not(:disabled){background:var(--primary-hover);box-shadow:0 3px 0 var(--primary-press), 0 6px 14px #00000038;transform:translateY(-1px)}.batch-progress-action:active:not(:disabled){background:var(--primary-press);box-shadow:0 1px 0 var(--primary-press);transform:translateY(1px)}.batch-progress-action-next{letter-spacing:.05em;text-transform:uppercase;opacity:.8;font-size:.65rem;font-weight:700}.batch-progress-action-label{white-space:nowrap;justify-content:space-between;align-items:center;gap:.375rem;font-size:.875rem;font-weight:800;display:inline-flex}.batch-progress-action-arrow{background:var(--black);width:1.25rem;height:1.25rem;color:var(--yellow);border-radius:50%;flex:none;place-items:center;display:inline-grid}.batch-progress-action-arrow svg.icon{stroke-width:2.5px;width:.75rem;height:.75rem;transition:transform var(--duration-instant) ease-out}.batch-progress-action:hover:not(:disabled) .batch-progress-action-arrow svg.icon{transform:translate(1px)}@media (prefers-reduced-motion:reduce){.batch-progress-action,.batch-progress-action:hover:not(:disabled),.batch-progress-action:active:not(:disabled),.batch-progress-action:hover:not(:disabled) .batch-progress-action-arrow svg.icon{transform:none}}.batch-row-details .batch-progress{display:flex}.batch-row-details .batch-progress-stage{flex:1 1 0;min-width:4rem}.batch-row-details .batch-progress-stage.has-action{flex:2 1 0;min-width:8.5rem}@media (pointer:coarse){.batch-progress-action{min-height:var(--control-touch)}}@media (width<=720px){.batch-row-details .batch-progress{flex-wrap:wrap}.batch-row-details .batch-progress-stage.has-action{flex-basis:100%;margin:.375rem 0 0}.batch-row-details .batch-progress-stage.has-action .batch-progress-action{flex-direction:row;justify-content:space-between;align-items:center}}.batch-timeline{grid-auto-columns:1fr;grid-auto-flow:column;margin:0;padding:0;list-style:none;display:grid}.timeline-stage{text-align:center;flex-direction:column;align-items:center;gap:.15rem;padding:0 .5rem;display:flex;position:relative}.timeline-stage:not(:last-child):after{content:"";background:var(--border);border-radius:2px;height:3px;position:absolute;top:.55rem;left:calc(50% + .9rem);right:calc(.9rem - 50%)}.timeline-stage.done:not(:last-child):after{background:var(--primary-hover)}.timeline-dot{border:3px solid var(--border);background:var(--surface);border-radius:50%;width:1.15rem;height:1.15rem;margin-bottom:.35rem}.timeline-stage.done .timeline-dot{background:var(--primary);border-color:var(--primary-hover)}.timeline-stage.active .timeline-dot{background:var(--danger);border-color:var(--danger);box-shadow:0 0 0 4px var(--danger-soft)}.timeline-stage.next .timeline-dot{border-color:var(--danger);border-style:dashed}.timeline-label{font-weight:700}.timeline-status{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-size:.72rem;font-weight:700}.timeline-stage.active .timeline-status,.timeline-stage.next .timeline-status{color:var(--danger-strong)}.timeline-when,.timeline-detail{font-variant-numeric:tabular-nums;font-size:.875rem}.timeline-detail{color:var(--text-muted)}.timeline-stage.pending{opacity:.6}@media (width<=720px){.batch-timeline{grid-auto-flow:row;gap:1rem}.timeline-stage{text-align:left;grid-template-columns:1.5rem 1fr;align-items:baseline;column-gap:.75rem;padding:0;display:grid}.timeline-stage>:not(.timeline-dot){grid-column:2}.timeline-dot{grid-row:1/span 4}.timeline-stage:not(:last-child):after{width:3px;height:auto;inset:1.4rem auto -1rem .5rem}.panel-grid{grid-template-columns:1fr}}.panel-note{text-transform:none;letter-spacing:0;color:var(--text-muted);margin-left:.375rem;font-weight:500}.panel-table{width:100%}.panel-table thead th{font-size:.72rem}.panel-table th.num,.panel-table td.num{text-align:right}.panel-table tbody td{border-bottom:1px solid var(--border)}.panel-table tbody tr:last-child td{border-bottom:none}.panel-table tfoot td{border-top:2px solid var(--border);font-variant-numeric:tabular-nums;border-bottom:none;font-weight:700}.panel-footnote{margin:.5rem 0 0;font-size:.875rem}.panel .style-card{margin:0}.timeline-action{margin-top:.25rem;font-size:.875rem;font-weight:700}.water-adjust{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-top:.6rem;display:flex}.recipe-form .water-adjust label.inline-field input{width:6.5rem}.water-adjust-link{margin-top:.5rem;font-size:.875rem}.water-outcome,.water-adjust button.link{font-size:.875rem}.system-picker{max-width:34rem;margin-bottom:.5rem}.system-facts{margin:-.4rem 0 .75rem}.integration-card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--primary);border-radius:10px;margin-bottom:1rem;padding:1.25rem 1.5rem}.integration-card .section-header{align-items:flex-start;margin:0 0 .5rem}.integration-card h3{margin:0}.integration-card .section-header p{margin:.25rem 0 0}.integration-card h4{margin:1rem 0 .25rem}.integration-steps{max-width:65ch;margin:0 0 1rem;padding-left:1.25rem;font-size:.875rem}.integration-device-meta{text-align:right;font-size:.875rem}.device-widgets{margin-bottom:1.5rem}.device-widgets .section-header{margin-bottom:.5rem}.device-widgets .section-header h3{margin:0}.device-widgets .actions{align-items:center}.device-sync{width:var(--control-md);height:var(--control-md);place-items:center;padding:0;display:inline-grid}.device-sync svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.device-sync.syncing svg{animation:.9s linear infinite device-sync-spin}@keyframes device-sync-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.device-sync.syncing svg{animation:none}}.device-widgets-hint{margin:0 0 1.25rem}.device-widgets-add{position:relative}.device-widgets-menu{z-index:5;background:var(--surface);border:1px solid var(--border);min-width:15rem;box-shadow:var(--shadow-overlay);border-radius:10px;margin:.25rem 0 0;padding:.25rem;list-style:none;position:absolute;right:0}.device-widgets-menu button{text-align:left;background:0 0;border:none;border-radius:6px;flex-direction:column;align-items:flex-start;gap:.125rem;width:100%;padding:.5rem .75rem;display:flex}.device-widgets-menu button:hover,.device-widgets-menu button:focus-visible{background:var(--primary-soft)}.device-grid{grid-template-columns:minmax(0,1fr);gap:1rem;display:grid}.device-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.device-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media (width<=720px){.device-grid.cols-2,.device-grid.cols-3{grid-template-columns:minmax(0,1fr)}}.device-card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--primary);border-radius:10px;flex-direction:column;gap:.35rem;padding:1rem 1rem .5rem;display:flex}.device-card.stale{border-top-color:var(--border)}.device-card.stale .device-values,.device-card.stale .sparkline{opacity:.55}.device-card header{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.device-title{flex-wrap:wrap;align-items:baseline;gap:.15rem .5rem;min-width:0;display:flex}.device-header-actions{color:var(--text-muted);flex:none;align-items:center;gap:.25rem;font-size:.875rem;display:flex}.device-remove,.device-move{width:var(--control-sm);height:var(--control-sm);color:var(--text-muted);cursor:pointer;transition:background-color var(--duration-instant) ease-out, color var(--duration-instant) ease-out;background:0 0;border:none;border-radius:6px;place-items:center;padding:0;display:inline-grid}@media (pointer:coarse){.device-remove,.device-move{width:var(--control-touch);height:var(--control-touch)}}.device-move:hover:not(:disabled),.device-move:focus-visible{background:var(--primary-soft);color:var(--text)}.device-remove:hover,.device-remove:focus-visible{background:var(--danger-soft);color:var(--danger-strong)}.device-remove svg,.device-move svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.device-card h4{margin:0;font-size:1rem;line-height:1.35}.device-provider{letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);font-size:.72rem;font-weight:700}.device-values{align-items:baseline;gap:1rem;display:flex}.device-session{flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:0;font-size:.875rem;display:flex}.device-session-name{font-weight:600}.device-values-source{margin:-.2rem 0 0;font-size:.8rem}.device-battery{color:var(--text-muted);margin-left:auto;font-size:.875rem}.device-value{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700;line-height:1.1}.device-value small{color:var(--text-muted);font-size:.55em;font-weight:600}.device-value.secondary{color:var(--text-muted);font-size:1rem;font-weight:600}.device-meta{margin:0}.device-days select{font:inherit;color:var(--text);min-height:var(--control-sm);border:1px solid var(--border-strong);background:var(--surface-sunken);border-radius:6px;padding:0 .375rem}.device-days select:focus-visible{border-color:var(--primary-hover);box-shadow:0 0 0 3px var(--primary-soft)}.battery-level{white-space:nowrap;align-items:center;gap:.25rem;display:inline-flex}.battery-level svg{flex:none}.battery-level .battery-body{fill:none;stroke:currentColor;stroke-width:1.5px}.battery-level .battery-cap,.battery-level .battery-fill{fill:currentColor}.battery-level.low{color:var(--danger);font-weight:600}.device-status{color:var(--warning);align-items:center;gap:.375rem;margin:0;font-size:.875rem;display:flex}.device-no-chart{margin:.25rem 0}.device-stats{flex-wrap:wrap;align-items:center;gap:.25rem 1rem;font-size:.875rem;display:flex}.device-stats strong{font-variant-numeric:tabular-nums}.device-readings-link{border:1px solid var(--border);color:var(--text-muted);border-radius:999px;margin-left:auto;padding:.15rem .6rem;font-size:.8rem;text-decoration:none}.device-readings-link:hover,.device-readings-link:focus-visible{border-color:var(--primary-hover);background:var(--primary-soft);color:var(--text)}.device-footer{justify-content:space-between;align-items:center;gap:.75rem;margin-top:auto;padding-top:.25rem;display:flex}.device-footer>p{margin:0}.device-actions{flex:none;gap:.25rem;margin-left:auto;display:flex}.device-actions button:disabled{visibility:hidden}.sparkline{min-width:0;margin:.15rem 0 0}.sparkline .chart-plot{width:100%}.sparkline svg{display:block;overflow:visible}.sparkline-line{fill:none;stroke:var(--red);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.sparkline-reference{fill:none;stroke:var(--text-muted);stroke-width:1.5px;stroke-dasharray:4 3}.sparkline-label{fill:var(--text-muted);font-size:.6875rem}.sparkline-latest{fill:var(--red);stroke:var(--surface);stroke-width:2px}.sparkline-crosshair{stroke:var(--text-muted);stroke-width:1px}.chart-tooltip.sparkline-tooltip{z-index:2;transform:translate(-50%,6px)}.sparkline .chart-table summary{margin-top:.15rem}.sparkline .chart-table table{margin-top:.5rem;font-size:.875rem}@media (width<=720px){.tabs{scrollbar-width:none;max-width:100%;overflow-x:auto}.tabs a{white-space:nowrap;flex:none;padding:.35rem .75rem;font-size:.875rem}}@media (width<=480px){main{padding:1.5rem 1rem 3rem}.app-header-inner{gap:.75rem 1rem;padding:.75rem 1rem}}.account-menu{position:relative}.account-menu>.profile-link{cursor:pointer;font:inherit;border:none}.account-menu-caret{color:var(--on-black-muted);font-size:.72rem}.account-menu-list{z-index:10;background:var(--surface);border:1px solid var(--border);min-width:11rem;box-shadow:var(--shadow-overlay);border-radius:10px;margin:.25rem 0 0;padding:.25rem;list-style:none;position:absolute;right:0}.account-menu-list a,.account-menu-list button{width:100%;color:var(--text);text-align:left;font:inherit;background:0 0;border:none;border-radius:6px;padding:.5rem .75rem;text-decoration:none;display:block}.app-header .account-menu-list :focus-visible{outline-color:var(--focus-ring)}.account-menu-list a:hover,.account-menu-list button:hover:not(:disabled),.account-menu-list a:focus-visible,.account-menu-list button:focus-visible,.account-menu-list a.active{background:var(--primary-soft);color:var(--text)}.device-card-link{color:inherit;transition:transform var(--duration-instant) ease-out, box-shadow var(--duration-instant) ease-out;text-decoration:none}a.device-card-link:hover{color:inherit;box-shadow:var(--shadow-raised);transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){a.device-card-link:hover{transform:none}}.device-insight .section-header{align-items:flex-end}.device-insight .section-header h2{margin-bottom:.25rem}.device-insight .section-header p{margin:0}.device-insight-values{flex-wrap:wrap;align-items:baseline;gap:.5rem 1.25rem;margin:.5rem 0 1rem;display:flex}.device-insight-values .device-value{font-size:2.25rem}.insight-chart{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem .75rem}.insight-stats{margin:1rem 0 1.5rem}.insight-table{border-radius:10px;max-height:28rem;overflow-y:auto}.insight-table table{margin-top:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.insight-profile{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin:1rem 0 1.5rem;padding:1.25rem 1.5rem}.insight-profile-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;display:flex}.insight-profile-header h3,.insight-profile-header p{margin:0}.insight-profile-name{font-weight:400}.profile-steps{gap:2px;margin:1rem 0 .5rem;padding:0;list-style:none;display:flex}.profile-step{border:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;min-width:5.5rem;color:var(--text-muted);border-radius:6px;flex-basis:0;padding:.5rem .625rem;font-size:.875rem;overflow:hidden}.profile-step.done{background:var(--primary-soft);color:var(--text)}.profile-step.current{background:var(--primary);border-color:var(--primary-hover);color:var(--on-primary);font-weight:600}.profile-step-number{font-variant-numeric:tabular-nums;font-weight:700}.profile-current{margin:0 0 .5rem}.profile-details summary{cursor:pointer}.profile-details ol{margin:.5rem 0;padding-left:1.5rem}.profile-source{margin:.5rem 0 0;font-size:.8rem}@media (width<=720px){.profile-steps{overflow-x:auto}.profile-step{flex-shrink:0}}.tools-group{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);align-items:center;gap:.5rem;margin:2rem 0 .75rem;font-size:.8rem;display:flex}.tools-group:before{content:"";background:var(--danger);border-radius:2px;width:14px;height:4px}.tools-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:1rem;display:grid}.tool-card{grid-row:span 4;grid-template-rows:subgrid;background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--primary);border-radius:10px;gap:.6rem;min-width:0;padding:1rem 1.25rem;scroll-margin-top:1rem;display:grid}.tool-card h4{margin:0}.tool-card h4 a{color:inherit;text-decoration:none}.tool-card h4 a:hover,.tool-card:target h4 a{text-decoration:underline;-webkit-text-decoration-color:var(--primary);text-decoration-color:var(--primary);text-underline-offset:4px}.tool-intro,.tool-method{margin:0;font-size:.85rem}.tool-inputs{grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));gap:.25rem .75rem;display:grid}.tool-result{background:var(--surface-sunken);border-radius:8px;padding:.75rem 1rem}.tool-result p{margin:0}.tool-result-value{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:800;line-height:1.1}.tool-result-value small{color:var(--text-muted);font-size:.9rem;font-weight:600}.tool-result-detail{margin-top:.15rem;font-size:.85rem}.tool-error{color:var(--danger)}.tool-head{flex-direction:column;gap:.25rem;display:flex}.tool-card-wide{grid-column:1/-1}.tool-card-wide .tool-inputs{grid-template-columns:repeat(6,minmax(0,1fr));gap:.25rem 1.25rem}.tool-card-wide .tool-inputs>*{grid-column:span 6;min-width:0}.tool-card-wide .tool-inputs>.tool-span-4{grid-column:span 4}.tool-card-wide .tool-inputs>.tool-span-2{grid-column:span 2}.tool-card-wide .tool-result{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);align-items:center;gap:1rem 2.5rem;padding:1.25rem 1.5rem;display:grid}.tool-card-wide .tool-result .scale{margin-top:1.25rem}@media (width<=720px){.tool-card-wide .tool-inputs>.tool-span-4,.tool-card-wide .tool-inputs>.tool-span-2{grid-column:span 6}.tool-card-wide .tool-inputs>.tool-half{grid-column:span 3}.tool-card-wide .tool-result{grid-template-columns:minmax(0,1fr);padding:.75rem 1rem}}.tool-co2{flex-direction:column;align-items:flex-start;gap:.15rem;display:flex}.tool-co2 .link{font-size:.85rem}.segmented-field{flex-direction:column;gap:.25rem;margin-bottom:.75rem;display:flex}.segmented-label{font-size:.875rem;font-weight:500}.segmented{border:1px solid var(--border-strong);background:var(--surface-sunken);border-radius:999px;align-self:flex-start;gap:.2rem;max-width:100%;padding:.2rem;display:inline-flex}.segmented button{white-space:nowrap;min-height:2.25rem;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:999px;padding:.3rem 1rem;font-weight:500}.segmented button:hover{color:var(--text)}.segmented button[aria-checked=true]{background:var(--primary);color:var(--black);font-weight:700}.scale{margin-top:1.5rem}.scale-track{background:var(--border);border-radius:5px;height:10px;position:relative}.scale-track>span{position:absolute}.scale-band{border:1px solid var(--primary);background:var(--yellow-soft);border-radius:5px;top:-5px;bottom:-5px}.scale-held{background:var(--border-strong);border-radius:5px 0 0 5px;top:0;bottom:0;left:0}.scale-added{background:var(--primary);top:0;bottom:0}.scale-marker{border:2px solid var(--surface-sunken);background:var(--danger);border-radius:50%;width:16px;height:16px;margin:-8px 0 0 -8px;top:50%}.scale-marker-label{font-variant-numeric:tabular-nums;font-size:.85rem;font-weight:700;bottom:16px;transform:translate(-50%)}.scale-ticks{height:1.25rem;color:var(--text-muted);margin-top:.4rem;font-size:.75rem;position:relative}.scale-ticks span{position:absolute;transform:translate(-50%)}.scale-caption{color:var(--text-muted);text-align:right;margin:0;font-size:.75rem}.scale-legend{color:var(--text-muted);flex-wrap:wrap;gap:.25rem 1rem;margin:.25rem 0 0;font-size:.8rem;display:flex}.scale-legend>span{align-items:center;gap:.35rem;display:inline-flex}.scale-swatch{border-radius:3px;width:14px;height:10px;display:inline-block}.scale-swatch-band{border:1px solid var(--primary);background:var(--yellow-soft)}.scale-swatch-held{background:var(--border-strong)}.scale-swatch-added{background:var(--primary)}.yeast-visual{flex-direction:column;gap:1rem;min-width:0;display:flex}.cells{flex-direction:column;gap:.5rem;display:flex}.cells-row{grid-template-columns:6.5rem minmax(0,1fr) 2.5rem;align-items:center;gap:.5rem;font-size:.85rem;display:grid}.cells-label{color:var(--text-muted)}.cells-track{background:var(--border);border-radius:6px;height:12px;position:relative}.cells-fill{background:var(--border-strong);border-radius:6px;position:absolute;top:0;bottom:0;left:0}.cells-fill.enough{background:var(--primary)}.cells-need{background:var(--danger);width:2px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.cells-value{font-variant-numeric:tabular-nums;text-align:right;font-weight:700}.cells-caption{color:var(--text-muted);margin:0;font-size:.75rem}.yeast-steps{border-collapse:collapse;width:100%;font-size:.85rem}.yeast-steps th,.yeast-steps td{text-align:left;padding:.3rem .5rem .3rem 0}.yeast-steps th{color:var(--text-muted);font-size:.75rem;font-weight:600}.yeast-steps td{border-top:1px solid var(--border);font-variant-numeric:tabular-nums}@media (width<=720px){.cells-row{grid-template-columns:5.5rem minmax(0,1fr) 2.25rem}}.yeast-sum{gap:.4rem;margin:0;font-size:.9rem;display:grid}.yeast-sum>div{grid-template-columns:7rem minmax(0,1fr);gap:.5rem;display:grid}.yeast-sum dt{color:var(--text-muted)}.yeast-sum dd{font-variant-numeric:tabular-nums;margin:0}.yeast-sum-total{border-top:1px solid var(--border-strong);padding-top:.4rem;font-weight:700}.recipe-navigation{gap:.5rem;margin-bottom:1.5rem;display:flex}.recipe-navigation a{border:1px solid var(--border-strong);border-radius:999px;padding:.5rem 1rem;text-decoration:none}.recipe-navigation a.active{background:var(--primary);color:var(--on-primary);border-color:var(--primary);font-weight:700}.catalog-filters{flex-wrap:wrap;align-items:end}.catalog-filters label{flex-direction:column;gap:.25rem;min-width:0;display:flex}.catalog-filters input,.catalog-filters select{font:inherit;min-height:var(--control-md);border:1px solid var(--border-strong);background:var(--surface-sunken);max-width:100%;color:var(--text);border-radius:8px;padding:.5rem .625rem}.catalog-filters input:focus{border-color:var(--primary-hover);box-shadow:0 0 0 3px var(--primary-soft)}.catalog-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1rem;display:grid}.catalog-card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--primary);border-radius:10px;padding:1.25rem 1.5rem}.catalog-card h3{font-size:1rem}.catalog-meta{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.catalog-meta,.catalog-credit{color:var(--text-muted);font-size:.875rem}.catalog-facts,.details .catalog-facts{flex-wrap:wrap;gap:1rem 1.5rem;display:flex}.catalog-facts dt{color:var(--text-muted);font-size:.8rem}.catalog-facts dd{font-variant-numeric:tabular-nums;margin:0}.catalog-source{overflow-wrap:anywhere}.catalog-review{border-left:4px solid var(--warning)}.catalog-review li,.catalog-instructions li{margin-bottom:.75rem}@media (pointer:coarse){.recipe-navigation a,.catalog-filters input,.catalog-filters select{min-height:var(--control-touch)}}.recipe-view{flex-direction:column;gap:1rem;display:flex}.recipe-overview,.recipe-overview dd{margin:0}.recipe-view .panel-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));align-items:stretch}.recipe-view .panel,.recipe-view .ingredient-panel{min-width:0}.recipe-facts dl{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:.625rem 1rem;margin:0;display:grid}.recipe-facts dt{color:var(--text-muted);font-size:.875rem}.recipe-facts dd{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0;font-weight:600}.recipe-facts dd .muted{font-size:.8rem;font-weight:400;display:block}.recipe-yeast{margin:0 0 1rem;font-weight:600}.recipe-table-scroll{max-width:100%;overflow-x:auto}.recipe-view .ingredient-table{margin:0 0 .5rem}.recipe-notes p{white-space:pre-wrap;overflow-wrap:anywhere;max-width:85ch;margin:0;line-height:1.7}.recipe-metadata{flex-wrap:wrap;gap:.25rem .75rem;margin:0;font-size:.8rem;display:flex}.recipe-metadata dd{margin:0 1rem 0 0}@media (width<=720px){.recipe-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.recipe-view .panel{padding:1rem}}.recipe-notes-preview{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.recipe-notes-toggle{margin-top:.75rem}.carbonation-row,.carbonation-sugar{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.carbonation-row{gap:.75rem 1.5rem}.carbonation-sugar{color:var(--text-muted);font-size:.875rem}.carbonation-sugar select{max-width:100%;font:inherit;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:6px;padding:.375rem .5rem}.carbonation-dose-value{font-variant-numeric:tabular-nums}.carbonation-basis{margin:.625rem 0;font-size:.875rem}.carbonation-details{max-width:75ch;font-size:.875rem}.carbonation-details summary{cursor:pointer;color:var(--text-muted)}.carbonation-details p{margin:.5rem 0}.carbonation-calculator{margin-top:.625rem;font-size:.875rem;display:inline-block}
