*{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark;--bg:#191715;--surface:#211e1b;--text:#eee7df;--muted:#b5aaa0;--line:#494039;--soft-line:#37312c;--secondary:#d0c3b8;--tertiary:#b7a99d;--panel:#211e1b;--hover:#2b2621;--pill:#342d27;--node:#c29a78;--grid:rgba(238,231,223,.025);--c-cs:#c29470;--c-ai:#d2b28b;--c-math:#a99583;--c-econ:#b88771;--c-text-body:var(--text);--c-text-muted:var(--muted);--c-border-subtle:var(--line);--c-accent-glow:var(--c-cs);--panel-width:400px}[data-theme=light]{color-scheme:light;--bg:#f4f0ea;--surface:#fbf8f2;--text:#29231e;--muted:#6f6258;--line:#d7cec3;--soft-line:#e7dfd5;--secondary:#51463e;--tertiary:#75675c;--panel:#fbf8f2;--hover:#eee7dd;--pill:#e9e0d5;--node:#946b4c;--grid:rgba(41,35,30,.025);--c-cs:#946b4c;--c-ai:#8e7156;--c-math:#756657;--c-econ:#95604c}html{scroll-behavior:smooth;background:var(--bg)}body{min-height:100vh;background:var(--bg);color:var(--text);font-family:"Source Serif 4",Georgia,serif;font-size:1.05rem;line-height:1.75;overflow-x:hidden}body.subpage{display:flex;flex-direction:column}a{color:inherit;text-underline-offset:4px}button,input{font:inherit}:focus-visible{outline:3px solid var(--c-cs);outline-offset:3px}#background-grid{display:none}.skip-link{position:fixed;top:8px;left:8px;z-index:1000;padding:8px 12px;background:var(--surface);transform:translateY(-160%)}.skip-link:focus{transform:none}header{position:relative;z-index:100;display:flex;justify-content:space-between;align-items:center;gap:28px;padding:22px clamp(20px,5vw,72px);border-bottom:1px solid var(--soft-line);background:color-mix(in srgb,var(--bg) 92%,transparent)}.logo{font-family:Space Grotesk,sans-serif;font-size:1.35rem;font-weight:600;text-decoration:none;letter-spacing:-.04em;white-space:nowrap}nav{display:flex;align-items:center;justify-content:flex-start;gap:clamp(12px,2.1vw,30px);flex-wrap:wrap}nav a{font:500 .92rem Space Grotesk,sans-serif;text-decoration:none;color:var(--muted);padding:5px 0;border-bottom:1px solid transparent;transition:color .18s,border-color .18s}nav a:hover,nav a.active{color:var(--text);border-color:var(--c-cs)}#theme-toggle{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--text);cursor:pointer}main,.map-page{position:relative;z-index:1;width:100%}.about-layout{width:min(1160px,100%);margin:0 auto;padding:clamp(48px,8vw,110px) clamp(20px,5vw,64px) 70px}.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,290px);gap:clamp(42px,8vw,110px);align-items:start}.about-copy{max-width:720px}.about-layout h1,.page-title,.page-hero h1{font:500 clamp(2.7rem,6vw,4.2rem)/1.06 "Space Grotesk",sans-serif;letter-spacing:-.055em;margin-bottom:22px}.about-copy>p{max-width:680px;color:var(--secondary);margin:0 0 18px;line-height:1.8}.about-copy>.eyebrow{font:500 .95rem/1.7 Space Grotesk,sans-serif;color:var(--muted);margin-bottom:26px;letter-spacing:0;text-transform:none}.about-quote{margin:34px 0 10px;padding:18px 22px;border-left:2px solid var(--c-cs);font-size:1.25rem;line-height:1.6;color:var(--text);max-width:640px}.contact-panel{background:var(--surface);border:1px solid var(--line);padding:25px 26px;position:sticky;top:24px}.contact-panel h2,.map-explorer>h2{font:600 1.08rem Space Grotesk,sans-serif;letter-spacing:.01em;margin-bottom:12px}.contact-panel ul,.section ul{list-style:none}.contact-panel a{display:block;padding:9px 0;color:var(--secondary);text-decoration:none}.contact-panel a:hover{color:var(--text);text-decoration:underline}.hobby-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:28px;margin-top:56px;max-width:820px}.hobby-item{border-top:1px solid var(--line);padding-top:14px}.hobby-item h2{font:600 1rem Space Grotesk,sans-serif;margin:0 0 7px}.hobby-item p{color:var(--secondary);font-size:.96rem;line-height:1.7}.stat-number{font:500 2rem Space Grotesk,sans-serif;margin-bottom:5px}.page-hero{width:min(980px,100%);padding:clamp(48px,7vw,96px) clamp(20px,5vw,64px) 36px;position:relative;z-index:1}.eyebrow{font:500 .77rem Space Grotesk,sans-serif;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);margin-bottom:14px}.page-hero h1{max-width:800px}.page-hero p,.lede{max-width:680px;color:var(--secondary);line-height:1.8}.page-shell{width:min(970px,100%);margin:0 auto;padding:clamp(48px,7vw,96px) clamp(20px,5vw,60px) 60px;position:relative;z-index:1}.page-shell .page-title{margin:10px 0 16px}.catalogue-controls{padding:0 clamp(20px,5vw,64px) 30px;position:relative;z-index:1}.project-search-label{display:block;font:500 .8rem Space Grotesk,sans-serif;color:var(--muted);margin-bottom:8px}.project-search{width:min(100%,580px);padding:12px 15px;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--text);font:inherit}.filters{display:flex;gap:9px;flex-wrap:wrap;padding:20px 0 12px}.filter-pill{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:transparent;padding:7px 13px;color:var(--secondary);cursor:pointer;border-radius:99px;font:500 .8rem Space Grotesk,sans-serif}.filter-pill:hover,.filter-pill.active{background:var(--text);border-color:var(--text);color:var(--bg)}.filter-count{font-size:.7rem;opacity:.75}.catalogue-count{font-size:.85rem;color:var(--muted)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,310px),1fr));gap:1px;background:var(--line);border-block:1px solid var(--line);margin-bottom:40px;position:relative;z-index:1}.card{background:var(--bg);padding:30px;display:flex;flex-direction:column;gap:13px;min-height:280px}.card:hover,.project-card.featured{background:var(--surface)}.card .tag,.tag{font:500 .68rem Space Grotesk,sans-serif;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.card h3,.project-card h2{font:500 1.35rem/1.3 Space Grotesk,sans-serif}.card p{color:var(--secondary);font-size:.95rem;line-height:1.7;flex:1}.project-card-meta{display:flex;justify-content:space-between;gap:10px}.project-status{font-size:.73rem;color:var(--muted);text-align:right}.project-stack-preview,.stack-row{margin-top:auto}.stack-pill{display:inline-block;background:var(--pill);color:var(--secondary);padding:3px 9px;border-radius:99px;font:400 .72rem Space Grotesk,sans-serif;margin:3px}.project-card-actions{display:flex;justify-content:space-between;border-top:1px solid var(--soft-line);padding-top:12px;margin-top:auto}.project-details,.project-repo{border:0;background:none;color:var(--secondary);font:500 .8rem Space Grotesk,sans-serif;cursor:pointer}.project-repo{text-decoration:underline}.project-details:hover,.project-repo:hover{color:var(--text)}.empty-projects{padding:24px;color:var(--secondary)}.map-explorer{width:min(980px,100%);margin:0 auto;padding:10px clamp(20px,5vw,64px) 70px;position:relative;z-index:2}.map-explorer>p{color:var(--secondary);max-width:700px;margin-bottom:14px}.map-explorer input{display:block}.topic-list{list-style:none;margin-top:12px;border-top:1px solid var(--line)}.topic-item{border-bottom:1px solid var(--line)}.topic-item[hidden]{display:none}.topic-item details{padding:0 4px}.topic-item summary{cursor:pointer;display:flex;align-items:baseline;justify-content:space-between;gap:18px;padding:14px 4px;font:600 1rem Space Grotesk,sans-serif;list-style-position:inside}.topic-item summary::marker{color:var(--c-cs)}.topic-lenses{font:400 .75rem Space Grotesk,sans-serif;color:var(--muted);text-align:right}.topic-detail{padding:2px 18px 22px;color:var(--secondary)}.topic-detail>p{max-width:680px}.topic-detail .section{margin-top:18px}.topic-detail .section h3{font:600 .78rem Space Grotesk,sans-serif;color:var(--muted);margin-bottom:5px}.topic-detail .section li{padding:3px 0}.topic-detail a{color:var(--text)}#hero{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:36px;padding:20px clamp(20px,6vw,80px) 70px;min-height:440px}#intro{width:36%;max-width:410px}#intro h2{font:500 clamp(2rem,3.8vw,3.2rem)/1.12 "Space Grotesk",sans-serif;letter-spacing:-.04em;margin-bottom:16px}#intro p{color:var(--secondary)}#venn-container{width:min(62%,760px)}#venn{width:100%;height:auto;overflow:visible}.venn-circle{fill:none;stroke-width:2.5;stroke-dasharray:1400;stroke-dashoffset:1400;transform-origin:center;animation:drawCircle 2s ease forwards,breathe 8s ease-in-out 2s infinite}#cs{stroke:var(--c-cs)}#ai{stroke:var(--c-ai);animation-delay:.2s,2.2s}#math{stroke:var(--c-math);animation-delay:.4s,2.4s}#econ{stroke:var(--c-econ);animation-delay:.6s,2.6s}@keyframes drawCircle{to{stroke-dashoffset:0}}@keyframes breathe{50%{transform:scale(1.008)}}.venn-label{font:500 18px Space Grotesk,sans-serif;fill:var(--text)}.venn-subtitle{font:400 13px "Source Serif 4",serif;fill:var(--muted)}.intersection{fill:transparent;cursor:pointer}.interactive{cursor:pointer}.fade{opacity:.18}.hover-title{font:600 22px Space Grotesk,sans-serif;fill:var(--text)}.hover-question{font:italic 14px "Source Serif 4",serif;fill:var(--secondary)}.floating-word{font:400 14px "Source Serif 4",serif;fill:var(--secondary);pointer-events:none;animation:fadeIn .3s forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}#graph-section{position:relative;z-index:2;background:var(--surface);border-block:1px solid var(--line);padding:60px clamp(20px,5vw,64px)}#graph-intro{max-width:680px;margin:0 auto 20px}#graph-intro h2{font:500 clamp(1.6rem,3vw,2.3rem)/1.2 "Space Grotesk",sans-serif;margin-bottom:10px}#graph-intro p{color:var(--secondary)}#graph-canvas-wrap{width:min(900px,100%);height:min(65vw,610px);min-height:330px;margin:auto}#graph{display:block;max-width:100%}#graph-legend{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;margin-top:12px}.legend-item{display:inline-flex;align-items:center;gap:7px;font-size:.83rem;color:var(--secondary)}.dot{width:9px;height:9px;border-radius:50%}#graph-hint{text-align:center;color:var(--muted);font-size:.78rem;margin-top:15px}.graph-fallback{display:flex;flex-wrap:wrap;gap:12px 24px;padding:25px clamp(20px,5vw,64px);background:var(--bg)}.graph-fallback a{color:var(--secondary)}.timeline{list-style:none}.route-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:clamp(24px,4vw,58px);row-gap:0;position:relative;margin-top:48px!important}.tl-item{position:relative;padding:0 0 34px 20px;border-left:1px dashed var(--line)}.tl-item:before{content:"";position:absolute;left:-5px;top:8px;width:9px;height:9px;border-radius:50%;background:var(--c-cs);box-shadow:0 0 0 4px var(--bg)}.tl-item h2{font:600 1.08rem/1.4 Space Grotesk,sans-serif;margin:3px 0 7px}.tl-item p{color:var(--secondary);font-size:.94rem;line-height:1.7}.tl-date{display:block;font:500 .73rem Space Grotesk,sans-serif;letter-spacing:.04em;color:var(--muted);margin-bottom:5px}.tag-row{margin-top:10px;display:flex;gap:6px;flex-wrap:wrap}.tag{background:var(--pill);padding:3px 8px;border-radius:99px}.writing-list{margin-top:38px}.writing-card{border-top:1px solid var(--line);padding:21px 0}.writing-card h2{font:600 1.3rem/1.35 Space Grotesk,sans-serif;margin:3px 0 6px}.writing-card>p:last-child{color:var(--secondary)}.post-meta{font:500 .73rem Space Grotesk,sans-serif;color:var(--muted);margin:0 0 5px}.site-footer{position:relative;z-index:1;width:min(1160px,100%);margin:auto auto 0;padding:26px clamp(20px,5vw,64px) 34px;border-top:1px solid var(--line);color:var(--muted);font-size:.86rem}.footer-quote{color:var(--secondary);font-size:1.02rem;margin-bottom:13px}.footer-row{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}.site-footer a{color:var(--secondary);text-decoration:none}.site-footer a:hover{text-decoration:underline;color:var(--text)}#panel{position:fixed;inset:0 0 0 auto;z-index:500;width:min(var(--panel-width),100vw);height:100dvh;overflow:auto;background:var(--panel);border-left:1px solid var(--line);transform:translate(102%);transition:transform .3s ease;padding:0 32px 40px}#panel.open{transform:translate(0)}#close{display:block;margin:14px 0 22px auto;border:0;background:none;color:var(--text);font-size:1.8rem;cursor:pointer}#panel-content h1{font:600 1.7rem/1.2 Space Grotesk,sans-serif;margin-bottom:13px}#panel-content p{color:var(--secondary);margin-bottom:15px}#panel-content .section{margin-top:20px}#panel-content .section h2{font:600 .8rem Space Grotesk,sans-serif;color:var(--muted);margin-bottom:8px}#panel-content li{padding:7px 0;border-bottom:1px solid var(--soft-line);color:var(--secondary)}#panel-content a{overflow-wrap:anywhere}@media (max-width:900px){.route-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){header{align-items:flex-start;flex-direction:column;gap:10px;padding:14px 18px}nav{width:100%;gap:8px 18px}nav a{font-size:.82rem}.about-grid{grid-template-columns:1fr;gap:28px}.contact-panel{position:static;grid-row:2}.about-layout{padding-top:44px}.route-grid{grid-template-columns:1fr}.route-grid .tl-item:nth-child(2n){margin-left:12px}#hero{flex-direction:column;align-items:flex-start;min-height:0;padding-top:42px}#intro,#venn-container{width:100%;max-width:none}#venn-container{max-width:600px;align-self:center}.topic-item summary{align-items:flex-start;flex-direction:column;gap:3px}.topic-lenses{text-align:left}.card-grid{grid-template-columns:1fr}.project-card-meta{display:block}.project-status{text-align:left;margin-top:4px}}@media (max-width:420px){body{font-size:1rem}nav{gap:6px 13px}.logo{font-size:1.2rem}.page-shell,.about-layout,.map-explorer{padding-inline:18px}#graph-canvas-wrap{min-height:290px}.footer-row{display:block}.f-right{margin-top:5px}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{font-size:1.06rem;line-height:1.78}header{padding-block:18px;backdrop-filter:none;background:var(--bg)}.logo{font-size:1.2rem;letter-spacing:-.055em}nav a{font-size:.82rem;letter-spacing:.015em}.about-layout{padding-top:clamp(58px,9vw,118px)}.about-copy>p{font-size:1.06rem}.contact-panel{border-radius:2px;background:transparent;border-inline:0;border-top:1px solid var(--line);padding:17px 0}.about-map-preview{margin-top:54px;padding-top:24px;border-top:1px solid var(--line)}.about-map-preview-header{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font:500 .82rem Space Grotesk,sans-serif}.about-map-preview-header a,.about-topic-link{color:var(--c-cs);text-decoration-thickness:1px;text-underline-offset:4px}.about-map-preview #hero{padding:18px 0 10px;min-height:0;gap:20px}.about-map-preview #intro{width:31%}.about-map-preview #intro h2{font-size:clamp(1.2rem,2.3vw,1.8rem)}.about-map-preview #intro p{font-size:.9rem}.about-map-preview #venn-container{width:69%}.about-discover{display:grid;grid-template-columns:1.25fr .75fr;gap:42px;margin-top:48px;padding-top:24px;border-top:1px solid var(--line)}.about-selection h2{font:600 1rem Space Grotesk,sans-serif;margin-bottom:16px}.about-selection-item{padding:15px 0;border-top:1px solid var(--soft-line)}.about-selection-item h3{font:500 1rem/1.4 Space Grotesk,sans-serif}.about-selection-item p{font-size:.9rem;color:var(--secondary);margin:7px 0}.about-topic-link{font:500 .76rem Space Grotesk,sans-serif}.page-hero{padding-bottom:30px}.page-hero h1,.page-shell .page-title,.about-layout h1{font-weight:500}.card-grid{background:transparent;gap:14px;border:0}.card{border:1px solid var(--line);min-height:290px;padding:24px;background:var(--surface)}.card:hover,.project-card.featured{background:var(--hover)}.filter-pill,.project-search{border-radius:2px}.site-footer{margin-top:40px}.footer-quote{font-size:.96rem}.writing-card h2 a{text-decoration:none}.writing-card h2 a:hover{text-decoration:underline;text-underline-offset:4px}.writing-empty{padding:22px 0;border-top:1px solid var(--line);color:var(--secondary)}#panel{box-shadow:-18px 0 50px #0000002e}@media (max-width:760px){.about-discover{grid-template-columns:1fr;gap:26px}.about-map-preview #hero{gap:10px}.about-map-preview #intro,.about-map-preview #venn-container{width:100%}}.about-grid{grid-template-columns:minmax(0,1fr) minmax(180px,220px);gap:clamp(28px,6vw,88px);align-items:start}.about-copy{max-width:800px;margin-inline:auto;text-align:center}.about-copy>.eyebrow{text-transform:uppercase;letter-spacing:.14em}.about-copy h1{max-width:760px;margin:0 auto 25px}.about-copy .about-name{font:500 clamp(2.7rem,6vw,4.2rem)/1.06 "Space Grotesk",sans-serif;letter-spacing:-.055em;margin:0 0 22px;text-align:left}.about-copy>p:not(.eyebrow){margin:0 auto 19px;max-width:690px}.about-copy .about-intro{font-size:clamp(1.2rem,2.3vw,1.55rem);font-weight:0;line-height:1.55;color:var(--text)}.contact-panel{position:sticky;top:26px;justify-self:end;width:100%;margin-top:18px;text-align:right}.contact-panel h2{font:500 .78rem Space Grotesk,sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.contact-panel li{border-top:1px solid var(--soft-line)}.contact-panel a{display:flex;justify-content:flex-end;gap:10px;padding:9px 0;font:500 .86rem Space Grotesk,sans-serif}.contact-panel a span{color:var(--c-cs)}.section-title{font:500 clamp(1.45rem,2.6vw,1.9rem)/1.2 "Space Grotesk",sans-serif;letter-spacing:-.035em;margin:0 0 22px}.current-projects{padding-top:18px;padding-bottom:42px}.current-project-list{border-top:1px solid var(--line)}.current-project{padding:22px 0;border-bottom:1px solid var(--line);max-width:880px}.current-project-heading{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin-bottom:7px}.current-project h3{font:500 1.25rem Space Grotesk,sans-serif}.current-project>p{color:var(--secondary);max-width:740px}.subproject-list{list-style:none;margin:18px 0 0 16px;padding-left:18px;border-left:1px solid var(--c-cs)}.subproject-list li{display:grid;grid-template-columns:minmax(210px,.8fr) 1.2fr;gap:16px;padding:9px 0;color:var(--secondary)}.subproject-list strong{font:500 .88rem Space Grotesk,sans-serif;color:var(--text)}.text-link{display:inline-block;margin-top:15px;color:var(--c-cs);font:500 .82rem Space Grotesk,sans-serif;text-underline-offset:4px}.historical-heading{padding-bottom:0}.filter-set{margin:16px 0 5px;border:0;min-width:0}.filter-set legend{font:500 .75rem Space Grotesk,sans-serif;color:var(--muted);padding:0}.filter-set .filters{padding:8px 0 0}.filter-pill{border-radius:2px}.project-card h3{font:500 1.28rem/1.3 Space Grotesk,sans-serif}.project-card .project-stack-preview{display:flex;flex-wrap:wrap;align-items:flex-start;gap:3px}.project-card .stack-pill{margin:2px}.open-source-note{padding-top:34px;border-top:1px solid var(--line)}.open-source-note>p{color:var(--secondary)}.journey-intro{padding-bottom:24px}.journey-timeline{padding-top:0}.journey-group{display:grid;grid-template-columns:minmax(140px,190px) minmax(0,1fr);gap:clamp(22px,5vw,62px);padding:30px 0;border-top:1px solid var(--line)}.journey-year{font:500 clamp(1.35rem,2.4vw,1.75rem)/1.2 "Space Grotesk",sans-serif;letter-spacing:-.04em;color:var(--c-cs)}.journey-entries{list-style:none;min-width:0}.journey-entry{position:relative;padding:0 0 25px 20px;margin-bottom:24px;border-left:1px solid var(--line)}.journey-entry:last-child{margin-bottom:0}.journey-entry:before{content:"";position:absolute;left:-4px;top:5px;width:7px;height:7px;border-radius:50%;background:var(--c-cs)}.journey-section-title{font:500 .8rem Space Grotesk,sans-serif;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:8px 0 19px}.journey-type{font:500 .7rem Space Grotesk,sans-serif;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0 0 4px}.journey-entry h3,.journey-entry h4{font:500 1.08rem/1.4 Space Grotesk,sans-serif;margin-bottom:6px}.journey-date{font:500 .75rem Space Grotesk,sans-serif;color:var(--muted);margin:-2px 0 7px}.journey-description{color:var(--secondary);font-size:.96rem;line-height:1.7;max-width:740px}.journey-links{display:flex;gap:8px 18px;flex-wrap:wrap;list-style:none;margin-top:10px}.journey-links a{font:500 .78rem Space Grotesk,sans-serif;color:var(--c-cs);text-underline-offset:4px}@media (max-width:760px){.about-grid{grid-template-columns:1fr;gap:16px}.contact-panel{position:static;justify-self:stretch;grid-row:2;margin:12px auto 0;max-width:660px;text-align:right}.journey-group{grid-template-columns:1fr;gap:16px}.journey-year{position:static}.subproject-list li{grid-template-columns:1fr;gap:2px}}@media (max-width:420px){.current-project-heading{align-items:flex-start;flex-direction:column;gap:2px}.contact-panel{padding:14px 0}.journey-group{padding:24px 0}}
