:root{--bg:#faf8f3;--surface:#fff;--text:#111110;--muted:#5e5a52;--line:#4a484333;--accent:#c4ae80;--accent-strong:#8a7247;--accent-bg:#c4ae802e;--hero-accent:#b89f6e;--ghost:#1111100d;--code:#1111106b;--vein:#ffffffbf;--serif:"IBM Plex Serif", Georgia, serif;--mono:"IBM Plex Mono", Consolas, monospace;--brand:Nunito, "Arial Rounded MT Bold", sans-serif;--max:1100px;--gutter:clamp(16px, 5vw, 70px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f0f0e;--surface:#161614;--text:#edeae4;--muted:#9a968e;--line:#9a968e40;--accent:#cdb88e;--accent-strong:#d8c7a3;--accent-bg:#cdb88e1f;--hero-accent:#d8c7a3;--ghost:#ffffff0d;--code:#fff6;--vein:#0104098c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f0f0e;--surface:#161614;--text:#edeae4;--muted:#9a968e;--line:#9a968e40;--accent:#cdb88e;--accent-strong:#d8c7a3;--accent-bg:#cdb88e1f;--hero-accent:#d8c7a3;--ghost:#ffffff0d;--code:#fff6;--vein:#0104098c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{background:var(--bg);color:var(--text);font-family:var(--serif);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6;transition:background .3s,color .3s}h1,h2,h3,p,ul,ol,dl,dd{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:#111110}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.serif{font-family:var(--serif)}.mono{font-family:var(--mono)}.brand{font-family:var(--brand);font-weight:900}.muted{color:var(--muted)}.italic{font-style:italic}.upper{text-transform:uppercase}.tiny{letter-spacing:2px;text-transform:uppercase;font-size:10px}.small{font-size:14px}.lead{font-size:clamp(19px,2.2vw,24px);line-height:1.45}.rule{background:var(--accent);height:2px;display:block}.page{max-width:calc(var(--max) + 2 * var(--gutter));padding:0 var(--gutter);margin:0 auto;position:relative}.rail{border-left:1px solid var(--line);writing-mode:vertical-rl;text-align:center;white-space:nowrap;padding-left:8px;line-height:1;position:absolute;top:560px;bottom:220px}.rail--left{left:0;transform:rotate(180deg)}.rail--right{right:0}.section{padding:clamp(64px,9vw,110px) 0 0}.nav{z-index:10;padding:14px var(--gutter);background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);align-items:center;gap:24px;display:flex;position:sticky;top:0}.nav__brand{letter-spacing:-.5px;align-items:center;gap:8px;font-size:20px;display:flex}.nav__logo{width:26px;height:26px}.nav__links{gap:4px;margin-left:auto;display:flex}.nav__links a{letter-spacing:1px;text-transform:uppercase;color:var(--muted);border-bottom:2px solid #0000;padding:6px 10px;font-size:12px;transition:color .2s,border-color .2s;display:block}.nav__links a:hover,.nav__links a.is-active{color:var(--text);border-color:var(--accent)}.nav__num{color:var(--accent-strong)}.nav__theme{letter-spacing:1.5px;text-transform:uppercase;color:var(--text);background:var(--accent-bg);border:1px solid var(--line);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:11px;transition:border-color .2s}.nav__theme:hover{border-color:var(--accent)}.hero{padding-top:28px}.hero__bar{border-bottom:1px solid var(--line);justify-content:space-between;padding-bottom:12px;display:flex}.hero__grid{border-bottom:1px solid var(--line);grid-template-columns:1.3fr 1fr;align-items:center;gap:40px;padding:clamp(56px,9vw,110px) 0 clamp(48px,7vw,80px);display:grid}.hero__status{letter-spacing:1px;text-transform:uppercase;background:var(--accent-bg);border:1px solid var(--line);border-radius:999px;align-items:center;gap:10px;margin-bottom:28px;padding:6px 14px;font-size:11px;display:inline-flex}.hero__dot{background:var(--hero-accent);width:7px;height:7px;box-shadow:0 0 0 0 var(--hero-accent);border-radius:50%;animation:2.4s ease-out infinite pulse}@keyframes pulse{70%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}.hero h1{letter-spacing:-2px;margin-bottom:28px;font-size:clamp(52px,9vw,96px);line-height:1}.hero__role{letter-spacing:2px;text-transform:uppercase;color:var(--muted);font-size:clamp(13px,1.6vw,16px);font-weight:500}.hero__role+.hero__role{margin-top:8px}.hero__rule{background:var(--hero-accent);width:min(352px,100%);height:2px;margin:36px 0 22px;display:block}.hero__meta{letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-size:13px}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.button{letter-spacing:1.5px;text-transform:uppercase;border:1px solid var(--text);padding:11px 20px;font-size:12px;transition:background .2s,color .2s,transform .2s;display:inline-block}.button:hover{background:var(--accent-bg);transform:translateY(-2px)}.button--solid{background:var(--text);color:var(--bg)}.button--solid:hover{background:var(--accent);border-color:var(--accent);color:#111110}.hero__code{justify-content:center;align-items:center;min-height:340px;display:flex;position:relative}.hero__ghost{width:100%;height:100%;position:absolute;inset:0}.hero__code pre{color:var(--code);margin:0;font-size:clamp(14px,1.5vw,17px);line-height:1.8;position:relative}.type{clip-path:inset(0 100% 0 0);width:max-content;animation:.6s steps(18,end) forwards type;display:block}.type--indent{padding-left:2ch}@keyframes type{to{clip-path:inset(0)}}.cursor{background:var(--hero-accent);opacity:0;width:9px;height:1.1em;margin-top:4px;margin-left:2ch;animation:1.1s step-end infinite blink;display:block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.section-header{margin-bottom:clamp(32px,5vw,52px)}.section-header__top{justify-content:space-between;gap:16px;display:flex}.section-header__title{align-items:baseline;gap:24px;margin-top:14px;display:flex}.section-header h2{white-space:nowrap;font-size:clamp(28px,3.5vw,36px);font-weight:700;line-height:1.1}.section-header .rule{transform-origin:0;flex:1}.intro{margin-bottom:clamp(72px,10vw,110px)}.intro__headline{margin:18px 0 14px;font-size:clamp(32px,5vw,48px);font-weight:600;line-height:1.15}.intro .rule{margin-top:36px}.about{grid-template-columns:1.6fr 1fr;gap:clamp(32px,6vw,80px);display:grid}.about__text{align-content:start;gap:20px;display:grid}.about__side{justify-items:center;gap:28px;display:grid}.about__leaf{background:var(--accent-bg);border-radius:50%;place-items:center;width:176px;height:176px;display:grid}.leaf{width:64px;transform:rotate(30deg)}.sway{transform-box:fill-box;transform-origin:50% 100%;animation:7s ease-in-out infinite sway}@keyframes sway{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}.facts{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;width:100%;display:grid}.facts>div{border-bottom:1px solid var(--line);padding:12px 0}.facts dd{font-size:17px;font-weight:600}.timeline__item{border-top:1px solid var(--line);grid-template-columns:220px 1fr;gap:32px;padding:32px 0;display:grid}.timeline__item:last-child{border-bottom:1px solid var(--line)}.timeline__meta{letter-spacing:.5px;align-content:start;gap:4px;font-size:13px;display:grid}.timeline__index{letter-spacing:2px;color:var(--accent-strong);font-size:10px}.timeline__body h3{font-size:clamp(21px,2.4vw,25px);font-weight:600;line-height:1.25}.timeline__org{letter-spacing:1.5px;text-transform:uppercase;color:var(--accent-strong);margin:6px 0 14px;font-size:12px}.timeline__body ul{gap:6px;display:grid}.timeline__body li{color:var(--muted);padding-left:22px;position:relative}.timeline__body li:before{content:"";background:var(--accent);width:10px;height:2px;position:absolute;top:.8em;left:0}.honours{background:var(--accent-bg);margin-top:48px;padding:28px}.honours ul{gap:10px;margin-top:16px;display:grid}.honours li{grid-template-columns:56px 1fr;align-items:baseline;gap:12px;display:grid}.honours__year{color:var(--accent-strong);font-size:12px}.tags{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.tag{letter-spacing:1px;background:var(--accent-bg);border:1px solid #0000;padding:3px 10px;font-size:11px}.projects{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.project{border-right:1px solid var(--line);border-bottom:1px solid var(--line);flex-direction:column;gap:14px;padding:28px;transition:background .25s;display:flex;position:relative}.project:before{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .35s;position:absolute;top:-1px;left:0;transform:scaleX(0)}.project:hover{background:var(--accent-bg)}.project:hover:before{transform:scaleX(1)}.project__top{justify-content:space-between;gap:12px;display:flex}.project h3{font-size:23px;font-weight:600;line-height:1.25}.project p{font-size:15px}.project__result{color:var(--accent-strong);border-left:2px solid var(--accent);padding-left:12px;font-size:12px;line-height:1.5}.project .tags{margin-top:auto;padding-top:8px}.project[hidden]{display:none}.projects__toggle{color:var(--text);cursor:pointer;background:0 0;margin:28px auto 0;display:block}.projects__toggle .arrow{margin-left:10px}.arrow{color:var(--accent-strong);margin-left:8px;transition:transform .2s;display:inline-block}.project--link:hover .arrow,.contact__links a:hover .arrow{transform:translate(3px,-3px)}.toolkit{grid-template-columns:repeat(8,1fr);display:grid}.toolkit__item{border-right:1px solid var(--line);border-bottom:1px solid var(--line);justify-items:center;gap:6px;padding:22px 6px 18px;transition:background .2s;display:grid}.toolkit__item:nth-child(8n){border-right:none}.toolkit__item:hover{background:var(--accent-bg)}.toolkit__icon{fill:currentColor;width:38px;height:38px;margin-bottom:8px;transition:transform .25s,color .25s}.toolkit__item:hover .toolkit__icon{color:var(--accent-strong);transform:translateY(-3px)}.toolkit__name{text-align:center;font-size:11px}.toolkit__num{letter-spacing:1px;font-size:8px}.offhours{margin-top:clamp(64px,9vw,110px)}.offhours__grid{grid-template-columns:repeat(4,1fr);display:grid}.offhours__item{align-content:start;gap:8px;padding:4px 28px 4px 0;display:grid}.offhours__item+.offhours__item{border-left:1px solid var(--line);padding-left:28px}.offhours__item h3{font-size:23px;font-weight:600;line-height:1.25}.contact{gap:28px;display:grid}.contact .lead{max-width:720px}.contact__mail{overflow-wrap:anywhere;background:linear-gradient(var(--accent), var(--accent)) 0 100% / 100% 2px no-repeat;justify-self:start;font-size:clamp(22px,4vw,40px);font-weight:600;line-height:1.2;transition:background-size .3s}.contact__mail:hover{background-size:100% 40%}.contact__links{border-top:1px solid var(--line);grid-template-columns:repeat(4,1fr);display:grid}.contact__links li+li{border-left:1px solid var(--line)}.contact__links a{grid-template-columns:1fr auto;gap:4px 8px;padding:18px;transition:background .2s;display:grid}.contact__links a:hover{background:var(--accent-bg)}.contact__links .tiny{grid-column:1}.contact__links .serif{overflow-wrap:anywhere;grid-column:1;font-size:15px}.contact__links .arrow{grid-area:1/2/3;align-self:center}.signature{border-top:1px solid var(--line);grid-template-columns:auto 1fr auto;align-items:center;gap:28px;margin-top:clamp(80px,10vw,120px);padding:36px 0 48px;display:grid}.signature__logo{width:84px;height:92px}.signature__title{margin-bottom:6px;font-size:clamp(22px,3vw,30px);font-weight:700}.signature__right{justify-items:end;display:grid}.signature__right .hero__rule{width:260px;margin:10px 0}[data-reveal]{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(18px)}[data-reveal].is-visible{opacity:1;transform:none}.section-header .rule{transition:transform .9s .2s;transform:scaleX(0)}.section-header.is-visible .rule{transform:scaleX(1)}@media (width<=1240px){.rail{display:none}}@media (width<=960px){.nav__links{display:none}.nav__theme{margin-left:auto}.hero__grid,.about{grid-template-columns:1fr}.hero__code{justify-content:flex-start;min-height:260px}.hero__ghost{width:260px;left:auto}.toolkit{grid-template-columns:repeat(4,1fr)}.toolkit__item:nth-child(8n){border-right:1px solid var(--line)}.toolkit__item:nth-child(4n){border-right:none}.offhours__grid,.contact__links{grid-template-columns:1fr 1fr}.offhours__item,.offhours__item+.offhours__item{border-left:none;border-top:1px solid var(--line);padding:20px 20px 20px 0}.contact__links li:nth-child(3){border-left:none}.contact__links li:nth-child(n+3){border-top:1px solid var(--line)}}@media (width<=640px){.hero__bar span:last-child{display:none}.timeline__item{grid-template-columns:1fr;gap:14px}.timeline__meta{grid-auto-flow:column;justify-content:start;gap:14px}.section-header__top .tiny:last-child{display:none}.projects,.offhours__grid,.contact__links{grid-template-columns:1fr}.contact__links li+li{border-left:none;border-top:1px solid var(--line)}.signature{grid-template-columns:auto 1fr}.signature__right{grid-column:1/-1;justify-items:start}}@media (width<=420px){.toolkit{grid-template-columns:repeat(3,1fr)}.toolkit__item:nth-child(4n){border-right:1px solid var(--line)}.toolkit__item:nth-child(3n){border-right:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.type{clip-path:none;animation:none}.cursor{opacity:1;animation:none}.sway{animation:none}[data-reveal],.section-header .rule{opacity:1;transition:none;transform:none}}@media print{.nav,.rail,.hero__code,.hero__actions,.hero__dot,.offhours,.about__leaf,.projects__toggle{display:none!important}.project[hidden]{display:flex}body{color:#111110;background:#fff;font-size:12px}[data-reveal],.section-header .rule{opacity:1!important;transform:none!important}.section{break-inside:avoid-page;padding-top:28px}.hero__grid{grid-template-columns:1fr;padding:24px 0}.timeline__item,.project{break-inside:avoid}}
