/* ═══════════════════════════════════════════════════════════
   NATHAN FRITSCH · V2 design system
   Ink + bone, Fraunces display, Inter text, one teal accent.
   ═══════════════════════════════════════════════════════════ */
:root{
  --ink:#0D0F10;
  --ink-2:#15181A;
  --ink-3:#1E2225;
  --bone:#F4F1EC;
  --bone-2:#EAE5DD;
  --paper:#FBFAF7;
  --text:#121416;
  --mute:#6F6D68;
  --mute-d:rgba(244,241,236,.58);
  --line:rgba(18,20,22,.12);
  --line-d:rgba(244,241,236,.12);
  --a:#344D59;
  --a-2:#24363F;
  --a-l:#9CC3D2;
  --a-xl:#D8E7ED;
  --ease:cubic-bezier(.22,1,.36,1);
  --ease-io:cubic-bezier(.65,0,.35,1);
  --gut:clamp(1.25rem,4vw,4rem);
  --maxw:1440px;
  --serif:'Fraunces',Georgia,serif;
  --sans:'Inter',system-ui,-apple-system,sans-serif;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
html.lenis,html.lenis body{height:auto;}
.lenis.lenis-smooth{scroll-behavior:auto!important;}
body{background:var(--paper);color:var(--text);font-family:var(--sans);font-weight:400;line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
img,video{display:block;max-width:100%;}
a{color:inherit;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
::selection{background:var(--a);color:#fff;}
:focus-visible{outline:2px solid var(--a-l);outline-offset:3px;}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

/* ─── Type ─── */
.eyebrow{display:inline-flex;align-items:center;gap:.75rem;font-size:.7rem;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--a);}
.on-dark .eyebrow,.eyebrow.lt{color:var(--a-l);}
.d1{font-family:var(--serif);font-optical-sizing:auto;font-weight:450;font-size:clamp(2.9rem,7.6vw,8.2rem);line-height:.96;letter-spacing:-.025em;}
.d2{font-family:var(--serif);font-optical-sizing:auto;font-weight:450;font-size:clamp(2.3rem,5.2vw,5.4rem);line-height:1;letter-spacing:-.02em;}
.d3{font-family:var(--serif);font-optical-sizing:auto;font-weight:420;font-size:clamp(1.6rem,2.6vw,2.4rem);line-height:1.12;letter-spacing:-.01em;}
.d1 em,.d2 em,.d3 em{font-style:normal;font-weight:450;}
.it-a{color:var(--a);}
.on-dark .it-a,.cta-end .it-a,.sh .it-a,.ct-l .it-a{color:var(--a-l);}
.lead{font-size:clamp(1.02rem,1.25vw,1.18rem);line-height:1.75;color:var(--mute);font-weight:300;max-width:34em;}
.on-dark .lead{color:var(--mute-d);}

/* ─── Layout ─── */
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);}
.sec{padding:clamp(5.5rem,11vw,10rem) 0;position:relative;}
.on-dark{background:var(--ink);color:var(--bone);}
.bone{background:var(--bone);}

/* ─── Buttons ─── */
.btn{--bg:var(--a);--fg:#fff;position:relative;display:inline-flex;align-items:center;gap:.9rem;padding:1.05rem 1.7rem 1.05rem 1.9rem;background:var(--bg);color:var(--fg);font-size:.76rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;border-radius:100px;overflow:hidden;isolation:isolate;transition:transform .5s var(--ease),box-shadow .5s var(--ease),color .4s;white-space:nowrap;}
.btn::before{content:'';position:absolute;inset:0;z-index:-1;background:var(--ink);border-radius:inherit;transform:translateY(101%);transition:transform .55s var(--ease);}
.btn:hover::before{transform:translateY(0);}
.btn:hover{box-shadow:0 18px 40px -12px rgba(52,77,89,.55);}
.btn .ar{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.16);transition:transform .5s var(--ease),background .4s;}
.btn .ar svg{width:12px;height:12px;}
.btn:hover .ar{transform:rotate(-45deg);background:rgba(255,255,255,.24);}
.btn.light{--bg:var(--bone);--fg:var(--ink);}
.btn.light::before{background:var(--a-l);}
.btn.light .ar{background:rgba(13,15,16,.08);}
.btn.big{padding:1.3rem 2rem 1.3rem 2.3rem;font-size:.8rem;}
.link{display:inline-flex;align-items:center;gap:.6rem;font-size:.76rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;padding:.4rem 0;background:linear-gradient(currentColor,currentColor) left bottom/100% 1px no-repeat;transition:background-size .5s var(--ease),gap .4s var(--ease);}
.link:hover{background-size:0 1px;background-position:right bottom;gap:.95rem;}
.link svg{width:12px;height:12px;}

/* ─── Header ─── */
.hd{position:fixed;top:0;left:0;right:0;z-index:500;padding:1.35rem var(--gut);display:flex;align-items:center;justify-content:space-between;gap:2rem;color:#fff;transition:transform .6s var(--ease),padding .5s var(--ease),color .4s,background .5s;}
.hd::before{content:'';position:absolute;inset:0;z-index:-1;background:rgba(251,250,247,.82);backdrop-filter:blur(18px) saturate(1.6);-webkit-backdrop-filter:blur(18px) saturate(1.6);border-bottom:1px solid var(--line);opacity:0;transition:opacity .5s;}
.hd.solid{padding-top:.85rem;padding-bottom:.85rem;color:var(--text);}
.hd.solid::before{opacity:1;}
.hd.hide{transform:translateY(-105%);}
body.dark-top .hd:not(.solid){color:#fff;}
body.light-top .hd:not(.solid){color:var(--text);}
.hd-logo{display:flex;flex-direction:column;text-decoration:none;line-height:1;}
.hd-logo b{font-family:var(--serif);font-weight:450;font-size:1.32rem;letter-spacing:-.005em;}
.hd-logo small{font-size:.58rem;letter-spacing:.26em;text-transform:uppercase;opacity:.7;margin-top:.35rem;}
.hd-nav{display:flex;align-items:center;gap:2.4rem;list-style:none;}
.hd-nav>li{position:relative;}
.hd-nav>li>a,.hd-nav>li>button{display:inline-flex;align-items:center;gap:.4rem;font-size:.74rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;padding:.5rem 0;position:relative;}
.hd-nav>li>a::after,.hd-nav>li>button::after{content:'';position:absolute;left:0;right:0;bottom:.15rem;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease);}
.hd-nav>li:hover>a::after,.hd-nav>li:hover>button::after,.hd-nav a.on::after{transform:scaleX(1);transform-origin:left;}
.hd-nav .chev{width:9px;height:9px;transition:transform .4s var(--ease);}
.hd-nav li:hover .chev{transform:rotate(180deg);}
.hd-dd{position:absolute;top:100%;left:-1.4rem;padding-top:.9rem;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .35s,transform .45s var(--ease),visibility .35s;}
.hd-nav li:hover .hd-dd,.hd-nav li:focus-within .hd-dd{opacity:1;visibility:visible;transform:none;}
.hd-dd-in{min-width:250px;background:var(--paper);color:var(--text);border:1px solid var(--line);border-radius:14px;padding:.55rem;box-shadow:0 30px 60px -20px rgba(13,15,16,.35);}
.hd-dd a{display:flex;flex-direction:column;gap:.15rem;padding:.75rem .9rem;border-radius:9px;text-decoration:none;transition:background .3s;}
.hd-dd a:hover{background:var(--bone);}
.hd-dd a b{font-size:.86rem;font-weight:550;color:var(--text);}
.hd-dd a span{font-size:.74rem;color:var(--mute);}
.hd-right{display:flex;align-items:center;gap:1rem;}
.hd .btn{padding:.78rem 1.1rem .78rem 1.4rem;font-size:.7rem;}
.hd .btn .ar{width:22px;height:22px;}
.hd-burger{display:none;width:44px;height:44px;border-radius:50%;border:1px solid currentColor;align-items:center;justify-content:center;flex-direction:column;gap:5px;opacity:.9;}
.hd-burger i{display:block;width:16px;height:1.5px;background:currentColor;transition:transform .45s var(--ease),opacity .3s;}
body.menu-open .hd-burger i:nth-child(1){transform:translateY(3.25px) rotate(45deg);}
body.menu-open .hd-burger i:nth-child(2){transform:translateY(-3.25px) rotate(-45deg);}

/* Mobile menu */
.mm{position:fixed;inset:0;z-index:490;background:var(--ink);color:var(--bone);display:flex;flex-direction:column;justify-content:space-between;padding:7rem var(--gut) 2rem;clip-path:inset(0 0 100% 0);transition:clip-path .8s var(--ease-io);overflow-y:auto;}
body.menu-open .mm{clip-path:inset(0 0 0 0);}
body.menu-open .hd{color:var(--bone)!important;}
body.menu-open .hd::before{opacity:0!important;}
.mm-nav{display:flex;flex-direction:column;}
.mm-g{border-bottom:1px solid var(--line-d);opacity:0;transform:translateY(24px);transition:opacity .6s,transform .8s var(--ease);}
body.menu-open .mm-g{opacity:1;transform:none;}
body.menu-open .mm-g:nth-child(2){transition-delay:.06s;}
body.menu-open .mm-g:nth-child(3){transition-delay:.12s;}
.mm-t{display:flex;width:100%;align-items:center;justify-content:space-between;padding:1.35rem 0;font-family:var(--serif);font-weight:450;font-size:clamp(2rem,8.5vw,2.6rem);line-height:1;color:var(--bone);text-decoration:none;text-align:left;}
.mm-pl{position:relative;width:34px;height:34px;border-radius:50%;border:1px solid var(--line-d);flex:none;transition:transform .5s var(--ease),background .4s;}
.mm-pl::before,.mm-pl::after{content:'';position:absolute;left:50%;top:50%;width:12px;height:1.5px;background:var(--bone);transform:translate(-50%,-50%);transition:transform .5s var(--ease);}
.mm-pl::after{transform:translate(-50%,-50%) rotate(90deg);}
.mm-t[aria-expanded="true"] .mm-pl{background:var(--a);border-color:var(--a);}
.mm-t[aria-expanded="true"] .mm-pl::after{transform:translate(-50%,-50%) rotate(0);}
.mm-sub{display:grid;grid-template-rows:0fr;transition:grid-template-rows .55s var(--ease);}
.mm-sub>div{overflow:hidden;display:flex;flex-direction:column;}
.mm-g.open .mm-sub{grid-template-rows:1fr;}
.mm-sub a{display:flex;align-items:center;justify-content:space-between;padding:.8rem 0 .8rem 1rem;font-size:1.02rem;color:var(--mute-d);text-decoration:none;border-left:1px solid var(--line-d);transition:color .3s,border-color .3s;}
.mm-sub a::after{content:'→';opacity:.5;}
.mm-sub a:hover,.mm-sub a:active{color:var(--bone);border-color:var(--a-l);}
.mm-sub a:last-child{margin-bottom:1.3rem;}
.mm-foot{display:flex;flex-direction:column;gap:1.2rem;margin-top:2.5rem;}
.mm-foot .btn{justify-content:space-between;}
.mm-foot p{font-size:.8rem;color:var(--mute-d);}
.mm-foot p a{color:var(--bone);}

/* Sticky mobile CTA */
.mcta{display:none;}

/* ─── Cursor (fine pointers only) ─── */
#cx{position:fixed;top:0;left:0;z-index:9000;pointer-events:none;mix-blend-mode:normal;}
#cx .c-dot{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--a);transform:translate(-50%,-50%);transition:opacity .3s,background .3s;}
#cx .c-ring{position:absolute;width:38px;height:38px;border-radius:50%;border:1px solid rgba(52,77,89,.45);transform:translate(-50%,-50%);display:grid;place-items:center;transition:width .45s var(--ease),height .45s var(--ease),background .45s,border-color .45s;}
#cx .c-ring span{font-size:.6rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#fff;opacity:0;transition:opacity .3s;}
body.c-link #cx .c-ring{width:60px;height:60px;background:rgba(52,77,89,.08);border-color:var(--a);}
body.c-view #cx .c-ring{width:92px;height:92px;background:var(--a);border-color:var(--a);}
body.c-view #cx .c-ring span{opacity:1;}
body.c-view #cx .c-dot{opacity:0;}
body.c-dark #cx .c-dot{background:var(--a-l);}
body.c-dark #cx .c-ring{border-color:rgba(156,195,210,.55);}
@media (hover:none),(pointer:coarse){#cx{display:none!important;}}

/* ─── Intro curtain ─── */
.intro{position:fixed;inset:0;z-index:9500;background:var(--ink);color:var(--bone);display:grid;place-items:center;transition:clip-path 1.1s var(--ease-io);clip-path:inset(0 0 0 0);}
.intro.out{clip-path:inset(0 0 100% 0);}
.intro-in{display:flex;flex-direction:column;align-items:center;gap:1.1rem;overflow:hidden;}
.intro-name{font-family:var(--serif);font-weight:450;font-size:clamp(2.2rem,6vw,4.6rem);letter-spacing:-.01em;line-height:1;display:flex;overflow:hidden;}
.intro-name span{display:inline-block;transform:translateY(110%);animation:upIn 1s var(--ease) forwards;}
.intro-sub{font-size:.66rem;letter-spacing:.34em;text-transform:uppercase;color:var(--a-l);opacity:0;animation:fadeIn .8s ease .55s forwards;}
.intro-bar{width:160px;height:1px;background:var(--line-d);position:relative;overflow:hidden;}
.intro-bar::after{content:'';position:absolute;inset:0;background:var(--a-l);transform:scaleX(0);transform-origin:left;animation:barIn 1.1s var(--ease-io) .2s forwards;}
@keyframes upIn{to{transform:none;}}
@keyframes fadeIn{to{opacity:1;}}
@keyframes barIn{to{transform:scaleX(1);}}
html.no-intro .intro{display:none;}

/* ─── Reveals ─── */
[data-rv]{opacity:0;transform:translateY(40px);transition:opacity 1s var(--ease),transform 1.2s var(--ease);transition-delay:var(--dl,0s);}
[data-rv].in{opacity:1;transform:none;}
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em;}
.split .w>span{display:inline-block;transform:translateY(105%);transition:transform 1.15s var(--ease);transition-delay:calc(var(--i,0) * 45ms + var(--dl,0s));}
.split.in .w>span{transform:none;}
.imgrv{clip-path:inset(12% 8% 12% 8%);transition:clip-path 1.5s var(--ease);}
.imgrv img{transform:scale(1.18);transition:transform 1.8s var(--ease);}
.imgrv.in{clip-path:inset(0 0 0 0);}
.imgrv.in img{transform:scale(1);}
@media (prefers-reduced-motion:reduce){
  [data-rv],.split .w>span,.imgrv,.imgrv img{transition:none!important;transform:none!important;opacity:1!important;clip-path:none!important;}
}

/* ─── Footer ─── */
.fx{background:var(--ink);color:var(--bone);padding:clamp(4rem,8vw,7rem) 0 2rem;overflow:hidden;}
.fx-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:3rem;padding-bottom:4rem;border-bottom:1px solid var(--line-d);}
.fx-cta h3{font-family:var(--serif);font-weight:450;font-size:clamp(1.9rem,3vw,2.7rem);line-height:1.08;letter-spacing:-.015em;margin-bottom:1.6rem;}
.fx-cta h3 em{font-style:normal;color:var(--a-l);}
.fx h4{font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--mute-d);font-weight:500;margin-bottom:1.3rem;}
.fx ul{list-style:none;display:flex;flex-direction:column;gap:.7rem;}
.fx ul a{text-decoration:none;font-size:.95rem;color:var(--bone);opacity:.85;transition:opacity .3s,color .3s;}
.fx ul a:hover{opacity:1;color:var(--a-l);}
.fx-big{display:none;font-family:var(--serif);font-weight:450;font-size:clamp(3.4rem,15.5vw,17rem);line-height:.85;letter-spacing:-.045em;white-space:nowrap;margin:3.5rem 0 1.5rem;color:transparent;-webkit-text-stroke:1px rgba(244,241,236,.22);user-select:none;text-align:center;}
.fx-bot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;font-size:.75rem;color:var(--mute-d);}
.fx-bot a{color:var(--mute-d);text-decoration:none;}
.fx-bot a:hover{color:var(--bone);}

