:root{--bg:#f4f5f7;--surface:#fff;--ink:#1c2130;--ink-2:#4b5265;--ink-3:#5b6170;--line:#e4e7ec;--accent:#4f46e5;--accent-ink:#fff;--accent-soft:#eef0fe;--green:#0f7b4f;--red:#b3372e;--radius:12px;--shadow:0 1px 2px #171a2b0f, 0 4px 14px #171a2b0d}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}.topbar{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#ffffffeb;position:sticky;top:0}.topbar-inner{align-items:center;gap:14px;max-width:1060px;margin:0 auto;padding:10px 20px;display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:10px;font-size:17px;font-weight:700;display:flex}.brand svg{display:block}.brand .tag{color:var(--ink-3);margin-left:2px;font-size:12px;font-weight:500}.topbar .spacer{flex:1}.timer-chip{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:8px;padding:4px 6px 4px 14px;display:flex}.timer-clock{font-variant-numeric:tabular-nums;text-align:center;min-width:74px;font-size:15px;font-weight:700}.timer-clock.running{color:var(--accent)}.timer-project{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;max-width:120px;font-size:12px;overflow:hidden}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:7px;min-width:40px;min-height:40px;padding:9px 14px;font-size:14px;font-weight:600;transition:background .12s,border-color .12s,transform 50ms;display:inline-flex}.btn:hover{background:#f7f8fa}.btn:active{transform:translateY(1px)}.btn:focus-visible,.tab:focus-visible,.swatch:focus-visible,.week-day:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:#4338ca}.btn.danger{color:var(--red)}.btn.danger:hover{background:#fdf1f0;border-color:#f2c9c5}.btn.ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn.ghost:hover{background:#eef0f4}.btn.small{min-height:40px;padding:6px 12px;font-size:13px}.icon-btn{min-width:40px;min-height:40px;padding:8px}.icon-btn svg{display:block}.tabs{gap:2px;max-width:1060px;margin:0 auto;padding:0 20px;display:flex}.tab{appearance:none;cursor:pointer;color:var(--ink-3);background:0 0;border:none;border-bottom:2px solid #0000;min-height:44px;padding:12px 14px;font-size:14px;font-weight:600}.tab[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.tab:hover{color:var(--ink)}main{max-width:1060px;margin:0 auto;padding:20px 20px 64px}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:1fr 1fr}.grid.cols-3{grid-template-columns:repeat(3,1fr)}@media (width<=760px){.grid.cols-2,.grid.cols-3{grid-template-columns:1fr}main{padding:14px 12px 64px}.topbar-inner{gap:8px;padding:8px 12px}.brand .tag{display:none}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.card h2{letter-spacing:-.01em;margin:0 0 4px;font-size:16px}.card .sub{color:var(--ink-3);margin:0 0 14px;font-size:13px}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field label{color:var(--ink-2);font-size:12.5px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);background:#fff;border-radius:9px;width:100%;min-height:40px;padding:9px 11px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.form-row{grid-template-columns:2fr 1fr 1fr 1.4fr auto;align-items:end;gap:10px;display:grid}.form-row.narrow{grid-template-columns:1.6fr 1fr auto}@media (width<=760px){.form-row,.form-row.narrow{grid-template-columns:1fr 1fr}.form-row .field.wide,.form-row .btn{grid-column:1/-1}}.day-group{margin-bottom:6px}.day-head{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;align-items:baseline;gap:8px;padding:12px 4px 6px;font-size:12.5px;font-weight:600;display:flex}.day-head .total{font-variant-numeric:tabular-nums;margin-left:auto}.entry-row{border-radius:10px;align-items:center;gap:12px;padding:9px 10px;display:flex}.entry-row:hover{background:#f7f8fb}.dot{border-radius:50%;flex:none;width:10px;height:10px}.entry-main{flex:1;min-width:0}.entry-title{text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:600;overflow:hidden}.entry-note{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.entry-min{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px;font-weight:700}.entry-actions{gap:2px;display:flex}.empty{text-align:center;color:var(--ink-3);padding:34px 10px;font-size:14px}.empty .big{margin-bottom:6px;font-size:30px}.week-strip{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.week-day{border:1px solid var(--line);text-align:center;cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:64px;padding:8px 4px 7px;display:flex}.week-day:hover{border-color:#c9cede}.week-day .wd{color:var(--ink-3);text-transform:uppercase;font-size:11px;font-weight:700}.week-day .wn{color:var(--ink-2);font-size:13px;font-weight:600}.week-day .wt{font-variant-numeric:tabular-nums;font-size:12px;font-weight:700}.week-day.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.week-day.selected{background:var(--accent-soft);border-color:var(--accent)}@media (width<=560px){.week-strip{grid-template-columns:repeat(7,1fr);gap:4px}.week-day{min-height:56px;padding:6px 2px}.week-day .wn{display:none}}.project-row{border-radius:10px;align-items:center;gap:12px;padding:11px 10px;display:flex}.project-row:hover{background:#f7f8fb}.project-name{font-weight:600}.project-meta{color:var(--ink-3);font-size:12.5px}.swatches{flex-wrap:wrap;gap:6px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:26px;height:26px;padding:0}.swatch[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 2px #fff}.report-head{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:10px;display:flex}.stat-cards{grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0;display:grid}@media (width<=640px){.stat-cards{grid-template-columns:1fr 1fr}}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 16px}.stat .k{color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.stat .v{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:22px;font-weight:750}.stat .v small{color:var(--ink-3);font-size:13px;font-weight:600}.table-wrap{overflow-x:auto}table.report{border-collapse:collapse;width:100%;min-width:420px}table.report th,table.report td{text-align:left;border-bottom:1px solid var(--line);padding:10px 12px}table.report th{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);font-size:12px}table.report td.num,table.report th.num{text-align:right;font-variant-numeric:tabular-nums}table.report tr.total td{border-top:2px solid var(--ink);border-bottom:none;font-weight:750}table.report .pname{align-items:center;gap:9px;font-weight:600;display:flex}.chart-card{margin-top:16px}.chart-svg{width:100%;min-height:160px;display:block}.invoice{border-top:1px dashed var(--line);color:var(--ink-2);margin-top:16px;padding-top:14px;font-size:13px}.invoice .row{justify-content:space-between;padding:3px 0;display:flex}#toast{background:var(--ink);color:#fff;opacity:0;pointer-events:none;z-index:50;box-shadow:var(--shadow);border-radius:10px;max-width:90vw;padding:10px 16px;font-size:13.5px;font-weight:600;transition:opacity .18s,transform .18s;position:fixed;bottom:22px;left:50%;transform:translate(-50%)translateY(20px)}#toast.show{opacity:1;transform:translate(-50%)translateY(0)}.toast-action{color:#fff;cursor:pointer;background:#ffffff29;border:1px solid #ffffff59;border-radius:7px;min-height:32px;margin-left:12px;padding:4px 12px;font-size:12.5px;font-weight:700}.toast-action:hover{background:#ffffff47}.timer-big{flex-direction:column;align-items:center;gap:10px;padding:6px 0 2px;display:flex}.timer-big .clock{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:44px;font-weight:750}.timer-big .clock.running{color:var(--accent)}.timer-big select{max-width:260px}.muted{color:var(--ink-3);font-size:12.5px}.right{margin-left:auto}hr.sep{border:none;border-top:1px solid var(--line);margin:14px 0}.modal-backdrop{z-index:40;background:#171a2b73;position:fixed;inset:0}.modal{z-index:41;background:var(--surface);border-radius:14px;width:min(440px,100vw - 24px);max-height:86vh;padding:18px 20px 20px;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%);box-shadow:0 12px 40px #171a2b40}.modal-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.modal-head h3{margin:0;font-size:16px}.modal-body input,.modal-body select{border:1px solid var(--line);border-radius:9px;width:100%;min-height:40px;padding:9px 11px}.modal-body input:focus,.modal-body select:focus{outline:2px solid var(--accent);outline-offset:1px}@media print{body{background:#fff}.topbar,#toast,.modal-backdrop,#modal-root,.entry-actions,.btn{display:none!important}main{max-width:100%;padding:0}.card{box-shadow:none;border:none;padding:0}.grid>section:not([aria-labelledby=h-table]),.stat-cards,.chart-card{display:none!important}}
