@import url("/assets/fonts/google/fonts.css");


@import url("/assets/fonts/google/fonts.css");


/* base tokens */
/* =====================================================================
 * tokens.css — global CSS custom properties (design tokens).
 * =====================================================================
 *
 * These are the variables every styled component reads via `var(...)`.
 * Defaults here are NEUTRAL — every hotel's specific palette comes
 * from its brand record, applied at runtime when the brand store
 * resolves.
 *
 * Future agents:
 *   · Add a new token here only if it's used across multiple
 *     components. Single-component values stay scoped to that
 *     component's <style scoped>.
 *   · Token names follow `--site-<group>-<role>` (e.g.
 *     `--site-color-fg`, `--site-radius-md`). Stable so brand-
 *     application logic can map onto them deterministically.
 *   · The brand store doesn't yet write into these — that wiring
 *     gets added when the first styled section lands.
 */
:root {
  /* The token NAMES match what services/theme.js writes. Defaults
     here are neutral — every hotel's actual palette comes from its
     brand record at runtime. */
  --site-color-bg:        #fbf9f5;
  --site-color-bg-rgb:    251, 249, 245;  /* used for translucent overlays */
  --site-color-fg:        #1a1815;
  --site-color-fg-muted:  #6b665e;
  --site-color-accent:    #1a1815;
  --site-color-accent-fg: #fbf9f5;
  --site-color-border:    #e3ddd2;

  --site-font-display: system-ui, -apple-system, sans-serif;
  --site-font-body:    system-ui, -apple-system, sans-serif;

  --site-radius-sm:    2px;
  --site-radius-md:    6px;
  --site-radius-lg:    14px;

  /* COOKIE NOTICE tokens — what a GROUP's shared notice is drawn with. Follows
     the fallback chain of the SDK's own notice (components/consent/consent.css),
     so a shared notice and the settings panel it opens match on every hotel. */
  --site-notice-bg:           var(--consent-bg, var(--site-color-surface, var(--site-color-bg)));
  --site-notice-fg:           var(--consent-fg, var(--site-color-fg));
  --site-notice-muted:        color-mix(in srgb, var(--site-notice-fg) 68%, transparent);
  --site-notice-accent:       var(--consent-accent, var(--site-color-accent, var(--site-notice-fg)));
  --site-notice-on-accent:    var(--consent-on-accent, var(--site-color-on-accent, var(--site-notice-bg)));
  --site-notice-rule:         color-mix(in srgb, var(--site-notice-fg) 14%, transparent);
  --site-notice-radius:       var(--consent-radius, var(--site-radius, 14px));
  --site-notice-font-display: var(--site-font-display);
  --site-notice-font-body:    var(--site-font-body);

  /* FOOTER tokens — the surface a GROUP's shared footer is drawn with
     (settings `shared_components`). One footer is written once and linked to
     every site of a group, so it may read nothing a theme invents for itself
     (`--hdt-*`, `--bab-*`, literal hex) — only these. Each falls back to the
     site's general palette and type, so a theme that sets none of them still
     gets a footer in its own colours; a theme that wants its footer ground or
     link colour exact sets the token in its own `tokens.css`. */
  --site-footer-bg:           var(--site-color-fg);
  --site-footer-fg:           var(--site-color-bg);
  --site-footer-muted:        color-mix(in srgb, var(--site-footer-fg) 68%, transparent);
  --site-footer-link:         var(--site-footer-fg);
  --site-footer-accent:       var(--site-color-accent);
  --site-footer-rule:         color-mix(in srgb, var(--site-footer-fg) 18%, transparent);
  --site-footer-font-display: var(--site-font-display);
  --site-footer-font-body:    var(--site-font-body);
  --site-footer-logo-h:       44px;
  /* A texture laid behind the footer (a shared footer's `ground` media): how
     strongly it shows, and the size one tile is drawn at. */
  --site-footer-texture-opacity: 0.18;
  --site-footer-texture-size:    480px;

  /* ⚠️ A SEED, NOT A MEASUREMENT. `App.vue` measures the real bar after mount
     and overwrites this on :root, along with `--site-header-reserve` — what
     the shell actually pads by, which is 0 for a bar in flow. Kept only so
     rules that read it before first measurement have a sane number. */
  --site-header-h:     76px;
  --site-header-reserve: 0px;

  /* ===================================================================
   * STRUCTURAL tokens — the theme's visual RHYTHM, not just its palette.
   * ===================================================================
   *
   * These extend the stable `--site-*` surface beyond colour/font/radius
   * so the LOCKED booking pages (BookView / CheckoutView / Confirmation)
   * can inherit a theme's FULL visual language — type scale, spacing,
   * elevation, and motion — instead of looking like a generic recolour.
   *
   * Defaults here are deliberately NEUTRAL (a clean, calm shell). Each
   * generated theme's `theme/tokens.css` MAPS its bespoke scale onto
   * these names (see the design-tokens skill) so the booking surface
   * picks up the same rhythm as the rest of the site. Setting these is
   * additive + backward-compatible: a theme that sets none of them still
   * renders correctly on the neutral defaults below.
   *
   * As with colours, the names are STABLE so theme-application logic can
   * map onto them deterministically.
   */

  /* --- Type scale ---------------------------------------------------
   * Display sizes for hero/section headings, body sizes for prose +
   * controls. Fluid `clamp()` so the neutral shell reads well at any
   * width; a theme overrides with its own step ladder. */
  --site-font-size-display-xl: clamp(2.25rem, 5vw, 3.5rem);
  --site-font-size-display-lg: clamp(1.75rem, 3.5vw, 2.5rem);
  --site-font-size-display-md: clamp(1.25rem, 2vw, 1.5rem);
  --site-font-size-body-lg:    1.0625rem;
  --site-font-size-body:       0.9375rem;
  --site-font-size-body-sm:    0.8125rem;

  --site-line-height-display:  1.1;
  --site-line-height-body:     1.55;

  --site-letter-spacing-tight:  -0.01em;
  --site-letter-spacing-normal: 0;

  /* --- Spacing ladder ----------------------------------------------
   * A geometric-ish step used for gaps, padding, and rhythm. Themes
   * remap to their own gutter/section scale. */
  --site-space-xs: 0.5rem;
  --site-space-sm: 0.75rem;
  --site-space-md: 1.25rem;
  --site-space-lg: 2rem;
  --site-space-xl: 3rem;

  /* --- Elevation ----------------------------------------------------
   * Soft, neutral shadows. Themes supply brand-tinted equivalents. */
  --site-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
  --site-shadow-md: 0 8px 24px rgba(0, 0, 0, 0.10);

  /* --- Motion -------------------------------------------------------
   * One easing + one base duration the locked pages reach for on
   * transitions. Themes set their committed curve/timing here so the
   * booking surface moves with the same feel as the rest of the site. */
  --site-ease:     cubic-bezier(0.22, 1, 0.36, 1);
  --site-duration: 240ms;

  /* --- Legacy / alternate token vocabulary (backward-compat) --------
   * Some generated themes' components were authored against an older
   * --site-* naming scheme — a NUMERIC spacing scale (--site-space-1..6)
   * and --site-text-*/--site-track-*/--site-leading-*/--site-dur-* names —
   * rather than the named scale above. When a component reaches for a name
   * not defined anywhere, that custom property resolves to NOTHING and the
   * declaration is dropped (e.g. `gap: clamp(var(--site-space-3),…)` becomes
   * `normal` → a nav with no spacing; `font-size: var(--site-text-h1)` falls
   * back to 16px → collapsed type). Aliasing the legacy names onto the canonical
   * tokens here — the always-loaded base — keeps EVERY component resolving
   * regardless of which vocabulary it was generated against. Purely additive;
   * themes built on the named scale are unaffected. */
  --site-space-1: var(--site-space-xs);
  --site-space-2: var(--site-space-sm);
  --site-space-3: var(--site-space-md);
  --site-space-4: var(--site-space-lg);
  --site-space-5: var(--site-space-xl);
  --site-space-6: var(--site-space-xl);

  --site-text-hero:    var(--site-font-size-display-xl);
  --site-text-display: var(--site-font-size-display-xl);
  --site-text-h1:      var(--site-font-size-display-lg);
  --site-text-h2:      var(--site-font-size-display-md);
  --site-text-h3:      var(--site-font-size-display-md);
  --site-text-lead:    var(--site-font-size-body-lg);
  --site-text-body:    var(--site-font-size-body);
  --site-text-strong:  var(--site-font-size-body);
  --site-text-muted:   var(--site-font-size-body);
  --site-text-sm:      var(--site-font-size-body-sm);
  --site-text-label:   var(--site-font-size-body-sm);
  --site-text-caption: var(--site-font-size-body-sm);
  --site-text-micro:   var(--site-font-size-body-sm);

  --site-leading-tight: var(--site-line-height-display);
  --site-leading-snug:  1.25;
  --site-leading-body:  var(--site-line-height-body);

  --site-track-tight: var(--site-letter-spacing-tight);
  --site-track-caps:  0.08em;
  --site-track-label: 0.12em;
  --site-track-cta:   0.04em;
  --site-track-wide:  0.16em;

  --site-dur-fast: 160ms;
  --site-dur-base: var(--site-duration);
  --site-dur-slow: 420ms;

  --site-radius-none: 0;
  --site-radius-xs:   3px;
  --site-bar-h:       var(--site-header-h);
  --site-max:         1200px;
  --site-hairline-w:  1px;
}

/* =====================================================================
 *  Base typography wiring.
 *
 *  Every visible character on the site reads its font through these
 *  cascaded rules — so flipping `--site-font-*` (which the brand
 *  store does at runtime) instantly changes the font everywhere
 *  without component-by-component overrides.
 *
 *    body, p, button, input, select, textarea  →  --site-font-body
 *    h1..h4                                    →  --site-font-display
 *
 *  Components that want to OPT INTO display type for non-heading
 *  text should add `font-family: var(--site-font-display)` on the
 *  relevant selector (e.g. drawer links). Components that want a
 *  different family for ONE element can override locally. The rule
 *  below establishes the right defaults so ad-hoc overrides are
 *  rare.
 * ===================================================================== */
*,
*::before,
*::after { box-sizing: border-box; }

html, body, #app { margin: 0; padding: 0; min-height: 100%; }

body {
  background: var(--site-color-bg);
  color: var(--site-color-fg);
  font-family: var(--site-font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

/* Headings always pull from the display family (Bebas Neue / Fraunces /
   etc., depending on the hotel). If a hotelier picks the same family
   for both display + body, the variable resolves the same way and
   nothing visually changes. */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--site-font-display);
  margin: 0;
}

/* Form controls don't inherit font-family by default — wire them
   explicitly so brand fonts apply to inputs, buttons, etc. */
button, input, select, textarea { font: inherit; }

img, video, svg { max-width: 100%; display: block; }
img, video { height: auto; }

/* Preserve author line breaks in CMS prose.
 *
 * Room / amenity / event descriptions, summaries, "the space", etc. are
 * entered in dashboard textareas where newlines are meaningful. HTML's
 * default `white-space: normal` collapses those newlines into spaces, so
 * paragraph breaks the hotelier typed vanished on the live site.
 *
 * `pre-line` behaves EXACTLY like `normal` (collapses runs of spaces,
 * wraps long lines) except it keeps newlines — so this is a no-op for
 * any text without literal line breaks (price rows, labels, button text)
 * and only restores breaks in author-entered prose. Vue's template
 * compiler condenses static whitespace, so the only newlines reaching a
 * text node come from interpolated data — exactly what we want to keep.
 *
 * Scoped to prose-bearing elements (paragraphs + the SDK/theme prose
 * class roles). Components that pin their own white-space (nowrap on
 * price chips, pre-wrap elsewhere) load after this and win. */
p,
[class*="__prose"],
[class*="__description"],
[class*="__lede"],
[class*="__summary"],
[class*="__highlight-body"] {
  white-space: pre-line;
}

a { color: inherit; text-decoration: none; }

/* Minimal global reset so the empty homepage doesn't show a blank
   white page with default browser margins. Section components are
   responsible for their own spacing and type — keep this lean. */
