/**
 * Price components – one set of rules for every attraction:
 *   actionworld/offer        card: label, title, price rows, note, button
 *   actionworld/price-table  table (rows × age groups), stacks on mobile
 *   actionworld/package      package with price, checklist, badge (birthday deals)
 *   actionworld/price-notes  small text blocks next to a table
 * The attraction colour (--c) marks lines, labels, checks and the buttons.
 */
.aw-prices { padding-block: clamp(3rem, 2rem + 4vw, 6rem); }
.aw-prices__head { margin-bottom: clamp(2rem, 1.5rem + 2vw, 3rem); }
.aw-prices__head h2 { font-size: var(--aw-step-3); margin-bottom: .4em; }
.aw-prices__head .aw-prose { max-width: 70ch; }
.aw-prices + .aw-prices { padding-top: 0; }

/* Shared card surface */
.aw-offer,
.aw-package,
.aw-pricetable,
.wp-block-table.is-style-aw-prices table {
  position: relative;
  border: 1px solid var(--aw-line);
  border-radius: var(--aw-radius-m);
  background: var(--aw-ink);
}
.aw-offer::before,
.aw-package::before {
  content: "";
  position: absolute; left: -1px; right: -1px; top: -1px;
  height: 3px;
  border-radius: var(--aw-radius-m) var(--aw-radius-m) 0 0;
  background: linear-gradient(90deg, var(--c), color-mix(in srgb, var(--c) 40%, transparent) 70%, transparent);
}
/* Light from the top edge, stronger on hover */
.aw-offer::after,
.aw-package::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  background: radial-gradient(90% 55% at 15% 0%, color-mix(in srgb, var(--c) 22%, transparent), transparent 70%);
  opacity: .6;
  pointer-events: none;
  transition: opacity .6s var(--aw-ease-out);
}
.aw-offer:hover::after,
.aw-package:hover::after { opacity: 1; }
.aw-offer > *, .aw-package > * { position: relative; z-index: 1; }

/* Grid that holds offers and packages side by side */
.aw-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr));
  gap: 1rem;
  align-items: stretch;
}
.aw-cards--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }

/* Offer: head (label + title) | body (text, price rows) | foot (note + button).
   Feet line up at the bottom of a row of cards. --------------------------- */
.aw-offer {
  --pad: clamp(1.25rem, 1rem + 1vw, 1.75rem);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.aw-offer__head {
  padding: calc(var(--pad) + .25rem) var(--pad) 1.1rem;
  border-bottom: 1px solid var(--aw-line);
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 14%, transparent), transparent);
}
.aw-offer__body { flex: 1; padding: 1.1rem var(--pad) .5rem; }
.aw-offer__foot {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .9rem;
  margin-top: auto;
  padding: 1rem var(--pad) var(--pad);
  border-top: 1px dashed rgb(255 255 255 / .12);
}
.aw-offer__head:last-child { border-bottom: 0; }
.aw-offer__label {
  margin: 0 0 .5rem;
  color: color-mix(in srgb, var(--c) 75%, white);
  font-size: var(--aw-step--1);
  font-weight: 600;
  letter-spacing: .04em;
}
.aw-offer__title { font-size: var(--aw-step-2); margin: 0; }
.aw-offer__text { color: #d5d9e0; }
.aw-offer__text p { margin-bottom: .6em; }
.aw-offer__text + .aw-rows { margin-top: .5rem; }
.aw-offer__note { margin: 0; color: var(--aw-mute); font-size: var(--aw-step--1); }

/* Price rows inside an offer: label left, price right */
.aw-rows { margin: 0 0 .5rem; }
.aw-rows > div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: .55rem 0;
  border-bottom: 1px dashed rgb(255 255 255 / .12);
}
.aw-rows dt { color: #d5d9e0; }
.aw-rows dd { margin: 0; color: var(--aw-white); font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }

/* Price table ---------------------------------------------------------- */
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) { overflow: hidden; }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) table { width: 100%; border-collapse: collapse; font-size: .9rem; line-height: 1.45; font-variant-numeric: tabular-nums; }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) th,
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) td { padding: .7rem 1.1rem; text-align: right; }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) th:first-child,
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) td:first-child { text-align: left; }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) thead th {
  border-bottom: 1px solid transparent;
  border-image: linear-gradient(90deg, color-mix(in srgb, var(--c) 70%, transparent), color-mix(in srgb, var(--c) 10%, transparent)) 1;
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 14%, transparent), transparent);
  font-family: var(--aw-font-display);
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: .05em;
  line-height: 1;
  text-transform: uppercase;
}
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) tbody tr { transition: background var(--aw-dur-fast); }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) tbody tr + tr { border-top: 1px solid rgb(255 255 255 / .12); }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) tbody tr:hover { background: color-mix(in srgb, var(--c) 10%, transparent); }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) tbody td:first-child { font-weight: 600; color: var(--aw-white); }
:is(.aw-pricetable, .wp-block-table.is-style-aw-prices) tbody td { color: #d5d9e0; }

/* Phones: tables with 3+ columns become one card per row (two-column tables stay tables) */
@media (max-width: 600px) {
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) tr { display: block; padding: .9rem 1.1rem; }
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) td { display: flex; justify-content: space-between; gap: 1rem; padding: .2rem 0; }
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) td { text-align: right; }
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) td::before { content: attr(data-label); flex: none; color: var(--aw-mute); font-weight: 400; text-align: left; }
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) td:first-child { padding-bottom: .4rem; font-family: var(--aw-font-display); font-size: 1.25rem; text-transform: uppercase; }
  :is(.aw-pricetable, .wp-block-table.is-style-aw-prices):has(tr > :nth-child(3)) td:first-child::before { content: none; }
}

