
:root { color-scheme: light;
    --bg:#f6f6f5;
    --surface:#fff;
    --text:#191919;
    --muted:#717171;
    --border:#e6e6e3;
    --focus:#454545;
    }
* { box-sizing:border-box;
    }
body { margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    font-size:14px;
    line-height:1.6;
    }
a { color:inherit;
    text-decoration:none;
    }
button,input,select { font:inherit;
    }
button,a,input,select { -webkit-tap-highlight-color:transparent;
    }
:focus-visible { outline:2px solid var(--focus);
    outline-offset:3px;
    }
button:disabled { opacity:.45;
    cursor:not-allowed;
    }
.admin-shell { display:flex;
    min-height:100vh;
    }
.sidebar { width:244px;
    flex-shrink:0;
    background:var(--surface);
    border-right:1px solid var(--border);
    padding:36px 22px;
    position:sticky;
    top:0;
    height:100vh;
    display:flex;
    flex-direction:column;
    }
.brand { display:block;
    font-size:28px;
    font-weight:800;
    letter-spacing:-1.5px;
    padding:0 12px;
    }
.brand span { display:block;
    font-size:9px;
    letter-spacing:2px;
    font-weight:500;
    color:var(--muted);
    margin-top:2px;
    }
.nav-label { font-size:11px;
    font-weight:600;
    color:var(--muted);
    margin:42px 12px 12px;
    }
nav { display:grid;
    gap:5px;
    }
nav a { padding:11px 13px;
    border-radius:7px;
    color:#555;
    }
nav a:hover { background:#f4f4f3;
    }
nav a.is-active { color:#fff;
    background:#202020;
    font-weight:600;
    }
.pending-nav { display:grid;
    gap:14px;
    padding:0 13px;
    color:#707070;
    }
.pending-nav span { display:flex;
    justify-content:space-between;
    gap:10px;
    }
.pending-nav small { font-size:10px;
    color:#7a7a7a;
    }
.sidebar-footnote { margin-top:auto;
    padding:28px 12px 0;
    font-size:10px;
    letter-spacing:.05em;
    color:var(--muted);
    line-height:2;
    }
.content-shell { min-width:0;
    flex:1;
    }
.topbar { height:72px;
    padding:0 44px;
    border-bottom:1px solid var(--border);
    display:flex;
    align-items:center;
    justify-content:space-between;
    background:var(--surface);
    color:var(--muted);
    font-size:12px;
    }
.workspace { max-width:1440px;
    padding:42px 44px 60px;
    margin:auto;
    }
.page-heading { display:flex;
    align-items:center;
    justify-content:space-between;
    gap:24px;
    margin-bottom:30px;
    }
.eyebrow { font-size:10px;
    letter-spacing:1.6px;
    color:var(--muted);
    margin:0 0 10px;
    font-weight:600;
    }
h1 { font-size:29px;
    letter-spacing:-1px;
    line-height:1.3;
    margin:0 0 10px;
    }
h2 { font-size:16px;
    letter-spacing:-.3px;
    margin:0;
    }
h3 { font-size:14px;
    margin:0 0 10px;
    }
.muted { color:var(--muted);
    margin:0;
    }
.button { display:inline-flex;
    justify-content:center;
    align-items:center;
    min-height:42px;
    padding:10px 18px;
    border:1px solid transparent;
    border-radius:6px;
    font-size:12px;
    font-weight:600;
    white-space:nowrap;
    cursor:pointer;
    }
.primary { background:#202020;
    color:#fff;
    }
.primary:hover { background:#000;
    }
.secondary { border-color:#ddd;
    background:#fff;
    color:#333;
    }
.secondary:hover { background:#f4f4f3;
    }
.text-link { font-size:12px;
    font-weight:600;
    text-decoration:underline;
    text-underline-offset:4px;
    }
.metrics { display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:20px;
    margin-bottom:24px;
    }
.metric { padding:24px 28px;
    border:1px solid var(--border);
    border-radius:8px;
    background:var(--surface);
    }
.metric p { color:var(--muted);
    font-size:12px;
    margin:0;
    }
.metric strong { display:block;
    font-size:40px;
    font-weight:600;
    letter-spacing:-2px;
    margin:8px 0;
    }
.metric span { font-size:11px;
    color:var(--muted);
    }
.panel { padding:28px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:8px;
    margin-bottom:22px;
    min-width:0;
    }
.section-heading { display:flex;
    justify-content:space-between;
    align-items:center;
    gap:20px;
    margin-bottom:28px;
    }
