:root{--bg:#f4f5f7;--card:#fff;--text:#1a1d21;--text-2:#4b5563;--border:#e2e5e9;--accent:#2563eb;--accent-2:#1d4ed8;--green:#059669;--red:#dc2626;--radius:12px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.45}#app{max-width:960px;margin:0 auto;padding:16px 16px 48px}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:4px 0 14px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand svg{display:block}.brand h1{letter-spacing:-.2px;margin:0;font-size:20px;font-weight:700}.tabs{gap:6px;display:flex}.tab{border:1px solid var(--border);background:var(--card);color:var(--text-2);cursor:pointer;border-radius:8px;min-width:40px;min-height:40px;padding:0 14px;font-size:14px;font-weight:600}.tab:hover{background:#f0f2f5}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.app-main{flex-direction:column;gap:16px;display:flex}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card h2{margin:0 0 12px;font-size:16px;font-weight:700}.btn{border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer;border-radius:8px;min-width:40px;min-height:40px;padding:0 14px;font-size:14px;font-weight:600}.btn:hover{background:#f0f2f5}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-2)}.btn-danger{color:#b91c1c;background:#fee2e2;border-color:#fecaca}.btn-danger:hover{background:#fecaca}.btn-start{background:var(--green);border-color:var(--green);color:#fff}.btn-start:hover{background:#047356}.btn-stop{background:var(--red);border-color:var(--red);color:#fff}.btn-stop:hover{background:#b91c1c}.btn:disabled{opacity:.5;cursor:not-allowed}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field label{color:var(--text-2);font-size:13px;font-weight:600}.field input,.field select{border:1px solid var(--border);min-height:40px;color:var(--text);background:#fff;border-radius:8px;width:100%;padding:0 12px;font-size:15px}.field input:focus,.field select:focus{outline:2px solid var(--accent);outline-offset:1px}.form-row{flex-wrap:wrap;gap:12px;display:flex}.form-row .field{flex:1;min-width:120px}.form-actions{align-items:center;gap:10px;display:flex}.edit-note{color:var(--text-2);margin-bottom:12px;font-size:13px}.timer-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.timer-row select{border:1px solid var(--border);min-width:140px;min-height:40px;color:var(--text);background:#fff;border-radius:8px;flex:1;padding:0 12px;font-size:15px}.clock{font-variant-numeric:tabular-nums;letter-spacing:1px;color:var(--text);margin-top:12px;font-size:34px;font-weight:700}.clock.running{color:var(--green)}.entry{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;display:flex}.entry:last-child{border-bottom:none}.dot{border-radius:50%;flex:none;width:12px;height:12px}.entry-name{flex:1;min-width:80px;font-weight:600}.entry-date{color:var(--text-2);font-size:13px}.entry-min{font-variant-numeric:tabular-nums;font-weight:600}.entry-amt{color:var(--text-2);font-variant-numeric:tabular-nums;text-align:right;min-width:60px;font-size:13px}.entry .btn-danger{flex:none}.proj{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0;display:flex}.proj:last-child{border-bottom:none}.proj-name{flex:1;min-width:80px;font-weight:600}.proj-rate{color:var(--text-2);font-variant-numeric:tabular-nums;font-size:13px}.proj-min{color:var(--text-2);font-variant-numeric:tabular-nums;text-align:right;min-width:70px;font-size:13px}.report-summary{flex-wrap:wrap;gap:16px;margin-bottom:16px;display:flex}.stat{background:#f0f2f5;border-radius:10px;min-width:120px;padding:12px 16px}.stat .k{color:var(--text-2);text-transform:uppercase;letter-spacing:.4px;font-size:12px;font-weight:600}.stat .v{font-variant-numeric:tabular-nums;margin-top:2px;font-size:22px;font-weight:700}table.report{border-collapse:collapse;width:100%}table.report th,table.report td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}table.report th{color:var(--text-2);text-transform:uppercase;letter-spacing:.4px;font-size:12px;font-weight:700}table.report td.num{text-align:right;font-variant-numeric:tabular-nums}table.report tr.total td{border-top:2px solid var(--border);font-weight:700}table.report .p-dot{vertical-align:middle;border-radius:50%;width:10px;height:10px;margin-right:8px;display:inline-block}.chart-wrap{margin-top:16px}.chart-wrap h3{margin:0 0 8px;font-size:14px;font-weight:700}.chart{width:100%;height:200px;display:block}.chart .axis{stroke:var(--border);stroke-width:1px}.chart .lbl{fill:var(--text-2);font-family:inherit;font-size:11px}.chart .val{fill:var(--text);font-family:inherit;font-size:11px;font-weight:700}.empty{color:var(--text-2);padding:8px 0;font-size:14px}.invoice{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:20px}.invoice h2{margin:0 0 4px;font-size:18px}.invoice .meta{color:var(--text-2);margin-bottom:16px;font-size:13px}@media (width<=560px){#app{padding:12px 12px 40px}.brand h1{font-size:18px}.clock{font-size:28px}.stat .v{font-size:18px}.entry-amt{min-width:0}}
