/* ============================================================================
   CLIMÉVIA — « PANORAMA » · design system unifié de l'appli (2026-07, v2)
   ----------------------------------------------------------------------------
   Refonte complète du style sur l'architecture « Altitude » : l'appli passe
   sur la palette de MARQUE — base crème alpine, encre navy profonde, glacier
   pour l'action, point sommital orange. Typographie Manrope, surfaces
   blanches à liseré capillaire, verre dépoli sur les barres, boutons galbés,
   mouvements courts et amortis. Chargé APRÈS le <style> de chaque page : à
   spécificité égale, c'est LUI qui gagne — les pages ne gardent que leur mise
   en page propre.
   RÈGLES : ne JAMAIS styler l'aperçu « papier » (.pa*, .page, #a4) — il doit
   rester le miroir exact du PDF. Aucun sélecteur ici ne doit y toucher.
   ============================================================================ */
/* (l'@import de fonts/manrope.css a été retiré 2026-08 : chaque page charge déjà la police en
   <link> versionné ?v=ASSET_V — l'URL nue d'ici créait un DOUBLE téléchargement du même fichier,
   en série derrière cv-theme. 404/500/planning ont reçu leur <link> à cette occasion.) */

/* ── 1. TOKENS ─────────────────────────────────────────────────────────────
   Nouveaux tokens « Panorama » + couche de COMPATIBILITÉ : toutes les
   variables historiques des pages sont redéfinies ici → re-palette globale
   sans toucher aux pages. */
:root{
  /* Panorama */
  --alt-bg:#F2EFE8;
  --alt-surface:#FFFFFF;
  --alt-surface-2:#F8F6F1;
  --alt-ink:#101D28;
  --alt-ink-2:#47555F;
  --alt-hair:rgba(16,29,40,.11);
  --alt-hair-soft:rgba(16,29,40,.065);
  --alt-r-ctl:12px;      /* contrôles (boutons, champs) */
  --alt-r-card:18px;     /* cartes, panneaux */
  --alt-r-modal:22px;    /* modales, feuilles */
  --alt-sh-1:0 1px 2px rgba(15,27,40,.05);
  --alt-sh-2:0 2px 4px rgba(15,27,40,.04),0 14px 34px rgba(15,27,40,.08);
  --alt-sh-3:0 14px 30px rgba(15,27,40,.16),0 48px 100px rgba(15,27,40,.24);
  --alt-ease:cubic-bezier(.2,.8,.3,1);
  --alt-t:.16s;
  --alt-glass:rgba(255,253,249,.8);
  --alt-topbar-inset:rgba(255,255,255,.6);
  --alt-field:#F0EDE5;
  --alt-field-hover:#EBE7DD;
  --alt-field-focus:#FFFFFF;
  --alt-placeholder:#8C97A1;
  --alt-modal-edge:rgba(255,255,255,.65);
  --btn-ok:#1E7A4C;

  /* Compatibilité — palette historique. ATTENTION : les valeurs marquées (papier) sont
     AUSSI utilisées par les aperçus A4 (.pa*, .page) qui doivent rester le miroir exact
     des PDF — elles reprennent donc les valeurs historiques À L'IDENTIQUE (verrou plus bas). */
  --font:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --bg:#F2EFE8; --surface:#F7F5F0; --white:#FFFFFF;
  --ink:#101D28; --text:#1F2E3A; --text2:#3A4B57; --text3:#5A6875;
  --muted:#5A6875; --gris:#5A6875; /* (papier) */ --gry:#75828D; --gry-bg:#EFECE4;
  --bord:#E4E0D6; /* (papier) */ --line:#E4E0D6; --line-soft:#EEEBE2;
  --navy:#1B2A37;
  --ard-900:#101D28; --ard-800:#1F2E3A; --ard-700:#33475A; /* (papier) */
  --ard-100:#E8E7E0; --ard-050:#F5F3EC; /* (papier) */
  --accent:#5B9BD5; --glacier:#5B9BD5; --glacier-d:#27689A; /* (papier : re-épinglé #2E7AB0) */
  --glacier-soft:#E7F1FA; --glacier-bg:#E7F1FA; /* (papier) */ --blu:#27689A; --blu-bg:#E8F2FA;
  --cuivre:#C0964F; --cuivre-d:#9A7636; /* (papier) */ --cuivre-soft:#F4ECDC; --cuivre-bg:#F4ECDC; /* (papier) */
  --orange:#D9663F; --cream:#F4F0E8;
  --ok:#1E7A4C; --ok-bg:#E6F5EC;
  --warn:#8F6D2F; --warn-bg:#FBF3E2;
  --urg:#D64545; --urg-d:#9F2F2F; --urg-bg:#FBEBEB; /* (papier) */
  --err:#C0392B; --err-bg:#FDECEA;
  --shadow:0 2px 4px rgba(15,27,40,.04),0 14px 34px rgba(15,27,40,.08);
  --alt-horizon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 720 160'%3E%3Cpath d='M0 140 L110 58 L200 122 L330 30 L450 112 L560 52 L720 128' fill='none' stroke='%231B2A37' stroke-width='2.5' stroke-linejoin='round' stroke-linecap='round'/%3E%3Cpath d='M0 152 L150 92 L260 140 L400 70 L520 132 L640 96 L720 118' fill='none' stroke='%235B9BD5' stroke-width='2.5' stroke-linejoin='round' stroke-linecap='round'/%3E%3Ccircle cx='330' cy='30' r='5.5' fill='%23D9663F'/%3E%3C/svg%3E");
  --alt-horizon-op:.055;
}

