:root{
  --navy:#101a46;--pink:#f12d92;--ink:#1c274c;--muted:#6f7894;--line:#e3e7f1;
  --room:#f5efe5;--available:#31a957;--available2:#258846;--held:#d89a1c;--held2:#b87c08;
  --reserved:#d83d4b;--reserved2:#b82736;--premium:#d6a52a;--wall:#191c25;
}
*{box-sizing:border-box}
body{margin:0;background:#f7f8fc;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
button,input,select{font:inherit}
.app{max-width:1550px;margin:auto;padding:14px}
.header{display:grid;grid-template-columns:220px 1fr auto;gap:20px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px 16px;box-shadow:0 8px 26px #20294b12}
.logo{width:200px;height:95px;object-fit:cover;object-position:center;border-radius:12px}
.title h1{margin:0;font-size:clamp(26px,3vw,44px);letter-spacing:.01em}
.eventline{display:flex;gap:14px;flex-wrap:wrap;margin-top:7px;font-weight:800;color:#315cba}
.eventline strong{color:var(--pink)}
.header-actions{display:flex;gap:8px;align-items:center}.header-actions a{text-decoration:none;color:#2b4598;font-weight:900}
.header .badge{padding:10px 14px;border-radius:999px;background:linear-gradient(135deg,#fce8f4,#e8efff);font-weight:900;color:var(--pink);white-space:nowrap}
.shell{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;margin-top:14px}
.map-card,.panel{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 8px 26px #20294b10}
.map-card{padding:10px;overflow:auto}
.room-wrap{width:920px;position:relative;transform-origin:top left}
.room{
  position:relative;width:920px;height:876px;overflow:hidden;border:14px solid var(--wall);border-radius:18px;
  background:
    linear-gradient(rgba(255,255,255,.16),rgba(255,255,255,.16)),
    repeating-linear-gradient(0deg,transparent 0 43px,rgba(103,78,54,.035) 44px),
    repeating-linear-gradient(90deg,transparent 0 43px,rgba(103,78,54,.035) 44px),
    var(--room);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.4);
}
.room::before{content:"BACK WALL";position:absolute;top:5px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:1000;letter-spacing:.18em;color:#8b8291}
.fixture{position:absolute;z-index:6;border:2px solid #6b7180;background:#fff;border-radius:8px;padding:8px 12px;font-weight:1000;color:#22294b;box-shadow:0 4px 10px #00000010;text-align:center}
.concessions{left:2.5%;top:2.2%;width:22%}
.table-inspector{position:absolute;z-index:6;left:33.5%;top:2%;width:33%;min-height:48px;padding:7px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #ccd3e1;border-radius:9px;background:rgba(255,255,255,.94);color:#17244f;text-align:center;box-shadow:0 4px 10px #00000010}
.table-inspector span{font-size:9px;font-weight:1000;letter-spacing:.09em;color:#687391}.table-inspector b{font-size:11px}
.table-inspector[data-status="available"] b{color:var(--available2)}.table-inspector[data-status="paid"] b{color:var(--reserved2)}.table-inspector[data-status="held"] b{color:var(--held2)}
.map-key{position:absolute;z-index:6;right:2.3%;top:1.7%;width:27%;padding:8px 10px;display:grid;grid-template-columns:1fr 1fr;gap:6px 9px;border:1px solid #d8dce8;border-radius:9px;background:rgba(255,255,255,.94);box-shadow:0 4px 10px #00000010;font-size:9px;font-weight:900;color:#59627b}
.map-key span{display:flex;align-items:center;gap:5px}.key{width:11px;height:11px;border-radius:3px;display:inline-block}.key.available{background:var(--available)}.key.held{background:var(--held)}.key.paid{background:var(--reserved)}.key.premium{background:#fff;border:2px solid var(--premium)}
.island-pad{position:absolute;z-index:0;top:23%;width:24%;height:43%;border:2px dashed rgba(80,92,128,.18);border-radius:26px;background:rgba(255,255,255,.28);box-shadow:inset 0 0 0 8px rgba(255,255,255,.18);pointer-events:none}.island-left{left:20%}.island-right{right:20%}
.premium-pad{position:absolute;z-index:0;bottom:4.5%;height:15.5%;border:1px solid rgba(214,165,42,.35);border-radius:18px;background:linear-gradient(180deg,rgba(255,248,224,.28),rgba(255,255,255,.08));pointer-events:none}.premium-left{left:32%;width:16%}.premium-right{right:15%;width:26%}
.aisle-label{position:absolute;z-index:1;pointer-events:none;font-size:8px;font-weight:1000;letter-spacing:.13em;color:#a19aa1;background:rgba(245,239,229,.72);padding:2px 5px;border-radius:999px}.main-aisle{left:50%;top:46%;transform:translate(-50%,-50%) rotate(90deg)}.side-aisle-left{left:12%;top:49%;transform:rotate(90deg)}.side-aisle-right{right:11%;top:49%;transform:rotate(90deg)}
.checkin{position:absolute;z-index:5;left:46%;bottom:5.5%;width:10%;padding:8px 4px;border:2px solid #e865a5;border-radius:10px;background:#fff7fb;color:#c81f78;font-size:10px;font-weight:1000;text-align:center;box-shadow:0 4px 10px #00000010}
.entrance{position:absolute;z-index:2;bottom:-3px;left:44%;width:12%;height:32px;background:#fff;border:3px solid var(--wall);border-bottom:0;border-radius:12px 12px 0 0}
.entry-label{position:absolute;z-index:7;bottom:3px;left:50%;transform:translateX(-50%);padding:3px 8px;border-radius:8px;background:rgba(245,239,229,.95);color:var(--pink);font-weight:1000;font-size:13px;line-height:1.05;text-align:center;white-space:nowrap}.entry-label small{font-size:8px;color:#6f6b7b}
.table{position:absolute;z-index:3;width:49px;height:24px;transform:translate(-50%,-50%);border-radius:6px;border:2px solid rgba(0,0,0,.18);color:#fff;font-weight:1000;font-size:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;box-shadow:0 3px 7px #0004;transition:.15s ease}
.table.v{width:24px;height:49px}.table:hover{transform:translate(-50%,-50%) scale(1.09);z-index:8}.table.selected{outline:4px solid #17244f;outline-offset:2px;transform:translate(-50%,-50%) scale(1.08)}
.table::before,.table::after{content:"";position:absolute;width:11px;height:7px;background:#2d3037;border-radius:3px;z-index:-1}.table:not(.v)::before{left:6px;top:-9px}.table:not(.v)::after{right:6px;top:-9px}.table.v::before{left:-10px;top:8px}.table.v::after{left:-10px;bottom:8px}
.table[data-group="available"]{background:linear-gradient(180deg,#42b965,var(--available2));border-color:#1d7438}.table[data-group="held"]{background:linear-gradient(180deg,#ebb840,var(--held2));border-color:#986400}.table[data-group="paid"]{background:linear-gradient(180deg,#e95360,var(--reserved2));border-color:#961f2b}.table[data-group="other"]{background:linear-gradient(180deg,#aeb4c2,#858b97);border-color:#737985}
.table[data-tier="premium"]{outline:3px solid var(--premium);outline-offset:2px}.table[data-tier="premium"].selected{outline-color:#17244f;box-shadow:0 0 0 4px var(--premium),0 3px 7px #0004}
.sidebar{display:flex;flex-direction:column;gap:12px}.panel{padding:15px}.panel h3{margin:0 0 10px;color:var(--pink);font-size:15px;text-transform:uppercase;letter-spacing:.04em}.selection{min-height:85px}.selected-list{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.package{margin-top:10px}.chip{background:#eef2ff;border:1px solid #cdd6f7;color:#223b82;padding:7px 9px;border-radius:9px;font-weight:900;cursor:pointer}.selected-chip{background:#e8f8ed;border-color:#b7dfc3;color:#25713b}.primary,.secondary{border:0;border-radius:10px;padding:12px 14px;font-weight:1000;cursor:pointer;width:100%}.primary{background:linear-gradient(135deg,#ef2f92,#ff4caa);color:#fff;margin-top:10px}.primary:disabled{opacity:.4;cursor:not-allowed}.secondary{background:#eef2ff;color:#2b4598;margin-top:8px}
.status-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px}.legend-item{display:flex;align-items:center;gap:8px;font-weight:800}.swatch{width:16px;height:12px;border-radius:3px}.av{background:var(--available)}.held{background:var(--held)}.re{background:var(--reserved)}.premium-outline{background:#fff;border:2px solid var(--premium)}.filter-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px}.kpi{background:#f7f8fd;border:1px solid var(--line);border-radius:12px;padding:10px;text-align:center}.kpi b{font-size:24px;display:block}.kpi span{font-size:10px;color:var(--muted);font-weight:900}.small{font-size:12px;color:var(--muted);line-height:1.45}
.admin{display:none}body.admin-mode .admin{display:block}.admin-row{display:grid;grid-template-columns:44px 1fr;gap:8px;margin:8px 0}.admin-row select,.admin-row input,#adminKey{width:100%;padding:9px;border:1px solid #ccd3e1;border-radius:8px}.admin-message{margin-top:8px}.notice{border-left:4px solid var(--pink);background:#fff4fa;padding:10px;border-radius:8px;font-size:12px}.mobile-tip{display:none}
@media(max-width:1100px){.shell{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:repeat(2,1fr)}.header{grid-template-columns:150px 1fr}.header .badge{display:none}.logo{width:140px;height:72px}.mobile-tip{display:block}}
@media(max-width:650px){.app{padding:7px}.header{grid-template-columns:95px 1fr;gap:8px}.header-actions{display:none}.logo{width:92px;height:58px}.title h1{font-size:22px}.eventline{font-size:11px;gap:7px}.sidebar{grid-template-columns:1fr}.map-card{padding:5px}}
body.embed-mode{background:#fff;overflow:hidden}body.embed-mode .app{max-width:none;margin:0;padding:0}body.embed-mode .header,body.embed-mode .sidebar,body.embed-mode .mobile-tip{display:none!important}body.embed-mode .shell{display:block;margin:0}body.embed-mode .map-card{padding:8px;border:0;border-radius:0;box-shadow:none;overflow:hidden;background:#fff}body.embed-mode .room-wrap{margin:0;transform-origin:top left;width:920px;position:relative}body.embed-mode .room{width:920px;height:876px;box-shadow:0 10px 30px rgba(28,39,76,.12)}

/* v22 — layout follows the supplied table-diagram structure */
.room{height:820px}
.concessions{left:2.5%;top:2.2%;width:22%}
.table-inspector{left:34%;top:2%;width:32%}
.map-key{right:2.3%;top:1.7%;width:25%;grid-template-columns:1fr 1fr}
.island-pad{top:25%;height:42%;border:2px dashed rgba(80,92,128,.18);background:rgba(255,255,255,.26)}
.island-left{left:18%;width:25%}.island-right{right:17%;width:29%}
.premium-pad{display:none}
.main-aisle{left:50%;top:47%}.side-aisle-left{left:12%;top:49%}.side-aisle-right{right:11%;top:49%}
.checkin{left:46%;bottom:4.3%;width:8%;padding:6px 2px}
.entrance{left:44%;width:12%;height:28px}
.entry-label{bottom:1px;font-size:12px}
.entry-label small{font-size:7px}
.door-marker{position:absolute;z-index:5;bottom:1.8%;padding:4px 10px;border-radius:6px;background:#30394f;color:#fff;font-size:9px;font-weight:1000;letter-spacing:.08em}
.door-left{left:18%}.door-right{right:18%}
.clearance-label{position:absolute;z-index:1;color:#8b8291;font-size:8px;font-weight:1000;letter-spacing:.08em;pointer-events:none}
.clearance-top{top:10%;left:50%;transform:translateX(-50%)}
.clearance-left{left:1.2%;top:50%;transform:translateY(-50%) rotate(-90deg)}
.clearance-right{right:-1.5%;top:50%;transform:translateY(-50%) rotate(90deg)}

/* v22 — red = spoken for, green = available */
.table[data-group="available"]{background:linear-gradient(180deg,#42b965,var(--available2));border-color:#1d7438}
.table[data-group="paid"]{background:linear-gradient(180deg,#ee4d58,var(--reserved2));border-color:#961f2b}
.table[data-group="held"]{background:linear-gradient(180deg,#ee4d58,var(--reserved2));border-color:#961f2b}

/* vendor names stay below the floor plan */
.vendor-directory{width:920px;margin:14px 0 0;padding:18px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,#fbfcff,#fff7fb);box-shadow:0 8px 22px #20294b0d}
.vendor-directory-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:14px}
.vendor-directory-head span{display:block;color:var(--pink);font-size:11px;font-weight:1000;letter-spacing:.1em}
.vendor-directory-head h2{margin:3px 0 0;color:var(--ink);font-size:22px;line-height:1.1}
.vendor-directory-head p{max-width:330px;margin:0;color:var(--muted);font-size:12px;line-height:1.45;text-align:right}
.vendor-directory-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.vendor-directory-item{min-width:0;padding:10px 11px;border:1px solid #dfe4f0;border-left:4px solid var(--reserved);border-radius:10px;background:#fff;box-shadow:0 3px 9px #20294b08}
.vendor-directory-item b{display:block;color:#202b55;font-size:12px;line-height:1.25;overflow-wrap:anywhere}
.vendor-directory-item span{display:block;margin-top:4px;color:#75809e;font-size:10px;font-weight:900;letter-spacing:.04em}

body.embed-mode .vendor-directory{display:none!important}
body.embed-mode .room{height:820px}
@media(max-width:1100px){.vendor-directory-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.vendor-directory{padding:13px}.vendor-directory-head{align-items:start;flex-direction:column;gap:5px}.vendor-directory-head p{text-align:left}.vendor-directory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v23 hard refresh */
.table[data-tier="premium"]{outline:none!important;box-shadow:0 3px 7px #0004!important}
.map-key{grid-template-columns:1fr 1fr}