/* Table + notes layout */
.aw-prices__split {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 2rem clamp(2rem, 4vw, 4rem);
  align-items: start;
}
.aw-prices__split .aw-btn { margin-top: 1.25rem; }
@media (max-width: 900px) { .aw-prices__split { grid-template-columns: 1fr; } }

/* Price notes ---------------------------------------------------------- */
.aw-pricenotes { display: grid; gap: .75rem; }
.aw-pricenote {
  padding: 1rem 1.25rem 1.1rem;
  border: 1px solid var(--aw-line);
  border-left: 3px solid var(--c);
  border-radius: 0 var(--aw-radius-m) var(--aw-radius-m) 0;
  background: rgb(255 255 255 / .045);
}
.aw-pricenote > :last-child { margin-bottom: 0; }
.aw-pricenote h3,
.aw-pricenote h5 {
  margin-bottom: .35em;
  font-family: var(--aw-font-display);
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1;
  text-transform: uppercase;
}
.aw-pricenote p { margin-bottom: .25em; color: #d5d9e0; font-size: .95rem; }

/* Package (birthday specials) ------------------------------------------------
   Looks like a party ticket, so it stands apart from the regular prices:
   tinted in the attraction colour, perforated line under the price.
   Hover: no movement, the edge lights up in the attraction colour. */
.aw-package {
  display: flex;
  flex-direction: column;
  padding: 2rem 1.75rem 1.75rem;
  border-color: color-mix(in srgb, var(--c) 35%, transparent);
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 16%, var(--aw-ink)) 0%, var(--aw-ink) 55%);
  transition: border-color var(--aw-dur) var(--aw-ease-out), box-shadow var(--aw-dur) var(--aw-ease-out);
}
.aw-package:hover {
  border-color: color-mix(in srgb, var(--c) 75%, transparent);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--c) 40%, transparent), 0 24px 70px -38px color-mix(in srgb, var(--c) 80%, transparent);
}
.aw-package.is-featured {
  border-color: color-mix(in srgb, var(--c) 55%, transparent);
  box-shadow: 0 30px 80px -40px color-mix(in srgb, var(--c) 70%, transparent);
}
.aw-package.is-featured::after { opacity: 1; background: radial-gradient(110% 70% at 50% 0%, color-mix(in srgb, var(--c) 30%, transparent), transparent 75%); }
.aw-package > .aw-package__badge {
  position: absolute;
  z-index: 2;
  top: 1.1rem; right: 1.1rem;
  padding: .25em .7em;
  border-radius: 999px;
  background: var(--c);
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .04em;
}
.aw-package__title { margin: 0; font-size: var(--aw-step-2); }
.aw-package__sub { margin: .3rem 0 1.25rem; color: var(--aw-mute); }
.aw-package__price {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: .4rem;
  margin: 0 0 1.25rem;
  padding-bottom: 1.25rem;
  border-bottom: 2px dashed color-mix(in srgb, var(--c) 45%, transparent);
}
.aw-package .aw-package__int { color: color-mix(in srgb, var(--c) 35%, white); }
.aw-package__cur { color: var(--aw-mute); font-weight: 600; }
.aw-package__int { font-family: var(--aw-font-display); font-size: 4rem; font-weight: 600; line-height: .8; padding-top: .1em; }
.aw-package__per { color: var(--aw-mute); }

