:root{
  --paper:#ffffff; --ink:#16191d; --mute:#5b6168; --line:#e1e3e6; --wash:#f2f3f4;
  --max:1360px; --pad:clamp(20px,4vw,56px);
  --f:"Schibsted Grotesk",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:400 18px/1.55 var(--f);text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid #2f6fed;outline-offset:3px;border-radius:2px}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.skip{position:absolute;left:-999px}.skip:focus{left:12px;top:12px;background:#fff;padding:8px 12px;z-index:9}

/* header */
.site-head{border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:20}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:68px}
.brand{font-weight:700;font-size:20px;letter-spacing:-.01em;text-decoration:none;white-space:nowrap}
.nav{display:flex;gap:clamp(14px,2.4vw,32px);font-size:17px}
.nav a{text-decoration:none;padding:6px 0}
.nav a[aria-current=page],.nav a:hover{text-decoration:underline}

/* type */
h1,h2,h3{font-weight:700;letter-spacing:-.02em;line-height:1.05;margin:0}
.h-xl{font-size:clamp(48px,8.4vw,128px);letter-spacing:-.035em;line-height:.95}
.h-l{font-size:clamp(36px,5vw,68px);letter-spacing:-.03em}
.h-m{font-size:clamp(26px,3vw,38px)}
.h-s{font-size:22px;letter-spacing:-.01em;line-height:1.2}
.lead{font-size:clamp(20px,2vw,25px);line-height:1.45;max-width:36em;margin:0}
p{margin:0 0 1em;max-width:40em}
.mute{color:var(--mute)}
.small{font-size:16px}

