:root{
  --mist:#EEF2F3;
  --slate:#1C2A33;
  --atlantic:#0C2E4E;
  --rain:#4BA3C8;
  --stone:#5E6D75;
  --line:#CBD4D8;
  --white:#FFFFFF;
  --wide:"wdth" 118;
  --gutter:clamp(16px,4vw,56px);
  --max:1240px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--mist);color:var(--slate);
  font-family:"Archivo",system-ui,sans-serif;font-size:1.0625rem;line-height:1.6;
  font-variation-settings:"wdth" 100;
}
img{display:block;max-width:100%}
a{color:inherit}
:focus-visible{outline:3px solid var(--rain);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--white);padding:8px 14px}
.skip:focus{left:8px}

h1,h2,h3{font-variation-settings:var(--wide);font-weight:680;letter-spacing:-.015em;line-height:1.02;margin:0}
h2{font-size:clamp(2rem,4.6vw,3.6rem)}
h3{font-size:clamp(1.5rem,2.4vw,2rem)}

/* buttons */
.btn{
  display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:0 26px;
  background:var(--atlantic);color:var(--white);text-decoration:none;font-weight:600;
  border-radius:999px;border:2px solid var(--atlantic);
  font-variation-settings:"wdth" 108;transition:background .2s,color .2s,border-color .2s;
}
.btn:hover{background:#123d66;border-color:#123d66}
.btn-small{min-height:42px;padding:0 18px;font-size:.95rem}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.75);color:var(--white)}
.btn-ghost:hover{background:rgba(255,255,255,.12);border-color:var(--white)}
.btn-light{background:var(--white);color:var(--atlantic);border-color:var(--white)}
.btn-light:hover{background:var(--mist);border-color:var(--mist)}
.btn-ghost-light{background:transparent;color:var(--white);border-color:rgba(255,255,255,.6)}
.btn-ghost-light:hover{border-color:var(--white);background:rgba(255,255,255,.08)}
.link{color:var(--atlantic);font-weight:600;text-decoration-thickness:2px;text-underline-offset:5px;text-decoration-color:var(--rain)}

/* header */
.site-header{
  position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;gap:28px;
  padding:16px var(--gutter);color:var(--white);transition:background .3s,color .3s,box-shadow .3s;
}
.site-header.is-solid{background:rgba(238,242,243,.94);color:var(--slate);box-shadow:0 1px 0 var(--line);backdrop-filter:blur(8px)}
.site-header .btn-small{margin-left:auto}
.site-header:not(.is-solid) .btn-small{background:var(--white);color:var(--atlantic);border-color:var(--white)}
.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none}
.brand-mark{width:34px;height:24px}
.brand-name{font-variation-settings:"wdth" 122;font-weight:720;font-size:1.12rem;letter-spacing:-.01em}
.nav{display:flex;gap:26px}
.nav a{text-decoration:none;font-weight:500;opacity:.9}
.nav a:hover{opacity:1;text-decoration:underline;text-underline-offset:6px;text-decoration-color:var(--rain)}

