/* One stage, with different compositions for each discipline. */
:root{color-scheme:dark;--ink:#030406;--white:#eeeae2;--muted:#aaaeb1;--accent:#dfb482;--rule:#e4e1d026;--chapter-length:280svh;scroll-behavior:smooth}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--ink);color:var(--white)}body{font:16px/1.65 'Inter',Arial,sans-serif;-webkit-font-smoothing:antialiased}button,a,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button{color:inherit;font:inherit;border:0;background:none;cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:'Inter Tight','Inter',Arial,sans-serif;font-weight:300;letter-spacing:-.055em;line-height:1.02}em{font-style:normal;color:var(--accent)}::selection{background:#dab588;color:#111}:focus-visible{outline:2px solid #dfb482;outline-offset:6px}[hidden]{display:none!important}
.skip{position:fixed;z-index:100;left:20px;top:-100px;background:var(--white);color:#000;padding:10px 18px}.skip:focus{top:15px}
.world{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:var(--ink)}.world canvas{display:block;width:100%;height:100%}.world:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at var(--scene-x,70%) var(--scene-y,45%),#59838612,transparent 48%),radial-gradient(ellipse at 18% 90%,#8c66410b,transparent 55%);mix-blend-mode:screen}.world-vignette{position:absolute;inset:0;background:linear-gradient(#030406bb,transparent 19%,transparent 83%,#030406c9)}.scene-unavailable .world canvas{display:none}
.has-ambient:not(.scene-unavailable) .world:after{display:none}
.site-header{position:fixed;inset:0 0 auto;z-index:30;display:flex;align-items:center;height:100px;padding:0 4.5%;gap:58px;pointer-events:none;background:linear-gradient(#030406a0,transparent)}.site-header>*{pointer-events:auto}.brand{font:500 16px/1.06 'Inter Tight',sans-serif;letter-spacing:-.035em}.brand span{color:var(--accent)}.header-role{font-size:9px;line-height:1.6;letter-spacing:.09em;color:#8f999d}.site-header nav{display:flex;align-items:center;gap:30px;margin-left:auto;font-size:11px}.site-header nav>a,.site-header nav>button{padding:12px 0}.site-header a:hover,.site-header button:hover{color:var(--accent)}
.chapter{position:relative;z-index:1;min-height:100svh}.chapter-inner{position:relative;min-height:100svh;padding:140px 7% 115px;display:flex;align-items:center;isolation:isolate}.is-enhanced .chapter{height:var(--chapter-length);min-height:0}.is-enhanced .chapter:last-child{height:100svh}.is-enhanced .chapter-inner{position:fixed;inset:0;width:100%;height:100svh;min-height:0;opacity:0;visibility:hidden;pointer-events:none;transform:translate3d(0,var(--copy-y,0px),0);will-change:opacity,transform}.is-enhanced .chapter.is-active .chapter-inner{visibility:visible;opacity:var(--copy-opacity,1)}.is-enhanced .chapter.is-active .copy,.is-enhanced .chapter.is-active footer{pointer-events:auto}
.copy{position:relative;z-index:2;width:46%;max-width:620px;text-shadow:0 2px 25px #030406bb}.copy-right{margin-left:auto;width:44%}.copy-left{margin-left:0}.eyebrow{font-size:10px;letter-spacing:.15em;color:#a3aaa9;line-height:1.5;margin-bottom:29px}h1{font-size:clamp(106px,11.8vw,190px);line-height:.88;letter-spacing:-.06em}h1 em{color:var(--white);font-weight:400}h2{font-size:clamp(56px,6.25vw,98px);line-height:1.02}.lead{font-size:16px;line-height:1.8;color:#abb1b4;max-width:425px;margin-top:32px}.small-note{font-size:10px;line-height:1.8;color:#829193;letter-spacing:.025em;margin-top:23px}.text-link{display:inline-flex;align-items:center;gap:33px;padding:11px 0;margin-top:26px;font-size:12px;border-bottom:1px solid #d4bc924d}.action-icon{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;color:var(--accent)}.text-link:hover{color:var(--accent)}
.chapter-hero .copy{width:max-content;max-width:100%}.chapter-hero .eyebrow{color:#d9bb94;margin-bottom:35px}.chapter-hero .lead{font-size:16px;max-width:355px;margin-top:37px}.art-label{position:absolute;right:4.5%;bottom:118px;font-size:9px;letter-spacing:.13em;color:#8e999c}
.chapter-perspective h2 em{color:#add9c9}.chapter-design h2 em{color:#b4c9ee}.chapter-architecture h2 em{color:#a9d5df}.chapter-method h2 em{color:#cec0e7}.chapter-commercial h2 em{color:#c7d8aa}.chapter-design .copy{align-self:flex-end;padding-bottom:15px}.chapter-architecture .copy{align-self:flex-start;padding-top:35px}.chapter-method h2{font-size:clamp(60px,6.8vw,104px)}.chapter-commercial .copy{align-self:flex-start;padding-top:35px}.chapter-commercial h2{font-size:clamp(57px,6.5vw,102px)}.chapter-contact h2{font-size:clamp(95px,10.5vw,160px)}
.process-line{display:flex;align-items:center;gap:17px;margin-top:26px;font-size:10px;color:#97a4a1}.process-line i{width:25px;height:1px;background:#b9c29766}.contact-email{display:inline-flex;align-items:center;gap:24px;font:300 29px/1.2 'Inter Tight',sans-serif;letter-spacing:-.02em;margin-top:35px;padding-bottom:14px;border-bottom:1px solid #d4bc924d}.contact-email span{color:var(--accent)}.contact-links{display:flex;gap:30px;margin-top:25px;font-size:12px;color:#abb1b4}.chapter-contact footer{position:absolute;bottom:92px;left:7%;right:7%;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.04em;color:#809091}
.chapter-jumps{position:fixed;right:2.3%;top:40%;z-index:20;display:flex;flex-direction:column;gap:12px}.chapter-jumps a{display:flex;justify-content:flex-end;align-items:center;gap:8px;width:33px;height:14px;color:#738084;font-size:8px}.chapter-jumps a:after{content:'';width:8px;height:1px;background:#657578;transition:width .3s}.chapter-jumps a[aria-current]{color:#e1c296}.chapter-jumps a[aria-current]:after{width:19px;background:#e1c296}.chapter-jumps a:hover{color:#fff}
.scene-navigation{position:fixed;bottom:22px;left:4.5%;right:4.5%;z-index:30;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.scene-navigation>*{pointer-events:auto}.scene-navigation:before{content:'';position:absolute;inset:-45px -5vw -24px;background:linear-gradient(transparent,#030406c9);z-index:-1;pointer-events:none}.scene-position{display:flex;gap:14px;align-items:center;font-size:9px;color:#97a4a5;letter-spacing:.07em}.position-rule{width:100px;height:1px;background:#e5dcba22}.position-rule>span{display:block;height:1px;width:100%;transform-origin:left;transform:scaleX(var(--progress,0));background:#d1b486}#chapter-label{font-size:8px;letter-spacing:.1em;margin-left:8px}.motion-toggle{display:flex;align-items:center;gap:10px;font-size:9px;color:#97a4a5;min-height:40px;padding:8px 0}.motion-icon{width:8px;height:9px;border-left:1px solid currentColor;border-right:1px solid currentColor}.motion-toggle[aria-pressed=true] .motion-icon{width:0;height:0;border:4px solid transparent;border-left:7px solid currentColor;border-right:0}.scene-unavailable .motion-toggle{display:none}
dialog{width:min(900px,calc(100% - 48px));max-height:88svh;background:#0c0a11f5;border:1px solid #cab0df38;color:#eee7f4;padding:0;border-radius:8px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#040308c9;backdrop-filter:blur(15px)}.dialog-header{position:sticky;top:0;z-index:4;display:flex;justify-content:space-between;align-items:center;padding:20px 35px;background:#0c0a11;border-bottom:1px solid #cab0df25}.dialog-header>p{font-size:10px;letter-spacing:.08em;color:#a99ab8}.close-dialog{display:flex;align-items:center;gap:16px;font-size:12px}.close-dialog span{font-size:26px;line-height:1}.dialog-body{padding:45px 55px 55px}.dialog-body h2{font-size:55px;line-height:1.08}.dialog-intro{max-width:650px;font-size:15px;color:#b7a8c5;line-height:1.85;margin-top:25px}.cv-list{margin-top:35px}.cv-list details{border-top:1px solid #d3b9e82b}.cv-list details:last-child{border-bottom:1px solid #d3b9e82b}.cv-list summary{display:grid;grid-template-columns:23px 1fr 20px;gap:7px 17px;align-items:center;padding:22px 0;cursor:pointer;list-style:none}.cv-list summary::-webkit-details-marker{display:none}.cv-number{font-size:10px;color:#a090b3}.cv-skill{font:300 27px/1.2 'Inter Tight',sans-serif;letter-spacing:-.025em}.cv-discipline{grid-column:2;grid-row:2;font-size:11px;color:#a698b6}.cv-toggle{grid-column:3;grid-row:1/3;color:#b79fce}.cv-list details[open] .cv-toggle{transform:rotate(45deg)}.cv-body{margin-left:40px;padding-bottom:28px;color:#b9abc7;font-size:14px;line-height:1.9}.cv-body h3{font:500 13px/1.7 'Inter',sans-serif;letter-spacing:0;color:#e2d2ef;margin-bottom:12px}.cv-body p+p{margin-top:15px}.cv-body a{text-decoration:underline;text-underline-offset:4px}.cv-bottom{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:25px;font-size:12px;line-height:1.9;margin-top:35px;color:#b9a8c6}.cv-bottom p>span{display:block;font-size:9px;letter-spacing:.08em;color:#917ea5;margin-bottom:12px}.details-grid{font-size:16px;line-height:1.85;color:#c2b3ce;margin-top:30px}.details-grid p+p{margin-top:24px}.stack{display:flex;flex-wrap:wrap;gap:13px 22px;margin-top:30px;font-size:11px;color:#a08ab5}body.dialog-open{overflow:hidden}.skill-tags{font-size:12px!important;color:#a9c2d4!important;margin-top:18px!important}.no-script-note{position:relative;padding:30px 7%}
.cv-contact{display:flex;flex-wrap:wrap;gap:12px 25px;border-top:1px solid var(--rule);padding-top:24px;margin-top:35px;font-size:13px;color:#c4b3d3}
@media print{#cv-dialog .dialog-body:before{content:'Jan Haaverstad';display:block;font:700 24pt/1.2 Arial,sans-serif;margin-bottom:16pt}#cv-dialog .dialog-body h2{font-size:17pt}.cv-contact{color:#222;font-size:10pt;margin-top:20pt;padding-top:12pt;border-color:#aaa}}


@media(min-width:701px) and (max-width:1000px){.site-header{height:95px;gap:30px}.chapter-inner{padding:140px 7% 110px}.copy{width:52%}.copy-right{width:47%}h1{font-size:clamp(85px,11.8vw,118px)}h2,.chapter-method h2,.chapter-commercial h2{font-size:clamp(48px,6.5vw,65px)}.lead{font-size:14px}.chapter-hero .chapter-inner{align-items:flex-start}.chapter-hero .lead{font-size:15px;max-width:320px;margin-top:30px}.chapter-contact h2{font-size:85px}.contact-email{font-size:24px}.chapter-architecture .copy,.chapter-commercial .copy{padding-top:15px}.chapter-jumps{right:1.6%}}
@media(max-width:700px){.site-header{height:86px;padding:0 6%;gap:10px}.brand{font-size:12px}.header-role{display:none}.site-header nav{gap:17px;font-size:10px}.chapter-inner{display:flex;align-items:flex-start;padding:119px 7% 95px}.copy,.copy-right{width:100%;max-width:none;margin-left:0}.eyebrow{font-size:8px;margin-bottom:22px;letter-spacing:.11em}h1{font-size:clamp(55px,16.1vw,111px);line-height:.9}.chapter-hero .eyebrow{margin-bottom:26px}.chapter-hero .lead{font-size:14px;max-width:305px;margin-top:26px}h2,.chapter-method h2,.chapter-commercial h2{font-size:clamp(39px,11.7vw,72px);line-height:1.06}.lead{font-size:14px;line-height:1.8;max-width:325px;margin-top:25px}.small-note{font-size:9px;margin-top:18px}.text-link{font-size:11px;padding:8px 0;margin-top:19px;gap:24px}.chapter-design .copy,.chapter-architecture .copy,.chapter-commercial .copy{align-self:flex-start;padding:0}.chapter-contact h2{font-size:clamp(68px,20vw,118px)}.contact-email{font-size:24px;margin-top:30px}.contact-links{font-size:11px;gap:25px}.chapter-contact footer{left:7%;right:7%;bottom:79px;font-size:7px}.process-line{font-size:9px;gap:13px;margin-top:22px}.process-line i{width:18px}.art-label,.chapter-jumps{display:none}.scene-navigation{bottom:14px;left:6%;right:6%}.scene-position{gap:10px;font-size:8px}.position-rule{width:37px}#chapter-label{display:none}.motion-toggle{font-size:8px}.motion-icon{height:8px;width:7px}dialog{width:calc(100% - 22px);max-height:92svh;border-radius:5px}.dialog-header{padding:16px 20px}.dialog-header>p{font-size:8px}.dialog-body{padding:30px 23px 40px}.dialog-body h2{font-size:37px}.dialog-intro{font-size:14px}.close-dialog{font-size:11px}.cv-skill{font-size:23px}.cv-body{margin-left:30px;font-size:13px}.cv-list summary{grid-template-columns:18px 1fr 15px;gap:6px 12px}.cv-discipline{font-size:10px}.cv-bottom{grid-template-columns:1fr 1fr;gap:23px;font-size:11px}.cv-bottom>p:first-child{grid-column:1/-1}}
/* Mobile gives copy a measured upper area and the figure its own lower area. */
@media(max-width:700px){
  :root{--chapter-length:290svh}
  .site-header{height:76px}.brand{font-size:14px}.site-header nav{font-size:12px;gap:22px}
  .site-header nav>a,.site-header nav>button{min-height:44px;display:flex;align-items:center}
  .chapter-inner{padding-top:100px}.is-enhanced .chapter-inner{height:100%}
  .eyebrow{font-size:10px;margin-bottom:16px}.chapter-hero .eyebrow{margin-bottom:20px}
  h2,.chapter-method h2,.chapter-commercial h2{font-size:clamp(36px,10.5vw,52px);line-height:1.04}
  .lead,.chapter-hero .lead{font-size:14px;line-height:1.6;margin-top:20px;max-width:none}
  .small-note{font-size:10px;line-height:1.55;margin-top:15px}
  .text-link{min-height:44px;font-size:12px;margin-top:16px;gap:18px;padding:9px 0}
  .text-link .action-icon{width:18px;height:18px}
  .process-line{font-size:10px;gap:12px;margin-top:18px}.process-line i{width:18px}
  .contact-email{font-size:clamp(21px,6.1vw,30px);gap:14px}.contact-links{font-size:13px;gap:24px}
  .contact-links a{min-height:44px;display:flex;align-items:center}
  .chapter-contact footer{bottom:65px;align-items:center;font-size:8px}.chapter-contact footer a{min-height:44px;display:flex;align-items:center}
  .scene-position{font-size:10px}.motion-toggle{font-size:10px;min-height:44px}
}
@media(max-width:360px){.site-header nav{gap:16px;font-size:11px}.chapter-inner{padding-top:107px}.chapter-hero .lead{font-size:13px}h2,.chapter-method h2,.chapter-commercial h2{font-size:38px}.lead{font-size:13px}.small-note{margin-top:14px}.process-line{gap:10px}.text-link{margin-top:14px}}
body:not(.is-enhanced) .chapter-inner{height:auto;min-height:100svh;padding-top:130px;padding-bottom:130px}body:not(.is-enhanced) .chapter-contact footer{position:relative;inset:auto;margin-top:65px}body:not(.is-enhanced) .chapter-contact .chapter-inner{display:block}.is-reduced .world{opacity:.28}.scene-unavailable .chapter-jumps{display:none}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{@page{size:A4;margin:16mm}html,body{background:#fff;color:#000;font:10pt/1.6 Arial,sans-serif}body.dialog-open{overflow:visible}.world,.site-header,main,.scene-navigation,.chapter-jumps,.skip,.no-script-note,.dialog-header{display:none!important}#cv-dialog{display:block!important;position:static;width:100%;max-width:none;max-height:none;padding:0;border:0;background:#fff;color:#000;overflow:visible;box-shadow:none}dialog::backdrop{display:none}.dialog-body{padding:0}.dialog-body .eyebrow{color:#222;font-size:9pt}.dialog-body h2{font:700 17pt/1.15 Arial,sans-serif;letter-spacing:-.02em}.dialog-intro{font-size:10pt;color:#333;margin:14pt 0}.cv-list{margin-top:0}.cv-list details{break-inside:avoid;border-color:#aaa}.cv-list summary{padding:10pt 0 5pt}.cv-skill{font:600 13pt Arial,sans-serif}.cv-number,.cv-discipline{color:#333;font-size:8pt}.cv-toggle{display:none}.cv-body{font-size:9pt;color:#222;padding-bottom:12pt;margin-left:30px}.cv-body h3{color:#000;font-size:9pt}.cv-bottom{font-size:8pt;color:#222;margin-top:16pt}.cv-bottom p>span{color:#333;font-size:8pt}.cv-body a{color:#000}}

/* On phones, artwork gets a full stage; supporting copy follows in the page. */
@media(max-width:700px){
  .is-enhanced .chapter-inner,.is-enhanced .chapter.is-active .chapter-inner{position:relative;inset:auto;height:auto;min-height:100svh;opacity:1;visibility:visible;transform:none;will-change:auto;pointer-events:auto}
  .is-enhanced .chapter-details{margin-top:62svh;padding:22px 0 28px;background:linear-gradient(transparent,#030406e8 18%,#030406e8 82%,transparent)}
  .is-enhanced .chapter-details>.lead{margin-top:0}
  .is-enhanced .chapter:last-child{height:190svh}
  .is-enhanced .chapter-contact .chapter-inner{display:block}
  .is-enhanced .chapter-contact footer{position:relative;inset:auto;margin-top:28px}
}

/* Keep contact links clear of the footer, also in wide, short windows. */
@media(min-width:701px){
  .is-enhanced .chapter-contact .chapter-inner{display:grid;grid-template-rows:minmax(0,1fr) auto;row-gap:36px;padding-top:112px;padding-bottom:92px}
  .is-enhanced .chapter-contact .copy{align-self:center}
  .is-enhanced .chapter-contact footer{position:static}
  .is-enhanced .chapter-contact h2{font-size:clamp(64px,min(10.5vw,calc((100svh - 510px)/2.04)),160px)}
}

/* Keep the phone stage steady while browser toolbars expand/collapse. */
@media(max-width:700px){
  .is-enhanced .world{bottom:auto;height:100svh}
  .site-header{background:var(--ink)}
  .site-header:after{content:'';position:absolute;top:100%;left:0;right:0;height:18px;background:linear-gradient(var(--ink),transparent);pointer-events:none}
  .is-enhanced .chapter-contact .chapter-details{background:none}
  .chapter-contact .chapter-details,.chapter-contact footer{text-shadow:0 1px 2px var(--ink),0 0 6px var(--ink),0 0 12px var(--ink)}
}

/* Copy stays readable over the scattered mobile particles. */
.contact-anchor{display:none}
@media(max-width:700px){
  .is-enhanced .chapter-details{width:100%;background:none;text-shadow:0 1px 2px var(--ink),0 0 6px var(--ink),0 0 12px var(--ink)}
  .is-enhanced .chapter.chapter-contact .chapter-inner{min-height:190svh;padding-bottom:110px}
  .is-enhanced .chapter-contact .copy{display:contents}
  .is-enhanced .contact-anchor{display:block;height:20svh}
  .is-enhanced .chapter-contact .chapter-details{position:sticky;top:92px;width:100%;margin-top:0;padding:0}
  .is-enhanced .chapter-contact .contact-email{margin-top:0}
  .is-enhanced .chapter-contact .contact-links{margin-top:12px}
  .is-enhanced .chapter-contact .text-link{margin-top:8px}
  .is-enhanced .chapter-contact footer{position:absolute;left:7%;right:7%;bottom:74px;margin-top:0}
}

/* A full-screen mobile field, including the space behind both control bars.
   Copy is clipped separately, so scrolling headings cannot cross the logo. */
@media(max-width:700px){
  .is-enhanced .world{overflow:visible}
  .is-enhanced .world canvas{height:100lvh}
  .is-enhanced .world-vignette,.is-enhanced .site-header:after,.is-enhanced .scene-navigation:before{display:none}
  .is-enhanced .site-header{background:none}
  .is-enhanced .site-header,.is-enhanced .scene-navigation{text-shadow:0 1px 2px var(--ink),0 0 5px var(--ink),0 0 10px var(--ink)}
}

/* A compact language choice fits beside Expertise/CV on small phones too. */
.language-switch{display:flex;align-items:center;gap:12px;padding-left:18px;border-left:1px solid var(--rule);font-size:10px;letter-spacing:.04em}
.language-switch a,.language-switch>span{display:flex;align-items:center;min-height:44px}
.language-switch a{color:var(--muted)}.language-switch [aria-current]{color:var(--accent)}
@media(max-width:700px){.site-header nav{gap:14px}.language-switch{gap:9px;padding-left:12px;font-size:10px}}
@media(max-width:360px){.site-header nav{gap:10px}.language-switch{gap:7px;padding-left:8px}}
