:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#1f2521;background:#f7f5ef;font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f7f5ef}a{color:inherit;text-decoration:none}button,textarea{font:inherit}button{cursor:pointer}.topbar,.hero,.content-section,.contact-section,footer{width:min(1200px,calc(100% - 48px));margin-inline:auto}.topbar{min-height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d8d8d0}.wordmark{font-weight:800;font-size:14px;letter-spacing:.1em}nav{display:flex;gap:26px;font-size:14px;color:#58605a}nav a:hover,.intro-links a:hover,.project-link:hover{color:#16493c}.hero{display:grid;grid-template-columns:minmax(0,.9fr) minmax(520px,1.1fr);gap:78px;padding:88px 0 126px}.intro{padding-top:34px}.kicker{margin:0 0 14px;color:#2f6658;font-size:12px;font-weight:800;letter-spacing:.14em}h1,h2,h3,h4,p{margin-top:0}h1{margin-bottom:22px;max-width:640px;font-family:Georgia,Songti SC,serif;font-size:clamp(52px,6vw,83px);line-height:1.02;letter-spacing:-.06em;font-weight:500}.lead{margin-bottom:12px;font-size:22px}.summary{max-width:390px;color:#59605b;line-height:1.8}.intro-links{display:flex;gap:22px;margin:35px 0 68px;font-size:14px;font-weight:700;text-decoration:underline;text-underline-offset:5px}.identity-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;border-top:1px solid #d8d8d0;padding-top:18px}.identity-grid span,.message span,.period{color:#778079;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.identity-grid p{margin:8px 0 0;font-size:14px;line-height:1.65}.chat-card{min-height:680px;display:flex;flex-direction:column;border:1px solid #cccfc5;background:#fcfbf7;padding:25px;box-shadow:10px 12px #e4e1d8}.chat-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.chat-header .kicker{margin-bottom:6px}.chat-header h2{margin:0;font-family:Georgia,Songti SC,serif;font-size:27px;font-weight:500}.status{border:1px solid #aeb8ad;color:#405649;padding:5px 8px;font-size:12px;font-weight:700}.status.ready{border-color:#2f6658;color:#2f6658}.status.unconfigured,.status.offline{border-color:#af7754;color:#8c512d}.chat-note{margin:16px 0 0;color:#6b736d;font-size:12px;line-height:1.6}.messages{flex:1;max-height:315px;overflow-y:auto;margin:22px 0 16px;padding-right:4px}.message{max-width:88%;margin-bottom:15px}.message.user{margin-left:auto}.message p{white-space:pre-wrap;margin:6px 0 0;padding:11px 13px;background:#e8eee8;line-height:1.7;font-size:14px}.message.user p{background:#263f35;color:#fff}.message-heading{display:inline-block;margin-top:4px;color:#17483b}.message-bullet{display:inline-block;padding-left:3px}.message code{padding:1px 4px;background:#d5e0d8;color:#16493c;font-family:SFMono-Regular,Consolas,monospace;font-size:.9em}.message.user code{background:#466357;color:#fff}.chat-state{border-left:3px solid #7f947d;background:#edf1ea;margin-bottom:12px;padding:10px 12px;color:#405649;font-size:13px;line-height:1.5}.chat-error{display:flex;align-items:center;justify-content:space-between;gap:14px;border-left:3px solid #a95b36;background:#f7ebe4;padding:10px 12px;margin-bottom:12px}.chat-error p{margin:0;color:#793a1d;font-size:13px;line-height:1.4}.chat-error button,.reset{border:0;color:#16493c;background:transparent;font-size:12px;text-decoration:underline;white-space:nowrap}.suggestions{display:flex;flex-wrap:wrap;gap:7px;border-top:1px solid #deded6;padding-top:15px}.suggestions button{border:1px solid #c7ccc5;background:transparent;padding:7px 9px;color:#4b554e;font-size:12px;text-align:left}.suggestions button:hover{border-color:#2f6658;color:#16493c}.suggestions button:disabled{opacity:.5;cursor:not-allowed}.composer{border-top:1px solid #deded6;margin-top:16px;padding-top:16px}.composer textarea{width:100%;resize:vertical;min-height:62px;border:1px solid #bfc5bc;border-radius:0;background:#fffefa;padding:10px;color:#1f2521;line-height:1.5}.composer textarea:focus{outline:2px solid #2f6658;outline-offset:2px}.composer>div{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.composer small{color:#89908a;font-size:11px}.composer button{border:0;background:#17483b;color:#fff;padding:9px 14px;font-size:13px;font-weight:700}.composer button:disabled{background:#b6bbb5;cursor:not-allowed}.reset{align-self:flex-start;margin-top:12px;padding:0}.content-section{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr);gap:70px;border-top:1px solid #d8d8d0;padding:88px 0}.section-label h2{font-family:Georgia,Songti SC,serif;font-size:38px;line-height:1.15;font-weight:500;letter-spacing:-.04em}.project{display:grid;grid-template-columns:54px 1fr auto;gap:20px;padding:0 0 44px;margin-bottom:45px;border-bottom:1px solid #d8d8d0}.project:last-child{padding-bottom:0;margin-bottom:0;border-bottom:0}.project-number{color:#2f6658;font-family:Georgia,serif;font-size:17px}.project-tag{color:#2f6658;font-size:12px;font-weight:800;letter-spacing:.08em}.project h3{margin-bottom:13px;font-family:Georgia,Songti SC,serif;font-size:32px;font-weight:500;letter-spacing:-.03em}.project-main>p{color:#5b625c;line-height:1.75}.project-highlights{display:grid;gap:7px;margin:18px 0;padding:0;list-style:none}.project-highlights li{color:#435148;font-size:14px;line-height:1.55}.project-highlights li:before{content:"•";color:#2f6658;padding-right:8px}.project-decision{border-left:2px solid #7f9e90;padding-left:12px;font-size:14px}.project-decision span{display:block;margin-bottom:4px;color:#2f6658;font-size:12px;font-weight:800;letter-spacing:.08em}.project-link{align-self:start;border-bottom:1px solid #1f2521;padding-bottom:4px;font-size:13px;white-space:nowrap}.project details{margin-top:20px}.project summary{color:#16493c;cursor:pointer;font-weight:700;font-size:14px}.project-detail{margin-top:18px;border-left:1px solid #b8c3b9;padding-left:20px}.project-detail h4{margin:20px 0 8px;font-size:13px}.project-detail p,.project-detail li{color:#576058;font-size:14px;line-height:1.7}.project-detail ul{margin:0;padding-left:18px}.project-status{color:#2f6658!important;font-weight:700}.split-section{padding-bottom:106px}.skills-list article{display:grid;grid-template-columns:48px 1fr;gap:15px;padding:0 0 21px;margin-bottom:21px;border-bottom:1px solid #dfdfd8}.skills-list span{color:#2f6658;font-size:12px;font-weight:800}.skills-list h3,.timeline h3{margin-bottom:8px;font-size:18px}.skills-list p,.timeline p,.timeline li{color:#5b625c;line-height:1.75}.skills-list p{margin:0}.timeline article{margin-bottom:50px}.timeline ul{padding-left:20px;margin-bottom:0}.period{margin-bottom:12px;color:#2f6658}.contact-section{border-top:1px solid #d8d8d0;padding:92px 0 68px}.contact-section h2{margin-bottom:66px;font-family:Georgia,Songti SC,serif;font-size:clamp(42px,5.4vw,72px);font-weight:500;line-height:1.08;letter-spacing:-.05em}.contact-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid #bfc3ba;border-left:1px solid #bfc3ba}.contact-grid a,.contact-grid button{min-height:128px;border:0;border-right:1px solid #bfc3ba;border-bottom:1px solid #bfc3ba;background:transparent;padding:18px;color:#647069;text-align:left;font-size:12px;line-height:1.6}.contact-grid a:hover,.contact-grid button:hover{background:#e9eee8}.contact-grid strong{color:#1f2521;font-size:14px;font-weight:700;overflow-wrap:anywhere}.notice{margin:14px 0 0;color:#2f6658;font-size:13px}footer{display:flex;justify-content:space-between;border-top:1px solid #d8d8d0;padding:24px 0 40px;color:#677069;font-size:12px}footer a{text-decoration:underline;text-underline-offset:4px}.loading-page{display:grid;min-height:100vh;place-content:center;color:#59605b}.error{color:#9a422b}.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}.skills-intro{color:#5b625c;font-size:16px;line-height:1.8;max-width:290px}.skill-content{min-width:0}.skill-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}.skills-list .skill-stage{font-size:12px;color:#667168;font-weight:400}.skill-tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:7px 0 14px;padding:0}.skill-tags li{border:1px solid #d3d9cf;padding:4px 8px;color:#294c3c;font-size:14px;line-height:1.5;overflow-wrap:anywhere}.skill-sources{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px}.skill-sources a{color:#305c48;font-size:13px;text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere}.skill-sources a:hover{color:#132f23}.skill-sources a:focus-visible{outline:2px solid #305c48;outline-offset:4px}.project-evidence{display:flex;flex-wrap:wrap;align-items:baseline;gap:7px 14px;margin-top:14px}.project-evidence span{color:#68736b;font-size:12px;font-weight:700}.project-evidence a{color:#305c48;font-size:13px;text-decoration:underline;text-underline-offset:3px}.skills-archive{margin-top:2px}.skills-archive>summary{cursor:pointer;color:#16493c;font-size:14px;font-weight:700}.skills-archive-list{padding-top:22px}@media (max-width: 900px){.hero,.content-section{grid-template-columns:1fr;gap:38px}.hero{padding-top:58px}.intro{padding-top:0}.chat-card{min-height:620px}.content-section{padding:68px 0}.contact-grid{grid-template-columns:1fr 1fr}}@media (max-width: 560px){.topbar,.hero,.content-section,.contact-section,footer{width:min(100% - 32px,1200px)}.topbar{min-height:68px}.wordmark,.topbar nav a{display:inline-flex;align-items:center;min-height:44px}.topbar nav{gap:8px;font-size:12px}.topbar nav a:nth-child(3){display:none}.hero{gap:42px;padding-bottom:76px}h1{font-size:52px}.intro-links{margin-bottom:45px}.intro-links a,.project-link,.project summary,.project-evidence a,.skill-sources a,.skills-archive>summary,.reset,footer a{display:inline-flex;align-items:center;min-height:44px}.suggestions button,.composer button{min-height:44px}.chat-card{padding:18px;margin-inline:-1px;box-shadow:7px 8px #e4e1d8}.messages{max-height:290px}.message{max-width:94%}.project{grid-template-columns:34px 1fr}.project-link{grid-column:2}.project h3{font-size:26px}.section-label h2{font-size:34px}.contact-section{padding-top:68px}.contact-section h2{margin-bottom:44px}.contact-grid{grid-template-columns:1fr}.contact-grid a,.contact-grid button{min-height:92px}}
