:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d0d0d;--surface:#1a1a19;--surface-2:#232322;--border:#ffffff1a;--text:#f0efec;--text-2:#c3c2b7;--muted:#898781;--grid:#2c2c2a;--axis:#383835;--series-1:#3987e5;--series-2:#d95926;--series-3:#199e70;--series-7:#9085e9;--band:#c3c2b724;--good:#0ca30c;--warning:#fab219;--serious:#ec835a;--critical:#d03b3b;--up:#0ca30c;--down:#e66767;--radius:14px;--gap:12px;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f9f9f7;--surface:#fcfcfb;--surface-2:#f1f1ee;--border:#0b0b0b1a;--text:#0b0b0b;--text-2:#52514e;--muted:#898781;--grid:#e1e0d9;--axis:#c3c2b7;--series-1:#2a78d6;--series-2:#eb6834;--series-3:#1baf7a;--series-7:#6250d6;--band:#52514e1f;--up:#006300;--down:#d03b3b}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font:16px/1.4 var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;padding:0}#root{flex-direction:column;min-height:100dvh;display:flex}a{color:inherit}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.app-header{z-index:5;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-header h1{letter-spacing:.2px;margin:0;font-size:18px;font-weight:600}.app-header .sub{color:var(--muted);font-size:12px;font-weight:400;display:block}.header-actions{gap:6px;display:flex}.icon-btn{width:36px;height:36px;color:var(--text-2);border:1px solid var(--border);background:var(--surface);border-radius:10px;place-items:center;display:grid}.icon-btn:active{background:var(--surface-2)}.icon-btn.spinning svg{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}main{width:100%;max-width:720px;padding:12px 16px calc(84px + env(safe-area-inset-bottom));gap:var(--gap);flex-direction:column;flex:1;margin:0 auto;display:flex}.tabbar{z-index:5;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{color:var(--muted);border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0;font-size:11px;display:flex}.tabbar button.active{color:var(--text)}.tabbar button.active svg{color:var(--series-1)}.tabbar button:disabled{opacity:.4;cursor:default}.tabbar svg{width:22px;height:22px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.card.stale{opacity:.7}.card-title{color:var(--text-2);text-transform:uppercase;letter-spacing:.6px;justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;font-size:13px;font-weight:600;display:flex}.card-title .meta{text-transform:none;letter-spacing:0;color:var(--muted);font-size:12px;font-weight:400}.hero{align-items:baseline;gap:10px;display:flex}.hero .value{letter-spacing:-1px;font-size:52px;font-weight:600;line-height:1}.hero .arrow{font-size:28px;line-height:1}.hero .arrow.up{color:var(--up)}.hero .arrow.down{color:var(--down)}.hero .arrow.flat{color:var(--muted)}.hero .unit{color:var(--muted);font-size:14px}.muted{color:var(--muted)}.small{font-size:13px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.between{justify-content:space-between}.parts{grid-template-columns:1fr;gap:8px;margin-top:12px;display:grid}.part{grid-template-columns:110px 1fr 52px;align-items:center;gap:8px;font-size:13px;display:grid}.part .label{color:var(--text-2)}.part .val{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-2)}.zbar{background:var(--surface-2);border-radius:5px;height:10px;position:relative;overflow:hidden}.zbar:before{content:"";background:var(--axis);width:1px;position:absolute;top:0;bottom:0;left:50%}.zbar .fill{border-radius:5px;position:absolute;top:0;bottom:0}.zbar .fill.pos{background:var(--up);left:50%}.zbar .fill.neg{background:var(--down);right:50%}.status{background:var(--surface-2);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 6px;font-size:13px;font-weight:600;display:inline-flex}.status .dot{border-radius:50%;width:10px;height:10px}.dot.green{background:var(--good)}.dot.yellow{background:var(--warning)}.dot.red{background:var(--critical)}.dot.unknown{background:var(--muted)}.stats{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.stats.two{grid-template-columns:repeat(2,1fr)}.stat{background:var(--surface-2);border-radius:10px;min-width:0;padding:10px 12px}.stat .label{color:var(--muted);font-size:12px}.stat .value{font-size:22px;font-weight:600;line-height:1.2}.stat .value .unit{color:var(--muted);margin-left:2px;font-size:12px;font-weight:400}.stat .delta{color:var(--text-2);font-size:12px}.sleepbar{background:var(--surface-2);border-radius:5px;gap:2px;height:10px;margin:10px 0 6px;display:flex;overflow:hidden}.sleepbar span{height:100%;display:block}.sleepbar .deep{background:var(--series-7)}.sleepbar .light{background:var(--series-1)}.sleepbar .rem{background:var(--series-3)}.sleepbar .awake{background:var(--series-2)}.legend{color:var(--text-2);flex-wrap:wrap;gap:4px 14px;font-size:12px;display:flex}.legend span:before{content:"";vertical-align:-1px;background:var(--swatch,var(--muted));border-radius:3px;width:10px;height:10px;margin-right:5px;display:inline-block}.band{height:28px;margin:10px 0 4px;position:relative}.band .range{background:var(--band);border-radius:4px;height:8px;position:absolute;top:10px}.band .mean{background:var(--muted);width:1px;height:16px;position:absolute;top:6px}.band .marker{background:var(--series-1);width:16px;height:16px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;margin-left:-8px;position:absolute;top:6px}.band .marker.week{background:var(--series-2);width:10px;height:10px;margin-left:-5px;top:9px}.band-labels{color:var(--muted);justify-content:space-between;font-size:11px;display:flex}.list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.list li{border-top:1px solid var(--border);justify-content:space-between;gap:10px;padding:8px 0;font-size:14px;display:flex}.list li:first-child{border-top:0}.list .primary{font-weight:500}.list .secondary{color:var(--muted);font-size:12px}.banner{border:1px solid var(--border);background:var(--surface);border-left:4px solid var(--warning);border-radius:10px;padding:10px 14px;font-size:13px}.pill-row{scrollbar-width:none;gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.pill-row::-webkit-scrollbar{display:none}.pill{color:var(--text-2);background:var(--surface);border:1px solid var(--border);white-space:nowrap;border-radius:999px;flex:none;padding:6px 12px;font-size:13px}.pill.active{color:var(--text);background:var(--surface-2);border-color:var(--series-1)}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented button{color:var(--text-2);border-radius:8px;padding:5px 12px;font-size:13px}.segmented button.active{background:var(--surface-2);color:var(--text);font-weight:600}.chart{width:100%;height:260px}.chart-legend{color:var(--text-2);flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:12px;display:flex}.chart-legend .key{vertical-align:3px;border-radius:2px;width:14px;height:3px;margin-right:5px;display:inline-block}.chart-legend .key.band{vertical-align:0;background:var(--band);height:8px}.table-toggle{color:var(--series-1);margin-top:8px;font-size:13px}table.data{border-collapse:collapse;width:100%;margin-top:8px;font-size:13px}table.data th,table.data td{text-align:right;border-top:1px solid var(--border);font-variant-numeric:tabular-nums;padding:4px 6px}table.data th:first-child,table.data td:first-child{text-align:left}table.data th{color:var(--muted);border-top:0;font-weight:500}.sources{color:var(--muted);flex-wrap:wrap;gap:4px 14px;padding:0 4px;font-size:12px;display:flex}.empty{color:var(--muted);font-size:14px}.plan-type{font-size:20px;font-weight:600}.banner.due{border-left-color:var(--critical)}.linklike{color:var(--series-1);text-underline-offset:2px;font-weight:600;text-decoration:underline}.tab-icon{display:inline-flex;position:relative}.badge-dot{background:var(--critical);width:9px;height:9px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:-2px;right:-4px}.field{margin-top:12px}.field.two{grid-template-columns:1fr 1fr;gap:10px;display:grid}.field-label{color:var(--text-2);justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:13px;font-weight:600;display:flex}.field-label .muted{text-align:right;font-size:12px;font-weight:400}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;gap:4px;padding:3px;display:flex}.seg button{min-height:44px;color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;border-radius:9px;flex:1;padding:0 4px;font-size:15px;overflow:hidden}.seg button:active{background:var(--surface)}.seg button.active{background:var(--series-1);color:#fff;font-weight:600}.seg.missing,.stepper.missing{border-color:color-mix(in srgb, var(--warning) 60%, transparent)}.seg.preset button.active,.stepper.preset .count{background:color-mix(in srgb, var(--series-1) 45%, var(--surface-2));color:var(--text)}.stepper.preset .count{border-radius:9px}.seg-ends{color:var(--muted);justify-content:space-between;margin-top:3px;padding:0 4px;font-size:11px;display:flex}.stepper{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;align-items:stretch;gap:4px;padding:3px;display:flex}.stepper button{width:56px;min-height:44px;color:var(--text);background:var(--surface);border-radius:9px;font-size:22px}.stepper button:disabled{opacity:.35}.stepper .count{font-variant-numeric:tabular-nums;background:0 0;flex:1;width:auto;font-size:20px;font-weight:600}.stepper .count.zero{color:var(--text-2);font-size:15px;font-weight:500}textarea,input[type=text],input[type=date]{width:100%;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;outline:none;min-height:44px;padding:10px 12px;font-size:15px}textarea{resize:vertical}textarea:focus,input:focus{border-color:var(--series-1)}input[type=date]{color-scheme:inherit}.save-state.saving{color:var(--muted)}.save-state.saved{color:var(--good)}.save-state.error{color:var(--down)}.suggest{background:color-mix(in srgb, var(--critical) 10%, var(--surface-2));border:1px solid color-mix(in srgb, var(--critical) 40%, transparent);border-radius:10px;flex-direction:column;gap:8px;margin-top:8px;padding:10px 12px;font-size:13px;display:flex}.btn{min-height:40px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:0 14px;font-size:14px;font-weight:600}.btn.primary{background:var(--series-1);color:#fff;border-color:#0000}.btn.danger{color:var(--down)}.btn.small{min-height:32px;padding:0 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}.date-nav{align-items:center;gap:8px;display:flex}.date-nav-main{flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.date-nav-main input[type=date]{text-align:center;background:var(--surface);width:auto;min-height:36px;padding:4px 10px;font-weight:600}.date-nav .icon-btn{font-size:22px}.date-nav .icon-btn:disabled{opacity:.35}.group-title{color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin:12px 0 2px;font-size:12px;font-weight:600}.pill-row.wrap{flex-wrap:wrap;overflow:visible}.type-dot{background:var(--dot,var(--muted));vertical-align:0;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.type-dot.big{flex:none;width:11px;height:11px;margin-right:0}.event-row{align-items:center}.event-main{text-align:left;flex:1;min-width:0}.event-main:disabled{cursor:default}.event-main .secondary{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.event-form{padding:10px 0 4px}.check-row{width:100%;min-height:40px;color:var(--text-2);text-align:left;align-items:center;gap:10px;margin-top:8px;font-size:14px;display:flex}.check-row .check{border:1.5px solid var(--axis);background:var(--surface-2);border-radius:6px;flex:none;width:22px;height:22px;position:relative}.check-row.on{color:var(--text)}.check-row.on .check{background:var(--series-1);border-color:var(--series-1)}.check-row.on .check:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:3px;left:7px;transform:rotate(45deg)}.event-form .field:first-child{margin-top:0}.event-form .pill{min-height:36px}.conf{text-transform:none;letter-spacing:0;background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);vertical-align:1px;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.conf.strong{border-color:var(--series-1);color:var(--series-1)}.conf.likely{border-color:var(--series-3);color:var(--series-3)}.list.insights li{padding:0;display:block}.insight-main{text-align:left;width:100%;padding:10px 0;display:block}.insight-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:2px;display:flex}.insight-head .effect{font-variant-numeric:tabular-nums;font-size:18px;font-weight:600}.insight-head .effect.pos{color:var(--up)}.insight-head .effect.neg{color:var(--down)}.insight-label{color:var(--text-2);font-size:13px}.new-dot{background:var(--series-1);border-radius:50%;width:8px;height:8px}.lag-row{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:12px;margin-top:4px;display:flex}.pill.thin{opacity:.55;border-style:dashed}.pill-n{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:6px;font-size:11px}.chart.compare{height:220px}table.data tr.active td{background:var(--surface-2)}.period{border-top:1px solid var(--border);padding:10px 0 4px}.period:first-of-type{border-top:0;padding-top:0}.period-tag{text-transform:uppercase;letter-spacing:.6px;background:var(--surface-2);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600}.period-tag.best{color:var(--up)}.period-tag.worst{color:var(--down)}.card.disabled{opacity:.6}.section-title{color:var(--text-2);margin:14px 4px 2px;font-size:15px;font-weight:600}.mode-badge{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);text-align:center;border-radius:999px;flex:none;max-width:46%;padding:4px 11px;font-size:12px;font-weight:600;line-height:1.25}.mode-badge.likely{color:var(--up);border-color:color-mix(in srgb, var(--up) 60%, transparent)}.mode-badge.uncertain{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 60%, transparent)}.mode-badge.not_reached{color:var(--down);border-color:color-mix(in srgb, var(--down) 60%, transparent)}.reasons{color:var(--text-2);margin:8px 0 0;padding-left:18px;font-size:14px}.reasons li{margin:3px 0}.reasons.changes{color:var(--text)}.assessment-text{background:var(--surface-2);border-radius:10px;margin:8px 0 0;padding:10px 12px;font-size:14px;line-height:1.5}.seasonal{font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:6px 12px;margin-top:6px;display:flex}.input{font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-height:34px;padding:4px 10px}.linklike.small{font-size:12px}.status-pill{background:var(--surface-2);color:var(--text-2);border:1px solid var(--border);border-radius:999px;flex:none;padding:2px 9px;font-size:11px;font-weight:600}.status-pill.done{color:var(--up);border-color:var(--up)}.status-pill.missed,.status-pill.cancelled{color:var(--down);border-color:color-mix(in srgb, var(--down) 60%, transparent)}.status-pill.moved{color:var(--warning);border-color:color-mix(in srgb, var(--warning) 60%, transparent)}.session-steps{margin:6px 0 0;padding-left:18px;font-size:14px}.session-steps li{margin:2px 0}.zone-chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.zone-chip{background:var(--surface-2);color:var(--text-2);border-left:3px solid var(--muted);font-variant-numeric:tabular-nums;border-radius:8px;padding:3px 9px;font-size:12px}.zone-chip.interval{border-left-color:var(--critical)}.zone-chip.threshold{border-left-color:var(--series-2)}.zone-chip.easy,.zone-chip.long{border-left-color:var(--series-3)}.zone-chip.recovery{border-left-color:var(--series-1)}.adj-tag{color:var(--warning);border:1px solid color-mix(in srgb, var(--warning) 60%, transparent);border-radius:999px;margin:0 6px 4px 0;padding:1px 8px;font-size:11px;font-weight:600;display:inline-block}.list.sessions li.session-row{padding:0;display:block}.session-main{text-align:left;align-items:center;gap:10px;width:100%;padding:8px 0;display:flex}.session-row.today .session-main{background:linear-gradient(90deg, color-mix(in srgb, var(--series-1) 10%, transparent), transparent);border-radius:8px}.session-text{flex-direction:column;flex:1;min-width:0;display:flex}.day-badge{text-transform:uppercase;color:var(--muted);flex-direction:column;flex:0 0 40px;align-items:center;font-size:11px;line-height:1.1;display:flex}.day-badge small{color:var(--text);font-size:15px;font-weight:600}.day-badge.today small{color:var(--series-1)}.session-detail{padding:0 0 10px 50px;font-size:14px}.session-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.btn.xl{flex:auto;min-height:52px;padding:0 20px;font-size:17px}.skip-box{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;margin-top:10px;padding:10px 12px}.skip-box .seg{background:var(--surface)}.live{flex-direction:column;gap:10px;display:flex}.live-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}.live-nav{align-items:center;gap:8px;display:flex}.live-nav .icon-btn{flex:none;width:44px;height:44px;font-size:24px}.live-nav .icon-btn:disabled{opacity:.3}.live-title{text-align:center;flex:1;min-width:0}.live-title .name{font-size:22px;font-weight:700;line-height:1.2}.live-done{flex-wrap:wrap;justify-content:center;gap:6px;margin-top:10px;display:flex}.live-done .pill{font-variant-numeric:tabular-nums;min-height:36px}.live-set .set-head{color:var(--text-2);justify-content:space-between;align-items:baseline;margin-bottom:4px;font-size:15px;font-weight:600;display:flex}.big-stepper{margin-top:8px}.big-stepper .label{color:var(--text-2);margin-bottom:4px;font-size:13px}.big-stepper .controls{align-items:stretch;gap:6px;display:flex}.big-stepper .controls button{min-height:64px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;border-radius:12px;flex:0 0 76px;font-size:32px;font-weight:600}.big-stepper .controls button:active{background:var(--series-1);color:#fff}.big-stepper .controls button:disabled{opacity:.35}.big-stepper .value{font-variant-numeric:tabular-nums;background:var(--surface-2);border-radius:12px;flex:1;place-items:center;font-size:34px;font-weight:700;display:grid}.btn.xl.done{width:100%;min-height:64px;margin-top:12px;font-size:20px}.live-actions{flex-direction:column;gap:8px;margin-top:10px;display:flex}.live-actions.row{flex-direction:row;margin-top:0}.live-actions.row .btn{flex:1;min-height:44px;padding:0 6px}.live-rest{text-align:center}.rest-time{font-variant-numeric:tabular-nums;letter-spacing:-1px;font-size:64px;font-weight:700;line-height:1.1}.live-finish textarea{margin-top:8px}@media (width<=400px){.seg button{font-size:13px}.big-stepper .controls button{flex-basis:64px}.session-detail{padding-left:0}}@media (width>=560px){.parts{grid-template-columns:1fr}.chart{height:320px}}.login{justify-content:center;align-items:center;min-height:100dvh;padding:24px 16px;display:flex}.login-card{flex-direction:column;gap:10px;width:100%;max-width:360px;display:flex}.login-card h1{margin:0;font-size:24px;font-weight:700}.login-label{color:var(--text-2);margin-top:6px;font-size:13px}.login-card input[type=password]{width:100%;font:inherit;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;outline:none;min-height:44px;padding:10px 12px;font-size:16px}.login-card input[type=password]:focus{border-color:var(--series-1)}.login-error{color:var(--down);margin:0;font-size:13px}.login-card .btn.primary{min-height:44px;margin-top:4px}.link-btn{font:inherit;color:var(--series-1);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}
