:root{--bg: oklch(.975 0 0);--surface: oklch(1 0 0);--ink: oklch(.24 .015 260);--ink-muted: oklch(.45 .015 260);--border: oklch(.88 .005 260);--accent: oklch(.44 .11 165);--accent-ink: oklch(.99 0 0);--accent-soft: oklch(.95 .02 165);--danger: oklch(.46 .17 27);--danger-soft: oklch(.96 .02 27);--focus: oklch(.55 .15 165);--radius: 6px;--z-nav: 10}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;font-size:16px;line-height:1.5}#root{min-height:100vh}h1,h2,h3{line-height:1.2;text-wrap:balance;margin:0 0 .5rem}h1{font-size:1.375rem;font-weight:650}h2{font-size:1.125rem;font-weight:600}p{max-width:65ch}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}button,input,select,textarea{font:inherit;color:inherit}.btn{display:inline-flex;align-items:center;gap:.375rem;padding:.4rem .85rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer}.btn:hover{border-color:var(--ink-muted)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{filter:brightness(1.08);border-color:var(--accent)}.btn-danger{color:var(--danger);border-color:currentColor;background:var(--surface)}.btn:disabled{opacity:.55;cursor:default}.field{display:grid;gap:.25rem;margin-block-end:.75rem}.field label{font-weight:550;font-size:.9375rem}.field input,.field select,.field textarea{padding:.45rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-width:28rem}.hint{color:var(--ink-muted);font-size:.875rem}.error-banner{border:1px solid var(--danger);background:var(--danger-soft);color:var(--danger);padding:.5rem .75rem;border-radius:var(--radius);margin-block:.75rem;max-width:40rem}.error-banner:empty{display:none}.shell{display:grid;grid-template-rows:auto 1fr;min-height:100vh}.topbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.6rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:var(--z-nav)}.brand{font-weight:650;letter-spacing:-.01em}.topbar .switcher{margin-inline-start:auto;display:flex;align-items:center;gap:.5rem}.switcher select{padding:.35rem .5rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.nav{display:flex;gap:.25rem;flex-wrap:wrap}.nav a{padding:.3rem .7rem;border-radius:var(--radius);color:var(--ink-muted);text-decoration:none}.nav a:hover{color:var(--ink);background:var(--bg)}.nav a[aria-current=page]{color:var(--accent);background:var(--accent-soft);font-weight:550}main.content{padding:1.5rem 1.25rem 3rem;max-width:60rem;width:100%;margin-inline:auto}.table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.table th,.table td{text-align:start;padding:.55rem .75rem;border-bottom:1px solid var(--border);vertical-align:top}.table th{font-size:.875rem;color:var(--ink-muted);font-weight:600}.table tr:last-child td{border-bottom:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-block-end:1rem;max-width:44rem}.status{font-size:.875rem;color:var(--ink-muted)}.status.completed{color:var(--accent);font-weight:550}ul.steps{margin:.25rem 0 0;padding-inline-start:1.25rem}ul.steps li.done{color:var(--ink-muted);text-decoration:line-through}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:0 0 .75rem}fieldset legend{font-weight:550;font-size:.9375rem;padding-inline:.25rem}.daygrid{display:flex;gap:.35rem;flex-wrap:wrap;padding:.25rem}.daygrid label{display:inline-flex;gap:.25rem;align-items:center;padding:.2rem .45rem;border:1px solid var(--border);border-radius:var(--radius)}.login{min-height:100vh;display:grid;place-items:center;padding:2rem}.login .card{text-align:center;padding:2.5rem 2rem}@media(prefers-reduced-motion:no-preference){.btn,.nav a{transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out}}
