/* Admin section styles. Layered after workplace-ui.css and reuses its design tokens
   (--background, --foreground, --blue, --muted, --border) so the admin pages read as part of
   the same redesigned UI as Home / My Bookings / the sidebar, rather than the legacy dark theme
   still used by the older booking pages. */

.admin-page{display:flex;flex-direction:column;gap:28px}
/* On desktop the topbar (theme toggle + avatar) floats over the top-right corner of the page. */
@media(min-width:801px){.admin-page>.page-title-row{padding-right:120px}}
/* Action buttons sitting just above a card, flush with its right edge. */
.admin-panel-actions{display:flex;justify-content:flex-end;margin:-16px 0 -18px}

.admin-stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
@media(max-width:1100px){.admin-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.admin-stat-grid{grid-template-columns:1fr}}

.admin-stat-card{border:1px solid var(--border,#c6ddff);border-radius:12px;padding:20px 22px;background:#fff}
.admin-stat-card .eyebrow{color:var(--muted,#577dbb)}
.admin-stat-card strong{display:block;font-family:var(--font-serif);font-size:34px;line-height:1.15;margin-top:8px;color:var(--foreground,#092c73)}
.admin-stat-card span.hint{display:block;margin-top:4px;font-size:12.5px;color:var(--muted,#577dbb)}

.admin-nav-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media(max-width:900px){.admin-nav-grid{grid-template-columns:1fr}}

.admin-nav-card{display:flex;flex-direction:column;gap:8px;border:1px solid var(--border,#c6ddff);border-radius:12px;padding:22px 24px;background:#eef4ff;transition:background .15s,border-color .15s,transform .15s}
.admin-nav-card:hover{background:#dfebff;border-color:#9fc2ff;transform:translateY(-1px)}
.admin-nav-card h3{font-size:17px;margin:0;color:var(--foreground,#092c73)}
.admin-nav-card p{margin:0;font-size:13px;color:var(--muted,#577dbb)}
.admin-nav-card .admin-nav-arrow{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--blue,#0758f6)}

.admin-panel{border:1px solid var(--border,#c6ddff);border-radius:12px;background:#fff;padding:22px 24px}

.admin-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:18px}
.admin-toolbar-field{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--muted,#577dbb)}
.admin-toolbar-field select,.admin-toolbar-field input{border:1px solid var(--border,#c6ddff);border-radius:8px;padding:9px 12px;font-size:14px;color:var(--foreground,#092c73);background:#f7faff;min-height:38px}
.admin-toolbar-spacer{flex:1}

.admin-table-wrap{overflow-x:auto}
.admin-table{width:100%;border-collapse:collapse;font-size:13.5px}
.admin-table th{text-align:left;padding:10px 14px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted,#577dbb);border-bottom:1px solid var(--border,#c6ddff)}
.admin-table td{padding:12px 14px;border-bottom:1px solid #eef3fb;color:var(--foreground,#092c73);vertical-align:middle}
.admin-table tr:last-child td{border-bottom:none}

.admin-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:11.5px;font-weight:600;letter-spacing:.3px}
.admin-badge.confirmed{background:#e2f4e9;color:#1a7a44}
.admin-badge.cancelled{background:#fbe6e6;color:#b32828}
.admin-badge.active{background:#e2f4e9;color:#1a7a44}
.admin-badge.disabled{background:#f1f2f4;color:#5b6470}
.admin-badge.admin{background:#e6ecff;color:#2740b0}
.admin-badge.employee{background:#f1f2f4;color:#5b6470}

.admin-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;font-size:13px;font-weight:600;border:1px solid var(--border,#c6ddff);background:#f7faff;color:var(--foreground,#092c73);transition:background .15s,border-color .15s}
.admin-btn:hover:not(:disabled){background:#e9f1ff}
.admin-btn:disabled{opacity:.55;cursor:default}
.admin-btn.primary{background:var(--blue,#0758f6);border-color:var(--blue,#0758f6);color:#fff}
.admin-btn.primary:hover:not(:disabled){background:#0348d4}
.admin-btn.danger{background:#fff5f5;border-color:#f3caca;color:#b32828}
.admin-btn.danger:hover:not(:disabled){background:#fbe6e6}
.admin-btn.small{padding:6px 11px;font-size:12px}

.admin-empty{padding:32px 0;text-align:center;color:var(--muted,#577dbb);font-size:14px}
.admin-alert{padding:11px 14px;border-radius:8px;font-size:13px;margin-bottom:16px}
.admin-alert.error{background:#fbe6e6;color:#b32828}
.admin-alert.notice{background:#e2f4e9;color:#1a7a44}

.admin-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:16px}
.admin-form-field{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--muted,#577dbb)}
.admin-form-field input,.admin-form-field select{border:1px solid var(--border,#c6ddff);border-radius:8px;padding:9px 12px;font-size:14px;color:var(--foreground,#092c73);background:#f7faff;min-height:38px}

.admin-section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px;flex-wrap:wrap}
.admin-section-heading h2{font-family:var(--font-serif);font-size:24px;margin:6px 0 0;color:var(--foreground,#092c73)}

/* Admin seat floor-plan editor (AdminSeatPlacementMap) */
.admin-toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted,#577dbb);cursor:pointer}
.admin-row-actions{display:flex;gap:8px;justify-content:flex-end}
.seat-editor{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}
@media(max-width:1000px){.seat-editor{grid-template-columns:1fr}}
.seat-editor-canvas{border:1px solid var(--border,#c6ddff);border-radius:12px;background:#f7faff;overflow:hidden}
.seat-editor-svg{display:block;width:100%;height:auto;max-height:560px;cursor:crosshair;background:#fff}
.seat-editor-legend{display:flex;flex-wrap:wrap;gap:16px;padding:10px 14px;font-size:12px;color:var(--muted,#577dbb);border-top:1px solid var(--border,#c6ddff)}
.seat-editor-legend span{display:inline-flex;align-items:center;gap:6px}
.seat-editor-legend .dot{width:10px;height:10px;border-radius:3px;display:inline-block}
.seat-editor-legend .dot.active{background:#0758f6}
.seat-editor-legend .dot.disabled{background:#9aa3ad}
.seat-editor-legend .dot.draft{background:#16a34a}
.seat-editor-legend .hint{margin-left:auto}
.seat-editor-panel{border:1px solid var(--border,#c6ddff);border-radius:12px;padding:18px;background:#fff;display:flex;flex-direction:column;gap:12px}
.seat-editor-panel h3{margin:0;font-size:18px;color:var(--foreground,#092c73)}
.seat-editor-panel p{margin:0}
.seat-editor-hint{font-size:12.5px;color:var(--muted,#577dbb);line-height:1.5}
.seat-editor-count{font-size:13px;font-weight:600;color:var(--foreground,#092c73)}
.seat-editor-coords{margin:0;display:flex;flex-direction:column;gap:6px;font-size:12.5px}
.seat-editor-coords div{display:flex;justify-content:space-between;gap:10px}
.seat-editor-coords dt{color:var(--muted,#577dbb)}
.seat-editor-coords dd{margin:0;color:var(--foreground,#092c73);font-weight:600;text-align:right}
.seat-editor-actions{display:flex;gap:8px;flex-wrap:wrap}
.seat-marker{cursor:pointer}
.seat-marker .seat-marker-desk{fill:#0758f6;fill-opacity:.85;stroke:#fff;stroke-width:1.5}
.seat-marker .seat-marker-chair{fill:#0758f6;fill-opacity:.55}
.seat-marker .seat-marker-link{stroke:#0758f6;stroke-opacity:.55;stroke-width:1.5}
.seat-marker.disabled .seat-marker-desk,.seat-marker.disabled .seat-marker-chair{fill:#9aa3ad}
.seat-marker.disabled .seat-marker-link{stroke:#9aa3ad}
.seat-marker.draft{cursor:default;pointer-events:none}
.seat-marker.draft .seat-marker-desk,.seat-marker.draft .seat-marker-chair{fill:#16a34a;fill-opacity:1}
.seat-marker.draft .seat-marker-link{stroke:#16a34a;stroke-opacity:1}
.seat-marker.selected .seat-marker-desk{stroke:#f59e0b;stroke-width:3}
.seat-marker:hover .seat-marker-desk,.seat-marker:focus-visible .seat-marker-desk{stroke:#f59e0b;stroke-width:2.5}
.seat-marker:focus{outline:none}
.seat-marker.invalid{cursor:default;pointer-events:none}
.seat-marker.invalid .seat-marker-desk,.seat-marker.invalid .seat-marker-chair{fill:#dc2626;fill-opacity:1}
.seat-marker.invalid .seat-marker-link{stroke:#dc2626;stroke-opacity:1}
.seat-marker.invalid.selected .seat-marker-desk{stroke:#fff;stroke-width:1.5}
.seat-editor-legend .dot.invalid{background:#dc2626}
.seat-editor-mode{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border,#c6ddff);border-radius:10px;overflow:hidden}
.seat-editor-mode button{padding:8px 10px;border:0;background:#fff;color:var(--foreground,#092c73);font-size:13px;font-weight:600;cursor:pointer}
.seat-editor-mode button+button{border-left:1px solid var(--border,#c6ddff)}
.seat-editor-mode button[aria-pressed="true"]{background:#0758f6;color:#fff}
.seat-editor-mode button:focus-visible{outline:2px solid #f59e0b;outline-offset:-2px}
.seat-editor-problems{margin:0;padding-left:18px;font-size:12.5px;color:#b91c1c;display:flex;flex-direction:column;gap:2px;max-height:140px;overflow:auto}

/* Admin parking map editor (AdminParkingPlacementMap) */
.parking-editor-area{fill:#0758f6;fill-opacity:.05;stroke:#0758f6;stroke-opacity:.5;stroke-width:1.2;stroke-dasharray:5 3;pointer-events:none}
.parking-editor-spot{cursor:pointer}
.parking-editor-spot rect{fill:#0758f6;fill-opacity:.55;stroke:#fff;stroke-width:1}
.parking-editor-spot text{fill:#fff;font-weight:700;font-family:Arial,sans-serif;pointer-events:none}
.parking-editor-spot.disabled rect{fill:#9aa3ad}
.parking-editor-spot:hover rect,.parking-editor-spot:focus-visible rect{stroke:#f59e0b;stroke-width:2}
.parking-editor-spot.selected rect{stroke:#f59e0b;stroke-width:2.5;fill-opacity:.8}
.parking-editor-spot:focus{outline:none}
.parking-editor-spot.draft{cursor:default;pointer-events:none}
.parking-editor-spot.draft rect{fill:#16a34a;fill-opacity:.85}
.parking-editor-spot.draft.invalid rect{fill:#dc2626}

/* Admin parking editor: per-position list for bike bays and Basement 1 stacks */
.parking-editor-positions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.parking-editor-positions li{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border,#c6ddff);border-radius:10px;background:#f7faff}
.parking-editor-positions li span:first-child{display:flex;flex-direction:column;font-size:13px;color:var(--foreground,#092c73)}
.parking-editor-positions small{font-size:11px;color:var(--muted,#577dbb)}
.parking-editor-spot.partly-disabled rect{fill:#0758f6;fill-opacity:.3;stroke:#9aa3ad;stroke-dasharray:3 2}

/* Admin floor import (AdminFloorsPage, AdminFloorImportPage, PlanView) */
.floor-list-hint{font-size:12px;color:var(--muted,#577dbb);margin-top:2px}
.floor-list-footer{margin-top:14px}
.floor-import-steps{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.floor-import-steps button{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;border:1px solid var(--border,#c6ddff);background:#fff;color:var(--muted,#577dbb);font-size:13px;font-weight:600;cursor:pointer}
.floor-import-steps button:disabled{cursor:default;opacity:.55}
.floor-import-steps button span{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:999px;border:1px solid #aac8ff;font-size:11px}
.floor-import-steps button span svg{width:12px;height:12px}
.floor-import-steps .current button{background:var(--blue,#0758f6);border-color:var(--blue,#0758f6);color:#fff}
.floor-import-steps .current button span{border-color:rgba(255,255,255,.6)}
.floor-import-steps .done button{color:var(--foreground,#092c73)}
.floor-import-steps button:focus-visible{outline:2px solid #f59e0b;outline-offset:2px}
.floor-import-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.floor-import-save{display:flex;flex-direction:column;gap:14px}
.floor-import-options{display:flex;flex-direction:column;gap:8px;margin:12px 0 16px}
.floor-import-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}
@media(max-width:1000px){.floor-import-layout{grid-template-columns:1fr}}
.floor-import-card{border:1px solid #eef3fb;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}
.floor-import-card-row{display:flex;align-items:center;gap:8px}
.floor-import-card-row input:not([type=color]),.floor-import-card-row select{flex:1;min-width:0;border:1px solid var(--border,#c6ddff);border-radius:8px;padding:6px 10px;font-size:13px;color:var(--foreground,#092c73);background:#f7faff}
.floor-import-card-row input[type=color]{width:34px;height:30px;padding:0;border:1px solid var(--border,#c6ddff);border-radius:6px;background:#fff}
.floor-import-section-list{max-height:640px;overflow:auto}
.plan-view{border:1px solid var(--border,#c6ddff);border-radius:12px;background:#f7faff;overflow:auto;max-height:680px}
.plan-view-svg{display:block;height:auto;background:#fff;touch-action:none;user-select:none}
.plan-seat.clickable{cursor:pointer}
.plan-seat.clickable:hover circle{stroke:#f59e0b;stroke-width:.8}
.plan-wing-box rect{fill:#0758f6;fill-opacity:.06;stroke:#0758f6;stroke-width:1.5;stroke-dasharray:6 4}
.plan-wing-box text{fill:#0758f6;font-weight:700}
.plan-wing-draft{fill:#16a34a;fill-opacity:.08;stroke:#16a34a;stroke-width:1.5;stroke-dasharray:4 3}
.plan-measure-point{fill:#f59e0b}
.plan-measure-line{stroke:#f59e0b}
.plan-section polygon{fill-opacity:.28;stroke-opacity:.9}
.plan-section text{fill:#092c73;font-weight:700;text-anchor:middle;dominant-baseline:middle;pointer-events:none}

/* Desk reservations (employee page + admin queue) and the admin notification bell */
.admin-badge.pending{background:#fff4d6;color:#8a5a00}
.admin-badge.approved{background:#e2f4e9;color:#1a7a44}
.admin-badge.rejected{background:#fbe6e6;color:#b32828}
a.admin-alert{display:block;font-weight:600}
.notification-bell{position:relative}
.notification-count{position:absolute;top:-2px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#d92d20;color:#fff;font-size:10.5px;font-weight:700;line-height:18px;text-align:center}
.nav-count{margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#d92d20;color:#fff;font-size:11px;font-weight:700;line-height:20px;text-align:center}
.admin-nav-card h3 .nav-count{display:inline-block;margin-left:8px;vertical-align:middle}
.reservation-weekdays{display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0 0 16px}
.reservation-weekdays legend{font-size:12.5px;color:var(--muted,#577dbb);margin-bottom:6px}
.reservation-weekdays label{display:inline-flex;align-items:center;justify-content:center;min-width:58px;padding:8px 12px;border:1px solid var(--border,#c6ddff);border-radius:999px;background:#f7faff;font-size:13px;font-weight:600;cursor:pointer}
.reservation-weekdays label.selected{background:var(--blue,#0758f6);border-color:var(--blue,#0758f6);color:#fff}
.reservation-weekdays label:focus-within{outline:2px solid var(--blue,#0758f6);outline-offset:2px}
.reservation-weekdays input{position:absolute;opacity:0;pointer-events:none}
.reservation-reason{margin-bottom:16px}
.reservation-reason textarea{border:1px solid var(--border,#c6ddff);border-radius:8px;padding:9px 12px;font:inherit;font-size:14px;color:var(--foreground,#092c73);background:#f7faff;resize:vertical}
.reservation-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.reservation-card{border:1px solid var(--border,#c6ddff);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}
.reservation-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.reservation-card p{margin:0}
.reservation-muted{font-size:12.5px;color:var(--muted,#577dbb)}
.reservation-days{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.reservation-days li{display:inline-flex;align-items:center;gap:8px;padding:5px 6px 5px 10px;border:1px solid var(--border,#c6ddff);border-radius:8px;font-size:12.5px;background:#f7faff}
.reservation-days li.skipped>span:first-child{text-decoration:line-through;color:var(--muted,#577dbb)}
.reservation-review{display:flex;flex-direction:column;gap:6px;min-width:190px}
.reservation-review input{border:1px solid var(--border,#c6ddff);border-radius:8px;padding:6px 10px;font-size:12.5px;background:#f7faff;color:var(--foreground,#092c73)}
/* A select sizes to its longest option; let toolbar fields shrink so they never push past the screen. */
.admin-toolbar-field{min-width:0;max-width:100%}
.admin-toolbar-field select,.admin-toolbar-field input{max-width:100%}
@media(max-width:580px){.admin-toolbar-field{flex:1 1 100%}.admin-toolbar-field select,.admin-toolbar-field input{width:100%}}
