/* ==========================================================================
   theme.css — Design system partagé (Abonator / Divertissements / Sport)
   Chargé AVANT les feuilles de style spécifiques à chaque page.

   Thème clair par défaut, bascule automatique en sombre selon l'OS.
   `data-theme="light"` ou `"dark"` sur <html> force l'un des deux.
   ========================================================================== */

/* --------------------------------------------------------------
   1. TOKENS
   -------------------------------------------------------------- */
:root {
  /* Accent — --primary est réécrit dynamiquement par profil (applyTheme). */
  --primary: #3b82f6;
  --primary-dark: #2563eb;
  --primary-contrast: #ffffff;

  --danger: #ef4444;
  --danger-dark: #dc2626;
  --success: #16a34a;
  --success-dark: #15803d;
  --warning: #f59e0b;

  /* Surfaces — clair */
  --bg: #f6f7f9;
  --bg-accent: radial-gradient(1200px 600px at 15% -10%, rgba(59,130,246,.10), transparent 60%),
               radial-gradient(1000px 500px at 100% 0%, rgba(139,92,246,.08), transparent 55%);
  --surface: #ffffff;
  --surface-2: #f1f3f7;
  --surface-3: #e7eaf1;
  --border: #e3e7ee;
  --border-strong: #cbd3e0;

  /* Texte — clair */
  --text: #0d1220;
  --text-2: #4a5468;
  --text-3: #8a94a6;

  /* Rayons */
  --r-xs: 6px;
  --r-sm: 10px;
  --r-md: 14px;
  --r-lg: 18px;
  --r-xl: 24px;
  --r-full: 999px;

  /* Ombres — douces, jamais noires pures */
  --shadow-sm: 0 1px 2px rgba(13,18,32,.05), 0 1px 3px rgba(13,18,32,.04);
  --shadow-md: 0 4px 10px rgba(13,18,32,.06), 0 2px 4px rgba(13,18,32,.04);
  --shadow-lg: 0 18px 40px rgba(13,18,32,.10), 0 4px 12px rgba(13,18,32,.06);
  --shadow-glow: 0 0 0 4px color-mix(in srgb, var(--primary) 14%, transparent);

  /* Divers */
  --ring: color-mix(in srgb, var(--primary) 38%, transparent);
  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif;
  --font-family: var(--font); /* alias rétro-compatible */
  --ease: cubic-bezier(.22, 1, .36, 1);
  /* Courbe sans rebond, pour les fondus et les changements de contenu :
     `--ease` dépasse légèrement sa cible, ce qui rend une image « claquante ». */
  --ease-soft: cubic-bezier(.4, 0, .2, 1);
  --nav-h: 60px;

  /* Alias conservés pour l'ancien code */
  --text-primary: var(--text);
  --text-secondary: var(--text-2);
  --border-color: var(--border);
  --category-plaisir: #22c55e;
  --category-obligatoire: #ef4444;
  --category-occasionnel: #eab308;

  color-scheme: light;
}

/* --- Palette sombre --- */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0b0e14;
    --bg-accent: radial-gradient(1200px 600px at 15% -10%, rgba(59,130,246,.14), transparent 60%),
                 radial-gradient(1000px 500px at 100% 0%, rgba(139,92,246,.10), transparent 55%);
    --surface: #141922;
    --surface-2: #1b212c;
    --surface-3: #232a37;
    --border: #262e3b;
    --border-strong: #38415275;

    --text: #eef1f6;
    --text-2: #a8b2c3;
    --text-3: #6f7A8c;

    --primary-contrast: #ffffff;
    --danger: #f87171;
    --success: #4ade80;

    --shadow-sm: 0 1px 2px rgba(0,0,0,.32);
    --shadow-md: 0 4px 12px rgba(0,0,0,.38);
    --shadow-lg: 0 20px 44px rgba(0,0,0,.50);

    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  --bg: #0b0e14;
  --bg-accent: radial-gradient(1200px 600px at 15% -10%, rgba(59,130,246,.14), transparent 60%),
               radial-gradient(1000px 500px at 100% 0%, rgba(139,92,246,.10), transparent 55%);
  --surface: #141922;
  --surface-2: #1b212c;
  --surface-3: #232a37;
  --border: #262e3b;
  --border-strong: #384152;

  --text: #eef1f6;
  --text-2: #a8b2c3;
  --text-3: #6f7a8c;

  --primary-contrast: #ffffff;
  --danger: #f87171;
  --success: #4ade80;

  --shadow-sm: 0 1px 2px rgba(0,0,0,.32);
  --shadow-md: 0 4px 12px rgba(0,0,0,.38);
  --shadow-lg: 0 20px 44px rgba(0,0,0,.50);

  color-scheme: dark;
}