/* ── MODE SOMBRE « NUIT EN REFUGE » ────────────────────────────────────────
   Deux portes : préférence système (sauf choix « clair » forcé) OU classe
   .cv-dark posée par la bascule 🌗 de la palette (localStorage cv_theme).
   Les aperçus PAPIER restent clairs : verrou plus bas. */
:root.cv-dark{color-scheme:dark;}
@media (prefers-color-scheme:dark){:root:not(.cv-light){color-scheme:dark;}}
:root.cv-dark,
:root:not(.cv-light).cv-auto-dark{--x:1;}
@media (prefers-color-scheme:dark){
:root:not(.cv-light){
  --alt-bg:#0B121B; --alt-surface:#131D28; --alt-surface-2:#192632;
  --alt-ink:#EAF0F5; --alt-ink-2:#AEBBC6;
  --alt-hair:rgba(255,255,255,.11); --alt-hair-soft:rgba(255,255,255,.06);
  --alt-glass:rgba(13,20,28,.82);
  --alt-topbar-inset:rgba(255,255,255,.06);
  --alt-field:#0D1721;
  --alt-field-hover:#11202C;
  --alt-field-focus:#0A121C;
  --alt-placeholder:#64737F;
  --alt-modal-edge:rgba(255,255,255,.09);
  --btn-ok:#1C7E4F;
  --bg:#0B121B; --surface:#192632; --white:#131D28;
  --ink:#EAF0F5; --text:#EAF0F5; --text2:#C2CDD6; --text3:#9AA8B4;
  --muted:#A9B7C3; --gris:#A2B0BC; --gry:#8FA0AC; --gry-bg:#22303E;
  --bord:#2A3846; --line:#2A3846; --line-soft:#212E3B;
  --navy:#EAF0F5;
  --ard-900:#081019; --ard-800:#EAF0F5; --ard-700:#C6D1DA;
  --ard-100:#22303E; --ard-050:#192632;
  --accent:#6FA9DC; --glacier:#6FA9DC; --glacier-d:#8CBEE8;
  --glacier-soft:#1B2E40; --glacier-bg:#1B2E40; --blu:#8CBEE8; --blu-bg:#1B2E40;
  --cuivre:#CFA45E; --cuivre-d:#D9B87A; --cuivre-soft:#2E2617; --cuivre-bg:#2E2617;
  --ok:#4CC38A; --ok-bg:#153327; --warn:#D9B87A; --warn-bg:#2E2617;
  --urg:#E5716A; --urg-d:#F09490; --urg-bg:#3A1D1C; --err:#E5716A; --err-bg:#3A1D1C;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 12px 34px rgba(0,0,0,.45);
  --alt-horizon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 720 160'%3E%3Cpath d='M0 140 L110 58 L200 122 L330 30 L450 112 L560 52 L720 128' fill='none' stroke='%23F4F0E8' stroke-width='2.5' stroke-linejoin='round' stroke-linecap='round'/%3E%3Cpath d='M0 152 L150 92 L260 140 L400 70 L520 132 L640 96 L720 118' fill='none' stroke='%235B9BD5' stroke-width='2.5' stroke-linejoin='round' stroke-linecap='round'/%3E%3Ccircle cx='330' cy='30' r='5.5' fill='%23D9663F'/%3E%3C/svg%3E");
  --alt-horizon-op:.06;
}}
:root.cv-dark{
  --alt-bg:#0B121B; --alt-surface:#131D28; --alt-surface-2:#192632;
  --alt-ink:#EAF0F5; --alt-ink-2:#AEBBC6;
  --alt-hair:rgba(255,255,255,.11); --alt-hair-soft:rgba(255,255,255,.06);
  --alt-glass:rgba(13,20,28,.82);
  --alt-topbar-inset:rgba(255,255,255,.06);
  --alt-field:#0D1721;
  --alt-field-hover:#11202C;
  --alt-field-focus:#0A121C;
  --alt-placeholder:#64737F;
  --alt-modal-edge:rgba(255,255,255,.09);
  --btn-ok:#1C7E4F;
  --bg:#0B121B; --surface:#192632; --white:#131D28;
  --ink:#EAF0F5; --text:#EAF0F5; --text2:#C2CDD6; --text3:#9AA8B4;
  --muted:#A9B7C3; --gris:#A2B0BC; --gry:#8FA0AC; --gry-bg:#22303E;
  --bord:#2A3846; --line:#2A3846; --line-soft:#212E3B;
  --navy:#EAF0F5;
  --ard-900:#081019; --ard-800:#EAF0F5; --ard-700:#C6D1DA;
  --ard-100:#22303E; --ard-050:#192632;
  --accent:#6FA9DC; --glacier:#6FA9DC; --glacier-d:#8CBEE8;
  --glacier-soft:#1B2E40; --glacier-bg:#1B2E40; --blu:#8CBEE8; --blu-bg:#1B2E40;
  --cuivre:#CFA45E; --cuivre-d:#D9B87A; --cuivre-soft:#2E2617; --cuivre-bg:#2E2617;
  --ok:#4CC38A; --ok-bg:#153327; --warn:#D9B87A; --warn-bg:#2E2617;
  --urg:#E5716A; --urg-d:#F09490; --urg-bg:#3A1D1C; --err:#E5716A; --err-bg:#3A1D1C;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 12px 34px rgba(0,0,0,.45);
  --alt-horizon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 720 160'%3E%3Cpath d='M0 140 L110 58 L200 122 L330 30 L450 112 L560 52 L720 128' fill='none' stroke='%23F4F0E8' stroke-width='2.5' stroke-linejoin='round' stroke-linecap='round'/%3E%3Cpath d='M0 152 L150 92 L260 140 L400 70 L520 132 L640 96 L720 118' fill='none' stroke='%235B9BD5' stroke-width='2.5' stroke-linejoin='round' stroke-linecap='round'/%3E%3Ccircle cx='330' cy='30' r='5.5' fill='%23D9663F'/%3E%3C/svg%3E");
  --alt-horizon-op:.06;
}

