/* Shared accessibility and reading primitives. Project compositions are separate. */
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.75 var(--font-body);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:5px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}img{display:block;max-width:100%;height:auto}p{margin:0 0 1em}h1,h2,h3{line-height:1.18;font-weight:500;margin:0;text-wrap:balance}h1,h2{font-family:var(--font-display)}h1{letter-spacing:-.055em}h2{font-size:clamp(30px,4vw,54px);letter-spacing:-.035em}h3{font-size:21px}ul{padding-left:1.2em}.wrap{max-width:1440px;margin:auto;padding:0 64px}.eyebrow{font:500 12px/1.5 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.lede{font-size:clamp(17px,1.7vw,22px);line-height:1.75;color:var(--muted);max-width:42em}.kicker{display:inline-flex;gap:12px;align-items:center;font:500 12px/1.6 var(--font-mono);letter-spacing:.06em}.kicker:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent)}.btn{display:inline-flex;justify-content:center;align-items:center;gap:14px;min-height:48px;padding:12px 24px;border:1px solid var(--accent);background:var(--accent);color:var(--accent-ink);text-decoration:none;border-radius:4px;font:500 14px/1.5 var(--font-body);transition:transform .18s,filter .18s}.btn:hover{transform:translateY(-2px);filter:brightness(1.08)}.btn:active{transform:translateY(1px)}.btn.secondary{background:transparent;color:var(--ink);border-color:var(--line)}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:32px}.text-link{font-size:14px;color:var(--muted)}.section{padding:100px 0}.section-heading{display:flex;align-items:baseline;gap:32px;justify-content:space-between;margin-bottom:48px}.section-heading p{max-width:34em;color:var(--muted);margin:0}.top-rule{border-top:1px solid var(--line)}.section-number{font:12px var(--font-mono);color:var(--accent);margin-bottom:20px}.status-note{color:var(--muted);max-width:65em;font-size:14px}.caps{list-style:none;padding:0;margin:0}.caps li{padding:26px 0;border-top:1px solid var(--line)}.caps h3{margin-bottom:12px}.caps p{color:var(--muted);margin:0;font-size:15px}.source-area{min-width:0}.source-link{font:12px/1.6 var(--font-mono);color:var(--muted);display:block;margin:0 0 14px;overflow-wrap:anywhere}.source-area>.docs-code{margin-top:0}.code-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:80px;align-items:start}.site-footer{padding:56px 0 30px;border-top:1px solid var(--line)}.footer-top{display:flex;gap:40px;justify-content:space-between;align-items:center;margin-bottom:42px}.footer-name{font-family:var(--font-display);font-size:30px;letter-spacing:-.025em}.footer-links{display:flex;gap:24px;flex-wrap:wrap;font-size:13px;color:var(--muted)}.footer-bottom{font:11px/1.8 var(--font-mono);display:flex;justify-content:space-between;gap:24px;color:var(--muted)}.footer-bottom details{max-width:65%}.footer-bottom summary{cursor:pointer}.footer-bottom ul{padding-left:18px}.footer-bottom a{overflow-wrap:anywhere}
/* One functional navigation shell; the projects keep their own typography and art. */
.site-nav{position:sticky;top:0;z-index:60;height:76px;background:var(--bg);border-bottom:1px solid var(--line)}.nav-inner{height:100%;display:flex;align-items:center;gap:32px}.site-brand{font:600 17px/1.3 var(--font-body);letter-spacing:-.02em;text-decoration:none;max-width:38%;overflow-wrap:anywhere}.site-links{margin-left:auto;display:flex;gap:28px;align-items:center}.site-links a{font-size:13px;text-decoration:none;position:relative}.site-links a:after{content:"";position:absolute;bottom:-6px;left:0;width:0;height:1px;background:currentColor;transition:width .2s}.site-links a:hover:after{width:100%}.nav-controls{display:flex;align-items:center;gap:12px}.nav-cta{min-height:38px;padding:9px 17px;font-size:12px}.site-theme,.site-menu-toggle{height:40px;width:40px;display:grid;place-items:center;color:var(--ink);border:1px solid var(--line);background:transparent;border-radius:50%;padding:0}.site-theme:hover,.site-menu-toggle:hover{background:var(--surface)}.site-menu-toggle{display:none;border-radius:4px}.skip-link{position:absolute;left:-9999px;top:8px;background:var(--bg);padding:12px;z-index:90}.skip-link:focus{left:20px}.site-drawer{display:none}.site-nav.is-open .site-drawer{display:flex}.site-drawer{position:fixed;inset:76px 0 0;background:var(--bg);padding:48px 24px;flex-direction:column;gap:24px;font-size:26px}.site-drawer a{text-decoration:none}.site-drawer .drawer-note{font-size:14px;color:var(--muted);margin-top:auto}.site-drawer[hidden]{display:none!important}
/* Atlas — a copper and parchment historical folio. */
.atlas-hero{position:relative;padding:52px 0 70px;overflow:hidden}.atlas-dateline{display:flex;justify-content:space-between;border-block:1px solid var(--line);padding:12px 0;font:12px var(--font-mono);letter-spacing:.15em}.atlas-title{font-size:clamp(72px,12vw,176px);letter-spacing:.02em;text-align:center;margin:44px 0 14px;font-family:var(--font-display);font-weight:400}.atlas-subtitle{font:italic clamp(16px,2vw,26px) var(--font-display);text-align:center;color:var(--muted);margin-bottom:38px}.atlas-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.65fr);gap:72px;align-items:center}.atlas-grid .project-3d{min-height:480px}.atlas-copy{border-left:3px solid var(--accent);padding-left:30px}.atlas-copy h2{font-size:36px;margin:14px 0 24px}.atlas-flags{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;border-block:1px solid var(--line);padding:40px 0}.atlas-flags a{display:flex;align-items:center;justify-content:center;min-height:100px}.atlas-flags img{max-height:140px;object-fit:contain}.atlas-margins{display:grid;grid-template-columns:180px minmax(0,1fr) minmax(0,1fr);gap:50px}.atlas-margins .caps li:first-child{border-top:0;padding-top:0}
/* Editorial — an actual reading room, with a red pencil interaction. */
.editorial-hero{padding:80px 0 60px}.editorial-masthead{display:flex;justify-content:space-between;gap:30px;border-bottom:3px double var(--line);padding-bottom:16px;font:12px var(--font-mono);letter-spacing:.08em}.editorial-columns{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:90px;margin-top:58px}.editorial-title{font-size:clamp(58px,7.3vw,112px);font-weight:400;letter-spacing:-.035em}.editorial-title em{font-weight:400;color:var(--accent)}.editorial-intro{margin-top:36px;max-width:34em}.editorial-side{border-left:1px solid var(--line);padding-left:40px}.editorial-side .project-3d{min-height:380px}.editorial-note{font:italic 18px/1.8 var(--font-display);color:var(--muted);margin-top:24px}.proof-sheet{border:1px solid var(--line);padding:48px;background:var(--surface);position:relative}.proof-sheet:before{content:"01 / EDIT";font:11px var(--font-mono);color:var(--accent);display:block;margin-bottom:28px}.proof-sentence{font:400 clamp(24px,3vw,42px)/1.8 var(--font-display);letter-spacing:-.01em;margin-bottom:24px}.proof-sentence del{text-decoration-color:var(--accent);text-decoration-thickness:2px;color:var(--muted)}.proof-sentence ins{text-decoration:none;color:var(--accent);border-bottom:2px solid var(--accent)}.proof-sheet button{background:transparent;border:0;border-bottom:1px solid var(--accent);color:var(--accent);padding:6px 0;font-size:13px}.editorial-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:90px}.editorial-content .caps{counter-reset:entry}.editorial-content .caps li{counter-increment:entry;position:relative;padding-left:48px}.editorial-content .caps li:before{content:"0" counter(entry);position:absolute;left:0;top:28px;font:12px var(--font-mono);color:var(--accent)}
/* Academic folio — paper, typography and a genuine template preview. */
.folio-hero{padding:70px 0}.folio-topline{display:flex;gap:40px;align-items:center}.folio-seal{height:72px;width:72px;border:1px solid var(--accent);border-radius:50%;display:grid;place-items:center;font-family:var(--font-display);font-size:30px;color:var(--accent)}.folio-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:70px;align-items:center;margin-top:42px}.folio-title{font-size:clamp(56px,7vw,100px);font-family:var(--font-display);font-weight:400;letter-spacing:.005em}.folio-preview{padding:28px;background:var(--accent);box-shadow:18px 18px 0 var(--line)}.folio-preview img{width:100%;height:auto;background:#fff}.folio-meta{font:12px var(--font-mono);margin-top:20px;color:var(--muted)}.folio-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:80px;align-items:center}.folio-layout .project-3d{min-height:430px}.folio-tabs{display:flex;gap:8px;margin-top:22px}.folio-tabs button{background:transparent;border:1px solid var(--line);color:var(--ink);padding:8px 16px;font-size:12px}.folio-tabs button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
/* Training notebook — legible learning records, not a made-up analytics board. */
.notebook-hero{padding:64px 0 74px}.notebook-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:74px;align-items:center}.notebook-title{font-size:clamp(55px,7.5vw,108px);letter-spacing:-.055em}.notebook-title b{font-weight:500;color:var(--accent)}.notebook-model{background:var(--surface);border-radius:50% 50% 12px 12px;padding:28px 10px 0;border:1px solid var(--line)}.notebook-model .project-3d{min-height:440px}.learning-steps{margin-top:70px;display:grid;grid-template-columns:repeat(3,1fr);gap:32px}.learning-step{border-top:3px solid var(--accent);padding-top:20px}.learning-step span{font:12px var(--font-mono);color:var(--accent)}.learning-step h3{margin:16px 0}.learning-step p{font-size:15px;color:var(--muted)}.notebook-paper{background:var(--surface);border:1px solid var(--line);padding:42px;box-shadow:8px 10px 0 var(--line)}
/* Catalog — navigation through real folders and source materials. */
.catalog-hero{padding:74px 0 40px}.catalog-heading{display:flex;justify-content:space-between;gap:50px;align-items:flex-end;padding-bottom:48px;border-bottom:1px solid var(--line)}.catalog-title{font-size:clamp(60px,9vw,130px);line-height:.98}.catalog-heading .lede{max-width:28em}.catalog-index{display:grid;grid-template-columns:minmax(0,.6fr) minmax(0,1.4fr);gap:70px;padding-top:50px}.catalog-marker{position:sticky;top:110px;align-self:start;font:12px/2 var(--font-mono);color:var(--accent)}.directory-list{list-style:none;padding:0;margin:0}.directory-list li{border-bottom:1px solid var(--line)}.directory-list a{padding:22px 4px;display:flex;align-items:center;gap:22px;justify-content:space-between;text-decoration:none;transition:padding .2s,background .2s}.directory-list a:hover{padding-left:18px;background:var(--surface)}.directory-list .file-type{font:11px var(--font-mono);color:var(--muted);margin-left:auto}.directory-list strong{font-size:20px;font-weight:500;overflow-wrap:anywhere}.catalog-aside{padding:35px;border:1px solid var(--line);background:var(--surface)}
/* Terminal/tool pages use their own compact, typographic workbench. */
.terminal-hero{padding:54px 0 74px}.terminal-label{display:flex;align-items:center;gap:12px;font:12px var(--font-mono);color:var(--accent)}.terminal-label:before{content:"";width:9px;height:9px;background:var(--accent);border-radius:50%}.terminal-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:70px;align-items:center;margin-top:52px}.terminal-title{font-size:clamp(52px,6vw,86px);font-family:var(--font-display);line-height:1.06}.terminal-stage{border:1px solid var(--line);border-radius:18px;background:var(--surface);padding:16px;box-shadow:0 28px 60px -45px var(--ink)}.terminal-stage .project-3d{min-height:430px}.terminal-facts{display:flex;gap:24px;font:11px var(--font-mono);margin-top:40px;color:var(--muted);flex-wrap:wrap}.terminal-facts span{border-left:2px solid var(--accent);padding-left:12px}
/* The archive is a photographic publication. The wall has a deliberate physical depth mode. */
.archive-hero{padding:42px 0 80px;overflow:hidden}.archive-masthead{display:flex;justify-content:space-between;align-items:center;gap:20px;font:11px var(--font-mono);letter-spacing:.1em;padding-bottom:20px;border-bottom:1px solid var(--line)}.archive-heading{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:70px;align-items:end;margin-top:44px}.archive-year{font:400 clamp(70px,12vw,172px)/.9 var(--font-display);letter-spacing:-.06em}.archive-year small{font:500 .24em/1.6 var(--font-body);letter-spacing:.03em;display:block;margin-top:24px}.archive-heading .lede{font-size:17px;max-width:26em;margin-bottom:0}.archive-controls{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:36px 0 0;font-size:12px}.archive-controls button{border:1px solid var(--line);padding:8px 16px;background:transparent;color:var(--ink);border-radius:30px}.archive-controls button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.photo-wall{position:relative;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:center;min-height:540px;perspective:1500px;padding:40px 0;transform-style:preserve-3d}.archive-print{position:relative;background:var(--paper,var(--surface));border:1px solid var(--line);padding:14px 14px 26px;box-shadow:0 12px 30px -20px #0006;transform:translateZ(0);transition:transform .6s,box-shadow .6s;display:block}.archive-print img{width:100%;height:340px;object-fit:contain}.photo-wall.is-depth .archive-print:nth-child(1){transform:rotateY(12deg) rotateX(3deg) translateZ(70px);z-index:3}.photo-wall.is-depth .archive-print:nth-child(2){transform:rotateY(-10deg) rotateZ(3deg) translateZ(-20px);z-index:2}.photo-wall.is-depth .archive-print:nth-child(3){transform:rotateY(-16deg) rotateZ(-3deg) translateZ(-80px);z-index:1}.photo-wall.is-depth .archive-print{box-shadow:25px 35px 50px -34px #000a}.archive-layout-poster .archive-heading{grid-template-columns:minmax(0,1fr);text-align:center;gap:30px}.archive-layout-poster .archive-heading .lede{margin:auto;max-width:45em}.archive-layout-poster .photo-wall{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr) minmax(0,1fr)}.archive-layout-spread .archive-year{font-size:clamp(65px,9vw,126px)}.archive-layout-spread .photo-wall{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px}.archive-layout-spread .archive-print:first-child{grid-row:span 2}.archive-layout-spread .archive-print:first-child img{height:470px}.archive-layout-spread .archive-print:not(:first-child) img{height:200px}.archive-layout-ribbon .archive-heading{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.archive-layout-ribbon .photo-wall{grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line);margin-top:30px}.archive-caption-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);gap:24px;padding:0 0 28px;font:11px var(--font-mono);color:var(--muted)}.archive-links{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:80px}.archive-links p{max-width:45em}.archive-source{padding:32px;background:var(--surface);border-top:3px solid var(--accent)}
/* Timeline / tiny repositories remain purposeful and compact. */
.timeline-hero{padding:84px 0}.timeline-title{font-size:clamp(56px,8vw,118px);max-width:13ch}.timeline-grid{display:grid;grid-template-columns:minmax(0,.6fr) minmax(0,1.4fr);gap:80px;margin-top:56px}.timeline-date{font:400 44px/1.2 var(--font-display);color:var(--accent)}.timeline-entry{border-left:1px solid var(--line);padding-left:40px}.tiny-hero{padding:100px 0 80px}.tiny-title{font-size:clamp(70px,15vw,210px);font-family:var(--font-mono);letter-spacing:-.07em}.tiny-copy{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:80px;margin-top:55px}.profile-hero{padding:70px 0}.profile-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:90px;align-items:center}.profile-title{font-size:clamp(65px,10vw,140px);font-family:var(--font-display);line-height:1.03}.profile-avatar{background:var(--surface);padding:55px;border-radius:50%;max-width:460px;margin:auto;border:1px solid var(--line)}.profile-avatar img{border-radius:50%;width:100%}.profile-disciplines{display:flex;gap:20px;flex-wrap:wrap;margin:30px 0;font:13px var(--font-mono);color:var(--accent)}
@media(max-width:1100px){.wrap{padding-inline:36px}.code-layout,.editorial-columns,.editorial-content,.atlas-grid,.folio-grid,.folio-layout,.notebook-head,.catalog-index,.terminal-grid,.profile-grid{gap:42px}.atlas-margins{grid-template-columns:120px minmax(0,1fr) minmax(0,1fr);gap:30px}.photo-wall{min-height:450px}.archive-print img{height:280px}.archive-heading{gap:40px}.profile-avatar{padding:35px}}
@media(max-width:767px){html{scroll-padding-top:78px}.wrap{padding-inline:22px}.section{padding:64px 0}.section-heading{display:block;margin-bottom:30px}.section-heading p{margin-top:18px}.site-nav{height:64px}.nav-inner{gap:14px}.site-brand{max-width:calc(100% - 110px);font-size:15px}.site-links,.nav-cta{display:none}.nav-controls{margin-left:auto}.site-menu-toggle{display:grid}.site-drawer{top:64px}.site-theme,.site-menu-toggle{height:38px;width:38px}.nav-controls{gap:8px}.code-layout,.editorial-columns,.editorial-content,.atlas-grid,.folio-grid,.folio-layout,.notebook-head,.catalog-index,.terminal-grid,.profile-grid,.archive-links,.timeline-grid,.tiny-copy{grid-template-columns:minmax(0,1fr);gap:38px}.lede{font-size:17px}.actions{gap:12px}.actions .btn{flex:1;min-width:140px}.footer-top{display:block;margin-bottom:30px}.footer-links{margin-top:24px;gap:18px}.footer-bottom{display:block}.footer-bottom details{max-width:100%;margin-top:16px}.atlas-hero{padding-top:28px}.atlas-title{font-size:76px;margin-top:32px}.atlas-subtitle{font-size:19px}.atlas-grid .project-3d{min-height:330px}.atlas-copy{padding-left:20px}.atlas-flags{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;padding:28px 0}.atlas-flags img{max-height:90px}.atlas-margins{grid-template-columns:minmax(0,1fr);gap:24px}.editorial-hero{padding:35px 0 45px}.editorial-masthead{font-size:10px;gap:18px}.editorial-columns{margin-top:35px}.editorial-title{font-size:60px}.editorial-side{border-left:0;padding-left:0}.editorial-side .project-3d{min-height:320px}.proof-sheet{padding:28px}.proof-sentence{font-size:28px}.folio-hero{padding:40px 0}.folio-title{font-size:56px}.folio-preview{padding:16px;box-shadow:8px 8px 0 var(--line)}.folio-seal{width:56px;height:56px;font-size:23px}.folio-topline{gap:20px}.folio-grid{margin-top:30px}.folio-layout .project-3d{min-height:320px}.notebook-hero{padding:40px 0}.notebook-title{font-size:58px}.notebook-model .project-3d{min-height:320px}.learning-steps{grid-template-columns:minmax(0,1fr);margin-top:38px;gap:24px}.notebook-paper{padding:25px}.catalog-hero{padding:40px 0}.catalog-heading{display:block;padding-bottom:30px}.catalog-title{font-size:66px}.catalog-heading .lede{margin-top:28px}.catalog-index{padding-top:30px}.catalog-marker{position:static}.directory-list strong{font-size:17px}.directory-list a{gap:15px}.terminal-hero{padding:35px 0}.terminal-title{font-size:54px}.terminal-grid{margin-top:30px}.terminal-stage{padding:8px}.terminal-stage .project-3d{min-height:320px}.archive-hero{padding-top:26px}.archive-masthead{font-size:10px;letter-spacing:.04em}.archive-heading,.archive-layout-ribbon .archive-heading{grid-template-columns:minmax(0,1fr);gap:28px;margin-top:34px}.archive-year{font-size:86px}.archive-heading .lede{max-width:none;font-size:15px}.archive-controls{margin-top:26px}.photo-wall,.archive-layout-poster .photo-wall,.archive-layout-spread .photo-wall,.archive-layout-ribbon .photo-wall{grid-template-columns:minmax(0,1fr);gap:25px;min-height:0;padding:32px 15px}.archive-print img,.archive-layout-spread .archive-print:first-child img,.archive-layout-spread .archive-print:not(:first-child) img{height:260px}.archive-layout-spread .archive-print:first-child{grid-row:auto}.photo-wall.is-depth .archive-print:nth-child(1){transform:rotateY(8deg) rotateZ(-3deg) translateZ(20px)}.photo-wall.is-depth .archive-print:nth-child(2){transform:rotateY(-8deg) rotateZ(3deg) translateZ(0)}.photo-wall.is-depth .archive-print:nth-child(3){transform:rotateY(8deg) rotateZ(-3deg) translateZ(-20px)}.archive-caption-row{display:none}.archive-layout-poster .archive-heading{text-align:left}.archive-layout-poster .archive-heading .lede{margin:0}.archive-layout-spread .archive-year{font-size:76px}.archive-source{padding:24px}.timeline-hero,.tiny-hero{padding:55px 0}.timeline-title{font-size:62px}.tiny-title{font-size:80px}.timeline-entry{padding-left:24px}.profile-hero{padding:40px 0}.profile-title{font-size:76px}.profile-avatar{max-width:300px;padding:30px}.profile-disciplines{font-size:12px;gap:14px}.caps li{padding:21px 0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}.photo-wall .archive-print{transition:none}}

/* Code blocks scroll within their columns, including intermediate grid items. */
.code-layout>*,.editorial-content>*,.atlas-margins>*,.tiny-copy>*,.catalog-index>*,.timeline-grid>*{min-width:0}
