:root{
  --paper:#f5f4f0; --panel:#fffefb; --panel-2:#efeee9;
  --ink:#1a1c21; --ink-soft:#5c6068; --ink-faint:#8e9298;
  --rule:#deddd6;
  --floor:#dcdbd7; --floor-line:#cbc9c4; --wall:#22242a;
  --cream:#f6f1d5; --cream-line:#3a382c;
  --chair:#b0201f; --chair-empty:#f2e2e1; --chair-empty-line:#c9908e;
  --brass:#8f6a2c; --blue:#39687f; --green:#38664a; --grey-tag:#7b7f86;
  --shadow:0 1px 2px rgba(20,22,26,.06), 0 8px 24px rgba(20,22,26,.05);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#131519; --panel:#1b1e24; --panel-2:#22262d;
    --ink:#eae8e3; --ink-soft:#a3a8b1; --ink-faint:#787d86;
    --rule:#2d313a;
    --floor:#2a2d34; --floor-line:#343841; --wall:#c8ccd4;
    --cream:#4d4a36; --cream-line:#d8d2ae;
    --chair:#d9524f; --chair-empty:#332a2c; --chair-empty-line:#7d5150;
    --brass:#d6ac60; --blue:#79a8c2; --green:#7db58e; --grey-tag:#9aa0a9;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px rgba(0,0,0,.35);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --paper:#131519; --panel:#1b1e24; --panel-2:#22262d;
  --ink:#eae8e3; --ink-soft:#a3a8b1; --ink-faint:#787d86;
  --rule:#2d313a;
  --floor:#2a2d34; --floor-line:#343841; --wall:#c8ccd4;
  --cream:#4d4a36; --cream-line:#d8d2ae;
  --chair:#d9524f; --chair-empty:#332a2c; --chair-empty-line:#7d5150;
  --brass:#d6ac60; --blue:#79a8c2; --green:#7db58e; --grey-tag:#9aa0a9;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px rgba(0,0,0,.35);
  color-scheme:dark;
}
*{box-sizing:border-box}
body{
  background:var(--paper); color:var(--ink);
  font-family:Archivo,"Helvetica Neue",Arial,sans-serif;
  font-size:15px; line-height:1.5;
  padding-inline:20px; padding-block:0;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:1160px; margin:0 auto; padding-block:28px 60px;
  display:flex; flex-direction:column; gap:22px}

/* ---------- header ---------- */
header{display:flex; flex-wrap:wrap; align-items:flex-end;
  justify-content:space-between; gap:18px 24px;
  border-bottom:1px solid var(--rule); padding-bottom:18px}
.eyebrow{font-size:10.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:600; margin:0 0 6px}
h1{font-family:"Cormorant Garamond",Georgia,serif; font-weight:600;
  font-size:clamp(30px,5vw,44px); line-height:1.02; margin:0;
  letter-spacing:.005em; text-wrap:balance}
h1 span{color:var(--ink-soft)}
.sub{margin:8px 0 0; color:var(--ink-soft); font-size:13.5px; max-width:52ch}
.tally{display:flex; align-items:baseline; gap:10px; white-space:nowrap}
.tally b{font-family:"Cormorant Garamond",Georgia,serif; font-size:46px;
  font-weight:600; line-height:.9; font-variant-numeric:tabular-nums}
.tally .of{font-size:12px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:600}
.meter{width:150px; height:5px; border-radius:3px; background:var(--panel-2);
  overflow:hidden; margin-top:9px}
.meter i{display:block; height:100%; width:0%; background:var(--chair);
  transition:width .35s ease}

/* ---------- toolbar ---------- */
.tools{display:flex; flex-wrap:wrap; gap:10px; align-items:center}
.chip{appearance:none; border:1px solid var(--rule); background:var(--panel);
  color:var(--ink); font:inherit; font-size:12.5px; font-weight:500;
  padding:7px 13px; border-radius:999px; cursor:pointer;
  display:inline-flex; align-items:center; gap:7px}
.chip:hover{border-color:var(--ink-faint)}
.chip[aria-pressed="true"]{background:var(--ink); color:var(--paper);
  border-color:var(--ink)}
.chip .dot{width:7px; height:7px; border-radius:50%; background:var(--chair)}
.search{flex:1 1 200px; min-width:0; display:flex; align-items:center; gap:8px;
  border:1px solid var(--rule); background:var(--panel); border-radius:999px;
  padding:6px 14px}
.search input{border:0; background:transparent; color:var(--ink); font:inherit;
  font-size:13px; width:100%; outline:none}
