/* ═══════════════════════════════════════════════════
   Vintage Print / Heritage — a literal gazette/broadsheet
   reading of the hotel-casino: masthead bars in place of
   plain eyebrows, drop-cap first letters on prose, numbered
   "No. 01" labels on every list of 3+, multi-column
   newspaper text, thick/thin rules as dividers, and every
   photograph toned sepia like an archival print.
   Palette tokens (--gold-flat, --c-bg, --c-s1..4, --md-sys-color-*,
   --text-*, --hairline) are injected per-generation by
   src/paletteEngine.js — this file only defines how those
   tokens are USED, never hard-codes hex.
   ═══════════════════════════════════════════════════ */

:root {
  /* Typography — Georgia serif carries every headline and paragraph;
     Courier New monospace is reserved for the "printed matter" chrome
     (mastheads, labels, bylines, nav) — the one deliberate contrast. */
  --font-display: Georgia, 'Times New Roman', serif;
  --font-body:    Georgia, 'Times New Roman', serif;
  --font-ui:      'Courier New', Courier, monospace;

  --section-padding: 104px 0;
  --container-max:   1240px;

  /* Fallback defaults — always overridden per-build via PALETTE_STYLE injection */
  --c-bg: #1C1B18;
  --c-s1: #201F1B;
  --c-s2: #242320;
  --c-s3: #292824;
  --c-s4: #302E29;
  --gold-flat: #78A6E6;
  --hairline: rgba(255,255,255,0.14);
  --text-body: rgba(255,255,255,0.82);
  --text-heading: #F2EFE6;
  --text-accent: var(--gold-flat);
  --text-secondary: rgba(255,255,255,0.78);

  /* Derived "photograph" tint ramp — an aged sepia gradient built only
     from the injected accent + background, used as the placeholder/frame
     backing behind every photo (mirrors the approved --ph1/2/3 device). */
  --ph1: color-mix(in srgb, var(--gold-flat) 25%, var(--c-bg) 75%);
  --ph2: color-mix(in srgb, var(--gold-flat) 55%, var(--c-bg) 45%);
  --ph3: color-mix(in srgb, var(--gold-flat) 85%, black 15%);

  --ease: all 0.2s ease;
  --ease-transform: transform 0.3s ease;
}

/* ── Reset & Base ─────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html  { scroll-behavior: smooth; }
body  {
  font-family: var(--font-body);
  background: var(--c-bg);
  color: var(--text-body);
  line-height: 1.7;
  overflow-x: hidden;
}
img   { display: block; width: 100%; height: 100%; object-fit: cover; }
/* Every photograph on the site gets an aged, archival cast — the one
   exception is the AI-generated brand logo, which must stay true to color. */
img:not(#navLogo) { filter: sepia(0.45) contrast(1.05); }
a     { color: inherit; text-decoration: none; }
ul    { list-style: none; }

.dpfll_container {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 24px;
}
.dpfll_section { padding: var(--section-padding); border-top: 1px solid var(--hairline); }

/* ── Buttons — flat rectangles, printed-ticket edges ──────────────────── */
.dpfll_btn-filled,
.dpfll_btn-outlined,
.dpfll_btn-text {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 13px 26px;
  border-radius: 0;
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1;
  transition: var(--ease);
  border: 1px solid transparent;
}
.dpfll_btn-filled {
  background: var(--gold-flat);
  color: var(--md-sys-color-on-primary, #161311);
  border: 1px solid var(--gold-flat);
}
.dpfll_btn-filled:hover { opacity: 0.86; }
.dpfll_btn-filled:active { opacity: 0.72; }

.dpfll_btn-outlined {
  background: transparent;
  color: var(--text-heading);
  border: 1px solid var(--text-heading);
}
.dpfll_btn-outlined:hover { border-color: var(--gold-flat); color: var(--gold-flat); }

.dpfll_btn-text {
  background: transparent;
  color: var(--gold-flat);
  padding: 13px 4px;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.dpfll_btn-text:hover { opacity: 0.75; }

/* ── Cards — hairline border, sharp corners, no shadow ───────────────── */
.dpfll_card-elevated {
  background: var(--c-s1);
  border: 1px solid var(--hairline);
  border-radius: 0;
  overflow: hidden;
}

/* ── Typography helpers ───────────────────────────── */
.dpfll_section-eyebrow {
  display: inline-block;
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gold-flat);
}
.dpfll_section-title {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 3.1rem);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -0.005em;
  color: var(--text-heading);
  margin-bottom: 22px;
  text-wrap: balance;
}
.dpfll_section-title.dpfll_light { color: var(--text-heading); }
.dpfll_section-subtitle {
  font-family: var(--font-ui);
  font-size: 0.85rem;
  color: var(--text-secondary);
  max-width: 560px;
  margin: 0 auto;
}
.dpfll_section-body {
  font-size: 1.05rem;
  color: var(--text-secondary);
  line-height: 1.8;
}
.dpfll_section-header {
  text-align: center;
  margin-bottom: 48px;
}

/* ── The masthead device — reused as a section-header bar everywhere,
   not just once at the top: thick rule above, thin rule below, publication
   name left / edition-and-volume right, set in the monospace "typewriter" face. */
.dpfll_section-masthead {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  border-top: 3px solid var(--text-heading);
  border-bottom: 1px solid var(--hairline);
  padding-block: 10px;
  margin-bottom: 40px;
  font-family: var(--font-ui);
}
.dpfll_section-masthead.dpfll_center { justify-content: center; text-align: center; }
.dpfll_masthead-edition {
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-secondary);
}
.dpfll_section-masthead.dpfll_on-photo {
  border-top-color: var(--text-heading);
  border-bottom-color: color-mix(in srgb, var(--text-heading) 25%, transparent);
}

/* Thick/thin rules as major/minor section dividers */
.dpfll_rule-thick {
  border: none;
  border-top: 3px solid var(--text-heading);
  margin-block: clamp(1.6rem, 4vw, 2.6rem);
}
.dpfll_rule-thick.dpfll_no-margin { margin: 0; }

/* Multi-column newspaper prose + drop-cap first letter — the signature
   device, applied to every longer block of AI-generated body copy. */