.section-heading .muted { font-size:12px;
    margin-top:6px;
    }
.quiet-panel { background:#efefed;
    border-color:transparent;
    }
.quiet-panel .muted { margin:10px 0 20px;
    }
.distribution { margin-top:24px;
    }
.distribution-label { display:flex;
    justify-content:space-between;
    gap:20px;
    font-size:12px;
    margin-bottom:9px;
    }
.distribution-label span { color:var(--muted);
    }
.bar-track { height:6px;
    background:#efefed;
    border-radius:4px;
    overflow:hidden;
    }
.bar-fill { background:#343434;
    height:100%;
    border-radius:4px;
    }
.count { display:inline-block;
    padding:1px 8px;
    margin-left:6px;
    border-radius:5px;
    font-size:11px;
    color:var(--muted);
    background:#f1f1ef;
    }
.filter-form { display:flex;
    align-items:center;
    gap:8px;
    }
.filter-form select { max-width:240px;
    min-height:40px;
    }
.table-scroll { overflow-x:auto;
    }
table { width:100%;
    border-collapse:collapse;
    text-align:left;
    white-space:nowrap;
    font-size:12px;
    }
th { padding:12px 14px;
    font-weight:500;
    font-size:11px;
    color:var(--muted);
    background:#f8f8f7;
    border-bottom:1px solid var(--border);
    }
td { padding:20px 14px;
    border-bottom:1px solid #efefec;
    }
tbody tr:last-child td { border-bottom:0;
    }
.emphasis { font-weight:600;
    }
.mono { font-family:ui-monospace,SFMono-Regular,monospace;
    font-size:11px;
    }
.pagination { display:flex;
    justify-content:center;
    align-items:center;
    gap:20px;
    margin-top:24px;
    font-size:12px;
    }
.pagination a { color:var(--text);
    }
.empty-state { padding:50px 20px;
    text-align:center;
    }
.empty-state p { color:var(--muted);
    font-size:12px;
    margin:0;
    }
.form-layout { display:grid;
    grid-template-columns:minmax(0,1fr);
    max-width:760px;
    gap:24px;
    align-items:start;
    }
.form-section + .form-section { padding-top:28px;
    border-top:1px solid var(--border);
    margin-top:28px;
    }
.step-label { font-size:10px;
    color:var(--muted);
    margin:0 0 6px;
    }
.form-section h2 { margin-bottom:22px;
    }
.field { margin-bottom:20px;
    }
.field:last-child { margin-bottom:0;
    }
label { display:block;
    font-size:12px;
    font-weight:600;
    margin-bottom:8px;
    }
.required { color:var(--muted);
    font-size:10px;
    font-weight:400;
    margin-left:6px;
    }
input,select { display:block;
    width:100%;
    padding:11px 12px;
    color:var(--text);
    border:1px solid #dcdcd8;
    border-radius:5px;
    background:#fff;
    min-height:44px;
    }
input::placeholder { color:#999;
    }
.field-help { font-size:11px;
    color:var(--muted);
    margin:7px 0 0;
    }
.form-actions { display:flex;
    justify-content:flex-end;
    gap:10px;
    padding-top:24px;
    margin-top:28px;
    border-top:1px solid var(--border);
    }
.form-summary { position:sticky;
    top:24px;
    }
.summary-venue { font-size:19px;
    font-weight:600;
    line-height:1.5;
    margin:20px 0;
    overflow-wrap:anywhere;
    }
hr { border:0;
    border-top:1px solid var(--border);
    margin:24px 0;
    }
.form-summary .muted { font-size:12px;
    margin-bottom:18px;
    }
.notice { padding:16px 18px;
    background:#efefec;
    border-left:3px solid #555;
    margin:0 0 22px;
    font-size:12px;
    }
.notice-error { border-color:#9c3434;
    background:#faf4f4;
    }
.notice ul { padding-left:18px;
    }
.notice p { margin-bottom:0;
    }
.venue-grid { display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:16px;
    }
.venue-card { padding:22px;
    border:1px solid var(--border);
    border-radius:6px;
    }
.venue-card h3 { font-size:18px;
    }
.venue-card .muted { font-size:12px;
    }
.venue-actions { display:flex;
    align-items:center;
    justify-content:space-between;
    margin-top:28px;
    gap:14px;
    }
.footer { border-top:1px solid var(--border);
    margin:0 44px;
    padding:20px 0;
    font-size:10px;
    color:var(--muted);
    display:flex;
    justify-content:space-between;
    }
.visually-hidden { position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
    }
.skip-link { position:absolute;
    top:-60px;
    left:20px;
    background:white;
    padding:10px;
    z-index:10;
    }
