@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(/assets/plus-jakarta-sans-eXO_dkmS.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/assets/jetbrains-mono-6fWv1k7M.woff2) format("woff2")}:root{--bg: #ffffff;--bg-2: #f7f8fa;--panel: #ffffff;--panel-2: #f2f4f7;--panel-3: #eaedf2;--line: #e2e6ec;--line-soft: #eef0f4;--text: #07090c;--text-2: #2f353d;--text-3: #5f6875;--accent: #2f5bd7;--accent-soft: #eef2fd;--accent-line: #b9c8f2;--on-accent: #ffffff;--good: #067647;--warn: #b25e09;--bad: #b42318;--protected: #2f5bd7;--fixed: #5d6b98;--meal: #b25e09;--recovery: #6941c6;--anchor: #b42318;--flex: #8b95a7;--transit: #aab2c0;--chart-earn: #0f766e;--chart-spend: #c2410c;--cat-0: #2f5bd7;--cat-1: #b25e09;--cat-2: #6941c6;--cat-3: #0e8ba3;--cat-4: #b42318;--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .06);--shadow-lift: 0 4px 16px rgba(16, 24, 40, .08);--radius: 10px;--mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--sans: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}[data-theme=dark]{--bg: #141416;--bg-2: #1b1b1f;--panel: #1a1a1e;--panel-2: #232329;--panel-3: #2b2b32;--line: #2d2d34;--line-soft: #242429;--text: #f7f4f0;--text-2: #c4bdb3;--text-3: #918a81;--accent: #d9a441;--accent-soft: rgba(217, 164, 65, .11);--accent-line: rgba(217, 164, 65, .34);--on-accent: #1a1408;--good: #7fc194;--warn: #d9a441;--bad: #d9857a;--protected: #d9a441;--fixed: #8fa3c8;--meal: #c49a68;--recovery: #a894cf;--anchor: #d9857a;--flex: #6d6862;--transit: #4f4b46;--chart-earn: #2f9e86;--chart-spend: #d4762f;--cat-0: #2f9fb8;--cat-1: #b8842c;--cat-2: #5588e0;--cat-3: #d9695c;--cat-4: #9a72d0;--shadow: 0 1px 2px rgba(0, 0, 0, .3);--shadow-lift: 0 6px 22px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;transition:background-color .25s ease,color .25s ease}button{font:inherit;color:inherit;cursor:pointer}input,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--panel-3);border-radius:6px;border:3px solid var(--bg)}::-webkit-scrollbar-thumb:hover{background:var(--text-3)}.app{max-width:1560px;margin:0 auto;padding:0 26px 96px}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background:radial-gradient(ellipse 900px 600px at 8% -8%,var(--wash-a),transparent 60%),radial-gradient(ellipse 800px 560px at 100% 0%,var(--wash-b),transparent 55%),radial-gradient(var(--pattern-dot) 1px,transparent 1.5px);background-size:auto,auto,22px 22px}:root{--pattern-dot: rgba(16, 24, 40, .07);--wash-a: rgba(47, 91, 215, .05);--wash-b: rgba(105, 65, 198, .04)}[data-theme=dark]{--pattern-dot: rgba(247, 244, 240, .045);--wash-a: rgba(217, 164, 65, .05);--wash-b: rgba(85, 136, 224, .05)}.masthead{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:38px 0 24px}.brand h1{margin:0;font-size:26px;font-weight:700;letter-spacing:-.033em}.brand .sub{margin-top:6px;color:var(--text-2);font-size:12px;font-family:var(--mono);letter-spacing:.01em}.mast-right{display:flex;align-items:center;gap:10px}.sprint-chip{display:inline-flex;align-items:baseline;gap:7px;padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-family:var(--mono);font-size:11.5px;color:var(--text-2);letter-spacing:.02em;box-shadow:var(--shadow)}.sprint-chip b{color:var(--text);font-size:14px;font-weight:600}.theme-toggle{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text-2);box-shadow:var(--shadow);transition:all .18s ease}.theme-toggle:hover{color:var(--text);border-color:var(--text-3)}.theme-toggle svg{width:17px;height:17px}.nowbar{position:sticky;top:0;z-index:50;margin-bottom:26px;padding:20px 22px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lift);display:flex;align-items:center;gap:22px;flex-wrap:wrap}.nowbar .clock{font-family:var(--mono);font-size:29px;font-weight:600;letter-spacing:-.045em;line-height:1;font-variant-numeric:tabular-nums;color:var(--text)}.nowbar .clock .sec{color:var(--text-3);font-size:16px;font-weight:400}.nowbar .divider{width:1px;align-self:stretch;background:var(--line)}.nowbar .current{flex:1;min-width:220px}.label{font-size:10px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-2);font-family:var(--mono);font-weight:600}.nowbar .title{font-size:17px;font-weight:600;margin-top:4px;letter-spacing:-.011em}.nowbar .next{color:var(--text-2);font-size:13px;margin-top:4px}.nowbar .remain{text-align:right;font-family:var(--mono)}.nowbar .remain .big{font-size:21px;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.progress-track{width:100%;height:3px;background:var(--panel-3);border-radius:3px;overflow:hidden;margin-top:14px}.progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .6s ease}.grid-today{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:22px;align-items:start}.grid-today>*{min-width:0}@media (max-width: 900px){.grid-today{grid-template-columns:1fr}}.col-tabs{display:flex;gap:7px;margin-bottom:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:24px;box-shadow:var(--shadow)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line-soft)}.card-head h2{margin:0;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.13em;color:var(--text)}.card-head .meta{font-family:var(--mono);font-size:11.5px;color:var(--text-2)}.card-body{padding:18px 20px}.datenav{display:flex;align-items:center;gap:10px;margin-bottom:22px;flex-wrap:wrap}.datenav .day-label{font-weight:600;font-size:15.5px;letter-spacing:-.011em}.datenav .day-sub{font-family:var(--mono);font-size:11px;color:var(--text-2);margin-top:1px}.nav-btn{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 13px;font-size:13px;color:var(--text);box-shadow:var(--shadow);transition:all .16s ease}.nav-btn:hover{background:var(--panel-2);color:var(--text);border-color:var(--text-3)}.nav-btn.accent{border-color:var(--accent-line);color:var(--accent);background:var(--accent-soft)}.block{position:relative;display:grid;grid-template-columns:84px 24px 1fr auto;gap:14px;align-items:center;padding:13px 20px;border-bottom:1px solid var(--line-soft);transition:background .15s ease}.block:last-child{border-bottom:none}.block:hover{background:var(--bg-2)}.block.is-now{background:var(--accent-soft)}.block.is-now:before{content:"";position:absolute;left:0;top:0;width:2px;height:100%;background:var(--accent)}.block.is-past .b-title,.block.is-past .b-time,.block.is-past .b-dur{color:var(--text-3)}.block.is-past .b-note,.block.is-past .kind,.block.is-past .tag{opacity:.5}.block.is-past .b-check:not(.on){border-color:var(--line)}.block.is-done .b-title{text-decoration:line-through;color:var(--text-3)}.b-time{font-family:var(--mono);font-size:11px;color:var(--text-2);white-space:nowrap;font-variant-numeric:tabular-nums;line-height:1.55}.b-time .t-start,.b-time .t-end{display:block}.b-check{width:21px;height:21px;border-radius:6px;border:2px solid var(--text-3);background:var(--bg-2);display:grid;place-items:center;font-size:12px;line-height:1;color:var(--on-accent);transition:all .16s ease;padding:0}.b-check:hover{border-color:var(--accent)}.b-check.on{background:var(--accent);border-color:var(--accent)}.b-spacer{display:block;width:20px}.b-title{font-size:13.5px;font-weight:500;letter-spacing:-.004em;color:var(--text)}.timeline-card{overflow:visible}.timeline-card .legend{border-radius:0 0 var(--radius) var(--radius)}.info-wrap{position:relative;display:inline-block}.info-btn{display:inline-grid;place-items:center;width:18px;height:18px;margin-left:8px;padding:0;vertical-align:-4px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--text-3);font-family:var(--mono);font-size:10.5px;font-style:italic;font-weight:600;line-height:1;transition:all .14s ease}.info-btn:hover{color:var(--accent);border-color:var(--accent)}.info-btn.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.info-tip{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);width:280px;padding:11px 14px;z-index:30;background:var(--panel-3);border:1px solid var(--line);border-left:2px solid var(--accent);border-radius:9px;box-shadow:0 8px 28px #00000059;font-size:12.5px;font-weight:400;color:var(--text);line-height:1.55;letter-spacing:0;text-align:left;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .14s ease}.info-wrap:hover .info-tip,.info-wrap:focus-within .info-tip,.info-wrap.pin .info-tip{opacity:1;visibility:visible}.b-right{display:flex;align-items:center;gap:10px}.b-dur{font-family:var(--mono);font-size:10.5px;color:var(--text-2);font-variant-numeric:tabular-nums}.kind{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-2);white-space:nowrap}.kind:before{content:"";width:6px;height:6px;border-radius:2px;background:currentColor;flex:none}.kind.protected:before{background:var(--protected)}.kind.fixed:before{background:var(--fixed)}.kind.meal:before{background:var(--meal)}.kind.recovery:before{background:var(--recovery)}.kind.anchor:before{background:var(--anchor)}.kind.flex:before{background:var(--flex)}.kind.transit:before{background:var(--transit)}.tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;padding:3px 8px;border-radius:5px;background:var(--panel-2);color:var(--text-2);border:1px solid var(--line)}.task-row{position:relative;display:grid;grid-template-columns:24px 1fr;gap:12px;align-items:center;margin-bottom:9px}.task-row .money-del{position:absolute;right:6px;top:50%;transform:translateY(-50%);opacity:0;pointer-events:none;transition:opacity .14s ease,color .14s ease}.task-row:hover .money-del,.task-row:focus-within .money-del{opacity:1;pointer-events:auto}.task-row:hover .task-input,.task-row:focus-within .task-input{padding-right:32px}.task-input,textarea.field{width:100%;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:9px 12px;outline:none;transition:border-color .16s ease,box-shadow .16s ease}.task-input{font-size:14px}.task-input:focus,textarea.field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.task-input::placeholder,textarea.field::placeholder{color:var(--text-3)}.task-input.done{text-decoration:line-through;color:var(--text-3)}textarea.field{font-size:13.5px;resize:vertical;min-height:64px;line-height:1.55}.field-label{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--text-2);font-family:var(--mono);font-weight:600;margin:17px 0 7px}.btn{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:9px 15px;font-size:13px;font-weight:500;color:var(--text);box-shadow:var(--shadow);transition:all .16s ease}.btn:hover{background:var(--panel-2);color:var(--text);border-color:var(--text-3)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover{filter:brightness(1.06);color:var(--on-accent)}.btn-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.preview{margin-top:15px;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:14px 16px;font-family:var(--mono);font-size:12px;line-height:1.7;white-space:pre-wrap;color:var(--text);max-height:340px;overflow:auto}.rule{display:grid;grid-template-columns:24px 1fr;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-soft)}.rule:last-child{border-bottom:none}.rule-text{font-size:13.5px;color:var(--text);font-weight:500}.rule.on .rule-text{color:var(--text-3);font-weight:400}.rule-why{font-size:12px;color:var(--text-2);margin-top:3px}.rule-num{font-family:var(--mono);font-size:11px;color:var(--text-2)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:11px}.stat{background:var(--bg-2);border:1px solid var(--line);border-radius:9px;padding:14px 16px;min-height:84px;display:flex;flex-direction:column;justify-content:center}.stat .v{font-family:var(--mono);font-size:22px;font-weight:600;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.025em}.stat .k{font-size:9.5px;text-transform:uppercase;letter-spacing:.11em;color:var(--text-2);margin-top:6px;font-family:var(--mono);font-weight:600}.stat .v.good{color:var(--good)}.stat .v.warn{color:var(--warn)}.stat .v.bad{color:var(--bad)}.stat .v .of{font-size:13px;color:var(--text-3);font-weight:400}.week-strip{display:flex;gap:7px;margin-top:16px}.week-day{flex:1;text-align:center;padding:9px 3px;border-radius:8px;background:var(--bg-2);border:1px solid var(--line)}.week-day .d{font-family:var(--mono);font-size:9px;color:var(--text-2);text-transform:uppercase;letter-spacing:.08em}.week-day .n{font-family:var(--mono);font-size:14.5px;margin-top:3px;font-weight:600;font-variant-numeric:tabular-nums}.week-day.today{border-color:var(--accent);background:var(--accent-soft)}.week-day.complete .n{color:var(--good)}.week-day.partial .n{color:var(--warn)}.week-day.behind .n{color:var(--bad)}.week-day.empty .n{color:var(--text-3)}.status-pill{font-family:var(--mono);font-size:10px;padding:4px 10px;border-radius:999px;border:1px solid currentColor;letter-spacing:.06em;text-transform:uppercase}.status-pill.Complete{color:var(--good)}.status-pill.Partial{color:var(--warn)}.status-pill.Behind{color:var(--bad)}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);background:var(--text);color:var(--bg);padding:11px 22px;border-radius:999px;font-size:13.5px;font-weight:500;z-index:200;box-shadow:var(--shadow-lift);animation:pop .22s ease}@keyframes pop{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.legend{display:flex;gap:16px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid var(--line-soft);background:var(--bg-2)}.legend span{font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.09em;display:flex;align-items:center;gap:6px;color:var(--text-2)}.legend i{width:6px;height:6px;border-radius:2px;display:block}.empty-note{color:var(--text-2);font-size:13px;text-align:center;padding:24px 10px;line-height:1.6}.reports{margin-top:10px}.reports-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-bottom:14px}.reports-head h2{margin:0;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.13em;color:var(--text)}.tabs{display:flex;gap:7px;flex-wrap:wrap}.tab{display:inline-flex;align-items:center;gap:7px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 15px;font-size:13px;font-weight:500;color:var(--text-2);box-shadow:var(--shadow);transition:all .16s ease}.tab:hover{color:var(--text);border-color:var(--text-3)}.tab.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.tab.add{border-style:dashed;color:var(--text-3);box-shadow:none;background:transparent}.tab.add:hover{color:var(--text)}.tab .dot{width:7px;height:7px;border-radius:999px;flex:none}.tab .dot.Complete{background:var(--good)}.tab .dot.Partial{background:var(--warn)}.tab .dot.Behind{background:var(--bad)}.tab.on .dot{box-shadow:0 0 0 2px var(--on-accent)}.report-grid{display:block}.rg-col{padding:18px 20px;border-bottom:1px solid var(--line-soft)}.rg-col:last-child{border-bottom:none}.rg-col.msgs{background:var(--bg-2)}.time-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}.time-row label,.ap-grid label{display:block}.msg-card{min-width:0}.msg-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}.msg-hint{font-size:11.5px;color:var(--text-3);margin-bottom:8px}.sent-tick{color:var(--good);font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;margin-left:6px}.rg-col.msgs .preview{margin-top:0;background:var(--panel);max-height:230px}.rg-col.msgs .msg-card+.msg-card{margin-top:20px}.btn.small{padding:6px 12px;font-size:12px}.btn.ghost{box-shadow:none;background:transparent;color:var(--text-3)}.btn.ghost:hover{color:var(--bad);border-color:var(--bad);background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{background:var(--accent);filter:none}.add-project{padding:4px 0 2px}.ap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.ap-grid .field-label{margin-top:0}.money-net{font-family:var(--mono);font-weight:600;color:var(--good)}.money-net[data-neg=true]{color:var(--bad)}.money-form{display:grid;gap:9px}.seg{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg-btn{padding:8px 0;background:var(--bg-2);border:none;font-size:13px;font-weight:600;color:var(--text-3);transition:all .15s ease}.seg-btn.on.earn{background:var(--chart-earn);color:#fff}.seg-btn.on.spend{background:var(--chart-spend);color:#fff}:root{color-scheme:light}[data-theme=dark]{color-scheme:dark}select.task-input,.project-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 15px) calc(50% + 1px),calc(100% - 10px) calc(50% + 1px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:30px}select.task-input option,.project-select option{background:var(--panel);color:var(--text)}.money-list{margin-top:14px}.money-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13px}.money-amt{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums}.money-amt.earn{color:var(--chart-earn)}.money-amt.spend{color:var(--chart-spend)}.money-cat{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.money-del{border:none;background:transparent;color:var(--text-3);font-size:15px;line-height:1;padding:2px 6px;border-radius:5px}.money-del:hover{color:var(--bad);background:var(--panel-2)}.money-sub{display:flex;gap:16px;padding-top:9px;font-family:var(--mono);font-size:11.5px}.chart-wrap{position:relative}.chart{display:block;width:100%;height:auto}.chart .axis{stroke:var(--line);stroke-width:1}.chart .gridline{stroke:var(--line);stroke-width:1;opacity:.55}.chart .tick{fill:var(--text-3);font-family:var(--mono);font-size:8.5px}.chart .ylabel{fill:var(--text-3);font-size:8px}.chart .vlabel{fill:var(--text-2);font-size:8px;font-weight:600}.chart .end-label{font-size:9px;font-weight:700}.chart .end-label.earn{fill:var(--chart-earn)}.chart .end-label.spend{fill:var(--chart-spend)}.chart .line{fill:none;stroke-width:2;stroke-linecap:round}.chart .line.earn{stroke:var(--chart-earn)}.chart .line.spend{stroke:var(--chart-spend)}.chart .line.net{stroke:var(--chart-earn);stroke-width:2.5}.chart .area{stroke:none;opacity:.07}.chart .area.earn{fill:var(--chart-earn)}.chart .area.spend{fill:var(--chart-spend)}.chart .area.net{fill:var(--chart-earn);opacity:.1}.chart .dot.net{fill:var(--chart-earn)}.chart .end-label.net{fill:var(--chart-earn);font-size:10px}.chart .crosshair{stroke:var(--text-3);stroke-width:1;stroke-dasharray:3 3}.chart .dot{stroke:var(--panel);stroke-width:2}.chart .dot.earn{fill:var(--chart-earn)}.chart .dot.spend{fill:var(--chart-spend)}.chart .bar{transition:opacity .12s ease}.chart .bar.earn{fill:var(--chart-earn)}.chart .bar.spend{fill:var(--chart-spend)}.chart .bar.comp{fill:var(--accent)}.chart .dot-empty{fill:var(--text-3);opacity:.5}.chart g:hover .bar{opacity:.75}.chart-tip{position:absolute;top:2px;right:2px;display:flex;gap:10px;align-items:baseline;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:5px 10px;font-family:var(--mono);font-size:11px;color:var(--text-2);box-shadow:var(--shadow);pointer-events:none}.chart-tip b{color:var(--text);font-weight:600}.tip-earn{color:var(--chart-earn)}.tip-spend{color:var(--chart-spend)}.chart-tip-row{display:flex;align-items:baseline;gap:14px;margin-top:10px;font-family:var(--mono);font-size:11.5px;min-height:17px}.chart-tip-row b{color:var(--text);font-weight:600}.chart-hint{color:var(--text-3);text-transform:uppercase;letter-spacing:.09em;font-size:10px}.chart-legend{display:flex;gap:16px;margin-top:8px}.chart-legend span{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-2)}.chart-legend .sw{width:10px;height:10px;border-radius:3px;display:block}.chart-legend .sw.earn{background:var(--chart-earn)}.chart-legend .sw.spend{background:var(--chart-spend)}.range-chips{display:inline-flex;gap:5px}.chip{border:1px solid var(--line);background:var(--bg-2);border-radius:999px;padding:3px 11px;font-family:var(--mono);font-size:10.5px;color:var(--text-2);transition:all .14s ease}.chip:hover{color:var(--text);border-color:var(--text-3)}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.month-nav{border:1px solid var(--line);background:var(--bg-2);border-radius:6px;padding:1px 8px;margin:0 7px;font-size:13px;line-height:1.4;color:var(--text-2);transition:all .14s ease;vertical-align:1px}.month-nav:first-child{margin-left:0}.month-nav:hover{color:var(--text);border-color:var(--text-3)}.month-nav.now{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);border-color:var(--accent-line)}.page{animation:page-in .18s ease}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1}}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.page-title{margin:0;font-size:19px;font-weight:700;letter-spacing:-.02em;display:inline}.month-picker{display:flex;align-items:center}.tiles-wide{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:22px}.page-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:start}.page-grid>*{min-width:0}.page-grid .card{margin-bottom:0}.span-2{grid-column:span 2}.span-3{grid-column:span 3}@media (max-width: 1100px){.page-grid{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}}.entries-table{max-height:420px;overflow-y:auto}.entry-row{display:grid;grid-template-columns:210px 110px 130px 1fr auto;gap:12px;align-items:center;padding:9px 20px;border-bottom:1px solid var(--line-soft);font-size:13px}.entry-row:last-child{border-bottom:none}.entry-row:hover{background:var(--bg-2)}.entry-date{color:var(--text-2);font-size:12.5px}.entry-cat{color:var(--text);font-weight:500}.entry-note{color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 780px){.entry-row{grid-template-columns:1fr auto auto}.entry-date,.entry-note{display:none}}.page-cols{display:grid;grid-template-columns:minmax(0,2fr) minmax(300px,1fr);gap:22px;align-items:start}.page-main{display:grid;gap:22px;min-width:0}.page-main .card,.page-rail .card{margin-bottom:0}.page-rail{display:grid;gap:22px;min-width:0}@media (max-width: 1000px){.page-cols{grid-template-columns:1fr}}.page-nav{display:flex;gap:3px;padding:4px;background:var(--panel-2);border:1px solid var(--line);border-radius:10px}.page-tab{border:none;background:transparent;border-radius:7px;padding:7px 14px;font-size:13px;font-weight:500;color:var(--text-2);transition:all .15s ease;white-space:nowrap}.page-tab:hover{color:var(--text)}.page-tab.on{background:var(--panel);color:var(--text);font-weight:600;box-shadow:var(--shadow)}.today-chip{margin-left:9px;padding:2px 9px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent);font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.09em;vertical-align:2px}.lock-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.lock-card{width:100%;max-width:340px;text-align:center;padding:34px 30px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lift)}.lock-card h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-.025em}.lock-sub{margin:6px 0 22px;font-family:var(--mono);font-size:11px;color:var(--text-3);letter-spacing:.04em}.lock-card .task-input{text-align:center}.lock-btn{width:100%;margin-top:14px}.lock-error{margin-top:12px;font-size:12.5px;color:var(--bad)}.lock-loading{color:var(--text-3);font-family:var(--mono);font-size:12px}.sync-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-family:var(--mono);font-size:10.5px;color:var(--text-3);letter-spacing:.04em;white-space:nowrap}.sync-chip i{width:6px;height:6px;border-radius:999px;background:var(--text-3);flex:none}.sync-chip.synced i{background:var(--good)}.sync-chip.syncing i{background:var(--warn);animation:pulse 1s ease-in-out infinite}.sync-chip.error i,.sync-chip.locked i{background:var(--bad)}@keyframes pulse{50%{opacity:.3}}.soon-chip{padding:5px 13px;border-radius:999px;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent);font-family:var(--mono);font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.11em}.biz-hero{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:26px;align-items:center;padding:26px 28px;margin-bottom:28px;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow)}@media (max-width: 900px){.biz-hero{grid-template-columns:1fr}}.biz-hero-main h3{margin:0 0 10px;font-size:20px;font-weight:700;letter-spacing:-.022em}.biz-hero-main p{margin:0 0 10px;font-size:13.5px;color:var(--text-2);line-height:1.65;max-width:62ch}.biz-hero-note{color:var(--text-3)!important;font-style:italic}.biz-hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.biz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px;margin-top:10px}.biz-card{position:relative;padding:20px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);transition:border-color .16s ease,transform .16s ease}.biz-card:hover{border-color:var(--accent-line);transform:translateY(-2px)}.biz-n{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.1em}.biz-card h4{margin:7px 0 9px;font-size:15px;font-weight:650;letter-spacing:-.012em}.biz-line{margin:0 0 10px;font-size:13px;color:var(--text);line-height:1.6}.biz-why{margin:0;padding-top:10px;border-top:1px solid var(--line-soft);font-size:12.5px;color:var(--text-3);line-height:1.55}.biz-foot{margin-top:26px;padding-top:18px;border-top:1px solid var(--line-soft);font-size:13px;color:var(--text-3);text-align:center}.task-state{width:21px;height:21px;border-radius:6px;padding:0;display:grid;place-items:center;border:2px solid var(--text-3);background:var(--bg-2);font-size:12px;font-weight:700;line-height:1;color:var(--on-accent);transition:all .16s ease}.task-state:hover{border-color:var(--accent)}.task-state.doing{background:var(--warn);border-color:var(--warn);color:#fff}.task-state.done{background:var(--good);border-color:var(--good);color:#fff}.task-state.blocked{background:var(--bad);border-color:var(--bad);color:#fff}.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff;box-shadow:none}.btn.danger:hover{filter:brightness(1.08);color:#fff;border-color:var(--bad)}.confirm{max-width:420px}.confirm-body{margin:0;font-size:13.5px;color:var(--text-2);line-height:1.6}.confirm-detail{margin-top:4px;padding:11px 13px;border-radius:8px;background:var(--bg-2);border-left:2px solid var(--bad);font-size:13px;color:var(--text)}.confirm-warn{margin:0;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--bad)}.report-picker{display:flex;align-items:center;gap:10px;min-width:0}.project-select{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13.5px;font-weight:600;color:var(--text);outline:none;cursor:pointer;max-width:200px}.project-select:focus{border-color:var(--accent)}.report-to{font-size:12px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px;animation:page-in .15s ease}.modal{width:100%;max-width:460px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 20px 60px #00000080;animation:modal-in .18s ease}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line-soft)}.modal-head h2{margin:0;font-size:15px;font-weight:700;letter-spacing:-.01em}.modal-body{padding:18px 20px;display:grid;gap:14px}.modal-body label{display:block}.modal-body .field-label{margin-top:0}.modal-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}.modal-foot{display:flex;justify-content:flex-end;gap:9px;padding:14px 20px;border-top:1px solid var(--line-soft)}.slip-list,.proj-list{display:grid;gap:4px}.slip-row,.proj-row{display:grid;grid-template-columns:58px 1fr;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line-soft)}.slip-row:last-child,.proj-row:last-child{border-bottom:none}.slip-pct,.proj-pct{font-family:var(--mono);font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.slip-pct.warn,.proj-pct.warn{color:var(--warn)}.slip-pct.bad,.proj-pct.bad{color:var(--bad)}.proj-pct.good{color:var(--good)}.slip-text{font-size:13.5px;font-weight:500}.slip-sub{font-size:12px;color:var(--text-3);margin-top:1px}.best-day{margin-top:14px;padding-top:12px;border-top:1px solid var(--line-soft);font-size:12.5px;color:var(--text-2)}.best-day b{color:var(--text)}.chart .bar.rules{fill:var(--cat-2)}.chart .bar.blocks{fill:var(--cat-3)}.cat-fill.rate-good{background:var(--good)}.cat-fill.rate-warn{background:var(--warn)}.cat-fill.rate-bad{background:var(--bad)}.cat-row.rule-rate{grid-template-columns:minmax(180px,2fr) 3fr auto}.cat-row.rule-rate .cat-name{white-space:normal;font-size:11.5px;line-height:1.35}.cat-bars{display:grid;gap:8px}.cat-row{display:grid;grid-template-columns:82px 1fr auto;gap:10px;align-items:center;font-size:12px}.cat-name{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-track{height:12px;background:var(--panel-2);border-radius:4px;overflow:hidden}.cat-fill{height:100%;border-radius:4px;min-width:2px}.cat-fill.c0{background:var(--cat-0)}.cat-fill.c1{background:var(--cat-1)}.cat-fill.c2{background:var(--cat-2)}.cat-fill.c3{background:var(--cat-3)}.cat-fill.c4{background:var(--cat-4)}.cat-val{font-family:var(--mono);font-size:11.5px;color:var(--text);font-variant-numeric:tabular-nums}html{-webkit-text-size-adjust:100%}@media (max-width: 900px){.app{padding:0 14px calc(40px + env(safe-area-inset-bottom))}.masthead{padding:18px 0 14px;gap:12px;align-items:flex-start;flex-direction:column}.brand h1{font-size:20px}.brand .sub{font-size:10.5px;line-height:1.5}.mast-right{width:100%;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px}.mast-right::-webkit-scrollbar{display:none}.page-nav{flex:none}.page-tab{padding:8px 13px;font-size:12.5px}.sprint-chip{flex:none;padding:6px 11px;font-size:10.5px}.sync-chip{flex:none;gap:0;padding:8px;font-size:0}.sync-chip i{width:8px;height:8px}.theme-toggle{flex:none;width:34px;height:34px}.nowbar{padding:15px 16px;gap:14px}.nowbar .clock{font-size:24px}.nowbar .divider{display:none}.nowbar .current{min-width:0;flex:1 1 100%;order:3}.nowbar .title{font-size:15.5px}.nowbar .remain{order:2;margin-left:auto;text-align:right}.nowbar .remain .big{font-size:18px}.datenav{gap:8px}.datenav .day-label{font-size:14px}.nav-btn{padding:8px 12px;font-size:12.5px}.card-head{padding:14px 15px}.card-body{padding:15px}.card,.page-grid .card,.page-rail .card{margin-bottom:16px}.grid-today,.page-cols,.page-grid{gap:16px}.block{grid-template-columns:22px 1fr;gap:11px;padding:12px 15px}.b-time{grid-column:2;grid-row:1;font-size:10px;margin-bottom:2px}.b-time .t-start,.b-time .t-end{display:inline}.b-time .t-start:after{content:" - ";color:var(--text-3)}.b-check{grid-column:1;grid-row:1 / span 3;align-self:start;margin-top:2px}.block>div:nth-child(3){grid-column:2;grid-row:2}.b-right{grid-column:2;grid-row:3;margin-top:6px;flex-wrap:wrap}.info-tip{position:fixed;left:14px;right:14px;top:auto;bottom:14px;width:auto;transform:none;max-width:none}.stat-grid,.tiles-wide{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{min-height:72px;padding:12px 13px}.stat .v{font-size:19px}.col-tabs{position:sticky;top:0;z-index:40}.report-picker{flex-wrap:wrap;gap:6px}.project-select{max-width:100%}.modal-row{grid-template-columns:1fr}.week-strip{gap:5px}.week-day{padding:8px 2px}.biz-hero{padding:20px;gap:18px}.biz-hero-main h3{font-size:17px}.biz-hero-stats{grid-template-columns:repeat(3,1fr);gap:8px}.biz-grid{grid-template-columns:1fr;gap:14px}.chart .tick{font-size:15px}.chart .ylabel{font-size:14px}.chart .vlabel{font-size:13px}.chart .end-label{font-size:16px}.chart-tip{position:static;margin-top:8px}.entry-row{padding:10px 15px}.legend{padding:12px 15px;gap:12px}.toast{left:14px;right:14px;transform:none;text-align:center}@keyframes pop{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}}@media (max-width: 480px){.brand .sub,.sprint-chip{display:none}.page-nav{width:100%;justify-content:space-between}.page-tab{flex:1;text-align:center;padding:9px 6px}.stat-grid,.tiles-wide{grid-template-columns:1fr 1fr}.nowbar .clock{font-size:21px}.lock-card{padding:28px 22px}}@media (hover: none){.task-row .money-del{opacity:1;pointer-events:auto}.task-row .task-input{padding-right:32px}}