.dpfll_cols {
  columns: 2;
  column-gap: 2.2rem;
  font-size: 0.98rem;
  line-height: 1.7;
}
.dpfll_cols.dpfll_cols-2 { columns: 2; }
.dpfll_cols p:first-child::first-letter {
  font-family: var(--font-display);
  font-size: 3.4rem;
  font-weight: 700;
  float: left;
  line-height: 0.82;
  margin: 0.06em 0.08em 0 0;
  color: var(--gold-flat);
}

/* Numbered "No. 01" label — small caps monospace, used on every list of
   3+ items (highlights, rooms, casino features, amenities). */
.dpfll_lbl {
  display: block;
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gold-flat);
  margin-bottom: 8px;
}
.dpfll_card { border-left: 1px solid var(--hairline); padding-left: 1.1rem; }
.dpfll_name { font-family: var(--font-display); font-size: 1.25rem; font-weight: 700; color: var(--text-heading); }
.d    { font-size: 0.92rem; line-height: 1.6; color: var(--text-secondary); margin-top: 0.4rem; }

/* Photograph frame — every real photo sits on top of the sepia --ph1/2/3
   gradient (visible as a border wash / loading backdrop), tying every
   image on the site to one consistent archival treatment. */
.dpfll_ph {
  position: relative;
  background: linear-gradient(160deg, var(--ph1), var(--ph2) 60%, var(--ph3));
  border: 1px solid var(--text-heading);
}

/* "Clipped" inset photograph — a small archival print taped over the
   main image, tilted slightly like a scrapbook clipping. */
.dpfll_clipping {
  position: absolute;
  border: 6px solid var(--c-bg);
  box-shadow: 0 14px 30px rgba(0,0,0,0.35);
  transform: rotate(-3deg);
  transition: transform 0.3s ease;
}
.dpfll_clipping:hover { transform: rotate(0deg) scale(1.02); }
.dpfll_clipping-pin {
  position: absolute;
  top: -7px; left: 50%;
  transform: translateX(-50%);
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--gold-flat);
  border: 2px solid var(--c-bg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}

/* ── Scroll-reveal animations ─────────────────────── */
[data-reveal] {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
[data-reveal].revealed {
  opacity: 1;
  transform: none;
}

/* ═══════════════════════════════════════ NAVIGATION */
.dpfll_nav-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
  background: color-mix(in srgb, var(--c-bg) 97%, transparent);
  border-top: 4px solid var(--text-heading);
  border-bottom: 1px solid var(--hairline);
  transition: var(--ease);
}
.dpfll_nav-header.scrolled { box-shadow: 0 6px 18px rgba(0,0,0,0.28); }

.dpfll_masthead-bar {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding-block: 7px;
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-secondary);
  border-bottom: 1px solid var(--hairline);
}
.dpfll_masthead-name { color: var(--text-heading); }
.dpfll_nav-header.scrolled .dpfll_masthead-bar { display: none; }

.dpfll_nav-inner {
  display: flex;
  align-items: center;
  gap: 40px;
  padding-block: 18px;
  transition: var(--ease);
}
.dpfll_nav-header.scrolled .dpfll_nav-inner { padding-block: 12px; }
.dpfll_nav-logo {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--text-heading);
  white-space: nowrap;
  flex-shrink: 0;
}
.dpfll_nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 30px;
  row-gap: 6px;
  margin-left: auto;
}
.dpfll_nav-links a {
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-secondary);
  transition: var(--ease);
  padding: 4px 0;
  white-space: nowrap;
  border-bottom: 1px solid transparent;
}
.dpfll_nav-links a:hover { color: var(--gold-flat); border-bottom-color: var(--gold-flat); }

/* Burger */
.dpfll_nav-burger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
}
.dpfll_nav-burger span {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--gold-flat);
  transition: var(--ease);
}
.dpfll_nav-burger.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.dpfll_nav-burger.active span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.dpfll_nav-burger.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ═══════════════════════════════════════════ HERO */
.dpfll_hero {
  position: relative;
  height: 100vh;
  min-height: 680px;
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
/* Sepia color-cast (blend) + a plain darkening scrim above it for text
   legibility — two stacked layers instead of a CSS filter on .dpfll_hero itself,
   so the centered headline/dek stay fully legible and undistorted. */
.dpfll_hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, var(--ph1), var(--ph2) 55%, var(--ph3));
  mix-blend-mode: color;
  opacity: 0.6;
}
.dpfll_hero-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--c-bg) 74%, transparent) 0%,
    color-mix(in srgb, var(--c-bg) 38%, transparent) 42%,
    color-mix(in srgb, var(--c-bg) 48%, transparent) 60%,
    color-mix(in srgb, var(--c-bg) 88%, transparent) 100%
  );
}
.dpfll_hero-content {
  position: relative;
  z-index: 2;
  max-width: 760px;
  padding: 0 clamp(24px, 8vw, 64px);
  animation: fadeInUp 0.9s ease both;
}
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: none; }
}
.dpfll_hero-kicker {
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--gold-flat);
  margin-bottom: 22px;
}
.dpfll_hero-title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(2.4rem, 6.5vw, 5rem);
  line-height: 0.98;
  color: var(--text-heading);
  margin-bottom: 22px;
  text-wrap: balance;
}
/* Sits over the hero photo — --text-heading (plain ink) instead of the
   softer --text-secondary blend, meaningfully darker on a light palette. */
.dpfll_hero-subtitle,
.dpfll_dek {
  font-family: var(--font-display);
  font-style: italic;
  font-size: clamp(1rem, 1.8vw, 1.2rem);
  color: var(--text-heading);
  max-width: 52ch;
  margin: 0 auto 40px;
  line-height: 1.6;
}
.dpfll_hero-actions { display: flex; gap: 16px; flex-wrap: wrap; justify-content: center; }
.dpfll_hero-scroll {
  position: absolute;
  bottom: 32px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 2;
  color: var(--text-secondary);
  transition: var(--ease);
}
.dpfll_hero-scroll:hover { color: var(--gold-flat); }
.dpfll_scroll-arrow {
  display: block;
  font-size: 20px;
  animation: bounceY 2s ease-in-out infinite;
}
@keyframes bounceY {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(8px); }
}

/* ══════════════════════════════════ HIGHLIGHTS STRIP */
.dpfll_highlights-strip {
  background: var(--c-bg);
  border-top: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  padding: 52px 0;
}
.dpfll_highlights-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 40px;
}
.dpfll_highlight-item { display: flex; flex-direction: column; }
.dpfll_highlight-icon { display: none; }

