:root{--paper:#f5f5ef;--ink:#243b30;--muted:#71786d;--line:#d6dacd;--green:#dce7d5;--lime:#d8edb9;--serif:Georgia,'Times New Roman',serif;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;color:var(--ink);background:var(--paper);font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;font-size:15px;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid #557748;outline-offset:6px}button{border-radius:0}::selection{background:#c6deab;color:#1e3c2d}img,svg{display:block;max-width:100%}.container{width:min(1240px,calc(100% - 112px));margin-inline:auto}.site-header{width:min(1360px,calc(100% - 80px));height:100px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.brand{display:flex;gap:15px;align-items:center;font-size:13px;letter-spacing:1.1px;font-weight:700;flex-shrink:0}.brand-mark{position:relative;font-family:var(--serif);font-weight:400;font-size:41px;font-style:italic;line-height:1;letter-spacing:-4px;margin-right:7px}.brand-mark>span{font-family:Arial;font-size:16px;position:absolute;right:-15px;top:3px;font-style:normal;letter-spacing:0}.brand-caption{font-family:var(--mono);font-size:8px;letter-spacing:1.05px;color:var(--muted);display:block;margin-top:6px;font-weight:400}nav{display:flex;gap:32px;font-size:13px}nav a{position:relative}nav a:after{content:'';height:1px;position:absolute;bottom:-5px;left:0;right:100%;background:var(--ink);transition:right .2s}nav a:hover:after{right:0}.header-actions{display:flex;gap:22px;align-items:center;font-size:12px}.language-switch{border:0;background:none;padding:10px 0;display:flex;align-items:center;gap:9px}.language-switch>span{color:#818a7b}.header-github{border:1px solid var(--line);padding:10px 15px;display:flex;gap:18px;border-radius:5px}.header-github:hover{background:var(--green)}.hero{display:grid;grid-template-columns:1.08fr 1fr;gap:60px;align-items:center;padding-top:78px;padding-bottom:65px}.eyebrow{font-family:var(--mono);font-size:11px;font-weight:400;letter-spacing:1.5px;line-height:1.8;margin:0;display:flex;gap:10px;align-items:center}.status-dot{height:6px;width:6px;background:#5b7a48;border-radius:50%;display:inline-block;flex-shrink:0}.hero h1{font-size:clamp(50px,5vw,71px);letter-spacing:-3.5px;line-height:1.19;font-weight:500;margin:28px 0 24px}.serif-accent{font-weight:400;color:#6e825e;font-family:var(--serif);font-style:italic}html[lang=zh-CN] .serif-accent{font-family:inherit;font-style:normal;font-weight:400}html[lang=en] .hero h1{font-size:clamp(56px,5.4vw,78px);line-height:1.05;letter-spacing:-4px}.hero-description{max-width:440px;color:#687364;font-size:14px;line-height:1.95;margin-bottom:30px}.hero-buttons{display:flex;align-items:center;gap:29px}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;border-radius:5px;padding:16px 22px;font-size:13px;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.button-dark{background:var(--ink);color:var(--paper)}.button-dark:hover{background:#385b43}.button>span:last-child{font-size:18px;line-height:1}.text-link{font-size:12px;display:inline-flex;align-items:center;gap:17px;padding-block:9px;border-bottom:1px solid #b1baaa}.text-link:hover{color:#718f55;border-color:#718f55}.text-link>span:last-child{font-size:18px;line-height:1}.hero-location{font-family:var(--mono);font-size:10px;color:#7c8475;display:flex;gap:10px;align-items:center;margin-top:36px;letter-spacing:.1px}.location-icon{font-size:18px}.small-separator{height:11px;width:1px;background:#c8cfc0;margin:0 4px}.hero-lab{background:#e8eddf;border:1px solid #d9dfcf;border-radius:9px;padding:23px 22px 15px;transform:rotate(1deg);position:relative}.hero-lab:after{content:'YL / FIELD NOTES';position:absolute;right:18px;bottom:-25px;font-family:var(--mono);font-size:8px;letter-spacing:1.5px;color:#8b9383}.lab-heading{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;letter-spacing:.6px;align-items:center}.lab-heading>span:first-child{display:flex;align-items:center;gap:7px}.tiny-cross{font-size:19px}.lab-number{color:#819075;font-size:8px}.lab-visual{position:relative;margin:-2px -21px 0;min-height:290px}.lab-visual img{width:100%;height:auto}.lab-annotation{position:absolute;left:28px;bottom:22px;display:flex;align-items:center;gap:7px;font-size:9px;color:#6a795c;font-family:var(--mono)}.lab-annotation .status-dot{width:4px;height:4px}.lab-flow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:18px 4px 10px;border-top:1px solid #ccd5c3}.lab-flow>div{display:flex;flex-direction:column;gap:7px}.mono-caption{font-family:var(--mono);font-size:9px;letter-spacing:1px;color:#7b8672;line-height:1.6}.lab-flow strong{font-size:11px;font-weight:400}.flow-arrow{color:#91a084;font-size:18px}.lab-footnote{text-align:right;color:#8c9684;font-size:8px;margin:8px 0 0}.intro-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:23px 0;gap:25px}.intro-strip>p{margin:0;font-size:12px;color:#6e7865}.intro-strip>div{display:flex;gap:25px;font-family:var(--mono);font-size:11px;color:#7a826f}.projects-section{padding-top:89px;padding-bottom:80px;scroll-margin-top:20px}.section-top{display:flex;justify-content:space-between;align-items:center}.section-index{font-size:10px;color:#859078;letter-spacing:1.7px}.subtle{font-size:11px;border-bottom:none;color:#75816b}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin:20px 0 36px}h2{font-size:46px;letter-spacing:-1.8px;font-weight:400;line-height:1.25;margin:0}.section-heading p{font-size:12px;line-height:1.9;color:#7b8372;max-width:330px;margin:0 0 4px}.project-filters{display:flex;gap:9px;align-items:center;margin-bottom:30px;flex-wrap:wrap}.filter{border:1px solid #d6dccd;background:none;border-radius:40px;padding:9px 17px;font-size:11px;display:flex;gap:12px;align-items:center;transition:all .2s;min-height:36px}.filter:hover{background:#e7ecdf}.filter.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.filter-count{font-family:var(--mono);font-size:9px;opacity:.6}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}.project-card{border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;min-width:0;transition:box-shadow .25s,transform .25s;background:#f9f9f3}.project-card:hover{box-shadow:0 10px 28px #263a2c09;transform:translateY(-3px)}.project-card.featured{grid-column:1/-1;display:grid;grid-template-columns:1.04fr 1fr;min-height:380px}.project-art{min-height:245px;position:relative;overflow:hidden;padding:28px;display:flex;align-items:center;justify-content:center}.featured .project-art{min-height:380px;border-right:1px solid var(--line)}.art-caption{position:absolute;left:25px;top:20px;font-family:var(--mono);font-size:9px;letter-spacing:1.2px;opacity:.6;z-index:2}.art-index{position:absolute;right:24px;top:18px;font-family:var(--serif);font-style:italic;font-size:20px;opacity:.35}.art-cv{background:#e1e8da}.cv-image{width:85%;height:245px;object-fit:cover;border-radius:5px;box-shadow:0 10px 22px #27402c22;transform:rotate(-4deg);border:6px solid #f7f8ee;margin-top:16px}.art-cv .art-stamp{position:absolute;right:25px;bottom:24px;background:#f7f8ee;padding:10px 14px;font-size:10px;box-shadow:0 3px 8px #27402c10;font-family:var(--mono);transform:rotate(3deg);border:1px solid #d8decb;display:flex;gap:12px;align-items:center}.art-stamp>span{color:#718e5b}.project-body{padding:29px 31px 24px;display:flex;flex-direction:column;flex:1}.featured .project-body{padding:35px 38px 29px}.project-category{font-family:var(--mono);font-size:9px;letter-spacing:1.5px;color:#7c8772;margin:0 0 15px;display:flex;gap:9px;align-items:center}.project-category .category-dot{height:4px;width:4px;border-radius:50%;background:#7a9560}.project-body h3{font-size:23px;font-weight:400;line-height:1.25;letter-spacing:-.7px;margin:0 0 12px}.featured .project-body h3{font-size:30px}.project-description{font-size:12px;line-height:1.85;color:#747e6b;margin:0 0 19px;max-width:95%}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:23px}.project-tag{font-family:var(--mono);font-size:9px;border:1px solid #dce1d4;padding:5px 8px;border-radius:3px;color:#7b8572}.project-actions{display:flex;align-items:center;gap:20px;margin-top:auto;border-top:1px solid #e1e5d8;padding-top:16px}.project-detail{display:flex;align-items:center;gap:18px;font-size:11px;border:0;padding:3px 0;background:none}.project-detail>span:last-child{font-size:16px}.project-detail:hover{color:#829a68}.repo-link{margin-left:auto;color:#8a9382;font-size:10px;font-family:var(--mono)}.repo-link:hover{color:var(--ink)}.project-notice{font-size:10px;color:#8a8265;line-height:1.7;display:flex;gap:6px;margin:-4px 0 17px}.art-ev{background:#e5e9df;background-image:linear-gradient(34deg,transparent 46%,#d3dbcc 46.4%,#d3dbcc 47.1%,transparent 47.5%),linear-gradient(125deg,transparent 55%,#d1dac9 55.4%,#d1dac9 56%,transparent 56.4%)}.map-illustration{width:280px;height:178px;position:relative;border:1px solid #c8d3be;border-radius:7px;background:#eaf0df;box-shadow:0 8px 18px #384b2d0b;transform:rotate(-4deg);overflow:hidden}.map-illustration:before,.map-illustration:after{content:'';position:absolute;background:#d5dfca;width:350px;height:16px;left:-30px;top:55px;transform:rotate(25deg);border:2px solid #edf2e6}.map-illustration:after{transform:rotate(-58deg);top:115px}.map-block{position:absolute;width:45px;height:35px;border:1px solid #d2ddc8;background:#dde7d2;transform:rotate(25deg);border-radius:4px}.map-block:nth-child(1){left:30px;top:15px}.map-block:nth-child(2){right:25px;top:25px;width:70px}.map-block:nth-child(3){left:40px;bottom:16px;width:65px}.map-block:nth-child(4){right:20px;bottom:12px}.map-pin{position:absolute;top:47px;left:117px;background:#365a39;color:#e5efda;width:33px;height:40px;border-radius:18px 18px 18px 2px;transform:rotate(-45deg);display:grid;place-items:center;z-index:2;box-shadow:0 0 0 7px #7a9b5630}.map-pin>span{transform:rotate(45deg);font-size:21px}.map-label{position:absolute;bottom:22px;left:92px;padding:8px 11px;background:#fffef7;border-radius:4px;font-family:var(--mono);font-size:9px;z-index:3;box-shadow:0 3px 10px #253d2720}.map-note{position:absolute;bottom:17px;right:20px;transform:rotate(2deg);background:#f8f9f1;padding:8px 12px;font-family:var(--mono);font-size:8px;border:1px solid #d4ddc9}.art-embedded{background:#e7e5da}.circuit-board{width:175px;height:146px;border-radius:7px;background:#415a46;position:relative;transform:rotate(-9deg);border:5px solid #c5c6ad;box-shadow:10px 12px 0 #d1d2c4}.circuit-board:before{content:'';position:absolute;width:58px;height:60px;border:4px solid #8c9983;background:#293b30;left:55px;top:30px;box-shadow:0 0 0 7px #293b30,0 0 0 9px #7e9074}.circuit-board:after{content:'ESP32-S3';position:absolute;color:#c7d2bc;font-family:var(--mono);font-size:9px;bottom:14px;left:50px}.board-lens{position:absolute;left:69px;top:42px;width:34px;height:34px;border-radius:50%;background:#161e1a;border:7px solid #4c5d4a;z-index:1;box-shadow:0 0 0 2px #9fae91}.board-lens:after{content:'';position:absolute;width:7px;height:7px;left:4px;top:3px;background:#829594;border-radius:50%}.board-pins{position:absolute;top:12px;bottom:13px;width:7px;left:10px;background:repeating-linear-gradient(to bottom,#c5bd8c 0,#c5bd8c 5px,transparent 5px,transparent 12px)}.board-pins.right{left:auto;right:10px}.board-annotation{position:absolute;right:29px;bottom:25px;font-family:var(--mono);font-size:8px;border:1px solid #b8beac;padding:8px 10px;background:#efeee5;transform:rotate(3deg)}.art-llm{background:#e7e3ed}.rag-diagram{width:320px;display:flex;align-items:center;justify-content:center;gap:14px;margin-top:10px}.rag-docs{width:52px;height:66px;background:#f8f5fb;border:1px solid #cfc4d9;transform:rotate(-7deg);box-shadow:-6px -5px 0 #e2daeb;padding:16px 10px}.rag-docs i{display:block;height:2px;margin:5px 0;background:#c7bad3}.rag-arrow{font-family:var(--mono);font-size:17px;color:#aca0b8}.rag-core{width:68px;height:68px;display:grid;place-items:center;border:1px solid #b6a4c4;border-radius:50%;box-shadow:0 0 0 8px #ddd4e6;font-family:var(--mono);font-size:12px;color:#7c668e;background:#ede7f2}.rag-answer{width:75px;height:51px;border:1px solid #c7b9d2;border-radius:8px 8px 8px 0;background:#f5f0f9;padding:12px}.rag-answer i{display:block;height:2px;background:#c7b9d2;margin:5px 0}.rag-labels{position:absolute;bottom:28px;font-family:var(--mono);font-size:8px;letter-spacing:1.3px;word-spacing:5px;color:#8d7c9b}.art-mock{background:#ede5d9}.workflow-art{display:flex;gap:9px;align-items:center;position:relative;transform:rotate(-3deg);margin-top:10px}.workflow-step{background:#f8f5ec;border:1px solid #cfc7b6;border-radius:5px;width:74px;height:75px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;font-family:var(--mono);font-size:8px;color:#8b816c;box-shadow:0 6px 10px #85725009}.workflow-step strong{font-family:var(--serif);font-size:28px;font-weight:400;color:#9a8764}.workflow-step:last-of-type{background:#e7e5d5}.workflow-art>span{color:#c1b39c;font-size:16px}.workflow-label{position:absolute;bottom:23px;font-family:var(--mono);font-size:8px;letter-spacing:1.7px;color:#9a8b74}.project-source{display:flex;gap:9px;align-items:center;font-size:9px;color:#8b9580;margin-top:24px}.project-source .status-dot{width:4px;height:4px;background:#93a17d}.about-section{background:#e9ede2;border-top:1px solid #dde1d4;border-bottom:1px solid #dde1d4;padding:68px 0 50px;scroll-margin-top:0}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:105px;margin:35px 0 57px}.about-intro h2{font-size:48px;line-height:1.35}.about-intro>p{font-size:13px;line-height:1.95;color:#77816d;max-width:420px;margin:22px 0}.about-note{display:flex;gap:17px;align-items:flex-start;border-left:1px solid #b8c5a9;padding:7px 0 7px 15px;max-width:390px;margin:25px 0 25px;color:#829071}.about-note>span{font-size:20px}.about-note p{font-size:11px;line-height:1.9;margin:0}.timeline-item{position:relative;padding:0 0 26px 24px;border-left:1px solid #c5cebb}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:'';position:absolute;left:-4px;top:3px;width:7px;height:7px;background:#839773;border-radius:50%;box-shadow:0 0 0 5px #e9ede2}.timeline-date{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:9px;color:#89937e;letter-spacing:.25px;margin-bottom:11px}.timeline-type{font-size:8px;border:1px solid #cbd3c1;border-radius:3px;padding:3px 7px}.timeline-item h3{font-size:18px;font-weight:400;margin:0 0 8px;letter-spacing:-.4px}.timeline-org{font-size:12px;line-height:1.6;margin:0 0 7px;color:#6b795f}.timeline-detail{font-size:10px;line-height:1.8;color:#8b947f;max-width:390px;margin:0}.research-card{display:flex;align-items:center;gap:28px;border:1px solid #cad4be;background:#f0f3e9;border-radius:6px;padding:28px}.research-icon{flex-shrink:0;width:45px;height:45px;background:#dce7d1;border-radius:50%;display:grid;place-items:center;font-size:23px;color:#78945c}.research-copy{flex:1}.research-copy .eyebrow{font-size:8px;letter-spacing:1px;color:#849375}.research-copy h3{font-size:19px;font-weight:400;margin:9px 0}.research-copy p:last-child{font-size:11px;line-height:1.8;max-width:580px;color:#7c8970;margin:0}.research-metric{flex-shrink:0;display:flex;flex-direction:column;gap:7px;border-left:1px solid #d0d9c6;padding-left:25px}.research-metric strong{font-family:var(--serif);font-weight:400;font-size:35px;letter-spacing:-1px;color:#597b43}.research-metric strong span{font-family:var(--mono);font-size:11px;letter-spacing:0}.research-metric>span{font-size:9px;color:#7b8b6e}.research-metric small{font-size:8px;color:#98a18d;max-width:155px;line-height:1.6}.skills-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:35px;margin-top:49px;padding-bottom:30px;border-bottom:1px solid #cfd7c4}.skills-grid>div:not(:first-child){border-left:1px solid #cfd7c4;padding-left:36px}.skills-grid h3{font-size:16px;font-weight:400;margin:12px 0}.skills-grid p:last-child{font-size:10px;line-height:2;color:#8a967e}.languages{display:flex;gap:55px;align-items:center;padding-top:20px}.languages p{display:flex;gap:40px;font-size:10px;color:#89957e;margin:0}.contact-section{padding-top:76px;padding-bottom:70px;display:grid;grid-template-columns:1fr 240px;gap:50px}.contact-section h2{font-size:48px;margin:22px 0}.contact-section>div>p:not(.eyebrow){font-size:12px;color:#849075}.email-link{font-size:21px;letter-spacing:-.5px;margin-top:15px;display:inline-flex;gap:45px;align-items:center;border-bottom:1px solid #aebc9d;padding-bottom:12px}.email-link span{font-size:24px;color:#84986e}.email-link:hover{color:#7a955a}.contact-aside{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end}.contact-spark{font-size:104px;line-height:1;color:#aabf92;font-weight:400}.contact-links{width:100%;padding-top:20px}.contact-links a{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);font-size:11px;padding:13px 0}.contact-links a:hover{color:#8ba46d}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);color:#97a08d;font-size:9px;padding-top:23px;padding-bottom:25px;gap:20px}footer p{margin:0}footer>a:hover{color:var(--ink)}.skip-link{position:fixed;left:20px;top:-100px;background:var(--ink);color:white;padding:12px;z-index:100}.skip-link:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}dialog{border:1px solid #cbd3c0;border-radius:10px;background:var(--paper);color:var(--ink);padding:44px;width:min(690px,calc(100% - 36px));max-height:86vh;box-shadow:0 24px 90px #11261c30;overscroll-behavior:contain}dialog::backdrop{background:#132c2080;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:15px;top:12px;font-size:27px;background:none;border:0;width:35px;height:35px;line-height:1;color:#849174}.dialog-title{font-size:33px;font-weight:400;letter-spacing:-1px;line-height:1.2;margin:15px 0 22px}.dialog-lead{font-size:14px;line-height:1.9;color:#6e7d61}.dialog-points{list-style:none;padding:0;margin:25px 0;border-top:1px solid #d8dece}.dialog-points li{font-size:12px;line-height:1.85;border-bottom:1px solid #d8dece;padding:15px 0 15px 24px;position:relative;color:#7b866f}.dialog-points li:before{content:'↳';position:absolute;left:0;color:#88a16b}.dialog-note{background:#e9ecdf;border-left:2px solid #96aa7e;padding:13px 15px;font-size:10px;line-height:1.9;color:#7a886d;margin-bottom:24px}.dialog-links{display:flex;align-items:center;gap:25px;flex-wrap:wrap}body.dialog-open{overflow:hidden}.project-card[hidden]{display:none}
@media(min-width:1500px){.hero{padding-top:95px;padding-bottom:90px}.hero h1{font-size:76px}.hero-lab{padding-top:27px}.lab-visual{min-height:340px}}
@media(max-width:1100px){.container{width:calc(100% - 72px)}.hero{gap:35px;padding-top:60px}.hero h1{font-size:57px;letter-spacing:-2px}.hero-description{font-size:12px}.hero-lab{padding-inline:17px}.lab-visual{margin-inline:-15px}.lab-heading{font-size:8px}.lab-number{font-size:7px}.lab-flow{padding-inline:0}.lab-flow .mono-caption{font-size:8px}.intro-strip>div{gap:17px}.featured .project-body{padding:29px}.project-description{max-width:100%}.about-grid{gap:65px}.research-card{gap:20px;padding:23px}.research-icon{display:none}.skills-grid{gap:20px}.skills-grid>div:not(:first-child){padding-left:25px}.cv-image{width:93%;height:230px}.lab-visual{min-height:245px}}
@media(max-width:820px){.site-header{width:calc(100% - 48px);height:83px}.brand{font-size:11px;gap:10px}.brand-mark{font-size:35px}.brand-caption{font-size:7px}.header-github{display:none}nav{gap:23px;font-size:12px}.header-actions{gap:0}.container{width:calc(100% - 56px)}.hero{grid-template-columns:1fr 1fr;gap:22px;padding-top:50px;padding-bottom:48px}.hero h1{font-size:48px;letter-spacing:-2.3px}.hero .eyebrow{font-size:8px;letter-spacing:.6px}.hero-description{font-size:11px;line-height:1.9}.hero-buttons{gap:18px}.button{padding:13px 16px;font-size:11px;gap:21px}.text-link{font-size:11px;gap:12px}.hero-location{font-size:8px;gap:7px;margin-top:26px}.lab-heading{font-size:6px}.lab-number{font-size:6px}.lab-visual{min-height:218px}.lab-annotation{left:16px;bottom:18px;font-size:7px}.lab-flow .mono-caption{font-size:6px;letter-spacing:.4px}.lab-flow strong{font-size:9px}.lab-footnote{font-size:6px}.intro-strip{align-items:flex-start;flex-direction:column;gap:17px;padding-block:20px}.intro-strip>div{width:100%;justify-content:space-between;gap:12px}.intro-strip>p{font-size:11px}.projects-section{padding-top:62px}.section-heading{align-items:flex-start;flex-direction:column;gap:16px}h2{font-size:38px}.section-heading p{max-width:100%}.project-grid{gap:20px}.project-card.featured{grid-template-columns:1fr 1fr}.featured .project-art{min-height:350px;padding:19px}.featured .project-body{padding:25px}.featured .project-body h3{font-size:26px}.project-body{padding:23px}.project-body h3{font-size:20px}.project-description{font-size:11px}.project-tags{gap:5px}.project-tag{font-size:8px;padding:4px 6px}.project-art{min-height:215px;padding:20px}.cv-image{height:230px;width:100%}.art-cv .art-stamp{font-size:7px;right:16px}.art-caption{font-size:7px;left:19px}.art-index{font-size:17px;right:17px}.map-illustration{width:240px;height:145px}.map-label{bottom:16px;left:60px;font-size:8px}.map-pin{top:25px;left:99px}.map-note{font-size:6px;right:12px;bottom:13px}.circuit-board{transform:rotate(-9deg) scale(.85)}.board-annotation{font-size:6px;right:12px;bottom:15px}.rag-diagram{gap:10px;transform:scale(.85)}.rag-labels{font-size:6px;bottom:24px}.workflow-art{gap:7px}.workflow-step{width:60px;height:68px;font-size:7px}.workflow-label{font-size:7px}.about-grid{gap:40px;grid-template-columns:1fr 1.1fr}.about-intro h2{font-size:37px}.about-intro>p{font-size:11px}.about-note p{font-size:10px}.timeline-item h3{font-size:16px}.timeline-date{font-size:8px}.timeline-org{font-size:11px}.timeline-detail{font-size:9px}.research-copy h3{font-size:17px}.research-copy p:last-child{font-size:10px}.research-metric strong{font-size:30px}.research-metric{padding-left:19px}.research-metric small{max-width:120px}.skills-grid{gap:15px}.skills-grid>div:not(:first-child){padding-left:19px}.skills-grid h3{font-size:14px}.skills-grid p:last-child{font-size:9px}.skills-grid .mono-caption{font-size:8px}.contact-section{grid-template-columns:1fr 180px}.contact-section h2{font-size:40px}.email-link{font-size:18px;gap:28px}.contact-spark{font-size:90px}html[lang=en] .hero h1{font-size:54px;letter-spacing:-2.6px}html[lang=en] .hero-description{font-size:11px}}
@media(max-width:620px){html{scroll-padding-top:25px}.site-header{height:78px;width:calc(100% - 40px);gap:14px}.brand{font-size:10px;letter-spacing:.8px;gap:9px}.brand-caption{font-size:6px;letter-spacing:.5px}.brand-mark{font-size:32px;margin-right:4px}.brand-mark>span{font-size:12px;right:-11px}nav{gap:18px;font-size:11px}.language-switch{font-size:10px;gap:5px}.container{width:calc(100% - 40px)}.hero{display:flex;flex-direction:column;gap:42px;align-items:stretch;padding-top:41px;padding-bottom:45px}.hero h1{font-size:57px;letter-spacing:-2px;margin-top:22px;margin-bottom:20px;line-height:1.18}.hero .eyebrow{font-size:9px;letter-spacing:.7px}.hero-description{font-size:12px;max-width:360px;line-height:1.9;margin-bottom:25px}.hero-buttons{gap:25px}.button{font-size:12px;padding:14px 20px}.text-link{font-size:11px}.hero-location{font-size:9px;margin-top:25px}.hero-lab{margin:0 3px;padding:20px 20px 12px;transform:rotate(.7deg)}.lab-heading{font-size:8px}.lab-number{font-size:7px}.lab-visual{min-height:230px;margin-inline:-18px}.lab-visual img{max-height:315px}.lab-annotation{left:17px;bottom:16px;font-size:8px}.lab-flow .mono-caption{font-size:7px}.lab-flow strong{font-size:10px}.lab-footnote{font-size:7px}.intro-strip>div{flex-wrap:wrap;gap:17px;font-size:10px;justify-content:flex-start}.intro-strip>p{font-size:11px}.projects-section{padding-top:46px;padding-bottom:48px}.section-top .text-link{font-size:9px;gap:8px}.section-index{font-size:9px}.section-heading{margin-top:18px;margin-bottom:25px;gap:15px}h2{font-size:35px;letter-spacing:-1.4px}.section-heading p{font-size:11px}.project-filters{gap:7px;margin-bottom:23px}.filter{font-size:10px;padding:8px 12px;min-height:34px}.filter-count{font-size:8px}.project-grid{grid-template-columns:1fr;gap:21px}.project-card.featured{display:flex;min-height:0}.featured .project-art{min-height:250px;border-right:0;border-bottom:1px solid var(--line);padding:25px}.cv-image{width:80%;height:195px;max-width:310px;margin-top:11px}.art-cv .art-stamp{font-size:8px;right:23px;bottom:20px}.project-body,.featured .project-body{padding:24px}.featured .project-body h3{font-size:26px}.project-body h3{font-size:24px}.project-description{font-size:12px;margin-bottom:18px}.project-category{font-size:8px;margin-bottom:12px}.project-tag{font-size:9px}.project-actions{padding-top:15px}.project-detail{font-size:11px}.repo-link{font-size:10px}.project-art{min-height:235px}.art-caption{font-size:8px;left:22px}.art-index{font-size:19px}.map-illustration{width:270px;height:153px}.map-note{font-size:7px;right:18px;bottom:15px}.map-pin{left:119px;top:34px}.map-label{left:89px;bottom:15px}.circuit-board{transform:rotate(-9deg) scale(.93)}.board-annotation{font-size:7px;right:21px;bottom:22px}.rag-diagram{transform:scale(1);gap:15px}.rag-labels{font-size:7px;bottom:25px}.workflow-step{width:72px;height:75px;font-size:8px}.workflow-art{gap:12px}.workflow-label{font-size:8px}.project-notice{font-size:10px}.project-source{font-size:8px;line-height:1.7}.about-section{padding:45px 0 29px}.about-grid{grid-template-columns:1fr;gap:37px;margin:25px 0 32px}.about-intro h2{font-size:39px}.about-intro>p{font-size:12px;max-width:100%}.about-note{max-width:100%;margin-bottom:18px}.about-note p{font-size:11px}.timeline{margin-left:5px}.timeline-item{padding-bottom:24px}.timeline-item h3{font-size:18px}.timeline-date{font-size:9px}.timeline-org{font-size:12px}.timeline-detail{font-size:11px;max-width:100%}.research-card{flex-direction:column;align-items:flex-start;gap:22px;padding:23px}.research-copy h3{font-size:21px}.research-copy .eyebrow{font-size:8px}.research-copy p:last-child{font-size:11px}.research-metric{border-left:0;border-top:1px solid #d0d9c6;width:100%;padding-left:0;padding-top:15px;gap:5px}.research-metric strong{font-size:35px}.research-metric small{max-width:100%;font-size:8px}.skills-grid{grid-template-columns:1fr;gap:0;margin-top:18px;padding-bottom:4px}.skills-grid>div,.skills-grid>div:not(:first-child){border-left:0;border-bottom:1px solid #cfd7c4;padding:19px 0}.skills-grid>div:last-child{border-bottom:0}.skills-grid h3{font-size:17px;margin:10px 0}.skills-grid p:last-child{font-size:11px;margin:0}.skills-grid .mono-caption{font-size:8px;margin:0}.languages{align-items:flex-start;gap:23px;padding-top:21px}.languages p{gap:11px;flex-wrap:wrap;font-size:9px}.contact-section{grid-template-columns:1fr;gap:32px;padding-top:45px;padding-bottom:40px}.contact-section h2{font-size:40px;margin:19px 0}.contact-section>div>p:not(.eyebrow){font-size:11px;line-height:1.9}.email-link{font-size:20px;gap:32px}.contact-aside{flex-direction:row-reverse;align-items:center;gap:40px}.contact-links{padding-top:0;max-width:220px}.contact-links a{font-size:11px;padding:12px 0}.contact-spark{font-size:85px;margin-right:7px}footer{flex-wrap:wrap;font-size:8px;padding-top:19px;padding-bottom:20px;row-gap:15px}footer>span{order:3;width:100%}dialog{padding:35px 25px}.dialog-title{font-size:28px}.dialog-lead{font-size:12px}.dialog-points li{font-size:11px}.dialog-note{font-size:10px}.dialog-links{gap:20px}html[lang=en] .hero h1{font-size:61px;letter-spacing:-3.2px}html[lang=en] .hero-description{font-size:12px}html[lang=en] .hero .eyebrow{font-size:8px;letter-spacing:.7px}html[lang=en] .section-heading h2{font-size:38px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}

/* Keep secondary copy readable on the pale surfaces. */
.hero-description,.project-description,.section-heading p,.about-intro>p,.timeline-org,.timeline-detail,.research-copy p:last-child,.skills-grid p:last-child,.dialog-lead,.dialog-points li,.contact-section>div>p:not(.eyebrow){color:#5c6b54}
.project-category,.project-tag,.repo-link,.mono-caption,.section-index,.subtle,.hero-location,.project-source,.about-note,.timeline-date,.timeline-type,.research-copy .eyebrow,.research-metric>span,.research-metric small,.languages p,.intro-strip>p,.intro-strip>div,.lab-footnote,.lab-number,footer{color:#68775e}
.dialog-note{color:#596b4e}.project-description{font-size:13px}.dialog-points li{font-size:13px}.timeline-detail{font-size:11px}.skills-grid p:last-child{font-size:11px}.project-notice{color:#736944}
@media(max-width:820px){.project-description{font-size:12px}.timeline-detail{font-size:10px}.skills-grid p:last-child{font-size:10px}}
@media(max-width:620px){.timeline-detail,.skills-grid p:last-child{font-size:11px}.dialog-points li{font-size:12px}}
/* Language choices and the complete technology map. */
.language-options{display:flex;gap:3px;align-items:center;border:1px solid #d4dccb;border-radius:5px;padding:3px;background:#f1f3e9}
.language-options button{border:0;border-radius:3px;background:transparent;padding:7px 9px;min-height:31px;font-family:var(--mono);font-size:10px;color:#69795f;line-height:1.2}
.language-options button:hover{background:#e3e9d9}.language-options button.active{background:#294b38;color:#f5f7ed}
.hero-stack{background:#e8eddf;border:1px solid #d6deca;border-radius:10px;padding:22px 18px 16px;position:relative;transform:rotate(.6deg)}
.stack-heading{display:flex;justify-content:space-between;align-items:center;padding:0 5px;gap:15px;font-family:var(--mono);font-size:9px;letter-spacing:1px}
.stack-heading>span:first-child{display:flex;gap:9px;align-items:center}.stack-index{color:#728168;font-size:9px;white-space:nowrap}
.stack-map{width:100%;height:auto;margin:8px 0 0;overflow:visible}
.stack-node-number{font-family:var(--mono);font-size:8px;letter-spacing:.8px;fill:#728465}
.stack-node-title{font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;font-size:12px;letter-spacing:.2px;font-weight:600;fill:#35503c}
.stack-node-tech{font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;font-size:11px;fill:#4e6547}
.stack-node-detail{font-family:Arial,'PingFang SC','Microsoft YaHei',sans-serif;font-size:10px;fill:#65795b}
.stack-core-caption{font-family:var(--mono);font-size:8px;letter-spacing:1.6px;fill:#bbceac}
.stack-core-title{font-family:var(--serif);font-style:italic;font-size:25px;fill:#f1f5e9}
.stack-core-detail{font-family:var(--mono);font-size:7px;letter-spacing:.6px;fill:#c1d3b0}
.stack-foundation{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;border-top:1px solid #cdd7c1;padding:16px 5px 0}
.stack-foundation>div{display:flex;flex-direction:column;gap:7px}.stack-foundation .mono-caption{font-size:8px;letter-spacing:1px}.stack-foundation strong{font-family:var(--mono);font-size:9px;font-weight:400;color:#4f6646;line-height:1.5}
.stack-note{font-size:9px;color:#647758;margin:16px 5px 0;line-height:1.7}
html[lang=de] .hero h1{font-size:clamp(54px,5.4vw,78px);line-height:1.05;letter-spacing:-3.5px}
html[lang=de] .hero-buttons{flex-wrap:wrap;gap:15px 25px}
html[lang=de] .section-heading h2{max-width:650px}
@media(max-width:1050px) and (min-width:621px){.hero{grid-template-columns:1fr;gap:38px}.hero-copy{max-width:620px}.hero-stack{width:min(100%,560px);justify-self:center}.hero h1,html[lang=en] .hero h1,html[lang=de] .hero h1{font-size:65px}.hero-description{max-width:520px;font-size:13px}.hero .eyebrow{font-size:10px}.hero-location{font-size:10px}}
@media(max-width:620px){.site-header{display:grid;grid-template-columns:1fr auto;height:auto;padding:17px 0 15px;gap:15px}.site-header .brand{grid-column:1;grid-row:1}.site-header .header-actions{grid-column:2;grid-row:1}.site-header nav{grid-column:1/-1;grid-row:2;justify-content:center;gap:34px;font-size:11px}.language-options{gap:2px;padding:3px}.language-options button{padding:7px 8px;font-size:9px;min-height:30px}.hero-stack{padding:18px 13px 16px;transform:none}.stack-heading{font-size:8px;letter-spacing:.8px;padding-inline:4px}.stack-heading .tiny-cross{font-size:18px}.stack-map{margin-top:18px}.stack-node-title{font-size:12px}.stack-foundation{gap:15px;padding:15px 3px 0}.stack-foundation strong{font-size:8px}.stack-foundation .mono-caption{font-size:7px;letter-spacing:.5px}.stack-note{font-size:9px;margin-inline:3px}html[lang=de] .hero h1{font-size:61px;letter-spacing:-3px}html[lang=de] h2{font-size:35px}html[lang=de] .contact-section h2{font-size:33px}html[lang=de] .section-heading h2{font-size:36px}html[lang=de] .about-intro h2{font-size:35px}.languages p{row-gap:9px}}