.aw-checklist { margin: 0 0 1.5rem; padding: 0; list-style: none; }
.aw-checklist li { display: flex; gap: .7rem; padding: .3rem 0; color: #d5d9e0; }
.aw-checklist svg { flex: none; width: 18px; height: 18px; margin-top: .25em; color: var(--c); }
.aw-package .aw-btn { justify-content: center; margin-top: auto; }
.aw-package__note { margin: 1rem 0 0; color: var(--aw-mute); font-size: .8rem; line-height: 1.5; }

/* Inner blocks of the price section (heading, text, list, columns) */
.aw-prices__inner > h2 { font-size: var(--aw-step-3); margin-bottom: .4em; }
.aw-prices__inner > :is(p, ul) { max-width: 70ch; color: #d5d9e0; }
.aw-prices__inner > ul { margin: 0 0 2rem; padding: 0; list-style: none; }
.aw-prices__inner > ul li { position: relative; padding: .35em 0 .35em 1.6em; }
.aw-prices__inner > ul li + li { border-top: 1px solid rgb(255 255 255 / .07); }
.aw-prices__inner > ul li::before {
  content: "";
  position: absolute; left: .2em; top: 1.05em;
  width: 7px; height: 7px;
  background: var(--c);
  transform: rotate(45deg);
}
.aw-prices__inner > :is(h2, p, ul):last-of-type { margin-bottom: clamp(2rem, 1.5rem + 2vw, 3rem); }
.aw-prices__inner .wp-block-columns { gap: 2rem clamp(2rem, 4vw, 4rem); margin: 0; }
.aw-prices__inner .wp-block-column > * + * { margin-top: 1.25rem; }
.aw-prices__inner .aw-pricenote + .aw-pricenote { margin-top: .75rem; }

/* Kontakt page: contact card | form | opening hours card.
   Up to 1200px: the two cards side by side, form below.
   Stacked (phones): opening hours, contact, form. */
.aw-prices__inner .aw-contact { align-items: flex-start; }
.aw-contact__card {
  padding: clamp(1.5rem, 1rem + 2vw, 2.5rem);
  border: 1px solid var(--aw-line);
  border-radius: var(--aw-radius-m);
  background: rgb(20 20 20 / .75);
}
.aw-prices__inner .aw-contact h2 { font-size: var(--aw-step-3); margin-bottom: .6em; }
.aw-contact__card h3 { font-size: var(--aw-step-2); margin-bottom: .5rem; }
.aw-prices__inner .aw-contact__card > * + h3 { margin-top: 2rem; }
.aw-contact__card a:not(.wp-block-button__link) { color: var(--aw-white); }
.aw-contact__card .aw-hours { margin-bottom: .75rem; }
.aw-contact__card .wp-block-buttons { margin-top: 2rem; }
/* Three columns (with a contact card): up to 1200px the cards side by side, form below.
   Two columns (opening hours + form, contact in the hero): side by side until phones. */
@media (max-width: 1200px) {
  .aw-prices__inner .aw-contact.wp-block-columns:has(> .aw-contact__info) { flex-wrap: wrap !important; }
  .aw-contact:has(> .aw-contact__info) > .aw-contact__card { flex: 1 1 18rem !important; }
  .aw-contact:has(> .aw-contact__info) > .aw-contact__form { flex: 1 1 100% !important; order: 3; }
}
@media (max-width: 781px) {
  .aw-contact > .aw-contact__form { order: 3; }
}
@media (max-width: 781px) {
  .aw-contact > .aw-contact__hours { order: 1; }
  .aw-contact > .aw-contact__info { order: 2; }
}
.wp-block-table.is-style-aw-prices { margin: 0; overflow: hidden; }
.wp-block-table.is-style-aw-prices table { border-radius: var(--aw-radius-m); overflow: hidden; }
.wp-block-table.is-style-aw-prices :is(td, th) { border: 0; }
.wp-block-table.is-style-aw-prices :is(thead, tfoot) { border: 0; }   /* WordPress draws a 3px line under the header row */

/* Small label above a section title (H4 in the content, as in v1) */
.aw-prices__inner > h4,
.aw-prices__inner > .aw-kicker,
.aw-feature__body > h4 {
  margin-bottom: .6rem;
  color: color-mix(in srgb, var(--c) 75%, white);
  font-family: var(--aw-font-body);
  font-size: var(--aw-step--1);
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: none;
}
.aw-prices__inner > h3:not(.aw-kicker) { font-size: var(--aw-step-2); margin-top: 2rem; }
.aw-prices__inner > :is(.wp-block-image, .wp-block-embed, .wp-block-table, .aw-map) { margin-block: 0 2rem; }
.aw-prices__inner > .wp-block-image img { border-radius: var(--aw-radius-m); }
.aw-prices__inner > .wp-block-embed iframe,
.aw-map iframe { display: block; width: 100%; border: 0; border-radius: var(--aw-radius-m); }
.aw-prices__inner > .wp-block-embed:not(.wp-has-aspect-ratio) iframe { height: auto; aspect-ratio: 16 / 9; }
.aw-map iframe { aspect-ratio: 16 / 7; min-height: 320px; filter: grayscale(.4) contrast(1.05); }

/* Section with an attraction colour: title gets a colour bar, so the attraction is
   recognisable at a glance (Preise page) */
.aw-prices--colored .aw-prices__inner :is(> h2, .wp-block-column > h2) { position: relative; padding-left: 1.1rem; }
.aw-prices--colored .aw-prices__inner :is(> h2, .wp-block-column > h2)::before {
  content: "";
  position: absolute; left: 0; top: .08em; bottom: .18em;
  width: 5px;
  border-radius: 3px;
  background: var(--c);
  box-shadow: 0 0 18px 2px color-mix(in srgb, var(--c) 60%, transparent);
}
.aw-prices--colored .aw-prices__inner > h4 { color: color-mix(in srgb, var(--c) 70%, white); }

/* Content layouts inside a section (class on the Columns block) ---------------
   aw-split: text next to a table/card · aw-faq: category title left (sticky), questions right */
.aw-prices__inner .wp-block-column > h2 { font-size: var(--aw-step-3); margin-bottom: .4em; }
.aw-prices__inner .wp-block-column > h3 { font-size: var(--aw-step-2); }
.aw-prices__inner .wp-block-column > :is(p, ul) { color: #d5d9e0; }
.aw-prices__inner .wp-block-column > .wp-block-table { margin: 0; }
.aw-prices__inner .aw-split { align-items: flex-start; }
.aw-prices__inner .aw-split + * { margin-top: 0; }
.aw-prices__inner > .wp-block-table + .aw-split { margin-top: 2rem; }

.aw-prices__inner .aw-faq { align-items: flex-start; }
.aw-prices__inner .aw-faq > .wp-block-column:first-child > h2 { font-size: var(--aw-step-3); }
@media (min-width: 782px) {
  .aw-prices__inner .aw-faq > .wp-block-column:first-child { position: sticky; top: 140px; }
}
/* FAQ categories follow each other closely: less space between their sections */
.aw-prices:has(> .aw-prices__inner > .aw-faq:first-child) { padding-top: clamp(1rem, .5rem + 2vw, 2.5rem); }

/* Raised card (e.g. "Escape Room alleine spielen?") */
.aw-prices__inner .aw-card {
  padding: clamp(1.5rem, 1rem + 2vw, 2.5rem);
  border: 1px solid var(--aw-line);
  border-top: 3px solid var(--aw-escape, var(--aw-red));
  border-radius: var(--aw-radius-m);
  background: rgb(20 20 20 / .75);
}
.aw-prices__inner .aw-card > h3:first-child { margin-top: 0; }
/* Two cards side by side (Infos: "Escape Room alleine spielen?" + Infoblatt): same height, buttons at the bottom */
.aw-prices__inner .aw-cards-2 { align-items: stretch; margin-top: clamp(1.5rem, 1rem + 1.5vw, 2.5rem); }
.aw-prices__inner .aw-card { display: flex; flex-direction: column; }
.aw-prices__inner .aw-card > .wp-block-buttons { margin-top: auto; padding-top: 1.25rem; }
.aw-prices__inner .aw-card > h4 {
  margin-bottom: .5rem;
  color: color-mix(in srgb, var(--c) 75%, white);
  font-family: var(--aw-font-body);
  font-size: var(--aw-step--1);
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: none;
}
.aw-prices__inner .aw-card > h4:first-child { margin-top: 0; }
.aw-prices__inner .aw-card > h2 { font-size: var(--aw-step-2); margin-bottom: .5em; }

/* Age table: each attraction column marked in its colour */
.aw-age-table thead th:nth-child(n+2) { border-bottom: 2px solid var(--col); border-image: none; }
.aw-age-table thead th:nth-child(2) { --col: var(--aw-laser); }
.aw-age-table thead th:nth-child(3) { --col: var(--aw-escape); }
.aw-age-table thead th:nth-child(4) { --col: var(--aw-golf); }
.aw-age-table thead th:nth-child(5) { --col: var(--aw-gamer); }

/* Attraction pages: price sections on a lighter navy band, so prices stand out
   from the dark photo sections around them */
.aw-main--attraction .aw-prices {
  background: #101725;   /* solid: two price sections in a row read as one band */
  border-top: 1px solid rgb(255 255 255 / .06);
}
.aw-main--attraction .aw-prices + .aw-prices { border-top: 0; }
.aw-main--attraction :not(.aw-prices) + .aw-prices { padding-top: clamp(3rem, 2rem + 4vw, 6rem); }
.aw-main--attraction .aw-prices :is(.aw-offer, .aw-package:not(:hover), .aw-pricetable, .wp-block-table.is-style-aw-prices table) {
  border-color: rgb(255 255 255 / .1);
}
.aw-main--attraction .aw-prices :is(.aw-offer, .aw-pricetable, .wp-block-table.is-style-aw-prices table) { background: rgb(255 255 255 / .045); }

/* Closing booking CTA (actionworld/cta) ------------------------------------ */
.aw-cta { position: relative; overflow: hidden; padding-block: clamp(4rem, 3rem + 5vw, 7.5rem); text-align: center; }
.aw-cta__inner { position: relative; display: flex; flex-direction: column; align-items: center; gap: 1.25rem; }
.aw-cta__text { max-width: 46ch; margin: 0; color: #d5d9e0; font-size: var(--aw-step-1); }
.aw-cta .aw-cta__btn { min-height: 54px; padding-inline: 1.8em; font-size: clamp(1.3rem, 1.15rem + .6vw, 1.6rem); }
.aw-cta .aw-cta__btn svg { width: .9em; height: .9em; }

/* Footnotes ("* …") right after a table, cards or Kombi-Preise: same size as the table text */
.aw-prices__inner :is(.wp-block-table, .aw-cards, .aw-combo, .aw-pricetable) + p,
.aw-prices__inner .wp-block-column > :is(.wp-block-table, .aw-cards) + p { font-size: .9rem; color: var(--aw-mute); }

/* Birthday packages Bronze / Silber / Gold: a small medal in its metal colour next to the title */
.aw-package__head { display: flex; align-items: center; gap: .65rem; }
.aw-package__medal {
  flex: none;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: radial-gradient(circle at 32% 30%, var(--m1) 0%, var(--m2) 55%, var(--m3) 100%);
  box-shadow: inset 0 0 0 2px rgb(255 255 255 / .25), 0 0 14px color-mix(in srgb, var(--m2) 45%, transparent);
}
.aw-package--gold   { --m1: #fff3b0; --m2: #e0b43c; --m3: #9a7417; }
.aw-package--silver { --m1: #ffffff; --m2: #c4cad2; --m3: #7d858f; }
.aw-package--bronze { --m1: #ffd2a8; --m2: #c7814a; --m3: #7e4520; }

/* Contact block inside a section (Anfahrt): address, then the phone / e-mail / directions buttons
   side by side; more room before the next button row and the map */
.aw-prices__inner > .aw-chips { margin-bottom: 0; }
.aw-prices__inner > .aw-chips li { padding: 0; border: 0; }
.aw-prices__inner > .aw-chips li::before { content: none; }   /* no list bullets on the buttons */
.aw-prices__inner > .aw-chips + .wp-block-buttons { margin-top: 2rem; }
.aw-prices__inner > .wp-block-buttons + .aw-map,
.aw-prices__inner > .wp-block-buttons + .wp-block-html { margin-top: 2.5rem; }

/* Two-column price tables (e.g. Adventure Golf) on their own: as wide as the tables next to
   the specials (Lasertag, Gamer) instead of stretching over the whole section */
.aw-prices__inner > .wp-block-table.is-style-aw-prices:not(:has(tr > :nth-child(3))) { max-width: 640px; }

