:root{--ground: #f4f2ee;--ground-raised: #fdfcfa;--ground-sunk: #eae6df;--ground-deep: #241f1c;--ink: #1c1a18;--ink-soft: #514c46;--ink-faint: #635d55;--ink-inverse: #f4f2ee;--ink-inverse-soft: #c9c1b5;--accent: #8c1d2f;--accent-bright: #a8354a;--accent-soft: #f0dcdd;--accent-quiet: #8a6f74;--warm: #7a5c24;--warm-bright: #99742f;--line: #e0dbd3;--line-strong: #c7c0b5;--line-input: #857d72;--on-deep-accent: #e59aa4;--shadow-sm: 0 1px 2px rgba(40, 32, 28, .05), 0 2px 8px rgba(40, 32, 28, .04);--shadow-md: 0 2px 6px rgba(40, 32, 28, .05), 0 10px 28px rgba(40, 32, 28, .07);--shadow-lg: 0 4px 12px rgba(40, 32, 28, .06), 0 22px 56px rgba(40, 32, 28, .1);--shadow-glow: 0 6px 18px rgba(140, 29, 47, .14);--hero-fallback: radial-gradient(120% 80% at 14% 20%, rgba(196, 176, 158, .55) 0%, rgba(196, 176, 158, 0) 60%), radial-gradient(92% 72% at 86% 24%, rgba(122, 92, 36, .26) 0%, rgba(122, 92, 36, 0) 62%), radial-gradient(112% 92% at 60% 98%, rgba(140, 29, 47, .34) 0%, rgba(140, 29, 47, 0) 66%), linear-gradient(168deg, #f7f5f1 0%, #efeae3 48%, #e2dad0 100%);--hero-scrim: linear-gradient( 100deg, rgba(244, 242, 238, .94) 0%, rgba(244, 242, 238, .84) 34%, rgba(244, 242, 238, .3) 66%, rgba(244, 242, 238, .04) 100% );--font-display: "Schibsted Grotesk Variable", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-body: "Schibsted Grotesk Variable", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-script: "Caveat Variable", "Segoe Script", cursive;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--step--1: clamp(.83rem, .81rem + .09vw, .89rem);--step-0: clamp(1rem, .96rem + .17vw, 1.09rem);--step-1: clamp(1.2rem, 1.13rem + .31vw, 1.38rem);--step-2: clamp(1.44rem, 1.32rem + .52vw, 1.73rem);--step-3: clamp(1.73rem, 1.53rem + .85vw, 2.18rem);--step-4: clamp(2.07rem, 1.76rem + 1.33vw, 2.75rem);--step-5: clamp(2.49rem, 2.01rem + 2.05vw, 3.46rem);--step-6: clamp(2.99rem, 2.26rem + 3.1vw, 4.6rem);--measure: 58ch;--measure-tight: 47ch;--space-3xs: .25rem;--space-2xs: .5rem;--space-xs: .75rem;--space-s: 1rem;--space-m: 1.5rem;--space-l: 2.25rem;--space-xl: 3.5rem;--space-2xl: 5rem;--space-3xl: clamp(5.5rem, 3rem + 10vw, 9.5rem);--section-pad: clamp(4rem, 2rem + 6vw, 6.5rem);--section-pad-tight: clamp(3rem, 1.6rem + 4.5vw, 4.75rem);--radius-s: 6px;--radius-m: 10px;--radius-l: 12px;--radius-pill: 999px;--radius-leaf: 12px;--radius-leaf-alt: 12px;--radius-petal: 14px;--page-max: 1180px;--page-gutter: clamp(1.25rem, .6rem + 2.8vw, 3rem);--ease-flow: cubic-bezier(.22, .61, .36, 1);--ease-spring: cubic-bezier(.34, 1.4, .5, 1);--dur-fast: .16s;--dur-base: .24s;--dur-slow: .42s;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ground: #16140f;--ground-raised: #201d18;--ground-sunk: #100e0a;--ground-deep: #2a2620;--ink: #efeae1;--ink-soft: #b6ada0;--ink-faint: #8f877b;--ink-inverse: #efeae1;--ink-inverse-soft: #c0b7a8;--accent: #e0616f;--accent-bright: #ec8792;--accent-soft: #2b1a1d;--accent-quiet: #a8848a;--warm: #d3ac6b;--warm-bright: #e2c28d;--line: #2e2921;--line-strong: #453e33;--line-input: #776d5c;--on-deep-accent: #eea3ad;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .24);--shadow-md: 0 2px 6px rgba(0, 0, 0, .4), 0 10px 28px rgba(0, 0, 0, .34);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .44), 0 22px 56px rgba(0, 0, 0, .42);--shadow-glow: 0 6px 18px rgba(232, 132, 144, .16);--hero-fallback: radial-gradient(120% 80% at 14% 20%, rgba(120, 100, 84, .34) 0%, rgba(120, 100, 84, 0) 60%), radial-gradient(92% 72% at 86% 24%, rgba(160, 124, 62, .28) 0%, rgba(160, 124, 62, 0) 62%), radial-gradient(112% 92% at 60% 98%, rgba(140, 40, 56, .4) 0%, rgba(140, 40, 56, 0) 66%), linear-gradient(168deg, #1b1813 0%, #191612 48%, #120f0c 100%);--hero-scrim: linear-gradient( 100deg, rgba(22, 20, 15, .95) 0%, rgba(22, 20, 15, .87) 38%, rgba(22, 20, 15, .38) 72%, rgba(22, 20, 15, .12) 100% );color-scheme:dark}}:root[data-theme=dark]{--ground: #16140f;--ground-raised: #201d18;--ground-sunk: #100e0a;--ground-deep: #2a2620;--ink: #efeae1;--ink-soft: #b6ada0;--ink-faint: #8f877b;--ink-inverse: #efeae1;--ink-inverse-soft: #c0b7a8;--accent: #e0616f;--accent-bright: #ec8792;--accent-soft: #2b1a1d;--accent-quiet: #a8848a;--warm: #d3ac6b;--warm-bright: #e2c28d;--line: #2e2921;--line-strong: #453e33;--line-input: #776d5c;--on-deep-accent: #eea3ad;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .24);--shadow-md: 0 2px 6px rgba(0, 0, 0, .4), 0 10px 28px rgba(0, 0, 0, .34);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .44), 0 22px 56px rgba(0, 0, 0, .42);--shadow-glow: 0 6px 18px rgba(232, 132, 144, .16);--hero-fallback: radial-gradient(120% 80% at 14% 20%, rgba(120, 100, 84, .34) 0%, rgba(120, 100, 84, 0) 60%), radial-gradient(92% 72% at 86% 24%, rgba(160, 124, 62, .28) 0%, rgba(160, 124, 62, 0) 62%), radial-gradient(112% 92% at 60% 98%, rgba(140, 40, 56, .4) 0%, rgba(140, 40, 56, 0) 66%), linear-gradient(168deg, #1b1813 0%, #191612 48%, #120f0c 100%);--hero-scrim: linear-gradient( 100deg, rgba(22, 20, 15, .95) 0%, rgba(22, 20, 15, .87) 38%, rgba(22, 20, 15, .38) 72%, rgba(22, 20, 15, .12) 100% );color-scheme:dark}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/fonts/schibsted-grotesk-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/fonts/schibsted-grotesk-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/fonts/caveat-latin-wght-normal.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Caveat Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/fonts/caveat-latin-ext-wght-normal.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:6rem;overflow-x:clip}body{min-height:100svh;background-color:var(--ground);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);font-weight:400;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img,picture,video,canvas,svg{display:block;max-width:100%}img,video{height:auto}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}p,li{text-wrap:pretty}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:1.06;letter-spacing:-.022em;text-wrap:balance}h1{font-size:var(--step-6);font-weight:700;letter-spacing:-.04em;line-height:1}h2{font-size:var(--step-4);letter-spacing:-.032em}h3{font-size:var(--step-2);letter-spacing:-.025em}h4{font-size:var(--step-1);font-weight:600;letter-spacing:-.015em}a{color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 35%,transparent);text-underline-offset:.22em;text-decoration-thickness:1px;transition:color var(--dur-fast) var(--ease-flow),text-decoration-color var(--dur-fast) var(--ease-flow),text-decoration-thickness var(--dur-fast) var(--ease-flow)}a:hover{color:var(--warm);text-decoration-color:currentColor;text-decoration-thickness:2px}strong{font-weight:650;color:var(--ink)}::selection{background:var(--accent-soft);color:var(--ink)}:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:4px}.skip-link{position:absolute;top:0;left:50%;transform:translate(-50%,-120%);z-index:200;padding:var(--space-xs) var(--space-m);background:var(--ground-raised);color:var(--ink);border-radius:0 0 var(--radius-m) var(--radius-m);box-shadow:var(--shadow-md);font-weight:600;text-decoration:none;transition:transform var(--dur-base) var(--ease-flow)}.skip-link:focus-visible{transform:translate(-50%)}.wrap{width:100%;max-width:var(--page-max);margin-inline:auto;padding-inline:var(--page-gutter)}.wrap-narrow{max-width:78ch}.prose>*+*{margin-block-start:var(--space-m)}.prose>*+:is(h3,h4){margin-block-start:var(--space-xl)}.prose>*+h2{margin-block-start:var(--space-2xl)}.prose :is(h2,h3,h4)+*{margin-block-start:var(--space-s)}.prose p{max-width:var(--measure);color:var(--ink-soft)}.stack-s>*+*{margin-block-start:var(--space-2xs)}.stack>*+*{margin-block-start:var(--space-s)}.stack-l>*+*{margin-block-start:var(--space-l)}section[id]{scroll-margin-top:5.5rem}.section{padding-block:var(--section-pad)}.section-tight{padding-block:var(--section-pad-tight)}.section-intro{padding-block:var(--section-pad) var(--space-l)}.section-head:last-child{margin-block-end:0}.eyebrow{display:inline-flex;align-items:center;gap:var(--space-2xs);font-family:var(--font-body);font-size:var(--step--1);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.eyebrow:before{content:"";width:1.75rem;height:2px;border-radius:2px;background:currentColor;opacity:.55}.section-head{max-width:var(--measure);margin-block-end:var(--space-2xl)}.section-head .eyebrow+:is(h1,h2,h3){margin-block-start:var(--space-s)}.section-head h1,.notfound h1{font-size:var(--step-4);letter-spacing:-.032em;line-height:1.06}.section-head p{margin-block-start:var(--space-m);color:var(--ink-soft);font-size:var(--step-1);line-height:1.6;max-width:var(--measure-tight)}.prose .lead,.lead{font-size:var(--step-1);line-height:1.55;color:var(--ink-soft);max-width:var(--measure-tight)}.flow-rule{display:block;width:100%;height:2.5rem;color:var(--line);opacity:.9}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}[data-reveal].reveal{opacity:0;transform:translateY(22px);transition:opacity .56s var(--ease-flow),transform .64s var(--ease-flow);transition-delay:var(--reveal-delay, 0ms);will-change:opacity,transform}[data-reveal].reveal.is-in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}[data-reveal].reveal{opacity:1;transform:none}}@media print{.site-nav,.site-footer,.hero-canvas,.theme-toggle,.role-tablist{display:none!important}[hidden]{display:revert!important}body{background:#fff;color:#000}}@view-transition{navigation:auto}@media(prefers-reduced-motion:no-preference){::view-transition-old(root){animation:vt-out .14s var(--ease-flow) both}::view-transition-new(root){animation:vt-in .22s var(--ease-flow) both}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0;transform:translateY(6px)}}}@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2xs);min-height:44px;padding:var(--space-2xs) var(--space-m);border-radius:var(--radius-m);font-family:var(--font-body);font-size:var(--step-0);font-weight:600;line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-base) var(--ease-flow),color var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow)}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:var(--accent);color:var(--ground-raised);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--ink);color:var(--ground-raised);box-shadow:var(--shadow-md)}.btn-secondary{background:transparent;color:var(--ink);border:1.5px solid var(--line-strong)}.btn-secondary:hover{color:var(--ink);border-color:var(--accent);background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}.btn-ghost{padding-inline:var(--space-s);color:var(--ink-soft)}.btn-ghost:hover{color:var(--accent)}.btn-lg{min-height:52px;padding-inline:var(--space-l);font-size:var(--step-1)}.btn .arrow{transition:transform var(--dur-base) var(--ease-flow)}.btn:hover .arrow{transform:translate(3px)}.chip{display:inline-flex;align-items:center;gap:.4em;padding:.25em .75em;border-radius:var(--radius-pill);font-size:var(--step--1);font-weight:550;line-height:1.5;letter-spacing:.01em;background:color-mix(in srgb,var(--accent-soft) 55%,transparent);color:var(--accent);border:1px solid transparent}.chip-year{background:transparent;color:var(--ink-faint);border-color:var(--line);font-variant-numeric:tabular-nums}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-3xs) var(--space-2xs)}.site-nav{position:sticky;top:0;z-index:100;padding-block:var(--space-2xs);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);background:color-mix(in srgb,var(--ground) 78%,transparent);border-bottom:1px solid transparent;transition:border-color var(--dur-base) var(--ease-flow),background-color var(--dur-base) var(--ease-flow)}.site-nav.is-stuck{border-bottom-color:var(--line);background:color-mix(in srgb,var(--ground) 92%,transparent)}.nav-inner{display:flex;align-items:center;gap:var(--space-m);min-height:60px}.nav-brand{display:inline-flex;align-items:center;gap:.55rem;font-family:var(--font-display);font-size:var(--step-1);font-weight:600;letter-spacing:-.02em;color:var(--ink);text-decoration:none;margin-inline-end:auto}.nav-brand:hover{color:var(--accent)}.nav-mark{flex:none;width:26px;height:26px;color:var(--accent)}.nav-links{display:flex;align-items:center;gap:var(--space-3xs)}.nav-link{position:relative;display:inline-flex;align-items:center;min-height:40px;padding:0 var(--space-s);border-radius:var(--radius-pill);font-size:var(--step--1);font-weight:550;letter-spacing:.01em;color:var(--ink-soft);text-decoration:none;transition:color var(--dur-fast) var(--ease-flow),background-color var(--dur-fast) var(--ease-flow)}.nav-link:hover{color:var(--ink);background:color-mix(in srgb,var(--accent-soft) 40%,transparent)}.nav-link.active{color:var(--accent)}.nav-link.active:after{content:"";position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:16px;height:2px;border-radius:2px;background:currentColor}.nav-actions{display:flex;align-items:center;gap:var(--space-2xs)}.nav-cv{min-height:40px;padding-inline:var(--space-s);font-size:var(--step--1)}.theme-toggle{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-pill);color:var(--ink-soft);transition:color var(--dur-fast) var(--ease-flow),background-color var(--dur-fast) var(--ease-flow)}.theme-toggle:hover{color:var(--ink);background:color-mix(in srgb,var(--accent-soft) 40%,transparent)}.theme-toggle svg{width:19px;height:19px}.theme-toggle .icon-moon{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-moon{display:block}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .icon-sun{display:none}:root:not([data-theme=light]) .theme-toggle .icon-moon{display:block}}.nav-toggle{display:none;align-items:center;gap:.5rem;min-height:40px;padding:0 var(--space-s);border-radius:var(--radius-pill);border:1.5px solid var(--line-strong);font-size:var(--step--1);font-weight:600;color:var(--ink)}@media(max-width:860px){.nav-toggle{display:inline-flex}.nav-links{display:none;position:absolute;top:calc(100% + 8px);right:var(--page-gutter);left:var(--page-gutter);flex-direction:column;align-items:stretch;gap:2px;padding:var(--space-2xs);background:var(--ground-raised);border:1px solid var(--line);border-radius:var(--radius-l);box-shadow:var(--shadow-lg)}.nav-links.is-open{display:flex}html:not(.js) .nav-toggle{display:none}html:not(.js) .nav-links{display:flex;position:static;flex-direction:row;flex-wrap:wrap;gap:var(--space-3xs);padding:0;background:none;border:none;box-shadow:none}html:not(.js) .nav-link{min-height:40px;font-size:var(--step--1)}html:not(.js) .nav-inner{flex-wrap:wrap;padding-block:var(--space-2xs)}html:not(.js) .nav-brand{margin-inline-end:auto}.nav-link{min-height:48px;justify-content:flex-start;border-radius:var(--radius-m);font-size:var(--step-0)}.nav-link.active:after{left:auto;right:var(--space-s);bottom:auto;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%}.nav-cv span.nav-cv-long{display:none}}@media(max-width:480px){.nav-brand span{display:none}}.hero{position:relative;isolation:isolate;display:flex;align-items:center;min-height:min(78svh,720px);padding-block:var(--space-2xl) var(--space-2xl);overflow:hidden}.hero-bg{position:absolute;inset:0;z-index:-2;background:var(--hero-fallback)}.hero-canvas{position:absolute;inset:0;z-index:-2;width:100%;height:100%;opacity:0;transition:opacity .9s var(--ease-flow)}.hero-canvas.is-ready{opacity:1}.hero:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--hero-scrim)}.hero:after{content:"";position:absolute;right:-5%;bottom:-1px;left:-5%;z-index:-1;height:clamp(48px,7vw,96px);background:var(--ground);border-radius:50% 50% 0 0/100% 100% 0 0}.hero-inner{position:relative;width:100%}.hero+.section,.hero+.section-tight{padding-block-start:var(--space-l)}.hero-status{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2xs) var(--space-s);margin-block-end:var(--space-m);font-size:var(--step--1);font-weight:550;color:var(--ink-soft)}.hero-status .dot{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}.hero-status .status-open{display:inline-flex;align-items:center;gap:.5em;padding:.2em .75em;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent-soft) 60%,transparent);color:var(--accent);font-weight:650}.hero-status .status-open:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.hero h1{margin-block-end:var(--space-s)}.hero-pitch{max-width:22ch;font-family:var(--font-display);font-size:var(--step-3);font-weight:400;line-height:1.22;letter-spacing:-.018em;color:var(--ink-soft);text-wrap:balance}.hero-pitch em{font-style:normal;color:var(--accent)}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-block-start:var(--space-l)}@media(max-width:700px){.hero{min-height:0;padding-block:var(--space-xl) var(--space-2xl)}.hero-pitch{max-width:100%;font-size:var(--step-2)}}.roles{position:relative}.role-tablist{display:flex;flex-wrap:wrap;gap:var(--space-2xs);padding:var(--space-3xs);margin-block-end:var(--space-xl);border-radius:var(--radius-pill);background:var(--ground-sunk);width:fit-content;max-width:100%}.role-tab{display:inline-flex;align-items:center;gap:.5em;min-height:46px;padding:0 var(--space-m);border-radius:var(--radius-pill);font-size:var(--step-0);font-weight:600;color:var(--ink-soft);transition:background-color var(--dur-base) var(--ease-flow),color var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow)}.role-tab:hover{color:var(--ink)}.role-tab[aria-selected=true]{background:var(--ground-raised);color:var(--accent);box-shadow:var(--shadow-sm)}.role-panel-fallback-heading{font-size:var(--step-2);margin-block-end:var(--space-s);color:var(--accent)}.js .role-panel-fallback-heading,.js .role-panel[hidden]{display:none}.role-panel{animation:role-in var(--dur-base) var(--ease-flow) both}.role-panel+.role-panel{margin-block-start:var(--space-2xl)}.js .role-panel+.role-panel{margin-block-start:0}@keyframes role-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.role-work{margin-block-start:var(--space-2xl)}.role-work-heading{font-family:var(--font-body);font-size:var(--step--1);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-block-end:var(--space-s)}@media(max-width:900px){.role-work{margin-block-start:var(--space-xl)}.role-tablist{width:100%;justify-content:stretch}.role-tab{flex:1 1 auto;justify-content:center;padding-inline:var(--space-s);font-size:var(--step--1)}}.role-summary h3{font-size:var(--step-3);margin-block-end:var(--space-s)}.role-summary>p{color:var(--ink-soft);max-width:var(--measure-tight)}.role-skills{margin-block-start:var(--space-2xl)}.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--space-m) var(--space-l)}.skill-group{padding-block-start:var(--space-s);border-top:1px solid var(--line)}.skill-group h4{font-family:var(--font-body);font-size:var(--step--1);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-block-end:var(--space-2xs)}.skill-group ul{display:flex;flex-wrap:wrap;gap:var(--space-3xs) var(--space-2xs);list-style:none;padding:0}.skill-group li{font-size:var(--step--1);font-weight:500;color:var(--ink-soft)}.skill-group li:not(:last-child):after{content:"·";margin-inline-start:var(--space-2xs);color:var(--line-strong)}.skill-note{margin-block-start:var(--space-2xs);font-size:var(--step--1);color:var(--ink-faint);max-width:var(--measure)}.project-grid{display:grid;gap:var(--space-m)}.project{container-type:inline-size;border-radius:var(--radius-petal);background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow)}.project:nth-child(2n){border-radius:var(--radius-petal)}.project:hover,.project[open]{box-shadow:var(--shadow-md);border-color:var(--line-strong)}.project:target{border-color:var(--accent)}.project>summary{display:block;list-style:none;cursor:pointer;padding:var(--space-m)}.project>summary::-webkit-details-marker{display:none}.project>summary:focus-visible{outline-offset:-3px}.project-head{display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr) auto;gap:var(--space-m);align-items:stretch}.project-meta,.project-head>.project-expand{align-self:center}.project-thumb{border-radius:var(--radius-l);overflow:hidden;background:var(--ground-sunk);border:1px solid var(--line);height:100%;min-height:clamp(140px,16vw,230px)}.project-thumb img,.project-thumb video{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-flow)}.project:hover .project-thumb img{transform:scale(1.025)}.project-title{font-size:var(--step-2);margin-block-end:var(--space-3xs)}.project-kicker{font-size:var(--step--1);font-weight:650;color:var(--warm);margin-block-end:var(--space-3xs)}.project-summary-text{color:var(--ink-soft);font-size:var(--step-0);margin-block:var(--space-2xs);max-width:52ch}.project-expand{display:inline-flex;align-items:center;gap:.5em;min-height:44px;padding:0 var(--space-s);border-radius:var(--radius-pill);border:1.5px solid var(--line-strong);font-size:var(--step--1);font-weight:600;color:var(--ink-soft);white-space:nowrap;transition:color var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow),background-color var(--dur-base) var(--ease-flow)}.project:hover .project-expand{color:var(--accent);border-color:var(--accent)}.project-expand svg{width:14px;height:14px;transition:transform var(--dur-base) var(--ease-flow)}.project[open] .project-expand svg{transform:rotate(180deg)}.project[open] .project-expand .label-open{display:none}.project:not([open]) .project-expand .label-close{display:none}.project-reveal{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-slow) var(--ease-flow)}.project[open] .project-reveal,.showcase-more[open] .project-reveal{grid-template-rows:1fr}.project-reveal>div{overflow:hidden}.project-body{padding:0 var(--space-m) var(--space-m);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-l);border-top:1px solid var(--line);padding-block-start:var(--space-m);margin-inline:var(--space-m);padding-inline:0}.project-detail :is(h4,h5){font-family:var(--font-body);font-size:var(--step--1);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-block-end:var(--space-2xs)}.project-detail+.project-detail{margin-block-start:var(--space-m)}.project-detail ul{padding-inline-start:1.1em;color:var(--ink-soft)}.project-detail li+li{margin-block-start:var(--space-2xs)}.project-detail li::marker{color:var(--accent)}.project-result{padding:var(--space-s) var(--space-m);border-radius:var(--radius-leaf);background:color-mix(in srgb,var(--accent-soft) 40%,transparent);color:var(--ink);font-weight:550}.project-links{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-block-start:var(--space-m)}.project-media{display:grid;gap:var(--space-2xs)}.project-media-empty{display:grid;place-items:center;padding:var(--space-l);text-align:center;border:1.5px dashed var(--line-strong);border-radius:var(--radius-leaf);color:var(--ink-faint);font-size:var(--step--1);background:var(--ground-sunk)}@container (max-width: 700px){.project-head{grid-template-columns:minmax(0,42%) minmax(0,1fr);grid-template-areas:"thumb text" "expand expand";gap:var(--space-s)}.project-thumb{grid-area:thumb}.project-head>div:not(.project-thumb){grid-area:text}.project-expand{grid-area:expand;justify-self:start}}@container (max-width: 460px){.project-head{grid-template-columns:minmax(0,1fr);grid-template-areas:"thumb" "text" "expand"}.project-thumb{height:auto;aspect-ratio:2 / 1;min-height:0}}@container (max-width: 760px){.project-body{grid-template-columns:minmax(0,1fr);gap:var(--space-m)}}.archive{border-radius:var(--radius-petal);border:1px solid var(--line);background:var(--ground-raised);overflow:hidden}.archive-row{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1.6fr) auto;gap:var(--space-s) var(--space-m);align-items:baseline;padding:var(--space-s) var(--space-m);transition:background-color var(--dur-fast) var(--ease-flow)}.archive-row+.archive-row{border-top:1px solid var(--line)}.archive-row:hover{background:color-mix(in srgb,var(--accent-soft) 26%,transparent)}.archive-name{font-family:var(--font-display);font-size:var(--step-1);font-weight:550}.archive-name a{color:inherit;text-decoration:none}.archive-name a:hover{color:var(--accent)}.archive-what{color:var(--ink-soft);font-size:var(--step--1)}@media(max-width:720px){.archive-row{grid-template-columns:minmax(0,1fr);gap:var(--space-3xs)}}.media{position:relative;border-radius:var(--radius-leaf);overflow:hidden;background:var(--ground-sunk)}.media-alt{border-radius:var(--radius-leaf-alt)}.media img,.media video{width:100%;height:auto}.media figcaption{padding:var(--space-2xs) var(--space-s) var(--space-xs);font-size:var(--step--1);color:var(--ink-faint)}.about-layout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(var(--space-l),4vw,var(--space-2xl));align-items:start}.about-portrait{width:clamp(180px,20vw,272px);position:sticky;top:7rem;isolation:isolate}.about-portrait .media{border-radius:50%;background:var(--ground-sunk);box-shadow:var(--shadow-md);transition:transform var(--dur-slow) var(--ease-flow),box-shadow var(--dur-slow) var(--ease-flow)}.about-portrait:after{content:"";position:absolute;inset:-10px;border-radius:50%;border:1.5px solid color-mix(in srgb,var(--accent) 34%,transparent);pointer-events:none;transition:inset var(--dur-slow) var(--ease-flow),border-color var(--dur-slow) var(--ease-flow)}.about-portrait:hover .media{transform:scale(1.015);box-shadow:var(--shadow-lg)}.about-portrait:hover:after{inset:-16px;border-color:color-mix(in srgb,var(--accent) 55%,transparent)}.about-portrait img{width:100%;height:100%;object-fit:cover}@media(max-width:780px){.about-layout{grid-template-columns:minmax(0,1fr);gap:var(--space-l);justify-items:start}.about-portrait{position:relative;top:auto;width:clamp(140px,40vw,200px)}}.about-close{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-m);margin-block-start:var(--space-l)}.about-close .about-motto{margin:0;font-family:var(--font-script);font-size:var(--step-3);font-weight:600;line-height:1.1;color:var(--accent);transform:rotate(-2deg);transform-origin:left center}@media(prefers-reduced-motion:no-preference){.about-close .about-motto{transition:transform var(--dur-base) var(--ease-flow)}.about-close:hover .about-motto{transform:rotate(-2deg) translateY(-2px)}}.writing-list{display:grid;gap:var(--space-s);margin-block-start:var(--space-m)}.writing-item{padding:var(--space-m);border-radius:var(--radius-leaf);background:var(--ground-raised);border:1px solid var(--line)}.writing-item.is-published{border-color:color-mix(in srgb,var(--accent) 35%,var(--line));box-shadow:var(--shadow-sm);border-inline-start:3px solid var(--accent)}.writing-venue{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2xs);margin-block-end:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);font-weight:500;letter-spacing:.02em}.writing-venue [data-icon]{color:var(--accent)}.writing-published{padding:.1em .6em;border-radius:var(--radius-pill);background:var(--accent);color:var(--ground-raised);text-transform:uppercase;letter-spacing:.08em;font-size:.85em}.writing-venue-name{color:var(--ink-soft)}.writing-abstract-toggle>summary{display:inline-flex;align-items:center;gap:var(--space-2xs);cursor:pointer;list-style:none;margin-block-start:var(--space-s)}.writing-abstract-toggle>summary::-webkit-details-marker{display:none}.writing-abstract-toggle>summary .chip{transition:color var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow)}.writing-abstract-toggle>summary:hover .chip{color:var(--accent);border-color:var(--accent)}.writing-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-s);margin-block-start:var(--space-s)}.writing-doi{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-faint)}.writing-doi a{color:inherit;text-decoration:underline;text-underline-offset:.2em}.writing-doi a:hover{color:var(--accent)}.writing-title{font-family:var(--font-display);font-size:var(--step-1);font-weight:550;max-width:var(--measure)}.writing-meta{font-size:var(--step--1);color:var(--ink-faint);margin-block-start:var(--space-3xs)}.writing-abstract{margin-block-start:var(--space-s);padding-block-start:var(--space-s);border-top:1px solid var(--line);color:var(--ink-soft);font-size:var(--step--1)}.writing-status{margin-block-start:var(--space-2xs);font-size:var(--step--1);color:var(--ink-faint);font-style:italic}.art-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:var(--space-m)}.art-item{display:block;width:100%;padding:0;text-align:left;border-radius:var(--radius-leaf);overflow:hidden;background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);cursor:zoom-in;transition:transform var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow)}.art-item:nth-child(3n+2){border-radius:var(--radius-leaf-alt)}.art-item:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.art-item img{width:100%;aspect-ratio:4 / 3;object-fit:cover}.art-title{padding:var(--space-2xs) var(--space-s) var(--space-xs);font-family:var(--font-display);font-size:var(--step-0);font-weight:550;color:var(--ink)}.art-modal{display:none;position:fixed;inset:0;z-index:200;align-items:center;justify-content:center;padding:var(--space-m);background:color-mix(in srgb,var(--ground) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.art-modal[open],.art-modal.is-open{display:flex}.modal-content{position:relative;display:grid;gap:var(--space-s);width:min(1000px,100%);max-height:92svh;padding:var(--space-m);border-radius:var(--radius-petal);background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-lg);overflow:auto}.modal-content img{width:100%;max-height:62svh;object-fit:contain;border-radius:var(--radius-m);background:var(--ground-sunk)}.modal-info h2{font-size:var(--step-2);margin-block-end:var(--space-2xs)}.modal-info p{color:var(--ink-soft);font-size:var(--step--1);max-width:var(--measure)}.modal-close,.modal-nav{position:absolute;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);color:var(--ink);font-size:1.25rem;line-height:1}.modal-close:hover,.modal-nav:hover{background:var(--accent-soft)}.modal-close{top:var(--space-2xs);right:var(--space-2xs);z-index:2}.modal-prev{left:calc(var(--space-2xs) * -1);top:40%}.modal-next{right:calc(var(--space-2xs) * -1);top:40%}.hobby{padding-block:var(--space-xl)}.hobby+.hobby{border-top:1px solid var(--line)}.hobby-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(var(--space-l),5vw,var(--space-2xl));align-items:center}.hobby-row.is-flipped .hobby-text{order:2}.hobby-kicker{display:inline-flex;align-items:center;gap:var(--space-2xs);font-size:var(--step--1);font-weight:700;letter-spacing:.14em;color:var(--accent);margin-block-end:var(--space-s);font-variant-numeric:tabular-nums}.hobby-kicker svg{width:1.15em;height:1.15em;stroke-width:1.75}.hobby-text :is(h2,h3){font-size:var(--step-3);margin-block-end:var(--space-m)}.hobby-text p{color:var(--ink-soft);max-width:var(--measure-tight)}.hobby-link{margin-block-start:var(--space-l)}.hobby-media .media{border-radius:var(--radius-petal);box-shadow:var(--shadow-sm)}.hobby-row.is-flipped .hobby-media .media{border-radius:var(--radius-leaf-alt)}.hobby-teaser{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2xs);text-decoration:none;border-radius:var(--radius-petal);padding:var(--space-2xs);background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);transition:box-shadow var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow)}.hobby-teaser:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 45%,transparent);box-shadow:var(--shadow-md)}.hobby-teaser-cell{display:block;overflow:hidden;border-radius:var(--radius-m);aspect-ratio:4 / 3;background:var(--ground-sunk)}.hobby-teaser-cell:first-child{border-radius:32px var(--radius-m) var(--radius-m) var(--radius-m)}.hobby-teaser-cell:last-child{border-radius:var(--radius-m) var(--radius-m) 32px var(--radius-m)}.hobby-teaser-cell img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease-flow),filter var(--dur-base) var(--ease-flow)}.hobby-teaser:hover .hobby-teaser-cell img{transform:scale(1.05)}.hobby-teaser-cell:nth-child(3) img{transition-delay:60ms}.hobby-teaser-cell:nth-child(4) img{transition-delay:90ms}.hobby-teaser-cell:nth-child(5) img{transition-delay:.12s}.hobby-teaser-more{position:absolute;inset-inline-end:var(--space-s);inset-block-end:var(--space-s);display:inline-flex;align-items:center;gap:.4em;padding:.4em .9em;border-radius:var(--radius-pill);background:var(--ground-deep);color:var(--on-deep-accent);font-size:var(--step--1);font-weight:650;box-shadow:var(--shadow-md);transition:transform var(--dur-base) var(--ease-spring)}.hobby-teaser-more svg{width:1em;height:1em}.hobby-teaser:hover .hobby-teaser-more{transform:translate(2px,-2px)}@media(max-width:820px){.hobby-row{grid-template-columns:minmax(0,1fr);gap:var(--space-l)}.hobby-row.is-flipped .hobby-text{order:0}.hobby{padding-block:var(--space-l)}}.contact-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.85fr);gap:var(--space-xl);align-items:start}@media(max-width:860px){.contact-layout{grid-template-columns:minmax(0,1fr);gap:var(--space-l)}}.contact-form{display:grid;gap:var(--space-xs);padding:var(--space-l);border-radius:var(--radius-petal);background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.form-label{font-size:var(--step--1);font-weight:650;color:var(--ink)}.form-input,.form-textarea{width:100%;min-height:48px;padding:var(--space-2xs) var(--space-s);border-radius:var(--radius-m);border:1.5px solid var(--line-input);background:var(--ground);color:var(--ink);font-size:var(--step-0);transition:border-color var(--dur-fast) var(--ease-flow),box-shadow var(--dur-fast) var(--ease-flow)}.form-textarea{min-height:140px;resize:vertical;line-height:1.6;padding-block:var(--space-2xs)}.form-input::placeholder,.form-textarea::placeholder{color:var(--ink-faint)}.form-input:focus-visible,.form-textarea:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.form-status{min-height:1.5em;font-size:var(--step--1);font-weight:550}.form-status.is-error,.form-status.is-ok{color:var(--accent)}.contact-aside{display:grid;gap:var(--space-m)}.contact-block{padding:var(--space-m);border-radius:var(--radius-leaf);background:var(--ground-sunk)}.contact-block :is(h2,h3){font-size:var(--step-1);margin-block-end:var(--space-2xs)}.contact-block p,.contact-block li{color:var(--ink-soft);font-size:var(--step--1)}.contact-block ul{padding-inline-start:1.1em}.contact-block li::marker{color:var(--accent)}.contact-direct{margin-block-end:var(--space-xl)}.contact-direct-title{font-family:var(--font-mono);font-weight:500;font-size:var(--step--1);letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-block-end:var(--space-s)}.contact-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:var(--space-s);list-style:none;padding:0}.contact-link{display:flex;align-items:center;gap:var(--space-s);min-height:68px;height:100%;padding:var(--space-s);border-radius:var(--radius-petal);background:var(--ground-raised);border:1px solid var(--line);box-shadow:var(--shadow-sm);color:var(--ink);text-decoration:none;transition:background-color var(--dur-fast) var(--ease-flow),color var(--dur-fast) var(--ease-flow),border-color var(--dur-fast) var(--ease-flow),transform var(--dur-fast) var(--ease-flow),box-shadow var(--dur-fast) var(--ease-flow)}.contact-link:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-md)}.contact-link-text{display:grid;gap:2px;min-width:0}.contact-link-name{font-weight:650;font-size:var(--step-0)}.contact-link-handle{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-link:hover .contact-link-handle{color:inherit}.contact-link svg{flex:none;width:20px;height:20px;color:var(--accent)}.contact-link-mark{width:26px!important;height:26px!important}.contact-link-out{margin-inline-start:auto;opacity:.6}.contact-direct-extra{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-s);margin-block-start:var(--space-s)}.email-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2xs);margin-block-start:var(--space-2xs)}.email-row a{font-family:var(--font-mono);font-size:var(--step--1);word-break:break-all}.copy-btn{min-height:36px;padding:0 var(--space-s);border-radius:var(--radius-pill);border:1.5px solid var(--line-strong);font-size:var(--step--1);font-weight:600;color:var(--ink-soft)}.copy-btn:hover{color:var(--accent);border-color:var(--accent)}.site-footer{position:relative;margin-block-start:var(--space-3xl);padding-block:var(--space-2xl) var(--space-l);background:var(--ground-deep);color:var(--ink-inverse);border-radius:clamp(40px,6vw,80px) clamp(40px,6vw,80px) 0 0}.footer-inner{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(2,minmax(0,.8fr));gap:var(--space-l)}@media(max-width:760px){.footer-inner{grid-template-columns:minmax(0,1fr)}}.footer-word{font-family:var(--font-display);font-size:var(--step-3);font-weight:500;line-height:1.15;color:var(--ink-inverse);max-width:18ch}.footer-inner :is(h2,h3){font-family:var(--font-body);font-size:var(--step--1);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-inverse-soft);margin-block-end:var(--space-2xs)}.footer-inner ul{list-style:none;padding:0;display:grid;gap:var(--space-3xs)}.footer-inner a{display:inline-block;padding-block:6px;color:var(--ink-inverse);text-decoration:none;opacity:.86}.footer-inner a:hover{color:var(--on-deep-accent);opacity:1;text-decoration:underline}.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-s);margin-block-start:var(--space-xl);padding-block-start:var(--space-m);border-top:1px solid color-mix(in srgb,var(--ink-inverse) 18%,transparent);font-size:var(--step--1);color:var(--ink-inverse-soft)}.notfound{display:grid;place-items:center;min-height:62svh;text-align:center}.role-tablist{display:none}.js .role-tablist{display:flex}dialog.art-modal{max-width:none;max-height:none;width:100%;height:100%;padding:var(--space-m);border:none;background:color-mix(in srgb,var(--ground) 88%,transparent);color:var(--ink)}dialog.art-modal::backdrop{background:color-mix(in srgb,var(--ground) 72%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}[data-icon]{display:inline-block;flex:none;width:1em;height:1em;vertical-align:-.125em}[data-icon^=simple-icons]{width:.92em;height:.92em}.chip svg{width:1.05em;height:1.05em;opacity:.9}.chip-tech{background:var(--ground-sunk);color:var(--ink);border-color:var(--line);transition:border-color var(--dur-fast) var(--ease-flow),background-color var(--dur-fast) var(--ease-flow)}.project:hover .chip-tech{border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent-soft) 30%,var(--ground-sunk))}.btn svg{width:1.05em;height:1.05em}.btn-primary:hover{box-shadow:var(--shadow-md),var(--shadow-glow)}.scroll-progress{position:absolute;left:0;bottom:-1px;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--accent),var(--warm));opacity:0;pointer-events:none}@supports (animation-timeline: scroll()){@media(prefers-reduced-motion:no-preference){.scroll-progress{opacity:1;animation:progress-grow linear both;animation-timeline:scroll(root block)}@keyframes progress-grow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}}}.site-nav.is-stuck .nav-inner{min-height:52px}.site-nav .nav-inner{transition:min-height var(--dur-base) var(--ease-flow)}.site-nav.is-stuck .nav-brand{font-size:var(--step-0)}.site-nav .nav-brand{transition:font-size var(--dur-base) var(--ease-flow),color var(--dur-fast) var(--ease-flow)}.site-nav.is-stuck .nav-mark{width:22px;height:22px}.site-nav .nav-mark{transition:width var(--dur-base) var(--ease-flow),height var(--dur-base) var(--ease-flow)}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){.hero-inner{animation:hero-depart linear both;animation-timeline:view(block);animation-range:exit-crossing 0% exit-crossing 90%}@keyframes hero-depart{to{opacity:.15;transform:translateY(-3rem) scale(.97)}}}}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){.eyebrow:before{animation:rule-draw linear both;animation-timeline:view(block);animation-range:entry 10% entry 60%}@keyframes rule-draw{0%{width:0;opacity:0}to{width:1.75rem;opacity:.55}}}}.nav-link:before{content:"";position:absolute;bottom:4px;left:50%;width:16px;height:2px;border-radius:2px;background:currentColor;transform:translate(-50%) scaleX(0);transform-origin:50% 50%;transition:transform var(--dur-base) var(--ease-spring)}.nav-link:hover:before{transform:translate(-50%) scaleX(1)}.nav-link.active:before{display:none}.project{transition:box-shadow var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow)}.project:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.project[open]{transform:none}.project:hover .project-title{color:var(--accent)}.project-title{transition:color var(--dur-base) var(--ease-flow)}.archive-row{position:relative}.archive-row:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;width:3px;background:var(--accent);transform:scaleY(0);transform-origin:50% 0;transition:transform var(--dur-base) var(--ease-flow)}.archive-row:hover:before{transform:scaleY(1)}.writing-item{transition:border-color var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow)}.writing-item:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 40%,transparent);box-shadow:var(--shadow-sm)}.writing-item summary h4{transition:color var(--dur-base) var(--ease-flow)}.writing-item:hover summary h4{color:var(--accent)}.skill-group li{transition:color var(--dur-fast) var(--ease-flow)}.skills:hover .skill-group li{color:var(--ink)}.role-tab svg{width:1.1em;height:1.1em;opacity:.75;transition:opacity var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-spring)}.role-tab:hover svg{opacity:1;transform:translateY(-1px)}.role-tab[aria-selected=true] svg{opacity:1}.art-item{transition:transform var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow)}.art-item:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.media-placeholder{display:grid;place-items:center;height:100%;padding:var(--space-m);text-align:center;color:var(--ink-faint);font-size:var(--step--1);background:repeating-linear-gradient(-45deg,transparent 0 10px,color-mix(in srgb,var(--accent-soft) 45%,transparent) 10px 11px),var(--ground-sunk)}@media(prefers-reduced-motion:reduce){.project:hover,.writing-item:hover,.art-item:hover,.hobby-teaser:hover{transform:none}}.role-summary h3{display:flex;align-items:center;gap:var(--space-xs)}.role-summary-icon{flex:none;width:2.4rem;height:2.4rem;padding:.55rem;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--accent-soft) 60%,transparent);color:var(--accent);stroke-width:1.75}.project-result{display:flex;align-items:flex-start;gap:var(--space-xs)}.project-result svg{flex:none;width:1.15em;height:1.15em;margin-block-start:.2em;color:var(--warm)}.contact-link{display:flex;align-items:center;gap:var(--space-xs)}.contact-link-out{margin-inline-start:auto;opacity:0;transform:translate(-4px,4px);transition:opacity var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow)}.contact-link:hover .contact-link-out,.contact-link:focus-visible .contact-link-out{opacity:1;transform:none}.contact-block{transition:border-color var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow)}.contact-block:hover{border-color:color-mix(in srgb,var(--accent) 34%,transparent)}.site-footer li a{display:inline-flex;align-items:center;gap:.55em}.footer-bottom p{display:inline-flex;align-items:center;gap:.4em}.copy-btn{display:inline-flex;align-items:center;gap:.45em}.copy-btn svg{width:1em;height:1em}.phone-row{display:flex;gap:var(--space-s);margin-block-start:var(--space-m);padding-block-end:var(--space-2xs);overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.phone-shot{flex:0 0 auto;width:clamp(140px,26%,200px);margin:0;scroll-snap-align:start}.phone-shot .media{border-radius:18px;border:1px solid var(--line);background:var(--ground-sunk);box-shadow:var(--shadow-sm);transition:transform var(--dur-base) var(--ease-flow),box-shadow var(--dur-base) var(--ease-flow)}.phone-shot:hover .media{transform:translateY(-3px);box-shadow:var(--shadow-md)}.phone-shot figcaption{margin-block-start:var(--space-2xs);font-size:var(--step--1);line-height:1.45;color:var(--ink-faint)}@container (max-width: 760px){.phone-shot{width:clamp(150px,40%,210px)}}.eyebrow,.chip,.project-kicker,.role-work-heading,.skill-group h4,.project-detail :is(h4,h5),.hobby-kicker,.writing-meta,.showcase-eyebrow,.role-tab,.archive-row .chip{font-family:var(--font-mono);font-weight:500}.eyebrow,.role-work-heading,.skill-group h4,.project-detail :is(h4,h5){letter-spacing:.09em}.chip,.project-kicker{letter-spacing:.015em}.chip-year,.hobby-kicker,.archive-row{font-variant-numeric:tabular-nums}.chip{background:var(--accent-soft);color:var(--accent);border-color:transparent}.status-open{font-family:var(--font-mono);font-weight:500;letter-spacing:.02em}.clips{display:grid;gap:var(--space-m);margin-block-start:var(--space-m)}.clip{margin:0}.clip video{display:block;width:100%;height:auto;border-radius:var(--radius-l);background:var(--ground-sunk);border:1px solid var(--line)}.clip figcaption{margin-block-start:var(--space-2xs);font-family:var(--font-mono);font-size:var(--step--1);line-height:1.45;color:var(--ink-faint)}.role-context{position:relative}.role-bar{position:sticky;top:3.25rem;z-index:40;padding-block:var(--space-s);background:color-mix(in srgb,var(--ground) 88%,transparent);backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15);border-block:1px solid transparent;transition:border-color var(--dur-base) var(--ease-flow),background-color var(--dur-base) var(--ease-flow),padding-block var(--dur-base) var(--ease-flow)}html:not(.js) .role-bar{display:none}.role-bar-inner{display:flex;align-items:center;gap:var(--space-m)}.role-bar.is-stuck{border-block-color:var(--line);background:color-mix(in srgb,var(--ground) 95%,transparent);padding-block:var(--space-2xs)}.role-bar-pitch{margin:0;flex:1 1 auto;min-width:0;font-size:var(--step--1);color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transform:translate(-6px);transition:opacity var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow)}.role-bar-pitch em{font-style:normal;color:var(--accent);font-weight:600}.role-bar.is-stuck .role-bar-pitch{opacity:1;transform:none}.role-bar .role-tablist{margin-block-end:0;flex:0 0 auto;flex-wrap:nowrap}.section-roles{padding-block:var(--space-2xl) var(--section-pad)}@media(max-width:720px){.role-bar{top:3rem}.role-bar-pitch{display:none}.role-bar .role-tablist{width:100%}}@media(prefers-reduced-motion:reduce){.role-bar-pitch{transition:none;transform:none}}.project-line{display:flex;align-items:baseline;gap:var(--space-s);margin:0 0 var(--space-3xs)}.project-kicker{margin:0;flex:1 1 auto;min-width:0}.project-year{flex:none;font-family:var(--font-mono);font-size:var(--step--1);font-variant-numeric:tabular-nums;letter-spacing:.04em;color:var(--ink-faint)}.project-tags{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2xs) var(--space-s);margin-block-start:var(--space-s)}.tech-list,.role-list{display:flex;flex-wrap:wrap;gap:var(--space-3xs) var(--space-2xs);margin:0;padding:0;list-style:none}.tech{display:inline-flex;align-items:center;gap:.4em;padding:.2em .6em;border:1px solid var(--line-strong);border-radius:var(--radius-s);font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-soft);background:transparent;transition:border-color var(--dur-base) var(--ease-flow),color var(--dur-base) var(--ease-flow)}.tech svg{width:1.05em;height:1.05em;opacity:.85}.project:hover .tech{border-color:color-mix(in srgb,var(--accent) 42%,transparent);color:var(--ink)}.role-tag{display:inline-flex;align-items:center;padding:.2em .7em;border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent);font-family:var(--font-mono);font-weight:500;font-size:var(--step--1)}.project-tags .role-list{position:relative}@container (min-width: 520px){.project-tags .role-list:before{content:"";position:absolute;inset-inline-start:calc(var(--space-s) / -2);inset-block:.15em;width:1px;background:var(--line)}}.project-summary-text{margin-block:var(--space-2xs) 0}.tab-label-tight{display:none}@media(max-width:720px){.role-bar .role-tablist{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:var(--space-3xs)}.tab-label-full{display:none}.tab-label-tight{display:inline}.role-bar .role-tab{justify-content:center;padding-inline:var(--space-2xs);gap:.35em;min-width:0}}.hero-canvas.is-dimmed{opacity:0}.hero-code{position:absolute;inset:0;z-index:0;margin:0;padding:clamp(1rem,4vw,3rem);overflow:hidden;font-family:var(--font-mono);font-size:clamp(.6rem,1.05vw,.82rem);line-height:1.62;white-space:pre;tab-size:4;color:var(--ink-soft);opacity:0;filter:blur(.35px);transition:opacity var(--dur-slow) var(--ease-flow);pointer-events:none}.hero-code code{position:absolute;inset-inline-end:clamp(1rem,4vw,3rem);inset-block-start:clamp(.75rem,2.5vw,2rem);width:min(56ch,62%);max-height:calc(100% - clamp(1.5rem,5vw,4rem));overflow:hidden;text-align:left}.hero-code.is-live{opacity:.85}.hero-code .tc{color:var(--ink-faint);font-style:italic}.hero-code .ts{color:var(--warm)}.hero-code .tk{color:var(--accent);font-weight:500}.hero-code .td{color:var(--accent-quiet)}.hero-code .tn{color:var(--warm-bright)}.hero-code .tf{color:var(--ink)}.hero-code .caret{display:inline-block;width:.55em;height:1.05em;margin-inline-start:.08em;vertical-align:text-bottom;background:var(--accent);animation:caret-blink 1.1s steps(1) infinite}@keyframes caret-blink{0%,55%{opacity:1}56%,to{opacity:0}}@media(max-width:720px){.hero-code.is-live{opacity:.34}.hero-code code{inset-inline:clamp(1rem,4vw,2rem);width:auto}}@media(prefers-reduced-motion:reduce){.hero-code .caret{animation:none;opacity:1}.hero-code{transition:none}}.showcase{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:var(--space-l);align-items:center;padding:var(--space-m);border-radius:var(--radius-petal);background:var(--ground-raised);border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));box-shadow:var(--shadow-md)}.showcase-media{min-width:0}.showcase-clip{margin:0}.showcase-clip video,.showcase .media{width:100%;border-radius:var(--radius-l);border:1px solid var(--line);background:var(--ground-sunk);overflow:hidden;display:block}.showcase-still{height:100%;min-height:clamp(200px,24vw,340px)}.showcase-phones{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2xs);align-items:center}.showcase-phones .media{border-radius:var(--radius-m)}.showcase-phones .media:nth-child(2){transform:scale(1.06);z-index:1;box-shadow:var(--shadow-md)}.showcase-body{min-width:0}.showcase-eyebrow{display:flex;align-items:center;gap:var(--space-2xs);font-size:var(--step--1);color:var(--ink-faint);margin-block-end:var(--space-2xs)}.showcase-eyebrow [data-icon]{color:var(--accent)}.showcase-eyebrow-sep{color:var(--line-strong)}.showcase-eyebrow-strong{color:var(--accent)}.showcase-title{font-size:var(--step-4);line-height:1.05;margin-block-end:var(--space-3xs)}.showcase-kicker{font-family:var(--font-mono);font-weight:500;font-size:var(--step--1);letter-spacing:.015em;color:var(--warm)}.showcase-summary{margin-block-start:var(--space-s);color:var(--ink-soft);max-width:var(--measure-tight)}.showcase-result{margin-block-start:var(--space-s);padding-inline-start:var(--space-s);border-inline-start:2px solid var(--accent-soft);font-size:var(--step--1);color:var(--ink-faint);max-width:var(--measure-tight)}.showcase-tech{margin-block-start:var(--space-m)}.showcase-roles{margin-block-start:var(--space-2xs)}.showcase-actions{display:flex;flex-wrap:wrap;gap:var(--space-s);margin-block-start:var(--space-m)}@media(max-width:900px){.showcase{grid-template-columns:minmax(0,1fr);gap:var(--space-m)}.showcase-title{font-size:var(--step-3)}.showcase-phones .media:nth-child(2){transform:none}}.role-work-more{margin-block-start:var(--space-xl)}.project-secondary{background:color-mix(in srgb,var(--ground-raised) 55%,var(--ground));box-shadow:none}.project-secondary:hover{box-shadow:var(--shadow-sm)}.project-secondary .project-head{grid-template-columns:minmax(0,26%) minmax(0,1fr) auto}.project-secondary .project-thumb{min-height:clamp(96px,10vw,150px)}.project-secondary .project-title{font-size:var(--step-1)}.project-secondary .project-summary-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@container (max-width: 560px){.project-secondary .project-head{grid-template-columns:minmax(0,1fr)}}.contact-block :is(h2,h3){display:flex;align-items:center;gap:var(--space-2xs)}.contact-block :is(h2,h3) [data-icon]{color:var(--accent)}.contact-open{border-inline-start:3px solid var(--warm)}.contact-open :is(h2,h3) [data-icon]{color:var(--warm)}.contact-list{display:grid;gap:var(--space-2xs);padding-inline-start:var(--space-s)}.showcase-more{grid-column:1 / -1;border-top:1px solid var(--line);margin-block-start:var(--space-s)}.showcase-more>summary{display:inline-flex;align-items:center;gap:.5em;min-height:44px;padding-block-start:var(--space-2xs);cursor:pointer;list-style:none;font-family:var(--font-mono);font-weight:500;font-size:var(--step--1);color:var(--ink-soft);transition:color var(--dur-base) var(--ease-flow)}.showcase-more>summary::-webkit-details-marker{display:none}.showcase-more>summary:hover{color:var(--accent)}.showcase-more>summary [data-icon]{transition:transform var(--dur-base) var(--ease-flow)}.showcase-more[open]>summary [data-icon]{transform:rotate(180deg)}.showcase-more .label-close,.showcase-more[open] .label-open{display:none}.showcase-more[open] .label-close{display:inline}.showcase-more .project-body{margin-inline:0;padding-inline:0;padding-block-end:var(--space-s);border-top:0}@media(max-width:900px){.showcase-more .project-body{grid-template-columns:minmax(0,1fr)}}.to-top{position:fixed;inset-block-end:var(--space-m);inset-inline-end:var(--space-m);z-index:60;display:inline-flex;align-items:center;gap:.45em;min-height:44px;padding:0 var(--space-s);border-radius:var(--radius-pill);border:1px solid var(--line);background:color-mix(in srgb,var(--ground-raised) 92%,transparent);backdrop-filter:blur(12px) saturate(1.1);-webkit-backdrop-filter:blur(12px) saturate(1.1);box-shadow:var(--shadow-md);font-family:var(--font-mono);font-weight:500;font-size:var(--step--1);color:var(--ink-soft);opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity var(--dur-base) var(--ease-flow),transform var(--dur-base) var(--ease-flow),color var(--dur-base) var(--ease-flow),border-color var(--dur-base) var(--ease-flow)}.to-top.is-in{opacity:1;transform:none;pointer-events:auto}.to-top:hover{color:var(--accent);border-color:var(--accent)}html:not(.js) .to-top{opacity:1;transform:none;pointer-events:auto}@media(prefers-reduced-motion:reduce){.to-top{transition:none;transform:none}}@media(max-width:720px){.to-top span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.to-top{padding-inline:var(--space-xs)}}@media(max-width:720px){.theme-toggle,.nav-toggle{min-width:44px;min-height:44px}.nav-brand{min-height:44px}.site-footer li a,.archive-name a{min-height:44px;display:inline-flex;align-items:center}.writing-abstract-toggle>summary{min-height:44px}.section-head{margin-block-end:var(--space-l)}.role-skills{margin-block-start:var(--space-xl)}}
