:root{--bg: #090c0f;--surface: #10151a;--surface-hi: #1d262e;--line: #202a33;--line-hi: #2c3945;--text: #e4ecf2;--text-dim: #7b8894;--accent: #4d9be0;--on-accent: #04080c;--warn: #d8a52f;--danger: #e2645f;--ok: #3fae82;--radius: 2px;--radius-sm: 0px;--s1: .25rem;--s2: .5rem;--s3: .75rem;--s4: 1rem;--s5: 1.5rem;--s6: 2rem;--font-ui: system-ui, -apple-system, "Segoe UI", sans-serif;--font-num: ui-monospace, "Cascadia Mono", "SF Mono", Consolas, "Roboto Mono", monospace;--fs-micro: .6875rem;--fs-sm: .8125rem;--fs-base: .875rem;--fs-md: 1rem;--fs-lg: 1.25rem;--fs-xl: 1.75rem;--fs-hero: 2.25rem;--track-label: .14em;--dur: .14s;--ease: cubic-bezier(.2, 0, 0, 1);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:var(--fs-base);line-height:1.45;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.app{max-width:640px;margin:0 auto;padding:var(--s4) var(--s4) var(--s6);display:flex;flex-direction:column;gap:var(--s4)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:square;stroke-linejoin:miter;flex-shrink:0;display:block}.icon .solid{fill:currentColor;stroke:none}.app-header{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding-bottom:var(--s3);border-bottom:1px solid var(--line)}.app-title{display:flex;align-items:baseline;gap:var(--s2);min-width:0}.app-title h1{font-size:var(--fs-md);font-weight:600;margin:0 -.22em 0 0;letter-spacing:.22em}.app-age{font-family:var(--font-num);font-size:var(--fs-micro);color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap}.sync-badge{display:inline-flex;align-items:center;gap:var(--s1);background:none;color:var(--text-dim);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:var(--font-num);font-size:var(--fs-micro);font-variant-numeric:tabular-nums;cursor:pointer;white-space:nowrap}.sync-dot{width:6px;height:6px;background:var(--text-dim);flex-shrink:0}.sync-idle .sync-dot{background:var(--ok)}.sync-syncing .sync-dot{background:var(--accent);animation:pulse 1s ease-in-out infinite}.sync-offline .sync-dot,.sync-error .sync-dot{background:var(--warn)}@keyframes pulse{50%{opacity:.3}}.tabs{display:flex;border-bottom:1px solid var(--line)}.tabs button{flex:1;background:none;color:var(--text-dim);border:none;border-bottom:2px solid transparent;padding:var(--s2) var(--s1);font-family:inherit;font-size:var(--fs-sm);cursor:pointer;margin-bottom:-1px;transition:color var(--dur) var(--ease);-webkit-tap-highlight-color:transparent}.tabs button.on{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.subtabs{display:flex;gap:var(--s1)}.subtabs button{flex:1;background:none;color:var(--text-dim);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:inherit;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease);-webkit-tap-highlight-color:transparent}.subtabs button.on{color:var(--text);border-color:var(--accent);background:var(--surface)}.quick-add h2,.timeline h2,.stats-head h2{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);font-weight:600;margin:0 0 var(--s2)}.sub-head{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);font-weight:600;margin:var(--s5) 0 var(--s2);padding-bottom:var(--s1);border-bottom:1px solid var(--line)}.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s2)}.quick-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s2);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--radius);min-height:88px;padding:var(--s3) var(--s1);font-family:inherit;font-size:var(--fs-micro);line-height:1.25;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}.quick-button .icon{color:var(--accent)}.quick-button:active{background:var(--surface-hi);border-color:var(--line-hi)}.quick-feedback{min-height:1.2rem;margin:var(--s2) 0 0;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--ok);text-align:center}.quick-feedback.on{animation:confirm .18s var(--ease)}@keyframes confirm{0%{opacity:0;transform:translateY(-3px)}}.detail-button{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--s2);background:none;border:1px solid var(--line-hi);color:var(--text-dim);border-radius:var(--radius);padding:var(--s3);font-family:inherit;font-size:var(--fs-sm);cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.detail-button:active{color:var(--text);border-color:var(--accent)}.filter-row{display:flex;gap:var(--s1);overflow-x:auto;padding-bottom:var(--s1);scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.chip{flex-shrink:0;background:none;color:var(--text-dim);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:inherit;font-size:var(--fs-micro);cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.chip.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.timeline ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}.timeline-item{display:flex;align-items:center;gap:var(--s3);border-bottom:1px solid var(--line);padding:var(--s3) var(--s1);content-visibility:auto;contain-intrinsic-size:auto 58px}.timeline-icon{color:var(--text-dim);display:flex}.timeline-more{display:flex;justify-content:center;padding:var(--s2) 0}.timeline-head{display:flex;justify-content:space-between;gap:var(--s2);font-size:var(--fs-base)}.timeline-head time{color:var(--text-dim);font-family:var(--font-num);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.timeline-summary{font-size:var(--fs-sm);color:var(--text-dim);font-variant-numeric:tabular-nums}.timeline-notes{font-size:var(--fs-sm);color:var(--text-dim);border-left:1px solid var(--line-hi);padding-left:var(--s2);margin-top:var(--s1)}.pending-dot{width:6px;height:6px;background:var(--warn);flex-shrink:0}.icon-button{background:none;border:none;color:var(--text-dim);padding:var(--s2);cursor:pointer;display:flex;align-items:center;transition:color var(--dur) var(--ease)}.icon-button:active{color:var(--danger)}.empty{color:var(--text-dim);text-align:center;padding:var(--s6) var(--s4);font-size:var(--fs-sm)}.timeline-group{margin-bottom:var(--s4)}.group-head{position:sticky;top:0;z-index:1;display:flex;justify-content:space-between;align-items:center;background:var(--bg);margin:0;padding:var(--s2) 0;border-bottom:1px solid var(--line-hi);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);font-weight:600}.group-count{font-family:var(--font-num);font-variant-numeric:tabular-nums;letter-spacing:0;color:var(--text-dim)}.timeline-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--s1);background:none;border:none;padding:0;text-align:left;color:inherit;font:inherit;cursor:pointer}.timeline-body:disabled{cursor:default}.wake-button{flex-shrink:0;background:none;color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:inherit;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);font-weight:600;cursor:pointer}.login{max-width:360px;margin:0 auto;padding:var(--s6) var(--s5)}.login h1{margin:0;font-size:var(--fs-lg);letter-spacing:.3em;font-weight:600}.login-sub{color:var(--text-dim);margin:var(--s2) 0 var(--s6);font-size:var(--fs-sm)}.login form{display:flex;flex-direction:column;gap:var(--s1)}.login label{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);margin-top:var(--s3)}.login input{background:var(--surface);border:1px solid var(--line-hi);border-radius:var(--radius);color:var(--text);padding:var(--s3);font-family:inherit;font-size:16px}.login button{margin-top:var(--s5);background:var(--accent);color:var(--on-accent);border:none;border-radius:var(--radius);padding:var(--s3);font-family:inherit;font-size:var(--fs-md);font-weight:600;cursor:pointer}.login button:disabled{opacity:.6}.login-note{margin-top:var(--s6);font-size:var(--fs-micro);color:var(--text-dim);line-height:1.5}.error{color:var(--danger);font-size:var(--fs-sm);margin:var(--s3) 0 0}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:flex-end;justify-content:center;z-index:10}.sheet{width:100%;max-width:640px;max-height:90vh;overflow-y:auto;background:var(--bg);border-top:1px solid var(--line-hi);padding:var(--s4) var(--s4) calc(var(--s4) + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:var(--s1);animation:sheet-in .16s var(--ease)}@keyframes sheet-in{0%{transform:translateY(12px)}}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--s2);margin-bottom:var(--s2);border-bottom:1px solid var(--line)}.sheet-head h2{margin:0;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);font-weight:600}.sheet label{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);margin-top:var(--s3)}.sheet input,.sheet select,.sheet textarea{background:var(--surface);border:1px solid var(--line-hi);border-radius:var(--radius);color:var(--text);padding:var(--s2);font-size:16px;font-family:inherit;width:100%}.sheet input[type=number],.sheet input[type=datetime-local]{font-family:var(--font-num);font-variant-numeric:tabular-nums}.check-row{display:flex;align-items:center;gap:var(--s2);cursor:pointer;text-transform:none;letter-spacing:0;font-size:var(--fs-sm);color:var(--text)}.check-row input[type=checkbox]{width:1.15rem;height:1.15rem;flex-shrink:0;accent-color:var(--accent)}.time-row{display:flex;gap:var(--s1);align-items:stretch}.time-row input{flex:1;min-width:0}.now-button{flex-shrink:0;background:none;color:var(--text);border:1px solid var(--line-hi);border-radius:var(--radius);padding:0 var(--s3);font-family:inherit;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);font-weight:600;cursor:pointer}.now-button.ghost{border-color:transparent;color:var(--text-dim);padding:0 var(--s2);display:flex;align-items:center}.mode-seg{margin-bottom:var(--s1)}.field-hint{font-size:var(--fs-micro);color:var(--text-dim);line-height:1.5;margin:var(--s2) 0 0}.sheet .primary{margin-top:var(--s5);background:var(--accent);color:var(--on-accent);border:none;border-radius:var(--radius);padding:var(--s3);font-family:inherit;font-size:var(--fs-md);font-weight:600;cursor:pointer}.stats,.today{display:flex;flex-direction:column}.stats-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--s2);border-bottom:1px solid var(--line)}.stats-head h2{margin:0}.seg{display:flex;gap:var(--s1)}.seg button{background:none;color:var(--text-dim);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:var(--font-num);font-size:var(--fs-micro);cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.seg button.on{background:var(--surface);border-color:var(--accent);color:var(--text)}.hero{display:flex;flex-direction:column;align-items:center;padding:var(--s5) 0 var(--s4)}.hero-value{font-family:var(--font-num);font-size:var(--fs-hero);font-weight:500;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}.hero-label{font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);margin-top:var(--s2)}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}.tile{background:var(--bg);padding:var(--s3) var(--s2);display:flex;flex-direction:column;gap:var(--s1);min-width:0}.tile-value{font-family:var(--font-num);font-size:var(--fs-lg);font-weight:500;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.tile-label{font-size:var(--fs-micro);color:var(--text-dim);overflow-wrap:anywhere;line-height:1.25}.card{border:1px solid var(--line);border-radius:var(--radius);padding:var(--s3);margin-top:var(--s4)}.card h3{margin:0 0 var(--s3);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);font-weight:600}.chart-wrap{position:relative}.chart{width:100%;height:auto;display:block;overflow:visible}.chart-tip{position:absolute;transform:translate(-50%,-110%);background:var(--bg);border:1px solid var(--line-hi);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:var(--font-num);font-size:var(--fs-micro);font-variant-numeric:tabular-nums;display:flex;flex-direction:column;gap:.1rem;pointer-events:none;white-space:nowrap;z-index:2}.legend{list-style:none;display:flex;flex-wrap:wrap;gap:var(--s3);margin:0 0 var(--s2);padding:0;font-size:var(--fs-micro);color:var(--text-dim)}.legend li{display:flex;align-items:center;gap:var(--s1)}.legend-swatch{width:9px;height:9px}.link-button{background:none;border:none;color:var(--accent);font-family:inherit;font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);padding:var(--s3) 0;cursor:pointer}.ramp-legend{display:flex;align-items:center;gap:var(--s1);font-size:var(--fs-micro);color:var(--text-dim);margin-bottom:var(--s2)}.ramp-swatch{width:16px;height:9px}.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-family:var(--font-num);font-size:var(--fs-micro);font-variant-numeric:tabular-nums}.table-caption{caption-side:top;text-align:left;font-family:var(--font-ui);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim);padding-bottom:var(--s2)}.data-table th,.data-table td{padding:var(--s2);text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}.data-table th:first-child,.data-table td:first-child{text-align:left}.data-table thead th{font-family:var(--font-ui);color:var(--text-dim);font-weight:600;font-size:.625rem;text-transform:uppercase;letter-spacing:.08em;border-bottom-color:var(--line-hi);position:sticky;top:0;background:var(--bg)}.data-table tbody th{font-weight:500;color:var(--text)}.app-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);margin-top:var(--s5);padding-top:var(--s3);border-top:1px solid var(--line);font-size:var(--fs-micro);color:var(--text-dim)}.footer-id{display:flex;flex-direction:column;gap:var(--s1);min-width:0}.backup-status{font-size:var(--fs-micro);color:var(--text-dim);display:inline-flex;align-items:center;gap:var(--s1)}.app-version{font-family:var(--font-num);font-size:var(--fs-micro);color:var(--text-dim);font-variant-numeric:tabular-nums}.backup-status.warn{color:var(--warn)}.footer-actions{display:flex;gap:var(--s1);flex-shrink:0}.app-footer button{background:none;color:var(--text-dim);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s1) var(--s2);font-family:inherit;font-size:var(--fs-micro);cursor:pointer;display:inline-flex;align-items:center;gap:var(--s1);transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.app-footer button:active{color:var(--text);border-color:var(--line-hi)}.tl{display:flex;flex-direction:column;gap:var(--s2)}.tl-controls{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;font-size:var(--fs-micro);color:var(--text-dim)}.tl-px{display:inline-flex;align-items:center;gap:var(--s1)}.tl-px input{width:4rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);padding:var(--s1);font-family:var(--font-num);font-size:var(--fs-micro);font-variant-numeric:tabular-nums}.tl-toggle{display:inline-flex;align-items:center;gap:var(--s1);cursor:pointer}.tl-toggle input[type=checkbox]{accent-color:var(--accent)}.tl-legend{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s3);font-size:var(--fs-micro);color:var(--text-dim)}.tl-legend span{display:inline-flex;align-items:center;gap:var(--s1)}.tl-swatch{width:9px;height:9px;display:inline-block}.tl-box{position:relative}.tl-canvas{position:relative;margin-top:var(--s5)}.tl-tick{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--line);pointer-events:none}.tl-tick span{position:absolute;top:-.55rem;left:0;font-family:var(--font-num);font-size:.625rem;color:var(--text-dim);font-variant-numeric:tabular-nums}.tl-tick-day{border-top-color:var(--line-hi)}.tl-tick-day span{color:var(--text);font-weight:600}.tl-axis{position:absolute;top:0;bottom:0;width:1px;background:var(--line-hi)}.tl-now{position:absolute;top:0;width:1px;height:0}.tl-now span{position:absolute;top:-1.1rem;left:var(--s1);white-space:nowrap;font-family:var(--font-num);font-size:.625rem;color:var(--accent);font-variant-numeric:tabular-nums}.tl-gap{position:absolute;transform:translate(-50%);width:14px;border-left:2px dashed var(--line-hi)}.tl-gap-label{position:absolute;left:0;white-space:nowrap;font-family:var(--font-num);font-size:.625rem;color:var(--text-dim);background:var(--bg);padding-right:var(--s1);pointer-events:none;z-index:2}.tl-links{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.tl-links line{stroke:var(--line-hi);stroke-width:1}.tl-mark{position:absolute;padding:0;border:none;cursor:pointer}.tl-mark:disabled{cursor:default}.tl-bar{border-radius:var(--radius-sm)}.tl-ongoing{opacity:.75;border-top:2px dashed var(--bg)}.tl-dot{width:10px;height:10px}.tl-label{position:absolute;display:flex;flex-direction:column;gap:.1rem;background:none;border:none;padding:0;text-align:left;color:var(--text);font-family:inherit;cursor:pointer;overflow:hidden}.tl-label:disabled{cursor:default;opacity:.7}.tl-left{text-align:right;align-items:flex-end}.tl-label-head{display:flex;align-items:center;gap:var(--s1);font-size:var(--fs-sm);white-space:nowrap}.tl-label-head .icon{color:var(--text-dim)}.tl-label-head time{color:var(--text-dim);font-family:var(--font-num);font-size:.625rem;font-variant-numeric:tabular-nums}.tl-label-summary{font-size:var(--fs-micro);color:var(--text-dim);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tl-wake{position:absolute;font-size:.625rem;padding:.1rem var(--s1)}.tl-glyph{position:absolute;color:var(--text-dim);pointer-events:none;display:flex}.notice{border:1px solid var(--line);border-left:2px solid var(--warn);border-radius:var(--radius);padding:var(--s3);margin:0 0 var(--s4);font-size:var(--fs-micro);line-height:1.5;color:var(--text-dim)}.next-feed{border:1px solid var(--line);border-left:2px solid var(--line-hi);border-radius:var(--radius);padding:var(--s4)}.next-ok{border-left-color:var(--accent)}.next-due{border-left-color:var(--ok)}.next-late{border-left-color:var(--warn)}.next-head{display:flex;align-items:center;gap:var(--s2);font-size:var(--fs-micro);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-dim)}.next-icon{display:flex}.next-ok .next-icon{color:var(--accent)}.next-due .next-icon{color:var(--ok)}.next-late .next-icon{color:var(--warn)}.next-time{font-family:var(--font-num);font-size:var(--fs-xl);font-weight:500;letter-spacing:-.03em;line-height:1.1;font-variant-numeric:tabular-nums;margin-top:var(--s2)}.next-sub{font-family:var(--font-num);font-size:var(--fs-sm);color:var(--text-dim);font-variant-numeric:tabular-nums}.next-why{font-size:var(--fs-micro);color:var(--text-dim);margin-top:var(--s2);line-height:1.5}.meter-wrap{margin-top:var(--s1)}.meter{position:relative;display:flex;height:14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.meter-seg{height:100%;min-width:0}.meter-seg+.meter-seg{box-shadow:-2px 0 0 var(--bg)}.meter-measured{background:#4d9be0}.meter-estimated{background:repeating-linear-gradient(135deg,#a8cdf7,#a8cdf7 3px,#6ba7ee 3px,#6ba7ee 6px)}.meter-now{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--text);opacity:.8}.meter-legend{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s3);margin-top:var(--s2);font-size:var(--fs-micro);color:var(--text-dim);font-variant-numeric:tabular-nums}.swatch{display:inline-block;width:9px;height:9px;margin-right:var(--s1);vertical-align:baseline}.swatch-measured{background:#4d9be0}.swatch-estimated{background:repeating-linear-gradient(135deg,#a8cdf7,#a8cdf7 2px,#6ba7ee 2px,#6ba7ee 4px)}.meter-target{margin-left:auto}.basis-table{width:100%;border-collapse:collapse;font-size:var(--fs-micro)}.basis-table th,.basis-table td{text-align:left;padding:var(--s2) var(--s1);border-bottom:1px solid var(--line);vertical-align:baseline}.basis-table th{font-weight:500;color:var(--text-dim)}.basis-table td{font-family:var(--font-num);font-variant-numeric:tabular-nums}.basis-note{color:var(--text-dim);font-family:var(--font-ui);font-size:var(--fs-micro)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