/* ── VERROU PAPIER (toujours actif : no-op en clair, protection en sombre) ──
   Les aperçus A4 sont le miroir des PDF : leurs variables reprennent les
   valeurs claires historiques quel que soit le thème. */
.pa,.page,#a4{
  color-scheme:light;
  --ard-900:#16222B; --ard-800:#22313D; --ard-700:#33475A;
  --ard-100:#E7EDF1; --ard-050:#F4F7F9;
  --bord:#E4E8EC; --line:#E4E8EC; --gris:#5A6875; --muted:#5A6875;
  --white:#FFFFFF; --surface:#F4F7F9; --ink:#22313D; --text:#22313D; --text2:#3A4B57; --text3:#5A6875;
  --glacier:#5B9BD5; --glacier-d:#2E7AB0; --glacier-bg:#E7F1FA; --glacier-soft:#E7F1FA;
  --cuivre:#C0964F; --cuivre-d:#9A7636; --cuivre-bg:#F4ECDC; --cuivre-soft:#F4ECDC;
  --urg:#D64545; --urg-d:#9F2F2F; --urg-bg:#FBEBEB; --ok:#1E7A4C; --ok-bg:#E6F5EC;
  --line-soft:#F4F7F9; --gry-bg:#EEF1F4; --glacier:#5B9BD5; --cuivre:#C0964F;
  --navy:#22313D;
}

