/* aero-theme.css - habillage du site quand on est dans le monde 2 "Aero" (Frutiger Aero, années
   2004-2013) : ciel bleu, prairie verte, ville de verre et éoliennes au loin, verre brillant,
   bulles de savon. Assumé rétro, à la limite du kitsch, mais toujours lisible.
   Activé par la classe body.aero-theme (World2.enter / exitToWorld1) : au retour dans le
   monde 1, le site redevient exactement comme avant.
   Photos : Unsplash (licence Unsplash : usage libre, commercial compris), servies par leur CDN à
   la taille de l'écran, chargées seulement si le thème s'applique (fonds CSS) :
     bandeau : ciel à gros nuages sur une colline, Scott Webb, https://unsplash.com/photos/3LsocYqXWpM
     fond de page : lagon mi-dessus mi-sous l'eau, Teddie Humaam, https://unsplash.com/photos/fPwlA536orM
     (à propos : photo de Yann, images/yann_beach.webp)
   Collines, ville et éoliennes du bandeau : SVG dessiné ici (généré, éoliennes animées en SMIL).
   Polices : texte en Frutiger si elle est installée, sinon Segoe UI (la police de Windows Vista /
   7, dérivée de la même famille humaniste), sinon Istok Web (Google, la plus proche en libre) ;
   nom et rôle en Baloo 2 (ronde, grasse, comme les logos de l'époque) ; titres en Orbitron.
   Tout ce qui tournait en couleur (animation "hue") est figé. */
@import url("https://fonts.googleapis.com/css2?family=Baloo+2:wght@700;800&family=Istok+Web:wght@400;700&family=Orbitron:wght@600;700;800&display=swap");

/* (enregistrées : animables et transitionnables ; lues par js/cta3d.js dans la transformation
   du bouton "Explore in 3D", 1 partout ailleurs) */
@property --cta-z{ syntax:'<number>'; inherits:false; initial-value:1; }
@property --cta-h{ syntax:'<number>'; inherits:false; initial-value:1; }

body.aero-theme{
    --aero-deep:#0a4fa8;
    --aero-blue:#1f7fd8;
    --aero-aqua:#2cc6d8;
    --aero-lime:#8fdc3c;
    --aero-ink:#0f3659;
    --aero-text:#284e6e;
    --aero-font:"Frutiger", "Frutiger LT Std", "Frutiger Next LT", "Segoe UI", "Istok Web", "Helvetica Neue", Arial, sans-serif;
    --aero-logo:"Baloo 2", "Arial Rounded MT Bold", "Segoe UI", sans-serif;
    --aero-head:"Orbitron", "Segoe UI", sans-serif;
    --bounce:cubic-bezier(.34, 1.56, .64, 1);
    font-family:var(--aero-font);
    background:#8fd3f2;
}
body.aero-theme h1, body.aero-theme h2, body.aero-theme h3, body.aero-theme h4,
body.aero-theme p, body.aero-theme a, body.aero-theme label, body.aero-theme li,
body.aero-theme span, body.aero-theme button, body.aero-theme input, body.aero-theme textarea{
    font-family:var(--aero-font);
}

/* plus de rotation de teinte (monde 1 synthwave) */
body.aero-theme .color-change,
body.aero-theme .navbar-default,
body.aero-theme .btn.rgb,
body.aero-theme .btn-banner,
body.aero-theme .image-overlay,
body.aero-theme #section-contact,
body.aero-theme .timeline-centered:before,
body.aero-theme .timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon,
body.aero-theme a:hover{
    animation:none !important;
    -webkit-animation:none !important;
    filter:none;
}

/* ---------- fond de page : le lagon, fixe derrière les panneaux de verre. Un élément fixe plutôt
   que background-attachment: fixed (ignoré sur iOS, l'image s'étirait sur toute la page) ---------- */
body.aero-theme::before{
    content:''; position:fixed; left:0; top:0; width:100%; height:100vh; z-index:-1; pointer-events:none;
    background:
        linear-gradient(180deg, rgba(225,245,255,.35), rgba(225,245,255,.15)),
        #52bfe0 url("https://images.unsplash.com/photo-1579622754173-e2a9aad270e3?auto=format&fit=crop&w=2000&h=1300&q=70") center 40% / cover no-repeat;
}
@media (max-width: 1100px){
    body.aero-theme::before{ background-image:linear-gradient(180deg, rgba(225,245,255,.35), rgba(225,245,255,.15)), url("https://images.unsplash.com/photo-1579622754173-e2a9aad270e3?auto=format&fit=crop&w=1300&h=1300&q=70"); }
}
@media (max-width: 700px){
    body.aero-theme::before{ background-image:linear-gradient(180deg, rgba(225,245,255,.35), rgba(225,245,255,.15)), url("https://images.unsplash.com/photo-1579622754173-e2a9aad270e3?auto=format&fit=crop&w=800&h=1400&q=70"); background-position:60% 50%; }
}
body.aero-theme #section-profile,
body.aero-theme #resume-details,
body.aero-theme #section-portfolio{ background:transparent; }

/* ---------- bulles de savon (SVG : nettes, jamais coupées) : semées sur les côtés de toute la page
   par js/aeroBubbles.js, chacune flotte à son rythme (--dx / --dy, durée, décalage) ---------- */