/* ─── Page transition ─── */
.pt{position:fixed;inset:0;z-index:9400;background:var(--ink);pointer-events:none;transform:translateY(100%);}
.pt.go{transition:transform .7s var(--ease-io);transform:translateY(0);}
.pt.leave{transform:translateY(0);}
.pt.leave.done{transition:transform .8s var(--ease-io);transform:translateY(-100%);}

/* ─── Shared blocks ─── */
.marq{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:1.5rem 0;background:var(--paper);}
.marq-t{display:flex;width:max-content;animation:marq 42s linear infinite;}
.marq:hover .marq-t{animation-play-state:paused;}
.marq-t span{display:inline-flex;align-items:center;gap:2.6rem;padding-right:2.6rem;font-family:var(--serif);font-size:clamp(1.3rem,2.2vw,2rem);font-weight:450;white-space:nowrap;color:var(--text);}
.marq-t span i{font-style:normal;width:7px;height:7px;border-radius:50%;background:var(--a);display:inline-block;}
@keyframes marq{to{transform:translateX(-50%);}}

.faq{border-top:1px solid var(--line);}
.faq details{border-bottom:1px solid var(--line);}
.faq summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:2rem;padding:1.7rem 0;cursor:pointer;font-family:var(--serif);font-weight:420;font-size:clamp(1.15rem,1.6vw,1.45rem);letter-spacing:-.005em;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary .pl{flex:none;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:transform .5s var(--ease),background .4s,border-color .4s;}
.faq summary .pl svg{width:12px;height:12px;}
.faq details[open] summary .pl{transform:rotate(45deg);background:var(--a);border-color:var(--a);color:#fff;}
.faq .ans{padding:0 4rem 1.8rem 0;color:var(--mute);font-weight:300;line-height:1.8;max-width:52em;}

.cta-end{position:relative;min-height:92vh;display:flex;align-items:center;overflow:hidden;color:#fff;}
.cta-end-bg{position:absolute;inset:-8% 0;background-size:cover;background-position:center;will-change:transform;}
.cta-end::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,15,16,.55),rgba(13,15,16,.78));}
.cta-end .wrap{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center;gap:2rem;}
.cta-end .d1{max-width:12ch;}
.cta-end p{color:rgba(255,255,255,.72);max-width:34em;font-weight:300;font-size:1.08rem;line-height:1.7;}
.cta-end-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:1rem;align-items:center;}
.cta-end-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem 2rem;font-size:.8rem;color:rgba(255,255,255,.62);}
.cta-end-meta a{color:#fff;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35);}
.btn.ghost-l{--bg:transparent;--fg:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.4);}
.btn.ghost-l::before{background:#fff;}
.btn.ghost-l:hover{color:var(--ink);}
.btn.ghost-l .ar{background:rgba(255,255,255,.14);}

/* ─── Responsive ─── */
@media (max-width:1080px){
  .hd-nav,.hd-right .btn{display:none;}
  .hd-burger{display:inline-flex;}
  .fx-top{grid-template-columns:1fr 1fr;}
  .fx-cta{grid-column:1/-1;}
  .mcta{display:flex;position:fixed;left:1rem;right:1rem;bottom:max(1rem,env(safe-area-inset-bottom));z-index:480;gap:.6rem;transform:translateY(160%);transition:transform .6s var(--ease);}
  .mcta.show{transform:none;}
  .mcta .btn{flex:1;justify-content:space-between;box-shadow:0 14px 34px -10px rgba(13,15,16,.5);}
  .mcta .btn.tel{flex:none;padding:0;width:54px;justify-content:center;--bg:var(--ink);}
  .mcta .btn.tel::before{display:none;}
  .mcta .btn.tel svg{width:18px;height:18px;}
  body.menu-open .mcta{transform:translateY(160%);}
}
@media (max-width:640px){
  .fx-top{grid-template-columns:1fr;gap:2.4rem;}
  .faq .ans{padding-right:0;}
  .btn{padding:1rem 1.3rem 1rem 1.5rem;font-size:.72rem;}
  .cta-end{min-height:84svh;}
}

/* ─── Mobile : respiration et hiérarchie ─── */
@media (max-width:768px){
  .sec{padding:4.5rem 0;}
  .d1{font-size:clamp(2.6rem,11.5vw,3.6rem);line-height:1;}
  .d2{font-size:clamp(2rem,8.6vw,2.7rem);line-height:1.06;}
  .hd{padding:1rem 1.25rem;}
  .hd.solid{padding-top:.7rem;padding-bottom:.7rem;}
  .hd-logo b{font-size:1.15rem;}
  .hd-logo small{font-size:.52rem;}
  .hd-burger{width:42px;height:42px;}
  .cta-end{min-height:78svh;}
  .cta-end .wrap{gap:1.4rem;}
  .cta-end-actions{flex-direction:column;align-items:stretch;width:100%;}
  .cta-end-actions .btn{justify-content:space-between;}
  .fx{padding:3.5rem 0 7rem;}
  .fx-top{grid-template-columns:1fr 1fr;gap:2.2rem 1.5rem;padding-bottom:2.5rem;}
  .fx-cta{grid-column:1/-1;}
  .fx-top>div:last-child{grid-column:1/-1;}
  .fx ul{gap:.55rem;}
  .fx ul a{font-size:.9rem;}
  .fx-bot{flex-direction:column;gap:.5rem;margin-top:2rem;}
  .mcta .btn{padding-top:.95rem;padding-bottom:.95rem;}
}
