:root{--klein:#002fa7;--klein-bright:#124bd2;--deep-blue:#001c64;--blue-black:#071630;--blue-shadow:#001c64;--paper:#fff;--mist:#f3f6ff;--mist-blue:#e7edff;--ink:#111827;--muted:#667085;--line:#ccd6f5;--font-display:"Arial Black", "Noto Sans SC", "Microsoft YaHei UI", sans-serif;--font-body:Inter, "Noto Sans SC", "Microsoft YaHei UI", "PingFang SC", sans-serif;--font-utility:"Arial Narrow", "Roboto Condensed", "Microsoft YaHei UI", sans-serif;--page-width:1180px;--section-space:clamp(5.5rem, 10vw, 9rem);--gutter:clamp(1.25rem, 4vw, 3rem);--shadow-hard:12px 12px 0 var(--deep-blue);--ease-out:cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{min-width:320px;color:var(--ink);background:var(--paper);font-family:var(--font-body);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65;overflow-x:hidden}body:before{z-index:-1;content:"";pointer-events:none;opacity:.42;background-image:linear-gradient(#002fa709 1px,#0000 1px),linear-gradient(90deg,#002fa709 1px,#0000 1px);background-size:32px 32px;position:fixed;inset:0}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{font:inherit}img{max-width:100%;display:block}::selection{color:var(--paper);background:var(--klein)}:focus-visible{outline-offset:4px;outline:3px solid #fc0}.skip-link{z-index:100;color:var(--paper);background:var(--deep-blue);padding:.65rem 1rem;font-weight:800;transition:transform .2s;position:fixed;top:.75rem;left:.75rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.page-shell{width:min(100% - (var(--gutter) * 2), var(--page-width));margin-inline:auto}.eyebrow{font-family:var(--font-utility);letter-spacing:.19em;text-transform:uppercase;margin:0 0 1.2rem;font-size:.75rem;font-weight:900;line-height:1.4}.section{padding-block:var(--section-space);position:relative}.section-heading{grid-template-columns:minmax(0,1.1fr) minmax(18rem,.7fr);align-items:end;gap:clamp(2rem,7vw,7rem);margin-bottom:clamp(3.5rem,7vw,6.5rem);display:grid}.section-heading__lead{max-width:36rem;color:var(--muted);margin:0;font-size:clamp(1.05rem,1.7vw,1.3rem);line-height:1.75}.section-heading--inverse{color:var(--paper)}.section-heading--inverse .section-heading__lead{color:#ffffffbf}[data-reveal]{opacity:0;transition:opacity .75s var(--ease-out), transform .75s var(--ease-out);transform:translateY(32px)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}.site-header{z-index:50;min-height:4.75rem;padding:.7rem max(1rem, calc((100vw - var(--page-width)) / 2));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffffeb;border-bottom:1px solid #002fa72b;grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:fixed;top:0;left:0;right:0}.site-brand{align-items:center;gap:.85rem;width:max-content;text-decoration:none;display:inline-flex}.site-brand__mark{aspect-ratio:1;width:2.8rem;color:var(--paper);background:var(--klein);font-family:var(--font-display);letter-spacing:-.07em;place-items:center;font-size:.9rem;font-weight:950;display:grid;transform:rotate(-3deg)}.site-brand__text{color:var(--deep-blue);font-family:var(--font-utility);letter-spacing:.16em;font-size:.68rem;font-weight:900}.site-nav{align-items:center;gap:clamp(1rem,2.8vw,2.5rem);display:flex}.site-nav a,.site-header__status{font-size:.85rem;font-weight:800;text-decoration:none}.site-nav a{color:var(--blue-black);padding:.6rem 0;position:relative}.site-nav a:after{content:"";background:var(--klein);transform-origin:100%;height:.18rem;transition:transform .28s var(--ease-out);position:absolute;bottom:.25rem;left:0;right:0;transform:scaleX(0)}.site-nav a:hover:after{transform-origin:0;transform:scaleX(1)}.site-header__status{color:var(--klein);justify-self:end;align-items:center;gap:.55rem;display:inline-flex}.site-header__status span{aspect-ratio:1;background:#19a85b;border-radius:50%;width:.55rem;box-shadow:0 0 0 5px #19a85b1f}.menu-toggle{color:var(--deep-blue);background:0 0;border:0;font-size:.8rem;font-weight:900;display:none}.hero{min-height:100svh;color:var(--blue-black);background:linear-gradient(90deg, transparent 0 72%, #002fa70e 72% 72.1%, transparent 72.1%), var(--paper);padding-top:4.75rem;position:relative;overflow:hidden}.hero__backdrop{color:#002fa709;font-family:var(--font-display);letter-spacing:-.09em;pointer-events:none;writing-mode:vertical-rl;font-size:clamp(7rem,19vw,19rem);font-weight:950;line-height:.72;position:absolute;top:10%;right:-.08em}.hero__grid{z-index:1;grid-template-columns:minmax(0,1.18fr) minmax(19rem,.72fr);align-items:center;gap:clamp(3rem,8vw,7.5rem);min-height:calc(100svh - 8.8rem);padding-block:clamp(4.2rem,9vh,7.5rem) 6rem;display:grid;position:relative}.hero__content{min-width:0}.hero__eyebrow{color:var(--klein);animation:rise-in .7s .1s var(--ease-out) both;align-items:center;gap:.8rem;display:flex}.hero__eyebrow:before{content:"";background:var(--klein);width:3.2rem;height:.18rem}.hero__role{border-bottom:.45rem solid var(--klein);width:max-content;max-width:100%;color:var(--deep-blue);font-family:var(--font-utility);letter-spacing:.08em;animation:rise-in .7s .42s var(--ease-out) both;margin:1.75rem 0 0;padding-bottom:.35rem;font-size:clamp(1rem,2.2vw,1.5rem);font-weight:900}.hero__intro{max-width:43rem;color:var(--muted);animation:rise-in .7s .52s var(--ease-out) both;margin:1.65rem 0 0;font-size:clamp(1.1rem,1.65vw,1.35rem);line-height:1.85}.hero__actions{animation:rise-in .7s .62s var(--ease-out) both;flex-wrap:wrap;align-items:center;gap:1.1rem 1.5rem;margin-top:2.2rem;display:flex}.button{justify-content:center;align-items:center;gap:1.25rem;min-height:3.4rem;padding:.7rem 1.2rem;font-size:.88rem;font-weight:900;text-decoration:none;transition:color .25s,background .25s,transform .25s,box-shadow .25s;display:inline-flex}.button--primary{min-width:12.5rem;color:var(--paper);background:var(--klein);box-shadow:7px 7px 0 var(--deep-blue)}.button--primary:hover{box-shadow:4px 4px 0 var(--deep-blue);transform:translate(3px,3px)}.button--text{border-bottom:2px solid var(--klein);color:var(--klein);padding-inline:.3rem}.hero__facts{border-top:1px solid var(--line);animation:rise-in .7s .72s var(--ease-out) both;grid-template-columns:repeat(3,1fr);margin:clamp(3rem,7vh,5rem) 0 0;padding:0;display:grid}.hero__facts div{padding:1.35rem 1rem 0 0}.hero__facts div+div{border-left:1px solid var(--line);padding-left:clamp(.7rem,2vw,1.8rem)}.hero__facts dt{color:var(--klein);font-family:var(--font-display);letter-spacing:-.05em;font-size:clamp(1.45rem,2.6vw,2.2rem);font-weight:950}.hero__facts dd{color:var(--muted);margin:.2rem 0 0;font-size:.75rem;font-weight:800}.portrait{justify-self:end;width:min(100%,25rem);position:relative}.portrait__paint{z-index:-1;background:var(--klein);clip-path:polygon(4% 2%,97% 0,100% 15%,97% 34%,100% 51%,96% 72%,100% 97%,81% 94%,61% 100%,39% 95%,15% 99%,0 92%,3% 71%,0 47%,4% 24%);box-shadow:14px 16px 0 var(--deep-blue);position:absolute;inset:8% -10% -7% 8%}.portrait__frame{aspect-ratio:4/5;border:.55rem solid var(--paper);background:var(--mist-blue);position:relative;overflow:hidden;transform:rotate(1.5deg);box-shadow:0 0 0 1px #001c641f}.portrait__frame img{object-fit:cover;filter:saturate(.8)contrast(1.05);width:100%;height:100%}.portrait__screen{opacity:.18;background-image:radial-gradient(var(--klein) .8px, transparent .8px);mix-blend-mode:multiply;pointer-events:none;background-size:5px 5px;position:absolute;inset:0}.portrait__caption{min-width:11.5rem;color:var(--deep-blue);background:var(--paper);box-shadow:7px 7px 0 var(--deep-blue);font-family:var(--font-utility);padding:.8rem 1rem;line-height:1.3;display:grid;position:absolute;bottom:1.4rem;right:-1.5rem;transform:rotate(-2.5deg)}.portrait__caption span{font-size:.7rem}.portrait__caption strong{color:var(--klein);letter-spacing:.1em;font-size:.8rem}.portrait__stamp{aspect-ratio:1;border:2px solid var(--paper);width:5.2rem;color:var(--paper);background:var(--deep-blue);font-family:var(--font-utility);letter-spacing:.12em;text-align:center;border-radius:50%;place-items:center;font-size:.72rem;font-weight:900;line-height:1.2;display:grid;position:absolute;top:-1.7rem;left:-2rem;transform:rotate(-11deg)}.hero__marquee{border-block:1px solid var(--klein);color:var(--klein);background:var(--paper);font-family:var(--font-utility);letter-spacing:.14em;white-space:nowrap;font-size:.72rem;font-weight:900;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.hero__marquee div{width:max-content;padding-block:.62rem;animation:24s linear infinite marquee}.about{background:var(--paper)}.about__grid{grid-template-columns:minmax(15rem,.52fr) minmax(0,1.3fr);gap:clamp(3rem,8vw,8rem);display:grid}.about__aside{border:2px solid var(--klein);box-shadow:var(--shadow-hard);align-self:start;padding:1.6rem}.about__quote{color:var(--deep-blue);margin:0;font-size:clamp(1.15rem,2vw,1.55rem);font-weight:850;line-height:1.65}.about__details{gap:.8rem;margin:2rem 0 0;display:grid}.about__details div{border-top:1px solid var(--line);grid-template-columns:4rem 1fr;gap:1rem;padding-top:.8rem;display:grid}.about__details dt{color:var(--klein);font-size:.75rem;font-weight:900}.about__details dd{margin:0;font-size:.9rem;font-weight:700}.experience-timeline{gap:0;margin:0;padding:0;list-style:none;display:grid}.experience-item{grid-template-columns:10rem minmax(0,1fr);gap:clamp(1.5rem,4vw,3.5rem);padding:0 0 3.5rem;display:grid}.experience-item+.experience-item{border-top:1px solid var(--line);padding-top:3.5rem}.experience-item__period{color:var(--klein);font-family:var(--font-utility);letter-spacing:.05em;margin:0;font-size:.8rem;font-weight:900}.experience-item__organization{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 .4rem;font-size:.78rem;font-weight:850}.experience-item h3{color:var(--deep-blue);letter-spacing:-.04em;margin:0;font-size:clamp(1.35rem,2.5vw,2rem);line-height:1.2}.experience-item__description{color:var(--muted);margin:1.1rem 0 0}.experience-item ul{gap:.55rem;margin:1.4rem 0 0;padding:0;list-style:none;display:grid}.experience-item li{padding-left:1.3rem;position:relative}.experience-item li:before{content:"";background:var(--klein);width:.55rem;height:.18rem;position:absolute;top:.72em;left:0}.section--blue{color:var(--paper);background:var(--klein)}.skills{overflow:hidden}.skills__texture{opacity:.16;pointer-events:none;background:linear-gradient(102deg,#0000 0 8%,#ffffff4d 8.1% 8.2%,#0000 8.3% 64%,#ffffff40 64.1% 64.22%,#0000 64.3%),repeating-linear-gradient(0deg,#0000 0 8px,#ffffff14 9px,#0000 10px 16px);position:absolute;inset:0}.skill-grid{border-top:1px solid #ffffff59;border-left:1px solid #ffffff59;grid-template-columns:repeat(2,1fr);display:grid;position:relative}.skill-group{border-bottom:1px solid #ffffff59;border-right:1px solid #ffffff59;min-height:23rem;padding:clamp(1.7rem,4vw,3rem)}.skill-group__label{color:#fff9;font-family:var(--font-utility);letter-spacing:.15em;margin:0;font-size:.7rem;font-weight:900}.skill-group h3{font-family:var(--font-display);letter-spacing:-.06em;margin:2.7rem 0 0;font-size:clamp(1.7rem,3.4vw,3rem);line-height:1}.skill-group>p:not(.skill-group__label){color:#ffffffbd;max-width:30rem;margin:1.3rem 0 0}.skill-group ul{flex-wrap:wrap;gap:.55rem;margin:2rem 0 0;padding:0;list-style:none;display:flex}.skill-group li{font-family:var(--font-utility);border:1px solid #ffffff73;padding:.32rem .55rem;font-size:.76rem;font-weight:800}.projects{background:var(--mist)}.projects__heading{grid-template-columns:minmax(0,1fr) minmax(18rem,.58fr)}.project-list{border-top:2px solid var(--klein);display:grid}.project-case{border-bottom:2px solid var(--klein);grid-template-columns:minmax(17rem,.73fr) minmax(0,1.27fr);gap:clamp(2rem,6vw,6rem);padding:clamp(2.5rem,6vw,5rem) 0;display:grid}.project-case__header{grid-template-columns:4.2rem minmax(0,1fr);align-content:start;gap:1rem;display:grid}.project-case__index{color:#0000;font-family:var(--font-display);letter-spacing:-.08em;-webkit-text-stroke:1.5px var(--klein);font-size:3.5rem;font-weight:950;line-height:.8}.project-case__eyebrow{color:var(--muted);font-family:var(--font-utility);letter-spacing:.16em;margin:0 0 .75rem;font-size:.68rem;font-weight:900}.project-case h3{color:var(--deep-blue);font-family:var(--font-display);letter-spacing:-.065em;margin:0;font-size:clamp(2rem,4.5vw,4.2rem);line-height:.98}.project-case__subtitle{color:var(--klein);margin:1rem 0 0;font-size:1rem;font-weight:800}.project-case__summary{color:var(--blue-black);margin:0;font-size:clamp(1.08rem,1.7vw,1.32rem);font-weight:700;line-height:1.78}.project-case__role{color:var(--muted);margin:1.15rem 0 0;font-size:.84rem}.project-case__metrics{border-block:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin:2.5rem 0;padding:0;display:grid}.project-case__metrics div{padding:1.3rem .8rem 1.3rem 0}.project-case__metrics div+div{border-left:1px solid var(--line);padding-left:1rem}.project-case__metrics dt{color:var(--klein);font-family:var(--font-display);letter-spacing:-.06em;font-size:clamp(1.5rem,3vw,2.5rem);font-weight:950}.project-case__metrics dd{color:var(--muted);margin:.25rem 0 0;font-size:.72rem;font-weight:800}.project-case__highlights{gap:.85rem;margin:0;padding:0;list-style:none;display:grid}.project-case__highlights li{padding-left:1.45rem;position:relative}.project-case__highlights li:before{content:"";background:var(--klein);width:.65rem;height:.22rem;position:absolute;top:.66em;left:0}.project-case__stack{flex-wrap:wrap;gap:.5rem;margin-top:2rem;display:flex}.project-case__stack span{border:1px solid var(--line);color:var(--deep-blue);background:var(--paper);font-family:var(--font-utility);padding:.28rem .52rem;font-size:.7rem;font-weight:850}.project-case__links{flex-wrap:wrap;gap:1rem 1.5rem;margin-top:2rem;display:flex}.project-case__links a{color:var(--klein);border-bottom:2px solid;align-items:center;gap:.65rem;padding-bottom:.25rem;font-size:.82rem;font-weight:900;text-decoration:none;display:inline-flex}.project-case__links a:hover span{transform:translate(.15rem,-.15rem)}.project-case__links span{transition:transform .2s}.contact{color:var(--paper);background:var(--deep-blue);overflow:hidden}.contact__stroke{opacity:.2;background:var(--klein-bright);clip-path:polygon(2% 23%,100% 0,96% 74%,3% 100%,0 71%);width:min(53rem,72vw);height:7rem;position:absolute;top:9%;right:-4%;transform:rotate(-7deg)}.contact__grid{grid-template-columns:minmax(0,.9fr) minmax(22rem,1.1fr);align-items:start;gap:clamp(3rem,8vw,8rem);display:grid;position:relative}.contact__lead{color:#ffffffb8;max-width:35rem;margin:2.4rem 0 0;font-size:clamp(1.05rem,1.7vw,1.28rem)}.contact-list{border-top:1px solid #ffffff59}.contact-item{border-bottom:1px solid #ffffff59;grid-template-columns:4.5rem minmax(0,1fr) auto;align-items:center;gap:1.1rem;min-height:5.25rem;display:grid}.contact-item>span{color:#ffffff8c;font-family:var(--font-utility);letter-spacing:.15em;font-size:.65rem;font-weight:900}.contact-item a{overflow-wrap:anywhere;font-size:clamp(.94rem,1.7vw,1.18rem);font-weight:800;text-decoration:none}.contact-item button{color:var(--paper);cursor:pointer;background:0 0;border:1px solid #ffffff80;padding:.35rem .55rem;font-size:.7rem;font-weight:850}.contact-item button:hover{color:var(--deep-blue);background:var(--paper)}.contact-item i{font-style:normal}.copy-status{right:var(--gutter);color:#ffffffbf;min-height:1.5rem;margin:0;font-size:.78rem;position:absolute;bottom:1.5rem}.site-footer{color:var(--paper);background:var(--blue-black);padding-block:1.2rem}.site-footer .page-shell{justify-content:space-between;align-items:center;gap:1rem 2rem;display:flex}.site-footer p,.site-footer a{color:#ffffff94;font-family:var(--font-utility);letter-spacing:.08em;margin:0;font-size:.65rem;font-weight:800;text-decoration:none}@keyframes rise-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes marquee{to{transform:translate(-50%)}}@media (width<=960px){.site-header{grid-template-columns:1fr auto}.site-header__status{display:none}.menu-toggle{cursor:pointer;align-items:center;gap:.7rem;display:inline-flex}.menu-toggle i{border-block:2px solid var(--klein);width:1.35rem;height:.7rem;position:relative}.site-nav{padding:0 var(--gutter);border-bottom:1px solid var(--line);background:var(--paper);opacity:0;pointer-events:none;gap:0;transition:opacity .25s,transform .25s;display:grid;position:absolute;top:100%;left:0;right:0;transform:translateY(-.7rem);box-shadow:0 14px 24px #001c641a}.site-nav--open{opacity:1;pointer-events:auto;transform:translateY(0)}.site-nav a{border-bottom:1px solid var(--line);padding-block:1rem}.hero__grid{grid-template-columns:1fr;padding-top:7rem}.hero__content{max-width:48rem}.portrait{justify-self:center;width:min(78vw,25rem);margin-top:1rem}.section-heading,.projects__heading,.contact__grid{grid-template-columns:1fr}.section-heading{gap:2rem}.about__grid{grid-template-columns:1fr}.about__aside{max-width:34rem}.project-case{grid-template-columns:1fr}.project-case__header{max-width:43rem}.contact__grid{gap:4rem}}@media (width<=640px){:root{--section-space:5rem}html{scroll-padding-top:4.2rem}.site-header{min-height:4.2rem}.site-brand__text{display:none}.hero{padding-top:4.2rem}.hero__grid{min-height:auto;padding-top:4.6rem}.hero__role{width:auto;line-height:1.5}.hero__facts{gap:0}.hero__facts div{min-width:0;padding-right:.5rem}.hero__facts dd{line-height:1.35}.portrait__caption{right:-.4rem}.portrait__stamp{left:-.8rem}.skill-grid{grid-template-columns:1fr}.skill-group{min-height:auto;padding-block:2.5rem}.experience-item{grid-template-columns:1fr;gap:.75rem}.project-case__header{grid-template-columns:3.2rem minmax(0,1fr)}.project-case__index{font-size:2.7rem}.project-case__metrics{grid-template-columns:1fr}.project-case__metrics div{grid-template-columns:7rem 1fr;align-items:center;padding:.85rem 0;display:grid}.project-case__metrics div+div{border-top:1px solid var(--line);border-left:0;padding-left:0}.project-case__metrics dd{margin:0}.contact-item{grid-template-columns:3.8rem minmax(0,1fr) auto;gap:.6rem}.site-footer .page-shell{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-reveal]{opacity:1;transform:none}}.brush-title[data-v-eb5245a3]{line-height:.94;font-family:var(--font-display);letter-spacing:-.065em;margin:0;font-weight:950}.brush-title__paint[data-v-eb5245a3]{isolation:isolate;color:var(--paper);text-wrap:balance;padding:.1em .18em .16em .13em;display:inline-block;position:relative;transform:rotate(-1.25deg)}.brush-title__paint[data-v-eb5245a3]:before{z-index:-2;content:"";background:var(--klein);clip-path:polygon(.7% 9%,4% 3%,12% 7%,22% 2%,34% 6%,45% 1%,58% 5%,71% 2%,84% 7%,99% 3%,97.8% 17%,100% 28%,98.2% 41%,100% 54%,97.4% 68%,99.2% 82%,96% 94%,87% 91%,76% 97%,64% 92%,52% 98%,39% 93%,28% 97%,17% 92%,7% 96%,1.2% 88%,2.4% 72%,.4% 59%,2.1% 44%,.2% 28%);box-shadow:.18em .2em 0 var(--blue-shadow);transform-origin:0;animation:.95s cubic-bezier(.2,.8,.2,1) both brush-in-eb5245a3;position:absolute;inset:.03em -.08em -.01em -.07em}.brush-title__paint[data-v-eb5245a3]:after{z-index:-1;content:"";opacity:.25;background:linear-gradient(90deg, transparent 0 8%, var(--paper) 8.4% 9%, transparent 9.5% 34%, var(--paper) 34.5% 35.2%, transparent 36%), repeating-linear-gradient(178deg, transparent 0 .11em, #ffffffa6 .13em .15em, transparent .17em .34em);mix-blend-mode:screen;clip-path:polygon(0 16%,100% 1%,98% 91%,2% 100%);position:absolute;inset:8% -2% 4%}.brush-title--white .brush-title__paint[data-v-eb5245a3]{color:var(--klein)}.brush-title--white .brush-title__paint[data-v-eb5245a3]:before{background:var(--paper);box-shadow:.18em .2em #00124c38}.brush-title--white .brush-title__paint[data-v-eb5245a3]:after{background:linear-gradient(90deg, transparent 0 12%, var(--klein) 12.4% 13%, transparent 13.5% 67%, var(--klein) 67.4% 68%, transparent 68.5%), repeating-linear-gradient(178deg, transparent 0 .11em, #002fa773 .13em .15em, transparent .17em .34em)}.brush-title--hero[data-v-eb5245a3]{font-size:clamp(4.7rem,12vw,10rem)}.brush-title--section[data-v-eb5245a3]{font-size:clamp(2.9rem,7vw,6rem)}.brush-title--small[data-v-eb5245a3]{font-size:clamp(1.8rem,3.5vw,3.25rem)}@keyframes brush-in-eb5245a3{0%{clip-path:inset(0 100% 0 0);transform:scaleX(.82)skew(-7deg)}to{clip-path:inset(-10% -12% -16%);transform:scaleX(1)skew(0)}}@media (prefers-reduced-motion:reduce){.brush-title__paint[data-v-eb5245a3]:before{animation:none}}