/* ═══════════════════════════════════════════ ABOUT */
.dpfll_about-section { background: var(--c-bg); }
.dpfll_about-grid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 72px;
  align-items: center;
}
.dpfll_about-stats {
  display: flex;
  gap: 36px;
  margin-top: 40px;
  padding-top: 28px;
  border-top: 1px solid var(--hairline);
}
.dpfll_stat-number {
  display: block;
  font-family: var(--font-display);
  font-size: 2.1rem;
  font-weight: 700;
  color: var(--gold-flat);
}
.dpfll_stat-label {
  display: block;
  font-family: var(--font-ui);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-secondary);
  margin-top: 6px;
}
.dpfll_about-image-group { position: relative; }
.dpfll_about-image {
  aspect-ratio: 4/5;
  overflow: hidden;
}
.dpfll_about-image-inset {
  right: -8%;
  bottom: -10%;
  width: 48%;
  aspect-ratio: 4/3;
  overflow: hidden;
}

/* ═══════════════════════════════════════════ ROOMS */
.dpfll_rooms-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--hairline);
  border: 1px solid var(--hairline);
}
.dpfll_room-card {
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--c-bg);
  border-radius: 0;
  border-left: none;
  padding-left: 0;
}
.dpfll_room-card:hover { background: var(--c-s1); }
.dpfll_featured-card { background: var(--c-s1); }
.dpfll_room-image-wrap {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  border: none;
  border-bottom: 1px solid var(--hairline);
}
.dpfll_room-image-wrap img { transition: transform 0.6s ease; }
.dpfll_room-card:hover .dpfll_room-image-wrap img { transform: scale(1.03); }

.dpfll_room-feature-badge {
  position: absolute;
  bottom: 14px;
  left: 14px;
  background: color-mix(in srgb, var(--c-bg) 82%, transparent);
  border: 1px solid var(--hairline);
  color: var(--text-heading);
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 5px 10px;
}
.dpfll_room-popular-badge {
  position: absolute;
  top: 14px;
  right: 14px;
  background: var(--gold-flat);
  color: var(--md-sys-color-on-primary, #161311);
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 5px 10px;
}
.dpfll_room-body { padding: 26px; border-left: 1px solid var(--hairline); flex: 1; display: flex; flex-direction: column; }
.dpfll_room-name { margin-bottom: 10px; }
.dpfll_room-desc {
  flex: 1;
  margin-bottom: 20px;
}
.dpfll_room-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-top: 16px;
  border-top: 1px solid var(--hairline);
}
.dpfll_room-price {
  font-family: var(--font-display);
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--text-heading);
}
.dpfll_room-price small {
  font-family: var(--font-ui);
  font-size: 0.65rem;
  font-weight: 400;
  color: var(--text-secondary);
}

/* ═══════════════════════════════════════════ CASINO */
.dpfll_casino-section { padding: 0; border-top: 1px solid var(--hairline); }
.dpfll_casino-bg {
  position: relative;
  min-height: 580px;
  background-size: cover;
  background-position: center;
  background-attachment: fixed;
  display: flex;
  align-items: center;
}
.dpfll_casino-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, var(--ph1), var(--ph2) 55%, var(--ph3));
  mix-blend-mode: color;
  opacity: 0.55;
}
.dpfll_casino-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, color-mix(in srgb, var(--c-bg) 96%, transparent) 0%, color-mix(in srgb, var(--c-bg) 62%, transparent) 100%);
}
.dpfll_casino-content {
  position: relative;
  z-index: 2;
  padding: 84px 24px;
  max-width: 660px;
}
.dpfll_casino-desc {
  color: var(--text-secondary);
  line-height: 1.75;
  margin-bottom: 40px;
}
.dpfll_casino-features {
  display: flex;
  gap: 0;
  flex-wrap: wrap;
  margin-bottom: 44px;
  border-top: 1px solid var(--hairline);
  border-left: 1px solid var(--hairline);
}
.dpfll_casino-feature {
  display: flex;
  flex-direction: column;
  gap: 4px;
  color: var(--text-heading);
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 16px 20px;
  border-right: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  flex: 1;
  min-width: 140px;
}

/* ═══════════════════════════════════════════ DINING */
.dpfll_dining-section { background: var(--c-bg); }
.dpfll_dining-grid {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 72px;
  align-items: center;
}
.dpfll_dining-image-group { position: relative; }
.dpfll_dining-image {
  aspect-ratio: 4/5;
  overflow: hidden;
}
.dpfll_dining-image-inset {
  left: -8%;
  bottom: -10%;
  width: 48%;
  aspect-ratio: 4/3;
  overflow: hidden;
}

/* ═══════════════════════════════════════ AMENITIES */
.dpfll_amenities-layout {
  display: grid;
  grid-template-columns: 0.8fr 1.2fr;
  gap: 60px;
  align-items: center;
}
.dpfll_amenities-image {
  aspect-ratio: 3/4;
  overflow: hidden;
}
.dpfll_amenities-list { margin-top: 28px; }
.dpfll_amenities-list li {
  list-style: none;
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 16px 0;
  border-bottom: 1px solid var(--hairline);
  font-size: 1.02rem;
  color: var(--text-secondary);
  transition: var(--ease);
}
.dpfll_amenities-list li:first-child { border-top: 1px solid var(--hairline); }
.dpfll_amenities-list li:hover { color: var(--text-heading); }
.dpfll_amenities-list .dpfll_lbl { margin-bottom: 0; flex-shrink: 0; }

/* ══════════════════════════════════ TESTIMONIALS */
.dpfll_testimonials-section { background: var(--c-bg); }

