/* NID Studios — simplified landing, shared base
   Cold concrete + Trondheim red. Calmer.

   Fonts self-hosted (CSP: font-src 'self'). Drop the .woff2 files into
   /assets/fonts/ — same set the rest of the site uses. */

/* ── FONTS ──────────────────────────────────────────── */
@font-face {
  font-family: "Space Mono";
  src: local("Space Mono Bold"),
       url("/assets/fonts/SpaceMono-Bold.woff2") format("woff2");
  font-weight: 700; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "Space Mono";
  src: local("Space Mono"),
       url("/assets/fonts/SpaceMono-Regular.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: local("IBM Plex Mono Light"),
       url("/assets/fonts/IBMPlexMono-Light.woff2") format("woff2");
  font-weight: 300; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: local("IBM Plex Mono"),
       url("/assets/fonts/IBMPlexMono-Regular.woff2") format("woff2");
  font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
  font-family: "IBM Plex Mono";
  src: local("IBM Plex Mono Medium"),
       url("/assets/fonts/IBMPlexMono-Medium.woff2") format("woff2");
  font-weight: 500; font-style: normal; font-display: swap;
}

:root{
  --bg:#EDEDEA; --surface:#E2E0DB; --fg:#111111; --meta:#8C8C86; --accent:#B83232;
  --rule:rgba(17,17,17,.08); --rule-strong:rgba(17,17,17,.16); --fg-soft:rgba(17,17,17,.62);
  --f-display:"Space Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --f-body:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --gutter:clamp(24px,4vw,72px);
  --maxw:1180px;
  --ease:cubic-bezier(.2,.7,.2,1);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{
  background:var(--bg); color:var(--fg);
  font-family:var(--f-body); font-size:15px; line-height:1.65;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
::selection{background:var(--accent); color:var(--bg);}
a{color:inherit; text-decoration:none;}
img{display:block; max-width:100%;}

h1,h2,h3{font-family:var(--f-display); font-weight:700; margin:0; text-wrap:balance;}

.shell{max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter);}
.accent{color:var(--accent);}
.meta{color:var(--meta);}

/* ── TOPBAR (shared sticky bar) ───────────────────── */
.topbar{
  --nav-fg:var(--fg); --nav-soft:var(--fg-soft);
  position:fixed; top:0; left:0; right:0; z-index:50;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding:20px var(--gutter); color:var(--nav-fg);
  background:transparent; border-bottom:1px solid transparent;
  transition:background .45s var(--ease), border-color .45s var(--ease), color .45s var(--ease), padding .45s var(--ease);
}
/* white palette while floating over a dark hero */
.topbar.over-hero{ --nav-fg:#fff; --nav-soft:rgba(255,255,255,.72); }
/* frosted palette once scrolled (wins over .over-hero) */
.topbar.solid{
  --nav-fg:var(--fg); --nav-soft:var(--fg-soft);
  padding:12px var(--gutter);
  background:color-mix(in srgb, var(--bg) 84%, transparent);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  border-bottom-color:var(--rule);
}

.brand{display:flex; align-items:center; gap:12px;}
.brand-mark{width:20px; height:20px; position:relative; flex:none;}
.brand-mark::before,.brand-mark::after{content:""; position:absolute; inset:0; border:1.5px solid var(--fg);}
.brand-mark::after{inset:4px; transform:rotate(45deg); border-color:var(--accent);}
.wm{font-family:var(--f-display); font-weight:700; font-size:15px; letter-spacing:.16em; text-transform:uppercase;}
.topbar .wm{color:var(--nav-fg);}
.topbar .brand-mark::before{border-color:var(--nav-fg);}
.topbar .brand-mark::after{border-color:var(--accent);}

.nav-links{display:flex; gap:28px; list-style:none; margin:0; padding:0;}
.nav-links a{
  position:relative; font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--nav-soft); padding-bottom:3px; transition:color var(--ease) .25s;
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--accent); transform:scaleX(0); transform-origin:0 50%;
  transition:transform var(--ease) .25s;
}
.nav-links a:hover{color:var(--nav-fg);}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1);}
.nav-links a[aria-current="page"]{color:var(--nav-fg);}

