.signin{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px 16px;background:var(--bg)}.signin-card{width:100%;max-width:380px}.signin-logo{margin:0 auto 4px}.signin-title{margin:0;font-size:1.8rem;letter-spacing:-.01em}:root{--bg: #15100d;--bg-elev: #1e1713;--bg-elev-2: #271e19;--bg-input: #120d0a;--border: #3a2d25;--border-strong: #554236;--text: #f3ebe4;--text-muted: #b5a497;--text-faint: #7f6e62;--accent: #e0a15e;--accent-strong: #f0b673;--accent-contrast: #1b120b;--accent-soft: rgba(224, 161, 94, .14);--success: #7cc48a;--success-soft: rgba(124, 196, 138, .14);--warning: #e9c46a;--warning-soft: rgba(233, 196, 106, .14);--danger: #e76f51;--danger-soft: rgba(231, 111, 81, .14);--info: #6fb1e7;--chart-weight: #e0a15e;--chart-flow: #6fb1e7;--chart-target: #7cc48a;--chart-grid: rgba(255, 255, 255, .07);--chart-axis: #8d7b6e;--compare-1: #e0a15e;--compare-2: #6fb1e7;--compare-3: #7cc48a;--compare-4: #d77fd1;--compare-5: #e9c46a;--compare-6: #e76f51;--compare-7: #9aa8ff;--compare-8: #5fd3c4;--radius-sm: 8px;--radius: 12px;--radius-lg: 18px;--shadow: 0 6px 24px rgba(0, 0, 0, .35);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--top-h: 56px;--nav-h: 64px;--rail-w: 0px;--gutter: 16px;--content-max: 1100px;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--chrome-top: calc(var(--top-h) + var(--safe-top));--chrome-bottom: calc(var(--nav-h) + var(--safe-bottom));--status-scrim: var(--bg);color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #f7f2ed;--bg-elev: #ffffff;--bg-elev-2: #f1e9e1;--bg-input: #ffffff;--border: #e3d6ca;--border-strong: #cdb9a7;--text: #2a1d15;--text-muted: #6d5a4c;--text-faint: #776556;--accent: #b8732f;--accent-strong: #9c5f22;--accent-contrast: #ffffff;--accent-soft: rgba(184, 115, 47, .12);--success: #2b7339;--success-soft: rgba(43, 115, 57, .12);--warning: #865c00;--warning-soft: rgba(134, 92, 0, .12);--danger: #a93d27;--danger-soft: rgba(169, 61, 39, .12);--info: #27679c;--chart-weight: #b8732f;--chart-flow: #2f7fbf;--chart-target: #3f9a52;--chart-grid: rgba(0, 0, 0, .07);--chart-axis: #8a7666;--compare-1: #b8732f;--compare-2: #2f7fbf;--compare-3: #2f7d3e;--compare-4: #a347a0;--compare-5: #9a6b00;--compare-6: #c0392b;--compare-7: #4e5fc4;--compare-8: #1d7f74;--shadow: 0 6px 24px rgba(60, 35, 15, .12);color-scheme:light}}@media(display-mode:standalone)and (prefers-color-scheme:light){:root{--status-scrim: #2a1d15}}@media(min-width:700px){:root{--top-h: 60px;--nav-h: 72px;--gutter: 24px}}@media(min-width:700px)and (max-height:520px){:root{--nav-h: 56px}}@media(min-width:1024px){:root{--nav-h: 0px;--rail-w: 88px;--gutter: 28px;--content-max: 1280px}}@media(min-width:1440px){:root{--rail-w: 232px}}:root.focus-mode{--top-h: 0px;--nav-h: 0px;--rail-w: 0px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}@media(min-width:700px)and (pointer:coarse){body{font-size:16px}}@media(display-mode:standalone){html,body{overscroll-behavior:none}}html.focus-mode,html.focus-mode body{overscroll-behavior:none}html.scroll-locked,html.scroll-locked body{overflow:hidden}a{color:var(--accent);text-decoration:none}@media(hover:hover){a:hover{text-decoration:underline}}a,button,input,select,textarea,label,summary,[role=button],[role=tab],[role=switch]{touch-action:manipulation}button,.btn,.chip,.nav-item,.scale-pill,.topbar .brand{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.btn:focus-visible,.chip:focus-visible,.tabs button:focus-visible,.nav-item:focus-visible,.scale-pill:focus-visible,.list-item:focus-visible,.card.interactive:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4{margin:0;line-height:1.2;font-weight:650}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.05rem}@media(min-width:700px){h1{font-size:1.65rem}}p{margin:0}hr{border:0;border-top:1px solid var(--border);margin:16px 0}.app-shell{min-height:100%;display:flex;flex-direction:column}.app-shell:before{content:"";position:fixed;top:0;left:0;right:0;z-index:50;height:var(--safe-top);background:var(--status-scrim);pointer-events:none}.topbar{position:sticky;top:0;z-index:20;height:var(--chrome-top);display:flex;align-items:center;gap:12px;padding:var(--safe-top) max(16px,var(--safe-right)) 0 max(16px,var(--safe-left));background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.topbar .brand{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.02em;color:var(--text);text-decoration:none}.topbar .spacer{flex:1}.main{flex:1;width:100%;min-width:0;max-width:calc(var(--content-max) + 2 * var(--gutter));margin:0 auto;padding:var(--gutter) max(var(--gutter),var(--safe-right)) calc(var(--chrome-bottom) + 24px) max(var(--gutter),var(--safe-left))}.nav-item{text-decoration:none}.nav-icon{display:grid;place-items:center;flex-shrink:0}.nav-label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:30;height:var(--chrome-bottom);padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);display:flex;justify-content:center;background:var(--bg-elev);border-top:1px solid var(--border)}.bottom-nav .nav-item{flex:1 1 0;min-width:0;max-width:128px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.7rem;color:var(--text-faint)}.bottom-nav .nav-item.not-phone{display:none}.bottom-nav .nav-icon svg{width:22px;height:22px}.bottom-nav .nav-item.active{color:var(--accent)}.bottom-nav .brew-cta .nav-icon{width:46px;height:46px;margin-top:-18px;border-radius:50%;background:var(--accent);color:var(--accent-contrast);box-shadow:var(--shadow)}.bottom-nav .brew-cta .nav-icon svg{width:24px;height:24px}.nav-rail{display:none}@media(min-width:700px){.topbar{padding-left:max(24px,var(--safe-left));padding-right:max(24px,var(--safe-right))}.topbar .topbar-settings{display:none}.bottom-nav{padding-left:max(12px,var(--safe-left));padding-right:max(12px,var(--safe-right))}.bottom-nav .nav-item,.bottom-nav .nav-item.not-phone{display:flex;max-width:112px;gap:4px;font-size:.8rem;font-weight:600}.bottom-nav .nav-icon{width:56px;height:32px;border-radius:16px;transition:background .15s}.bottom-nav .nav-icon svg{width:26px;height:26px}.bottom-nav .nav-item.active:not(.brew-cta) .nav-icon{background:var(--accent-soft)}.bottom-nav .brew-cta .nav-icon{width:60px;height:60px;margin-top:-26px;border-radius:50%}.bottom-nav .brew-cta .nav-icon svg{width:28px;height:28px}.bottom-nav .brew-cta.active .nav-icon{box-shadow:0 0 0 4px var(--accent-soft),var(--shadow)}}@media(min-width:700px)and (max-height:520px){.bottom-nav .nav-icon{height:26px}.bottom-nav .brew-cta .nav-icon{width:48px;height:48px;margin-top:-16px}}@media(min-width:1024px){.app-shell{display:grid;grid-template-columns:calc(var(--rail-w) + var(--safe-left)) minmax(0,1fr);grid-template-rows:auto 1fr;grid-template-areas:"top top" "rail main"}.topbar{grid-area:top;padding-left:calc(var(--safe-left) + (var(--rail-w) - 26px) / 2)}.main{grid-area:main}.bottom-nav{display:none}.nav-rail{grid-area:rail;display:flex;flex-direction:column;gap:4px;position:sticky;top:var(--chrome-top);align-self:start;height:calc(100vh - var(--chrome-top));height:calc(100dvh - var(--chrome-top));overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;padding:12px 6px calc(12px + var(--safe-bottom)) calc(6px + var(--safe-left));border-right:1px solid var(--border)}.nav-rail .nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:64px;padding:4px 0;border-radius:var(--radius);color:var(--text-muted);font-size:.75rem;font-weight:600}.nav-rail .nav-icon{width:56px;height:32px;border-radius:16px;transition:background .15s,box-shadow .15s}.nav-rail .nav-icon svg{width:24px;height:24px}.nav-rail .nav-item.active{color:var(--accent)}.nav-rail .nav-item.active:not(.brew-cta) .nav-icon{background:var(--accent-soft)}.nav-rail .brew-cta .nav-icon{height:40px;border-radius:14px;background:var(--accent);color:var(--accent-contrast);box-shadow:var(--shadow)}.nav-rail .brew-cta.active .nav-icon{box-shadow:0 0 0 3px var(--accent-soft),var(--shadow)}.main{padding-bottom:calc(var(--chrome-bottom) + 48px)}}@media(min-width:1440px){.topbar{padding-left:calc(var(--safe-left) + 24px)}.nav-rail{gap:2px;padding:16px 12px calc(16px + var(--safe-bottom)) calc(12px + var(--safe-left))}.nav-rail .nav-item{flex-direction:row;justify-content:flex-start;gap:12px;min-height:44px;padding:0 12px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:500}.nav-rail .nav-icon,.nav-rail .brew-cta .nav-icon,.nav-rail .brew-cta.active .nav-icon,.nav-rail .nav-item.active:not(.brew-cta) .nav-icon{width:auto;height:auto;border-radius:0;background:none;color:inherit;box-shadow:none}.nav-rail .nav-icon svg{width:20px;height:20px}.nav-rail .nav-item.active{background:var(--accent-soft)}.nav-rail .nav-item.brew-cta{margin:6px 0;background:var(--accent);color:var(--accent-contrast);font-weight:650}.nav-rail .nav-item.brew-cta.active{box-shadow:0 0 0 3px var(--accent-soft)}}@media(hover:hover){.topbar .brand:hover,.nav-item:hover{text-decoration:none}.bottom-nav .nav-item:not(.active):hover{color:var(--text-muted)}.nav-rail .nav-item:not(.active):not(.brew-cta):hover{color:var(--text)}.nav-rail .nav-item:not(.active):not(.brew-cta):hover .nav-icon{background:var(--bg-elev-2)}}@media(hover:hover)and (min-width:1440px){.nav-rail .nav-item:not(.active):not(.brew-cta):hover{background:var(--bg-elev)}.nav-rail .nav-item:not(.active):not(.brew-cta):hover .nav-icon{background:none}}.nav-item:active{opacity:.75}@media(min-width:700px)and (max-width:1439px){.nav-item:active{opacity:1}.nav-item:active:not(.brew-cta):not(.active) .nav-icon{background:var(--bg-elev-2)}}.app-shell.focus{display:block}.app-shell.focus .main{max-width:none;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;padding:max(10px,var(--safe-top)) max(12px,var(--safe-right)) max(10px,var(--safe-bottom)) max(12px,var(--safe-left))}:where(.app-shell.focus .main)>*{flex:1 0 auto}.page{display:flex;flex-direction:column;gap:16px}.page-header{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-header .titles{flex:1;min-width:0}.page-header .subtitle{color:var(--text-muted);font-size:.9rem;margin-top:2px}.stack{display:flex;flex-direction:column;gap:12px}.stack-sm{display:flex;flex-direction:column;gap:6px}.stack-lg{display:flex;flex-direction:column;gap:20px}.row{display:flex;align-items:center;gap:10px}.row-wrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.grow{flex:1;min-width:0}.grid{display:grid;gap:12px}.grid-2{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.grid-auto{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}@media(max-width:560px){.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:700px){.page{gap:20px}}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.text-sm{font-size:.85rem}.text-xs{font-size:.75rem}.text-lg{font-size:1.15rem}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}.bold{font-weight:650}.center{text-align:center}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.success{color:var(--success)}.warning{color:var(--warning)}.danger{color:var(--danger)}.accent{color:var(--accent)}.hidden{display:none!important}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card.flat{background:transparent}.card.pad-0{padding:0}.card.interactive{cursor:pointer;transition:border-color .15s,transform .05s}.card.interactive:active{transform:scale(.995);border-color:var(--border-strong)}@media(hover:hover){.card.interactive:hover{border-color:var(--border-strong)}}@media(min-width:700px){.card{padding:20px}}.card-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.card-title{font-weight:650;font-size:1rem}.btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elev-2);color:var(--text);font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background .15s,border-color .15s,opacity .15s,transform .06s}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn.danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.btn.success{background:var(--success-soft);border-color:transparent;color:var(--success)}.btn.sm{height:32px;padding:0 12px;font-size:.85rem}.btn.lg{height:52px;padding:0 22px;font-size:1.05rem;border-radius:var(--radius)}.btn.xl{height:64px;padding:0 28px;font-size:1.2rem;border-radius:var(--radius-lg)}.btn.block{width:100%}.btn.icon{width:40px;padding:0}.btn.icon.sm{width:32px}.btn:active:not(:disabled){transform:scale(.98);border-color:var(--accent)}.btn.primary:active:not(:disabled){background:var(--accent-strong)}.btn.ghost:active:not(:disabled){background:var(--bg-elev-2);border-color:transparent;color:var(--text)}.btn.danger:active:not(:disabled){border-color:var(--danger)}.btn.success:active:not(:disabled){border-color:var(--success)}@media(hover:hover){.btn:hover{text-decoration:none}.btn:hover:not(:disabled){border-color:var(--accent)}.btn.primary:hover:not(:disabled){background:var(--accent-strong)}.btn.ghost:hover:not(:disabled){background:var(--bg-elev-2);border-color:transparent;color:var(--text)}.btn.danger:hover:not(:disabled){border-color:var(--danger)}}@media(pointer:coarse){.btn{height:48px;padding:0 18px}.btn.sm{height:44px;padding:0 14px;font-size:.9rem}.btn.lg{height:56px;padding:0 24px}.btn.xl{height:64px}.btn.icon{width:48px}.btn.icon.sm{width:44px}}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field>label,.field-label{font-size:.82rem;font-weight:600;color:var(--text-muted)}.field .hint{font-size:.78rem;color:var(--text-faint)}.field .error{font-size:.78rem;color:var(--danger)}.input,.select,.textarea{width:100%;min-width:0;height:42px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text);font:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.textarea{height:auto;min-height:90px;padding:10px 12px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input-group{display:flex;align-items:stretch}.input-group .input{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.input-group .addon{display:flex;align-items:center;padding:0 10px;border:1px solid var(--border);border-left:0;border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--bg-elev-2);color:var(--text-muted);font-size:.85rem}.stepper{display:flex;align-items:stretch;gap:6px}.stepper .input{text-align:center;font-family:var(--font-mono)}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .span-2{grid-column:1 / -1}@media(max-width:560px){.form-grid{grid-template-columns:1fr}}.form-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}@media(pointer:coarse){.input,.select{height:48px;font-size:16px}.textarea{font-size:16px}.input-group .addon{padding:0 12px;font-size:.9rem}.form-grid{gap:16px}}.toggle{position:relative;display:inline-flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle input{position:absolute;top:0;left:0;width:1px;height:1px;margin:0;padding:0;opacity:0;pointer-events:none}.toggle input:focus-visible+.track{outline:2px solid var(--accent);outline-offset:2px}.toggle input:disabled+.track{cursor:not-allowed}.toggle .track{width:42px;height:24px;border-radius:12px;background:var(--border-strong);position:relative;transition:background .15s;flex-shrink:0}.toggle .track:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s}.toggle input:checked+.track{background:var(--accent)}.toggle input:checked+.track:after{transform:translate(18px)}@media(pointer:coarse){.toggle{min-height:44px;gap:12px}.toggle .track{width:52px;height:30px;border-radius:15px}.toggle .track:after{width:24px;height:24px}.toggle input:checked+.track:after{transform:translate(22px)}}.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:11px;font-size:.72rem;font-weight:650;letter-spacing:.02em;background:var(--bg-elev-2);color:var(--text-muted);white-space:nowrap}.badge.accent{background:var(--accent-soft);color:var(--accent)}.badge.success{background:var(--success-soft);color:var(--success)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:15px;border:1px solid var(--border);background:transparent;color:var(--text-muted);font:inherit;font-size:.85rem;cursor:pointer}.chip.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.chip .x{opacity:.6}.chip:active{border-color:var(--border-strong)}@media(pointer:coarse){.chip{height:40px;padding:0 14px;border-radius:20px;font-size:.9rem}}.tabs{display:flex;gap:4px;padding:4px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto}.tabs button{flex:1;appearance:none;border:0;background:transparent;color:var(--text-muted);font:inherit;font-weight:600;padding:8px 12px;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap}.tabs button.active{background:var(--bg-elev-2);color:var(--text)}@media(pointer:coarse){.tabs button{min-height:44px;padding:8px 14px}}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--border);color:inherit;text-decoration:none}.list-item:last-child{border-bottom:0}a.list-item:active,button.list-item:active{background:color-mix(in srgb,var(--bg-elev-2) 70%,transparent)}@media(hover:hover){.list-item:hover{text-decoration:none;background:color-mix(in srgb,var(--bg-elev-2) 50%,transparent)}}@media(pointer:coarse){.list-item{min-height:56px;padding:14px 4px}}.stat{display:flex;flex-direction:column;gap:2px}.stat .label{font-size:.75rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;font-weight:650}.stat .value{font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums}.stat .value small{font-size:.8rem;color:var(--text-muted);font-weight:500;margin-left:2px}.progress{height:8px;border-radius:4px;background:var(--bg-elev-2);overflow:hidden}.progress>div{height:100%;background:var(--accent);border-radius:4px;transition:width .2s}.progress.success>div{background:var(--success)}.progress.warning>div{background:var(--warning)}.progress.danger>div{background:var(--danger)}.weight-display{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:clamp(3.2rem,14vw,6rem);font-size:clamp(3.2rem,min(14vw,15dvh),7rem);line-height:1;letter-spacing:-.03em}.weight-display .unit{font-size:.35em;color:var(--text-muted);margin-left:.15em;font-weight:600}.weight-display.negative{color:var(--text-faint)}.scale-pill{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 12px;white-space:nowrap;border-radius:17px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text);font:inherit;font-size:.85rem;cursor:pointer;text-decoration:none}.scale-pill:active{border-color:var(--border-strong)}@media(hover:hover){.scale-pill:hover{text-decoration:none;border-color:var(--border-strong)}}@media(pointer:coarse){.scale-pill{height:40px;padding:0 14px;border-radius:20px}}@media(min-width:700px){.scale-pill{gap:10px;font-size:.95rem}}@media(max-width:359px){.scale-pill .pill-battery{display:none}}.dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint);flex-shrink:0}.dot.ok{background:var(--success);box-shadow:0 0 0 3px var(--success-soft)}.dot.busy{background:var(--warning);animation:pulse 1s infinite}.dot.err{background:var(--danger)}@keyframes pulse{50%{opacity:.35}}.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-sm);background:var(--bg-elev-2);border:1px solid var(--border);font-size:.9rem}.banner.info{background:color-mix(in srgb,var(--info) 12%,transparent);border-color:transparent}.banner.warning{background:var(--warning-soft);border-color:transparent}.banner.danger{background:var(--danger-soft);border-color:transparent}.banner.success{background:var(--success-soft);border-color:transparent}.banner>.grow{color:var(--text)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:36px 16px;color:var(--text-muted)}.empty-state .icon{color:var(--text-faint)}.spinner{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#0000008c;display:flex;align-items:flex-end;justify-content:center;padding:calc(var(--safe-top) + 12px) 0 0;overscroll-behavior:contain;animation:fade .12s ease-out}.modal{display:flex;flex-direction:column;width:100%;max-width:640px;max-height:92vh;max-height:92dvh;overflow:hidden;background:var(--bg-elev);border:1px solid var(--border);border-bottom:0;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);box-shadow:var(--shadow)}.modal-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 10px 8px 18px}.modal-header h2{min-width:0}.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:6px 18px 18px}.modal-footer{flex:none;padding:12px 18px;border-top:1px solid var(--border)}.modal-footer:empty{display:none}@media(min-width:700px){.modal-backdrop{align-items:center;padding:max(24px,var(--safe-top)) max(24px,var(--safe-right)) max(24px,var(--safe-bottom)) max(24px,var(--safe-left))}.modal{max-height:100%;padding:0;border-bottom:1px solid var(--border);border-radius:var(--radius-lg)}.modal-header{padding:16px 14px 10px 24px}.modal-body{padding:6px 24px 24px}.modal-footer{padding:14px 24px}}@keyframes fade{0%{opacity:0}}.toast-stack{position:fixed;z-index:200;left:50%;transform:translate(-50%);bottom:calc(var(--chrome-bottom) + 12px);display:flex;flex-direction:column;gap:8px;width:min(calc(100vw - 32px),420px);pointer-events:none}.toast{pointer-events:auto;padding:12px 14px;border-radius:var(--radius-sm);background:var(--bg-elev-2);color:var(--text);border:1px solid var(--border-strong);box-shadow:var(--shadow);font-size:.9rem;animation:fade .15s}.toast.success{border-color:var(--success)}.toast.error{border-color:var(--danger)}@media(pointer:coarse){.toast{padding:14px 16px;font-size:.95rem}}@media(min-width:1024px){.toast-stack{left:auto;right:calc(24px + var(--safe-right));bottom:calc(24px + var(--safe-bottom));transform:none;width:min(calc(100vw - 48px),400px)}}html.focus-mode .toast-stack{top:calc(var(--safe-top) + 12px);bottom:auto;left:50%;right:auto;transform:translate(-50%)}.rating{display:inline-flex;gap:2px}.rating button{appearance:none;border:0;background:none;padding:2px;cursor:pointer;color:var(--border-strong);line-height:0;border-radius:6px}.rating button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.rating button.on{color:var(--accent)}.rating.readonly button{cursor:default}@media(pointer:coarse){.rating:not(.readonly){gap:0}.rating:not(.readonly) button{padding:6px}}.chart-wrap{width:100%;position:relative}.chart-wrap .u-legend{font-size:.8rem;color:var(--text-muted)}.chart-wrap .u-legend .u-marker{border-radius:2px}.chart-wrap .u-select{background:var(--accent-soft)}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table th{text-align:left;font-size:.75rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;font-weight:650;padding:8px;border-bottom:1px solid var(--border)}.table td{padding:10px 8px;border-bottom:1px solid var(--border)}.table tr:last-child td{border-bottom:0}.table-scroll{overflow-x:auto;overscroll-behavior-x:contain}@media(pointer:coarse){.table td{padding:12px 8px}}
