:root{
  --night:#030718;
  --night-blue:#061331;
  --brick:#0a1939;
  --white:#fffaf4;
  --soft:#c4c9d8;
  --pink:#ff18cf;
  --pink-soft:#ff78e7;
  --green:#29ff63;
  --green-deep:#079d45;
  --green-deep-accent:#35c95a;
  --lime:#94ff5a;
  --yellow:#fff200;
  --cream:#fff4a4;
  --cyan:#19e7ff;
  --orange:#ff7318;
  --red:#ff3548;
  --violet:#7767ff;
  --display: "Anton", Impact,Haettenschweiler,"Arial Narrow Bold",sans-serif;
  --body:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --intro-progress:0;
  --scroll-progress:0;
  --hero-progress:0;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--night)}
body{
  margin:0;
  overflow-x:hidden;
  color:var(--white);
  background:var(--night);
  font-family:var(--body);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overscroll-behavior-y:none;
}
.skip-link{
  position:fixed;
  top:10px;
  left:10px;
  z-index:10020;
  padding:11px 16px;
  color:var(--night);
  background:var(--white);
  border-radius:999px;
  font-weight:800;
  transform:translateY(-180%);
  transition:transform .18s ease;
}
.skip-link:focus{transform:translateY(0);outline:3px solid var(--cyan);outline-offset:3px}
.palm-leaf-cluster.palm-tone-dark .tube-green{
  stroke:var(--green-deep);
  filter:drop-shadow(0 0 2px rgba(255,255,255,.58)) drop-shadow(0 0 8px rgba(7,157,69,.82)) drop-shadow(0 0 17px rgba(7,157,69,.38));
}
.palm-leaf-cluster.palm-tone-dark .tube-lime{
  stroke:var(--green-deep-accent);
  filter:drop-shadow(0 0 2px rgba(255,255,255,.46)) drop-shadow(0 0 7px rgba(53,201,90,.64)) drop-shadow(0 0 14px rgba(7,157,69,.32));
}
.no-js body{overflow:auto}
.no-js .intro-screen,.no-js .page-transition,.no-js .section-wipe{display:none!important}
.no-js body.intro-active{overflow:auto}
.no-js .hero-center,.no-js .palm-sign,.no-js .neon-bunting,.no-js .jungle-sand-floor,
.no-js .menu-section,.no-js .contact-section,.no-js .reveal,.no-js .menu-entry{
  opacity:1!important;
  visibility:visible!important;
  transform:none!important;
  animation:none!important;
}
.no-js .site-header{
  opacity:1!important;
  visibility:visible!important;
  transform:translate3d(-50%,0,0)!important;
}
.no-js .software-orbit,.no-js .adobe-sun,.no-js .hero-center h1 span,
.no-js .hero-tagline,.no-js .hero-actions{
  opacity:1!important;
  visibility:visible!important;
  transform:none!important;
  animation:none!important;
}
.subpage-main{min-height:100svh;display:grid;place-items:center;padding:118px 24px 72px}
.subpage-section{width:min(880px,100%);padding:clamp(30px,5vw,62px);border:1px solid rgba(255,255,255,.14);border-radius:30px;background:rgba(3,7,24,.78);box-shadow:0 30px 90px rgba(0,0,0,.42),0 0 32px rgba(255,24,207,.1)}
.subpage-title{margin:8px 0 22px;color:var(--pink);font-size:clamp(4.2rem,10vw,8.5rem);line-height:.82;text-align:left;text-shadow:0 0 18px rgba(255,24,207,.34)}
.subpage-copy{max-width:650px;color:#d7dae6;font-size:clamp(.95rem,1.5vw,1.08rem);line-height:1.75}
body.intro-active{overflow:hidden}
::selection{color:var(--night);background:var(--pink)}
a,button,input,textarea{font:inherit;color:inherit}
a{text-decoration:none}
button{border:0}
svg{display:block;max-width:100%}

/* Un seul mur continu derrière l’accueil et le Menu : aucun redémarrage de motif. */
main{
  background-color:#061231;
  background-image:
    linear-gradient(90deg,rgba(3,7,24,.9) 2px,transparent 2px),
    linear-gradient(rgba(3,7,24,.92) 2px,transparent 2px),
    linear-gradient(90deg,transparent 0 75px,rgba(3,7,24,.9) 75px 77px,transparent 77px),
    linear-gradient(90deg,rgba(11,28,62,.7),rgba(5,18,47,.2));
  background-size:150px 66px,150px 66px,150px 132px,100% 100%;
  background-position:0 0,0 0,0 66px,0 0;
}

.noise{
  position:fixed;
  inset:0;
  z-index:1000;
  pointer-events:none;
  opacity:.036;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitchTiles'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");
}

.section-wipe{
  position:fixed;
  inset:0 0 auto;
  z-index:920;
  height:3px;
  pointer-events:none;
  background:linear-gradient(90deg,var(--pink),var(--yellow),var(--green),var(--cyan));
  box-shadow:0 0 14px rgba(255,24,207,.42);
  transform:scaleX(var(--scroll-progress));
  transform-origin:left center;
}

/* Transition commune aux changements de pages. */
.page-transition{
  position:fixed;
  inset:0;
  z-index:9998;
  display:grid;
  place-items:center;
  overflow:hidden;
  visibility:hidden;
  pointer-events:none;
  color:var(--white);
  background:
    radial-gradient(circle at 50% 48%,rgba(255,24,207,.16),transparent 24%),
    radial-gradient(circle at 50% 58%,rgba(25,231,255,.1),transparent 30%),
    #020512;
  opacity:1;
  transform:translate3d(0,102%,0);
}
.page-transition::before,.page-transition::after{
  content:"";
  position:absolute;
  left:-10%;
  width:120%;
  height:2px;
  background:linear-gradient(90deg,transparent,var(--pink),var(--yellow),var(--green),var(--cyan),transparent);
}
.page-transition::before{top:25%;rotate:-4deg}
.page-transition::after{bottom:24%;rotate:4deg}
.page-transition-mark{position:relative;z-index:2;display:grid;justify-items:center;gap:12px}
.page-transition-mark svg{width:82px;height:82px;overflow:visible;filter:drop-shadow(0 0 10px rgba(255,24,207,.44))}
body.page-loading{overflow:hidden}
body.page-loading .page-transition{visibility:visible;transform:translate3d(0,0,0)}
body.page-loading .page-transition-mark{animation:pageMarkBreathe 1.8s ease-in-out infinite}
body.intro-active .page-transition{display:none}
body.is-page-leaving .page-transition{visibility:visible;animation:pageCurtainIn .58s cubic-bezier(.72,0,.18,1) both}
body.is-page-entering .page-transition{visibility:visible;animation:pageCurtainOut .82s cubic-bezier(.76,0,.22,1) both}
body.is-page-leaving .page-transition-mark{animation:pageMarkIgnite .56s ease both}
@keyframes pageCurtainIn{from{transform:translate3d(0,102%,0)}to{transform:translate3d(0,0,0)}}
@keyframes pageCurtainOut{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-102%,0)}}
@keyframes pageMarkIgnite{0%{opacity:0;transform:scale(.76) rotate(-5deg)}38%{opacity:1;transform:scale(1.08) rotate(2deg)}100%{opacity:1;transform:none}}
@keyframes pageMarkBreathe{0%,100%{transform:translate3d(0,2px,0);filter:brightness(.92)}50%{transform:translate3d(0,-5px,0);filter:brightness(1.18)}}

