/* Signify layer on top of the original Webflow build.
   Keeps the existing type (BDO Grotesk / Roboto Mono), beige and black.
   Motion lives in three places only: the first-visit intro, the scroll-driven hero, and the capabilities card fan. */
:root{
  --sf-beige:#f8f7f3; --sf-ink:#0a0a0a; --sf-muted:#6b6b6b; --sf-line:#dddddd;
  --sf-navy:#10286b; --sf-amber:#e8a33a; --sf-grey:#ecebe6;
  --sf-ease:cubic-bezier(.23,1,.32,1); --sf-ease-io:cubic-bezier(.77,0,.175,1);
}

/* logo in the nav pill */
.navbar .sf-logo{display:block;height:24px;width:auto}

/* floating nav pill, fixed from the first frame. During the intro it waits above the viewport and drops in on the reveal. */
.navbar{position:fixed!important;inset:0 0 auto!important;padding:14px 0 0!important;background:transparent!important;transition:transform 800ms var(--sf-ease)}
html.sf-intro .navbar{transform:translateY(-140%)}
.navbar .navbar_component{position:relative;max-width:min(980px,calc(100vw - 24px));margin-inline:auto;justify-content:space-between;background:rgba(12,12,12,.84);-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);border-radius:14px;padding:8px 8px 8px 18px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.09),0 24px 50px -28px rgba(0,0,0,.6)}
.navbar .navbar_logo-wrap{top:0}
.navbar_hamburger-line{background-color:#fff!important}
.sf-nav-tel{color:rgba(255,255,255,.82);font-size:14px;font-weight:500;letter-spacing:.01em;text-decoration:none;padding:0 14px;white-space:nowrap;transition:color 200ms ease}
.sf-nav-tel:hover{color:#fff}
@media (min-width:992px){
  .navbar .navbar_links-wrap{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;padding:0 0 0 8px;gap:12px}
}
@media (max-width:991px){
  .navbar .navbar_links-wrap{background:rgba(12,12,12,.92)}
  .sf-nav-tel{padding:12px 0;font-size:16px}
}

/* capabilities dropdown inside the nav, the container grows to hold it */
.sf-drop{position:absolute;left:0;right:0;top:100%;display:grid;grid-template-rows:0fr;transition:grid-template-rows 450ms var(--sf-ease-io);pointer-events:none}
.sf-drop>div{overflow:hidden}
.navbar_component.sf-open .sf-drop{grid-template-rows:1fr;pointer-events:auto}
.sf-drop-inner{margin-top:8px;background:var(--sf-beige);border-radius:14px;box-shadow:0 0 0 1px rgba(10,10,10,.07),0 24px 60px -24px rgba(10,10,10,.35);display:grid;grid-template-columns:1fr 1.1fr;gap:10px;padding:10px;opacity:0;transform:translateY(-6px);transition:opacity 250ms ease,transform 400ms var(--sf-ease)}
.navbar_component.sf-open .sf-drop-inner{opacity:1;transform:none;transition-delay:80ms}
.sf-drop-list{display:flex;flex-direction:column;gap:2px;padding:6px}
.sf-drop-list a{display:block;padding:12px 14px;border-radius:10px;color:var(--sf-ink);text-decoration:none;transition:background-color 200ms ease}
.sf-drop-list a strong{display:block;font-weight:500;font-size:17px;letter-spacing:-.02em}
.sf-drop-list a span{display:block;font-size:13.5px;color:var(--sf-muted);margin-top:2px;line-height:1.35}
.sf-drop-list a.on{background:rgba(10,10,10,.05)}
.sf-drop-media{position:relative;border-radius:10px;overflow:hidden;min-height:230px;background:#e9e7e1}
.sf-drop-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity 450ms ease,transform 900ms var(--sf-ease)}
.sf-drop-media img.on{opacity:1;transform:none}
@media (max-width:991px){.sf-drop{display:none}}

/* hero film: a frame sequence scrubbed by scroll on a canvas, pinned for three scenes. Nothing but the picture at first; the headlines rise over it. */
.sf-hero{position:relative;background:var(--sf-ink);color:#fff}
.sf-hero-pin{position:relative;height:100vh;height:100svh;overflow:hidden}
.sf-hero-stage{position:absolute;inset:0}
.sf-hero-media{position:absolute;inset:0;transition:transform 1800ms var(--sf-ease)}
html.sf-intro .sf-hero-media{transform:scale(1.08)}
.sf-hero-poster,.sf-film{position:absolute;inset:0;width:100%;height:100%}
.sf-hero-poster{object-fit:cover;object-position:50% 48%}
.sf-film{opacity:0;transition:opacity 400ms ease}
.sf-film.on{opacity:1}
.sf-hero-line .sf-w{display:inline-block;white-space:nowrap}
.sf-hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,.42) 0%,rgba(10,10,10,0) 28%,rgba(10,10,10,0) 60%,rgba(10,10,10,.55) 100%);pointer-events:none}
.sf-hero-dark{position:absolute;inset:0;background:var(--sf-ink);opacity:0;pointer-events:none}
.sf-hero-grid{position:absolute;inset:0;opacity:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.08) 1px,transparent 1px);background-size:72px 72px;-webkit-mask-image:radial-gradient(ellipse at 50% 55%,#000 25%,transparent 72%);mask-image:radial-gradient(ellipse at 50% 55%,#000 25%,transparent 72%)}
.sf-hero-copy{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:0 clamp(16px,4vw,56px)}
.sf-hero-line{grid-area:1/1;margin:0;max-width:16ch;font-size:clamp(38px,6.2vw,108px);line-height:1;letter-spacing:-.035em;font-weight:500;color:#fff;text-shadow:0 2px 40px rgba(0,0,0,.35);will-change:transform,opacity}
html.sf-js .sf-hero-line{opacity:0}
.sf-hero-title{font:inherit;letter-spacing:inherit;line-height:inherit;margin:0;color:inherit;text-shadow:inherit}
.sf-l3{display:grid;justify-items:center;gap:clamp(22px,3vw,40px)}
.sf-hero-sub{margin:0;font-family:"Roboto mono",monospace;font-size:clamp(11px,1vw,14px);letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.78);text-shadow:none}
.sf-hero-cta{display:inline-flex;align-items:center;height:56px;padding:0 30px;border-radius:999px;background:#fff;color:var(--sf-ink);font-size:17px;font-weight:500;letter-spacing:-.01em;text-decoration:none;text-shadow:none;transition:transform 160ms var(--sf-ease),background-color 200ms ease}
.sf-hero-cta:hover{background:#f1efe9}
.sf-hero-cta:active{transform:scale(.97)}
/* static hero: reduced motion, or GSAP missing */
.sf-hero.sf-static .sf-hero-pin{height:auto;min-height:100svh}
.sf-hero.sf-static .sf-film{display:none}
.sf-hero.sf-static .sf-hero-copy{position:relative;min-height:100svh;padding-top:140px;padding-bottom:96px;gap:48px;align-content:center}
.sf-hero.sf-static .sf-hero-line{grid-area:auto;opacity:1!important}
.sf-hero.sf-static .sf-hero-dark{opacity:.55}

/* first-visit intro: light grey, faint panel outlines drifting, the mark pops in and the wordmark writes itself out, then it wipes up into the hero.
   html.sf-intro is set by an inline head script so the cover is there before first paint. */
html.sf-intro{overflow:hidden}
html.sf-intro::after{content:"";position:fixed;inset:0;z-index:10000;background:var(--sf-grey)}
.sf-intro-wrap{position:fixed;inset:0;z-index:10001;display:grid;place-items:center;background:var(--sf-grey);overflow:hidden;cursor:pointer;-webkit-user-select:none;user-select:none;clip-path:inset(0 0 0 0);-webkit-clip-path:inset(0 0 0 0);transition:clip-path 900ms var(--sf-ease-io),-webkit-clip-path 900ms var(--sf-ease-io)}
.sf-intro-wrap.sf-intro-out{clip-path:inset(0 0 100% 0);-webkit-clip-path:inset(0 0 100% 0);pointer-events:none}
.sf-intro-bg{position:absolute;inset:-10%;width:120%;height:120%;pointer-events:none}
.sf-intro-bg rect{fill:none;stroke:rgba(10,10,10,.1);stroke-width:1;vector-effect:non-scaling-stroke}
.sf-intro-bg g{animation:sf-drift 7s ease-in-out infinite alternate}
.sf-intro-bg g:nth-child(2){animation-duration:9s;animation-direction:alternate-reverse}
.sf-intro-bg g:nth-child(3){animation-duration:11s}
@keyframes sf-drift{to{transform:translate(14px,-10px)}}
.sf-intro-mark{position:relative;transition:transform 700ms var(--sf-ease-io),opacity 500ms ease}
.sf-intro-out .sf-intro-mark{transform:translateY(-40px);opacity:0}
/* one lockup image: clipped to the mark at first (its left third), then the clip slides open and the wordmark writes out */
.sf-intro-mark img{display:block;width:clamp(200px,22vw,290px);height:auto;opacity:0;transform:scale(.6);clip-path:inset(0 67% 0 0);-webkit-clip-path:inset(0 67% 0 0);transition:opacity 520ms var(--sf-ease),transform 520ms var(--sf-ease)}
.sf-intro-in .sf-intro-mark img{opacity:1;transform:scale(1)}
.sf-intro-go .sf-intro-mark img{clip-path:inset(0 0 0 0);-webkit-clip-path:inset(0 0 0 0);transition:opacity 520ms var(--sf-ease),transform 520ms var(--sf-ease),clip-path 700ms var(--sf-ease),-webkit-clip-path 700ms var(--sf-ease)}

/* card unfold: capabilities fan out on scroll */
.sf-unfold{position:relative;background:var(--sf-beige)}
.sf-unfold-pin{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:96px 0 64px;overflow:hidden}
.sf-unfold-stage{position:relative;height:min(62vh,560px);margin-top:48px}
.sf-card{position:absolute;top:0;left:50%;width:min(30vw,400px);height:100%;margin-left:calc(min(30vw,400px) / -2);border-radius:14px;overflow:hidden;color:#fff;text-decoration:none;transform-origin:50% 120%;box-shadow:0 30px 60px -30px rgba(10,10,10,.45);will-change:transform;isolation:isolate}
.sf-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 900ms var(--sf-ease)}
.sf-card::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(10,10,10,.82),rgba(10,10,10,.05) 55%)}
.sf-card .sf-n{position:absolute;top:18px;left:20px;font-family:"Roboto mono",monospace;font-size:13px;letter-spacing:.06em;background:rgba(248,247,243,.92);color:var(--sf-ink);padding:5px 10px;border-radius:999px}
.sf-card .sf-body{position:absolute;left:0;right:0;bottom:0;padding:24px}
.sf-card h3{font-size:clamp(28px,2.6vw,40px);line-height:1;letter-spacing:-.03em;font-weight:500;margin:0}
.sf-card p{margin:10px 0 0;font-size:15px;line-height:1.4;color:rgba(255,255,255,.82);max-width:30ch}
.sf-card .sf-go{display:inline-flex;margin-top:16px;font-size:14px;border-bottom:1px solid rgba(255,255,255,.5);padding-bottom:2px}
@media (hover:hover) and (pointer:fine){.sf-card:hover img{transform:scale(1.05)}}
@media (max-width:767px){
  .sf-unfold-pin{min-height:auto;padding:72px 0}
  .sf-unfold-stage{height:auto;display:grid;gap:14px}
  .sf-card{position:relative;left:auto;margin:0;width:100%;height:420px;transform:none!important}
}

/* closing band after capabilities: the page ends on the phone number, not a dashed rule */
.sf-close{background:var(--sf-beige);padding:clamp(72px,12vh,140px) 0}
.sf-close-inner{border-top:1px solid var(--sf-line);padding-top:clamp(40px,6vh,72px);display:grid;gap:32px}
.sf-close-title{font-size:clamp(40px,5.4vw,84px);line-height:1;letter-spacing:-.03em;font-weight:500;max-width:14ch;margin:0}
.sf-close-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.sf-close-btn,.sf-close-link{display:inline-flex;align-items:center;height:56px;padding:0 28px;border-radius:999px;font-size:17px;text-decoration:none;transition:transform 160ms var(--sf-ease),background-color 200ms ease}
.sf-close-btn{background:var(--sf-ink);color:#fff}
.sf-close-link{color:var(--sf-ink);box-shadow:inset 0 0 0 1px rgba(10,10,10,.25)}
.sf-close-btn:active,.sf-close-link:active{transform:scale(.97)}
@media (hover:hover) and (pointer:fine){.sf-close-btn:hover{background:#262626}.sf-close-link:hover{background:rgba(10,10,10,.05)}}
.sf-drop-list a:focus-visible,.sf-close-btn:focus-visible,.sf-close-link:focus-visible,.sf-hero-cta:focus-visible,.sf-nav-tel:focus-visible{outline:2px solid var(--sf-amber);outline-offset:3px}

/* shared motifs, one implementation for every section */
/* seam tab: a section's own colour tabs down into the one below it. Set --notch to the section's background. */
.sf-notch{position:relative;z-index:2}
.sf-notch::after{content:"";position:absolute;left:50%;bottom:-48px;width:min(62vw,960px);height:48px;transform:translateX(-50%);background:var(--notch,var(--sf-ink));clip-path:polygon(0 0,100% 0,calc(100% - 44px) 100%,44px 100%);pointer-events:none}
@media (max-width:767px){.sf-notch::after{bottom:-28px;height:28px;width:72vw;clip-path:polygon(0 0,100% 0,calc(100% - 24px) 100%,24px 100%)}}
/* faint 1px grid behind logo walls and the like */
.sf-gridbg{background-image:linear-gradient(var(--sf-line) 1px,transparent 1px),linear-gradient(90deg,var(--sf-line) 1px,transparent 1px);background-size:var(--grid,140px) var(--grid,140px);background-position:center top}

/* small fixes */
.buy-template{display:none!important}
.w-dyn-empty{display:none!important}

@media (prefers-reduced-motion:reduce){
  .navbar,.sf-hero-media,.sf-film,.sf-drop,.sf-drop-inner{transition:none}
  .sf-intro-bg g{animation:none}
}