*,
*::before,
*::after { box-sizing: border-box; }
html, body, #app { margin: 0; padding: 0; min-height: 100%; }
html.seo-hub body { background: var(--site-color-bg); }
body {
  background: var(--site-bg);
  color: var(--site-fg);
  font-family: var(--site-font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}


/* theme tokens */
/* composed: design-graph tokens (base + palette + type) */
/* legacy base (pre-graph tokens.css) — graph parts override below */
/* theme/tokens.css — Derby Eiffel Hotel base tokens (anchor layer).
 * Loads after the SDK base tokens and wins the cascade.
 * LOCKED by hotelier: --site-color-bg, --site-color-fg, --site-color-accent.
 * Deterministic pass refines; keep roles, never repaint locked values.
 */

:root {
  /* Palette roles */
  --site-color-bg: #faf9f6;      /* LOCKED — warm paper, default surface */
  --site-color-fg: #fbf9f6;      /* LOCKED — light ink, dark surfaces ONLY */
  --site-color-accent: #000000;  /* LOCKED — black ink; text on light bg + accent */
  --site-color-muted: #6f675c;   /* secondary text on bg */
  --site-color-border: #e6e1d6;  /* hairlines on bg */

  /* Derived surface pairings (ink-on-paper discipline:
     never pair fg with bg — both are warm off-whites) */
  --site-ink-on-light: var(--site-color-accent);
  --site-ink-on-dark: var(--site-color-fg);
  --site-surface-dark: var(--site-color-accent);
  --site-surface-footer: #fbf9f6; /* optional brand extra (light footer) */

  /* Type roles */
  --site-font-display: "Libre Caslon Display", "Playfair Display", Georgia, serif;
  --site-font-body: "Crimson Pro", "Iowan Old Style", Georgia, serif;
  --site-type-ratio: 1.43;

  /* Spacing scale */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 16px;
  --space-4: 24px;
  --space-5: 40px;
  --space-6: 64px;
  --space-7: 104px;

  /* Shape & measure */
  --site-radius: 0;
  --site-measure: 750px;
}

/* [preview] baseline motion tokens (brand book omitted these — keeps reveal animations from hiding content) */
:root {
  --site-duration-reveal: 700ms;
  --site-duration-slow: 600ms;
  --site-duration: 320ms;
  --site-ease: cubic-bezier(0.4, 0, 0.2, 1);
  --site-ease-expo: cubic-bezier(0.16, 1, 0.3, 1);
  --site-ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --site-stagger: 80ms;
  --site-reveal-distance: 24px;
}

/* ============================================================
   Derby Eiffel Hotel — Palette Variant 3: "Gold Geometry"
   ------------------------------------------------------------
   Ground: locked brand cream (#faf9f6) stays primary; black
   (#000000) is structural and powerful. A single restrained
   burnished gold (#d4af8f) enters as the third voice — hairline
   rules, icon strokes, ornament highlights only. Never a field.
   Warm, intimate, earned Parisian classicism.
   ============================================================ */

:root {
  /* ---------- Brand core (LOCKED — exact brand hexes) ---------- */
  --site-color-bg: #faf9f6;                 /* brand bg — the cream ground */
  --site-color-fg: #fbf9f6;                 /* brand fg — light ink on dark surfaces */
  --site-color-ink: #000000;                /* brand accent — primary ink & structure */
  --site-color-primary: #000000;            /* black leads: type, CTAs, geometry */
  --site-color-accent: #d4af8f;             /* burnished gold — the rare third voice */
  --site-color-muted: #6f675c;              /* brand muted — secondary text */
  --site-color-border: #e6e1d6;             /* brand border — quiet hairlines */
  --site-color-contrast: #fbf9f6;           /* brand footer/contrast light */

  /* ---------- Surfaces (cream family, warmed) ---------- */
  --site-color-surface: #fbf9f6;            /* raised card on cream (brand fg hex) */
  --site-color-surface-2: #f4f1ea;          /* recessed band / alternating section */
  --site-color-surface-3: #eee9df;          /* deep recess: quotes, asides */
  --site-color-surface-warm: #f7f2ea;       /* gold-warmed surface — bar, suites */
  --site-color-surface-inverse: #000000;    /* dark ground: footer, speakeasy bar */
  --site-color-surface-inverse-2: #141210;  /* lifted panel on the dark ground */
  --site-color-surface-inverse-3: #211d19;  /* card on dark — warm charcoal */

  /* ---------- Ink & text ---------- */
  --site-color-heading: #000000;            /* display serif headings */
  --site-color-body: #26221d;               /* long-form body ink, softened black */
  --site-color-text-secondary: #6f675c;     /* brand muted — captions, meta */
  --site-color-text-tertiary: #8f877b;      /* faint labels, kickers, folios */
  --site-color-text-on-dark: #fbf9f6;       /* brand light on inverse surfaces */
  --site-color-text-on-dark-muted: #b3aca1; /* secondary text on dark */
  --site-color-text-on-accent: #000000;     /* ink over any gold touch */

  /* ---------- Gold voice (accent scale — lines, never fields) ---------- */
  --site-color-accent-strong: #b8905f;      /* deepened gold: icon strokes, numerals */
  --site-color-accent-soft: #e3cbb2;        /* pale gold: hover hairlines */
  --site-color-accent-faint: #f1e5d6;       /* whisper gold: tint behind ornament */
  --site-color-accent-on-dark: #d4af8f;     /* gold glows unchanged on black */
  --site-color-rule-gold: #d4af8f;          /* hairline rules of threshold */
  --site-color-rule-gold-dark: #a88a63;     /* gold hairline on dark ground */
  --site-color-ornament: #c9a67e;           /* SVG ornament fill on cream */
  --site-color-ornament-on-dark: #d4af8f;   /* ornament fill on black */

  /* ---------- Interactive states ---------- */
  --site-color-link: #000000;               /* links are ink, underlined */
  --site-color-link-hover: #6f675c;         /* hover recedes to brand muted */
  --site-color-link-underline: #d4af8f;     /* gold underline — the tell */
  --site-color-btn-bg: #000000;             /* primary CTA: solid black */
  --site-color-btn-fg: #fbf9f6;             /* brand light on the CTA */
  --site-color-btn-hover-bg: #26221d;       /* warmed black on hover */
  --site-color-btn-hover-border: #d4af8f;   /* gold hairline appears on hover */
  --site-color-btn-ghost-fg: #000000;       /* outline button ink */
  --site-color-btn-ghost-border: #000000;   /* outline button stroke */
  --site-color-btn-ghost-hover-bg: #f4f1ea; /* ghost hover fill */
  --site-color-btn-on-dark-bg: #fbf9f6;     /* CTA on dark surfaces */
  --site-color-btn-on-dark-fg: #000000;
  --site-color-focus-ring: #b8905f;         /* accessible gold-deep focus */
  --site-color-selection-bg: #e3cbb2;       /* text selection: pale gold */
  --site-color-selection-fg: #000000;

  /* ---------- Borders & lines ---------- */
  --site-color-border-strong: #cfc8b9;      /* emphasized division */
  --site-color-border-subtle: #f0ece3;      /* faintest separation */
  --site-color-border-on-dark: #332e28;     /* borders on inverse surfaces */
  --site-color-divider-on-dark: #2e2a24;    /* rules on the dark ground */
  --site-color-hairline: #e6e1d6;           /* default hairline (brand border) */
  --site-color-input-border: #cfc8b9;       /* form fields */
  --site-color-input-border-focus: #000000; /* focused field goes ink */
  --site-color-input-bg: #fbf9f6;

  /* ---------- Muted / hover fills ---------- */
  --site-color-muted-bg: #f4f1ea;           /* muted chip / tag fill */
  --site-color-hover-bg: #f2eee5;           /* row & card hover wash */
  --site-color-active-bg: #ece7db;          /* pressed state wash */
  --site-color-disabled-fg: #a89f92;
  --site-color-disabled-bg: #efece4;

  /* ---------- Overlays & scrims ---------- */
  --site-color-overlay: rgba(0, 0, 0, 0.42);        /* image scrim for text */
  --site-color-overlay-strong: rgba(0, 0, 0, 0.62); /* hero legibility scrim */
  --site-color-overlay-light: rgba(250, 249, 246, 0.88); /* cream veil */
  --site-color-shadow: rgba(20, 16, 10, 0.10);      /* warm, shallow shadow */
  --site-color-shadow-strong: rgba(20, 16, 10, 0.22);

  /* ---------- Semantic roles (kept hushed, on-palette) ---------- */
  --site-color-success: #55603f;            /* courtyard olive */
  --site-color-success-bg: #eef0e6;
  --site-color-warning: #96702f;            /* deep gold-ochre */
  --site-color-warning-bg: #f6eeda;
  --site-color-error: #7d3b32;              /* muted oxblood */
  --site-color-error-bg: #f5e8e5;
  --site-color-info: #46505c;               /* zinc-roof slate */
  --site-color-info-bg: #eaedf0;

  /* ---------- Header / footer specifics ---------- */
  --site-color-header-bg: #faf9f6;          /* light header on brand cream */
  --site-color-header-fg: #000000;
  --site-color-footer-bg: #000000;          /* black footer — dark logo variant */
  --site-color-footer-fg: #fbf9f6;          /* brand contrast light */
  --site-color-footer-muted: #b3aca1;
  --site-color-footer-rule: #d4af8f;        /* single gold hairline at threshold */
}

/* Derby Eiffel Hotel — Typography v2 "Intimate Speakeasy"
   Dark-bar hush: small, bold, wide-tracked Caslon; quiet Crimson body;
   compressed vertical rhythm; slow, candle-lit motion. */

:root {
  /* Families (locked brand) */
  --site-font-display: "Libre Caslon Display", "Playfair Display", Georgia, serif;
  --site-font-body: "Crimson Pro", "Iowan Old Style", Georgia, serif;
  --site-font-ui: "Crimson Pro", "Iowan Old Style", Georgia, serif;

  /* Scale — major third: whisper, not declamation */
  --site-type-ratio: 1.25;
  --site-text-xs: 0.75rem;      /* 12px — leaders, folio */
  --site-text-sm: 0.875rem;     /* 14px — captions, menu notes */
  --site-text-base: 1.0625rem;  /* 17px — conspiratorial body */
  --site-text-md: 1.1875rem;    /* 19px — lead paragraph */
  --site-text-lg: 1.375rem;     /* 22px — h4 / card titles */
  --site-text-xl: 1.75rem;      /* 28px — h3 */
  --site-text-2xl: 2.125rem;    /* 34px — h2 */
  --site-text-3xl: 2.625rem;    /* 42px — h1 */
  --site-text-hero: clamp(2.375rem, 1.6rem + 3.2vw, 3.375rem); /* 38–54px — held back */
  --site-text-eyebrow: 0.75rem;

  /* Weights — display cuts through darkness by mass, not size */
  --site-weight-display: 700;
  --site-weight-heading: 600;
  --site-weight-body: 400;
  --site-weight-body-strong: 600;
  --site-weight-ui: 500;

  /* Tracking — generous air around small display; open caps for eyebrows */
  --site-tracking-display: 0.045em;
  --site-tracking-heading: 0.03em;
  --site-tracking-body: 0.008em;
  --site-tracking-eyebrow: 0.32em;
  --site-tracking-ui: 0.14em;

  /* Line rhythm — tight display, roomy body */
  --site-leading-display: 1.12;
  --site-leading-heading: 1.2;
  --site-leading-body: 1.62;
  --site-leading-tight: 1.05;

  /* Case & details */
  --site-case-eyebrow: uppercase;
  --site-case-button: uppercase;
  --site-heading-margin: 0.6em;

  /* Spacing — vertically compressed, horizontally expansive */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 14px;
  --space-4: 20px;
  --space-5: 32px;
  --space-6: 52px;
  --space-7: 84px;
  --site-section-pad: clamp(52px, 8vw, 84px);
  --site-gutter: clamp(24px, 5vw, 72px);
  --site-measure: 640px;
  --site-measure-wide: 920px;

  /* Motion — revealed gradually, never all at once */
  --site-motion-duration-hover: 260ms;
  --site-motion-duration: 480ms;
  --site-motion-duration-slow: 820ms;
  --site-motion-duration-reveal: 1050ms;
  --site-motion-ease: cubic-bezier(0.45, 0.05, 0.25, 1);
  --site-motion-ease-out: cubic-bezier(0.19, 1, 0.22, 1);
  --site-motion-ease-reveal: cubic-bezier(0.22, 0.9, 0.24, 1);
  --site-motion-stagger: 140ms;
  --site-motion-reveal-distance: 16px;

  /* Legacy motion aliases */
  --site-duration: var(--site-motion-duration);
  --site-duration-slow: var(--site-motion-duration-slow);
  --site-duration-reveal: var(--site-motion-duration-reveal);
  --site-ease: var(--site-motion-ease);
  --site-ease-out: var(--site-motion-ease-out);
  --site-ease-expo: var(--site-motion-ease-out);
  --site-stagger: var(--site-motion-stagger);
  --site-reveal-distance: var(--site-motion-reveal-distance);
}


/* brand */
/* themes/default/brand.css — baseline global finish layer.
 *
 * A few universal refinements that read as "finished" on any theme.
 * The v2 builder OVERWRITES this per-hotel with a richer, manifest-
 * derived layer (texture + editorial-fixture utilities). Exists so
 * `import '@theme/brand.css'` always resolves.
 */
html {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}
::selection {
  background: var(--site-color-accent);
  color: var(--site-color-accent-fg);
}
:focus-visible {
  outline: 2px solid var(--site-color-accent);
  outline-offset: 3px;
}

/* NOTE: /book overrides do NOT live here. This file is rebuilt
   per-hotel by the v2 builder and edits to it are dropped — they
   never even reach the preview. The booking-funnel corrections
   are in primitives/button.css, which is loaded on every page
   and persists. See the "Booking page (SDK j17)" block there. */

/* -------------------------------------------------------------
   Page breaker — gilt hairlines, twin diamonds and the house
   horse, embedded so every page can call it with one class.
   ------------------------------------------------------------- */
.dbx-breaker {
  display: block;
  width: min(880px, 86vw);
  aspect-ratio: 1400 / 249;
  margin-inline: auto;
  background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABXgAAAD5CAYAAACd313tAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAFeKADAAQAAAABAAAA+QAAAABgnq0rAABAAElEQVR4Aey9Z5Bc2X3l+U/vy/tCoeB9e2/IbjablLikhiNRQ1EaaUaamIndCEXsbsR+2I3YkPm8O7ER6yJmIjSzEzuSKO1wKDMURTXJJrvZTbb3aHigUED5qqxK7zP3/O/Ll/myKqtgGuhGIs8DMt/L++675vdeogunD851VcrFhHAjARIgARIgARIgARIgARIgARIgARIgARIgARIgARLoOAIuCLy1jhs1B0wCJEACJEACJEACJEACJEACJEACJEACJEACJEACJCBuMiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEuhMAhR4O/O+cdQkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAcvnwESIAESIAESIAESIAESIAESIAESIAESIAESIAES6FQCdPB26p3juEmABEiABEiABEiABEiABEiABEiABEiABEiABLqeAAXern8ECIAESIAESIAESIAESIAESIAESIAESIAESIAESKBTCVDg7dQ7x3GTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl0PQEKvF3/CBAACZAACZAACZAACZAACZAACZAACZAACZAACZBApxKgwNupd47jJgESIAESIAESIAESIAESIAESIAESIAESIAES6HoCFHi7/hEgABIgARIgARIgARIgARIgARIgARIgARIgARIggU4lQIG3U+8cx00CJEACJEACJEACJEACJEACJEACJEACJEACJND1BCjwdv0jQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKdSoACb6feOY6bBEiABEiABEiABEiABEiABEiABEiABEiABEig6wlQ4O36R4AASIAESIAESIAESIAESIAESIAESIAESIAESIAEOpUABd5OvXMcNwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNcToMDb9Y8AAZAACZAACZAACZAACZAACZAACZAACZAACZAACXQqAQq8nXrnOG4SIAESIAESIAESIAESIAESIAESIAESIAESIIGuJ0CBt+sfAQIgARIgARIgARIgARIgARIgARIgARIgARIgARLoVAIUeDv1znHcJEACJEACJEACJEACJEACJEACJEACJEACJEACXU+AAm/XPwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0KkEKPB26p3juEmABEiABEiABEiABEiABEiABEiABEiABEiABLqeAAXern8ECIAESIAESIAESIAESIAESIAESIAESIAESIAESKBTCVDg7dQ7x3GTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl0PQEKvF3/CBAACZAACZAACZAACZAACZAACZAACZAACZAACZBApxKgwNupd47jJgESIAESIAESIAESIAESIAESIAESIAESIAES6HoCFHi7/hEgABIgARIgARIgARIgARIgARIgARIgARIgARIggU4lQIG3U+8cx00CJEACJEACJEACJEACJEACJEACJEACJEACJND1BCjwdv0jQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKdSoACb6feOY6bBEiABEiABEiABEiABEiABEiABEiABEiABEig6wlQ4O36R4AASIAESIAESIAESIAESIAESIAESIAESIAESIAEOpUABd5OvXMcNwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNcToMDb9Y8AAZAACZAACZAACZAACZAACZAACZAACZAACZAACXQqAQq8nXrnOG4SIAESIAESIAESIAESIAESIAESIAESIAESIIGuJ0CBt+sfAQIgARIgARIgARIgARIgARIgARIgARIgARIgARLoVAIUeDv1znHcJEACJEACJEACJEACJEACJEACJEACJEACJEACXU+AAm/XPwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0KkEKPB26p3juEmABEiABEiABEiABEiABEiABEiABEiABEiABLqeAAXern8ECIAESIAESIAESIAESIAESIAESIAESIAESIAESKBTCVDg7dQ7x3GTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl0PQEKvF3/CBAACZAACZAACZAACZAACZAACZAACZAACZAACZBApxKgwNupd47jJgESIAESIAESIAESIAESIAESIAESIAESIAES6HoCFHi7/hEgABIgARIgARIgARIgARIgARIgARIgARIgARIggU4lQIG3U+8cx00CJEACJEACJEACJEACJEACJEACJEACJEACJND1BCjwdv0jQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKdSoACb6feOY6bBEiABEiABEiABEiABEiABEiABEiABEiABEig6wlQ4O36R4AASIAESIAESIAESIAESIAESIAESIAESIAESIAEOpUABd5OvXMcNwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNcToMDb9Y8AAZAACZAACZAACZAACZAACZAACZAACZAACZAACXQqAQq8nXrnOG4SIAESIAESIAESIAESIAESIAESIAESIAESIIGuJ0CBt+sfAQIgARIgARIgARIgARIgARIgARIgARIgARIgARLoVAIUeDv1znHcJEACJEACJEACJEACJEACJEACJEACJEACJEACXU+AAm/XPwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0KkEKPB26p3juEmABEiABEiABEiABEiABEiABEiABEiABEiABLqeAAXern8ECIAESIAESIAESIAESIAESIAESIAESIAESIAESKBTCVDg7dQ7x3GTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl0PQEKvF3/CBAACZAACZAACZAACZAACZAACZAACZAACZAACZBApxKgwNupd47jJgESIAESIAESIAESIAESIAESIAESIAESIAES6HoCFHi7/hEgABIgARIgARIgARIgARIgARIgARIgARIgARIggU4lQIG3U+8cx00CJEACJEACJEACJEACJEACJEACJEACJEACJND1BCjwdv0jQAAkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKdSoACb6feOY6bBEiABEiABEiABEiABEiABEiABEiABEiABEig6wlQ4O36R4AASIAESIAESIAESIAESIAESIAESIAESIAESIAEOpUABd5OvXMcNwmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQNcToMDb9Y8AAZAACZAACZAACZAACZAACZAACZAACZAACZAACXQqAQq8nXrnOG4SIAESIAESIAESIAESIAESIAESIAESIAESIIGuJ0CBt+sfAQIgARIgARIgARIgARIgARIgARIgARIgARIgARLoVAIUeDv1znHcJEACJEACJEACJEACJEACJEACJEACJEACJEACXU+AAm/XPwIEQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk0KkEKPB26p3juEmABEiABEiABEiABEiABEiABEiABEiABEiABLqeAAXern8ECIAESIAESIAESIAESIAESIAESIAESIAESIAESKBTCVDg7dQ7x3GTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl0PQEKvF3/CBAACZAACZAACZAACZAACZAACZAACZAACZAACZBApxKgwNupd47jJgESIAESIAESIIEuI+ByuURfn2S7FW18kv55LQmQAAmQAAmQAAmQAAncagIUeG81UbZHAiRAAiRAAiRAAiRwywi43G5xe3x4eaWQz0kmnZBKuXSD7UMYrrdTLhcll0nc4PWsTgIkQAIkQAIkQAIkQAJ3LgHvnTs0jowESIAESIAESIAESKBbCdhO3SJE3YWr52V9bVG8EHr7BkdkeGy3eLy+HdCo07f1dDGfkdWFi7K+elmGxvZLMNzTWoGfSIAESIAESIAESIAESKBDCVDg7dAbx2GTAAmQAAmQAAmQwN1IQIXdWk0klVyXMx++JifffUWivX1y5MRjsmv6iMT6BsXt9qJOVVTFbdVxXVKtVaRcKkilVJR8PiWJ1TmZnz0pK3NnRXDunse+LiOTh+9GdJwTCZAACZAACZAACZBAlxKgwNulN57TJgESIAESIAESIIGbIVCrIB5BhVW4aVVereGXUWRvprGWa9Ca2yWlQk4unv1QXvrBn8vq8rw89OSX5ckv/Kr09A+jNuRcCLtG3MWnWrUihUIW0Q1ZxC4kJZ9NSjqxKon4vGyszcGtOyt5lFfLBekdGJXHnv9dmT70mNWOjpsbCZAACZAACZAACZAACdwFBCjw3gU3kVMgARIgARIgARIggU+HAATYXEKy6xfEHxkUX3hMfMEoHLUeqUJsvdnNjmNYX12UN1/5vvzip39rIha++o3/Wh586pfQvk+qEJaLEH/z2ZRsrC9Jcn1FkhvLeC1INrVhhN1Mag0CccZc64YI7UburtfjluGJfXLfk79mxF3LIUxx92bvFa8jARIgARIgARIgARK48whQ4L3z7glHRAIkQAIkQAIkQAJ3JgEYaN2+kOTis7J0/ieSzgckOnJMxqbvkZ6B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NrNrd1bX7rVbG+9MgAABAgQIECAwHwUa01MTs/OxMDURIECAAAECBAgsPIFGszVGh4/EyWOHYnDLHXmAWvYjzDYSwp+sC283uGMCBAgQIECAAIFfRkDA+8soeQ4BAgQIECBAgMCHI5AzeKcnR6O1tT2i0apj98NR9y4ECBAgQIAAAQI1FhDw1njxlE6AAAECBAgQuD4FSsdueejanXPwkQABAgQIECBAgMC7C5jB++42fkOAAAECBAgQIHBNBAS714TdmxIgQIAAAQIECNRSoFnLqhVNgAABAgQIECBAgAABAgQIECBAgAABAiHgtQkIECBAgAABAgQIECBAgAABAgQIECBQUwEBb00XTtkECBAgQIAAAQIECBAgQIAAAQIECBAQ8NoDBAgQIECAAAECBAgQIECAAAECBAgQqKmAgLemC6dsAgQIECBAgAABAgQIECBAgAABAgQICHjtAQIECBAgQIAAAQIECBAgQIAAAQIECNRUQMBb04VTNgECBAgQIECAAAECBAgQIECAAAECBAS89gABAgQIECBAgAABAgQIECBAgAABAgRqKiDgrenCKZsAAQIECBAgQIAAAQIECBAgQIAAAQICXnuAAAECBAgQIECAAAECBAgQIECAAAECNRUQ8NZ04ZRNgAABAgQIECBAgAABAgQIECBAgAABAa89QIAAAQIECBAgQIAAAQIECBAgQIAAgZoKCHhrunDKJkCAAAECBAgQIECAAAECBAgQIECAgIDXHiBAgAABAgQIECBAgAABAgQIECBAgEBNBQS8NV04ZRMgQIAAAQIECBAgQIAAAQIECBAgQEDAaw8QIECAAAECBAgQIECAAAECBAgQIECgpgIC3pounLIJECBAgAABAgQIECBAgAABAgQIECAg4LUHCBAgQIAAAQIECBAgQIAAAQIECBAgUFMBAW9NF07ZBAgQIECAAAECBAgQIECAAAECBAgQEPDaAwQIECBAgAABAgQIECBAgAABAgQIEKipgIC3pgunbAIECBAgQIAAAQIECBAgQIAAAQIECAh47QECBAgQIECAAAECBAgQIECAAAECBAjUVEDAW9OFUzYBAgQIECBAgAABAgQIECBAgAABAgQEvPYAAQIECBAgQIAAAQIECBAgQIAAAQIEaiog4K3pwimbAAECBAgQIECAAAECBAgQIECAAAECAl57gAABAgQIECBAgAABAgQIECBAgAABAjUVEPDWdOGUTYAAAQIECBAgQIAAAQIECBAgQIAAAQGvPUCAAAECBAgQIECAAAECBAgQIECAAIGaCgh4a7pwyiZAgAABAgQIECBAgAABAgQIECBAgICA1x4gQIAAAQIECBAgQIAAAQIECBAgQIBATQUEvDVdOGUTIECAAAECBAgQIECAAAECBAgQIEBAwGsPECBAgAABAgQIECBAgAABAgQIECBAoKYCAt6aLpyyCRAgQIAAAQIECBAgQIAAAQIECBAgIOC1BwgQIECAAAECBAgQIECAAAECBAgQIFBTAQFvTRdO2QQIECBAgAABAgQIECBAgAABAgQIEBDw2gMECBAgQIAAAQIECBAgQIAAAQIECBCoqYCAt6YLp2wCBAgQIECAAAECBAgQIECAAAECBAgIeO0BAgQIECBAgAABAgQIECBAgAABAgQI1FRAwFvThVM2AQIECBAgQIAAAQIECBAgQIAAAQIEBLz2AAECBAgQIECAAAECBAgQIECAAAECBGoqIOCt6cIpmwABAgQIECBAgAABAgQIECBAgAABAgJee4AAAQIECBAgQIAAAQIECBAgQIAAAQI1FRDw1nThlE2AAAECBAgQIECAAAECBAgQIECAAAEBrz1AgAABAgQIECBAgAABAgQIECBAgACBmgoIeGu6cMomQIAAAQIECBAgQIAAAQIECBAgQICAgNceIECAAAECBAgQIECAAAECBAgQIECAQE0FBLw1XThlEyBAgAABAgQIECBAgAABAgQIECBAQMBrDxAgQIAAAQIECBAgQIAAAQIECBAgQKCmAgLemi6csgkQIECAAAECBAgQIECAAAECBAgQICDgtQcIECBAgAABAgQIECBAgAABAgQIECBQUwEBb00XTtkECBAgQIAAAQIECBAgQIAAAQIECBAQ8NoDBAgQIECAAAECBAgQIECAAAECBAgQqKmAgLemC6dsAgQIECBAgAABAgQIECBAgAABAgQICHjtAQIECBAgQIAAAQIECBAgQIAAAQIECNRUQMBb04VTNgECBAgQIECAAAECBAgQIECAAAECBAS89gABAgQIECBAgAABAgQIECBAgAABAgRqKiDgrenCKZsAAQIECBAgQIAAAQIECBAgQIAAAQICXnuAAAECBAgQIECAAAECBAgQIECAAAECNRUQ8NZ04ZRNgAABAgQIECBAgAABAgQIECBAgAABAa89QIAAAQIECBAgQIAAAQIECBAgQIAAgZoKCHhrunDKJkCAAAECBAgQIECAAAECBAgQIECAgIDXHiBAgAABAgQIECBAgAABAgQIECBAgEBNBQS8NV04ZRMgQIAAAQIECBAgQIAAAQIECBAgQEDAaw8QIECAAAECBAgQIECAAAECBAgQIECgpgIC3pounLIJECBAgAABAgQIECBAgAABAgQIECAg4LUHCBAgQIAAAQIECBAgQIAAAQIECBAgUFMBAW9NF07ZBAgQIECAAAECBAgQIECAAAECBAgQEPDaAwQIECBAgAABAgQIECBAgAABAgQIEKipgIC3pgunbAIECBAgQIAAAQIECBAgQIAAAQIECAh47QECBAgQIECAAAECBAgQIECAAAECBAjUVEDAW9OFUzYBAgQIECBAgAABAgQIECBAgAABAgRak2AEAwECBAgQIECAAAECBAgQIECAAAECBAjUT+D/ADm2sr4aFUeJAAAAAElFTkSuQmCC') center / contain no-repeat;
  pointer-events: none;
  user-select: none;
}


/* primitives */
/* ============================================================
   Derby Eiffel Hotel — button primitive, variant 3
   "Haussmannian Symmetry"
   ------------------------------------------------------------
   A neoclassical door elevation rendered as a control: no fill,
   only articulation. A 1px black outer casing, a 2px reveal of
   cream, then a 1px inner rule in muted stone. On hover the
   inner rule strengthens from stone to ink — the outer frame
   never moves. Uppercase Libre Caslon Display, precisely
   kerned, centred on the axis. Golden-ratio rectangles;
   austere Parisian formality.
   Labels wear the address: « Réserver une Chambre »,
   « Consulter le Menu », « Demander l'Espace Affaires ».
   ============================================================ */

/* ------------------------------------------------------------
   Base — the casing
   ------------------------------------------------------------ */
.site-btn {
  /* structural, component-scoped properties (brand vars pass through) */
  --site-frame: var(--site-color-ink, #000000);          /* outer casing */
  --site-rule: var(--site-color-muted);                  /* inner rule, at rest */
  --site-rule-hover: var(--site-color-ink, #000000);     /* inner rule, engaged */
  --site-label: var(--site-color-ink, #000000);
  --site-gap: 3px;               /* casing → inner rule (2px cream + the rule) */
  --site-pad-y: 15px;
  --site-pad-x: calc(var(--site-pad-y) * 1.618 + 8px);    /* golden-ratio elevation */
  --site-tracking: 0.22em;
  --site-size: 12px;

  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--site-2, 8px);

  box-sizing: border-box;
  min-height: 50px;
  padding: var(--site-pad-y) var(--site-pad-x);
  padding-right: calc(var(--site-pad-x) - var(--site-tracking) * -1); /* keep axis true */

  background: transparent;              /* border-only; the page ground shows through */
  border: 1px solid var(--site-frame);
  border-radius: var(--site-radius, 0); /* dead-square Haussmannian corners */

  font-family: var(--site-font-display);
  font-size: var(--site-size);
  font-weight: 400;
  font-feature-settings: "kern" 1;
  line-height: 1;
  letter-spacing: var(--site-tracking);
  text-indent: var(--site-tracking);     /* optical re-centering of tracked caps */
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
  color: var(--site-label);

  cursor: pointer;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
  appearance: none;

  transition:
    color var(--site-duration, 320ms) var(--site-ease-out, ease),
    border-color var(--site-duration, 320ms) var(--site-ease-out, ease),
    letter-spacing var(--site-duration-slow, 600ms) var(--site-ease-expo, ease);
}

/* The inner rule — the second line of the double border */
.site-btn::before {
  content: "";
  position: absolute;
  inset: var(--site-gap);
  border: 1px solid var(--site-rule);
  pointer-events: none;
  transition:
    border-color var(--site-duration, 320ms) var(--site-ease-out, ease),
    inset var(--site-duration, 320ms) var(--site-ease-out, ease),
    opacity var(--site-duration, 320ms) var(--site-ease-out, ease);
}

/* ------------------------------------------------------------
   States — the controlled reveal
   ------------------------------------------------------------ */

/* Hover: the inner rule strengthens, stone → ink; the frame holds. */
.site-btn:hover::before {
  border-color: var(--site-rule-hover);
}
.site-btn:hover {
  letter-spacing: calc(var(--site-tracking) + 0.02em); /* breath, not movement */
}

/* Active: the articulation compresses — both lines close ranks. */
.site-btn:active::before {
  inset: 2px;
  border-color: var(--site-rule-hover);
}
.site-btn:active {
  letter-spacing: var(--site-tracking);
  transition-duration: 90ms;
}

/* Focus ritual: a burnished-gold hairline, set off the casing like
   a gilt picture rail — visible on cream and on dark grounds alike. */
.site-btn:focus-visible {
  outline: 1px solid var(--site-color-accent);
  outline-offset: 4px;
}
.site-btn:focus-visible::before {
  border-color: var(--site-rule-hover);
}

/* Disabled: the elevation drawn in pencil, never erased. */
.site-btn[disabled],
.site-btn[disabled]:hover,
.site-btn[disabled]:active {
  --site-frame: var(--site-color-border);
  --site-label: var(--site-color-muted);
  cursor: not-allowed;
  letter-spacing: var(--site-tracking);
  opacity: 0.85;
}
.site-btn[disabled]::before,
.site-btn[disabled]:hover::before {
  inset: var(--site-gap);
  border-color: var(--site-color-border);
}

/* ------------------------------------------------------------
   Dark grounds — the elevation drawn in gilt on the night façade.
   Light label, cream casing, the inner rule warming to gold.
   (Referenced across CTA bands as .site-btn--dark.)
   ------------------------------------------------------------ */
.site-btn--dark {
  --site-frame: var(--site-color-rule-gold-dark, #a88a63);
  --site-rule: color-mix(in srgb, var(--site-color-text-on-dark, #f4f1ea) 34%, transparent);
  --site-rule-hover: var(--site-color-accent, #d4af8f);
  --site-label: var(--site-color-text-on-dark, #f4f1ea);
}
.site-btn--dark[disabled],
.site-btn--dark[disabled]:hover {
  --site-frame: color-mix(in srgb, var(--site-color-text-on-dark, #f4f1ea) 30%, transparent);
  --site-label: color-mix(in srgb, var(--site-color-text-on-dark, #f4f1ea) 55%, transparent);
}

/* ------------------------------------------------------------
   Gold — the gilt secondary voice on light grounds.
   ------------------------------------------------------------ */
.site-btn--gold {
  --site-frame: var(--site-color-rule-gold-dark, #a88a63);
  --site-rule: color-mix(in srgb, var(--site-color-accent, #d4af8f) 55%, transparent);
  --site-rule-hover: var(--site-color-accent-strong, #a8792e);
  --site-label: var(--site-color-accent-strong, #a8792e);
}

/* ------------------------------------------------------------
   Loading — a slowly turning square, geometry keeping time
   ------------------------------------------------------------ */
.site-btn.is-loading {
  color: transparent;
  pointer-events: none;
  letter-spacing: var(--site-tracking);
}
.site-btn.is-loading::before {
  border-color: var(--site-rule);
}
.site-btn.is-loading::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 11px;
  height: 11px;
  margin: -6px 0 0 -6px;
  border: 1px solid var(--site-rule-hover);
  animation: site-btn-turn 1.6s var(--site-ease, ease-in-out) infinite;
}

@keyframes site-btn-turn {
  0%   { transform: rotate(0deg)   scale(1); }
  50%  { transform: rotate(180deg) scale(0.82); }
  100% { transform: rotate(360deg) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .site-btn,
  .site-btn::before {
    transition-duration: 1ms;
  }
  .site-btn.is-loading::after {
    animation-duration: 4s;
  }
}

/* ------------------------------------------------------------
   PRIMARY — the porte cochère
   Full double articulation: black casing, stone inner rule
   that turns to ink on approach. The principal entrance.
   ------------------------------------------------------------ */
.site-btn--primary {
  --site-frame: var(--site-color-ink, #000000);
  --site-rule: var(--site-color-muted);
  --site-rule-hover: var(--site-color-ink, #000000);
}

/* ------------------------------------------------------------
   SECONDARY — the side elevation
   A single stone casing at rest; the inner rule only *appears*
   on approach, then the casing itself darkens to ink. The same
   architecture, one order quieter.
   ------------------------------------------------------------ */
.site-btn--secondary {
  --site-frame: var(--site-color-muted);
  --site-rule: transparent;
  --site-rule-hover: var(--site-color-muted);
}
.site-btn--secondary:hover,
.site-btn--secondary:focus-visible {
  --site-frame: var(--site-color-ink, #000000);
}
.site-btn--secondary[disabled],
.site-btn--secondary[disabled]:hover {
  --site-frame: var(--site-color-border);
  --site-rule-hover: transparent;
}

/* ------------------------------------------------------------
   GHOST — the engraved lintel
   No casing at all: a tracked caption with a centred hairline
   beneath, drawn in stone and inked on approach. For quiet,
   in-line actions — « Voir le Plan du Quartier ».
   ------------------------------------------------------------ */
.site-btn--ghost {
  --site-frame: transparent;
  min-height: 0;
  padding: var(--site-2, 8px) var(--site-1, 4px);
  border-color: transparent;
}
.site-btn--ghost::before {
  /* the inner rule becomes a single engraved line under the label */
  inset: auto var(--site-1, 4px) 0 var(--site-1, 4px);
  height: 0;
  border-width: 0 0 1px 0;
  border-color: var(--site-rule);
}
.site-btn--ghost:hover::before,
.site-btn--ghost:focus-visible::before {
  border-color: var(--site-rule-hover);
}
.site-btn--ghost:active::before {
  inset: auto var(--site-2, 8px) 0 var(--site-2, 8px); /* the line draws inward */
  border-color: var(--site-rule-hover);
}
.site-btn--ghost:focus-visible {
  outline-offset: 3px;
}
.site-btn--ghost[disabled]::before,
.site-btn--ghost[disabled]:hover::before {
  inset: auto var(--site-1, 4px) 0 var(--site-1, 4px);
  border-color: var(--site-color-border);
}
.site-btn--ghost.is-loading::before {
  border-color: transparent;
}

/* ------------------------------------------------------------
   SMALL — the œil-de-bœuf
   Compact, denser tracking, tighter reveal. When it carries
   only an icon it resolves to a true square — a perfect
   Haussmannian window in miniature.
   ------------------------------------------------------------ */
.site-btn--sm {
  --site-pad-y: 9px;
  --site-pad-x: calc(var(--site-pad-y) * 1.618 + 6px);
  --site-size: 11px;
  --site-tracking: 0.18em;
  --site-gap: 2px;
  min-height: 38px;
}
.site-btn--sm:active::before {
  inset: 1px;
}
.site-btn--sm.is-loading::after {
  width: 9px;
  height: 9px;
  margin: -5px 0 0 -5px;
}

/* Icon discipline: strokes inherit the label ink, sized to the order */
.site-btn svg {
  width: 15px;
  height: 15px;
  flex: none;
  stroke: currentColor;
  fill: none;
}
.site-btn--sm svg {
  width: 13px;
  height: 13px;
}

/* Icon-only small: a uniform square, symmetry paramount */
.site-btn--sm:not(:has(> :not(svg))) {
  width: 38px;
  padding: 0;
  text-indent: 0;
  aspect-ratio: 1 / 1;
}

/* Ghost never squares off — it stays a caption even with an icon */
.site-btn--ghost.site-btn--sm:not(:has(> :not(svg))) {
  width: auto;
  aspect-ratio: auto;
  padding: var(--site-2, 8px);
}

/* ------------------------------------------------------------
   Page breaker — gilt hairlines, twin diamonds and the house
   horse. Lives here (not brand.css) because the v2 builder
   regenerates brand.css per-hotel and would drop the rule;
   this primitives sheet is loaded on every page and persists.
   ------------------------------------------------------------ */
.dbx-breaker {
  display: block;
  width: min(880px, 86vw);
  aspect-ratio: 1400 / 249;
  margin-inline: auto;
  background: url('data:image/png;base64,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') center / contain no-repeat;
  pointer-events: none;
  user-select: none;
}

/* ============================================================
   Booking funnel (the SDK "j17" pages) — corrected from outside.
   ------------------------------------------------------------
   BookView.vue is PLATFORM-LOCKED: it is not a file in this
   theme, so CSS from here is the only lever, and `!important` is
   the only way to out-rank its scoped `[data-v-*]` rules. This
   block lives in primitives/ rather than brand.css because the
   v2 builder regenerates brand.css per-hotel and drops edits to
   it — they never even reach the preview.

   1. INVISIBLE TEXT. The page hangs its muted tone off
      --site-color-fg. For most hotels fg is the ink; this one
      LOCKS fg to #fbf9f6 — the LIGHT ink for DARK surfaces only
      (see tokens.css) — so every secondary label came out
      #fbf9f6 on the #faf9f6 ground: contrast 1.00, literally
      invisible. "Séjour", "Voyageurs", "Trier", "Réinitialiser",
      "Sur demande", both stay-dock labels and the price line on
      every room card. The page exposes --site-book-* escape
      hatches for exactly this, so they are what we set.

   2. THE MASTHEAD PHOTOGRAPH — removed at the owner's request.
      It was ~380px of weak, phone-grade bedroom shot, the first
      and largest thing on the page a guest visits to spend
      money. What is left is the title as TYPE on paper, so the
      date picker lands near the top of the screen. Its copy was
      reversed out in white over the photo, so it has to invert
      to ink or it vanishes along with the picture.

   3. THE EYEBROW read "A residence at Derby Eiffel Hotel" —
      leftover wording from the source design. This is a hotel,
      not a residence, and the string is not editable from here,
      so the line is removed.
   ============================================================ */
/* The token remap. It has to hit EVERY j17 root, not just
   `.j17-book`: the mobile stay-sheet (.j17-book__mstay*) and the
   mobile cart bar (.j17-book__mcart*) are TELEPORTED out of the
   page root and re-declare the same tokens on themselves, so a
   `.j17-book`-scoped fix leaves "Dates", "Voyageurs", "Séjour",
   "Rechercher la disponibilité" and the cart line invisible on a
   phone. The attribute selector catches them wherever they land.
   Custom properties only — `color` stays on .j17-book, since the
   funnel does have legitimately dark buttons. */
.j17-book,
[class*="j17-book"],
[class*="j17-checkout"],
[class*="j17-dp"] {
  --site-color-fg: #1f1b16;
  /* the supported hooks the locked page reads first */
  --site-book-ink: #1f1b16;
  --site-book-surface: var(--site-color-bg, #faf9f6);
  --site-book-muted: var(--site-color-text-secondary, #6f675c);
  --site-book-divider: color-mix(in srgb, #1f1b16 14%, transparent);
  /* belt and braces: the page also mixes --j17-stone itself */
  --j17-stone: var(--site-color-text-secondary, #6f675c) !important;
}
.j17-book { color: #1f1b16; }

/* --- the photograph and its furniture --- */
.j17-book .j17-about__hero-asset,
.j17-book .j17-about__hero-vignette,
.j17-book .j17-about__hero-chrome {
  display: none !important;
}
.j17-book .j17-about__masthead {
  background: var(--site-color-bg, #faf9f6) !important;
  color: #1f1b16 !important;
}
.j17-book .j17-about__hero {
  height: auto !important;
  min-height: 0 !important;
  background: transparent !important;
  overflow: visible !important;
}
/* the copy was absolutely positioned OVER the photo; with the
   photo gone it has to flow, or the masthead collapses to 0 */
.j17-book .j17-about__masthead-copy,
.j17-book .j17-about__masthead-copy--overlay {
  position: static !important;
  /* width + gutter matched to .j17-book__shell (max-width 1536,
     padding-inline clamp(1.25rem, 4vw, 3rem) — measured at 390 /
     900 / 1440) so the title hangs on the same left edge as the
     date picker instead of floating in from a narrower column */
  max-width: 1536px !important;
  margin-inline: auto !important;
  padding: clamp(40px, 5vw, 72px) clamp(1.25rem, 4vw, 3rem) 0 !important;
  color: #1f1b16 !important;
}
.j17-book .j17-about__masthead h1,
.j17-book .j17-about__masthead h2,
.j17-book .j17-about__masthead p,
.j17-book .j17-about__masthead span {
  color: #1f1b16 !important;
  text-shadow: none !important;
}
/* the "A residence at …" eyebrow — see (3) above */
.j17-book .j17-about__eyebrow { display: none !important; }

/* the masthead speaks French: "Book" becomes "Réserver".
   Scoped to .j17-book — the unscoped version of this rule would
   blank the title of any other page using the j17-about masthead. */
.j17-book .j17-about__title {
  font-size: 0 !important;
  line-height: 0 !important;
}
.j17-book .j17-about__title::after {
  content: "Réserver";
  display: block;
  font-size: clamp(2rem, 1rem + 3.1vw, 3.5rem);
  line-height: 1.08;
  letter-spacing: 0.045em;
  color: var(--site-color-heading, #000);
}

/* the search bar was pulled up 136px to ride over the photo */
.j17-book .j17-book__search {
  margin-top: clamp(28px, 3.5vw, 44px) !important;
}

/* ------------------------------------------------------------
   4. THE FILTER RAIL — removed at the owner's request.
   Five rooms do not need faceted search; the rail was a 224px
   column of apparatus next to a list you can read in one glance.
   Below 1101px the same panel is a fixed drawer opened from the
   mobile bar, so both the panel and its trigger go.
   The body grid is `224px | results | 320px` and the first track
   is a FIXED width — hiding the aside alone would leave a 224px
   hole and shunt the results into it, so the template has to be
   re-declared. 1101px is the page's own breakpoint, measured:
   3 columns at 1101, one column at 1100.
   ------------------------------------------------------------ */
@media (min-width: 1101px) {
  .j17-book .j17-book__body {
    grid-template-columns: minmax(0, 1fr) 320px !important;
  }
}
.j17-book__filters,
.j17-book__mobile-filters {
  display: none !important;
}
/* the whole mobile bar goes with it: strip the "Filtres" trigger
   and all that is left is a 50px band holding a result count the
   sort bar directly below already prints */
.j17-book__mobile-bar { display: none !important; }

/* ============================================================
   Derby Eiffel Hotel — form_controls · Variant 3
   "Manuscript — Brushed & Stamped"
   ------------------------------------------------------------
   The reservation card at the concierge desk. Warm paper stays
   the ground; every field is a line on a card the house fills
   in by hand. Labels are written in a loose Parisian cursive,
   answers are stamped beneath in dark ink on a faint wash —
   no boxes, no borders, only the pen line that draws itself
   left-to-right when the guest begins to write.
   Public API (LAW): .site-field, .site-field__label,
   .site-field__input, .site-field__help, .site-field__error,
   .site-field--error, .site-choice
   ============================================================ */

:root {
  /* --- component-scoped structural tokens (never brand) --- */
  --site-wash: color-mix(in srgb, var(--site-color-muted) 8%, transparent);
  --site-wash-hover: color-mix(in srgb, var(--site-color-muted) 12%, transparent);
  --site-wash-filled: color-mix(in srgb, var(--site-color-muted) 6%, transparent);
  --site-color-fg: var(--site-color-muted);                 /* the concierge's pen */
  --site-ink-strong: var(--site-color-ink, var(--site-color-accent));
  --site-ink-error: #7c2f22;                           /* dried sepia-red stamp */
  --site-rule: color-mix(in srgb, var(--site-color-muted) 30%, transparent);
  --site-rule-rest: color-mix(in srgb, var(--site-color-muted) 22%, transparent);
  --site-label-gap: var(--site-4, 24px);              /* 24px of card air */
  --site-pad-x: var(--site-3, 16px);
  --site-pad-y: 14px;
  --site-stroke-dur: var(--site-duration, 320ms);
  --site-stroke-ease: var(--site-ease-expo, cubic-bezier(0.16, 1, 0.3, 1));
}

/* ------------------------------------------------------------
   FIELD ROW — one line of the reservation card
   ------------------------------------------------------------ */
.site-field {
  display: block;
  position: relative;
  margin: 0 0 var(--site-5, 40px);
  max-width: 100%;
}

.site-field:last-child {
  margin-bottom: 0;
}

/* ------------------------------------------------------------
   LABEL — written in the house hand
   ------------------------------------------------------------ */
.site-field__label {
  display: block;
  font-family: var(--site-font-body);
  font-style: italic;
  font-weight: 400;
  font-size: 20px;
  line-height: 1.25;
  letter-spacing: 0.06em;
  color: var(--site-color-fg);
  margin: 0 0 var(--site-label-gap);
  cursor: pointer;
  transition: color var(--site-duration) var(--site-ease);
}

/* the pen pauses — a small flourish dash after the written label */
.site-field__label::after {
  content: "";
  display: inline-block;
  vertical-align: middle;
  width: 22px;
  height: 1px;
  margin-left: 12px;
  background: var(--site-rule-rest);
  transform: translateY(-1px) rotate(-1.2deg);
  transition:
    background var(--site-duration) var(--site-ease),
    width var(--site-duration) var(--site-stroke-ease);
}

.site-field:focus-within .site-field__label {
  color: var(--site-ink-strong);
}

.site-field:focus-within .site-field__label::after {
  width: 34px;
  background: var(--site-ink-strong);
}

/* ------------------------------------------------------------
   INPUT / SELECT / TEXTAREA — the stamped answer line
   No border. A faint ink wash, a resting hairline beneath,
   and on focus a pen stroke that draws itself left → right.
   ------------------------------------------------------------ */
.site-field__input {
  display: block;
  width: 100%;
  box-sizing: border-box;
  appearance: none;
  -webkit-appearance: none;
  border: 0;
  border-radius: var(--site-radius, 0);
  margin: 0;
  padding: var(--site-pad-y) var(--site-pad-x) calc(var(--site-pad-y) - 1px);

  font-family: var(--site-font-body);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: 0.015em;
  color: var(--site-ink-strong);
  caret-color: var(--site-ink-strong);

  background-color: var(--site-wash);
  /* two painted layers:
     1) the focus pen-stroke (2px, draws from the left)
     2) the resting hairline rule (1px, always there)      */
  background-image:
    linear-gradient(var(--site-ink-strong), var(--site-ink-strong)),
    linear-gradient(var(--site-rule-rest), var(--site-rule-rest));
  background-repeat: no-repeat;
  background-size: 0% 2px, 100% 1px;
  background-position: left bottom, left bottom;

  transition:
    background-color var(--site-duration) var(--site-ease),
    background-size var(--site-stroke-dur) var(--site-stroke-ease),
    color var(--site-duration) var(--site-ease);
}

.site-field__input::placeholder {
  font-style: italic;
  font-weight: 400;
  color: color-mix(in srgb, var(--site-color-muted) 62%, transparent);
  letter-spacing: 0.03em;
  transition: color var(--site-duration) var(--site-ease);
}

.site-field__input:hover:not(:disabled) {
  background-color: var(--site-wash-hover);
}

/* FOCUS RITUAL — the pen stroke crosses the line */
.site-field__input:focus {
  outline: none;
}

.site-field__input:focus-visible {
  outline: none;
  background-color: var(--site-wash-hover);
  background-size: 100% 2px, 100% 1px;
}

.site-field__input:focus-visible::placeholder {
  color: color-mix(in srgb, var(--site-color-muted) 40%, transparent);
}

/* FILLED — the ink has dried; the wash quiets, the rule firms */
.site-field__input:not(:placeholder-shown):not(:focus-visible) {
  background-color: var(--site-wash-filled);
  background-image:
    linear-gradient(var(--site-ink-strong), var(--site-ink-strong)),
    linear-gradient(var(--site-rule), var(--site-rule));
}

/* DISABLED — a line the concierge has crossed out for you */
.site-field__input:disabled {
  cursor: not-allowed;
  color: color-mix(in srgb, var(--site-color-muted) 55%, transparent);
  background-color: color-mix(in srgb, var(--site-color-muted) 4%, transparent);
  background-image:
    linear-gradient(transparent, transparent),
    repeating-linear-gradient(
      90deg,
      var(--site-rule-rest) 0 5px,
      transparent 5px 10px
    );
  background-size: 0% 2px, 100% 1px;
}

.site-field:has(.site-field__input:disabled) .site-field__label {
  color: color-mix(in srgb, var(--site-color-muted) 55%, transparent);
  cursor: not-allowed;
}

/* --- SELECT — same card line, with a small pen chevron --- */
select.site-field__input {
  cursor: pointer;
  padding-right: calc(var(--site-pad-x) + 28px);
  background-image:
    linear-gradient(var(--site-ink-strong), var(--site-ink-strong)),
    linear-gradient(var(--site-rule-rest), var(--site-rule-rest)),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1.2c2.1 2.3 4.1 4.5 6 6.3 2-1.9 4-4.1 6-6.1' fill='none' stroke='%236f675c' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: 0% 2px, 100% 1px, 14px 9px;
  background-position:
    left bottom,
    left bottom,
    right var(--site-pad-x) center;
}

select.site-field__input:focus-visible {
  background-size: 100% 2px, 100% 1px, 14px 9px;
}

select.site-field__input:not(:focus-visible) {
  /* selects have no placeholder; keep resting wash steady */
  background-color: var(--site-wash);
}

select.site-field__input:hover:not(:disabled) {
  background-color: var(--site-wash-hover);
}

select.site-field__input option {
  font-family: var(--site-font-body);
  color: var(--site-ink-strong);
  background: var(--site-color-bg);
}

/* --- TEXTAREA — a ruled note page for longer messages --- */
textarea.site-field__input {
  min-height: 148px;
  resize: vertical;
  line-height: 1.85;
  padding-top: var(--site-3, 16px);
  /* pen stroke + resting rule + faint ruled paper lines */
  background-image:
    linear-gradient(var(--site-ink-strong), var(--site-ink-strong)),
    linear-gradient(var(--site-rule-rest), var(--site-rule-rest)),
    repeating-linear-gradient(
      to bottom,
      transparent 0,
      transparent calc(1.85em - 1px),
      color-mix(in srgb, var(--site-color-muted) 10%, transparent) calc(1.85em - 1px),
      color-mix(in srgb, var(--site-color-muted) 10%, transparent) 1.85em
    );
  background-size: 0% 2px, 100% 1px, 100% auto;
  background-position: left bottom, left bottom, left top;
  background-attachment: local, local, local;
}

textarea.site-field__input:focus-visible {
  background-size: 100% 2px, 100% 1px, 100% auto;
}

/* ------------------------------------------------------------
   HELP — a note in the margin, written small
   ------------------------------------------------------------ */
.site-field__help {
  display: block;
  margin: var(--site-2, 8px) 0 0 var(--site-pad-x);
  font-family: var(--site-font-body);
  font-style: italic;
  font-size: 15px;
  line-height: 1.5;
  letter-spacing: 0.03em;
  color: var(--site-color-muted);
}

/* ------------------------------------------------------------
   ERROR — stamped in dried sepia-red, unmistakably by hand
   ------------------------------------------------------------ */
.site-field__error {
  display: block;
  margin: var(--site-2, 8px) 0 0 var(--site-pad-x);
  font-family: var(--site-font-body);
  font-style: normal;
  font-weight: 600;
  font-size: 13px;
  line-height: 1.5;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--site-ink-error);
}

/* the stamp's tick before the word */
.site-field__error::before {
  content: "";
  display: inline-block;
  vertical-align: middle;
  width: 14px;
  height: 1px;
  margin-right: 10px;
  background: var(--site-ink-error);
  transform: translateY(-1px) rotate(-2deg);
}

/* row in error: the ink on the line turns sepia-red */
.site-field--error .site-field__label {
  color: var(--site-ink-error);
}

.site-field--error .site-field__label::after {
  background: color-mix(in srgb, var(--site-ink-error) 55%, transparent);
}

.site-field--error .site-field__input {
  background-color: color-mix(in srgb, var(--site-ink-error) 6%, transparent);
  background-image:
    linear-gradient(var(--site-ink-error), var(--site-ink-error)),
    linear-gradient(
      color-mix(in srgb, var(--site-ink-error) 45%, transparent),
      color-mix(in srgb, var(--site-ink-error) 45%, transparent)
    );
  background-size: 100% 2px, 100% 1px;
}

.site-field--error select.site-field__input {
  background-image:
    linear-gradient(var(--site-ink-error), var(--site-ink-error)),
    linear-gradient(
      color-mix(in srgb, var(--site-ink-error) 45%, transparent),
      color-mix(in srgb, var(--site-ink-error) 45%, transparent)
    ),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1.2c2.1 2.3 4.1 4.5 6 6.3 2-1.9 4-4.1 6-6.1' fill='none' stroke='%237c2f22' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E");
  background-size: 100% 2px, 100% 1px, 14px 9px;
}

.site-field--error .site-field__input:focus-visible {
  background-color: color-mix(in srgb, var(--site-ink-error) 9%, transparent);
}

/* ------------------------------------------------------------
   CHOICE ROW — checkbox / radio as the concierge's stamp
   A hand-drawn square (or circle) of ink; checking it presses
   a slightly-rotated stamp into the card.
   ------------------------------------------------------------ */
.site-choice {
  display: flex;
  align-items: baseline;
  gap: var(--site-3, 16px);
  margin: 0 0 var(--site-3, 16px);
  font-family: var(--site-font-body);
  font-style: italic;
  font-size: 19px;
  line-height: 1.45;
  letter-spacing: 0.03em;
  color: var(--site-color-fg);
  cursor: pointer;
  transition: color var(--site-duration) var(--site-ease);
}

.site-choice:last-child {
  margin-bottom: 0;
}

.site-choice:hover {
  color: var(--site-ink-strong);
}

.site-choice input[type="checkbox"],
.site-choice input[type="radio"] {
  appearance: none;
  -webkit-appearance: none;
  flex: none;
  align-self: center;
  width: 22px;
  height: 22px;
  margin: 0;
  border: 1px solid color-mix(in srgb, var(--site-color-muted) 55%, transparent);
  background-color: var(--site-wash);
  cursor: pointer;
  position: relative;
  transform: rotate(-0.6deg); /* drawn by hand, not by machine */
  transition:
    border-color var(--site-duration) var(--site-ease),
    background-color var(--site-duration) var(--site-ease),
    transform var(--site-stroke-dur) var(--site-stroke-ease),
    box-shadow var(--site-duration) var(--site-ease);
}

.site-choice input[type="checkbox"] {
  border-radius: 1px;
}

.site-choice input[type="radio"] {
  border-radius: 50%;
  transform: none;
}

.site-choice input[type="checkbox"]:hover,
.site-choice input[type="radio"]:hover {
  border-color: var(--site-ink-strong);
  background-color: var(--site-wash-hover);
}

/* the ink mark inside — a brushed check / a pressed dot */
.site-choice input[type="checkbox"]::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 22 22'%3E%3Cpath d='M4.5 11.8c1.7 1.6 3 3.1 4.2 5C11.4 11.6 14.6 7.6 18 4.6' fill='none' stroke='%23000000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-size: 22px 22px;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0;
  transform: scale(0.55) rotate(-8deg);
  transition:
    opacity var(--site-duration) var(--site-ease),
    transform var(--site-stroke-dur) var(--site-stroke-ease);
}

.site-choice input[type="radio"]::after {
  content: "";
  position: absolute;
  inset: 5px;
  border-radius: 50%;
  background: var(--site-ink-strong);
  opacity: 0;
  transform: scale(0.4);
  transition:
    opacity var(--site-duration) var(--site-ease),
    transform var(--site-stroke-dur) var(--site-stroke-ease);
}

/* CHECKED — the stamp lands, a hair off-square */
.site-choice input[type="checkbox"]:checked {
  border-color: var(--site-ink-strong);
  background-color: transparent;
  transform: rotate(-1.6deg);
}

.site-choice input[type="checkbox"]:checked::after {
  opacity: 1;
  transform: scale(1) rotate(0deg);
}

.site-choice input[type="radio"]:checked {
  border-color: var(--site-ink-strong);
  background-color: transparent;
}

.site-choice input[type="radio"]:checked::after {
  opacity: 1;
  transform: scale(1);
}

.site-choice:has(input:checked) {
  color: var(--site-ink-strong);
}

/* FOCUS RITUAL on choices — a soft ink halo, offset like a seal */
.site-choice input[type="checkbox"]:focus-visible,
.site-choice input[type="radio"]:focus-visible {
  outline: none;
  border-color: var(--site-ink-strong);
  box-shadow:
    0 0 0 3px var(--site-color-bg),
    0 0 0 4px color-mix(in srgb, var(--site-color-muted) 60%, transparent);
}

/* DISABLED choice — set aside, ink faded */
.site-choice input:disabled {
  cursor: not-allowed;
  border-style: dashed;
  border-color: color-mix(in srgb, var(--site-color-muted) 30%, transparent);
  background-color: transparent;
}

.site-choice:has(input:disabled) {
  cursor: not-allowed;
  color: color-mix(in srgb, var(--site-color-muted) 50%, transparent);
}

/* ------------------------------------------------------------
   AUTOFILL — keep the card's paper, never the browser's blue
   ------------------------------------------------------------ */
.site-field__input:-webkit-autofill,
.site-field__input:-webkit-autofill:hover,
.site-field__input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--site-ink-strong);
  -webkit-box-shadow: 0 0 0 1000px #f2efe8 inset;
  transition: background-color 999999s ease-in-out 0s;
}

/* ------------------------------------------------------------
   REDUCED MOTION — the ink appears already dry
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  .site-field__label,
  .site-field__label::after,
  .site-field__input,
  .site-choice,
  .site-choice input,
  .site-choice input::after {
    transition: none;
  }
}


/* theme skin */
/* =============================================================
   THE FONT BRIDGE + CHROME TOKEN LAYER
   -------------------------------------------------------------
   ⚠️  READ THIS BEFORE MOVING IT.

   theme/tokens.css is RECOMPOSED SERVER-SIDE on every
   build_preview() from the stored design graph. Anything written
   into tokens.css — or into tokens/legacy.css, tokens/palette.css,
   tokens/type.css — is silently discarded and never reaches the
   browser. That was verified three times: the block below was
   first written to tokens.css, then to tokens/type.css, and in
   both cases the served bundle still carried the old values.

   Files that DO survive a build and DO reach the bundle: the .vue
   components, brand.css, primitives/*.css and this file. This is
   the smallest of them, it is per-hotel, and it is loaded on every
   route — so the global chrome layer lives here.

   `!important` is required: this file is bundled BEFORE tokens.css,
   so a plain :root declaration would lose the cascade to the
   generated one.
   ============================================================= */

/* THE DOUGLAS'S OWN TYPEFACES (owner's request, 2026-08-09).
   Taken from thedouglas.com by MEASURING the live site rather than
   guessing — this is their request verbatim, both families and every
   weight they load:
     · Cardo       — h1/h2/h3, body copy AND nav links. 400, 700, and
                     a true italic 400 (the expressive lines need it).
     · Albert Sans — buttons, labels, inputs. Variable 100..900; the
                     CTAs sit at 700.
   Derby was already on Albert Sans for the micro register, so the
   change is the editorial face: Libre Caslon Display → Cardo for
   display, Crimson Pro → Cardo for body. */
@import url('/assets/fonts/google/fonts.css');

:root {
  /* --- 1. The faces actually load from here ------------------
     The brand record carries no font_heading_url / font_body_url
     and theme/fonts.js is regenerated per build, so NOTHING was
     loading the faces this theme names. A probe of the live
     preview showed document.fonts EMPTY and the display face
     measuring identically to the generic `serif` stack: the whole
     site was rendering in Times. The @import above is the bridge. */

  /* --- 2. The editorial face — Cardo, as the Douglas --------- */
  --site-font-display: "Cardo", Georgia, "Times New Roman", serif !important;
  --site-font-body: "Cardo", Georgia, "Times New Roman", serif !important;
  --site-weight-display: 400 !important;

  /* --- 3. The micro-type voice — Albert Sans ----------------- */
  --site-font-ui: "Albert Sans", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
  --site-font-micro: "Albert Sans", "Helvetica Neue", Helvetica, Arial, sans-serif !important;

  /* --- 4. Chrome metrics the graph never declared ------------
     ⚠️⚠️ TWO NAMESPACES ON PURPOSE (2026-08-09). An edit agent
     working through the dashboard chat renamed every `--derby-*`
     custom property to `--site-*` across the components. This file
     was NOT renamed, so the components read names nothing declared.
     Most survived on their inline fallbacks — but `--site-bar-h`
     collided with a name that already resolves EMPTY, and an empty
     var() does NOT fall back: the header collapsed 88px → 53px.
     Declaring BOTH names is belt-and-braces. Keep them in sync. */
  --derby-bar-h: 88px;
  --site-bar-h: 88px;
  --derby-mark-h: 52px;
  --site-mark-h: 52px;

  --derby-micro: 10px;
  --site-micro: 10px;
  --derby-micro-lg: 12px;
  --site-micro-lg: 12px;
  --derby-micro-track: 0.26em;
  --site-micro-track: 0.26em;
}

@media (max-width: 1079px) {
  :root {
    --derby-bar-h: 72px;
    --site-bar-h: 72px;
    --derby-mark-h: 44px;
    --site-mark-h: 44px;
  }
}

/* -------------------------------------------------------------
   THE BUTTON FACE.
   The button primitive names --site-font-display explicitly, so
   without this every CTA would follow the editorial serif into
   Cardo. On thedouglas.com the CTAs are the grotesk — Albert Sans
   700 at 12px, uppercase — and that serif-page / sans-instruction
   contrast is much of why their chrome reads crisp.
   Remove this one block to put the buttons back on the serif.
   ------------------------------------------------------------- */
.site-btn {
  font-family: var(--site-font-ui) !important;
  font-weight: 600 !important;
}

/* =============================================================
   Derby Eiffel Hotel — Concierge Skin · "The Parisian Notebook"
   -------------------------------------------------------------
   Ground: off-white journal page. A taupe spine for rules, ink for
   words, the display face for the greeting.

   ⚠️⚠️ THE WIDGET WAS UNREADABLE, AND IT WAS THIS FILE'S FAULT.
   `--site-color-fg` was set to #fbf9f6 — the LIGHT ink, the one
   meant for dark surfaces — while the panel's ground is the cream
   #faf9f6. The SDK paints its text with fg on bg, so the greeting,
   all four conversation starters and the composer placeholder were
   near-white on near-white: a measured contrast ratio of **1.00**.
   Not "low contrast" — invisible. The empty-state hint escaped only
   because it names its own colour, and even that measured 3.67,
   under the 4.5 floor.

   Same defect class as the reservation-desk labels: a colour role
   voiced for the wrong ground. When a surface is light, fg is INK.

   Every value below was measured against the panel ground
   rgb(250,249,246), not chosen by eye:
     ink      #1f1b16 → 16.3:1   (greeting, starters, typed text)
     soft     #5c554a →  7.0:1   (the hint, secondary lines)
     taupe    #6f675c →  5.3:1   (placeholder — quieter, still legible)
   ============================================================= */

.cl {

  /* ---- Palette: notebook paper + ink discipline ---- */
  --site-color-bg:        #faf9f6;   /* journal page — warm off-white ground   */
  --site-color-fg:        #1f1b16;   /* INK. The ground is light (was #fbf9f6) */
  --site-color-accent:    #6f675c;   /* taupe spine — hairlines, rules, border */
  --site-color-on-accent: #fbf9f6;   /* light ink on the taupe spine / FAB     */
  --site-color-border:    #ddd6c9;   /* rule between messages — was too faint  */
  --site-color-muted:     #5c554a;   /* secondary lines, 7.0:1                 */

  /* ---- Type: the same two faces as the site ---- */
  --site-font-display: "Cardo", Georgia, "Times New Roman", serif;
  --site-font-body:    "Cardo", Georgia, "Times New Roman", serif;

  /* ---- Launch bubble (FAB): sealed taupe, square-cut ---- */
  --concierge-fab-bg:     #6f675c;
  --concierge-fab-fg:     #fbf9f6;
  --concierge-fab-radius: 0px;

  /* ---- Chat panel: journal leaf, square-ruled ---- */
  --concierge-panel-radius: 0px;

  color: var(--site-color-fg);
}

/* -------------------------------------------------------------
   Readability, role by role. The token fix above covers anything
   that inherits fg — including message bubbles, which only exist
   once a conversation starts and so cannot be measured from the
   empty state. These rules pin the roles that name their own
   colour and would otherwise keep their defaults.
   ------------------------------------------------------------- */

/* The greeting — the display face, at a size that reads as a
   welcome rather than a label. */
.cl .cw__empty-title {
  color: var(--site-color-fg) !important;
  font-family: var(--site-font-display);
  font-size: 1.35rem;
  font-weight: 400;
  line-height: 1.25;
  letter-spacing: 0.01em;
}

/* The hint under it — secondary, but 7.0:1 rather than 3.67. */
.cl .cw__empty-hint {
  color: var(--site-color-muted) !important;
  font-family: var(--site-font-body);
  font-size: 1rem;
  line-height: 1.5;
  max-width: 46ch;
}

/* The conversation starters were invisible AND unframed, so they
   did not read as controls at all. Ink on paper inside a taupe
   hairline, warming on approach. */
.cl .cw__starter {
  color: var(--site-color-fg) !important;
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--site-color-accent, #6f675c) 42%, transparent);
  border-radius: 0;
  padding: 10px 14px;
  font-family: var(--site-font-ui);
  font-size: 0.8125rem;
  line-height: 1.3;
  text-align: left;
  cursor: pointer;
  transition: border-color 160ms linear, color 160ms linear, background-color 160ms linear;
}
.cl .cw__starter:hover,
.cl .cw__starter:focus-visible {
  border-color: var(--site-color-accent, #6f675c);
  background: color-mix(in srgb, var(--site-color-accent, #6f675c) 7%, transparent);
  outline: none;
}
/* This icon sits on the TRANSPARENT starter, so it takes the taupe:
   5.3:1 on the cream. Do not copy this to the mic — see below. */
.cl .cw__starter .ic { color: var(--site-color-accent, #6f675c); }

/* The composer. The typed text was the same near-white as the
   placeholder, so a guest could not see what they were writing. */
.cl .cc__input {
  color: var(--site-color-fg) !important;
  font-family: var(--site-font-body);
  font-size: 1rem;
  line-height: 1.45;
  caret-color: var(--site-color-accent, #6f675c);
}
.cl .cc__input::placeholder {
  color: var(--site-color-accent, #6f675c) !important;
  opacity: 1;                      /* Firefox dims placeholders by default */
}

/* ⚠️ THE MIC IS A FILLED CONTROL, NOT A BARE ICON.
   The SDK gives `.cc__mic` its own ground — the accent at 88%,
   which renders rgb(129,121,111) over the cream. Pointing the icon
   at `--site-color-accent` therefore painted taupe on taupe: the
   button was there, the microphone inside it was not. A pixel
   histogram of the 36px control found one flat colour and no icon
   at all.

   On a filled accent control the icon takes the ON-ACCENT ink,
   which is the pairing those two tokens exist to express:
   #fbf9f6 on rgb(129,121,111) = 4.1:1, comfortably past the 3:1
   floor for a graphical object. The stroke is nudged up a notch
   because a 1.6px hairline at 16px is thin for an affordance. */
.cl .cc__mic {
  color: var(--site-color-on-accent, #fbf9f6) !important;
}
.cl .cc__mic .ic,
.cl .cc__mic svg { color: var(--site-color-on-accent, #fbf9f6); }
.cl .cc__mic svg * { stroke-width: 1.9px; }

/* ⚠️ THE HEADER CONTROLS WERE INVISIBLE (owner, 2026-09-16).
   `.cl__icon-btn` — the expand arrows on the left and the close X on
   the right — are BARE icons on the panel's cream ground, but they
   were inheriting the light ink #fbf9f6: measured 1.0:1 on
   rgb(250,249,246). A guest could not see how to leave the chat.
   Same defect class as the mic, opposite direction: a bare control
   on a light ground takes the INK, not the on-accent. #1f1b16 on the
   cream is 16.3:1. */
.cl .cl__icon-btn {
  color: var(--site-color-fg, #1f1b16) !important;
}
.cl .cl__icon-btn .ic,
.cl .cl__icon-btn svg {
  color: var(--site-color-fg, #1f1b16);
  stroke: currentColor;
}
.cl .cl__icon-btn:hover,
.cl .cl__icon-btn:focus-visible {
  color: var(--site-color-accent, #6f675c) !important;
  outline: none;
}

/* -------------------------------------------------------------
   Docked state — when the aside holds only the composer, the
   outer box dissolves: no ground, no rule, no shadow. Only the
   composer pill remains, floating on the page.
   ------------------------------------------------------------- */
.cl:has(> .cl__composer:only-child) {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  outline: none !important;
}
.cl:has(> .cl__composer:only-child)::before,
.cl:has(> .cl__composer:only-child)::after {
  display: none !important;
}
.cl:has(> .cl__composer:only-child) .cl__composer {
  box-shadow: 0 18px 50px -22px rgba(0, 0, 0, 0.4);
}

.cl {
  transition: opacity 420ms ease, transform 420ms ease;
}


/* chrome components */

.sdk-cta[data-v-9df4945d] {
  position: relative;
  display: inline-flex;
  align-items: stretch;
  gap: 1px;   /* a hairline seam between the two halves of the split button */
}
.sdk-cta__primary[data-v-9df4945d] { display: inline-flex; align-items: center;
}
.sdk-cta__caret-btn[data-v-9df4945d] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  cursor: pointer;
  /* Inherits the theme's button class, so it matches the primary half. */
}
.sdk-cta__caret[data-v-9df4945d] {
  width: 0.42em;
  height: 0.42em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translate(-0.1em, -0.1em);
  transition: transform 0.18s ease;
  flex: none;
}
.sdk-cta--open .sdk-cta__caret[data-v-9df4945d] {
  transform: rotate(-135deg) translate(-0.16em, -0.16em);
}
.sdk-cta__panel[data-v-9df4945d] {
  position: absolute;
  top: 100%;
  right: 0;                  /* the CTA lives at the right edge of the bar */
  z-index: 1000;             /* above the concierge bubble (998–999) */
  min-width: max(200px, 100%);
  margin: 0.5rem 0 0;
  padding: 0.4rem;
  list-style: none;
  background: var(--site-color-bg, #fff);
  color: var(--site-color-text, #111);
  border: 1px solid color-mix(in srgb, currentColor 12%, transparent);
  border-radius: var(--site-radius, 4px);
  box-shadow: 0 12px 32px rgb(0 0 0 / 12%);
  font-family: var(--site-font-body, inherit);
}
.sdk-cta__panel[hidden][data-v-9df4945d] { display: none;
}
.sdk-cta__item[data-v-9df4945d] { margin: 0;
}
.sdk-cta__link[data-v-9df4945d] {
  display: block;
  padding: 0.55rem 0.75rem;
  white-space: nowrap;
  color: inherit;
  text-decoration: none;
  border-radius: calc(var(--site-radius, 4px) * 0.75);
}
.sdk-cta__link[data-v-9df4945d]:hover,
.sdk-cta__link[data-v-9df4945d]:focus-visible {
  background: color-mix(in srgb, currentColor 8%, transparent);
}
@media (prefers-reduced-motion: reduce) {
.sdk-cta__caret[data-v-9df4945d] { transition: none;
}
}


/* ⚠️⚠️ TEXT COLOUR COMES FROM `inherit` + `opacity`, NEVER A COLOUR TOKEN.
   This is the SDK chrome convention (see RegionSwitcher / LanguageSwitcher)
   and it exists because a theme's colour ROLES are not what their names
   suggest. Townhouse defines:

       --site-color-muted: #F3E6D0   (sun-bleached SAND — a FILL)

   so `color: var(--site-color-muted)` rendered this control's text in
   near-white cream on a #FFFFFF page: invisible. The muted TEXT role there
   is `--site-color-fg-muted` (#7A6350), and other themes spell it
   differently again. Inheriting the page's own ink and dialling it back
   with opacity is the only thing that is true on every theme.

   SURFACES are different — a floating panel must be opaque or the list
   renders over the page behind it — so those do read tokens, in the order
   surface → bg → white, all of which are genuinely background roles.
   Borders read `--site-color-border` (Townhouse: #DCC5A2 tan), radius
   `--radius-sm` (8px there), and the control's type reads
   `--site-font-ui` (Karla) because this is chrome, not body copy. */
.currency-panel[data-v-ddad464d] {
  max-height: min(24rem, 60vh);
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 0.4rem;
  font-family: var(--site-font-ui, inherit);
  color: inherit;
}
.currency-panel__search[data-v-ddad464d] {
  width: 100%;
  box-sizing: border-box;
  padding: 0.5rem 0.6rem;
  margin-bottom: 0.35rem;
  font: inherit;
  font-size: 0.85rem;
  color: inherit;
  background: transparent;
  border: 1px solid;
  border-color: var(--site-color-border, currentColor);
  border-radius: var(--radius-sm, var(--site-radius-sm, 3px));
}
.currency-panel__search[data-v-ddad464d]::placeholder { color: inherit; opacity: 0.5;
}
.currency-panel__search[data-v-ddad464d]:focus-visible {
  outline: 2px solid var(--site-color-focus-ring, currentColor);
  outline-offset: 1px;
}
.currency-panel__group + .currency-panel__group[data-v-ddad464d] { margin-top: 0.5rem;
}
.currency-panel__group-label[data-v-ddad464d] {
  margin: 0.4rem 0 0.2rem;
  padding: 0 0.45rem;
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: var(--site-tracking-caps, 0.12em);
  text-transform: uppercase;
  opacity: 0.5;
}
.currency-panel__options[data-v-ddad464d] { list-style: none; margin: 0; padding: 0;
}
.currency-panel__option-btn[data-v-ddad464d] {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  width: 100%;
  padding: 0.4rem 0.45rem;
  border: 0;
  background: none;
  font: inherit;
  font-size: 0.85rem;
  color: inherit;
  text-align: left;
  cursor: pointer;
  border-radius: var(--radius-sm, var(--site-radius-sm, 3px));
}
/* A wash of the page's OWN ink — works on a cream panel and a dark one
   alike, where a fixed grey would muddy one of them. */
.currency-panel__option-btn[data-v-ddad464d]:hover {
  background: color-mix(in srgb, currentColor 8%, transparent);
}
.currency-panel__option-btn[data-v-ddad464d]:focus-visible {
  outline: 2px solid var(--site-color-focus-ring, currentColor);
  outline-offset: -2px;
}
.currency-panel__option-flag[data-v-ddad464d] { font-size: 1em; line-height: 1; flex: 0 0 auto;
}

/* ⚠️ The ellipsis has to live on the NAME, the flex CHILD. `text-overflow`
   on a flex CONTAINER reaches nothing — the text is cut with no "…", so the
   panel shows a currency name that does not exist. `min-width: 0` because a
   flex item will not shrink below its content width without it. */
.currency-panel__option-name[data-v-ddad464d] {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.currency-panel__option-code[data-v-ddad464d] {
  flex: 0 0 auto;
  font-size: 0.74em;
  letter-spacing: 0.06em;
  opacity: 0.55;
  font-variant-numeric: tabular-nums;
}
.currency-panel__option-mark[data-v-ddad464d] { flex: 0 0 auto; opacity: 0.75;
}
.currency-panel__option--active .currency-panel__option-btn[data-v-ddad464d] { font-weight: 600;
}
.currency-panel__empty[data-v-ddad464d] {
  margin: 0;
  padding: 0.6rem 0.45rem;
  font-size: 0.82rem;
  opacity: 0.65;
}


/* UNSCOPED, like HeaderCta's `.sdk-cta-btn`: the trigger sits in a THEME's
   header, beside elements wearing the theme's scope id, and the panel is
   teleported to <body>. Every selector is under an `sdk-hdr-cur` class, so
   nothing here can reach anything else. */

/* ⚠️ THE TRIGGER IS TEXT, LIKE THE HEADER'S OWN LINKS. Colour is the header's
   ink (`inherit`) — the only value right on a dark bar and a cream one alike;
   the type comes from a nav link via `--hc-*` (see `adoptHeaderType`). */
.sdk-hdr-cur {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  flex-shrink: 0;
  min-height: 40px;
  margin: 0;
  padding: 0 0.5em;
  border: 0;
  background: none;
  color: var(--hc-color, inherit);
  font-family: var(--hc-font, inherit);
  font-size: var(--hc-size, inherit);
  font-weight: var(--hc-weight, inherit);
  letter-spacing: var(--hc-track, inherit);
  text-transform: var(--hc-case, none);
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.sdk-hdr-cur__code {
  font-variant-numeric: tabular-nums;
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 0.3em;
  text-decoration-thickness: 1px;
  transition: text-decoration-color 140ms ease;
}
.sdk-hdr-cur:hover .sdk-hdr-cur__code,
.sdk-hdr-cur--open .sdk-hdr-cur__code {
  text-decoration-color: currentColor;
}
.sdk-hdr-cur:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
  border-radius: 2px;
}
/* The same chevron HeaderCta draws on its own caret button. */
.sdk-hdr-cur__caret {
  width: 0.38em;
  height: 0.38em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-0.12em) rotate(45deg);
  transition: transform 160ms ease;
  flex: none;
  opacity: 0.8;
}
.sdk-hdr-cur--open .sdk-hdr-cur__caret {
  transform: translateY(0.1em) rotate(-135deg);
}

/* The twin, at <body>: fixed in the header's bar, centred on its anchor. A
   transform on our OWN leaf anchors nothing else (H5). */
.sdk-hdr-cur--docked {
  position: fixed;
  transform: translateY(-50%);
}
/* On a see-through bar (a photograph behind it): a plate of the page's own
   ground under the words, so they read on sky and on shadow alike. */
.sdk-hdr-cur--plate {
  min-height: 36px;
  padding: 0 0.8em;
  background: color-mix(in srgb, var(--site-color-bg, #fff) 86%, transparent);
  border-radius: var(--site-radius-sm, 3px);
  box-shadow: 0 1px 10px rgba(0, 0, 0, 0.08);
}

/* ⚠️ A HEADER THAT CARRIES IT HOLDS STILL. Blue Apple Beach and Bleecker
   slide their header away on scroll-down (`translateY(-100%)` on the header
   itself). The hotelier turned this on so the guest can change currency
   whenever they look up; a control that scrolls off with the bar is not that.
   Only a header holding the control is touched, which only happens on /book
   with the switch on — every other page keeps the theme's behaviour. */
header:has(.sdk-hdr-cur),
[data-site-header]:has(.sdk-hdr-cur) {
  transform: none !important;
}

/* ── The panel, at <body> ───────────────────────────────────────────────
   Above the stay rail (900), the stay sheet (1000) and the concierge (999);
   under the room quick-view (12000), which is a modal over everything. */
.sdk-hdr-cur-pop {
  position: fixed;
  z-index: 1100;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  font-family: var(--site-font-ui, var(--site-font-body, inherit));
  background: var(--site-color-surface, var(--site-color-bg, #fff));
  color: var(--site-color-fg, #111);
  border: 1px solid;
  border-color: var(--site-color-border, color-mix(in srgb, currentColor 18%, transparent));
  border-radius: var(--site-radius-sm, 3px);
  box-shadow: 0 18px 44px var(--site-color-shadow-strong, var(--site-color-shadow, rgba(0, 0, 0, 0.18)));
  animation: sdk-hdr-cur-in 160ms ease both;
}
/* The list scrolls; the charge line and the heading stay put above it. */
.sdk-hdr-cur-pop > :last-child { min-height: 0; overflow-y: auto;
}
.sdk-hdr-cur-pop__charge {
  margin: 0;
  padding: 0.75rem 0.85rem 0.65rem;
  border-bottom: 1px solid;
  border-bottom-color: var(--site-color-border, color-mix(in srgb, currentColor 14%, transparent));
  font-size: 0.8rem;
  font-weight: 600;
  line-height: 1.4;
}
.sdk-hdr-cur-pop__charge-sub {
  display: block;
  margin-top: 0.15rem;
  font-size: 0.72rem;
  font-weight: 400;
  opacity: 0.65;
}
.sdk-hdr-cur-pop__head {
  margin: 0;
  padding: 0.6rem 0.85rem 0.15rem;
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: var(--site-tracking-caps, 0.12em);
  text-transform: uppercase;
  opacity: 0.5;
}
@keyframes sdk-hdr-cur-in {
from { opacity: 0; transform: translateY(-4px);
}
to   { opacity: 1; transform: none;
}
}
@media (prefers-reduced-motion: reduce) {
.sdk-hdr-cur-pop { animation: none;
}
.sdk-hdr-cur__caret, .sdk-hdr-cur__code { transition: none;
}
}


.sdk-cta[data-v-5e6a62a1] {
  position: relative;
  display: inline-flex;
  align-items: stretch;
  gap: 1px;   /* a hairline seam between the two halves of the split button */
}
.sdk-cta__primary[data-v-5e6a62a1] { display: inline-flex; align-items: center;
}
.sdk-cta__caret-btn[data-v-5e6a62a1] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 36px;
  padding-left: 0.5rem;
  padding-right: 0.5rem;
  cursor: pointer;
  /* Inherits the theme's button class, so it matches the primary half. */
}
.sdk-cta__caret[data-v-5e6a62a1] {
  width: 0.42em;
  height: 0.42em;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg) translate(-0.1em, -0.1em);
  transition: transform 0.18s ease;
  flex: none;
}
.sdk-cta--open .sdk-cta__caret[data-v-5e6a62a1] {
  transform: rotate(-135deg) translate(-0.16em, -0.16em);
}
.sdk-cta__panel[data-v-5e6a62a1] {
  position: absolute;
  top: 100%;
  right: 0;                  /* the CTA lives at the right edge of the bar */
  z-index: 1000;             /* above the concierge bubble (998–999) */
  min-width: max(200px, 100%);
  margin: 0.5rem 0 0;
  padding: 0.4rem;
  list-style: none;
  background: var(--site-color-bg, #fff);
  color: var(--site-color-text, #111);
  border: 1px solid color-mix(in srgb, currentColor 12%, transparent);
  border-radius: var(--site-radius, 4px);
  box-shadow: 0 12px 32px rgb(0 0 0 / 12%);
  font-family: var(--site-font-body, inherit);
}
.sdk-cta__panel[hidden][data-v-5e6a62a1] { display: none;
}
.sdk-cta__item[data-v-5e6a62a1] { margin: 0;
}
.sdk-cta__link[data-v-5e6a62a1] {
  display: block;
  padding: 0.55rem 0.75rem;
  white-space: nowrap;
  color: inherit;
  text-decoration: none;
  border-radius: calc(var(--site-radius, 4px) * 0.75);
}
.sdk-cta__link[data-v-5e6a62a1]:hover,
.sdk-cta__link[data-v-5e6a62a1]:focus-visible {
  background: color-mix(in srgb, currentColor 8%, transparent);
}

/* The multi-button row. Only ever wraps 2+ buttons — one button keeps its
   own element as the root so the theme's scoped CSS lands unaided. */
.sdk-cta-group[data-v-5e6a62a1] {
  display: inline-flex;
  align-items: center;
  gap: var(--site-space-sm, 0.6rem);
  flex-wrap: wrap;
}
@media (prefers-reduced-motion: reduce) {
.sdk-cta__caret[data-v-5e6a62a1] { transition: none;
}
}


/* ⚠️ THE BUTTON NEVER WRAPS, AND THE THEME CANNOT REACH IT TO SAY SO.
   `link-class` lands ON the anchor itself, so a theme's `:deep(.my-cta)`
   descendant selector matches nothing — which is how "BOOK NOW" ended up on
   two lines in a one-line bar on hotel after hotel. One unscoped rule here,
   on a class the SDK stamps on every top-bar branch, is the only place that
   can hold it. */
.sdk-cta-btn {
  white-space: nowrap;
  flex-shrink: 0;
}
.sdk-cta-group .sdk-cta__btn--secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.7em 1.2em;
  border: 1px solid currentColor;
  border-radius: var(--site-radius, 4px);
  background: transparent;
  color: inherit;
  font: inherit;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.18s ease;
}
.sdk-cta-group .sdk-cta__btn--secondary:hover,
.sdk-cta-group .sdk-cta__btn--secondary:focus-visible {
  background: color-mix(in srgb, currentColor 10%, transparent);
}
.sdk-cta-group .sdk-cta__btn--link {
  display: inline-flex;
  align-items: center;
  padding: 0.7em 0.2em;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-decoration: underline;
  text-underline-offset: 0.25em;
  cursor: pointer;
}
.sdk-cta-group .sdk-cta__btn--link:hover,
.sdk-cta-group .sdk-cta__btn--link:focus-visible {
  text-decoration-thickness: 2px;
}
@media (prefers-reduced-motion: reduce) {
.sdk-cta-group .sdk-cta__btn--secondary { transition: none;
}
}


/* =====================================================================
 *  THE STAY, IN THE SITE HEADER  (`booking_page.cart_placement: header`)
 *
 *  ⚠️ THIS LIVED IN `styles/mobile-funnel.css` FIRST AND DID NOT BELONG THERE.
 *  That file's whole safety argument is that every rule in it sits inside
 *  `@media (max-width: 720px)`, so a hotel's laptop page cannot move — and
 *  `viewport.css.test.mjs` enforces it. These rules are not phone rules: the
 *  control is rendered at every width, and a hotelier who moves the stay into
 *  the header means it there on a laptop too. Its VISIBILITY is decided in the
 *  script (the setting, a mounted sheet, a non-empty stay), never by a
 *  breakpoint — so there was nothing for a media query to gate, and putting it
 *  in the phone layer was a category error the test correctly refused.
 *
 *  ⚠️ UNSCOPED, like the `sdk-cta__btn--*` fallbacks this file already ships.
 *  The button wears the THEME's own `linkClass`, so the hotel's styling
 *  reaches it; these rules only supply what a button does not have — a glyph
 *  beside a count, and a thumb-sized box.
 * ===================================================================== */
.sdk-stay {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  min-height: 44px;
  cursor: pointer;
}
.sdk-stay__glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.sdk-stay__count {
  font-variant-numeric: tabular-nums;
  line-height: 1;
}


/* =====================================================================
 * Ground — one line of chrome. Sticky in flow.
 * ===================================================================== */
.brs-hdr[data-v-cb2e00e7] {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: color-mix(in srgb, var(--site-color-header-bg, #faf9f6) 94%, transparent);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  color: var(--site-color-header-fg, #000000);
  font-family: var(--site-font-ui);
  border-bottom: 1px solid var(--site-color-ink, #000000);
  transition:
    background var(--site-duration, 320ms) var(--site-ease, ease),
    border-color var(--site-duration, 320ms) var(--site-ease, ease),
    color var(--site-duration, 320ms) var(--site-ease, ease);
}
.brs-hdr.is-clear[data-v-cb2e00e7] {
  background: transparent;
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  color: var(--site-color-text-on-dark, #fbf9f6);
  border-bottom-color: color-mix(
    in srgb, var(--site-color-rule-gold, #d4af8f) 46%, transparent
  );
}
.brs-shell[data-v-cb2e00e7] {
  box-sizing: border-box;
  width: 100%;
  max-width: 1440px;
  margin-inline: auto;
  padding-inline: var(--site-gutter, clamp(24px, 5vw, 72px));
}
.brs-row[data-v-cb2e00e7] {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: clamp(16px, 2.4vw, 40px);
  min-height: var(--site-bar-h, 88px);
}
.brs-side[data-v-cb2e00e7] {
  display: flex;
  align-items: center;
  min-width: 0;
  opacity: 0;
  transform: translateY(5px);
  transition:
    opacity var(--site-duration-slow, 600ms) var(--site-ease-out, ease),
    transform var(--site-duration-slow, 600ms) var(--site-ease-out, ease);
}
.brs-side--start[data-v-cb2e00e7] { grid-column: 1; justify-content: flex-start;
}
.brs-side--end[data-v-cb2e00e7]   { grid-column: 3; justify-content: flex-end; transition-delay: 90ms;
}
.brs-hdr.is-in .brs-side[data-v-cb2e00e7] { opacity: 1; transform: none;
}

/* ------------------------------------------------------- menu trigger */
.brs-menubtn[data-v-cb2e00e7] {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 12px 2px;
  margin-left: -2px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
  color: inherit;
}
.brs-menubtn__rules[data-v-cb2e00e7] {
  position: relative;
  display: block;
  width: 22px;
  height: 9px;
  flex: none;
}
.brs-menubtn__rules[data-v-cb2e00e7]::before,
.brs-menubtn__rules[data-v-cb2e00e7]::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  height: 1px;
  background: currentColor;
  transition: top var(--site-duration, 320ms) var(--site-ease-out, ease),
              bottom var(--site-duration, 320ms) var(--site-ease-out, ease),
              right var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.brs-menubtn__rules[data-v-cb2e00e7]::before { top: 0;
}
.brs-menubtn__rules[data-v-cb2e00e7]::after  { bottom: 0; right: 6px;
}
.brs-menubtn:hover .brs-menubtn__rules[data-v-cb2e00e7]::before,
.brs-menubtn:focus-visible .brs-menubtn__rules[data-v-cb2e00e7]::before { top: 3px;
}
.brs-menubtn:hover .brs-menubtn__rules[data-v-cb2e00e7]::after,
.brs-menubtn:focus-visible .brs-menubtn__rules[data-v-cb2e00e7]::after { bottom: 3px; right: 0;
}
.brs-menubtn__word[data-v-cb2e00e7] {
  font-family: var(--site-font-ui);
  font-size: var(--site-micro, 10px);
  font-weight: 600;
  letter-spacing: var(--site-micro-track, 0.26em);
  text-indent: var(--site-micro-track, 0.26em);
  text-transform: uppercase;
  line-height: 1;
  white-space: nowrap;
}
.brs-menubtn[data-v-cb2e00e7]:focus-visible {
  outline: 1px solid currentColor;
  outline-offset: 4px;
}

/* ---------------------------------------------------------------- brand */
.brs-brand[data-v-cb2e00e7] {
  grid-column: 2;
  justify-self: center;
  display: inline-flex;
  align-items: center;
  min-width: 0;
  text-decoration: none;
  color: inherit;
}
.brs-brand[data-v-cb2e00e7]:focus-visible {
  outline: 1px solid currentColor;
  outline-offset: 6px;
}
.brs-brand__mark[data-v-cb2e00e7] {
  display: block;
  height: var(--site-mark-h, 52px);
  width: auto;
  max-width: min(56vw, 260px);
  object-fit: contain;
  transition: height var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.brs-brand__word[data-v-cb2e00e7] {
  font-family: var(--site-font-display);
  font-size: clamp(0.95rem, 1.5vw, 1.15rem);
  font-weight: 400;
  letter-spacing: 0.26em;
  text-indent: 0.26em;
  text-transform: uppercase;
  white-space: nowrap;
  color: inherit;
}

/* ----------------------------------------------------- right cluster */
.brs-cluster[data-v-cb2e00e7] { gap: clamp(16px, 2vw, 28px);
}

/* ------------------------------------------------------------ language */
/* A compact tag, not a locale code. */
.brs-lang[data-v-cb2e00e7] { position: relative;
}
.brs-lang__tag[data-v-cb2e00e7] {
  appearance: none;
  background: none;
  border: 0;
  padding: 8px 2px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  cursor: pointer;
  font-family: var(--site-font-ui);
  font-size: var(--site-micro, 10px);
  font-weight: 600;
  letter-spacing: var(--site-micro-track, 0.26em);
  text-indent: var(--site-micro-track, 0.26em);
  text-transform: uppercase;
  color: currentColor;
  line-height: 1;
}
.brs-lang__tag svg[data-v-cb2e00e7] { opacity: 0.7;
}
.brs-lang__tag[data-v-cb2e00e7]:hover { color: var(--site-color-accent-strong, #b8905f);
}
.brs-hdr.is-clear .brs-lang__tag[data-v-cb2e00e7]:hover { color: var(--site-color-accent-on-dark, #d4af8f);
}
.brs-lang__tag[data-v-cb2e00e7]:focus-visible { outline: 1px solid currentColor; outline-offset: 4px;
}

/* The open list is always ink on paper, whatever the bar wears. */
.brs-lang__menu[data-v-cb2e00e7] {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  z-index: 20;
  min-width: 168px;
  margin: 0;
  padding: 6px 0;
  list-style: none;
  background: var(--site-color-bg, #faf9f6);
  border: 1px solid var(--site-color-ink, #000);
  border-top: 1px solid var(--site-color-rule-gold, #d4af8f);
  box-shadow: 0 22px 50px -28px rgba(0, 0, 0, 0.5);
}
.brs-lang__item[data-v-cb2e00e7] {
  appearance: none;
  width: 100%;
  background: none;
  border: 0;
  padding: 11px 18px;
  text-align: left;
  cursor: pointer;
  font-family: var(--site-font-body);
  font-size: 0.9375rem;
  color: var(--site-color-ink, #1f1b16);
}
.brs-lang__item[data-v-cb2e00e7]:hover { color: var(--site-color-accent-strong, #b8905f);
}
.brs-lang__item.is-current[data-v-cb2e00e7] { color: var(--site-color-accent-strong, #b8905f);
}
.brs-lang__item.is-current[data-v-cb2e00e7]::after {
  content: '·';
  margin-left: 8px;
}
.brs-lang__item[data-v-cb2e00e7]:focus-visible {
  outline: 1px solid var(--site-color-accent-strong, #b8905f);
  outline-offset: -3px;
}

/* CTA — the locked .site-btn primitive, only its sizing hooks touched. */
[data-v-cb2e00e7] .brs-cta {
  --site-pad-y: 13px;
  --site-size: 11px;
}
.brs-hdr.is-clear[data-v-cb2e00e7] .brs-cta {
  --site-frame: var(--site-color-rule-gold-dark, #a88a63);
  --site-rule: color-mix(in srgb, var(--site-color-text-on-dark, #fbf9f6) 34%, transparent);
  --site-rule-hover: var(--site-color-accent-on-dark, #d4af8f);
  --site-label: var(--site-color-text-on-dark, #fbf9f6);
}
.brs-hdr.is-clear[data-v-cb2e00e7] .brs-cta:focus-visible {
  outline-color: var(--site-color-accent-on-dark, #d4af8f);
}

/* =====================================================================
 * Narrow papers
 * ===================================================================== */
@media (max-width: 1079px) {
.brs-row[data-v-cb2e00e7] { min-height: var(--site-bar-h, 72px);
}
.brs-brand__mark[data-v-cb2e00e7] { height: var(--site-mark-h, 44px);
}
}
@media (max-width: 720px) {
.brs-menubtn__word[data-v-cb2e00e7] { display: none;
}
.brs-menubtn[data-v-cb2e00e7] { gap: 0;
}
[data-v-cb2e00e7] .brs-cta {
    --site-pad-y: 11px;
    --site-pad-x: 16px;
    --site-size: 10px;
    min-height: 42px;
}
.brs-cluster[data-v-cb2e00e7] { gap: 14px;
}
}
@media (max-width: 420px) {
.brs-lang[data-v-cb2e00e7] { display: none;
}
}

/* =====================================================================
 * The menu card — UNCHANGED from the variant the hotelier signed off.
 * ===================================================================== */
.brs-overlay[data-v-cb2e00e7] {
  position: fixed;
  inset: 0;
  z-index: 1001;
  font-family: var(--site-font-body);
}
.brs-overlay__backdrop[data-v-cb2e00e7] {
  position: absolute;
  inset: 0;
  background: color-mix(in oklab, var(--site-color-ink, #000) 42%, transparent);
  cursor: pointer;
}
.brs-menu[data-v-cb2e00e7] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: min(620px, 92vw);
  height: min(86vh, 820px);
  background: #faf7f0;
  overflow: hidden;
  box-shadow: 0 44px 110px -40px rgba(0, 0, 0, 0.55);
}
.brs-menu__frame[data-v-cb2e00e7] {
  position: absolute;
  inset: clamp(60px, 9vh, 80px) clamp(22px, 3vw, 40px) clamp(22px, 3vw, 40px);
  border: 1px solid var(--site-color-rule-gold-dark, #a88a63);
  pointer-events: none;
}
.brs-menu__brand[data-v-cb2e00e7] {
  position: absolute;
  top: clamp(60px, 9vh, 80px);
  left: 50%;
  transform: translate(-50%, -46%);
  z-index: 2;
  background: #faf7f0;
  padding: 0 clamp(22px, 3vw, 40px) 8px;
  text-align: center;
}
.brs-menu__brand img[data-v-cb2e00e7] {
  display: block;
  height: clamp(76px, 11vh, 104px);
  width: auto;
  margin-inline: auto;
}
.brs-menu__word[data-v-cb2e00e7] {
  font-family: var(--site-font-display);
  font-size: 1.4rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}
.brs-menu__city[data-v-cb2e00e7] {
  margin: 10px 0 0;
  font-family: var(--site-font-display);
  font-size: 0.7rem;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: var(--site-color-accent-strong, #a8792e);
}
.brs-menu__nav[data-v-cb2e00e7] {
  position: absolute;
  left: clamp(22px, 3vw, 40px);
  right: clamp(22px, 3vw, 40px);
  bottom: clamp(22px, 3vw, 40px);
  top: calc(clamp(60px, 9vh, 80px) + clamp(64px, 9vh, 84px));
  display: flex;
  justify-content: center;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.brs-menu__list[data-v-cb2e00e7] {
  list-style: none;
  margin: 0;
  padding: clamp(10px, 2vh, 24px) 0 clamp(14px, 3vh, 30px);
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-evenly;
  gap: 0;
}
.brs-menu__item[data-v-cb2e00e7] {
  opacity: 0;
  transform: translateY(10px);
}
.brs-drawer-enter-active .brs-menu__item[data-v-cb2e00e7],
.brs-overlay .brs-menu__item[data-v-cb2e00e7] {
  animation: brs-menu-rise-cb2e00e7 600ms var(--site-ease-out, ease) both;
  animation-delay: calc(160ms + var(--brs-i, 0) * 70ms);
}
@keyframes brs-menu-rise-cb2e00e7 {
to { opacity: 1; transform: none;
}
}
.brs-overlay[data-v-cb2e00e7] .brs-mlink {
  position: relative;
  display: inline-block;
  padding: 4px 2px;
  font-family: var(--site-font-display);
  font-size: clamp(1.05rem, 1.35vw, 1.3rem);
  font-weight: 400;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--site-color-ink, #1f1b16);
  transition: color var(--site-duration, 320ms) ease;
}
.brs-overlay[data-v-cb2e00e7] .brs-mlink::after {
  content: "";
  position: absolute;
  left: 50%;
  right: 50%;
  bottom: -4px;
  height: 1px;
  background: var(--site-color-accent-strong, #a8792e);
  transition: left var(--site-duration, 320ms) ease, right var(--site-duration, 320ms) ease;
}
.brs-overlay[data-v-cb2e00e7] .brs-mlink:hover,
.brs-overlay[data-v-cb2e00e7] .brs-mlink.router-link-active {
  color: var(--site-color-accent-strong, #a8792e);
}
.brs-overlay[data-v-cb2e00e7] .brs-mlink:hover::after,
.brs-overlay[data-v-cb2e00e7] .brs-mlink.router-link-active::after {
  left: 0;
  right: 0;
}
.brs-overlay[data-v-cb2e00e7] .brs-mlink:focus-visible {
  outline: 1px solid var(--site-color-accent-strong, #a8792e);
  outline-offset: 4px;
}
.brs-drawer-enter-active[data-v-cb2e00e7],
.brs-drawer-leave-active[data-v-cb2e00e7] {
  transition: opacity var(--site-duration, 320ms) var(--site-ease, ease);
}
.brs-drawer-enter-active .brs-menu[data-v-cb2e00e7] {
  transition: transform 600ms var(--site-ease-expo, cubic-bezier(0.16, 1, 0.3, 1));
}
.brs-drawer-enter-from[data-v-cb2e00e7],
.brs-drawer-leave-to[data-v-cb2e00e7] { opacity: 0;
}
.brs-drawer-enter-from .brs-menu[data-v-cb2e00e7] { transform: translate(-50%, -50%) scale(0.97);
}
@media (prefers-reduced-motion: reduce) {
.brs-hdr[data-v-cb2e00e7],
  .brs-hdr[data-v-cb2e00e7] *,
  .brs-hdr[data-v-cb2e00e7] *::before,
  .brs-hdr[data-v-cb2e00e7] *::after,
  .brs-overlay[data-v-cb2e00e7],
  .brs-overlay[data-v-cb2e00e7] *,
  .brs-overlay[data-v-cb2e00e7] *::before,
  .brs-overlay[data-v-cb2e00e7] *::after {
    animation: none !important;
    transition: none !important;
}
.brs-side[data-v-cb2e00e7] { opacity: 1; transform: none;
}
}


/* In-flow sticky bar: the header occupies its own height, so the app
 * shell must NOT reserve a second offset. Unscoped on purpose and
 * !important so this wins over theme/tokens.css. --site-hdr-h is
 * published from script, never declared here. */
:root {
  --site-header-h: 0px !important;
  --site-header-w: 0px !important;
}


.footer-social-icon[data-v-81c2cfd0] {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
}


/* Behavioural primitives — themes restyle freely. */
.lang-switcher[data-v-03bbd189] {
  position: relative;
  display: inline-flex;
}
.lang-switcher__trigger[data-v-03bbd189] {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 0;
  font: inherit;
  color: inherit;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
}
.lang-switcher__trigger-glyph[data-v-03bbd189] {
  line-height: 0;
  display: inline-flex;
}
.lang-switcher__caret[data-v-03bbd189] {
  width: 0.4rem;
  height: 0.4rem;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: translateY(-0.1rem) rotate(45deg);
  transition: transform 0.25s ease;
}
.lang-switcher--open .lang-switcher__caret[data-v-03bbd189] {
  transform: translateY(0.05rem) rotate(-135deg);
}
.lang-switcher__panel[data-v-03bbd189] {
  position: absolute;
  bottom: calc(100% + 0.5rem);
  left: 0;
  z-index: 40;
  list-style: none;
  margin: 0;
  padding: 0.35rem 0;
  min-width: 12rem;
  font: inherit;
}
.lang-switcher__option[data-v-03bbd189] {
  cursor: pointer;
}
/* The row's layout lives on the <a> — it's the element that now wraps the
   label/code/mark, and it must fill the row so the whole option is
   clickable rather than just the text. */
.lang-switcher__option-link[data-v-03bbd189] {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  width: 100%;
  color: inherit;
  text-decoration: none;
  font: inherit;
}
.lang-switcher-fade-enter-active[data-v-03bbd189],
.lang-switcher-fade-leave-active[data-v-03bbd189] {
  transition: opacity 0.18s ease, transform 0.18s ease;
}
.lang-switcher-fade-enter-from[data-v-03bbd189],
.lang-switcher-fade-leave-to[data-v-03bbd189] {
  opacity: 0;
  transform: translateY(0.25rem);
}


/* =====================================================================
 * Ground — the black band the brand book declared and nothing used.
 *
 * H5: no transform, filter, backdrop-filter, contain or will-change
 * anywhere in this file. The concierge dock is position:fixed and any
 * one of those on an ancestor would re-anchor it to this footer's box.
 * Nor does this component ever write --site-sticky-footer-h (F1) — the
 * SDK measures real fixed bars itself.
 * ===================================================================== */
.derby-footer[data-v-687b3497] {
  background: var(--site-color-footer-bg, #000000);
  color: var(--site-color-footer-fg, #fbf9f6);
  font-family: var(--site-font-ui);
}
.derby-footer__inner[data-v-687b3497] {
  max-width: 1440px;
  margin-inline: auto;
  padding-inline: var(--site-gutter, clamp(24px, 5vw, 72px));
  padding-top: clamp(64px, 9vw, 112px);
  /* Room at the foot for the concierge dock to rest without sitting on
     the copyright line. */
  padding-bottom: clamp(72px, 8vw, 104px);
}

/* =====================================================================
 * Band 1 — the house left, the address right.
 * ===================================================================== */
.derby-footer__head[data-v-687b3497] {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(48px, 7vw, 72px);
  padding-bottom: clamp(48px, 6vw, 72px);
}
@media (min-width: 900px) {
.derby-footer__head[data-v-687b3497] {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(48px, 8vw, 128px);
}
}

/* ------------------------------------------------------- brand column */
.derby-footer__brand[data-v-687b3497] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(24px, 3vw, 32px);
}
.derby-footer__logo-link[data-v-687b3497],
.derby-footer__wordmark-link[data-v-687b3497] {
  display: inline-block;
  text-decoration: none;
  color: inherit;
}
.derby-footer__logo[data-v-687b3497] {
  display: block;
  height: clamp(72px, 8vw, 96px);
  width: auto;
  max-width: 100%;
}
.derby-footer__wordmark[data-v-687b3497] {
  display: block;
  font-family: var(--site-font-display);
  font-size: clamp(1.25rem, 2vw, 1.6rem);
  font-weight: 400;
  letter-spacing: 0.24em;
  text-indent: 0.24em;
  text-transform: uppercase;
  line-height: 1.2;
}
.derby-footer__tagline[data-v-687b3497] {
  margin: 0;
  max-width: 32ch;
  font-family: var(--site-font-body);
  font-style: italic;
  font-size: clamp(1.0625rem, 1.3vw, 1.25rem);
  line-height: 1.5;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
}

/* Social — only ever rendered when the record carries links. */
.derby-footer__social[data-v-687b3497] {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 12px 28px;
}
.derby-footer__social-link[data-v-687b3497] {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  text-decoration: none;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
  font-family: var(--site-font-ui);
  font-size: var(--site-micro, 10px);
  font-weight: 600;
  letter-spacing: var(--site-micro-track, 0.26em);
  text-transform: uppercase;
  transition: color var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.derby-footer__social-icon[data-v-687b3497] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 15px;
  height: 15px;
  color: currentColor;
}
.derby-footer__social-icon[data-v-687b3497] svg {
  width: 100%;
  height: 100%;
  display: block;
}
.derby-footer__social-link[data-v-687b3497]:hover,
.derby-footer__social-link[data-v-687b3497]:focus-visible {
  color: var(--site-color-accent-on-dark, #d4af8f);
}

/* ----------------------------------------------------- address column */
.derby-footer__where[data-v-687b3497] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
}
.derby-footer__kicker[data-v-687b3497] {
  margin: 0 0 clamp(18px, 2vw, 26px);
  font-family: var(--site-font-ui);
  font-size: var(--site-micro, 10px);
  font-weight: 600;
  letter-spacing: var(--site-micro-track, 0.26em);
  text-indent: var(--site-micro-track, 0.26em);
  text-transform: uppercase;
  color: var(--site-color-accent-on-dark, #d4af8f);
}

/* The display moment. Measured against the Douglas footer's 56px/1.44
   Cardo line; held slightly back because this one is a fact, not a
   headline. */
.derby-footer__street[data-v-687b3497] {
  margin: 0;
  font-family: var(--site-font-display);
  font-weight: 400;
  font-size: clamp(1.75rem, 1rem + 2.2vw, 2.75rem);
  line-height: 1.16;
  letter-spacing: 0.005em;
  color: var(--site-color-footer-fg, #fbf9f6);
}
.derby-footer__place[data-v-687b3497] {
  margin: 10px 0 0;
  font-family: var(--site-font-body);
  font-size: clamp(1.0625rem, 1.2vw, 1.1875rem);
  line-height: 1.5;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
}
.derby-footer__reach[data-v-687b3497] {
  list-style: none;
  margin: clamp(24px, 3vw, 34px) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.derby-footer__reach-link[data-v-687b3497] {
  display: inline-block;
  padding-block: 4px;
  font-family: var(--site-font-body);
  font-size: 1.0625rem;
  line-height: 1.5;
  color: var(--site-color-footer-fg, #fbf9f6);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition:
    color var(--site-duration, 320ms) var(--site-ease-out, ease),
    border-color var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.derby-footer__reach-link[data-v-687b3497]:hover,
.derby-footer__reach-link[data-v-687b3497]:focus-visible {
  color: var(--site-color-accent-on-dark, #d4af8f);
  border-bottom-color: var(--site-color-rule-gold-dark, #a88a63);
  outline: none;
}

/* Newsletter — off for this hotel; kept correct for the day it isn't. */
.derby-footer__newsletter[data-v-687b3497] {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  margin-top: clamp(28px, 3vw, 40px);
}
.derby-footer__nl-headline[data-v-687b3497] {
  margin: 0;
  font-family: var(--site-font-display);
  font-size: 1.375rem;
  font-weight: 400;
  line-height: 1.25;
}
.derby-footer__nl-body[data-v-687b3497] {
  margin: 0;
  max-width: 34ch;
  font-family: var(--site-font-body);
  font-size: 1.0625rem;
  line-height: 1.55;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
}

/* =====================================================================
 * The rules.
 * ===================================================================== */
.derby-footer__rule[data-v-687b3497] {
  height: 1px;
  width: 100%;
  background: var(--site-color-divider-on-dark, #2e2a24);
}
.derby-footer__rule--gold[data-v-687b3497] {
  background: color-mix(
    in srgb, var(--site-color-footer-rule, #d4af8f) 62%, transparent
  );
}

/* =====================================================================
 * Band 2 — the way round, and one door.
 * ===================================================================== */
.derby-footer__mid[data-v-687b3497] {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: clamp(24px, 4vw, 48px);
  padding-block: clamp(32px, 4vw, 44px);
}
.derby-footer__nav-list[data-v-687b3497] {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 4px clamp(28px, 4vw, 52px);
}
.derby-footer__nav-link[data-v-687b3497] {
  display: inline-block;
  padding-block: 10px;
  font-family: var(--site-font-ui);
  font-size: var(--site-micro-lg, 12px);
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--site-color-footer-fg, #fbf9f6);
  position: relative;
  transition: color var(--site-duration, 320ms) var(--site-ease-out, ease);
}
/* the tell: a gold hairline draws under the label */
.derby-footer__nav-link[data-v-687b3497]::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 2px;
  height: 1px;
  background: var(--site-color-accent-on-dark, #d4af8f);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--site-duration-slow, 600ms)
    var(--site-ease-expo, ease);
}
.derby-footer__nav-link[data-v-687b3497]:hover::after,
.derby-footer__nav-link[data-v-687b3497]:focus-visible::after,
.derby-footer__nav-link.router-link-active[data-v-687b3497]::after {
  transform: scaleX(1);
}
.derby-footer__nav-link[data-v-687b3497]:hover,
.derby-footer__nav-link[data-v-687b3497]:focus-visible {
  color: var(--site-color-accent-on-dark, #d4af8f);
  outline: none;
}

/* The primitive's declared dark voicing. `.site-btn--dark` resolves its
   engaged rule from --site-color-accent, which the brand record locks
   to black on this hotel — invisible here. Retune through the vars the
   primitive exposes for exactly this (D4/H6); never restyle the role. */
.derby-footer__book[data-v-687b3497] {
  --site-rule-hover: var(--site-color-accent-on-dark, #d4af8f);
  flex: none;
}
.derby-footer__book[data-v-687b3497]:focus-visible {
  outline-color: var(--site-color-accent-on-dark, #d4af8f);
}

/* =====================================================================
 * Band 3 — the small print.
 * ===================================================================== */
.derby-footer__bottom[data-v-687b3497] {
  border-top: 1px solid var(--site-color-divider-on-dark, #2e2a24);
  padding-top: clamp(24px, 3vw, 32px);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px clamp(24px, 4vw, 40px);
}
.derby-footer__copyright[data-v-687b3497] {
  margin: 0;
  font-family: var(--site-font-ui);
  font-size: 12px;
  letter-spacing: 0.06em;
  line-height: 1.5;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
}
.derby-footer__legal[data-v-687b3497] {
  list-style: none;
  margin: 0 0 0 auto;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px clamp(20px, 3vw, 32px);
}
.derby-footer__legal-trigger[data-v-687b3497] {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 4px 0;
  cursor: pointer;
  font-family: var(--site-font-ui);
  font-size: var(--site-micro, 10px);
  font-weight: 600;
  letter-spacing: var(--site-micro-track, 0.26em);
  text-transform: uppercase;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
  border-bottom: 1px solid transparent;
  transition:
    color var(--site-duration, 320ms) var(--site-ease-out, ease),
    border-color var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.derby-footer__legal-trigger[data-v-687b3497]:hover,
.derby-footer__legal-trigger[data-v-687b3497]:focus-visible {
  color: var(--site-color-accent-on-dark, #d4af8f);
  border-bottom-color: var(--site-color-rule-gold-dark, #a88a63);
  outline: none;
}
.derby-footer__language[data-v-687b3497] {
  font-family: var(--site-font-ui);
  font-size: 12px;
  color: var(--site-color-text-on-dark-muted, #b3aca1);
}
.derby-footer__language[data-v-687b3497] button,
.derby-footer__language[data-v-687b3497] a,
.derby-footer__language[data-v-687b3497] select {
  color: inherit;
}
@media (max-width: 640px) {
.derby-footer__legal[data-v-687b3497] { margin-left: 0;
}
}

/* =====================================================================
 * Legal modal — teleported above all chrome (incl. concierge).
 * ===================================================================== */
.derby-policy[data-v-687b3497] {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--site-gutter, clamp(24px, 5vw, 72px));
  background: rgba(0, 0, 0, 0.6);
}
.derby-policy__panel[data-v-687b3497] {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 680px;
  max-height: min(78vh, 720px);
  min-height: 0;
  background: var(--site-color-bg);
  color: var(--site-color-ink, #000);
  border: 1px solid var(--site-color-ink, #000);
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.28);
}
.derby-policy__head[data-v-687b3497] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 24px clamp(24px, 4vw, 40px);
  border-bottom: 1px solid var(--site-color-border);
}
.derby-policy__title[data-v-687b3497] {
  margin: 0;
  font-family: var(--site-font-display);
  font-size: 1.375rem;
  font-weight: 400;
  letter-spacing: 0.06em;
}
.derby-policy__close[data-v-687b3497] {
  appearance: none;
  border: 1px solid var(--site-color-border);
  background: transparent;
  cursor: pointer;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--site-font-ui);
  font-size: 1rem;
  line-height: 1;
  color: var(--site-color-ink, #000);
  transition: border-color var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.derby-policy__close[data-v-687b3497]:hover,
.derby-policy__close[data-v-687b3497]:focus-visible {
  border-color: var(--site-color-ink, #000);
}
.derby-policy__tabs[data-v-687b3497] {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  padding: 16px clamp(24px, 4vw, 40px) 0;
  border-bottom: 1px solid var(--site-color-border);
}
.derby-policy__tab[data-v-687b3497] {
  appearance: none;
  border: 0;
  background: transparent;
  cursor: pointer;
  padding: 8px 0 12px;
  font-family: var(--site-font-ui);
  font-size: var(--site-micro, 10px);
  font-weight: 600;
  letter-spacing: var(--site-micro-track, 0.26em);
  text-transform: uppercase;
  color: var(--site-color-muted);
  border-bottom: 1px solid transparent;
  margin-bottom: -1px;
  transition:
    color var(--site-duration, 320ms) var(--site-ease-out, ease),
    border-color var(--site-duration, 320ms) var(--site-ease-out, ease);
}
.derby-policy__tab[data-v-687b3497]:hover,
.derby-policy__tab[data-v-687b3497]:focus-visible {
  color: var(--site-color-ink, #000);
}
.derby-policy__tab--active[data-v-687b3497] {
  color: var(--site-color-ink, #000);
  border-bottom-color: var(--site-color-ink, #000);
}
.derby-policy__body[data-v-687b3497] {
  white-space: pre-wrap;
  overflow-y: auto;
  min-height: 0;
  padding: 24px clamp(24px, 4vw, 40px) clamp(24px, 4vw, 40px);
  font-family: var(--site-font-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: var(--site-color-ink, #000);
}

/* Modal transition */
.derby-policy-enter-active[data-v-687b3497],
.derby-policy-leave-active[data-v-687b3497] {
  transition: opacity var(--site-duration, 320ms) var(--site-ease, ease);
}
.derby-policy-enter-from[data-v-687b3497],
.derby-policy-leave-to[data-v-687b3497] {
  opacity: 0;
}

/* =====================================================================
 * Reduced motion — restraint, literally.
 * ===================================================================== */
@media (prefers-reduced-motion: reduce) {
.derby-footer__nav-link[data-v-687b3497]::after,
  .derby-footer__reach-link[data-v-687b3497],
  .derby-footer__social-link[data-v-687b3497],
  .derby-footer__legal-trigger[data-v-687b3497],
  .derby-policy-enter-active[data-v-687b3497],
  .derby-policy-leave-active[data-v-687b3497] {
    transition: none;
}
}


/* Deliberately quiet and token-driven: this band sits directly under a
   bespoke, agent-designed footer on ~every site, so it has to read as
   part of it rather than as a second footer. Inherits the page's font
   and picks up the theme's own surface/ink tokens where they exist.

   A theme that CLAIMS the extras (see composables/useFooterExtras.js)
   embeds this inside its own footer, where standalone-band chrome would
   be wrong. Rather than have the component guess its context, the band
   values are knobs — set them on the element you put the class on:

     .site-footer__extras { --fx-pad: 0; --fx-max-w: none; }

   Custom properties inherit, and Vue applies a parent's class to a child
   component's root, so a theme's scoped rule reaches these. */
.fx[data-v-607a7acc] {
  padding: var(--fx-pad, 1.5rem 1.25rem);
  background: var(--fx-bg, var(--site-footer-bg, var(--color-surface-alt, transparent)));
  color: var(--fx-ink, var(--site-footer-ink, var(--color-ink, inherit)));
  font-size: var(--fx-size, 0.85rem);
}
.fx__inner[data-v-607a7acc] {
  max-width: var(--fx-max-w, var(--site-max-w, 1200px));
  margin: var(--fx-inner-margin, 0 auto);
  display: flex;
  flex-wrap: wrap;
  gap: 2rem 3rem;
  align-items: flex-start;
}
.fx__group[data-v-607a7acc] { min-width: 0;
}
.fx__group--text[data-v-607a7acc] { flex: 1 1 100%;
}
.fx__heading[data-v-607a7acc] {
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  opacity: 0.65;
  margin: 0 0 0.6rem;
}
.fx__links[data-v-607a7acc] { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.35rem;
}
.fx__link[data-v-607a7acc] {
  color: inherit;
  text-decoration: none;
  opacity: 0.85;
  transition: opacity 140ms ease;
}
.fx__link[data-v-607a7acc]:hover, .fx__link[data-v-607a7acc]:focus-visible { opacity: 1; text-decoration: underline;
}
.fx__logos[data-v-607a7acc] {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem;
}
.fx__logo[data-v-607a7acc] {
  display: block;
  max-height: 38px;
  max-width: 140px;
  width: auto;
  height: auto;
  object-fit: contain;
}
.fx__texts[data-v-607a7acc] { display: grid; gap: 0.35rem;
}
.fx__text[data-v-607a7acc] { margin: 0; opacity: 0.8;
}
@media (max-width: 640px) {
.fx__inner[data-v-607a7acc] { gap: 1.5rem;
}
.fx__group[data-v-607a7acc] { flex: 1 1 100%;
}
}


/* Deliberately quiet and token-driven: this band sits directly under a
   bespoke, agent-designed footer on ~every site, so it has to read as part of
   it rather than as a second footer. Inherits the page's font and picks up
   the theme's own surface/ink tokens where they exist.

   A theme that CLAIMS the affiliations (composables/useAffiliations.js)
   embeds this inside its own footer, where standalone-band chrome would be
   wrong. Rather than have the component guess its context, the band values
   are knobs — set them on the element you put the class on:

     .site-footer__affiliations { --sa-pad: 0; --sa-max-w: none; }

   Custom properties inherit, and Vue applies a parent's class to a child
   component's root, so a theme's scoped rule reaches these. */
.sa[data-v-566a4cc8] {
  padding: var(--sa-pad, var(--site-space-4, 1.25rem));
  /* ⚠️ `--site-footer-bg` / `--site-footer-ink` DO NOT EXIST in the token
     set — the first version invented them, so every hotel silently got the
     raw fallback. Inherit the footer's own ground instead. */
  background: var(--sa-bg, transparent);
  color: var(--sa-ink, inherit);
}
.sa__inner[data-v-566a4cc8] {
  max-width: var(--sa-max-w, var(--site-max, 1200px));
  margin: var(--sa-inner-margin, 0 auto);
}


/* brand record */
:root {
  --site-color-fg: #fbf9f6;
  --site-color-accent: #000000;
  --site-color-bg: #faf9f6;
  --site-color-on-accent: #ffffff;
  --concierge-bg: rgb(250 249 246);
  --site-color-fg-muted: #fbf9f6;
  --a11y-focus: #000000;
  --site-color-footer: #fbf9f6;
  --site-font-display: "Cardo", system-ui, -apple-system, "Segoe UI", sans-serif;
  --site-font-body: "Cardo", system-ui, -apple-system, "Segoe UI", sans-serif;
  --seo-ink: #000000;
}
