:root{--ink:#27251f;--paper:#f5f0e6;--gold:#b58a3b;--green:#244d3b}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 Manrope,system-ui,sans-serif}.order-shell{width:min(920px,calc(100% - 32px));margin:0 auto;padding:34px 0 80px}.back{color:inherit;text-decoration:none}.eyebrow{display:block;color:var(--gold);text-transform:uppercase;letter-spacing:.14em;font-size:12px;margin-top:58px}h1{font:600 clamp(38px,7vw,72px)/.98 Georgia,serif;margin:16px 0}header p{font-size:18px;max-width:650px}.order-form,.status-card{margin-top:44px;background:#fff;padding:clamp(22px,5vw,48px);box-shadow:0 18px 60px #493b2220}section+section{margin-top:38px}h2{font:600 27px Georgia,serif}h3{font:600 18px Georgia,serif;margin:28px 0 10px}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.card{border:1px solid #d8d0c1;padding:16px;cursor:pointer}.card:has(input:checked){border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}.card input{position:absolute;opacity:0}.card span{display:flex;justify-content:space-between;gap:18px}.card em{font-style:normal;color:var(--gold);white-space:nowrap}.extras{grid-template-columns:repeat(2,minmax(0,1fr))}.fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}.fields label{display:flex;flex-direction:column;gap:7px}.fields input,.promo-entry input{font:inherit;border:1px solid #cfc6b6;padding:13px;background:#fff}.promo-entry{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end}.promo-entry label{display:flex;flex-direction:column;gap:7px}.promo-entry button{font:inherit;border:1px solid var(--gold);background:#fff;color:var(--gold);padding:13px 20px;cursor:pointer}.promo-message{min-height:24px;color:var(--green);margin:10px 0}.promo-message.error{color:#9a342e}.summary-line{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #e8e2d7}.discount-line{color:var(--green)}.grand-total{font:600 24px Georgia,serif;border:0;padding-top:18px}.privacy-consent{display:flex;align-items:flex-start;gap:10px;margin-top:30px;font-size:14px;cursor:pointer}.privacy-consent input{width:18px;height:18px;margin:2px 0 0;accent-color:var(--gold);flex:0 0 auto}.privacy-consent a{color:inherit}.pay{border:0;background:var(--gold);color:#fff;font:600 13px inherit;letter-spacing:.1em;text-transform:uppercase;padding:17px 28px;margin-top:20px;cursor:pointer}.pay:disabled{background:#cfc6b6;color:#756e63;cursor:not-allowed}.validation{display:block;color:#9a342e;margin:8px 0}.hint,.legal{font-size:13px;color:#6c665c}.status-shell{max-width:720px}.status-card{text-align:center}.status{display:inline-block;padding:6px 12px;background:#ddd;text-transform:uppercase;letter-spacing:.12em;font-size:11px}.status.ok{background:#d8eadf;color:var(--green)}.status.warn{background:#f4e4b8}.ticket{margin:28px auto;font:600 28px/1 monospace;letter-spacing:.12em;border:1px dashed var(--gold);padding:24px}.order-lines{list-style:none;padding:0;margin:34px 0 0;text-align:left}.order-lines li,.total{display:flex;justify-content:space-between;gap:20px;padding:12px 0;border-bottom:1px solid #e8e2d7}.total{font-size:19px;border:0}.status-card h1{font-size:48px}@media(max-width:650px){.cards,.extras,.fields,.promo-entry{grid-template-columns:1fr}.card span{flex-wrap:wrap}.status-card h1{font-size:38px}}
.order-form textarea {
  width: 100%;
  resize: vertical;
  min-height: 7rem;
}

/* `.fields{display:grid}` перебивал браузерный `display:none`, и скрытые блоки
   оставались на странице: без этого правила JS прячет их только на словах. */
[hidden] { display: none !important; }

/* Количество билетов: крупные шаги вместо спиннера, по которому трудно попасть пальцем. */
.ticket-quantity { margin-top: 24px; }
.quantity-label { display: block; margin-bottom: 7px; }
.quantity-control { display: inline-grid; grid-template-columns: auto 5.5rem auto; align-items: stretch; }
.quantity-control input[type="number"] {
  font: inherit;
  width: 100%;
  padding: 13px 8px;
  border: 1px solid #cfc6b6;
  border-left: 0;
  border-right: 0;
  background: #fff;
  text-align: center;
  -moz-appearance: textfield;
  appearance: textfield;
}
.quantity-control input[type="number"]::-webkit-outer-spin-button,
.quantity-control input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.quantity-step {
  font: 400 22px/1 inherit;
  min-width: 52px;
  padding: 0 14px;
  border: 1px solid #cfc6b6;
  background: #fff;
  color: var(--ink);
  cursor: pointer;
}
.quantity-step:hover:not(:disabled) { border-color: var(--gold); color: var(--gold); }
.quantity-step:disabled { color: #b6ae9f; cursor: not-allowed; }
.ticket-quantity .hint { margin: 8px 0 0; }
.online-note { margin-top: 24px; }
.names-counter { display: block; margin-top: 4px; }
.names-counter.is-ready { color: var(--green); }

/* Состав заказа: итог перестаёт быть числом без объяснения. */
.summary-items { list-style: none; margin: 0 0 8px; padding: 0; }
.summary-items li {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 7px 0;
  color: #6c665c;
  font-size: 14px;
}
.summary-items strong { font-weight: 600; white-space: nowrap; }
.summary-items:empty { display: none; }

.pay-blockers { margin: 10px 0 0; color: #9a342e; font-size: 13px; }
.pay-blockers:empty { display: none; }

@media (max-width: 650px) {
  .quantity-control { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; width: 100%; }
}

/* Блок участников появляется прямо под подсказкой о количестве — ему нужен воздух. */
[data-participant-names] { margin-top: 22px; }
.order-form textarea {
  font: inherit;
  padding: 13px;
  border: 1px solid #cfc6b6;
  background: #fff;
}

/* Пока order.js не загрузился, онлайн-тариф уже не предлагает то, что к нему неприменимо. */
.order-form:has([data-code="ticket-online"]:checked) [data-onsite-quantity],
.order-form:has([data-code="ticket-online"]:checked) [data-onsite-only],
.order-form:has([data-code="ticket-online"]:checked) [data-participant-names] { display: none; }
