/* Personal layer: original Work layout and fonts remain in work.css. */
/* Source timing: content out 400ms, swap after 500ms, content in 800ms with a 300ms delay.
   The header, R logo, document, and background stay mounted throughout. */
.route-leaving main,.route-leaving #footer{opacity:0;transition:opacity 400ms cubic-bezier(.18,.06,.23,1)}
.route-entering main{opacity:1;transition:opacity 800ms cubic-bezier(.18,.06,.23,1) 300ms}
.route-entering #footer{opacity:1;transition:opacity 600ms cubic-bezier(.18,.06,.23,1)}
.route-changing #scroll-content{background:transparent}
.route-changing .mode-switch{opacity:0;pointer-events:none;transform:translate(-50%,80px)}
.about-atmosphere{opacity:0;transition:opacity 800ms cubic-bezier(.18,.06,.23,1)}
[data-page=about] .about-atmosphere{opacity:1}
@media(prefers-reduced-motion:reduce){.route-leaving main,.route-leaving #footer{opacity:1}}
html[data-page=about]{font-family:'TT Norms Regular','PingFang SC','Microsoft YaHei',sans-serif}
.header-caption{margin-left:auto;font-size:12px;letter-spacing:.02em}.menu-caption{margin-top:80px;color:#999;line-height:2;font-size:14px}.main-nav{margin-left:calc(26.31% - 10px)}.nav-underline{left:0}.eyebrow,.section-index{font-size:11px;line-height:1.5;letter-spacing:.06em}.eyebrow{margin-bottom:26px}.personal-footer{padding-top:160px!important;padding-bottom:32px!important}.footer-signoff{display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:110px}.footer-signoff p{font-family:'TT Norms ExtraLight',sans-serif;font-size:clamp(40px,5vw,90px);line-height:1.05;letter-spacing:-.04em}.footer-signoff>a{font-size:16px;display:flex;gap:35px;align-items:center}.footer-signoff>a span{font-size:32px}.personal-footer .footer-bottom{border-top:1px solid currentColor;padding-top:25px;font-size:12px}.personal-footer .footer-bottom>span{opacity:.45}.personal-footer .footer-bottom nav{margin:0;gap:35px}.back-to-top{border-bottom:1px solid transparent}.back-to-top:hover{border-color:currentColor}
.personal-wordmark{width:auto;height:40px;white-space:nowrap;font-size:27px;letter-spacing:.08em;display:flex;align-items:center;font-family:'TT Norms Regular',sans-serif;animation:wordmark-recede 1s 1.5s var(--slide) both}.personal-wordmark span{display:inline-block;animation:personal-letter-enter 1s var(--sweep) both;animation-delay:calc(var(--i)*40ms + 40ms)}
@keyframes personal-letter-enter{0%{transform:translateY(40px);opacity:0}35%{opacity:0}100%{transform:translateY(0);opacity:1}}
[data-page=about]{--surface:#121212;--foreground:#eee;color-scheme:dark}[data-page=about] #scroll-content{background:transparent}[data-page=about] body{background:#121212}.about-atmosphere{position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 70% 72%,#49495c38 0,transparent 45%),radial-gradient(ellipse at 42% 60%,#47374129 0,transparent 45%)}.about-page{position:relative}.about-hero{padding-top:200px;min-height:1030px;position:relative}.about-title-wrap{position:relative;width:100%;padding-left:23.68%}.about-title-wrap .eyebrow{color:#8e8e8e;margin-bottom:26px}.about-title{font-family:'TT Norms ExtraLight',sans-serif;font-size:clamp(72px,7.5vw,144px);line-height:1.04;letter-spacing:-.045em}.about-title span{display:block}.about-title span+span{color:#a3a3a3}.about-prose{width:36.84%;margin-left:55.26%;margin-top:80px;padding-bottom:120px;font-size:15px;line-height:2.15;letter-spacing:.035em;color:#c2c2c2}.about-prose p+p{margin-top:32px}.hero-bottom{border-bottom:1px solid #ffffff26;padding-block:25px;display:flex;justify-content:space-between;font-size:11px;color:#888}.hero-bottom a{color:#ccc}.editorial-section{position:relative;display:grid;grid-template-columns:26.31% 1fr;padding-block:150px 40px;gap:0}.section-heading{position:relative;padding-right:30px;align-self:start}.section-heading h2{font-family:'TT Norms ExtraLight',sans-serif;font-size:clamp(35px,3.5vw,62px);line-height:1.1;letter-spacing:-.035em;margin-top:22px}.section-heading .section-index{color:#777}.section-heading>p{font-size:13px;line-height:1.9;color:#aaa;margin-top:35px;letter-spacing:.03em}.section-note,.sample-label{display:inline-block;font-size:10px;line-height:1.5;letter-spacing:.03em;color:#888;margin-top:35px}.sample-label{border:1px solid #ffffff26;padding:5px 8px}.section-body{min-width:0}.article-row{position:relative;display:grid;grid-template-columns:55px 1fr 45px;column-gap:20px;padding:30px 0 42px;border-top:1px solid #ffffff30;transition:opacity .5s var(--out)}.article-row:last-child{border-bottom:1px solid #ffffff30}.article-number{font-family:'TT Norms Light',sans-serif;font-size:13px;color:#777}.article-category{font-size:11px;color:#888;letter-spacing:.02em}.article-row h3{font-size:clamp(19px,1.9vw,34px);font-weight:400;line-height:1.65;letter-spacing:.01em;margin-top:22px;max-width:850px}.article-bottom{margin-top:26px;color:#777;font-size:10px}.article-arrow{font-family:'TT Norms ExtraLight',sans-serif;font-size:32px;line-height:1;transition:transform .65s var(--sweep)}.article-row:hover .article-arrow{transform:translate(5px,-5px)}.timeline-row{display:grid;grid-template-columns:26% 1fr;gap:30px;border-top:1px solid #ffffff30;padding-block:32px 65px}.timeline-row:last-child{border-bottom:1px solid #ffffff30}.timeline-date{font-size:13px;color:#aaa}.timeline-kind{font-size:11px;color:#777}.timeline-row h3{font-size:23px;line-height:1.5;margin-top:18px}.timeline-organization{font-size:12px;color:#aaa;margin-top:12px}.timeline-description{font-size:14px;line-height:2;color:#999;max-width:550px;margin-top:25px}.hackathon-section{padding-block:180px 40px}.hackathon-intro{display:grid;grid-template-columns:26.31% 1fr;align-items:start}.hackathon-intro>.section-index{color:#777;padding-top:12px}.hackathon-intro h2{font-family:'TT Norms ExtraLight',sans-serif;font-size:clamp(56px,7vw,120px);letter-spacing:-.045em;line-height:1.03}.hackathon-intro .sample-label{grid-column:2;justify-self:start;margin-top:25px}.hackathon-card{position:relative;margin-top:65px;background:#d6d5cd;color:#282a25;padding:40px;display:grid;grid-template-columns:1fr 1fr;gap:50px;min-height:410px;align-items:end;overflow:hidden}.hackathon-mark{font-family:'TT Norms ExtraLight',sans-serif;font-size:clamp(120px,22vw,400px);line-height:.8;letter-spacing:-.08em;padding-bottom:15px}.hackathon-mark small{font-family:'TT Norms Regular',sans-serif;font-size:11px;letter-spacing:.15em;display:block;margin-top:30px}.hackathon-card .section-index{position:absolute;top:30px;left:40px;color:#5f6258}.hackathon-copy{max-width:430px;padding-bottom:15px}.hackathon-copy h3{font-family:'TT Norms Light',sans-serif;font-size:32px;line-height:1.1}.hackathon-copy p{font-size:14px;line-height:1.9;margin-top:30px;color:#595c53}.hackathon-meta{font-size:11px;border-top:1px solid #252a2c30;margin-top:35px;padding-top:20px;display:flex;justify-content:space-between;gap:20px}.social-section{padding-bottom:100px}.social-links{display:grid;grid-template-columns:1fr 1fr;gap:8%}.social-entry{border-top:1px solid #ffffff30;padding-top:30px}.social-entry .section-index{color:#777}.social-entry h3{font-size:clamp(25px,2.8vw,46px);line-height:1.3;margin-top:35px;font-family:'TT Norms Light','PingFang SC',sans-serif;letter-spacing:-.025em;position:relative}.social-entry p{font-size:12px;color:#888;margin-top:25px;line-height:1.8}.social-entry>a{display:block}.social-arrow{float:right}.text-link,.qr-toggle{display:inline-flex;gap:30px;font-size:12px;margin-top:35px;border-bottom:1px solid #ffffff50;padding-bottom:5px}.qr-toggle{align-items:center}.qr-fold{margin-top:24px}.qr-fold[hidden]{display:none}.qr-fold img{width:172px;height:172px;background:#fff;padding:8px;border-radius:2px}.qr-fold>p{font-size:10px;margin-top:14px}.github-entry{display:flex;justify-content:space-between;align-items:center;gap:20px;border-block:1px solid #ffffff30;padding-block:26px;margin-top:80px;font-size:13px}.github-entry>span:first-child{font-size:10px;color:#888}.about-page+.personal-footer{padding-top:60px!important}
[data-reveal]{transition:opacity 1s var(--out),transform 1.2s var(--sweep);transition-delay:var(--reveal-delay,0ms)}.motion-enabled [data-reveal]:not(.is-revealed){opacity:0;transform:translateY(35px)}.is-ready .about-title-wrap .eyebrow{transition-delay:.1s}.is-ready .about-title{transition-delay:.2s}
@media(min-width:1280px){.about-hero{padding-top:14vw}.about-prose{font-size:1.05vw}.editorial-section{padding-top:12vw}.hackathon-section{padding-top:14vw}}
@media(min-width:1920px){.about-prose{font-size:20px}.editorial-section{padding-top:230px}.hackathon-section{padding-top:270px}.about-hero{padding-top:268px}.about-title{font-size:144px}}
@media(max-width:1023px){.about-title-wrap{padding-left:12%}.about-prose{width:50%;margin-left:46%;font-size:14px}.editorial-section{grid-template-columns:28% 1fr}.article-row{grid-template-columns:30px 1fr 25px;gap:12px}.article-row h3{font-size:21px}.timeline-row{grid-template-columns:1fr;gap:16px}.hackathon-card{min-height:360px;padding:30px}.social-links{gap:30px}.personal-footer .footer-bottom nav{gap:20px}}
@media(max-width:768px){.eyebrow{font-size:9px;margin-bottom:25px}.personal-footer{padding-top:100px!important;padding-bottom:30px!important}.footer-signoff{display:block;padding-bottom:65px}.footer-signoff p{font-size:48px}.footer-signoff>a{margin-top:30px;display:inline-flex;gap:20px;font-size:13px}.footer-signoff>a span{font-size:23px}.personal-footer .footer-bottom{flex-direction:column-reverse;gap:30px;font-size:10px}.personal-footer .footer-bottom nav{display:flex;flex-wrap:wrap;gap:25px;font-size:12px}.personal-footer .footer-bottom nav a+a{margin:0}.about-hero{padding-top:155px;min-height:0}.about-title-wrap{padding-left:0}.about-title{font-size:clamp(48px,9vw,80px);line-height:1.07;letter-spacing:-.04em}.about-title-wrap .eyebrow{font-size:10px;margin-bottom:30px}.about-prose{width:auto;margin:65px 0 0 20%;padding-bottom:65px;font-size:13px;line-height:2.15;letter-spacing:.02em}.about-prose p+p{margin-top:25px}.hero-bottom{align-items:flex-end;gap:20px;line-height:1.6;font-size:9px;padding-block:20px}.hero-bottom>span{max-width:180px}.hero-bottom>a{flex-shrink:0}.editorial-section{display:block;padding-top:95px;padding-bottom:0}.section-heading{padding:0;margin-bottom:45px}.section-heading h2{font-size:42px;margin-top:15px}.section-heading>p{font-size:12px;margin-top:20px}.section-index{font-size:10px}.section-heading .section-note,.section-heading .sample-label{margin-top:20px}.article-row{grid-template-columns:25px 1fr 25px;gap:10px;padding-top:24px;padding-bottom:32px}.article-row h3{font-size:19px;line-height:1.7;margin-top:18px}.article-number{font-size:11px}.article-category{font-size:10px}.article-arrow{font-size:26px}.article-bottom{margin-top:20px}.timeline-row{grid-template-columns:1fr;gap:18px;padding-block:25px 38px}.timeline-row h3{font-size:21px;margin-top:12px}.timeline-description{font-size:13px;margin-top:20px}.timeline-date{font-size:11px}.hackathon-section{padding-top:100px}.hackathon-intro{display:block}.hackathon-intro h2{font-size:clamp(46px,9vw,65px);margin-top:30px}.hackathon-intro .sample-label{margin-top:25px}.hackathon-card{margin-top:40px;grid-template-columns:1fr;gap:45px;padding:60px 25px 25px}.hackathon-mark{font-size:160px;padding:25px 0 0}.hackathon-mark small{font-size:10px;margin-top:25px}.hackathon-card .section-index{left:25px;top:22px;font-size:9px}.hackathon-copy h3{font-size:29px}.hackathon-copy p{font-size:13px;margin-top:22px}.hackathon-meta{font-size:10px;margin-top:25px}.social-section{padding-bottom:80px}.social-links{gap:40px;grid-template-columns:1fr}.social-entry h3{font-size:32px;margin-top:25px}.social-entry{padding-top:25px}.social-entry p{margin-top:18px}.github-entry{margin-top:50px;align-items:flex-start;flex-direction:column;gap:12px}.about-page+.personal-footer{padding-top:40px!important}.about-atmosphere{background:radial-gradient(ellipse at 90% 60%,#49495c25 0,transparent 65%)}.personal-wordmark{font-size:24px}}
@media(prefers-reduced-motion:reduce){.motion-enabled [data-reveal]:not(.is-revealed){opacity:1;transform:none}.personal-wordmark span{animation:none}}
/* Shared desktop navigation spacing must not indent links in the mobile menu. */
.mobile-menu .nav-link{margin-left:0}
/* Original Work footer proportions, with personal copy only. */
.footer-note{font-size:14px;line-height:1.6;margin-top:12px}
@media(min-width:769px){.footer-note{font-size:16px;line-height:1.4;margin-top:10px}}
/* Keep the wordmark centered while its depth transition runs. */
.personal-wordmark{animation-name:personal-wordmark-recede}
@keyframes personal-wordmark-recede{0%{transform:translate(-50%,-50%) perspective(1000px) translateZ(0);opacity:1}20%{opacity:1}70%,100%{transform:translate(-50%,-50%) perspective(1000px) translateZ(-100px);opacity:0}}

/* Center the two-link navigation in the viewport on both routes. */
.main-nav{position:absolute;left:50%;transform:translateX(-50%);margin:0}
/* All: three standard covers followed by one full-width cover. Filtered views retain the original grid rules. */
@media(min-width:769px){[data-page=work] .visual-grid.is-all .visual-card.is-fullwidth{width:calc(100% - 1.38vw)}}

/* Reserved portrait area, independent of the Work page. */
.about-portrait{position:absolute;top:clamp(260px,22vw,410px);left:var(--gutter);width:20%;max-width:340px;margin:0;aspect-ratio:3/4}
.about-portrait img{width:100%;height:100%;object-fit:cover}
@media(min-width:769px) and (max-width:1279px){.about-title-wrap{padding-left:26.31%}}
@media(max-width:768px){.about-portrait{position:relative;top:auto;left:auto;width:52%;max-width:300px;margin:40px 0 0}.about-prose{margin-top:45px}}
