:root{--bg:#eef3f9;--panel:#fff;--panel-2:#e7eef7;--border:#cddbea;--text:#16293f;--text-dim:#4a6483;--accent:#2f6fed;--accent-2:#0ea5e9;--accent-text:#fff;--danger:#dc3545;--radius:10px;--status-planning:#64748b;--status-planning-bg:#64748b24;--status-brewing:#f59e0b;--status-brewing-bg:#f59e0b29;--status-fermenting:#8b5cf6;--status-fermenting-bg:#8b5cf629;--status-conditioning:var(--accent-2);--status-conditioning-bg:#0ea5e924;--status-packaged:#16a34a;--status-packaged-bg:#22c55e24;--series-gravity:#c0392b;--series-temp:#7c4dcc;--series-pressure:#0f766e;--lane-1:#2f6fed;--lane-2:#b4235a;--lane-3:#0f766e;--lane-4:#9a5b00;--lane-5:#6d3fd1;--lane-6:#c2410c;--lane-7:#0369a1;--lane-8:#4d7c0f}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;padding:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}.app-shell{min-height:100vh;display:flex}#sidebarToggle{z-index:120;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;min-width:44px;min-height:44px;font-size:18px;line-height:1;display:none;position:fixed;top:10px;left:10px}#sidebar{background:var(--panel);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:16px;width:220px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar-brand h1{letter-spacing:.02em;overflow-wrap:anywhere;margin:0;padding:0 6px;font-size:16px;font-weight:600}#sidebar nav{flex-direction:column;flex:1;gap:2px;display:flex}#mainNav{gap:var(--space-4)}.nav-group{flex-direction:column;gap:2px;display:flex}.nav-group-title{font-size:var(--font-size-sm);color:var(--text);padding:0 var(--space-3) var(--space-1);font-weight:700}#mainNav button{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);min-height:36px;font-size:var(--font-size-base);color:var(--text);font-weight:500;display:flex}#mainNav button .icon{color:var(--text-dim);flex-shrink:0}#mainNav button:hover .icon,#mainNav button.active .icon{color:inherit}#mainNav button.active{color:var(--accent-text);font-weight:600}#mainNav .nav-badge{margin-left:auto}#sidebar nav button{text-align:left;width:100%}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;gap:8px;padding-top:12px;display:flex}nav button{color:var(--text-dim);border-radius:var(--radius);cursor:pointer;background:0 0;border:none;min-height:44px;padding:8px 14px;font-size:13px}nav button:hover{background:var(--panel-2);color:var(--text)}nav button.active{background:var(--accent);color:var(--accent-text);font-weight:600}#userBadge{color:var(--text-dim);padding:0 6px;font-size:12px}#sidebarBackdrop{display:none}main{flex:1;min-width:0;padding:20px}.view{display:none}.view.active{display:block}h2{margin:0 0 14px;font-size:18px}h2[tabindex="-1"]:focus{outline:none}h3{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin:18px 0 8px;font-size:14px}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:14px;padding:16px}.recipe-grid-2{grid-template-columns:1fr 1fr;align-items:start;gap:14px;margin-bottom:14px;display:grid}.recipe-grid-2>.card{margin-bottom:0}.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.stat{background:var(--panel-2);border-radius:var(--radius);padding:12px}.stat .label{color:var(--text-dim);text-transform:uppercase;font-size:11px}.stat .value{margin-top:2px;font-size:20px;font-weight:600}.grid-compact{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:6px}.stat-compact{padding:6px 8px}.stat-compact .label{font-size:10px}.stat-compact .value{margin-top:1px;font-size:14px}table{border-collapse:collapse;width:100%}tbody tr:nth-child(2n) td{background:var(--panel-2)}th,td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px;font-size:13px}th{color:var(--text-dim);text-transform:uppercase;font-size:11px;font-weight:500}tr:hover td{background:var(--panel-2)}button.btn{background:var(--accent);color:var(--accent-text);cursor:pointer;border:none;border-radius:6px;min-height:44px;padding:7px 12px;font-size:13px;font-weight:600}button.btn.secondary{background:var(--panel-2);color:var(--text);border:1px solid var(--border)}button.btn.danger{background:var(--danger);color:#fff}button.btn:disabled{opacity:.5;cursor:default}input,select,textarea{background:var(--panel-2);border:1px solid var(--border);color:var(--text);border-radius:6px;width:100%;padding:6px 8px;font-size:13px}input[type=checkbox],input[type=radio]{width:auto;padding:0}label{color:var(--text-dim);margin-top:8px;margin-bottom:3px;font-size:12px;display:block}.row{gap:10px;display:flex}.row>*{flex:1}.row>.ai-spend,.row>.ai-off-note{flex:none;align-self:center}.toolbar{justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.pill{background:var(--panel-2);color:var(--text-dim);border-radius:999px;padding:2px 8px;font-size:11px;display:inline-block}.lot-code{white-space:nowrap}.msg{border-radius:6px;margin-bottom:10px;padding:8px 12px;font-size:13px}.msg.error{color:#b42318;background:#dc35451f}.msg.ok{color:#15803d;background:#22c55e24}.msg.info{background:var(--panel-2);color:var(--text)}.flash-highlight{outline:2px solid var(--accent);outline-offset:2px;transition:outline-color 1.5s}.line-items{border-top:1px solid var(--border);margin-top:10px;padding-top:10px}.line-item-row{grid-template-columns:2fr 1fr 1fr auto;align-items:end;gap:8px;margin-bottom:8px;display:grid}.link{color:var(--accent);cursor:pointer;text-decoration:underline}.link-btn{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;margin:-6px -2px;padding:6px 2px;text-decoration:underline}.link-btn:disabled{opacity:.5;cursor:default}#timersTableBody .link-btn{align-items:center;min-height:44px;margin:-10px -8px;padding:10px 8px;display:inline-flex}.empty{color:var(--text-dim);padding:12px 0;font-style:italic}.location-tiles{flex-wrap:wrap;justify-content:center;gap:24px;margin-top:24px;display:flex}.location-tile{cursor:pointer;aspect-ratio:1;text-align:center;width:min(220px,40vw);color:inherit;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:22px;font-weight:700;transition:background .15s,border-color .15s;display:flex}.location-tile:hover{background:var(--panel-2);border-color:var(--accent)}.status-chip{text-transform:capitalize;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.status-chip.status-planning{background:var(--status-planning-bg);color:var(--status-planning)}.status-chip.status-brewing{background:var(--status-brewing-bg);color:var(--status-brewing)}.status-chip.status-fermenting{background:var(--status-fermenting-bg);color:var(--status-fermenting)}.status-chip.status-conditioning{background:var(--status-conditioning-bg);color:var(--status-conditioning)}.status-chip.status-packaged{background:var(--status-packaged-bg);color:var(--status-packaged)}.status-tiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px;display:grid}.status-tile{cursor:pointer;background:var(--panel);border:1px solid var(--border);border-top:4px solid var(--tile-color,var(--border));border-radius:var(--radius);text-align:left;padding:14px;transition:transform .1s,box-shadow .1s}.status-tile:hover{transform:translateY(-1px);box-shadow:0 2px 8px #00000014}.status-tile.active{outline:2px solid var(--tile-color);outline-offset:-1px}.status-tile .count{font-size:28px;font-weight:700;line-height:1}.status-tile .label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin-top:6px;font-size:12px}.batch-tabs{border-bottom:2px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.batch-tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:6px 6px 0 0;min-height:44px;padding:10px 16px;font-size:13px;font-weight:600;position:relative}.batch-tab:hover,.batch-tab.active{background:var(--panel-2);color:var(--text)}.batch-tab.active:after{content:"";background:var(--tab-color,var(--accent));height:2px;position:absolute;bottom:-2px;left:0;right:0}.batch-tab .status-dot{background:var(--tab-color);border-radius:50%;width:7px;height:7px;margin-left:6px;display:inline-block}.tab-panel{display:none}.tab-panel.active{display:block}.checklist{margin:0;padding:0;list-style:none}.checklist-item{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:8px 0;font-size:13px;display:flex}.checklist-item:last-child{border-bottom:none}.checklist-item .checklist-qty{color:var(--text-dim);white-space:nowrap}.checklist-item.is-dryhop .checklist-qty{color:var(--status-fermenting);font-weight:600}.checklist-group-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin:14px 0 4px;font-size:11px}.bjcp-header{align-items:center;gap:6px;margin-bottom:10px;font-size:14px;font-weight:700;display:flex}.bjcp-row{align-items:center;gap:10px;margin-bottom:7px;display:flex}.bjcp-label{background:var(--panel-2);width:56px;color:var(--text-dim);text-align:center;border-radius:4px;flex-shrink:0;padding:5px 6px;font-size:11px;font-weight:700}.bjcp-label.ok{color:#15803d;background:#22c55e2e}.bjcp-label.bad{color:#b42318;background:#dc354526;text-decoration:underline}.bjcp-track{background:var(--panel-2);border-radius:4px;flex:1;height:32px;position:relative}.bjcp-fill{background:#22c55e47;border-radius:4px;position:absolute;top:0;bottom:0}.bjcp-edge-label{color:var(--text-dim);font-size:10px;position:absolute;top:3px;transform:translate(4px)}.bjcp-edge-label.right{transform:translate(-100%)translate(-4px)}.bjcp-tick{background:#5b9bd5;border-radius:2px;width:3px;position:absolute;top:-2px;bottom:-2px;transform:translate(-50%)}.bjcp-tick.bad{background:var(--danger)}.bjcp-value{white-space:nowrap;color:#5b9bd5;font-size:10px;font-weight:700;position:absolute;bottom:3px;transform:translate(5px)}.bjcp-value.bad{color:var(--danger);text-decoration:underline}.bjcp-value.flip{transform:translate(-100%)translate(-5px)}.bjcp-compact .bjcp-header{font-size:var(--font-size-md);margin-bottom:6px}.bjcp-compact .bjcp-row{gap:6px;margin-bottom:4px}.bjcp-compact .bjcp-label{width:40px;font-size:var(--font-size-xs);padding:3px 4px}.bjcp-compact .bjcp-track{height:20px}.bjcp-compact .bjcp-edge-label,.bjcp-compact .bjcp-value{font-size:9px}.label-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.label-card{border:1px dashed var(--border);background:var(--panel);border-radius:8px;min-height:90px;padding:12px}.label-name{font-size:15px;font-weight:700}.label-style{color:var(--text-dim);margin-top:2px;font-size:12px}.label-stats{margin-top:8px;font-size:12px}.label-meta{color:var(--text-dim);margin-top:4px;font-size:11px}.auth-gate{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.auth-gate .card{text-align:center;max-width:360px}.auth-gate h1{margin:0 0 8px;font-size:18px}.auth-gate .btn{width:100%;margin-top:12px}.user-menu{flex-direction:column-reverse;gap:6px;display:flex}.user-menu-btn{background:var(--panel-2);width:100%;color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:6px;min-height:44px;padding:7px 12px;font-size:13px}.user-menu-btn:hover{background:var(--panel)}.user-menu-panel{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px;display:none}.user-menu-panel.open{display:block}.user-menu-panel input,.user-menu-panel select{background:var(--panel)}.user-menu-panel .btn{width:100%;margin-top:8px}.user-menu-panel .label{color:var(--text-dim);margin:6px 0 0;font-size:11px;line-height:1.4}.user-menu-panel .msg{margin-bottom:8px}.user-menu-section{border-top:1px solid var(--border);margin-top:10px;padding-top:10px}.user-menu-section:first-of-type{border-top:none;margin-top:0;padding-top:0}.trackers-card{border:1px solid var(--border);border-radius:var(--radius);padding:8px 6px 4px}.trackers-head{text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);border-bottom:1px solid var(--border);padding:0 6px 6px;font-size:11px}.trackers-head .count{color:var(--text);font-weight:600}.tracker-row{width:100%;min-height:44px;font:inherit;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;grid-template-columns:20px 1fr auto;align-items:center;gap:2px 8px;padding:8px 6px;display:grid}.tracker-row+.tracker-row{border-top:1px solid var(--border);border-radius:0}.tracker-row:hover{background:var(--panel-2)}.tracker-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.tracker-icon{width:18px;height:18px;color:var(--status-packaged)}.tracker-row.paused .tracker-icon{color:var(--text-dim)}.tracker-batch{white-space:nowrap;font-size:13px;font-weight:600}.tracker-time{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:13px}.tracker-time .step{margin-right:4px;font-weight:600}.tracker-time.overdue{color:var(--status-brewing)}.tracker-detail{color:var(--text-dim);grid-column:2/4;font-size:12px}.trackers-strip{display:none}.modal-overlay{background:var(--overlay);z-index:200;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.modal-overlay.open{display:flex}.modal-overlay.modal-stacked{z-index:250}.modal-overlay .card{border-radius:var(--radius-lg);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow-modal);margin-bottom:0;overflow-y:auto}.modal-overlay .card.modal-wide{max-width:760px}.modal-overlay .card.modal-xwide{max-width:1000px}.modal-intro{color:var(--text-dim);font-size:var(--font-size-sm);margin:0 0 10px}.field-help{color:var(--text-dim);font-size:var(--font-size-xs);margin-top:3px}.card-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.card-head h3{margin:0}.profile-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.profile-actions select{flex:140px;width:auto}.recipe-line{border-bottom:1px solid var(--border);font-size:var(--font-size-md);grid-template-columns:1.6fr 1fr;gap:8px;padding:5px 0;display:grid}.recipe-line:last-child{border-bottom:none}.recipe-line>:last-child{color:var(--text-dim);text-align:right}.recipe-line,tbody tr,tbody td{transition:background-color .6s}.recipe-line.short-highlight{background:#f59e0b29;border-radius:4px}tbody tr.short-highlight>td{background:#f59e0b29}.stock-dot{vertical-align:1px;border-radius:50%;flex:none;width:9px;height:9px;margin-right:8px;display:inline-block}.stock-dot.ok{background:var(--status-packaged)}.stock-dot.short{border:1.5px solid var(--status-brewing);background:linear-gradient(90deg, var(--status-brewing) 50%, transparent 50%)}.stock-dot.none{border:1.5px solid var(--danger);background:0 0}.stock-dot.unknown{background:var(--border);width:7px;height:7px;margin:0 9px 0 1px}.stock-note{font-size:var(--font-size-xs);margin-top:1px}.stock-note.short{color:var(--status-brewing)}.stock-note.none{color:var(--danger)}.stock-chip{min-height:36px;font:inherit;font-size:var(--font-size-md);border:1px solid #0000;border-radius:999px;align-items:center;gap:0;margin-bottom:14px;padding:6px 14px;font-weight:600;display:inline-flex}.stock-chip.ok{background:var(--status-packaged-bg);color:var(--status-packaged)}.stock-chip.warn{background:var(--status-brewing-bg);color:#9a5b00;cursor:pointer;border-color:#f59e0b59}.stock-chip.warn:hover{border-color:var(--status-brewing)}.stock-chip.warn[aria-pressed=true]{border-color:var(--status-brewing);box-shadow:inset 0 0 0 1px var(--status-brewing)}.stock-chip.warn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.stock-hint{font-size:var(--font-size-xs);color:var(--text-dim);margin-top:2px;display:block}.stock-hint.short{color:#9a5b00}.stock-hint.none{color:var(--danger)}.bm-size{border:none;flex-wrap:wrap;gap:4px 18px;margin:12px 0 0;padding:0;display:flex}.bm-size[hidden]{display:none}.bm-size legend{color:var(--text-dim);margin-bottom:4px;padding:0;font-size:12px}.bm-choice{min-height:40px;font-size:var(--font-size-md);color:var(--text);cursor:pointer;align-items:center;gap:8px;margin:0;display:inline-flex}.bm-choice input{width:auto;margin:0}.bm-fit{border-radius:var(--radius);background:var(--panel-2);font-size:var(--font-size-md);color:var(--text);margin-top:10px;padding:10px 12px}.bm-fit.ok{background:var(--status-packaged-bg)}.bm-fit-head{font-weight:600}.bm-fit-meta{font-size:var(--font-size-sm);color:var(--text-dim);margin:2px 0 4px}.bm-fit .bm-choice{min-height:36px;display:flex}#bmStock{margin-top:12px}#bmStock .stock-chip{margin-bottom:6px}.bm-short{margin:0;padding:0;list-style:none}.bm-short li{border-bottom:1px solid var(--border);font-size:var(--font-size-md);justify-content:space-between;gap:12px;padding:5px 0;display:flex}.bm-short li>:last-child{color:var(--text-dim);white-space:nowrap}.unit-input{display:block;position:relative}.unit-input input{padding-right:calc(var(--unit-len,2) * .62em + 14px);appearance:textfield}.unit-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.unit-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.unit-input .unit{font-size:var(--font-size-sm);color:var(--text-dim);pointer-events:none;position:absolute;top:50%;right:9px;transform:translateY(-50%)}.picker-head{align-items:center;gap:12px;margin-bottom:8px;display:flex}.picker-head h3{margin:0}.picker-head .picker-add{width:auto;margin-left:auto}.picker-search input[type=search]{min-height:44px;font-size:var(--font-size-md)}.picker-list{border:1px solid var(--border);border-radius:var(--radius);max-height:55vh;margin:8px 0 0;padding:0;list-style:none;overflow-y:auto}.picker-row{cursor:pointer;border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:8px 12px;display:flex}.picker-row:last-child{border-bottom:none}.picker-row:hover,.picker-row.active{background:var(--panel-2)}.picker-row.active{box-shadow:inset 3px 0 0 var(--accent)}.picker-brand{font-size:var(--font-size-xs);color:var(--text-dim)}.picker-name{font-size:var(--font-size-md);color:var(--text);font-weight:600}.picker-spec{font-size:var(--font-size-xs);color:var(--text-dim);margin-top:1px}.picker-side{text-align:right;white-space:nowrap;align-self:center}.picker-qty{font-size:var(--font-size-md);color:var(--status-packaged);font-weight:600}.picker-qty.none{color:var(--text-dim);font-weight:400}.picker-cost{font-size:var(--font-size-xs);color:var(--text-dim)}.picker-empty{color:var(--text-dim);font-size:var(--font-size-md);padding:14px 12px}.picker-foot{font-size:var(--font-size-xs);color:var(--text-dim);min-height:1em;margin-top:6px}.tag-picker{margin-top:4px}.tag-chip-row{flex-wrap:wrap;gap:6px;min-height:32px;margin-bottom:8px;display:flex}.tag-empty{color:var(--text-dim);font-size:var(--font-size-xs);align-self:center}.tag-chip{border:1px solid var(--border);background:var(--panel-2);min-height:32px;color:var(--text);font:inherit;font-size:var(--font-size-xs);cursor:pointer;border-radius:999px;align-items:center;gap:4px;padding:5px 11px;display:inline-flex}.tag-chip:hover{border-color:var(--accent)}.tag-chip-active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.tag-chip-family{font-weight:700}.tag-chip-selected{background:var(--panel)}.tag-chip-off{border-color:var(--danger);color:var(--danger)}.tag-search{width:100%;min-height:40px;font-size:var(--font-size-md);margin-bottom:8px}.tag-categories{flex-direction:column;gap:4px;display:flex}.tag-category{border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px}.tag-category summary{cursor:pointer;font-size:var(--font-size-md);padding:4px 0;font-weight:600}.tag-category-body{padding:6px 0 2px}.tag-group{margin-bottom:8px}.tag-group:last-child{margin-bottom:0}.tag-group-label{font-size:var(--font-size-xs);color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.tag-chip-wrap{flex-wrap:wrap;gap:6px;display:flex}.star-rating{gap:4px;display:flex}.star-btn{border:1px solid var(--border);background:var(--panel-2);min-width:40px;min-height:40px;color:var(--text-dim);cursor:pointer;border-radius:6px;font-size:18px;line-height:1}.star-btn:hover{border-color:var(--accent)}.star-btn.on{color:var(--accent);border-color:var(--accent);background:var(--panel)}.segmented{gap:6px;display:flex}.segmented-btn{border:1px solid var(--border);background:var(--panel-2);min-height:40px;color:var(--text);font:inherit;font-size:var(--font-size-md);cursor:pointer;border-radius:6px;flex:1 1 0}.segmented-btn:hover{border-color:var(--accent)}.segmented-btn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.le-item{text-align:left;background:var(--panel-2);border:1px solid var(--border);cursor:pointer;width:100%;min-height:44px;font:inherit;color:var(--text);border-radius:6px;padding:5px 9px;display:block}.le-item:hover{border-color:var(--accent)}.le-item-name{font-size:13px;font-weight:600;display:block}.le-item-spec{font-size:var(--font-size-xs);color:var(--text-dim);display:block}.le-item-empty .le-item-name{color:var(--text-dim);font-weight:400}.ft{margin-top:8px}.ft-bar{background:var(--panel-2);border-radius:6px;height:30px;display:flex;position:relative;overflow:hidden}.ft-seg{border-right:2px solid var(--panel);background:var(--seg,var(--text-dim));color:#fff;min-width:3px;position:relative;overflow:hidden}.ft-seg:last-child{border-right:none}.ft-ramp{background:linear-gradient(90deg,#ffffff73,#fff0);position:absolute;inset:0 auto 0 0}.ft-label{line-height:30px;font-size:var(--font-size-xs);white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 1px #00000040;padding:0 6px;font-weight:600;display:block;position:relative;overflow:hidden}.ft-primary{--seg:var(--status-fermenting)}.ft-diacetyl_rest,.ft-free_rise{--seg:var(--status-brewing)}.ft-cold_crash,.ft-lagering{--seg:var(--status-conditioning)}.ft-conditioning{--seg:var(--status-packaged)}.ft-custom{--seg:var(--status-planning)}.ft-tick{background:var(--text);opacity:.7;width:3px;margin-left:-1px;position:absolute;top:0;bottom:0}.ft-now{background:var(--danger);width:3px;box-shadow:0 0 0 1px var(--panel);margin-left:-1px;position:absolute;top:-2px;bottom:-2px}.ft-scale{font-size:var(--font-size-xs);color:var(--text-dim);justify-content:space-between;margin-top:3px;display:flex}.ft-legend{font-size:var(--font-size-xs);color:var(--text-dim);margin-top:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.core-cell{white-space:nowrap;width:1%}.core-star{cursor:pointer;color:var(--text-dim);background:0 0;border:none;border-radius:6px;min-width:36px;min-height:36px;padding:0;font-size:20px;line-height:1}.core-star.on{color:var(--status-brewing)}.core-star:hover{background:var(--panel-2)}.core-star:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.core-min{font-size:var(--font-size-xs);color:var(--text-dim);text-align:center;display:block}.dash-batches{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.dash-tile{background:var(--panel);border:1px solid var(--border);border-top:5px solid var(--col,var(--border));border-radius:var(--radius);flex-direction:column;min-width:0;min-height:320px;padding:16px;display:flex}.dash-tile-head{justify-content:space-between;align-items:center;display:flex}.dash-tile-num{font-size:var(--font-size-sm);color:var(--text-dim);font-weight:600}.dash-tile-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:10px 0 2px;font-size:18px;overflow:hidden}.dash-tile-meta{font-size:var(--font-size-sm);color:var(--text-dim)}.dash-tile-body{flex:1;margin-top:14px}.dash-tile-foot{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.dash-big{color:var(--text);font-size:17px;font-weight:600}.dash-sub{font-size:var(--font-size-sm);color:var(--text-dim);margin-top:2px}.dash-brew+.dash-brew{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.dash-timer{font-variant-numeric:tabular-nums;color:var(--text);margin-top:8px;font-size:34px;font-weight:700;line-height:1.1}.dash-timer.paused{color:var(--text-dim)}.dash-timer.overdue{color:var(--danger)}.dash-stats{grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:8px;margin:12px 0 0;display:grid}.dash-stats div{background:var(--panel-2);border-radius:6px;padding:6px 8px}.dash-stats dt{text-transform:uppercase;color:var(--text-dim);font-size:10px}.dash-stats dd{color:var(--text);font-variant-numeric:tabular-nums;margin:1px 0 0;font-size:15px;font-weight:600}.dash-chip{font-size:var(--font-size-sm);margin-bottom:12px}.core-ok{color:var(--status-packaged);font-weight:600;font-size:var(--font-size-md)}.core-status{font-size:var(--font-size-xs);border-radius:999px;padding:2px 8px;font-weight:600;display:inline-block}.core-status.out{color:#b42318;background:#dc35451f}.core-status.low{background:var(--status-brewing-bg);color:#9a5b00}@media (width<=760px){.dash-batches{grid-template-columns:1fr}.dash-tile{min-height:0}}.fp-now{font-size:var(--font-size-md);color:var(--text)}.fp-next,.fp-note{font-size:var(--font-size-sm);color:var(--text-dim);margin:2px 0 0}.fp-due{background:var(--status-brewing-bg);color:#9a5b00;font-size:var(--font-size-sm);border-radius:6px;margin-top:6px;padding:6px 10px}.fp-steps{font-size:var(--font-size-sm);margin:12px 0 0;padding:0;list-style:none}.fp-step{border-top:1px solid var(--border);color:var(--text);align-items:center;gap:10px;padding:7px 0;display:flex}.fp-dot{background:var(--seg,var(--text-dim));border-radius:50%;flex:none;width:10px;height:10px}.fp-step-name{flex:1;min-width:0;font-weight:600}.fp-step-spec{font-weight:400;font-size:var(--font-size-xs);color:var(--text-dim);display:block}.fp-step-state{font-size:var(--font-size-xs);color:var(--text-dim);white-space:nowrap;flex:none}.fp-step.is-done .fp-step-name{color:var(--text-dim);font-weight:400}.fp-step.is-current{background:var(--status-fermenting-bg);border-top-color:#0000;border-radius:6px;padding-left:8px;padding-right:8px}.fp-step.is-current .fp-step-state{color:var(--text);font-weight:600}.fp-inline{font-size:var(--font-size-xs);color:var(--text-dim);white-space:nowrap;margin-top:3px}.fs-head,.fs-row{grid-template-columns:1.3fr 1.2fr .8fr .8fr .8fr auto;align-items:center;gap:8px;display:grid}.fs-head{font-size:var(--font-size-xs);color:var(--text-dim);margin-bottom:4px}.fs-row{margin-bottom:8px}.fs-actions{white-space:nowrap;align-items:center;gap:2px;display:flex}.icon-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;min-width:36px;min-height:36px;font:inherit;background:0 0;border-radius:6px}.icon-btn:disabled{opacity:.35;cursor:default}.ms-head,.ms-row{grid-template-columns:2fr 1.2fr .9fr .9fr 56px;align-items:center;gap:8px;display:grid}.ms-head{font-size:var(--font-size-xs);color:var(--text-dim);margin-bottom:4px}.ms-row{margin-bottom:8px}.ms-head[hidden]{display:none}.ms-dec{margin:calc(var(--space-1) * -1) 0 var(--space-3);padding:var(--space-2) var(--space-3);background:var(--panel-2);border-radius:var(--radius)}.ms-dec-fields{gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));display:grid}.ms-dec-fields label{font-size:var(--font-size-xs)}.ms-dec .field-help{margin-top:var(--space-2)}.ms-dec-warn{color:var(--warning-text);font-weight:600}.ms-templates{align-items:center;gap:var(--space-2);margin-top:var(--space-3);flex-wrap:wrap;display:flex}@media (width<=760px){.fs-head,.ms-head{display:none}.fs-row,.ms-row{border-bottom:1px solid var(--border);grid-template-columns:1fr 1fr;padding-bottom:8px}}.le-row{grid-template-columns:2fr 1fr auto;align-items:center;gap:8px;margin-bottom:8px;display:grid}.le-row-hop{grid-template-columns:2fr 1fr 1.2fr 1fr 1fr auto}.le-row-misc{grid-template-columns:2fr .8fr .7fr 1fr .9fr 1.2fr auto}.le-row-ferm{grid-template-columns:2fr 1fr .9fr 1.3fr auto}@media (width<=760px){.le-row,.le-row-hop,.le-row-misc,.le-row-ferm{grid-template-columns:1fr 1fr}}.table-scroll{overflow-x:auto}.stock-actions{flex-wrap:wrap;gap:10px;display:flex}.po-line{grid-template-columns:1fr 2fr .8fr .7fr .9fr .9fr .7fr auto;align-items:end;gap:8px;margin-bottom:10px;display:grid}.po-line label{margin-top:0}.po-line-remove{align-self:end;padding-bottom:8px}.po-summary{border-top:1px solid var(--border);margin-top:14px;padding-top:12px}.po-totals{text-align:right;color:var(--text-dim);font-size:var(--font-size-md);margin-top:8px}@media (width<=900px){.po-line{grid-template-columns:1fr 1fr}.po-line-remove{padding-bottom:0}}:root{--radius-lg:14px;--shadow-card:0 1px 3px #16293f14, 0 1px 2px #16293f0a;--shadow-modal:0 4px 16px #0000001f;--overlay:#00000080;--font-size-xs:11px;--font-size-sm:12px;--font-size-md:13px;--font-size-base:14px;--font-size-lg:15px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--warning-text:#8a5100;--success-text:#157038;--danger-text:#a3202e;--link-text:#255dcc;--control-h:48px;--control-h-sm:40px;--radius-sm:6px;--radius-control:9px;--radius-popover:12px;--radius-dialog:20px;--shadow-mini:0 1px 0 1px #0000000a;--shadow-popover:0 7px 12px 3px #16293f1a;--overlay-alert:#000c;--focus-soft:0 0 0 3px #16293f2b;--press-scale:.98;--font-size-xl:16px;--font-size-2xl:18px;--space-5:20px;--space-6:24px;--space-7:32px}.stat-row{flex-wrap:wrap;gap:10px;display:flex}.stat-row .stat{flex:140px}.stat-row.cols-2>*{flex-basis:calc(50% - 5px)}.tile-lifecycle-bar{background:var(--panel-2);border-radius:999px;height:8px;margin-bottom:14px;display:flex;overflow:hidden}.tile-lifecycle-bar .seg{background:var(--seg-color,var(--border))}.tile-lifecycle-bar .seg:empty{display:none}.status-tile{box-shadow:var(--shadow-card);flex-direction:column;gap:2px;display:flex}.status-tile .tile-icon{opacity:.85;font-size:18px;line-height:1}.data-list{flex-direction:column;gap:8px;display:none}.data-list-row{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:10px 12px}.data-list-row .dl-primary{justify-content:space-between;align-items:center;gap:8px;font-weight:600;display:flex}.data-list-row .dl-secondary{color:var(--text-dim);font-size:var(--font-size-sm);flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.bd-start{background:var(--status-brewing-bg);border-radius:8px;margin-bottom:12px;padding:12px 14px}.bd-start p{font-size:var(--font-size-md);margin:0 0 10px}.bd-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.bd-left{font-weight:600;font-size:var(--font-size-md)}.bd-toggles{gap:6px;display:flex}.bd-toggle{border:1px solid var(--border);background:var(--panel);color:var(--text-dim);min-height:36px;font:inherit;font-size:var(--font-size-xs);cursor:pointer;border-radius:999px;padding:6px 12px}.bd-toggle.on{border-color:var(--status-packaged);color:var(--status-packaged);font-weight:600}.ft-bd-prep{--seg:var(--status-planning)}.ft-bd-mash{--seg:var(--status-brewing)}.ft-bd-sparge{--seg:var(--accent-2)}.ft-bd-boil{--seg:#d9480f}.ft-bd-whirlpool{--seg:#0d9488}.ft-bd-transfer{--seg:var(--status-packaged)}.ft-fill{background:var(--text);opacity:.75;height:6px;position:absolute;bottom:0;left:0}.ft-tick-prompt{background:var(--accent);opacity:.9}.bd-phases{scrollbar-width:none;gap:4px;margin:12px 0 10px;display:flex;overflow-x:auto}.bd-phase-btn{border:1px solid var(--border);background:var(--panel);color:var(--text-dim);min-height:40px;font:inherit;font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;border-radius:8px;flex:auto;padding:8px 6px}.bd-phase-btn.is-done{color:var(--status-packaged)}.bd-phase-btn.is-current{border-color:var(--status-brewing);color:var(--text);font-weight:600}.bd-phase-btn.is-viewing{background:var(--panel-2);box-shadow:inset 0 -3px 0 var(--accent)}.bd-phase-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.bd-steps{margin:0;padding:0;list-style:none}.bd-step{border-top:1px solid var(--border);padding:8px 0}.bd-step:first-child{border-top:none}.bd-step.is-done .bd-line,.bd-step.is-todo .bd-line{color:var(--text-dim)}.bd-tick{color:var(--status-packaged);font-weight:700}.bd-took{font-size:var(--font-size-xs);color:var(--text-dim);margin-left:4px}.bd-mini{font-size:var(--font-size-xs);color:var(--text-dim);margin:4px 0 0;padding-left:18px}div.bd-mini{padding-left:0}.bd-step.is-current{border-top:none;padding:6px 0}.bd-card{border:2px solid var(--status-brewing);border-radius:var(--radius);background:var(--panel);padding:14px}.bd-card-phase{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.bd-card-title{color:var(--text);margin:2px 0 10px;font-size:20px;line-height:1.25}.bd-sub{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim);margin:10px 0 4px}.bd-count{margin-top:0}.bd-list{font-size:var(--font-size-md);margin:0 0 6px;padding-left:18px}.bd-list li{padding:2px 0}.bd-checks{margin:0;padding:0;list-style:none}.bd-checks li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;display:flex}.bd-checks .check-row{min-height:44px;font-size:var(--font-size-md);flex:1;margin:0;padding:10px 0}.bd-checks input[type=checkbox]{width:20px;height:20px}.bd-prep-add{gap:8px;margin-top:10px;display:flex}.bd-prep-add input{flex:1;min-width:0}.bd-clock{background:var(--panel-2);border-radius:8px;margin:6px 0 8px;position:relative;overflow:hidden}.bd-clock-fill{background:var(--status-packaged-bg);position:absolute;inset:0 auto 0 0}.bd-clock-text{text-align:center;font-variant-numeric:tabular-nums;color:var(--text);padding:6px 0;font-size:40px;font-weight:700;display:block;position:relative}.bd-clock.is-paused .bd-clock-text{color:var(--text-dim)}.bd-clock.is-over .bd-clock-text{color:var(--danger)}.bd-alert{background:var(--status-brewing-bg);color:#7a4700;border-radius:8px;margin-bottom:8px;padding:10px 12px;font-weight:600}.bd-adds{margin:0 0 6px;padding:0;list-style:none}.bd-add{border-top:1px solid var(--border);grid-template-columns:96px 1fr auto;align-items:center;gap:8px;padding:8px 0;display:grid}.bd-add-when{font-size:var(--font-size-sm);color:var(--text-dim);font-weight:600}.bd-add-what{font-size:var(--font-size-md)}.bd-add-state{font-size:var(--font-size-sm);color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap}.bd-add.is-due{background:var(--status-brewing-bg);border-top-color:#0000;border-radius:8px;padding:8px}.bd-add.is-due .bd-add-when,.bd-add.is-due .bd-add-what{color:var(--text);font-weight:700}.bd-add.is-added .bd-add-what{color:var(--text-dim);text-decoration:line-through}.bd-add.is-added .bd-add-state{color:var(--status-packaged);font-weight:600}.bd-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.bd-actions .btn{min-height:48px}.bd-primary{font-size:var(--font-size-lg);flex:100%}.bd-secondary{flex-wrap:wrap;gap:18px;margin-top:12px;display:flex}.bd .link-btn{align-items:center;min-height:44px;margin:-10px -8px;padding:10px 8px;display:inline-flex}.bd-form{margin-top:8px}.bd-readings{margin-top:14px}.bd-reading.is-pending>span{color:var(--status-brewing);font-weight:600}.bd-note{color:#9a5b00;font-weight:600}.bd-targets{flex-wrap:wrap;gap:8px;margin:0 0 10px;display:flex}.bd-targets>div{background:var(--panel-2);border-radius:8px;min-width:110px;padding:6px 10px}.bd-targets dt{font-size:var(--font-size-xs);color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em}.bd-targets dd{font-size:var(--font-size-lg);color:var(--text);font-variant-numeric:tabular-nums;margin:2px 0 0;font-weight:700}.bd-target-line{font-size:var(--font-size-xs);color:var(--text-dim);margin-top:3px}.bd-vs{font-weight:600}.bd-vs.is-on{color:var(--status-packaged)}.bd-vs.is-high,.bd-vs.is-low{color:#9a5b00}.bd-vs-note{color:var(--text-dim)}.bd-count-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.bd-bulk{gap:18px;display:flex}.bd-checks li.bd-hop{flex-wrap:wrap;align-items:flex-start;padding-bottom:10px}.bd-hop .check-row{flex:100%;padding-bottom:4px}.bd-lot{flex:100%;grid-template-columns:max-content minmax(0,320px);align-items:center;gap:2px 10px;padding-left:28px;display:grid}.bd-lot-label{font-size:var(--font-size-sm);color:var(--text-dim);margin:0}.bd-lot select{min-height:44px}.bd-lot-note{font-size:var(--font-size-xs);color:var(--text-dim);grid-column:2;line-height:1.4}.bd-lot-note.is-warn{color:var(--warning-text);font-weight:600}.bd-lot-none{font-size:var(--font-size-xs);color:var(--text-dim);flex:100%;padding:0 0 6px 28px}.bd-hop.needs-lot .bd-lot select{border-color:var(--status-brewing)}.lot-status{font-size:var(--font-size-sm);text-transform:none;letter-spacing:0;font-weight:600}.lot-status.is-warn{color:var(--warning-text)}.lot-status.is-ok{color:var(--success-text)}.lot-status.is-ok:before{content:"✓ "}.bd-lot-summary{background:var(--status-brewing-bg);color:var(--warning-text);font-size:var(--font-size-md);border-radius:8px;align-items:flex-start;gap:8px;margin-top:12px;padding:8px 12px;line-height:1.4;display:flex}.bd-lot-summary .link-btn{color:var(--warning-text);flex:none;margin-left:auto}@media (width<=640px){.bd-lot{grid-template-columns:1fr;padding-left:0}.bd-lot-note{grid-column:1}.bd-lot-none{padding-left:0}.bd-lot select{font-size:16px}}@media (pointer:coarse){.bd-lot select{font-size:16px}}.fp-pressure{border:1px solid var(--border);border-radius:8px;margin:10px 0;padding:8px 12px}.fp-pressure-head{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--series-pressure);font-weight:700}.fp-pressure ul{margin:4px 0 0;padding:0;list-style:none}.fp-pr{border-top:1px solid var(--border);font-size:var(--font-size-sm);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.fp-pr:first-child{border-top:none}.fp-pr-detail{color:var(--text-dim);font-size:var(--font-size-xs);margin-top:2px}.fp-pr.is-due{background:var(--status-brewing-bg);border-top-color:#0000;border-radius:6px;padding:8px}.fp-pr.is-done strong{color:var(--text-dim);font-weight:600}.fp-pr-now{font-size:var(--font-size-xs);color:#9a5b00;text-transform:uppercase;font-weight:700}.fp-pr-state{font-size:var(--font-size-xs);color:var(--status-packaged);white-space:nowrap;font-weight:600}.fp-pr-action{flex:none}.fb-row{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.fb-btn{font:inherit;font-size:var(--font-size-xs);border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;padding:2px 10px}.fb-btn.is-on{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.ai-cost-total{font-size:var(--font-size-lg,18px);margin:12px 0}.guide-section h3{margin-top:0}.guide-section p,.guide-section li{line-height:1.55}.guide-section li+li{margin-top:4px}.guide-section a{color:var(--accent)}.guide-toc{gap:var(--space-3) var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.guide-toc-group h3{font-size:var(--font-size-md);margin:0 0 var(--space-1)}.guide-toc-group ul{margin:0;padding-left:18px}.guide-toc-group li{line-height:1.6}.guide-group-title{font-size:var(--font-size-lg);margin:24px 0 8px}.guide-link{font-size:var(--font-size-md);align-items:center;gap:4px;min-height:32px;display:inline-flex}.guide-link .icon{flex-shrink:0}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.page-head h2{margin-right:auto}.guide-panel-overlay{background:var(--overlay);z-index:300;justify-content:flex-end;display:none;position:fixed;inset:0}.guide-panel-overlay.open{display:flex}.guide-panel{background:var(--panel);width:min(440px,100%);height:100%;box-shadow:var(--shadow-modal);flex-direction:column;display:flex}.guide-panel-head{padding:var(--space-4);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;display:flex}.guide-panel-head h2{margin:0;font-size:18px}.guide-panel-head .btn{min-height:44px}.guide-panel-body{padding:0 var(--space-4) var(--space-4);flex:1;overflow-y:auto}.guide-panel-foot{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border)}.guide-panel-foot .link-btn{min-height:44px}@media (width<=640px){.guide-panel{width:100%}}.bh-metric{gap:6px;margin:8px 0 4px;display:grid}.bh-bar{background:var(--border);border-radius:999px;height:8px;overflow:hidden}.bh-bar span{background:var(--accent);height:100%;display:block}.bh-queues{margin:0;padding:0;list-style:none}.bh-queues li{border-top:1px solid var(--border);padding:6px 0}.bh-queues li:first-child{border-top:none}.bh-count{min-width:2.2em;font-weight:700;display:inline-block}.bh-count.is-waiting{color:#9a5b00}.fb-comment{font-size:var(--font-size-xs);color:var(--text-dim);font-style:italic}.bd-summary{border:2px solid var(--status-packaged);border-radius:var(--radius);background:var(--panel);margin:12px 0;padding:12px 14px}.bd-summary .bd-sub:first-child{color:var(--status-packaged);margin-top:0;font-weight:700}.tool-tabs{flex-wrap:wrap;margin-bottom:12px}.tool-fields{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 14px;display:grid}.tool-result{background:var(--panel-2);border-radius:8px;margin-top:14px;padding:12px 14px}.tool-answer{font-size:var(--font-size-lg);color:var(--text);margin:2px 0 6px}.tool-answer.ok{color:var(--status-packaged);font-weight:600}.tool-list{font-size:var(--font-size-md);margin:4px 0 8px;padding-left:20px}.tool-stats{flex-wrap:wrap;gap:8px;margin:0 0 8px;display:flex}.tool-stats>div{background:var(--panel);border-radius:8px;padding:6px 10px}.tool-stats dt{font-size:var(--font-size-xs);color:var(--text-dim);text-transform:uppercase}.tool-stats dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-weight:700}.tool-records{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.other-timers>summary{cursor:pointer;list-style:revert}@media (width<=480px){.bd-add{grid-template-columns:1fr auto}.bd-add-when{grid-column:1/-1}.bd-card{padding:12px}}input.ghost-input::placeholder{color:var(--text-dim);opacity:.8;font-style:italic}:is(input,textarea,select).save-failed,[data-tag-field].save-failed{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.ebc-swatch{border:1px solid var(--border);background:var(--ebc-hex,var(--panel-2));vertical-align:middle;border-radius:50%;width:22px;height:22px;display:inline-block}@media (width<=640px){.stat-row.cols-2>*{flex-basis:100%}.table-wrap{display:none}.data-list{display:flex}.recipe-grid-2{grid-template-columns:1fr}}@media (width<=768px){#sidebarToggle{display:block}#mainNav button{min-height:44px}#sidebar{z-index:130;transition:left .2s;position:fixed;top:0;bottom:0;left:-240px;overflow-y:auto;box-shadow:2px 0 12px #00000026}#sidebar.open{left:0}#sidebar.open~#sidebarBackdrop{z-index:125;background:#0006;display:block;position:fixed;inset:0}main{padding-top:60px}.trackers-strip:not([hidden]){z-index:110;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:2px 6px;display:block;position:sticky;top:62px;box-shadow:0 2px 8px #00000014}}#packagedLabelsContent{display:none}@media print{#packagedLabelsContent{display:block}body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{color:#000;background:#fff;border:none;width:100%;padding:0;position:absolute;top:0;left:0}.print-area h2,.print-area h3{color:#000}.print-area table,.print-area th,.print-area td{color:#000;border-color:#ccc}.print-area .label,.print-area .empty{color:#555}.print-area .stat{background:#f4f4f4}.print-area .label-card{color:#000;background:#fff;border:1px solid #999}.print-area .label-style,.print-area .label-meta{color:#444}.print-area .bjcp-label{color:#333;background:#eee}.print-area .bjcp-label.ok{color:#3c763d;background:#dff0d8}.print-area .bjcp-label.bad{color:#a94442;background:#f2dede}.print-area .bjcp-track{background:#f5f5f5}.print-area .bjcp-fill{background:#c8e6c0}.print-area .bjcp-edge-label{color:#555}}.card-head-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.seg-toggle,.segmented-track{background:var(--panel-2);border-radius:var(--radius);flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.seg-toggle button,.segmented-option span{justify-content:center;align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:calc(var(--radius) - 3px);color:var(--text-dim);font:inherit;font-size:var(--font-size-base);cursor:pointer;background:0 0;border:none;font-weight:500;display:inline-flex}.seg-toggle button:hover,.segmented-option:hover span{color:var(--text)}.seg-toggle button[aria-pressed=true],.segmented-option input:checked+span{background:var(--panel);color:var(--text);box-shadow:var(--shadow-card);font-weight:700}.seg-toggle button:focus-visible,.segmented-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:1px}.segmented{border:none;min-width:0;margin:0;padding:0}.segmented-option{display:inline-flex;position:relative}.segmented-option input{opacity:0;width:1px;height:1px;margin:0;position:absolute}.segmented[disabled] .segmented-option span{cursor:not-allowed;opacity:.6}.head-total{color:var(--text-dim);text-transform:none;letter-spacing:normal;font-weight:400}.hop-sub{font-size:var(--font-size-xs);color:var(--text-dim);display:block}.hop-stage-summary{border-top:1px solid var(--border);font-size:var(--font-size-sm);color:var(--text-dim);flex-wrap:wrap;justify-content:flex-end;gap:4px 16px;margin-top:8px;padding-top:8px;display:flex}.hop-stage-summary strong{color:var(--text);font-weight:600}.pct-running-total{text-align:right;color:var(--text-dim);margin-top:10px}.pct-running-total.off strong{color:var(--danger)}.cal-delta,.cal-n{font-size:var(--font-size-xs);color:var(--text-dim)}.cal-suggest{font-size:var(--font-size-sm);color:#9a5b00;background:var(--status-brewing-bg);white-space:nowrap;border-radius:4px;padding:2px 6px;font-weight:700}.cal-insights{margin:0;padding:0;list-style:none}.cal-insights li{border-bottom:1px solid var(--border);font-size:var(--font-size-md);padding:8px 0}.cal-insights li:last-child{border-bottom:none}.cal-insight-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;font-weight:700;display:flex}.nav-badge{background:var(--danger);color:#fff;min-width:20px;font-size:var(--font-size-xs);text-align:center;border-radius:999px;margin-left:8px;padding:1px 6px;font-weight:700;line-height:16px;display:inline-block}nav button.active .nav-badge{background:var(--accent-text);color:var(--accent)}.tap-board{flex-direction:column;gap:8px;display:flex}.tap-row.is-off{opacity:.7}.tap-row.is-off:focus-within{opacity:1}.tap-row-desc{white-space:pre-line;margin:6px 0 0}.tap-row-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.tap-row-actions select{min-height:44px}.dl-secondary a{color:var(--accent)}.tap-switch{min-height:44px;font-size:var(--font-size-md);color:var(--text);cursor:pointer;align-items:center;gap:8px;margin:0;padding:0 10px 0 4px;font-weight:600;display:inline-flex}.tap-switch input{appearance:none;background:var(--text);cursor:pointer;border:none;border-radius:999px;width:40px;height:24px;margin:0;transition:background .15s;position:relative}.tap-switch input:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:3px;left:3px}.tap-switch input:checked{background:var(--status-packaged)}.tap-switch input:checked:after{transform:translate(16px)}.tap-switch input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.checklist-item.is-done>span:first-child{color:var(--text-dim)}.dryhop-mini-form{border-bottom:1px solid var(--border);padding:8px 0}.dryhop-mini-form .line-item-row{margin-bottom:0}.note-card{padding:12px 14px}.note-card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.note-card-head .note-toggle{font-size:var(--font-size-md);text-align:left;font-weight:700}.note-card-meta{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.note-card-actions{flex-wrap:wrap;gap:8px;margin-top:10px}.note-body{border-top:1px solid var(--border);margin-top:10px;padding-top:10px}.note-body h3,.note-body h4,.note-body h5{margin:12px 0 4px}.note-body h3:first-child,.note-body h4:first-child,.note-body h5:first-child{margin-top:0}.note-body p{margin:0 0 8px}.note-body ul{margin:0 0 8px;padding-left:20px}.note-body li{margin-bottom:2px}.note-body code{background:var(--panel-2);font-size:var(--font-size-sm);border-radius:4px;padding:1px 5px}.stat.dp-good{background:var(--status-packaged-bg);box-shadow:inset 3px 0 0 var(--status-packaged)}.stat.dp-marginal{background:var(--status-brewing-bg);box-shadow:inset 3px 0 0 var(--status-brewing)}.stat.dp-low{box-shadow:inset 3px 0 0 var(--danger);background:#dc35451f}.stat .dp-word{text-transform:uppercase;letter-spacing:.03em;margin-left:4px;font-size:11px;font-weight:600}.stat.dp-good .dp-word{color:#15803d}.stat.dp-marginal .dp-word{color:#9a5b00}.stat.dp-low .dp-word{color:#b42333}button.btn.btn-sm{font-size:var(--font-size-sm);min-height:32px;padding:5px 10px}.dh-day{min-width:48px;color:var(--status-fermenting);font-weight:600;display:inline-block}.review-summary{color:var(--text-dim);margin-bottom:10px;font-size:13px}.reading-headline{margin-bottom:12px}.rh-items{flex-wrap:wrap;align-items:baseline;gap:6px 22px;display:flex}.rh-item{align-items:baseline;gap:6px;display:flex}.rh-label{font-size:var(--font-size-xs);color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}.rh-value{color:var(--text);font-size:20px;font-weight:600}.rh-progress{background:var(--status-packaged-bg);border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.rh-progress-fill{background:var(--status-packaged);border-radius:999px;height:100%}.rh-meta{font-size:var(--font-size-xs);color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:4px;display:flex}.rc-host{min-height:60px}.dash-chart{margin-top:14px}.rc-wrap{position:relative}.rc-svg{max-width:100%;height:auto;font-family:inherit;display:block;overflow:visible}.rc-grid{stroke:var(--border);stroke-width:1px;opacity:.7}.rc-axis{stroke:var(--border);stroke-width:1px}.rc-tick{fill:var(--text-dim);font-variant-numeric:tabular-nums;font-size:11px}.rc-panel{fill:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.rc-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.rc-gravity{stroke:var(--series-gravity)}.rc-temp{stroke:var(--series-temp)}.rc-dot{stroke:var(--panel);stroke-width:2px}.rc-gravity-dot{fill:var(--series-gravity)}.rc-temp-dot{fill:var(--series-temp)}.rc-psi{stroke:var(--series-pressure)}.rc-psi-dot{fill:var(--series-pressure)}.rc-target{stroke:var(--text-dim);stroke-width:1px;stroke-dasharray:2 4}.rc-target-label{fill:var(--text-dim);font-size:10px}.rc-hop{stroke:var(--status-packaged);stroke-width:1.5px;stroke-dasharray:4 3}.rc-hop-label{fill:var(--text-dim);font-size:10px}.rc-cross{stroke:var(--text-dim);stroke-width:1px}.rc-hit{fill:#0000;cursor:crosshair;touch-action:pan-y}.rc-tip{z-index:5;pointer-events:none;background:var(--panel);border:1px solid var(--border);min-width:140px;max-width:220px;box-shadow:var(--shadow-card,0 2px 8px #0000001f);border-radius:8px;padding:8px 10px;font-size:12px;position:absolute}.rc-tip-when{color:var(--text-dim);margin-bottom:4px;font-size:11px}.rc-tip-row{align-items:center;gap:6px;display:flex}.rc-tip-row strong{font-variant-numeric:tabular-nums;margin-left:auto}.rc-key{background:0 0;border-radius:2px;width:10px;height:3px}.rc-key-g{background:var(--series-gravity)}.rc-key-t{background:var(--series-temp)}.rc-key-p{background:var(--series-pressure)}.no-psi .psi-col{display:none}.rc-tip-note{color:var(--text-dim);margin-top:4px;font-size:11px}.readings-details{margin-top:12px}.readings-details>summary{cursor:pointer;color:var(--accent);font-size:var(--font-size-sm);padding:6px 0}.reading-row{cursor:pointer}.row-actions{white-space:nowrap;text-align:right}table.tva th.num,table.tva td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.tva-val.ok{color:var(--status-packaged);font-weight:700}.tva-delta{margin-left:3px;font-size:11px;font-weight:600}.tva-delta.up{color:#b45309}.tva-delta.down{color:var(--accent)}.tva-note{color:var(--text-dim);font-size:11px;display:block}.tva-note .link-btn{font-size:11px}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;display:grid}.stat-sub{color:var(--text-dim);margin-top:2px;font-size:11px}.stable-note{background:var(--panel-2);font-size:var(--font-size-sm);color:var(--text-dim);border-radius:6px;margin-top:12px;padding:8px 10px}.stable-note.ok{background:var(--status-packaged-bg);color:#166534}.stable-note.warn{background:var(--status-brewing-bg);color:#9a5b00}.carb-psi{margin-top:10px}.carb-psi .value{font-size:26px}.autosave-note{font-size:var(--font-size-xs);color:var(--text-dim)}.check-row{font-size:var(--font-size-sm);color:var(--text);cursor:pointer;align-items:center;gap:8px;margin-top:12px;display:flex}.check-row input{width:auto;margin:0}.pill.warn-pill{background:var(--status-brewing-bg);color:#9a5b00}.plain-list{font-size:var(--font-size-sm);margin:4px 0 0;padding:0;list-style:none}.plain-list li{padding:2px 0}.tq-head{color:var(--text);font-weight:600}.tq-scales{gap:6px;margin-top:10px;display:grid}.tq-row{font-size:var(--font-size-sm);grid-template-columns:120px 1fr 150px;align-items:center;gap:10px;display:grid}.tq-label{color:var(--text-dim);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em}.tq-bar{background:var(--panel-2);border-radius:999px;gap:2px;height:8px;display:flex;overflow:hidden}.tq-seg.tq-right{background:var(--status-packaged)}.tq-seg.tq-low{background:var(--accent)}.tq-seg.tq-high{background:#b45309}.tq-text{color:var(--text-dim)}.tq-text.lean{color:var(--text);font-weight:600}.tq-block{margin-top:12px}.tq-block .tq-label{margin-bottom:4px;display:block}.pill.sev-real_problem{color:#a3202e;background:#dc354524}.pill.sev-worth_fixing{background:var(--status-brewing-bg);color:#9a5b00}.pill.sev-nitpick{background:var(--panel-2);color:var(--text-dim)}#tqChangeWrap{margin-top:8px}@media (width<=640px){.tq-row{grid-template-columns:1fr;gap:2px}}#tqOffNotes .tag-chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.review-lessons{border-top:1px solid var(--border);margin-top:12px;padding-top:8px}.review-lessons h4{font-size:var(--font-size-sm,13px);margin:0}.review-lesson{padding:6px 0}.review-lesson-body{color:var(--text-dim);white-space:pre-line;margin-top:2px;font-size:12px}.pill.lesson-approved{color:#1e7b34;background:#28a74524}.pill.lesson-rejected{color:#a3202e;background:#dc354524}.form-section-head{border-top:1px solid var(--border);font-size:var(--font-size-md);margin:16px 0 4px;padding-top:10px}label.form-section-head{color:var(--text);font-size:var(--font-size-md);margin:16px 0 4px;display:block}.field-label{color:var(--text-dim);margin:8px 0 3px;font-size:12px;display:block}.check-group{flex-wrap:wrap;gap:4px 14px;display:flex}.check-option{min-height:36px;font-size:var(--font-size-sm);color:var(--text);align-items:center;gap:6px;margin:0;display:inline-flex}.check-option input{width:auto}.msg.warn{background:var(--status-brewing-bg);color:var(--warning-text)}.research-card h3{margin:0}.research-table th[scope=row]{white-space:nowrap;vertical-align:top;font-weight:600}.research-table td{vertical-align:top;font-size:var(--font-size-sm)}.research-row-same{opacity:.6}.tag-chip-static{cursor:default;min-height:26px;margin:2px 0;padding:3px 9px}.tag-chip-new{border-color:var(--accent);font-weight:600}.pill.conf-high{color:#1e7b34;background:#28a74524}.pill.conf-medium{background:var(--status-brewing-bg);color:#9a5b00}.pill.conf-low{color:#a3202e;background:#dc354524}.empty-inline{color:var(--text-dim)}tr.row-clickable{cursor:pointer}tr.row-clickable:hover td{background:var(--panel-2)}.spec-sheet-table th[scope=row]{vertical-align:top;width:34%;color:var(--text-dim);font-weight:600}.spec-sheet-table td{vertical-align:top}.spec-tag-group{margin:2px 0 4px}.pill.pill-house-rule{color:#1d4ed8;background:#2563eb1f;font-weight:600}.designer-layout{align-items:flex-start;gap:16px;display:flex}.designer-list-pane{flex:0 0 300px}.designer-workspace{flex:auto;min-width:0}.designer-run-item{text-align:left;cursor:pointer;width:100%;min-height:44px;font:inherit;color:inherit;background:0 0;border:none;border-radius:6px;margin-bottom:4px;padding:8px 10px;display:block}@media (hover:hover){.designer-run-item:hover{background:var(--panel-2)}}.designer-run-item.active{background:var(--panel-2);box-shadow:inset 3px 0 0 var(--accent)}.designer-run-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.designer-row-line{align-items:center;gap:8px;min-width:0;display:flex}.designer-row-line+.designer-row-line{margin-top:3px}.designer-row-line>.truncate{flex:auto;min-width:0}.designer-row-line>.pill{white-space:nowrap;flex:none}.designer-row-cost{white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:auto}.designer-see-all{align-items:center;min-height:44px;margin:0;padding:0 2px;display:inline-flex}.designer-sec-head{align-items:center;gap:8px;margin-bottom:6px;display:flex}.designer-sec-head h3{margin:0}.designer-sec-head .btn{margin-left:auto}.designer-list-sec+.designer-list-sec{border-top:1px solid var(--border);margin-top:10px;padding-top:12px}.designer-list{margin:0}.designer-list li{padding:0}.designer-list-filters{flex-wrap:wrap;align-items:end}.designer-list-filters>*{flex:180px}.designer-list-filters :is(input,select){min-height:44px}.designer-full-list .designer-run-item{border-bottom:1px solid var(--border);border-radius:0;margin:0;padding:10px 6px}.designer-full-list li:last-child .designer-run-item{border-bottom:none}.designer-run-title{font-weight:600;font-size:var(--font-size-sm)}.designer-run-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.designer-direction-grid{grid-template-columns:repeat(auto-fill,minmax(min(250px,100%),1fr));align-items:stretch;gap:14px;margin:12px 0;display:grid}.designer-direction-group{margin:12px 0}.designer-direction-group>.designer-direction-grid{margin:0}.designer-direction-card{flex-direction:column;gap:8px;margin-bottom:0;display:flex}.designer-direction-top{flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;margin:-10px -10px -4px 0;display:flex}.designer-pin-btn{width:44px;height:44px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;place-items:center;margin-left:auto;padding:0;display:grid}.designer-pin-btn[aria-pressed=true]{color:var(--warning-text)}.designer-pin-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media (hover:hover){.designer-pin-btn:hover{background:var(--panel-2)}}.designer-direction-title{font-size:var(--font-size-lg);overflow-wrap:anywhere;margin:0;font-weight:700;line-height:1.3}.designer-direction-meta{font-size:var(--font-size-sm);color:var(--text-dim);margin:0}.designer-direction-why{font-size:var(--font-size-md);color:var(--text);margin:0;line-height:1.45}.designer-direction-ingredients{font-size:var(--font-size-sm)}.designer-hop{display:block}.designer-hop-role{color:var(--text-dim)}.designer-direction-ingredients .designer-not-in-stock{color:var(--warning-text);font-weight:600}.designer-direction-foot{flex-direction:column;gap:8px;margin-top:auto;padding-top:4px;display:flex}.designer-direction-foot .btn{width:100%}.designer-direction-foot .ai-spend{text-align:center;white-space:normal;margin:0}.designer-direction-warn{font-size:var(--font-size-sm);margin:0}.designer-pick-intro{font-size:var(--font-size-md);color:var(--text-dim);max-width:75ch;margin:0 0 4px;line-height:1.45}.designer-step-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;display:flex}.designer-step-start,.designer-step-end{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.designer-step-end{margin-left:auto}.designer-workspace .card-head{flex-wrap:wrap;align-items:center}.designer-workspace .card-head>h3{overflow-wrap:anywhere;min-width:0}.designer-workspace .card-head-actions{margin-left:auto}.designer-field{margin-bottom:10px}.designer-suggested-pill{color:#1d4ed8;background:#2563eb1f;margin:2px 0 4px;display:inline-block}.pill.designer-pin-used,.pill.designer-pin-pill{color:var(--warning-text);background:#d9770624}.designer-direction-card.designer-direction-pinned{border-color:#b45309}.designer-direction-card.designer-direction-chosen{border:2px solid var(--accent);padding:15px}.pill.designer-chosen-pill{color:#1d4ed8;background:#2563eb1f;font-weight:600}.ai-spend-line{font-size:var(--font-size-sm);color:var(--text-dim);margin:10px 0 0}.designer-pin-actions{flex-wrap:wrap;gap:8px;display:flex}.designer-readonly-grid{grid-template-columns:1fr 1fr;gap:10px 14px;display:grid}.designer-readonly-grid .full{grid-column:1/-1}.designer-readonly{border:1px solid var(--border);background:var(--panel-2);overflow-wrap:anywhere;border-radius:6px;min-height:38px;padding:6px 10px}.designer-kv{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}.designer-kv dt{color:var(--text-dim)}.designer-kv dd{overflow-wrap:anywhere;margin:0}@media (width<=1000px){.designer-layout{flex-direction:column}.designer-list-pane{flex:none;width:100%;max-height:none}.designer-workspace{align-self:stretch}}@media (width<=800px){.designer-readonly-grid{grid-template-columns:1fr}}@media (width<=640px){.designer-workspace .row{flex-wrap:wrap}.designer-workspace .row>.btn{flex:100%}.designer-step-actions,.designer-step-start,.designer-step-end{flex-direction:column;align-items:stretch}.designer-step-end{margin-left:0}.designer-step-actions .btn{width:100%}.designer-step-actions .ai-spend,.designer-step-actions .ai-off-note{text-align:center;margin:0}.designer-full-head .card-head-actions{width:100%;margin-left:0}.designer-full-head .seg-toggle{width:100%}.designer-full-head .seg-toggle button{flex:1 1 0}.designer-review-head .card-head-actions{width:100%;margin-left:0}.designer-review-head .card-head-actions [data-action=continue-brief]{flex:auto}.modal-overlay .card:has(.ai-spend-line) .row{flex-wrap:wrap}.modal-overlay .card:has(.ai-spend-line) .row>.btn{flex:100%}}@media (width<=768px),(pointer:coarse){.designer-workspace :is(input,select,textarea){font-size:16px}}.designer-fit-out{color:var(--danger);font-weight:600}.designer-decision{margin:8px 0 14px}.designer-decision-recommended{font-weight:600}.designer-critique{border:1px solid var(--border);border-radius:var(--radius);margin:12px 0;padding:10px 12px}.designer-critique h4{margin:0}.designer-score.good{color:#15803d}.designer-score.low{color:#b42318}.designer-dim-scores{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.designer-issues li{margin:4px 0}.pill.designer-sev-high{color:#a3202e;background:#dc354524}.pill.designer-sev-medium{background:var(--status-brewing-bg);color:#9a5b00}details.collapsible{border-top:1px solid var(--border);padding:6px 0}details.collapsible>summary{cursor:pointer;align-items:center;gap:8px;min-height:36px;font-weight:600;list-style:none;display:flex}details.collapsible>summary::-webkit-details-marker{display:none}details.collapsible>summary:before{content:"▸";color:var(--text-dim);transition:transform .15s}details.collapsible[open]>summary:before{transform:rotate(90deg)}.collapsible-hint{font-weight:400;font-size:var(--font-size-sm);color:var(--text-dim)}details.collapsible[open] .collapsible-hint{display:none}.collapsible-body{padding:4px 0 6px 18px}.nv-list{flex-direction:column;gap:6px;display:flex}.nv-item{grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;padding:4px 0;display:grid}.nv-check-label{display:flex}.nv-done .nv-text{color:var(--text-dim);text-decoration:line-through}.nv-add-row{gap:8px;margin-top:10px;display:flex}.nv-add-row input{flex:1}.nv-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.toast-host{z-index:300;pointer-events:none;flex-direction:column;gap:8px;max-width:min(420px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast{pointer-events:auto;background:var(--panel);color:var(--text);border:1px solid var(--border);border-left:4px solid var(--status-packaged);border-radius:var(--radius);align-items:flex-start;gap:10px;padding:10px 12px;animation:.18s ease-out toast-in;display:flex;box-shadow:0 6px 20px #16293f29}.toast-error{border-left-color:var(--danger)}.toast-info{border-left-color:var(--accent)}.toast-icon{color:#fff;background:var(--status-packaged);border-radius:50%;flex-shrink:0;place-items:center;width:20px;height:20px;font-size:12px;font-weight:700;display:grid}.toast-error .toast-icon{background:var(--danger)}.toast-info .toast-icon{background:var(--accent)}.toast-text{flex:1;line-height:1.4}.toast-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;flex-shrink:0;min-width:28px;min-height:28px;margin:-4px -6px -4px 0;font-size:18px;line-height:1}.toast-leaving{opacity:0;transition:opacity .2s,transform .2s;transform:translateY(6px)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width<=640px){.toast-host{max-width:none;left:16px;right:16px}}.btn-spinner{vertical-align:-2px;border:2px solid;border-right-color:#0000;border-radius:50%;width:13px;height:13px;margin-right:7px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}button.btn.is-busy:disabled,button.btn.is-done:disabled{opacity:.85}button.btn.is-done{background:var(--status-packaged);color:#fff;border-color:var(--status-packaged)}.app-tooltip{z-index:400;background:var(--text);color:#fff;max-width:320px;font-size:var(--font-size-sm);pointer-events:none;opacity:0;border-radius:6px;padding:6px 9px;line-height:1.35;transition:opacity .1s;position:fixed}.app-tooltip.open{opacity:1}.truncate{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.work-progress{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel-2);margin:8px 0 10px;padding:12px}.work-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.work-pct{font-size:var(--font-size-sm);color:var(--text-dim);font-variant-numeric:tabular-nums}.progress-track{background:var(--panel);border-radius:4px;height:8px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .9s ease-out}.work-verb{color:var(--text-dim);font-size:var(--font-size-sm);margin-top:8px}.work-detail{color:var(--text-dim);font-size:var(--font-size-xs);margin-top:3px}@media (prefers-reduced-motion:reduce){.btn-spinner{animation-duration:2s}.progress-fill{transition:none}}.review-nudge{background:var(--status-packaged-bg);border-color:var(--status-packaged);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.review-nudge p{color:var(--text-dim);font-size:var(--font-size-sm);margin:4px 0 0}.review-nudge-actions{flex:none;align-items:center;gap:14px;display:flex}.review-nudge[hidden]{display:none}.change-list{margin:0 0 12px;padding-left:18px}.change-list li{margin:4px 0}.deviations-list .row-actions{gap:12px;display:flex}.dev-filters{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin-bottom:12px}.data-list.show-always{display:flex}.data-list-row .dl-actions{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.data-list-row.is-archived .dl-primary>span:first-child{color:var(--text-dim)}.brewery-title{align-items:center}.brewery-title h2{margin:0}.brewery-intro{margin:0 0 var(--space-3)}.brewery-subhead{font-size:var(--font-size-sm);margin:var(--space-4) 0 var(--space-2)}.brewery-note,.brewery-form{margin-top:var(--space-3)}.brewery-form-row{gap:var(--space-2);align-items:stretch;display:flex}.brewery-form-row input{flex:1;min-height:44px}.brewery-form-row .btn{flex:none}@media (width<=640px){.brewery-form-row{flex-direction:column}.brewery-form-row .btn{width:100%}.data-list-row .dl-actions .btn{flex:1}}.auth-gate .card{text-align:left}.auth-gate h1{text-align:center}.auth-gate .auth-intro{color:var(--text-dim);font-size:var(--font-size-sm);margin:0 0 var(--space-2)}.auth-gate input{min-height:44px}.auth-gate .auth-switch{margin-top:var(--space-4);font-size:var(--font-size-sm);color:var(--text-dim)}.credit-balance{margin:0 0 var(--space-1);color:var(--text-dim);font-size:var(--font-size-sm)}.credit-balance .credit-amount{color:var(--text);margin-right:var(--space-1);font-size:24px;font-weight:700}.sidebar-credit{min-height:32px;font-size:var(--font-size-sm);color:var(--text-dim);align-items:center;margin:2px 0 0 6px;padding:2px 0;text-decoration:none;display:inline-flex}.sidebar-credit[hidden]{display:none}.sidebar-credit:hover{color:var(--text);text-decoration:underline}.sidebar-credit[data-level=low]{color:#8a5300;font-weight:600}.sidebar-credit[data-level=out],.sidebar-credit[data-level=paused]{color:#b42318;font-weight:600}.credit-banner{margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius);border-left:4px solid var(--status-brewing);background:var(--status-brewing-bg);color:var(--text);font-size:13px}.credit-banner[data-level=out],.credit-banner[data-level=paused]{border-left-color:var(--danger);background:#dc35451a}.ai-off-note{margin-left:var(--space-2);font-size:var(--font-size-sm);color:#b42318;vertical-align:middle;display:inline-block}.import-intro{margin:-6px 0 var(--space-3)}.import-help{margin:0 0 var(--space-3)}.import-pick input[type=file]{min-height:44px;padding:8px}.import-table td{vertical-align:middle}.import-table select{max-width:360px;min-height:36px}.import-table input[type=checkbox]{width:18px;height:18px}.import-notes{color:var(--text-dim);font-size:var(--font-size-sm);max-width:360px}.import-actions-row{gap:var(--space-4);margin-bottom:var(--space-2);display:flex}.import-footer{margin-top:var(--space-3);flex:none}.import-footer>*{flex:none}.import-errors{margin:var(--space-1) 0 0;padding-left:20px}.import-pill-exact{background:var(--status-packaged-bg);color:#15803d}.import-pill-check{background:var(--status-brewing-bg);color:#8a5300}.import-problem{color:#b42318}.import-mode{border:0;margin:0;padding:0}.import-mode legend{font-size:var(--font-size-sm);color:var(--text-dim);margin-bottom:4px}.import-ai-offer{align-items:center;gap:var(--space-2) var(--space-3);margin:0 0 var(--space-3);flex-wrap:wrap;display:flex}.import-ai-offer>p{flex-basis:100%;margin:0}.sidebar-help{align-items:center;gap:var(--space-2);width:100%;min-height:44px;padding:var(--space-2) 14px;border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font:inherit;font-size:var(--font-size-md);cursor:pointer;text-align:left;background:0 0;display:flex}.sidebar-help:hover{background:var(--panel-2)}.sidebar-help.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.sidebar-help .nav-badge{margin-left:auto}.sidebar-help.active .nav-badge{background:var(--accent-text);color:var(--accent)}.help-intro{margin:calc(-1 * var(--space-2)) 0 var(--space-3)}.help-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.help-ticket{gap:var(--space-1);width:100%;min-height:44px;padding:var(--space-3);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font:inherit;text-align:left;cursor:pointer;flex-direction:column;display:flex}.help-ticket:hover{border-color:var(--accent)}.help-ticket.is-unread{border-left:4px solid var(--accent)}.help-ticket-top{justify-content:space-between;align-items:flex-start;gap:var(--space-2);display:flex}.help-ticket-subject{overflow-wrap:anywhere;font-weight:600}.help-ticket-meta{color:var(--text-dim);font-size:var(--font-size-sm);align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.help-new{color:var(--accent);font-weight:700}.help-chip{font-size:var(--font-size-xs);white-space:nowrap;border-radius:999px;flex:none;padding:3px 10px;font-weight:600;display:inline-block}.help-chip-sent{background:var(--panel-2);color:var(--text-dim)}.help-chip-open{background:var(--status-conditioning-bg);color:var(--text)}.help-chip-waiting{background:var(--status-brewing-bg);color:var(--warning-text)}.help-chip-solved{background:var(--status-packaged-bg);color:var(--success-text)}.help-form{flex-direction:column;display:flex}.help-form label{margin-top:var(--space-3)}.help-form label:first-child{margin-top:0}.help-form select,.help-form input[type=text],.help-form textarea{width:100%;min-height:44px}.help-form input[type=file]{min-height:44px;padding:var(--space-2)}.field-error{color:var(--danger-text);font-size:var(--font-size-sm);margin:var(--space-1) 0 0}.help-form [aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.help-shot-preview{align-items:center;gap:var(--space-3);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.help-shot-preview img,.help-shot-link img{border:1px solid var(--border);border-radius:var(--radius);max-width:min(100%,320px);max-height:220px}.help-shot-link{margin:var(--space-2) 0;display:inline-block}.help-details{margin-top:var(--space-4)}.help-details summary{cursor:pointer;min-height:44px;color:var(--text-dim);align-items:center;display:flex}.help-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--font-size-sm);background:var(--panel-2);padding:var(--space-3);border-radius:var(--radius);margin:0}.help-actions{margin-top:var(--space-4);flex:none}.help-actions>*{flex:none}.help-back{min-height:44px;margin-bottom:var(--space-2)}.help-thread-head{align-items:flex-start;gap:var(--space-2)}.help-thread-head h3{overflow-wrap:anywhere}.help-thread{margin:var(--space-3) 0;gap:var(--space-3);flex-direction:column;padding:0;list-style:none;display:flex}.help-msg{background:var(--panel-2);border-radius:var(--radius);padding:var(--space-3);max-width:92%}.help-msg.from-us{background:var(--panel);border:1px solid var(--border);border-left:4px solid var(--accent);margin-left:auto}.help-msg.is-system{border:1px dashed var(--border);max-width:100%;color:var(--text-dim);background:0 0}.help-msg-head{justify-content:space-between;gap:var(--space-2);font-size:var(--font-size-sm);margin-bottom:var(--space-1);flex-wrap:wrap;display:flex}.help-msg-head span{color:var(--text-dim)}.help-msg-body{white-space:pre-wrap;overflow-wrap:anywhere}@media (width<=640px){.help-msg{max-width:100%}.help-actions .btn{flex:100%}}.help-thread-head h3{text-transform:none;letter-spacing:normal;font-size:var(--font-size-lg);color:var(--text)}.pref-intro{max-width:70ch}.pref-card{max-width:760px}.pref-rows{flex-direction:column;display:flex}.pref-row{align-items:center;gap:var(--space-2) var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border);grid-template-columns:minmax(160px,1fr) auto;display:grid}.pref-row:last-child{border-bottom:none}.pref-title{font-weight:600}.pref-note{grid-column:1/-1;max-width:70ch;margin:0}@media (width<=640px){.pref-row{grid-template-columns:1fr}}.recipe-view-switch{margin:0 0 var(--space-3)}.recipe-version-state{font-size:var(--font-size-sm);color:var(--text-dim);margin:2px 0 var(--space-3)}.version-card.version-draft{border-left:4px solid var(--accent)}.version-note{margin:0 0 10px;font-style:italic}.change-row{border-top:1px solid var(--border);padding:8px 0}.change-row:first-child{border-top:0}.change-summary{font-size:var(--font-size-sm)}.change-meta{font-size:var(--font-size-xs,12px);color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.change-note{font-size:var(--font-size-sm);color:var(--text-dim);margin-top:4px}.proposal-source{font-size:var(--font-size-sm);color:var(--text-dim);margin:12px 0 8px}.proposal-stats{width:auto;font-size:var(--font-size-sm);margin:0 0 12px}.proposal-stats th,.proposal-stats td{text-align:left;padding:4px 14px 4px 0}.proposal-moved{color:var(--text-dim);font-size:12px}.proposal-area{font-size:var(--font-size-sm);margin:14px 0 4px}.proposal-item{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 12px;padding:4px 0;display:flex}.proposal-item .proposal-check{flex:320px;min-height:44px}.proposal-item .link-btn{min-height:44px}.proposal-off .proposal-check span{color:var(--text-dim);text-decoration:line-through}.proposal-edit{flex:100%;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px 12px;padding:4px 0 8px 28px;display:grid}@media (width<=640px){.proposal-edit{grid-template-columns:1fr 1fr;padding-left:0}}#bmVersion .bm-choice{align-items:flex-start;min-height:44px;padding-top:6px;display:flex}#bmVersion .bm-choice input{margin-top:3px}.bm-choice-help{margin:2px 0 0;display:block}.bm-older{padding:0 0 6px 26px}.version-banner{margin:0 0 var(--space-3);border-radius:var(--radius);background:var(--surface-sunken,#f3f4f6);border-left:4px solid var(--accent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 16px;padding:12px 16px;display:flex}.version-banner[hidden]{display:none}.version-banner-actions{flex-wrap:wrap;gap:8px;display:flex}.proposal-alert{border-left:4px solid var(--accent)}.proposal-alert h3{font-size:var(--font-size-base,15px);margin:0 0 6px}.proposal-alert-row{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:6px 0;display:flex}.proposal-alert-row:first-of-type{border-top:0}.proposal-alert-row .btn{min-height:44px}.proposal-ai-working{display:block}.proposal-rationale{white-space:pre-line;border-radius:var(--radius);background:var(--surface-sunken,#f3f4f6);font-size:var(--font-size-sm);margin:0 0 12px;padding:10px 12px}.ai-action{flex-wrap:wrap;align-items:center;gap:4px 10px;display:inline-flex}.ai-spend{font-size:var(--font-size-sm);color:var(--text-dim);white-space:nowrap;margin:0 10px 0 4px}.ai-group-cost{z-index:2;background:var(--panel);border-top:1px solid var(--border);font-size:var(--font-size-sm);color:var(--text-dim);text-align:center;margin:12px 0 0;padding:8px 12px;line-height:1.4;position:sticky;bottom:0}.ai-group-cost .ai-off-note{margin-left:0;font-weight:600;display:inline}.recipe-readonly{border-left:4px solid var(--accent);padding-left:12px}.lane-c1{--lane:var(--lane-1)}.lane-c2{--lane:var(--lane-2)}.lane-c3{--lane:var(--lane-3)}.lane-c4{--lane:var(--lane-4)}.lane-c5{--lane:var(--lane-5)}.lane-c6{--lane:var(--lane-6)}.lane-c7{--lane:var(--lane-7)}.lane-c8{--lane:var(--lane-8)}.recipe-experiment{border-left:6px solid var(--lane,var(--accent));padding-left:12px}.recipe-experiment #recipeNextVersionCard,.recipe-experiment #recipeReviewCard,.recipe-experiment #recipeDesignNotesCard{display:none!important}.experiment-banner{border-left:6px solid var(--lane,var(--accent))}.experiment-rows{gap:8px;margin:8px 0 4px;display:grid}.experiment-row{border-left:4px solid var(--lane,var(--accent));background:var(--panel-2);border-radius:0 var(--radius) var(--radius) 0;padding:6px 0 6px 12px}.experiment-head{gap:4px;padding-right:10px;display:grid}.experiment-actions{flex-wrap:wrap;gap:8px;display:flex}.experiment-actions .btn{min-height:44px}.experiment-trial{border-top:1px solid var(--border);padding:6px 0}.experiment-trial .link-btn{min-height:32px}.experiment-status-open{color:var(--lane-3)}.version-adopted{font-size:var(--font-size-sm);margin:4px 0 8px}.version-spinoff{font-size:var(--font-size-sm);border-left:3px solid var(--text-dim);background:var(--panel-2);border-radius:0 6px 6px 0;margin:4px 0;padding:4px 8px}.history-layout{margin:0 0 var(--space-3)}@media (width<=640px){.history-layout{display:none}}.map-tools{flex-wrap:wrap;align-items:center;gap:4px 16px;margin-bottom:8px;display:flex}.map-scroll{overflow-x:auto}.recipe-map text{fill:var(--text);font-size:12.5px}.recipe-map .map-small{font-size:11px}.recipe-map .map-dim{fill:var(--text-dim)}.recipe-map .map-bold{font-weight:700}.recipe-map .map-node{cursor:pointer}.recipe-map .map-node:focus{outline:none}.recipe-map .map-node:focus-visible .map-ring,.recipe-map .map-node:hover .map-ring{stroke:var(--accent);stroke-width:3px}.experiment-filter{margin:0 0 var(--space-3);flex-wrap:wrap;align-items:center;gap:6px 12px;display:flex}.recipe-trends{--trend-band:#2f6fed14}.recipe-trends .card{margin-bottom:var(--space-3)}.trend-chart text,.recipe-trends svg text{fill:var(--text);font-size:11.5px}.recipe-trends svg .trend-dim{fill:var(--text-dim);font-size:11px}.recipe-trends svg .trend-label{font-weight:700}.trend-legend{font-size:var(--font-size-sm);flex-wrap:wrap;gap:4px 14px;margin-top:6px;display:flex}.trend-swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.trend-outcomes{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.trend-outcome{border-top:4px solid var(--lane,var(--accent));background:var(--panel-2);border-radius:0 0 var(--radius) var(--radius);gap:4px;padding:8px 10px;display:grid}.balance-out{color:var(--danger)}.recipe-readonly [data-edit-details],.recipe-readonly [data-edit-batch],.recipe-readonly [data-adjust-batch],.recipe-readonly [data-scale-recipe],.recipe-readonly [data-edit-water],.recipe-readonly [data-edit-mash-steps],.recipe-readonly [data-edit-fermentation],.recipe-readonly [data-edit-fermentables],.recipe-readonly [data-adjust-og],.recipe-readonly [data-adjust-pct],.recipe-readonly [data-edit-hops],.recipe-readonly [data-edit-yeastmisc],.recipe-readonly [data-edit-notes],.recipe-readonly [data-edit-pressure],.recipe-readonly .profile-actions,.recipe-readonly #recipeNextVersionCard,.recipe-readonly #recipeReviewCard,.recipe-readonly #recipeDesignNotesCard{display:none!important}.version-batches{margin:6px 0 4px}.version-batch{border-top:1px solid var(--border);padding:8px 0}.version-batch .link-btn{min-height:32px}.compare-pick{align-items:end}.compare-table{width:auto;min-width:60%;font-size:var(--font-size-sm)}.compare-table th,.compare-table td{text-align:left;vertical-align:top;padding:6px 14px 6px 0}.compare-move{color:var(--text-dim);white-space:nowrap;font-size:12px}.undo-clash{border:1px solid var(--border);border-radius:var(--radius);margin:10px 0;padding:8px 12px}.undo-clash legend{font-size:var(--font-size-sm);padding:0 4px}.undo-clash .check-option{min-height:44px;margin-right:18px}.head-with-guide{flex-wrap:wrap;align-items:baseline;gap:2px 12px;display:flex}.head-with-guide h2,.head-with-guide h3{margin-right:0}.modal-guide{margin:-6px 0 8px}.tank-group{margin:18px 0 8px}.tank-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.tank-card{align-content:start;gap:8px;margin-bottom:0;display:grid}.tank-card p{margin:0}.tank-card-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.tank-card-head h3{text-transform:none;letter-spacing:normal;font-size:var(--font-size-lg);color:var(--text);margin:0}.tank-toolbar-left{flex-wrap:wrap;align-items:center;gap:12px;display:inline-flex}.tank-code{background:var(--text);color:var(--accent-text);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;border-radius:5px;padding:1px 6px}.tank-caps{margin:0;padding-left:18px}.tank-meta{color:var(--text-dim);font-size:var(--font-size-sm)}.tank-out{border-color:#e8b765}.tank-status{font-size:var(--font-size-md);border-radius:6px;justify-self:start;padding:4px 8px}.tank-status-in{color:var(--success-text);background:#22c55e24}.tank-status-out{color:var(--warning-text);background:#fff4e0}.tank-status-retired{background:var(--panel-2);color:var(--text-dim)}.tank-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.tank-actions .btn{min-height:44px}.tank-number{align-items:stretch;display:flex}.tank-number-prefix{background:var(--text);color:var(--accent-text);border-radius:6px 0 0 6px;align-items:center;padding:0 10px;font-weight:700;display:flex}.tank-number input{border-top-left-radius:0;border-bottom-left-radius:0}.tank-status-set{border:0;gap:8px;margin:12px 0 0;padding:0;display:grid}.tank-status-set legend{margin-bottom:4px;padding:0}.choice-card{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;align-items:flex-start;gap:10px;min-height:44px;padding:10px 12px;display:flex}.choice-card:has(input:checked){border-color:var(--accent);background:#f2f6ff}.choice-card input{flex-shrink:0;width:18px;height:18px;margin-top:3px}.choice-card .field-help{display:block}.tank-choices{gap:8px;margin-top:8px;display:grid}.tank-choice-warn{margin:6px 0 0;display:block}.tank-why{font-size:var(--font-size-sm);color:var(--text-dim);margin-top:10px}.tank-why summary{cursor:pointer;align-items:center;min-height:32px;display:flex}.tank-why ul{margin:4px 0 0;padding-left:18px}.tank-now{border-top:1px solid var(--border);font-size:var(--font-size-md);gap:2px;padding-top:8px;display:grid}.tank-free{color:var(--success-text);font-weight:600}.tank-stays{display:grid}.tank-stay{border-top:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:start;gap:4px 12px;padding:10px 0;display:grid}.tank-stay:first-child{border-top:0}.tank-stay-when{color:var(--text-dim);font-size:var(--font-size-sm);font-variant-numeric:tabular-nums}.tank-stay-actions{flex-wrap:wrap;gap:4px 12px;display:flex}.tank-purpose{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.04em;background:var(--panel-2);color:var(--text);border-radius:4px;padding:2px 6px;font-weight:700}.tank-purpose-ferment{background:var(--status-fermenting-bg);color:#5b2fc0}.tank-purpose-condition,.tank-purpose-carbonate{background:var(--status-conditioning-bg);color:#0b5a85}.pill-bad{color:var(--danger-text);background:#dc35451f;font-weight:700}.pill-warn{color:var(--warning-text);background:#fff4e0;font-weight:700}@media (width<=640px){.tank-stay{grid-template-columns:1fr}}.ts-nav{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.ts-nav .btn{min-height:44px}.ts-scroll{border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);overflow-x:auto}.ts-grid{--ts-name-w:130px;min-width:900px;font-size:var(--font-size-sm)}.ts-row{grid-template-columns:var(--ts-name-w) 1fr;border-bottom:1px solid var(--border);min-height:52px;display:grid}.ts-body .ts-row:last-child{border-bottom:0}.ts-body{position:relative}.ts-head{background:var(--panel-2);min-height:0}.ts-name{border-right:1px solid var(--border);flex-direction:column;justify-content:center;padding:8px 10px;display:flex}.ts-name span{color:var(--text-dim);font-size:var(--font-size-xs)}.ts-track{grid-template-columns:repeat(var(--ts-days), 1fr);display:grid;position:relative}.ts-day{text-align:center;color:var(--text-dim);font-variant-numeric:tabular-nums;border-left:1px solid var(--border);padding:4px 0}.ts-dow{font-size:10px;display:block}.ts-today-head{color:var(--accent);font-weight:700}.ts-cell{border-left:1px solid #cddbea99}.ts-wknd{background:#e7eef799}.ts-bar{text-align:left;height:36px;font:inherit;cursor:pointer;z-index:1;border:1px solid #0000;border-radius:6px;padding:2px 6px;font-size:11px;line-height:1.3;position:absolute;top:8px;overflow:hidden}.ts-bar span{white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.ts-bar-name{font-weight:700}.ts-ferment{background:var(--status-fermenting-bg);border-color:var(--status-fermenting);color:#4a2399}.ts-condition,.ts-carbonate,.ts-serve{background:var(--status-conditioning-bg);border-color:var(--status-conditioning);color:#0b5a85}.ts-planned{border-style:dashed}.ts-clash{border:2px solid var(--danger-text);color:var(--danger-text);z-index:2;background:#dc35451f;height:26px;top:22px}.ts-bar:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.ts-clean{background:repeating-linear-gradient(135deg, var(--panel-2) 0 4px, #d5e1ee 4px 8px);border-radius:6px;height:36px;position:absolute;top:8px}.ts-out{color:var(--warning-text);background:repeating-linear-gradient(135deg,#fff4e0 0 6px,#fbe3bb 6px 12px);border-radius:6px;align-items:center;padding:4px 8px;font-size:11px;display:flex;position:absolute;inset:6px 0}.ts-today{background:var(--accent);z-index:3;pointer-events:none;width:2px;position:absolute;top:0;bottom:0}.ts-legend{color:var(--text-dim);font-size:var(--font-size-sm);flex-wrap:wrap;gap:6px 16px;margin-top:10px;display:flex}.ts-legend span:before{content:"";vertical-align:-1px;border:1px solid var(--border);border-radius:3px;width:14px;height:10px;margin-right:5px;display:inline-block}.ts-l-ferment:before{background:var(--status-fermenting-bg);border-color:var(--status-fermenting)!important}.ts-l-condition:before{background:var(--status-conditioning-bg);border-color:var(--status-conditioning)!important}.ts-l-planned:before{border-style:dashed!important;border-color:var(--text-dim)!important}.ts-l-clean:before{background:repeating-linear-gradient(135deg, var(--panel-2) 0 3px, #d5e1ee 3px 6px)}.ts-l-clash:before{background:#dc35451f;border:2px solid var(--danger-text)!important}.ts-detail{margin-top:12px}.ts-list{display:none}.ts-list-card h3{text-transform:none;letter-spacing:normal;color:var(--text);font-size:var(--font-size-lg)}.ts-list-row{border:0;border-top:1px solid var(--border);width:100%;min-height:44px;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 0;display:flex}@media (width<=640px){.ts-scroll{display:none}.ts-list{gap:10px;display:grid}}@keyframes ui-fade-in{0%{opacity:0}to{opacity:1}}@keyframes ui-pop-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.95)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes ui-panel-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.ui-overlay{background:var(--overlay);position:fixed;inset:0}.ui-overlay--alert{background:var(--overlay-alert)}.ui-overlay[data-state=open]{animation:.15s ease-out ui-fade-in}.ui-dialog{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-dialog);width:min(480px,100% - 32px);max-height:90vh;box-shadow:var(--shadow-popover);padding:var(--space-5);color:var(--text);position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.ui-dialog--wide{width:min(760px,100% - 32px)}.ui-dialog--xwide{width:min(1000px,100% - 32px)}.ui-dialog[data-state=open]{animation:.15s ease-out ui-pop-in}.ui-dialog-title{text-align:center;font-size:var(--font-size-2xl);margin:0 36px;font-weight:600;line-height:1.2}.ui-dialog-close{width:44px;height:44px;color:var(--text-dim);border-radius:var(--radius-control);cursor:pointer;background:0 0;border:none;place-items:center;display:grid;position:absolute;top:8px;right:8px}.ui-dialog-close:hover{background:var(--panel-2);color:var(--text)}.ui-dialog-rule{border:0;border-top:1px solid var(--border);margin:var(--space-5) calc(-1 * var(--space-5)) var(--space-6)}.ui-dialog-description{color:var(--text-dim);margin:0 0 var(--space-4)}.ui-dialog-footer{margin-top:var(--space-5);gap:10px;display:flex}.ui-confirm{width:min(512px,100% - 32px);padding:28px}.ui-confirm-title{font-size:var(--font-size-2xl);letter-spacing:-.01em;margin:0 0 12px;font-weight:600;line-height:1.2}.ui-confirm-body{color:var(--text-dim);margin:0 0 var(--space-6)}.ui-confirm-body p{margin:0 0 8px}.ui-confirm-actions{gap:10px;display:flex}.ui-confirm-actions .btn{min-height:var(--control-h);flex:1}@media (width<=400px){.ui-confirm-actions{flex-direction:column-reverse}}.ui-panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-popover);box-shadow:var(--shadow-popover);color:var(--text);z-index:300}.ui-panel[data-state=open]{animation:.15s ease-out ui-panel-in}.ui-listbox{max-height:384px;width:var(--bits-select-anchor-width,var(--bits-combobox-anchor-width,auto));min-width:200px;padding:12px 4px;overflow-y:auto}.ui-option{border-radius:var(--radius-sm);min-height:40px;font-size:var(--font-size-base);cursor:default;outline:none;justify-content:space-between;align-items:center;gap:8px;padding:0 8px 0 20px;display:flex}.ui-option[data-highlighted]{background:var(--panel-2)}.ui-option[data-disabled]{opacity:.5}.ui-option--empty{color:var(--text-dim)}.ui-option-text{flex-direction:column;display:flex}.ui-option-detail{color:var(--text-dim);font-size:var(--font-size-sm)}@media (pointer:coarse){.ui-option{min-height:44px}}.ui-field{margin-bottom:var(--space-3)}.ui-select-trigger{width:100%;min-height:var(--control-h);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-control);color:var(--text);font-size:var(--font-size-base);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:8px;padding:0 11px;display:flex}.ui-select-trigger:hover{border-color:var(--text-dim)}.ui-select-trigger .icon{color:var(--text-dim);flex:none}.ui-select-value.is-placeholder{color:var(--text-dim)}.ui-combobox{align-items:center;display:flex;position:relative}.ui-combobox-input{width:100%;min-height:var(--control-h);background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-control);font-size:var(--font-size-base);color:var(--text);padding:0 44px}.ui-combobox-input:hover{border-color:var(--text-dim)}.ui-combobox-icon{color:var(--text-dim);pointer-events:none;display:grid;position:absolute;left:12px}.ui-combobox-caret{width:36px;height:36px;color:var(--text-dim);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;place-items:center;display:grid;position:absolute;right:4px}.ui-tablist{border-bottom:1px solid var(--border);gap:4px;display:flex}.ui-tab{min-height:40px;color:var(--text-dim);font-size:var(--font-size-base);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:0 14px;font-weight:500}.ui-tab:hover{background:var(--panel-2)}.ui-tab[data-state=active]{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.ui-tabpanel{padding-top:var(--space-4)}@media (pointer:coarse){.ui-tab{min-height:44px}}.ui-menu{min-width:200px;padding:6px 4px}.ui-menu-item{padding:0 12px}.ui-menu-item.is-danger{color:var(--danger)}.ui-menu-separator{background:var(--border);height:1px;margin:6px -4px}.ui-menu-label{font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);padding:6px 12px;font-weight:600}.ui-menu-trigger,.ui-popover-trigger{align-items:center;gap:6px;display:inline-flex}.ui-popover{padding:var(--space-4);width:min(328px,100vw - 32px)}.ui-popover-head{margin-bottom:var(--space-3)}.ui-popover-title{font-size:var(--font-size-lg);font-weight:600}.ui-popover-subtitle{color:var(--text-dim);font-size:var(--font-size-sm);font-weight:500}.ui-tooltip{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-control);box-shadow:var(--shadow-popover);font-size:var(--font-size-sm);max-width:260px;color:var(--text);z-index:320;padding:6px 8px;font-weight:500}.ui-tooltip-trigger{border-radius:var(--radius-sm);display:inline-block}.ui-checkbox{align-items:center;gap:10px;min-height:44px;display:flex}.ui-checkbox-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-sm);width:20px;height:20px;color:var(--accent-text);cursor:pointer;place-items:center;padding:0;display:grid}.ui-checkbox-box[data-state=checked]{background:var(--accent);border-color:var(--accent)}.ui-checkbox-box[data-disabled]{opacity:.5;cursor:default}.ui-checkbox-label{font-size:var(--font-size-base);color:var(--text);cursor:pointer;margin:0}.ui-dialog .btn:active,.ui-confirm .btn:active,.ui-select-trigger:active,.ui-tab:active,.ui-menu-trigger:active,.ui-popover-trigger:active,.ui-checkbox-box:active{transform:scale(var(--press-scale))}.ui-dialog :focus-visible,.ui-select-trigger:focus-visible,.ui-combobox-input:focus-visible,.ui-combobox-caret:focus-visible,.ui-tab:focus-visible,.ui-menu-trigger:focus-visible,.ui-popover-trigger:focus-visible,.ui-checkbox-box:focus-visible,.ui-tooltip-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ui-kit-row{margin-bottom:var(--space-3);flex-wrap:wrap;align-items:center;gap:10px;display:flex}@media (prefers-reduced-motion:reduce){.ui-overlay[data-state=open],.ui-dialog[data-state=open],.ui-panel[data-state=open]{animation:none}.ui-dialog .btn:active,.ui-confirm .btn:active,.ui-select-trigger:active,.ui-tab:active,.ui-menu-trigger:active,.ui-popover-trigger:active,.ui-checkbox-box:active{transform:none}}
