/* SWANALYTICA — shared styles for all pages */
:root{color-scheme:light;--paper:#f2f2ef;--white:#fafaf8;--ink:#171b19;--body:#3a413d;--quiet:#515853;--pad:clamp(1.25rem,4.4vw,5rem);--gutter:clamp(1.2rem,3vw,3.6rem);--statement:clamp(1.4rem,2.1vw,2.35rem);--lede:clamp(1.6rem,3vw,3.5rem);--display:clamp(3.6rem,7.6vw,9rem)}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid currentColor;outline-offset:5px}
img{display:block;max-width:100%}
h1,h2,h3,p{margin-top:0}
.wrap{max-width:1600px;margin-inline:auto;padding-inline:var(--pad)}
.label{font-size:.78rem;line-height:1.4;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.arrow{display:inline-block}
/* One 4-column grid for every page */
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--gutter)}
.display{font-weight:700;font-size:var(--display);letter-spacing:-.055em;line-height:.94;margin:0}
.nav a,.mail-link,.hero-foot a,.footer-inner a,.q-cta,.home-link,.doc a{transition:opacity .2s ease}
.nav a:hover,.mail-link:hover,.hero-foot a:hover,.footer-inner a:hover,.q-cta:hover,.home-link:hover,.doc a:hover{opacity:.7}

/* Masthead */
.masthead{height:86px;align-items:center}
.home-mark{grid-column:1;grid-row:1;width:35px;height:37px;display:grid;place-items:center}
.home-mark img{height:100%;width:auto}
.masthead .descriptor{grid-column:3;grid-row:1;white-space:nowrap}
.nav{grid-column:2/-1;grid-row:1;justify-self:end;display:flex;gap:clamp(1.3rem,2.6vw,3rem)}

/* Section heads: label on column 1, heading from column 2 */
.section-head{align-items:start}
.section-head>.label{margin:.6rem 0 0}
.section-head>.display{grid-column:2/-1;max-width:950px}

/* Hero */
.hero{min-height:calc(100svh - 86px);display:flex;flex-direction:column;padding-top:clamp(.75rem,2vh,1.5rem)}
.hero-grid{padding-bottom:clamp(2.25rem,4vw,4.5rem)}
/* Lockup width W: two columns, or less when needed to fit the hero in the viewport (lockup height = 1.3628 W) */
.lockup{grid-column:1/span 2;width:min(100%,max(18rem,calc((100svh - 15.5rem)/1.3628)))}
/* The artwork's visible S starts 14.08% into its square: widen and shift it so the ink spans exactly W */
.square-stage{width:116.393%;margin-left:-16.393%;max-width:none;aspect-ratio:1;transform:translate3d(0,var(--art-shift,0px),0);will-change:transform;animation:art-in .9s ease both}
.square-art{width:100%;height:100%;object-fit:contain}
.hero-aside{grid-column:3/span 2;container-type:inline-size;display:flex;flex-direction:column;justify-content:space-between;gap:2rem;min-width:0}
.hero-aside .number{border-top:1px solid var(--ink);padding-top:1rem}
/* Statement size: its cap height equals the wordmark's (0.0979 W / 0.714 = 0.1371 W, W = lockup width),
   capped at 10.4cqi so narrower columns stay within six lines.
   margin-bottom puts the last line's baseline on the wordmark baseline. */
.hero-description{font-weight:400;font-size:var(--lede);font-size:min(calc(.1371 * min(100cqi, max(18rem, (100svh - 15.5rem) / 1.3628))), 10.4cqi);line-height:1.12;letter-spacing:-.035em;text-wrap:balance;margin:0 0 -.19em;animation:rise-in .75s .18s both}
.wordmark{margin:10% 0 0;animation:rise-in .7s .12s both}
.wordmark img{width:100%;height:auto}
.hero-foot{margin-top:auto;border-top:1px solid var(--ink);display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:62px}

/* Expertise */
.expertise{background:var(--white);padding-block:clamp(6rem,10vw,11rem)}
.capabilities{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gutter);margin-top:clamp(5rem,8vw,8rem)}
.capability{border-top:2px solid var(--ink);padding-top:1.15rem}
.capability h3{font-size:clamp(1.5rem,2vw,2.2rem);font-weight:600;letter-spacing:-.035em;line-height:1.13;margin:0 0 1rem}
.capability p{font-size:1rem;line-height:1.55;color:var(--body);margin:0;max-width:17rem}

/* Questions */
.questions{padding-block:clamp(6rem,10vw,11rem)}
.q-list{list-style:none;margin:clamp(5rem,8vw,8rem) 0 0;padding:0}
.q-item{border-top:1px solid var(--ink);padding-block:clamp(1.1rem,1.6vw,1.6rem) clamp(1.8rem,3vw,3rem);align-items:start}
.q-topic{grid-column:1;color:var(--quiet);margin:.5rem 0 0}
.q-text{grid-column:2/-1;font-size:var(--statement);font-weight:400;line-height:1.2;letter-spacing:-.03em;max-width:24em;text-wrap:balance;margin:0}
.q-foot{border-top:1px solid var(--ink);padding-top:1.4rem}
.q-cta{grid-column:2/-1;justify-self:start}

/* Contact */
.contact{background:var(--white);padding-block:clamp(6rem,11vw,12rem) clamp(5rem,8vw,8rem)}
.contact-actions{grid-column:2/-1;display:flex;flex-wrap:wrap;align-items:baseline;gap:1rem 2rem;margin-top:clamp(3rem,6vw,6rem)}
.mail-link{display:inline-block;font-size:clamp(1.45rem,3vw,3rem);font-weight:600;letter-spacing:-.03em;line-height:1.2;border-bottom:2px solid var(--ink);padding-bottom:.3em}
.mail-link .arrow{font-size:.55em;vertical-align:.45em;margin-left:.2em;font-weight:400}
.copy-btn{font:inherit;color:var(--quiet);background:none;border:0;padding:.35rem 0;cursor:pointer;transition:color .2s ease}
.copy-btn:hover{color:var(--ink)}

