:root{--bg:#f2f5f9;--card:#fff;--ink:#1c2733;--ink-2:#46566a;--line:#dbe2ea;--accent:#1d5fbf;--accent-ink:#fff;--accent-soft:#e8f0fb;--danger:#b3362d;--ok:#0d7a4f;--radius:12px;--shadow:0 1px 2px #101e360f, 0 4px 14px #101e360f}*{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:15px;line-height:1.45;overflow-x:hidden}#app{max-width:1180px;margin:0 auto;padding:16px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:6px 2px 14px;display:flex}.brand{align-items:baseline;gap:10px;display:flex}.brand .mark{background:var(--accent);color:#fff;border-radius:9px;align-self:center;place-items:center;width:34px;height:34px;font-size:17px;font-weight:800;display:inline-grid}.brand h1{letter-spacing:.2px;margin:0;font-size:20px}.brand .tag{color:var(--ink-2);font-size:13px}.rangebar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.rangebar label{color:var(--ink-2);align-items:center;gap:6px;font-size:13px;display:flex}input,select,button,textarea{font:inherit;color:inherit}input[type=date],input[type=number],input[type=text],select{border:1px solid var(--line);background:#fff;border-radius:9px;max-width:100%;min-height:42px;padding:9px 10px}input:focus-visible,select:focus-visible,button:focus-visible{outline-offset:1px;border-color:var(--accent);outline:3px solid #1d5fbf59}button{border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:9px;min-width:42px;min-height:42px;padding:9px 14px;font-weight:600}button:hover{background:#f7f9fc;border-color:#b9c5d4}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover{background:#174e9e}button.danger-ghost{color:var(--danger)}button.danger-ghost:hover{background:#faeeed;border-color:#e4b9b5}button.ghost{background:0 0}button.small{padding:8px 10px;font-size:13px}button.chip{border-radius:999px;min-height:40px;padding:7px 12px;font-size:13px;font-weight:600}button.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:#17498f}.layout{grid-template-columns:330px minmax(0,1fr);align-items:start;gap:16px;display:grid}.col{flex-direction:column;gap:16px;min-width:0;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:16px}.card h2{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);justify-content:space-between;align-items:center;gap:8px;margin:0 0 12px;font-size:13px;display:flex}.timer-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.timer-clock{font-variant-numeric:tabular-nums;letter-spacing:.5px;min-width:110px;font-size:30px;font-weight:700}.timer-clock.running{color:var(--accent)}.timer-sub{color:var(--ink-2);font-size:13px}.form-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.form-row.grow>*{flex:auto}.form-row input,.form-row select{min-width:0}.field{flex-direction:column;flex:120px;gap:4px;min-width:0;display:flex}.field label{color:var(--ink-2);font-size:12px;font-weight:600}.hint{color:var(--ink-2);margin:8px 0 0;font-size:12.5px}.plist{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.plist li{border:1px solid var(--line);background:#fbfcfe;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.dot{border-radius:50%;flex:none;width:12px;height:12px}.plist .pname{overflow-wrap:anywhere;flex:auto;min-width:0;font-weight:650}.plist .prate{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.icon-btn{color:var(--ink-2);background:0 0;border:1px solid #0000;border-radius:9px;place-items:center;min-width:40px;min-height:40px;padding:8px;font-size:15px;display:inline-grid}.icon-btn:hover{border-color:var(--line);background:#eef2f7}.daygroup{margin-bottom:12px}.dayhead{color:var(--ink-2);border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;margin-bottom:6px;padding:4px 2px;font-size:13px;font-weight:700;display:flex}.dayhead .dsum{font-variant-numeric:tabular-nums;font-weight:600}.elist{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.elist li{border:1px solid var(--line);background:#fbfcfe;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;padding:7px 10px;display:flex}.elist .ename{font-weight:600}.elist .emins{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:13.5px}.elist .eamt{font-variant-numeric:tabular-nums;margin-left:auto;font-weight:650}.editform{flex-wrap:wrap;align-items:center;gap:8px;width:100%;display:flex}table.report{border-collapse:collapse;width:100%}table.report th,table.report td{text-align:right;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;padding:9px 10px}table.report th:first-child,table.report td:first-child{text-align:left}table.report thead th{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);font-size:12px}table.report tfoot td{border-bottom:none;border-top:2px solid var(--ink);font-weight:800}.pill{border-radius:50%;width:10px;height:10px;margin-right:8px;display:inline-block}.empty{color:var(--ink-2);padding:14px 2px}.chart-wrap{margin-top:14px}.chart-wrap svg{width:100%;min-width:150px;height:auto;min-height:150px;display:block}.invoice-head{border:1px dashed var(--line);background:#fbfcfe;border-radius:10px;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:12px;padding:12px 14px;display:flex}.invoice-head .t{font-size:16px;font-weight:800}.invoice-head .s{color:var(--ink-2);font-size:13px}.badge{color:var(--ok);background:#e6f5ee;border:1px solid #bfe3d2;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}@media (width<=860px){.layout{grid-template-columns:1fr}#app{padding:12px}.brand .tag{display:none}.timer-clock{font-size:26px}}.daystrip{gap:6px;margin-top:14px;display:flex;overflow:hidden}.daycell{border:1px solid var(--line);background:#fbfcfe;border-radius:9px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:3px;min-width:0;min-height:100px;padding:6px 2px;display:flex}.daycell.has{background:var(--accent-soft);border-color:#c4d8f2}.daycell .dw{color:var(--ink-2);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:700}.daycell .dm{font-size:16px;font-weight:800}.daycell .dh{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:11.5px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.timer-clock.running:before{content:"";background:#d64541;border-radius:50%;width:10px;height:10px;margin-right:8px;animation:1.2s ease-in-out infinite pulse;display:inline-block}.rangebar{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:999px;padding:6px 10px}@media print{body{background:#fff}.no-print,.topbar .rangebar{display:none!important}#app{max-width:none;padding:0}.layout{display:block}.card{box-shadow:none;border:none;padding:8px 0}}button:disabled{opacity:.5;cursor:not-allowed}