/* right cluster: divider · Work button · clock */
.nav-end{display:flex; align-items:center; gap:18px;}
.nav-div{width:1px; height:16px; background:currentColor; opacity:.32;}
.work-link{
  position:relative; isolation:isolate; overflow:hidden;
  display:inline-flex; align-items:center; gap:8px;
  font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--nav-fg);
  padding:8px 14px; border:1px solid var(--nav-soft);
  transition:color var(--ease) .28s, border-color var(--ease) .28s;
}
.work-link::before{content:""; position:absolute; inset:0; z-index:-1; background:var(--accent); transform:translateX(-101%); transition:transform var(--ease) .28s;}
.work-link .arr{transition:transform var(--ease) .28s;}
.work-link:hover{color:#fff; border-color:var(--accent);}
.work-link:hover::before{transform:translateX(0);}
.work-link:hover .arr{transform:translate(3px,-3px);}

/* scroll-progress hairline pinned to the bar's bottom edge */
.scroll-progress{
  position:absolute; left:0; right:0; bottom:-1px; height:2px;
  background:var(--accent); transform:scaleX(0); transform-origin:0 50%; pointer-events:none;
}

@media(max-width:820px){ .topbar .nav-links, .topbar .nav-div{display:none;} }

/* ── BUTTON ──────────────────────────────────────── */
.btn{
  display:inline-flex; align-items:center; gap:14px;
  font-family:var(--f-body); font-size:12px; letter-spacing:.16em; text-transform:uppercase;
  padding:14px 22px; border:1px solid var(--fg); position:relative; overflow:hidden;
  transition:color var(--ease) .28s;
}
.btn span.arr{transition:transform var(--ease) .28s;}
.btn::before{content:""; position:absolute; inset:0; background:var(--fg); transform:translateX(-101%); transition:transform var(--ease) .28s; z-index:-1;}
.btn:hover{color:var(--bg);}
.btn:hover::before{transform:translateX(0);}
.btn:hover span.arr{transform:translateX(4px);}
.btn:active{transform:translateY(1px);}
.btn--accent{border-color:var(--accent); color:var(--accent);}
.btn--accent::before{background:var(--accent);}
.btn--accent:hover{color:var(--bg);}

/* ── SECTIONS ────────────────────────────────────── */
.section{padding:clamp(64px,11vw,128px) 0; border-top:1px solid var(--rule); scroll-margin-top:80px;}
.section.alt{background:var(--surface);}
.label{
  font-family:var(--f-body); font-size:12px; font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:var(--fg); display:inline-flex; align-items:center; gap:12px;
}
.label::before{content:""; width:24px; height:1px; background:var(--accent);}

/* meta strip */
.metastrip{
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--meta);
}

/* ── PHILOSOPHY ──────────────────────────────────── */
.philo h2{
  font-size:clamp(30px,5vw,52px); line-height:1.06; letter-spacing:-.01em; text-transform:uppercase;
}
.philo h2 em{font-style:normal; color:var(--accent);}
.philo-body{
  max-width:60ch; margin-top:32px; font-size:clamp(15px,1.5vw,18px); line-height:1.7; color:var(--fg-soft);
}
.philo-body b{color:var(--fg); font-weight:700;}

/* ── SERVICES (simple rows) ──────────────────────── */
.svc-head{display:flex; justify-content:space-between; align-items:flex-end; gap:24px; flex-wrap:wrap; margin-bottom:48px;}
.svc-head h2{font-size:clamp(26px,3.6vw,40px); line-height:1.1; text-transform:uppercase;}
.svc-head .meta{font-size:13px; max-width:30ch;}
.svc-list{display:grid; gap:0; list-style:none; margin:0; padding:0;}
.svc-row{
  display:grid; grid-template-columns:80px 1fr minmax(0,40ch); gap:28px; align-items:baseline;
  padding:32px 0; border-top:1px solid var(--rule);
}
.svc-row:last-child{border-bottom:1px solid var(--rule);}
.svc-num{font-family:var(--f-display); font-size:13px; letter-spacing:.1em; color:var(--meta);}
.svc-name{font-family:var(--f-display); font-weight:700; font-size:clamp(20px,2.4vw,26px); text-transform:uppercase;}
.svc-name .sub{display:block; margin-top:6px; font-family:var(--f-body); font-weight:400; font-size:12px; letter-spacing:.06em; text-transform:none; color:var(--meta);}
.svc-desc{font-size:14px; line-height:1.65; color:var(--fg-soft);}
@media(max-width:720px){ .svc-row{grid-template-columns:1fr; gap:12px;} }

/* shared: heading nudge that was inline */
.h2-gap{margin-top:22px;}

/* ── CONTACT CTA ─────────────────────────────────── */
.cta{display:flex; flex-direction:column; align-items:flex-start; gap:28px;}
.cta h2{font-size:clamp(30px,5.5vw,56px); line-height:1.02; text-transform:uppercase; letter-spacing:-.01em;}
.cta .mail{font-family:var(--f-display); font-size:clamp(16px,2vw,22px); border-bottom:1px solid var(--accent); padding-bottom:3px;}

/* ── FOOTER ──────────────────────────────────────── */
.foot{
  border-top:1px solid var(--rule); padding:40px var(--gutter);
  display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap;
  font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--meta);
}
.foot a:hover{color:var(--fg);}
.foot .river{color:var(--fg-soft);}

/* ── HERO PHOTO PLATE (shared) ───────────────────── */
.plate{position:relative; overflow:hidden; background:var(--surface);}
.plate img{width:100%; height:100%; object-fit:cover; filter:grayscale(1) contrast(1.02);}
.plate .cap{
  position:absolute; left:14px; bottom:12px; font-size:10px; letter-spacing:.12em;
  text-transform:uppercase; color:rgba(255,255,255,.7); mix-blend-mode:difference;
}