/* --------------------------------------------------------------
   2. RESET & BASE
   -------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  min-height: 100vh;
  font-family: var(--font);
  font-size: 15px;
  line-height: 1.55;
  letter-spacing: -0.011em;
  color: var(--text);
  background: var(--bg);
  background-image: var(--bg-accent);
  background-attachment: fixed;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background-color .3s var(--ease), color .3s var(--ease);
}

h1, h2, h3, h4 {
  margin: 0 0 .5em;
  font-weight: 650;
  letter-spacing: -0.025em;
  line-height: 1.22;
  color: var(--text);
}

h1 { font-size: 1.6rem; }
h2 { font-size: 1.25rem; }
h3 { font-size: 1.05rem; }
h4 { font-size: .95rem; }

p { margin: 0 0 .8em; }
a { color: var(--primary); text-decoration: none; }
hr { border: none; border-top: 1px solid var(--border); margin: 16px 0; }

.hidden { display: none !important; }

/* L'attribut `hidden` doit l'emporter sur nos `display: flex/grid`.
   Sans ça, un `<div class="all-clear" hidden>` reste affiché : une règle
   d'auteur bat toujours le `[hidden] { display: none }` du navigateur. */
[hidden] { display: none !important; }

::selection { background: color-mix(in srgb, var(--primary) 28%, transparent); }

:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 2px;
  border-radius: var(--r-xs);
}

/* Scrollbars discrètes */
* { scrollbar-width: thin; scrollbar-color: var(--border-strong) transparent; }
*::-webkit-scrollbar { width: 8px; height: 8px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: var(--r-full); }
*::-webkit-scrollbar-thumb:hover { background: var(--text-3); }

/* --------------------------------------------------------------
   3. BARRE DE NAVIGATION GLOBALE
   Présente sur les 3 apps — c'est elle qui permet de sortir de
   n'importe quelle page.
   -------------------------------------------------------------- */
.appnav {
  position: sticky;
  top: 0;
  z-index: 900;
  /* En PWA iOS (status-bar black-translucent) le contenu passe sous l'encoche :
     on décale la barre de la hauteur de la safe area. */
  height: calc(var(--nav-h) + env(safe-area-inset-top, 0px));
  padding-top: env(safe-area-inset-top, 0px);
  background: color-mix(in srgb, var(--surface) 78%, transparent);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--border);
}

.appnav__inner {
  max-width: 1200px;
  height: var(--nav-h);
  margin: 0 auto;
  padding: 0 max(18px, env(safe-area-inset-left, 0px)) 0 max(18px, env(safe-area-inset-right, 0px));
  display: flex;
  align-items: center;
  gap: 14px;
}

.appnav__brand {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  font-size: 1.02rem;
  letter-spacing: -0.03em;
  color: var(--text);
  flex-shrink: 0;
}

.appnav__brand-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: var(--primary);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--primary) 22%, transparent);
}

.appnav__links {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: 10px;
  overflow-x: auto;
  scrollbar-width: none;
}
.appnav__links::-webkit-scrollbar { display: none; }

/* --- Menu déroulant mobile (bouton hamburger) ---------------------------
   Sous 720px la barre de liens défilait horizontalement en tout petit : on la masque au profit
   d'un vrai panneau déroulant, plus lisible et manipulable au pouce. */