/* home hero */
.hero{padding:clamp(48px,9vw,120px) 0 40px}
.hero .lead{margin-top:28px}
.hero-meta{display:flex;flex-wrap:wrap;gap:12px 28px;margin-top:28px;font-size:18px}
.hero-meta .status{color:var(--mute)}
.links{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.btn{display:inline-block;padding:13px 20px;border:1.5px solid var(--ink);border-radius:999px;text-decoration:none;font-weight:500;font-size:17px}
.btn.solid{background:var(--ink);color:#fff}
.btn:hover{background:var(--ink);color:#fff}

/* cycler */
.cycler{margin:24px 0 0}
.cy-stage{position:relative;aspect-ratio:16/9;background:#111;overflow:hidden;border-radius:6px;cursor:pointer}
.cy-stage img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s ease}
.cy-stage img.on{opacity:1}
.cy-bar{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-top:16px}
.cy-bar p{margin:0;max-width:48em;font-size:17px}
.cy-ctrl{display:flex;align-items:center;gap:10px;flex:none;font-size:16px;font-variant-numeric:tabular-nums}
.cy-ctrl button{font:inherit;width:42px;height:42px;border-radius:50%;border:1.5px solid var(--ink);background:#fff;cursor:pointer;font-size:18px;line-height:1}
.cy-ctrl button:hover{background:var(--ink);color:#fff}

/* facts strip */
.short{padding:clamp(56px,8vw,104px) 0;border-bottom:1px solid var(--line)}
.short-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;margin-top:36px}
.short-grid div{border-top:2px solid var(--ink);padding-top:16px}
.short-grid b{display:block;font-size:clamp(34px,3.6vw,52px);letter-spacing:-.03em;line-height:1;margin-bottom:12px}
.short-grid span{display:block;font-size:17px;color:var(--mute);max-width:16em}

/* work list */
.section{padding:clamp(56px,8vw,104px) 0}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:40px}
.work{display:grid;gap:clamp(64px,9vw,120px)}
.proj a.cover{display:block;overflow:hidden;border-radius:6px;background:var(--wash)}
.proj a.cover img{width:100%;aspect-ratio:16/9;object-fit:cover;transition:transform .6s ease}
.proj a.cover:hover img{transform:scale(1.015)}
.proj-body{display:grid;grid-template-columns:5fr 7fr;gap:16px 48px;margin-top:22px}
.proj-body h3 a{text-decoration:none}
.proj-body h3 a:hover{text-decoration:underline}
.proj-body p{margin:0 0 14px}
.tagline{color:var(--mute);font-size:18px;margin-top:10px}
.more{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 32px}
.more .proj a.cover img{aspect-ratio:4/3}
.more .proj-body{display:block;margin-top:16px}
.more .proj-body p{font-size:17px}

/* facts dl */
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px 32px;margin:0}
.facts div{border-top:1px solid var(--line);padding-top:12px}
.facts dt{font-size:15px;color:var(--mute);margin-bottom:4px}
.facts dd{margin:0;font-size:17px;line-height:1.4}
.proj .facts{grid-template-columns:repeat(2,minmax(0,1fr))}

/* how I work */
.how{background:var(--wash)}
.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.how-grid h3{margin-bottom:12px}
.how-grid p{font-size:17px}

/* quotes */
.quotes{display:grid;grid-template-columns:repeat(2,1fr);gap:48px 64px}
blockquote{margin:0}
blockquote p{font-size:clamp(20px,1.9vw,24px);line-height:1.45;letter-spacing:-.005em;max-width:none}
blockquote footer{color:var(--mute);font-size:16px}

/* case study */
.cs-head{padding:clamp(40px,7vw,96px) 0 40px}
.back{display:inline-block;margin-bottom:28px;font-size:17px}
.cs-head .lead{margin:28px 0 40px}
.cs-cover{margin:0 0 clamp(48px,7vw,96px)}
.cs-cover img{width:100%;border-radius:6px}
.cs-sec{display:grid;grid-template-columns:4fr 8fr;gap:24px 56px;padding:clamp(40px,6vw,80px) 0;border-top:1px solid var(--line)}
.cs-sec .txt{position:sticky;top:96px;align-self:start}
.cs-sec .txt h2{margin-bottom:16px}
.cs-sec .txt p{font-size:17px}
.gal{display:grid;gap:16px}
.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.gal figure{margin:0}
.gal a{display:block;background:var(--wash);border-radius:4px;overflow:hidden}
.gal img{width:100%}
.gal figcaption{font-size:15px;color:var(--mute);margin-top:8px;line-height:1.4}
.gal .span2{grid-column:span 2}
.gal .full{grid-column:1/-1}
.note{font-size:15px;color:var(--mute)}
.rulelist{list-style:none;margin:0;padding:0;counter-reset:r;display:grid;grid-template-columns:1fr 1fr;gap:28px 40px}
.rulelist li{counter-increment:r;border-top:1px solid var(--line);padding-top:14px}
.rulelist li::before{content:counter(r);display:block;font-size:15px;color:var(--mute);margin-bottom:6px;font-variant-numeric:tabular-nums}
.rulelist b{display:block;font-size:22px;letter-spacing:-.01em;line-height:1.2;margin-bottom:6px}
.rulelist span{display:block;font-size:17px;color:var(--mute);line-height:1.45}
.next{border-top:1px solid var(--line);padding:56px 0 72px}
.next a{text-decoration:none;display:block}
.next a:hover .h-l{text-decoration:underline}

/* about */
.about-grid{display:grid;grid-template-columns:4fr 8fr;gap:56px;align-items:start}
.about-grid img{border-radius:6px;width:100%}
.cv{list-style:none;padding:0;margin:0}
.cv li{display:grid;grid-template-columns:150px 1fr;gap:16px;padding:16px 0;border-top:1px solid var(--line)}
.cv li span{color:var(--mute)}

/* footer */
.site-foot{background:var(--ink);color:#fff;padding:clamp(56px,8vw,96px) 0 40px}
.site-foot a{color:#fff}
.foot-cta{font-size:clamp(32px,4.4vw,60px);font-weight:700;letter-spacing:-.03em;line-height:1.05;max-width:14em}
.foot-row{display:flex;flex-wrap:wrap;gap:16px 36px;margin-top:36px;font-size:19px}
.foot-fine{margin-top:64px;font-size:16px;color:#c3c7cc}

/* lightbox */
dialog.lb{border:0;padding:0;background:transparent;max-width:96vw;max-height:94vh}
dialog.lb::backdrop{background:rgba(10,12,14,.9)}
dialog.lb img{max-width:96vw;max-height:88vh;width:auto;margin:auto;border-radius:4px}
dialog.lb button{position:fixed;top:16px;right:20px;font:600 17px var(--f);background:#fff;color:var(--ink);border:0;border-radius:999px;padding:10px 18px;cursor:pointer}
dialog.lb p{color:#fff;font-size:16px;text-align:center;margin:10px auto 0}

@media (max-width:900px){
  .short-grid{grid-template-columns:1fr 1fr}
  .proj-body,.cs-sec,.about-grid{grid-template-columns:1fr}
  .cs-sec .txt{position:static}
  .more,.how-grid,.quotes{grid-template-columns:1fr}
  .facts{grid-template-columns:1fr 1fr}
  .g3,.g4{grid-template-columns:1fr 1fr}
  .rulelist{grid-template-columns:1fr}
  .cy-bar{flex-direction:column}
}
@media (max-width:560px){
  body{font-size:17px}
  .nav{gap:14px;font-size:16px}
  .brand{font-size:18px}
  .g2{grid-template-columns:1fr}
  .gal .span2{grid-column:auto}
  .short-grid{grid-template-columns:1fr}
  .cv li{grid-template-columns:1fr;gap:2px}
}
@media (max-width:400px){.site-head .wrap{flex-direction:column;align-items:flex-start;gap:4px;padding-top:10px;padding-bottom:10px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.short-grid a{display:inline-block;margin-top:12px;font-size:16px}
.fade{position:relative;aspect-ratio:16/9}
.fade img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .8s ease}
.fade img.on{opacity:1}
.how-grid a{font-weight:500}
.gal video,.cs-cover video{width:100%;display:block;border-radius:4px;background:#000}
.cs-cover video{border-radius:6px;aspect-ratio:16/9;object-fit:cover}
.proj a.cover video{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.more .proj a.cover img{aspect-ratio:3/2}
.hero-media{margin:28px 0 0}
.hero-media video{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:6px;display:block;background:#111}
.hero-media figcaption p{margin:0}
.proj div.cover{border-radius:6px;overflow:hidden}
.proj .cycler{margin:0}
.proj .cy-stage{border-radius:0}
.tagline .cy-ctrl{display:inline-flex;margin-left:6px;vertical-align:middle}
.fade img{object-position:center 12%}
.cs-quote{padding:0 0 clamp(48px,7vw,96px);max-width:58em}.cs-quote blockquote p{font-size:clamp(22px,2.2vw,30px);line-height:1.4}
.gal img{box-shadow:0 0 0 1px var(--line)}
picture{display:block}