.dpfll_testimonial-card {
  background: transparent;
  border: none;
  border-left: 2px solid var(--gold-flat);
  padding: 4px 8px 36px 24px;
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: 14px;
  position: relative;
}
.dpfll_testimonial-mark {
  font-family: var(--font-display);
  font-size: 3.2rem;
  font-weight: 700;
  line-height: 0.5;
  color: var(--gold-flat);
  opacity: 0.7;
}
.dpfll_testimonial-text {
  font-family: var(--font-display);
  font-size: 1.15rem;
  color: var(--text-heading);
  line-height: 1.6;
  font-style: italic;
  flex: 1;
}
.dpfll_testimonial-author {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-top: 16px;
  border-top: 1px solid var(--hairline);
}
.dpfll_testimonial-name {
  font-family: var(--font-ui);
  font-weight: 700;
  color: var(--text-heading);
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.dpfll_testimonial-location {
  font-family: var(--font-ui);
  font-size: 0.75rem;
  color: var(--text-secondary);
  letter-spacing: 0.04em;
}

/* Swiper overrides */
.dpfll_testimonials-swiper { padding-bottom: 48px !important; }
.swiper-pagination-bullet {
  background: var(--hairline);
  opacity: 1;
  border-radius: 0;
  width: 6px; height: 6px;
}
.swiper-pagination-bullet-active {
  background: var(--gold-flat);
}

/* ═══════════════════════════════ INTERLUDE (photo-essay page-break) */
.dpfll_interlude-section { border-top: 1px solid var(--hairline); border-bottom: 1px solid var(--hairline); }
.dpfll_interlude-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--hairline);
}
.dpfll_interlude-item   { overflow: hidden; position: relative; }
.dpfll_interlude-tall,
.dpfll_interlude-wide,
.dpfll_interlude-square { aspect-ratio: 4/3; }
.dpfll_interlude-item img { transition: transform 0.6s ease; }
.dpfll_interlude-item:hover img { transform: scale(1.04); }
.dpfll_interlude-caption {
  position: absolute;
  bottom: 10px; left: 10px;
  background: color-mix(in srgb, var(--c-bg) 78%, transparent);
  border: 1px solid var(--hairline);
  color: var(--text-heading);
  font-family: var(--font-ui);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 4px 8px;
}

/* ═══════════════════════════════ MORE SERVICES (home teaser for services
   beyond the header's first 4 — see src/builder.js HEADER_SERVICE_LIMIT) */
.dpfll_more-services-section { background: var(--c-bg); }
.dpfll_more-services-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
}

/* ═══════════════════════════════════════════ CONTACT */
.dpfll_contact-section { background: var(--c-bg); }
.dpfll_contact-grid {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 72px;
  align-items: start;
}
.dpfll_contact-details { display: flex; flex-direction: column; gap: 20px; margin: 32px 0; }
.dpfll_contact-item    { display: flex; align-items: center; gap: 14px; color: var(--text-secondary); font-size: 0.95rem; font-family: var(--font-ui); }
.dpfll_contact-icon    { display: none; }
.dpfll_contact-item a:hover { color: var(--gold-flat); }
.dpfll_contact-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
/* Leaflet map — Leaflet's own CSS gives internal panes/controls z-index up to 1000
   (way above our fixed header's 200); without its own stacking context, that
   1000 gets compared directly against the header's 200 in the shared root context
   and wins, rendering the map's controls/popups on top of the header. `isolation:
   isolate` contains Leaflet's entire z-index range inside this box so it can never
   escape above anything outside it, regardless of how high Leaflet's internal
   values go. */
.dpfll_hotel-map {
  aspect-ratio: 4/5;
  overflow: hidden;
  border: 1px solid var(--text-heading);
  isolation: isolate;
  filter: sepia(0.5) contrast(1.05);
}

/* Custom pin */
.dpfll_map-pin {
  width: 40px; height: 40px;
  background: var(--gold-flat);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: var(--md-sys-color-on-primary, #161311); font-size: 18px;
  border: 2px solid color-mix(in srgb, var(--c-bg) 60%, white);
  filter: none;
}

.leaflet-popup-content-wrapper {
  background: var(--c-s2) !important;
  border: 1px solid var(--hairline) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  color: var(--text-body) !important;
  filter: none !important;
}
.leaflet-popup-content-wrapper strong { color: var(--gold-flat); }
.leaflet-popup-content-wrapper span   { font-size: 12px; color: var(--text-secondary); }
.leaflet-popup-tip-container .leaflet-popup-tip { background: var(--c-s2) !important; }
.leaflet-popup-close-button { color: var(--text-secondary) !important; }
.leaflet-popup-close-button:hover { color: var(--gold-flat) !important; }

.leaflet-bar a {
  background: var(--c-s2) !important;
  color: var(--gold-flat) !important;
  border-color: var(--hairline) !important;
  filter: none !important;
}
.leaflet-bar a:hover { background: var(--c-s3) !important; }

.leaflet-control-attribution {
  background: color-mix(in srgb, var(--c-bg) 75%, transparent) !important;
  color: var(--text-secondary) !important;
  font-size: 10px !important;
  filter: none !important;
}
.leaflet-control-attribution a { color: var(--text-secondary) !important; }

/* ═══════════════════════════════════════════ FOOTER */
.dpfll_footer { background: var(--c-bg); }
.dpfll_footer-inner {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 44px;
  padding: 64px 24px 48px;
  max-width: var(--container-max);
  margin: 0 auto;
}
.dpfll_footer-logo {
  display: block;
  font-family: var(--font-display);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--text-heading);
  margin-bottom: 14px;
}
.dpfll_footer-brand p  { font-family: var(--font-body); font-size: 0.88rem; color: var(--text-secondary); line-height: 1.7; max-width: 240px; }
.dpfll_footer-links h4 {
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-flat);
  margin-bottom: 20px;
}
.dpfll_footer-links ul { display: flex; flex-direction: column; gap: 11px; }
.dpfll_footer-links a  { font-family: var(--font-ui); font-size: 12px; color: var(--text-secondary); transition: var(--ease); }
.dpfll_footer-links a:hover { color: var(--gold-flat); }
.dpfll_footer-bottom {
  border-top: 1px solid var(--hairline);
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 20px 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-family: var(--font-ui);
}
.dpfll_footer-bottom p  { font-family: var(--font-ui); font-size: 11px; color: var(--text-secondary); }
.dpfll_gambling-notice  { font-size: 10px !important; }

