:root{--bg: #ffffff;--bg-sunken: #f4f4f5;--bg-raised: #ffffff;--border: #e2e2e5;--border-strong: #cfcfd4;--text: #18181b;--text-dim: #6b6b74;--text-faint: #9a9aa2;--accent: #2563eb;--success: #15803d;--warning: #b45309;--error: #b91c1c;--focus: #2563eb;--radius: 6px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;color-scheme:light}:root[data-theme=dark]{--bg: #111113;--bg-sunken: #0b0b0c;--bg-raised: #1a1a1d;--border: #2a2a2e;--border-strong: #3a3a40;--text: #f4f4f5;--text-dim: #a1a1aa;--text-faint: #71717a;--accent: #60a5fa;--success: #4ade80;--warning: #fbbf24;--error: #f87171;--focus: #60a5fa;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg-sunken);-webkit-font-smoothing:antialiased}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-radius:2px}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.app{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;align-items:center;gap:12px;padding:0 14px;height:52px;background:var(--bg-raised);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.topbar .brand{display:flex;align-items:center;gap:8px;font-weight:600;letter-spacing:-.01em}.topbar .spacer{flex:1}.nav{display:flex;gap:2px}.nav a{padding:6px 10px;border-radius:var(--radius);text-decoration:none;color:var(--text-dim);display:flex;align-items:center;gap:6px}.nav a:hover{background:var(--bg-sunken);color:var(--text)}.nav a.active{background:var(--bg-sunken);color:var(--text);font-weight:550}.content{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:20px 16px 96px}.bottomnav{display:none}@media (max-width: 720px){.nav{display:none}.bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--bg-raised);border-top:1px solid var(--border);z-index:20;padding-bottom:env(safe-area-inset-bottom)}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 6px;font-size:11px;text-decoration:none;color:var(--text-faint)}.bottomnav a.active{color:var(--text)}.content{padding-bottom:76px}}h1{font-size:20px;margin:0 0 4px;letter-spacing:-.01em}h2{font-size:15px;margin:0 0 10px}.muted{color:var(--text-dim)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px;gap:12px}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:8px;align-items:center}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-raised);cursor:pointer;white-space:nowrap}.btn:hover{background:var(--bg-sunken)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--text);color:var(--bg-raised);border-color:var(--text);font-weight:550}.btn.primary:hover{opacity:.9;background:var(--text)}.btn.danger{color:var(--error);border-color:color-mix(in srgb,var(--error) 40%,var(--border-strong))}.btn.ghost{border-color:transparent;background:transparent}.btn.icon{padding:7px}.btn.sm{padding:4px 8px;font-size:13px}label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:4px}.field{margin-bottom:12px}input[type=text],input[type=password],input[type=email],input[type=search],select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg)}textarea{resize:vertical;min-height:72px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--text-dim);font-weight:550;font-size:12px}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised)}.bulk-bar{align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-sunken)}tr.row-selected>td{background:color-mix(in srgb,var(--accent) 10%,transparent)}a.card.row-selected{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-strong));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent) inset}.card-controls{position:absolute;top:8px;right:8px;display:flex;align-items:center;gap:6px}.card-controls input[type=checkbox]{width:15px;height:15px}.pick-check{position:absolute;top:2px;right:2px;background:var(--accent);color:#fff;border-radius:50%;width:16px;height:16px;display:grid;place-items:center;pointer-events:none}.pick-del{position:absolute;top:2px;left:2px;width:20px;height:20px;display:grid;place-items:center;border:none;border-radius:4px;cursor:pointer;color:#fff;background:#00000080;opacity:.75}.pick-del:hover{opacity:1;background:var(--error)}.reframe-bar{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken)}.reframe-bar select{width:auto;padding:2px 6px;font-size:12px}.reframe-overlay{position:absolute;left:6px;bottom:6px;display:flex;align-items:center;gap:4px;font-size:11px;color:#fff;background:#0009;padding:2px 6px;border-radius:4px}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:999px;font-size:12px;border:1px solid var(--border-strong);color:var(--text-dim)}.badge.ok{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,transparent)}.badge.warn{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 40%,transparent)}.badge.err{color:var(--error);border-color:color-mix(in srgb,var(--error) 40%,transparent)}.alert{padding:9px 12px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-sunken)}.alert.error{color:var(--error);border-color:color-mix(in srgb,var(--error) 45%,transparent);background:color-mix(in srgb,var(--error) 8%,var(--bg-raised))}.spin{width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--text);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{min-height:100%;display:grid;place-items:center;padding:24px}.spin-inline{animation:spin .8s linear infinite}.skip-link{position:fixed;top:-60px;left:8px;z-index:100;background:var(--bg-raised);border:1px solid var(--border-strong);border-radius:var(--radius);padding:8px 12px;transition:top .15s}.skip-link:focus{top:8px}#main:focus{outline:none}.search-hit{display:block;width:100%;text-align:left;border:none;background:transparent;padding:6px 8px;border-radius:var(--radius);cursor:pointer;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-hit:hover,.search-hit:focus-visible{background:var(--bg-sunken)}@media (max-width: 720px){.topbar .brand span,.topbar .brand{font-size:0}.topbar .brand svg{font-size:initial}}@media (max-width: 820px){.designer-grid,.schedule-grid{grid-template-columns:1fr!important}}.login-card{width:100%;max-width:340px}.login-card .logo{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:16px}.fab-feedback{position:fixed;right:14px;bottom:14px;z-index:30;border-radius:999px;width:38px;height:38px;padding:0;display:grid;place-items:center;box-shadow:0 1px 3px #0000002e}@media (max-width: 720px){.fab-feedback{bottom:72px}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:grid;place-items:center;z-index:40;padding:16px}.modal{background:var(--bg-raised);border:1px solid var(--border);border-radius:8px;width:100%;max-width:420px;padding:16px}.modal h2{display:flex;justify-content:space-between;align-items:center}.dl{display:grid;grid-template-columns:130px 1fr;gap:4px 12px;font-size:13px}.dl dt{color:var(--text-dim)}.dl dd{margin:0;word-break:break-word}code,.mono{font-family:var(--mono);font-size:12px}.pill-row{display:flex;flex-wrap:wrap;gap:6px}
