:root {
  --wine: #74151d;
  --wine-deep: #260405;
  --rose: #8c1820;
  --gold: #bd7e2b;
  --paper: #fffaf0;
  --cream: #f3ead9;
  --ink: #302526;
  --muted: #74696a;
  --line: #ded1bd;
}

html { background: #190203; }

body {
  background:
    linear-gradient(180deg, rgba(189, 126, 43, .08), transparent 260px),
    var(--paper);
}

.site-header {
  border-bottom: 1px solid rgba(228, 190, 112, .28);
  background: linear-gradient(180deg, rgba(38, 4, 5, .99), rgba(86, 8, 13, .98));
  box-shadow: 0 9px 30px rgba(38, 4, 5, .18);
}

.brand-logo img {
  border: 1px solid rgba(228, 190, 112, .62);
  border-radius: 50%;
  box-shadow: 0 7px 18px rgba(12, 1, 2, .35);
}

.phone-link {
  border-color: rgba(228, 190, 112, .42);
  color: #f1d694;
  background: rgba(255, 255, 255, .035);
}

.reservation-stage {
  border: 1px solid rgba(116, 21, 29, .12);
  background: #fffdf8;
  box-shadow: 0 24px 64px rgba(38, 4, 5, .15);
}

.stage-header {
  isolation: isolate;
  overflow: hidden;
  border-bottom: 1px solid rgba(228, 190, 112, .24);
  background:
    radial-gradient(ellipse at 50% 132%, rgba(228, 190, 112, .31), transparent 47%),
    linear-gradient(90deg, rgba(20, 1, 2, .35), transparent 18%, rgba(255,255,255,.035) 35%, transparent 52%, rgba(255,255,255,.03) 69%, transparent 85%, rgba(20,1,2,.35)),
    linear-gradient(145deg, #260405 0%, #56080d 50%, #8c1820 100%);
}

.stage-header::before {
  position: absolute;
  z-index: -1;
  inset: 0;
  background: linear-gradient(112deg, transparent 8%, rgba(228,190,112,.075) 30%, transparent 48%, rgba(228,190,112,.055) 68%, transparent 90%);
  content: "";
  pointer-events: none;
}

.stage-header::after {
  right: -55px;
  bottom: -92px;
  width: 180px;
  height: 180px;
  border-color: rgba(228, 190, 112, .13);
  box-shadow: 0 0 0 34px rgba(228,190,112,.03), 0 0 0 68px rgba(228,190,112,.015);
}

.stage-header p,
.step-copy p,
.service-note p,
.success > p { color: #e4be70; }

.progress { background: #eadfce; }
.progress span { background: linear-gradient(90deg, #a8671f, #e4be70); }

.step-copy p,
.event-copy > span:first-child { color: var(--gold); }

.event-option {
  border-color: rgba(116, 21, 29, .16);
  border-radius: 12px;
  background: #fffdf8;
  box-shadow: 0 8px 22px rgba(38, 4, 5, .06);
}

.event-option:hover,
.event-option.is-selected {
  border-color: var(--gold);
  box-shadow: 0 14px 30px rgba(38, 4, 5, .13);
}

.availability {
  border: 1px solid rgba(189, 126, 43, .32);
  border-radius: 999px;
  color: var(--wine-deep);
  background: rgba(255, 250, 240, .96);
}

.delivery label,
.address input,
.contact-fields input,
.contact-fields textarea {
  border-color: var(--line);
  border-radius: 8px;
  background: #fffdf8;
}

.delivery label:has(input:checked) {
  border-color: var(--gold);
  background: #f8eed9;
  box-shadow: inset 4px 0 0 var(--gold);
}

.stepper { overflow: hidden; border-color: var(--line); border-radius: 8px; }
.stepper button { color: var(--wine); background: #f4ead7; }

.quantity {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 1rem;
  margin: 1.25rem 0 1.4rem;
  padding: 1rem 0;
  border-block: 1px solid rgba(116, 21, 29, .14);
}

.quantity-price { min-width: 0; }

.quantity-price > small {
  display: block;
  margin: 0;
  color: var(--gold);
  font-size: .55rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.quantity-price > output {
  display: block;
  margin-top: .12rem;
  color: var(--wine-deep);
  font: 700 clamp(1.8rem, 8vw, 2.45rem)/1 var(--display);
  letter-spacing: -.04em;
  white-space: nowrap;
}

.quantity-price > output.is-updating {
  animation: ticket-total-pop .28s cubic-bezier(.2, .85, .35, 1) both;
}

.quantity-price > span {
  display: block;
  margin-top: .3rem;
  color: var(--muted);
  font-size: .67rem;
  line-height: 1.35;
}

.quantity-control {
  display: grid;
  justify-items: end;
  gap: .42rem;
}

.quantity-control > strong {
  color: var(--ink);
  font-size: .68rem;
}

.quantity .stepper { grid-template-columns: 44px 54px 44px; }
.quantity .stepper button { min-height: 46px; }
.quantity .stepper output { font-size: 1rem; }
.quantity.is-targeted { animation: ticket-choice-highlight 1.1s ease both; }

@keyframes ticket-total-pop {
  0% { opacity: .45; transform: translateY(4px) scale(.97); }
  100% { opacity: 1; transform: none; }
}

@keyframes ticket-choice-highlight {
  0%, 100% { background: transparent; box-shadow: none; }
  28% { background: #fff5df; box-shadow: 0 0 0 10px #fff5df; }
}

.consent,
.payment-note { background: #f6eedf; }

.form-actions button { border-radius: 8px; }

.form-actions button:last-child {
  border-color: #a66a20;
  color: #2c1808;
  background: linear-gradient(105deg, #f2dda8, #d2a14c);
  box-shadow: 0 9px 22px rgba(96, 56, 12, .18);
}

.service-note {
  border-top-color: #e4be70;
  background:
    radial-gradient(ellipse at 50% 110%, rgba(228, 190, 112, .18), transparent 48%),
    linear-gradient(145deg, #260405, #56080d);
}

.donation-card {
  border-top-color: #e4be70;
  background:
    radial-gradient(ellipse at 72% 118%, rgba(228, 190, 112, .28), transparent 44%),
    linear-gradient(90deg, rgba(15,1,2,.28), transparent 22%, rgba(255,255,255,.025) 44%, transparent 68%, rgba(15,1,2,.25)),
    linear-gradient(145deg, #260405 0%, #56080d 56%, #8c1820 100%);
}

.success .donation-paypal {
  border-color: #efd28c;
  color: #2c1808;
  background: linear-gradient(105deg, #f4e1af, #d2a14c);
}

.is-embedded .site-header,
.is-embedded .service-note { display: none; }

.is-embedded .reservation-shell {
  display: block;
  width: 100%;
  padding: 0;
}

.is-embedded .reservation-stage {
  border: 0;
  box-shadow: none;
}

.embedded-return {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .8rem;
  margin: 1rem 0 0;
  padding: .85rem .95rem;
  border: 1px solid rgba(189, 126, 43, .48);
  border-left: 4px solid var(--gold);
  background: #fff7e6;
  text-align: left;
}

.embedded-return small,
.embedded-return strong { display: block; }
.embedded-return small {
  color: var(--gold);
  font-size: .52rem;
  font-weight: 900;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.embedded-return strong {
  margin-top: .2rem;
  color: var(--wine-deep);
  font: 700 .86rem/1.25 var(--display);
}
.embedded-return button {
  min-height: 42px;
  padding: .6rem .8rem;
  border: 1px solid var(--wine);
  border-radius: 7px;
  color: #fff;
  background: var(--wine);
  font-size: .62rem;
  font-weight: 900;
  cursor: pointer;
}

.embedded-return.is-paused {
  border-color: rgba(47,117,82,.42);
  border-left-color: var(--green);
  background: #f2f8f4;
}
.embedded-return.is-paused small { color: var(--green); }

.withdrawal-notice {
  display: grid;
  gap: .3rem;
  margin-top: .8rem;
  padding: .8rem .9rem;
  border: 1px solid rgba(101, 23, 42, .18);
  border-left: 4px solid var(--wine);
  background: #fbf8f1;
}

.withdrawal-notice[hidden] { display: none; }
.withdrawal-notice strong {
  color: var(--wine-deep);
  font-size: .67rem;
}
.withdrawal-notice span {
  color: var(--muted);
  font-size: .59rem;
  line-height: 1.5;
}

@media (max-width: 760px) {
  .reservation-stage { border: 0; }
  .form-actions { background: rgba(255, 250, 240, .97); }
}

@media (max-width: 430px) {
  .embedded-return { grid-template-columns: 1fr; }
  .embedded-return button { width: 100%; }
}

@media (max-width: 350px) {
  .quantity { grid-template-columns: 1fr; align-items: start; }
  .quantity-control { justify-items: start; width: 100%; }
  .quantity .stepper { width: 100%; grid-template-columns: 1fr 54px 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .step.is-entering { animation: none; }
  .quantity-price > output.is-updating,
  .quantity.is-targeted { animation: none; }
}
