/* Visual language taken from the Polar hotel concept: deep navy, ice white, one amber accent, Manrope, faint aurora. */
:root{
  --night:#141F38; --deep:#192643; --panel:#1E2E4E; --line:#2C4570;
  --ice:#F1F5F9; --frost:#B4C4D6; --mist:#7F93AB; --amber:#C6FF3D; --violet:#7A4DFF; --violet-soft:#A98BFF;
  --pad:clamp(20px,5vw,72px);
  --sans:'Manrope',system-ui,sans-serif; --hand:'Caveat',cursive;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--night);color:var(--ice);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit}
html[lang=fr] .en,html[lang=en] .fr{display:none!important}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.inner{max-width:1240px;margin:0 auto;padding-inline:var(--pad)}
h1,h2,h3{margin:0;font-family:var(--sans);font-weight:800;letter-spacing:-.03em;line-height:1;text-wrap:balance}
p{margin:0}

/* header */
.top{position:fixed;inset:0 0 auto 0;z-index:30;display:flex;justify-content:space-between;align-items:center;padding:18px var(--pad);background:linear-gradient(var(--night),rgba(20,31,56,0))}
.who{font-weight:700;text-decoration:none;font-size:16px;letter-spacing:-.01em}
.lang{display:flex;gap:2px}
.lang button{background:none;border:0;color:var(--mist);font:700 14px var(--sans);padding:6px 9px;cursor:pointer}
.lang button[aria-pressed=true]{color:var(--ice)}