/* Loader: one visual layer, driven only by the readiness controller. */
.intro-screen{
  position:fixed;
  inset:0;
  z-index:10000;
  display:grid;
  place-items:center;
  overflow:hidden;
  color:#fff;
  background:
    radial-gradient(circle at 50% 42%,rgba(255,24,207,.09),transparent 24%),
    radial-gradient(circle at 50% 72%,rgba(25,231,255,.06),transparent 29%),
    #020512;
  opacity:1;
  visibility:visible;
  transition:opacity .32s ease,visibility 0s .32s;
}
.intro-screen.is-exiting,.intro-screen.finished{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
html.portfolio-returning .intro-screen{display:none!important}
html.portfolio-returning body.intro-active{overflow-x:hidden;overflow-y:auto}
.intro-loader{
  width:min(360px,82vw);
  display:grid;
  justify-items:center;
}
.loader-copy{
  display:grid;
  justify-items:center;
  gap:5px;
  margin-bottom:9px;
  color:#eef0f7;
  font-size:.65rem;
  font-weight:900;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.loader-copy strong{
  color:var(--yellow);
  font-size:.78rem;
  text-shadow:0 0 10px rgba(255,242,0,.55);
}
.loader-cocktail{
  width:78px;
  height:78px;
  margin-bottom:8px;
  overflow:visible;
  filter:drop-shadow(0 0 18px rgba(255,24,207,.2));
  animation:loaderFloat 2s ease-in-out infinite;
}
.loader-glass-outline,.loader-glass-base,.loader-stirrer{
  fill:none;
  stroke:#fffaf4;
  stroke-width:5;
  stroke-linecap:round;
  stroke-linejoin:round;
  filter:drop-shadow(0 0 6px rgba(255,255,255,.72));
}
.loader-stirrer{stroke:var(--yellow);stroke-width:4;filter:drop-shadow(0 0 7px var(--yellow))}
.loader-cherry{fill:var(--green);filter:drop-shadow(0 0 8px var(--green))}
.loader-liquid{
  fill:var(--pink);
  filter:drop-shadow(0 0 12px var(--pink));
  transform:scaleY(var(--intro-progress));
  transform-box:fill-box;
  transform-origin:center bottom;
}
.loader-bubble{fill:var(--yellow);opacity:.78;transform-box:fill-box;transform-origin:center}
.bubble-one{animation:loaderBubble 1.3s ease-in-out infinite}
.bubble-two{animation:loaderBubble 1.6s ease-in-out -.5s infinite}
.bubble-three{animation:loaderBubble 1.1s ease-in-out -.8s infinite}
.intro-loader-track{
  width:100%;
  height:3px;
  margin-top:9px;
  overflow:hidden;
  border-radius:999px;
  background:rgba(255,255,255,.11);
}
.intro-loader-track i{
  display:block;
  width:100%;
  height:100%;
  border-radius:inherit;
  background:linear-gradient(90deg,var(--pink),var(--yellow),var(--green),var(--cyan));
  box-shadow:0 0 11px var(--pink),0 0 20px rgba(255,24,207,.24);
  transform:scaleX(var(--intro-progress));
  transform-origin:left center;
}
@keyframes loaderFloat{50%{transform:translate3d(0,-5px,0) rotate(1.5deg)}}
@keyframes loaderBubble{50%{transform:translate3d(0,-10px,0) scale(.72);opacity:.25}}

/* Header */
.site-header{
  --header-y:0%;
  position:fixed;
  top:18px;
  left:50%;
  z-index:900;
  width:min(1180px,calc(100% - 32px));
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:11px 14px 11px 18px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:999px;
  background:rgba(3,7,24,.74);
  backdrop-filter:blur(18px);
  box-shadow:0 14px 44px rgba(0,0,0,.3);
  opacity:1;
  transform:translate3d(-50%,var(--header-y),0);
  transition:transform .42s cubic-bezier(.22,.8,.22,1),opacity .3s ease;
}
body:not(.site-revealed) .site-header{--header-y:-22px;opacity:0}
body.site-revealed.scroll-down .site-header{--header-y:-132%;opacity:0;pointer-events:none}
body.site-revealed.scroll-up .site-header{--header-y:0%;opacity:1;pointer-events:auto}
.brand{
  color:var(--pink);
  font-size:.88rem;
  font-weight:850;
  letter-spacing:.01em;
  text-shadow:0 0 6px rgba(255,24,207,.42),0 0 14px rgba(255,24,207,.18);
}
.brand-separator{
  color:#1a8bff;
  text-shadow:0 0 5px rgba(255,255,255,.24),0 0 14px rgba(26,139,255,.62);
}
.header-cta{
  padding:10px 17px;
  border:1px solid var(--pink);
  border-radius:999px;
  color:var(--pink);
  font-size:.86rem;
  font-weight:850;
  box-shadow:inset 0 0 16px rgba(255,24,207,.08),0 0 18px rgba(255,24,207,.12);
  transition:color .22s ease,background .22s ease,box-shadow .22s ease;
}
.header-cta:hover,.header-cta:focus-visible{
  color:var(--night);
  background:var(--pink);
  box-shadow:0 0 30px rgba(255,24,207,.46);
}

/* Hero: outer signs own scroll/intro transforms; inner SVGs own ambient motion. */
.hero{
  position:relative;
  min-height:100svh;
  overflow:hidden;
  isolation:isolate;
  display:grid;
  place-items:center;
  padding:116px 24px 90px;
  background:
    radial-gradient(circle at 50% 46%,rgba(255,24,207,.12),transparent 25%),
    radial-gradient(circle at 78% 38%,rgba(41,255,99,.08),transparent 24%),
    linear-gradient(180deg,rgba(2,6,20,.12),rgba(2,6,20,.5)),
    transparent;
}
.brick-wall{
  position:absolute;
  inset:0;
  z-index:-4;
  box-shadow:inset 0 0 180px rgba(0,0,0,.62);
  transform:scale(calc(1 + var(--hero-progress) * .012));
  transform-origin:center;
}
.brick-wall::before{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.025),rgba(255,255,255,0));
  opacity:.85;
}
.brick-wall::after{
  content:"";
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 18% 43%,rgba(255,115,24,.08),transparent 23%),
    radial-gradient(circle at 80% 43%,rgba(41,255,99,.09),transparent 26%),
    radial-gradient(circle at 50% 48%,rgba(255,24,207,.12),transparent 24%);
  transform:translate3d(0,0,0) scale(1.04);
  transform-origin:center;
}
.wall-neon{
  --intro-x:0px;
  --intro-y:0px;
  --intro-rotate:0deg;
  --intro-scale:1;
  --depth-y:0px;
  position:absolute;
  z-index:1;
  pointer-events:none;
  opacity:calc(1 - var(--hero-progress) * .4);
  transform:translate3d(var(--intro-x),calc(var(--intro-y) + var(--hero-progress) * var(--depth-y)),0) rotate(var(--intro-rotate)) scale(var(--intro-scale));
  transition:opacity .72s ease,transform 1.12s cubic-bezier(.18,.84,.2,1);
}
.wall-neon svg{width:100%;height:100%;overflow:visible;transform-origin:50% 100%}
.palm-sign{bottom:4%;height:min(69vh,680px)}
.palm-sign{--palm-rest-opacity:calc(1 - var(--hero-progress) * .4);opacity:var(--palm-rest-opacity)}
.palm-sign.left{left:3.5%;width:min(30vw,390px);--depth-y:13px;transition-delay:.48s}
.palm-sign.right{right:1.7%;width:min(36vw,485px);height:min(76vh,750px);--depth-y:19px;transition-delay:.64s}
.sun-sign{left:20%;top:18%;width:150px;height:150px;--intro-rotate:-5deg;--depth-y:8px;transition-delay:.12s;transform-origin:50% 50%}
.sun-sign::before{
  content:"";
  position:absolute;
  inset:18%;
  z-index:-1;
  border:1px solid rgba(255,242,0,.22);
  border-radius:50%;
  box-shadow:0 0 28px rgba(255,242,0,.2),0 0 64px rgba(255,24,207,.12);
  opacity:.42;
  transform:scale(1);
}
body:not(.site-revealed) .sun-sign{--intro-y:-32px;--intro-rotate:-11deg;--intro-scale:.72;opacity:0}
body:not(.site-revealed) .palm-sign.left{--intro-x:-115vw;--intro-y:30px;--intro-rotate:-8deg;--intro-scale:.97;opacity:0}
body:not(.site-revealed) .palm-sign.right{--intro-x:115vw;--intro-y:32px;--intro-rotate:8deg;--intro-scale:.97;opacity:0}
body.is-introducing .site-header,body.is-introducing .wall-neon,body.is-introducing .neon-bunting,body.is-introducing .software-orbit,body.is-introducing h1 span,body.is-introducing .hero-tagline,body.is-introducing .hero-actions{will-change:transform,opacity}
.mount,.mount-core,.power-cable,.transformer{display:none}
.tube-green,.tube-lime,.tube-yellow,.tube-cream,.tube-pink,.tube-orange,.tube-white{
  fill:none;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.tube-green{stroke:var(--green);stroke-width:8;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 7px var(--green)) drop-shadow(0 0 18px var(--green)) drop-shadow(0 0 38px rgba(41,255,99,.64))}
