:root {
  --ink: #17324d;
  --green: #08746d;
  --teal: #0b9690;
  --mint: #dff8ef;
  --sky: #dff3ff;
  --pink: #ff82a7;
  --yellow: #ffe36d;
  --coral: #ff684f;
  --coral-deep: #e64f3b;
  --cream: #fff9ed;
  --white: #ffffff;
  --muted: #60727d;
  --line: #d6e7ea;
  --shadow: 0 22px 52px rgba(24, 82, 103, .15);
  --g: #08746d;
  --c: #ff684f;
  --legal-green: #08746d;
  --legal-coral: #ff684f;
  --legal-ink: #17324d;
  --legal-muted: #60727d;
  --legal-line: #d6e7ea;
  --legal-soft: #e9f8f4;
  --request-green: #08746d;
  --request-dark: #17324d;
  --request-muted: #60727d;
  --request-coral: #ff684f;
  --request-line: #d6e7ea;
  --review-green: #08746d;
  --review-coral: #ff684f;
  --review-gold: #f2b705;
  --review-ink: #17324d;
  --review-muted: #60727d;
  --review-line: #d6e7ea;
}

body {
  color: var(--ink);
  background: linear-gradient(180deg, #fffdf8 0%, #f4fbff 55%, #fff8f2 100%);
}

::selection {
  color: var(--ink);
  background: var(--yellow);
}

.topbar,
.page-head,
.legal-header,
body > header:not(.page-head):not(.legal-header) {
  background:
    linear-gradient(90deg,
      rgba(255, 246, 202, .96) 0%,
      rgba(255, 232, 239, .96) 49%,
      rgba(225, 244, 255, .96) 100%);
  border-bottom-color: rgba(56, 127, 150, .15);
  box-shadow: 0 8px 28px rgba(36, 94, 114, .08);
  backdrop-filter: blur(14px);
}

.brand-dot,
.brand b,
.legal-brand span {
  background: linear-gradient(145deg, #ff8da9, var(--coral));
  box-shadow: 0 7px 18px rgba(255, 104, 79, .27);
}

.topbar .brand,
.page-head .brand,
.legal-header .legal-brand {
  color: #126b78;
}

.topbar nav a,
.page-head nav a {
  color: var(--ink);
  transition: color .2s ease, transform .2s ease;
}

.topbar nav a:hover,
.page-head nav a:hover,
.page-head nav a.active {
  color: var(--coral);
}

.topbar nav a:hover,
.page-head nav a:hover {
  transform: translateY(-1px);
}

.admin-login,
.page-head .login,
.legal-header .legal-back {
  color: #08746d;
  background: rgba(255, 255, 255, .64);
  border-color: rgba(8, 116, 109, .24);
}

.admin-login:hover,
.page-head .login:hover,
.legal-header .legal-back:hover {
  color: var(--coral-deep);
  background: rgba(255, 255, 255, .9);
  border-color: rgba(255, 104, 79, .32);
}

.admin-login.logged-in {
  background: rgba(223, 248, 239, .82);
  border-color: rgba(8, 116, 109, .27);
}

.button,
.request-submit {
  background: linear-gradient(135deg, #ff8067, var(--coral));
  box-shadow: 0 12px 26px rgba(255, 104, 79, .28);
}

.button:hover,
.request-submit:hover {
  background: linear-gradient(135deg, var(--coral), var(--coral-deep));
  filter: none;
  transform: translateY(-2px);
}

.hero {
  background:
    radial-gradient(circle at 12% 20%, rgba(255, 255, 255, .72) 0 74px, transparent 75px),
    radial-gradient(circle at 77% 17%, rgba(255, 227, 109, .72) 0 80px, transparent 81px),
    linear-gradient(118deg, #fff3b8 0%, #ffe4ec 46%, #dff3ff 100%);
}

.hero-art {
  background: linear-gradient(150deg, #8edcf5 0%, #ffd0df 53%, #fff0a2 100%);
  box-shadow: 0 26px 60px rgba(32, 102, 130, .18);
}

.sun {
  background: var(--yellow);
  box-shadow: 0 0 0 18px rgba(255, 255, 255, .3);
}

.tower {
  background: #72c9ed;
  border-color: #42a9d7;
}

.tower:before {
  border-bottom-color: #ff82a7;
}

.castle-main {
  background: #ff91af;
  border-color: #ee6f94;
}

.door {
  background: #176c79;
}

.section {
  background: linear-gradient(180deg, #fffdf7 0%, #fff8ec 100%);
}

.section-head h2,
.event-copy h2,
.steps-head h2,
.page-hero h1,
.legal-hero h1 {
  color: var(--ink);
}

.product-card,
.catalog-card,
.rating-summary,
.review-card,
.review-form-card,
.google-review-card,
.legal-card,
.legal-nav,
.rules-grid article,
.event-cards article,
.how-list article {
  background: #fff;
  border-color: var(--line);
  box-shadow: 0 14px 38px rgba(34, 88, 108, .1);
}

.product-card:nth-child(3n + 1),
.catalog-card:nth-child(3n + 1) {
  border-top: 6px solid var(--pink);
}

.product-card:nth-child(3n + 2),
.catalog-card:nth-child(3n + 2) {
  border-top: 6px solid #63c8ef;
}

.product-card:nth-child(3n),
.catalog-card:nth-child(3n) {
  border-top: 6px solid var(--yellow);
}

.product-card:hover,
.catalog-card:hover {
  box-shadow: var(--shadow);
  transform: translateY(-5px);
}

.product-image,
.catalog-photo {
  background: linear-gradient(145deg, #e7f7ff 0%, #fff0f5 58%, #fff7ce 100%);
}

.catalog-photo em {
  background: rgba(23, 50, 77, .88);
}

.mini-arrow {
  color: var(--green);
  box-shadow: 0 7px 18px rgba(8, 116, 109, .16);
}

.event-section {
  background:
    radial-gradient(circle at 10% 13%, rgba(255, 227, 109, .55) 0 60px, transparent 61px),
    linear-gradient(125deg, #fff1c9 0%, #ffe6ef 48%, #e4f5ff 100%);
}

.event-types span {
  background: rgba(255, 255, 255, .88);
  border-color: rgba(255, 130, 167, .32);
  box-shadow: 0 7px 18px rgba(87, 75, 98, .06);
}

.event-visual {
  background: linear-gradient(145deg, #7bd6f3 0%, #b9efe2 44%, #ffd1df 100%);
  box-shadow: 0 24px 48px rgba(49, 104, 126, .16);
}

.event-visual:before,
.event-visual:after {
  background: var(--yellow);
}

.event-badge {
  border: 1px solid rgba(255, 255, 255, .72);
  box-shadow: 0 12px 24px rgba(28, 82, 102, .12);
}

.steps {
  background: linear-gradient(180deg, #e8f7ff 0%, #f4fbff 100%);
}

.steps-grid article,
.steps-list article {
  background: #fff;
  border: 1px solid #cfe6f0;
  border-radius: 22px;
  box-shadow: 0 12px 30px rgba(40, 101, 128, .09);
}

.steps-grid article:nth-child(3n + 1),
.steps-list article:nth-child(3n + 1) {
  box-shadow: inset 0 5px 0 var(--pink), 0 12px 30px rgba(40, 101, 128, .09);
}

.steps-grid article:nth-child(3n + 2),
.steps-list article:nth-child(3n + 2) {
  box-shadow: inset 0 5px 0 #63c8ef, 0 12px 30px rgba(40, 101, 128, .09);
}

.steps-grid article:nth-child(3n),
.steps-list article:nth-child(3n) {
  box-shadow: inset 0 5px 0 var(--yellow), 0 12px 30px rgba(40, 101, 128, .09);
}

.page-hero,
.legal-hero,
.request-hero {
  background:
    radial-gradient(circle at 11% 25%, rgba(255, 227, 109, .55) 0 65px, transparent 66px),
    radial-gradient(circle at 88% 18%, rgba(255, 255, 255, .68) 0 88px, transparent 89px),
    linear-gradient(120deg, #ffe8f0 0%, #fff3bd 47%, #dff3ff 100%);
}

.page-content {
  background: transparent;
}

.event-cta,
.review-form-section {
  background: linear-gradient(135deg, #ffe8f0 0%, #e4f5ff 52%, #fff3c9 100%);
  border: 1px solid var(--line);
}

.rules-hero {
  background:
    radial-gradient(circle at 12% 30%, rgba(255, 227, 109, .2), transparent 18%),
    radial-gradient(circle at 88% 22%, rgba(255, 130, 167, .18), transparent 20%),
    linear-gradient(135deg, #124b68 0%, #08746d 100%);
}

.rules-hero span,
.eyebrow.light {
  color: #ffe36d;
}

.notice {
  background: #fff0f4;
  border-color: #ffc1d2;
}

.booking-section {
  background:
    radial-gradient(circle at 14% 18%, rgba(255, 227, 109, .12) 0 90px, transparent 91px),
    radial-gradient(circle at 90% 78%, rgba(255, 130, 167, .13) 0 120px, transparent 121px),
    linear-gradient(135deg, #123f59 0%, #08746d 100%);
}

.booking-section:target {
  background: rgba(12, 43, 57, .93) !important;
}

.booking-section:target .booking-intro {
  background:
    radial-gradient(circle at 12% 22%, rgba(255, 227, 109, .12) 0 75px, transparent 76px),
    linear-gradient(160deg, #123f59 0%, #08746d 100%) !important;
}

.booking-section:target .help-card {
  background: rgba(255, 255, 255, .13);
  border-color: rgba(255, 255, 255, .22);
}

.booking-card,
.request-layout {
  border-color: rgba(41, 115, 137, .16);
  box-shadow: 0 30px 74px rgba(9, 36, 49, .25);
}

.booking-product-preview {
  background: linear-gradient(120deg, #e8f7ff 0%, #fff0f5 52%, #fff9d9 100%);
  border-color: #cfe3e8;
}

.booking-product-preview-copy small {
  color: var(--teal);
}

input,
select,
textarea,
.request-card input,
.request-card select,
.request-card textarea,
.review-form-card input[type=text],
.review-form-card input[type=email],
.review-form-card textarea {
  background: #fcfeff;
  border-color: #c8dfe6;
}

input:focus,
select:focus,
textarea:focus {
  border-color: #48b9df;
  box-shadow: 0 0 0 4px rgba(72, 185, 223, .15);
}

.time-btn:hover,
.time-btn.selected {
  color: #ca3f5f;
  background: #fff0f5;
  border-color: var(--pink);
}

.payment:has(input:checked) {
  background: #eaf9f5;
  border-color: var(--teal);
}

.summary,
.reference,
.legal-small {
  background: #fff7d8;
}

.empty-state,
.terms-consent,
.legal-highlight,
.reviews-empty,
.reviews-error {
  background: #eaf8f5;
}

.request-info {
  background:
    radial-gradient(circle at 20% 10%, rgba(255, 227, 109, .12), transparent 22%),
    linear-gradient(160deg, #123f59 0%, #08746d 100%);
}

.request-number {
  color: #0b6d75;
  background: #e3f6ff;
}

.official-footer,
.page-footer,
.legal-footer,
body > footer:not(.official-footer):not(.page-footer):not(.legal-footer) {
  background: linear-gradient(135deg, #122f45 0%, #063f3d 100%);
}

.footer-column a:hover {
  color: var(--yellow);
}

@media (max-width: 520px) {
  .booking-section:target {
    background: #123f59 !important;
  }
}
