:root{--paper:#f7f8f7;--ink:#202724;--muted:#58635d;--line:#dce2de;--green:#1b6650;--dark:#123e32;--pale:#eaf0ec;--mono:Consolas,"SFMono-Regular",monospace;--sans:"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}a:hover{color:var(--green)}a:focus-visible,button:focus-visible{outline:3px solid var(--green);outline-offset:6px;border-radius:2px}[hidden]{display:none!important}::selection{background:#c9ded2;color:var(--dark)}h1,h2,h3,p,figure,dl,ol,ul{margin:0}h1,h2,h3{line-height:1.25;font-weight:600;letter-spacing:-.035em}p{overflow-wrap:break-word}img,svg{max-width:100%}.container{width:calc(100% - 96px);max-width:1200px;margin-inline:auto}.mono,.eyebrow{font-family:var(--mono)}.eyebrow{font-size:11px;letter-spacing:.12em;line-height:1.6;text-transform:uppercase}.skip-link{position:fixed;top:12px;left:16px;z-index:99;padding:10px 16px;background:var(--ink);color:white;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{display:flex;align-items:center;gap:14px;font-size:19px;font-weight:600;line-height:1.3}.wordmark-symbol{color:var(--green);font-size:43px;letter-spacing:-.1em;line-height:1}.wordmark small{display:block;margin-top:5px;font:9px var(--mono);letter-spacing:.13em;color:var(--muted)}#site-nav{display:flex;align-items:center;gap:36px;font-size:14px}#site-nav a{position:relative;padding:7px 0}#site-nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform .2s}#site-nav a:hover::after,#site-nav a[aria-current]::after{transform:scaleX(1)}#site-nav .language-link{margin-left:12px;border-left:1px solid var(--line);padding-left:26px;font-family:var(--mono);font-size:12px}.menu-toggle{background:none;border:0;padding:10px}.hero{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:64px;align-items:center;padding-top:90px;padding-bottom:90px}.hero .eyebrow{color:var(--green);margin-bottom:28px;letter-spacing:.09em}.hero h1{font-size:clamp(42px,5.3vw,72px);line-height:1.18;letter-spacing:-.055em}.hero-intro{max-width:620px;color:var(--muted);font-size:17px;line-height:1.9;margin-top:28px}.actions{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:30px}.button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:26px;padding:10px 22px;border:1px solid transparent;border-radius:6px;font-size:14px;font-weight:600;transition:background-color .2s,color .2s,transform .2s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--green);color:#fff}.button-primary:hover{background:var(--dark);color:#fff}.button-secondary{border-color:var(--line)}.button-secondary:hover{background:var(--pale)}.hero-note{margin-top:46px;color:var(--muted);font-size:12px}.hero-note>span{font:11px var(--mono);color:var(--green);margin-right:8px}.system-figure{background:var(--dark);color:#d6e7dc;border-radius:6px;padding:25px 28px;min-width:0}.diagram-head{display:flex;justify-content:space-between;gap:10px;padding-bottom:16px;border-bottom:1px solid #ffffff30;font:10px var(--mono);letter-spacing:.08em;color:#bdd4c6}.diagram-head>span:last-child{font-size:17px;line-height:1}.hero-figure{align-self:stretch;display:flex;flex-direction:column;justify-content:space-between;min-height:490px}.robot-schematic{width:100%;height:210px;margin:20px 0;color:#d6e7dc}.diagram-grid{stroke:#ffffff0b;stroke-width:1}.diagram-axis{stroke:#ffffff45;stroke-width:1}.diagram-flow{padding:16px 0 0;list-style:none;display:grid;grid-template-columns:1fr;gap:0}.diagram-flow li{display:flex;gap:14px;align-items:flex-start;padding:13px 0;border-bottom:1px solid #ffffff1c;font-size:14px;line-height:1.55}.diagram-flow li:last-child{border-bottom:0}.diagram-number{font:10px var(--mono);color:#a1c5ae;flex-shrink:0;padding-top:4px}.system-figure figcaption{font-size:10px;line-height:1.6;color:#b2cbbb;border-top:1px solid #ffffff30;margin-top:13px;padding-top:14px}.hero-figure .diagram-flow{grid-template-columns:1fr 1fr;column-gap:14px}.hero-figure .diagram-flow li{font-size:11px;border-bottom:0;gap:9px;padding:7px 0}.hero-figure figcaption{font-size:9px}.section{padding-top:88px;padding-bottom:88px}.section-heading{margin-bottom:46px}.section-heading .eyebrow{color:var(--green);margin-bottom:20px}.section-heading h2{font-size:clamp(28px,3.2vw,42px);margin-bottom:16px}.section-heading>p:last-child{color:var(--muted);font-size:16px}.featured-projects{border-top:1px solid var(--line)}.project-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:76px;padding:54px 0;border-bottom:1px solid var(--line);align-items:center}.project-row:nth-child(even){grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}.project-row:nth-child(even) .project-row-visual{order:2}.project-number{display:block;font:10px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:17px}.project-row-copy h3{font-size:29px;line-height:1.35;margin-bottom:18px}.project-row-copy h3 a:hover{color:var(--green)}.project-summary{font-size:16px;color:var(--muted);line-height:1.8}.project-meta{margin-top:24px;display:flex;flex-wrap:wrap;column-gap:30px;row-gap:12px;font-size:12px}.project-meta dt{color:var(--muted);font-size:10px;letter-spacing:.03em;margin-bottom:3px}.project-meta dd{margin:0}.tags{display:flex;flex-wrap:wrap;list-style:none;padding:0;gap:7px 16px;font-family:var(--mono);font-size:10px;line-height:1.7;margin-top:20px;color:var(--green)}.tags li{border-bottom:1px solid #b7cec1;padding-bottom:3px}.project-result{font-size:12px;color:var(--muted);margin-top:20px;line-height:1.7}.text-link{display:inline-flex;gap:25px;align-items:center;font-size:13px;color:var(--green);font-weight:600;border-bottom:1px solid var(--green);padding:4px 0;margin-top:22px}.text-link:hover{gap:32px}.index-callout{display:flex;align-items:center;justify-content:space-between;margin-top:40px;background:var(--pale);padding:26px 30px;border-radius:6px;font-size:20px;font-weight:600}.index-callout small{display:block;margin-top:6px;color:var(--muted);font-size:12px;font-weight:400}.index-callout>span:last-child{font-size:32px;color:var(--green)}.skills-section{background:#edf1ee}.skill-row{display:grid;grid-template-columns:45px minmax(160px,.7fr) minmax(0,1.4fr);gap:24px;padding:27px 0;border-top:1px solid #d1dad3;align-items:start}.skill-row:last-child{border-bottom:1px solid #d1dad3}.skill-row>.mono{font-size:10px;color:var(--muted);padding-top:5px}.skill-row h3{font-size:19px;font-weight:500;letter-spacing:-.02em}.skill-row p{font-size:14px;color:var(--muted)}.skill-row .skill-tech{color:var(--ink);font:12px var(--mono);margin-bottom:5px}.about-section{display:grid;grid-template-columns:1fr 1fr;gap:100px;padding-block:110px}.about-section .eyebrow{color:var(--green);margin-bottom:24px}.about-section h2{font-size:38px;line-height:1.35}.about-copy{font-size:18px;line-height:1.95;color:var(--muted);align-self:center}.contact-section{background:var(--dark);color:#f1f6f3;padding:76px 0}.contact-inner{display:flex;justify-content:space-between;align-items:center;gap:50px}.contact-inner .eyebrow{color:#bdd4c6;margin-bottom:24px}.contact-inner h2{font-size:40px;line-height:1.35}.contact-inner p:last-child{color:#bdd4c6;font-size:14px;margin-top:22px}.button-light{background:#f1f6f3;color:var(--dark);flex-shrink:0}.button-light:hover{background:#d8e8dc}.contact-section a:focus-visible{outline-color:#d6e7dc}.site-footer{padding:28px 0;border-top:1px solid var(--line)}.footer-inner{display:flex;gap:28px;justify-content:space-between;align-items:center;font-size:10px;color:var(--muted)}.footer-inner>a{font-family:var(--mono);color:var(--green)}.detail-container{padding-block:42px 70px}.back-link{font-size:12px;color:var(--muted);display:inline-flex;gap:12px}.detail-header{max-width:900px;padding:62px 0 45px}.detail-header .eyebrow{color:var(--green);margin-bottom:22px}.detail-header h1{font-size:clamp(36px,4.4vw,58px);line-height:1.22}.detail-summary{max-width:780px;margin-top:24px;color:var(--muted);font-size:19px;line-height:1.8}.detail-header .project-meta{font-size:14px;margin-top:28px}.detail-header .project-meta dt{font-size:11px}.detail-header .tags{font-size:11px}.detail-container>.system-figure{padding:28px 36px}.detail-container>.system-figure .diagram-flow{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:22px;padding-top:25px}.detail-container>.system-figure .diagram-flow li{border:0;font-size:14px}.detail-body{display:grid;grid-template-columns:190px minmax(0,1fr);gap:70px;margin-top:68px}.detail-nav{position:sticky;top:40px;align-self:start;display:flex;flex-direction:column;border-top:1px solid var(--line);font-size:12px;padding-top:15px;gap:14px}.detail-prose{max-width:760px}.prose-section{padding:36px 0;border-top:1px solid var(--line);scroll-margin-top:24px}.prose-section h2{font-size:25px;margin-bottom:24px;display:flex;gap:18px;align-items:baseline}.section-number{font:10px var(--mono);color:var(--green);letter-spacing:0}.prose-section>.eyebrow{color:var(--green);margin-bottom:18px}.prose-section>p{color:var(--muted)}.prose-list{padding-left:21px;line-height:1.9}.prose-list li{padding-left:7px;margin-bottom:12px}.prose-list li::marker{color:var(--green)}.prose-list li:last-child{margin-bottom:0}.process-list{list-style:none;padding:0}.process-list li{display:flex;gap:20px;padding:15px 0;border-bottom:1px solid var(--line)}.process-list li:last-child{border-bottom:0}.process-list .mono{font-size:10px;color:var(--green);padding-top:4px}.scope-note{font-size:13px;border-left:2px solid var(--green);padding-left:16px;margin-bottom:24px}.next-project{display:flex;justify-content:space-between;gap:28px;align-items:baseline;border-top:1px solid var(--line);margin-top:55px;padding-top:30px}.next-project>span{font-size:11px;color:var(--muted);flex-shrink:0}.next-project>a{font-size:21px;font-weight:500}.next-project>a span{margin-left:24px;color:var(--green)}.index-section{padding-block:76px 95px}.index-header{max-width:820px}.index-header .eyebrow{color:var(--green);margin-bottom:24px}.index-header h1{font-size:clamp(40px,5vw,64px)}.index-header>p:last-child{font-size:18px;color:var(--muted);margin-top:25px;line-height:1.8}.project-filters{display:flex;flex-wrap:wrap;gap:8px;margin-top:40px}.filter-button{background:transparent;border:1px solid var(--line);border-radius:4px;font-size:12px;padding:8px 14px;min-height:40px}.filter-button:hover{background:var(--pale)}.filter-button[aria-pressed=true]{background:var(--green);border-color:var(--green);color:#fff}.index-count{font:11px var(--mono);color:var(--muted);margin-top:32px;margin-bottom:18px}.repository-row{display:grid;grid-template-columns:40px minmax(0,1fr) 100px;gap:26px;border-top:1px solid var(--line);padding:32px 0}.repository-row:last-child{border-bottom:1px solid var(--line)}.repository-number{font-size:10px;color:var(--muted);padding-top:4px}.repository-row .eyebrow{color:var(--green);font-size:9px;margin-bottom:8px}.repository-row h2{font-size:23px;line-height:1.4;margin-bottom:12px}.repository-row p:not(.eyebrow){font-size:14px;color:var(--muted);max-width:780px}.repository-row .tags{margin-top:14px}.repo-link{font:11px var(--mono);color:var(--green);padding-top:5px;justify-self:end;white-space:nowrap}.repo-link>span{margin-left:8px}.not-found{padding-block:110px 150px}.not-found h1{font-size:50px;margin:26px 0}.not-found>p{color:var(--muted)}.not-found .text-link{margin-top:0}
.menu-toggle{display:none}
@media(min-width:1400px){.hero h1{font-size:72px}}
@media(max-width:1000px){.container{width:calc(100% - 64px)}.hero{gap:35px;padding-block:64px;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.hero h1{font-size:49px}.hero-intro{font-size:16px}.hero-figure{min-height:460px;padding:23px 22px}.hero-note{margin-top:30px}.project-row,.project-row:nth-child(even){gap:40px;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.project-row-copy h3{font-size:25px}.project-meta{column-gap:20px}.about-section{gap:50px}.about-section h2{font-size:32px}.about-copy{font-size:16px}.detail-body{grid-template-columns:155px minmax(0,1fr);gap:40px}.contact-inner h2{font-size:34px}}
@media(max-width:760px){html{scroll-padding-top:30px}.container{width:calc(100% - 40px)}.header-inner{height:auto;min-height:82px;flex-wrap:wrap;gap:0;padding-block:17px}.wordmark{font-size:17px;gap:11px}.wordmark-symbol{font-size:37px}.wordmark small{font-size:8px}.menu-toggle{display:flex;align-items:center;gap:12px;margin-left:auto;font-size:12px;min-height:44px}.menu-lines{width:19px;height:12px;border-block:1px solid var(--ink);position:relative}.menu-toggle[aria-expanded=true] .menu-lines{height:1px;transform:rotate(-45deg);border-bottom:0}.menu-toggle[aria-expanded=true] .menu-lines::after{content:"";position:absolute;width:19px;height:1px;background:var(--ink);transform:rotate(90deg);top:-1px;left:0}#site-nav{width:100%;flex-wrap:wrap;gap:14px 28px;padding-top:18px;margin-top:16px;border-top:1px solid var(--line);font-size:13px}body.js #site-nav{display:none}body.js #site-nav.is-open{display:flex}#site-nav .language-link{padding-left:20px;margin-left:auto}.hero{grid-template-columns:1fr;gap:34px;padding-top:48px;padding-bottom:50px}.hero .eyebrow{font-size:9px;margin-bottom:22px;letter-spacing:.065em}.hero h1{font-size:clamp(36px,7.5vw,52px);line-height:1.22}.hero-intro{font-size:15px;margin-top:23px;line-height:1.9}.actions{gap:10px;margin-top:25px}.button{font-size:12px;padding:11px 18px;gap:20px;min-height:46px}.hero-note{font-size:10px;margin-top:26px}.hero-figure{min-height:0;padding:22px 25px;display:grid;grid-template-columns:1fr 1fr;column-gap:24px;align-items:center}.hero-figure .diagram-head,.hero-figure figcaption{grid-column:1/-1}.robot-schematic{height:auto;margin:12px 0}.hero-figure .diagram-flow{grid-template-columns:1fr;gap:0;padding-top:6px}.hero-figure .diagram-flow li{font-size:11px;padding:8px 0}.hero-figure figcaption{margin-top:4px;padding-top:11px}.section{padding-block:58px}.section-heading{margin-bottom:32px}.section-heading .eyebrow{margin-bottom:16px}.section-heading h2{font-size:28px;line-height:1.4}.section-heading>p:last-child{font-size:14px}.project-row,.project-row:nth-child(even){grid-template-columns:1fr;gap:27px;padding-block:33px}.project-row:nth-child(even) .project-row-visual{order:0}.project-number{font-size:9px;margin-bottom:12px}.project-row-visual .system-figure{padding:20px 24px}.project-row-visual .diagram-flow{display:grid;grid-template-columns:1fr 1fr;column-gap:20px}.project-row-visual .diagram-flow li{font-size:11px;gap:10px;padding:10px 0}.project-row-visual .diagram-flow li:last-child{border-bottom:1px solid #ffffff1c}.system-figure figcaption{font-size:9px}.project-row-copy h3{font-size:25px;margin-bottom:14px}.project-summary{font-size:14px;line-height:1.85}.project-meta{margin-top:19px;font-size:11px}.tags{font-size:9px;margin-top:17px}.project-result{font-size:11px;margin-top:17px}.text-link{font-size:12px;margin-top:18px}.index-callout{margin-top:28px;padding:22px;font-size:17px}.index-callout small{font-size:10px}.index-callout>span:last-child{font-size:26px}.skill-row{grid-template-columns:24px minmax(0,1fr);gap:10px 16px;padding-block:22px}.skill-row h3{font-size:18px}.skill-row>div{grid-column:2}.skill-row p{font-size:13px}.skill-row .skill-tech{font-size:10px;line-height:1.7}.about-section{grid-template-columns:1fr;gap:28px;padding-block:65px}.about-section h2{font-size:31px}.about-copy{font-size:16px}.contact-section{padding-block:53px}.contact-inner{align-items:flex-start;flex-direction:column;gap:28px}.contact-inner .eyebrow{margin-bottom:18px}.contact-inner h2{font-size:32px}.contact-inner p:last-child{font-size:12px;margin-top:18px}.footer-inner{flex-wrap:wrap;gap:10px 20px;font-size:9px}.footer-inner>span:nth-child(2){order:3;width:100%}.footer-inner>a{margin-left:auto}.detail-container{padding-block:26px 50px}.back-link{font-size:10px}.detail-header{padding-block:40px 32px}.detail-header h1{font-size:34px;line-height:1.3}.detail-header .eyebrow{font-size:9px;margin-bottom:16px}.detail-summary{font-size:16px;margin-top:20px}.detail-header .project-meta{font-size:12px}.detail-header .tags{font-size:9px}.detail-container>.system-figure{padding:20px 23px}.detail-container>.system-figure .diagram-flow{grid-template-columns:1fr;gap:0;padding-top:10px}.detail-container>.system-figure .diagram-flow li{font-size:12px;padding-block:10px;border-bottom:1px solid #ffffff1c}.detail-container>.system-figure .diagram-flow li:last-child{border-bottom:0}.detail-body{grid-template-columns:1fr;gap:25px;margin-top:32px}.detail-nav{position:static;flex-direction:row;flex-wrap:wrap;gap:8px 19px;font-size:10px;padding-top:16px}.prose-section{padding-block:28px}.prose-section h2{font-size:23px;gap:13px;margin-bottom:20px}.prose-section .eyebrow{font-size:10px}.prose-section p,.prose-list,.process-list{font-size:14px}.prose-list{padding-left:18px}.prose-list li{padding-left:3px}.scope-note{font-size:12px!important}.process-list li{gap:15px}.next-project{flex-direction:column;gap:14px;margin-top:34px;padding-top:25px}.next-project>a{font-size:20px;line-height:1.4}.index-section{padding-block:48px 65px}.index-header .eyebrow{font-size:10px;margin-bottom:20px}.index-header h1{font-size:40px}.index-header>p:last-child{font-size:15px;margin-top:21px}.project-filters{margin-top:28px;gap:7px}.filter-button{font-size:10px;padding:7px 11px;min-height:38px}.index-count{font-size:10px;margin-top:25px}.repository-row{grid-template-columns:24px minmax(0,1fr);gap:15px;padding-block:26px}.repository-number{font-size:9px}.repository-row h2{font-size:21px}.repository-row p:not(.eyebrow){font-size:13px}.repo-link{grid-column:2;justify-self:start;font-size:10px;padding-top:0}.repository-row .tags{font-size:9px;margin-top:12px}.not-found{padding-block:70px 100px}.not-found h1{font-size:34px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.button:hover{transform:none}}
/* Keep actual reading text at a comfortable size on every viewport. */
.project-summary,.project-result,.repository-row p:not(.eyebrow),.skill-row p,.contact-inner p:last-child,.prose-section p,.prose-list,.process-list,.hero-intro,.index-header>p:last-child,.section-heading>p:last-child{font-size:16px}
.scope-note{font-size:16px!important}
.project-meta,.detail-header .project-meta{font-size:14px}
.system-figure figcaption,.hero-figure figcaption{font-size:11px}
.diagram-flow li,.hero-figure .diagram-flow li,.project-row-visual .diagram-flow li,.detail-container>.system-figure .diagram-flow li{font-size:14px}
.skill-row .skill-tech{font-size:12px}
.index-callout small{font-size:12px}
.repository-role{margin-top:15px;color:var(--ink)!important;font-size:14px!important}
.repository-role>span{font-size:11px;color:var(--muted);margin-right:9px}
.repository-scope{margin-top:10px;border-left:2px solid #b7cec1;padding-left:13px}
.archive-details{margin-top:19px}
.archive-details summary{width:fit-content;cursor:pointer;color:var(--green);font-size:14px;padding:5px 0;line-height:1.6}
.archive-details summary:focus-visible{outline:3px solid var(--green);outline-offset:5px}
.archive-details>div{padding:8px 0 7px;max-width:780px}
.archive-details h3{font-size:18px;letter-spacing:-.02em;margin:23px 0 14px}
.archive-details .prose-list{font-size:16px;line-height:1.85}
@media print{.site-header,.site-footer,.detail-nav,.project-filters,.actions{display:none}.container{width:100%;max-width:none}body{background:#fff;color:#000}.system-figure{break-inside:avoid}.section{padding-block:30px}.project-row{break-inside:avoid}.contact-section{background:#fff;color:#000}a{text-decoration:underline}.detail-body{display:block}}