/* hero */
.hero{position:relative;height:100vh;height:100svh;background:#cfd8dc}
.hero-stage{position:relative;height:100vh;height:100svh;overflow:hidden}
.hero-poster,.hero-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-canvas{opacity:0;transition:opacity .4s}
.hero.is-ready .hero-canvas{opacity:1}
.hero-shade{
  position:absolute;inset:0;pointer-events:none;opacity:0;
  background:linear-gradient(90deg,rgba(8,26,44,.78) 0%,rgba(8,26,44,.45) 38%,rgba(8,26,44,0) 66%),
             linear-gradient(0deg,rgba(8,26,44,.55) 0%,rgba(8,26,44,0) 40%);
}
.site-header::before{
  content:"";position:absolute;inset:0 0 -40px 0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,26,44,.45),rgba(8,26,44,0));transition:opacity .3s;
}
.site-header.is-solid::before{opacity:0}
.hero-load{position:absolute;left:0;right:0;top:0;height:3px;z-index:3}
.hero-load span{display:block;height:100%;width:0;background:var(--rain);transition:width .2s,opacity .6s}
.hero-hint{
  position:absolute;left:50%;bottom:34px;transform:translateX(-50%);margin:0;color:var(--white);
  font-weight:500;font-size:.98rem;text-shadow:0 1px 12px rgba(0,0,0,.45);display:flex;flex-direction:column;align-items:center;gap:10px;
}
.hero-hint::after{content:"";width:2px;height:34px;background:linear-gradient(var(--white),transparent);animation:drip 1.8s ease-in-out infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

.stages{
  position:absolute;right:var(--gutter);top:50%;transform:translateY(-50%);margin:0;padding:0;list-style:none;
  counter-reset:stage;display:flex;flex-direction:column;gap:22px;color:var(--white);
}
.stages li{
  counter-increment:stage;position:relative;padding-right:26px;text-align:right;font-weight:500;font-size:.95rem;
  opacity:.5;transition:opacity .35s;text-shadow:0 1px 10px rgba(0,0,0,.5);
}
.stages li::before{content:counter(stage);font-variation-settings:var(--wide);font-weight:700;margin-right:10px;color:var(--rain)}
.stages li::after{
  content:"";position:absolute;right:0;top:50%;width:10px;height:10px;margin-top:-5px;border-radius:50%;
  border:2px solid var(--white);background:transparent;transition:background .35s,transform .35s;
}
.stages li.is-done{opacity:.8}
.stages li.is-done::after{background:var(--white)}
.stages li.is-active{opacity:1}
.stages li.is-active::after{background:var(--rain);border-color:var(--rain);transform:scale(1.35)}

.hero-copy{position:absolute;left:var(--gutter);bottom:clamp(40px,10vh,110px);max-width:min(920px,88vw);color:var(--white)}
.hero-title{font-size:clamp(2.5rem,6.2vw,5.8rem);font-variation-settings:"wdth" 122;font-weight:720;letter-spacing:-.025em;line-height:.95}
.hero-title .line{display:block}
.hero-sub{font-size:clamp(1.05rem,1.5vw,1.25rem);max-width:34em;margin:22px 0 30px;color:rgba(255,255,255,.92)}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.js .hero-copy .line,.js .hero-sub,.js .hero-actions{opacity:0}

/* services */
.services{background:var(--mist)}
.services-pin{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:110px 0 60px;overflow:hidden}
.services-head{padding:0 var(--gutter);max-width:var(--max);width:100%;margin:0 auto 36px;display:grid;grid-template-columns:auto 1fr;gap:12px 40px;align-items:end}
.services-head p{margin:0;max-width:32em;color:var(--stone)}
.track-progress{grid-column:1/-1;height:2px;background:var(--line);margin-top:14px}
.track-progress span{display:block;height:100%;width:0;background:var(--atlantic)}
.services-track{display:flex;gap:28px;padding:0 var(--gutter);width:max-content}
.service{
  width:min(1040px,84vw);display:grid;grid-template-columns:1.25fr 1fr;background:var(--white);
  border-radius:6px;overflow:hidden;box-shadow:0 1px 0 var(--line);
}
.service img{width:100%;height:100%;min-height:440px;max-height:62vh;object-fit:cover}
.service-body{padding:clamp(24px,3.4vw,48px);display:flex;flex-direction:column;gap:14px}
.service-body p{margin:0;color:var(--stone)}
.service-body ul{margin:4px 0 8px;padding:0;list-style:none;border-top:1px solid var(--line)}
.service-body li{padding:10px 0;border-bottom:1px solid var(--line)}
.service-body .link{margin-top:auto}

/* gallery */
.work{padding:clamp(80px,12vh,140px) var(--gutter);max-width:calc(var(--max) + 2*var(--gutter));margin:0 auto}
.work-head{display:grid;grid-template-columns:auto 1fr;gap:12px 40px;align-items:end;margin-bottom:32px}
.work-head p{margin:0;max-width:34em;color:var(--stone)}
.compare{position:relative;aspect-ratio:16/9;border-radius:6px;overflow:hidden;background:#cfd8dc;user-select:none;--pos:50%}
.compare img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.compare-after-wrap{position:absolute;inset:0;clip-path:inset(0 0 0 var(--pos))}
.compare-handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;margin-left:-1px;background:var(--white);pointer-events:none}
.compare-handle span{
  position:absolute;top:50%;left:50%;width:46px;height:46px;margin:-23px 0 0 -23px;border-radius:50%;
  background:var(--white);box-shadow:0 4px 18px rgba(0,0,0,.25);
}
.compare-handle span::before,.compare-handle span::after{
  content:"";position:absolute;top:50%;width:0;height:0;margin-top:-6px;border:6px solid transparent;
}
.compare-handle span::before{left:9px;border-right-color:var(--atlantic)}
.compare-handle span::after{right:9px;border-left-color:var(--atlantic)}
.compare-tag{position:absolute;bottom:16px;padding:6px 12px;border-radius:999px;background:rgba(12,46,78,.82);color:var(--white);font-size:.85rem;font-weight:600;pointer-events:none}
.compare-tag-before{left:16px}
.compare-tag-after{right:16px}
.compare-range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.compare-range:focus-visible + *{outline:none}
.compare:has(.compare-range:focus-visible){outline:3px solid var(--rain);outline-offset:4px}
.compare-views{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.compare-views button{
  font:inherit;font-weight:600;min-height:44px;padding:0 20px;border-radius:999px;cursor:pointer;
  border:2px solid var(--line);background:transparent;color:var(--slate);
}
.compare-views button[aria-selected="true"]{border-color:var(--atlantic);background:var(--atlantic);color:var(--white)}

/* cta */
.cta{background:var(--atlantic);color:var(--white)}
.cta-inner{max-width:var(--max);margin:0 auto;padding:clamp(80px,14vh,150px) var(--gutter)}
.cta h2{font-size:clamp(2.4rem,6.4vw,5.4rem);font-variation-settings:"wdth" 122;max-width:12em}
.cta-inner>p{max-width:34em;font-size:1.15rem;color:rgba(255,255,255,.86);margin:22px 0 32px}
.cta-actions{display:flex;flex-wrap:wrap;gap:12px}
.cta .cta-areas{margin:56px 0 0;padding-top:24px;border-top:1px solid rgba(255,255,255,.2);font-size:1rem;color:rgba(255,255,255,.72);max-width:44em}

/* footer */
.site-footer{background:var(--slate);color:#D5DDE1;padding:64px var(--gutter) 28px}
.footer-grid{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px}
.footer-grid h3{font-size:1rem;font-variation-settings:"wdth" 110;font-weight:650;color:var(--white);margin-bottom:14px;letter-spacing:0}
.footer-grid ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.footer-grid a{text-decoration:none}
.footer-grid a:hover{text-decoration:underline;text-underline-offset:4px}
.brand-footer{color:var(--white)}
.footer-note{max-width:26em;margin:16px 0 0;color:#AEBBC2}
.footer-base{max-width:var(--max);margin:48px auto 0;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:.88rem;color:#93A2AA}
.footer-base p{margin:0}

/* responsive */
@media (max-width:860px){
  .nav{display:none}
  .stages{top:auto;bottom:auto;top:96px;transform:none;gap:12px}
  .stages li{font-size:.82rem;padding-right:20px}
  .services-pin{padding-top:90px}
  .services-head,.work-head{grid-template-columns:1fr}
  .services-track{flex-direction:column;width:auto}
  .service{width:100%;grid-template-columns:1fr}
  .service img{min-height:220px;max-height:none;aspect-ratio:16/10;height:auto}
  .track-progress{display:none}
  .footer-grid{grid-template-columns:1fr 1fr}
  .footer-grid>div:first-child{grid-column:1/-1}
  .hero-shade{background:linear-gradient(0deg,rgba(8,26,44,.86) 0%,rgba(8,26,44,.5) 45%,rgba(8,26,44,0) 75%)}
}
@media (max-width:480px){
  .site-header .btn-small{padding:0 14px}
  .brand-name{font-size:1rem}
  .hero-actions .btn{flex:1 1 100%}
}
@media (prefers-reduced-motion:reduce){
  .hero-hint::after{animation:none}
  .js .hero-copy .line,.js .hero-sub,.js .hero-actions{opacity:1}
  .hero-shade{opacity:1}
  .hero-hint,.stages,.hero-load{display:none}
}
