/* Thème d'exemple : charte Cadapelia.
   Polices embarquées (OFL) : Instrument Sans (titres), IBM Plex Sans (texte), IBM Plex Mono (libellés). */

@font-face {
  font-family: "Instrument Sans";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/theme/fonts/instrument-sans-latin-700-normal.woff2") format("woff2");
  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: "Instrument Sans";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("/theme/fonts/instrument-sans-latin-ext-700-normal.woff2") format("woff2");
  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;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2");
  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: "IBM Plex Sans";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-sans-latin-ext-400-normal.woff2") format("woff2");
  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;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2");
  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: "IBM Plex Sans";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-sans-latin-ext-500-normal.woff2") format("woff2");
  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;
}
@font-face {
  font-family: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2");
  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: "IBM Plex Sans";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-sans-latin-ext-600-normal.woff2") format("woff2");
  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;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2");
  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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-mono-latin-ext-400-normal.woff2") format("woff2");
  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;
}
@font-face {
  font-family: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2");
  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: "IBM Plex Mono";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/theme/fonts/ibm-plex-mono-latin-ext-500-normal.woff2") format("woff2");
  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;
}

/* Charte Cadapelia : aplats francs, jamais de dégradé lissé ; une seule couleur d'accent
   (le violet #6C3BF4) ; magenta, corail et ambre réservés au liseré quatre couleurs ;
   fonds légers en transparence du violet, jamais de teinte pâle inventée. */
:root {
  --color-bg: #FBF9F6;
  --color-surface: #FFFFFF;
  --color-surface-alt: rgba(108, 59, 244, 0.04);
  --color-surface-muted: rgba(108, 59, 244, 0.06);
  --color-text: #171033;
  --color-text-body: #4A4368;
  --color-text-secondary: #6F6890;
  --color-text-disabled: rgba(111, 104, 144, 0.55);
  --color-border: #E9E3D8;
  --color-border-soft: #E9E3D8;
  --color-field: #6F6890;
  --color-action: #6C3BF4;
  --color-action-hover: #1B1145;
  --color-action-pale: rgba(108, 59, 244, 0.06);
  --color-slot-selected: #1B1145;
  /* États : le succès suit la couleur d'accent ; l'ambre en texte passe en #A86A00. */
  --color-success: #6C3BF4;
  --color-success-pale: rgba(108, 59, 244, 0.06);
  --color-warning: #A86A00;
  --color-warning-pale: rgba(255, 176, 32, 0.12);
  --color-logo-bg: #1B1145;
  --color-logo-text: #FFFFFF;
  --color-admin-bar: #1B1145;
  --color-admin-bar-text: #F1EEFA;
  --color-admin-bar-muted: #BFB8DC;
  --font-family: "IBM Plex Sans", Carlito, "Segoe UI", Calibri, Arial, sans-serif;
  --font-heading: "Instrument Sans", "Segoe UI", Arial, sans-serif;
  --font-label: "IBM Plex Mono", "DejaVu Sans Mono", Consolas, monospace;
  --font-slot: "IBM Plex Mono", "DejaVu Sans Mono", Consolas, monospace;
  --heading-weight: 700;
  --radius-card: 14px;
  --focus-ring: 0 0 0 3px rgba(108, 59, 244, 0.4);
}

h1, h2, h3 { letter-spacing: -0.035em; }

/* IBM Plex Mono : zéro sans point (ss04). */
.hero-eyebrow, .slots-count, .weekdays, .slot, .eyebrow-label, .side-title, .table th, .lisere-label {
  font-feature-settings: "ss04" 1;
}