#aero-bubbles{ display:none; }
body.aero-theme #aero-bubbles{
    display:block; position:absolute; left:0; top:0; width:100%; z-index:2;   /* (= calque du paysage du bandeau, mais après lui : devant les collines ; sous le titre, z 3) */
    overflow:hidden; pointer-events:none;
}
body.in-3d #aero-bubbles{ display:none; }
#aero-bubbles i{
    position:absolute; display:block;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E %3Cdefs%3E %3CradialGradient id='b' cx='50%25' cy='50%25' r='50%25'%3E%3Cstop offset='0.62' stop-color='%23fff' stop-opacity='0.03'/%3E%3Cstop offset='0.9' stop-color='%23c8f4ff' stop-opacity='0.28'/%3E%3Cstop offset='1' stop-color='%23fff' stop-opacity='0.8'/%3E%3C/radialGradient%3E %3ClinearGradient id='i' x1='0' y1='0' x2='1' y2='1'%3E%3Cstop offset='0' stop-color='%236ff'/%3E%3Cstop offset='0.45' stop-color='%23f9c'/%3E%3Cstop offset='0.75' stop-color='%23ff9'/%3E%3Cstop offset='1' stop-color='%236cf'/%3E%3C/linearGradient%3E %3CradialGradient id='h' cx='50%25' cy='50%25' r='50%25'%3E%3Cstop offset='0' stop-color='%23fff' stop-opacity='0.95'/%3E%3Cstop offset='1' stop-color='%23fff' stop-opacity='0'/%3E%3C/radialGradient%3E %3C/defs%3E %3Ccircle cx='50' cy='50' r='47' fill='url%28%23b%29'/%3E %3Ccircle cx='50' cy='50' r='45.5' fill='none' stroke='url%28%23i%29' stroke-opacity='0.45' stroke-width='2.2'/%3E %3Cellipse cx='33' cy='29' rx='15' ry='8' transform='rotate%28-38 33 29%29' fill='url%28%23h%29'/%3E %3Cellipse cx='69' cy='75' rx='7' ry='3' transform='rotate%28-38 69 75%29' fill='%23fff' fill-opacity='0.5'/%3E %3C/svg%3E") center / 100% 100% no-repeat;
    animation:aero-float 9s ease-in-out infinite alternate;
    will-change:transform;
}
@keyframes aero-float{
    0%   { transform:translate(0, 0); }
    50%  { transform:translate(var(--dx), calc(var(--dy) * .45)); }
    100% { transform:translate(calc(var(--dx) * -.4), var(--dy)); }
}
@media (prefers-reduced-motion: reduce){ #aero-bubbles i{ animation:none; } }
body.aero-theme #section-banner{ overflow:hidden; }
body.aero-theme #section-contact{ overflow:hidden; }
body.aero-theme #section-contact > .container{ position:relative; z-index:3; }

/* ---------- bandeau : ciel à gros nuages (photo) + collines vertes brillantes, ville de verre et
   éoliennes au loin (SVG en 3 calques ancrés en bas : collines étirées en largeur, qui couvrent
   la colline de la photo ; ville + éoliennes à l'échelle de la hauteur, posées sur la crête ;
   colline de devant), soleil et
   bulles. Nom et rôle façon logo de l'époque : lettres rondes blanches cerclées de bleu (rôle :
   vert anis cerclé de vert), ombre douce. (Versions rejetées : panneau blanc sur colline = vide ;
   rubans / pilules / lettres biseautées = parodie ; bulles dans un ciel sombre = triste ;
   lagon + Nunito + pastilles de couleur = pas assez Frutiger Aero, pas de verre) ---------- */
body.aero-theme #section-banner{
    background:#3d9fe6 url("https://images.unsplash.com/photo-1493364391862-bb90969a4cc1?auto=format&fit=crop&w=2200&h=1300&q=75") center 70% / cover no-repeat;
}
@media (max-width: 1100px){
    body.aero-theme #section-banner{ background-image:url("https://images.unsplash.com/photo-1493364391862-bb90969a4cc1?auto=format&fit=crop&w=1400&h=1100&q=75"); }
}
@media (max-width: 700px){
    body.aero-theme #section-banner{ background-image:url("https://images.unsplash.com/photo-1493364391862-bb90969a4cc1?auto=format&fit=crop&w=900&h=1500&q=75"); background-position:40% 60%; }
}
/* le calque "motif" du monde 1 porte ici le soleil (halo + reflets d'objectif) et le paysage */
body.aero-theme #section-banner .pattern-overlay{
    background-image:
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 420' preserveAspectRatio='none'%3E %3Cdefs%3E %3ClinearGradient id='front' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23b9f566'/%3E%3Cstop offset='.3' stop-color='%236fd23c'/%3E%3Cstop offset='1' stop-color='%232c9a2e'/%3E%3C/linearGradient%3E %3ClinearGradient id='front2' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%239be553'/%3E%3Cstop offset='1' stop-color='%23248a2c'/%3E%3C/linearGradient%3E %3ClinearGradient id='gloss' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff' stop-opacity='.55'/%3E%3Cstop offset='1' stop-color='%23fff' stop-opacity='0'/%3E%3C/linearGradient%3E %3C/defs%3E %3Cpath d='M0 262 C 300 212%2C 700 228%2C 1000 258 C 1250 282%2C 1450 232%2C 1600 222 L1600 420 L0 420Z' fill='url%28%23front%29'/%3E %3Cpath d='M0 262 C 300 212%2C 700 228%2C 1000 258 C 1250 282%2C 1450 232%2C 1600 222 L1600 250 C 1450 258%2C 1250 308%2C 1000 282 C 700 250%2C 300 236%2C 0 286Z' fill='url%28%23gloss%29'/%3E %3Cpath d='M0 262 C 300 212%2C 700 228%2C 1000 258 C 1250 282%2C 1450 232%2C 1600 222' fill='none' stroke='%23fff' stroke-opacity='.75' stroke-width='2.5' vector-effect='non-scaling-stroke'/%3E %3Cpath d='M0 340 C 180 300%2C 420 306%2C 600 372 C 640 392%2C 660 410%2C 700 420 L0 420Z' fill='url%28%23front2%29'/%3E %3Cpath d='M0 340 C 180 300%2C 420 306%2C 600 372' fill='none' stroke='%23fff' stroke-opacity='.5' stroke-width='2' vector-effect='non-scaling-stroke'/%3E %3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-400 -160 4000 580' preserveAspectRatio='xMidYMax slice'%3E%3Cdefs%3E %3ClinearGradient id='tw' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%239fe0fb'/%3E%3Cstop offset='.4' stop-color='%23e8fbff'/%3E%3Cstop offset='.55' stop-color='%23b4e8fb'/%3E%3Cstop offset='1' stop-color='%233f9fe0'/%3E%3C/linearGradient%3E %3ClinearGradient id='twb' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23cbeefc'/%3E%3Cstop offset='.5' stop-color='%23f2fcff'/%3E%3Cstop offset='1' stop-color='%238ccaf0'/%3E%3C/linearGradient%3E %3CradialGradient id='orb' cx='.35' cy='.3' r='.7'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.4' stop-color='%239fe6ff'/%3E%3Cstop offset='1' stop-color='%232a8fd8'/%3E%3C/radialGradient%3E %3ClinearGradient id='dome' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23e8fbff' stop-opacity='.95'/%3E%3Cstop offset='1' stop-color='%237fd0f0' stop-opacity='.8'/%3E%3C/linearGradient%3E %3ClinearGradient id='mast' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='1' stop-color='%23c9e3f2'/%3E%3C/linearGradient%3E %3ClinearGradient id='bl' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='1' stop-color='%23cfe6f5'/%3E%3C/linearGradient%3E %3CradialGradient id='tree' cx='.35' cy='.3' r='.8'%3E%3Cstop offset='0' stop-color='%23b8f36a'/%3E%3Cstop offset='1' stop-color='%233f9c2e'/%3E%3C/radialGradient%3E %3ClinearGradient id='back' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23a9e57a'/%3E%3Cstop offset='1' stop-color='%235fbb4c'/%3E%3C/linearGradient%3E %3ClinearGradient id='haze' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23eaf7ff' stop-opacity='.28'/%3E%3Cstop offset='.6' stop-color='%23eaf7ff' stop-opacity='0'/%3E%3C/linearGradient%3E %3ClinearGradient id='front' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23b9f566'/%3E%3Cstop offset='.3' stop-color='%236fd23c'/%3E%3Cstop offset='1' stop-color='%232c9a2e'/%3E%3C/linearGradient%3E %3ClinearGradient id='front2' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%239be553'/%3E%3Cstop offset='1' stop-color='%23248a2c'/%3E%3C/linearGradient%3E %3ClinearGradient id='gloss' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff' stop-opacity='.55'/%3E%3Cstop offset='1' stop-color='%23fff' stop-opacity='0'/%3E%3C/linearGradient%3E %3C/defs%3E %3Cg opacity='1.0'%3E%3Cpath d='M1571.8 166 L1573.6 18 L1576.4 18 L1578.2 166Z' fill='url%28%23mast%29'/%3E%3Crect x='1571' y='15' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%281575 18%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='30' to='390' dur='6.5s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -14.8%2C 5 -44.2%2C 0 -59.0 C -2.2 -47.2%2C -3.2 -17.7%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -14.8%2C 5 -44.2%2C 0 -59.0 C -2.2 -47.2%2C -3.2 -17.7%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -14.8%2C 5 -44.2%2C 0 -59.0 C -2.2 -47.2%2C -3.2 -17.7%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='1.0'%3E%3Cpath d='M1686.8 162 L1688.6 -18 L1691.4 -18 L1693.2 162Z' fill='url%28%23mast%29'/%3E%3Crect x='1686' y='-21' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%281690 -18%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='38' to='398' dur='7.5s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -18.8%2C 5 -56.2%2C 0 -75.0 C -2.2 -60.0%2C -3.2 -22.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -18.8%2C 5 -56.2%2C 0 -75.0 C -2.2 -60.0%2C -3.2 -22.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -18.8%2C 5 -56.2%2C 0 -75.0 C -2.2 -60.0%2C -3.2 -22.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='1.0'%3E%3Cpath d='M1836.8 156 L1838.6 22 L1841.4 22 L1843.2 156Z' fill='url%28%23mast%29'/%3E%3Crect x='1836' y='19' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%281840 22%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='13' to='373' dur='6s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -13.0%2C 5 -39.0%2C 0 -52.0 C -2.2 -41.6%2C -3.2 -15.6%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -13.0%2C 5 -39.0%2C 0 -52.0 C -2.2 -41.6%2C -3.2 -15.6%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -13.0%2C 5 -39.0%2C 0 -52.0 C -2.2 -41.6%2C -3.2 -15.6%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='1.0'%3E%3Cpath d='M1996.8 164 L1998.6 -26 L2001.4 -26 L2003.2 164Z' fill='url%28%23mast%29'/%3E%3Crect x='1996' y='-29' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%282000 -26%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='92' to='452' dur='8s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -20.0%2C 5 -60.0%2C 0 -80.0 C -2.2 -64.0%2C -3.2 -24.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -20.0%2C 5 -60.0%2C 0 -80.0 C -2.2 -64.0%2C -3.2 -24.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -20.0%2C 5 -60.0%2C 0 -80.0 C -2.2 -64.0%2C -3.2 -24.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='1.0'%3E%3Cpath d='M2146.8 154 L2148.6 4 L2151.4 4 L2153.2 154Z' fill='url%28%23mast%29'/%3E%3Crect x='2146' y='1' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%282150 4%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='50' to='410' dur='7s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -15.0%2C 5 -45.0%2C 0 -60.0 C -2.2 -48.0%2C -3.2 -18.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -15.0%2C 5 -45.0%2C 0 -60.0 C -2.2 -48.0%2C -3.2 -18.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -15.0%2C 5 -45.0%2C 0 -60.0 C -2.2 -48.0%2C -3.2 -18.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='0.92'%3E%3Cpath d='M2316.8 158 L2318.6 -12 L2321.4 -12 L2323.2 158Z' fill='url%28%23mast%29'/%3E%3Crect x='2316' y='-15' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%282320 -12%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='61' to='421' dur='6.8s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -17.5%2C 5 -52.5%2C 0 -70.0 C -2.2 -56.0%2C -3.2 -21.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -17.5%2C 5 -52.5%2C 0 -70.0 C -2.2 -56.0%2C -3.2 -21.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -17.5%2C 5 -52.5%2C 0 -70.0 C -2.2 -56.0%2C -3.2 -21.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='0.9'%3E%3Cpath d='M2516.8 168 L2518.6 28 L2521.4 28 L2523.2 168Z' fill='url%28%23mast%29'/%3E%3Crect x='2516' y='25' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%282520 28%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='19' to='379' dur='7.2s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -13.8%2C 5 -41.2%2C 0 -55.0 C -2.2 -44.0%2C -3.2 -16.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -13.8%2C 5 -41.2%2C 0 -55.0 C -2.2 -44.0%2C -3.2 -16.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -13.8%2C 5 -41.2%2C 0 -55.0 C -2.2 -44.0%2C -3.2 -16.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='1.0'%3E%3Cpath d='M756.8 172 L758.6 12 L761.4 12 L763.2 172Z' fill='url%28%23mast%29'/%3E%3Crect x='756' y='9' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%28760 12%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='11' to='371' dur='7s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -16.2%2C 5 -48.8%2C 0 -65.0 C -2.2 -52.0%2C -3.2 -19.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -16.2%2C 5 -48.8%2C 0 -65.0 C -2.2 -52.0%2C -3.2 -19.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -16.2%2C 5 -48.8%2C 0 -65.0 C -2.2 -52.0%2C -3.2 -19.5%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='0.9'%3E%3Cpath d='M596.8 178 L598.6 50 L601.4 50 L603.2 178Z' fill='url%28%23mast%29'/%3E%3Crect x='596' y='47' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%28600 50%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='8' to='368' dur='6.2s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -12.2%2C 5 -36.8%2C 0 -49.0 C -2.2 -39.2%2C -3.2 -14.7%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -12.2%2C 5 -36.8%2C 0 -49.0 C -2.2 -39.2%2C -3.2 -14.7%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -12.2%2C 5 -36.8%2C 0 -49.0 C -2.2 -39.2%2C -3.2 -14.7%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg opacity='0.85'%3E%3Cpath d='M416.8 180 L418.6 30 L421.4 30 L423.2 180Z' fill='url%28%23mast%29'/%3E%3Crect x='416' y='27' width='11' height='6' rx='3' fill='%23f4fbff'/%3E%3Cg transform='translate%28420 30%29'%3E%3Cg%3E%3CanimateTransform attributeName='transform' type='rotate' from='2' to='362' dur='7.8s' repeatCount='indefinite'/%3E%3Cg transform='rotate%280%29'%3E%3Cpath d='M0 0 C 5 -15.0%2C 5 -45.0%2C 0 -60.0 C -2.2 -48.0%2C -3.2 -18.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28120%29'%3E%3Cpath d='M0 0 C 5 -15.0%2C 5 -45.0%2C 0 -60.0 C -2.2 -48.0%2C -3.2 -18.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Cg transform='rotate%28240%29'%3E%3Cpath d='M0 0 C 5 -15.0%2C 5 -45.0%2C 0 -60.0 C -2.2 -48.0%2C -3.2 -18.0%2C 0 0Z' fill='url%28%23bl%29'/%3E%3C/g%3E%3Ccircle r='3.2' fill='%23fff'/%3E%3C/g%3E%3C/g%3E%3C/g%3E%3Cg transform='translate%281330 140%29 scale%28.62%29 translate%28-1330 -140%29' opacity='.95'%3E%3Cg opacity='.8'%3E%3Cpath d='M1180 420 L1180 82 Q1180 70 1195 70 Q1210 70 1210 82 L1210 420Z' fill='url%28%23twb%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1218 420 L1218 52 Q1218 36 1238 36 Q1258 36 1258 52 L1258 420Z' fill='url%28%23twb%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1270 420 L1270 90 Q1270 80 1283 80 Q1296 80 1296 90 L1296 420Z' fill='url%28%23twb%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1370 420 L1370 62 Q1370 48 1387 48 Q1404 48 1404 62 L1404 420Z' fill='url%28%23twb%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1414 420 L1414 88 Q1414 70 1436 70 Q1458 70 1458 88 L1458 420Z' fill='url%28%23twb%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1470 420 L1470 94 Q1470 82 1485 82 Q1500 82 1500 94 L1500 420Z' fill='url%28%23twb%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3C/g%3E%3Cpath d='M1202 420 L1202 66 L1240 48 L1240 420Z' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1207 420 L1207 67 L1213 64 L1213 420Z' fill='%23fff' fill-opacity='.45'/%3E%3Cpath d='M1246 420 L1246 12 Q1290 22 1290 56 L1290 420Z' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1251 420 L1251 16 L1258 17 L1258 420Z' fill='%23fff' fill-opacity='.45'/%3E%3Cpath d='M1360 420 L1360 42 L1372 42 L1372 18 L1384 18 L1384 2 L1400 2 L1400 420Z' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1387 420 L1387 6 L1392 6 L1392 420Z' fill='%23fff' fill-opacity='.45'/%3E%3Cpath d='M1406 420 L1406 73 Q1406 56 1423 56 Q1440 56 1440 73 L1440 420Z' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1411 420 L1411 70 L1416 64 L1416 420Z' fill='%23fff' fill-opacity='.45'/%3E%3Cpath d='M1446 420 L1446 80 L1498 102 L1498 420Z' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1308 420 L1316 -35 Q1330 -51 1344 -35 L1352 420Z' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.7' stroke-width='1'/%3E%3Cpath d='M1315 420 L1321 -33 L1326 -37 L1322 420Z' fill='%23fff' fill-opacity='.45'/%3E%3Cellipse cx='1330' cy='13' rx='36' ry='7' fill='url%28%23tw%29' stroke='%23fff' stroke-opacity='.8'/%3E%3Ccircle cx='1330' cy='-55' r='16' fill='url%28%23orb%29'/%3E%3Crect x='1329' y='-87' width='2' height='18' fill='%23e6f8ff'/%3E%3Cpath d='M1508 146 A42 36 0 0 1 1592 146Z' fill='url%28%23dome%29' stroke='%23fff' stroke-opacity='.8'/%3E%3Cpath d='M1522 134 A30 24 0 0 1 1550 115' fill='none' stroke='%23fff' stroke-width='3' stroke-opacity='.7' stroke-linecap='round'/%3E%3C/g%3E %3C/svg%3E"), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 420' preserveAspectRatio='none'%3E%3Cdefs%3E %3ClinearGradient id='tw' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%239fe0fb'/%3E%3Cstop offset='.4' stop-color='%23e8fbff'/%3E%3Cstop offset='.55' stop-color='%23b4e8fb'/%3E%3Cstop offset='1' stop-color='%233f9fe0'/%3E%3C/linearGradient%3E %3ClinearGradient id='twb' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23cbeefc'/%3E%3Cstop offset='.5' stop-color='%23f2fcff'/%3E%3Cstop offset='1' stop-color='%238ccaf0'/%3E%3C/linearGradient%3E %3CradialGradient id='orb' cx='.35' cy='.3' r='.7'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='.4' stop-color='%239fe6ff'/%3E%3Cstop offset='1' stop-color='%232a8fd8'/%3E%3C/radialGradient%3E %3ClinearGradient id='dome' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23e8fbff' stop-opacity='.95'/%3E%3Cstop offset='1' stop-color='%237fd0f0' stop-opacity='.8'/%3E%3C/linearGradient%3E %3ClinearGradient id='mast' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='1' stop-color='%23c9e3f2'/%3E%3C/linearGradient%3E %3ClinearGradient id='bl' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='%23fff'/%3E%3Cstop offset='1' stop-color='%23cfe6f5'/%3E%3C/linearGradient%3E %3CradialGradient id='tree' cx='.35' cy='.3' r='.8'%3E%3Cstop offset='0' stop-color='%23b8f36a'/%3E%3Cstop offset='1' stop-color='%233f9c2e'/%3E%3C/radialGradient%3E %3ClinearGradient id='back' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23a9e57a'/%3E%3Cstop offset='1' stop-color='%235fbb4c'/%3E%3C/linearGradient%3E %3ClinearGradient id='haze' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23eaf7ff' stop-opacity='.28'/%3E%3Cstop offset='.6' stop-color='%23eaf7ff' stop-opacity='0'/%3E%3C/linearGradient%3E %3ClinearGradient id='front' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23b9f566'/%3E%3Cstop offset='.3' stop-color='%236fd23c'/%3E%3Cstop offset='1' stop-color='%232c9a2e'/%3E%3C/linearGradient%3E %3ClinearGradient id='front2' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%239be553'/%3E%3Cstop offset='1' stop-color='%23248a2c'/%3E%3C/linearGradient%3E %3ClinearGradient id='gloss' x1='0' y1='0' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%23fff' stop-opacity='.55'/%3E%3Cstop offset='1' stop-color='%23fff' stop-opacity='0'/%3E%3C/linearGradient%3E %3C/defs%3E %3Cpath d='M0 152 C 300 120%2C 560 126%2C 800 138 C 1040 150%2C 1300 116%2C 1600 136 L1600 420 L0 420Z' fill='url%28%23back%29'/%3E %3Cpath d='M0 152 C 300 120%2C 560 126%2C 800 138 C 1040 150%2C 1300 116%2C 1600 136 L1600 420 L0 420Z' fill='url%28%23haze%29'/%3E %3Cpath d='M0 152 C 300 120%2C 560 126%2C 800 138 C 1040 150%2C 1300 116%2C 1600 136' fill='none' stroke='%23fff' stroke-opacity='.6' stroke-width='2' vector-effect='non-scaling-stroke'/%3E %3C/svg%3E"),
        radial-gradient(circle at 16% 12%, rgba(255,255,255,.95) 0, rgba(255,255,230,.7) 3.5%, rgba(255,250,210,.25) 12%, rgba(255,255,255,0) 30%),
        radial-gradient(circle at 34% 32%, rgba(190,255,240,.35) 0, rgba(190,255,240,.35) 1.4%, rgba(255,255,255,0) 1.6%),
        radial-gradient(circle at 44% 45%, rgba(255,230,160,.25) 0, rgba(255,230,160,.25) 2.6%, rgba(255,255,255,0) 2.8%),
        linear-gradient(180deg, rgba(20,100,200,.25) 0%, rgba(20,100,200,0) 40%);
    background-repeat:no-repeat;
    background-size:100% var(--scene-h), 100% calc(var(--scene-h) * 580 / 420), 100% var(--scene-h), 100% 100%, 100% 100%, 100% 100%, 100% 100%;
    background-position:center bottom, center bottom, center bottom, 0 0, 0 0, 0 0, 0 0;
    --scene-h:clamp(190px, 50%, 640px);
}
body.aero-theme .banner-glass{ display:inline-block; max-width:100%; text-align:right; }
/* "Hello! My name is" / "and I'm a" : texte de l'interface, blanc sur halo bleu */
body.aero-theme #section-banner h2.title span{
    color:#fff;
    font-family:var(--aero-font);
    font-weight:700;
    letter-spacing:.01em;
    text-shadow:0 1px 2px rgba(0,50,120,.8), 0 0 14px rgba(0,70,160,.55);
}
/* nom et rôle : lettres de VERRE façon logo de l'époque. Le mot porte le contour épais (couleur
   pleine + text-stroke) et l'ombre ; son ::after (même texte, data-text) pose par-dessus le
   remplissage en dégradé verre (reflet net sur la moitié haute). Un dégradé en background-clip:
   text sur le mot lui-même passait SOUS le contour (paint-order ignoré) : lettres toutes bleues */
