:root,[data-theme=light]{--ink:#121417;--ink-soft:#4a5560;--muted:#8b949e;--line:#e4e8ee;--paper:#f4f7f9;--panel:#fff;--nav-bg:#fff;--nav-border:#e4e8ee;--nav-text:#121417;--nav-muted:#8b949e;--nav-hover:#f4f7f9;--nav-active-bg:#2f6bff;--nav-active-text:#fff;--accent:#2f6bff;--accent-hover:#1f56e0;--accent-soft:#eaf0ff;--warn:#c2410c;--warn-soft:#fff7ed;--danger:#dc2626;--danger-soft:#fef2f2;--ok:#15803d;--ok-soft:#ecfdf3;--shadow:0 10px 28px #12141712;--cal-ok-head:#dcfce7;--cal-under-head:#ffedd5;--cal-empty-head:#fee2e2;--cal-off-head:#f1f5f9}[data-theme=light-soft]{--ink:#1e293b;--ink-soft:#475569;--muted:#94a3b8;--line:#e2e8f0;--paper:#f8fafc;--panel:#fff;--nav-bg:#f8fafc;--nav-border:#e2e8f0;--nav-text:#1e293b;--nav-muted:#64748b;--nav-hover:#eef2ff;--nav-active-bg:#6366f1;--nav-active-text:#fff;--accent:#6366f1;--accent-hover:#4f46e5;--accent-soft:#eef2ff;--cal-ok-head:#d1fae5;--cal-under-head:#fde68a;--cal-empty-head:#fecaca;--cal-off-head:#e2e8f0}[data-theme=light-warm]{--ink:#1c1917;--ink-soft:#57534e;--muted:#a8a29e;--line:#e7e5e4;--paper:#faf7f2;--panel:#fff;--nav-bg:#fffdf9;--nav-border:#e7e5e4;--nav-text:#1c1917;--nav-muted:#78716c;--nav-hover:#fff7ed;--nav-active-bg:#ea580c;--nav-active-text:#fff;--accent:#ea580c;--accent-hover:#c2410c;--accent-soft:#fff7ed;--cal-ok-head:#dcfce7;--cal-under-head:#ffedd5;--cal-empty-head:#fecaca;--cal-off-head:#f5f5f4}[data-theme=dark]{--ink:#e8eaed;--ink-soft:#b0b6bf;--muted:#8b929c;--line:#2a2f36;--paper:#121417;--panel:#1c1e21;--nav-bg:#16181b;--nav-border:#2a2f36;--nav-text:#e8eaed;--nav-muted:#8b929c;--nav-hover:#22262b;--nav-active-bg:#2f6bff;--nav-active-text:#fff;--accent:#4c82ff;--accent-hover:#6b98ff;--accent-soft:#1a2744;--warn:#fb923c;--warn-soft:#3b2412;--danger:#f87171;--danger-soft:#3f1d1d;--ok:#4ade80;--ok-soft:#143524;--shadow:0 12px 32px #00000059;--cal-ok-head:#14532d;--cal-under-head:#7c2d12;--cal-empty-head:#7f1d1d;--cal-off-head:#1f2937}[data-theme=dark-slate]{--ink:#e2e8f0;--ink-soft:#94a3b8;--muted:#64748b;--line:#334155;--paper:#0f172a;--panel:#1e293b;--nav-bg:#0b1220;--nav-border:#334155;--nav-text:#e2e8f0;--nav-muted:#64748b;--nav-hover:#1e293b;--nav-active-bg:#38bdf8;--nav-active-text:#0f172a;--accent:#38bdf8;--accent-hover:#7dd3fc;--accent-soft:#0c4a6e;--warn:#fbbf24;--warn-soft:#422006;--danger:#f87171;--danger-soft:#450a0a;--ok:#34d399;--ok-soft:#064e3b;--shadow:0 12px 32px #0006;--cal-ok-head:#065f46;--cal-under-head:#92400e;--cal-empty-head:#7f1d1d;--cal-off-head:#1e293b}[data-theme=dark-contrast]{--ink:#f5f5f5;--ink-soft:#d4d4d4;--muted:#a3a3a3;--line:#404040;--paper:#0a0a0a;--panel:#171717;--nav-bg:#000;--nav-border:#262626;--nav-text:#fafafa;--nav-muted:#a3a3a3;--nav-hover:#171717;--nav-active-bg:#fff;--nav-active-text:#000;--accent:#fff;--accent-hover:#e5e5e5;--accent-soft:#262626;--warn:#fbbf24;--warn-soft:#422006;--danger:#ef4444;--danger-soft:#450a0a;--ok:#22c55e;--ok-soft:#14532d;--shadow:0 12px 32px #0000008c;--cal-ok-head:#166534;--cal-under-head:#9a3412;--cal-empty-head:#991b1b;--cal-off-head:#262626}:root{--radius:12px;--nav-w:248px;--nav-w-collapsed:72px;color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Onest,system-ui,sans-serif;line-height:1.45}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{background:var(--paper);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}code,.mono{font-family:JetBrains Mono,ui-monospace,monospace}.title-with-tip{flex-wrap:wrap;align-items:center;gap:.1rem;display:flex}.block-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0;font-size:.72rem;font-weight:700}.block-title.title-with-tip{align-items:center;gap:.35rem;display:inline-flex}.btn{background:var(--accent);color:#fff;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:.45rem;padding:.55rem .95rem;font-weight:600;transition:background .15s,transform .15s,color .15s;display:inline-flex}[data-theme=dark-contrast] .btn{color:#000}.btn:hover{background:var(--accent-hover)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.secondary{background:var(--panel);color:var(--ink);border-color:var(--line)}.btn.secondary:hover{background:var(--nav-hover)}.btn.sm{border-radius:8px;min-height:32px;padding:.35rem .7rem;font-size:.82rem;font-weight:600}.btn.danger{background:var(--danger);color:#fff}.btn.ghost{color:var(--ink-soft);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--nav-hover)}.btn-icon{width:34px;height:34px;color:var(--ink-soft);background:0 0;border:1px solid #0000;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-icon:hover{background:var(--accent-soft);color:var(--accent)}.btn-icon:disabled{opacity:.45;cursor:not-allowed}.btn-icon:disabled:hover{color:var(--ink-soft);background:0 0}.btn-icon.danger:hover{background:var(--danger-soft);color:var(--danger)}.input,.select,.textarea{border:1px solid var(--line);background:var(--panel);width:100%;color:var(--ink);border-radius:10px;padding:.6rem .75rem}.input:focus,.select:focus,.textarea:focus{outline:2px solid color-mix(in srgb, var(--accent) 30%, transparent);border-color:var(--accent)}.label{color:var(--ink-soft);margin-bottom:.35rem;font-size:.82rem;font-weight:600;display:block}.field{margin-bottom:.9rem}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.muted{color:var(--muted)}.error-banner{background:var(--danger-soft);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 25%, transparent);border-radius:10px;margin-bottom:1rem;padding:.7rem .85rem}.pill{border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .55rem;font-size:.78rem;font-weight:600;display:inline-flex}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.danger{background:var(--danger-soft);color:var(--danger)}.pill.neutral{background:var(--nav-hover);color:var(--ink-soft)}.table-wrap{overflow:auto}table.data{border-collapse:collapse;table-layout:fixed;width:100%;font-size:.92rem}table.data th,table.data td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:.55rem .65rem}table.data th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--paper);z-index:1;font-size:.78rem;position:sticky;top:0}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}table.data tr:hover td{background:color-mix(in srgb, var(--accent-soft) 55%, transparent)}table.data td{text-overflow:ellipsis;overflow:hidden}.day-cell.under{background:var(--warn-soft);color:var(--warn);font-weight:600}.day-cell.empty-work{background:var(--warn-soft)}.day-cell.ok{background:var(--ok-soft)}.day-cell.off{color:var(--muted);background:var(--paper)}.period-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.period-row .inline-label{color:var(--ink-soft);margin:0;font-size:.82rem;font-weight:700}.period-row .date-input{width:auto;min-width:150px}.presets{flex-wrap:wrap;gap:.4rem;margin-left:.25rem;display:flex}.preset{border:1px solid var(--line);background:color-mix(in srgb, var(--paper) 65%, var(--panel));font:inherit;color:var(--ink-soft);cursor:pointer;border-radius:10px;padding:.4rem .75rem;font-size:.82rem;font-weight:600;transition:background .15s,border-color .15s,color .15s}.preset:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));color:var(--accent);background:var(--accent-soft)}.preset.active{background:var(--nav-active-bg);border-color:var(--nav-active-bg);color:var(--nav-active-text);box-shadow:none}.preset.active:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--nav-active-text)}.tabs{background:color-mix(in srgb, var(--muted) 11%, var(--panel));border:1px solid var(--line);max-width:100%;box-shadow:inset 0 1px 0 color-mix(in srgb, var(--panel) 70%, transparent);border-radius:12px;flex-wrap:wrap;align-items:center;gap:.2rem;margin-bottom:1rem;padding:.28rem;display:inline-flex}.tabs button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:9px;padding:.48rem .9rem;font-size:.9rem;font-weight:650;transition:background .12s,color .12s,box-shadow .12s}.tabs button:hover{color:var(--ink);background:color-mix(in srgb, var(--panel) 65%, transparent)}.tabs button.active{color:var(--accent-hover);background:var(--panel);box-shadow:0 1px 2px color-mix(in srgb, var(--ink) 8%, transparent), 0 0 0 1px color-mix(in srgb, var(--accent) 22%, var(--line))}.tool-toggles{align-items:center;gap:.25rem;display:flex}.tool-toggles .btn-icon.active{background:var(--accent-soft);color:var(--accent)}.app-link{color:var(--ink);font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:5px;max-width:100%;margin:-.1rem -.2rem;padding:.1rem .2rem;font-weight:400;text-decoration:none;display:inline}.app-link:hover{background:var(--accent-soft);color:var(--ink)}
