*{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:light;--surface-1:#fcfcfb;--surface-2:#f1f1ee;--surface-3:#e7e7e2;--border:#d8d8d2;--text-primary:#0b0b0b;--text-secondary:#52514e;--text-muted:#8a8983;--series-1:#2a78d6;--series-2:#eb6834;--status-good:#008300;--status-bad:#c22a29;--status-good-bg:#e3f2e3;--status-bad-bg:#fbe7e7;--accent:#2a78d6}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--surface-1:#1a1a19;--surface-2:#232322;--surface-3:#2e2e2c;--border:#3a3a37;--text-primary:#ffffff;--text-secondary:#c3c2b7;--text-muted:#8a8983;--series-1:#3987e5;--series-2:#d95926;--status-good:#4caf50;--status-bad:#e66767;--status-good-bg:#1e2e1e;--status-bad-bg:#362020;--accent:#3987e5}}body,html{background:var(--surface-1);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px;line-height:1.35}button{font:inherit;color:inherit;background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:3px 8px;cursor:pointer}button:hover{background:var(--surface-3)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger-ghost{background:transparent;border:none;color:var(--text-muted);padding:0 4px}button.danger-ghost:hover{color:var(--status-bad)}button.ghost-btn{background:transparent;border:none;color:var(--text-muted);padding:0 4px}button.ghost-btn:hover:not(:disabled){color:var(--accent);background:transparent}button.ghost-btn:disabled{opacity:.3;cursor:default}input,select{font:inherit;color:var(--text-primary);background:var(--surface-1);border:1px solid var(--border);border-radius:4px;padding:3px 6px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.app{max-width:1100px;margin:0 auto;padding:8px 12px 48px}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;background:var(--surface-1);z-index:10}.toolbar h1{font-size:15px;margin-right:8px}.toolbar .spacer{flex:1 1}.toolbar .stats{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.reminders{display:inline-flex;align-items:center;gap:6px}.tabs{display:flex;gap:4px;padding:8px 0 0}button.tab{background:transparent;border:1px solid transparent;border-radius:4px 4px 0 0;color:var(--text-secondary);padding:5px 10px}button.tab.active,button.tab:hover{background:var(--surface-2)}button.tab.active{color:var(--text-primary);font-weight:600;border-color:var(--border);border-bottom-color:transparent}.addrow{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--border)}.addrow input[type=text]{flex:1 1;min-width:180px}.epic{border-bottom:1px solid var(--border)}.epic-header{display:grid;grid-template-columns:minmax(140px,1fr) auto auto auto 170px auto auto;grid-gap:10px;gap:10px;align-items:center;padding:5px 0 3px}.epic-header .name{font-weight:600;font-size:13px;display:flex;align-items:baseline;gap:8px;min-width:0}.epic-header .name .count{color:var(--text-muted);font-weight:400;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.epic-header .name .name-text,.task-row .title{cursor:text}.epic-header .name .name-text:hover,.task-row .title:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;-webkit-text-decoration-color:var(--text-muted);text-decoration-color:var(--text-muted)}.edit-input{min-width:0;width:100%;padding:1px 4px}.epic-meta{color:var(--text-secondary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge,.epic-meta{white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:3px;padding:1px 6px;font-size:11px;font-weight:600}.badge.good{color:var(--status-good);background:var(--status-good-bg)}.badge.bad{color:var(--status-bad);background:var(--status-bad-bg)}.badge.neutral{color:var(--text-secondary);background:var(--surface-2)}.task-row{display:grid;grid-template-columns:58px minmax(120px,1fr) 42px 118px 70px 20px 20px;grid-gap:8px;gap:8px;align-items:center;padding:2px 0;border-top:1px solid color-mix(in srgb,var(--border) 45%,transparent);min-height:24px}.task-row:hover{background:var(--surface-2)}.task-row .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-row .title.done{color:var(--text-muted);text-decoration:line-through}.task-row .type{font-size:10px;font-weight:700;letter-spacing:.04em;color:var(--text-secondary);background:var(--surface-2);border-radius:3px;text-align:center;padding:1px 0}.task-row .meta{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.task-row input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent)}.counter{display:inline-flex;align-items:center;gap:3px}.counter-btn{padding:0 4px;line-height:1;font-size:12px;min-width:16px}.counter-num{min-width:14px;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.target-input{width:130px}.streak{display:inline-flex;align-items:center;gap:5px;justify-content:flex-end;width:100%}.streak-bar{display:inline-block;flex:1 1;max-width:64px;height:7px;background:var(--surface-3);border-radius:4px;overflow:hidden}.streak-fill{display:block;height:100%;background:var(--series-1);border-radius:4px}.streak-num{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart-wrap{position:relative;width:170px;height:44px}.chart-wrap svg{display:block}.chart-tooltip{position:absolute;pointer-events:none;background:var(--surface-3);border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-size:11px;white-space:nowrap;transform:translate(-50%,-100%);z-index:20;color:var(--text-primary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.section-label{color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:10px 0 2px}.empty-hint{color:var(--text-muted);padding:16px 0}.epic-restart{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:7px 9px;margin:2px 0 5px;background:var(--surface-2);border:1px solid var(--border);border-radius:4px}.epic-restart .restart-label{font-weight:600}.epic-restart .restart-hint{color:var(--text-muted);flex:1 1 240px}.run{border-bottom:1px solid var(--border)}.run-header{display:grid;grid-template-columns:18px minmax(120px,1fr) auto auto auto auto 20px;grid-gap:10px;gap:10px;align-items:center;padding:5px 0}.run-header .name{font-weight:600;display:flex;align-items:baseline;gap:8px;min-width:0}.run-header .name .count{color:var(--text-muted);font-weight:400;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}button.run-toggle{text-align:left;padding:0}.run-task{display:grid;grid-template-columns:minmax(120px,1fr) 42px 160px;grid-gap:8px;gap:8px;align-items:center;padding:2px 0 2px 28px;border-top:1px solid color-mix(in srgb,var(--border) 45%,transparent);min-height:22px}.run-task .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-secondary)}.run-task .type{font-size:10px;font-weight:700;letter-spacing:.04em;color:var(--text-secondary);background:var(--surface-2);border-radius:3px;text-align:center;padding:1px 0}.run-task .meta{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.viz-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border)}.viz-filters label{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary)}.viz-note{color:var(--text-muted)}.stat-row{display:flex;gap:8px;flex-wrap:wrap;padding:12px 0}.stat{flex:1 1 130px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);padding:8px 10px}.stat-label{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.stat-value{display:block;font-size:22px;font-weight:600;line-height:1.2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding:2px 0}.stat-sub{display:block;font-size:11px;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-sub.good{color:var(--status-good)}.stat-sub.bad{color:var(--status-bad)}.viz{padding:10px 0 18px}.viz-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-bottom:6px}.viz-head h3{font-size:13px;font-weight:600}.legend{display:flex;gap:12px;flex-wrap:wrap}.legend-item{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text-secondary)}.swatch{display:inline-block;flex:none}.swatch.line{width:14px;height:2px;border-radius:1px}.swatch.bar{width:8px;height:10px;border-radius:2px}.swatch.s1{background:var(--series-1)}.swatch.s2{background:var(--series-2)}.swatch.dashed{background:repeating-linear-gradient(90deg,var(--text-muted) 0 5px,transparent 5px 9px);border-radius:0}.viz-plot{position:relative}.viz-plot svg{display:block;width:100%;height:auto;overflow:visible}.viz-plot .tick{fill:var(--text-muted);font-size:10px;font-family:inherit}.viz-tooltip{position:absolute;pointer-events:none;display:flex;flex-direction:column;gap:1px;background:var(--surface-3);border:1px solid var(--border);border-radius:4px;padding:4px 7px;font-size:11px;white-space:nowrap;transform:translateX(-50%);z-index:20;color:var(--text-secondary);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.viz-tooltip strong{color:var(--text-primary)}.archive-row{display:grid;grid-template-columns:minmax(120px,1fr) 42px 160px 70px 20px 20px;grid-gap:8px;gap:8px;align-items:center;padding:2px 0;border-top:1px solid color-mix(in srgb,var(--border) 45%,transparent);min-height:24px}.archive-row:hover{background:var(--surface-2)}.archive-row .title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-secondary)}.archive-row .type{font-size:10px;font-weight:700;letter-spacing:.04em;color:var(--text-secondary);background:var(--surface-2);border-radius:3px;text-align:center;padding:1px 0}.archive-row .meta{color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.archive-row .epic-name{text-align:left;overflow:hidden;text-overflow:ellipsis}@media (max-width:700px){.epic-header{grid-template-columns:1fr auto;grid-auto-flow:row dense}.task-row{grid-template-columns:58px 1fr 42px 20px 20px}.task-row .meta{display:none}.run-header{grid-template-columns:18px 1fr auto 20px;grid-auto-flow:row dense}.stat{flex-basis:45%}}