*{box-sizing:border-box} :root{--bg:#f5f4ef;--ink:#222a24;--muted:#858a7c;--line:#dedfd4;--lime:#cddd8b} html{scroll-behavior:smooth;scroll-padding-top:95px}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Segoe UI","Microsoft YaHei",sans-serif;line-height:1.65;font-size:14px}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #84a44d;outline-offset:5px} .container{max-width:1150px;padding:0 26px;margin:0 auto}.site-header{border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;background:#f5f4eff5;backdrop-filter:blur(14px)}.header-inner{max-width:1150px;margin:auto;padding:23px 26px;display:flex;justify-content:space-between;align-items:center}.wordmark{font-weight:750;font-size:24px;letter-spacing:-1px;display:inline-flex;align-items:center;gap:7px}.brand-dot{width:7px;height:7px;background:#90a66a;border-radius:50%;margin-top:11px}.site-header nav{display:flex;align-items:center;gap:30px;font-size:12px;color:#747d6c}.site-header nav a:hover{color:#273921}.site-header .github-nav{border:1px solid #d7dccc;padding:7px 13px;border-radius:6px;color:#4a5740}.github-nav span{margin-left:12px}.hero{display:grid;grid-template-columns:1.15fr 1fr;gap:65px;padding-top:67px;padding-bottom:63px;align-items:center}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:650;color:#929b84;margin:0 0 21px}.small-square{display:inline-block;width:6px;height:6px;background:#6c8456;margin-right:9px}.hero h1{font-size:clamp(32px,3.9vw,49px);line-height:1.48;letter-spacing:-2px;font-weight:650;margin:0 0 23px}.highlight{position:relative;display:inline;z-index:0}.highlight:before{content:"";height:11px;position:absolute;bottom:3px;left:0;right:-5px;background:#c8d995;z-index:-1}.hero-description{font-size:13px;color:#838b78;line-height:2.1;margin:0}.hero-description strong{color:#4b5842;font-weight:500}.hero-actions{display:flex;align-items:center;gap:25px;margin-top:27px}.button{display:inline-flex;align-items:center;justify-content:center;gap:26px;border-radius:6px;padding:11px 19px;font-size:12px;border:1px solid transparent;line-height:1.5}.button-dark{background:#27352a;color:#f8faef}.button-dark:hover{background:#45603d}.text-link{font-size:11px;color:#5b6850;display:inline-flex;gap:12px;align-items:center}.text-link:hover{text-decoration:underline}.hero-note{font-size:9px;color:#9fa690;margin-top:25px;letter-spacing:.5px}.tiny-dot{display:inline-block;width:5px;height:5px;background:#94a471;border-radius:50%;margin-right:6px}.hero-visual{background:#e6eadb;border:1px solid #d9dfcb;border-radius:4px;min-height:350px;position:relative;padding:23px;overflow:hidden}.visual-caption{display:flex;justify-content:space-between;font-size:7px;letter-spacing:1.1px;color:#8c967b}.visual-grid{height:218px;position:relative;background-image:linear-gradient(#b7c2a333 1px,transparent 1px),linear-gradient(90deg,#b7c2a333 1px,transparent 1px);background-size:19px 19px;margin-top:16px}.visual-node{position:absolute;border:1px solid #c1cbae;background:#f8f9f0;border-radius:6px;width:133px;padding:13px 13px 12px;z-index:2;box-shadow:3px 4px 0 #b7c3a344}.node-index{font-size:7px;letter-spacing:1px;color:#a4af91;display:block;margin-bottom:3px}.visual-node>span:not(.node-index){font-size:15px;font-weight:550}.visual-node small{display:block;font-size:7px;color:#9aa589;margin-top:2px}.node-input{left:2px;top:13px;transform:rotate(-5deg)}.node-build{left:37%;top:74px;transform:rotate(3deg);background:#2c3e2d;border-color:#2c3e2d;color:#f4f7e9}.node-build small,.node-build .node-index{color:#aabd90}.node-check{bottom:1px;right:1px;transform:rotate(-4deg)}.node-check i{position:absolute;right:13px;top:18px;font-size:26px;color:#8fad55;font-style:normal}.connection{position:absolute;border-bottom:1px dashed #9caf7d;width:100px;z-index:1}.connection-a{top:77px;left:84px;transform:rotate(24deg)}.connection-b{right:62px;bottom:74px;transform:rotate(35deg)}.visual-note{position:absolute;bottom:10px;left:9px;color:#a6b18f;font-size:9px;letter-spacing:1.5px;line-height:1.5}.visual-bottom{display:flex;align-items:center;margin-top:10px;gap:13px}.cross{font-size:27px;font-weight:200;color:#8f9d76}.visual-bottom p{font-size:10px;color:#85916f;margin:0;line-height:1.7}.visual-stamp{font-size:7px;letter-spacing:1px;line-height:1.4;margin-left:auto;color:#94a081;border:1px solid #b4c297;border-radius:50%;width:45px;height:45px;display:grid;place-items:center;text-align:center;transform:rotate(-15deg)}.section-divider{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding-top:14px;color:#a3a997;font-size:8px;letter-spacing:1.5px}.project-section{padding-top:42px;padding-bottom:68px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px}.section-heading .eyebrow{margin-bottom:10px}.section-heading h2{font-size:27px;letter-spacing:-.8px;font-weight:600;margin:0}.section-heading>p{font-size:10px;color:#98a08d;margin:0;line-height:1.9}.project-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.project-filters{display:flex;gap:7px}.project-filters button{border:1px solid transparent;background:none;color:#8b957f;border-radius:5px;padding:7px 12px;font-size:11px;white-space:nowrap}.project-filters button.active{border-color:#d5dbc9;background:#e9eddc;color:#4b6140}.project-filters button span{font-size:9px;margin-left:7px;opacity:.65}.result-label{font-size:9px;color:#a2aa95}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px}.project-card{background:#fdfdf9;border:1px solid #dfe3d4;border-radius:9px;overflow:hidden;transition:transform .2s,border-color .2s}.project-card:hover{transform:translateY(-3px);border-color:#a9bb8d}.project-art{height:219px;position:relative;overflow:hidden;display:grid;place-items:center;border-bottom:1px solid #e2e5d8}.project-body{padding:20px 23px 19px}.project-meta{display:flex;justify-content:space-between;align-items:center;font-size:8px;letter-spacing:.7px;color:#97a186;margin-bottom:7px}.project-state{border:1px solid #e0e5d5;border-radius:20px;padding:2px 7px;font-size:8px;letter-spacing:0;color:#8b997b}.project-title{font-size:21px;margin:0 0 7px;font-weight:600;letter-spacing:-.5px}.project-summary{font-size:11px;color:#8e987f;margin:0;line-height:1.8;min-height:40px}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin:15px 0 18px}.project-tags span,.dialog-tags span{font-size:8px;color:#859472;border-radius:3px;background:#eff3e5;padding:3px 7px}.project-actions{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #edf0e4;padding-top:13px;font-size:10px}.detail-button{background:none;border:0;padding:0;color:#5e7750;font-size:10px}.detail-button span{margin-left:7px}.detail-button:hover,.project-open:hover{text-decoration:underline}.project-open{font-size:10px;color:#9aa68a}.art-inst-wrap{background:#263746}.art-inst{width:75%;max-width:325px;text-align:center;color:#dce6dc;padding-top:4px}.art-source{display:flex;gap:7px;justify-content:center}.art-source span{border:1px solid #586b74;border-radius:5px;padding:6px 10px;font-size:8px;letter-spacing:1px;color:#b4c6c6}.art-arrow{display:block;font-size:14px;color:#738e92;margin:4px}.expert-box{background:#344954;border:1px solid #5c7476;padding:9px;border-radius:6px;font-size:9px;letter-spacing:1.3px}.expert-box span{display:block;font-size:7px;letter-spacing:.2px;color:#91aeb1;margin-top:3px}.instruction-box{display:flex;justify-content:center;gap:4px;flex-wrap:wrap}.instruction-box span{font-size:6px;border:1px solid #526971;background:#2d414e;border-radius:3px;padding:5px;color:#a6c6bd}.art-inst small,.art-web small{display:block;font-size:7px;margin-top:9px;color:#819996;letter-spacing:1px}.art-web-wrap{background:#e7eee7}.art-web{width:75%;max-width:330px;text-align:center}.mini-browser{border:1px solid #b7cabc;background:#fbfdf8;border-radius:7px;box-shadow:6px 6px 0 #c6d8c644;transform:rotate(-2deg);overflow:hidden;text-align:left}.mini-top{display:flex;gap:3px;align-items:center;padding:8px 10px;border-bottom:1px solid #e3ebdf;background:#f3f7ed}.mini-top i{height:3px;width:3px;background:#bdcbb8;border-radius:50%}.mini-top span{font-size:5px;letter-spacing:1px;color:#96ac90;margin-left:9px}.mini-body{display:flex;gap:13px;min-height:88px;padding:12px}.mini-side{width:31px;background:#e9f0e3;border-radius:3px;padding:8px 5px}.mini-side span{display:block;height:2px;background:#bdcfb5;margin-bottom:8px}.mini-page{flex:1;padding:3px 0}.mini-page b{font-size:8px;color:#5a7350}.mini-page p{width:70%;height:2px;background:#d1deca;margin:5px 0 11px}.mini-page>div{display:flex;gap:5px}.mini-page i{display:block;width:27%;height:28px;background:#e0ecce;border-radius:3px}.mini-page i:nth-child(2){background:#e9e8d5}.mini-page i:nth-child(3){background:#d3e4dc}.trace-chips{display:flex;gap:8px;justify-content:center;margin-top:17px;align-items:center}.trace-chips span{font-size:7px;color:#719064;background:#f7faf0;border:1px solid #c5d5bb;padding:3px 13px;border-radius:3px}.trace-chips i{font-size:10px;font-style:normal;color:#a4b69a}.art-web small{color:#a3b49a}.art-todo-wrap{background:#e9eddd}.art-todo{width:63%;max-width:270px}.art-kicker{font-size:7px;color:#95a582;letter-spacing:1.5px;display:block;margin-bottom:8px}.art-todo>strong{font-size:29px;font-weight:650;letter-spacing:5px;color:#60794b;display:block;margin-bottom:10px}.mini-task{display:flex;gap:10px;align-items:center;background:#fbfcf5;border:1px solid #d4dfc3;border-radius:5px;padding:7px 12px;margin-top:6px;font-size:8px;color:#8b9d76}.mini-task i{font-style:normal;color:#718f56;font-size:11px}.art-todo>small{display:block;font-size:7px;color:#9cac8a;margin-top:9px}.art-portfolio-wrap{background:#d4debb}.art-portfolio{width:65%;max-width:290px}.art-portfolio strong{font-size:37px;font-weight:650;letter-spacing:-2px;color:#435e34;display:flex;align-items:center;justify-content:space-between}.art-portfolio strong span{font-size:30px;font-weight:300;color:#859d69}.portfolio-rule{height:1px;width:100%;background:#a4b58a;margin-top:12px}.art-portfolio p{font-size:10px;letter-spacing:2px;line-height:1.5;color:#839d68;margin-bottom:0}.art-notes-wrap,.art-weather-wrap{background:#eeefe6}.art-planned{text-align:center;color:#a8b199}.planned-symbol{font-size:45px;display:block;line-height:1.5;font-weight:300}.art-planned>span:not(.planned-symbol){font-size:9px;letter-spacing:2px}.art-planned small{font-size:8px;display:block;color:#b6bdab;margin-top:10px}.about-section{border-top:1px solid var(--line);padding-top:49px;padding-bottom:60px;display:grid;grid-template-columns:1fr 1fr;gap:80px}.about-intro .eyebrow{margin-bottom:15px}.about-intro h2{font-size:29px;line-height:1.6;font-weight:550;letter-spacing:-.8px;margin:0 0 16px}.about-intro>p:not(.eyebrow){font-size:12px;color:#929c85;max-width:350px;line-height:1.9;margin-bottom:23px}.about-details{padding-top:29px}.detail-line{display:flex;justify-content:space-between;gap:18px;padding:17px 0;border-bottom:1px solid #e0e4d5;font-size:11px}.detail-line>span{color:#a0aa92}.detail-line strong{font-weight:400;color:#68795a;text-align:right}.skill-list{display:flex;gap:7px;flex-wrap:wrap;margin-top:25px}.skill-list span{border:1px solid #dde2d0;border-radius:4px;padding:4px 9px;color:#8d9b7c;font-size:9px}.about-footnote{font-size:9px;color:#a6af99;line-height:1.8;margin-top:17px}.site-footer{border-top:1px solid var(--line);padding-top:21px;padding-bottom:26px;display:flex;justify-content:space-between;align-items:center;gap:20px}.site-footer>.wordmark{font-size:19px}.site-footer>span:not(.wordmark),.site-footer>a{font-size:9px;color:#a0aa91}dialog{width:min(610px,calc(100% - 28px));padding:26px 31px 31px;border:1px solid #ced8bb;border-radius:12px;background:#fbfcf5;color:var(--ink);max-height:85vh;overflow-y:auto;box-shadow:0 25px 85px #1b2b2344}dialog::backdrop{background:#1f322b88;backdrop-filter:blur(4px)}.dialog-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:11px}.dialog-top .eyebrow{margin:0;font-size:8px}.close-dialog{border:0;background:#eef2e4;color:#7d9267;width:31px;height:31px;border-radius:50%;font-size:23px;line-height:1}.close-dialog:hover{background:#dfe9ce}dialog h2{font-size:25px;line-height:1.5;margin:0 0 13px;font-weight:600}#dialog-description{font-size:13px;color:#7f8d70;line-height:1.9}.dialog-tags{display:flex;gap:7px;flex-wrap:wrap;margin:15px 0 24px}dialog h3{font-size:12px;font-weight:600;margin:0 0 10px}#dialog-points{padding-left:19px;margin:0}#dialog-points li{font-size:12px;color:#8b997b;padding:5px 0;line-height:1.9}.dialog-status{background:#eef3e3;color:#899a70;border:1px solid #e1e8d1;font-size:10px;padding:12px 14px;border-radius:6px;margin-top:22px;line-height:1.8}.dialog-links{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.dialog-links:empty{display:none}
@media(max-width:950px){.hero{gap:28px;padding-top:45px}.hero h1{font-size:35px;letter-spacing:-1px}.hero-visual{padding:18px;min-height:326px}.visual-node{width:118px;padding:11px}.node-build{left:30%}.visual-grid{height:207px}.hero-note{font-size:8px}.about-section{gap:40px}.project-body{padding:19px}.project-title{font-size:20px}}
@media(max-width:640px){html{scroll-padding-top:80px}.container{padding-left:20px;padding-right:20px}.header-inner{padding:17px 20px}.wordmark{font-size:21px}.site-header nav{gap:18px;font-size:11px}.site-header .github-nav{padding:4px 7px;font-size:10px}.github-nav span{margin-left:4px}.hero{grid-template-columns:1fr;gap:30px;padding-top:36px;padding-bottom:35px}.eyebrow{font-size:7px;letter-spacing:1.6px}.hero h1{font-size:36px;line-height:1.45;letter-spacing:-1.5px;margin-bottom:20px}.hero-description{font-size:12px;line-height:2}.hero-actions{margin-top:22px}.hero-note{margin-top:19px}.hero-visual{min-height:298px;padding:19px}.visual-grid{height:195px}.visual-node{width:125px}.node-input{left:5px}.node-build{left:34%;top:65px}.node-check{right:7px}.visual-bottom{margin-top:7px}.section-divider{font-size:7px;padding-top:12px}.project-section{padding-top:30px;padding-bottom:42px}.section-heading{display:block;margin-bottom:21px}.section-heading h2{font-size:23px}.section-heading>p{margin-top:12px;font-size:10px}.project-toolbar{gap:8px;align-items:start}.project-filters{gap:3px}.project-filters button{font-size:10px;padding:6px 8px}.project-filters button span{margin-left:4px}.result-label{font-size:8px;white-space:nowrap;padding-top:9px}.project-grid{grid-template-columns:1fr;gap:19px}.project-art{height:210px}.project-body{padding:18px 20px}.project-summary{min-height:0}.project-tags{margin-top:13px}.about-section{grid-template-columns:1fr;gap:0;padding-top:35px;padding-bottom:35px}.about-intro h2{font-size:26px}.about-details{padding-top:15px}.detail-line{font-size:10px}.site-footer{flex-wrap:wrap;gap:12px;padding-top:19px}.site-footer>.wordmark{font-size:19px}.site-footer>span:not(.wordmark){font-size:8px}.site-footer>a{font-size:8px}dialog{padding:20px 22px 24px}dialog h2{font-size:20px}.art-inst{width:77%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* The portfolio keeps its project diagrams; calmer blue and legible text match the new editor. */
:root{--bg:#ffffff;--ink:#20304a;--muted:#53637a;--line:#dde3ed;--lime:#dce7ff}
body{font-size:15px}.site-header{background:#fffffff5}.brand-dot{background:#1638da}.site-header nav,.site-header .github-nav{color:#405470}.site-header .github-nav{border-color:#c8d4e8}.site-header nav a:hover,.text-link{color:#1638da}.button-dark{background:#1638da}.button-dark:hover{background:#102dae}.hero h1{white-space:pre-line}.hero-description,.hero-description strong,.hero-note,.eyebrow,.section-heading>p,.result-label,.project-summary,.project-state,.about-intro>p,.about-footnote,#dialog-description,#dialog-points li{color:#53637a}.hero-description{font-size:15px}.hero-visual{background:#edf3ff;border-color:#d5dff0}.hero-note{font-size:12px}.section-divider{color:#53637a}.project-summary{font-size:14px}.project-tags span,.dialog-tags span{color:#405470;background:#eef3fc}.detail-line>span,.skill-list span{color:#53637a}.detail-line strong{color:#20304a}.about-intro>p{font-size:14px}.about-footnote{font-size:12px}.site-footer>span:not(.wordmark),.site-footer>a{color:#53637a;font-size:12px}.dialog-status{background:#edf3ff;color:#405470;border-color:#cbd8ed;font-size:13px}dialog{background:white}.content-notice{background:#edf3ff;color:#405470;padding-top:10px;padding-bottom:10px;font-size:13px}[hidden]{display:none!important}
@media(max-width:640px){.hero-description{font-size:14px}.project-summary{font-size:14px}.result-label{font-size:11px}.hero-note{font-size:11px}.about-intro>p{font-size:14px}.project-toolbar{flex-wrap:wrap}.site-footer{gap:16px}}