.appnav__burger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  width: 36px;
  height: 36px;
  padding: 0 9px;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface);
  cursor: pointer;
}
.appnav__burger span {
  display: block;
  height: 2px;
  border-radius: 2px;
  background: var(--text-2);
  transition: transform .2s var(--ease), opacity .2s var(--ease);
}
.appnav.is-open .appnav__burger span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.appnav.is-open .appnav__burger span:nth-child(2) { opacity: 0; }
.appnav.is-open .appnav__burger span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.appnav__drawer {
  display: none;
  flex-direction: column;
  gap: 4px;
  padding: 10px max(18px, env(safe-area-inset-left, 0px)) 14px;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  box-shadow: 0 10px 24px rgba(0, 0, 0, .18);
}
.appnav__drawer .appnav__link {
  padding: 13px 14px;
  font-size: 1rem;
}

.appnav__link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 15px;
  border-radius: var(--r-sm);
  font-size: .95rem;
  font-weight: 550;
  color: var(--text-2);
  white-space: nowrap;
  transition: background .18s var(--ease), color .18s var(--ease);
}

.appnav__link:hover { background: var(--surface-2); color: var(--text); }

.appnav__link.is-active {
  background: color-mix(in srgb, var(--primary) 12%, transparent);
  color: var(--primary);
}

.appnav__spacer { flex: 1; }

.appnav__actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  background: var(--surface);
  color: var(--text-2);
  font-size: 1rem;
  cursor: pointer;
  transition: all .18s var(--ease);
}

.theme-toggle:hover {
  color: var(--text);
  border-color: var(--border-strong);
  transform: translateY(-1px);
}

/* L'icône affichée dépend du thème résolu. */
.theme-toggle__sun { display: none; }
.theme-toggle__moon { display: inline; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .theme-toggle__sun { display: inline; }
  :root:not([data-theme="light"]) .theme-toggle__moon { display: none; }
}
:root[data-theme="dark"] .theme-toggle__sun { display: inline; }
:root[data-theme="dark"] .theme-toggle__moon { display: none; }
:root[data-theme="light"] .theme-toggle__sun { display: none; }
:root[data-theme="light"] .theme-toggle__moon { display: inline; }

/* Sous 720px : la rangée de liens laisse place au menu déroulant. */
@media (max-width: 720px) {
  .appnav__links { display: none; }
  .appnav__burger { display: flex; }
  .appnav.is-open .appnav__drawer { display: flex; }
}

@media (max-width: 640px) {
  .appnav__inner { padding: 0 12px; gap: 8px; }
  .appnav__brand span:not(.appnav__brand-dot) { display: none; }
}

/* --------------------------------------------------------------
   4. COMPOSANTS PARTAGÉS
   -------------------------------------------------------------- */

/* --- Boutons --- */
.btn,
.btn-primary,
.btn-secondary,
.btn-danger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 10px 16px;
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  font-family: inherit;
  font-size: .89rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.2;
  cursor: pointer;
  white-space: nowrap;
  transition: transform .16s var(--ease), box-shadow .16s var(--ease),
              background .16s var(--ease), border-color .16s var(--ease);
}

.btn, .btn-primary {
  background: var(--primary);
  color: var(--primary-contrast);
  box-shadow: var(--shadow-sm);
}

.btn:hover, .btn-primary:hover {
  background: var(--primary-dark);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

.btn:active, .btn-primary:active { transform: translateY(0); }

.btn-secondary {
  background: var(--surface);
  color: var(--text);
  border-color: var(--border);
  box-shadow: var(--shadow-sm);
}

.btn-secondary:hover {
  background: var(--surface-2);
  border-color: var(--border-strong);
  transform: translateY(-1px);
}

.btn-danger {
  background: var(--danger);
  color: #fff;
  box-shadow: var(--shadow-sm);
}

.btn-danger:hover {
  background: var(--danger-dark);
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

button:disabled,
.btn:disabled,
.btn-primary:disabled,
.btn-secondary:disabled,
.btn-danger:disabled {
  opacity: .5;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: none;
}

/* --- Champs de formulaire --- */
input[type="text"], input[type="number"], input[type="email"], input[type="password"],
input[type="date"], input[type="time"], input[type="url"], input[type="search"],
select, textarea {
  width: 100%;
  padding: 11px 13px;
  font-family: inherit;
  font-size: .92rem;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  outline: none;
  transition: border-color .16s var(--ease), box-shadow .16s var(--ease), background .16s var(--ease);
}

input::placeholder, textarea::placeholder { color: var(--text-3); }

input:focus, select:focus, textarea:focus {
  border-color: var(--primary);
  box-shadow: var(--shadow-glow);
}

select {
  appearance: none;
  background-image: linear-gradient(45deg, transparent 50%, var(--text-3) 50%),
                    linear-gradient(135deg, var(--text-3) 50%, transparent 50%);
  background-position: calc(100% - 17px) center, calc(100% - 12px) center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
  padding-right: 34px;
  cursor: pointer;
}

/* Les pickers natifs restent lisibles en sombre */
:root[data-theme="dark"] input[type="date"]::-webkit-calendar-picker-indicator,
:root[data-theme="dark"] input[type="time"]::-webkit-calendar-picker-indicator {
  filter: invert(1); opacity: .65;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) input[type="date"]::-webkit-calendar-picker-indicator,
  :root:not([data-theme="light"]) input[type="time"]::-webkit-calendar-picker-indicator {
    filter: invert(1); opacity: .65;
  }
}

/* --- Carte générique --- */
.surface-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
}