.skip-link:focus { top:10px;
    }
@media(max-width:1100px) { .sidebar { width:210px;
    }
.workspace { padding:32px 28px;
    }
.topbar { padding:0 28px;
    }
.form-layout { grid-template-columns:minmax(0,1fr);
    }
.form-summary { position:static;
    }
}
@media(max-width:720px) { .admin-shell { display:block;
    }
.sidebar { position:static;
    width:100%;
    height:auto;
    padding:20px;
    border-right:0;
    border-bottom:1px solid var(--border);
    }
.brand { padding:0;
    font-size:24px;
    }
.brand span { display:inline;
    margin-left:14px;
    letter-spacing:1px;
    }
.nav-label,.pending-nav,.sidebar-footnote { display:none;
    }
.sidebar nav { display:flex;
    gap:6px;
    margin-top:18px;
    overflow-x:auto;
    }
.sidebar nav a { white-space:nowrap;
    font-size:12px;
    }
.topbar { height:54px;
    padding:0 20px;
    }
.workspace { padding:28px 20px;
    }
.page-heading { align-items:flex-start;
    flex-direction:column;
    gap:18px;
    }
h1 { font-size:25px;
    }
.metrics { gap:12px;
    }
.metric { padding:18px;
    }
.metric strong { font-size:32px;
    }
.metric span { display:none;
    }
.panel { padding:20px;
    }
.section-heading { align-items:flex-start;
    flex-direction:column;
    }
.filter-form { width:100%;
    }
.filter-form select { max-width:none;
    flex:1;
    }
.venue-grid { grid-template-columns:1fr;
    }
.footer { margin:0 20px;
    }
.footer span { display:none;
    }
}

.drawing-preview { display:block; max-width:100%; max-height:650px; height:auto; margin-top:20px; object-fit:contain; background-color:#9ca3af; }

.zone-layout { display:grid; grid-template-columns:minmax(0, 2fr) minmax(260px, 1fr); gap:24px; align-items:start; }
.zone-map { position:relative; line-height:0; background:#e5e7eb; }
.zone-map img { display:block; width:100%; height:auto; user-select:none; }
.zone-map svg { position:absolute; inset:0; width:100%; height:100%; touch-action:none; cursor:crosshair; }
.zone-saved { fill:#2563eb; fill-opacity:.16; stroke:#1d4ed8; stroke-width:2px; vector-effect:non-scaling-stroke; }
.zone-draft { fill:#059669; fill-opacity:.25; stroke:#047857; stroke-width:2px; stroke-dasharray:6 3; vector-effect:non-scaling-stroke; }
.zone-label { fill:#111827; paint-order:stroke; stroke:white; stroke-width:3px; vector-effect:non-scaling-stroke; pointer-events:none; }
@media (max-width:1000px) { .zone-layout { grid-template-columns:1fr; } }

.zone-handle { fill:white; stroke:#047857; stroke-width:2px; vector-effect:non-scaling-stroke; pointer-events:all; }
.zone-handle-nw,.zone-handle-se { cursor:nwse-resize; }
.zone-handle-ne,.zone-handle-sw { cursor:nesw-resize; }
.zone-handle-n,.zone-handle-s { cursor:ns-resize; }
.zone-handle-e,.zone-handle-w { cursor:ew-resize; }

.graph-edge { stroke:#64748b; stroke-width:2px; vector-effect:non-scaling-stroke; }
.graph-preview { stroke:#d97706; stroke-width:3px; stroke-dasharray:6 3; pointer-events:none; }
.graph-node { fill:currentColor; cursor:pointer; }
.graph-entrance { color:#15803d; }
.graph-exit { color:#dc2626; }
.graph-waypoint { color:#2563eb; }
.graph-viewpoint { color:#9333ea; }
.graph-node ellipse { stroke:white; stroke-width:2px; vector-effect:non-scaling-stroke; }
.graph-node.is-selected ellipse,.graph-node:focus ellipse { stroke:#d97706; stroke-width:4px; }
.graph-node-label { fill:#111827; stroke:white; stroke-width:3px; paint-order:stroke; vector-effect:non-scaling-stroke; }
.graph-selection { fill:#d97706; fill-opacity:.4; stroke:#92400e; stroke-width:2px; vector-effect:non-scaling-stroke; pointer-events:none; }
.graph-arrows { fill:none; stroke:#475569; stroke-width:2px; }
.graph-arrows polyline { vector-effect:non-scaling-stroke; }
.graph-node:focus { outline:none; }
