:root{--bg:#f4f6f9;--surface:#fff;--surface-2:#f7f8fa;--line:#e4e8ee;--line-strong:#cfd6e0;--ink:#172033;--muted:#5d6b7e;--dim:#6f7a8a;--danger:#c0392b;--a:#2f5fd7;--a-soft:#edf2ff;--b:#b45309;--b-soft:#fdf3e7;--chart-done:#2f5fd7;--chart-track:#eef1f5;--sans:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", system-ui, -apple-system, "Segoe UI", sans-serif}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--a);outline-offset:2px}button:focus:not(:focus-visible){outline:none}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.member-0{--lane:var(--a);--lane-soft:var(--a-soft)}.member-1{--lane:var(--b);--lane-soft:var(--b-soft)}.boot{min-height:100vh;color:var(--dim);letter-spacing:.04em;place-items:center;font-size:14px;display:grid}.btn{white-space:nowrap;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:9px 16px;font-size:14px;font-weight:600;line-height:1.2;transition:background .15s,border-color .15s,opacity .15s,transform .1s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--ink);color:#fff}.btn.primary:hover{background:#232e45}.btn.ghost{background:var(--surface);border-color:var(--line);color:var(--ink)}.btn.ghost:hover{background:var(--surface-2);border-color:var(--line-strong)}.btn.small{padding:7px 12px;font-size:13px}.btn.tiny{border-radius:8px;padding:5px 10px;font-size:12px}.btn.wide{width:100%}.btn[disabled]{opacity:.45}.btn-ico{width:15px;height:15px}.lane .btn.primary{background:var(--lane);color:#fff}.lane .btn.primary:hover{filter:brightness(1.08)}.icon-btn{border:1px solid var(--line);background:var(--surface);width:32px;height:32px;color:var(--muted);border-radius:9px;place-items:center;font-size:14px;line-height:1;display:inline-grid}.icon-btn:hover{color:var(--ink);border-color:var(--line-strong)}.icon-btn.nav{width:36px;height:36px;font-size:15px}.icon-btn.tiny{background:0 0;border-color:#0000;width:26px;height:26px;font-size:13px}.icon-btn.danger:hover{color:var(--danger);background:#fdf1ef;border-color:#f0d3cf}.link{color:var(--muted);text-underline-offset:3px;background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline}.link:hover{color:var(--ink)}.form-error{color:var(--danger);margin:8px 0 0;font-size:12.5px;line-height:1.5}.form-error:empty{display:none}.top{justify-content:space-between;align-items:center;gap:24px;max-width:1080px;margin:0 auto;padding:28px 24px 0;display:flex}.brand{align-items:center;gap:12px;min-width:0;display:flex}.mark{background:var(--ink);color:#fff;border-radius:11px;flex:none;place-items:center;width:40px;height:40px;font-size:18px;font-weight:700;display:grid}.mark svg{width:24px;height:24px;display:block}.brand-text h1{letter-spacing:-.02em;margin:0;font-size:22px;font-weight:800}.brand-text p{color:var(--dim);margin:2px 0 0;font-size:12.5px}.top-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.me-chip{border:1px solid var(--line);background:var(--surface);height:38px;color:var(--muted);border-radius:10px;align-items:center;gap:8px;padding:0 12px;font-size:13px;transition:border-color .15s,background .15s;display:inline-flex}.me-chip:hover{border-color:var(--line-strong);background:var(--surface-2)}.me-chip strong{color:var(--ink);font-weight:600}.me-chip-gear{color:var(--dim);margin-left:1px;font-size:12px}.who-dot{background:var(--lane);border-radius:50%;width:8px;height:8px}.wrap{max-width:1080px;margin:0 auto;padding:0 24px 64px}.datebar{align-items:center;gap:8px;padding:16px 0 18px;display:flex}.datebox{align-items:baseline;gap:10px;margin:0 6px;display:flex}.date-main{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:24px;font-weight:700}.date-sub{color:var(--dim);font-size:13px}.datebar-spacer{flex:1}.date-jump input{background:var(--surface);border:1px solid var(--line);height:34px;color:var(--muted);border-radius:9px;padding:0 10px;font-size:13px}.date-jump input:hover{border-color:var(--line-strong)}.sync-banner{color:#8a5a12;background:#fffaf1;border:1px solid #f2d8a8;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:10px 14px;font-size:13px;line-height:1.5;display:flex}.sync-banner[hidden]{display:none}.demo-banner{color:#45618a;text-align:center;background:#eef3fb;border-bottom:1px solid #dfe8f6;padding:8px 16px;font-size:12.5px}.board{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;display:grid}.lane{background:var(--surface);border:1px solid var(--line);border-radius:16px;min-width:0;padding:22px 22px 10px;box-shadow:0 1px 2px #10182809}.lane-head{justify-content:space-between;align-items:center;gap:16px;display:flex}.lane-identity{align-items:center;gap:9px;min-width:0;display:flex}.lane-dot{background:var(--lane);border-radius:50%;flex:none;width:9px;height:9px}.lane-identity h2{letter-spacing:-.01em;overflow-wrap:anywhere;margin:0;font-size:18px;font-weight:700}.lane-tag{color:var(--muted);background:var(--lane-soft);border-radius:99px;flex:none;padding:2px 8px;font-size:11px}.lane-percent{letter-spacing:-.02em;color:var(--lane);font-size:28px;font-weight:800;line-height:1}.lane-percent.is-empty{color:var(--line-strong)}.lane-stats{color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:7px;margin-top:8px;font-size:13px;display:flex}.lane-stats strong{color:var(--ink);font-weight:600}.lane-stats .sep{color:var(--line-strong)}.lane-stats .muted{color:var(--dim)}.track{background:#eef1f5;border-radius:99px;height:8px;margin:14px 0 18px;overflow:hidden}.segments{gap:2px;height:100%;display:flex}.segments.empty{background:0 0}.seg{background:#e3e7ed;flex-basis:0;min-width:4px;transition:background .2s}.seg.done{background:var(--lane)}.add{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;margin-bottom:16px;padding:12px}.add-top{align-items:stretch;gap:8px;display:flex}.add-input{border:1px solid var(--line);background:var(--surface);min-width:0;color:var(--ink);border-radius:9px;flex:1;padding:10px 12px;font-size:14px}.add-input::placeholder{color:var(--dim)}.add-input:focus{border-color:var(--lane);box-shadow:0 0 0 3px var(--lane-soft);outline:none}.add .btn.primary{padding:0 16px}.est-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.est-label{color:var(--muted);font-size:12px}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:99px;padding:3px 10px;font-size:12px}.chip:hover{border-color:var(--line-strong);color:var(--ink)}.chip.is-on{border-color:var(--lane);color:var(--lane);background:var(--lane-soft)}.est-custom{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.est-custom input{background:var(--surface);border:1px solid var(--line);width:56px;color:var(--ink);font-variant-numeric:tabular-nums;border-radius:7px;padding:3px 7px;font-size:12px}.tasks{margin:0;padding:0;list-style:none}.task{border-bottom:1px solid #f0f2f6;border-radius:8px;align-items:center;gap:12px;margin:0 -6px;padding:12px 6px;display:flex}.task:hover{background:#f8fafc}.task:last-child{border-bottom:none}.check{border:1.5px solid var(--line-strong);background:var(--surface);color:#fff;border-radius:50%;flex:none;place-items:center;width:22px;height:22px;padding:0;transition:background .15s,border-color .15s;display:grid}.check:hover{border-color:var(--lane)}.check[aria-pressed=true],.task.is-done .check.static{background:var(--lane);border-color:var(--lane)}.check svg{width:12px;height:12px}.task-body{flex:1;min-width:0}.task-title{overflow-wrap:anywhere;margin:0;font-size:14.5px;font-weight:600;line-height:1.45}.task-sub{color:var(--dim);flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px;font-size:12.5px;display:flex}.task-est{font-variant-numeric:tabular-nums}.sub-sep{color:var(--line-strong)}.actual-field{color:var(--muted);align-items:center;gap:4px;font-size:12.5px;display:inline-flex}.actual-input{border:1px solid var(--line);background:var(--surface);width:46px;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;border-radius:6px;padding:2px 6px;font-size:12.5px}.actual-input::placeholder{color:var(--dim)}.actual-input:focus{border-color:var(--lane);box-shadow:0 0 0 2px var(--lane-soft);outline:none}.actual-field.needs-actual .actual-input{border-color:var(--lane);background:var(--lane-soft)}.actual-read{color:var(--dim);font-variant-numeric:tabular-nums;font-size:12.5px}.task.is-done .task-title{color:var(--dim);text-decoration:line-through;text-decoration-thickness:1px;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.task-actions{opacity:0;gap:2px;transition:opacity .12s;display:flex}.task:hover .task-actions,.task:focus-within .task-actions{opacity:1}.edit-form{flex-wrap:wrap;align-items:center;gap:8px;width:100%;padding:2px 0;display:flex}.edit-title{border:1px solid var(--line);background:var(--surface);border-radius:8px;flex:1;min-width:130px;padding:7px 10px;font-size:14px}.edit-title:focus{border-color:var(--lane);box-shadow:0 0 0 3px var(--lane-soft);outline:none}.edit-est{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.edit-est input{background:var(--surface);border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:7px;width:54px;padding:6px 8px;font-size:12px}.auth-wrap{place-items:center;min-height:100vh;padding:32px 20px;display:grid}.auth{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:100%;max-width:440px;padding:32px;box-shadow:0 12px 36px -24px #10182847}.auth.wide{max-width:560px}.auth-brand{color:var(--dim);align-items:center;gap:10px;margin-bottom:24px;font-size:12.5px;display:flex}.auth-brand .mark{border-radius:9px;width:32px;height:32px;font-size:15px}.auth-brand .mark svg{width:19px;height:19px}.auth h1{letter-spacing:-.02em;margin:0 0 8px;font-size:26px}.auth .lede{color:var(--muted);margin:0 0 24px;font-size:14px;line-height:1.65}.auth .hint{color:var(--dim);margin:18px 0 0;font-size:12px;line-height:1.65}.auth-foot{justify-content:space-between;gap:12px;margin-top:22px;display:flex}.stack{flex-direction:column;gap:14px;display:flex}.field{color:var(--muted);flex-direction:column;gap:7px;font-size:13px;display:flex}.field input{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:10px;padding:12px 14px;font-size:15px}.field input::placeholder{color:var(--dim)}.field input:focus{border-color:var(--a);box-shadow:0 0 0 3px var(--a-soft);outline:none}.identity-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.identity{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:14px;flex-direction:column;gap:4px;padding:20px 18px;transition:background .15s,border-color .15s;display:flex}.identity:hover,.identity.is-selected{background:var(--lane-soft);border-color:var(--lane)}.login-identities{margin-bottom:18px}.login-form{gap:12px}.auth-switch{color:var(--muted);margin:18px 0 0;font-size:13px}.auth-switch .link{margin-left:2px}.identity-dot{background:var(--lane);border-radius:50%;width:10px;height:10px;margin-bottom:8px}.identity-name{color:var(--ink);font-size:20px;font-weight:700}.identity-sub{color:var(--dim);font-size:12px}.modal-backdrop{z-index:50;background:#1720335c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:100%;max-width:460px;max-height:calc(100vh - 40px);padding:24px;overflow:auto;box-shadow:0 24px 60px -28px #10182866}.modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal h2{letter-spacing:-.01em;margin:0;font-size:20px}.modal-sub{color:var(--muted);margin:10px 0 18px;font-size:13px;line-height:1.6}.segmented{background:var(--surface-2);border:1px solid var(--line);border-radius:11px;grid-template-columns:repeat(4,1fr);gap:4px;padding:4px;display:grid}.segmented button{color:var(--muted);background:0 0;border:none;border-radius:8px;padding:8px 6px;font-size:13px}.segmented button:hover{color:var(--ink)}.segmented button.is-on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px #10182814}.custom-range{color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-top:14px;font-size:13px;display:flex}.custom-range[hidden]{display:none}.custom-range input{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px}.range-note{color:var(--dim);margin:16px 0 0;font-size:12.5px;line-height:1.6}.modal-actions{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.settings-modal{max-width:480px}.settings-block{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.settings-block h3{color:var(--ink);margin:0 0 5px;font-size:14px;font-weight:700}.settings-hint{color:var(--dim);margin:0 0 12px;font-size:12.5px;line-height:1.5}.settings-row{align-items:center;gap:8px;display:flex}.settings-row input{border:1px solid var(--line);background:var(--surface);min-width:0;color:var(--ink);border-radius:9px;flex:1;padding:9px 12px;font-size:14px}.settings-row input:focus{border-color:var(--a);box-shadow:0 0 0 3px var(--a-soft);outline:none}.settings-fields{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}.settings-fields .field input{padding:9px 12px;font-size:14px}.settings-block .btn.primary{margin-top:2px}.settings-actions{justify-content:space-between}.code{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px;padding:12px 14px;font-family:Consolas,SF Mono,monospace;font-size:12px}.view-tabs{gap:22px;padding:20px 0 2px;display:flex}.tab{color:var(--muted);background:0 0;border:none;padding:6px 0 10px;font-size:14.5px;font-weight:600;position:relative}.tab:hover{color:var(--ink)}.tab.is-on{color:var(--ink);font-weight:700}.tab.is-on:after{content:"";background:var(--ink);border-radius:2px;height:2px;position:absolute;bottom:0;left:0;right:0}.stats-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding:20px 0 16px;display:flex}.stats-title h2{letter-spacing:-.02em;margin:0;font-size:24px;font-weight:800}.stats-title p{color:var(--dim);font-variant-numeric:tabular-nums;margin:4px 0 0;font-size:12.5px}.stats-head .segmented{grid-template-columns:repeat(4,auto);width:auto}.stats-head .segmented button{padding:7px 13px}.stats-custom{width:100%;color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:14px;font-size:12.5px;display:flex}.stats-custom[hidden]{display:none}.stats-custom input{background:var(--surface);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:6px 9px;font-size:12.5px}.stats-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 1px 2px #10182809}.stats-board{grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.stats-lane{min-width:0;padding:22px}.stats-lane+.stats-lane{border-left:1px solid var(--line)}.stats-lane-head{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.stats-lane-head h3{letter-spacing:-.01em;overflow-wrap:anywhere;margin:0;font-size:17px;font-weight:700}.stats-lane-hero{margin-top:16px}.stats-lane-label{color:var(--dim);letter-spacing:.02em;font-size:11px;display:block}.stats-lane-value{letter-spacing:-.03em;color:var(--lane);margin-top:3px;font-size:30px;font-weight:800;line-height:1.1;display:block}.stats-lane-sub{color:var(--muted);font-variant-numeric:tabular-nums;margin:8px 0 0;font-size:12.5px;line-height:1.5}.stats-subheading{border-top:1px solid var(--line);color:var(--ink);margin:20px 0 0;padding-top:14px;font-size:14px;font-weight:700}.stats-tasks{margin:0;padding:0;list-style:none}.stats-task{padding-top:16px}.stats-task-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.stats-task-title{color:var(--ink);overflow-wrap:anywhere;font-size:14px;font-weight:600}.stats-task-time{color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums;flex:none;font-size:13px;font-weight:700}.stats-task-time.is-empty{color:var(--dim);font-weight:400}.stats-task-sub{color:var(--dim);font-variant-numeric:tabular-nums;margin-top:2px;font-size:12px}.stats-lane-empty{color:var(--dim);margin:20px 0 8px;font-size:13px}.bar-track{background:var(--chart-track);border-radius:4px;height:8px;margin-top:7px}.bar-measure{border-radius:0 4px 4px 0;min-width:2px;height:100%;display:flex;overflow:hidden}.bar-fill{background:var(--chart-done);width:100%;height:100%}.stats-lane .bar-fill{background:var(--lane)}.stats-loading{text-align:center;color:var(--dim);background:var(--surface);border:1px solid var(--line);border-radius:16px;margin:0;padding:48px 24px;font-size:13px}.stats-empty{text-align:center;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:48px 24px;font-size:14px}.stats-empty p{margin:0 0 8px}.stats-empty-hint{color:var(--dim);font-size:12.5px}.stats-empty .btn{margin-top:6px}.stats-footnote{color:var(--dim);margin:18px 0 0;font-size:12px}@media (hover:none){.task-actions{opacity:1}}@media (width<=900px){.board{grid-template-columns:1fr}.top{padding:20px 18px 0}.wrap{padding:0 18px 40px}.datebar{flex-wrap:wrap}.datebar-spacer{display:none}}@media (width<=760px){.stats-board{grid-template-columns:1fr}.stats-lane+.stats-lane{border-left:none;border-top:1px solid var(--line)}}@media (width<=560px){.top{flex-wrap:wrap;gap:14px}.top-actions{width:100%}.top-actions .btn{flex:1}.brand-text h1,.date-main{font-size:20px}.datebox{gap:8px}.lane{padding:18px 16px 8px}.lane-percent{font-size:24px}.add-top{flex-direction:column}.add .btn.primary{width:100%;padding:10px}.segmented{grid-template-columns:repeat(2,1fr)}.stats-head{flex-direction:column;align-items:stretch;gap:12px;padding:16px 0 14px}.stats-title h2{font-size:22px}.stats-head .segmented{grid-template-columns:repeat(2,1fr);width:100%}.stats-lane{padding:18px 16px 20px}.stats-lane-head h3{font-size:18px}.stats-lane-value{font-size:24px}.identity-grid{grid-template-columns:1fr}.auth{padding:24px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
