@font-face{font-family:Manrope;src:url('/assets/manrope.woff2') format('woff2');font-display:swap;font-weight:200 800;font-style:normal}
:root{--paper:#fff;--ink:#171717;--gray:#f3f3f3;--yellow:#ffe430;--line:#bdbdbd;--sans:Manrope,'PingFang SC','Microsoft YaHei',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased}button,a{-webkit-tap-highlight-color:transparent}button,input,textarea{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}button,a{touch-action:manipulation}a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:5px}a:hover{text-decoration:underline;text-underline-offset:4px}h1,h2,h3,h4,p{margin:0}button{border:0;border-radius:0}.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}.skip-link{position:fixed;left:20px;top:15px;padding:12px 18px;background:var(--yellow);z-index:100;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}
.page-header{background:#fff;position:relative;z-index:50}.page-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:18px 32px 14px;min-height:60px}.page-nav a{width:max-content;font-size:12px;font-weight:600;text-transform:uppercase;line-height:1.3;letter-spacing:.035em}.page-nav a:hover{background:var(--yellow);text-decoration:none}.page-nav a[aria-current=page]{text-decoration:underline;text-underline-offset:6px}.page-heading{position:relative;padding:35px 24px 48px}.page-heading h1{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));font-size:clamp(52px,5.3vw,82px);font-weight:400;line-height:1.05;letter-spacing:-.06em}.page-heading p{position:absolute;right:25px;bottom:54px;font-size:11px}.workspace-tools{display:flex;align-items:center;gap:24px;padding:0 24px 16px;font-size:10px;line-height:1.4}.window-shortcuts{display:flex;gap:22px}.window-shortcuts a{text-transform:uppercase;font-weight:600;letter-spacing:.035em}.window-shortcuts a[aria-current=true]{text-decoration:underline;text-underline-offset:5px}.workspace-tools>p{margin-left:auto;color:#595959}.reset-layout{background:transparent;padding:0;white-space:nowrap;font-size:10px}.reset-layout span{font-size:17px;margin-left:5px;vertical-align:-1px}
.workspace{position:relative;min-height:1020px;background:var(--gray);isolation:isolate;border-top:1px dotted var(--line);overflow:clip}.workspace-rail{position:absolute;left:0;top:0;bottom:0;width:25%;padding:11px 14px;display:flex;justify-content:space-between;border-right:1px dotted var(--line);font-size:9px;line-height:1.3;text-transform:uppercase;letter-spacing:.035em}.desktop-window{position:absolute;display:flex;flex-direction:column;border:1px dotted var(--line);background:#fff;transform:translate(var(--window-x,0px),var(--window-y,0px));box-shadow:none;scroll-margin-top:28px;transition:box-shadow .16s ease}.desktop-window[data-active=true]{box-shadow:3px 4px 0 #00000008}.window-titlebar,.window-foot{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:31px;padding:8px 12px;background:transparent;text-transform:uppercase;letter-spacing:.045em;font-size:9px;font-weight:600;line-height:1.2;flex-shrink:0}.window-titlebar{border-bottom:1px dotted var(--line);cursor:grab;touch-action:none;user-select:none}.window-titlebar:focus-visible{outline-offset:-4px}.window-foot{border-top:1px dotted var(--line);margin-top:auto;min-height:28px}.window-square{width:5px;height:5px;background:var(--ink);display:block;flex-shrink:0}.desktop-window.is-dragging{box-shadow:6px 9px 0 #0000000c}.desktop-window.is-dragging .window-titlebar{cursor:grabbing}.window-content{overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aaa transparent}.profile-window{left:0;top:158px;width:76%;z-index:3}.skills-window{left:0;top:84px;width:58%;z-index:2;background:var(--yellow)}.experience-window{left:25%;top:0;width:75%;z-index:1;background:var(--gray)}
.profile-content{padding:20px 14px 0;max-height:740px}.profile-intro{display:grid;grid-template-columns:1fr 2fr;gap:24px;min-height:345px}.profile-identity h2{font-size:clamp(31px,3.2vw,48px);font-weight:400;line-height:1.1;letter-spacing:-.055em}.profile-identity h2>span{display:block;margin-top:7px;font-size:13px;letter-spacing:0}.nameplate{margin-top:25px;padding:15px;background:var(--gray);min-height:160px;display:flex;flex-direction:column;justify-content:space-between}.nameplate-top,.nameplate-bottom{font-size:9px;line-height:1.5}.nameplate-name{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:clamp(24px,3vw,46px);line-height:1;letter-spacing:-.06em}.nameplate-name>span{font-size:24px;line-height:1}.nameplate-bottom{display:flex;justify-content:space-between}.profile-story{font-size:clamp(13px,1.15vw,17px);line-height:1.85;padding:0 14px 25px 0}.profile-story>p+p{margin-top:17px}.profile-directions{display:flex;gap:9px 15px;flex-wrap:wrap;margin-top:24px;font-size:10px;line-height:1.6}.profile-directions>span{border-bottom:1px solid #acacac;padding-bottom:3px}.profile-links{margin:0 -14px}.profile-links>div{display:grid;grid-template-columns:1fr 2fr;gap:24px;padding:14px;border-top:1px dotted var(--line);align-items:center;min-height:64px}.profile-links dt{font-size:clamp(22px,2.5vw,37px);line-height:1.2;letter-spacing:-.04em}.profile-links dd{margin:0;min-width:0;font-size:clamp(12px,1.35vw,19px);line-height:1.5;overflow-wrap:anywhere}.profile-links dd>a{display:flex;justify-content:space-between;gap:15px}.profile-links dd>a>span{padding-right:12px;flex-shrink:0}
.skills-content{padding:15px 14px 22px;max-height:754px}.skills-content>h2,.experience-content>h2{font-size:clamp(33px,3.1vw,46px);font-weight:400;line-height:1.2;letter-spacing:-.055em;margin-bottom:20px}.skills-list{list-style:none;margin:0;padding:0}.skills-list>li{display:grid;grid-template-columns:37px minmax(0,1fr);gap:12px;padding:17px 0;border-top:1px dotted #918119}.skill-number{font-size:12px;padding-top:5px}.skills-list h3{font-size:clamp(20px,2.1vw,31px);font-weight:500;line-height:1.45;letter-spacing:-.04em}.skills-list h3 small{font-size:12px;font-weight:400;letter-spacing:0;margin-left:7px;white-space:nowrap}.skills-list p{max-width:48em;margin-top:7px;font-size:12px;line-height:1.75}.skills-note{display:grid;grid-template-columns:1fr 2fr;gap:24px;border-top:1px dotted #918119;margin-top:10px;padding-top:20px}.skills-note>span{font-size:10px}.skills-note>p{font-size:19px;line-height:1.6;letter-spacing:-.03em}
.experience-content{padding:15px 14px 28px;max-height:830px}.experience-table{border-top:1px dotted var(--line)}.table-heading,.experience-primary{display:grid;grid-template-columns:1fr 1.25fr 1.1fr;gap:24px}.table-heading{padding:12px 0;border-bottom:1px dotted var(--line);font-size:10px;text-transform:uppercase;letter-spacing:.035em}.experience-primary{padding:22px 0}.experience-date{font-size:11px;line-height:1.8}.experience-primary h3{font-size:24px;font-weight:500;line-height:1.2;letter-spacing:-.03em}.experience-primary h3+p{margin-top:8px;font-size:11px;line-height:1.7}.experience-role{font-size:13px;line-height:1.8}.experience-details{margin-left:30%;border-top:1px dotted var(--line)}.experience-details>div{padding:16px 0;border-bottom:1px dotted var(--line)}.experience-details h4{font-size:13px;font-weight:600;line-height:1.5}.experience-details p{margin-top:7px;font-size:12px;line-height:1.85;max-width:52em}.earlier-experience{display:grid;grid-template-columns:1fr 2.6fr;gap:24px;padding:20px 0;border-bottom:1px dotted var(--line)}.earlier-experience>span{font-size:10px;line-height:1.7}.earlier-experience>p{font-size:12px;line-height:1.85}.education-block{margin-top:27px}.education-block>h3{font-size:29px;font-weight:400;line-height:1.25;letter-spacing:-.04em;margin-bottom:15px}.education-block>div{display:grid;grid-template-columns:1fr 2.6fr;gap:24px;padding:15px 0;border-top:1px dotted var(--line)}.education-block p{font-size:11px;line-height:1.8}.education-block strong{font-size:15px;font-weight:500}.education-block p>span{display:block;margin-top:5px}.workspace-caption{display:flex;justify-content:space-between;gap:25px;padding:22px 24px 50px;font-size:11px;line-height:1.6}.page-footer{display:grid;grid-template-columns:1fr 2fr 1fr;align-items:center;gap:20px;padding:23px 24px;border-top:1px dotted var(--line);font-size:10px;line-height:1.6}.page-footer>a:first-child{font-size:18px;letter-spacing:-.04em;font-weight:600}.page-footer>span{text-align:center}.page-footer>a:last-child{text-align:right}
@media(min-width:1700px){.page-nav{padding-left:40px;padding-right:40px}.workspace{min-height:1080px}.profile-window{top:180px}.skills-window{top:105px}.profile-intro{min-height:370px}.profile-story{font-size:18px}.profile-content{max-height:790px}.profile-links>div{min-height:77px}.profile-links dd{font-size:20px}.skills-list>li{padding:21px 0}.skills-list p,.experience-details p{font-size:14px}.experience-content{max-height:920px}.experience-primary{padding:28px 0}.experience-primary h3{font-size:29px}.experience-role{font-size:15px}.education-block{margin-top:34px}}
@media(max-width:1100px) and (min-width:901px){.workspace{min-height:1000px}.profile-window{width:82%}.skills-window{width:65%}.profile-intro{gap:18px}.profile-story{font-size:13px}.profile-story>p+p{margin-top:12px}.profile-directions{margin-top:17px;gap:7px 12px}.nameplate{padding:11px;min-height:138px}.nameplate-name{font-size:25px}.profile-intro{min-height:327px}.skills-list h3{font-size:23px}.skills-list p{font-size:11px}.experience-details{margin-left:26%}.table-heading,.experience-primary{gap:15px;grid-template-columns:1.1fr 1.3fr 1fr}.experience-role{font-size:11px}.experience-date{font-size:10px}}
@media(max-width:900px){html{scroll-padding-top:20px}.page-nav{padding:17px 16px;min-height:52px}.page-nav a{font-size:11px}.page-heading{padding:30px 18px 37px}.page-heading h1{grid-template-columns:1fr 1fr;font-size:70px}.page-heading p{right:19px;bottom:17px;font-size:10px}.workspace-tools{padding:12px 18px 16px;gap:15px;flex-wrap:wrap}.window-shortcuts{gap:20px}.workspace-tools>p{display:none}.reset-layout{display:none}.workspace{display:flex;flex-direction:column;gap:26px;min-height:0;padding:0 18px 34px;border-top:0;background:var(--paper);overflow:visible}.workspace-rail{display:none}.desktop-window{position:relative;top:auto;left:auto;width:100%;transform:none!important;box-shadow:none!important;scroll-margin-top:20px}.window-titlebar{cursor:pointer;touch-action:manipulation;padding:10px 12px;min-height:34px}.window-content{max-height:none;overflow:visible}.profile-content{padding:20px 16px 0}.profile-intro{grid-template-columns:1fr 1.65fr;gap:22px;min-height:325px}.profile-identity h2{font-size:36px}.profile-story{font-size:13px;padding:0 0 23px;line-height:1.85}.nameplate{min-height:152px;padding:12px}.nameplate-name{font-size:30px}.profile-links{margin:0 -16px}.profile-links>div{padding:14px 16px;grid-template-columns:1fr 1.65fr;gap:22px;min-height:66px}.profile-links dt{font-size:29px}.profile-links dd{font-size:14px}.skills-content,.experience-content{padding:19px 16px 25px}.skills-content>h2,.experience-content>h2{font-size:38px}.skills-list>li{grid-template-columns:38px 1fr;padding:20px 0}.skills-list h3{font-size:28px}.skills-list h3 small{font-size:13px}.skills-list p{font-size:13px}.skills-note>p{font-size:22px}.experience-primary h3{font-size:27px}.experience-role{font-size:13px}.experience-details p{font-size:13px}.experience-details{margin-left:29%}.experience-date{font-size:11px}.workspace-caption{padding:5px 18px 36px;font-size:10px}.page-footer{padding:19px 18px;font-size:9px}.page-footer>a:first-child{font-size:16px}}
@media(max-width:560px){.page-nav{padding:16px}.page-nav a{font-size:10px}.page-heading{padding:28px 14px 36px}.page-heading h1{font-size:57px}.page-heading p{right:15px;bottom:13px;font-size:9px}.workspace-tools{padding:12px 14px 17px}.window-shortcuts{gap:25px}.workspace{padding:0 12px 28px;gap:21px}.window-titlebar{font-size:9px;min-height:31px}.profile-content{padding:18px 12px 0}.profile-intro{display:block;min-height:0}.profile-identity{display:grid;grid-template-columns:1fr 1fr;gap:15px;align-items:center;margin-bottom:24px}.profile-identity h2{font-size:34px}.profile-identity h2>span{font-size:12px}.nameplate{margin:0;min-height:125px;padding:10px}.nameplate-top,.nameplate-bottom{font-size:7px}.nameplate-name{font-size:24px}.nameplate-name>span{font-size:19px}.profile-story{font-size:13px;padding-bottom:23px}.profile-story>p+p{margin-top:14px}.profile-directions{font-size:9px;margin-top:19px;gap:8px 14px}.profile-links{margin:0 -12px}.profile-links>div{grid-template-columns:82px 1fr;gap:13px;padding:14px 12px;min-height:61px}.profile-links dt{font-size:23px}.profile-links dd{font-size:12px}.profile-links dd>a>span{padding-right:0}.skills-content,.experience-content{padding:17px 12px 23px}.skills-content>h2,.experience-content>h2{font-size:32px;margin-bottom:17px}.skills-list>li{grid-template-columns:26px 1fr;gap:8px;padding:17px 0}.skills-list h3{font-size:22px}.skills-list h3 small{font-size:10px;margin-left:4px}.skills-list p{font-size:12px;line-height:1.8}.skill-number{font-size:10px;padding-top:5px}.skills-note{grid-template-columns:82px 1fr;gap:13px}.skills-note>span{font-size:9px}.skills-note>p{font-size:18px}.table-heading{display:none}.experience-primary{grid-template-columns:1fr 1fr;gap:15px;padding:18px 0}.experience-date{grid-column:1/-1;font-size:10px}.experience-primary h3{font-size:26px}.experience-primary h3+p{font-size:10px}.experience-role{font-size:12px;text-align:right}.experience-details{margin-left:0}.experience-details>div{padding:15px 0}.experience-details h4{font-size:12px}.experience-details p{font-size:12px}.earlier-experience{grid-template-columns:1fr;gap:7px;padding:17px 0}.earlier-experience>span{font-size:9px}.earlier-experience>p{font-size:12px}.education-block>h3{font-size:27px}.education-block>div{grid-template-columns:1fr 1.4fr;gap:16px}.education-block p{font-size:10px}.education-block strong{font-size:13px}.workspace-caption{display:block;padding:0 14px 28px;line-height:1.8}.workspace-caption>a{display:block;margin-top:9px}.page-footer{grid-template-columns:1fr 1fr;padding:18px 14px;gap:13px}.page-footer>span{text-align:left;grid-row:2;grid-column:1/-1;font-size:8px}.page-footer>a:last-child{grid-column:2;grid-row:1;font-size:9px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.desktop-window{transition:none}}

/* One shared structure and type scale for every experience. */
.experience-content{--experience-company-size:24px;--experience-copy-size:14px;--experience-meta-size:12px;--experience-columns:minmax(0,1fr) minmax(0,1.25fr) minmax(0,1.1fr);--experience-gap:24px}
.table-heading,.experience-entry{display:grid;grid-template-columns:var(--experience-columns);column-gap:var(--experience-gap)}
.experience-entry{padding:24px 0;border-bottom:1px dotted var(--line)}
.experience-primary{display:contents}
.experience-primary>div{min-width:0}
.experience-primary h3{font-size:var(--experience-company-size);font-weight:500;line-height:1.4;letter-spacing:-.03em}
.experience-date{font-size:var(--experience-meta-size);line-height:1.8}
.experience-role,.experience-primary h3+p{font-size:var(--experience-copy-size);font-weight:400;line-height:1.8}
.experience-details{grid-column:2/-1;margin:18px 0 0;border-top:1px dotted var(--line)}
.experience-details>div{padding:16px 0}
.experience-details>div:last-child{padding-bottom:0;border-bottom:0}
.experience-details h4{font-size:var(--experience-copy-size);line-height:1.8}
.experience-details p{font-size:var(--experience-copy-size);line-height:1.85}
.experience-details p:first-child{margin-top:0}
.experience-content:focus-visible{outline:2px solid var(--ink);outline-offset:-5px}
@media(max-width:1100px) and (min-width:901px){.experience-content{--experience-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(0,1fr);--experience-gap:15px}}
@media(max-width:560px){.experience-content{--experience-company-size:22px;--experience-copy-size:13px;--experience-meta-size:11px;--experience-columns:repeat(2,minmax(0,1fr));--experience-gap:15px}.table-heading{display:none}.experience-entry{padding:20px 0;row-gap:12px}.experience-details{grid-column:1/-1;margin-top:4px}}

/* Quiet feedback on the same titlebars used for dragging and keyboard movement. */
.window-titlebar{transition:background-color .14s ease}
.window-titlebar:focus-visible{background:#00000008}
.desktop-window[data-active=false] .window-titlebar .window-square{opacity:.5}
.reset-layout{min-height:32px;padding:4px 0}
.reset-layout:active{transform:translateY(1px)}
.window-content:focus-visible{outline:2px solid var(--ink);outline-offset:-5px}
@media(hover:hover){.window-titlebar:hover{background:#00000006}.reset-layout:hover{text-decoration:underline;text-underline-offset:4px}}
@media(prefers-reduced-motion:reduce){.window-titlebar{transition:none}}

/* Desktop panels share the space remaining in the first screen. */
@media(min-width:901px){
  body{--about-nav-height:52px;--about-heading-height:clamp(86px,11.5svh,124px);--about-tools-height:42px;--window-floor:16px;--skills-top:clamp(32px,5.5svh,70px);--profile-top:clamp(70px,10.5svh,120px)}
  .page-nav{height:var(--about-nav-height);min-height:0;padding:0 32px;align-items:center}
  .page-heading{height:var(--about-heading-height);padding:12px 24px 20px;display:flex;align-items:center}
  .page-heading h1{width:100%;font-size:clamp(48px,6.3svh,74px)}
  .page-heading p{bottom:22px}
  .workspace-tools{height:var(--about-tools-height);padding:0 24px 10px}
  .workspace{height:calc(100svh - var(--about-nav-height) - var(--about-heading-height) - var(--about-tools-height));min-height:0}
  .desktop-window{min-height:0}
  .profile-window{top:var(--profile-top);height:calc(100% - var(--profile-top) - var(--window-floor))}
  .skills-window{top:var(--skills-top);height:calc(100% - var(--skills-top) - var(--window-floor))}
  .experience-window{height:calc(100% - var(--window-floor))}
  .profile-content,.experience-content{flex:1;min-height:0;max-height:none}
  .skills-content{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:clamp(8px,1.1svh,13px);flex:1;min-height:0;max-height:none;overflow:visible;padding:clamp(12px,1.5svh,18px) 14px}
  .skills-content>h2{margin:0;font-size:clamp(30px,3.5svh,42px);line-height:1.2}
  .skills-list{display:grid;grid-template-rows:repeat(4,minmax(min-content,1fr));min-height:0}
  .skills-list>li{grid-template-columns:28px minmax(0,1fr);gap:10px;padding:clamp(6px,.95svh,13px) 0}
  .skills-list h3{font-size:clamp(21px,2.7svh,30px);line-height:1.25}
  .skills-list h3 small{font-size:11px;margin-left:6px}
  .skills-list p{margin-top:4px;font-size:clamp(12px,1.3svh,14px);line-height:1.65}
  .skill-number{padding-top:3px;font-size:11px}
  .skills-note{grid-template-columns:82px minmax(0,1fr);gap:18px;margin-top:0;padding-top:clamp(10px,1.4svh,17px)}
  .skills-note>p{font-size:clamp(17px,2.1svh,23px);line-height:1.4}
}
@media(min-width:901px) and (max-height:700px){
  body{--skills-top:22px;--profile-top:48px;--window-floor:12px}
  .skills-content{gap:8px;padding:10px 14px}
  .skills-content>h2{font-size:28px}
  .skills-list{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(min-content,1fr));column-gap:20px}
  .skills-list>li{grid-template-columns:24px minmax(0,1fr);gap:8px;padding:7px 0}
  .skills-list h3{font-size:21px}
  .skills-list h3 small{display:block;margin:3px 0 0;font-size:10px}
  .skills-list p{font-size:12px;line-height:1.55}
  .skills-note{padding-top:8px}
  .skills-note>p{font-size:16px}
}

/* The portrait keeps the same horizontal crop as the profile reference. */
.profile-photo{margin:24px 0 22px}
.profile-photo-surface{position:relative;aspect-ratio:3/2;overflow:hidden;background:#eeeeec}
.profile-photo-surface img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.profile-photo-surface img[hidden]{display:none}
.profile-photo figcaption{margin-top:8px;font-size:10px;line-height:1.5;color:#777}
.profile-photo figcaption[hidden]{display:none}
.profile-link-pending{color:#777;font-size:13px}
@media(max-width:560px){
  .profile-identity{display:block}
  .profile-photo{margin:20px 0 0}
  .profile-photo-surface{aspect-ratio:3/2}
  .profile-link-pending{font-size:12px}
}