@media screen{

/* ── 2. SOCLE ────────────────────────────────────────────────────────────── */
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  font-family:var(--font);
  background:
    radial-gradient(1100px 380px at 12% -180px, rgba(91,155,213,.09), transparent 60%),
    radial-gradient(900px 340px at 92% -160px, rgba(192,150,79,.10), transparent 55%),
    var(--alt-bg);
  color:var(--alt-ink);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3{letter-spacing:-.022em;}
::selection{background:rgba(91,155,213,.28);}
/* Entrée de page : le contenu se pose en douceur (une seule fois, jamais les overlays) */
@keyframes cvAltEnter{from{opacity:0;transform:translateY(7px);}to{opacity:1;transform:none;}}
.wrap,.main-inner,.shell{animation:cvAltEnter .34s var(--alt-ease) both;}

/* ── IDENTITÉ « LE SOMMET » ────────────────────────────────────────────────
   L'ADN CLIMÉVIA (chevrons de montagne + point orange) tissé dans l'interface. */
/* Ligne d'horizon : crêtes en filigrane au bas de chaque page (aucune requête : SVG inline) */
body::after{
  content:'';position:fixed;left:0;right:0;bottom:0;height:150px;z-index:0;pointer-events:none;
  background:var(--alt-horizon) bottom/720px 160px repeat-x;
  opacity:var(--alt-horizon-op,.055);
}
/* Le « V » de la marque se lève à l'arrivée (topbars, sidebar, login — JAMAIS l'aperçu papier) */
@keyframes cvPeakRise{from{opacity:0;transform:translateY(5px);}to{opacity:1;transform:none;}}
.tb-wm span,.sb-logo .wm span,.lockup .wm span{display:inline-block;animation:cvPeakRise .55s .12s var(--alt-ease) backwards;}
/* Point sommital orange : marque la section ACTIVE de la barre */
.cvbar-t.on::after{content:'';width:4px;height:4px;border-radius:50%;background:#D9663F;flex-shrink:0;}
/* …et signe chaque toast */
#cv-toast::before,.toast::before,#toast::before{
  content:'';display:inline-block;width:6px;height:6px;border-radius:50%;
  background:#D9663F;margin-right:9px;vertical-align:middle;box-shadow:0 0 6px rgba(217,102,63,.55);
}
:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(91,155,213,.35);border-radius:8px;}
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-thumb{background:rgba(16,29,40,.20);border-radius:8px;border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-thumb:hover{background:rgba(16,29,40,.34);border:2px solid transparent;background-clip:content-box;}
::-webkit-scrollbar-track{background:transparent;}

/* ── 3. BARRES (topbar des pages) — verre dépoli + ligne de crête ────────── */
.topbar{
  background:var(--alt-glass);
  -webkit-backdrop-filter:blur(16px) saturate(1.5);
  backdrop-filter:blur(16px) saturate(1.5);
  border-bottom:1px solid transparent;
  border-image:linear-gradient(90deg,rgba(91,155,213,.75),rgba(91,155,213,.22) 34%,var(--alt-hair) 72%,transparent) 1;
  box-shadow:0 1px 0 var(--alt-topbar-inset) inset;
}
.tb-tag{border-color:var(--alt-hair);color:var(--muted);}
.tb-link,.topbar .tb-link{color:var(--muted);}
/* Badges de la barre/dock (émis APRÈS ce fichier → override par id) : terracotta AA */
#cvbar-bdg,#cvdock-bdg{background:#BC5430;box-shadow:0 1px 3px rgba(188,84,48,.4);}
/* Bandeau TOTAL TTC (devis) : navy Panorama + couleur SOLIDE de repli sous le dégradé */
.totrow.ttc{background-color:#15242F;background-image:linear-gradient(180deg,#22384C,#15242F);}
/* Sidebar app.php : navy Panorama + couleur SOLIDE de repli sous le dégradé */
.sidebar{background-color:#101D28;background-image:linear-gradient(180deg,#1B2E3F 0%,#101D28 100%);}

/* ── 4. BOUTONS — galbés, poids 700, mouvement court ─────────────────────── */
.btn{
  font-family:inherit;font-weight:700;
  border-radius:var(--alt-r-ctl);
  border:1px solid var(--alt-hair);
  background:var(--alt-surface);color:var(--alt-ink);
  box-shadow:var(--alt-sh-1);
  cursor:pointer;
  transition:transform var(--alt-t) var(--alt-ease),box-shadow var(--alt-t) var(--alt-ease),background var(--alt-t) var(--alt-ease),border-color var(--alt-t) var(--alt-ease),filter var(--alt-t) var(--alt-ease);
}
.btn:hover{transform:translateY(-1px);box-shadow:0 3px 10px rgba(15,27,40,.10);}
.btn:active{transform:translateY(0) scale(.98);box-shadow:var(--alt-sh-1);}
.btn:disabled{opacity:.5;transform:none;box-shadow:none;cursor:default;}
/* Primaires (navy de marque, galbe lumineux) — background-color SOLIDE de repli + dégradé */
.btn-navy,.btn.navy{background-color:#15242F;background-image:linear-gradient(180deg,#22384C,#15242F);border-color:#101D28;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.14),var(--alt-sh-1);}
.btn-navy:hover,.btn.navy:hover{filter:brightness(1.14);}
/* Accent glacier — assombri pour tenir AA en blanc */
.btn-p,.btn.p,.btn.glacier,.btn-ai{background-color:#2E7AB0;background-image:linear-gradient(180deg,#3E86C6,#2E7AB0);border-color:#26669A;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),var(--alt-sh-1);}
.btn-p:hover,.btn.p:hover,.btn.glacier:hover,.btn-ai:hover{filter:brightness(1.08);}
/* Succès */
.btn-green,.btn-g,.btn-ok,.btn.ok{background-color:#1E7A4C;background-image:linear-gradient(180deg,#23945C,#1E7A4C);border-color:#196742;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.16),var(--alt-sh-1);}
.btn-green:hover,.btn-g:hover,.btn-ok:hover,.btn.ok:hover{filter:brightness(1.08);}
/* Ambre (finaliser…) — assombri pour tenir AA en blanc */
.btn-amber{background-color:#96702F;background-image:linear-gradient(180deg,#A98442,#96702F);border-color:#7F5E27;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.16),var(--alt-sh-1);}
/* Neutres / contours */
.btn-o,.btn-outline,.btn.ghost,.btn-c{background:var(--alt-surface);border-color:var(--alt-hair);color:var(--alt-ink);}
.btn-o:hover,.btn-outline:hover,.btn.ghost:hover{background:var(--alt-surface-2);}
/* Danger */
.btn-danger,.btn.danger{background:var(--alt-surface);border-color:rgba(159,47,47,.30);color:var(--urg-d);}
.btn-danger:hover,.btn.danger:hover{background:var(--urg-bg);}
.btn-del{transition:transform var(--alt-t) var(--alt-ease);}
.btn-del:hover{transform:scale(1.06);}
/* Petits boutons d'action (listes) */
.mini{
  font-family:inherit;font-weight:700;border-radius:10px;
  border:1px solid var(--alt-hair);background:var(--alt-surface);
  transition:background var(--alt-t) var(--alt-ease),transform var(--alt-t) var(--alt-ease);
  cursor:pointer;
}
.mini:hover{background:var(--alt-surface-2);transform:translateY(-1px);}

/* ── 5. CHAMPS — style « rempli », focus anneau glacier ──────────────────── */
input[type=text],input[type=number],input[type=date],input[type=email],
input[type=password],input[type=search],input[type=tel],input[type=time],
input:not([type]),select,textarea{
  font-family:inherit;
  background:var(--alt-field)!important;
  border:1px solid transparent;
  border-radius:11px;
  color:var(--alt-ink)!important;
  transition:background var(--alt-t) var(--alt-ease),border-color var(--alt-t) var(--alt-ease),box-shadow var(--alt-t) var(--alt-ease);
}
input[type=text]:hover,input[type=number]:hover,input[type=date]:hover,
input[type=email]:hover,input[type=password]:hover,input[type=search]:hover,
input:not([type]):hover,select:hover,textarea:hover{background:var(--alt-field-hover)!important;}
input[type=text]:focus,input[type=number]:focus,input[type=date]:focus,
input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,
input[type=tel]:focus,input[type=time]:focus,input:not([type]):focus,
select:focus,textarea:focus{
  background:var(--alt-field-focus)!important;border-color:var(--glacier);
  box-shadow:0 0 0 3.5px rgba(91,155,213,.20),0 1px 2px rgba(15,27,40,.05);outline:none;
}
input::placeholder,textarea::placeholder{color:var(--alt-placeholder);}
select{cursor:pointer;}
label{font-family:inherit;}

/* ── 6. SURFACES — cartes & panneaux ─────────────────────────────────────── */
.panel,.card,.table-wrap{
  background:var(--alt-surface);
  border:1px solid var(--alt-hair-soft);
  border-radius:var(--alt-r-card);
  box-shadow:0 1px 2px rgba(15,27,40,.04),0 12px 32px rgba(27,42,55,.08);
}
.panel-h,.panel-hdr,.card-h{border-bottom:1px solid var(--alt-hair-soft);}

/* ── 7. TABLEAUX (hors aperçu papier) ────────────────────────────────────── */
.table-wrap table{border-collapse:collapse;}
.table-wrap th{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;
  color:var(--muted);font-weight:800;
  border-bottom:1px solid var(--alt-hair);
  background:transparent;
}
.table-wrap td{border-bottom:1px solid var(--alt-hair-soft);}
.table-wrap tbody tr{transition:background .12s var(--alt-ease);}
.table-wrap tbody tr:hover{background:var(--alt-surface-2);}

/* ── 8. MODALES & OVERLAYS — verre + apparition amortie ──────────────────── */
@keyframes cvAltPop{from{opacity:0;transform:translateY(8px) scale(.975);}to{opacity:1;transform:none;}}
@keyframes cvAltFade{from{opacity:0;}to{opacity:1;}}
.modal-overlay,.ov{
  -webkit-backdrop-filter:blur(7px);
  backdrop-filter:blur(7px);
  animation:cvAltFade .18s var(--alt-ease);
}
.modal{
  border-radius:var(--alt-r-modal);
  border:1px solid var(--alt-modal-edge);
  box-shadow:var(--alt-sh-3);
  animation:cvAltPop .2s var(--alt-ease);
}
.modal h3{letter-spacing:-.02em;}

/* ── 9. PASTILLES & BADGES ───────────────────────────────────────────────── */
.badge{font-weight:800;letter-spacing:.3px;border-radius:20px;}
.chip{transition:transform .12s var(--alt-ease),box-shadow .12s var(--alt-ease);}
.chip:hover{transform:translateY(-1px);}

/* ── 10. TOAST (cv-ui + toasts locaux) — capsule nuit translucide ────────── */
#cv-toast,.toast,#toast{
  background:rgba(16,27,40,.93)!important;
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
  color:#fff;
  border-radius:14px;
  box-shadow:0 10px 34px rgba(15,27,40,.35);
  font-family:var(--font);
  font-weight:600;
}

/* ── 11. CHARGEMENT — l'ascension : anneau glacier + point sommital orange en orbite ── */
.spin{position:relative;border-radius:50%;border:2.5px solid rgba(91,155,213,.22);border-top-color:var(--glacier);animation:cvAltSpin .8s cubic-bezier(.45,.15,.55,.85) infinite;}
.spin::after{content:'';position:absolute;top:-4px;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:#D9663F;box-shadow:0 0 5px rgba(217,102,63,.6);}
@keyframes cvAltSpin{to{transform:rotate(360deg);}}

/* ── 12. LIENS ───────────────────────────────────────────────────────────── */
a{color:var(--glacier-d);}
a:hover{color:#256898;}


/* Login en mode sombre : la carte de verre suit la nuit */
:root.cv-dark body>.card{background:rgba(19,29,40,.92);border-color:rgba(255,255,255,.08);}
@media (prefers-color-scheme:dark){:root:not(.cv-light) body>.card{background:rgba(19,29,40,.92);border-color:rgba(255,255,255,.08);}}
/* ── 13. MOUVEMENT RÉDUIT (accessibilité) ────────────────────────────────── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;}
}

} /* fin @media screen — l'impression garde les styles des pages */
