:root{--bg: #0c0e14;--bg-sunken: #080a0f;--panel: #141824;--panel-2: #1b2030;--panel-3: #232939;--border: #262d3f;--border-strong: #333c53;--text: #e8ecf5;--text-dim: #98a2b8;--text-faint: #626c82;--accent: #7c5cff;--accent-soft: #7c5cff26;--accent-text: #a992ff;--money: #2fd9a0;--money-soft: #2fd9a01f;--warn: #fbbf24;--warn-soft: #fbbf241f;--danger: #f87171;--danger-soft: #f871711f;--info: #56b6ff;--chart-1: #3987e5;--chart-2: #d95926;--chart-accent: #7c5cff;--chart-money: #1baf7a;--grid: #262d3f;--axis: #333c53;--radius: 10px;--radius-lg: 14px;--shadow: 0 4px 16px #0006;--shadow-lg: 0 18px 50px #000a;--font: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--mono: "JetBrains Mono", "Cascadia Mono", Consolas, "SF Mono", monospace;color-scheme:dark}[data-theme=light]{--bg: #f4f5f9;--bg-sunken: #e9ebf1;--panel: #ffffff;--panel-2: #f6f7fb;--panel-3: #eceef5;--border: #dfe3ec;--border-strong: #c6ccdb;--text: #171b26;--text-dim: #5a6377;--text-faint: #8b93a6;--accent: #6344e8;--accent-soft: #6344e814;--accent-text: #5a3bd6;--money: #0f9d6e;--money-soft: #0f9d6e14;--warn: #b7791f;--warn-soft: #b7791f14;--danger: #d94a4a;--danger-soft: #d94a4a14;--info: #1d7fc4;--shadow: 0 2px 10px #0f172a12;--shadow-lg: 0 18px 46px #0f172a24;--chart-1: #2a78d6;--chart-2: #eb6834;--chart-accent: #6344e8;--chart-money: #0f9d6e;--grid: #e6e9f0;--axis: #c6ccdb;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:18px;padding:0 18px;height:56px;flex:0 0 auto;background:var(--panel);border-bottom:1px solid var(--border);z-index:20}.brand{display:flex;align-items:center;gap:9px;font-weight:750;letter-spacing:-.02em;font-size:15px;white-space:nowrap}.brand-mark{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;background:linear-gradient(140deg,var(--accent),#d94ea8);color:#fff;font-size:13px;font-weight:800}.nav{display:flex;gap:2px;background:var(--panel-2);padding:3px;border-radius:var(--radius)}.nav button{border:0;background:transparent;color:var(--text-dim);padding:6px 13px;border-radius:7px;cursor:pointer;font-weight:550;font-size:13px;transition:background .14s,color .14s;white-space:nowrap}.nav button:hover{color:var(--text)}.nav button[aria-current=true]{background:var(--panel);color:var(--text);box-shadow:var(--shadow)}.topbar-spacer{flex:1}.content{flex:1;min-height:0;overflow:auto}.page{padding:22px;max-width:1180px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{font-size:22px}.page-sub{color:var(--text-dim);font-size:13px;margin-top:3px}.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border-strong);background:var(--panel-2);color:var(--text);padding:7px 13px;border-radius:9px;cursor:pointer;font-weight:550;font-size:13px;transition:background .14s,border-color .14s,transform .08s,opacity .14s;white-space:nowrap}.btn:hover:not(:disabled){background:var(--panel-3);border-color:var(--text-faint)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:#8f74ff;border-color:#8f74ff}.btn-money{background:var(--money);border-color:var(--money);color:#04160f}.btn-money:hover:not(:disabled){filter:brightness(1.08);background:var(--money);border-color:var(--money)}.btn-danger{color:var(--danger);border-color:transparent;background:var(--danger-soft)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff;border-color:var(--danger)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-dim)}.btn-ghost:hover:not(:disabled){background:var(--panel-2);color:var(--text);border-color:transparent}.btn-sm{padding:4px 9px;font-size:12px;border-radius:7px}.btn-lg{padding:11px 22px;font-size:15px;border-radius:11px}.icon-btn{width:30px;height:30px;padding:0;display:grid;place-items:center;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-dim);cursor:pointer;font-size:15px;transition:background .14s,color .14s}.icon-btn:hover{background:var(--panel-3);color:var(--text)}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label{font-size:11.5px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.field-hint{font-size:11.5px;color:var(--text-faint)}input[type=text],input[type=number],input[type=date],input[type=color],select,textarea{background:var(--bg-sunken);border:1px solid var(--border);border-radius:8px;padding:8px 10px;width:100%;outline:none;transition:border-color .14s,box-shadow .14s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input::placeholder,textarea::placeholder{color:var(--text-faint)}textarea{resize:vertical;min-height:74px;line-height:1.55}input[type=color]{padding:3px;height:36px;cursor:pointer}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid .span-2{grid-column:span 2}.checkline{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.checkline input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex:0 0 auto}.board{display:flex;gap:14px;padding:18px;align-items:flex-start;min-height:100%;overflow-x:auto}.column{flex:0 0 300px;width:300px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex;flex-direction:column;max-height:calc(100vh - 92px)}.column.over{border-color:var(--accent);background:var(--panel-2)}.column-head{display:flex;align-items:center;gap:8px;padding:12px 13px 9px;flex:0 0 auto}.column-title{font-weight:650;font-size:13.5px;letter-spacing:-.01em}.column-count{font-size:11.5px;color:var(--text-faint);background:var(--panel-3);padding:1px 7px;border-radius:20px;font-variant-numeric:tabular-nums}.column-count.at-limit{background:var(--warn-soft);color:var(--warn)}.column-money{margin-left:auto;font-size:11.5px;color:var(--money);font-weight:600;font-variant-numeric:tabular-nums}.column-body{display:flex;flex-direction:column;gap:8px;padding:0 10px 10px;overflow-y:auto;flex:1;min-height:60px}.column-foot{padding:0 10px 10px;flex:0 0 auto}.add-inline{width:100%;border:1px dashed var(--border-strong);background:transparent;color:var(--text-faint);padding:8px;border-radius:9px;cursor:pointer;font-size:13px;transition:color .14s,border-color .14s,background .14s}.add-inline:hover{color:var(--accent-text);border-color:var(--accent);background:var(--accent-soft)}.card{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 11px;cursor:grab;position:relative;transition:border-color .14s,background .14s,box-shadow .14s;border-left:3px solid transparent}.card:hover{border-color:var(--border-strong);background:var(--panel-3)}.card.important{border-left-color:var(--warn)}.card.running{border-color:var(--money);box-shadow:0 0 0 1px var(--money-soft),0 0 22px -6px var(--money)}.card.dragging{opacity:.35}.card.done .card-title{color:var(--text-faint);text-decoration:line-through}.card-title{font-size:13.5px;font-weight:550;line-height:1.4;word-break:break-word;margin-bottom:7px}.card-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;padding:2px 7px;border-radius:6px;background:var(--panel);color:var(--text-dim);font-variant-numeric:tabular-nums;white-space:nowrap;border:1px solid var(--border)}.chip-project{font-weight:600;border:0}.chip-money{background:var(--money-soft);color:var(--money);font-weight:650;border-color:transparent}.chip-warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.chip-danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}.chip-accent{background:var(--accent-soft);color:var(--accent-text);border-color:transparent}.card-actions{position:absolute;top:7px;right:7px;display:flex;gap:2px;opacity:0;transition:opacity .14s}.card:hover .card-actions{opacity:1}.card-play{width:26px;height:26px;border-radius:7px;border:1px solid var(--border-strong);background:var(--panel);color:var(--money);display:grid;place-items:center;cursor:pointer;font-size:11px;padding:0}.card-play:hover{background:var(--money);color:#04160f;border-color:var(--money)}.card-progress{height:3px;border-radius:3px;background:var(--panel);overflow:hidden;margin-top:8px}.card-progress>i{display:block;height:100%;background:var(--accent);border-radius:3px;transition:width .3s}.card-progress.over>i{background:var(--danger)}.timerbar{display:flex;align-items:center;gap:12px;background:var(--money-soft);border:1px solid var(--money);border-radius:10px;padding:5px 6px 5px 12px;max-width:420px;min-width:0}.timerbar-clock{font-family:var(--mono);font-size:16px;font-weight:700;color:var(--money);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.timerbar-task{font-size:12.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.timerbar-money{font-size:12px;color:var(--money);font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}.timerbar-idle{display:flex;align-items:center;gap:9px;color:var(--text-faint);font-size:13px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#05070ccc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:22px;z-index:100;animation:fade .14s ease}@keyframes fade{0%{opacity:0}}.modal{background:var(--panel);border:1px solid var(--border-strong);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:620px;max-height:88vh;display:flex;flex-direction:column;animation:pop .16s cubic-bezier(.2,.9,.3,1.2)}.modal.narrow{max-width:430px}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.98)}}.modal-head{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border);flex:0 0 auto}.modal-head h2{font-size:16px;flex:1;min-width:0}.modal-body{padding:18px;overflow-y:auto;display:flex;flex-direction:column;gap:15px}.modal-foot{display:flex;gap:9px;padding:14px 18px;border-top:1px solid var(--border);flex:0 0 auto}.modal-foot .spacer{flex:1}.focus{min-height:100%;display:grid;place-items:center;padding:34px 22px;background:radial-gradient(ellipse 80% 60% at 50% 0%,var(--accent-soft),transparent 70%)}.focus-inner{width:100%;max-width:620px;text-align:center}.focus-project{font-size:12px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px}.focus-title{font-size:27px;line-height:1.25;margin-bottom:18px;letter-spacing:-.02em}.focus-step{background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-lg);padding:15px 18px;margin-bottom:22px;text-align:left}.focus-step-label{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-text);margin-bottom:5px}.focus-step-text{font-size:15.5px;line-height:1.5}.focus-clock{font-family:var(--mono);font-size:68px;font-weight:700;letter-spacing:-.04em;font-variant-numeric:tabular-nums;line-height:1;margin-bottom:6px}.focus-clock.running{color:var(--money)}.focus-earned{color:var(--money);font-size:15px;font-weight:650;font-variant-numeric:tabular-nums;min-height:23px;margin-bottom:22px}.focus-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:26px}.focus-checklist{text-align:left;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}.focus-empty{text-align:center;color:var(--text-dim);max-width:430px;margin:0 auto}.focus-empty h2{font-size:20px;color:var(--text);margin-bottom:9px}.daylist{display:flex;flex-direction:column;gap:9px}.dayrow{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;border-left:3px solid transparent;transition:border-color .14s,background .14s}.dayrow:hover{border-color:var(--border-strong)}.dayrow.important{border-left-color:var(--warn)}.dayrow.running{border-color:var(--money)}.dayrow.done{opacity:.55}.dayrow.done .dayrow-title{text-decoration:line-through}.dayrow-main{flex:1;min-width:0}.dayrow-title{font-weight:550;margin-bottom:5px;word-break:break-word}.slots{display:flex;gap:5px;margin-bottom:16px}.slot{flex:1;height:5px;border-radius:3px;background:var(--panel-3)}.slot.filled{background:var(--accent)}.slot.done{background:var(--money)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;margin-bottom:22px}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px}.stat-label{font-size:11.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:6px}.stat-value{font-size:25px;font-weight:700;letter-spacing:-.025em;font-variant-numeric:tabular-nums;line-height:1.15}.stat-note{font-size:12px;color:var(--text-faint);margin-top:4px}.stat.money .stat-value{color:var(--money)}.stat.warn .stat-value{color:var(--warn)}.stat.accent .stat-value{color:var(--accent-text)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:16px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-head h3{font-size:14.5px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-weight:600;padding:0 10px 9px;border-bottom:1px solid var(--border)}.table td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table .money{color:var(--money);font-weight:600}.dot{width:9px;height:9px;border-radius:3px;display:inline-block;flex:0 0 auto}.empty{text-align:center;padding:40px 20px;color:var(--text-faint)}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.money-text{color:var(--money)}.warn-text{color:var(--warn)}.danger-text{color:var(--danger)}.nums{font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:9px}.row.wrap{flex-wrap:wrap}.row.tight{gap:5px}.chart{width:100%;overflow-x:auto}.chart svg{display:block}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-dim);margin-top:10px}.chart-legend span{display:inline-flex;align-items:center;gap:6px}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:var(--panel-3);border:1px solid var(--border-strong);color:var(--text);padding:11px 18px;border-radius:11px;box-shadow:var(--shadow-lg);z-index:200;font-size:13px;animation:pop .16s ease;max-width:90vw}.loader{display:grid;place-items:center;height:100%;color:var(--text-faint)}.login{height:100%;display:grid;place-items:center;padding:22px;background:radial-gradient(ellipse 70% 55% at 50% 0%,var(--accent-soft),transparent 70%)}.login-card{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);padding:26px 24px;display:flex;flex-direction:column;gap:14px}.login-card .btn{justify-content:center}.login-error{background:var(--danger-soft);color:var(--danger);border-radius:9px;padding:9px 12px;font-size:13px}.code-block{background:var(--bg-sunken);border:1px solid var(--border);border-radius:8px;padding:9px 11px;font-family:var(--mono);font-size:12.5px;color:var(--text);overflow-x:auto;margin:8px 0}.stage-row{display:grid;grid-template-columns:1fr 130px 100px auto;gap:9px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border)}.stage-row:last-of-type{border-bottom:0}@media(max-width:720px){.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.stage-row{grid-template-columns:1fr}.focus-clock{font-size:52px}}
