contrast guarantees and distinctive visual language. */

:root[data-design-template] :where(.venue-copy,.hero-copy,.mix-of-day>div,.news-card>div,.menu-item>div,.loyalty-copy) {
  min-width: 0;
}
:root[data-design-template] :where(h1,h2,h3,p,strong,small,span) { max-width: 100%; }
:root[data-design-template] .is-single-word {
  width: 100%;
  overflow: hidden;
  white-space: nowrap;
  overflow-wrap: normal;
  text-overflow: ellipsis;
  font-size: var(--single-word-size, 24px) !important;
}

/* A loyalty card is a product surface, not decorative text over a random
   colour. Every descendant receives an explicit ink and remains AA-readable. */
:root[data-design-template] .loyalty-preview {
  --loyalty-bg: #12392d;
  --loyalty-ink: #f4fff8;
  --loyalty-muted: #c5ddd1;
  --loyalty-plastic-bg: #f4ead7;
  --loyalty-plastic-ink: #261f19;
  color: var(--loyalty-ink) !important;
  background: var(--loyalty-bg) !important;
  isolation: isolate;
}
:root[data-design-template="editorial"] .loyalty-preview {
  --loyalty-bg: #20100a;
  --loyalty-ink: #fff7f2;
  --loyalty-muted: #e3b5a2;
  --loyalty-plastic-bg: #ff5a26;
  --loyalty-plastic-ink: #160604;
}
:root[data-design-template="gallery"] .loyalty-preview {
  --loyalty-bg: #a97958;
  --loyalty-ink: #fffaf2;
  --loyalty-muted: #f5e6d8;
  --loyalty-plastic-bg: #fff9ef;
  --loyalty-plastic-ink: #382b22;
}
:root[data-design-template="nocturne"] .loyalty-preview {
  --loyalty-bg: #241d68;
  --loyalty-ink: #ffffff;
  --loyalty-muted: #d9d4ff;
  --loyalty-plastic-bg: #eac45f;
  --loyalty-plastic-ink: #17120a;
}
:root[data-design-template="atelier"] .loyalty-preview {
  --loyalty-bg: #052516;
  --loyalty-ink: #effff4;
  --loyalty-muted: #b3e9c5;
  --loyalty-plastic-bg: #10f06b;
  --loyalty-plastic-ink: #001508;
}
:root[data-design-template] .loyalty-preview::before { border-color: color-mix(in srgb, var(--loyalty-ink) 24%, transparent) !important; }
:root[data-design-template] .loyalty-copy small,
:root[data-design-template] .loyalty-copy strong,
:root[data-design-template] .loyalty-balance b,
:root[data-design-template] .loyalty-arrow { color: var(--loyalty-ink) !important; opacity: 1 !important; text-shadow: none !important; }
:root[data-design-template] .loyalty-copy span,
:root[data-design-template] .loyalty-balance small { color: var(--loyalty-muted) !important; opacity: 1 !important; }
:root[data-design-template] .loyalty-plastic {
  color: var(--loyalty-plastic-ink) !important;
  border-color: color-mix(in srgb, var(--loyalty-plastic-ink) 38%, transparent) !important;
  background: var(--loyalty-plastic-bg) !important;
  box-shadow: 0 14px 28px rgba(0,0,0,.28) !important;
}
:root[data-design-template] .loyalty-plastic::after,
:root[data-design-template] .loyalty-plastic i { border-color: color-mix(in srgb, var(--loyalty-plastic-ink) 45%, transparent) !important; }
:root[data-design-template] .loyalty-plastic i,
:root[data-design-template] .loyalty-plastic em { color: var(--loyalty-plastic-ink) !important; opacity: 1 !important; text-shadow: none !important; }