body.aero-theme #section-banner h2.color-change{ font-family:var(--aero-logo); font-weight:800; letter-spacing:0; }
body.aero-theme #section-banner h2.color-change:not(.title){ line-height:.92; }
body.aero-theme #section-banner .hero-glass{
    position:relative;
    font-family:var(--aero-logo);
    font-weight:800;
    color:#1667cc;
    -webkit-text-stroke:.16em #1667cc;
    text-shadow:0 .08em .12em rgba(0,40,110,.45);
}
body.aero-theme #section-banner .hero-glass::after{
    content:attr(data-text);
    position:absolute; left:0; top:0; white-space:nowrap;
    line-height:normal;             /* (= zone de contenu du mot : même ligne de base) */
    -webkit-text-stroke:0;
    text-shadow:none;
    background:linear-gradient(180deg, #ffffff 0%, #f0faff 42%, #a9dcff 56%, #d4f0ff 82%, #ffffff 100%);
    -webkit-background-clip:text; background-clip:text;
    -webkit-text-fill-color:transparent; color:transparent;
    pointer-events:none;
}
/* GAME PROGRAMMER : verre vert anis, contour vert profond */
body.aero-theme #section-banner h2.color-change:not(.title) .hero-glass{
    color:#17702c;
    -webkit-text-stroke:.13em #17702c;
    text-shadow:0 .06em .1em rgba(0,50,20,.45);
}
body.aero-theme #section-banner h2.color-change:not(.title) .hero-glass::after{
    background:linear-gradient(180deg, #fbffe8 0%, #eafdae 42%, #a3e63e 56%, #c6f65a 82%, #efffc0 100%);
    -webkit-background-clip:text; background-clip:text;
}

