/* v0.9.1: brand heading serif */
:root { --heading-font: "Cormorant Garamond", Baskerville, Georgia, serif; --script-font: "Great Vibes", cursive; }
:root {
  --bg: #f6f3eb;
  --panel: #fffdf8;
  --panel-strong: #ffffff;
  --text: #2f332f;
  --muted: #5e655e;
  --line: #ddd8ca;
  --accent: #7a8b76;
  --accent-strong: #596b56;
  --accent-soft: #dfe6dc;
  --secondary: #d8c5a2;
  --danger: #a75454;
  --warning: #9a6e2f;
  --shadow: 0 14px 35px rgba(54, 61, 51, .09);
  --radius: 18px;
}

body[data-theme="black"] { --bg:#f3f1ec; --panel:#fffefa; --text:#1e1e1c; --muted:#56544e; --line:#d7d2c8; --accent:#242421; --accent-strong:#0f0f0e; --accent-soft:#deddd8; --secondary:#b8aa8f; }
body[data-theme="blue"] { --bg:#f2f5f6; --panel:#fff; --text:#29363c; --muted:#535f67; --line:#d7e0e4; --accent:#728c9b; --accent-strong:#536d7c; --accent-soft:#dfe9ed; --secondary:#c7b28e; }
body[data-theme="terracotta"] { --bg:#f8f1eb; --panel:#fffaf6; --text:#44332d; --muted:#665750; --line:#ead8cd; --accent:#b56f56; --accent-strong:#8f4f3b; --accent-soft:#f0ddd4; --secondary:#b7a37b; }
body[data-theme="champagne"] { --bg:#f7f3eb; --panel:#fffdf8; --text:#3a342c; --muted:#5f574d; --line:#e5dccd; --accent:#9d8560; --accent-strong:#776242; --accent-soft:#ece2d2; --secondary:#d8c4a3; }

* { box-sizing: border-box; }
html { min-height: 100%; }
body { margin:0; min-height:100%; background:var(--bg); color:var(--text); font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
button, input, select, textarea { font: inherit; }
button { touch-action: manipulation; }
input, select, textarea { width:100%; border:1px solid var(--line); border-radius:12px; background:var(--panel-strong); color:var(--text); padding:12px 13px; outline:none; }
input:focus, select:focus, textarea:focus { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
textarea { resize:vertical; }
label > span, .compact-field > span { display:block; color:var(--muted); font-size:.78rem; font-weight:700; letter-spacing:.03em; margin-bottom:6px; text-transform:uppercase; }

.app-shell { display:grid; grid-template-columns:250px 1fr; grid-template-rows:76px 1fr; min-height:100vh; }
.topbar { grid-column:1 / -1; position:sticky; top:0; z-index:30; height:76px; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:0 24px; background:color-mix(in srgb, var(--panel) 94%, transparent); border-bottom:1px solid var(--line); backdrop-filter:blur(16px); }
.brand-wrap { display:flex; align-items:center; gap:12px; min-width:max-content; }
.brand-mark { width:40px; height:40px; display:grid; place-items:center; border-radius:13px; color:white; background:var(--accent); font-family:var(--heading-font); font-weight:700; }
.brand-name { font-family:var(--heading-font); font-size:1.2rem; font-weight:700; }
.brand-subtitle { color:var(--muted); font-size:.78rem; margin-top:2px; }
.topbar-actions { display:flex; align-items:center; gap:9px; overflow:auto; padding:4px 0; }
.compact-field { min-width:150px; }
.compact-field select { padding:9px 11px; min-height:39px; }

.sidebar { grid-column:1; grid-row:2; position:sticky; top:76px; align-self:start; height:calc(100vh - 76px); display:flex; flex-direction:column; justify-content:space-between; background:var(--panel); border-right:1px solid var(--line); padding:18px 14px; z-index:20; }
.nav-list { display:flex; flex-direction:column; gap:7px; }
.nav-item { border:0; background:transparent; color:var(--muted); display:flex; align-items:center; gap:11px; text-align:left; padding:12px 13px; border-radius:12px; cursor:pointer; font-weight:700; }
.nav-item span { width:26px; color:var(--accent); font-size:.75rem; }
.nav-item:hover { background:var(--accent-soft); color:var(--text); }
.nav-item.active { background:var(--accent); color:#fff; }
.nav-item.active span { color:#fff; }
.sidebar-footer { border-top:1px solid var(--line); padding:14px 10px 0; color:var(--muted); font-size:.77rem; line-height:1.45; }
.save-state { display:flex; align-items:center; gap:8px; color:var(--text); font-weight:700; }
.save-dot { width:8px; height:8px; border-radius:50%; background:#6aa06b; }

.main-content { grid-column:2; grid-row:2; padding:34px; min-width:0; }
.view { display:none; max-width:1460px; margin:0 auto; }
.view.active { display:block; }
.section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:18px; margin-bottom:24px; }
.section-heading h1 { font-family:var(--heading-font); font-size:clamp(2rem, 4vw, 3.2rem); line-height:1; margin:6px 0 8px; font-weight:600; letter-spacing:-.03em; }
.section-heading p { margin:0; color:var(--muted); }
.eyebrow { color:var(--accent) !important; font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.14em; }

.button { border:1px solid transparent; border-radius:12px; min-height:42px; padding:10px 15px; cursor:pointer; font-weight:800; white-space:nowrap; }
.button.primary { background:var(--accent-strong); color:#fff; }
.button.primary:hover { background:var(--accent); }
.button.secondary { background:var(--panel-strong); color:var(--text); border-color:var(--line); }
.button.secondary:hover { border-color:var(--accent); }
.button.danger { background:#fff5f4; color:var(--danger); border-color:#e8c7c4; }
.button.small { min-height:34px; padding:7px 10px; font-size:.82rem; }
.button-row { display:flex; flex-wrap:wrap; gap:9px; }
.icon-button { border:0; background:transparent; font-size:1.4rem; padding:8px; }
.file-button { position:relative; display:inline-flex; align-items:center; }
.file-button input { position:absolute; inset:0; opacity:0; cursor:pointer; }

.card { background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:22px; box-shadow:var(--shadow); }
.card-hint { font-size:.85rem; color:var(--muted); margin:-.2rem 0 .6rem; }
.card h2 { margin:0 0 18px; font-family:var(--heading-font); font-size:1.35rem; }
.card h3 { margin:0 0 10px; }
.card-grid { display:grid; gap:20px; }
.card-grid.two-columns { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.form-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:15px; }
.form-grid .full { grid-column:1/-1; }

.stats-grid { display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:14px; margin:20px 0; }
.stat-card { background:var(--panel); border:1px solid var(--line); border-radius:15px; padding:16px; }
.stat-card .label { color:var(--muted); font-size:.75rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.stat-card .value { font-family:var(--heading-font); font-size:1.8rem; margin-top:5px; }
.stat-card .hint { color:var(--muted); font-size:.78rem; margin-top:4px; }

.guest-add-card, .table-add-card { margin-bottom:18px; }
.guest-add-row { display:grid; grid-template-columns:1.1fr 1fr 1fr auto; align-items:end; gap:12px; }
.table-add-row { display:grid; grid-template-columns:1.2fr 1fr .55fr auto; align-items:end; gap:12px; }
details { margin-top:17px; border-top:1px solid var(--line); padding-top:14px; }
summary { cursor:pointer; font-weight:800; }
.helper-text { color:var(--muted); font-size:.85rem; }
.toolbar-row { display:flex; align-items:end; gap:12px; margin:14px 0; }
.search-input { max-width:500px; }

.table-wrap { overflow:auto; border:1px solid var(--line); border-radius:15px; background:var(--panel); }
.data-table { width:100%; border-collapse:collapse; min-width:980px; }
.data-table th { position:sticky; top:0; background:var(--accent-soft); color:var(--text); text-align:left; padding:12px; font-size:.75rem; text-transform:uppercase; letter-spacing:.05em; z-index:1; }
.data-table td { padding:9px 10px; border-top:1px solid var(--line); vertical-align:middle; }
.data-table td input, .data-table td select { padding:9px 10px; min-width:120px; }
.empty-state { display:none; border:1px dashed var(--line); border-radius:15px; padding:30px; text-align:center; color:var(--muted); background:var(--panel); }
.empty-state.visible { display:block; }

.table-card-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:15px; }
.table-card { background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:17px; }
.table-card-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.table-card h3 { margin:0; font-family:var(--heading-font); font-size:1.2rem; }
.table-shape-chip { padding:5px 8px; border-radius:999px; background:var(--accent-soft); color:var(--accent-strong); font-size:.72rem; font-weight:800; text-transform:uppercase; }
.table-card-fields { display:grid; grid-template-columns:1.2fr .65fr; gap:10px; margin:14px 0; }
.capacity-meter { height:7px; border-radius:999px; background:var(--line); overflow:hidden; }
.capacity-meter > span { display:block; height:100%; background:var(--accent); }
.capacity-meter.over > span { background:var(--danger); }
.table-card-footer { display:flex; justify-content:space-between; align-items:center; margin-top:11px; color:var(--muted); font-size:.8rem; }

.floor-layout { display:grid; grid-template-columns:230px minmax(0,1fr); gap:16px; align-items:start; }
.fixture-panel { position:sticky; top:94px; box-shadow:none; }
.fixture-buttons { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.fixture-buttons button { border:1px solid var(--line); background:var(--panel-strong); border-radius:10px; padding:10px 8px; cursor:pointer; font-size:.8rem; font-weight:700; }
.fixture-buttons button:hover { border-color:var(--accent); background:var(--accent-soft); }
.selection-panel { margin-top:18px; border-top:1px solid var(--line); padding-top:15px; color:var(--muted); font-size:.84rem; }
.selection-controls { display:grid; gap:10px; }
.selection-button-row { display:flex; gap:8px; }
.floor-stage-wrap { overflow:auto; border-radius:18px; box-shadow:var(--shadow); background:#d7d1c5; padding:18px; }
.floor-stage { position:relative; width:min(1120px, 100%); aspect-ratio:14/9; min-width:720px; margin:0 auto; border:3px solid var(--accent); border-radius:18px; background-color:var(--panel-strong); background-image:linear-gradient(var(--line) 1px, transparent 1px),linear-gradient(90deg, var(--line) 1px, transparent 1px); background-size:32px 32px; overflow:hidden; touch-action:none; }
.floor-label { position:absolute; left:50%; top:14px; transform:translateX(-50%); padding:6px 12px; border-radius:999px; background:var(--panel); border:1px solid var(--line); font-size:.78rem; color:var(--muted); pointer-events:none; z-index:1; }
.floor-item { position:absolute; transform:translate(-50%, -50%); user-select:none; touch-action:none; cursor:grab; display:grid; place-items:center; text-align:center; border:2px solid var(--accent); background:color-mix(in srgb, var(--accent-soft) 70%, white); box-shadow:0 5px 12px rgba(50,50,45,.12); color:var(--text); font-size:.72rem; font-weight:800; line-height:1.15; padding:5px; z-index:3; }
.floor-item:active { cursor:grabbing; }
.floor-item.selected { outline:4px solid color-mix(in srgb, var(--accent) 30%, transparent); z-index:5; }
.floor-item.round { width:82px; height:82px; border-radius:50%; }
.floor-item.square { width:82px; height:82px; border-radius:12px; }
.floor-item.rectangle { width:132px; height:70px; border-radius:13px; }
.floor-item.oval { width:130px; height:76px; border-radius:50%; }
.floor-item.head { width:180px; height:64px; border-radius:12px; }
.floor-item.sweetheart { width:100px; height:60px; border-radius:40px; }
.floor-item.cocktail { width:60px; height:60px; border-radius:50%; }
.floor-item.fixture { border-style:dashed; background:color-mix(in srgb, var(--secondary) 25%, white); border-color:var(--secondary); }
.floor-item.fixture.dance { width:180px; height:125px; border-radius:12px; }
.floor-item.fixture.bar { width:150px; height:54px; border-radius:12px; }
.floor-item.fixture.stage, .floor-item.fixture.buffet { width:165px; height:62px; border-radius:12px; }
.floor-item.fixture.cake, .floor-item.fixture.photo, .floor-item.fixture.gifts { width:90px; height:70px; border-radius:12px; }
.floor-item.fixture.entrance, .floor-item.fixture.exit { width:92px; height:42px; border-radius:999px; }

.warning-list { display:grid; gap:8px; margin:14px 0 20px; }
.warning { border:1px solid #ead2aa; background:#fff8eb; color:#735323; border-radius:12px; padding:11px 13px; }
.warning.danger { border-color:#e5c4c1; background:#fff5f4; color:#7b3737; }
.seating-chart-output { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:15px; }
.chart-title-card { grid-column:1/-1; text-align:center; padding:24px; border-bottom:2px solid var(--accent); }
.chart-title-card h2 { font-family:var(--heading-font); font-size:2rem; margin:0 0 6px; }
.chart-title-card p { color:var(--muted); margin:0; }
.chart-table-card { break-inside:avoid; background:var(--panel); border:1px solid var(--line); border-radius:15px; padding:16px; }
.chart-table-card h3 { font-family:var(--heading-font); font-size:1.25rem; margin:0 0 5px; }
.chart-table-meta { color:var(--muted); font-size:.78rem; margin-bottom:10px; }
.chart-guest-list { margin:0; padding-left:20px; line-height:1.7; }
.alpha-grid { grid-column:1/-1; columns:3 260px; column-gap:25px; }
.alpha-row { break-inside:avoid; display:flex; justify-content:space-between; gap:12px; padding:6px 0; border-bottom:1px dotted var(--line); }
.alpha-row strong { font-weight:700; }
.chart-header { text-align:center; margin-bottom:20px; }
.print-only { display:none; }
.steps { padding-left:20px; line-height:1.8; }
.toast { position:fixed; right:20px; bottom:20px; z-index:100; background:var(--text); color:var(--panel); padding:12px 16px; border-radius:12px; opacity:0; transform:translateY(15px); pointer-events:none; transition:.22s ease; box-shadow:var(--shadow); }
.toast.show { opacity:1; transform:none; }
.mobile-only { display:none; }

@media (max-width: 1120px) {
  .topbar { align-items:flex-start; height:auto; min-height:76px; padding:12px 16px; }
  .topbar-actions { width:100%; }
  .app-shell { grid-template-rows:auto 1fr; }
  .sidebar { top:92px; height:calc(100vh - 92px); }
  .main-content { padding:25px; }
  .stats-grid { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .table-card-grid, .seating-chart-output { grid-template-columns:repeat(2, minmax(0,1fr)); }
}

@media (max-width: 820px) {
  .app-shell { display:block; }
  .topbar { position:sticky; display:block; }
  .brand-wrap { margin-bottom:9px; }
  .brand-subtitle { display:none; }
  .topbar-actions { gap:7px; }
  .topbar-actions .compact-field { min-width:135px; }
  .topbar-actions .button { padding:9px 11px; font-size:.82rem; }
  .sidebar { position:fixed; top:0; left:0; width:270px; height:100vh; transform:translateX(-105%); transition:.22s ease; box-shadow:var(--shadow); z-index:80; }
  .sidebar.open { transform:none; }
  .main-content { padding:22px 15px 50px; }
  .mobile-only { display:inline-block; }
  .section-heading { align-items:flex-start; flex-direction:column; }
  .section-heading h1 { font-size:2.25rem; }
  .card-grid.two-columns, .table-card-grid, .seating-chart-output { grid-template-columns:1fr; }
  .form-grid { grid-template-columns:1fr; }
  .form-grid .full { grid-column:auto; }
  .guest-add-row, .table-add-row { grid-template-columns:1fr; }
  .toolbar-row { align-items:stretch; flex-direction:column; }
  .search-input { max-width:none; }
  .floor-layout { grid-template-columns:1fr; }
  .fixture-panel { position:static; }
  .fixture-buttons { grid-template-columns:repeat(3,1fr); }
  .alpha-grid { columns:1; }
}

@media (max-width: 520px) {
  .topbar-actions #installButton, .topbar-actions .file-button { display:none; }
  .topbar-actions { flex-wrap:wrap; overflow:visible; padding-bottom:7px; }
  .stats-grid { grid-template-columns:1fr 1fr; }
  .fixture-buttons { grid-template-columns:1fr 1fr; }
  .card { padding:17px; }
  .floor-stage-wrap { padding:8px; overflow:hidden; }
  .floor-stage { width:100%; min-width:0; border-radius:13px; background-size:20px 20px; }
  .floor-label { top:6px; max-width:80%; padding:3px 7px; font-size:.56rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .floor-item { padding:2px; font-size:.52rem; border-width:1.5px; }
  .floor-item.round, .floor-item.square { width:46px; height:46px; }
  .floor-item.rectangle { width:74px; height:40px; }
  .floor-item.oval { width:72px; height:42px; }
  .floor-item.head { width:100px; height:38px; }
  .floor-item.sweetheart { width:60px; height:36px; }
  .floor-item.cocktail { width:36px; height:36px; }
  .floor-item.fixture.dance { width:92px; height:65px; }
  .floor-item.fixture.bar { width:82px; height:34px; }
  .floor-item.fixture.stage, .floor-item.fixture.buffet { width:88px; height:36px; }
  .floor-item.fixture.cake, .floor-item.fixture.photo, .floor-item.fixture.gifts { width:52px; height:42px; }
  .floor-item.fixture.entrance, .floor-item.fixture.exit { width:60px; height:28px; }
}

@media print {
  @page { margin:12mm; }
  body { background:white !important; color:#111 !important; }
  .topbar, .sidebar, .no-print-hide, .toast { display:none !important; }
  .app-shell, .main-content { display:block !important; padding:0 !important; }
  .view { display:none !important; max-width:none !important; }
  #view-chart.active, body.print-floor #view-floor.active { display:block !important; }
  .print-only { display:block !important; }
  .seating-chart-output { grid-template-columns:repeat(3,1fr); gap:9mm; }
  .chart-table-card { box-shadow:none; border:1px solid #aaa; background:white; }
  .chart-title-card { padding-top:0; }
  .floor-layout { display:block; }
  .fixture-panel { display:none; }
  .floor-stage-wrap { background:white; padding:0; box-shadow:none; overflow:visible; }
  .floor-stage { width:100%; min-width:0; border-color:#555; background-size:24px 24px; }
}

/* ArrangeMyGuests refined staging UI */
:root {
  --bg:#f8f6f1; --panel:#fffdf9; --text:#343735; --muted:#7b7f7a;
  --line:#dedfd9; --accent:#83917d; --accent-strong:#687562;
  --accent-soft:#edf0e9; --secondary:#b5a890;
  --shadow:0 12px 35px rgba(52,55,53,.07);
}
body[data-theme="modern"] {
  --bg:#f7f7f5; --panel:#ffffff; --text:#2f3333; --muted:#747979;
  --line:#dfe2df; --accent:#616967; --accent-strong:#424947;
  --accent-soft:#eff1ef; --secondary:#aaa79f;
}
body { font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-weight:400; letter-spacing:.005em; }
h1,h2,h3 { font-family: var(--heading-font); font-weight:400; letter-spacing:-.018em; }
h1 { font-size:clamp(1.65rem,2.7vw,2.35rem); }
h2 { font-size:1.22rem; }
.topbar { min-height:92px; height:auto; padding:12px 22px; display:grid; grid-template-columns:minmax(230px,320px) minmax(170px,240px) 1fr; align-items:center; gap:24px; }
.brand-wrap { min-width:0; }
.brand-logo { display:block; width:min(300px,100%); height:58px; object-fit:contain; object-position:left center; }
.event-switcher-wrap { display:flex; flex-direction:column; gap:5px; min-width:0; }
.event-switcher-wrap label,.toolbar-label { font-size:.67rem; text-transform:uppercase; letter-spacing:.13em; color:var(--muted); }
.event-switcher-wrap select,.theme-group select { min-height:39px; border:1px solid var(--line); border-radius:10px; background:var(--panel); color:var(--text); padding:8px 34px 8px 12px; font-size:.88rem; font-weight:400; }
.topbar-tools { display:flex; align-items:end; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
.theme-group { display:flex; flex-direction:column; gap:5px; min-width:155px; }
.button { font-weight:500; font-size:.84rem; border-radius:10px; box-shadow:none; }
.button.primary { background:var(--accent-strong); }
.sidebar { top:92px; height:calc(100vh - 92px); padding-top:22px; }
.nav-item { font-size:.88rem; font-weight:400; border-radius:10px; padding:11px 12px; }
.nav-item span { color:var(--accent); font-size:.9rem; min-width:22px; }
.card { border-radius:14px; box-shadow:0 6px 22px rgba(52,55,53,.045); }
.floor-layout { grid-template-columns:minmax(0,1fr) 240px; }
.fixture-panel { grid-column:2; grid-row:1; }
.floor-stage-wrap { grid-column:1; grid-row:1; }
.fixture-buttons button { text-align:left; font-weight:400; border-radius:10px; }

.floor-item.lounge { width:118px; height:58px; border-radius:14px; }
.floor-item.podium { width:62px; height:45px; }
.floor-item.screen { width:130px; height:38px; border-radius:5px; }
@media (max-width:1050px){.topbar{grid-template-columns:240px 190px 1fr;gap:12px}.brand-logo{height:50px}.topbar-tools{justify-content:flex-start}}
@media (max-width:820px){.topbar{display:grid;grid-template-columns:1fr;gap:10px;padding:10px 14px}.brand-logo{width:250px;height:48px}.event-switcher-wrap{display:none}.topbar-tools{width:100%;overflow:auto;flex-wrap:nowrap;align-items:end}.sidebar{top:0;height:100vh}.floor-layout{grid-template-columns:1fr}.fixture-panel,.floor-stage-wrap{grid-column:1}.fixture-panel{grid-row:1}.floor-stage-wrap{grid-row:2}}


/* v0.3 typography and navigation refinements */
:root {
  --heading-font: "Cormorant Garamond", Baskerville, "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
}
.section-heading h1 {
  font-family:var(--heading-font);
  font-size:clamp(1.9rem,3vw,2.65rem);
  line-height:1.06;
  font-weight:400;
  letter-spacing:-.025em;
  color:#3d423f;
  margin:5px 0 8px;
}
.card h2,
.fixture-panel h2,
.selection-panel h3,
.table-card h3,
.chart-title-card h2,
.chart-table-card h3 {
  font-family:var(--heading-font);
  font-weight:400;
  color:#414642;
  letter-spacing:-.012em;
}
.card h2,.fixture-panel h2 { font-size:1.22rem; }
.selection-panel h3,.table-card h3,.chart-table-card h3 { font-size:1.08rem; }
.chart-title-card h2 { font-size:1.7rem; }
.eyebrow { font-weight:600; }
.nav-item {
  gap:13px;
  min-height:50px;
  padding:11px 13px;
  font-size:.92rem;
  line-height:1.2;
}
.nav-item .nav-icon {
  width:27px;
  min-width:27px;
  height:27px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--accent-strong);
}
.nav-item .nav-icon svg {
  width:24px;
  height:24px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.65;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.nav-item .nav-label { width:auto; color:inherit; font-size:inherit; }
.nav-item.active .nav-icon { color:#fff; }
.floor-item.fixture { font-weight:600; }
@media (max-width:820px) {
  .section-heading h1 { font-size:2.05rem; }
  .nav-item { min-height:52px; font-size:.96rem; }
  .nav-item .nav-icon { width:29px; min-width:29px; height:29px; }
  .nav-item .nav-icon svg { width:26px; height:26px; }
}

/* v0.4 unified interface typography */
:root {
  --ui-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}

/* Use one clean interface family for navigation, labels and working content. */
body,
button,
input,
select,
textarea,
.nav-item,
.card h2,
.fixture-panel h2,
.selection-panel h3,
.table-card h3,
.chart-table-card h3,
.chart-table-meta,
.chart-guest-list,
.alpha-grid,
.stat-card,
.helper-text {
  font-family:var(--ui-font);
}

/* Reserve the classic serif for true display headings only. */
.section-heading h1,
.chart-title-card h2,
.print-chart-header h1 {
  font-family:var(--heading-font);
}

.card h2,
.fixture-panel h2 {
  font-size:1rem;
  font-weight:500;
  letter-spacing:0;
  line-height:1.35;
}

.selection-panel h3,
.table-card h3,
.chart-table-card h3 {
  font-size:.96rem;
  font-weight:500;
  letter-spacing:0;
  line-height:1.35;
  color:var(--text);
}

.chart-table-card h3 {
  margin-bottom:6px;
}

.chart-guest-list {
  font-size:.92rem;
  line-height:1.72;
}

.chart-table-meta {
  font-family:var(--ui-font);
  font-size:.78rem;
  letter-spacing:0;
}

.stat-card .value {
  font-family:var(--ui-font);
  font-weight:400;
  letter-spacing:-.02em;
}

/* v0.5 approved typography system: Montserrat + Raleway */
:root {
  --ui-font: "Montserrat", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  --heading-font: "Raleway", "Montserrat", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
}

/* Core interface and readable working content */
body,
button,
input,
select,
textarea,
.nav-item,
.nav-label,
.sidebar-footer,
.helper-text,
.chart-table-meta,
.chart-guest-list,
.alpha-grid,
.stat-card,
.data-table,
.table-card-footer,
.fixture-buttons button,
.selection-panel,
.steps,
p,
li {
  font-family:var(--ui-font);
}

body {
  font-weight:400;
  letter-spacing:0;
}

/* Clean navigation and controls */
.nav-item,
.button,
.event-switcher-wrap select,
.theme-group select {
  font-family:var(--ui-font);
  font-weight:500;
}

/* Labels use restrained emphasis rather than bold blocks */
label > span,
.compact-field > span,
.event-switcher-wrap label,
.toolbar-label,
.eyebrow,
.stat-card .label,
.data-table th,
.table-shape-chip {
  font-family:var(--ui-font);
  font-weight:600;
}

/* Raleway provides the elegant display layer */
.section-heading h1,
.chart-title-card h2,
.print-chart-header h1,
.card h2,
.fixture-panel h2,
.selection-panel h3,
.table-card h3,
.chart-table-card h3 {
  font-family:var(--heading-font);
}

.section-heading h1,
.chart-title-card h2,
.print-chart-header h1 {
  font-weight:400;
  letter-spacing:-.025em;
}

.card h2,
.fixture-panel h2,
.selection-panel h3,
.table-card h3,
.chart-table-card h3 {
  font-weight:500;
  letter-spacing:-.01em;
}

/* Keep table titles distinct but close in character to guest names. */
.chart-table-card h3,
.table-card h3 {
  font-size:.98rem;
  line-height:1.35;
}

.chart-guest-list {
  font-weight:400;
  letter-spacing:0;
}

.stat-card .value {
  font-family:var(--ui-font);
  font-weight:400;
}


/* v0.6 header alignment, logo visibility and print corrections */
:root {
  --topbar-height: 104px;
}

.app-shell {
  grid-template-rows: var(--topbar-height) 1fr;
}

.topbar {
  height: var(--topbar-height);
  min-height: var(--topbar-height);
  padding: 14px 24px;
  display: grid;
  grid-template-columns: minmax(270px, 320px) minmax(210px, 250px) minmax(0, 1fr);
  align-items: end;
  gap: clamp(14px, 1.5vw, 22px);
  overflow: visible;
}

.brand-wrap {
  align-self: center;
  min-width: 0;
  height: 70px;
  overflow: visible;
}

.brand-logo {
  display: block;
  width: 100%;
  max-width: 320px;
  height: 70px;
  object-fit: contain;
  object-position: left center;
}

.event-switcher-wrap,
.theme-group {
  min-width: 0;
  width: 100%;
}

.event-switcher-wrap label,
.toolbar-label {
  display: block;
  min-height: 16px;
  margin: 0 0 6px;
  line-height: 1;
}

.event-switcher-wrap select,
.theme-group select,
.topbar .button,
.topbar .file-button {
  min-height: 48px;
  height: 48px;
  border-radius: 11px;
}

.event-switcher-wrap select,
.theme-group select {
  width: 100%;
  padding: 10px 38px 10px 14px;
}

.topbar-tools {
  display: grid;
  grid-template-columns: minmax(160px, 190px) max-content max-content max-content;
  align-items: end;
  justify-content: end;
  gap: 10px;
  min-width: 0;
  width: 100%;
}

.topbar .button,
.topbar .file-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 13px;
  font-size: .8rem;
  line-height: 1.15;
}

#printChartButton {
  min-width: 160px;
}

.sidebar {
  top: var(--topbar-height);
  height: calc(100vh - var(--topbar-height));
}

.help-install-button {
  margin-top: 14px;
}

@media (max-width: 1320px) {
  :root { --topbar-height: 166px; }

  .topbar {
    grid-template-columns: minmax(280px, 360px) minmax(240px, 1fr);
    grid-template-rows: 72px 56px;
    align-items: center;
    row-gap: 10px;
  }

  .brand-wrap { grid-column: 1; grid-row: 1; }
  .event-switcher-wrap { grid-column: 2; grid-row: 1; align-self: end; }
  .topbar-tools {
    grid-column: 1 / -1;
    grid-row: 2;
    grid-template-columns: minmax(190px, 240px) repeat(3, max-content);
    justify-content: end;
  }
}

@media (max-width: 900px) {
  :root { --topbar-height: 0px; }

  .app-shell { display: block; }
  .topbar {
    position: sticky;
    height: auto;
    min-height: 0;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    gap: 10px;
    padding: 10px 14px 12px;
  }
  .brand-wrap,
  .event-switcher-wrap,
  .topbar-tools {
    grid-column: 1;
    grid-row: auto;
  }
  .brand-wrap { height: 58px; margin: 0; }
  .brand-logo { width: min(310px, 88vw); max-width: 100%; height: 58px; }
  .event-switcher-wrap { display: flex; }
  .topbar-tools {
    display: grid;
    grid-template-columns: minmax(150px, 1fr) repeat(3, max-content);
    overflow-x: auto;
    justify-content: start;
    padding-bottom: 2px;
  }
  .sidebar { top: 0; height: 100vh; }
}

@media (max-width: 620px) {
  .event-switcher-wrap { display: none; }
  .topbar-tools {
    grid-template-columns: minmax(145px, 1fr) repeat(3, max-content);
  }
  .topbar .button,
  .topbar .file-button {
    min-height: 44px;
    height: 44px;
    padding: 9px 12px;
    font-size: .78rem;
  }
  #printChartButton { min-width: 150px; }
}

@media print {
  .chart-title-card {
    display: none !important;
  }

  .print-chart-header {
    display: block !important;
    text-align: center;
    margin: 0 0 7mm;
    padding: 0 0 5mm;
    border-bottom: 1.5px solid #6d786a;
  }

  .print-chart-header h1 {
    margin: 0 0 2mm;
    font-family: "Raleway", "Montserrat", Arial, sans-serif;
    font-size: 22pt;
    font-weight: 500;
    letter-spacing: -.02em;
    line-height: 1.1;
  }

  .print-chart-header p {
    margin: 0;
    font-family: "Montserrat", Arial, sans-serif;
    font-size: 10.5pt;
    line-height: 1.35;
    color: #4d514e !important;
  }

  .seating-chart-output {
    padding-top: 0;
  }
}


/* v0.7 responsive toolbar: event selector removed, controls aligned */
:root {
  --topbar-height: 96px;
  --control-height: 48px;
}

.app-shell {
  grid-template-rows: var(--topbar-height) 1fr;
}

.topbar {
  height: var(--topbar-height);
  min-height: var(--topbar-height);
  padding: 12px clamp(18px, 2.2vw, 34px);
  display: grid;
  grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
  align-items: center;
  gap: clamp(20px, 3vw, 52px);
  background: color-mix(in srgb, var(--panel) 96%, transparent);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
  overflow: visible;
}

.brand-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  height: 72px;
  overflow: visible;
}

.brand-logo {
  display: block;
  width: min(340px, 100%);
  max-width: 100%;
  height: 72px;
  object-fit: contain;
  object-position: left center;
}

.topbar-tools {
  display: grid;
  grid-template-columns: minmax(176px, 220px) minmax(148px, max-content) minmax(148px, max-content) minmax(172px, max-content);
  align-items: end;
  justify-content: end;
  gap: clamp(8px, 1vw, 14px);
  width: 100%;
  min-width: 0;
}

.theme-group {
  display: grid;
  grid-template-rows: 16px var(--control-height);
  gap: 6px;
  width: 100%;
  min-width: 0;
  align-self: end;
}

.toolbar-label {
  display: flex;
  align-items: center;
  min-height: 16px;
  margin: 0;
  line-height: 1;
  font-family: var(--ui-font);
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
}

.theme-group select,
.topbar .topbar-action {
  height: var(--control-height);
  min-height: var(--control-height);
  border-radius: 11px;
}

.theme-group select {
  width: 100%;
  padding: 10px 38px 10px 14px;
  font-family: var(--ui-font);
  font-size: .88rem;
  font-weight: 500;
}

.topbar .topbar-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  width: 100%;
  padding: 10px 14px;
  font-size: .8rem;
  line-height: 1.15;
  white-space: nowrap;
}

.button-icon,
.menu-toggle svg {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.file-button input {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
}

.sidebar {
  top: var(--topbar-height);
  height: calc(100vh - var(--topbar-height));
}

/* Compact desktop and tablet: logo gets its own row, controls stay aligned. */
@media (max-width: 1180px) {
  :root { --topbar-height: 174px; }

  .topbar {
    grid-template-columns: 1fr;
    grid-template-rows: 68px 70px;
    gap: 10px;
    padding: 10px 20px 14px;
  }

  .brand-wrap {
    grid-row: 1;
    height: 68px;
  }

  .brand-logo {
    height: 66px;
    width: min(330px, 100%);
  }

  .topbar-tools {
    grid-row: 2;
    grid-template-columns: minmax(176px, 1fr) repeat(2, minmax(145px, 180px)) minmax(170px, 205px);
    justify-content: stretch;
  }
}

/* Phones and portrait tablets: deliberate stacked toolbar, no horizontal scrolling. */
@media (max-width: 900px) {
  :root { --topbar-height: 0px; --control-height: 48px; }

  .app-shell { display: block; }

  .topbar {
    position: sticky;
    top: 0;
    z-index: 70;
    height: auto;
    min-height: 0;
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto auto;
    gap: 10px;
    padding: max(8px, env(safe-area-inset-top)) 12px 12px;
  }

  .brand-wrap {
    height: 58px;
    justify-content: flex-start;
  }

  .brand-logo {
    width: min(300px, calc(100vw - 76px));
    height: 58px;
  }

  .menu-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 10px;
    color: var(--text);
    background: var(--panel-strong);
  }

  .topbar-tools {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-template-areas:
      "theme theme theme"
      "export import print";
    gap: 8px;
    width: 100%;
    overflow: visible;
  }

  .theme-group { grid-area: theme; }
  #exportProjectButton { grid-area: export; }
  .file-button { grid-area: import; }
  #printChartButton { grid-area: print; }

  .topbar .topbar-action {
    min-width: 0;
    padding: 10px 8px;
    font-size: .75rem;
  }

  .topbar .topbar-action .button-icon {
    width: 19px;
    height: 19px;
    flex-basis: 19px;
  }

  .sidebar {
    top: 0;
    height: 100dvh;
  }
}

@media (max-width: 620px) {
  .topbar-tools {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas:
      "theme theme"
      "export import"
      "print print";
  }

  .topbar .topbar-action {
    min-height: 48px;
    height: 48px;
    font-size: .79rem;
  }
}

@media (max-width: 390px) {
  .brand-logo {
    width: calc(100vw - 72px);
    height: 54px;
  }

  .topbar {
    padding-left: 8px;
    padding-right: 8px;
  }

  .topbar-tools {
    grid-template-columns: 1fr;
    grid-template-areas:
      "theme"
      "export"
      "import"
      "print";
  }
}

@media print {
  .topbar { display: none !important; }
}

/* v0.8 structural header rebuild
   The header participates in normal document flow so it can never overlap page content.
   Explicit breakpoint layouts prevent implicit grid wrapping at browser zoom levels. */
:root {
  --amg-header-height: 112px;
  --amg-control-height: 48px;
}

.app-shell {
  display: grid;
  grid-template-columns: 250px minmax(0, 1fr);
  grid-template-rows: auto minmax(0, 1fr);
  min-height: 100vh;
}

.topbar {
  grid-column: 1 / -1;
  grid-row: 1;
  position: sticky;
  top: 0;
  z-index: 70;
  width: 100%;
  height: auto;
  min-height: var(--amg-header-height);
  padding: 16px clamp(20px, 2.5vw, 40px);
  display: grid;
  grid-template-columns: minmax(300px, 420px) minmax(680px, 1fr);
  align-items: center;
  column-gap: clamp(24px, 3vw, 56px);
  row-gap: 0;
  overflow: visible;
  background: color-mix(in srgb, var(--panel) 98%, transparent);
  border-bottom: 1px solid var(--line);
  -webkit-backdrop-filter: blur(16px);
  backdrop-filter: blur(16px);
}

.brand-wrap {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  min-width: 0;
  height: 78px;
  margin: 0;
  overflow: visible;
}

.brand-logo {
  display: block;
  width: min(390px, 100%);
  max-width: 100%;
  height: 78px;
  object-fit: contain;
  object-position: left center;
}

.topbar-tools {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(168px, max-content) minmax(168px, max-content) minmax(190px, max-content);
  align-items: end;
  justify-content: end;
  gap: clamp(10px, 1vw, 16px);
  width: 100%;
  min-width: 0;
  overflow: visible;
}

.theme-group {
  display: grid;
  grid-template-rows: 16px var(--amg-control-height);
  gap: 7px;
  width: 100%;
  min-width: 0;
  margin: 0;
  align-self: end;
}

.toolbar-label {
  display: flex;
  align-items: center;
  min-height: 16px;
  margin: 0;
  padding: 0;
  line-height: 1;
  font-family: var(--ui-font);
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
}

.theme-group select,
.topbar .topbar-action {
  box-sizing: border-box;
  width: 100%;
  height: var(--amg-control-height);
  min-height: var(--amg-control-height);
  margin: 0;
  border-radius: 11px;
}

.theme-group select {
  padding: 10px 38px 10px 14px;
  font-family: var(--ui-font);
  font-size: .88rem;
  font-weight: 500;
}

.topbar .topbar-action {
  align-self: end;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-width: 0;
  padding: 10px 15px;
  font-size: .8rem;
  line-height: 1.15;
  white-space: nowrap;
}

.sidebar {
  grid-column: 1;
  grid-row: 2;
  position: sticky;
  top: var(--amg-header-height);
  height: calc(100dvh - var(--amg-header-height));
}

.main-content {
  grid-column: 2;
  grid-row: 2;
  min-width: 0;
}

/* Compact desktop and landscape tablet: the logo receives a dedicated row.
   The toolbar remains a single aligned row beneath it. */
@media (max-width: 1399px) {
  :root { --amg-header-height: 190px; }

  .topbar {
    min-height: var(--amg-header-height);
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: 76px 76px;
    align-items: center;
    gap: 10px;
    padding: 12px clamp(18px, 2.5vw, 30px) 16px;
  }

  .brand-wrap {
    grid-row: 1;
    height: 76px;
  }

  .brand-logo {
    width: min(370px, 100%);
    height: 74px;
  }

  .topbar-tools {
    grid-row: 2;
    grid-template-columns: minmax(190px, 1fr) repeat(2, minmax(160px, 190px)) minmax(190px, 220px);
    justify-content: stretch;
    align-items: end;
  }
}

/* Portrait tablets and phones: header stays in normal flow and becomes touch-friendly. */
@media (max-width: 900px) {
  :root { --amg-header-height: 0px; --amg-control-height: 48px; }

  .app-shell {
    display: block;
    min-height: 100vh;
  }

  .topbar {
    position: sticky;
    top: 0;
    z-index: 70;
    width: 100%;
    min-height: 0;
    height: auto;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto;
    gap: 10px;
    padding: max(8px, env(safe-area-inset-top)) 12px 12px;
  }

  .brand-wrap {
    grid-row: 1;
    height: 58px;
    margin: 0;
    justify-content: flex-start;
  }

  .brand-logo {
    width: min(305px, calc(100vw - 78px));
    height: 58px;
  }

  .menu-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    min-width: 44px;
    padding: 10px;
    border: 1px solid var(--line);
    border-radius: 10px;
    color: var(--text);
    background: var(--panel-strong);
  }

  .topbar-tools {
    grid-row: 2;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-template-areas:
      "theme theme theme"
      "export import print";
    gap: 8px;
    width: 100%;
    overflow: visible;
  }

  .theme-group { grid-area: theme; }
  #exportProjectButton { grid-area: export; }
  .file-button { grid-area: import; }
  #printChartButton { grid-area: print; }

  .topbar .topbar-action {
    min-width: 0;
    padding: 10px 8px;
    font-size: .75rem;
  }

  .sidebar {
    position: fixed;
    top: 0;
    left: 0;
    width: 270px;
    height: 100dvh;
  }

  .main-content {
    min-width: 0;
  }
}

@media (max-width: 620px) {
  .topbar-tools {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-areas:
      "theme theme"
      "export import"
      "print print";
  }

  .topbar .topbar-action {
    height: 48px;
    min-height: 48px;
    font-size: .79rem;
  }
}

@media (max-width: 390px) {
  .topbar {
    padding-left: 8px;
    padding-right: 8px;
  }

  .brand-logo {
    width: calc(100vw - 72px);
    height: 54px;
  }

  .topbar-tools {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "theme"
      "export"
      "import"
      "print";
  }
}

@media print {
  .topbar { display: none !important; }
}

/* v0.8 polish: keep toolbar tiles balanced and prevent the import label from inheriting form-label uppercase styling. */
@media (min-width: 1400px) {
  .topbar-tools {
    grid-template-columns: minmax(190px, 230px) minmax(168px, max-content) minmax(168px, max-content) minmax(190px, max-content);
    justify-content: end;
  }
}

@media (min-width: 901px) and (max-width: 1399px) {
  .topbar-tools {
    grid-template-columns: minmax(210px, 260px) repeat(2, minmax(160px, 190px)) minmax(190px, 220px);
    justify-content: end;
  }
}

.topbar .file-button > span {
  display: inline;
  width: auto;
  color: inherit;
  font-size: inherit;
  font-weight: 500;
  letter-spacing: 0;
  line-height: inherit;
  margin: 0;
  text-transform: none;
}


/* v0.9 responsive floor plan, visual seats, unit selector and print reliability */
.action-label-short { display:none; }

/* Visual seat markers around each table. Assigned seats show guest initials. */
.floor-item.table-item { overflow:visible; }
.floor-item .table-label {
  position:relative;
  z-index:3;
  display:block;
  pointer-events:none;
}
.floor-item .table-label small { font-size:.82em; }
.table-seat {
  position:absolute;
  left:var(--seat-x);
  top:var(--seat-y);
  width:22px;
  height:22px;
  transform:translate(-50%,-50%) rotate(var(--seat-counter-rotation));
  display:grid;
  place-items:center;
  border:1.5px solid var(--accent);
  border-radius:7px 7px 5px 5px;
  background:var(--panel-strong);
  color:var(--accent-strong);
  box-shadow:0 2px 5px rgba(52,55,53,.14);
  font-family:var(--ui-font);
  font-size:7.5px;
  font-weight:600;
  line-height:1;
  letter-spacing:-.02em;
  pointer-events:none;
  z-index:4;
}
.table-seat::after {
  content:"";
  position:absolute;
  left:4px;
  right:4px;
  bottom:-4px;
  height:4px;
  border:1.5px solid var(--accent);
  border-top:0;
  border-radius:0 0 4px 4px;
  background:var(--panel-strong);
}
.table-seat.assigned {
  background:var(--accent);
  border-color:var(--accent-strong);
  color:#fff;
}
.table-seat.assigned::after {
  background:var(--accent);
  border-color:var(--accent-strong);
}
.seat-overflow {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:16px;
  margin-left:4px;
  padding:0 4px;
  border-radius:999px;
  background:var(--accent-soft);
  color:var(--accent-strong);
  font-size:8px;
  font-weight:600;
}

/* The floor always fits its available column; no pinch zoom or sideways clipping required. */
.floor-stage {
  width:100%;
  max-width:1120px;
  min-width:0;
}
.floor-stage-wrap { min-width:0; }

/* Move the fixture controls above the canvas before a two-column layout becomes too narrow. */
@media (max-width:1280px) {
  .floor-layout { grid-template-columns:minmax(0,1fr); }
  .fixture-panel { position:static; grid-column:1; grid-row:1; }
  .floor-stage-wrap { grid-column:1; grid-row:2; }
  .fixture-buttons { grid-template-columns:repeat(4,minmax(0,1fr)); }
}

/* iPad Air and portrait tablet toolbar: shorter button labels and guaranteed non-overlap. */
@media (max-width:900px) {
  .action-label-full { display:none; }
  .action-label-short { display:inline; }
  .topbar-tools {
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-areas:
      "theme theme theme"
      "export import print";
  }
  .topbar .topbar-action {
    min-width:0;
    width:100%;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .floor-stage-wrap { padding:12px; overflow:hidden; }
  .fixture-buttons { grid-template-columns:repeat(3,minmax(0,1fr)); }
}

@media (max-width:700px) {
  .topbar-tools {
    grid-template-columns:repeat(2,minmax(0,1fr));
    grid-template-areas:
      "theme theme"
      "export import"
      "print print";
  }
  .fixture-buttons { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:520px) {
  .table-seat { width:15px; height:15px; border-radius:5px; font-size:5.5px; border-width:1px; }
  .table-seat::after { left:3px; right:3px; bottom:-3px; height:3px; border-width:1px; }
  .seat-overflow { min-width:16px; height:12px; font-size:6px; }
}

/* Always print the completed chart, including on iPhone/iPad Safari. */
@media print {
  body.print-chart .view { display:none !important; }
  body.print-chart #view-chart { display:block !important; }
  body.print-chart #seatingChartOutput,
  body.print-chart .chart-table-card,
  body.print-chart .alpha-grid,
  body.print-chart .alpha-row { visibility:visible !important; opacity:1 !important; }
  body.print-chart .seating-chart-output { display:grid !important; }
  body.print-chart .chart-table-card { display:block !important; }
}


/* ===== v0.9.1 additions ===== */
@media (pointer:coarse) {
  .button { min-height:44px; }
  .button.small { min-height:40px; }
  .event-switcher-wrap select, .theme-group select { min-height:44px; }
}
:focus-visible { outline:2px solid var(--accent-strong); outline-offset:2px; border-radius:4px; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:.001s !important; transition-duration:.001s !important; scroll-behavior:auto !important; }
}

/* ===== v0.9.1 botanical print redesign ===== */
@media print {
  @page { margin:14mm; }
  .print-chart-header { border-bottom:0 !important; margin-bottom:4mm !important; padding-bottom:0 !important; position:relative; }
  .print-chart-header .amg-script { font-family:var(--script-font); font-size:19pt; color:#596b56; margin:0 0 1mm; font-weight:400; }
  .print-chart-header h1 { font-family:var(--heading-font) !important; font-size:30pt !important; font-weight:600 !important; letter-spacing:.01em !important; color:#2f332f !important; }
  .print-chart-header p { font-family:"Montserrat", Arial, sans-serif !important; font-size:8.5pt !important; letter-spacing:.35em; text-transform:uppercase; color:#5e655e !important; }
  .print-chart-header .amg-sprig { position:absolute; top:-2mm; width:17mm; height:auto; opacity:.9; }
  .print-chart-header .amg-sprig.left { left:0; }
  .print-chart-header .amg-sprig.right { right:0; transform:scaleX(-1); }
  .print-chart-header .amg-leafdivider { display:block; margin:3mm auto 0; width:62mm; height:5mm; }
  .seating-chart-output { display:block !important; column-count:3; column-gap:9mm; }
  .chart-table-card { border:0 !important; box-shadow:none !important; background:transparent !important; break-inside:avoid; text-align:center; margin:0 0 7mm; padding:0 !important; }
  .chart-table-card h3 { font-family:"Montserrat", Arial, sans-serif !important; font-size:8.5pt !important; letter-spacing:.3em; text-transform:uppercase; color:#596b56 !important; margin:0 0 1.2mm !important; padding-bottom:1.4mm; border-bottom:.5pt solid #cfc9b8; display:inline-block; }
  .chart-table-card .chart-table-meta { display:none !important; }
  .chart-table-card .chart-guest-list { list-style:none; margin:1.5mm 0 0; padding:0; }
  .chart-table-card .chart-guest-list li { font-family:var(--heading-font); font-size:12.5pt; line-height:1.6; color:#2f332f; }
  .chart-table-card .helper-text { font-family:var(--heading-font); font-style:italic; color:#8a8478; }
  .alpha-grid { display:block !important; column-count:3; column-gap:9mm; }
  .alpha-row { display:block !important; text-align:center; border:0 !important; padding:0 !important; break-inside:avoid; line-height:1.7; }
  .alpha-row strong { font-family:var(--heading-font); font-weight:500; font-size:12.5pt; color:#2f332f; }
  .alpha-row span { font-family:"Montserrat", Arial, sans-serif; font-size:7.5pt; letter-spacing:.12em; text-transform:uppercase; color:#596b56; margin-left:2mm; }
  .print-footer { display:block !important; text-align:center; margin-top:8mm; font-family:"Montserrat", Arial, sans-serif; font-size:7pt; letter-spacing:.4em; text-transform:uppercase; color:#b9b4a6; }
  /* minimal style strips botanicals and colour */
  body.print-minimal .amg-sprig, body.print-minimal .amg-leafdivider { display:none !important; }
  body.print-minimal .print-chart-header .amg-script,
  body.print-minimal .chart-table-card h3,
  body.print-minimal .alpha-row span { color:#111 !important; }
  body.print-minimal .print-chart-header h1 { color:#111 !important; }
  body.print-minimal .print-chart-header::after { content:""; display:block; width:62mm; margin:3mm auto 0; border-bottom:.7pt solid #111; }
}
.print-footer { display:none; }


/* ===== v0.10.0 seat finder sign (replaces the v0.9.2/0.9.3 stationery suite) ===== */
#printExtras { display:none; }
.finder-note { display:none; margin:0 0 14px; padding:10px 14px; border:1px solid #d9c9a3; border-radius:10px; background:#faf6ea; color:#6b5c33; font-size:.85rem; line-height:1.5; }
.finder-note.visible { display:block; }
.qr-fallback { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; text-align:center; border:1.5px dashed #cfc9b8; color:#6d7264; padding:14px; font-size:9pt; line-height:1.45; width:100%; height:100%; box-sizing:border-box; }
.qr-fallback strong { color:#2f332f; }
@media print {
  .finder-note { display:none !important; }
  body.print-sign .seating-chart-output, body.print-sign .print-chart-header { display:none !important; }
  body.print-sign #printExtras { display:block !important; }
  body.print-sign .print-footer { display:none !important; }

  /* ===== the QR seat sign, one per A4 — CollectOurPhotos .sign-card standard =====
     The page is a vertically balanced flex column (no giant empty bottom half),
     branch artwork sits top-left + bottom-right MIRRORED (rotate 180deg, like
     COP), and there is deliberately no leaf divider in the botanical style:
     the branch corners carry it (family decision). */
  .amg-sign {
    height:255mm; box-sizing:border-box; position:relative; break-inside:avoid;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    text-align:center; padding:18mm 14mm;
    print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }
  .amg-sign .sign-sprig-l { position:absolute; top:10mm; left:10mm; width:20mm; height:auto; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  .amg-sign .sign-sprig-br { position:absolute; bottom:10mm; right:10mm; width:20mm; height:auto; transform:rotate(180deg); print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  /* Great Vibes runs its swashes together — word-spacing keeps "seat awaits" two words. */
  .amg-sign-script { font-family:var(--script-font); font-size:2.4rem; font-weight:400; letter-spacing:0; word-spacing:.14em; color:#596b56; line-height:1.15; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  .amg-sign-names { font-family:var(--heading-font); font-size:1.9rem; font-weight:600; letter-spacing:.01em; color:#2B353D; margin-top:6mm; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  .amg-sign-meta { font-family:"Montserrat", Arial, sans-serif; font-size:9pt; letter-spacing:.28em; text-transform:uppercase; color:#7E7368; margin-top:4mm; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  /* generous white quiet zone around a near-black QR — scan contrast matters */
  .amg-sign-qr { width:58mm; height:58mm; margin:11mm auto 0; padding:4mm; background:#fff; box-sizing:content-box; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  .amg-sign-qr svg { width:100%; height:100%; display:block; }
  .amg-sign-scan { font-family:var(--heading-font); font-style:italic; font-size:13pt; color:#596b56; margin-top:7mm; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  .amg-sign-foot { font-family:"Montserrat", Arial, sans-serif; font-size:7pt; letter-spacing:.32em; text-transform:uppercase; color:#7E7368; margin-top:5mm; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  /* minimal ("Modern"): branches hidden, one short hairline between heading and
     names, charcoal palette (#2f3333/#424947/#747979), QR stays near-black */
  .amg-pc-rule { display:none; }
  body.print-minimal .amg-pc-rule { display:block; width:34%; margin:5mm auto 0; border-top:.7pt solid #2f3333; print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  body.print-minimal .amg-sign-script, body.print-minimal .amg-sign-scan { color:#2f3333; }
  body.print-minimal .amg-sign-names { color:#2f3333 !important; }
  body.print-minimal .amg-sign-meta, body.print-minimal .amg-sign-foot { color:#747979 !important; }
  .amg-sign-qr svg, .amg-sign-qr svg path, .amg-sign-qr svg rect { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
}

/* v0.9.4 -- real logo branch artwork on printed chart + welcome sign, lockup footer */
.print-chart-header img.amg-sprig { width:16mm; height:auto; }
.print-chart-header img.amg-sprig.right { transform:scaleX(-1); }
.amg-sign img.sign-sprig-l, .amg-sign img.sign-sprig-br { width:20mm; height:auto; }
.print-footer .brand-serif { font-family:var(--heading-font); font-weight:600; color:#2B353D; }
.print-footer .brand-script { font-family:var(--script-font); font-size:1.45em; color:#85947D; margin:0 .04em; }
body.print-minimal .print-chart-header img.amg-sprig,
body.print-minimal .amg-sign img.sign-sprig-l,
body.print-minimal .amg-sign img.sign-sprig-br { display:none !important; }
body.print-minimal .print-footer .brand-script,
body.print-minimal .print-footer .brand-serif { color:#111 !important; }
@media print { .print-chart-header img.amg-sprig, .amg-sign img.sign-sprig-l, .amg-sign img.sign-sprig-br { print-color-adjust:exact; -webkit-print-color-adjust:exact; } }

/* sidebar legal links (family standard) */
.sidebar-footer .sidebar-links{margin-top:8px;font-size:.77rem}
.sidebar-footer .sidebar-links a{color:var(--muted);text-decoration:none}
.sidebar-footer .sidebar-links a:hover{color:var(--accent-strong);text-decoration:underline}

/* ============================================================
   v0.10.0 print glow-up — restores the family design after the
   stationery-suite pruning cut the late shared CSS the chart header
   depended on. Root cause: --heading-font is declared three times in
   this file and the v0.5 "Raleway/Montserrat" declaration is the last
   one on screen, so var(--heading-font) printed as bold sans; and the
   old `.print-chart-header p { font-family:"Montserrat" !important;
   letter-spacing:.35em; text-transform:uppercase }` rule swallowed the
   un-!important .amg-script rule, turning the Great Vibes line into
   letterspaced caps. Everything here is scoped to @media print and
   declared LAST so it provably wins the cascade; screens keep the
   approved Montserrat/Raleway UI untouched.
   ============================================================ */
@media print {
  /* In print, the display serif is the brand serif again. */
  :root { --heading-font: "Cormorant Garamond", Baskerville, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif; }

  /* --- chart header: script line back in Great Vibes, sage --- */
  .print-chart-header .amg-script {
    font-family:var(--script-font) !important;
    font-size:2.4rem !important;
    font-weight:400 !important;
    letter-spacing:0 !important;
    word-spacing:.14em; /* Great Vibes swashes merge "seat awaits" without this */
    text-transform:none !important;
    color:#596b56 !important;
    line-height:1.15;
    margin:0 0 1mm;
    print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }
  /* couple / event title in Cormorant 600, brand ink */
  .print-chart-header h1 {
    font-family:var(--heading-font) !important;
    font-size:2rem !important;
    font-weight:600 !important;
    letter-spacing:.01em !important;
    color:#2B353D !important;
    print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }
  /* letterspaced meta line beneath, taupe */
  .print-chart-header p:not(.amg-script) {
    font-family:"Montserrat", Arial, sans-serif !important;
    font-size:8.5pt !important;
    letter-spacing:.28em;
    text-transform:uppercase;
    color:#7E7368 !important;
    print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }

  /* --- table sections: Cormorant table names over Montserrat guest names --- */
  .chart-table-card h3 {
    font-family:var(--heading-font) !important;
    font-size:1.25rem !important;
    font-weight:600 !important;
    letter-spacing:.01em !important;
    text-transform:none !important;
    color:#2B353D !important;
    margin:0 0 1.2mm !important;
    padding-bottom:1.2mm;
    border-bottom:.6pt solid #85947D; /* thin sage underline */
    display:inline-block;
    print-color-adjust:exact; -webkit-print-color-adjust:exact;
  }
  .chart-table-card .chart-guest-list li {
    font-family:"Montserrat", Arial, sans-serif !important;
    font-size:.95rem !important;
    font-weight:400 !important;
    line-height:1.75;
    color:#2B353D;
  }

  /* --- print-only: tables with no assigned guests are omitted from the
     printed chart (they still show on screen) --- */
  .chart-table-card.chart-table-empty { display:none !important; }

  /* --- minimal ("Modern"): charcoal palette, hairlines instead of sage --- */
  body.print-minimal .print-chart-header .amg-script { color:#2f3333 !important; }
  body.print-minimal .print-chart-header h1 { color:#2f3333 !important; }
  body.print-minimal .print-chart-header p:not(.amg-script) { color:#747979 !important; }
  body.print-minimal .print-chart-header::after { border-bottom-color:#2f3333; }
  body.print-minimal .chart-table-card h3 { color:#2f3333 !important; border-bottom-color:#424947; }
  body.print-minimal .chart-table-card .chart-guest-list li { color:#2f3333; }
  body.print-minimal .alpha-row span { color:#424947 !important; }
}

/* floor plan print glow-up: branded header + clean double frame, no screen chrome */
.floor-print-header{display:none}
@media print{
  body.print-floor .no-print,body.print-floor .section-heading{display:none !important}
  body.print-floor .floor-print-header{display:block;text-align:center;margin:0 0 6mm;position:relative}
  .floor-print-header .fp-branch{position:absolute;top:0;width:13mm;height:auto;print-color-adjust:exact;-webkit-print-color-adjust:exact}
  .floor-print-header .fp-branch.l{left:2mm}
  .floor-print-header .fp-branch.r{right:2mm;transform:scaleX(-1)}
  .floor-print-header .fp-eyebrow{font-family:'Montserrat',sans-serif;font-size:8pt;letter-spacing:.35em;color:#7E7368;margin:0 0 1.5mm}
  .floor-print-header .fp-title{font-family:var(--heading-font);font-weight:600;font-size:20pt;color:#2B353D;margin:0 0 1.5mm;letter-spacing:-.01em}
  .floor-print-header .fp-meta{font-family:'Montserrat',sans-serif;font-size:8pt;letter-spacing:.22em;text-transform:uppercase;color:#7E7368;margin:0}
  body.print-floor .floor-stage-wrap{border:1.5pt solid #85947D;border-radius:0;padding:2mm;box-shadow:none;position:relative}
  body.print-floor .floor-stage{border:.5pt solid #c9cfc4 !important;border-radius:0}
  body.print-minimal.print-floor .floor-stage-wrap{border-color:#2f3333}
  body.print-minimal.print-floor .fp-branch{display:none}
}