.search svg{flex:none; opacity:.5}
:where(button,input,a):focus-visible{outline:2px solid var(--brass);
  outline-offset:2px}

/* ---------- plan ---------- */
.plan{background:var(--panel); border:1px solid var(--rule); border-radius:4px;
  box-shadow:var(--shadow); overflow:hidden}
.plan-head{display:flex; flex-wrap:wrap; gap:6px 18px; align-items:baseline;
  justify-content:space-between; padding:13px 18px;
  border-bottom:1px solid var(--rule)}
.plan-head h2{margin:0; font-size:11px; letter-spacing:.15em; font-weight:600;
  text-transform:uppercase; color:var(--ink-soft)}
.plan-head .scale{font-size:11px; letter-spacing:.09em; color:var(--ink-faint);
  font-variant-numeric:tabular-nums}
.scroller{overflow-x:auto; padding:6px 10px 10px}
svg.floorplan{display:block; width:100%; min-width:660px; height:auto}
.seat{cursor:pointer}
.seat rect{transition:fill .15s ease}
.seat:hover rect.body{fill:var(--brass)}
.seat:hover text{fill:var(--paper)}
.seat.on rect.body{fill:var(--chair)}
.seat.sel rect.body{fill:var(--brass)}
.seat.sel text{fill:var(--paper)}
.seat.hit rect.body{fill:var(--green)}
.seat.hit text{fill:var(--paper)}
.legend{display:flex; flex-wrap:wrap; gap:8px 20px; padding:0 18px 15px;
  font-size:11.5px; color:var(--ink-soft)}
.legend i{display:inline-block; width:11px; height:11px; margin-right:6px;
  vertical-align:-1px; border-radius:1px}

/* ---------- seat list ---------- */
.lists{display:grid; gap:16px;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.grp{background:var(--panel); border:1px solid var(--rule); border-radius:4px;
  box-shadow:var(--shadow); display:flex; flex-direction:column;
  overflow:hidden}
.grp > h3{margin:0; display:flex; align-items:baseline; gap:9px;
  padding:11px 14px; border-bottom:1px solid var(--rule);
  background:var(--panel-2)}
.grp h3 .nm{font-family:"Cormorant Garamond",Georgia,serif; font-size:20px;
  font-weight:600; letter-spacing:.01em}
.grp h3 .meta{font-size:10.5px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:600; margin-left:auto;
  font-variant-numeric:tabular-nums}
.rows{display:flex; flex-direction:column}
.row{display:grid; grid-template-columns:34px 1fr; align-items:center;
  gap:10px; padding:6px 14px; border-bottom:1px solid var(--rule)}
.row:last-child{border-bottom:0}
.row.sel{background:color-mix(in srgb, var(--brass) 12%, transparent)}
.no{font-size:11.5px; font-weight:700; font-variant-numeric:tabular-nums;
  color:var(--ink-faint); text-align:center; border:1px solid var(--rule);
  border-radius:3px; padding:3px 0; background:var(--panel-2)}
.row.filled .no{color:var(--paper); background:var(--chair);
  border-color:var(--chair)}
.fields{display:flex; flex-direction:column; gap:2px; min-width:0}
.row input{border:0; border-bottom:1px dashed transparent; background:transparent;
  font:inherit; color:var(--ink); padding:3px 2px; width:100%; outline:none;
  min-width:0}
.row input.nm{font-size:14.5px}
.row input.nt{font-size:11.5px; color:var(--ink-soft)}
.row input::placeholder{color:var(--ink-faint); opacity:.75}
.row input:hover{border-bottom-color:var(--rule)}
.row input:focus{border-bottom-color:var(--brass)}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--rule); padding-top:16px; display:flex;
  flex-wrap:wrap; gap:8px 26px; justify-content:space-between;
  font-size:11.5px; color:var(--ink-faint)}
.status{display:inline-flex; align-items:center; gap:7px}
.status .led{width:6px; height:6px; border-radius:50%; background:var(--green)}
.status.local .led{background:var(--brass)}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
@media (max-width:560px){
  .tally b{font-size:34px}
  header{align-items:flex-start}
}

