:root{--ink: #0f172a;--muted: #64748b;--line: #e2e8f0;--bg: #f8fafc;--panel: #ffffff;--blue: #2563eb;--danger: #b91c1c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Inter,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:15px}.app-shell{display:flex;flex-direction:column;min-height:100%}.topbar{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:.45rem .9rem;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{font-weight:700;font-size:1.05rem;white-space:nowrap}.meta{color:var(--muted);font-size:.92rem}.nav{display:flex;gap:.35rem;flex-wrap:wrap;margin-left:auto}.nav a,.nav button.linkish{text-decoration:none;color:var(--ink);background:transparent;border:1px solid transparent;padding:.35rem .65rem;border-radius:8px;font-size:.95rem;cursor:pointer}.nav a.active,.nav a:hover{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.main{flex:1;padding:.65rem .9rem 1rem;width:100%;max-width:100%}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:.85rem;margin-bottom:.75rem}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.55rem}.metric{background:#f1f5f9;border-radius:10px;padding:.55rem .7rem}.metric .label{color:var(--muted);font-size:.8rem}.metric .value{font-size:1.25rem;font-weight:700}button,.btn{background:var(--blue);color:#fff;border:none;border-radius:8px;padding:.45rem .8rem;font-size:.95rem;cursor:pointer}button.secondary,.btn.secondary{background:#e2e8f0;color:var(--ink)}button.danger{background:var(--danger)}button:disabled{opacity:.55;cursor:not-allowed}input,select,textarea{border:1px solid #cbd5e1;border-radius:8px;padding:.4rem .55rem;font-size:.95rem;width:100%}label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:.2rem}.field{margin-bottom:.65rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{border-bottom:1px solid var(--line);padding:.35rem .4rem;text-align:left;vertical-align:top}th{background:#f8fafc;position:sticky;top:0}.table-wrap{overflow:auto;max-height:70vh;border:1px solid var(--line);border-radius:10px}.error{color:var(--danger)}.ok{color:#166534}.login-wrap{max-width:380px;margin:8vh auto}.workbench-frame{width:100%;height:calc(100vh - 140px);min-height:640px;border:1px solid var(--line);border-radius:12px;background:#fff}.mode-tabs button{margin-right:.35rem}.hint{color:var(--muted);font-size:.9rem}.seat-chart-wrap{position:relative;overflow:auto;border:1px solid #e2e8f0;border-radius:12px;background:#fff}.seat.drag-source rect{filter:brightness(.92)}.seat.drag-target.move rect{filter:drop-shadow(0 0 2px #15803d)}.seat.drag-target.swap rect{filter:drop-shadow(0 0 2px #1d4ed8)}.seat.drag-target.bad rect{filter:drop-shadow(0 0 2px #b91c1c)}.drag-hud{position:fixed;z-index:8500;pointer-events:none;min-width:225px;max-width:340px;background:#fff;border:1px solid #cbd5e1;border-radius:10px;box-shadow:0 10px 28px #0f172a2e;padding:10px 12px}.drag-hud .drag-person{font-weight:750;font-size:.98rem;margin-bottom:4px}.drag-hud .drag-line{font-size:.86rem;color:#475569}.drag-hud.move{border-color:#86efac;background:#f0fdf4}.drag-hud.swap{border-color:#93c5fd;background:#eff6ff}.drag-hud.bad{border-color:#fecaca;background:#fef2f2}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:7000;background:#0f172a73;display:flex;align-items:flex-start;justify-content:center;padding:6vh 1rem 2rem;overflow:auto}.modal-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;padding:1rem 1.15rem 1.2rem;width:min(560px,100%);box-shadow:0 18px 50px #0f172a40}.colour-legend{position:relative;margin-top:6px;z-index:5;display:flex;flex-wrap:wrap;gap:.35rem .65rem;max-width:100%;background:#fffffff2;border:1px solid #e2e8f0;border-radius:10px;padding:.45rem .65rem;font-size:.82rem}.colour-legend-item{display:inline-flex;align-items:center;gap:.3rem}.colour-legend .swatch{width:12px;height:12px;border-radius:3px;border:1px solid #94a3b8;display:inline-block}.modal-card-wide{width:min(980px,100%);padding:0;overflow:hidden}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:17px 20px 14px;border-bottom:1px solid #e2e8f0}.modal-title{font-size:21px;font-weight:780}.modal-sub{font-size:12.5px;color:#64748b;margin-top:3px}.icon-btn{border:0;background:#f1f5f9;border-radius:8px;width:34px;height:34px;cursor:pointer;font-size:18px}.modal-body{padding:16px 20px 20px}.section-title{font-size:12px;font-weight:760;text-transform:uppercase;letter-spacing:.06em;color:#64748b;margin:2px 0 8px}.nearby-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:16px}.near-card{min-height:78px;text-align:left;border:1px solid #d8e0ea;background:#fafcfe;border-radius:10px;padding:8px 9px;cursor:pointer;color:inherit;font:inherit}.near-card:hover{border-color:#94a3b8}.near-empty{background:#e2e8f0;border-style:dashed;opacity:.6}.near-card.active{border:2px solid #2563eb;background:#eff6ff;padding:7px 8px}.near-seat{font-weight:780;font-size:12px}.near-name{font-weight:720;font-size:14px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.near-meta{font-size:10.5px;color:#64748b;line-height:1.3;margin-top:3px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px 16px;align-items:start}.form-span{grid-column:1 / -1}label.form-label{display:block;font-size:12px;font-weight:700;color:#475569;margin-bottom:5px}.checkline{display:flex;gap:8px;align-items:center;font-size:13px;color:#334155;padding:4px 0}.checkline input{width:auto}.picker-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 7px}.picker-filters select{width:auto;min-width:150px;min-height:32px;padding:5px 8px}.picker-filters .checkline{padding:0;font-size:12px}.person-details,#personDetails,#swapDetails{min-height:68px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:9px;padding:9px 11px;font-size:12px;color:#475569;line-height:1.5;margin-top:7px}.current-name{font-size:17px;font-weight:770;color:#111827;margin-bottom:4px}.reserved-note{font-size:11px;color:#92400e;margin-top:4px}.drag-note{font-size:11.5px;color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:7px 9px;margin-top:5px}.modal-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid #e2e8f0}.action-left,.action-right{display:flex;gap:8px}.btn{border:1px solid #cbd5e1;background:#fff;border-radius:8px;padding:9px 13px;font-weight:700;cursor:pointer;color:var(--ink)}.btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}.btn.danger{color:#b91c1c;border-color:#fecaca;background:#fff7f7}.btn.swap{color:#075985;border-color:#bae6fd;background:#f0f9ff}.btn:disabled{opacity:.45;cursor:not-allowed}.sticky-status{position:fixed;left:50%;bottom:18px;transform:translate(-50%);z-index:8000;max-width:min(620px,calc(100vw - 24px));border-radius:10px;padding:9px 14px;border:1px solid;box-shadow:0 6px 24px #0f172a2e;font-size:12.5px;line-height:1.35}.sticky-status .status-title{font-size:13.5px;font-weight:800;margin-bottom:2px}.sticky-status.move,.sticky-status.ok{background:#f0fdf4;border-color:#86efac;color:#166534}.sticky-status.swap{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}.sticky-status.error{background:#fef2f2;border-color:#fca5a5;color:#b91c1c}.sticky-status.pending{background:#fffbeb;border-color:#fde68a;color:#92400e}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:7200;background:#0f172a59}.people-drawer{position:absolute;top:0;right:0;height:100%;width:min(920px,100%);background:#fff;border-left:1px solid #e2e8f0;box-shadow:-12px 0 40px #0f172a2e;padding:14px 16px;overflow:auto}.sync-modal-pre{background:#f8fafc;padding:10px;border-radius:8px;overflow:auto;max-height:40vh;font-size:12px}.assignment-tools{margin-bottom:8px}@media (max-width: 760px){.form-grid{grid-template-columns:1fr}.nearby-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.form-span{grid-column:1}.modal-actions{align-items:stretch;flex-direction:column}.action-left,.action-right{width:100%}}.seat-chart-wrap--centered{display:flex;justify-content:flex-start;align-items:flex-start}.seat-chart-wrap--centered>svg{flex:0 0 auto;margin-left:auto;margin-right:auto}.seat-tooltip{position:fixed;z-index:6000;pointer-events:none;min-width:220px;max-width:390px;background:#0f172afa;color:#fff;padding:12px 14px;border-radius:10px;line-height:1.38;box-shadow:0 12px 28px #0f172a59}.seat-tooltip .tip-title{font-size:20px;font-weight:800;line-height:1.18;margin-bottom:8px;letter-spacing:-.015em}.seat-tooltip .tip-meta{font-size:12.5px;color:#e2e8f0;margin-top:2px}.mapping-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.65rem 1rem;margin:.75rem 0}.mapping-grid .field select{width:100%}.settings-section{margin-top:1.25rem}.settings-section h3{margin:0 0 .5rem}.seat.name-glow rect{filter:drop-shadow(0 0 7px rgba(245,158,11,.95)) brightness(1.06)}.seat.name-fade{opacity:.42}.seat.name-fade rect{fill:#e5e7eb!important}.seat.design-selected rect{stroke:#111827!important;stroke-width:2.5px}.seat-chart-toolbar{gap:8px;padding:10px 12px;border:1px solid #E2E8F0;background:#fff;border-radius:12px}.seat-chart-toolbar button{background:#1d4ed8;color:#fff;font-weight:600;border:1px solid #1D4ED8}.seat-chart-toolbar button.secondary{background:#f1f5f9;color:#0f172a;border-color:#e2e8f0}.seat-chart-toolbar button.secondary:hover{background:#dbeafe;color:#1e3a8a;border-color:#93c5fd}.seat-chart-toolbar button.name-search-option{background:#f1f5f9;color:#0f172a;border-color:#e2e8f0}.seat-chart-toolbar button.name-search-option:hover{background:#dbeafe;color:#172554}.seat-name-control{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap}.seat-name-control label{margin:0;white-space:nowrap;color:#475569}.seat-chart-toolbar .hint{color:#475569}.seat-search-controls{position:relative;display:flex;flex-wrap:wrap;gap:12px}.seat-search-controls input{width:220px;max-width:65vw}.seat-search-results{position:absolute;top:100%;left:0;z-index:20;width:min(520px,calc(100vw - 56px));max-height:min(480px,55vh);overflow-y:auto;background:#fff;border:1px solid #cbd5e1;border-radius:8px;box-shadow:0 4px 12px #0002}.seat-search-results .search-count{padding:8px}.seat-search-results button.name-search-option{display:block;width:100%;text-align:left;border-radius:0;padding:8px 10px}.seat-search-results button span{display:block;font-size:12px;font-weight:400;color:#475569;margin-top:3px}