/* ══════════════════════════════════ COOKIE BANNER */
.dpfll_cookie-banner {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  z-index: 999;
  background: var(--c-s1);
  border-top: 3px solid var(--text-heading);
  padding: 16px 0;
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.dpfll_cookie-banner.hidden {
  transform: translateY(110%);
  opacity: 0;
  pointer-events: none;
}
.dpfll_cookie-banner-inner {
  display: flex;
  align-items: center;
  gap: 22px;
  flex-wrap: wrap;
}
.dpfll_cookie-stamp {
  display: inline-block;
  font-family: var(--font-ui);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--gold-flat);
  border: 1px solid var(--gold-flat);
  padding: 2px 6px;
  margin-right: 8px;
  transform: rotate(-2deg);
}
.dpfll_cookie-banner-text {
  flex: 1;
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.6;
  min-width: 240px;
}
.dpfll_cookie-banner-text strong { color: var(--text-heading); }
.dpfll_cookie-banner-text a { color: var(--gold-flat); text-decoration: underline; text-underline-offset: 3px; }
.dpfll_cookie-banner-actions {
  display: flex;
  gap: 12px;
  flex-shrink: 0;
}
.dpfll_cookie-btn-accept,
.dpfll_cookie-btn-reject {
  padding: 10px 22px;
  border: 1px solid transparent;
  border-radius: 0;
  font-family: var(--font-ui);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
  transition: var(--ease);
}
.dpfll_cookie-btn-accept {
  background: var(--gold-flat);
  color: var(--md-sys-color-on-primary, #161311);
}
.dpfll_cookie-btn-accept:hover { opacity: 0.86; }
.dpfll_cookie-btn-reject {
  background: transparent;
  color: var(--text-heading);
  border: 1px solid var(--text-heading);
}
.dpfll_cookie-btn-reject:hover { border-color: var(--gold-flat); color: var(--gold-flat); }

/* ═══════════════════════════════ LEGAL / COMPLIANCE PAGES */
.dpfll_legal-page {
  padding: 108px 0 100px;
  min-height: 80vh;
}
.dpfll_legal-header {
  margin-bottom: 48px;
  border-top: 3px solid var(--text-heading);
  border-bottom: 1px solid var(--hairline);
  padding: 14px 0 28px;
}
.dpfll_legal-header h1 {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 700;
  color: var(--text-heading);
  margin-bottom: 8px;
}
.dpfll_legal-meta {
  font-family: var(--font-ui);
  font-size: 12px;
  color: var(--text-secondary);
}
.dpfll_legal-notice {
  background: var(--c-s1);
  border: 1px solid var(--hairline);
  border-left: 3px solid var(--gold-flat);
  padding: 20px 24px;
  margin-bottom: 44px;
  font-size: 0.95rem;
  color: var(--text-secondary);
  line-height: 1.75;
}
.dpfll_legal-notice--warning {
  border-left-color: #C0524A;
  background: var(--c-s1);
  border-color: var(--hairline);
}
.dpfll_legal-notice--warning strong { color: #D68880; }
.dpfll_legal-warning {
  background: var(--c-s1);
  border: 1px solid var(--hairline);
  border-left: 3px solid #C0524A;
  padding: 20px 24px;
  margin: 16px 0 24px;
  font-size: 0.95rem;
  color: #D68880;
  line-height: 1.7;
}
.dpfll_legal-section {
  margin-bottom: 48px;
  /*
   * Policy sections are nested in the legal documents. Multi-column layout on
   * a parent section fragments its child sections and tables across columns,
   * which also creates horizontal overflow. Keep the legal reading flow
   * consistently vertical at every viewport size.
   */
  columns: 1;
  column-gap: 0;
}
.dpfll_legal-section h2 {
  font-family: var(--font-display);
  font-size: 1.45rem;
  font-weight: 700;
  color: var(--text-heading);
  margin-bottom: 16px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--hairline);
  column-span: all;
}
.dpfll_legal-section h3 {
  font-family: var(--font-ui);
  font-size: 0.95rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text-heading);
  margin: 22px 0 12px;
}
.dpfll_legal-section p {
  font-size: 0.98rem;
  color: var(--text-secondary);
  line-height: 1.8;
  margin-bottom: 16px;
}
.dpfll_legal-section p:first-of-type::first-letter {
  font-family: var(--font-display);
  font-size: 2.6rem;
  font-weight: 700;
  float: left;
  line-height: 0.8;
  margin: 0.04em 0.07em 0 0;
  color: var(--gold-flat);
}
.dpfll_legal-section a { color: var(--gold-flat); text-decoration: underline; text-underline-offset: 3px; }
.dpfll_legal-section a:hover { opacity: 0.8; }
.dpfll_legal-section ul,
.dpfll_legal-section ol {
  margin: 10px 0 18px 22px;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.dpfll_legal-section ul { list-style: square; }
.dpfll_legal-section ol { list-style: decimal; }
.dpfll_legal-section li { font-size: 0.95rem; color: var(--text-secondary); line-height: 1.7; }
.dpfll_legal-section ul ul { margin-top: 8px; list-style: circle; }

.dpfll_legal-box {
  background: var(--c-s1);
  border: 1px solid var(--hairline);
  padding: 20px 24px;
  margin: 16px 0 24px;
  font-size: 0.9rem;
  color: var(--text-secondary);
  line-height: 1.8;
  break-inside: avoid;
}

/* Legal table */
.dpfll_table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; box-shadow: inset -12px 0 8px -8px rgba(0,0,0,0.18); }
.dpfll_legal-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  margin: 16px 0 24px;
  font-size: 0.85rem;
  break-inside: avoid;
  background: var(--c-s2);
  border: 1px solid var(--text-heading);
}
.dpfll_legal-table thead tr { background: transparent; }
.dpfll_legal-table thead th {
  padding: 10px 14px;
  text-align: left;
  font-family: var(--font-ui);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--gold-flat);
  background: var(--c-s2);
  border-bottom: 2px solid var(--text-heading);
  border-right: 1px solid var(--hairline);
}
.dpfll_legal-table thead th:last-child { border-right: none; }
.dpfll_legal-table tbody tr:last-child td { border-bottom: none; }
.dpfll_legal-table tbody td {
  padding: 10px 14px;
  color: var(--text-secondary);
  vertical-align: top;
  line-height: 1.6;
  border-bottom: 1px solid var(--hairline);
  border-right: 1px solid var(--hairline);
}
.dpfll_legal-table tbody td:last-child { border-right: none; }

/* Responsible gambling helplines */
.dpfll_helplines-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--hairline);
  border: 1px solid var(--hairline);
  margin: 22px 0;
  column-span: all;
}
.dpfll_helpline-card {
  background: var(--c-bg);
  padding: 24px 20px;
}
.dpfll_helpline-card h3 {
  font-family: var(--font-display);
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--text-heading);
  margin: 0 0 10px;
  text-transform: none;
  letter-spacing: normal;
}
.dpfll_helpline-card p { font-family: var(--font-ui); font-size: 0.82rem; margin-bottom: 4px; color: var(--text-secondary); }
.dpfll_helpline-card strong { color: var(--gold-flat); }
.dpfll_helpline-card a { font-size: 0.82rem; color: var(--gold-flat); text-decoration: underline; }

