:root{--bg:#111214;--surface:#1a1c1f;--surface-hover:#212429;--border:#2a2d32;--border-strong:#3a3e45;--text:#e8e8e6;--text-muted:#9a9a94;--text-faint:#6d6f73;--accent-start:#4ade80;--accent-pause:#fbbf24;--accent-stop:#f87171;--radius-sm:8px;--radius:10px;--radius-lg:14px;--transition:.15s ease;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--client-blue:#60a5fa;--client-green:#4ade80;--client-amber:#fbbf24;--client-pink:#f472b6;--client-purple:#a78bfa;--client-cyan:#22d3ee;--client-orange:#fb923c;--client-gray:#94a3b8}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}h1,h2,h3,p,figure{margin:0}button{font:inherit;font-variant-emoji:text;color:inherit;cursor:pointer;background:0 0;border:none}input,textarea,select{font:inherit;color:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--client-blue);outline-offset:2px;border-radius:4px}.tabular{font-variant-numeric:tabular-nums}.dot{background:var(--client-gray);border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.app{max-width:720px;margin:0 auto;padding:28px 20px 64px}.app-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.app-title{letter-spacing:-.01em;font-size:20px;font-weight:600}.btn{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);transition:background var(--transition), border-color var(--transition), opacity var(--transition);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.btn:disabled{opacity:.5;cursor:default}.btn-start{color:var(--accent-start);border-color:color-mix(in srgb, var(--accent-start) 35%, transparent)}.btn-pause{color:var(--accent-pause);border-color:color-mix(in srgb, var(--accent-pause) 35%, transparent)}.btn-stop{color:var(--accent-stop);border-color:color-mix(in srgb, var(--accent-stop) 35%, transparent)}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--surface);border-color:var(--border);color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.muted{color:var(--text-muted)}.small{font-size:13px}.centered{justify-content:center;align-items:center;min-height:100%;padding:24px;display:flex}.setup-card{flex-direction:column;align-items:flex-start;gap:10px;max-width:520px;padding:22px 24px 24px;display:flex}.setup-title{font-size:16px;font-weight:600}.code{border:1px solid var(--border);word-break:break-all;background:#22252a;border-radius:6px;margin-right:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}.setup-result{border-radius:var(--radius);border:1px solid var(--border);width:100%;padding:12px 14px}.setup-result p{margin-top:4px}.setup-result-ok{color:var(--accent-start);border-color:color-mix(in srgb, var(--accent-start) 35%, transparent);background:color-mix(in srgb, var(--accent-start) 8%, transparent)}.setup-result-error{color:var(--accent-stop);border-color:color-mix(in srgb, var(--accent-stop) 35%, transparent);background:color-mix(in srgb, var(--accent-stop) 8%, transparent)}.setup-result-ok .small,.setup-result-error .small{color:var(--text)}.login{flex-direction:column;align-items:center;gap:14px;width:100%;max-width:260px;display:flex}.login-title{letter-spacing:-.01em;margin-bottom:6px;font-size:20px;font-weight:600}.login-input{text-align:center;letter-spacing:.35em;text-indent:.35em;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);width:100%;transition:border-color var(--transition);padding:12px 14px;font-size:22px}.login-input::placeholder{letter-spacing:normal;text-indent:0;color:var(--text-faint);font-size:15px}.login-input:focus{border-color:var(--border-strong)}.login-button{width:100%;padding:10px 14px}.login-error{color:var(--accent-stop);font-size:13px}.client-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.client-row{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);transition:border-color var(--transition);align-items:center;gap:12px;padding:10px 14px;display:flex}.client-row:hover{border-color:var(--border-strong)}.client-row.is-archived{opacity:.55}.client-name{text-align:left;flex:auto;align-items:center;gap:10px;min-width:0;padding:2px 0;display:flex}.client-name>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.client-name:hover{color:#fff}.client-title{flex:auto;justify-content:center;align-items:center;gap:10px;min-width:0;display:flex}.badge{color:var(--text-faint);border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500}.empty{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:48px 20px;display:flex}.archived{margin-top:26px}.archived-toggle{color:var(--text-muted);transition:color var(--transition);align-items:center;gap:8px;padding:6px 2px;font-size:13px;display:flex}.archived-toggle:hover{color:var(--text)}.archived-caret{width:12px;color:var(--text-faint);font-size:16px;line-height:1;display:inline-block}.archived .client-list{margin-top:8px}@media (width<=560px){.client-week-suffix{display:none}.app{padding:20px 14px 56px}.app-header{flex-wrap:wrap}.client-title{flex-basis:100%;order:-1;justify-content:flex-start}}.overlay{z-index:50;background:#0000008c;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);width:100%;max-width:380px;padding:20px 22px 22px}.dialog-title{margin-bottom:16px;font-size:16px;font-weight:600}.dialog-message{color:var(--text-muted);margin-bottom:20px;font-size:14px}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.dialog-danger{border-top:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:2px;margin-top:18px;padding-top:14px;display:flex}.btn-danger-ghost{color:var(--accent-stop)}.btn-danger-ghost:hover:not(:disabled){color:var(--accent-stop);border-color:color-mix(in srgb, var(--accent-stop) 35%, transparent)}.field{margin-bottom:16px;display:block}.field-label{color:var(--text-muted);margin-bottom:6px;font-size:12px;display:block}.field-input{border-radius:var(--radius-sm);background:var(--bg);border:1px solid var(--border);width:100%;transition:border-color var(--transition);padding:9px 12px}.field-input:focus{border-color:var(--border-strong)}.color-picker{flex-wrap:wrap;gap:8px;display:flex}.color-swatch{width:26px;height:26px;box-shadow:0 0 0 1px var(--border);transition:transform var(--transition), box-shadow var(--transition);border:2px solid #0000;border-radius:50%}.color-swatch:hover{transform:scale(1.08)}.color-swatch.is-selected{border-color:var(--bg);box-shadow:0 0 0 2px var(--text)}.detail-add{margin-left:auto}.history{flex-direction:column;gap:22px;display:flex}.day-header{color:var(--text-muted);margin-bottom:8px;font-size:13px;font-weight:600}.session-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.session-row{text-align:left;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);width:100%;transition:border-color var(--transition), background var(--transition);grid-template-columns:auto auto 1fr auto;align-items:center;gap:16px;padding:9px 14px;display:grid}.session-row:hover{background:var(--surface-hover);border-color:var(--border-strong)}.session-range{color:var(--text-muted);white-space:nowrap;font-size:13.5px}.session-duration{white-space:nowrap;font-size:14px}.session-comment{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-muted);font-size:13.5px;overflow:hidden}.session-edited{width:12px;color:var(--text-faint);font-size:12px}.field-row{gap:10px;display:flex}.field-row .field{flex:1 1 0;min-width:0}.field-hint{color:var(--accent-pause);font-size:11px}.field-error{color:var(--accent-stop);margin:-6px 0 12px;font-size:13px}.field-textarea{resize:vertical;min-height:52px}@media (width<=460px){.field-row{flex-direction:column;gap:0}.session-row{grid-template-columns:1fr auto;gap:4px 12px}.session-comment{grid-column:1}.session-edited{text-align:right;grid-column:2}}.dialog-session{max-width:460px}.dialog-session .field-row .field:last-child{flex:0 0 96px}.totals{flex-wrap:wrap;gap:10px;margin:0 0 20px;display:flex}.total{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);flex:120px;padding:10px 14px}.total-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);font-size:11px}.total-value{margin:2px 0 0;font-size:19px;font-weight:500}.client-week{white-space:nowrap;flex:none}.banner{z-index:20;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;display:flex;position:sticky;top:0}.banner-label{align-items:center;gap:8px;min-width:0;font-size:14px;display:flex}.banner-label:before{content:"⏱";color:var(--text-muted)}.banner-client{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.banner-time{color:var(--text)}.banner.is-paused .banner-time{color:var(--accent-pause)}.banner-paused-label,.timer-paused-label{color:var(--accent-pause);font-size:12px;animation:1.5s ease-in-out infinite blink}.banner-actions{align-items:center;gap:6px;display:flex}.banner-actions .btn{padding:6px 12px}@keyframes blink{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.banner-paused-label,.timer-paused-label{animation:none}}.client-running{color:var(--accent-start);white-space:nowrap}.detail-actions{align-items:center;gap:10px;margin-bottom:22px;display:flex}.timer{flex-direction:column;gap:8px;padding:12px 14px;display:flex}.timer-client{color:var(--text-muted);align-items:center;gap:8px;min-width:0;font-size:12px;display:flex}.timer-client-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.timer-time{color:#f2f2ef;letter-spacing:-.01em;font-size:34px;font-weight:500;line-height:1.1}.timer.is-paused .timer-time{color:var(--accent-pause)}.timer-comment{align-items:center;display:flex;position:relative}.timer-comment-input{border-radius:var(--radius-sm);border:1px solid var(--border);min-width:0;transition:border-color var(--transition);background:#ffffff0a;flex:auto;padding:6px 26px 6px 10px;font-size:13px}.timer-comment-input:focus{border-color:var(--border-strong)}.timer-comment-saved{color:var(--accent-start);opacity:0;transition:opacity var(--transition);pointer-events:none;font-size:12px;position:absolute;right:8px}.timer-comment-saved.is-visible{opacity:.7}.timer-actions{justify-content:flex-end;gap:6px;display:flex}.timer-actions .btn{padding:6px 12px;font-size:13px}.timer-widget{z-index:30;border-radius:var(--radius-lg);border:1px solid var(--border-strong);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#111214eb;width:280px;position:fixed;bottom:20px;right:20px;box-shadow:0 10px 30px #00000080}.pip-body{color:var(--text);font-family:var(--font);background:#111214eb;margin:0;overflow:hidden}.pip-body .timer{box-sizing:border-box;justify-content:space-between;gap:4px;height:100vh;padding:10px 12px}.pip-body .timer-time{font-size:clamp(26px,13vw,40px)}.pip-body .timer-actions .btn{padding:5px 10px;font-size:12px}.notice{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:8px 12px;display:flex}.notice-close{color:var(--text-faint);transition:color var(--transition);padding:0 4px;line-height:1}.notice-close:hover{color:var(--text)}.toasts{z-index:100;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast{background:var(--surface);border:1px solid color-mix(in srgb, var(--accent-stop) 40%, var(--border));border-radius:var(--radius);padding:10px 16px;font-size:14px;box-shadow:0 8px 24px #0006}
