:root{--bg:#11141a;--surface:#171a21;--surface2:#1e222b;--border:#2a2f3a;--text:#e7e9ee;--muted:#8b93a3;--accent:#5b8cff;--done:#3fb27f;--partial:#e5a83b;--danger:#e85d5d;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}.app{max-width:1100px;margin:0 auto;padding:24px 20px 64px}header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}h1{letter-spacing:-.01em;margin:0;font-size:20px}h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:24px 0 8px;font-size:13px}h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 8px;font-size:12px}.muted{color:var(--muted);font-size:13px}.empty{text-align:center;padding:24px 0}.countdown{align-items:center;gap:10px;display:flex}.cd-units{align-items:baseline;gap:8px;display:flex}.cd-unit{flex-direction:column;align-items:center;gap:2px;display:flex}.cd-val{font-variant-numeric:tabular-nums;font-size:28px;font-weight:600;line-height:1}.cd-lbl{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.cd-sep{color:var(--muted);font-size:28px;font-weight:600;line-height:1}.cd-label{color:var(--muted);margin-left:8px;font-size:12px}.tabs{gap:6px;margin-bottom:18px;display:flex}.tab{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:7px 16px;font-size:13px}.tab.on{background:var(--surface2);color:var(--text);border-color:var(--accent)}.grid{grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:start;gap:20px;display:grid}@media (width<=900px){.grid{grid-template-columns:1fr}}.cal-wrap{flex-direction:column;gap:12px;display:flex}.cal,.panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px}.cal-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-dow{text-align:center;color:var(--muted);padding-bottom:4px;font-size:11px}.cal-cell{aspect-ratio:1;background:var(--surface2);color:var(--text);cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;font-size:13px;display:flex;position:relative}.cal-cell:hover{border-color:var(--border)}.cal-cell.out{opacity:.3}.cal-cell.today{border-color:var(--accent)}.cal-cell.sel{background:var(--accent);color:#fff;font-weight:600}.cal-cell.done{background:#3fb27f26}.cal-cell.partial{background:#e5a83b26}.cal-num{z-index:1;position:relative}.dot{border-radius:50%;width:5px;height:5px;display:inline-block}.cal-cell .dot{position:absolute;bottom:5px}.dot.todo{background:var(--muted)}.dot.partial{background:var(--partial)}.dot.done{background:var(--done)}.cal-cell.sel .dot{background:#fff}.cal-legend{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:12px;font-size:11px;display:flex}.cal-legend span{align-items:center;gap:5px;display:flex}.cal-legend i{border-radius:50%;width:5px;height:5px;display:inline-block}.cal-legend i.todo{background:var(--muted)}.cal-legend i.partial{background:var(--partial)}.cal-legend i.done{background:var(--done)}.plan-btn{margin-top:4px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.panel-head h2{font-variant-numeric:tabular-nums;margin:0;font-size:16px}.badge{text-transform:capitalize;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:600}.badge.done{color:var(--done);background:#3fb27f33}.badge.partial{color:var(--partial);background:#e5a83b33}.badge.todo{color:var(--accent);background:#5b8cff33}.list{flex-direction:column;gap:8px;margin:0 0 16px;padding:0;list-style:none;display:flex}.item{background:var(--surface2);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;display:flex}.item.complete .item-title{color:var(--muted);text-decoration:line-through}.item-body{flex:1;justify-content:space-between;align-items:center;gap:10px;display:flex}.item-title{font-size:14px}.check{border:1.5px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.check.on{background:var(--done);border-color:var(--done)}.check:after{content:"✓";color:#fff;opacity:0;font-size:12px}.check.on:after{opacity:1}.stepper{font-variant-numeric:tabular-nums;align-items:center;gap:8px;font-size:13px;display:flex}.stepper button{border:1px solid var(--border);width:24px;height:24px;color:var(--text);cursor:pointer;background:0 0;border-radius:6px}.stepper button:disabled{opacity:.3;cursor:default}.progress{color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}select,input{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:13px}select{flex:1;min-width:0}input[type=number]{width:70px}.row input:not([type=number]){flex:1;min-width:120px}.btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:8px;padding:8px 14px;font-family:inherit;font-size:13px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ghost{background:0 0}.btn.danger{border-color:var(--danger);color:var(--danger);background:0 0}.btn.danger:hover:not(:disabled){background:#e85d5d1a}.btn.sm{padding:5px 10px;font-size:12px}.divider{border-top:1px solid var(--border);margin:16px 0}.row.end{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.plans-list{gap:6px}.chip{background:var(--surface2);border-radius:999px;align-items:center;gap:6px;padding:5px 6px 5px 12px;font-size:12px;display:inline-flex}.chip .x{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:11px}.stats{flex-wrap:wrap;gap:10px;display:flex}.stats>div{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-direction:column;flex:1;gap:2px;min-width:120px;padding:14px;display:flex}.stats strong{font-variant-numeric:tabular-nums;font-size:24px}.stats span{color:var(--muted);font-size:12px}.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl td{border-bottom:1px solid var(--border);padding:7px 8px}.bar-cell{width:45%}.bar{background:var(--accent);border-radius:3px;min-width:2px;height:6px;display:block}.tbl .num{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.log{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.log li{background:var(--surface);border:1px solid var(--border);border-left-width:3px;border-radius:8px;gap:14px;padding:9px 12px;font-size:13px;display:flex}.log li.ok{border-left-color:var(--done)}.log li.partial{border-left-color:var(--partial)}.log li.todo{border-left-color:var(--muted)}.log-date{color:var(--muted);font-variant-numeric:tabular-nums;min-width:110px}.modal-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;padding:20px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:520px;max-height:85vh;animation:.2s slideUp;overflow:auto}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px;display:flex}.modal-head h3{margin:0;font-size:16px}.plan-form{flex-direction:column;gap:12px;padding:16px;display:flex}.plan-form input{width:100%}.plan-items{max-height:200px;overflow:auto}.plan-items li{background:var(--surface2);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;padding:8px 12px;font-size:13px;display:flex}.plan-target{color:var(--muted);font-variant-numeric:tabular-nums}.plan-actions{gap:8px;margin-top:4px;display:flex}.saved-plans{border-top:1px solid var(--border);padding:16px}.saved-plan{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.saved-plan:last-child{border-bottom:none}.saved-plan strong{font-size:13px}.saved-plan .muted{font-size:12px}