/* Footer legal id */
.dpfll_footer-legal-id {
  font-family: var(--font-ui) !important;
  font-size: 0.7rem !important;
  color: var(--text-secondary) !important;
  margin-top: 8px !important;
}

/* ═══════════════════════════════════ BOOKING MODAL */
.dpfll_bm {
  position: fixed; inset: 0; z-index: 500;
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
}
.dpfll_bm[hidden] { display: none; }

.dpfll_bm-overlay {
  position: absolute; inset: 0;
  background: color-mix(in srgb, black 82%, transparent);
  opacity: 0;
  transition: opacity 0.28s ease;
}
.dpfll_bm.open .dpfll_bm-overlay { opacity: 1; }

.dpfll_bm-dialog {
  position: relative; z-index: 1;
  background: var(--c-s1);
  border: 1px solid var(--hairline);
  border-top: 3px solid var(--text-heading);
  padding: 40px 38px;
  width: 100%; max-width: 460px;
  max-height: 92vh; overflow-y: auto;
  opacity: 0; transform: translateY(16px);
  transition: opacity 0.28s ease, transform 0.28s ease;
}
.dpfll_bm.open .dpfll_bm-dialog { opacity: 1; transform: none; }

.dpfll_bm-close {
  position: absolute; top: 14px; right: 16px;
  background: none; border: none;
  color: var(--text-secondary); font-size: 16px;
  cursor: pointer; padding: 6px; line-height: 1;
  transition: color 0.2s;
}
.dpfll_bm-close:hover { color: var(--gold-flat); }

.dpfll_bm-header        { margin-bottom: 22px; }
.dpfll_bm-header h2     { font-family: var(--font-display); font-weight: 700; font-size: 1.65rem; color: var(--text-heading); margin-bottom: 6px; }
.dpfll_bm-subtitle      { font-family: var(--font-ui); font-size: 0.8rem; color: var(--text-secondary); }

.dpfll_bm-room-tag {
  display: inline-block;
  background: transparent;
  border: 1px solid var(--gold-flat);
  color: var(--gold-flat);
  font-family: var(--font-ui);
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.06em; text-transform: uppercase;
  padding: 5px 12px;
  margin-bottom: 18px;
}
.dpfll_bm-room-tag[hidden] { display: none; }

.dpfll_bm-field         { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.dpfll_bm-field label   { font-family: var(--font-ui); font-size: 10px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-secondary); }
.dpfll_bm-field input,
.dpfll_bm-field select  {
  background: var(--c-bg);
  border: 1px solid var(--hairline);
  border-radius: 0;
  padding: 12px 14px;
  font-family: var(--font-body); font-size: 0.9rem;
  color: var(--text-body); outline: none;
  transition: border-color 0.2s;
  -webkit-appearance: none; appearance: none;
}
.dpfll_bm-field input::placeholder { color: var(--text-secondary); opacity: 0.6; }
.dpfll_bm-field input:focus,
.dpfll_bm-field select:focus  { border-color: var(--gold-flat); }
.dpfll_bm-field input.error   { border-color: #C0524A; }

.dpfll_bm-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }

.dpfll_bm-submit {
  width: 100%; padding: 14px; margin-top: 8px;
  background: var(--gold-flat); color: var(--md-sys-color-on-primary, #161311);
  border: none; border-radius: 0;
  font-family: var(--font-ui); font-size: 12px;
  font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  cursor: pointer; transition: opacity 0.2s;
}
.dpfll_bm-submit:hover    { opacity: 0.86; }
.dpfll_bm-submit:active   { opacity: 0.72; }
.dpfll_bm-submit:disabled { opacity: 0.5; cursor: not-allowed; }

.dpfll_bm-success       { text-align: center; padding: 16px 0; }
.dpfll_bm-success-icon  {
  width: 54px; height: 54px; border-radius: 50%;
  background: transparent;
  border: 1px solid var(--gold-flat);
  color: var(--gold-flat); font-size: 22px;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 20px;
}
.dpfll_bm-success h3    { font-family: var(--font-display); font-weight: 700; font-size: 1.35rem; color: var(--text-heading); margin-bottom: 10px; }
.dpfll_bm-success p     { font-family: var(--font-body); font-size: 0.9rem; color: var(--text-secondary); line-height: 1.7; margin-bottom: 24px; }
.dpfll_bm-close-btn {
  background: none; border: 1px solid var(--text-heading);
  border-radius: 0; color: var(--text-heading);
  padding: 10px 30px;
  font-family: var(--font-ui); font-size: 11px; font-weight: 700;
  letter-spacing: 0.06em; text-transform: uppercase;
  cursor: pointer; transition: var(--ease);
}
.dpfll_bm-close-btn:hover { border-color: var(--gold-flat); color: var(--gold-flat); }

/* ═══════════════════════════════════ SERVICE PAGES */
.dpfll_service-page { padding-top: 90px; }

.dpfll_service-hero {
  position: relative;
  height: 420px;
  background-size: cover; background-position: center;
  display: flex; align-items: flex-end;
}
/* The real bug (found via an actual browser render, not just reading the
   CSS — computed styles all looked correct, yet nothing painted): a parent
   with its own `mix-blend-mode` becomes an isolated blending group for its
   children, so the ::after scrim was compositing inside that isolated group
   instead of reaching the real photo on .dpfll_service-hero behind everything.
   .dpfll_hero-overlay/.dpfll_hero-scrim and .dpfll_casino-overlay/.dpfll_casino-scrim work because
   they're two independent SIBLING elements, neither one a blend-isolating
   parent of the other. Mirrored here: .dpfll_service-hero-overlay itself is now a
   plain, unstyled positioning wrapper (no background, no blend-mode of its
   own) — both layers live on its ::before/::after, each blending directly
   against the real photo with nothing isolating in between. */
.dpfll_service-hero-overlay {
  position: absolute; inset: 0;
}
.dpfll_service-hero-overlay::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(
    160deg,
    color-mix(in srgb, var(--ph1) 60%, transparent),
    color-mix(in srgb, var(--ph2) 60%, transparent) 55%,
    color-mix(in srgb, var(--ph3) 60%, transparent)
  );
  mix-blend-mode: color;
}
/* Same scrim as the main .dpfll_hero-scrim, for visual consistency across every
   page that has a photo in its hero. */