/* SAHRA — black/red/orange editorial heat. */
:root[data-design-template="editorial"] .app {
  background:
    radial-gradient(circle at 100% 3%, rgba(255,75,31,.18), transparent 28%),
    linear-gradient(rgba(5,4,3,.93), rgba(5,4,3,.98)),
    url("assets/theme-sahra-material-v52.webp") center/cover fixed !important;
}
:root[data-design-template="editorial"] .top-home,
:root[data-design-template="editorial"] .top-home:has(.hero-booking-cta) {
  border-color: rgba(255,113,56,.36);
  background: #15100d;
  box-shadow: 0 28px 64px rgba(0,0,0,.52), 0 0 0 1px rgba(255,75,31,.08);
}
:root[data-design-template="editorial"] .top-home .hero-backdrop {
  height: 51%;
  clip-path: polygon(0 0,100% 0,100% 86%,0 100%);
  filter: saturate(1.12) contrast(1.12);
}
:root[data-design-template="editorial"] .top-home::after {
  height: 54%;
  background: linear-gradient(120deg, rgba(8,2,0,.78), rgba(8,2,0,.08) 58%, rgba(255,75,31,.25));
}
:root[data-design-template="editorial"] .hero-copy {
  min-height: 50%;
  background:
    linear-gradient(90deg, #ff4b1f 0 5px, transparent 5px),
    #15100d;
}
:root[data-design-template="editorial"] .hero-copy::before { width: 74px; background: #ff9d2e; box-shadow: 0 0 18px rgba(255,157,46,.55); }
:root[data-design-template="editorial"] .hero-copy h2 { color: #fff7f2 !important; font-family: Georgia, serif; }
:root[data-design-template="editorial"] .hero-booking-cta {
  color: #160604 !important;
  background: linear-gradient(90deg, #ff4b1f, #ff9d2e) !important;
  box-shadow: 0 10px 28px rgba(255,75,31,.24);
}
:root[data-design-template="editorial"] .home-service-hub {
  position: relative;
  border-color: rgba(255,113,56,.3);
}
:root[data-design-template="editorial"] .service-quick {
  border-color: rgba(255,113,56,.28);
  background: linear-gradient(145deg, #1b120e, #100c0a);
}
:root[data-design-template="editorial"] .service-quick:nth-child(odd) { transform: translateY(7px); }
:root[data-design-template="editorial"] .service-quick span { color: #ff7138; background: rgba(255,75,31,.11); }
:root[data-design-template="editorial"] .mix-of-day { border-color: rgba(255,113,56,.3); background: #15100d; }
:root[data-design-template="editorial"] .mix-of-day img { clip-path: polygon(0 0,100% 0,88% 100%,0 100%); }
:root[data-design-template="editorial"] .tabs { border-color: rgba(255,113,56,.32); background: rgba(15,9,7,.94); }
:root[data-design-template="editorial"] .tab.on { color: #ff7138; }

/* LINEN — the only light theme: wedding stationery, parchment and soft foil. */
:root[data-design-template="gallery"] .app {
  background:
    radial-gradient(circle at 18px 18px, rgba(169,121,88,.08) 1px, transparent 1.5px) 0 0/36px 36px,
    linear-gradient(rgba(245,237,223,.91), rgba(245,237,223,.96)),
    url("assets/theme-linen-material-v52.webp") center/cover fixed !important;
}
:root[data-design-template="gallery"] .top-home,
:root[data-design-template="gallery"] .top-home:has(.hero-booking-cta) {
  border: 1px solid rgba(140,96,72,.24);
  box-shadow: 0 22px 54px rgba(87,62,45,.16), inset 0 0 0 7px rgba(255,249,240,.2);
}
:root[data-design-template="gallery"] .top-home::before {
  position: absolute;
  z-index: 2;
  right: 14px;
  bottom: 14px;
  width: 62px;
  height: 62px;
  border: 1px solid rgba(255,249,240,.6);
  border-radius: 50%;
  content: "✦";
  display: grid;
  place-items: center;
  color: #fff9f0;
  font-size: 22px;
  pointer-events: none;
}
:root[data-design-template="gallery"] .hero-copy {
  border-color: rgba(140,96,72,.22);
  background: rgba(255,249,240,.94);
  box-shadow: 0 16px 36px rgba(69,48,34,.16);
}
:root[data-design-template="gallery"] .hero-copy h2 { color: #2c241e !important; font-family: Georgia, serif; font-weight: 400; }
:root[data-design-template="gallery"] .hero-copy .hero-eyebrow { color: #8c6048 !important; }
:root[data-design-template="gallery"] .hero-booking-cta { color: #fffaf2 !important; background: #a97958 !important; }
:root[data-design-template="gallery"] :where(.section-headline h2,.service-hub-head h2,.mix-of-day h3,.content-intro h2) {
  color: #2c241e;
  font-family: Georgia, serif;
  font-weight: 400;
}
:root[data-design-template="gallery"] .service-quick,
:root[data-design-template="gallery"] :where(.mix-of-day,.news-card,.menu-item) {
  border: 1px solid rgba(140,96,72,.18);
  background: rgba(255,249,240,.94);
  box-shadow: 0 13px 30px rgba(86,60,43,.09);
}
:root[data-design-template="gallery"] .service-quick:nth-child(2n) { border-radius: 9px 34px 34px 34px; }
:root[data-design-template="gallery"] .tabs { border-color: rgba(140,96,72,.22); background: rgba(255,249,240,.96); }

/* EMBER — neon-green HUD. No warm copper survives in this theme. */
:root[data-design-template="atelier"] .app {
  background:
    linear-gradient(rgba(16,240,107,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(16,240,107,.035) 1px, transparent 1px),
    radial-gradient(circle at 76% 8%, rgba(16,240,107,.16), transparent 27%),
    #020705 !important;
  background-size: 28px 28px, 28px 28px, auto, auto !important;
}
:root[data-design-template="atelier"] .top-home,
:root[data-design-template="atelier"] .top-home:has(.hero-booking-cta) {
  border-color: rgba(16,240,107,.54);
  background: #020705;
  box-shadow: 0 0 0 1px rgba(16,240,107,.08), 0 0 42px rgba(16,240,107,.12), 0 30px 58px rgba(0,0,0,.55);
}
:root[data-design-template="atelier"] .top-home .hero-backdrop { filter: grayscale(.3) saturate(.8) contrast(1.18) hue-rotate(64deg); }
:root[data-design-template="atelier"] .top-home::after {
  background:
    linear-gradient(90deg, #020705 0 39%, rgba(2,7,5,.87) 58%, rgba(2,7,5,.28)),
    repeating-linear-gradient(180deg, rgba(16,240,107,.035) 0 1px, transparent 1px 5px);
}
:root[data-design-template="atelier"] .top-home .top-row {
  border-color: #10f06b;
  background: rgba(3,17,10,.9);
  box-shadow: 0 0 22px rgba(16,240,107,.1);
}
:root[data-design-template="atelier"] .hero-copy h2 { color: #edfff3 !important; text-shadow: 0 0 24px rgba(16,240,107,.18); }
:root[data-design-template="atelier"] .hero-booking-cta {
  color: #001508 !important;
  border-color: #10f06b;
  background: #10f06b !important;
  box-shadow: 0 0 24px rgba(16,240,107,.28);
}
:root[data-design-template="atelier"] .home-service-hub,
:root[data-design-template="atelier"] .service-quick,
:root[data-design-template="atelier"] :where(.mix-of-day,.news-card,.menu-item) {
  border-color: rgba(16,240,107,.3);
  background: linear-gradient(145deg, rgba(8,29,17,.96), rgba(4,14,9,.96));
}
:root[data-design-template="atelier"] .service-quick::after { background: #a4ff3f; box-shadow: 0 0 12px #10f06b; }
:root[data-design-template="atelier"] .service-quick span { color: #10f06b; background: rgba(16,240,107,.1); box-shadow: inset 0 0 0 1px rgba(16,240,107,.2); }
:root[data-design-template="atelier"] .tabs { background: rgba(2,7,5,.72); backdrop-filter: blur(12px); }
:root[data-design-template="atelier"] .tab { border-color: rgba(16,240,107,.24); background: rgba(4,18,10,.94); }
:root[data-design-template="atelier"] .tab.on { color: #001508; border-color: #10f06b; background: #10f06b; box-shadow: 0 0 24px rgba(16,240,107,.3); }

@media (max-width: 390px) {
  :root[data-design-template="editorial"] .service-quick:nth-child(odd) { transform: none; }
  :root[data-design-template="gallery"] .top-home::before { width: 48px; height: 48px; }
}

@media (prefers-reduced-motion: reduce) {
  :root[data-design-template] * { animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