/* ---------- barre de menu : verre brillant (reflet sur la moitié haute) ---------- */
body.aero-theme .navbar-default{
    background:
        linear-gradient(180deg, rgba(255,255,255,.75) 0%, rgba(255,255,255,.28) 50%, rgba(255,255,255,0) 51%),
        linear-gradient(180deg, #5fc3f2 0%, #1f7fd8 55%, #0a58b5 100%);
    border-top:1px solid rgba(255,255,255,.8);
    border-bottom:1px solid #073f86;
    box-shadow:0 4px 14px rgba(6,50,110,.35), inset 0 1px 0 rgba(255,255,255,.9);
}
/* téléphone : le menu burger s'ouvre DANS la barre. Le dégradé de la barre s'étirait sur la
   hauteur du menu pendant l'ouverture (le reflet glissait sous des lettres immobiles) : il est
   figé à la hauteur de la barre fermée (en-tête 50 px + bordure), le menu ouvert a son fond */
@media (max-width: 767px){
    body.aero-theme .navbar-default{
        background:
            linear-gradient(180deg, rgba(255,255,255,.75) 0%, rgba(255,255,255,.28) 50%, rgba(255,255,255,0) 51%) top / 100% 51px no-repeat,
            linear-gradient(180deg, #5fc3f2 0%, #1f7fd8 55%, #0a58b5 100%) top / 100% 51px no-repeat,
            linear-gradient(180deg, #1668c6 0%, #0b52a8 100%);
    }
    body.aero-theme .navbar-default .navbar-collapse{ border-top:1px solid rgba(255,255,255,.35); box-shadow:none; }
}
body.aero-theme .navbar-default .navbar-nav > li > a{
    color:rgba(255,255,255,.92);
    font-family:var(--aero-font);
    font-weight:600;
    text-shadow:0 1px 2px rgba(4,40,90,.6);
    border-radius:6px;
    transition:background .25s ease, color .25s ease;
}
body.aero-theme .navbar-default .navbar-nav > li > a:hover,
body.aero-theme .navbar-default .navbar-nav > li > a:focus{
    color:#fff;
    background:linear-gradient(180deg, rgba(255,255,255,.45), rgba(255,255,255,.12) 50%, rgba(255,255,255,.05) 51%, rgba(170,240,255,.3));
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.55), 0 0 12px rgba(160,235,255,.6);
}
body.aero-theme .navbar-brand{ text-shadow:0 1px 2px rgba(4,40,90,.6); }
body.aero-theme .navbar-default .navbar-toggle{ border-color:rgba(255,255,255,.7); border-radius:6px; }
body.aero-theme .navbar-default .navbar-toggle:hover,
body.aero-theme .navbar-default .navbar-toggle:focus{ background:rgba(255,255,255,.2); }
body.aero-theme .navbar-default .navbar-toggle .icon-bar{ background-color:#fff; }

/* ---------- verre Aero : panneaux translucides flous, reflet net sur la moitié haute, liseré
   blanc, ombre bleutée. Le flou (backdrop-filter) seulement sur grand écran : au défilement il
   coûte cher sur mobile, qui a un verre plus opaque à la place ---------- */
body.aero-theme .section-padding{ padding:64px 0; }
body.aero-theme #resume-details > .container,
body.aero-theme #section-portfolio > .container,
body.aero-theme .profile-desc{
    position:relative;
    z-index:3;                      /* (au-dessus des bulles des côtés) */
    background:
        linear-gradient(180deg, rgba(255,255,255,.6) 0%, rgba(255,255,255,.28) 44%, rgba(255,255,255,.12) 45%, rgba(255,255,255,.3) 100%),
        rgba(226,245,255,.62);
    border:1px solid rgba(255,255,255,.95);
    border-radius:22px;
    box-shadow:0 18px 50px rgba(0,60,130,.28), inset 0 1px 0 #fff, inset 0 0 0 1px rgba(255,255,255,.35), inset 0 -12px 30px rgba(120,210,255,.25);
    -webkit-backdrop-filter:blur(16px) saturate(1.35); backdrop-filter:blur(16px) saturate(1.35);
}
body.aero-theme #resume-details > .container,
body.aero-theme #section-portfolio > .container{ padding:44px 40px 28px; z-index:3; }
@media (max-width: 991px){
    body.aero-theme #resume-details > .container,
    body.aero-theme #section-portfolio > .container{ padding:30px 18px 16px; margin-left:12px; margin-right:12px; width:auto; }
}
@media (max-width: 767px){
    body.aero-theme #resume-details > .container,
    body.aero-theme #section-portfolio > .container,
    body.aero-theme .profile-desc{
        -webkit-backdrop-filter:none; backdrop-filter:none;
        background:
            linear-gradient(180deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.2) 44%, rgba(255,255,255,0) 45%),
            rgba(232,248,255,.9);
    }
}

/* titres de section : Orbitron, bleu profond avec halo blanc (lisibles sur le verre) */
body.aero-theme h2.heading-title,
body.aero-theme .profile-desc h2,
body.aero-theme .section-heading h2{
    font-family:var(--aero-head);
    font-weight:800;
    font-size:clamp(24px, 3.2vw, 32px);
    letter-spacing:.02em;
    color:#0b4a8c;
    text-shadow:0 1px 0 #fff, 0 0 16px rgba(255,255,255,.9);
    margin-bottom:28px;
}
body.aero-theme p{ color:var(--aero-text); font-size:17px; line-height:1.65; }

/* ---------- à propos : photo de Yann à la plage (images/yann_beach.webp) dans un cadre de verre,
   texte sur verre ---------- */
body.aero-theme .profile-bg{
    background:#3b86d8 url("../images/yann_beach.webp") 52% 22% / cover no-repeat;
    border-radius:0 26px 26px 0;
    border:4px solid rgba(255,255,255,.85);
    border-left:0;
    box-shadow:0 18px 50px rgba(0,60,130,.3);
}
body.aero-theme .profile-bg::after{
    content:''; position:absolute; left:0; right:0; top:0; height:45%; border-radius:0 22px 0 0;
    background:linear-gradient(180deg, rgba(255,255,255,.28), rgba(255,255,255,.04));
    pointer-events:none;
}
body.aero-theme .profile-desc{ margin:0; padding:34px 38px 30px; }
body.aero-theme .profile-desc p.text-grey{ color:#3b6282; }
@media (max-width: 991px){
    body.aero-theme .profile-desc{ padding:26px 22px 22px; }
}

/* ---------- parcours : frise de billes de verre, cartes blanches brillantes ---------- */
body.aero-theme .timeline-centered:before{
    width:4px;
    background:linear-gradient(180deg, #5fd3ff, #1f8ae0);
    border-radius:4px;
    box-shadow:0 0 0 1px rgba(255,255,255,.7);
}
body.aero-theme .timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon{
    --c:#2a9ae8;
    background:radial-gradient(circle at 36% 30%, #ffffff 0 14%, #d9f3ff 30%, var(--c) 64%, #0a4f9c 100%);
    position:relative; z-index:1;   /* (bille opaque, au-dessus du trait : il se voyait à travers)*/
    border-radius:50%;
    width:20px; height:20px; margin-left:19px; margin-top:8px;
    box-shadow:0 0 0 3px rgba(255,255,255,.95), 0 3px 10px rgba(0,60,130,.35);
    transition:transform .4s var(--bounce);
}
body.aero-theme .timeline-centered .timeline-entry:nth-child(3n+2) .timeline-icon{ --c:#3fcf6a; }
body.aero-theme .timeline-centered .timeline-entry:nth-child(3n+3) .timeline-icon{ --c:#2cc6d8; }
body.aero-theme .timeline-centered .timeline-entry:hover .timeline-icon{ transform:scale(1.3); }
body.aero-theme .timeline-centered .timeline-entry .timeline-entry-inner .timeline-icon i{ display:none; }
body.aero-theme .timeline-centered .timeline-entry .timeline-entry-inner .timeline-label{
    background:linear-gradient(180deg, #ffffff 0%, #f6fcff 48%, #eaf7ff 52%, #f4fbff 100%);
    border:1px solid #fff;
    border-radius:14px;
    box-shadow:0 6px 18px rgba(0,60,130,.14), inset 0 0 0 1px rgba(150,210,245,.35);
    margin-bottom:14px;
    padding:16px 22px;
    transition:transform .4s var(--bounce), box-shadow .3s ease;
}
body.aero-theme .timeline-centered .timeline-entry:hover .timeline-label{ transform:translateX(5px); box-shadow:0 10px 24px rgba(0,80,170,.22), inset 0 0 0 1px rgba(150,210,245,.5); }
body.aero-theme .timeline-centered .timeline-entry .timeline-entry-inner .timeline-label:after{
    border-color:transparent #fff transparent transparent;
}
body.aero-theme .timeline-centered .timeline-entry .timeline-entry-inner .timeline-label p{ color:var(--aero-text); font-family:var(--aero-font); font-size:16px; line-height:1.55; margin:0; }
body.aero-theme .resume-title{ color:#0d5aa8; font-weight:700; font-size:18px; letter-spacing:0; text-transform:none; margin:0 0 5px; }

/* ---------- portfolio : vignettes sous verre (cadre blanc, reflet sur le haut), petit rebond ---------- */
body.aero-theme .section-heading{ margin-bottom:34px; }
body.aero-theme #section-portfolio .row > [class*="col-"]{ padding-left:11px; padding-right:11px; }
body.aero-theme .portfolio-box{
    position:relative;
    margin-bottom:22px;
    border-radius:16px;
    overflow:hidden;
    border:3px solid rgba(255,255,255,.95);
    box-shadow:0 10px 26px rgba(0,60,130,.25);
    transition:transform .45s var(--bounce), box-shadow .3s ease;
}
body.aero-theme .portfolio-box::after{
    content:''; position:absolute; left:0; right:0; top:0; height:46%; z-index:2; pointer-events:none;
    background:linear-gradient(180deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,.08) 85%, rgba(255,255,255,0) 100%);
}
body.aero-theme .portfolio-box:hover{ transform:translateY(-6px) scale(1.03); box-shadow:0 18px 36px rgba(0,80,170,.35); }
body.aero-theme .image-overlay{
    z-index:3;
    background:
        linear-gradient(180deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.2) 47%, rgba(255,255,255,.04) 49%, rgba(255,255,255,.14) 100%),
        linear-gradient(180deg, rgba(110,205,255,.35), rgba(20,110,210,.45));
    -webkit-backdrop-filter:blur(6px) saturate(1.4); backdrop-filter:blur(6px) saturate(1.4);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.8), inset 0 0 36px rgba(255,255,255,.4);
}
body.aero-theme .image-overlay a{
    display:inline-flex; align-items:center; justify-content:center;
    width:64px; height:64px; border-radius:50%;
    border:1px solid rgba(255,255,255,.95);
    background:
        radial-gradient(ellipse 70% 42% at 50% 22%, rgba(255,255,255,.95), rgba(255,255,255,.15) 70%, rgba(255,255,255,0) 72%),
        radial-gradient(circle at 50% 80%, #6fd8ff 0%, #1f86dc 70%, #0d5cb8 100%);
    box-shadow:0 6px 16px rgba(0,50,120,.35), inset 0 -4px 10px rgba(120,230,255,.6);
    transition:transform .35s var(--bounce);
}
body.aero-theme .image-overlay a:hover{ transform:scale(1.12); }
body.aero-theme .image-overlay a i{ font-size:28px; text-shadow:0 1px 3px rgba(0,40,100,.6); }

/* ---------- boutons : verre brillant (reflet net sur la moitié haute) ---------- */
body.aero-theme .btn-default{
    border-radius:8px;
    border:1px solid #0b4f9c;
    color:#fff;
    text-shadow:0 1px 2px rgba(4,40,90,.55);
    background:
        linear-gradient(180deg, rgba(255,255,255,.62) 0%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 51%),
        linear-gradient(180deg, #58bdf0 0%, #1f7fd8 55%, #0d5cb8 100%);
    box-shadow:0 4px 14px rgba(10,70,150,.3), inset 0 1px 0 rgba(255,255,255,.8);
    transition:transform .35s var(--bounce), filter .2s ease, box-shadow .2s ease;
}
body.aero-theme .btn-default:hover,
body.aero-theme .btn-default:focus{
    color:#fff;
    filter:brightness(1.1);
    transform:translateY(-2px) scale(1.04);
    box-shadow:0 8px 22px rgba(40,150,240,.45), inset 0 1px 0 rgba(255,255,255,.9);
}

/* ---------- contact : panneau de verre teinté (lagon -> anis) posé sur le fond comme les autres
   sections (une bande opaque pleine largeur coupait net le fond fixe : transition bizarre) ---------- */
body.aero-theme #section-contact{ background:transparent; padding-bottom:64px; }
body.aero-theme #section-contact > .container{
    padding:44px 40px 34px;
    border-radius:22px;
    border:1px solid rgba(255,255,255,.95);
    background:
        linear-gradient(180deg, rgba(255,255,255,.4) 0%, rgba(255,255,255,.1) 44%, rgba(255,255,255,0) 45%),
        linear-gradient(160deg, rgba(31,143,224,.86) 0%, rgba(44,198,216,.84) 55%, rgba(143,220,60,.86) 100%);
    box-shadow:0 18px 50px rgba(0,60,130,.3), inset 0 1px 0 #fff, inset 0 -14px 34px rgba(190,255,150,.25);
    -webkit-backdrop-filter:blur(14px) saturate(1.3); backdrop-filter:blur(14px) saturate(1.3);
}
@media (max-width: 991px){
    body.aero-theme #section-contact > .container{ padding:30px 18px 24px; margin-left:12px; margin-right:12px; width:auto; }
}
body.aero-theme #section-contact .heading-title{ color:#fff; text-shadow:0 2px 6px rgba(6,50,110,.45); }
body.aero-theme .contact-box label,
body.aero-theme .contact-left p,
body.aero-theme .contact-left ul li span,
body.aero-theme .contact-left ul li a{ color:#fff; text-shadow:0 1px 2px rgba(6,50,110,.35); }
body.aero-theme .contact-box .form-control{
    border-radius:8px;
    border:1px solid rgba(255,255,255,.9);
    background:linear-gradient(180deg, rgba(255,255,255,.35), rgba(255,255,255,.18));
    color:#fff;
    box-shadow:inset 0 2px 4px rgba(6,50,110,.2);
}
body.aero-theme .vertical-line{ border-right-color:rgba(255,255,255,.6); }
body.aero-theme .contact-form .btn-default{
    border:1px solid rgba(255,255,255,.95);
    color:var(--aero-deep);
    text-shadow:none;
    background:linear-gradient(180deg, #ffffff 0%, #eafaff 50%, #c9f0ff 51%, #e6fbff 100%);
    box-shadow:0 4px 12px rgba(6,50,110,.3), inset 0 1px 0 #fff;
}
body.aero-theme .contact-form .btn-default:hover{ color:var(--aero-deep); }

/* ---------- bouton "Explore in 3D" : bouton brillant vert de l'époque. Pas de pulsation lumineuse ;
   il "respire" doucement (--cta-z) et grossit au survol avec un rebond (--cta-h). Les deux
   échelles passent par la transformation posée par js/cta3d.js, autour du centre ---------- */
body.aero-theme #enter-3d{
    border-radius:10px;
    border:1px solid #0d6f3f;
    color:#fff;
    font-family:var(--aero-font);
    font-weight:700;
    text-transform:none;
    letter-spacing:.3px;
    text-shadow:0 1px 2px rgba(0,60,30,.6);
    background:
        linear-gradient(180deg, rgba(255,255,255,.7) 0%, rgba(255,255,255,.2) 50%, rgba(255,255,255,0) 51%),
        linear-gradient(180deg, #7fe25a 0%, #29b35a 55%, #11915a 100%);
    box-shadow:0 6px 18px rgba(6,60,40,.35), inset 0 1px 0 rgba(255,255,255,.85);
    animation:aero-breathe 2.6s ease-in-out infinite alternate !important;
    -webkit-animation:aero-breathe 2.6s ease-in-out infinite alternate !important;
    transition:opacity .22s ease, --cta-h .45s var(--bounce), filter .2s ease;
}
body.aero-theme #enter-3d.cta-intro{ transition:opacity .8s ease .15s, --cta-h .45s var(--bounce), filter .2s ease; }   /* (première apparition, avec le titre) */
body.aero-theme #enter-3d:hover{ color:#fff; filter:brightness(1.08); --cta-h:1.1; }
body.aero-theme #enter-3d.cta-invert{ color:#fff; border-color:#0d6f3f; }
@keyframes aero-breathe{
    from { --cta-z:1; }
    to   { --cta-z:1.05; }
}
@media (prefers-reduced-motion: reduce){
    body.aero-theme #enter-3d{ animation:none !important; }
}

/* ---------- overlay projet : fenêtre Windows 7 (barre de titre en verre, bouton rouge) ---------- */
body.aero-theme #project-overlay.pj-open{
    background:rgba(12,50,100,.42);
    -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
}
body.aero-theme #project-overlay::before{ display:none; }
body.aero-theme #project-overlay .pj-card{
    padding:0 0 16px;
    background:linear-gradient(180deg, #ffffff 0%, #eef7ff 100%);
    border:1px solid rgba(255,255,255,.95);
    border-radius:12px;
    box-shadow:0 20px 60px rgba(5,40,90,.45), 0 0 0 1px rgba(20,80,160,.35);
    font-family:var(--aero-font);
    color:var(--aero-ink);
}
body.aero-theme #project-overlay .pj-head{
    margin:0 0 14px;
    padding:10px 12px 10px 18px;
    border-radius:11px 11px 0 0;
    background:
        linear-gradient(180deg, rgba(255,255,255,.7) 0%, rgba(255,255,255,.25) 50%, rgba(255,255,255,0) 51%),
        linear-gradient(180deg, #6cc8f4 0%, #2a8ae0 55%, #1466c4 100%);
    border-bottom:1px solid #0e4f9e;
}
body.aero-theme #project-overlay .pj-rec{ display:none; }
body.aero-theme #project-overlay .pj-title{
    font-family:var(--aero-font);
    font-size:20px; font-weight:700;
    letter-spacing:.3px; text-transform:none;
    color:#fff;
    text-shadow:0 1px 3px rgba(4,40,90,.7);
}
body.aero-theme #project-overlay .pj-close{
    width:46px; height:26px;
    border:1px solid #6b1c0e;
    border-radius:5px;
    font-family:var(--aero-font);
    color:#fff;
    text-shadow:0 1px 2px rgba(80,10,0,.7);
    background:linear-gradient(180deg, #eaa493 0%, #d0664c 49%, #c0381b 50%, #d9774f 100%);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.6);
}
body.aero-theme #project-overlay .pj-close:hover{ filter:brightness(1.12); background:linear-gradient(180deg, #f5b3a2 0%, #e2745a 49%, #d23f1e 50%, #ea8b62 100%); }
body.aero-theme #project-overlay .pj-media{
    width:auto;
    margin:0 18px;
    border-radius:8px;
    overflow:hidden;
    border:1px solid #9cc6e8;
}
body.aero-theme #project-overlay .pj-desc{
    margin:14px 20px 6px;
    font-family:var(--aero-font);
    font-size:16px; letter-spacing:0;
    color:var(--aero-text);
}
body.aero-theme #project-overlay .pj-foot{ margin:10px 20px 0; }
body.aero-theme #project-overlay .pj-link,
body.aero-theme #project-overlay .pj-contact{
    font-family:var(--aero-font);
    font-size:14px; font-weight:600;
    letter-spacing:0; text-transform:none;
    color:#1a2a3a;
    border:1px solid #7a8a99;
    border-radius:5px;
    background:linear-gradient(180deg, #f6f6f6 0%, #ececec 49%, #dcdcdc 50%, #d0d0d0 100%);
    box-shadow:inset 0 1px 0 #fff;
}
body.aero-theme #project-overlay .pj-link:hover,
body.aero-theme #project-overlay .pj-contact:hover{
    color:#1a2a3a;
    border-color:#3c7fb1;
    background:linear-gradient(180deg, #eaf6fd 0%, #d9f0fc 49%, #bee6fd 50%, #a7d9f5 100%);
}
body.aero-theme #project-overlay .pj-hint{ font-family:var(--aero-font); color:#6b8aa3; opacity:1; letter-spacing:0; }
@media (max-width: 820px), (max-height: 560px){
    body.aero-theme #project-overlay .pj-card{ padding:0 0 12px; }
    body.aero-theme #project-overlay .pj-title{ font-size:16px; }
    body.aero-theme #project-overlay .pj-media{ margin:0 12px; }
    body.aero-theme #project-overlay .pj-desc{ margin:10px 14px 4px; font-size:14px; }
    body.aero-theme #project-overlay .pj-foot{ margin:8px 14px 0; }
}
@media (max-height: 560px){
    body.aero-theme #project-overlay .pj-media{
        width:min(calc(100% - 24px), calc((100vh - 150px) * 16 / 9));
        margin-left:auto; margin-right:auto;
    }
}
