*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--bg,#14100c);color:var(--txt,#f4ece1);-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,system-ui,sans-serif}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#3a2f24;border:2px solid #14100c;border-radius:6px}::-webkit-scrollbar-track{background:0 0}button,input,select,textarea{font:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--amber)!important}button{letter-spacing:0}a{color:inherit;text-decoration:none}:root{--amber:#f5a623;--red:#e4572e;--green:#6fbf73}[data-theme=dark]{--bg:#14100c;--bg2:#1a140e;--panel:#1e1811;--panel2:#26201a;--line:#3a2f24;--line2:#2c241c;--line3:#241d16;--line-hover:#4a3b2b;--txt:#f4ece1;--txt2:#b6a48f;--txt3:#7c6c5b}[data-theme=light]{--bg:#f7f1e6;--bg2:#efe6d6;--panel:#fffaf0;--panel2:#f6efe1;--line:#ddcfb4;--line2:#e8ddc9;--line3:#ece2cd;--line-hover:#c9b795;--txt:#241c12;--txt2:#5c4f3b;--txt3:#8b7c62}@keyframes livepulse{0%{box-shadow:0 0 #f5a6238c}70%{box-shadow:0 0 0 7px #f5a62300}to{box-shadow:0 0 #f5a62300}}@keyframes bubrise{0%{opacity:0;transform:translateY(24px)scale(.9)}18%{opacity:.55}to{opacity:0;transform:translateY(-150px)scale(1.1)}}.app-root{background:var(--bg);width:100%;height:100vh;color:var(--txt);display:flex;overflow:hidden}.sidebar{border-right:1px solid var(--line2);background:var(--bg2);flex-direction:column;flex:0 0 236px;gap:6px;width:236px;height:100vh;padding:22px 16px;display:flex}.main{flex:1;min-width:0;overflow-y:auto}.page{max-width:1180px;margin:0 auto;padding:28px 34px 44px}.page.narrow{max-width:820px;padding-top:24px}.page.settings-page{max-width:680px;padding-bottom:60px}.page.factory-page{max-width:1120px;padding-bottom:72px}.admin-page{--admin-accent:#17bebb;--admin-accent-soft:#17bebb1f;--admin-accent-line:#17bebb57}.brand{align-items:center;gap:11px;padding:4px 8px 20px;display:flex}.mark{color:#1a140e;background:linear-gradient(150deg,#f5a623,#c9761a);border-radius:10px;flex:none;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 4px 14px #f5a62347}.brand-title,.h1,.card-title,.panel-title{font-family:Zilla Slab,serif}.brand-title{color:var(--txt);letter-spacing:.3px;font-size:18px;font-weight:700;line-height:1}.h1{color:var(--txt);letter-spacing:.2px;margin:0;font-size:34px;font-weight:700;line-height:1.1}.panel-title{color:var(--txt);font-size:17px;font-weight:600}.eyebrow{color:var(--txt3);letter-spacing:1.6px;text-transform:uppercase;font-size:10.5px}.subtle{color:var(--txt2);font-size:14px}.muted{color:var(--txt3)}.mono{font-family:IBM Plex Mono,monospace}.nav-link,.bottom-link{color:var(--txt2);cursor:pointer;background:0 0;border:0;align-items:center;font-weight:600;display:flex}.nav-link{border-radius:10px;gap:11px;width:100%;padding:11px 13px;font-size:13.5px}.nav-link:hover{color:var(--txt)}.nav-link.active{box-shadow:inset 2px 0 0 var(--amber);color:var(--amber);background:#f5a62321}.nav-link[href^=\/admin].active{color:#17bebb;background:#17bebb1f;box-shadow:inset 2px 0 #17bebb}.sidebar-summary{border:1px solid var(--line2);background:var(--bg);border-radius:12px;gap:9px;padding:13px 14px;display:grid}.lang-switch{grid-template-columns:1fr 1fr;gap:6px;margin:10px 2px 8px;display:grid}.lang-chip{border:1px solid var(--line);color:var(--txt3);text-align:center;background:0 0;border-radius:9px;padding:8px 0;font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600}.lang-chip.active{border-color:var(--amber);color:var(--amber);background:#f5a6231a}.sidebar-summary-head{justify-content:space-between;align-items:center;margin-bottom:2px;display:flex}.device-dot{background:var(--txt3);border-radius:50%;flex:none;width:7px;height:7px}.device-dot.online{background:var(--amber);animation:2s infinite livepulse}.sidebar-device-row{align-items:center;gap:8px;min-width:0;display:flex}.topbar,.bottom-nav{display:none}.account{border-top:1px solid var(--line2);align-items:center;gap:10px;margin-top:12px;padding-top:14px;display:flex}.avatar{border:1px solid var(--line-hover);background:linear-gradient(150deg, var(--line), var(--panel2));width:34px;height:34px;color:var(--amber);border-radius:9px;flex:none;place-items:center;font-family:Zilla Slab,serif;font-weight:700;display:grid}.icon-btn{border:1px solid var(--line);width:32px;height:32px;color:var(--txt2);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{border-color:var(--red);color:var(--red)}.grid{gap:16px;display:grid}.grid.two{grid-template-columns:minmax(0,1.5fr) minmax(300px,1fr)}.grid.four{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px}.card,.stat,.form-panel{border:1px solid var(--line2);background:var(--panel)}.card{border-radius:16px;overflow:hidden}.card:hover{border-color:var(--line-hover)}.card-body{padding:17px 19px 14px}.form-panel{border-radius:14px;padding:16px 18px}.stat{border-radius:14px;padding:16px 17px;position:relative;overflow:hidden}.stat:before{background:var(--stat-color,var(--amber));content:"";height:3px;position:absolute;inset:0 0 auto}.stat-value{color:var(--stat-color,var(--amber));font-family:IBM Plex Mono,monospace;font-size:29px;font-weight:600;line-height:1}.pill{border:1px solid color-mix(in srgb, currentColor 35%, transparent);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:700;line-height:1.1;display:inline-flex}.btn{border:1px solid var(--line);min-height:38px;color:var(--txt2);cursor:pointer;background:0 0;border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--amber);color:var(--amber)}.btn.primary{border-color:var(--amber);background:var(--amber);color:#1a140e}.btn.primary:hover{color:#1a140e;background:#ffb43a;border-color:#ffb43a}.btn.scan-action{color:#17bebb;background:#17bebb24;border-color:#17bebb8c;box-shadow:inset 0 0 0 1px #17bebb14}.btn.scan-action:hover{color:#42d8d5;background:#17bebb33;border-color:#17bebb}.btn.scan-action:disabled{opacity:.55;cursor:not-allowed}.input,.select,.textarea{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--txt);border-radius:9px;padding:10px 12px;font-size:13.5px}.textarea{resize:vertical;min-height:92px;line-height:1.55}.field{flex-direction:column;gap:6px;display:flex}.label{color:var(--txt2);font-size:11px}.page-header{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.filterbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.search-wrap{flex:none;position:relative}.search-wrap .input{background:var(--panel);border-radius:10px;width:250px;padding-left:36px;font-size:13px}.search-icon{color:var(--txt3);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.chip-row{flex-wrap:wrap;gap:8px;display:flex}.filter-chip,.tab-chip{border:1px solid var(--line);color:var(--txt2);cursor:pointer;background:0 0;border-radius:20px;align-items:center;gap:8px;padding:8px 13px;font-size:12px;font-weight:600;display:inline-flex}.filter-chip.active,.tab-chip.active{color:var(--amber);background:#f5a62321;border-color:#f5a6238c}.batch-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.batch-accent{height:4px}.batch-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:3px;display:flex}.batch-title{color:var(--txt);font-family:Zilla Slab,serif;font-size:19px;font-weight:600;line-height:1.15}.batch-subline{align-items:center;gap:8px;margin-bottom:15px;display:flex}.metric-row{justify-content:space-between;font-family:IBM Plex Mono,monospace;display:flex}.metric-row>div:nth-child(2){text-align:center}.metric-row>div:nth-child(3){text-align:right}.metric-label{color:var(--txt3);letter-spacing:1px;text-transform:uppercase;margin-bottom:3px;font-size:9.5px}.metric-value{color:var(--txt);font-size:15px}.dashboard-back{color:var(--txt3);cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;margin-bottom:14px;padding:0;font-size:12.5px;font-weight:600;display:inline-flex}.dashboard-back:hover{color:var(--amber)}.dashboard-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:26px;display:flex}.stage-form{align-items:center;gap:12px;margin-bottom:7px;display:flex}.stage-form .btn{border-radius:999px;min-height:29px;padding:5px 10px;font-size:11px}.stage-select{min-width:132px;color:var(--amber);background:#f5a62321;border:1px solid #f5a62357;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700}.live-chip{background:#f5a62317;border:1px solid #f5a62359;border-radius:10px;align-items:center;gap:9px;padding:9px 14px;display:inline-flex}.live-dot{background:var(--amber);border-radius:50%;width:9px;height:9px;animation:2s infinite livepulse}.live-dot.idle{background:var(--txt3);animation:none}.battery-chip{color:var(--txt3);align-items:center;gap:7px;font-family:IBM Plex Mono,monospace;font-size:11.5px;display:inline-flex}.chart-card{border-radius:16px;padding:18px 20px 12px}.chart-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.legend{color:var(--txt2);align-items:center;gap:14px;font-family:IBM Plex Mono,monospace;font-size:11.5px;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.legend-line{background:var(--amber);border-radius:2px;width:14px;height:3px}.legend-line.temp{background:var(--red)}.legend-line.dashed{border-top:2px dashed var(--green);background:0 0;height:0}.progress-bar{background:var(--line2);border-radius:6px;height:10px;margin:0 0 8px;position:relative}.progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--amber), var(--green));height:100%}.progress-marker{background:var(--txt);border-radius:2px;width:2px;height:18px;position:absolute;top:-4px}.payload-row,.read-row{border-bottom:1px solid var(--line3);align-items:center;font-family:IBM Plex Mono,monospace;display:grid}.payload-row{grid-template-columns:1fr auto;padding:6px 0;font-size:12.5px}.read-row{grid-template-columns:1.3fr repeat(4,1fr);padding:9px 0;font-size:12px}.read-row span:not(:first-child){text-align:right}.log-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 28px;margin-top:10px;display:grid}.log-row{border-bottom:1px solid var(--line3);align-items:center;gap:10px;padding:9px 0;display:flex}.log-check{border:1px solid var(--line);color:#0000;border-radius:6px;flex:none;place-items:center;width:20px;height:20px;display:grid}.log-row.done .log-check{color:var(--green);background:#6fbf7324;border-color:#6fbf7399}.factory-label-card,.endpoint-card,.simulate-card,.device-card,.pantry-card,.settings-card{border:1px solid var(--line2);background:var(--panel);border-radius:16px;padding:20px 22px}.admin-kicker{color:var(--admin-accent);letter-spacing:1.2px;text-transform:uppercase;font-size:10.5px;font-weight:800}.admin-subnav{border:1px solid var(--admin-accent-line);background:linear-gradient(135deg,#17bebb1a,#ffffff06);border-radius:14px;justify-content:space-between;align-items:center;gap:14px;margin:-8px 0 22px;padding:9px 10px 9px 14px;display:flex}.admin-subnav-label{color:var(--admin-accent);letter-spacing:1.1px;text-transform:uppercase;white-space:nowrap;font-size:10.5px;font-weight:800}.admin-subnav-links{flex-wrap:wrap;justify-content:flex-end;gap:7px;min-width:0;display:flex}.admin-subnav-link{border:1px solid var(--line3);color:var(--txt2);border-radius:999px;align-items:center;gap:7px;padding:7px 11px;font-size:12px;font-weight:700;display:inline-flex}.admin-subnav-link.active{border-color:var(--admin-accent-line);background:var(--admin-accent-soft);color:var(--admin-accent)}.admin-page .settings-card,.admin-page .factory-label-card,.admin-page .endpoint-card,.admin-page .simulate-card{border-color:color-mix(in srgb, var(--line2) 78%, var(--admin-accent))}.admin-stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px;display:grid}.admin-stat-card{align-items:center;gap:12px;min-width:0;padding:14px 18px;display:flex}.admin-selected-device{grid-column:span 2}.admin-device-selector-card{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;padding:18px 22px;display:flex}.admin-device-selector-card>*{min-width:0}.admin-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.admin-chart-card{min-width:0;padding:16px 20px;overflow:hidden}.admin-chart-head{color:var(--txt3);letter-spacing:1px;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px;font-size:10.5px;display:flex}.chart-shell{width:100%;min-width:0;position:relative}.admin-telemetry-card{min-width:0;padding:20px 22px}.admin-telemetry-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.admin-table-wrap{border:1px solid var(--line3);border-radius:8px;max-height:380px;overflow:auto}.admin-telemetry-table{border-collapse:collapse;text-align:left;width:100%;min-width:760px;font-size:13px}.admin-telemetry-table thead{z-index:5;border-bottom:1px solid var(--line);background:#1b1510;position:sticky;top:0}.calibration-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:start;gap:20px;display:grid}.calibration-stack{gap:16px;min-width:0;display:grid}.calibration-layout .settings-card{min-width:0}.calibration-table-wrap{-webkit-overflow-scrolling:touch;margin-bottom:18px;overflow-x:auto}.calibration-table{border-collapse:collapse;text-align:left;width:100%;min-width:720px;font-size:12px}.calibration-actions{flex-wrap:wrap;gap:10px;display:flex}.calibration-actions .btn{flex:120px}.factory-setup-grid{grid-template-columns:minmax(340px,.88fr) minmax(460px,1.12fr);align-items:start;gap:20px;display:grid}.factory-side-stack,.factory-label-card{gap:16px;min-width:0;display:grid}.endpoint-url{border:1px solid var(--line);background:var(--bg);border-radius:10px;align-items:center;gap:10px;padding:11px 14px;display:flex}.endpoint-value{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;font-size:13px;overflow:hidden}.inline-copy-button{min-height:0;color:var(--admin-accent,var(--amber));border:0;flex:none;padding:0}.method-badge{color:var(--green);background:#6fbf7324;border-radius:5px;flex:none;padding:3px 8px;font-family:IBM Plex Mono,monospace;font-size:10.5px;font-weight:600}.config-grid{border-top:1px solid var(--line3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin-top:16px;padding-top:16px;display:grid}.config-grid>div{min-width:0}.config-grid .mono{overflow-wrap:anywhere}.device-grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px;display:grid}.device-card{padding:18px 20px}.device-name-input{min-width:0;color:var(--txt);background:0 0;border:1px solid #0000;border-radius:7px;flex:1;padding:5px 8px;font-family:Zilla Slab,serif;font-size:17px;font-weight:600}.device-name-input:hover{border-color:var(--line)}.token-row{border:1px solid var(--line3);background:var(--bg);border-radius:8px;align-items:center;gap:8px;padding:7px 10px;display:flex}.scanner-box{aspect-ratio:4/3;border:1px solid var(--line);background:var(--bg);border-radius:14px;place-items:center;width:100%;display:grid;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%}.scanner-idle{width:72px;height:72px;color:var(--amber);background:#f5a62314;border:1px solid #f5a62359;border-radius:18px;place-items:center;display:grid}.factory-qr-layout{justify-items:stretch;gap:16px;display:grid}.factory-qr-frame{border:1px solid var(--line3);background:#fff;border-radius:14px;justify-self:center;place-items:center;width:280px;max-width:100%;height:280px;padding:10px;display:grid}.factory-qr-frame img{object-fit:contain;width:260px;max-width:100%;height:260px;display:block}.factory-qr-details{gap:10px;min-width:0;display:grid}.factory-code-block{border:1px solid var(--line3);background:var(--bg);border-radius:10px;min-width:0;padding:10px 12px}.factory-code-block .mono{overflow-wrap:anywhere;color:var(--txt2);font-size:12.5px;line-height:1.45}.factory-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.factory-actions .btn{justify-content:center;width:100%}.btn.disabled{opacity:.45;pointer-events:none}.dashed-card{border:1.5px dashed var(--line);background:var(--bg2);border-radius:16px;flex-direction:column;gap:12px;padding:18px 20px;display:flex}.pantry-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.pantry-item{border:1px solid var(--line3);background:var(--bg);border-radius:9px;align-items:center;gap:8px;padding:8px 10px;display:flex}.tag{border:1px solid var(--line);color:var(--txt3);letter-spacing:.6px;text-transform:uppercase;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:700}.tag.custom{color:var(--amber);border-color:#f5a62366}.option-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.option-card{cursor:pointer;border:1px solid var(--line);background:var(--bg);color:var(--txt);text-align:left;border-radius:12px;align-items:center;gap:12px;padding:12px;display:flex;position:relative}.option-card input{opacity:0;pointer-events:none;position:absolute}.option-card.active{background:#f5a6231a;border-color:#f5a62399}.option-card:has(input:checked){background:#f5a6231a;border-color:#f5a62399}.recipe-form{gap:12px;display:grid}.recipe-grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.recipe-summary{border:1px solid var(--line2);background:var(--bg);border-radius:10px;flex-wrap:wrap;align-items:center;gap:16px;padding:10px 14px;display:flex}.recipe-summary-metrics{flex-wrap:wrap;flex:1;gap:20px;display:flex}.recipe-swatch{border:1px solid #ffffff2e;border-radius:8px;flex:none;width:32px;height:32px}.ingredient-row{grid-template-columns:1.5fr .72fr .72fr .9fr;align-items:center;gap:8px;display:grid}.ingredient-list{gap:8px;display:grid}.recipe-table-stack{gap:16px;display:grid}.recipe-table-section{border-top:1px solid var(--line3);padding-top:14px}.recipe-table-titlebar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.recipe-table-titlebar>div{align-items:center;gap:9px;min-width:0;display:flex}.recipe-table-titlebar h2{color:var(--txt);margin:0;font-family:Zilla Slab,serif;font-size:18px;line-height:1}.recipe-table-titlebar .mono{min-width:24px;color:var(--amber);text-align:center;background:#f5a62314;border:1px solid #f5a6235c;border-radius:999px;padding:4px 7px;font-size:11px;line-height:1}.recipe-add-button{min-height:32px;padding:6px 11px}.recipe-edit-table{gap:7px;display:grid}.recipe-edit-head,.recipe-edit-row{align-items:center;gap:8px;display:grid}.recipe-edit-head{color:var(--txt3);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.recipe-edit-row{min-width:0}.recipe-edit-table-fermentables .recipe-edit-head,.recipe-edit-table-fermentables .recipe-edit-row{grid-template-columns:minmax(82px,.55fr) minmax(190px,1.7fr) minmax(78px,.55fr) 38px}.recipe-edit-table-hops .recipe-edit-head,.recipe-edit-table-hops .recipe-edit-row{grid-template-columns:minmax(78px,.55fr) minmax(150px,1.35fr) minmax(70px,.5fr) minmax(112px,.9fr) minmax(72px,.5fr) 38px}.recipe-edit-table-yeast .recipe-edit-head,.recipe-edit-table-yeast .recipe-edit-row{grid-template-columns:minmax(82px,.55fr) minmax(76px,.5fr) minmax(190px,1.7fr) 38px}.recipe-edit-table-misc .recipe-edit-head,.recipe-edit-table-misc .recipe-edit-row{grid-template-columns:minmax(78px,.55fr) minmax(70px,.45fr) minmax(150px,1.35fr) minmax(112px,.9fr) minmax(72px,.5fr) 38px}.recipe-cell{min-width:0;display:flex}.recipe-cell-wide{min-width:0}.recipe-cell>span{display:none}.recipe-cell .input,.recipe-cell .select{min-width:0;padding-left:10px;padding-right:10px}.recipe-pantry-name{width:100%;min-width:0;display:grid}.recipe-pantry-select{color:var(--txt)}.recipe-new-pantry-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.recipe-pantry-back{white-space:nowrap;min-height:38px;padding-left:10px;padding-right:10px}.recipe-remove-button{width:38px;height:38px;color:var(--txt3)}.ingredient-pill{border:1px solid var(--line3);background:var(--bg);border-radius:9px;grid-template-columns:minmax(0,1.7fr) .7fr .8fr;align-items:center;gap:8px;padding:8px 10px;display:grid}.ingredient-row.hops{grid-template-columns:1.35fr .65fr .58fr .9fr .7fr}.actions-row{justify-content:flex-end;gap:12px;display:flex}.auth-wrap{color:#f4ece1;background:#14100c;width:100%;min-height:100vh;display:flex}.auth-brand{background:radial-gradient(130% 120% at 8% 4%,#2a1e11 0%,#17120c 52%,#100c08 100%);border-right:1px solid #2c241c;flex-direction:column;flex:1;justify-content:space-between;padding:48px 50px;display:flex;position:relative;overflow:hidden}.auth-brand:before{content:"";pointer-events:none;background:radial-gradient(circle,#f5a62329,#0000 70%);border-radius:50%;width:380px;height:380px;position:absolute;top:-130px;right:-120px}.bubble{background:#f5a62366;border-radius:50%;animation:8s ease-in infinite bubrise;position:absolute;bottom:0}.auth-form{background:#1a140e;flex-direction:column;flex:none;justify-content:center;width:min(480px,42%);padding:48px 54px;display:flex}.apk-download{background:#f5a6230f;border:1px solid #f5a6232e;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;margin-top:22px;padding:13px 14px;display:flex}.apk-download-title{color:#f4ece1;font-size:13px;font-weight:700}.apk-download-copy{color:#8f806d;margin-top:3px;font-size:12px;line-height:1.35}.apk-download .btn{white-space:nowrap;flex:none;min-height:34px;padding:7px 11px}@media (max-width:900px){.sidebar{display:none}.app-root{display:block;overflow:hidden}.main{height:100vh;padding-bottom:76px}.topbar{z-index:20;border-bottom:1px solid var(--line2);background:color-mix(in srgb, var(--bg2) 94%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);justify-content:space-between;align-items:center;padding:11px 16px;display:flex;position:sticky;top:0}.bottom-nav{z-index:30;border-top:1px solid var(--line2);background:var(--bg2);align-items:stretch;height:64px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -6px 20px #00000059}.bottom-link{min-width:0;color:var(--txt3);text-align:center;flex-direction:column;flex:1;justify-content:center;gap:3px;padding:0 3px;font-size:9.5px;line-height:1}.bottom-link svg{flex:none}.bottom-link span{text-overflow:ellipsis;white-space:nowrap;width:100%;display:block;overflow:hidden}.bottom-link.active{color:var(--amber)}.bottom-link[href^=\/admin].active{color:#17bebb}.admin-subnav{flex-direction:column;align-items:stretch;gap:9px;margin-top:-4px;padding:11px}.admin-subnav-links{grid-template-columns:repeat(3,minmax(0,1fr));justify-content:stretch;gap:7px;display:grid}.admin-subnav-link{text-align:center;justify-content:center;padding:8px 7px}.admin-stats-grid,.admin-chart-grid{grid-template-columns:1fr;gap:12px}.admin-selected-device{grid-column:auto}.admin-stat-card,.admin-device-selector-card,.admin-chart-card,.admin-telemetry-card{padding:14px 16px}.admin-device-selector-card{flex-direction:column;align-items:stretch}.admin-device-selector-card .select{width:100%}.admin-chart-head{flex-direction:column;align-items:flex-start;gap:4px}.admin-chart-card .chart-shell{padding-bottom:4px;overflow-x:auto}.admin-chart-card .chart-shell svg{min-width:520px}.admin-table-wrap{-webkit-overflow-scrolling:touch;max-height:420px;margin:0 -4px}.admin-telemetry-table{min-width:720px;font-size:12px}.calibration-layout{grid-template-columns:1fr;gap:16px}.calibration-layout .settings-card,.factory-label-card,.endpoint-card,.simulate-card{padding:14px 16px}.calibration-table-wrap{margin:0 -4px 16px}.calibration-table{min-width:700px}.calibration-actions{grid-template-columns:1fr;display:grid}.factory-qr-frame img{aspect-ratio:1;width:100%;height:auto}.endpoint-url{grid-template-columns:auto auto;justify-content:space-between;align-items:center;gap:10px 12px;display:grid}.endpoint-value{text-overflow:clip;white-space:normal;overflow-wrap:anywhere;grid-column:1/-1;line-height:1.45;overflow:visible}.endpoint-url .method-badge{order:initial}.endpoint-url .inline-copy-button{order:initial;justify-self:end}.page,.page.narrow,.page.settings-page,.page.factory-page{padding:18px 16px 88px}.factory-setup-grid{grid-template-columns:1fr;gap:16px}.grid.two,.recipe-grid-4,.ingredient-row,.ingredient-row.hops{grid-template-columns:1fr}.recipe-summary{flex-wrap:nowrap;align-items:flex-start}.recipe-summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;display:grid}.recipe-table-titlebar{align-items:center}.recipe-edit-head{display:none}.recipe-edit-table-fermentables .recipe-edit-row,.recipe-edit-table-hops .recipe-edit-row,.recipe-edit-table-yeast .recipe-edit-row,.recipe-edit-table-misc .recipe-edit-row{border:1px solid var(--line3);background:var(--bg);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));padding:10px}.recipe-cell{flex-direction:column;gap:5px}.recipe-cell>span{color:var(--txt3);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700;display:block}.recipe-cell-wide{grid-column:1/-1}.recipe-new-pantry-row{grid-template-columns:1fr}.recipe-remove-button{place-self:end}.h1{font-size:25px}.page-header,.dashboard-header,.actions-row{flex-direction:column;align-items:flex-start}.factory-qr-layout{grid-template-columns:1fr}.factory-qr-frame{aspect-ratio:1;width:100%;max-width:280px;height:auto}.factory-actions{grid-template-columns:1fr}.endpoint-url{flex-wrap:wrap;align-items:flex-start}.search-wrap,.search-wrap .input{width:100%}.auth-brand{display:none}.auth-form{width:100%;padding:34px 22px}}