/* --- Modales --- */
.modal {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background: color-mix(in srgb, #05070c 55%, transparent);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  animation: modal-fade .2s var(--ease);
}

.modal.hidden { display: none !important; }

@keyframes modal-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes modal-rise {
  from { opacity: 0; transform: translateY(12px) scale(.98); }
  to   { opacity: 1; transform: none; }
}

.modal-content,
.modal-card {
  width: 100%;
  max-width: 460px;
  max-height: 88vh;
  overflow-y: auto;
  padding: 24px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  box-shadow: var(--shadow-lg);
  animation: modal-rise .26s var(--ease);
}

.modal-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 20px;
}

/* --- Utilitaires --- */
.muted { color: var(--text-2); }
.stack { display: flex; flex-direction: column; gap: 12px; }
.row { display: flex; align-items: center; gap: 10px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
}

/* --------------------------------------------------------------
   Panneau de réglages (molette de la barre de navigation)
   -------------------------------------------------------------- */
.settings-wrap { position: relative; }

/* Sans max-height + overflow-y, le panneau grandit avec tout son contenu
   (Mode affichage, Luminosité, ... jusqu'a Localisation meteo en dernier) et
   peut deborder sous le bas de l'ecran sur un ecran bas (tablette murale,
   petit telephone) sans aucun moyen d'atteindre les dernieres sections. */
.settings-panel {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 950;
  width: 250px;
  max-width: calc(100vw - 24px);
  max-height: calc(100dvh - var(--nav-h) - env(safe-area-inset-top, 0px) - 24px);
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px) scale(.98);
  transform-origin: top right;
  transition: all .18s var(--ease);
}

.settings-panel.open {
  opacity: 1;
  visibility: visible;
  transform: none;
}

.settings-section { display: flex; flex-direction: column; gap: 2px; }

.settings-title {
  display: block;
  padding: 4px 8px 6px;
  font-size: .7rem;
  font-weight: 660;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--text-3);
}

.settings-row {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 8px;
  border-radius: var(--r-xs);
  font-size: .86rem;
  color: var(--text-2);
  cursor: pointer;
  transition: background .14s var(--ease), color .14s var(--ease);
}

.settings-row:hover { background: var(--surface-2); color: var(--text); }

.settings-row input {
  width: 16px;
  height: 16px;
  margin: 0;
  flex-shrink: 0;
  accent-color: var(--primary);
  cursor: pointer;
}

/* --- Curseur (luminosité, etc.) — pas de bordure, une simple ligne comme
   `.settings-row`, mais sur deux niveaux (étiquette+valeur, puis piste). --- */
.settings-slider {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px;
}

.settings-slider-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: .86rem;
  color: var(--text-2);
}

.settings-slider-value {
  font-variant-numeric: tabular-nums;
  font-weight: 660;
  color: var(--text);
}

.settings-panel input[type="range"] {
  width: 100%;
  margin: 0;
  accent-color: var(--primary);
  cursor: pointer;
}

/* --- Plages horaires (programme de luminosité) --- */
.settings-schedule-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 6px;
}

.settings-schedule-row {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 2px;
}

