:root{--vc-navy: #0F172A;--vc-navy-raised: #29364F;--vc-rose: #F43F5E;--vc-coral: #FF6B78;--vc-orange: #FF9638;--vc-amber: #FFC247;--vc-teal: #11D7B5;--vc-mint: #9EE6A7;--vc-brand-gradient: linear-gradient(90deg, #F43F5E 0%, #FF6B78 27%, #FF9638 49%, #11D7B5 70%, #9EE6A7 100%);--vc-bg: #FFFFFF;--vc-surface: #FFFFFF;--vc-surface-muted: #F8FAFC;--vc-text: #0F172A;--vc-text-muted: #475569;--vc-border: #CBD5E1;--vc-border-strong: #64748B;--vc-link: #1D4ED8;--vc-focus: #2563EB;--vc-action: #BE123C;--vc-on-action: #FFFFFF;--vc-accent: #F43F5E;--vc-accent-soft: #FFF1F2;--vc-info: #1D4ED8;--vc-success: #166534;--vc-warning: #92400E;--vc-error: #B91C1C;--vc-source-typed: #9F1239;--vc-source-imported: #1D4ED8;--vc-source-calculated: #9D174D;--vc-source-overridden: #7C2D12;--vc-space-1: 4px;--vc-space-2: 8px;--vc-space-3: 12px;--vc-space-4: 16px;--vc-space-5: 20px;--vc-space-6: 24px;--vc-space-8: 32px;--vc-space-10: 40px;--vc-space-12: 48px;--vc-radius-sm: 6px;--vc-radius-md: 10px;--vc-radius-lg: 16px;--vc-radius-xl: 24px;--vc-radius-pill: 999px;--vc-font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--vc-font-size-xs: 12px;--vc-font-size-sm: 14px;--vc-font-size-md: 16px;--vc-font-size-lg: 18px;--vc-font-size-xl: 20px;--vc-font-size-2xl: 24px;--vc-font-size-3xl: 30px;--vc-line-height-tight: 1.2;--vc-line-height-normal: 1.5;--vc-chart-sleep: #2563EB;--vc-chart-mood: #E11D48;--vc-chart-eating: #0F766E;--vc-chart-sugar: #7C3AED;--vc-chart-alcohol: #C2410C;--vc-chart-weight: #475569;--vc-chart-steps: #0891B2;--vc-chart-active-energy: #4D7C0F;--vc-chart-exercise: #9333EA;--vc-chart-stand: #0369A1;--vc-chart-sleep-deep: #3730A3;--vc-chart-sleep-rem: #7C3AED;--vc-chart-sleep-core: #38BDF8}[data-theme=dark]{--vc-bg: #0B1220;--vc-surface: #111C2E;--vc-surface-muted: #172338;--vc-text: #F8FAFC;--vc-text-muted: #CBD5E1;--vc-border: #334155;--vc-border-strong: #64748B;--vc-link: #93C5FD;--vc-focus: #60A5FA;--vc-action: #FB7185;--vc-on-action: #0B1220;--vc-accent: #FB7185;--vc-accent-soft: #3A1D2A;--vc-info: #93C5FD;--vc-success: #86EFAC;--vc-warning: #FCD34D;--vc-error: #FDA4AF;--vc-source-typed: #FDA4AF;--vc-source-imported: #93C5FD;--vc-source-calculated: #F9A8D4;--vc-source-overridden: #FDBA74;--vc-chart-sleep: #93C5FD;--vc-chart-mood: #FDA4AF;--vc-chart-eating: #5EEAD4;--vc-chart-sugar: #C4B5FD;--vc-chart-alcohol: #FDBA74;--vc-chart-weight: #CBD5E1;--vc-chart-steps: #67E8F9;--vc-chart-active-energy: #BEF264;--vc-chart-exercise: #D8B4FE;--vc-chart-stand: #7DD3FC;--vc-chart-sleep-deep: #A5B4FC;--vc-chart-sleep-rem: #C4B5FD;--vc-chart-sleep-core: #7DD3FC}.vc-gradient-text{background:var(--vc-brand-gradient);-webkit-background-clip:text;background-clip:text;color:transparent}:root{--app-canvas: color-mix(in srgb, var(--vc-border) 26%, var(--vc-surface-muted));--app-sidebar: var(--vc-surface-muted);--app-card: var(--vc-surface);--app-section: color-mix(in srgb, var(--vc-border) 14%, var(--vc-surface));--app-line: color-mix(in srgb, var(--vc-border) 75%, var(--vc-surface));--app-elevation: 0 1px 2px color-mix(in srgb, var(--vc-navy) 8%, transparent), 0 4px 14px color-mix(in srgb, var(--vc-navy) 6%, transparent);--app-elevation-up: 0 -1px 2px color-mix(in srgb, var(--vc-navy) 6%, transparent), 0 -2px 8px color-mix(in srgb, var(--vc-navy) 4%, transparent);--app-tint-success: color-mix(in srgb, var(--vc-success) 12%, var(--vc-surface));--app-tint-warning: color-mix(in srgb, var(--vc-warning) 12%, var(--vc-surface));--app-tint-error: color-mix(in srgb, var(--vc-error) 10%, var(--vc-surface));--app-tint-info: color-mix(in srgb, var(--vc-info) 10%, var(--vc-surface));--app-tint-neutral: color-mix(in srgb, var(--vc-text-muted) 10%, var(--vc-surface));--app-action-hover: color-mix(in srgb, var(--vc-action) 88%, var(--vc-text));--acc-rose-ink: var(--vc-action);--acc-rose-tint: color-mix(in srgb, var(--vc-rose) 11%, var(--vc-surface));--acc-rose-bar: var(--vc-rose);--acc-orange-ink: var(--vc-chart-alcohol);--acc-orange-tint: color-mix(in srgb, var(--vc-orange) 14%, var(--vc-surface));--acc-orange-bar: var(--vc-orange);--acc-teal-ink: var(--vc-chart-eating);--acc-teal-tint: color-mix(in srgb, var(--vc-teal) 13%, var(--vc-surface));--acc-teal-bar: var(--vc-teal);--acc-blue-ink: var(--vc-info);--acc-blue-tint: color-mix(in srgb, var(--vc-info) 10%, var(--vc-surface));--acc-blue-bar: var(--vc-chart-sleep);--acc-amber-ink: var(--vc-warning);--acc-amber-tint: color-mix(in srgb, var(--vc-amber) 20%, var(--vc-surface));--acc-amber-bar: var(--vc-amber);--acc-red-ink: var(--vc-error);--acc-red-tint: color-mix(in srgb, var(--vc-error) 10%, var(--vc-surface));--acc-red-bar: var(--vc-error);--acc-slate-ink: var(--vc-text-muted);--acc-slate-tint: color-mix(in srgb, var(--vc-text-muted) 10%, var(--vc-surface));--acc-slate-bar: var(--vc-border-strong);--app-elevation-hover: 0 2px 4px color-mix(in srgb, var(--vc-navy) 9%, transparent), 0 8px 20px color-mix(in srgb, var(--vc-navy) 8%, transparent);--app-row-hover: color-mix(in srgb, var(--vc-info) 7%, var(--vc-surface));--app-row-stripe: color-mix(in srgb, var(--vc-border) 12%, var(--vc-surface));--app-selected: color-mix(in srgb, var(--vc-rose) 14%, var(--vc-surface));--app-control-h: 44px;--app-radius-control: var(--vc-radius-md);--app-radius-card: var(--vc-radius-lg);--app-pad-card: var(--vc-space-4);--app-gap: var(--vc-space-4)}[data-theme=dark]{--app-canvas: var(--vc-bg);--app-sidebar: var(--vc-surface);--app-card: var(--vc-surface);--app-section: var(--vc-surface-muted);--app-line: var(--vc-border);--app-elevation: 0 0 0 1px color-mix(in srgb, var(--vc-border) 45%, transparent);--app-elevation-hover: 0 0 0 1px color-mix(in srgb, var(--vc-border-strong) 70%, transparent);--app-row-hover: color-mix(in srgb, var(--vc-info) 12%, var(--vc-surface));--app-row-stripe: color-mix(in srgb, var(--vc-border) 14%, var(--vc-surface));--app-selected: color-mix(in srgb, var(--vc-rose) 20%, var(--vc-surface));--app-elevation-up: 0 -1px 0 color-mix(in srgb, var(--vc-border) 60%, transparent)}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--app-canvas);color:var(--vc-text);font-family:var(--vc-font-ui);font-size:var(--vc-font-size-md);line-height:var(--vc-line-height-normal);-webkit-text-size-adjust:100%}main{max-width:36rem;margin:0 auto;padding:var(--vc-space-4) var(--vc-space-4) calc(6rem + env(safe-area-inset-bottom))}main.wide{max-width:none;padding-inline:var(--vc-space-3)}h1{font-size:var(--vc-font-size-2xl);line-height:var(--vc-line-height-tight);margin:0;letter-spacing:-.01em}h2{font-size:var(--vc-font-size-lg);line-height:var(--vc-line-height-tight);margin:0 0 var(--vc-space-2)}p{margin:0 0 var(--vc-space-2)}a{color:var(--vc-link)}code{font-size:.92em;background:var(--app-section);padding:1px 4px;border-radius:var(--vc-radius-sm)}.muted,.hint{color:var(--vc-text-muted);font-size:var(--vc-font-size-sm)}.hint{margin:var(--vc-space-2) 0 0}.center{text-align:center}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.row{display:flex;align-items:center;justify-content:space-between;gap:var(--vc-space-3);flex-wrap:wrap}.acc-rose{--ink: var(--acc-rose-ink);--tint: var(--acc-rose-tint);--bar: var(--acc-rose-bar)}.acc-orange{--ink: var(--acc-orange-ink);--tint: var(--acc-orange-tint);--bar: var(--acc-orange-bar)}.acc-teal{--ink: var(--acc-teal-ink);--tint: var(--acc-teal-tint);--bar: var(--acc-teal-bar)}.acc-blue{--ink: var(--acc-blue-ink);--tint: var(--acc-blue-tint);--bar: var(--acc-blue-bar)}.acc-amber{--ink: var(--acc-amber-ink);--tint: var(--acc-amber-tint);--bar: var(--acc-amber-bar)}.acc-red{--ink: var(--acc-red-ink);--tint: var(--acc-red-tint);--bar: var(--acc-red-bar)}.acc-slate{--ink: var(--acc-slate-ink);--tint: var(--acc-slate-tint);--bar: var(--acc-slate-bar)}.page{display:grid;gap:var(--app-gap)}.pagehead{display:flex;align-items:center;justify-content:space-between;gap:var(--vc-space-3);flex-wrap:wrap}.page>.pagehead{margin-bottom:0}.pagehead-title{display:flex;align-items:center;gap:var(--vc-space-3);min-width:0}.page-icon,.tile{display:grid;place-items:center;flex:none;background:var(--tint);color:var(--ink);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--bar) 35%,transparent)}.page-icon{width:44px;height:44px;border-radius:var(--vc-radius-md)}.tile{width:36px;height:36px;border-radius:var(--vc-radius-md)}.page-icon svg,.tile svg,.icon svg{width:24px;height:24px;display:block}.icon{display:inline-flex}.card{background:var(--app-card);border:1px solid var(--app-line);border-radius:var(--app-radius-card);padding:var(--app-pad-card);box-shadow:var(--app-elevation);margin:0;min-width:0}.card>:last-child{margin-bottom:0}.card-title{display:flex;align-items:center;gap:var(--vc-space-3);margin:0 0 var(--vc-space-3)}.accented{box-shadow:inset 0 3px 0 var(--bar),var(--app-elevation)}button,input{font:inherit;color:inherit}button{min-height:var(--app-control-h);padding:0 var(--vc-space-4);border-radius:var(--app-radius-control);border:1px solid var(--vc-border-strong);background:var(--app-card);cursor:pointer;font-weight:500;transition:background-color .12s,border-color .12s,transform .08s,box-shadow .12s}button:hover:not(:disabled){background:var(--app-section);border-color:var(--vc-text-muted)}button:active:not(:disabled){transform:translateY(1px) scale(.99)}button.primary{background:var(--vc-action);color:var(--vc-on-action);border-color:var(--vc-action);font-weight:600;box-shadow:0 1px 2px color-mix(in srgb,var(--vc-action) 40%,transparent)}button.primary:hover:not(:disabled){background:var(--app-action-hover);border-color:var(--app-action-hover)}button.big{min-height:52px;width:100%;font-size:var(--vc-font-size-lg)}button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}button.link{background:none;border:0;color:var(--vc-link);text-decoration:underline;min-height:var(--app-control-h);box-shadow:none}button.link:hover:not(:disabled){background:none}button.link.small{min-height:0;padding:0;font-size:var(--vc-font-size-sm)}input{min-height:var(--app-control-h);padding:0 var(--vc-space-3);border-radius:var(--app-radius-control);border:1px solid var(--vc-border-strong);background:var(--app-card);width:100%;transition:border-color .12s,box-shadow .12s}input:hover:not(:disabled){border-color:var(--vc-text-muted)}input[aria-invalid=true]{border-color:var(--vc-error);box-shadow:0 0 0 1px var(--vc-error)}:focus-visible{outline:3px solid var(--vc-focus);outline-offset:2px}.pill{display:inline-flex;align-items:center;gap:var(--vc-space-1);padding:2px var(--vc-space-2);border-radius:var(--vc-radius-pill);font-size:var(--vc-font-size-xs);font-weight:600;line-height:var(--vc-line-height-normal);white-space:nowrap;background:var(--acc-slate-tint);color:var(--acc-slate-ink)}.pill.rose{background:var(--acc-rose-tint);color:var(--acc-rose-ink)}.pill.orange{background:var(--acc-orange-tint);color:var(--acc-orange-ink)}.pill.teal,.pill.success{background:var(--acc-teal-tint);color:var(--acc-teal-ink)}.pill.blue,.pill.info{background:var(--acc-blue-tint);color:var(--acc-blue-ink)}.pill.amber,.pill.warning{background:var(--acc-amber-tint);color:var(--acc-amber-ink)}.pill.red,.pill.error{background:var(--acc-red-tint);color:var(--acc-red-ink)}.pill .dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex:none}.notice,.saved-note,.alert{border-radius:var(--app-radius-control);padding:var(--vc-space-2) var(--vc-space-3);border:1px solid transparent}.notice{background:var(--acc-amber-tint);color:var(--vc-text);border-color:color-mix(in srgb,var(--acc-amber-bar) 55%,transparent)}.saved-note{background:var(--acc-teal-tint);color:var(--acc-teal-ink);border-color:color-mix(in srgb,var(--acc-teal-bar) 45%,transparent)}.alert{background:var(--acc-red-tint);color:var(--acc-red-ink);border-color:color-mix(in srgb,var(--acc-red-bar) 35%,transparent)}.error{color:var(--vc-error)}.brand-logo{display:inline-flex;line-height:0}.brand-logo img{height:40px;width:auto}.brand-logo .on-dark,[data-theme=dark] .brand-logo .on-light{display:none}[data-theme=dark] .brand-logo .on-dark{display:block}.topbar{position:sticky;top:0;z-index:4;display:flex;align-items:center;padding:var(--vc-space-2) var(--vc-space-4);padding-top:calc(var(--vc-space-2) + env(safe-area-inset-top));background:var(--app-sidebar);border-bottom:1px solid var(--app-line)}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--vc-brand-gradient)}.nav{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;align-items:stretch;background:var(--app-sidebar);border-top:1px solid var(--app-line);box-shadow:var(--app-elevation-up);padding-bottom:env(safe-area-inset-bottom)}.nav .side-logo{display:none}.nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--vc-space-1);min-height:58px;padding:var(--vc-space-2) 2px;text-decoration:none;color:var(--vc-text-muted);font-size:11px;font-weight:500;white-space:nowrap;letter-spacing:-.01em;justify-content:flex-start}.nav a:hover{color:var(--vc-text)}.nav a.active{color:var(--vc-action);font-weight:700}.tab-icon{display:inline-grid;place-items:center;width:24px;height:24px;flex:none;border-radius:var(--vc-radius-pill);transition:background-color .12s,width .12s}.tab-icon svg{width:24px;height:24px;display:block}.nav a.active .tab-icon{width:52px;height:30px;background:var(--vc-action);color:var(--vc-on-action)}.nav a[data-tab=checkin]{--ink: var(--acc-rose-ink);--tint: var(--acc-rose-tint)}.nav a[data-tab=history]{--ink: var(--acc-blue-ink);--tint: var(--acc-blue-tint)}.nav a[data-tab=data-quality]{--ink: var(--acc-teal-ink);--tint: var(--acc-teal-tint)}.nav a[data-tab=roadmap]{--ink: var(--acc-orange-ink);--tint: var(--acc-orange-tint)}.nav a[data-tab=settings]{--ink: var(--acc-slate-ink);--tint: var(--acc-slate-tint)}@media(min-width:900px){.shell{display:grid;grid-template-columns:17rem 1fr;min-height:100vh}.topbar{display:none}.nav{position:sticky;top:0;left:auto;right:auto;bottom:auto;height:100vh;flex-direction:column;align-items:stretch;gap:var(--vc-space-1);padding:var(--vc-space-6) var(--vc-space-4);border-top:0;border-right:1px solid var(--app-line);box-shadow:none}.nav:before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--vc-brand-gradient)}.nav .side-logo{display:inline-flex;margin:var(--vc-space-2) 0 var(--vc-space-6) var(--vc-space-1)}.nav .side-logo img{height:52px}.nav a{flex:none;flex-direction:row;justify-content:flex-start;gap:var(--vc-space-3);min-height:48px;padding:var(--vc-space-1) var(--vc-space-3) var(--vc-space-1) var(--vc-space-2);border-radius:var(--app-radius-control);font-size:var(--vc-font-size-md);transition:background-color .12s}.nav a:hover{background:var(--app-section)}.tab-icon,.nav a.active .tab-icon{width:36px;height:36px;border-radius:var(--vc-radius-md);background:var(--tint);color:var(--ink)}.nav a.active,.nav a.active:hover{background:var(--vc-action);color:var(--vc-on-action)}.nav a.active .tab-icon{background:color-mix(in srgb,var(--vc-on-action) 20%,transparent);color:var(--vc-on-action)}.shell main{margin:0;max-width:44rem;padding:var(--vc-space-8)}.shell main.wide{max-width:none}}.login{padding-top:10vh;display:grid;gap:var(--vc-space-3);max-width:26rem;margin-inline:auto}.login form{display:grid;gap:var(--vc-space-3)}.login-card{display:grid;gap:var(--vc-space-3);box-shadow:inset 0 3px 0 var(--vc-rose),var(--app-elevation)}.login .logo{display:block;width:min(260px,70%);height:auto;margin:0 auto var(--vc-space-4)}.login .logo-on-dark,[data-theme=dark] .login .logo-on-light{display:none}[data-theme=dark] .login .logo-on-dark{display:block}.checkin{display:grid;gap:var(--app-gap)}.progress{font-variant-numeric:tabular-nums}.field{background:var(--app-card);border:1px solid var(--app-line);border-radius:var(--app-radius-card);box-shadow:inset 0 3px 0 var(--bar),var(--app-elevation);padding:var(--app-pad-card);margin:0;min-width:0}.field legend{float:left;width:100%;padding:0;margin:0 0 var(--vc-space-3);display:flex;align-items:center;gap:var(--vc-space-3);font-weight:600}.field legend .title{flex:1;min-width:0}.field legend .readout{font-size:var(--vc-font-size-sm);font-variant-numeric:tabular-nums}.field .scale{clear:both}.scale{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;padding:var(--vc-space-1);background:var(--tint);border:1px solid color-mix(in srgb,var(--bar) 28%,transparent);border-radius:var(--vc-radius-md)}.chip{padding:0;min-width:0;font-size:var(--vc-font-size-md);border-radius:var(--vc-radius-sm);border-color:var(--app-line);background:var(--app-card)}.chip:hover:not(:disabled){border-color:var(--ink);background:var(--app-card);color:var(--ink)}.chip:active:not(:disabled){transform:scale(.94)}.chip.on,.chip.on:hover{background:var(--vc-action);color:var(--vc-on-action);border-color:var(--vc-action);font-weight:700;box-shadow:0 2px 6px color-mix(in srgb,var(--vc-action) 35%,transparent)}.date input{width:auto}.action-card{display:grid;gap:var(--vc-space-2);background:var(--acc-rose-tint);border:1px solid color-mix(in srgb,var(--acc-rose-bar) 30%,var(--app-line));border-radius:var(--app-radius-card);padding:var(--app-pad-card)}.action-card .hint,.action-card p{margin:0}.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--vc-space-3)}.statgrid.three{grid-template-columns:repeat(3,1fr)}@media(max-width:899px){.statgrid,.statgrid.three{grid-template-columns:repeat(2,1fr)}}@media(max-width:420px){.statgrid.three{grid-template-columns:1fr}}.stat{display:grid;grid-template-columns:auto 1fr;gap:2px var(--vc-space-3);align-items:center;padding:var(--vc-space-3) var(--vc-space-4);background:var(--tint);border:1px solid color-mix(in srgb,var(--bar) 30%,var(--app-line));border-radius:var(--app-radius-card);box-shadow:inset 0 3px 0 var(--bar),var(--app-elevation);min-width:0}.stat .tile{grid-row:span 2;background:var(--app-card);width:40px;height:40px}.stat-label{font-size:var(--vc-font-size-xs);font-weight:600;color:var(--vc-text-muted);letter-spacing:.01em;align-self:end}.stat-value{font-size:var(--vc-font-size-xl);font-weight:700;line-height:var(--vc-line-height-tight);color:var(--ink);font-variant-numeric:tabular-nums;align-self:start}.stat-value .unit{font-size:var(--vc-font-size-sm);font-weight:600;margin-left:2px}.stat-sub{grid-column:1 / -1;margin:var(--vc-space-1) 0 0;font-size:var(--vc-font-size-xs);color:var(--vc-text-muted)}.gridpage .status{font-size:var(--vc-font-size-sm);font-weight:600;padding:2px var(--vc-space-3);border-radius:var(--vc-radius-pill)}.status.saving{color:var(--acc-slate-ink);background:var(--acc-slate-tint)}.status.saved{color:var(--acc-teal-ink);background:var(--acc-teal-tint)}.status.error{color:var(--acc-red-ink);background:var(--acc-red-tint)}.tools{display:flex;flex-wrap:wrap;gap:var(--vc-space-2);align-items:flex-start}.tools details{background:var(--app-card);border:1px solid var(--app-line);border-radius:var(--app-radius-control);box-shadow:var(--app-elevation)}.tools details[open]{flex:1 1 100%}.tools summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:var(--vc-space-2);min-height:var(--app-control-h);padding:0 var(--vc-space-3);font-weight:600;border-radius:var(--app-radius-control)}.tools summary::-webkit-details-marker{display:none}.tools summary:hover{background:var(--app-section)}.tools summary .icon svg{width:20px;height:20px}.tools summary .count{color:var(--vc-text-muted);font-weight:500;font-size:var(--vc-font-size-sm)}.tools summary .chev{margin-left:auto;transition:transform .15s}.tools details[open] summary .chev{transform:rotate(180deg)}.tools details[open] summary{border-bottom:1px solid var(--app-line);border-bottom-left-radius:0;border-bottom-right-radius:0}.tools .panel{padding:var(--vc-space-3)}.chipchecks{display:flex;flex-wrap:wrap;gap:var(--vc-space-2)}.chipcheck{display:inline-flex;align-items:center;gap:var(--vc-space-2);min-height:36px;padding:0 var(--vc-space-3);border:1px solid var(--app-line);border-radius:var(--vc-radius-pill);background:var(--app-card);cursor:pointer;font-size:var(--vc-font-size-sm)}.chipcheck:hover{border-color:var(--vc-text-muted)}.chipcheck:has(input:checked){background:var(--acc-blue-tint);border-color:var(--acc-blue-bar);color:var(--acc-blue-ink);font-weight:600}.chipcheck:has(input:focus-visible){outline:3px solid var(--vc-focus);outline-offset:2px}.chipcheck input{width:16px;min-height:0;height:16px;accent-color:var(--vc-action);margin:0}.legend{display:grid;gap:var(--vc-space-2);font-size:var(--vc-font-size-sm);margin:0;padding:0;list-style:none}.legend li{display:flex;gap:var(--vc-space-3);align-items:center}.swatch{width:28px;height:20px;border-radius:var(--vc-radius-sm);flex:none;border:1px solid var(--app-line);display:grid;place-items:center;font-size:11px}.swatch.imported{background:color-mix(in srgb,var(--vc-source-imported) 12%,var(--app-card))}.swatch.typed{background:color-mix(in srgb,var(--vc-source-typed) 10%,var(--app-card))}.swatch.calculated{background:color-mix(in srgb,var(--vc-source-calculated) 12%,var(--app-card));color:var(--vc-source-calculated)}.swatch.override{background:color-mix(in srgb,var(--vc-orange) 16%,var(--app-card));box-shadow:inset 0 -2px 0 var(--vc-source-overridden)}.celldetail{display:flex;flex-wrap:wrap;gap:var(--vc-space-2) var(--vc-space-3);align-items:center;min-height:40px;padding:var(--vc-space-2) var(--vc-space-3);border-radius:var(--app-radius-control);background:var(--acc-blue-tint);border:1px solid color-mix(in srgb,var(--acc-blue-bar) 25%,transparent);font-size:var(--vc-font-size-sm)}.celldetail strong{font-weight:700}.gridwrap{overflow:auto;max-height:70vh;border:1px solid var(--app-line);border-radius:var(--app-radius-card);box-shadow:var(--app-elevation);background:var(--app-card);-webkit-overflow-scrolling:touch}.grid{border-collapse:separate;border-spacing:0;font-size:var(--vc-font-size-sm);font-variant-numeric:tabular-nums}.grid th,.grid td{border-bottom:1px solid var(--app-line);border-right:1px solid var(--app-line);padding:0}.grid thead th{position:sticky;z-index:2;background:var(--app-section);padding:var(--vc-space-2) var(--vc-space-1);font-size:var(--vc-font-size-xs);white-space:nowrap;text-align:center;color:var(--vc-text-muted);font-weight:700;letter-spacing:.02em}.grid thead tr.groups th{top:0;padding:var(--vc-space-1) var(--vc-space-2);border-top:3px solid var(--bar);background:var(--tint);color:var(--ink);text-align:left}.grid thead tr.groups th.date{top:0;background:var(--app-section);border-top:0;color:var(--vc-text-muted);text-align:left}.grid thead tr.cols th{top:30px}.grid .date{position:sticky;left:0;z-index:1;background:var(--app-card);padding:0 var(--vc-space-2);min-width:4.4rem;text-align:left;font-weight:600}.grid thead .date{z-index:3;background:var(--app-section)}.yr{display:block;font-size:var(--vc-font-size-xs);color:var(--vc-text-muted);font-weight:400}.grid tbody tr:nth-child(2n)>td,.grid tbody tr:nth-child(2n)>th.date{background-color:var(--app-row-stripe)}.grid tbody tr:hover>td,.grid tbody tr:hover>th.date{background-color:var(--app-row-hover)}.cell{position:relative;background-image:linear-gradient(var(--cell-tint, transparent),var(--cell-tint, transparent));transition:background-color .1s}.cell input{border:0;border-radius:0;background:transparent;min-height:var(--app-control-h);width:4.6rem;padding:0 var(--vc-space-1);text-align:right}.cell input:hover{border:0}.cell input:focus-visible{outline:none}.cell.src-health{--cell-tint: color-mix(in srgb, var(--vc-source-imported) 10%, transparent)}.cell.src-typed{--cell-tint: color-mix(in srgb, var(--vc-source-typed) 9%, transparent)}.cell.src-derived{--cell-tint: color-mix(in srgb, var(--vc-source-calculated) 11%, transparent)}.cell.src-derived:before{content:"ƒ";position:absolute;top:1px;left:4px;font-size:10px;line-height:1;color:var(--vc-source-calculated);pointer-events:none}.cell.override{--cell-tint: color-mix(in srgb, var(--vc-orange) 16%, transparent);box-shadow:inset 0 -2px 0 0 var(--vc-source-overridden)}.cell:focus-within{background-color:var(--app-selected);box-shadow:inset 0 0 0 2px var(--vc-action);z-index:1}.cell.saving{background-color:var(--app-selected)}.cell.err,.cell.invalid{box-shadow:inset 0 0 0 2px var(--vc-error);background-color:var(--acc-red-tint)}.cell input::placeholder{color:var(--vc-text-muted);opacity:.7;font-style:italic}.orig{display:block;padding:0 var(--vc-space-1) var(--vc-space-1);font-size:var(--vc-font-size-xs);color:var(--vc-text-muted);text-align:right;white-space:nowrap}.cell.inprogress:after{content:"";position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--vc-warning);pointer-events:none}.more{margin-top:var(--vc-space-3)}.more input{width:auto}.quality-wrap{overflow:hidden;border-radius:var(--app-radius-control);border:1px solid var(--app-line)}.quality{width:100%;border-collapse:collapse}.quality th,.quality td{text-align:left;padding:var(--vc-space-2);border-bottom:1px solid var(--app-line)}.quality thead th{color:var(--vc-text-muted);font-size:var(--vc-font-size-xs);font-weight:700;letter-spacing:.02em;background:var(--app-section)}.quality tbody tr:nth-child(2n)>*{background:var(--app-row-stripe)}.quality tbody tr:hover>*{background:var(--app-row-hover)}.quality tbody tr:last-child>*{border-bottom:0}.segmented{display:inline-flex;border:1px solid var(--vc-border-strong);border-radius:var(--app-radius-control);overflow:hidden;background:var(--app-card)}.seg{border:0;border-radius:0;background:transparent;min-width:5rem}.seg+.seg{border-left:1px solid var(--vc-border-strong)}.seg:hover:not(:disabled){background:var(--app-section)}.seg.on,.seg.on:hover{background:var(--vc-action);color:var(--vc-on-action);font-weight:600}.road-item{display:grid;grid-template-columns:44px 1fr;gap:var(--vc-space-3);align-items:start;box-shadow:inset 4px 0 0 var(--bar),var(--app-elevation);transition:box-shadow .15s}.road-item:hover{box-shadow:inset 4px 0 0 var(--bar),var(--app-elevation-hover)}.road-item.finished{opacity:.85}.road-icon{width:44px;height:44px;border-radius:var(--vc-radius-md)}.road-body{min-width:0}.road-head{display:flex;justify-content:space-between;gap:var(--vc-space-3);align-items:flex-start;flex-wrap:wrap}.road-head h2{margin:0;font-size:var(--vc-font-size-md);flex:1 1 14rem}.road-pills{display:flex;gap:var(--vc-space-1);flex-wrap:wrap}.road-impact{margin:var(--vc-space-2) 0 var(--vc-space-1)}.road-desc{margin:0;overflow-wrap:anywhere}.road-type{margin:var(--vc-space-2) 0 0;font-size:var(--vc-font-size-xs)}.filters{display:grid;gap:var(--vc-space-2)}.filter-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--vc-space-2)}.filter-label{font-size:var(--vc-font-size-sm);font-weight:600;color:var(--vc-text-muted);min-width:4.5rem}.filter{min-height:36px;padding:0 var(--vc-space-3);border-radius:var(--vc-radius-pill);font-size:var(--vc-font-size-sm)}.filter.on,.filter.on:hover{background:var(--vc-action);color:var(--vc-on-action);border-color:var(--vc-action);font-weight:600}.muted-count{opacity:.75;font-weight:400}