/* links + button */
.btn{display:inline-flex;align-items:center;height:56px;padding:0 30px;background:var(--amber);color:#1A1206;font:800 16px var(--sans);text-decoration:none;border-radius:4px;transition:background .15s}
.btn:hover{background:#D8FF73;box-shadow:0 0 34px rgba(198,255,61,.35)}
.link{font-weight:700;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:7px;text-decoration-color:var(--mist);transition:text-decoration-color .15s}
.link:hover{text-decoration-color:var(--amber)}

/* ===== story: scattered notes collapse into one screen ===== */
.story{height:240vh;position:relative;
  background:radial-gradient(70% 55% at 85% 10%,rgba(198,255,61,.30),transparent 70%),radial-gradient(60% 50% at 100% 60%,rgba(122,77,255,.70),transparent 70%),radial-gradient(30% 22% at 14% 74%,rgba(122,77,255,.35),transparent),var(--night)}
.sticky{position:sticky;top:0;height:100vh;height:100svh;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:center;gap:clamp(20px,4vw,64px);padding:84px var(--pad) 40px;max-width:1400px;margin:0 auto;overflow:hidden}
h1{font-size:clamp(44px,6.4vw,104px)}
h1 span{display:block}
h1 .h-b{color:var(--violet-soft)}
.sub{margin-top:clamp(18px,2.4vw,30px);font-size:clamp(17px,1.6vw,21px);color:var(--frost);max-width:30em}
.cta{display:flex;align-items:center;gap:30px;margin-top:clamp(26px,3.2vw,40px);flex-wrap:wrap}

.stage{position:relative;height:min(78vh,720px);width:100%}
.state{position:absolute;left:0;top:0;font:700 15px var(--sans);color:var(--mist)}
.state.s2{opacity:0;color:var(--amber)}
.notes{position:absolute;inset:34px 0 0 0}
.note{position:absolute;left:calc(var(--x) * 1%);top:calc(var(--y) * 1%);
  transform:translate(var(--dx,0px),var(--dy,0px)) rotate(calc(var(--r) * (1 - var(--p,0)))) scale(calc(1 - var(--p,0) * .55));
  opacity:calc(1 - var(--p,0) * 1.25);
  font:700 clamp(24px,2.5vw,36px)/1 var(--hand);padding:.42em .62em .36em;white-space:nowrap;
  background:#EDE6D6;color:#1B2433;box-shadow:0 14px 28px -12px rgba(0,0,0,.7);will-change:transform,opacity}
.note.p{background:var(--amber);color:#1A1206;font-size:clamp(30px,3.1vw,46px)}
.device{position:absolute;left:50%;top:50%;width:min(300px,62%);
  transform:translate(-50%,-46%) scale(calc(.82 + var(--p,0) * .18));opacity:var(--p,0);
  border-radius:40px;overflow:hidden;box-shadow:0 0 0 9px #04080E,0 40px 100px -20px rgba(0,0,0,.8);will-change:transform,opacity}

/* ===== proof (Tendy's) ===== */
.proof{background:radial-gradient(34% 32% at 74% 34%,rgba(122,77,255,.55),transparent),radial-gradient(26% 26% at 18% 70%,rgba(198,255,61,.20),transparent),var(--night);   /* same base as every section: no tone step at the edges */padding:clamp(80px,11vw,160px) 0;border-top:1px solid var(--line)}
.proof-head{display:flex;align-items:center;gap:clamp(18px,2.4vw,32px)}
.proof .logo{width:clamp(64px,7vw,100px);height:auto;border-radius:50%;flex:none}
.kicker{color:var(--violet-soft);font-weight:700;margin-bottom:10px}
.proof h2{font-size:clamp(34px,5vw,72px)}
.numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,3vw,48px);margin-top:clamp(48px,7vw,96px);border-top:1px solid var(--line)}
.numbers>div{padding-top:clamp(20px,2.4vw,32px)}
.numbers b{display:block;font:800 clamp(44px,7vw,112px)/.9 var(--sans);letter-spacing:-.05em;white-space:nowrap}
.numbers span{display:block;margin-top:12px;color:var(--frost);font-size:clamp(15px,1.4vw,18px)}
.gallery{display:flex;gap:clamp(14px,2vw,28px);align-items:center;margin-top:clamp(56px,8vw,110px)}
.gallery .ph{height:clamp(320px,34vw,520px);width:auto;border-radius:30px}
.gallery .dk{height:clamp(220px,22vw,330px);width:auto;border-radius:6px;flex:1 1 auto;min-width:0;object-fit:cover;object-position:left top}

/* ===== custom ===== */
.custom{padding:clamp(90px,12vw,180px) 0}
.custom h2{font-size:clamp(38px,6vw,92px);max-width:12ch}
.flip{margin-top:clamp(36px,5vw,64px);display:grid;gap:8px}
.flip p{font:800 clamp(28px,4vw,58px)/1.06 var(--sans);letter-spacing:-.03em}
.flip .old{color:var(--line);text-decoration:line-through;text-decoration-thickness:3px}
.flip .new{color:var(--amber)}
.custom .body{margin-top:clamp(28px,3.6vw,48px);font-size:clamp(18px,1.7vw,22px);color:var(--frost);max-width:32em}

/* ===== cases ===== */
.cases{padding-bottom:clamp(40px,6vw,80px)}
.case{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(24px,4vw,72px);align-items:center;padding:clamp(48px,7vw,96px) 0;border-top:1px solid var(--line)}
.case h3{font-size:clamp(28px,3.2vw,46px)}
.case .txt p{margin-top:14px;color:var(--frost);max-width:26em}
.case .txt .link{display:inline-block;margin-top:22px}
.row{display:flex;gap:clamp(12px,1.6vw,22px);align-items:center}
.row .ph{height:clamp(280px,28vw,420px);width:auto;border-radius:26px}
.row .dk{height:clamp(200px,20vw,300px);width:auto;border-radius:6px;min-width:0;flex:1 1 auto;object-fit:cover;object-position:left top}
.row .wide{width:100%;height:auto;border-radius:6px}

/* ===== how ===== */
.how{padding:clamp(80px,10vw,150px) 0;border-top:1px solid var(--line)}
.how h2{font-size:clamp(34px,4.6vw,66px)}
.how ol{list-style:none;padding:0;margin:clamp(36px,5vw,64px) 0 0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,48px);counter-reset:s}
.how li{counter-increment:s;position:relative}
/* big outlined numerals instead of tiny 1-2-3 */
.how li::before{content:counter(s,decimal-leading-zero);display:block;font:800 clamp(76px,9vw,140px)/.85 var(--sans);letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1.5px var(--violet-soft);margin-bottom:clamp(14px,1.6vw,22px)}
.how li:first-child::before{-webkit-text-stroke-color:var(--amber)}
.how b{display:block;font:800 clamp(22px,2.2vw,30px)/1.1 var(--sans);letter-spacing:-.02em}
.how span{display:block;margin-top:10px;color:var(--frost)}

/* ===== contact ===== */
.contact{padding:clamp(90px,12vw,170px) 0 clamp(50px,6vw,80px);border-top:1px solid var(--line);
  background:radial-gradient(30% 40% at 14% 58%,rgba(198,255,61,.26),transparent),radial-gradient(30% 44% at 84% 54%,rgba(122,77,255,.65),transparent),var(--night)}   /* glows stay off the page bottom */
.contact h2{font-size:clamp(38px,6vw,92px);max-width:12ch}
.contact .mail{display:block;margin-top:clamp(36px,5vw,64px);font:800 clamp(30px,5.6vw,86px)/1 var(--sans);letter-spacing:-.04em;text-decoration:none;color:var(--amber);word-break:break-word}
.contact .mail:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:10px}
.contact .tel{display:block;margin-top:16px;font:700 clamp(20px,2.4vw,30px) var(--sans);text-decoration:none;color:var(--frost)}
.contact .link{display:inline-block;margin-top:clamp(30px,4vw,48px)}
.contact .sig{margin-top:clamp(56px,7vw,100px);font-size:14px;color:var(--mist);max-width:44em}

/* popup + top button */
#mailbox{position:fixed;left:50%;bottom:20px;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:.2s;z-index:40;display:flex;align-items:center;gap:6px 16px;flex-wrap:wrap;background:var(--ice);color:var(--night);padding:14px 18px;border-radius:4px;box-shadow:0 20px 60px rgba(0,0,0,.5);font:600 15px var(--sans);max-width:calc(100vw - 24px)}
#mailbox.on{opacity:1;pointer-events:auto;transform:translate(-50%,0)}
#mailbox a{color:var(--night);font-weight:800;text-underline-offset:4px}
#mailbox button{margin-left:auto;border:0;background:none;color:var(--night);font-size:22px;cursor:pointer}
html[lang=fr] .m-en,html[lang=en] .m-fr{display:none}
#totop{position:fixed;right:18px;bottom:18px;z-index:30;width:64px;height:64px;border-radius:50%;border:1px solid var(--line);background:var(--deep);color:var(--ice);display:grid;place-items:center;cursor:pointer;opacity:0;transform:translateY(14px);pointer-events:none;transition:.2s}
#totop:hover{border-color:var(--amber);color:var(--amber)}
#totop.on{opacity:1;transform:none;pointer-events:auto}
#totop svg{width:24px;height:24px}

/* ===== tablet / phone ===== */
@media (max-width:900px){
  .story{height:220vh}
  .sticky{grid-template-columns:1fr;grid-template-rows:auto 1fr;align-items:start;padding-top:76px;gap:18px}
  h1{font-size:clamp(40px,11vw,62px)}
  .sub{font-size:16px}
  .cta{margin-top:20px;gap:22px}
  .btn{height:52px;padding:0 26px;font-size:16px}
  .stage{height:100%;min-height:300px}
  .note{font-size:clamp(20px,5.6vw,28px)}
  .note.p{font-size:clamp(24px,6.6vw,34px)}
  .device{width:min(210px,52%)}
  .numbers{grid-template-columns:1fr;gap:0}
  .numbers>div{padding:22px 0;border-bottom:1px solid var(--line)}
  .gallery,.row{overflow-x:auto;scroll-snap-type:x mandatory;margin-inline:calc(var(--pad) * -1);padding-inline:var(--pad);scrollbar-width:none}
  .gallery::-webkit-scrollbar,.row::-webkit-scrollbar{display:none}
  .gallery img,.row img{flex:none;scroll-snap-align:start}
  .gallery .dk,.row .dk{height:min(240px,62vw);width:auto;flex:none;object-fit:initial}
  .gallery .ph,.row .ph{height:min(420px,108vw)}
  .row .wide{width:min(560px,150vw);max-width:none}
  .case{grid-template-columns:1fr}
  .how ol{grid-template-columns:1fr}
}
@media (max-height:700px) and (max-width:900px){.sub{display:none}}
@media (prefers-reduced-motion:reduce){
  .story{height:auto}.sticky{position:relative;height:auto;min-height:100vh}
  .device{opacity:1}
}

.numbers b{color:var(--ice)}
.numbers>div:first-child b{color:var(--amber);text-shadow:0 0 40px rgba(198,255,61,.25)}
.flip .new{text-shadow:0 0 50px rgba(198,255,61,.2)}

/* notes exactly like the deck: printed type, pastel slips, soft shadow */
.note{font:600 clamp(20px,2vw,30px)/1.15 var(--sans);letter-spacing:-.01em;padding:.72em 1em;color:#15130F;border-radius:4px;box-shadow:0 14px 34px -6px rgba(0,0,0,.45);background:#fff}
.note.y{background:#FFF6C9}.note.g{background:#DDF3DC}.note.w{background:#FFFFFF}.note.b{background:#E3EEFF}
.note.p{background:#FFE1DD;color:#15130F;font-size:clamp(26px,2.6vw,40px)}
@media (max-width:900px){.note{font-size:clamp(15px,4.2vw,20px)}.note.p{font-size:clamp(19px,5.2vw,26px)}}
@media (min-width:901px){h1{font-size:clamp(44px,4.7vw,80px)}}

/* ================= motion v2 ================= */
.note{padding:0!important;background:none!important;box-shadow:none!important;transform:none;opacity:1;will-change:transform,opacity}
.note .ni{display:block;padding:.72em 1em;border-radius:4px;background:#fff;color:#15130F;
  box-shadow:0 16px 34px -8px rgba(0,0,0,.55);rotate:calc(var(--r) * 1deg);
  animation:stick .75s cubic-bezier(.2,1.5,.35,1) both, drift 7s ease-in-out infinite;
  animation-delay:calc(var(--i) * 85ms + 250ms), calc(var(--i) * -.8s)}
.note.y .ni{background:#FFF6C9}.note.g .ni{background:#DDF3DC}.note.w .ni{background:#fff}.note.b .ni{background:#E3EEFF}.note.p .ni{background:#FFE1DD}
@keyframes stick{0%{opacity:0;scale:1.45}60%{opacity:1}100%{opacity:1;scale:1}}
@keyframes drift{0%,100%{translate:0 0}50%{translate:0 -7px}}
.note.gone .ni{animation-play-state:paused}

.device{height:min(88%,640px);width:auto;aspect-ratio:750/1624;left:50%;top:calc(50% + 17px);
  transform:translate(-50%,-50%);opacity:0;transition:box-shadow .6s}
.device img{width:100%;height:100%;object-fit:cover;filter:brightness(var(--lit,.35)) saturate(var(--lit,.35))}
.device.done{box-shadow:0 0 0 9px #04080E,0 0 90px -10px rgba(198,255,61,.35);animation:ring 1.1s ease-out 1}
@keyframes ring{0%{box-shadow:0 0 0 9px #04080E,0 0 0 9px rgba(198,255,61,.9)}100%{box-shadow:0 0 0 9px #04080E,0 0 0 46px rgba(198,255,61,0)}}
.state{transition:none}
.story{height:280vh}

/* reveals */
.rv{opacity:0;transform:translateY(24px);transition:opacity .6s ease-out,transform .6s cubic-bezier(.2,.8,.2,1)}   /* fade, not clip: nothing gets cut in a straight line */
.rv.in{opacity:1;transform:none}
.flip .old{text-decoration:none!important}
.strike{background:linear-gradient(currentColor,currentColor) no-repeat 0 56% / 0% 3px;transition:background-size 1.1s cubic-bezier(.6,0,.2,1) .2s}
.flip.in .strike{background-size:100% 3px}
.flip .new{opacity:0;transform:translateY(18px);transition:opacity .8s ease 1.1s,transform .8s cubic-bezier(.2,.8,.2,1) 1.1s}
.flip.in .new{opacity:1;transform:none}

@media (max-width:900px){
  .story{height:250vh}
  .stage{min-height:0}
  .device{height:min(90%,520px)}
  .notes{inset:30px 0 0 0}
}
@media (prefers-reduced-motion:reduce){
  .note .ni{animation:none}.rv{opacity:1;transform:none}
  .strike{background-size:100% 3px}.flip .new{opacity:1;transform:none}
  .device{opacity:1}.device img{filter:none}
}

/* no accidental text selection on tap */
html,body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
input,textarea,[contenteditable]{-webkit-user-select:text;user-select:text}
img{-webkit-user-drag:none;user-drag:none}
.notes{z-index:3}
.device{z-index:2}
.state{z-index:4}
.device img{filter:brightness(calc(.5 + var(--lit,.35) * .5)) saturate(var(--lit,.35))}
.device.done{box-shadow:0 0 0 9px #04080E,0 0 70px -10px rgba(198,255,61,.32)}
@keyframes ring{0%{box-shadow:0 0 0 9px #04080E,0 0 0 9px rgba(198,255,61,.85)}100%{box-shadow:0 0 0 9px #04080E,0 0 0 40px rgba(198,255,61,0)}}

.facts2{list-style:none;margin:24px 0 0;padding:0;border-top:1px solid var(--line)}
.facts2 li{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:14px;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--line)}
.facts2 b{font:800 clamp(22px,2.2vw,30px)/1 var(--sans);letter-spacing:-.02em;color:var(--amber);white-space:nowrap}
.facts2 span{font-size:15px;color:var(--frost)}
.case .src{margin-top:14px;font-size:13px;color:var(--mist)}
.facts2 b span{font:inherit;color:inherit}
.story{height:165vh}
@media (max-width:900px){.story{height:150vh}}
.story{height:215vh}
@media (max-width:900px){.story{height:205vh}}

/* hotel case: stacked ticks per month */
.hchart{margin:0;min-width:0}
.hchart figcaption{font-size:15px;color:var(--frost)}
.hc-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px 18px;margin:10px 0 22px;font-size:13px;color:var(--mist)}
.hc-legend>span{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.hc-legend i{width:11px;height:11px;border-radius:2px}
.hchart .r{background:var(--amber)}
.hchart .h{background:rgba(180,196,214,.55)}
.hchart .o{background:rgba(180,196,214,.2)}
.hc-cols{display:flex;gap:clamp(4px,1vw,12px)}
.hc-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center}
.hc-area{height:clamp(170px,22vw,290px);width:100%;display:flex;align-items:flex-end}
.hc-bar{width:100%;display:flex;flex-direction:column;gap:2px;transform-origin:bottom;transform:scaleY(0);transition:transform 1s cubic-bezier(.2,.8,.2,1)}
.hchart.in .hc-bar{transform:none}
.hc-col:nth-child(2) .hc-bar{transition-delay:.05s}.hc-col:nth-child(3) .hc-bar{transition-delay:.1s}.hc-col:nth-child(4) .hc-bar{transition-delay:.15s}.hc-col:nth-child(5) .hc-bar{transition-delay:.2s}
.hc-col:nth-child(6) .hc-bar{transition-delay:.25s}.hc-col:nth-child(7) .hc-bar{transition-delay:.3s}.hc-col:nth-child(8) .hc-bar{transition-delay:.35s}.hc-col:nth-child(9) .hc-bar{transition-delay:.4s}.hc-col:nth-child(10) .hc-bar{transition-delay:.45s}
.hc-bar i{display:block;min-height:0}
.hc-bar i:first-child{border-radius:3px 3px 0 0}
.hc-m{font-size:clamp(10px,1.1vw,13px);color:var(--mist);margin-top:8px;white-space:nowrap}
.hc-o{font:800 clamp(11px,1.3vw,16px)/1 var(--sans);margin-top:6px;white-space:nowrap}
.hc-note{margin-top:22px;font-weight:700;font-size:clamp(16px,1.6vw,20px);color:var(--ice)}
@media (prefers-reduced-motion:reduce){.hc-bar{transform:none;transition:none}}

/* <picture> wrappers must not change the flex layout of the images */
picture{display:contents}
picture source{display:none}   /* otherwise it counts as a flex item and adds an extra gap */

/* hotel case: app screen next to the chart */
.hvis{display:flex;flex-direction:column;gap:clamp(28px,3.4vw,44px);min-width:0}
.hphones{display:flex;gap:clamp(14px,2vw,28px)}
.hvis .ph{height:clamp(300px,30vw,420px);width:auto;border-radius:13.4% / 6.4%;flex:none}
@media (max-width:900px){
  .hvis .ph{width:calc(50% - 7px);height:auto}
  .hphones{gap:14px}
}

/* stamp over each real business: tilted, like a rubber stamp */
.stamp{display:inline-flex;align-items:center;gap:8px;margin:0 0 16px;padding:6px 12px 6px 10px;border:2px solid var(--amber);border-radius:6px;color:var(--amber);font:800 12px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;transform:rotate(-4deg);transform-origin:left center;box-shadow:0 0 24px rgba(198,255,61,.12)}
.stamp i{width:8px;height:8px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 0 rgba(198,255,61,.6);animation:live 2s ease-out infinite}
@keyframes live{0%{box-shadow:0 0 0 0 rgba(198,255,61,.6)}70%,100%{box-shadow:0 0 0 8px rgba(198,255,61,0)}}
.case .txt>.stamp{display:inline-flex}
.proof-head .stamp{margin-bottom:12px}
@media (prefers-reduced-motion:reduce){.stamp i{animation:none}}

/* Tendy's: one line on what the system does there */
.proof-head .desc{margin-top:14px;max-width:36em;font-size:clamp(16px,1.5vw,19px);color:var(--frost)}

/* click / tap bursts (drawn by v2.js) */
#fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:60}

/* brighter: a colour glow behind every case (lime / violet in turn) + glowing edges on screenshots */
.cases{overflow-x:clip}
.case{position:relative;isolation:isolate}
.case::before{content:'';position:absolute;z-index:-1;inset:0 -12%;pointer-events:none;
  /* fade to nothing at every edge of the box, so the glow never ends in a straight line */
  -webkit-mask:linear-gradient(to bottom,transparent,#000 22%,#000 78%,transparent),linear-gradient(to right,transparent,#000 18%,#000 82%,transparent);
  -webkit-mask-composite:source-in;mask:linear-gradient(to bottom,transparent,#000 22%,#000 78%,transparent),linear-gradient(to right,transparent,#000 18%,#000 82%,transparent);mask-composite:intersect;
  background:radial-gradient(45% 60% at 72% 50%,rgba(198,255,61,.30),transparent 70%),radial-gradient(38% 50% at 95% 15%,rgba(122,77,255,.65),transparent 70%)}
.case:nth-child(even)::before{background:radial-gradient(45% 60% at 72% 50%,rgba(122,77,255,.80),transparent 70%),radial-gradient(38% 50% at 100% 90%,rgba(198,255,61,.28),transparent 70%)}
.custom,.how{background:radial-gradient(28% 44% at 74% 50%,rgba(122,77,255,.34),transparent),radial-gradient(20% 40% at 18% 55%,rgba(198,255,61,.12),transparent)}   /* ellipses stay inside the section: no hard edges */
.row img,.gallery img,.hvis .ph{box-shadow:0 0 0 1px rgba(198,255,61,.35),0 0 40px -6px rgba(198,255,61,.35),0 24px 60px -12px rgba(122,77,255,.75)}
@media (max-width:900px){.case::before{inset:0 -30%}}
/* phones: the side-scrolling rows clip vertically, so give the screenshot glow room inside them */
@media (max-width:900px){.gallery,.row{padding-block:40px 84px;margin-block:-40px -84px}}

/* phone bezel around every raw mobile screenshot (Tendy's, Kaffeehaus, A2A); the hotel screens already have one */
.gallery .ph,.row .ph{border:clamp(6px,.7vw,9px) solid #05080D;border-radius:clamp(30px,3.2vw,46px);background:#05080D;
  box-shadow:0 0 0 1.5px rgba(255,255,255,.16),0 0 0 1px rgba(198,255,61,.35),0 0 40px -6px rgba(198,255,61,.35),0 24px 60px -12px rgba(122,77,255,.75)}

@media (max-width:900px){
  .how ol{grid-template-columns:1fr;gap:26px}
  .how li{display:grid;grid-template-columns:96px 1fr;column-gap:16px;align-items:center}   /* fixed column: text lines up whatever the digit widths */
  .how li::before{grid-row:span 2;font-size:76px;margin:0}
  .how li span{margin-top:6px}
}

/* hotel case, desktop: a full-width chart; the two phone screens rise from the bottom-right, cropped to ~2/3, overlapping its corner */
@media (min-width:901px){
  .hvis{--h:clamp(330px,31vw,470px);--w:calc(var(--h) * .4745);--vis:calc(var(--h) * .66);
    position:relative;display:block;padding-bottom:calc(var(--vis) * .5)}   /* phones cover the chart's bottom-right corner */
  .hotel .hc-area{height:clamp(240px,24vw,340px)}
  .hotel .hc-note{max-width:calc(100% - var(--w) * 2 - 40px)}
  .hphones{position:absolute;z-index:2;right:-30px;bottom:0;height:calc(var(--vis) + 30px);overflow:hidden;gap:14px;
    padding:30px 30px 0;   /* room for the glow, the crop only bites at the bottom */-webkit-mask:linear-gradient(#000 74%,transparent);mask:linear-gradient(#000 74%,transparent)}
  .hphones .ph{height:var(--h);width:auto;flex:none}
}

/* monitor frame (iMac-like) around desktop screenshots: bezel, a thicker chin, graphite stand */
.mac{display:flex;flex-direction:column;align-items:center;flex:1 1 auto;min-width:0}
.mac-wide{width:100%}
.mac img.dk,.mac img.wide{display:block;width:100%!important;height:auto!important;max-width:none;object-fit:fill;
  border:solid #0A0D13;border-width:clamp(6px,.75vw,11px) clamp(6px,.75vw,11px) clamp(16px,2vw,28px);border-radius:clamp(8px,1vw,14px);background:#0A0D13}
.mac::after{content:'';flex:none;width:20%;height:clamp(20px,2.4vw,36px);background:linear-gradient(#3A4252,#232937);clip-path:polygon(16% 0,84% 0,100% 100%,0 100%)}
.mac::before{content:'';flex:none;order:3;width:30%;height:clamp(4px,.45vw,6px);border-radius:0 0 4px 4px;background:#2C3341}
@media (max-width:900px){
  .gallery .mac,.row .mac{flex:none;width:min(380px,88vw);scroll-snap-align:start}
  .row .mac-wide{width:min(560px,150vw)}
}

/* studio line under the name (a name, so the same in FR and EN) */
.who small{display:block;margin-top:2px;font:500 12px/1.2 var(--sans);color:var(--frost);letter-spacing:.01em}

/* display face: Futura C (the client's files), Jost fills the missing accented letters. Name, studio line, headings and the big numbers. */
@font-face{font-family:'Futura C';src:url(fonts/futura-book.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Futura C';src:url(fonts/futura-medium.woff2) format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Futura C';src:url(fonts/futura-demi.woff2) format('woff2');font-weight:600 700;font-display:swap}
@font-face{font-family:'Futura C';src:url(fonts/futura-extrablack.woff2) format('woff2');font-weight:800 900;font-display:swap}
:root{--display:'Futura C','Jost',var(--sans)}   /* Futura C lacks é è à ç ô û ć: those letters fall back to Jost, drawn after Futura */
.who{font:600 20px/1.05 var(--display);letter-spacing:.005em}
.who{display:inline-block}
.who small{margin-top:6px;font:500 10.5px/1 var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--frost);white-space:nowrap}   /* spacing is fitted to the name in v2.js */
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.015em}
h1{line-height:.98}
.numbers b,.facts2 b,.how li::before{font-family:var(--display)}
.numbers b{font-weight:600;letter-spacing:-.03em}
.how li::before{font-weight:600;letter-spacing:-.04em}
.stamp{font-family:var(--display);font-weight:600;letter-spacing:.16em}
.btn{font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:.01em}

/* "How we start": filled numerals, flush with the text */
.how li::before{color:var(--violet-soft)!important;-webkit-text-stroke:0!important;font-weight:800!important;letter-spacing:-.03em!important;margin-left:-.035em}   /* the 0's measured side bearing: digit ink lines up with the text below */
.how li:first-child::before{color:var(--amber)!important}

/* optical left edge for the section heading (H/C have ~.05-.08em of side bearing at this size) */
.how h2{margin-left:-.05em}

/* WhatsApp: same shape as the main button, outlined */
.btn.wa{background:transparent;color:var(--ice);box-shadow:inset 0 0 0 1.5px rgba(238,242,247,.4)}
.btn.wa:hover{background:transparent;color:var(--amber);box-shadow:inset 0 0 0 1.5px var(--amber)}
.cta{gap:14px 24px}
.contact .btn.wa{margin-top:clamp(22px,3vw,32px)}
.contact .link{display:block;width:max-content}

/* the pilot: what's included, how the price works, your data */
.pilot{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3.4vw,56px);margin-top:clamp(52px,6.5vw,90px);padding-top:clamp(24px,3vw,36px);border-top:1px solid var(--line)}
.pilot h3{font:600 13px/1 var(--display);letter-spacing:.22em;text-transform:uppercase;color:var(--frost);margin-bottom:16px}
.pilot ul{list-style:none;margin:0;padding:0}
.pilot li{padding:10px 0;border-top:1px solid var(--line);font-size:17px;line-height:1.4}
.pilot li:first-child{border-top:0;padding-top:0}
.pilot p{font-size:17px;line-height:1.5}
.pilot p+p{margin-top:12px;color:var(--frost)}
@media (max-width:900px){.pilot{grid-template-columns:1fr;gap:34px}}
/* the big step numerals belong to the three steps only, not to the pilot lists */
.how .pilot li{counter-increment:none;display:block!important}
.how .pilot li::before{content:none!important;display:none!important}

/* Tendy's results: before/after, with the period and scope written under each number */
.outcomes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(20px,3vw,48px);margin-top:clamp(28px,4vw,48px);padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line)}
.outcomes b{display:block;font:800 clamp(34px,4.6vw,64px)/1 var(--display);letter-spacing:-.03em;color:var(--amber)}
.outcomes>div>span{display:block;margin-top:10px;font-size:clamp(16px,1.5vw,19px);color:var(--ice)}
.outcomes>div>small{display:block;margin-top:6px;font-size:13px;color:var(--mist)}
.outcomes b span,.outcomes small span,.outcomes>div>span span{font:inherit;color:inherit;margin:0}
@media (max-width:700px){.outcomes{grid-template-columns:1fr}}

/* ===== money / roles / KPI (from the F&B proposal) ===== */
.money,.roles,.kpi{padding:clamp(80px,10vw,150px) 0;border-top:1px solid var(--line)}
.money .inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,80px);align-items:start}
.kicker2{font:500 12px/1 var(--display);letter-spacing:.24em;text-transform:uppercase;color:var(--amber);margin-bottom:18px}
.money h2,.roles h2,.kpi h2{font-size:clamp(34px,4.4vw,62px);line-height:1.02}
.m-list{margin-top:22px;font:500 clamp(17px,1.6vw,20px)/1.5 var(--display);color:var(--ice)}
.m-body{margin-top:16px;color:var(--frost);max-width:34em}
.calc2{border-top:1px solid var(--line);padding-top:8px}
.calc2 label{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:6px 16px;padding:18px 0;border-bottom:1px solid var(--line)}
.calc2 label span{color:var(--frost);font-size:15px}
.calc2 output{font:700 20px var(--display);color:var(--ice)}
.calc2 input[type=range]{grid-column:1/-1;width:100%;margin-top:10px;-webkit-appearance:none;appearance:none;height:3px;background:linear-gradient(90deg,var(--amber) var(--f,30%),var(--line) var(--f,30%));border-radius:0;outline:none}
.calc2 input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:4px;background:var(--amber);border:0;cursor:pointer}
.calc2 input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:4px;background:var(--amber);border:0;cursor:pointer}
.c-out{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:26px 0 8px}
.c-out b{display:block;font:800 clamp(40px,5vw,72px)/1 var(--display);letter-spacing:-.03em;color:var(--amber)}
.c-out div:last-child b{color:var(--ice)}
.c-out span{display:block;margin-top:8px;color:var(--frost);font-size:15px}
.c-note{margin-top:14px;font-size:13px;color:var(--mist)}
.r-sub{margin-top:16px;color:var(--frost);max-width:36em;font-size:clamp(16px,1.5vw,19px)}
.r-tree{list-style:none;margin:clamp(30px,4vw,52px) 0 0;padding:0}
.r-tree li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:8px 32px;align-items:baseline;padding:20px 0;border-top:1px solid var(--line)}
.r-tree li:nth-child(2) b{padding-left:clamp(0px,2.4vw,36px)}.r-tree li:nth-child(3) b{padding-left:clamp(0px,4.8vw,72px)}.r-tree li:nth-child(4) b{padding-left:clamp(0px,7.2vw,108px)}   /* only the role names step down; descriptions keep one column */
.r-tree b{font:600 clamp(20px,2vw,26px)/1.15 var(--display)}
.r-tree span{color:var(--frost)}
.r-vals{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px 28px;font-style:normal;margin-top:6px}
.r-vals i{font:700 16px var(--display);font-style:normal;color:hsl(calc((var(--v) - 70) / 30 * 80),100%,60%)}
.k-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,3.4vw,56px);margin-top:clamp(30px,4vw,52px)}
.k-grid>div{border-top:1px solid var(--line);padding-top:20px}
.k-grid h3{font:600 clamp(20px,2vw,24px)/1.15 var(--display);margin-bottom:12px}
.k-grid p{color:var(--frost)}
@media (max-width:900px){.money .inner,.k-grid{grid-template-columns:1fr}.r-tree li{grid-template-columns:1fr}.r-tree li b{padding-left:0!important}}

/* roles: one clean three-column table, same type in every row */
.r-table{margin-top:clamp(30px,4vw,52px)}
.r-head,.r-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr) minmax(0,1.3fr);gap:clamp(16px,2.6vw,40px);align-items:baseline}
.r-head{padding-bottom:12px;border-bottom:1px solid var(--line)}
.r-head span{font:500 12px/1 var(--display);letter-spacing:.22em;text-transform:uppercase;color:var(--mist)}
.r-row{padding:20px 0;border-bottom:1px solid var(--line)}
.r-row b{font:600 clamp(19px,1.8vw,23px)/1.2 var(--display);color:var(--ice)}
.r-row>span{color:var(--frost);font-size:16px;line-height:1.45}
.r-row .r-vals{grid-column:auto;margin:0;display:flex;flex-wrap:wrap;gap:4px 16px}
.r-row .r-vals i{font:700 15px var(--display)}
.r-ex{font:600 15px/1.45 var(--display);font-style:normal;color:var(--ice)}
@media (max-width:900px){.r-head{display:none}.r-head,.r-row{grid-template-columns:1fr;gap:6px}}

/* money: the loss audit */
.audit{margin-top:clamp(26px,3vw,36px);padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line)}
.audit h3{font:600 13px/1 var(--display);letter-spacing:.22em;text-transform:uppercase;color:var(--amber);margin-bottom:12px}
.audit p{color:var(--ice);font-size:17px}
.audit ul{list-style:none;margin:12px 0 0;padding:0}
.audit li{padding:9px 0;border-top:1px solid var(--line);color:var(--frost)}
.audit li:first-child{border-top:0;padding-top:4px}

/* calculator numbers scale to their column, so 3,600,000 never spills out */
.c-out>div{container-type:inline-size;min-width:0}
.c-out b{font-size:min(72px,15.5cqw)!important;white-space:nowrap}

/* calculator: the Auto switch */
.calc2{position:relative}
.calc2 .c-auto{position:absolute;right:0;top:-34px;display:inline-flex;align-items:center;gap:8px;padding:0;border:0;cursor:pointer;font:600 13px/1 var(--display);letter-spacing:.14em;text-transform:uppercase;color:var(--frost)}
.calc2 .c-auto input{width:16px;height:16px;margin:0;accent-color:var(--amber);cursor:pointer}