.tube-lime{stroke:var(--lime);stroke-width:6;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 7px var(--lime)) drop-shadow(0 0 17px rgba(148,255,90,.8))}
.tube-yellow{stroke:var(--yellow);stroke-width:9;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 8px var(--yellow)) drop-shadow(0 0 20px rgba(255,242,0,.9)) drop-shadow(0 0 42px rgba(255,242,0,.55))}
.tube-cream{stroke:var(--cream);stroke-width:8;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 7px var(--cream)) drop-shadow(0 0 17px rgba(255,244,164,.72))}
.tube-pink{stroke:var(--pink);stroke-width:9;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 8px var(--pink)) drop-shadow(0 0 20px rgba(255,24,207,.88)) drop-shadow(0 0 42px rgba(255,24,207,.58))}
.tube-orange{stroke:var(--orange);stroke-width:9;filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 8px var(--orange)) drop-shadow(0 0 20px rgba(255,115,24,.85))}
.tube-white{stroke:#f5f6ff;stroke-width:8;filter:drop-shadow(0 0 3px #fff) drop-shadow(0 0 10px rgba(255,255,255,.92)) drop-shadow(0 0 24px rgba(213,228,255,.7))}
.minor-tube{stroke-width:3.5;opacity:.72}

/*
  Mode de rendu léger : la chorégraphie reste strictement identique, mais le
  glow des palmiers est calculé par groupe au lieu de l'être sur chaque tube.
  Sur les deux palmiers, cela ramène environ 175 passes de flou à 18.
*/
body.motion-lite .palm-sign [class*="tube-"]{filter:none!important}
body.motion-lite .palm-sign .palm-leaf-cluster{
  filter:
    drop-shadow(0 0 2px rgba(255,255,255,.88))
    drop-shadow(0 0 9px rgba(41,255,99,.82))
    drop-shadow(0 0 19px rgba(41,255,99,.48));
}
body.motion-lite .palm-sign .palm-trunk-cluster{
  filter:
    drop-shadow(0 0 2px rgba(255,255,255,.86))
    drop-shadow(0 0 9px rgba(255,242,0,.78))
    drop-shadow(0 0 19px rgba(255,115,24,.38));
}
body.motion-lite .palm-sign,
body.motion-lite .palm-sign svg,
body.motion-lite .palm-leaf-cluster,
body.motion-lite .palm-trunk-cluster{
  backface-visibility:hidden;
  transform-style:preserve-3d;
}
body.intro-active.motion-lite .palm-sign,
body.jungle-gate-active.motion-lite .palm-sign,
body.intro-active.motion-lite .palm-leaf-cluster,
body.intro-active.motion-lite .palm-trunk-cluster,
body.jungle-gate-active.motion-lite .palm-leaf-cluster,
body.jungle-gate-active.motion-lite .palm-trunk-cluster{
  will-change:transform,opacity,filter;
}
.tube-prepared{stroke-dasharray:var(--tube-length);stroke-dashoffset:var(--tube-length);opacity:.06}
body.site-revealed .tube-prepared{
  animation:
    tubeTrace .92s cubic-bezier(.22,.78,.22,1) var(--ignite-delay) both,
    tubeWarm .92s steps(5,end) var(--ignite-delay) both;
}
body.site-ready:not(.reduce-motion) .neon-flicker{animation:signFlicker 10s linear 1.2s infinite}
body.site-ready:not(.reduce-motion) .neon-flicker-delayed{animation:signFlicker 12s linear 3.1s infinite}
.sun-rays{transform-box:view-box;transform-origin:90px 90px}
.sun-core{transform-box:view-box;transform-origin:90px 90px}
body.site-ready:not(.reduce-motion) .sun-rays{animation:sunRayOrbit 28s linear infinite}
body.site-ready:not(.reduce-motion) .sun-core{animation:sunCorePulse 6.5s ease-in-out infinite}
body.site-ready:not(.reduce-motion) .sun-sign svg{animation:sunFloat 8s ease-in-out infinite}
body.site-ready:not(.reduce-motion) .palm-sign.left svg{animation:palmBreatheLeft 9s ease-in-out infinite}
body.site-ready:not(.reduce-motion) .palm-sign.right svg{animation:palmBreatheRight 10.5s ease-in-out .7s infinite}
@keyframes tubeTrace{to{stroke-dashoffset:0}}
@keyframes tubeWarm{0%,14%{opacity:.08}22%{opacity:.82}31%{opacity:.18}46%{opacity:1}57%{opacity:.42}72%,100%{opacity:1}}
@keyframes signFlicker{0%,6%,7.5%,54%,55.2%,100%{opacity:1}6.5%{opacity:.76}54.6%{opacity:.88}}
@keyframes sunRayOrbit{to{transform:rotate(360deg)}}
@keyframes sunCorePulse{50%{transform:scale(1.035);opacity:.92}}
@keyframes sunFloat{0%,100%{transform:translate3d(0,0,0) rotate(-.4deg)}50%{transform:translate3d(2px,-5px,0) rotate(.5deg)}}
@keyframes palmBreatheLeft{0%,100%{transform:translate3d(0,0,0) rotate(0deg) scale(1)}38%{transform:translate3d(2px,-5px,0) rotate(.38deg) scale(1.008)}72%{transform:translate3d(-1px,-2px,0) rotate(-.08deg) scale(1.003)}}
@keyframes palmBreatheRight{0%,100%{transform:translate3d(0,0,0) rotate(0deg) scale(1)}42%{transform:translate3d(-2px,-5px,0) rotate(-.38deg) scale(1.008)}76%{transform:translate3d(1px,-2px,0) rotate(.08deg) scale(1.003)}}

.hero-center{
  --hero-rest-y:1.5vh;
  --hero-scroll-shift:46px;
  --hero-scroll-scale:.035;
  position:relative;
  z-index:5;
  width:min(650px,86vw);
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
  opacity:calc(1 - var(--hero-progress) * .7);
  transform:translate3d(0,calc(var(--hero-rest-y) + var(--hero-progress) * var(--hero-scroll-shift)),0) scale(calc(1 - var(--hero-progress) * var(--hero-scroll-scale)));
  transform-origin:center;
}
.software-orbit{
  --sun-rest-scale:1;
  --sun-hidden-scale:.92;
  --sun-entry-scale:.94;
  position:relative;
  width:188px;
  height:188px;
  margin:0 auto 4px;
  isolation:isolate;
  opacity:1;
  transform:translate3d(0,0,0) scale(var(--sun-rest-scale));
  transition:opacity .62s ease .32s,transform .88s cubic-bezier(.16,1,.3,1) .32s;
}
body:not(.site-revealed) .software-orbit{opacity:0;transform:translate3d(0,18px,0) scale(var(--sun-hidden-scale))}
.adobe-sun::before{
  content:"";
  position:absolute;
  inset:25%;
  z-index:-1;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,242,0,.3),rgba(255,115,24,.12) 45%,transparent 72%);
  box-shadow:0 0 34px rgba(255,242,0,.32),0 0 78px rgba(255,24,207,.16);
}
.adobe-sun-core{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.adobe-core-halo{fill:rgba(255,242,0,.065);stroke:rgba(255,242,0,.24);stroke-width:1.5}
.adobe-core-tube{
  fill:#12152a;
  stroke:transparent;
  stroke-width:0;
  filter:none;
}
.adobe-core-halo,.adobe-core-dot{transform-box:fill-box;transform-origin:center}
.adobe-core-dot{fill:#fff7ad;filter:drop-shadow(0 0 5px #fff) drop-shadow(0 0 13px var(--yellow))}
.adobe-rays{position:absolute;inset:0;transform-origin:50% 50%}
.adobe-ray{
  --ray-color:#fff200;
  position:absolute;
  left:50%;
  top:50%;
  width:0;
  height:0;
  transform:rotate(var(--ray-angle));
  transform-origin:0 0;
}
.adobe-ray::before{
  content:"";
  position:absolute;
  left:-2px;
  top:-68px;
  width:4px;
  height:29px;
  border-radius:999px;
  background:linear-gradient(180deg,#fff,var(--ray-color));
  box-shadow:0 0 5px #fff,0 0 13px var(--ray-color),0 0 25px color-mix(in srgb,var(--ray-color) 48%,transparent);
  transform-origin:50% 100%;
}
.adobe-ray b{
  position:absolute;
  left:-19px;
  top:-102px;
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border:1px solid rgba(255,255,255,.12);
  border-radius:9px;
  background:#111832;
  color:var(--ray-color);
  box-shadow:0 8px 22px rgba(0,0,0,.34),0 0 12px color-mix(in srgb,var(--ray-color) 34%,transparent);
  font-size:.78rem;
  font-weight:950;
  font-style:normal;
  transform:rotate(calc(-1 * var(--ray-angle)));
}
.adobe-ray:nth-child(1){--ray-angle:0deg;--ray-color:#ff9a1b;--scene-step:0s}
.adobe-ray:nth-child(2){--ray-angle:60deg;--ray-color:#20c8ff;--scene-step:.06s}
.adobe-ray:nth-child(3){--ray-angle:120deg;--ray-color:#ff4063;--scene-step:.12s}
.adobe-ray:nth-child(4){--ray-angle:180deg;--ray-color:#a270ff;--scene-step:.18s}
.adobe-ray:nth-child(5){--ray-angle:240deg;--ray-color:#ca82ff;--scene-step:.24s}
.adobe-ray:nth-child(6){--ray-angle:300deg;--ray-color:#56c7ff;--scene-step:.3s}
body.site-ready:not(.reduce-motion) .adobe-rays{animation:adobeSunOrbit 24s linear infinite}
body.site-ready:not(.reduce-motion) .adobe-ray b{animation:adobeBadgeCounter 24s linear infinite}
body.site-ready:not(.reduce-motion) .adobe-sun-core{animation:adobeSunBreath 6.5s ease-in-out infinite}
@keyframes adobeSunOrbit{to{transform:rotate(360deg)}}
@keyframes adobeBadgeCounter{to{transform:rotate(calc(-1 * var(--ray-angle) - 360deg))}}
@keyframes adobeSunBreath{50%{transform:scale(1.035);opacity:.9}}

.neon-bunting{
  --bunting-x:0%;
  --bunting-y:0px;
  position:absolute;
  z-index:4;
  left:0;
  right:0;
  top:9.5%;
  height:170px;
  pointer-events:none;
  opacity:calc(1 - var(--hero-progress) * .55);
  transform:translate3d(var(--bunting-x),calc(var(--bunting-y) + var(--hero-progress) * 10px),0);
  transform-origin:50% 0;
}
body:not(.site-revealed) .neon-bunting{opacity:0;--bunting-y:-14px}
.neon-bunting svg{width:100%;height:100%;overflow:visible}
.bunting-cable{
  fill:none;
  stroke:#fff7db;
  stroke-width:3;
  stroke-linecap:round;
  vector-effect:non-scaling-stroke;
  filter:drop-shadow(0 0 3px #fff) drop-shadow(0 0 9px rgba(255,24,207,.8));
}
.bunting-flag{
  stroke-width:3;
  stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
  filter:drop-shadow(0 0 4px currentColor) drop-shadow(0 0 11px currentColor);
}
.bunting-flag.pink{color:var(--pink);fill:rgba(255,24,207,.16);stroke:var(--pink)}
.bunting-flag.yellow{color:var(--yellow);fill:rgba(255,242,0,.13);stroke:var(--yellow)}
.bunting-flag.green{color:var(--green);fill:rgba(41,255,99,.13);stroke:var(--green)}
.bunting-flag.blue{color:#28a8ff;fill:rgba(40,168,255,.13);stroke:#28a8ff}
body.site-ready:not(.reduce-motion) .bunting-flag{animation:buntingNeonLife 11s linear infinite}
body.site-ready:not(.reduce-motion) .bunting-flag:nth-child(3n+1){animation-delay:-2.8s}
body.site-ready:not(.reduce-motion) .bunting-flag:nth-child(3n+2){animation-delay:-6.1s}
@keyframes buntingNeonLife{0%,46%,47.2%,100%{opacity:1}46.45%{opacity:.1}46.8%{opacity:.72}}
h1{
  width:100%;
  margin:12px 0;
  text-align:center;
  font-family:var(--display);
  font-size:clamp(5rem,10.4vw,10.4rem);
  line-height:.8;
  letter-spacing:.01em;
  text-transform:uppercase;
  font-weight:900;
}
h1 span{display:block;width:100%;text-align:center;opacity:1;transform:translate3d(0,0,0);transition:opacity .68s ease,transform .92s cubic-bezier(.16,1,.3,1)}
body:not(.site-revealed) h1 span{opacity:0;transform:translate3d(0,28px,0)}
body.site-revealed h1 .solid{transition-delay:.62s}
body.site-revealed h1 .outline{transition-delay:.76s}
h1 .solid{color:#ff38d8;text-shadow:0 0 4px rgba(255,255,255,.35),0 0 16px rgba(255,24,207,.42)}
h1 .outline{color:#1a8bff;text-shadow:0 0 4px rgba(255,255,255,.25),0 0 18px rgba(26,139,255,.5)}
.hero-tagline{
  max-width:530px;
  margin:20px auto 0;
  color:#d8dbe7;
  font-size:clamp(.95rem,1.2vw,1.07rem);
  line-height:1.72;
  text-align:center;
  opacity:1;
  transform:translate3d(0,0,0);
  transition:opacity .62s ease .86s,transform .84s cubic-bezier(.16,1,.3,1) .86s;
}
.hero-tagline strong{color:#fff}
body:not(.site-revealed) .hero-tagline{opacity:0;transform:translate3d(0,20px,0)}
.hero-actions{
  width:100%;
  display:flex;
  justify-content:center;
  gap:12px;
  flex-wrap:wrap;
  margin-top:29px;
  opacity:1;
  transform:translate3d(0,0,0);
  transition:opacity .6s ease 1.02s,transform .82s cubic-bezier(.16,1,.3,1) 1.02s;
}
body:not(.site-revealed) .hero-actions{opacity:0;transform:translate3d(0,18px,0)}
.single-action{justify-content:center}
.button{
  min-height:50px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  padding:0 19px;
  border:1px solid transparent;
  border-radius:999px;
  font-size:.82rem;
  font-weight:900;
  letter-spacing:.04em;
  text-transform:uppercase;
  transition:transform .22s ease,box-shadow .22s ease;
}
.button:hover,.button:focus-visible{transform:translate3d(0,-3px,0)}
.button.primary{color:var(--night);background:var(--pink);box-shadow:0 0 30px rgba(255,24,207,.34)}
.button.primary:hover,.button.primary:focus-visible{box-shadow:0 0 46px rgba(255,24,207,.58)}
.button.primary{position:relative;isolation:isolate}
.button.primary::after{
  content:"";
  position:absolute;
  inset:-1px;
  z-index:-1;
  border:1px solid rgba(255,24,207,.72);
  border-radius:inherit;
  opacity:0;
  pointer-events:none;
}

/* The Menu sits on a torn paper sheet laid over the dark neon wall. */
#carte{scroll-margin-top:110px}
.menu-section{
  position:relative;
  z-index:3;
  min-height:auto;
  display:grid;
  place-items:center;
  overflow:visible;
  isolation:isolate;
  margin:0;
  padding:48px 24px 54px;
  color:#081126;
  background:
    linear-gradient(180deg,rgba(255,255,255,.48),rgba(255,255,255,.36)),
    linear-gradient(118deg,rgba(255,24,207,.018),transparent 25% 74%,rgba(25,231,255,.018)),
    url("../ui/menu-paper.webp") center/cover no-repeat,
    #f5f1e9;
  background-blend-mode:screen,soft-light,normal,normal;
  box-shadow:none;
}
.menu-section::before,.menu-section::after{
  content:"";
  position:absolute;
  left:0;
  z-index:1;
  width:100%;
  pointer-events:none;
  height:156px;
  /* Le bord déchiré est rendu directement, comme une vraie bande de papier.
     Cela conserve le raccord même quand le portfolio est ouvert en fichier local
     ou dans un navigateur qui gère imparfaitement les masques CSS externes. */
  background:url("../ui/menu-edge-mask.webp?v=2") center/100% 100% no-repeat;
  -webkit-mask:none;
  mask:none;
  filter:none;
}
.menu-section::before{
  top:-88px;
}
.menu-section::after{
  bottom:-104px;
  transform:rotate(180deg);
}
.menu-inner{position:relative;z-index:2;width:min(1040px,100%);margin:auto;content-visibility:auto;contain-intrinsic-size:auto 720px}
.menu-inner::before{
  display:none;
}
.menu-inner::after{
  display:none;
}
.menu-header{position:relative;z-index:3;margin-bottom:24px;text-align:center;content-visibility:auto;contain-intrinsic-size:auto 205px}
.menu-header>div:first-child,.menu-header>div:last-child{display:none}
.cocktail-sign{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.cocktail-icon{width:82px;height:82px;margin:0 auto 1px;border-radius:50%;background:#081126;box-shadow:6px 6px 0 rgba(25,231,255,.32),-5px -4px 0 rgba(255,24,207,.24);filter:drop-shadow(0 0 20px rgba(255,24,207,.2));rotate:-3deg}
.menu-title{
  width:100%;
  margin:0;
  color:var(--pink);
  font-family:var(--display);
  font-size:clamp(4.1rem,7.2vw,6.8rem);
  line-height:.78;
  letter-spacing:.055em;
  text-transform:uppercase;
  -webkit-text-stroke:1px #081126;
  text-shadow:4px 4px 0 #081126,8px 8px 0 rgba(25,231,255,.32),0 0 22px rgba(255,24,207,.18);
}
.menu-subline{width:max-content;display:flex;align-items:center;justify-content:center;gap:12px;margin:14px auto 0;padding:7px 13px 6px;color:#081126;background:var(--yellow);box-shadow:4px 4px 0 rgba(255,24,207,.44);font-size:.59rem;font-weight:950;letter-spacing:.2em;text-transform:uppercase;rotate:-1deg}
.menu-subline::before,.menu-subline::after{content:"";width:54px;height:1px;background:linear-gradient(90deg,transparent,currentColor)}
.menu-subline::after{background:linear-gradient(90deg,currentColor,transparent)}
.menu-board{
  position:relative;
  max-width:900px;
  margin:auto;
  padding:34px 58px 28px;
  border-radius:28px;
  overflow:hidden;
  isolation:isolate;
  background:transparent;
  box-shadow:none;
  rotate:-.45deg;
  transition:rotate .4s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease;
}
.menu-board:hover{rotate:0deg;box-shadow:none}
.menu-board::before{
  content:"";
  position:absolute;
  inset:-110%;
  z-index:0;
  background:conic-gradient(from 0deg,var(--pink) 0 13%,#fff 15%,var(--yellow) 18% 25%,var(--green) 33% 42%,var(--cyan) 49% 60%,var(--violet) 67% 76%,#fff 79%,var(--pink) 83% 100%);
  pointer-events:none;
  transform:rotate(0turn);
  will-change:transform;
}
.menu-board::after{
  content:"";
  position:absolute;
  inset:4px;
  z-index:1;
  border-radius:24px;
  background:
    linear-gradient(125deg,rgba(255,24,207,.035),transparent 32%,rgba(25,231,255,.035) 75%,transparent),
    linear-gradient(rgba(3,7,24,.9),rgba(3,7,24,.9)),
    repeating-linear-gradient(0deg,transparent 0 48px,rgba(255,255,255,.018) 49px 50px),
    #07112b;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.13);
  pointer-events:none;
}
.menu-board.in-view::before{animation:menuBorderOrbit 5.4s linear infinite}
@keyframes menuBorderOrbit{to{transform:rotate(1turn)}}
.menu-columns{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;column-gap:58px}
.menu-columns::before{
  content:"";
  position:absolute;
  left:50%;
  top:9%;
  bottom:9%;
  width:2px;
  translate:-50% 0;
  background:repeating-linear-gradient(180deg,rgba(25,231,255,.62) 0 8px,transparent 8px 17px,rgba(255,24,207,.58) 17px 25px,transparent 25px 34px);
  box-shadow:0 0 8px rgba(25,231,255,.28),0 0 15px rgba(255,24,207,.18);
  pointer-events:none;
}
.menu-columns::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:13px;
  height:13px;
  border:2px solid var(--yellow);
  background:#07112b;
  box-shadow:0 0 0 4px #07112b,0 0 13px rgba(255,222,25,.5);
  translate:-50% -50%;
  rotate:45deg;
  pointer-events:none;
}
.menu-column{display:contents}
.menu-entry{
  --accent:var(--pink);
  --neon-cycle:18s;
  --neon-phase:-2s;
  --reveal-y:30px;
  --reveal-rotate:-1.2deg;
  --reveal-scale:.988;
  --hover-x:0px;
  position:relative;
  min-height:108px;
  display:grid;
  grid-template-columns:82px minmax(0,1fr) 36px;
  align-items:center;
  gap:15px;
  padding:10px 0;
  content-visibility:auto;
  contain-intrinsic-size:auto 108px;
  border-bottom:1px dashed rgba(255,255,255,.17);
  opacity:0;
  transform:perspective(920px) translate3d(var(--hover-x),var(--reveal-y),0) rotateX(var(--reveal-rotate)) scale(var(--reveal-scale));
  transition:opacity .56s ease var(--reveal-delay,0ms),transform .7s cubic-bezier(.22,.8,.22,1) var(--reveal-delay,0ms);
}
.menu-entry::before{content:"";position:absolute;inset:13% -12px;opacity:0;background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 12%,transparent),transparent);transition:opacity .3s ease;pointer-events:none}
.menu-entry.in-view{--reveal-y:0px;--reveal-rotate:0deg;--reveal-scale:1;opacity:1}
.menu-entry:hover,.menu-entry:focus-visible{--hover-x:7px}
.menu-entry:hover::before,.menu-entry:focus-visible::before{opacity:1}
.service-icon{
  position:relative;
  z-index:2;
  width:72px;
  height:72px;
  overflow:visible;
  color:color-mix(in srgb,var(--accent) 76%,#526078 24%);
  opacity:.92;
  transition:color .18s ease,opacity .18s ease,filter .24s ease,transform .3s cubic-bezier(.2,.8,.2,1);
}
.service-icon .icon-main,.service-icon .icon-thin{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
.service-icon .icon-main{stroke-width:5.2}
.service-icon .icon-thin{stroke-width:2.8;opacity:.76}
.service-icon .icon-fill{display:none}
.service-icon circle[fill],.service-icon path[fill]:not(.icon-main):not(.icon-thin){fill:currentColor;filter:drop-shadow(0 0 6px currentColor)}
.music-neon-icon ellipse{fill:none;stroke:currentColor;stroke-width:5.2}
.menu-entry.in-view .service-icon{animation:menuPowerOn .68s steps(3,end) var(--reveal-delay,0ms) both}
.menu-entry:hover .service-icon,.menu-entry:focus-visible .service-icon{
  color:var(--accent);
  opacity:1;
  transform:scale(1.08) rotate(-2deg);
  filter:drop-shadow(0 0 2px rgba(255,255,255,.92)) drop-shadow(0 0 7px color-mix(in srgb,var(--accent) 96%,transparent)) drop-shadow(0 0 17px color-mix(in srgb,var(--accent) 82%,transparent)) drop-shadow(0 0 31px color-mix(in srgb,var(--accent) 42%,transparent));
}
@keyframes menuPowerOn{0%{color:#28334b;opacity:.35}24%{color:var(--accent);opacity:1}38%{color:#28334b;opacity:.28}62%{color:var(--accent);opacity:1}100%{color:color-mix(in srgb,var(--accent) 60%,#22304a 40%);opacity:.88}}
.menu-column:first-child .menu-entry:nth-child(1){--neon-cycle:17s;--neon-phase:-4s}
.menu-column:first-child .menu-entry:nth-child(2){--neon-cycle:21s;--neon-phase:-11s}
.menu-column:first-child .menu-entry:nth-child(3){--neon-cycle:19s;--neon-phase:-7s}
.menu-column:last-child .menu-entry:nth-child(1){--neon-cycle:23s;--neon-phase:-15s}
.menu-column:last-child .menu-entry:nth-child(2){--neon-cycle:18s;--neon-phase:-9s}
.menu-column:last-child .menu-entry:nth-child(3){--neon-cycle:20s;--neon-phase:-13s}
.service-copy{position:relative;z-index:2;min-width:0}
.service-number,.service-description,.service-notes,.menu-bottom-note{display:none}
.service-title{
  margin:0;
  color:color-mix(in srgb,var(--accent) 82%,#7b8395 18%);
  font-family:var(--display);
  font-size:clamp(2.15rem,3.5vw,3rem);
  line-height:.9;
  letter-spacing:.02em;
  text-transform:uppercase;
  transition:color .2s ease,text-shadow .25s ease,transform .3s cubic-bezier(.2,.8,.2,1);
}
.menu-entry:hover .service-title,.menu-entry:focus-visible .service-title{color:var(--accent);transform:translate3d(3px,0,0);text-shadow:0 0 3px rgba(255,255,255,.54),0 0 8px color-mix(in srgb,var(--accent) 88%,transparent),0 0 20px color-mix(in srgb,var(--accent) 46%,transparent)}
.service-arrow{position:relative;z-index:2;width:29px;height:29px;display:grid;place-items:center;justify-self:end;margin-right:4px;border:1px solid color-mix(in srgb,var(--accent) 38%,rgba(255,255,255,.12));border-radius:50%;color:color-mix(in srgb,var(--accent) 78%,#657087 22%);font-size:.76rem;transition:color .22s ease,background .22s ease,border-color .22s ease,box-shadow .22s ease,transform .22s ease}
.menu-entry:hover .service-arrow,.menu-entry:focus-visible .service-arrow{color:var(--night);border-color:var(--accent);background:var(--accent);box-shadow:0 0 7px color-mix(in srgb,var(--accent) 88%,transparent),0 0 16px color-mix(in srgb,var(--accent) 42%,transparent);transform:rotate(-35deg)}

/* Shared reveal system: no animated blur. */
.reveal{
  --reveal-y:24px;
  --reveal-rotate:0deg;
  --reveal-scale:.99;
  opacity:0;
  transform:translate3d(0,var(--reveal-y),0) scale(var(--reveal-scale));
  transition:opacity .72s ease,transform .94s cubic-bezier(.16,1,.3,1);
}
.reveal.in-view{--reveal-y:0px;--reveal-rotate:0deg;--reveal-scale:1;opacity:1}
.menu-board.reveal{clip-path:inset(8% 5% 8% 5% round 28px);transition:opacity .65s ease,transform .82s cubic-bezier(.22,.8,.22,1),clip-path .92s cubic-bezier(.22,.8,.22,1)}
.menu-board.reveal.in-view{clip-path:inset(0 round 28px)}
.menu-header.reveal.in-view .cocktail-icon{animation:cocktailPowerOn .8s cubic-bezier(.16,1,.3,1) .08s both}
.menu-header.reveal.in-view .menu-title{animation:titleReveal .86s cubic-bezier(.16,1,.3,1) both}
@keyframes cocktailPowerOn{from{opacity:0;transform:translate3d(0,12px,0) scale(.94)}to{opacity:1;transform:none}}
@keyframes titleReveal{from{opacity:0;letter-spacing:.085em;transform:translate3d(0,16px,0)}to{opacity:1;letter-spacing:.055em;transform:none}}
@keyframes paperSettle{from{opacity:.72;transform:translate3d(0,20px,0) scale(.994)}to{opacity:1;transform:none}}
@keyframes menuRailBreath{0%,100%{opacity:.48}50%{opacity:1}}
@keyframes menuTitleNeonLife{0%,54%,54.8%,55.8%,100%{opacity:1}54.3%{opacity:.42}55.2%{opacity:.78}}

/* Chaque scène se rallume dans un ordre électrique lisible : décor, enseigne, texte, action. */
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .palm-sign.left{animation:scenePalmLeft 1.08s cubic-bezier(.16,1,.3,1) both}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .palm-sign.right{animation:scenePalmRight 1.08s cubic-bezier(.16,1,.3,1) .08s both}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .neon-bunting{animation:sceneBuntingIgnite .86s cubic-bezier(.16,1,.3,1) .24s both}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .hero-center{animation:sceneCenterIgnite .78s cubic-bezier(.16,1,.3,1) .38s both}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .adobe-sun{animation:sceneSunIgnite .72s cubic-bezier(.16,1,.3,1) .48s both}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .adobe-core-tube{animation:sceneSunDiskIgnite .56s cubic-bezier(.16,1,.3,1) .54s both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .adobe-ray{animation:sceneAdobeRayIgnite .56s linear calc(.62s + var(--scene-step)) both}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering h1 .solid{animation:neonSceneArrival .78s cubic-bezier(.16,1,.3,1) .96s both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering h1 .outline{animation:neonSceneArrival .78s cubic-bezier(.16,1,.3,1) 1.04s both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .hero-tagline{animation:neonSceneArrival .7s cubic-bezier(.16,1,.3,1) 1.18s both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-entering .hero-actions{animation:neonSceneArrival .7s cubic-bezier(.16,1,.3,1) 1.3s both!important}
body.site-ready:not(.reduce-motion) .menu-section.is-scene-entering .menu-header{animation:neonSceneArrival .72s cubic-bezier(.2,.8,.2,1) both}
body.site-ready:not(.reduce-motion) .menu-section.is-scene-entering .menu-board{animation:neonSceneArrival .78s cubic-bezier(.2,.8,.2,1) .14s both}
body.site-ready:not(.reduce-motion) .menu-section.is-scene-entering .menu-entry.in-view{animation:neonSceneArrival .72s cubic-bezier(.2,.8,.2,1) calc(.26s + var(--reveal-delay,0ms)) both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .contact-kicker{animation:neonSceneArrival .7s cubic-bezier(.2,.8,.2,1) both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .contact-title{animation:neonSceneArrival .72s cubic-bezier(.2,.8,.2,1) .1s both!important}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .contact-form{animation:neonSceneArrival .78s cubic-bezier(.2,.8,.2,1) .2s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .form-field:nth-child(1){animation:neonSceneArrival .68s cubic-bezier(.2,.8,.2,1) .34s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .form-field:nth-child(2){animation:neonSceneArrival .68s cubic-bezier(.2,.8,.2,1) .4s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .form-field:nth-child(3){animation:neonSceneArrival .68s cubic-bezier(.2,.8,.2,1) .46s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .form-field:nth-child(4){animation:neonSceneArrival .68s cubic-bezier(.2,.8,.2,1) .52s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .captcha-challenge{animation:neonSceneArrival .68s cubic-bezier(.2,.8,.2,1) .6s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .form-bottom{animation:neonSceneArrival .68s cubic-bezier(.2,.8,.2,1) .68s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .form-privacy{animation:neonSceneArrival .66s cubic-bezier(.2,.8,.2,1) .75s both}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-entering .footer{animation:neonSceneArrival .66s cubic-bezier(.2,.8,.2,1) .82s both}
@keyframes sceneSunIgnite{
  from{opacity:0;transform:translate3d(0,15px,0) scale(var(--sun-entry-scale))}
  to{opacity:1;transform:translate3d(0,0,0) scale(var(--sun-rest-scale))}
}
@keyframes sceneSunDiskIgnite{from{opacity:0;transform:scale(.82)}to{opacity:1;transform:scale(1)}}
@keyframes sceneAdobeRayIgnite{0%,18%{opacity:0;transform:rotate(var(--ray-angle)) scale(.72)}36%{opacity:1}50%{opacity:.08}66%{opacity:.88}78%{opacity:.3}100%{opacity:1;transform:rotate(var(--ray-angle)) scale(1)}}
@keyframes sceneBuntingIgnite{
  0%{opacity:0;transform:translate3d(var(--bunting-x),calc(var(--bunting-y) + 14px),0) scale(.99)}
  100%{opacity:calc(1 - var(--hero-progress) * .55);transform:translate3d(var(--bunting-x),calc(var(--bunting-y) + var(--hero-progress) * 10px),0) scale(1)}
}
@keyframes scenePalmLeft{
  0%,18%{opacity:0;transform:translate3d(-36vw,22px,0) rotate(-6deg) scale(.97);animation-timing-function:cubic-bezier(.16,1,.3,1)}
  40%{opacity:1;transform:translate3d(-3vw,0,0) rotate(-.8deg) scale(1.01);animation-timing-function:linear}
  49%{opacity:.12;transform:translate3d(-2.25vw,0,0) rotate(-.6deg) scale(1.0075);animation-timing-function:linear}
  58%{opacity:.92;transform:translate3d(-1.5vw,0,0) rotate(-.4deg) scale(1.005);animation-timing-function:linear}
  64%{opacity:.36;transform:translate3d(-1vw,0,0) rotate(-.26deg) scale(1.0033);animation-timing-function:linear}
  76%,100%{opacity:var(--palm-rest-opacity);transform:translate3d(0,calc(var(--hero-progress) * var(--depth-y)),0) rotate(0deg) scale(1)}
}
@keyframes scenePalmRight{
  0%,18%{opacity:0;transform:translate3d(36vw,22px,0) rotate(6deg) scale(.97);animation-timing-function:cubic-bezier(.16,1,.3,1)}
  40%{opacity:1;transform:translate3d(3vw,0,0) rotate(.8deg) scale(1.01);animation-timing-function:linear}
  49%{opacity:.12;transform:translate3d(2.25vw,0,0) rotate(.6deg) scale(1.0075);animation-timing-function:linear}
  58%{opacity:.92;transform:translate3d(1.5vw,0,0) rotate(.4deg) scale(1.005);animation-timing-function:linear}
  64%{opacity:.36;transform:translate3d(1vw,0,0) rotate(.26deg) scale(1.0033);animation-timing-function:linear}
  76%,100%{opacity:var(--palm-rest-opacity);transform:translate3d(0,calc(var(--hero-progress) * var(--depth-y)),0) rotate(0deg) scale(1)}
}
@keyframes sceneCenterIgnite{from{opacity:0;transform:translate3d(0,calc(var(--hero-rest-y) + 20px),0) scale(.98)}to{opacity:calc(1 - var(--hero-progress) * .7);transform:translate3d(0,calc(var(--hero-rest-y) + var(--hero-progress) * var(--hero-scroll-shift)),0) scale(calc(1 - var(--hero-progress) * var(--hero-scroll-scale)))}}
@keyframes sceneTitleIgnite{0%,20%{opacity:0;transform:translate3d(0,18px,0) scale(.985)}42%{opacity:1}50%{opacity:.12}61%{opacity:.88}68%{opacity:.34}80%,100%{opacity:1;transform:none}}
@keyframes scenePanelIgnite{0%,20%{opacity:0;transform:translate3d(0,28px,0) scale(.98)}42%{opacity:1}50%{opacity:.1}60%{opacity:.9}68%{opacity:.32}80%,100%{opacity:1;transform:none}}
@keyframes sceneItemIgnite{0%,20%{opacity:0;transform:translate3d(0,16px,0) scale(.985)}42%{opacity:1}50%{opacity:.1}60%{opacity:.9}68%{opacity:.32}80%,100%{opacity:1;transform:perspective(920px) translate3d(var(--hover-x),0,0) rotateX(0deg) scale(1)}}
@keyframes neonSceneArrival{
  0%,20%{opacity:0;transform:translate3d(0,18px,0) scale(.985);animation-timing-function:linear}
  36%{opacity:.18;transform:translate3d(0,12px,0) scale(.99);animation-timing-function:linear}
  44%{opacity:1;transform:translate3d(0,8px,0) scale(.993);animation-timing-function:linear}
  50%{opacity:.08;transform:translate3d(0,6px,0) scale(.995);animation-timing-function:linear}
  58%{opacity:.88;transform:translate3d(0,4px,0) scale(.997);animation-timing-function:linear}
  64%{opacity:.32;transform:translate3d(0,2.5px,0) scale(.998);animation-timing-function:linear}
  76%,100%{opacity:1;transform:none}
}

/* Contact */
.contact-section{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(circle at 12% 18%,rgba(255,24,207,.15),transparent 28%),
    radial-gradient(circle at 88% 85%,rgba(41,255,99,.08),transparent 28%),
    linear-gradient(160deg,#2b152e,#140d23 55%,#07091a);
}
.contact-section::before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 58px,rgba(255,255,255,.018) 59px 60px),repeating-linear-gradient(90deg,transparent 0 160px,rgba(255,255,255,.015) 161px 162px)}
.contact-wrap{position:relative;z-index:2;width:min(1180px,100%);margin:auto;padding:118px 24px 70px;content-visibility:auto;contain-intrinsic-size:auto 920px}
.contact-kicker{display:flex;align-items:center;gap:10px;margin-bottom:24px;color:var(--green);font-size:.72rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase}
.contact-kicker::before{content:"";width:34px;height:1px;background:currentColor}
.contact-main{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}
.contact-title{
  margin:0;
  color:var(--pink);
  font-family:var(--display);
  font-size:clamp(5.3rem,10vw,10rem);
  line-height:.86;
  letter-spacing:.01em;
  text-transform:uppercase;
  text-shadow:0 0 3px rgba(255,255,255,.22),0 0 11px rgba(255,24,207,.5),0 0 25px rgba(255,24,207,.22);
}
.contact-form{
  position:relative;
  overflow:hidden;
  padding:32px;
  border:1px solid rgba(255,255,255,.15);
  border-radius:28px;
  background:radial-gradient(circle at 100% 0%,rgba(255,24,207,.12),transparent 34%),rgba(255,255,255,.045);
  backdrop-filter:blur(16px);
  box-shadow:0 28px 75px rgba(0,0,0,.34);
}
.contact-form::before{content:"";position:absolute;left:24px;right:24px;top:0;height:2px;background:linear-gradient(90deg,transparent,var(--pink),var(--yellow),var(--green),transparent);box-shadow:0 0 13px var(--pink);transform:scaleX(0);transform-origin:center;transition:transform .82s cubic-bezier(.22,.8,.22,1) .18s}
.contact-form.in-view::before{transform:scaleX(1)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}
.form-field{display:grid;gap:8px}
.form-field-wide{grid-column:1/-1}
.form-field>span{color:#eee3ec;font-size:.69rem;font-weight:850;letter-spacing:.1em;text-transform:uppercase}
.form-field em{color:var(--pink);font-style:normal}
.form-field input,.form-field textarea{width:100%;border:1px solid rgba(255,255,255,.14);outline:none;border-radius:15px;color:#fff;background:rgba(3,7,24,.62);transition:border-color .22s ease,box-shadow .22s ease,background .22s ease,transform .22s ease}
.form-field input{height:54px;padding:0 16px}
.form-field textarea{min-height:150px;padding:15px 16px;resize:vertical;line-height:1.55}
.form-field input::placeholder,.form-field textarea::placeholder{color:#788097}
.form-field input:focus,.form-field textarea:focus{border-color:var(--pink);background:rgba(3,7,24,.82);box-shadow:0 0 0 3px rgba(255,24,207,.09),0 0 18px rgba(255,24,207,.12);transform:translate3d(0,-1px,0)}
.form-field input:valid:not(:placeholder-shown),.form-field textarea:valid:not(:placeholder-shown){border-color:rgba(41,255,99,.55)}
.honey-field{position:absolute;left:-10000px;width:1px;height:1px;opacity:0;pointer-events:none}
.captcha-challenge{display:grid;grid-template-columns:1fr auto;align-items:end;gap:15px 18px;margin-top:22px;padding:17px;border:1px solid rgba(255,255,255,.13);border-radius:17px;background:rgba(3,7,24,.52)}
.captcha-question{display:flex;align-items:center;gap:12px}
.captcha-question small{display:block;margin-bottom:4px;color:#8f98ad;font-size:.59rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase}
.captcha-question strong{display:block;color:#fff;font-size:.9rem;letter-spacing:.03em}
.captcha-shield{flex:0 0 auto;width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(41,255,99,.42);border-radius:11px;color:var(--green);background:rgba(41,255,99,.07);box-shadow:0 0 14px rgba(41,255,99,.12);font-weight:950}
.captcha-answer-row{display:flex;gap:8px}
.captcha-answer-row input{width:105px;height:43px;border:1px solid rgba(255,255,255,.15);outline:none;border-radius:12px;color:#fff;background:rgba(255,255,255,.045);padding:0 12px}
.captcha-answer-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(41,255,99,.08),0 0 15px rgba(41,255,99,.1)}
.captcha-refresh{width:43px;height:43px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.15);border-radius:12px;color:var(--yellow);background:rgba(255,255,255,.045);cursor:pointer;transition:color .2s ease,background .2s ease,border-color .2s ease,transform .2s ease}
.captcha-refresh:hover,.captcha-refresh:focus-visible{color:var(--night);border-color:var(--yellow);background:var(--yellow);transform:rotate(90deg)}
.captcha-feedback{grid-column:1/-1;min-height:16px;color:#ff8e9b;font-size:.68rem}
.form-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:18px}
.form-status{max-width:320px;min-height:18px;color:#c1c7d6;font-size:.7rem;line-height:1.4}
.form-status.is-error{color:#ff8e9b}
.form-status.is-success{color:var(--green)}
.send-button{min-height:50px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:0 19px;border-radius:999px;color:var(--night);background:var(--pink);box-shadow:0 0 27px rgba(255,24,207,.3);font-size:.77rem;font-weight:950;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;transition:transform .22s ease,box-shadow .22s ease}
.send-button:hover,.send-button:focus-visible{transform:translate3d(0,-3px,0);box-shadow:0 0 42px rgba(255,24,207,.52)}
.form-privacy{margin:18px 0 0;color:#858da1;font-size:.66rem;line-height:1.5}
.form-privacy a{color:#c7cede;text-underline-offset:3px;transition:color .2s ease,text-shadow .2s ease}
.form-privacy a:hover,.form-privacy a:focus-visible{color:var(--pink);text-shadow:0 0 12px rgba(255,24,207,.24)}
.footer{position:relative;z-index:2;width:min(1180px,calc(100% - 48px));margin:auto;padding:28px 0 38px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid rgba(255,255,255,.11);color:#cabfca;font-size:.77rem;content-visibility:auto;contain-intrinsic-size:auto 90px}
.footer-meta{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:7px 10px;color:#aeb5c6;text-align:right}
.footer-location{white-space:nowrap;color:#e7dfe9}
.footer-divider{color:rgba(255,255,255,.25)}
.footer-contact{white-space:nowrap;color:#aeb5c6;transition:color .2s ease,text-shadow .2s ease}
.footer-contact:hover,.footer-contact:focus-visible{color:var(--cyan);text-shadow:0 0 12px rgba(25,231,255,.28)}

@media (min-width:801px) and (max-height:820px){
  .menu-section{padding:16px 20px 22px}
  .menu-header{margin-bottom:13px}
  .cocktail-icon{width:62px;height:62px}
  .menu-title{font-size:clamp(3.6rem,6.3vw,5.6rem)}
  .menu-subline{margin-top:7px}
  .menu-board{padding:25px 50px 21px}
  .menu-entry{min-height:91px;grid-template-columns:70px minmax(0,1fr) 34px;padding:6px 0}
  .service-icon{width:61px;height:61px}
  .service-title{font-size:clamp(1.85rem,3vw,2.55rem)}
}

@media (max-width:1080px){
  .palm-sign.left{left:-4%;width:34vw}
  .palm-sign.right{right:-5%;width:41vw}
  .sun-sign{left:11%}
  .contact-main{grid-template-columns:1fr}
}

@media (max-width:800px){
  .site-header{top:10px;width:calc(100% - 20px)}
  .hero{min-height:100svh;padding:100px 14px 76px}
  .hero-center{--hero-rest-y:-3.5vh;--hero-scroll-shift:30px;--hero-scroll-scale:.022;width:min(300px,76vw);isolation:isolate}
  .palm-sign{--palm-rest-opacity:calc(.34 - var(--hero-progress) * .16)}
  .neon-bunting{--bunting-x:-50%;left:50%;right:auto;top:13.5%;width:660px;height:94px}
  h1{width:100%;margin:7px 0;font-size:clamp(2.6rem,12.4vw,3.15rem);line-height:.86;letter-spacing:.005em}
  h1 .solid{color:#ff38d8;-webkit-text-stroke:0;text-shadow:0 0 4px rgba(255,255,255,.35),0 0 16px rgba(255,24,207,.42)}
  h1 .outline{color:#1a8bff;-webkit-text-stroke:0;text-shadow:0 0 4px rgba(255,255,255,.25),0 0 18px rgba(26,139,255,.5)}
  .hero-tagline{display:none}
  .hero-actions{margin-top:16px}
  .menu-section{min-height:auto;margin:0;padding:66px 18px 72px}
  #carte{scroll-margin-top:88px}
  .menu-section::before,.menu-section::after{height:126px}
  .menu-section::before{top:-68px}
  .menu-section::after{bottom:-82px}
  .menu-section{contain-intrinsic-size:auto 1250px}
  .menu-inner{contain-intrinsic-size:auto 1280px}
  .menu-inner::before{top:18px;width:100%;height:220px;rotate:-2deg}
  .menu-inner::after{right:8px;bottom:-54px;font-size:.48rem}
  .menu-board{padding:42px 27px 36px}
  .menu-columns{grid-template-columns:1fr;column-gap:0}
  .menu-columns::before,.menu-columns::after{display:none}
  .menu-column{display:block}
  .menu-entry{min-height:112px}
  .contact-wrap{padding:94px 18px 62px}
  .contact-form{padding:24px}
  .footer{width:calc(100% - 36px);align-items:flex-start;flex-direction:column;gap:12px}
  .footer-meta{justify-content:flex-start;text-align:left}
  .brand{font-size:.7rem;line-height:1.15;white-space:nowrap}
  .brand-role{display:inline}
}

@media (max-width:650px){
  .software-orbit{--sun-rest-scale:.84;--sun-hidden-scale:.78;--sun-entry-scale:.78;margin-bottom:-8px}
  .form-grid{grid-template-columns:1fr}
  .form-field-wide{grid-column:auto}
  .captcha-challenge{grid-template-columns:1fr;align-items:stretch}
  .captcha-answer-row input{flex:1;width:auto}
  .form-bottom{align-items:stretch;flex-direction:column}
  .send-button{width:100%}
}

@media (max-width:500px){
  .site-header{gap:6px;padding:8px 7px 8px 14px}
  .header-cta{padding:9px 7px;font-size:.57rem;white-space:nowrap}
  .brand{max-width:none;font-size:clamp(.61rem,2.55vw,.7rem);letter-spacing:-.025em}
  .hero-tagline{font-size:.92rem}
  .menu-title{font-size:clamp(4.4rem,22vw,6.4rem)}
  .menu-board{padding:37px 21px 31px}
  .menu-entry{grid-template-columns:68px minmax(0,1fr) 34px;gap:12px}
  .service-icon{width:62px;height:62px}
  .service-title{font-size:2rem}
  .contact-title{font-size:clamp(4.7rem,21vw,7.2rem)}
  .footer-meta{gap:6px 8px;font-size:.68rem}
}
@media (max-width:340px){
  .site-header{padding-left:9px}
  .header-cta{padding-inline:6px;font-size:.54rem}
  .brand{font-size:.53rem;letter-spacing:-.025em}
}

@media (min-width:801px) and (max-height:680px){
  .hero{padding:78px 20px 18px}
  .hero-center{width:min(620px,84vw)}
  .software-orbit{--sun-rest-scale:.7;--sun-hidden-scale:.64;--sun-entry-scale:.64;height:112px;margin:-25px auto -10px}
  h1{margin:3px 0 7px;font-size:clamp(4.4rem,8.4vw,7.2rem)}
  .hero-tagline{margin-top:8px;font-size:.88rem;line-height:1.45}
  .hero-actions{margin-top:12px}
  .button{min-height:44px}
}

@media (max-height:500px) and (orientation:landscape){
  .site-header{top:8px;min-height:48px;padding-top:6px;padding-bottom:6px}
  .hero{padding:64px 16px 8px}
  .software-orbit{--sun-rest-scale:.44;--sun-hidden-scale:.4;--sun-entry-scale:.4;height:62px;margin:-52px auto -18px}
  h1{margin:0 0 4px;font-size:clamp(3.45rem,8vw,4.25rem);line-height:.74}
  .hero-tagline{max-width:520px;margin-top:5px;font-size:.7rem;line-height:1.28}
  .hero-actions{margin-top:7px}
  .button{min-height:36px;padding:0 15px;font-size:.68rem}
}

@media (hover:hover) and (pointer:fine){
  html,body,body *,body *::before,body *::after{
    cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='3' y1='2' x2='20' y2='26' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23ff18cf'/%3E%3Cstop offset='.25' stop-color='%23fff200'/%3E%3Cstop offset='.5' stop-color='%2329ff63'/%3E%3Cstop offset='.75' stop-color='%2319e7ff'/%3E%3Cstop offset='1' stop-color='%237767ff'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M3 2 20 14l-8 2 4 8-4 2-4-8-5 6Z' fill='url(%23g)' stroke='%23fffaf4' stroke-width='1.5' stroke-linejoin='round'/%3E%3C/svg%3E") 3 2,auto
  }
  input,textarea{cursor:text}
}
@media (hover:none),(pointer:coarse){
  html,body{cursor:auto}
  .menu-entry .service-icon{color:var(--accent);opacity:1;filter:drop-shadow(0 0 7px color-mix(in srgb,var(--accent) 70%,transparent))}
  .menu-entry .service-title{color:var(--accent)}
}

/* Section backgrounds preserve continuity; only their inner scenes are skipped. */
.hero{contain-intrinsic-size:auto 100svh}
.menu-section{contain-intrinsic-size:auto 900px}
.hero.is-section-dormant,.menu-section.is-section-dormant,.contact-section.is-section-dormant{
  pointer-events:none;
}
.hero.is-section-dormant *,
.hero.is-section-dormant *::before,
.hero.is-section-dormant *::after,
.menu-section.is-section-dormant *,
.menu-section.is-section-dormant *::before,
.menu-section.is-section-dormant *::after,
.contact-section.is-section-dormant *,
.contact-section.is-section-dormant *::before,
.contact-section.is-section-dormant *::after{
  animation-play-state:paused !important;
}
.hero.is-section-dormant > *,
.menu-section.is-section-dormant > .menu-inner,
.contact-section.is-section-dormant > .contact-wrap,
.contact-section.is-section-dormant > .footer{
  content-visibility:hidden;
  visibility:hidden;
}
.hero.is-section-dormant .brick-wall,
.hero.is-section-dormant .wall-neon,
.hero.is-section-dormant .software-orbit{display:none}

body.site-ready .hero .hero-center,
body.site-ready .hero .wall-neon,
body.site-ready .hero .neon-bunting,
body.site-ready .menu-section .menu-inner,
body.site-ready .contact-section .contact-wrap,
body.site-ready .contact-section .footer{
  visibility:visible;
  transition:opacity .28s ease,filter .28s ease,visibility 0s;
}
/* Le mode balanced garde les scènes peintes afin qu'un scroll rapide ne coupe
   jamais leur chorégraphie de sortie. */
body.motion-balanced .hero-center,
body.motion-balanced .menu-inner,
body.motion-balanced .menu-header,
body.motion-balanced .menu-entry,
body.motion-balanced .contact-wrap,
body.motion-balanced .footer{
  content-visibility:visible;
}
/* Le mode léger laisse le navigateur ignorer le contenu réellement hors écran. */
body.motion-lite .hero-center,
body.motion-lite .menu-inner,
body.motion-lite .menu-header,
body.motion-lite .menu-entry,
body.motion-lite .contact-wrap,
body.motion-lite .footer{
  content-visibility:auto;
}
body.site-ready .hero:not(.is-section-active):not(.is-scene-exiting) .hero-center,
body.site-ready .hero:not(.is-section-active):not(.is-scene-exiting) .wall-neon,
body.site-ready .hero:not(.is-section-active):not(.is-scene-exiting) .neon-bunting,
body.site-ready .menu-section:not(.is-section-active):not(.is-scene-exiting) .menu-inner,
body.site-ready .contact-section:not(.is-section-active):not(.is-scene-exiting) .contact-wrap,
body.site-ready .contact-section:not(.is-section-active):not(.is-scene-exiting) .footer{
  opacity:0!important;
  visibility:hidden;
  filter:brightness(.06)!important;
  transition:opacity .24s ease,filter .24s ease,visibility 0s .26s!important;
  transition-delay:0s!important;
}

@media (max-width:800px){
  .menu-section{contain-intrinsic-size:auto 1250px}
  .contact-section{contain-intrinsic-size:auto 1550px}
}

body.site-ready:not(.reduce-motion):not(.is-coarse) .hero.is-section-active h1 .solid{animation:heroTitleLife 15s steps(1,end) -4s infinite}
body.site-ready:not(.reduce-motion):not(.is-coarse) .hero.is-section-active h1 .outline{animation:heroTitleLife 17s steps(1,end) -10s infinite}
body.site-ready:not(.reduce-motion):not(.is-coarse) .menu-section.is-section-active .menu-inner{animation:paperSettle .82s cubic-bezier(.2,.8,.2,1) both}
body.site-ready:not(.reduce-motion):not(.is-coarse) .menu-section.is-section-active .menu-columns::before{animation:menuRailBreath 7.8s ease-in-out infinite}
body.site-ready:not(.reduce-motion):not(.is-coarse) .menu-section.is-section-active .menu-title{animation:menuTitleNeonLife 19s steps(1,end) -6s infinite}
body.site-ready:not(.reduce-motion):not(.is-coarse) .contact-section.is-section-active .contact-title{animation:contactNeonLife 18s steps(1,end) -8s infinite}
@keyframes ambientLightDrift{to{transform:translate3d(1.2%,-.7%,0) scale(1.075);opacity:.86}}
@keyframes wallLightSweep{to{transform:translate3d(5%,0,0);opacity:.55}}
@keyframes rayBreath{0%,100%{opacity:1}50%{opacity:.68}}
@keyframes sunHaloLife{0%,100%{transform:scale(1);opacity:.32}50%{transform:scale(1.22);opacity:.62}}
@keyframes leafSpark{0%,42%,43.2%,100%{opacity:.72}42.4%{opacity:.16}42.8%{opacity:1}}
@keyframes trunkWarmth{0%,100%{opacity:.82}50%{opacity:1}}
@keyframes heroTitleLife{0%,57%,57.7%,58.5%,100%{opacity:1}57.25%{opacity:.42}58.05%{opacity:.76}}
@keyframes ctaAura{0%,66%{transform:scale(1);opacity:0}78%{opacity:.3}100%{transform:scale(1.16,1.42);opacity:0}}
@keyframes contactGlow{50%{opacity:.58}}
@keyframes neonAlternation{0%,31%,31.8%,32.7%,64%,64.6%,65.4%,100%{opacity:1}31.3%,64.25%{opacity:.18}32.15%{opacity:.5}64.9%{opacity:.58}}
@keyframes contactNeonLife{0%,43%,43.8%,44.6%,100%{opacity:1}43.3%{opacity:.32}44.1%{opacity:.7}}

/* A single neon ignition language ties together the three scene entrances. */
body.site-ready:not(.reduce-motion) .menu-section.is-scene-entering .menu-entry.in-view{
  animation:neonSceneArrival .72s cubic-bezier(.2,.8,.2,1) calc(.26s + var(--reveal-delay,0ms)) both!important;
}

/* À la sortie, l'installation s'éteint du contenu vers son cadre végétal. */
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .hero-actions{animation:neonSceneArrival .64s cubic-bezier(.16,1,.3,1) reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .hero-tagline{animation:neonSceneArrival .64s cubic-bezier(.16,1,.3,1) .06s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting h1 .outline{animation:neonSceneArrival .68s cubic-bezier(.16,1,.3,1) .12s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting h1 .solid{animation:neonSceneArrival .68s cubic-bezier(.16,1,.3,1) .18s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .adobe-sun{animation:sceneSunIgnite .74s cubic-bezier(.16,1,.3,1) .26s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .neon-bunting{animation:sceneBuntingIgnite .76s cubic-bezier(.16,1,.3,1) .34s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .hero-center{animation:sceneCenterIgnite .72s cubic-bezier(.16,1,.3,1) .4s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .palm-sign.left{animation:scenePalmLeft 1.02s cubic-bezier(.16,1,.3,1) .46s reverse both!important}
body.site-ready:not(.reduce-motion) .hero.is-scene-exiting .palm-sign.right{animation:scenePalmRight 1.02s cubic-bezier(.16,1,.3,1) .54s reverse both!important}
body.site-ready:not(.reduce-motion) .menu-section.is-scene-exiting .menu-header{
  animation:neonSceneArrival .66s cubic-bezier(.2,.8,.2,1) .84s reverse both!important;
}
body.site-ready:not(.reduce-motion) .menu-section.is-scene-exiting .menu-board{
  animation:neonSceneArrival .72s cubic-bezier(.2,.8,.2,1) .68s reverse both!important;
}
body.site-ready:not(.reduce-motion) .menu-section.is-scene-exiting .menu-entry.in-view{
  animation:neonSceneArrival .64s cubic-bezier(.2,.8,.2,1) var(--exit-delay,0ms) reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .footer{
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .form-privacy{
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .06s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .form-bottom{
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .12s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .captcha-challenge{
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .18s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .form-field:nth-child(4){
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .24s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .form-field:nth-child(3){
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .3s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .form-field:nth-child(2){
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .36s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .form-field:nth-child(1){
  animation:neonSceneArrival .62s cubic-bezier(.2,.8,.2,1) .42s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .contact-title{
  animation:neonSceneArrival .66s cubic-bezier(.2,.8,.2,1) .88s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .contact-form{
  animation:neonSceneArrival .72s cubic-bezier(.2,.8,.2,1) .72s reverse both!important;
}
body.site-ready:not(.reduce-motion) .contact-section.is-scene-exiting .contact-kicker{
  animation:neonSceneArrival .66s cubic-bezier(.2,.8,.2,1) 1.02s reverse both!important;
}

/* Pause decorative loops when they cannot be seen or the tab is hidden. */
.hero:not(.is-section-active):not(.is-scene-exiting) .neon-flicker,
.hero:not(.is-section-active):not(.is-scene-exiting) .neon-flicker-delayed,
.hero:not(.is-section-active):not(.is-scene-exiting) .sun-rays,
.hero:not(.is-section-active):not(.is-scene-exiting) .sun-core,
.hero:not(.is-section-active):not(.is-scene-exiting) .sun-sign svg,
.hero:not(.is-section-active):not(.is-scene-exiting) .palm-sign svg,
.hero:not(.is-section-active):not(.is-scene-exiting) .software-orbit,
.hero:not(.is-section-active):not(.is-scene-exiting) .adobe-rays,
.hero:not(.is-section-active):not(.is-scene-exiting) .adobe-sun-core,
.hero:not(.is-section-active):not(.is-scene-exiting) .software-orbit span b,
.hero:not(.is-section-active):not(.is-scene-exiting) .bunting-flag,
.menu-section:not(.is-section-active):not(.is-scene-exiting) .menu-board::before,
.contact-section:not(.is-section-active):not(.is-scene-exiting) .contact-form::before,
body.is-page-hidden .neon-flicker,
body.is-page-hidden .neon-flicker-delayed,
body.is-page-hidden .sun-rays,
body.is-page-hidden .sun-core,
body.is-page-hidden .wall-neon svg,
body.is-page-hidden .software-orbit,
body.is-page-hidden .adobe-rays,
body.is-page-hidden .adobe-sun-core,
body.is-page-hidden .software-orbit span b,
body.is-page-hidden .bunting-flag,
body.is-page-hidden .menu-board::before,
body.is-page-hidden .contact-form::before,
body.is-page-hidden .button.primary::after{animation-play-state:paused !important}
body.is-page-hidden .noise{opacity:0}

body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .sun-rays{animation-duration:38s}
body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .sun-core{animation-duration:8s}
body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .sun-sign svg{animation-duration:11s}
body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .palm-sign.left svg{animation-duration:12s}
body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .palm-sign.right svg{animation-duration:13.5s}
body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .adobe-rays,
body.motion-balanced:not(.is-coarse).site-ready:not(.reduce-motion) .adobe-ray b{animation-duration:30s}

/* Dernière harmonisation : commande multicolore et formulaire mobile lisible. */
.contact-title{
  color:transparent;
  line-height:.94;
  background:linear-gradient(105deg,var(--pink) 0 18%,var(--yellow) 34%,var(--green) 51%,var(--cyan) 68%,var(--violet) 84%,var(--pink) 100%);
  background-size:180% 100%;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  text-shadow:none;
  filter:drop-shadow(0 0 8px rgba(255,24,207,.22)) drop-shadow(0 0 11px rgba(25,231,255,.16));
}
.send-button{
  color:#030718;
  border:1px solid rgba(255,255,255,.2);
  background:linear-gradient(100deg,var(--pink),var(--yellow) 25%,var(--green) 47%,var(--cyan) 69%,var(--violet) 86%,var(--pink));
  background-size:220% 100%;
  box-shadow:0 0 17px rgba(255,24,207,.22),0 0 24px rgba(25,231,255,.14);
  transition:transform .22s ease,box-shadow .22s ease,background-position .5s ease;
}
.send-button:hover,.send-button:focus-visible{
  background-position:100% 50%;
  box-shadow:0 0 22px rgba(255,24,207,.35),0 0 30px rgba(25,231,255,.22);
}
@media (max-width:600px){
  .site-header{min-height:58px;align-items:center;gap:10px;padding-inline:20px;padding-block:8px}
  .brand{
    min-height:40px;
    display:flex;
    align-items:center;
    flex:1 1 auto;
    max-width:none;
    font-size:clamp(.86rem,3.55vw,1rem);
    line-height:1;
    letter-spacing:-.012em;
    white-space:nowrap;
  }
  .captcha-answer-row{
    width:100%;
    display:grid;
    grid-template-columns:minmax(0,1fr) 48px;
    gap:8px;
  }
  .captcha-answer-row input{min-width:0;width:100%}
  .captcha-refresh{
    position:relative;
    z-index:2;
    width:48px;
    min-width:48px;
    height:43px;
    display:grid!important;
    visibility:visible!important;
  }
}
@media (max-width:360px){
  .site-header{padding-inline:16px}
}
.brand{
  color:transparent;
  background:linear-gradient(100deg,var(--pink),var(--yellow) 25%,var(--green) 47%,var(--cyan) 69%,var(--violet) 86%,var(--pink));
  background-size:220% 100%;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  text-shadow:none;
  filter:drop-shadow(0 0 7px rgba(255,24,207,.34)) drop-shadow(0 0 12px rgba(25,231,255,.18));
}
.header-cta{
  position:relative;
  color:transparent;
  border-color:transparent;
  background:linear-gradient(100deg,var(--pink),var(--yellow) 25%,var(--green) 47%,var(--cyan) 69%,var(--violet) 86%,var(--pink));
  background-size:220% 100%;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  box-shadow:0 0 14px rgba(255,24,207,.24),0 0 22px rgba(25,231,255,.16);
  transition:color .22s ease,background-position .5s ease,box-shadow .22s ease,transform .22s ease;
}
.header-cta::before{
  content:"";
  position:absolute;
  inset:0;
  padding:1px;
  border-radius:inherit;
  background:linear-gradient(100deg,var(--pink),var(--yellow) 25%,var(--green) 47%,var(--cyan) 69%,var(--violet) 86%,var(--pink));
  background-size:220% 100%;
  -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;
  mask-composite:exclude;
  pointer-events:none;
  transition:background-position .5s ease;
}
.header-cta:hover,.header-cta:focus-visible{
  color:transparent;
  background:linear-gradient(100deg,var(--pink),var(--yellow) 25%,var(--green) 47%,var(--cyan) 69%,var(--violet) 86%,var(--pink));
  background-size:220% 100%;
  background-position:100% 50%;
  background-clip:text;
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  box-shadow:0 0 21px rgba(255,24,207,.36),0 0 30px rgba(25,231,255,.24);
  transform:translateY(-2px);
}
.header-cta:hover::before,.header-cta:focus-visible::before{background-position:100% 50%}
@media (max-width:600px){
  .header-cta{
    display:inline-flex!important;
    align-items:center;
    justify-content:center;
    flex:0 0 auto;
    min-height:40px;
    padding:9px 13px;
    font-size:.7rem;
    line-height:1.15;
    letter-spacing:0;
    white-space:nowrap;
    visibility:visible!important;
    opacity:1!important;
  }
}
