@font-face{font-family:Plex Mono;src:url('../fonts/plex-mono-regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Plex Mono;src:url('../fonts/plex-mono-medium.ttf') format('truetype');font-weight:500 700;font-style:normal;font-display:swap}
:root{color-scheme:dark;--bg:#11161c;--rail:#172029;--surface:#19232d;--surface-hover:#222f3b;--text:#f3eee4;--secondary:#b5bfca;--muted:#94a3b2;--line:#364450;--line-soft:#27333e;--accent:#ff824d;--accent-soft:rgba(255,130,77,.10);--blue:#9ebeff;--green:#a9d8a9;--violet:#c8b4ee;--rail-width:244px;--gutter:clamp(28px,4.1vw,68px);--mono:'Plex Mono',Menlo,Consolas,monospace;--sans:Arial,Helvetica,sans-serif}
:root[data-theme=light]{color-scheme:light;--bg:#f7f4ed;--rail:#e8edf0;--surface:#eaf0f4;--surface-hover:#dfe8f0;--text:#202a34;--secondary:#4b5c6d;--muted:#566573;--line:#b9c7d1;--line-soft:#d7dfe3;--accent:#a94019;--accent-soft:rgba(169,64,25,.07);--blue:#355fb4;--green:#376c48;--violet:#75519b}
:root[data-accent=green]{--accent:#acd879;--accent-soft:rgba(172,216,121,.10)}
:root[data-theme=light][data-accent=green]{--accent:#486827;--accent-soft:rgba(72,104,39,.07)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:88px}
body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.75 var(--mono);-webkit-font-smoothing:antialiased}
button,a{-webkit-tap-highlight-color:transparent}
button{font:inherit}
button,a,input,select{touch-action:manipulation}
button{color:inherit}
a{color:inherit;text-decoration:none}
button{cursor:pointer}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}
::selection{background:var(--accent);color:var(--bg)}
h1,h2,h3,h4,p,figure,dl,dd{margin:0}
h1,h2,h3,h4{font-weight:400;line-height:1.24}
p+p{margin-top:1.25rem}
h1{font-size:clamp(2.3rem,4.4vw,3.5rem);letter-spacing:-.045em}
h2{font-size:clamp(1.6rem,2.6vw,2.25rem);letter-spacing:-.04em}
h3{font-size:1.35rem;letter-spacing:-.035em}
ul,ol{list-style:none;padding:0;margin:0}
img{max-width:100%;display:block}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.skip-link{position:fixed;top:-100px;left:24px;padding:10px 20px;background:var(--text);color:var(--bg);z-index:200}
.skip-link:focus{top:15px}
.accent{color:var(--accent)}
.muted{color:var(--muted)}
.secondary{color:var(--secondary)}
.syntax{font-size:.8125rem;line-height:1.7;color:var(--muted);letter-spacing:0}
.label{font-size:.75rem;line-height:1.5;letter-spacing:.075em;text-transform:uppercase;color:var(--secondary)}
.brace{color:var(--accent)}
.arrow{display:inline-block;color:var(--accent);transition:transform .2s ease;white-space:nowrap}
a:hover .arrow{transform:translate(2px,-2px)}
.rule-indent{border-left:1px solid var(--line);padding-left:24px}
.sidebar{width:var(--rail-width);position:fixed;inset:0 auto 0 0;z-index:40;background:var(--rail);border-right:1px solid var(--line-soft);padding:36px 28px 28px;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;overflow-wrap:anywhere}
.rail-id{font-size:.75rem;letter-spacing:.08em;color:var(--secondary);display:flex;justify-content:space-between;align-items:center;margin-bottom:55px}
.rail-id .initials{color:var(--text);font-size:.875rem;letter-spacing:-.03em}
.index-heading{margin-bottom:14px}
.primary-nav ul{border-left:1px solid var(--line);margin:0 0 15px;padding:0}
.primary-nav a{position:relative;display:flex;align-items:center;gap:13px;min-height:49px;padding:9px 0 9px 17px;font-size:.875rem;line-height:1.4;transition:background .2s,color .2s}
.primary-nav .nav-index{font-size:.8125rem;color:var(--muted);transition:color .2s}
.primary-nav a[aria-current]{color:var(--text);background:var(--accent-soft)}
.primary-nav a[aria-current]:before{content:'';position:absolute;left:-1px;top:12px;bottom:12px;width:2px;background:var(--accent)}
.primary-nav a[aria-current] .nav-index,.primary-nav a:hover .nav-index{color:var(--accent)}
.primary-nav a:hover{background:var(--surface-hover)}
.rail-note{margin-top:38px;color:var(--secondary);font-size:.75rem;line-height:1.85}
.rail-note span{display:block}
.rail-bottom{margin-top:auto;padding-top:55px}
.elsewhere{margin-bottom:26px}
.elsewhere a{font-size:.875rem;display:flex;justify-content:space-between;gap:10px;padding:9px 0 9px 17px;border-left:1px solid var(--line);margin-top:9px}
.preference-box{border-top:1px solid var(--line);padding-top:22px}
.preference-row{display:flex;align-items:center;justify-content:space-between;margin-top:12px;gap:10px;flex-wrap:wrap}
.preference-row>.syntax{font-size:.75rem}
.segmented{display:flex;gap:4px;align-items:center}
.segmented button{border:0;background:transparent;color:var(--muted);font-size:.8125rem;line-height:1.4;min-height:36px;min-width:35px;padding:5px 3px;position:relative}
.segmented button[aria-pressed=true]{color:var(--text)}
.segmented button[aria-pressed=true]:after{content:'';position:absolute;bottom:2px;left:3px;right:3px;height:1px;background:var(--accent)}
.segmented button:hover{color:var(--accent)}
.segment-slash{color:var(--line);font-size:.75rem}
.rail-version{border-top:1px solid var(--line-soft);margin-top:23px;padding-top:18px;font-size:.75rem;color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px}
.site-frame{margin-left:var(--rail-width);min-height:100svh;display:flex;flex-direction:column}
.site-header{padding:30px var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:95px;border-bottom:1px solid var(--line-soft)}
.identity{display:flex;align-items:center;gap:22px;min-width:0}
.wordmark{font:600 23px/1.2 var(--sans);letter-spacing:-.05em;white-space:nowrap}
.identity .slash{color:var(--accent);font-size:18px}
.identity-descriptor{font-size:.75rem;line-height:1.5;color:var(--secondary)}
.page-position{font-size:.75rem;color:var(--muted);white-space:nowrap}
.menu-toggle{display:none;align-items:center;gap:10px;min-height:44px;border:0;background:none;padding:5px;font-size:.8125rem}
.menu-symbol{font-size:1.25rem;line-height:1;color:var(--accent)}
main{width:100%;flex:1;animation:page-enter .28s ease both}
.document{width:100%;max-width:calc(1140px + var(--gutter)*2);padding:0 var(--gutter);margin:0 auto;overflow-wrap:anywhere}
.page-heading{padding:49px 0 57px}
.page-heading .path-label{margin-bottom:21px}
.path-label{display:flex;align-items:center;gap:12px;font-size:.8125rem;color:var(--secondary);flex-wrap:wrap}
.path-label .path-separator{color:var(--line)}
.path-label a:hover{color:var(--accent)}
.page-heading h1{margin-bottom:25px}
.page-heading .intro{max-width:690px;font-size:1rem;color:var(--secondary);line-height:1.85}
.home-hero{position:relative;padding:48px 0 45px;min-height:690px;display:flex;flex-direction:column;justify-content:space-between}
.hero-topline{display:flex;justify-content:space-between;gap:20px}
.hero-topline .edition{font-size:.75rem;color:var(--muted)}
.hero-layout{display:grid;grid-template-columns:1.32fr 1fr;gap:40px;align-items:center;padding:68px 0 55px}
.hero-title{font-size:clamp(2.75rem,4.8vw,4rem);line-height:1.2;letter-spacing:-.06em;margin-bottom:30px}
.hero-title>span{display:block}
.hero-copy{max-width:530px;font-size:1rem;color:var(--secondary);line-height:1.8}
.hero-copy strong{color:var(--text);font-weight:400}
.hero-register{position:relative;border:1px solid var(--line);padding:24px;align-self:center;margin-top:24px}
.register-header{display:flex;justify-content:space-between;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--line-soft)}
.register-items{counter-reset:scope}
.register-items li{padding:17px 0 17px 32px;border-bottom:1px solid var(--line-soft);position:relative}
.register-items li:before{counter-increment:scope;content:'0' counter(scope);position:absolute;left:0;top:18px;font-size:.75rem;color:var(--muted)}
.register-items li:last-child{border:0;padding-bottom:1px}
.register-items strong{font-size:.875rem;font-weight:400;display:block;margin-bottom:3px}
.register-items span{font-size:.75rem;line-height:1.65;color:var(--secondary);display:block}
.hero-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:20px;gap:20px}
.hero-foot p{font-size:.75rem;color:var(--secondary);max-width:420px}
.text-link{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;font-size:.875rem;min-height:44px;line-height:1.5;border-bottom:1px solid var(--line);padding:10px 0;transition:border-color .2s,color .2s}
.text-link:hover{color:var(--accent);border-color:var(--accent)}
.field-strip{display:flex;gap:12px 24px;flex-wrap:wrap;padding:24px 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);font-size:.75rem;color:var(--secondary)}
.field-strip span:not(:last-child):after{content:'/';padding-left:24px;color:var(--line)}
.home-section{padding:70px 0 15px}
.section-topline{display:flex;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:32px}
.section-topline h2 .brace{font-size:.875em;margin-left:12px}
.index-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.index-panel{padding:28px 30px 25px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;flex-direction:column;min-height:270px;transition:background .25s ease;position:relative}
.index-panel:hover{background:var(--surface-hover)}
.index-panel .panel-meta{display:flex;justify-content:space-between;align-items:center;gap:20px}
.index-panel h3{font-size:1.85rem;line-height:1.3;margin:25px 0 16px}
.index-panel p{font-size:.9375rem;line-height:1.8;color:var(--secondary);max-width:390px}
.index-panel .panel-tail{margin-top:auto;padding-top:23px;font-size:.75rem;color:var(--muted)}
.bio-band{display:grid;grid-template-columns:1fr 1.6fr;gap:45px;padding:58px 0 68px;margin-top:38px;border-top:1px solid var(--line)}
.bio-band p{font-size:.9375rem;color:var(--secondary)}
.bio-band .text-link{margin-top:17px}
.section-close{color:var(--accent);font-size:1.2rem;margin:24px 0 0}
.ledger{border-top:1px solid var(--line)}
.ledger-header{display:grid;grid-template-columns:56px 1fr 1fr 35px;gap:24px;padding:18px 0;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line-soft)}
.project-record{display:grid;grid-template-columns:56px 1fr 1fr 35px;gap:24px;padding:36px 0 42px;border-bottom:1px solid var(--line);transition:background .2s,padding .2s}
.project-record:hover{background:var(--surface);padding-left:12px;padding-right:12px}
.record-id{font-size:.8125rem;color:var(--accent)}
.project-record h2{font-size:1.85rem;margin-bottom:12px;word-break:normal;overflow-wrap:anywhere}
.project-record .kind{font-size:.8125rem;color:var(--secondary)}
.record-description p{font-size:.9375rem;color:var(--secondary);line-height:1.75}
.record-description .metadata{font-size:.75rem;margin-top:20px;color:var(--muted)}
.project-record>.arrow{font-size:1.35rem;align-self:start;justify-self:end}
.document-tail{padding:36px 0 76px;font-size:.8125rem;color:var(--secondary);display:flex;justify-content:space-between;gap:20px}
.detail-heading{padding-bottom:38px}
.detail-heading h1{font-size:clamp(2.75rem,4.8vw,3.75rem);margin-bottom:20px}
.detail-lead{font-size:clamp(1.15rem,1.8vw,1.45rem);color:var(--text);line-height:1.6;max-width:760px;letter-spacing:-.025em}
.detail-heading .intro{margin-top:24px;max-width:760px}
.action-row{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin-top:30px}
.button-link{display:inline-flex;align-items:center;justify-content:space-between;gap:36px;min-height:48px;border:1px solid var(--accent);font-size:.875rem;padding:12px 19px;transition:background .2s,color .2s}
.button-link:hover{background:var(--accent-soft)}
.action-note{font-size:.75rem;color:var(--secondary)}
.fact-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:64px}
.fact-grid>div{padding:20px 20px 24px 0}
.fact-grid>div+div{padding-left:20px;border-left:1px solid var(--line)}
.fact-grid dt{font-size:.75rem;color:var(--muted);margin-bottom:10px}
.fact-grid dd{font-size:.875rem;line-height:1.65}
.content-section{padding-bottom:64px}
.content-section .section-topline{margin-bottom:25px}
.capability-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line)}
.capability{padding:26px 23px;min-width:0}
.capability+.capability{border-left:1px solid var(--line)}
.capability .label{margin-bottom:22px}
.capability h3{font-size:1.0625rem;line-height:1.5;margin-bottom:18px}
.capability p{font-size:.875rem;line-height:1.8;color:var(--secondary)}
.capture-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.capture-frame{aspect-ratio:4/3;position:relative;border:1px solid var(--line);background:var(--surface);display:flex;align-items:center;justify-content:center;padding:20px;text-align:center}
.capture-frame:before,.portrait-frame:before{content:'';position:absolute;inset:12px;border:1px solid var(--line-soft);pointer-events:none}
.capture-frame .capture-code{font-size:.875rem;color:var(--muted)}
.capture-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--bg);z-index:1}
.capture-grid figcaption{font-size:.75rem;line-height:1.65;padding-top:13px;color:var(--secondary)}
.capture-grid figcaption .caption-index{color:var(--accent);padding-right:8px}
.asset-note{font-size:.75rem;color:var(--muted);margin:18px 0 0}
.spec-list{border-top:1px solid var(--line)}
.spec-list>div{display:grid;grid-template-columns:1fr 1.8fr;gap:28px;border-bottom:1px solid var(--line);padding:20px 0}
.spec-list dt{font-size:.875rem}
.spec-list dd{font-size:.9375rem;color:var(--secondary)}
.scope-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);margin-bottom:48px}
.scope-column{padding:26px 24px 30px}
.scope-column+.scope-column{border-left:1px solid var(--line)}
.scope-column h3{font-size:1rem;line-height:1.6;margin-bottom:25px;min-height:3.2em}
.scope-column ul{border-left:1px solid var(--line);padding-left:16px}
.scope-column li{font-size:.875rem;color:var(--secondary);margin-bottom:13px;line-height:1.6}
.scope-column li:last-child{margin-bottom:0}
.editorial-panel{background:var(--surface);border:1px solid var(--line);padding:30px 32px;display:grid;grid-template-columns:1fr 2.1fr;gap:36px}
.editorial-panel p{font-size:.9375rem;color:var(--secondary)}
.related-link{margin-bottom:60px}
.publication-section{border-top:1px solid var(--line);padding-top:20px;padding-bottom:66px}
.publication-topline{display:flex;justify-content:space-between;gap:20px;padding-bottom:20px}
.publication{display:grid;grid-template-columns:85px 1fr;gap:32px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:32px 0 38px}
.publication-year{font-size:1rem;color:var(--accent)}
.publication-year .syntax{display:block;margin-top:12px;font-size:.75rem}
.publication h2{font-size:clamp(1.25rem,2.05vw,1.7rem);line-height:1.5;letter-spacing:-.035em;max-width:850px}
.publication h2 a{transition:color .2s}
.publication h2 a:hover{color:var(--accent)}
.bibliography{display:flex;gap:8px 28px;flex-wrap:wrap;font-size:.8125rem;line-height:1.8;margin:25px 0}
.bibliography .key{color:var(--muted)}
.publication-excerpt{font-size:.9375rem;line-height:1.85;max-width:810px;color:var(--secondary);border-left:1px solid var(--line);padding-left:22px}
.tags{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:.75rem;line-height:1.6;color:var(--secondary);margin-top:22px}
.tags span:before{content:'#';color:var(--accent);margin-right:4px}
.publication-links{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin-top:28px}
.publication-links .syntax{font-size:.75rem;overflow-wrap:anywhere}
.books-ledger{border-top:1px solid var(--line);margin-bottom:65px}
.book-record{padding:35px 0 42px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:65px 1.6fr 1fr;gap:32px;align-items:start}
.book-topline{display:flex;justify-content:space-between;gap:20px;margin-bottom:18px;align-items:center}
.book-topline .status{font-size:.75rem;color:var(--secondary);line-height:1.5}
.status:before{content:'[';color:var(--accent);padding-right:4px}
.status:after{content:']';color:var(--accent);padding-left:4px}
.book-title{font-size:clamp(1.65rem,2.8vw,2.4rem);line-height:1.35;letter-spacing:-.05em}
.book-subtitle{font-size:.9375rem;line-height:1.8;color:var(--secondary);margin-top:22px}
.book-author{font-size:.8125rem;color:var(--secondary);margin-top:20px}
.book-commentary{font-size:.875rem;color:var(--secondary);line-height:1.85;padding-left:24px;border-left:1px solid var(--line);margin-top:42px}
.book-record .text-link{margin-top:24px;max-width:280px;width:100%}
.book-commentary .tags{margin-top:20px;font-size:.75rem}
.about-layout{display:grid;grid-template-columns:1.55fr 1fr;gap:55px;align-items:start;margin-bottom:65px}
.about-layout>figure{width:85%;justify-self:end}
@media(max-width:480px){.about-layout>figure{justify-self:start}}
.about-copy{color:var(--secondary)}
.about-copy .profile-role{font-size:1.25rem;color:var(--text);line-height:1.6;margin-bottom:27px}
.about-copy .text-link{margin-top:25px}
.portrait-frame{aspect-ratio:4/5;max-height:420px;position:relative;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;background:var(--surface)}
.portrait-frame .portrait-initials{font-size:clamp(3rem,5vw,5rem);letter-spacing:-.08em;color:var(--muted);font-weight:400}
.portrait-frame .portrait-label{position:absolute;bottom:27px;font-size:.75rem;color:var(--secondary);left:27px;right:27px;display:flex;justify-content:space-between;gap:15px}
.portrait-frame img{position:absolute;width:100%;height:100%;object-fit:cover;inset:0;z-index:1}
.portrait-caption{font-size:.75rem;color:var(--muted);padding-top:12px}
.career-section{border-top:1px solid var(--line);padding:32px 0 60px;display:grid;grid-template-columns:1fr 2fr;gap:45px}
.career-ledger>div{display:grid;grid-template-columns:125px 1fr;gap:25px;border-bottom:1px solid var(--line);padding:20px 0}
.career-ledger>div:first-child{padding-top:0}
.career-ledger dt{font-size:.8125rem;color:var(--secondary)}
.career-ledger dd{font-size:.9375rem}
.career-ledger dd span{display:block;font-size:.8125rem;color:var(--secondary);margin-top:7px}
.education{padding-bottom:70px}
.education p{margin-top:14px}
.education .qualification{font-size:1rem;color:var(--text)}
.education .syntax{font-size:.8125rem}
.site-footer{border-top:1px solid var(--line);padding:30px var(--gutter) 28px;margin-top:auto}
.footer-top{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px;flex-wrap:wrap}
.footer-name{font:600 18px/1.3 var(--sans);letter-spacing:-.04em}
.footer-top .text-link{min-height:34px;padding:5px 0;font-size:.75rem;gap:17px}
.footer-bottom{display:flex;gap:30px;justify-content:space-between;align-items:flex-end}
.independent-note{font-size:.75rem;color:var(--muted);line-height:1.8;max-width:610px}
.footer-copyright{font-size:.75rem;color:var(--muted)}
.dev-selector{position:fixed;bottom:15px;right:18px;z-index:120;display:flex;gap:15px;align-items:center;border:1px solid var(--line);background:var(--rail);padding:12px 16px;box-shadow:0 8px 28px rgba(0,0,0,.15)}
.dev-selector .label{font-size:.75rem}
.dev-selector select{background:var(--bg);border:1px solid var(--line);color:var(--text);padding:7px 9px;font:400 .8125rem var(--mono)}
.error-document{min-height:65svh;display:flex;flex-direction:column;justify-content:center;padding-top:60px;padding-bottom:60px}
.error-code{font-size:clamp(4rem,10vw,7rem);letter-spacing:-.08em;color:var(--accent);line-height:1.1;margin:20px 0}
.error-document h1{font-size:2rem;margin-bottom:20px}
.error-document p{max-width:600px;color:var(--secondary)}
.error-document .text-link{align-self:flex-start;margin-top:30px}
/* Colour is used as editorial syntax: work, research, books, profile. */
.identity-descriptor{color:var(--blue)}
.rail-id .initials{color:var(--blue)}
.rail-note span:nth-child(2){color:var(--blue)}
.rail-note span:nth-child(3){color:var(--green)}
.hero-title>span:last-child{color:var(--blue)}
.hero-register{background:var(--surface)}
.hero-register:before{content:'';position:absolute;left:-1px;top:-1px;width:32px;height:2px;background:var(--accent);box-shadow:32px 0 0 var(--blue),64px 0 0 var(--green)}
.register-items li:nth-child(1) strong,.register-items li:nth-child(1):before{color:var(--accent)}
.register-items li:nth-child(2) strong,.register-items li:nth-child(2):before{color:var(--blue)}
.register-items li:nth-child(3) strong,.register-items li:nth-child(3):before{color:var(--violet)}
.register-items li:nth-child(4) strong,.register-items li:nth-child(4):before{color:var(--green)}
.index-panel{--panel-colour:var(--accent);background:color-mix(in srgb,var(--panel-colour) 4%,var(--bg))}
.index-panel:nth-child(2){--panel-colour:var(--blue)}
.index-panel:nth-child(3){--panel-colour:var(--green)}
.index-panel:nth-child(4){--panel-colour:var(--violet)}
.index-panel:before{content:'';position:absolute;top:-1px;left:30px;width:28px;height:2px;background:var(--panel-colour);transition:width .2s}
.index-panel:hover{background:color-mix(in srgb,var(--panel-colour) 9%,var(--bg))}
.index-panel:hover:before{width:48px}
.index-panel h3,.index-panel .panel-meta .label,.index-panel .panel-meta .arrow{color:var(--panel-colour)}
.field-strip span:nth-child(3),.field-strip span:nth-child(4){color:var(--blue)}
.field-strip span:nth-child(5){color:var(--green)}
.button-link{color:var(--bg);background:var(--accent);font-weight:500}
.button-link:hover{background:var(--text);border-color:var(--text)}
:root[data-theme=light] .button-link{color:#fff}
:root[data-theme=light] .button-link:hover{color:var(--bg)}
.fact-grid{background:color-mix(in srgb,var(--blue) 3%,var(--bg))}
.fact-grid dt,.bibliography .key{color:var(--blue)}
.project-record .kind{color:var(--blue)}
.project-record:nth-of-type(2) .kind{color:var(--green)}
.capability:nth-child(2) .label{color:var(--blue)}
.capability:nth-child(3) .label{color:var(--green)}
.publication-year>time{color:var(--blue)}
.publication-excerpt{border-left-color:var(--blue)}
.book-record:first-child .status{color:var(--green)}
.book-record:nth-child(2) .status{color:var(--blue)}
.scope-column:nth-child(2) h3{color:var(--blue)}
.scope-column:nth-child(3) h3{color:var(--green)}
.tags>span:nth-child(2n):before{color:var(--blue)}
.tags>span:nth-child(3n):before{color:var(--green)}
.portrait-frame.has-portrait{aspect-ratio:1;max-height:none;border-color:var(--line);background:var(--surface)}
.portrait-frame.has-portrait:after{content:'';position:absolute;z-index:2;width:30px;height:3px;left:0;bottom:0;background:var(--accent)}
.portrait-caption{display:flex;justify-content:space-between;gap:15px;color:var(--secondary)}
.portrait-code{color:var(--blue)}
.career-heading .syntax{margin-top:18px}
.career-step{display:grid;grid-template-columns:114px minmax(0,1fr);gap:24px;padding:25px 0;border-bottom:1px solid var(--line-soft)}
.career-step:first-child{padding-top:0}
.career-period{font-size:.75rem;color:var(--muted);padding-top:4px;line-height:1.7}
.career-role{font-size:1.1rem;line-height:1.5;letter-spacing:-.025em}
.career-step:first-child .career-role{color:var(--accent)}
.career-step:first-child .career-period{color:var(--green)}
.career-company{font-size:.75rem;color:var(--blue);margin-top:7px!important;line-height:1.6}
.career-summary{font-size:.875rem;color:var(--secondary);line-height:1.8;margin-top:13px}
.education-section{padding:30px 0 15px;border-top:1px solid var(--line)}
.qualification-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line)}
.qualification{padding:27px 28px 30px;min-width:0;background:color-mix(in srgb,var(--blue) 4%,var(--bg))}
.qualification+.qualification{border-left:1px solid var(--line);background:transparent}
.qualification-meta{display:flex;justify-content:space-between;gap:16px;font-size:.75rem;color:var(--blue);margin-bottom:22px}
.qualification:nth-child(2) .qualification-meta{color:var(--green)}
.qualification h3{font-size:1.35rem;line-height:1.45}
.qualification-institution{font-size:.9375rem;line-height:1.65;margin-top:16px;color:var(--text)}
.qualification-detail{font-size:.8125rem;margin-top:10px;color:var(--secondary)}
.qualification .text-link{font-size:.75rem;margin-top:21px;gap:18px}
.workspace-gallery{border:1px solid var(--line);background:var(--surface)}
.gallery-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--line)}
.gallery-tabs button{position:relative;display:flex;align-items:center;gap:12px;background:transparent;border:0;text-align:left;padding:18px 19px;min-height:72px;font-size:.8125rem;line-height:1.5;color:var(--secondary)}
.gallery-tabs button+button{border-left:1px solid var(--line)}
.gallery-tabs button[aria-selected=true]{color:var(--text);background:var(--accent-soft)}
.gallery-tabs button[aria-selected=true]:after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent)}
.gallery-tabs button:hover{color:var(--text)}
.gallery-tabs button:focus-visible{outline-offset:-5px}
.caption-index{color:var(--accent);white-space:nowrap}
.workspace-capture+.workspace-capture{border-top:1px solid var(--line)}
.workspace-gallery.is-ready .workspace-capture{border:0}
.capture-image{position:relative;display:block;width:100%;padding:0;border:0;background:#101214;overflow:hidden;cursor:default}
.capture-image img{width:100%;height:auto;object-fit:contain}
.workspace-gallery.is-ready .capture-image{cursor:zoom-in}
.capture-zoom{display:none;position:absolute;bottom:14px;right:14px;background:var(--bg);color:var(--accent);border:1px solid var(--line);padding:3px 11px;font-size:1.2rem}
.workspace-gallery.is-ready .capture-zoom{display:block}
.capture-image:focus-visible{outline-offset:-5px}
.workspace-capture figcaption{display:flex;gap:13px;align-items:baseline;flex-wrap:wrap;padding:14px 19px;font-size:.75rem;line-height:1.6;border-top:1px solid var(--line)}
.capture-hint{display:none;color:var(--muted);margin-left:auto}
.workspace-gallery.is-ready .capture-hint{display:block}
.image-viewer{width:calc(100vw - 48px);max-width:1920px;max-height:calc(100dvh - 48px);margin:auto;padding:0;overflow:auto;border:1px solid var(--line);background:var(--bg);color:var(--text)}
.image-viewer::backdrop{background:rgba(5,10,16,.9)}
.viewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;border-bottom:1px solid var(--line)}
.viewer-toolbar h2{font-size:.875rem;line-height:1.5;color:var(--blue)}
.viewer-close{display:flex;gap:20px;align-items:center;background:none;border:0;font-size:.8125rem;padding:8px;min-height:44px}
.viewer-close span[aria-hidden]{font-size:1.5rem;color:var(--accent)}
.viewer-content{display:flex;justify-content:center;background:#101214}
.viewer-content img{display:block;width:100%;height:auto;max-height:calc(100dvh - 140px);object-fit:contain}
.viewer-open{overflow:hidden}
@media(max-width:720px){.career-step{grid-template-columns:105px minmax(0,1fr);gap:22px}.qualification{padding:23px}.gallery-tabs button{display:block;padding:13px;min-height:95px}.gallery-tabs button>.caption-index{display:block;margin-bottom:7px}.capture-hint{width:100%;margin:0}.image-viewer{width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.viewer-toolbar{padding:10px 12px;gap:12px}}
@media(max-width:480px){.career-step{grid-template-columns:1fr;gap:10px;padding:24px 0}.career-role{font-size:1.1rem}.career-period{font-size:.75rem}.career-summary{font-size:.875rem}.qualification-grid{grid-template-columns:1fr}.qualification+.qualification{border-left:0;border-top:1px solid var(--line)}.gallery-tabs button{font-size:.6875rem;padding:12px 10px;overflow-wrap:anywhere}.workspace-capture figcaption{padding:12px 14px}.viewer-toolbar h2{font-size:.75rem}.viewer-close{gap:9px}.capture-zoom{bottom:8px;right:8px;font-size:1rem;padding:1px 7px}}
@keyframes page-enter{from{transform:translateY(3px)}to{transform:translateY(0)}}
@media(min-width:1600px){:root{--rail-width:264px}.sidebar{padding-left:34px;padding-right:34px}.hero-layout{gap:65px}.home-hero{min-height:740px}.hero-title{font-size:4rem}}
@media(max-width:1220px) and (min-width:1041px){:root{--rail-width:220px;--gutter:34px}.sidebar{padding-left:22px;padding-right:22px}.identity-descriptor{display:none}.hero-layout{gap:24px;grid-template-columns:1.2fr 1fr}.hero-title{font-size:3.2rem}.hero-register{padding:20px}.project-record,.ledger-header{grid-template-columns:40px 1fr 1fr 25px;gap:18px}.project-record h2{font-size:1.6rem}}
@media(max-width:1040px){:root{--gutter:36px}.site-frame{margin-left:0;padding-top:78px}.site-header{position:fixed;top:0;left:0;right:0;height:78px;min-height:0;z-index:60;background:var(--bg);padding:18px var(--gutter)}.identity{gap:18px}.page-position{display:none}.menu-toggle{display:flex}.sidebar{display:none;top:78px;width:100%;height:calc(100svh - 78px);padding:30px var(--gutter);z-index:50;border-right:0}.sidebar.is-open{display:flex}.rail-id{margin-bottom:28px;max-width:480px}.primary-nav{max-width:480px;width:100%}.primary-nav a{min-height:52px;font-size:1rem}.rail-note{margin-top:24px}.rail-bottom{max-width:480px;width:100%;padding-top:30px}.rail-version{margin-top:17px}.rail-bottom .preference-row{max-width:340px}.home-hero{min-height:660px}.hero-layout{padding:55px 0}.hero-title{font-size:3.4rem}.hero-register{margin-top:0}.page-heading{padding-top:40px}.book-record{grid-template-columns:45px 1.5fr 1fr;gap:25px}.about-layout{gap:40px}.nav-open{overflow:hidden}}
@media(max-width:720px){:root{--gutter:24px}.site-frame{padding-top:70px}.site-header{height:70px;padding-top:15px;padding-bottom:15px}.identity-descriptor,.identity>.slash{display:none}.wordmark{font-size:22px}.sidebar{top:70px;height:calc(100svh - 70px)}.page-heading{padding:34px 0 40px}.page-heading h1{font-size:2.6rem;margin-bottom:22px}.home-hero{padding-top:30px;min-height:0}.hero-topline .edition{display:none}.hero-layout{grid-template-columns:1fr;gap:30px;padding:38px 0}.hero-title{font-size:clamp(2.75rem,7.8vw,3.5rem);letter-spacing:-.055em;margin-bottom:24px}.hero-copy{max-width:560px}.hero-register{padding:20px 22px}.register-items{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.register-items li{padding:16px 0 16px 28px}.register-items li:nth-last-child(-n+2){border-bottom:0}.register-items li:before{top:17px}.hero-foot{align-items:flex-start}.hero-foot p{max-width:53%;padding-top:6px}.hero-foot .text-link{font-size:.8125rem;gap:14px}.field-strip{gap:8px 16px;font-size:.75rem;padding:20px 0}.field-strip span:not(:last-child):after{padding-left:16px}.home-section{padding-top:45px}.section-topline{margin-bottom:24px}.section-topline h2{font-size:1.55rem}.index-panel{padding:22px 22px 23px;min-height:255px}.index-panel h3{font-size:1.6rem;margin-top:23px}.index-panel p{font-size:.875rem}.bio-band{grid-template-columns:1fr;gap:24px;padding:35px 0 45px;margin-top:30px}.project-record,.ledger-header{grid-template-columns:35px 1fr 28px;gap:15px}.ledger-header .ledger-field{display:none}.project-record{padding:27px 0 31px}.project-record:hover{padding-left:0;padding-right:0}.project-record .record-description{grid-column:2;grid-row:2}.project-record>.arrow{grid-column:3;grid-row:1}.project-record h2{font-size:1.7rem;margin-bottom:10px}.project-record .kind{font-size:.75rem}.record-description .metadata{margin-top:15px}.document-tail{padding-bottom:50px;font-size:.75rem}.detail-heading h1{font-size:2.9rem}.detail-lead{font-size:1.2rem}.fact-grid{grid-template-columns:1fr 1fr;margin-bottom:40px}.fact-grid>div{padding:18px 16px 20px 0}.fact-grid>div+div{padding-left:16px}.fact-grid>div:nth-child(3){border-left:0;padding-left:0}.fact-grid>div:nth-child(n+3){border-top:1px solid var(--line)}.content-section{padding-bottom:45px}.capability-grid{grid-template-columns:1fr}.capability{display:grid;grid-template-columns:35px 1fr;gap:8px 16px;padding:22px}.capability+.capability{border-left:0;border-top:1px solid var(--line)}.capability .label{grid-row:1/3;margin:0;padding-top:2px}.capability h3{margin:0}.capability p{grid-column:2}.capture-grid{gap:12px}.capture-frame{aspect-ratio:1;padding:12px}.capture-frame:before{inset:7px}.capture-frame .capture-code{font-size:.75rem}.capture-grid figcaption{font-size:.75rem}.spec-list>div{grid-template-columns:1fr 1.65fr;gap:20px}.scope-grid{grid-template-columns:1fr;margin-bottom:30px}.scope-column{padding:22px}.scope-column+.scope-column{border-top:1px solid var(--line);border-left:0}.scope-column h3{min-height:0;margin-bottom:18px}.scope-column ul{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}.scope-column li{margin:0}.editorial-panel{grid-template-columns:1fr;gap:20px;padding:24px}.publication{grid-template-columns:55px 1fr;gap:18px;padding:24px 0 28px}.publication h2{font-size:1.25rem}.publication-excerpt{padding-left:16px}.bibliography{gap:7px 16px;margin:20px 0}.publication-year .syntax{font-size:.75rem}.book-record{grid-template-columns:38px 1fr;gap:12px 19px;padding:26px 0 32px}.book-title{font-size:1.95rem}.book-commentary{grid-column:2;margin:15px 0 0;padding-left:0;border:0}.book-topline{margin-bottom:16px}.book-author{margin-top:15px}.book-record .text-link{margin-top:20px}.about-layout{grid-template-columns:1.45fr 1fr;gap:25px;margin-bottom:45px}.about-copy .profile-role{font-size:1.125rem}.portrait-frame{aspect-ratio:3/4}.portrait-label>span:last-child{display:none}.portrait-frame .portrait-label{left:20px;right:20px;bottom:20px}.career-section{grid-template-columns:1fr;gap:27px;padding-bottom:45px}.career-ledger>div{grid-template-columns:110px 1fr;gap:20px}.education{padding-bottom:48px}.footer-bottom{display:block}.footer-copyright{margin-top:20px}.independent-note{font-size:.75rem}.site-footer{padding-top:24px;padding-bottom:24px}.related-link{margin-bottom:40px}}
@media(max-width:480px){:root{--gutter:20px}.menu-toggle{font-size:.75rem;gap:8px}.hero-title{font-size:clamp(2.15rem,9.5vw,2.7rem)}.hero-copy{font-size:.9375rem}.hero-layout{padding-top:32px;gap:26px}.hero-register{padding:18px}.register-header{padding-bottom:15px}.register-items{column-gap:16px}.register-items li{padding-left:0;padding-top:30px}.register-items li:before{top:13px;font-size:.75rem}.register-items strong{font-size:.8125rem}.register-items span{font-size:.75rem}.hero-foot{display:block}.hero-foot p{max-width:100%;font-size:.75rem}.hero-foot .text-link{margin-top:10px;min-width:160px}.field-strip{font-size:.75rem;gap:8px 12px}.field-strip span:not(:last-child):after{padding-left:12px}.section-topline>.syntax{display:none}.index-grid{grid-template-columns:1fr}.index-panel{min-height:220px;padding:23px}.index-panel h3{margin-top:19px;margin-bottom:12px}.index-panel p{max-width:none}.index-panel .panel-tail{padding-top:18px}.page-heading h1{font-size:2.3rem}.page-heading .intro{font-size:.9375rem}.path-label{font-size:.75rem;gap:9px}.project-record h2{font-size:1.55rem}.project-record .record-id{font-size:.75rem;padding-top:2px}.record-description p{font-size:.875rem}.document-tail{display:block}.document-tail .syntax{margin-top:10px}.detail-heading h1{font-size:2.6rem}.detail-lead{font-size:1.1rem}.action-row{gap:14px}.button-link{font-size:.8125rem;gap:28px}.fact-grid dd{font-size:.8125rem}.fact-grid dt{font-size:.75rem}.capture-grid{grid-template-columns:1fr}.capture-frame{aspect-ratio:16/8}.capture-frame .capture-code{font-size:.875rem}.capture-grid figcaption{font-size:.75rem;padding-top:10px;padding-bottom:10px}.spec-list>div{grid-template-columns:1fr;gap:9px;padding:18px 0}.spec-list dd{font-size:.875rem}.scope-column ul{grid-template-columns:1fr 1fr;gap:13px 18px}.scope-column li{font-size:.8125rem}.publication{grid-template-columns:1fr;gap:15px}.publication-year{display:flex;align-items:center;gap:20px}.publication-year .syntax{margin:0}.publication h2{font-size:1.25rem;line-height:1.55}.publication-excerpt{font-size:.875rem}.bibliography{display:grid;font-size:.75rem}.publication-topline{font-size:.75rem}.publication-section{padding-bottom:45px}.book-record{grid-template-columns:25px 1fr;gap:10px 14px}.book-title{font-size:1.65rem}.book-subtitle{font-size:.875rem}.book-commentary{font-size:.875rem}.about-layout{grid-template-columns:1fr}.about-copy{font-size:.9375rem}.portrait-frame{aspect-ratio:5/4;max-height:none}.portrait-frame .portrait-initials{font-size:4rem}.portrait-label>span:last-child{display:inline}.portrait-frame .portrait-label{left:26px;right:26px;bottom:26px}.career-ledger>div{grid-template-columns:90px 1fr;gap:18px}.career-ledger dt{font-size:.75rem}.career-ledger dd{font-size:.875rem}.footer-top{gap:15px;margin-bottom:21px}.footer-name{font-size:17px}.footer-top .text-link{gap:10px}.dev-selector{bottom:9px;left:20px;right:20px;justify-content:space-between}.hero-topline .syntax{font-size:.75rem}}
@media(max-width:360px){.menu-text{display:none}.menu-toggle{min-width:44px;justify-content:center}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.arrow,a:hover .arrow{transform:none}}
@media print{.sidebar,.site-header,.dev-selector,.skip-link{display:none!important}.site-frame{margin:0;padding:0}.document{padding:0 20px}.site-footer{padding:20px}body{color:#111;background:#fff;font-size:11pt}.page-heading{padding:25px 0}.home-hero{min-height:0}.hero-layout{padding:25px 0}.hero-title{font-size:34pt}.publication,.book-record,.project-record{break-inside:avoid}:root{--text:#111;--secondary:#444;--muted:#666;--bg:#fff;--surface:#fff;--line:#ccc;--line-soft:#ddd;--accent:#963d1b}.independent-note{font-size:9pt}}
