/* =====================================================================
   Venuza — design tokens
   Bootstrap 5.3.8 is customised through its CSS custom properties only
   (no Bootstrap source changes). The Venuza identity (name, symbol, wordmark) is final;
   the blue palette below is the approved Venuza palette and is kept unchanged (DQ-01).
   Contrast notes are measured against white (#ffffff) unless stated.
   ===================================================================== */

@font-face {
  font-family: "Inter Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("../vendor/fonts/inter-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: "Inter Variable";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("../vendor/fonts/inter-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

:root {
  /* ---------- Primitives (not used directly by components) ---------- */
  --rp-brand-50: #eef3ff;   /* Venuza blue */
  --rp-brand-100: #dbe5ff;
  --rp-brand-200: #bccdfd;
  --rp-brand-600: #2352e0;
  --rp-brand-700: #1d45c4;  /* 7.0:1 on white — Venuza primary (logo blue) */
  --rp-brand-800: #1a3a9f;  /* hover */
  --rp-brand-900: #172f7c;  /* active */
  --rp-accent-700: #0f766e; /* 5.5:1 — accent (teal) */

  --rp-slate-0: #ffffff;
  --rp-slate-25: #fbfcfd;
  --rp-slate-50: #f6f8fa;
  --rp-slate-100: #eef1f5;
  --rp-slate-200: #e2e7ee;  /* decorative borders only */
  --rp-slate-300: #cfd6e0;
  --rp-slate-400: #8190a5;  /* 3.25:1 — form control borders (WCAG 1.4.11) */
  --rp-slate-500: #64748b;
  --rp-slate-600: #475569;  /* 7.6:1 — muted text */
  --rp-slate-700: #334155;
  --rp-slate-800: #1e293b;
  --rp-slate-900: #0f172a;  /* 17.9:1 — body text */

  --rp-green-50: #ecfdf3;  --rp-green-200: #bbf2d0; --rp-green-700: #15803d; --rp-green-800: #166534;
  --rp-amber-50: #fffbeb;  --rp-amber-200: #fde8a4; --rp-amber-700: #b45309; --rp-amber-800: #92400e;
  --rp-red-50: #fef2f2;    --rp-red-200: #fcc9c9;   --rp-red-700: #b91c1c;   --rp-red-800: #991b1b;
  --rp-sky-50: #f0f8ff;    --rp-sky-200: #bfdcf5;   --rp-sky-700: #0369a1;   --rp-sky-800: #075985;

  /* ---------- Semantic tokens ---------- */
  --rp-primary: var(--rp-brand-700);
  --rp-primary-hover: var(--rp-brand-800);
  --rp-primary-active: var(--rp-brand-900);
  --rp-primary-subtle: var(--rp-brand-50);
  --rp-primary-subtle-border: var(--rp-brand-200);
  --rp-on-primary: #ffffff;
  --rp-accent: var(--rp-accent-700);

  --rp-bg: var(--rp-slate-50);          /* portal page background */
  --rp-bg-booking: var(--rp-slate-25);  /* booking page background */
  --rp-surface: var(--rp-slate-0);
  --rp-surface-muted: var(--rp-slate-50);
  --rp-surface-hover: var(--rp-slate-100);

  --rp-text: var(--rp-slate-900);
  --rp-text-muted: var(--rp-slate-600);
  --rp-text-subtle: var(--rp-slate-500); /* large/secondary meta only (4.8:1) */

  --rp-border: var(--rp-slate-200);
  --rp-border-strong: var(--rp-slate-300);
  --rp-control-border: var(--rp-slate-400);
  --rp-disabled-bg: var(--rp-slate-100);
  --rp-disabled-text: var(--rp-slate-500);

  --rp-success: var(--rp-green-700);   --rp-success-subtle: var(--rp-green-50);  --rp-success-border: var(--rp-green-200); --rp-success-emphasis: var(--rp-green-800);
  --rp-warning: var(--rp-amber-700);   --rp-warning-subtle: var(--rp-amber-50);  --rp-warning-border: var(--rp-amber-200); --rp-warning-emphasis: var(--rp-amber-800);
  --rp-danger: var(--rp-red-700);      --rp-danger-subtle: var(--rp-red-50);     --rp-danger-border: var(--rp-red-200);   --rp-danger-emphasis: var(--rp-red-800);
  --rp-info: var(--rp-sky-700);        --rp-info-subtle: var(--rp-sky-50);       --rp-info-border: var(--rp-sky-200);     --rp-info-emphasis: var(--rp-sky-800);
  --rp-neutral-subtle: var(--rp-slate-100); --rp-neutral-border: var(--rp-slate-300); --rp-neutral-emphasis: var(--rp-slate-700);

  /* Focus: 2px solid outline + 2px offset, ≥3:1 against white and brand surfaces */
  --rp-focus: var(--rp-brand-700);
  --rp-focus-width: 2px;
  --rp-focus-offset: 2px;

  /* ---------- Typography ---------- */
  --rp-font-sans: "Inter Variable", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; /* Inter = DQ-02 placeholder */
  --rp-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  --rp-fs-xs: 0.75rem;     /* 12 — never for essential info */
  --rp-fs-sm: 0.875rem;    /* 14 */
  --rp-fs-base: 1rem;      /* 16 — minimum body size */
  --rp-fs-md: 1.125rem;    /* 18 */
  --rp-fs-lg: 1.25rem;     /* 20 */
  --rp-fs-xl: 1.5rem;      /* 24 */
  --rp-fs-2xl: clamp(1.5rem, 1.2rem + 1.1vw, 1.875rem);   /* 24 → 30 */
  --rp-fs-3xl: clamp(1.75rem, 1.35rem + 1.6vw, 2.25rem);  /* 28 → 36 */
  --rp-fw-regular: 400;
  --rp-fw-medium: 500;
  --rp-fw-semibold: 600;
  --rp-fw-bold: 700;
  --rp-lh-tight: 1.25;
  --rp-lh-snug: 1.4;
  --rp-lh-base: 1.5;
  --rp-tracking-tight: -0.015em;

  /* ---------- Spacing (Bootstrap spacers 1–5 = 4/8/16/24/48, plus layout steps) ---------- */
  --rp-space-1: 0.25rem;
  --rp-space-2: 0.5rem;
  --rp-space-3: 0.75rem;
  --rp-space-4: 1rem;
  --rp-space-5: 1.5rem;
  --rp-space-6: 2rem;
  --rp-space-7: 3rem;
  --rp-space-8: 4rem;

  /* ---------- Shape & elevation ---------- */
  --rp-radius-sm: 0.375rem;
  --rp-radius: 0.5rem;
  --rp-radius-lg: 0.75rem;
  --rp-radius-xl: 1rem;
  --rp-radius-pill: 999px;
  --rp-shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.05);
  --rp-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.07), 0 1px 2px rgba(15, 23, 42, 0.04);
  --rp-shadow-md: 0 6px 16px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04);
  --rp-shadow-lg: 0 16px 40px rgba(15, 23, 42, 0.12);

  /* ---------- Sizing ---------- */
  --rp-control-h-sm: 2rem;       /* 32 */
  --rp-control-h: 2.75rem;       /* 44 — comfortable touch target */
  --rp-control-h-lg: 3rem;       /* 48 */
  --rp-target-min: 24px;         /* WCAG 2.5.8 minimum */
  --rp-target-touch: 44px;       /* recommended on touch layouts */
  --rp-icon-sm: 1rem;
  --rp-icon: 1.25rem;
  --rp-icon-lg: 1.5rem;
  --rp-container: 1180px;
  --rp-container-narrow: 760px;
  --rp-sidebar-w: 16.5rem;
  --rp-header-h: 4rem;

  /* ---------- Motion ---------- */
  --rp-ease-out: cubic-bezier(0.2, 0.8, 0.2, 1);
  --rp-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --rp-dur-fast: 120ms;
  --rp-dur: 200ms;
  --rp-dur-slow: 320ms;

  /* ---------- Bootstrap 5.3.8 variable overrides ---------- */
  --bs-font-sans-serif: var(--rp-font-sans);
  --bs-body-font-family: var(--rp-font-sans);
  --bs-body-font-size: var(--rp-fs-base);
  --bs-body-line-height: var(--rp-lh-base);
  --bs-body-color: var(--rp-text);
  --bs-body-color-rgb: 15, 23, 42;
  --bs-body-bg: var(--rp-surface);
  --bs-emphasis-color: var(--rp-slate-900);
  --bs-secondary-color: var(--rp-text-muted);
  --bs-secondary-bg: var(--rp-slate-100);
  --bs-tertiary-color: var(--rp-text-subtle);
  --bs-tertiary-bg: var(--rp-slate-50);
  --bs-heading-color: var(--rp-slate-900);
  --bs-primary: var(--rp-primary);
  --bs-primary-rgb: 29, 69, 196;
  --bs-primary-text-emphasis: var(--rp-brand-900);
  --bs-primary-bg-subtle: var(--rp-brand-50);
  --bs-primary-border-subtle: var(--rp-brand-200);
  --bs-success: var(--rp-success);
  --bs-success-rgb: 21, 128, 61;
  --bs-success-text-emphasis: var(--rp-success-emphasis);
  --bs-success-bg-subtle: var(--rp-success-subtle);
  --bs-success-border-subtle: var(--rp-success-border);
  --bs-danger: var(--rp-danger);
  --bs-danger-rgb: 185, 28, 28;
  --bs-danger-text-emphasis: var(--rp-danger-emphasis);
  --bs-danger-bg-subtle: var(--rp-danger-subtle);
  --bs-danger-border-subtle: var(--rp-danger-border);
  --bs-warning-text-emphasis: var(--rp-warning-emphasis);
  --bs-warning-bg-subtle: var(--rp-warning-subtle);
  --bs-warning-border-subtle: var(--rp-warning-border);
  --bs-info-text-emphasis: var(--rp-info-emphasis);
  --bs-info-bg-subtle: var(--rp-info-subtle);
  --bs-info-border-subtle: var(--rp-info-border);
  --bs-link-color: var(--rp-primary);
  --bs-link-color-rgb: 29, 69, 196;
  --bs-link-hover-color: var(--rp-primary-hover);
  --bs-link-hover-color-rgb: 26, 58, 159;
  --bs-border-color: var(--rp-border);
  --bs-border-color-translucent: rgba(15, 23, 42, 0.1);
  --bs-border-radius: var(--rp-radius);
  --bs-border-radius-sm: var(--rp-radius-sm);
  --bs-border-radius-lg: var(--rp-radius-lg);
  --bs-border-radius-xl: var(--rp-radius-xl);
  --bs-border-radius-pill: var(--rp-radius-pill);
  --bs-box-shadow: var(--rp-shadow-md);
  --bs-box-shadow-sm: var(--rp-shadow-sm);
  --bs-box-shadow-lg: var(--rp-shadow-lg);
  --bs-focus-ring-width: 0;          /* replaced by the outline-based focus style */
  --bs-focus-ring-color: transparent;
  --bs-form-invalid-color: var(--rp-danger);
  --bs-form-invalid-border-color: var(--rp-danger);
  --bs-form-valid-color: var(--rp-success);
  --bs-form-valid-border-color: var(--rp-success);
}