/* Privacy */
.page{padding-block:clamp(4rem,8vw,8rem) clamp(5rem,8vw,8rem);align-items:start}
.page>.label{margin:.6rem 0 0}
.page>.display{grid-column:2/-1;margin-bottom:clamp(3rem,5vw,5rem)}
.doc{grid-column:2/span 2}
.doc .lead{font-size:clamp(1.15rem,1.45vw,1.4rem);line-height:1.45;letter-spacing:-.015em;color:var(--ink);margin:0 0 clamp(3rem,5vw,4.5rem)}
.doc section{border-top:1px solid var(--ink);padding-top:1.1rem;margin-bottom:clamp(2.5rem,4vw,3.5rem)}
.doc h2{font-size:clamp(1.35rem,1.8vw,1.75rem);font-weight:600;letter-spacing:-.035em;line-height:1.2;margin:0 0 1rem}
.doc p{font-size:1rem;line-height:1.6;color:var(--body);margin:0 0 .9rem}
.doc a{border-bottom:1px solid currentColor}
.facts{display:grid;grid-template-columns:max-content 1fr;gap:.35rem 1.5rem;margin:0 0 .9rem}
.facts dt{color:var(--quiet)}
.facts dd{margin:0;font-variant-numeric:tabular-nums}
.updated{color:var(--quiet)}

/* 404 */
.page-404{min-height:100svh;display:flex;flex-direction:column}
.page-404>*{width:100%}
.page-404 main{flex:1;align-content:center;padding-block:clamp(3rem,8vw,7rem)}
.error>.label{margin:.6rem 0 0;color:var(--quiet)}
.error>.display{grid-column:2/-1;margin-bottom:clamp(1.5rem,3vw,2.5rem)}
.error-text{grid-column:2/span 2;font-size:clamp(1.15rem,1.6vw,1.5rem);line-height:1.35;letter-spacing:-.02em;max-width:30rem;margin:0 0 clamp(2.5rem,5vw,4rem)}
.home-link{grid-column:2/span 2;justify-self:start;font-size:clamp(1.3rem,2.4vw,2.4rem);font-weight:600;letter-spacing:-.03em;line-height:1.2;border-bottom:2px solid var(--ink);padding-bottom:.3em}

/* Footer (same on every page) */
.site-footer{background:var(--paper)}
.footer-inner{border-top:1px solid var(--ink);padding-block:1.5rem 2rem;display:flex;justify-content:space-between;gap:1rem;color:var(--quiet)}
.footer-meta{display:flex;gap:1.5rem}
.footer-inner [aria-current="page"]{color:var(--ink)}

/* Motion */
.motion-ready .reveal{opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
.motion-ready .reveal.in-view{opacity:1;transform:translateY(0)}
.motion-ready .capability:nth-child(2){transition-delay:.08s}
.motion-ready .capability:nth-child(3){transition-delay:.16s}
.motion-ready .capability:nth-child(4){transition-delay:.24s}
@keyframes art-in{from{opacity:0}to{opacity:1}}
@keyframes rise-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* Breakpoints */
@media(max-width:1220px){.masthead .descriptor{display:none}}
@media(max-width:1050px){
  .capabilities{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:3.7rem}
  .section-head,.contact-grid,.page,.error{grid-template-columns:minmax(0,1fr);row-gap:1.5rem}
  .section-head>.display,.contact-actions,.page>.display,.doc,.error>.display,.error-text,.home-link{grid-column:1}
  .contact-actions{margin-top:1.5rem}
  .page>.display,.error>.display{margin-bottom:0}
  .error-text{margin-bottom:1rem}
}
@media(max-width:700px){
  :root{--display:clamp(2.6rem,11vw,5rem)}
  .masthead{height:68px}
  .home-mark{width:29px;height:31px}
  .hero{padding-top:.7rem}
  .hero-grid{grid-template-columns:minmax(0,1fr);row-gap:2rem;padding-bottom:2.8rem}
  .lockup{grid-column:1;width:min(100%,62svh)}
  .hero-aside{grid-column:1;gap:1.4rem}
  .hero-aside .number{display:none}
  .hero-description{font-size:clamp(1.4rem,6.4vw,2rem);margin-bottom:0}
  .hero-foot{min-height:55px}
  .capabilities{grid-template-columns:1fr;gap:3.2rem}
  .capability h3{font-size:1.85rem}
  .capability h3 br{display:none}
  .q-item,.q-foot{grid-template-columns:minmax(0,1fr);row-gap:.7rem}
  .q-topic{margin:0}
  .q-text{grid-column:1;font-size:clamp(1.3rem,5.6vw,1.6rem)}
  .q-cta{grid-column:1}
  .facts{grid-template-columns:1fr;gap:0}
  .facts dd{margin-bottom:.6rem}
  .footer-inner{flex-direction:column;gap:.55rem}
}
@media(max-width:1050px),(orientation:portrait){.hero{min-height:0}.hero-foot{margin-top:0}}
@media(max-width:380px){.nav{gap:1rem}.nav a{letter-spacing:.07em}}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .square-stage,.wordmark,.hero-description{animation:none}
  .square-stage{transform:none!important;will-change:auto}
  .nav a,.mail-link,.hero-foot a,.footer-inner a,.q-cta,.home-link,.doc a,.copy-btn{transition:none}
}