/* ---------- печать: план и список на бумагу ---------- */
@media print{
  :root{--paper:#fff; --panel:#fff; --panel-2:#f2f2f0}
  body{padding-inline:0}
  .tools, .meter, footer{display:none}
  .plan, .grp{box-shadow:none; break-inside:avoid}
  svg.floorplan{min-width:0}
  .lists{grid-template-columns:repeat(2,1fr)}
  .row input{border-bottom:1px solid #bbb}
}


/* ---------- переключатель вариантов рассадки ---------- */
.variants{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px}
.variants a{font-size:12px; font-weight:600; letter-spacing:.02em;
  text-decoration:none; color:var(--ink-soft);
  border:1px solid var(--rule); background:var(--panel);
  padding:5px 12px; border-radius:999px; white-space:nowrap}
.variants a:hover{border-color:var(--ink-faint); color:var(--ink)}
.variants a.on{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.variants a:focus-visible{outline:2px solid var(--brass); outline-offset:2px}

/* ---------- страница меню гостей ---------- */
.pkg{display:flex; flex-direction:column; align-items:flex-end; margin-top:10px;
  text-align:right}
.pkg b{font-family:"Cormorant Garamond",Georgia,serif; font-size:19px;
  font-weight:600; line-height:1.05}
.pkg span{font-size:11px; letter-spacing:.06em; color:var(--ink-faint);
  text-transform:uppercase; font-weight:600}
.tools .hint{font-size:11.5px; color:var(--ink-faint); flex:1 1 240px;
  min-width:0}
.chip-primary{background:var(--brass); border-color:var(--brass); color:#fff}
.chip-primary:hover{filter:brightness(1.06); border-color:var(--brass)}

.menu-wrap .scroller{padding:0}
.menu-table{border-collapse:collapse; width:100%; min-width:1410px;
  table-layout:fixed; font-size:13px}
.menu-table th, .menu-table td{border-bottom:1px solid var(--rule);
  border-right:1px solid var(--rule); padding:7px 10px; text-align:left;
  vertical-align:middle; width:210px}
.menu-table th:last-child, .menu-table td:last-child{border-right:0}
.menu-table thead th{position:sticky; top:0; z-index:1;
  background:var(--panel-2); color:var(--ink-soft);
  font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  font-weight:600; white-space:nowrap}
.menu-table .guest-col{font-weight:600; white-space:nowrap; width:150px;
  overflow:hidden; text-overflow:ellipsis;
  background:var(--panel); position:sticky; left:0; z-index:1}
.menu-table thead .guest-col{z-index:2}
.menu-table tbody tr:hover .guest-col{background:var(--panel-2)}
.menu-table .empty-row{color:var(--ink-faint); text-align:center;
  padding:24px 10px; font-style:italic}
select.pick{width:100%; min-width:0; max-width:none; font:inherit;
  font-size:12.5px; color:var(--ink); background:var(--panel);
  border:1px solid var(--rule); border-radius:6px; padding:5px 7px;
  cursor:pointer}
select.pick:hover{border-color:var(--ink-faint)}
select.pick:focus-visible{outline:2px solid var(--brass); outline-offset:1px}

.summary-sec{display:flex; flex-direction:column; gap:12px}
.plan-head.plain{border:0; padding:0}
.summary{display:grid; gap:12px;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.sum-card{background:var(--panel); border:1px solid var(--rule);
  border-radius:6px; box-shadow:var(--shadow); padding:12px 14px}
.sum-card h3{margin:0 0 8px; font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-soft); font-weight:600}
.sum-row{display:flex; gap:9px; align-items:baseline; padding:3px 0;
  font-size:12px; color:var(--ink-soft)}
.sum-row b{min-width:22px; text-align:right; color:var(--chair);
  font-variant-numeric:tabular-nums; font-size:13px}
.sum-empty{color:var(--ink-faint); font-size:12.5px; margin:0}

@media print{
  .tools, footer, select.pick{border:0}
  select.pick{-webkit-appearance:none; appearance:none; background:none}
}

/* ---------- печатный отчёт (PDF) ---------- */
#report{display:none}
@media screen{ #report.rp-preview{display:block; position:fixed; inset:0;
  overflow:auto; background:#fff; z-index:9999; padding:24px} }
.rp{}
#report{color:#14161a; background:#fff;
  font-family:Archivo,"Helvetica Neue",Arial,sans-serif; font-size:11px;
  line-height:1.4}
#report h1,#report h2,#report h3{margin:0}
.rp-cover{padding:6mm 0 5mm; border-bottom:2px solid #14161a; margin-bottom:6mm}
.rp-eyebrow{font-size:9px; letter-spacing:.18em; text-transform:uppercase;
  color:#8a8f96; font-weight:700; margin:0 0 4px}
.rp-title{font-family:"Cormorant Garamond",Georgia,serif; font-weight:600;
  font-size:34px; line-height:1}
.rp-sub{margin:6px 0 0; font-size:12px; color:#3f434a; font-weight:500}
.rp-date{margin:3px 0 0; font-size:10px; color:#8a8f96}

.rp-section{margin-bottom:7mm}
.rp-head{display:flex; align-items:baseline; justify-content:space-between;
  gap:12px; border-bottom:1px solid #d7d6d0; padding-bottom:4px; margin-bottom:4mm}
.rp-head h2{font-family:"Cormorant Garamond",Georgia,serif; font-size:19px;
  font-weight:600}
.rp-head-note{font-size:9px; letter-spacing:.06em; text-transform:uppercase;
  color:#8a8f96; font-weight:600}

.rp-plan-svg{display:block; width:100%; height:auto; max-height:135mm}

.rp-grid{display:grid; gap:4mm; grid-template-columns:repeat(3,1fr)}
.rp-card{border:1px solid #d7d6d0; border-radius:3px; padding:3mm 3.5mm;
  break-inside:avoid}
.rp-card-h{display:flex; align-items:baseline; gap:6px; margin-bottom:2mm;
  border-bottom:1px solid #ececec; padding-bottom:1.5mm}
.rp-card-nm{font-family:"Cormorant Garamond",Georgia,serif; font-size:15px;
  font-weight:600}
.rp-card-meta{font-size:8px; letter-spacing:.05em; text-transform:uppercase;
  color:#8a8f96; font-weight:600; margin-left:auto}
.rp-seat{display:flex; align-items:baseline; gap:6px; padding:1px 0;
  font-size:10.5px}
.rp-no{min-width:16px; text-align:center; font-weight:700; font-size:9px;
  color:#b0201f; font-variant-numeric:tabular-nums}
.rp-name{font-weight:500}
.rp-name.empty{color:#b9bcc1; font-weight:400}
.rp-note{color:#8a8f96; font-size:9px; margin-left:auto; font-style:italic}

.rp-table{border-collapse:collapse; width:100%; font-size:9.5px}
.rp-table th,.rp-table td{border:1px solid #d7d6d0; padding:3px 5px;
  text-align:left; vertical-align:top}
.rp-table thead th{background:#f0efe9; font-size:8px; letter-spacing:.05em;
  text-transform:uppercase; color:#5c6068; font-weight:700}
.rp-table tbody tr{break-inside:avoid}
.rp-c-no{width:22px; text-align:center; color:#b0201f; font-weight:700;
  font-variant-numeric:tabular-nums}
.rp-c-guest{white-space:nowrap; font-weight:600}
.rp-cell-empty{color:#b9bcc1}
.rp-sum{display:flex; gap:7px; align-items:baseline; padding:1.5px 0;
  font-size:9.5px; color:#3f434a}
.rp-sum b{min-width:16px; text-align:right; color:#b0201f;
  font-variant-numeric:tabular-nums}
.rp-empty{color:#8a8f96; font-style:italic}

@media print{
  html,body{background:#fff !important}
  body > *:not(#report){display:none !important}
  #report{display:block !important}
  @page{ size:A4; margin:14mm 12mm }
  .rp-plan{break-inside:avoid}
  .rp-seating,.rp-menu,.rp-kitchen{break-before:page}
  .rp-head h2,.rp-title{-webkit-print-color-adjust:exact; print-color-adjust:exact}
  .rp-table thead{display:table-header-group}
}
.pdf-pick{display:inline-flex; align-items:center; gap:6px; font-size:12px;
  color:var(--ink-soft)}
.pdf-pick select{font:inherit; font-size:12px; padding:5px 7px; border-radius:999px;
  border:1px solid var(--rule); background:var(--panel); color:var(--ink)}

/* текстовое поле «аллергии / пожелания» в таблице меню */
input.pick-note{width:100%; min-width:0; font:inherit; font-size:12.5px;
  color:var(--ink); background:var(--panel); border:1px solid var(--rule);
  border-radius:6px; padding:5px 7px}
input.pick-note::placeholder{color:var(--ink-faint); opacity:.8}
input.pick-note:hover{border-color:var(--ink-faint)}
input.pick-note:focus-visible{outline:2px solid var(--brass); outline-offset:1px}

/* колонтитул отчёта — печатается на каждой странице */
.rp-footer{display:none}
.rp-menu td, .rp-menu th{word-break:break-word}
@media print{
  #report{padding-bottom:10mm}
  .rp-footer{display:flex; position:fixed; left:0; right:0; bottom:0;
    justify-content:space-between; align-items:baseline;
    padding:2mm 0; border-top:1px solid #d7d6d0;
    font-size:8px; letter-spacing:.05em; text-transform:uppercase;
    color:#8a8f96; background:#fff}
  .rp-foot-date{font-variant-numeric:tabular-nums}
}