.settings-panel input[type="time"],
.settings-panel .settings-schedule-pct {
  box-sizing: border-box;
  border: 1px solid var(--border);
  background: var(--surface-2);
  color: var(--text);
  border-radius: var(--r-sm);
  font-family: inherit;
  font-size: .8rem;
  padding: 6px 8px;
  min-height: 0;
}

/* min-width borné : sous cette largeur, les sous-champs heure/minute du
   sélecteur natif se chevauchent plutôt que de rétrécir proprement. Le
   panneau (250px) laisse largement la place, même avec le reste de la
   ligne (pourcentage + bouton supprimer). */
.settings-panel input[type="time"] { flex: 1; min-width: 64px; }

.settings-schedule-pct {
  width: 42px;
  flex-shrink: 0;
  text-align: right;
  padding-right: 4px;
  -moz-appearance: textfield;
}
.settings-schedule-pct::-webkit-inner-spin-button,
.settings-schedule-pct::-webkit-outer-spin-button { margin: 0; }

.settings-schedule-pct-unit {
  font-size: .78rem;
  color: var(--text-3);
  flex-shrink: 0;
}

.settings-schedule-remove {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border: none;
  background: none;
  color: var(--text-3);
  cursor: pointer;
  border-radius: var(--r-xs);
  font-size: .78rem;
  line-height: 1;
  transition: background .14s var(--ease), color .14s var(--ease);
}
.settings-schedule-remove:hover { background: var(--surface-2); color: var(--danger); }

/* --- Voile de luminosité ---
   Assombrit tout l'écran par-dessus la page (voir applyBrightness, home.js),
   sans jamais gêner un clic ou un toucher (pointer-events:none). Au-dessus
   de tout, y compris les modales (z-index:1000) : on veut voir l'effet
   même pendant qu'on règle le curseur dans le panneau. */
#brightnessOverlay {
  position: fixed;
  inset: 0;
  z-index: 2000;
  background: #000;
  opacity: 0;
  pointer-events: none;
  transition: opacity .25s var(--ease);
}

/* --- Sections repliables du panneau --- */
.settings-drop { border-radius: var(--r-xs); }

.settings-summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 3px 2px;
  border-radius: var(--r-xs);
  cursor: pointer;
  list-style: none;
  transition: background .14s var(--ease);
}

/* Le triangle par défaut se place mal et diffère d'un navigateur à l'autre :
   on le remplace par un chevron maison, aligné à droite. */
.settings-summary::-webkit-details-marker { display: none; }
.settings-summary::marker { content: ''; }

.settings-summary::after {
  content: '⌄';
  margin-left: auto;
  padding: 0 6px;
  font-size: .9rem;
  line-height: 1;
  color: var(--text-3);
  transform: translateY(-3px);
  transition: transform .2s var(--ease);
}

.settings-drop[open] > .settings-summary::after { transform: translateY(1px) rotate(180deg); }
.settings-summary:hover { background: var(--surface-2); }
.settings-summary:hover .settings-title { color: var(--text-2); }
.settings-summary .settings-title { padding: 4px 6px; cursor: pointer; }

.settings-count {
  padding: 2px 7px;
  border-radius: var(--r-full);
  background: var(--surface-2);
  font-size: .66rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--text-3);
}

.settings-drop-body {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 2px 0 8px;
}

.settings-sep { margin: 8px 4px; border-top: 1px solid var(--border); }

.settings-logout {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  width: 100%;
  padding: 9px;
  border: 1px solid transparent;
  border-radius: var(--r-xs);
  background: color-mix(in srgb, var(--danger) 12%, transparent);
  color: var(--danger);
  font-family: inherit;
  font-size: .86rem;
  font-weight: 620;
  cursor: pointer;
  transition: background .16s var(--ease), color .16s var(--ease);
}