.dpfll_service-hero-overlay::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--c-bg) 74%, transparent) 0%,
    color-mix(in srgb, var(--c-bg) 38%, transparent) 42%,
    color-mix(in srgb, var(--c-bg) 48%, transparent) 60%,
    color-mix(in srgb, var(--c-bg) 88%, transparent) 100%
  );
}
.dpfll_service-hero-content {
  position: relative; z-index: 1;
  padding-bottom: 44px;
}
.dpfll_service-hero-content h1 {
  font-family: var(--font-display);
  font-size: clamp(2.2rem, 5vw, 3.5rem);
  font-weight: 700; color: var(--text-heading);
  margin-top: 10px;
}

.dpfll_service-body     { padding: 68px 24px 104px; max-width: 1240px; margin: 0 auto; }
.dpfll_service-intro-grid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 52px;
  align-items: center;
  margin-bottom: 56px;
}
.dpfll_service-intro    { font-size: 1.08rem; color: var(--text-secondary); line-height: 1.85; }
.dpfll_service-intro p:first-child::first-letter {
  font-family: var(--font-display);
  font-size: 3rem;
  font-weight: 700;
  float: left;
  line-height: 0.82;
  margin: 0.04em 0.08em 0 0;
  color: var(--gold-flat);
}
.dpfll_service-intro-image {
  aspect-ratio: 4/3;
  border: 1px solid var(--text-heading);
  overflow: hidden;
}

.dpfll_service-features {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px; background: var(--hairline); border: 1px solid var(--hairline);
  margin-bottom: 60px;
}
.dpfll_service-feature-card {
  background: var(--c-bg);
  padding: 28px 24px;
  transition: var(--ease);
}
.dpfll_service-feature-card:hover {
  background: var(--c-s1);
}
.dpfll_service-feature-icon { display: none; }
.dpfll_service-feature-card h3 {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.08rem; color: var(--text-heading); margin-bottom: 10px;
}
.dpfll_service-feature-card p { font-family: var(--font-body); font-size: 0.88rem; color: var(--text-secondary); line-height: 1.7; }