/* Bandeau sombre */
.hero { background: #1B1145; color: #F1EEFA; margin-bottom: 28px; }
.hero .hero-inner { padding-top: 30px; padding-bottom: 26px; display: flex; flex-direction: column; gap: 10px; }
.hero .site-header { margin-bottom: 18px; }
.hero .brand { flex: 1 1 auto; justify-content: space-between; }
.hero .brand-logo { height: 30px; }
.hero .brand-url { color: #BFB8DC; }
.hero .brand-url strong { color: #F1EEFA; }
.hero .step-label { display: none; }
.hero-intro { display: flex; flex-direction: column; gap: 10px; }
.hero-eyebrow {
  font-family: var(--font-label); text-transform: uppercase; letter-spacing: 0.16em; font-size: 11px; color: #A78BFF;
}
.hero-title {
  font-family: var(--font-heading); font-weight: 700; letter-spacing: -0.035em; font-size: 40px; line-height: 1.1; color: #FFFFFF;
}
.hero-desc { display: block; color: #BFB8DC; font-size: 15px; }
.hero-facts {
  list-style: none; margin: 14px 0 0; padding: 14px 0 0; border-top: 1px solid rgba(241, 238, 250, 0.18);
  display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 13px; color: #BFB8DC;
}
/* Liseré quatre couleurs */
.hero-bar {
  display: block; height: 6px;
  background: linear-gradient(90deg, #6C3BF4 0%, #6C3BF4 25%, #E0257A 25%, #E0257A 50%, #FF6B3D 50%, #FF6B3D 75%, #FFB020 75%, #FFB020 100%);
}

/* La colonne d'informations passe dans le bandeau. */
.booking .info-col {
  position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; padding: 0; border: 0;
}

.cal-col, .slots-col { padding: 28px 32px; }
.slots-col { background: rgba(108, 59, 244, 0.04); }
.col-head h2, .slots-head h2 { font-size: 22px; color: #1B1145; }
.slots-head { flex-direction: column-reverse; }
.slots-count, .weekdays {
  font-family: var(--font-label); text-transform: uppercase; letter-spacing: 0.16em; font-size: 11px; color: var(--color-text-secondary);
}
.day { height: 46px; }
.day-on { border: 1px solid rgba(108, 59, 244, 0.16); background: rgba(108, 59, 244, 0.06); font-weight: 600; }
.day-sel { font-weight: 600; }
.realtime { border-left: 4px solid #6C3BF4; padding-left: 16px; font-size: 14px; color: var(--color-text-body); }
.slot { height: 46px; font-weight: 500; }
.next-btn { font-weight: 600; }

/* Pied de page sombre avec liseré */
.shell > .container { margin-bottom: 40px; }
.site-footer { background: #1B1145; color: #BFB8DC; font-size: 13px; }
.site-footer::before {
  content: ""; display: block; height: 4px;
  background: linear-gradient(90deg, #6C3BF4 0%, #6C3BF4 25%, #E0257A 25%, #E0257A 50%, #FF6B3D 50%, #FF6B3D 75%, #FFB020 75%, #FFB020 100%);
}
.footer-inner { border-top: none; padding-top: 18px; padding-bottom: 18px; }
.site-footer strong { color: #F1EEFA; font-weight: 500; }
.site-footer a { color: #F1EEFA; }
.shell { padding-bottom: 0; }

/* Écrans de validation, de confirmation et d'annulation : encart indigo compact + liseré */
.hero-compact .hero-inner { padding-top: 30px; padding-bottom: 28px; gap: 0; }
.hero-compact .site-header { margin-bottom: 0; }
.panel h1 { font-family: var(--font-heading); color: #1B1145; letter-spacing: -0.035em; }
.badge-icon, .badge-success { background: rgba(108, 59, 244, 0.06); color: #6C3BF4; }
.badge-warning { background: rgba(255, 176, 32, 0.12); color: #A86A00; }

/* Encadrés : filet vertical violet, fond en transparence du violet */
.realtime, .notice-info {
  border-left: 4px solid #6C3BF4; border-radius: 0 10px 10px 0; padding: 12px 16px;
  background: rgba(108, 59, 244, 0.06); font-size: 14px; color: var(--color-text-body);
}
.slot-card, .recap { border: 1px solid rgba(108, 59, 244, 0.16); background: rgba(108, 59, 244, 0.04); border-radius: 12px; }
.slot-card .eyebrow-label {
  font-family: var(--font-label); text-transform: uppercase; letter-spacing: 0.16em; font-size: 11px; color: #6C3BF4;
}
.slot-card .slot-date { font-family: var(--font-heading); letter-spacing: -0.03em; color: #1B1145; }
.recap dd { color: #1B1145; }

/* Administration : barre indigo + liseré, étiquettes en IBM Plex Mono */
.admin-bar { position: relative; padding-bottom: 20px; }
.admin-bar::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 6px;
  background: linear-gradient(90deg, #6C3BF4 0%, #6C3BF4 25%, #E0257A 25%, #E0257A 50%, #FF6B3D 50%, #FF6B3D 75%, #FFB020 75%, #FFB020 100%);
}
.side-title, .table th {
  font-family: var(--font-label); text-transform: uppercase; letter-spacing: 0.16em; font-size: 11px;
}
.side-title { color: #6C3BF4; }
.table th { color: #1B1145; background: rgba(108, 59, 244, 0.06); border-bottom-color: rgba(108, 59, 244, 0.16); }
.side-link.current { box-shadow: inset 4px 0 0 #6C3BF4; }
.page-head-title h1, .login h1 { font-family: var(--font-heading); color: #1B1145; letter-spacing: -0.035em; }
.badge-on { color: #6C3BF4; background: rgba(108, 59, 244, 0.06); }
.badge-wait { color: #A86A00; background: rgba(255, 176, 32, 0.12); }
.range { background: rgba(108, 59, 244, 0.06); color: #6C3BF4; }

@media print {
  .hero-bar, .site-footer::before, .admin-bar::after { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

@media (max-width: 639px) {
  .hero { margin-bottom: 0; }
  .hero-title { font-size: 28px; }
  .booking .info-col { display: none; }
  .cal-col, .slots-col { padding: 16px; }
  /* La place de la barre fixe du mobile est prise dans le pied de page, qui reste sombre jusqu'en bas. */
  .shell { padding-bottom: 0; }
  .shell:has(.mobile-bar) .site-footer { padding-bottom: 96px; }
}