/* ── PHOTO HERO (landing) ────────────────────────── */
.photo-hero{position:relative; aspect-ratio:3/2; min-height:560px; display:flex; flex-direction:column; color:#F4F3F0; overflow:hidden;}
.photo-hero .bg img{width:100%; height:100%; object-fit:cover; object-position:center; filter:grayscale(1) contrast(1.04) brightness(.92);}
/* extra top/bottom so nav.js parallax (translateY) never exposes an edge */
.photo-hero .bg{position:absolute; left:0; right:0; top:-12%; height:124%; will-change:transform;}
.photo-hero .scrim{position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(10,10,10,.62) 0%, rgba(10,10,10,.42) 34%, rgba(10,10,10,.10) 62%, rgba(10,10,10,.30) 100%);}
.photo-hero .inner{position:relative; z-index:2; margin-top:clamp(104px,14vh,150px); padding-bottom:clamp(40px,6vw,72px);}
.photo-hero .metastrip{color:rgba(255,255,255,.7); margin-bottom:26px;}
.photo-hero .metastrip .accent{color:#fff;}
.photo-hero h1{font-size:clamp(52px,10vw,132px); line-height:.9; letter-spacing:-.02em; text-transform:uppercase; color:#fff;}
.photo-hero h1 em{font-style:normal; color:var(--accent);}
.photo-hero .hero-foot{display:flex; justify-content:space-between; align-items:flex-end; gap:32px; flex-wrap:wrap; margin-top:34px;}
.photo-hero .hero-tag{max-width:44ch; color:rgba(255,255,255,.82); font-size:clamp(15px,1.5vw,17px); line-height:1.7;}
.photo-hero .hero-tag b{color:#fff;}
.photo-hero .btn{border-color:#fff; color:#fff;}
.photo-hero .btn::before{background:#fff;}
.photo-hero .btn:hover{color:#111;}
.photo-hero .cap{position:absolute; right:14px; bottom:12px; z-index:2; font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.6);}

/* Trondheim clock (sun/moon arc + Nidarosdomen), upper-right of hero nav */
.clock{display:flex; align-items:center; gap:8px; color:var(--nav-soft); font-family:var(--f-body); font-size:12px; letter-spacing:.04em;}
.clock-arc{display:block; flex:none;}
.clock-time{font-weight:500; color:var(--nav-fg);}
.clock-sep{opacity:.5;}
.clock-loc{opacity:.7; text-transform:uppercase; letter-spacing:.14em; font-size:11px;}
@media(max-width:560px){ .clock-loc,.clock-sep{display:none;} }
@media(max-width:560px){
  .photo-hero{aspect-ratio:auto; min-height:auto;}
  .photo-hero h1{font-size:clamp(44px,12vw,64px);}
  .photo-hero .inner{margin-top:clamp(84px,16vh,104px);}
  .photo-hero .hero-foot{margin-top:24px;}
}

/* ── WORK / PROJECTS PAGE ────────────────────────── */
.work-masthead{padding:clamp(88px,15vh,168px) 0 clamp(40px,6vw,72px); border-bottom:1px solid var(--rule);}
.work-masthead .metastrip{margin-top:26px; color:var(--meta);}
.work-masthead h1{margin-top:22px; font-size:clamp(48px,9vw,118px); line-height:.92; letter-spacing:-.02em; text-transform:uppercase;}
.work-masthead h1 em{font-style:normal; color:var(--accent);}

.proj-list{display:grid; gap:0; list-style:none; margin:0; padding:0; border-top:1px solid var(--rule-strong);}
.proj{
  display:grid; grid-template-columns:90px 1fr minmax(0,44ch) auto; gap:32px; align-items:start;
  padding:44px 0; border-bottom:1px solid var(--rule);
  transition:padding-left var(--ease) .3s, background var(--ease) .3s;
}
a.proj:hover{padding-left:14px;}
.proj-num{font-family:var(--f-display); font-size:13px; letter-spacing:.1em; color:var(--meta); padding-top:8px;}
.proj-name{font-family:var(--f-display); font-weight:700; font-size:clamp(28px,4.4vw,52px); line-height:1; text-transform:uppercase;}
.proj-meta{margin:16px 0 0; display:flex; gap:10px; flex-wrap:wrap; font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--meta);}
.proj-meta .dot{opacity:.5;}
.proj-desc{font-size:14px; line-height:1.7; color:var(--fg-soft);}
.proj-tag{display:inline-block; margin-top:18px; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--fg); border:1px solid var(--rule-strong); padding:5px 11px;}
.proj-arr{font-family:var(--f-display); font-size:22px; color:var(--accent); padding-top:6px; transition:transform var(--ease) .3s;}
a.proj:hover .proj-arr{transform:translate(6px,-6px);}
@media(max-width:860px){
  .proj{grid-template-columns:1fr; gap:14px; padding:36px 0;}
  .proj-num{padding-top:0;}
  .proj-arr{display:none;}
}