.dpfll_service-cta-block { text-align: center; padding-top: 16px; }
.dpfll_service-cta-btn {
  display: inline-block;
  padding: 15px 42px;
  background: var(--gold-flat); color: var(--md-sys-color-on-primary, #161311);
  border: none; border-radius: 0;
  font-family: var(--font-ui); font-size: 12px;
  font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  cursor: pointer; transition: opacity 0.2s;
}
.dpfll_service-cta-btn:hover  { opacity: 0.86; }
.dpfll_service-cta-btn:active { opacity: 0.72; }

@media (max-width: 768px) {
  .dpfll_service-features    { grid-template-columns: 1fr 1fr; }
  .dpfll_service-intro-grid  { grid-template-columns: 1fr; gap: 32px; }
  .dpfll_bm-row              { grid-template-columns: 1fr; }
  .dpfll_bm-dialog           { padding: 30px 22px; }
}
@media (max-width: 480px) {
  .dpfll_service-features { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════ RESPONSIVE */
@media (max-width: 1024px) {
  .dpfll_about-grid,
  .dpfll_dining-grid       { grid-template-columns: 1fr; gap: 44px; }
  .dpfll_about-image-group { order: -1; }
  .dpfll_rooms-grid        { grid-template-columns: 1fr 1fr; }
  .dpfll_footer-inner      { grid-template-columns: 1fr 1fr; }
  .dpfll_highlights-grid   { gap: 24px; }
  .dpfll_amenities-layout  { grid-template-columns: 1fr; gap: 36px; }
  .dpfll_amenities-image   { order: -1; aspect-ratio: 16/9; }
  .dpfll_cols              { columns: 2; }
}

@media (max-width: 860px) {
  .dpfll_cols,
  .dpfll_legal-section { columns: 1; }
}

@media (max-width: 768px) {
  :root { --section-padding: 68px 0; }

  .dpfll_hero {
    /*
     * The mobile header includes both the masthead and navigation rows.
     * Reserve their height inside the hero so its first line cannot sit
     * underneath the fixed header.
     */
    height: auto;
    min-height: 100svh;
    padding: 116px 0 44px;
    background-attachment: scroll;
  }
  .dpfll_service-page { padding-top: 104px; }
  .dpfll_casino-bg { background-attachment: scroll; }

  /* Mobile nav: burger LEFT, logo CENTERED, CTA hidden */
  .dpfll_nav-inner    { position: relative; justify-content: space-between; gap: 0; }
  .dpfll_nav-burger   { display: flex; order: 0; flex-shrink: 0; }
  .dpfll_nav-logo     {
    position: absolute;
    left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    font-size: 1rem;
  }
  .dpfll_masthead-bar { font-size: 9px; gap: 8px; }
  /* .dpfll_nav-header is `position: fixed`, so it's the containing block for this
     absolutely-positioned menu — `top: 100%` docks it flush against the
     header's actual rendered height instead of a hardcoded px guess. */
  .dpfll_nav-links {
    display: none;
    position: absolute;
    top: 100%; left: 0; right: 0;
    background: var(--c-bg);
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: flex-start;
    align-items: center;
    gap: 0;
    padding: 20px 0;
    border-bottom: 1px solid var(--hairline);
    z-index: 199;
  }
  .dpfll_nav-links.open { display: flex; }
  .dpfll_nav-links li   { width: 100%; text-align: center; }
  .dpfll_nav-links a    { display: block; padding: 14px; border-bottom: 1px solid var(--hairline); }
  .dpfll_nav-cta        { display: none; }

  .dpfll_highlights-grid { grid-template-columns: 1fr; gap: 28px; }
  .dpfll_rooms-grid      { grid-template-columns: 1fr; }
  .dpfll_contact-grid    { grid-template-columns: 1fr; }
  .dpfll_footer-inner    { grid-template-columns: 1fr 1fr; gap: 32px; }
  .dpfll_footer-bottom   { flex-direction: column; text-align: center; }
  .dpfll_casino-features { gap: 0; }
  .dpfll_about-stats     { gap: 20px; }

  /* Absolute overlap insets risk overflowing the viewport on narrow screens —
     drop into normal flow instead, pulled up over the main image via negative
     margin (safe: no absolute positioning, nothing can spill off-screen). */
  .dpfll_about-image-inset,
  .dpfll_dining-image-inset {
    position: static;
    width: 58%;
    margin: -30px 0 0 auto;
    transform: rotate(-2deg);
  }

  .dpfll_interlude-grid    { grid-template-columns: 1fr 1fr; }
  .dpfll_interlude-tall,
  .dpfll_interlude-wide,
  .dpfll_interlude-square  { aspect-ratio: 4/3; }

  .dpfll_section-masthead { padding-block: 8px; margin-bottom: 28px; }
}

/* This 768px block (tablet: 2-col helplines) must stay BEFORE the 480px
   block below — both queries are active simultaneously on phones narrower
   than 480px, and with equal specificity the one later in the file wins.
   If this were last, its "1fr 1fr" would silently override the 480px
   block's "1fr" on every phone, not just tablets. */
@media (max-width: 768px) {
  .dpfll_helplines-grid  { grid-template-columns: 1fr 1fr; }
  .dpfll_legal-page      { padding: 100px 0 64px; }
}

@media (max-width: 480px) {
  .dpfll_footer-inner    { grid-template-columns: 1fr; }
  .dpfll_interlude-grid  { grid-template-columns: 1fr; }
  .dpfll_about-stats     { flex-direction: column; gap: 16px; }
  .dpfll_cookie-banner-inner { flex-direction: column; align-items: stretch; }
  .dpfll_cookie-banner-actions { justify-content: stretch; }
  .dpfll_cookie-btn-accept,
  .dpfll_cookie-btn-reject { width: 100%; text-align: center; padding: 12px; }
  .dpfll_helplines-grid  { grid-template-columns: 1fr; }
  .dpfll_legal-table     { font-size: 0.78rem; min-width: 520px; }
  .dpfll_cols p:first-child::first-letter { font-size: 2.6rem; }
}


/* Final accessibility and policy-layout corrections */
.dpfll_casino-context {
  display: inline;
  color: var(--text-body);
}

/* Accent blue is used for small labels and links; this lighter value reaches
   normal-text contrast on the dark background. Button text is explicitly dark. */
:root {
  --gold-flat: #78A6E6;
  --text-accent: #78A6E6;
  --md-sys-color-on-primary: #12161E;
}

.dpfll_legal-page,
.dpfll_legal-page p,
.dpfll_legal-page li,
.dpfll_legal-page td,
.dpfll_legal-page .dpfll_legal-meta,
.dpfll_legal-page .dpfll_legal-notice,
.dpfll_legal-page .dpfll_legal-box {
  color: color-mix(in srgb, var(--text-heading) 84%, var(--c-bg) 16%);
}
.dpfll_legal-page a,
.dpfll_footer a,
.dpfll_cookie-banner a {
  color: #8DB8F2;
}
.dpfll_legal-page h1,
.dpfll_legal-page h2,
.dpfll_legal-page h3,
.dpfll_legal-page strong {
  color: var(--text-heading);
}

@media (max-width: 768px) {
  .dpfll_legal-page .dpfll_container {
    width: 100%;
    max-width: 100%;
    padding-inline: 18px;
  }

  .dpfll_legal-page section,
  .dpfll_legal-page .dpfll_legal-section,
  .dpfll_legal-page .dpfll_legal-header,
  .dpfll_legal-page .dpfll_legal-notice,
  .dpfll_legal-page .dpfll_legal-box,
  .dpfll_legal-page .dpfll_helplines-grid {
    display: block;
    width: 100%;
    max-width: 100%;
    columns: 1 !important;
    column-count: 1 !important;
  }

  .dpfll_legal-page .dpfll_legal-section {
    margin-bottom: 34px;
  }

  .dpfll_legal-page h1 {
    font-size: clamp(1.8rem, 9vw, 2.45rem);
    overflow-wrap: anywhere;
  }

  .dpfll_legal-page h2 {
    font-size: 1.28rem;
    line-height: 1.25;
    overflow-wrap: anywhere;
  }

  .dpfll_legal-page h3,
  .dpfll_legal-page p,
  .dpfll_legal-page li,
  .dpfll_legal-page a,
  .dpfll_legal-page td,
  .dpfll_legal-page th {
    overflow-wrap: anywhere;
    word-break: normal;
  }

  .dpfll_legal-page .dpfll_table-scroll {
    width: 100%;
    overflow: visible;
    box-shadow: none;
  }

  .dpfll_legal-page table,
  .dpfll_legal-page thead,
  .dpfll_legal-page tbody,
  .dpfll_legal-page tr,
  .dpfll_legal-page th,
  .dpfll_legal-page td {
    display: block;
    width: 100%;
    min-width: 0 !important;
  }

  .dpfll_legal-page table {
    border: 0;
    background: transparent;
  }

  .dpfll_legal-page thead {
    display: none;
  }

  .dpfll_legal-page tr {
    margin-bottom: 16px;
    padding: 14px;
    background: var(--c-s2);
    border: 1px solid var(--hairline);
  }

  .dpfll_legal-page th,
  .dpfll_legal-page td {
    padding: 8px 0;
    border: 0;
    border-bottom: 1px solid var(--hairline);
  }

  .dpfll_legal-page tr > :last-child {
    border-bottom: 0;
  }

  .dpfll_legal-page .dpfll_helplines-grid {
    background: transparent;
    border: 0;
  }

  .dpfll_legal-page .dpfll_helpline-card {
    width: 100%;
    margin-bottom: 12px;
    border: 1px solid var(--hairline);
  }
}

@media (max-width: 480px) {
  .dpfll_legal-table {
    min-width: 0 !important;
    font-size: 0.86rem;
  }
  .dpfll_legal-page {
    padding-top: 104px;
  }
}


@media (max-width: 768px) {
  .dpfll_policy-body .dpfll_footer-inner {
    grid-template-columns: 1fr;
  }

  .dpfll_legal-page td[data-label]::before {
    content: attr(data-label);
    display: block;
    margin-bottom: 4px;
    font-family: var(--font-ui);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8DB8F2;
  }
}