.settings-logout:hover { background: var(--danger); color: #fff; }

@media (max-width: 640px) {
  .settings-panel { width: 232px; }
}

/* --- Contrôles injectés par la page dans le panneau réglages --- */
.settings-current {
  padding: 7px 8px 9px;
  font-size: .88rem;
  font-weight: 600;
  color: var(--text);
}

.settings-search { display: flex; gap: 6px; margin-bottom: 8px; }

.settings-search input {
  flex: 1;
  min-width: 0;
  padding: 8px 10px;
  font-size: .85rem;
}

.settings-search .btn-mini { flex-shrink: 0; padding: 8px 12px; }

.settings-geoloc {
  width: 100%;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: var(--r-xs);
  background: var(--surface-2);
  color: var(--text-2);
  font-family: inherit;
  font-size: .82rem;
  font-weight: 600;
  cursor: pointer;
  transition: all .16s var(--ease);
}

.settings-geoloc:hover {
  border-color: var(--primary);
  color: var(--primary);
}

.settings-results { display: flex; flex-direction: column; gap: 4px; margin-top: 8px; }

.settings-result {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  padding: 7px 9px;
  border: none;
  border-radius: var(--r-xs);
  background: transparent;
  color: var(--text-2);
  font-family: inherit;
  text-align: left;
  cursor: pointer;
  transition: background .14s var(--ease);
}

.settings-result:hover { background: var(--surface-2); }
.settings-result strong { font-size: .86rem; font-weight: 620; color: var(--text); }
.settings-result span { font-size: .74rem; color: var(--text-3); }

/* ==========================================================================
   HARMONISATION DU PANNEAU DE RÉGLAGES

   Le panneau s'est enrichi par couches successives : listes déroulantes,
   boutons pleine largeur, liens, champs de recherche, lignes à cocher —
   chacun avec ses propres marges, hauteurs et arrondis. Résultat, une
   colonne qui partait dans tous les sens.

   Tout passe ici par la même boîte : même hauteur minimale, même arrondi,
   même padding, même taille de texte. L'espacement est porté par le `gap`
   du conteneur, plus par des `margin-top` posées au cas par cas.
   ========================================================================== */
.settings-drop-body,
.settings-section { gap: 6px; }

.settings-panel select,
.settings-panel .settings-geoloc,
.settings-panel .settings-link,
.settings-panel .settings-search input,
.settings-panel .settings-result,
.settings-panel .settings-current,
.settings-panel .settings-logout,
.settings-panel .settings-row {
  box-sizing: border-box;
  width: 100%;
  min-height: 38px;
  margin: 0;
  padding: 9px 12px;
  border-radius: var(--r-sm);
  font-family: inherit;
  font-size: .84rem;
  line-height: 1.3;
}

/* Les contrôles actionnables partagent aussi la même bordure et le même fond. */
.settings-panel select,
.settings-panel .settings-geoloc,
.settings-panel .settings-link,
.settings-panel .settings-search input,
.settings-panel .settings-result {
  border: 1px solid var(--border);
  background: var(--surface-2);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}

.settings-panel select { appearance: none; -webkit-appearance: none; padding-right: 30px; }

/* Chevron maison, aligné sur celui des sections repliables. */
.settings-panel .settings-select-wrap { position: relative; }

.settings-panel select {
  background-image: linear-gradient(45deg, transparent 50%, var(--text-3) 50%),
                    linear-gradient(135deg, var(--text-3) 50%, transparent 50%);
  background-position: calc(100% - 16px) center, calc(100% - 11px) center;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}

.settings-panel select:hover,
.settings-panel .settings-geoloc:hover,
.settings-panel .settings-link:hover,
.settings-panel .settings-result:hover { background-color: var(--surface-3, var(--surface)); }

.settings-panel .settings-search { display: flex; gap: 6px; margin: 0; }
.settings-panel .settings-search input { flex: 1; width: auto; }
.settings-panel .settings-search .btn-mini { flex-shrink: 0; width: auto; padding: 9px 14px; }

.settings-panel .settings-results { gap: 6px; margin-top: 0; display: flex; flex-direction: column; }

/* La ligne à cocher n'a pas de bordure : c'est une ligne, pas un bouton. */
.settings-panel .settings-row { border: none; background: none; }
.settings-panel .settings-row:hover { background: var(--surface-2); }

/* Le résultat de recherche empile deux lignes : il déroge à la hauteur fixe. */
.settings-panel .settings-result {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-height: 44px;
}

.settings-panel .settings-note { margin: 2px 2px 0; }
.settings-panel .settings-current { background: var(--surface-2); border: 1px solid var(--border); }
