:root{color-scheme:dark;--color-field: oklch(14.8% .018 155);--color-field-raised: oklch(18.2% .018 155);--color-ink: oklch(93.5% .014 102);--color-copy: oklch(79% .018 102);--color-stone: oklch(62% .018 115);--color-line: oklch(33% .018 155);--color-line-strong: oklch(47% .022 155);--color-signal: oklch(58% .105 28);--color-signal-light: oklch(75% .075 32);--color-signal-surface: oklch(52% .105 28);--color-signal-on-surface: oklch(97% .01 100);--color-selection: oklch(41% .1 28);--color-selection-ink: oklch(93.5% .014 102);--font-ui: "Schibsted Grotesk", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-reading: "Source Serif 4", Georgia, "Times New Roman", serif;--page-inline: clamp(1.25rem, 4vw, 4rem);--measure: 84rem;--measure-reading: 68ch;--ease-out-expo: cubic-bezier(.16, 1, .3, 1)}:root[data-theme=light]{color-scheme:light;--color-field: oklch(96.5% .012 100);--color-field-raised: oklch(92.5% .016 100);--color-ink: oklch(25% .025 155);--color-copy: oklch(37% .02 145);--color-stone: oklch(45% .02 145);--color-line: oklch(82% .016 145);--color-line-strong: oklch(67% .022 145);--color-signal: oklch(47% .11 28);--color-signal-light: oklch(42% .115 28);--color-signal-surface: oklch(47% .11 28);--color-selection: oklch(43% .105 28);--color-selection-ink: oklch(97% .01 100)}*{box-sizing:border-box}html{background:var(--color-field);scrollbar-color:var(--color-line-strong) var(--color-field);scroll-behavior:smooth}body{margin:0;min-width:18rem;min-height:100vh;background:var(--color-field);color:var(--color-copy);font-family:var(--font-reading);font-size:1.0625rem;line-height:1.65;caret-color:var(--color-signal);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}::selection{background:var(--color-selection);color:var(--color-selection-ink)}a{color:var(--color-ink);text-decoration-color:var(--color-signal);text-decoration-thickness:1px;text-underline-offset:.22em;transition:color .18s var(--ease-out-expo),text-decoration-color .18s var(--ease-out-expo)}a:hover{color:var(--color-signal-light)}a:focus-visible,button:focus-visible{outline:2px solid var(--color-signal-light);outline-offset:4px}p,ul,ol,dl{margin-block:0}ul,ol{padding-inline-start:1.25rem}h1,h2,h3,.site-mark,.site-nav,.text-link,.inline-links,.entry-index,.entry-status,.meta-label,.project-stack,.experience-company,.experience-dates,.footer-copyright,.contact-index,.contact-type,.contact-value{font-family:var(--font-ui)}h1,h2,h3{margin:0;color:var(--color-ink);font-weight:650;letter-spacing:-.025em;line-height:1}h1{font-size:clamp(3.2rem,9.5vw,6rem);font-weight:700;letter-spacing:-.04em}h2{font-size:clamp(1.8rem,3.5vw,3.2rem)}h3{font-size:clamp(1.15rem,2vw,1.45rem)}main{width:min(var(--measure),calc(100% - (var(--page-inline) * 2)));margin-inline:auto}.skip-link{position:absolute;top:0;left:0;z-index:10;padding:.7rem 1.2rem;background:var(--color-signal-surface);color:var(--color-signal-on-surface);font-family:var(--font-ui);font-size:.9rem;font-weight:700;text-decoration:none;transform:translateY(-120%)}.skip-link:focus-visible{transform:translateY(0);outline-offset:-2px}.site-header,.site-footer{width:min(var(--measure),calc(100% - (var(--page-inline) * 2)));margin-inline:auto}.site-header{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding-block:1.25rem 1.15rem;border-bottom:1px solid var(--color-line)}.site-mark{display:inline-flex;align-items:center;min-height:44px;color:var(--color-ink);font-size:1rem;font-weight:650;letter-spacing:-.015em;text-decoration:none}.site-header-tools{display:flex;align-items:center;justify-content:flex-end;gap:clamp(.65rem,2vw,1.5rem)}.site-nav{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.25rem clamp(.8rem,2.6vw,2rem)}.site-nav a{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;padding-block:.25rem;color:var(--color-stone);font-size:.8rem;font-weight:600;letter-spacing:.04em;text-decoration:none}.site-nav a:after{position:absolute;inset-inline:0;bottom:.6rem;height:2px;background:var(--color-signal);content:"";transform:scaleX(0);transform-origin:left}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--color-ink)}.site-nav a[aria-current=page]:after{animation:nav-indicator-enter .18s var(--ease-out-expo) both}.theme-selector{position:relative;display:inline-flex;align-items:center;gap:.15rem;padding-left:.75rem;border-left:1px solid var(--color-line)}.theme-selector-indicator{position:absolute;bottom:0;left:0;width:var(--theme-indicator-width, 0px);height:2px;background:var(--color-signal);transform:translate(var(--theme-indicator-offset, 0px));pointer-events:none}.theme-selector[data-ready=true] .theme-selector-indicator{transition:width .18s var(--ease-out-expo),transform .18s var(--ease-out-expo),background-color .18s var(--ease-out-expo)}.theme-option{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-width:44px;min-height:44px;padding:0 .3rem;border:0;background:transparent;color:var(--color-stone);cursor:pointer;font-family:var(--font-ui);font-size:.72rem;font-weight:600;letter-spacing:.025em;transition:color .18s var(--ease-out-expo)}.theme-option:hover,.theme-option[aria-pressed=true]{color:var(--color-ink)}.theme-icon{width:.9rem;height:.9rem;flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25}@keyframes nav-indicator-enter{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.site-footer{display:flex;align-items:end;margin-top:clamp(3rem,6vw,6rem);padding-block:1.5rem max(2rem,env(safe-area-inset-bottom));border-top:1px solid var(--color-line)}.meta-label,.contact-type{color:var(--color-stone);font-size:.7rem;font-weight:650;letter-spacing:.03em}.external-mark{display:inline-block;color:var(--color-signal-light);text-decoration:none}.link-label{text-decoration:underline;text-decoration-color:var(--color-signal);text-decoration-thickness:1px;text-underline-offset:.22em;transition:text-decoration-color .18s var(--ease-out-expo)}.footer-copyright{color:var(--color-stone);font-family:var(--font-ui);font-size:.78rem;letter-spacing:.03em}.home-hero{display:grid;grid-template-columns:minmax(0,1fr);align-items:end;min-height:min(48rem,calc(100svh - 5rem));padding-block:clamp(5.5rem,13vw,10rem) clamp(4rem,9vw,7.5rem);animation:enter-up .7s var(--ease-out-expo) both}.hero-copy{display:grid;gap:clamp(1.25rem,3vw,2rem)}.hero-role{max-width:25ch;color:var(--color-ink);font-family:var(--font-ui);font-size:clamp(1.35rem,2.6vw,2rem);font-weight:550;letter-spacing:-.025em;line-height:1.14}.hero-standfirst{max-width:55ch;font-size:clamp(1.05rem,1.6vw,1.2rem)}.hero-actions,.inline-links{display:flex;align-items:center;flex-wrap:wrap;gap:.65rem 1.4rem}.text-link,.inline-links a{display:inline-flex;align-items:center;min-height:44px;color:var(--color-ink);font-size:.88rem;font-weight:650;line-height:1.25}.text-link--external,.inline-link--external,.social-link{text-decoration:none}.text-link--external:hover .link-label,.inline-link--external:hover .link-label,.social-link:hover .link-label{text-decoration-color:var(--color-signal-light)}.section{padding-block:clamp(4.5rem,10vw,8rem);border-top:1px solid var(--color-line)}.section-header{display:grid;grid-template-columns:minmax(10rem,.38fr) minmax(0,1fr);gap:clamp(2rem,7vw,8rem);align-items:start;margin-bottom:clamp(2.5rem,6vw,4.5rem)}.section-header h2{max-width:10ch}.section-header p{max-width:var(--measure-reading);font-size:clamp(1.1rem,1.8vw,1.35rem)}.section-header--single{grid-template-columns:minmax(0,1fr)}.entry-index,.contact-index{color:var(--color-signal-light);font-size:clamp(1.1rem,2vw,1.45rem);font-weight:700;letter-spacing:-.03em}.experience-index{display:grid;border-top:1px solid var(--color-line)}.experience-index-abs-group{position:relative;border-bottom:1px solid var(--color-line)}.experience-index-abs-roles{margin:0;padding:0;list-style:none}.experience-index-entry.experience-index-abs-entry{padding-block:.75rem;border-bottom:0}.experience-index-abs-entry:first-child{padding-top:1.5rem}.experience-index-abs-entry:last-child{padding-bottom:1.5rem}.experience-index-abs-role{position:relative}.experience-index-abs-role:before,.experience-index-abs-entry:first-child .experience-index-abs-role:after{position:absolute;content:""}.experience-index-abs-role:before{z-index:1;top:.5rem;left:-1.15rem;width:.45rem;aspect-ratio:1;border:1px solid var(--color-stone);border-radius:50%;background:var(--color-field)}.experience-index-abs-entry:first-child .experience-index-abs-role:after{z-index:0;top:.725rem;left:-.925rem;width:1px;height:calc(100% + 1.5rem);transform:translate(-50%);background:var(--color-line-strong)}.experience-index-entry{display:grid;grid-template-columns:minmax(0,1fr) minmax(9rem,auto);gap:clamp(1.5rem,5vw,6rem);padding-block:1.5rem;border-bottom:1px solid var(--color-line)}.experience-index-entry>p:first-child{grid-column:2;grid-row:1;text-align:right;color:var(--color-stone);font-family:var(--font-ui);font-size:.8rem}.experience-index-role{position:relative;grid-column:1;grid-row:1;margin-left:4.5rem;display:grid;gap:.25rem}.experience-index-logo{position:absolute;top:0;left:-4.5rem;width:2.75rem;height:2.75rem;object-fit:contain}.experience-index-abs-group>.experience-index-logo{top:50%;left:0;transform:translateY(-50%)}:root[data-theme=light] .experience-index-logo--abs{filter:invert(1)}.experience-index-title{color:var(--color-ink);font-family:var(--font-ui);font-size:1rem;font-weight:550}.experience-index+.text-link{margin-top:1.25rem}.experience-index-company{color:var(--color-copy);font-family:var(--font-ui);font-size:.9rem;font-weight:500;line-height:1.35}.home-close{display:block;padding-block:clamp(4rem,8vw,7rem);border-top:1px solid var(--color-line)}.home-close h2{max-width:9ch;margin-bottom:clamp(2rem,4vw,3rem);font-size:clamp(2.8rem,6vw,5rem);letter-spacing:-.045em}.home-close-copy{display:grid;grid-template-columns:1fr;gap:1.25rem}.home-close-copy p{grid-column:1 / -1;max-width:38ch}.home-close-copy .inline-links{grid-column:1}.social-links{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem}.social-link{display:inline-flex;align-items:center;gap:.5rem;min-height:44px;color:var(--color-ink);font-family:var(--font-ui);font-size:.88rem;font-weight:650;line-height:1.25}.social-icon{width:1.2rem;height:1.2rem;flex:0 0 auto;color:var(--color-signal-light)}.page-intro{display:grid;grid-template-columns:minmax(14rem,.5fr) minmax(0,1fr);gap:clamp(2rem,7vw,8rem);align-items:end;padding-block:clamp(5rem,12vw,9rem) clamp(3.5rem,8vw,6rem);animation:enter-up .65s var(--ease-out-expo) both}.page-intro--single{grid-template-columns:minmax(0,1fr);gap:1.25rem;align-items:start}.page-intro h1{max-width:10ch}.page-deck{max-width:56ch;font-size:clamp(1.15rem,2vw,1.45rem)}.back-link{display:inline-flex;align-items:center;min-height:44px;margin-bottom:1.5rem;color:var(--color-stone);font-family:var(--font-ui);font-size:.82rem;font-weight:600;text-decoration:none}.back-link:before{margin-right:.55rem;color:var(--color-signal-light);content:"←"}.project-list,.experience-list,.writing-list{display:grid;border-top:1px solid var(--color-line)}.project-entry{display:grid;grid-template-columns:minmax(4rem,.17fr) minmax(0,1fr);gap:clamp(1rem,5vw,6rem);padding-block:clamp(2rem,5vw,4rem);border-bottom:1px solid var(--color-line)}.project-entry-main{display:grid;gap:1.25rem}.project-entry-heading{display:flex;align-items:baseline;justify-content:space-between;gap:2rem}.project-entry h2{font-size:clamp(1.8rem,4vw,3.25rem)}.project-entry h2 a{text-decoration-thickness:1px;text-underline-offset:.16em}.project-stack{max-width:28ch;color:var(--color-stone);font-size:.78rem;font-weight:550;line-height:1.4;text-align:right}.project-entry-description{max-width:60ch;font-size:1.1rem}.inline-links{gap:.4rem 1.5rem}.inline-links a{text-decoration-thickness:1px;text-underline-offset:.22em}.external-mark{margin-left:.2rem;font-size:.9em}.project-detail{display:grid;grid-template-columns:minmax(12rem,.38fr) minmax(0,1fr);gap:clamp(2rem,8vw,9rem);padding-block:clamp(2.5rem,6vw,5rem);border-top:1px solid var(--color-line)}.case-study-aside{position:sticky;top:1.5rem;align-self:start;display:grid;gap:1.25rem}.stack-list{display:grid;gap:.2rem;margin:0;padding:0;color:var(--color-ink);font-family:var(--font-ui);font-size:.9rem;list-style:none}.case-study-actions{display:grid;justify-items:start;gap:.25rem;padding-top:1.1rem;border-top:1px solid var(--color-line)}.prose{max-width:var(--measure-reading);font-size:1.12rem;line-height:1.72}.prose>*+*{margin-top:1.15rem}.prose h2{margin-top:clamp(3rem,7vw,5.5rem);font-size:clamp(1.55rem,3vw,2.2rem);letter-spacing:-.03em}.prose h2:first-child{margin-top:0}.prose ul{padding-inline-start:1.4rem}.prose li+li{margin-top:.5rem}.prose strong{color:var(--color-ink);font-weight:600}.prose code{padding:.1rem .25rem;border:1px solid var(--color-line);background:var(--color-field-raised);color:var(--color-ink);font-family:var(--font-ui);font-size:.9em}.experience-entry{display:grid;grid-template-columns:minmax(11rem,.33fr) minmax(0,1fr);gap:clamp(2rem,7vw,8rem);padding-block:clamp(2.25rem,5vw,4.5rem);border-bottom:1px solid var(--color-line)}.experience-entry.is-current{box-shadow:inset 0 1px 0 var(--color-line-strong),inset 0 -1px 0 var(--color-line-strong)}.experience-dates{display:grid;align-content:start;gap:.25rem;color:var(--color-stone);font-size:.8rem;line-height:1.45}.entry-status{margin-bottom:.75rem;color:var(--color-signal-light);font-size:.7rem;font-weight:700;letter-spacing:.03em}.experience-entry-main{display:grid;gap:1.25rem}.experience-heading{display:grid;gap:.4rem}.experience-heading h2{font-size:clamp(1.65rem,3vw,2.6rem)}.experience-company{color:var(--color-stone);font-size:.9rem;font-weight:550}.experience-skills{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin:0;padding:0;color:var(--color-stone);font-family:var(--font-ui);font-size:.78rem;list-style:none}.experience-skills li:not(:last-child):after{margin-left:1rem;color:var(--color-line-strong);content:"/"}.record-section{display:grid;grid-template-columns:minmax(11rem,.33fr) minmax(0,1fr);gap:clamp(2rem,7vw,8rem);align-items:start;padding-block:clamp(3.5rem,8vw,6rem)}.record-section+.record-section{border-top:1px solid var(--color-line)}.record-section h2{max-width:10ch}.record-section-main{display:grid;gap:clamp(1.75rem,4vw,2.5rem)}.record-title{font-size:clamp(1.65rem,3vw,2.6rem)}.record-facts{display:grid;margin:0;padding:0;border-top:1px solid var(--color-line);list-style:none}.record-row{display:grid;grid-template-columns:minmax(9rem,.32fr) minmax(0,1fr);gap:clamp(1rem,4vw,3rem);align-items:baseline;padding-block:1.1rem;border-bottom:1px solid var(--color-line)}.record-row:last-child{border-bottom:0}.record-row dt,.record-label{color:var(--color-stone);font-family:var(--font-ui);font-size:.7rem;font-weight:650;letter-spacing:.03em}.record-row .entry-status{margin-bottom:0;color:var(--color-signal-light)}.record-row dd,.record-row p{margin:0;color:var(--color-ink);font-family:var(--font-ui);font-size:1rem;font-weight:550;line-height:1.45}.record-entries{display:flex;flex-wrap:wrap;gap:.3rem .75rem;margin:0;padding:0;list-style:none}.record-entries li:not(:last-child):after{margin-left:.75rem;color:var(--color-line-strong);content:"/"}.contact-directory{display:grid;border-top:1px solid var(--color-line)}.contact-entry{display:grid;grid-template-columns:minmax(3rem,.15fr) minmax(8rem,.28fr) minmax(0,1fr);gap:1rem 2rem;align-items:center;min-height:6.5rem;padding-block:1rem;border-bottom:1px solid var(--color-line);text-decoration:none}.contact-entry:hover .contact-value{color:var(--color-signal-light)}.contact-type{color:var(--color-ink);font-size:.78rem}.contact-entry .link-label{text-decoration-thickness:1px;text-underline-offset:.16em}.contact-value{color:var(--color-ink);font-size:clamp(1.15rem,2.5vw,1.8rem);font-weight:550;letter-spacing:-.025em;overflow-wrap:anywhere}.empty-state{max-width:var(--measure-reading);padding-block:2rem 4rem;border-top:1px solid var(--color-line);color:var(--color-stone)}.writing-item{display:grid;grid-template-columns:minmax(9rem,.3fr) minmax(0,1fr);gap:3rem;padding-block:2rem;border-bottom:1px solid var(--color-line)}.not-found{display:flex;min-height:calc(100svh - 5.5rem);flex-direction:column;justify-content:space-between;gap:2rem;padding-block:clamp(3rem,8vw,7rem) clamp(2.5rem,5vw,4.5rem)}.not-found h1{width:100%;color:var(--color-ink);font-size:clamp(7rem,32vw,29rem);font-weight:800;letter-spacing:-.11em;line-height:.7;white-space:nowrap}.not-found-copy{display:flex;flex-wrap:wrap;gap:.5rem 2rem;align-items:end;width:100%;padding-top:.5rem}.not-found-copy p{max-width:42ch;margin:0;color:var(--color-ink);font-family:var(--font-ui);font-size:clamp(.95rem,1.4vw,1.2rem);font-weight:550;letter-spacing:-.02em;line-height:1.2}.not-found-copy .text-link{color:var(--color-stone);font-size:.82rem}@keyframes enter-up{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}a{transition-duration:.01ms}.home-hero,.page-intro{animation:none}}@media(max-width:60rem){.home-hero,.section-header,.feature-heading,.feature-grid,.project-detail,.experience-entry,.record-section,.page-intro,.not-found{grid-template-columns:1fr}.record-section{gap:1.5rem}.record-section h2{max-width:none}.home-hero{min-height:auto;gap:4rem}.section-header,.feature-heading,.feature-grid,.page-intro{gap:1.5rem}.section-header h2{max-width:none}.case-study-aside{position:static;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}.case-study-actions{padding-top:0;border-top:0}.experience-entry.is-current{padding-inline:1rem}}@media(max-width:44rem){body{font-size:1rem}.site-header{display:grid;gap:.5rem}.site-header-tools{flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem}.site-nav{justify-content:flex-start;gap:.2rem clamp(.55rem,2vw,1.2rem)}.theme-selector{margin-left:auto}.home-hero{padding-block:4.5rem 4rem}.home-hero h1{max-width:7ch}.home-close{grid-template-columns:1fr}.home-close-copy{grid-template-columns:1fr;gap:1rem}.home-close-copy .inline-links{grid-column:1}.section{padding-block:4rem}.section-header{margin-bottom:2.5rem}.experience-index-entry,.project-entry,.writing-item,.contact-entry{grid-template-columns:1fr;gap:.65rem}.experience-index-abs-group>.experience-index-logo{top:calc(50% - .75rem)}.experience-index-abs-entry:first-child .experience-index-abs-role:after{height:calc(100% + 3.47rem)}.experience-index-logo{left:-4.5rem;width:2rem;height:2rem}.experience-index-entry>p:first-child{grid-column:1;grid-row:2;margin-left:4.5rem;text-align:left}.record-row{grid-template-columns:1fr;gap:.4rem;align-items:start;padding-block:1rem}.project-entry{padding-block:2.25rem}.project-entry-heading{display:grid;gap:.8rem}.project-stack{max-width:none;text-align:left}.project-entry-description{font-size:1.05rem}.project-detail{gap:2.5rem}.case-study-aside{grid-template-columns:1fr;gap:1rem}.case-study-actions{padding-top:1rem;border-top:1px solid var(--color-line)}.experience-entry{gap:1.5rem}.experience-entry.is-current{margin-inline:calc(var(--page-inline) * -1);padding-inline:var(--page-inline)}.contact-entry{align-items:start;min-height:0;padding-block:1.4rem}.contact-index{font-size:.95rem}.site-footer{align-items:start}.not-found{min-height:calc(100svh - 9rem);padding-block:3rem 2.5rem}.not-found h1{font-size:clamp(6rem,30vw,12rem)}}@media(max-width:26rem){.site-header-tools{display:grid;justify-content:stretch;gap:.25rem}.theme-selector{justify-self:start;margin-left:0;padding-left:0;border-left:0}}@media(prefers-reduced-motion:reduce){.site-nav a[aria-current=page]:after{animation:none;transform:scaleX(1)}.theme-selector-indicator,.theme-selector[data-ready=true] .theme-selector-indicator,.theme-option{transition:none}}
