:root{--type-caption:12px;--type-small:14px;--type-body:16px;--type-subheading:20px;--type-heading:24px;--type-section:32px;--type-title:48px;--type-display:64px;--bg:#101210;--panel:#181b18;--panel2:#1e221e;--text:#ecefe8;--muted:#929b90;--lime:#c3f36b;--line:#30362e;--soft:#b6beb3;--radius:16px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:104px}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;-webkit-font-smoothing:antialiased;font-size:var(--type-small);line-height:1.7}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}::selection{background:var(--lime);color:var(--bg)}:focus-visible{outline:2px solid var(--lime);outline-offset:6px}button:focus-visible{outline-offset:3px}.wrap{max-width:1200px;margin:0 auto;padding-left:40px;padding-right:40px}.lime{color:var(--lime)}.muted{color:var(--muted)}.skip{position:fixed;top:-100px;left:20px;background:var(--lime);color:var(--bg);z-index:100;padding:12px 20px}.skip:focus{top:12px}.site-header{position:sticky;top:0;z-index:20;background:rgba(16,18,16,.96);border-bottom:1px solid var(--line)}.nav-wrap{max-width:1200px;height:88px;margin:auto;padding:0 40px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:inline-flex;align-items:center;gap:10px;font-size:var(--type-subheading);font-weight:650;letter-spacing:-.8px;white-space:nowrap}.brand-light{font-weight:400;color:#a5aea0;margin-left:3px}.brand-mark{width:36px;height:36px;border-radius:50%;background:var(--lime);color:#171c13;display:grid;place-items:center;font-weight:750;font-size:var(--type-heading);letter-spacing:-3px;padding-right:3px;line-height:1}.nav-wrap nav{display:flex;gap:34px;font-size:var(--type-small);color:var(--soft);margin-left:auto;margin-right:40px}.nav-wrap a:hover{color:var(--lime)}.nav-wrap nav span{font-size:var(--type-caption);color:var(--muted)}.nav-contact{display:flex;gap:13px;align-items:center;border:1px solid #41483b;padding:8px 18px;border-radius:99px;font-size:var(--type-caption)}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--lime);flex-shrink:0}.hero{padding-top:66px}.hero-meta{display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:var(--type-caption);line-height:1.6;letter-spacing:1.6px;font-weight:500;color:var(--muted);display:inline-flex;gap:10px;align-items:center}.hero-meta .eyebrow{color:var(--soft)}.hero-location{font-size:var(--type-caption);letter-spacing:1.5px;color:var(--muted)}.hero-location span{margin-left:18px;color:var(--lime)}h1,h2,h3,h4,p{margin:0}.hero h1{font-size:var(--type-display);font-weight:600;letter-spacing:-3px;line-height:1.27;margin:39px 0 38px}.hero-word{color:var(--lime);white-space:nowrap}.star{font-size:var(--type-display);vertical-align:top;display:inline-block;line-height:1.1;margin-left:32px;font-weight:400}.hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:35px}.hero-bottom>div>p{font-size:var(--type-body);color:var(--soft);line-height:1.95}.primary-button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;border-radius:6px;background:var(--lime);color:#1b2413;padding:12px 20px;font-size:var(--type-small);font-weight:600;margin-top:24px;transition:background .15s}.primary-button:hover{background:#d5ff8d}.hero-aside{padding-left:26px;border-left:1px solid var(--line);margin-bottom:3px}.hero-aside>span{font-size:var(--type-caption);letter-spacing:1.4px;color:var(--muted)}.hero-aside p{margin-top:11px;font-size:var(--type-small) !important;color:var(--text)!important}.hero-aside i{font-style:normal;font-size:var(--type-caption);color:#5f6959;margin:0 7px}.hero-disciplines{font-size:var(--type-caption);color:var(--muted);margin-top:6px}.hero-disciplines b{margin:0 5px;font-weight:400}.hero-end{border-top:1px solid var(--line);margin-top:49px;padding-top:18px;display:flex;justify-content:space-between;color:#727e6d;font-size:var(--type-caption);letter-spacing:1.2px}.work-section{padding-top:87px;padding-bottom:86px}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:30px}.section-head h2{font-size:var(--type-section);font-weight:550;letter-spacing:-1px;line-height:1.4;margin-top:9px}.section-dot{color:var(--lime);margin-left:3px}.filters{display:flex;gap:5px;flex-wrap:wrap;padding-bottom:4px}.filters button{border:1px solid transparent;border-radius:99px;padding:8px 15px;color:var(--muted);background:transparent;font-size:var(--type-caption)}.filters button:hover{color:var(--text)}.filters button.active{background:#22291c;border-color:#495736;color:var(--lime)}.filters button span{font-size:var(--type-caption);margin-left:5px;opacity:.6}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.project{display:block;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}.project:hover{border-color:#68795b}.project[hidden]{display:none}.project.featured{grid-column:1/-1;display:grid;grid-template-columns:1.18fr 1fr}.featured[hidden]{display:none}.project-cover{overflow:hidden;min-width:0}.featured .project-cover{border-right:1px solid var(--line)}.project-copy{padding:28px 30px 32px;position:relative}.featured .project-copy{padding:33px 36px;display:flex;flex-direction:column}.project-meta{font-size:var(--type-caption);letter-spacing:1.3px;display:flex;justify-content:space-between;color:var(--muted);gap:10px}.project-meta>span:last-child{color:#707b69}.project h3{font-size:var(--type-heading);font-weight:550;line-height:1.5;letter-spacing:-.5px;margin-top:17px}.featured h3{font-size:var(--type-section);line-height:1.45;margin-top:25px}.project-copy>p{color:var(--muted);font-size:var(--type-caption);margin:13px 0 24px;max-width:330px}.featured .project-copy>p{margin-top:17px;margin-bottom:25px}.project-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-right:27px}.project-tags>span{border:1px solid #3a4234;font-size:var(--type-caption);border-radius:4px;padding:3px 8px;color:#a7b09f}.project-tags>.draft-label,.draft-label{border:0;color:#858e80;font-size:var(--type-caption);letter-spacing:.2px}.project-arrow{position:absolute;bottom:32px;right:30px;color:var(--soft);font-size:var(--type-subheading);line-height:1}.featured .project-arrow{bottom:37px;right:36px}.work-note{font-size:var(--type-caption);color:#7d8876;margin-top:22px;display:flex;align-items:center;gap:9px}.work-note>span{color:var(--lime)}.cover-scene{height:300px;position:relative;overflow:hidden;border-bottom:1px solid var(--line);user-select:none}.featured .cover-scene{height:100%;min-height:365px;border-bottom:0}.scene-top{position:absolute;top:23px;left:25px;right:25px;display:flex;justify-content:space-between;font-size:var(--type-caption);letter-spacing:1.3px;color:#88997a;z-index:2}.cover-note{position:absolute;bottom:16px;left:25px;font-size:var(--type-caption);letter-spacing:.7px;opacity:.65;color:#a0ac94;z-index:3}.game-scene{background:radial-gradient(ellipse at 70% 20%,#33432a 0,transparent 65%),#20291d}.game-orbit{position:absolute;border:1px solid #435535;width:340px;height:340px;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}.orbit-two{width:240px;height:240px;border-style:dashed;opacity:.6}.game-tile{position:absolute;border:1px solid #526343;border-radius:12px;background:#273221;box-shadow:0 15px 40px #0d150e45;padding:19px 21px;display:flex;flex-direction:column;gap:9px}.tiny-label{font-size:var(--type-caption);letter-spacing:1.2px;color:#8fa27e}.game-tile strong{font-size:var(--type-subheading);font-weight:500;color:#d0ddc5}.tile-one{width:185px;top:27%;left:12%;transform:rotate(-6deg)}.mini-line{display:block;width:65px;height:4px;border-radius:2px;background:#697f55;margin-top:5px}.tile-two{width:230px;top:40%;right:9%;background:#c3f36b;transform:rotate(4deg);border-color:#d6f7a0;z-index:2}.tile-two strong{color:#26341c;font-size:var(--type-heading)}.tile-two .tiny-label{color:#5d763f}.tile-two b{font-weight:400;margin-left:20px}.tile-bars{display:flex;gap:5px;margin-top:8px}.tile-bars i{height:5px;background:#9dca55;border-radius:3px;width:45px}.tile-bars i:first-child{background:#556f30}.tile-three{left:17%;bottom:17%;display:flex;align-items:center;flex-direction:row;gap:14px;padding:10px 18px;transform:rotate(-3deg)}.tile-three>span{color:var(--lime);font-size:var(--type-heading);line-height:1.2}.tile-three strong{font-size:var(--type-caption)}.motion-scene{background:radial-gradient(ellipse at 70% 0,#393344,transparent 75%),#25232b}.motion-scene .scene-top{color:#a497b1}.motion-grid{display:flex;gap:14px;justify-content:center;align-items:center;position:absolute;inset:70px 25px 68px}.motion-frame{height:125px;width:120px;border:1px solid #655a70;border-radius:9px;background:#2e2b35;position:relative;display:grid;place-items:center}.motion-frame i{width:42px;height:42px;background:#bca8d4;border-radius:10px}.motion-frame span{position:absolute;bottom:10px;font-size:var(--type-caption);color:#a798b3;letter-spacing:2px}.f1{transform:rotate(-6deg);opacity:.6}.f1 i{width:23px;height:23px;border-radius:50%;opacity:.5}.f2{z-index:2}.f2 i{transform:rotate(-25deg);border-radius:14px 14px 8px 14px}.f3{transform:rotate(6deg)}.f3 i{width:65px;height:27px;border-radius:30px;background:#c9b8de}.timeline{position:absolute;left:45px;right:45px;bottom:49px;height:10px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #675e71}.timeline i{width:1px;height:7px;background:#675e71;margin-top:-10px}.motion-scene .cover-note{color:#a999b7}.finance-scene{background:radial-gradient(ellipse at 80% 10%,#303f47,transparent 75%),#202c32}.finance-scene .scene-top{color:#93aab4}.finance-panels{position:absolute;inset:78px 38px 60px;display:flex;align-items:center;justify-content:center;gap:16px}.finance-panels>div{width:180px;height:140px;border:1px solid #4e6671;background:#293942;border-radius:9px;padding:17px 18px}.finance-panels>div:nth-child(2){transform:translateY(14px);background:#abc4ce;color:#253e49;box-shadow:0 12px 30px #15262c70}.finance-panels span{font-size:var(--type-caption);letter-spacing:1px;color:#99b3c0}.finance-panels>div:nth-child(2)>span{color:#516f7e}.finance-panels strong{display:block;font-size:var(--type-small);font-weight:500;margin-top:7px;white-space:nowrap}.finance-panels strong b{margin-left:5px;font-size:var(--type-body);font-weight:400}.finance-lines{margin-top:18px;display:grid;gap:9px}.finance-lines i{width:100%;height:5px;background:#536b77;border-radius:5px}.finance-lines i:last-child{width:60%}.finance-path{display:flex;gap:20px;margin-top:23px}.finance-path i{width:11px;height:11px;background:#4d7e93;border-radius:50%;position:relative}.finance-path i:not(:last-child):after{content:"";position:absolute;width:21px;height:1px;background:#7193a1;top:5px;left:11px}.finance-scene .cover-note{color:#94aab3}.about-section{padding-top:60px;padding-bottom:80px;border-top:1px solid var(--line)}.about-intro{display:grid;grid-template-columns:1fr 1.2fr;gap:85px}.about-intro h2{font-size:var(--type-title);letter-spacing:-1.5px;line-height:1.5;font-weight:550;margin-top:20px}.text-link{display:inline-flex;gap:30px;align-items:center;color:var(--soft);font-size:var(--type-caption);border-bottom:1px solid #5c6653;padding-bottom:5px}.text-link:hover{color:var(--lime);border-color:var(--lime)}.about-intro .text-link{margin-top:27px}.about-content{padding-top:3px}.about-name{display:block;font-size:var(--type-body);font-weight:500}.about-name>span{font-size:var(--type-caption);color:var(--muted);font-weight:400;margin-left:17px}.about-content>.about-statement{font-size:var(--type-heading);line-height:1.7;color:var(--text);margin:21px 0;letter-spacing:.2px}.about-content>p{font-size:var(--type-small);color:var(--muted);line-height:1.95}.capability-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.capability-tags span{font-size:var(--type-caption);padding:4px 11px;background:#20251c;border:1px solid #35402e;color:#b0be9f;border-radius:4px}.experience-header{margin-top:64px;display:flex;align-items:center;justify-content:space-between;padding-bottom:17px;border-bottom:1px solid var(--line)}.experience-header h3{font-size:var(--type-subheading);font-weight:500}.experience-header>span{font-size:var(--type-caption);letter-spacing:1.5px;color:var(--muted)}.experience-item{display:grid;grid-template-columns:225px 1fr;gap:25px;border-bottom:1px solid var(--line);padding:27px 0}.experience-item time{font-size:var(--type-caption);color:var(--muted);padding-top:6px;letter-spacing:.2px}.experience-item h4{font-size:var(--type-subheading);font-weight:500}.experience-item h4 span{font-size:var(--type-caption);color:var(--muted);font-weight:400;margin-left:22px}.experience-item p{color:var(--muted);font-size:var(--type-caption);line-height:1.9;margin-top:7px;max-width:650px}.education-row{display:grid;grid-template-columns:225px 1fr 1fr;gap:25px;margin-top:32px}.education-row h3{font-size:var(--type-body);font-weight:500;margin-top:3px}.education-row h4{font-size:var(--type-body);font-weight:500}.education-row p{font-size:var(--type-caption);color:var(--muted);margin-top:5px}.education-row p span{display:block;font-size:var(--type-caption);margin-top:5px;color:#778370}.education-row .eyebrow{font-size:var(--type-caption)}.contact-section{border-top:1px solid var(--line);padding:62px 0 69px;display:flex;justify-content:space-between;gap:40px}.contact-heading h2{font-size:var(--type-title);line-height:1.45;font-weight:550;letter-spacing:-1.5px;margin-top:20px}.contact-right{padding-top:42px;min-width:370px}.contact-kicker{display:flex;align-items:center;gap:10px;font-size:var(--type-caption);color:var(--soft)}.contact-right>p{font-size:var(--type-caption);color:var(--muted);margin-top:14px}.email-link{display:flex;align-items:center;justify-content:space-between;gap:30px;font-size:var(--type-heading);letter-spacing:-.4px;margin-top:21px;padding-bottom:13px;border-bottom:1px solid #48513f}.email-link span{font-size:var(--type-heading);color:var(--lime)}.email-link:hover{color:var(--lime)}.copy-button{border:0;color:var(--muted);background:none;padding:12px 0 0;font-size:var(--type-caption);display:inline-flex;gap:12px;align-items:center}.copy-button:hover{color:var(--lime)}.copy-result{font-size:var(--type-caption);color:var(--lime);margin-left:15px}.footer{padding:25px 0 31px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:var(--type-caption)}.footer .brand{font-size:var(--type-subheading);color:var(--text);gap:0}.footer-point{font-size:var(--type-subheading);color:var(--lime);margin-left:13px}.footer>a:last-child:hover{color:var(--lime)}.detail{padding-top:45px;padding-bottom:60px}.back-link{font-size:var(--type-caption);color:var(--muted);display:inline-block}.back-link:hover{color:var(--lime)}.detail-top{display:flex;align-items:center;justify-content:space-between;margin-top:64px}.detail h1,.resume-page h1{font-size:var(--type-title);font-weight:550;letter-spacing:-2px;line-height:1.4;margin-top:15px}.detail-meta{font-size:var(--type-caption);color:var(--muted);margin-top:20px}.detail-cover{margin-top:42px;border:1px solid var(--line);border-radius:14px;overflow:hidden}.detail-cover .cover-scene{height:440px;border-bottom:0}.detail-cover .game-tile.tile-one{left:26%;top:26%;width:240px}.detail-cover .game-tile.tile-two{right:25%;top:42%;width:280px}.detail-cover .game-tile.tile-three{left:30%;bottom:15%}.detail-cover .game-orbit{width:400px;height:400px}.detail-cover .orbit-two{width:300px;height:300px}.detail-cover .motion-frame{width:180px;height:190px}.detail-cover .motion-grid{gap:35px}.detail-cover .finance-panels{gap:28px}.detail-cover .finance-panels>div{width:270px;height:210px;padding:28px}.detail-cover .finance-panels strong{font-size:var(--type-heading)}.detail-cover .finance-lines{margin-top:30px}.detail-cover .finance-path{margin-top:40px}.detail-overview{display:grid;grid-template-columns:225px 1fr;gap:25px;margin-top:62px}.detail-overview h2{font-size:var(--type-heading);font-weight:500}.detail-overview p{font-size:var(--type-small);line-height:2.1;color:var(--soft)}.coming-soon{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:35px;display:flex;gap:28px;align-items:center;margin-top:50px}.coming-icon{font-size:var(--type-heading);font-weight:300;color:var(--lime)}.coming-soon h2{font-size:var(--type-heading);font-weight:500;margin:8px 0}.coming-soon p{font-size:var(--type-caption);color:var(--muted)}.coming-soon .text-link{margin-left:auto;white-space:nowrap;font-size:var(--type-caption)}.next-project{display:flex;flex-direction:column;padding:35px 0;border-top:1px solid var(--line);margin-top:55px;gap:10px}.next-project>span{font-size:var(--type-caption);letter-spacing:1px;color:var(--muted)}.next-project strong{font-weight:400;font-size:var(--type-heading);display:flex;justify-content:space-between}.next-project strong>span{color:var(--lime)}.resume-page{padding-top:44px;padding-bottom:85px;max-width:1000px}.resume-tools{display:flex;align-items:center;justify-content:space-between;margin-bottom:60px}.outline-button{border:1px solid var(--line);background:transparent;border-radius:6px;color:var(--soft);padding:9px 15px;font-size:var(--type-caption)}.outline-button:hover{border-color:var(--lime);color:var(--lime)}.resume-page>h1{margin-top:16px;font-size:var(--type-display)}.resume-subtitle{font-size:var(--type-body);color:var(--soft);margin-top:15px}.resume-summary{font-size:var(--type-small);color:var(--muted);margin-top:24px;line-height:2;max-width:770px}.resume-page>.text-link{margin-top:24px}.resume-page>h2{margin-top:55px;padding-bottom:17px;border-bottom:1px solid var(--line);font-weight:500;font-size:var(--type-heading)}.resume-education{display:grid;grid-template-columns:1fr 1fr;gap:25px;padding-top:25px}.resume-education h3{font-size:var(--type-subheading);font-weight:500}.resume-education p{color:var(--soft);font-size:var(--type-small);margin-top:8px}.resume-education time{color:var(--muted);font-size:var(--type-caption);display:block;margin-top:5px}.resume-page>h2+ p{padding-top:20px;color:var(--muted)}.not-found{padding-top:110px;padding-bottom:100px}.not-found h1{font-size:var(--type-display);line-height:1.4;margin-top:20px;letter-spacing:-2px}
@media(min-width:1500px){.hero h1{font-size:var(--type-display)}.hero{padding-top:76px}}
@media(max-width:900px){.wrap{padding-left:28px;padding-right:28px}.nav-wrap{padding:0 28px;height:76px}.nav-wrap nav{gap:22px;margin-right:14px}.hero{padding-top:45px}.hero h1{font-size:var(--type-display);letter-spacing:-2px}.hero-aside{max-width:300px}.hero-aside p{font-size:var(--type-caption) !important}.hero-aside i{margin:0 3px}.hero-disciplines{font-size:var(--type-caption)}.section-head{align-items:flex-start}.filters{justify-content:flex-end;max-width:290px}.featured .project-copy{padding:27px}.featured h3{font-size:var(--type-section)}.featured .cover-scene{min-height:340px}.game-tile{padding:16px}.tile-one{left:7%;width:160px}.tile-two{width:200px;right:4%}.tile-three{left:10%}.project-copy{padding:25px}.motion-grid{gap:9px}.motion-frame{width:85px;height:110px}.finance-panels{inset:75px 20px 60px;gap:10px}.finance-panels>div{padding:15px 12px;width:145px}.finance-panels strong{font-size:var(--type-caption)}.about-intro{gap:45px;grid-template-columns:1fr 1.15fr}.about-intro h2{font-size:var(--type-section)}.about-name>span{display:block;margin:3px 0 0}.experience-item{grid-template-columns:175px 1fr;gap:20px}.education-row{grid-template-columns:175px 1fr 1fr;gap:20px}.education-row h4{font-size:var(--type-small)}.contact-heading h2{font-size:var(--type-section)}.contact-right{min-width:320px}.email-link{font-size:var(--type-subheading)}.detail-overview{grid-template-columns:175px 1fr}.coming-soon{flex-wrap:wrap}.coming-soon .text-link{margin-left:55px}.detail-cover .game-tile.tile-one{left:18%}.detail-cover .game-tile.tile-two{right:15%}}
@media(max-width:600px){html{scroll-padding-top:85px}.wrap{padding-left:22px;padding-right:22px}.nav-wrap{height:72px;padding:0 22px;gap:15px}.brand{font-size:var(--type-subheading);gap:7px}.brand-mark{height:30px;width:30px;font-size:var(--type-heading)}.nav-wrap nav{gap:18px;font-size:var(--type-caption);margin:0 0 0 auto}.nav-wrap nav a:last-child{display:none}.nav-contact{border:0;padding:0;font-size:var(--type-caption);gap:7px}.nav-contact .status-dot{display:none}.nav-contact>span:last-child{display:none}.hero{padding-top:36px}.eyebrow{font-size:var(--type-caption);letter-spacing:1.15px}.hero-location{display:none}.hero h1{font-size:var(--type-title);line-height:1.43;letter-spacing:-1.5px;margin-top:31px;margin-bottom:27px}.star{font-size:var(--type-section);margin-left:12px;line-height:1.7}.hero-bottom{display:block}.hero-bottom>div>p{font-size:var(--type-caption);line-height:1.9}.primary-button{font-size:var(--type-caption);padding:10px 17px;margin-top:20px}.hero-aside{margin-top:32px;border-left:0;padding-left:0;max-width:none}.hero-aside>span{font-size:var(--type-caption)}.hero-aside p{margin-top:5px;font-size:var(--type-caption) !important}.hero-aside i{margin:0 7px}.hero-disciplines{display:none}.hero-end{margin-top:27px;padding-top:14px;font-size:var(--type-caption);letter-spacing:.5px}.work-section{padding-top:53px;padding-bottom:54px}.section-head{display:block;margin-bottom:23px}.section-head h2{font-size:var(--type-section);margin-top:7px}.filters{max-width:none;justify-content:flex-start;margin-top:18px;gap:3px}.filters button{font-size:var(--type-caption);padding:6px 11px}.project-grid{grid-template-columns:1fr;gap:19px}.project.featured{display:flex;flex-direction:column;grid-column:auto}.featured .project-cover{border-right:0}.featured .cover-scene{height:290px;min-height:0;border-bottom:1px solid var(--line)}.project-copy,.featured .project-copy{padding:24px}.project-meta{font-size:var(--type-caption);letter-spacing:.9px}.project h3,.featured h3{font-size:var(--type-heading);margin-top:14px}.featured h3 br{display:none}.project-copy>p,.featured .project-copy>p{font-size:var(--type-caption);margin-top:10px;margin-bottom:19px}.project-arrow,.featured .project-arrow{right:24px;bottom:29px}.project-tags>span{font-size:var(--type-caption)}.cover-scene{height:260px}.scene-top{top:20px;left:22px;right:22px;font-size:var(--type-caption)}.cover-note{font-size:var(--type-caption);left:22px}.tile-one{left:8%;top:24%;width:165px}.tile-two{right:6%;top:41%;width:190px}.tile-two strong{font-size:var(--type-subheading)}.tile-three{bottom:14%;left:13%}.motion-grid{inset:65px 25px 65px;gap:14px}.motion-frame{height:110px;width:100px}.finance-panels{inset:65px 24px 60px;gap:13px}.finance-panels>div{width:145px;height:130px;padding:15px 13px}.work-note{font-size:var(--type-caption);margin-top:16px}.about-section{padding-top:40px;padding-bottom:45px}.about-intro{display:block}.about-intro h2{font-size:var(--type-section);margin-top:15px;line-height:1.4}.about-intro h2 br:nth-child(2){display:none}.about-intro .text-link{margin-top:20px;font-size:var(--type-caption)}.about-content{margin-top:35px;padding-top:25px;border-top:1px solid var(--line)}.about-name{font-size:var(--type-body)}.about-name>span{display:inline;margin-left:12px;font-size:var(--type-caption)}.about-content>.about-statement{font-size:var(--type-heading);margin:19px 0}.about-content>p{font-size:var(--type-caption)}.capability-tags{margin-top:20px}.capability-tags span{font-size:var(--type-caption)}.experience-header{margin-top:37px;padding-bottom:13px}.experience-header h3{font-size:var(--type-subheading)}.experience-item{display:block;padding:22px 0}.experience-item time{display:block;font-size:var(--type-caption);margin-bottom:9px;padding:0}.experience-item h4{font-size:var(--type-subheading)}.experience-item h4 span{font-size:var(--type-caption);margin-left:14px}.experience-item p{font-size:var(--type-caption);margin-top:8px}.education-row{grid-template-columns:1fr 1fr;gap:20px;margin-top:26px}.education-row>div:first-child{grid-column:1/-1}.education-row>div:first-child .eyebrow{display:none}.education-row h3{font-size:var(--type-subheading)}.education-row h4{font-size:var(--type-body)}.education-row p{font-size:var(--type-caption)}.contact-section{display:block;padding:38px 0 37px}.contact-heading h2{font-size:var(--type-section);margin-top:14px}.contact-right{min-width:0;padding-top:27px}.contact-kicker{font-size:var(--type-caption)}.contact-right>p{font-size:var(--type-caption);margin-top:10px}.email-link{font-size:var(--type-subheading);max-width:380px;margin-top:18px}.footer{padding:22px 0 25px;font-size:var(--type-caption);flex-wrap:wrap;row-gap:15px}.footer .brand{font-size:var(--type-body)}.footer-point{font-size:var(--type-body);margin-left:8px}.footer>a:last-child{display:none}.detail{padding-top:29px;padding-bottom:30px}.detail-top{margin-top:38px}.detail h1{font-size:var(--type-section);letter-spacing:-1px;margin-top:18px}.detail-meta{font-size:var(--type-caption);margin-top:15px}.detail-cover{margin-top:28px}.detail-cover .cover-scene{height:290px}.detail-cover .game-tile.tile-one{left:8%;width:165px;top:24%}.detail-cover .game-tile.tile-two{right:6%;width:190px;top:41%}.detail-cover .game-tile.tile-three{left:13%;bottom:14%}.detail-cover .game-orbit{width:300px;height:300px}.detail-cover .orbit-two{width:220px;height:220px}.detail-cover .motion-grid{gap:12px}.detail-cover .motion-frame{width:85px;height:120px}.detail-cover .finance-panels{gap:12px;inset:70px 20px 55px}.detail-cover .finance-panels>div{width:145px;height:145px;padding:17px 12px}.detail-cover .finance-panels strong{font-size:var(--type-caption)}.detail-cover .finance-lines{margin-top:18px}.detail-cover .finance-path{margin-top:26px}.detail-overview{display:block;margin-top:31px}.detail-overview h2{font-size:var(--type-subheading);margin-bottom:17px}.detail-overview p{font-size:var(--type-caption);line-height:2}.coming-soon{margin-top:30px;padding:22px;gap:15px;align-items:flex-start}.coming-icon{font-size:var(--type-subheading)}.coming-soon>div{flex:1}.coming-soon h2{font-size:var(--type-subheading)}.coming-soon p{font-size:var(--type-caption)}.coming-soon .text-link{margin-left:32px;margin-top:2px;font-size:var(--type-caption)}.next-project{margin-top:32px;padding:25px 0}.next-project strong{font-size:var(--type-subheading)}.resume-page{padding-top:28px;padding-bottom:48px}.resume-tools{margin-bottom:38px}.outline-button{font-size:var(--type-caption);padding:7px 11px}.back-link{font-size:var(--type-caption)}.resume-page>h1{font-size:var(--type-title)}.resume-subtitle{font-size:var(--type-small)}.resume-summary{font-size:var(--type-caption);margin-top:20px}.resume-page>h2{margin-top:35px;font-size:var(--type-subheading)}.resume-education h3{font-size:var(--type-body)}.resume-education p{font-size:var(--type-caption)}.resume-page>h2+ p{font-size:var(--type-caption)}.not-found{padding-top:70px}.not-found h1{font-size:var(--type-title)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media print{body{background:white;color:#222;font-size:11pt}.site-header,.footer,.resume-tools,.skip{display:none!important}.resume-page{max-width:none;padding:0}.resume-page h1{font-size:32pt}.eyebrow,.resume-summary,.resume-subtitle,.experience-item p,.experience-item time,.resume-education p,.resume-education time,.experience-item h4 span{color:#555!important}.lime{color:#555}.resume-page>h2{font-size:17pt;margin-top:25px;border-color:#ccc}.experience-item{break-inside:avoid;border-color:#ddd;padding:15px 0;grid-template-columns:150px 1fr}.experience-item h4{font-size:15pt}.experience-item p{font-size:10pt}.resume-page .text-link{color:#333;border-color:#ccc}.resume-education h3{font-size:14pt}.resume-page>h2+ p{color:#555}.resume-summary{margin-top:15px}.resume-page .eyebrow{font-size:8pt}@page{size:A4;margin:18mm}}
/* Portfolio case studies and career timeline */
.work-intro{margin:-12px 0 27px;color:var(--muted);font-size:var(--type-caption)}.project.featured h3{font-size:var(--type-section);line-height:1.55;max-width:350px}.project.featured .project-copy>p{margin-bottom:23px}.project.featured .project-tags{margin-top:auto}.project-grid>.project:not(.featured) h3{font-size:var(--type-heading)}.portfolio-cover{height:300px}.featured .portfolio-cover{min-height:380px}.cover-cards{background:radial-gradient(ellipse at 70% 20%,#354329,transparent 65%),#20281d}.portfolio-cards{position:absolute;inset:68px 22px 65px;display:flex;justify-content:center;align-items:center}.art-card{width:133px;height:195px;border-radius:12px;border:1px solid #63794b;background:#2b3823;position:absolute;font-style:normal;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:16px;color:#b8ca9f;box-shadow:0 15px 30px #10190b4d}.art-card>span{font-size:var(--type-caption);letter-spacing:1.1px}.art-card>b{font-size:var(--type-display);font-weight:300;line-height:1.3;margin:auto}.card-back{transform:translateX(-98px) rotate(-13deg);height:177px;background:#25311f}.card-mid{transform:translateY(-8px);z-index:1;background:#3e522c}.card-front{transform:translateX(100px) rotate(13deg);height:177px;background:var(--lime);color:#2d411b;border-color:#d2f89b;z-index:2}.cover-pill{position:absolute;bottom:45px;left:0;right:0;text-align:center;font-size:var(--type-caption);color:#9dac92;letter-spacing:.9px}.cover-pill i{margin:0 5px;font-style:normal}.cover-editor{background:radial-gradient(ellipse at 70% 10%,#343240,transparent 70%),#24232c}.cover-editor .scene-top,.cover-editor .cover-note{color:#a69ab7}.editor-layout{position:absolute;inset:68px 30px 55px;display:grid;grid-template-columns:85px 1fr;gap:22px;align-items:center;max-width:400px;margin:auto}.editor-agent{border:1px solid #635a72;background:#302c3b;height:143px;border-radius:8px;padding:15px 12px}.editor-agent>span{font-size:var(--type-caption);color:#d0bbeb}.editor-agent>i{height:4px;border-radius:3px;background:#6c5c85;display:block;margin-top:16px;width:100%}.editor-agent>i:nth-child(3){width:65%;margin-top:7px}.editor-agent>b{font-size:var(--type-small);color:#bca7d9;display:block;text-align:right;margin-top:14px;font-weight:400}.node-map{display:flex;align-items:center;flex-direction:column;position:relative;gap:28px}.node-map:before{content:"";position:absolute;width:1px;height:30px;top:35px;background:#6f6281}.node-map>div{display:flex;gap:15px;position:relative}.node-map>div:before{content:"";position:absolute;top:-13px;left:35px;right:35px;height:13px;border:1px solid #6f6281;border-bottom:0}.node{font-size:var(--type-caption);background:#3b3248;color:#c5b4dc;border:1px solid #6b597f;padding:8px 13px;border-radius:5px;white-space:nowrap}.root-node{background:#bda7d8;color:#30283b;border-color:#d1bce9}.node-map small{font-size:var(--type-caption);color:#9f90b1;margin-top:-10px}.cover-live{background:radial-gradient(ellipse at 60% 0%,#2d4148,transparent 65%),#202d31}.cover-live .scene-top,.cover-live .cover-note{color:#9cb5bf}.live-layout{position:absolute;inset:70px 28px 66px;display:flex;align-items:center;justify-content:center;gap:10px}.live-panel{width:145px;max-width:38%;height:148px;border:1px solid #4f727b;border-radius:8px;background:#293b40;padding:11px 12px}.live-panel>span{display:block;color:#a9c9d3;font-size:var(--type-caption)}.live-panel i{display:block;border:1px solid #486b72;background:#1e3035;height:65px;margin-top:8px;position:relative}.live-panel i:before,.live-panel i:after{content:"";position:absolute;border:1px solid #5b8388;border-radius:50%;width:25px;height:25px;left:50%;top:50%;transform:translate(-50%,-50%)}.live-panel i:after{width:44px;height:44px;opacity:.5}.live-panel>b{display:block;text-align:center;font-size:var(--type-caption);color:#9db8bf;font-weight:400;margin-top:7px}.live-bridge{font-size:var(--type-heading);color:#a8c4cc;text-align:center;width:30px}.live-bridge small{display:block;font-size:var(--type-caption);letter-spacing:1px;margin-top:-4px}.cover-live .cover-pill{color:#91acb4;bottom:37px}.cover-system{background:radial-gradient(ellipse at 70% 0,#424333,transparent 75%),#2b2d25}.cover-system .scene-top,.cover-system .cover-note{color:#aab195}.system-layout{position:absolute;left:50%;top:52%;width:76%;max-width:355px;transform:translate(-50%,-50%);border:1px solid #62694d;border-radius:10px;background:#33372b;padding:18px}.system-title{font-size:var(--type-caption);color:#d4ddbd;display:block;padding-bottom:12px;border-bottom:1px solid #50583f}.system-layout>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:13px}.system-layout>div>span{font-size:var(--type-caption);padding:9px 3px;border:1px solid #535c41;background:#3b432e;color:#bac6a4;text-align:center;border-radius:4px}.system-layout>div>span:first-child{background:#bed29c;color:#354326;border-color:#bed29c}.cover-dual{background:radial-gradient(ellipse at 65% 0,#3d4243,transparent 75%),#292d2f}.cover-dual .scene-top,.cover-dual .cover-note{color:#a3acae}.dual-layout{position:absolute;inset:70px 28px 58px;display:flex;align-items:center;justify-content:center;gap:20px}.dual-layout>div{width:145px;height:155px;max-width:40%;border:1px solid #5f6d6d;background:#303a3b;border-radius:7px;padding:14px;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.dual-layout>div>span{font-size:var(--type-caption);color:#aebdbc;align-self:flex-start}.dual-layout>div>small{font-size:var(--type-caption);color:#92a4a2}.dual-layout>.dual-before{opacity:.65}.dual-before>i{font-size:var(--type-section);font-style:normal;font-weight:300;color:#a2afaf}.dual-layout>b{font-weight:400;color:#a0afac;font-size:var(--type-subheading)}.dual-after>div{display:flex;align-items:center;gap:5px;width:100%;height:55px}.dual-after>div>i:first-child{width:65%;height:55px;background:#a6c7bd;border-radius:3px}.dual-after>div>i:last-child{flex:1;height:55px;background:#6c9285;border-radius:3px}.archive-row{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:28px 0 0;margin-top:35px;border-top:1px solid var(--line)}.archive-row h3{font-size:var(--type-body);font-weight:500;margin-top:8px}.archive-row p{font-size:var(--type-caption);color:var(--muted);margin-top:7px}.archive-row .text-link{font-size:var(--type-caption);white-space:nowrap}.design-principles{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:25px;padding-top:22px;border-top:1px solid var(--line)}.design-principles article>span{font-size:var(--type-caption);letter-spacing:1px;color:var(--lime)}.design-principles article>p{font-size:var(--type-caption);line-height:1.9;color:var(--muted);margin-top:8px}.career-timeline{margin-top:58px;padding:25px 25px 26px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#151914 0%,#111410 100%)}.career-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:22px}.career-heading>span{color:var(--lime);font-size:var(--type-caption);letter-spacing:1.6px;font-weight:600}.career-heading h3{font-size:var(--type-heading);font-weight:550;line-height:1.4}.career-track{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0;padding:0;list-style:none}.career-track>li{position:relative;border-top:1px solid #3a452f;background:linear-gradient(180deg,#23321c40 0%,transparent 80%);padding:25px 23px 0 0;display:flex;flex-direction:column;align-items:flex-start}.career-track>li:not(:first-child){padding-left:20px}.career-track>li:before{content:"";position:absolute;left:4px;top:-5px;width:9px;height:9px;background:var(--lime);transform:rotate(45deg);box-shadow:0 0 13px #c3f36b26}.career-track>li:not(:first-child):before{left:24px}.career-track time{color:#b0d574;font-size:var(--type-caption);letter-spacing:.65px}.career-track h4{font-size:var(--type-heading);font-weight:550;line-height:1.3;margin-top:15px}.career-role{font-size:var(--type-caption);color:#b3bcae;margin-top:7px}.career-track p{font-size:var(--type-caption);line-height:1.9;color:#899583;margin-top:10px;margin-bottom:18px;max-width:320px}.career-tag{font-size:var(--type-caption);letter-spacing:1px;color:#7f9e54;margin-top:auto}.case-status{font-size:var(--type-caption);color:#a7bd8f;border:1px solid #3c4c2e;border-radius:4px;padding:3px 9px;white-space:nowrap}.case-lead{font-size:var(--type-body);color:var(--muted);max-width:800px;line-height:1.9;margin-top:21px}.detail-cover .portfolio-cover{height:420px}.detail-cover .portfolio-cards{transform:scale(1.2);inset:65px 30px 90px}.detail-cover .cover-pill{bottom:55px}.detail-cover .editor-layout{max-width:650px;grid-template-columns:150px 1fr;gap:45px}.detail-cover .editor-agent{height:200px;padding:25px}.detail-cover .editor-agent>span{font-size:var(--type-caption)}.detail-cover .editor-agent>b{margin-top:33px}.detail-cover .node{font-size:var(--type-small);padding:13px 22px}.detail-cover .node-map{gap:42px}.detail-cover .node-map>div{gap:50px}.detail-cover .node-map:before{top:47px;height:36px}.detail-cover .node-map>div:before{top:-23px;height:23px;left:50px;right:50px}.detail-cover .node-map small{font-size:var(--type-caption)}.detail-cover .live-layout{gap:35px;inset:75px 30px 85px}.detail-cover .live-panel{width:240px;height:240px;padding:20px}.detail-cover .live-panel>span{font-size:var(--type-caption)}.detail-cover .live-panel>i{height:125px;margin-top:15px}.detail-cover .live-panel>b{font-size:var(--type-caption);margin-top:14px}.detail-cover .live-bridge{width:45px;font-size:var(--type-section)}.detail-cover .live-bridge small{font-size:var(--type-caption)}.detail-cover .system-layout{width:510px;max-width:75%;padding:25px}.detail-cover .system-title{font-size:var(--type-subheading);padding-bottom:18px}.detail-cover .system-layout>div{gap:14px;margin-top:20px}.detail-cover .system-layout>div>span{font-size:var(--type-caption);padding:15px 5px}.detail-cover .dual-layout{gap:35px}.detail-cover .dual-layout>div{width:235px;height:240px;padding:20px}.detail-cover .dual-layout>div>span,.detail-cover .dual-layout>div>small{font-size:var(--type-caption)}.detail-cover .dual-layout>div>div,.detail-cover .dual-layout>div>div>i:first-child,.detail-cover .dual-layout>div>div>i:last-child{height:95px}.case-question{margin-top:46px;border-left:2px solid var(--lime);padding:6px 0 6px 25px;max-width:900px}.case-question h2,.case-takeaway h2{font-size:var(--type-heading);font-weight:500;margin-top:8px}.case-question p,.case-takeaway p{font-size:var(--type-small);color:var(--soft);line-height:2;margin-top:13px}.case-process .experience-header{margin-top:48px}.case-process .experience-header h2{font-size:var(--type-heading);font-weight:500}.case-section{display:grid;grid-template-columns:60px 1fr;gap:25px;padding:28px 0;border-bottom:1px solid var(--line)}.case-section>span{font-size:var(--type-caption);color:var(--lime);letter-spacing:1px;padding-top:5px}.case-section h3{font-size:var(--type-subheading);font-weight:500;line-height:1.6}.case-section p{font-size:var(--type-small);color:var(--muted);line-height:2;margin-top:10px;max-width:820px}.case-takeaway{margin-top:43px;max-width:900px}.case-assets{display:flex;align-items:center;gap:12px;font-size:var(--type-caption);color:var(--muted);padding:23px 25px;border:1px solid var(--line);border-radius:8px;margin-top:38px;background:#171c14}.case-assets>span{color:var(--lime);font-size:var(--type-body)}
@media(max-width:900px){.career-timeline{padding:22px 20px}.career-track>li{padding-right:12px}.career-track>li:not(:first-child){padding-left:16px}.career-track>li:not(:first-child):before{left:20px}.career-track h4{font-size:var(--type-subheading)}.career-track p{font-size:var(--type-caption)}.project.featured h3{font-size:var(--type-heading)}.editor-layout{inset-left:18px;inset-right:18px;gap:16px}.node{padding:8px 10px;font-size:var(--type-caption)}.node-map>div{gap:8px}.live-layout{gap:8px}.live-panel{height:140px;padding:10px}.dual-layout{gap:10px;inset:65px 20px 55px}.dual-layout>div{padding:12px}}
@media(max-width:600px){.work-intro{font-size:var(--type-caption);margin:-5px 0 21px}.project.featured h3,.project-grid>.project:not(.featured) h3{font-size:var(--type-heading);line-height:1.5}.featured .portfolio-cover{min-height:0;height:290px}.portfolio-cover{height:265px}.portfolio-cards{transform:scale(.82);inset:55px 15px 60px}.cover-pill{font-size:var(--type-caption);bottom:40px;letter-spacing:.3px}.art-card{height:180px}.card-back,.card-front{height:165px}.editor-layout{grid-template-columns:75px 1fr;gap:18px;inset:65px 24px 55px}.editor-agent{height:130px;padding:12px 10px}.node{padding:8px 9px;font-size:var(--type-caption)}.node-map>div{gap:10px}.node-map small{font-size:var(--type-caption)}.live-layout{inset:65px 24px 58px;gap:10px}.live-panel{height:130px}.live-panel i{height:52px}.cover-live .cover-pill{bottom:35px;font-size:var(--type-caption)}.system-layout{padding:15px;width:82%}.system-layout>div>span{font-size:var(--type-caption)}.dual-layout{inset:65px 20px 55px;gap:13px}.dual-layout>div{height:135px;padding:11px}.archive-row{padding-top:23px;margin-top:26px;align-items:flex-start;flex-direction:column;gap:16px}.archive-row h3{font-size:var(--type-body)}.archive-row p{font-size:var(--type-caption)}.archive-row .text-link{font-size:var(--type-caption)}.design-principles{gap:20px;margin-top:22px}.design-principles article>p{font-size:var(--type-caption)}.design-principles article>span{font-size:var(--type-caption)}.career-timeline{padding:22px 20px 15px;margin-top:37px;border-radius:12px}.career-heading{padding-bottom:25px;align-items:flex-start;gap:10px}.career-heading>span{font-size:var(--type-caption);letter-spacing:1px;padding-top:6px}.career-heading h3{font-size:var(--type-subheading);white-space:nowrap}.career-track{display:block;padding-left:3px}.career-track>li,.career-track>li:not(:first-child){border-top:0;border-left:1px solid #3b4d2c;padding:0 0 27px 23px;background:none;min-height:0}.career-track>li:last-child{padding-bottom:10px}.career-track>li:before,.career-track>li:not(:first-child):before{left:-5px;top:4px;width:8px;height:8px}.career-track time{font-size:var(--type-caption)}.career-track h4{font-size:var(--type-subheading);margin-top:10px}.career-role{font-size:var(--type-caption);margin-top:5px}.career-track p{font-size:var(--type-caption);margin-top:9px;margin-bottom:12px;max-width:none}.career-tag{font-size:var(--type-caption)}.detail-top{gap:15px}.detail-top .eyebrow{max-width:70%;font-size:var(--type-caption)}.case-status{font-size:var(--type-caption)}.detail h1{font-size:var(--type-section);line-height:1.5}.case-lead{font-size:var(--type-caption);margin-top:18px}.detail-cover .portfolio-cover{height:290px}.detail-cover .portfolio-cards{transform:scale(.85);inset:55px 15px 65px}.detail-cover .cover-pill{bottom:39px}.detail-cover .editor-layout{inset:65px 24px 55px;grid-template-columns:75px 1fr;gap:18px}.detail-cover .editor-agent{height:130px;padding:12px 10px}.detail-cover .editor-agent>span{font-size:var(--type-caption)}.detail-cover .editor-agent>b{margin-top:14px}.detail-cover .node{padding:8px 9px;font-size:var(--type-caption)}.detail-cover .node-map{gap:28px}.detail-cover .node-map>div{gap:10px}.detail-cover .node-map:before{top:35px;height:30px}.detail-cover .node-map>div:before{top:-13px;height:13px;left:35px;right:35px}.detail-cover .node-map small{font-size:var(--type-caption)}.detail-cover .live-layout{gap:10px;inset:65px 24px 58px}.detail-cover .live-panel{height:145px;width:130px;padding:12px}.detail-cover .live-panel>span{font-size:var(--type-caption)}.detail-cover .live-panel>i{height:64px;margin-top:10px}.detail-cover .live-panel>b{font-size:var(--type-caption);margin-top:8px}.detail-cover .live-bridge{font-size:var(--type-heading);width:25px}.detail-cover .live-bridge small{font-size:var(--type-caption)}.detail-cover .system-layout{width:82%;max-width:82%;padding:15px}.detail-cover .system-title{font-size:var(--type-caption);padding-bottom:12px}.detail-cover .system-layout>div{gap:8px;margin-top:13px}.detail-cover .system-layout>div>span{font-size:var(--type-caption);padding:9px 3px}.detail-cover .dual-layout{gap:13px;inset:65px 20px 55px}.detail-cover .dual-layout>div{height:145px;width:130px;padding:12px}.detail-cover .dual-layout>div>span,.detail-cover .dual-layout>div>small{font-size:var(--type-caption)}.detail-cover .dual-layout>div>div,.detail-cover .dual-layout>div>div>i:first-child,.detail-cover .dual-layout>div>div>i:last-child{height:55px}.case-question{margin-top:28px;padding-left:18px}.case-question h2,.case-takeaway h2,.case-process .experience-header h2{font-size:var(--type-subheading)}.case-question p,.case-takeaway p{font-size:var(--type-caption);line-height:2}.case-section{grid-template-columns:28px 1fr;gap:13px;padding:23px 0}.case-section>span{font-size:var(--type-caption)}.case-section h3{font-size:var(--type-body)}.case-section p{font-size:var(--type-caption)}.case-process .experience-header{margin-top:30px}.case-takeaway{margin-top:29px}.case-assets{font-size:var(--type-caption);line-height:1.9;padding:17px 18px;margin-top:26px}}

/* Resume project highlights from the latest portfolio resume. */
.resume-highlights{margin-top:22px}.resume-highlights section+section{margin-top:18px}.resume-highlights h5{margin:0;font-size:var(--type-caption);font-weight:500;color:var(--soft)}.resume-highlights p{margin-top:5px}.resume-page .experience-item h4 span{display:block;margin:5px 0 0;line-height:1.7}@media print{.resume-highlights h5{color:#333}.resume-page .experience-item{break-inside:auto}.resume-highlights section{break-inside:avoid}}

/* Compact first-screen profile and clear project feedback. */
.hero-role{display:block;color:var(--muted);font-size:var(--type-caption);margin-top:3px;margin-bottom:-15px}
.hero-actions{display:flex;align-items:center;gap:28px;margin-top:24px}.hero-actions .primary-button{margin-top:0}.hero-resume{display:inline-flex;align-items:center;gap:22px;font-size:var(--type-small);border-bottom:1px solid #637353;padding:10px 0;color:var(--soft)}.hero-resume:hover{color:var(--lime);border-color:var(--lime)}
.hero-career{min-width:365px;max-width:430px}.hero-career ol{list-style:none;padding:0;margin:12px 0 0}.hero-career li{display:flex;justify-content:space-between;gap:25px;padding:8px 0;border-bottom:1px solid var(--line)}.hero-career li:last-child{border:0}.hero-career li>span{font-size:var(--type-small);color:var(--text)}.hero-career small{display:block;font-size:var(--type-caption);color:var(--muted);margin-top:2px}.hero-career time{font-size:var(--type-caption);color:var(--muted);white-space:nowrap;padding-top:4px}
#work,[id^="project-"]{scroll-margin-top:115px}html{scroll-padding-top:0}.project{position:relative;transition:transform .3s ease,border-color .3s ease,box-shadow .3s ease,background .3s ease}.project-cover .cover-scene{transition:transform .5s cubic-bezier(.2,.7,.2,1),filter .35s ease}.project-arrow{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;border:1px solid #495240;transition:transform .3s ease,background .3s ease,color .3s ease,border-color .3s ease}.project h3{transition:color .25s ease}
@media(hover:hover) and (pointer:fine){.project:hover{transform:translateY(-7px);background:#20261c;border-color:var(--lime);box-shadow:0 18px 45px #0006,0 0 0 1px #c3f36b33}.project:hover .cover-scene{transform:scale(1.045);filter:brightness(1.12)}.project:hover h3{color:var(--lime)}.project:hover .project-arrow{transform:translate(3px,-3px);background:var(--lime);border-color:var(--lime);color:#17200e}}
.project:active{border-color:var(--lime)}
@media(max-width:900px){.hero-career{min-width:300px;max-width:340px;padding-left:20px}.hero-career li{gap:12px}.hero-career time{font-size:var(--type-caption)}.hero-bottom{gap:24px}}
@media(max-width:600px){.hero-role{font-size:var(--type-caption);margin-bottom:-14px}.hero-actions{margin-top:20px;gap:26px}.hero-resume{font-size:var(--type-caption);padding:8px 0}.hero-career{min-width:0;max-width:none;margin-top:28px;padding-top:17px;border-top:1px solid var(--line);padding-left:0}.hero-career ol{margin-top:7px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.hero-career li{display:block;border-bottom:0;padding:4px 0}.hero-career li>span{font-size:var(--type-caption)}.hero-career small{font-size:var(--type-caption);line-height:1.6;min-height:29px;max-width:100px}.hero-career time{display:block;font-size:var(--type-caption);margin-top:3px}.hero-end{margin-top:22px}.nav-wrap nav a:last-child{display:inline}.project-arrow{width:30px;height:30px;font-size:var(--type-body)}#work,[id^="project-"]{scroll-margin-top:94px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project,.project-cover .cover-scene,.project-arrow,.project h3{transition:none}.project:hover,.project:hover .cover-scene,.project:hover .project-arrow{transform:none}}

#contact,#about,#main{scroll-margin-top:110px}@media(max-width:600px){#contact,#about,#main{scroll-margin-top:90px}}

.project-copy>p.project-highlight,.featured .project-copy>p.project-highlight{font-size:var(--type-small);color:var(--soft);margin:9px 0 0;line-height:1.65;max-width:none}.project-copy>p.project-highlight+p{margin-top:12px}.project-tags{padding-right:42px}.tool-cover{position:absolute;inset:65px 45px 48px;display:grid;place-items:center}.tool-window{width:230px;max-width:100%;padding:16px 20px;border:1px solid #65725b;border-radius:12px;background:#202b24;box-shadow:0 20px 40px #0003}.tool-window>div{display:flex;gap:5px;margin-bottom:15px}.tool-window i{height:5px;width:5px;border-radius:50%;background:#768b6c}.tool-window>span,.tool-window>small{display:block;font-size:var(--type-caption);letter-spacing:1.5px;color:#a8be9a}.tool-window>b{display:block;font-size:var(--type-display);font-weight:400;line-height:1.3;color:var(--lime)}.tool-window>small{font-size:var(--type-caption)}.cover-audit{background:radial-gradient(ellipse at 75% 20%,#33483a,transparent 75%),#1b2620}.cover-worldbook{background:radial-gradient(ellipse at 65% 25%,#3d3a57,transparent 75%),#252334}.worldbook-cover{position:absolute;inset:65px 20px 45px;display:flex;align-items:center;justify-content:center;gap:12px}.worldbook-cover>span{font-size:var(--type-caption);color:#beb4d4;padding:13px 9px;border:1px solid #625873;border-radius:7px}.worldbook-cover>strong{font-size:var(--type-body);font-weight:500;padding:30px 17px;border:1px solid #9d8ab7;border-radius:12px;color:#e2d7ed;background:#48405b}.worldbook-cover>i{font-size:var(--type-body);color:#9f8bb5;font-style:normal}@media(max-width:600px){.project-copy>p.project-highlight,.featured .project-copy>p.project-highlight{font-size:var(--type-small)}.worldbook-cover{gap:8px}.worldbook-cover>span{font-size:var(--type-caption);padding:12px 7px}.worldbook-cover>strong{font-size:var(--type-body);padding:25px 13px}}

.hero-profile{min-width:0;max-width:650px}.hero-role-tags{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 19px}.hero-role-tags>span{display:inline-flex;align-items:center;border:1px solid #3a4234;border-radius:5px;background:var(--panel);color:var(--soft);font-size:var(--type-caption);line-height:1.6;padding:4px 10px}.hero-bottom>.hero-profile>.hero-bio{font-size:var(--type-small);line-height:1.95;color:var(--soft);max-width:610px}.hero-career{flex-shrink:0}@media(max-width:900px){.hero-bottom>.hero-profile>.hero-bio{font-size:var(--type-caption)}.hero-role-tags{gap:6px;margin:9px 0 15px}.hero-role-tags>span{font-size:var(--type-caption);padding:3px 8px}}@media(max-width:600px){.hero-role-tags{margin:10px 0 16px;gap:7px}.hero-role-tags>span{font-size:var(--type-caption);padding:3px 9px}.hero-bottom>.hero-profile>.hero-bio{font-size:var(--type-caption);line-height:1.95}}

/* Only deliberate keyboard navigation draws a project focus ring. */
.project:focus-visible{outline:none}.project.keyboard-focus{outline:2px solid var(--lime);outline-offset:5px;border-color:var(--line);box-shadow:none}.project.keyboard-focus h3{color:var(--lime)}
.review-cover-flow{position:absolute;inset:65px 30px 45px;display:flex;align-items:center;justify-content:center;gap:16px}.review-inputs,.review-outputs{display:grid;gap:9px}.review-cover-flow span{display:block;border:1px solid #4b6251;border-radius:6px;padding:9px 13px;font-size:var(--type-caption);color:#b4c5b4;background:#1e2b23}.review-cover-flow>b{font-size:var(--type-heading);color:#839e80;font-weight:400}.review-cover-flow>strong{font-size:var(--type-subheading);font-weight:500;color:var(--lime);white-space:nowrap}.review-outputs span{font-size:var(--type-caption);border-color:#394e3c}.review-deliverables{margin-top:45px}.review-delivery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px}.review-delivery-grid article{padding:23px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.review-delivery-grid h3{font-size:var(--type-body);font-weight:500}.review-delivery-grid p{font-size:var(--type-caption);color:var(--muted);margin-top:9px;line-height:1.9}.review-access-note{color:var(--muted);font-size:var(--type-caption);margin-top:12px}@media(max-width:600px){.review-cover-flow{inset:60px 18px 40px;gap:10px}.review-cover-flow span{font-size:var(--type-caption);padding:8px 9px}.review-cover-flow>strong{font-size:var(--type-body)}.review-cover-flow>b{font-size:var(--type-body)}.review-outputs span{font-size:var(--type-caption)}.review-delivery-grid{grid-template-columns:1fr;gap:12px}.review-delivery-grid article{padding:20px}.review-delivery-grid h3{font-size:var(--type-body)}}
/* Shared project layout: an interactive overview followed by readable full content. */
.project-guide{margin-top:40px;min-height:440px;padding:30px;display:grid;grid-template-columns:245px minmax(0,1fr);gap:42px;background:radial-gradient(ellipse at 95% 0,#293022,transparent 70%),var(--panel);border:1px solid var(--line);border-radius:16px}.guide-sidebar{display:flex;flex-direction:column;min-width:0}.guide-sidebar>.eyebrow{font-size:var(--type-caption);letter-spacing:.7px}.guide-sidebar h2{font-size:var(--type-heading);font-weight:500;margin-top:12px}.guide-sidebar>p{font-size:var(--type-caption);color:var(--muted);margin-top:7px}.guide-sidebar [role=tablist]{display:grid;gap:5px;margin-top:20px}.guide-tab{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:9px 12px;border:1px solid transparent;border-radius:6px;background:none;color:var(--muted);font-size:var(--type-caption);line-height:1.6}.guide-tab>span{font-size:var(--type-caption);color:#7e8c74}.guide-tab>b{margin-left:auto;font-weight:400;opacity:0}.guide-tab:hover{color:var(--text);background:#242a21}.guide-tab[aria-selected=true]{border-color:#52663c;color:var(--lime);background:#252e1e}.guide-tab[aria-selected=true]>b{opacity:1}.guide-tool-link{margin-top:auto;padding-top:20px;font-size:var(--type-caption);color:var(--soft)}.guide-tool-link:hover{color:var(--lime)}.guide-stage{min-width:0;display:grid;align-items:center;border-left:1px solid var(--line);padding-left:38px}.guide-panel{display:flex;flex-direction:column;align-items:flex-start;gap:18px;min-width:0}.guide-panel[hidden]{display:none}.guide-stage-label{font-size:var(--type-caption);letter-spacing:1.1px;color:var(--muted)}.guide-panel h3{font-weight:500;font-size:var(--type-heading);line-height:1.55}.guide-panel>p{font-size:var(--type-caption);line-height:1.95;color:var(--soft);max-width:620px}.guide-panel>.text-link{margin-top:0;font-size:var(--type-caption)}.guide-flow{display:flex;align-items:center;gap:9px;width:100%;margin:3px 0}.guide-flow>span{display:flex;flex-direction:column;justify-content:center;gap:9px;flex:1;min-width:0;min-height:75px;padding:13px;border:1px solid #46513c;background:#20271b;border-radius:9px;font-size:var(--type-caption);color:#d2ddc8}.guide-flow small{font-size:var(--type-caption);color:#8a9c78}.guide-flow>i{font-style:normal;color:#758764;font-size:var(--type-small)}.case-reading{display:grid;grid-template-columns:195px minmax(0,1fr);gap:45px;margin-top:55px}.case-contents{position:sticky;top:115px;align-self:start;max-height:calc(100vh - 145px);overflow:auto;padding-right:10px}.case-contents>.eyebrow{font-size:var(--type-caption);letter-spacing:.5px}.case-contents ol{list-style:none;padding:0;margin:20px 0}.case-contents li+li{margin-top:4px}.case-contents a{display:flex;gap:9px;padding:7px 0;font-size:var(--type-caption);line-height:1.8;color:var(--muted)}.case-contents a>span{font-size:var(--type-caption);padding-top:2px;color:#697663}.case-contents a:hover,.case-contents a[aria-current]{color:var(--lime)}.case-full-intro{min-width:0}.case-chapter{scroll-margin-top:115px;padding:0 0 42px;margin:0 0 42px;border-bottom:1px solid var(--line)}.case-chapter:last-child{margin-bottom:0}.chapter-heading{display:flex;align-items:baseline;gap:15px;margin-bottom:23px}.chapter-heading>span{font-size:var(--type-caption);letter-spacing:1px;color:var(--lime)}.chapter-heading>h2{font-size:var(--type-heading);line-height:1.5;font-weight:500;letter-spacing:-.3px}.case-chapter>p{font-size:var(--type-small);line-height:2.05;color:var(--soft);margin:0}.case-chapter>p+p{margin-top:20px}.chapter-list{padding-left:22px;margin:23px 0;color:var(--soft);font-size:var(--type-small);line-height:2}.chapter-list>li+li{margin-top:10px}.chapter-table-wrap{overflow:auto;max-width:100%;margin:25px 0;border:1px solid var(--line);border-radius:10px}.chapter-table-wrap table{border-collapse:collapse;width:100%;font-size:var(--type-caption);line-height:1.9;text-align:left}.chapter-table-wrap th{font-weight:500;color:var(--text);background:var(--panel);padding:14px 17px;border-bottom:1px solid var(--line);white-space:nowrap}.chapter-table-wrap td{padding:15px 17px;color:var(--soft);vertical-align:top;border-bottom:1px solid var(--line)}.chapter-table-wrap tr:last-child td{border-bottom:0}.chapter-table-wrap td:first-child{color:var(--text);min-width:100px}.chapter-note{border-left:2px solid #6e894b;background:#1b2117;padding:20px 23px;margin:25px 0;border-radius:0 8px 8px 0}.chapter-note>h3{font-size:var(--type-small);font-weight:500;color:#cfdfbc;margin-bottom:8px}.chapter-note>p{font-size:var(--type-caption);color:var(--soft);line-height:1.95}[id^=design-],#project-intro{scroll-margin-top:115px}
@media(max-width:900px){.project-guide{grid-template-columns:205px minmax(0,1fr);gap:25px;padding:24px}.guide-stage{padding-left:25px}.guide-panel h3{font-size:var(--type-subheading)}.guide-panel>p{font-size:var(--type-caption)}.guide-flow{gap:5px}.guide-flow>span{padding:11px 9px;font-size:var(--type-caption)}.case-reading{grid-template-columns:155px minmax(0,1fr);gap:28px}.case-contents a{font-size:var(--type-caption)}.chapter-heading>h2{font-size:var(--type-heading)}.chapter-table-wrap th,.chapter-table-wrap td{padding:12px}.chapter-table-wrap table{font-size:var(--type-caption)}}
@media(max-width:600px){.project-guide{display:block;padding:22px;min-height:0;margin-top:28px}.guide-sidebar h2{font-size:var(--type-subheading)}.guide-sidebar [role=tablist]{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}.guide-tab{width:auto;font-size:var(--type-caption);padding:7px 9px;gap:6px}.guide-tab>b{display:none}.guide-tab>span{font-size:var(--type-caption)}.guide-tool-link{padding-top:15px;font-size:var(--type-caption)}.guide-stage{border-left:0;border-top:1px solid var(--line);padding:23px 0 0;margin-top:22px}.guide-panel{gap:15px}.guide-panel h3{font-size:var(--type-subheading)}.guide-panel>p{font-size:var(--type-caption)}.guide-flow>span{font-size:var(--type-caption);min-height:76px;padding:10px 7px}.guide-flow>i{font-size:var(--type-caption)}.guide-panel>.text-link{font-size:var(--type-caption)}.case-reading{display:block;margin-top:35px}.case-contents{position:static;max-height:none;padding:0;margin-bottom:30px;border-bottom:1px solid var(--line)}.case-contents ol{display:grid;grid-template-columns:1fr 1fr;gap:2px 15px;margin:15px 0 24px}.case-contents a{font-size:var(--type-caption);gap:6px;padding:5px 0}.case-contents li+li{margin:0}.chapter-heading{gap:10px;margin-bottom:19px}.chapter-heading>h2{font-size:var(--type-subheading)}.chapter-heading>span{font-size:var(--type-caption)}.case-chapter{scroll-margin-top:94px;padding-bottom:30px;margin-bottom:30px}.case-chapter>p,.chapter-list{font-size:var(--type-caption);line-height:1.95}.chapter-list{padding-left:18px}.chapter-table-wrap{margin:21px 0}.chapter-table-wrap table{min-width:520px;font-size:var(--type-caption)}.chapter-table-wrap th,.chapter-table-wrap td{padding:12px}.chapter-note{padding:17px 18px;margin:22px 0}.chapter-note>p{font-size:var(--type-caption)}[id^=design-],#project-intro{scroll-margin-top:94px}}

@media(max-width:600px){.chapter-table-wrap::before{content:"左右滑动查看完整表格";display:block;position:sticky;left:0;padding:9px 12px;background:var(--panel);color:var(--muted);font-size:var(--type-caption);border-bottom:1px solid var(--line)}}
/* Responsive figures redrawn from the project's original diagrams and imagery. */
.review-visual{margin:28px 0;border:1px solid var(--line);border-radius:12px;padding:25px;background:radial-gradient(ellipse at 100% 0,#222a1e,transparent 75%),var(--panel);color:var(--soft);min-width:0}.rv-heading{margin-bottom:23px}.rv-heading>span{font-size:var(--type-caption);letter-spacing:1.2px;color:var(--muted)}.rv-heading>h3{font-size:var(--type-subheading);line-height:1.6;font-weight:500;color:var(--text);margin-top:7px}.review-visual figcaption{font-size:var(--type-caption);color:var(--muted);line-height:1.8;margin-top:20px;padding-top:15px;border-top:1px solid var(--line)}.rv-flow{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(var(--flow-count),minmax(0,1fr));gap:16px}.rv-node{position:relative;border:1px solid #3a4433;background:#20251d;border-radius:8px;padding:15px 12px;min-width:0}.rv-node:not(:last-child)::after{content:'→';position:absolute;right:-14px;top:50%;transform:translateY(-50%);font-size:var(--type-caption);color:#7a8b6a}.rv-node-accent{border-color:#8faa55;background:#26301e}.rv-node-num{font-size:var(--type-caption);color:#94a580}.rv-node-accent>.rv-node-num{color:var(--lime)}.rv-node h4{font-size:var(--type-caption);font-weight:500;color:var(--text);line-height:1.7;margin:8px 0 7px}.rv-node p{font-size:var(--type-caption);line-height:1.9;color:var(--muted)}.rv-emphasis{font-size:var(--type-caption);color:#bbd68e;line-height:1.9;margin-top:18px}.rv-browser,.rv-plugin{border:1px solid #46503e;border-radius:10px;background:#121611;overflow:hidden}.rv-window-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;background:#242b20;border-bottom:1px solid #384230;color:#b7c4ad;font-size:var(--type-caption)}.rv-window-bar strong{font-size:var(--type-caption);font-weight:500}.rv-window-bar>span:first-child:has(i){display:flex;gap:4px}.rv-window-bar i{height:4px;width:4px;border-radius:50%;background:#6a7b59}.rv-small-pill{font-size:var(--type-caption);border:1px solid #5b6a4b;padding:1px 6px;border-radius:3px}.rv-report-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:15px;padding:15px}.rv-annotation-label{font-size:var(--type-caption);color:var(--muted);margin-bottom:10px}.rv-example-dialog{border:1px solid #4e5b43;border-radius:13px;padding:25px 16px 18px;background:linear-gradient(135deg,#2c3726,#1d2519);position:relative;text-align:center}.rv-example-close{position:absolute;right:12px;top:8px;font-size:var(--type-body);color:#839177}.rv-product-symbol{display:grid;place-items:center;margin:0 auto 14px;width:50px;height:50px;background:#405532;border:1px solid #729055;border-radius:13px;color:var(--lime);font-size:var(--type-section)}.rv-example-dialog h4{font-size:var(--type-small);font-weight:500;color:var(--text);line-height:1.6}.rv-example-dialog>p{font-size:var(--type-caption);color:#8fa07e;margin-top:6px}.rv-marked-area{position:relative;border:1px solid #a9d971;background:#a9d9710c;padding:7px;margin-top:20px}.rv-marker{position:absolute;top:-7px;left:-7px;display:grid;place-items:center;width:15px;height:15px;background:var(--lime);color:#213015;border-radius:50%;font-size:var(--type-caption);z-index:1}.rv-example-button{display:block;background:#708f48;color:#eef6e6;font-size:var(--type-caption);padding:8px;border-radius:7px}.rv-marked-secondary{border-color:#738368;background:#73836812;font-size:var(--type-caption);color:#9ead90;margin-top:12px}.rv-marked-secondary .rv-marker{background:#829474;color:#101710}.rv-example-dialog>small{font-size:var(--type-caption);color:#89987c;display:block;margin-top:15px}.rv-issues-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:5px;margin-top:1px}.rv-issues-heading>strong{font-size:var(--type-caption);font-weight:500;color:var(--text)}.rv-issues-heading>span{font-size:var(--type-caption);color:var(--muted)}.rv-issue-filters{display:flex;gap:4px;flex-wrap:wrap;margin:12px 0}.rv-issue-filters button{font-size:var(--type-caption);padding:4px 7px;border:1px solid #3c4734;border-radius:99px;background:transparent;color:var(--muted)}.rv-issue-filters button[aria-pressed=true]{background:#354626;border-color:#7c9b50;color:var(--lime)}.rv-issue{display:flex;align-items:flex-start;gap:7px;padding:12px 9px;border:1px solid #3d4b32;border-radius:7px;background:#20291a;margin-top:8px}.rv-issue[hidden],[data-visual-mark][hidden]{display:none}.rv-issue-index{flex-shrink:0;width:15px;height:15px;display:grid;place-items:center;background:var(--lime);color:#243018;font-size:var(--type-caption);border-radius:50%}.rv-index-muted{background:#829474}.rv-issue b{font-size:var(--type-caption);font-weight:500;color:#d3dfc7;line-height:1.8}.rv-issue p{font-size:var(--type-caption);line-height:1.8;color:#8fa27c;margin-top:4px}.rv-issue small{font-size:var(--type-caption);color:#94a687;display:block;margin-top:8px}.rv-issue small.rv-status-confirmed{color:#b9d694}.rv-export-label{font-size:var(--type-caption);color:#98b779;border-top:1px solid #34402d;padding-top:12px;margin-top:14px}.rv-sync-root{display:grid;grid-template-columns:1fr 20px 1fr 20px 1.6fr;gap:10px;align-items:center}.rv-sync-source,.rv-sync-account{border:1px solid #414d37;background:#20271c;border-radius:8px;padding:18px 12px}.review-visual svg{height:23px;width:23px;color:#a6c67e}.rv-sync-root h4{font-size:var(--type-caption);font-weight:500;color:var(--text);margin:10px 0 7px}.rv-sync-root p{font-size:var(--type-caption);line-height:1.9;color:var(--muted)}.rv-connector{text-align:center;color:#8da176}.rv-sync-branches{display:grid;gap:12px;position:relative}.rv-sync-branches>div{padding:16px 13px;border:1px solid #506640;border-radius:8px;background:#242e1d}.rv-branch-name{font-size:var(--type-caption);color:#d2dfc5}.rv-sync-branches p{margin-top:5px;font-size:var(--type-caption)}.rv-sync-branches strong{display:block;color:#b1cf8b;font-size:var(--type-caption);font-weight:400;margin-top:8px}.rv-device-pair{display:grid;grid-template-columns:1fr 1.2fr;gap:25px;align-items:start}.rv-device-pair>div{min-width:0}.rv-device-kicker{font-size:var(--type-caption);letter-spacing:.3px;color:var(--muted);display:block;margin-bottom:17px}.rv-phone{border:2px solid #56624a;border-radius:28px;padding:11px 12px 14px;max-width:215px;margin:auto;background:#12180f;min-height:330px;display:flex;flex-direction:column}.rv-phone-top{display:flex;align-items:center;justify-content:space-between;font-size:var(--type-caption);color:#a5b796;padding:0 4px}.rv-phone-top i{height:10px;width:48px;border-radius:6px;background:#050704}.rv-upload-header{text-align:center;margin-top:23px}.rv-upload-header>small{font-size:var(--type-caption);letter-spacing:1px;color:#7d916d}.rv-upload-header h4{font-size:var(--type-small);font-weight:500;color:#dce8d0;margin-top:6px}.rv-upload-header p{font-size:var(--type-caption);color:#7d916d;margin-top:3px}.rv-phone-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:17px}.rv-phone-grid>div{position:relative}.rv-phone-grid>div>span{position:absolute;right:4px;bottom:4px;background:var(--lime);color:#27361a;border-radius:50%;width:12px;height:12px;display:grid;place-items:center;font-size:var(--type-caption)}.rv-thumb{border:1px solid #46553a;background:#26311e;min-width:0;position:relative;overflow:hidden;border-radius:5px}.rv-phone-grid .rv-thumb{height:81px}.thumb-form{padding:15px 8px;display:flex;flex-direction:column;gap:5px}.thumb-form i{height:5px;background:#4d6040;width:80%;border-radius:2px}.thumb-form b{height:9px;background:#8ead61;margin-top:4px;border-radius:2px}.thumb-art{background:radial-gradient(ellipse at 70% 20%,#566a3e,#28341f);display:grid;place-items:center}.thumb-art>span{font-size:var(--type-section);color:#b5cf8b}.thumb-art i{position:absolute;width:50%;height:4px;bottom:13%;background:#5d7441;border-radius:3px}.thumb-board{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:8px;background:#24301c}.thumb-board i{background:#4b5f36;border:1px solid #829b62;border-radius:3px}.thumb-board i:nth-child(2n){background:#6d8250}.rv-upload-bottom{margin-top:auto;padding-top:17px;text-align:center}.rv-upload-bottom>small{font-size:var(--type-caption);color:#7d916d}.rv-upload-bottom>div{display:grid;grid-template-columns:.7fr 1.3fr;gap:5px;margin-top:8px;font-size:var(--type-caption)}.rv-upload-bottom span{padding:8px 4px;background:#293320;border-radius:5px;color:#a9b99a}.rv-upload-bottom b{padding:8px 4px;background:var(--lime);color:#273819;border-radius:5px;font-weight:500}.rv-plugin{margin-top:7px}.rv-plugin-tabs{display:flex;justify-content:space-around;padding:12px 7px;border-bottom:1px solid #303c29;font-size:var(--type-caption);color:#7d916d;gap:5px}.rv-plugin-tabs>b{border:1px solid #859b64;border-radius:4px;padding:3px 8px;color:#c1d4a6;background:#303e23;font-weight:500}.rv-plugin-tabs>span{padding:4px}.rv-plugin-toolbar{display:flex;justify-content:space-between;padding:15px 12px 8px;font-size:var(--type-caption);color:#819772}.rv-import-all{margin:0 12px 10px;padding:10px;background:#394b29;color:var(--lime);text-align:center;font-size:var(--type-caption);border:1px solid #637f43;border-radius:5px}.rv-plugin-list{display:grid;gap:7px;padding:0 12px 13px}.rv-plugin-list>div{display:flex;gap:11px;align-items:center;padding:8px;border:1px solid #37462b;border-radius:6px;background:#1b2415}.rv-plugin-list .rv-thumb{width:40px;height:54px;flex-shrink:0}.rv-plugin-list b{font-size:var(--type-caption);font-weight:500;color:#c1d0b0;display:block}.rv-plugin-list small{font-size:var(--type-caption);color:#8ca375;display:block;margin-top:6px}.rv-device-note{font-size:var(--type-caption);line-height:1.8;color:var(--muted);margin-top:15px}.rv-skill-record{margin-top:23px;border:1px solid #45583a;border-radius:8px;overflow:hidden;background:#151c10}.rv-skill-status{display:flex;align-items:center;gap:12px;padding:16px;background:#28351f;border-bottom:1px solid #465b35}.rv-skill-status>div{display:grid;gap:3px}.rv-skill-status b{font-size:var(--type-caption);font-weight:500;color:#d3e4bd}.rv-skill-status span{font-size:var(--type-caption);color:#9cb782}.rv-skill-status small{margin-left:auto;font-size:var(--type-caption);color:#839c6d}.rv-record-row{display:grid;grid-template-columns:minmax(0,1fr) 55px 70px;gap:15px;padding:13px 16px;border-bottom:1px solid #2e3c24;align-items:center;font-size:var(--type-caption);line-height:1.8}.rv-record-row:last-child{border-bottom:0}.rv-record-head{background:#1d2815;font-size:var(--type-caption);color:#91a77b}.rv-record-row>b{font-weight:400;font-size:var(--type-caption);color:#b5ce8f}.rv-record-row>small{font-size:var(--type-caption);color:#879c73}.rv-mini-crop{height:29px;border:1px solid #677e4c;border-radius:3px;background:#2f4021;display:grid;gap:3px;padding:6px}.rv-mini-crop i{display:block;height:4px;background:#829b61;width:80%;border-radius:2px}.rv-mini-crop i:last-child{width:55%;background:#566f3d}.rv-repo-track{margin-top:22px;padding-top:19px;border-top:1px solid var(--line);display:flex;align-items:center;gap:15px;flex-wrap:wrap}.rv-repo-track>span:first-child{display:flex;align-items:center;gap:7px;font-size:var(--type-caption);color:#a4bb88}.rv-repo-track svg{height:17px;width:17px}.rv-commit-line{display:flex;align-items:center;gap:9px;font-size:var(--type-caption);color:#94a97c}.rv-commit-line i{width:8px;height:8px;background:#a9cf70;border-radius:50%;box-shadow:0 0 0 3px #a9cf7014}.rv-review-gate{margin-left:auto;font-size:var(--type-caption);color:#9cbf70}
@media(max-width:1100px){.rv-flow{gap:12px}.rv-node{padding:13px 9px}.rv-node:not(:last-child)::after{right:-11px;font-size:var(--type-caption)}.rv-node h4{font-size:var(--type-caption)}.rv-node p{font-size:var(--type-caption)}.rv-sync-root{gap:6px;grid-template-columns:1fr 12px 1fr 12px 1.5fr}.rv-sync-source,.rv-sync-account{padding:15px 9px}.rv-device-pair{gap:15px}}
@media(max-width:800px){.rv-flow{grid-template-columns:1fr;gap:18px}.rv-node{display:grid;grid-template-columns:24px 1fr;gap:2px 10px;padding:14px}.rv-node-num{grid-row:1/3;padding-top:3px}.rv-node h4{font-size:var(--type-caption);margin:0}.rv-node p{font-size:var(--type-caption);grid-column:2}.rv-node:not(:last-child)::after{content:'↓';left:25px;right:auto;top:auto;bottom:-18px;transform:none;font-size:var(--type-caption)}.rv-sync-root{display:flex;flex-direction:column;align-items:stretch;gap:10px}.rv-sync-source,.rv-sync-account{display:grid;grid-template-columns:25px 1fr;gap:3px 10px;padding:15px}.rv-sync-source svg,.rv-sync-account svg{grid-row:1/3}.rv-sync-root h4{margin:0;font-size:var(--type-caption)}.rv-sync-root p{grid-column:2;font-size:var(--type-caption)}.rv-connector{transform:rotate(90deg);line-height:1.1}.rv-sync-branches{grid-template-columns:1fr 1fr}.rv-sync-branches>div{padding:15px}.rv-sync-branches p{font-size:var(--type-caption)}.rv-sync-branches strong{font-size:var(--type-caption)}.rv-report-layout{grid-template-columns:1fr}.rv-device-pair{grid-template-columns:1fr}.rv-phone{width:215px;min-height:350px}.rv-plugin{max-width:350px;margin:0 auto}.rv-device-pair{gap:28px}.rv-device-kicker{font-size:var(--type-caption)}.rv-device-note{font-size:var(--type-caption)}.rv-issue b{font-size:var(--type-caption)}.rv-issue p{font-size:var(--type-caption)}.rv-issue small{font-size:var(--type-caption)}.rv-issues-heading>strong{font-size:var(--type-caption)}.rv-issue-filters button{font-size:var(--type-caption);padding:5px 10px}.rv-example-dialog{max-width:330px;margin:auto}.rv-review-gate{margin-left:0}}
@media(max-width:600px){.review-visual{padding:19px 16px;margin:24px 0;border-radius:10px}.rv-heading{margin-bottom:20px}.rv-heading>h3{font-size:var(--type-body);line-height:1.7}.rv-heading>span{font-size:var(--type-caption)}.review-visual figcaption{font-size:var(--type-caption);line-height:1.9}.rv-emphasis{font-size:var(--type-caption)}.rv-report-layout{padding:12px;gap:20px}.rv-window-bar{padding:10px 12px}.rv-window-bar>strong{font-size:var(--type-caption)}.rv-issues-heading>span{font-size:var(--type-caption)}.rv-issue{padding:12px 10px}.rv-issue b{font-size:var(--type-caption)}.rv-sync-branches{grid-template-columns:1fr}.rv-sync-branches>div{position:relative}.rv-sync-branches>div::before{content:'分流路径';font-size:var(--type-caption);color:#7e9668;display:block;margin-bottom:6px}.rv-branch-name{font-size:var(--type-caption)}.rv-device-kicker{font-size:var(--type-caption)}.rv-plugin-tabs{font-size:var(--type-caption)}.rv-phone{min-height:340px;width:210px}.rv-plugin-toolbar{font-size:var(--type-caption)}.rv-import-all{font-size:var(--type-caption)}.rv-plugin-list b{font-size:var(--type-caption)}.rv-plugin-list small{font-size:var(--type-caption)}.rv-skill-status{padding:14px 12px;gap:8px}.rv-skill-status b{font-size:var(--type-caption)}.rv-skill-status small{font-size:var(--type-caption)}.rv-record-row{grid-template-columns:minmax(0,1fr) 38px 48px;gap:8px;padding:12px 10px;font-size:var(--type-caption)}.rv-record-row>b,.rv-record-row>small{font-size:var(--type-caption)}.rv-record-head{font-size:var(--type-caption)}.rv-mini-crop{height:25px;padding:5px}.rv-repo-track{gap:15px}.rv-commit-line{gap:7px;font-size:var(--type-caption);flex-wrap:wrap}.rv-review-gate{font-size:var(--type-caption)}}

.rv-marked-area.rv-mark-muted{border-color:transparent;background:transparent}.rv-mark-muted .rv-marker{visibility:hidden}

.review-visual{scroll-margin-top:115px}@media(max-width:600px){.review-visual{scroll-margin-top:94px}}

.review-stage-heading{font-size:var(--type-heading);margin:40px 0 12px;letter-spacing:-.02em}
.review-source-image{margin:28px 0 38px;padding:14px;border:1px solid #394333;border-radius:20px;background:linear-gradient(135deg,#252c20,#141914);box-shadow:0 12px 36px #0002}
.review-source-image a{display:block;overflow:hidden;border-radius:11px;border:1px solid #ffffff12;background:#e9ece6}
.review-source-image img{display:block;width:100%;height:auto;transition:filter .2s}
.review-source-image a:hover img{filter:brightness(.97)}
.review-source-image figcaption{font-size:var(--type-caption);color:#9aa58f;padding:13px 3px 0;line-height:1.6}
@media(max-width:650px){.review-source-image{padding:7px;border-radius:13px;margin:20px 0 30px}.review-source-image a{border-radius:8px}.review-source-image figcaption{font-size:var(--type-caption);padding:10px 3px 3px}}
.cover-card-art{display:flex;align-items:center;justify-content:center;background:#0b1112;overflow:hidden}
.cover-card-art img{display:block;width:100%;height:100%;object-fit:contain}
/* The resume action shares the primary action's visual rhythm. */
.hero-resume{justify-content:center;gap:24px;min-height:48px;padding:11px 20px;border:1px solid #68785a;border-radius:9px;line-height:1.4;color:var(--soft);transition:background .2s,border-color .2s,color .2s}
.hero-resume:hover{background:#c3f36b0a;border-color:var(--lime);color:var(--lime)}
/* Expanded artwork fills the frame; original interface pixels stay in front. */
.cover-card-art{background:#0b1112 url('https://yuki52.com/assets/ai-card-cover-expanded.png') center/cover no-repeat}
.cover-card-art img{height:auto;max-height:100%;object-fit:contain;mask-image:linear-gradient(to bottom,transparent,black 3%,black 97%,transparent)}
.project-meta>span:first-child{color:#a7b994;font-size:var(--type-caption);letter-spacing:.5px}
.case-source-preview{display:block;margin-top:23px;border:1px solid #3c4734;border-radius:14px;padding:10px;background:#141a14;overflow:hidden}.case-source-preview img{display:block;width:100%;max-height:300px;object-fit:contain;border-radius:7px;background:#0b1110}.case-source-preview>span{display:flex;justify-content:space-between;gap:14px;font-size:var(--type-caption);color:#9da98f;padding:10px 4px 2px;line-height:1.7}.case-source-preview b{font-weight:400;white-space:nowrap;color:#bbd28e}
@media(max-width:650px){.hero-resume{min-height:44px;padding:10px 16px;font-size:var(--type-caption);gap:20px}.project-meta>span:first-child{font-size:var(--type-caption)}.case-source-preview{padding:7px;border-radius:10px}.case-source-preview>span{display:block;font-size:var(--type-caption)}.case-source-preview b{display:block;margin-top:4px}}

/* Stage one: a strip of product interface studies, distinct from the milestone diagram. */
.rv-web-flow .rv-storyboard {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.rv-web-flow .rv-story-step { display: flex; flex-direction: column; min-width: 0; }
.rv-web-flow .rv-screen {
  aspect-ratio: 190 / 118;
  display: grid;
  place-items: center;
  border: 1px solid #414b40;
  border-radius: 8px;
  background: radial-gradient(ellipse at 30% 85%, #344031, transparent 75%), #242a26;
}
.rv-web-flow .rv-story-step:nth-child(even) .rv-screen {
  background: radial-gradient(ellipse at 75% 20%, #343345, transparent 78%), #252729;
}
.rv-web-flow .rv-screen svg { display: block; width: 100%; height: auto; }
.rv-web-flow .rv-story-copy {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  margin-top: 18px;
}
.rv-web-flow .rv-story-title { display: flex; align-items: baseline; gap: 9px; }
.rv-web-flow .rv-story-number {
  flex: none;
  color: var(--lime);
  font-size: var(--type-caption);
  letter-spacing: .08em;
  font-variant-numeric: tabular-nums;
}
.rv-web-flow .rv-story-copy h4 {
  margin: 0;
  color: var(--text);
  font-size: var(--type-small);
  line-height: 1.45;
}
.rv-web-flow .rv-story-feature {
  display: inline-block;
  margin-top: auto;
  padding: 4px 8px;
  border: 1px solid #506345;
  border-radius: 5px;
  background: #283423;
  color: #c7dfa8;
  font-size: var(--type-caption);
  line-height: 1.5;
}
.rv-web-flow .rv-story-copy p { margin: 9px 0 11px; color: var(--soft); font-size: var(--type-caption); line-height: 1.75; }
@media (max-width: 1000px) {
  .rv-web-flow .rv-storyboard { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 26px 20px; }
  .rv-web-flow .rv-screen svg { max-width: 240px; }
}
@media (max-width: 600px) {
  .rv-web-flow .rv-storyboard { grid-template-columns: 1fr; gap: 16px; }
  .rv-web-flow .rv-story-step {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    align-items: start;
    gap: 12px;
  }
  .rv-web-flow .rv-story-step + .rv-story-step { padding-top: 16px; border-top: 1px solid var(--line); }
  .rv-web-flow .rv-story-copy { margin-top: 0; }
}

.rv-pe {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
  align-items: stretch;
  gap: clamp(20px, 3vw, 40px);
}
.rv-pe .rv-heading { margin-bottom: 9px; }
.rv-pe-rules {
  display: grid;
  gap: 10px;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}
.rv-pe-rules li { padding: 9px 0 0 12px; border-top: 1px solid var(--line); position: relative; }
.rv-pe-rules li::before {
  content: "";
  position: absolute;
  top: 16px;
  left: 0;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--lime);
}
.rv-pe-rules h4 { color: var(--text); font-size: var(--type-caption); line-height: 1.5; }
.rv-pe-rules p { margin-top: 4px; color: var(--soft); font-size: var(--type-caption); line-height: 1.7; }
.rv-pe-snippet { display: flex; flex-direction: column; min-width: 0; min-height: 0; contain: size; border: 1px solid #394238; border-radius: 10px; overflow: hidden; background: #111512; }
.rv-pe-snippet-bar {
  display: flex;
  flex: none;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border-bottom: 1px solid #394238;
  background: #1d241e;
  color: var(--text);
  font-size: var(--type-caption);
}
.rv-pe-snippet-bar span + span { color: #a0ae9e; font: var(--type-caption) ui-monospace, monospace; letter-spacing: .08em; }
.rv-pe-snippet pre { flex: 1; min-height: 0; overflow: auto; margin: 0; padding: 12px 14px 14px 0; white-space: normal; }
.rv-pe-snippet pre:focus-visible { outline: 1px solid var(--lime); outline-offset: -3px; }
.rv-pe-snippet code { color: #d2d9cf; font: var(--type-caption)/1.7 ui-monospace, "SFMono-Regular", Consolas, monospace; }
.rv-pe-line { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: baseline; }
.rv-pe-line-num { color: #859283; text-align: right; padding-right: 10px; user-select: none; }
.rv-pe-line-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.rv-pe-token { color: var(--lime); }
@media (max-width: 850px) {
  .rv-pe { grid-template-columns: 1fr; gap: 22px; }
  .rv-pe-snippet { contain: none; }
  .rv-pe-snippet pre { flex: auto; max-height: 16rem; }
}

/* Shared case study reading rhythm */
.case-reading {
  --case-gap-caption: 8px;
  --case-gap-text: 16px;
  --case-gap-media: 24px;
  --case-gap-group: 32px;
  --case-gap-chapter: 48px;
}
.case-reading .chapter-heading { margin-bottom: var(--case-gap-media); }
.case-reading .case-chapter { padding-bottom: var(--case-gap-chapter); margin-bottom: var(--case-gap-chapter); }
.case-reading .case-chapter:last-child { margin-bottom: 0; }
.case-reading .case-chapter > p + p { margin-top: var(--case-gap-text); }
.case-reading .review-source-image, .case-reading .review-visual { margin-block: var(--case-gap-media); }
.case-reading .review-source-image figcaption { padding-top: var(--case-gap-caption); }

/* AI card game retrospective */
.card-case-body, .card-case-column { display: grid; gap: var(--case-gap-text); min-width: 0; }
.card-case-reading { --case-gap-chapter: clamp(56px, 7vw, 104px); }
.card-case-body { gap: clamp(44px, 6vw, 80px); }
.card-case-column { gap: 20px; }
.card-case-column > h3 + .card-case-group,
.card-case-column > .card-case-rounds { margin-top: 8px; }
.card-case-group { min-width: 0; }
.card-case-group.is-feature {
  padding-block: var(--case-gap-media);
  border-block: 1px solid var(--line);
}
.card-case-group.is-split {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: var(--case-gap-media);
  align-items: start;
}
.card-case-column > h3 { margin: 0; font-size: var(--type-subheading); line-height: 1.45; font-weight: 500; }
.card-case-column > h3:not(:first-child) { margin-top: var(--case-gap-text); }
.card-case-prose { margin: 0; color: var(--soft); font-size: var(--type-body); line-height: 1.85; white-space: pre-line; }
.card-case-callout {
  margin: 0;
  padding: 4px 0 4px 18px;
  border-left: 2px solid #687761;
}
.card-case-callout h4 { margin: 0 0 var(--case-gap-caption); color: var(--lime); font-size: var(--type-caption); }
.card-case-callout p { margin: 0; color: var(--text); font-size: var(--type-body); line-height: 1.75; white-space: pre-line; }
#project-intro .is-feature .card-case-callout p, #card-takeaway .card-case-callout p { font-size: var(--type-subheading); line-height: 1.55; }
.card-case-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 148px), 1fr));
  gap: var(--case-gap-text);
  padding: 0;
  margin: 0;
  list-style: none;
}
.card-case-cards li { min-width: 0; padding: var(--case-gap-caption) 0 0; border-top: 1px solid #4c5745; }
.card-case-cards.is-steps li { border-top-color: #677950; }
.card-case-cards.is-facts li { padding: var(--case-gap-caption) var(--case-gap-text); border: 1px solid var(--line); border-radius: 8px; background: var(--panel); }
.card-case-cards strong { color: var(--text); font-size: var(--type-body); font-weight: 600; }
.card-case-cards.is-facts strong, .card-case-cards.is-steps strong { color: var(--lime); }
.card-case-cards p { margin: var(--case-gap-caption) 0 0; color: var(--soft); font-size: var(--type-small); line-height: 1.75; white-space: pre-line; }
.card-case-media {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--case-gap-text);
  padding: var(--case-gap-text);
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--panel);
}
.card-case-column > :not(:first-child).card-case-media { margin-top: var(--case-gap-caption); }
.card-case-media[data-columns="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.card-case-media[data-columns="3"] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.card-case-media[data-columns="4"] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.card-case-media figure { margin: 0; min-width: 0; }
.card-case-media a { display: grid; place-items: center; background: #0c0e0c; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
.card-case-media img { display: block; max-width: 100%; max-height: 640px; width: auto; height: auto; }
.card-case-media figcaption { padding-top: var(--case-gap-caption); color: var(--muted); font-size: var(--type-caption); }
.card-case-jump { justify-self: start; }
.card-case-diagram, .card-case-rounds { display: grid; list-style: none; margin: 0; padding: 0; }
.card-case-diagram { grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 24px; }
.card-case-diagram li {
  position: relative;
  display: grid;
  align-content: center;
  gap: 8px;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel);
}
.card-case-diagram small, .card-case-rounds small { color: var(--lime); font-size: var(--type-caption); }
.card-case-diagram strong { color: var(--text); font-size: var(--type-body); line-height: 1.5; }
.card-case-diagram:not(.is-facts) li + li::before {
  content: "→";
  position: absolute;
  inset-inline-start: -24px;
  top: 50%;
  width: 23px;
  transform: translateY(-50%);
  text-align: center;
  color: var(--muted);
}
.card-case-diagram.is-formula li:nth-child(2)::before { content: "+"; }
.card-case-diagram.is-formula li:nth-child(3)::before { content: "="; }
.card-case-diagram.is-formula li:last-child { border-color: #607444; background: #252e1c; }
.card-case-diagram.is-formula li:last-child strong { color: var(--lime); }
.card-case-details { min-width: 0; border-top: 1px solid var(--line); }
.card-case-details summary { cursor: pointer; color: var(--soft); font-size: var(--type-small); padding-block: 12px; }
.card-case-details summary:hover { color: var(--lime); }
.card-case-details[open] > .card-case-column { padding-bottom: 12px; }
.card-case-group.card-case-overview { align-items: stretch; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.card-case-overview .card-case-media {
  padding: 0;
  border: 0;
  background: none;
}
.card-case-overview .card-case-diagram {
  grid-auto-flow: row;
  grid-auto-columns: auto;
  grid-auto-rows: 1fr;
  gap: 10px;
}
.card-case-overview .card-case-diagram li {
  grid-template-columns: 4.5em minmax(0, 1fr);
  align-items: baseline;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  padding: 10px 0;
  background: none;
}
.card-case-overview .card-case-diagram li + li::before {
  content: "↓";
  inset: -12px 0 auto auto;
  transform: none;
  background: var(--bg);
  line-height: 22px;
}
.card-case-rounds { gap: 0; }
.card-case-rounds > li {
  position: relative;
  padding: 24px 0 32px 24px;
  border-left: 1px solid var(--line);
}
.card-case-rounds > li:last-child { padding-bottom: 0; }
.card-case-rounds > li + li::before {
  content: "↓";
  position: absolute;
  inset: -12px auto auto 0;
  transform: translateX(-50%);
  color: var(--muted);
  background: var(--bg);
}
.card-case-rounds h4 { margin: 0; color: var(--text); font-size: var(--type-body); font-weight: 600; }
.card-case-rounds > li > h4 { margin-bottom: 16px; }
.card-case-turns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
.card-case-turn {
  position: relative;
  display: grid;
  align-content: start;
  gap: 8px;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 10px;
}
.card-case-turn.is-ai { background: #1a1e22; border-color: #353d45; }
.card-case-turn.is-ai small { color: #a9c4dc; }
.card-case-turn.is-ai::before {
  content: "→";
  position: absolute;
  top: 20px;
  left: -32px;
  width: 32px;
  text-align: center;
  color: var(--muted);
}
.card-case-turn p, .card-case-diagram p { margin: 0; color: var(--soft); font-size: var(--type-small); line-height: 1.65; }
.card-case-choices { display: grid; gap: 6px; margin: 0; padding-left: 1.1em; color: var(--soft); font-size: var(--type-small); }
.card-case-diagram:is(.is-derivation, .is-production) li {
  align-content: start;
  padding: 14px 0 0;
  border: 0;
  border-top: 1px solid var(--line);
  border-radius: 0;
  background: none;
}
.card-case-diagram:is(.is-derivation, .is-production) li + li::before { top: 26px; }
.card-case-diagram.is-derivation li:last-child strong { color: var(--lime); }
.card-case-output { margin-top: 4px; color: var(--muted); font-size: var(--type-caption); }
@media (max-width: 700px) {
  .case-reading { --case-gap-chapter: 32px; --case-gap-group: 24px; }
  .card-case-group.is-split { grid-template-columns: minmax(0, 1fr); }
  .card-case-reading { --case-gap-chapter: 48px; }
  .card-case-group.card-case-overview { grid-template-columns: minmax(0, 1fr); }
  .card-case-overview .card-case-diagram li + li::before { inset: -12px 0 auto auto; }
  .card-case-turns { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .card-case-turn.is-ai::before { content: "↓"; inset: -24px auto auto 10px; line-height: 24px; }
  .card-case-diagram:is(.is-derivation, .is-production) { gap: 24px; }
  .card-case-diagram:is(.is-derivation, .is-production) li + li::before { inset: -20px 0 auto auto; }

  .card-case-media[data-columns="3"], .card-case-media[data-columns="4"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .card-case-media { gap: var(--case-gap-caption); padding: var(--case-gap-caption); }
  .card-case-media img { max-height: 480px; }
  .card-case-diagram { grid-auto-flow: row; grid-auto-columns: auto; gap: 16px; }
  .card-case-diagram:not(.is-facts) li + li::before { content: "↓"; inset: -16px auto auto 16px; transform: none; line-height: 16px; }
  .card-case-diagram.is-formula li:nth-child(2)::before { content: "+"; }
  .card-case-diagram.is-formula li:nth-child(3)::before { content: "="; }
}

/* Portfolio homepage and resume. */
.portfolio-icon { display: inline-block; vertical-align: middle; flex: none; }
.email-link .portfolio-icon { margin-left: auto; }
.hero h1 { margin-bottom: 38px; }
.hero-actions { gap: 20px; margin-top: 48px; }
.hero-actions .primary-button { padding: 12px 20px; font-size: var(--type-small); line-height: 1.7; }
.hero-actions .hero-resume { width: 124px; min-height: 0; padding: 11px 20px; font-size: var(--type-small); line-height: 1.4; }
.hero-bottom > .hero-profile > .hero-bio { font-size: var(--type-body); }
.hero-career { padding: 0; border: 0; }
.hero-career ol {
  --timeline-gap: 10px;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--timeline-gap);
  margin-top: 10px;
  padding-left: 24px;
}
.hero-career li { display: grid; gap: 2px; position: relative; padding: 0; border: 0; }
.hero-career li:not(:last-child)::after {
  content: '';
  position: absolute;
  top: 7.5px;
  bottom: calc(-7.5px - var(--timeline-gap));
  left: -20px;
  border-left: 1px solid #c3f36b42;
}
.hero-career li::before { content: ''; position: absolute; z-index: 1; left: -22px; top: 5px; width: 5px; height: 5px; background: var(--text); transform: rotate(45deg); }
.hero-career li:first-child::before { background: var(--lime); }
.hero-career li:first-child time, .hero-career li:first-child > span { color: var(--lime); }
.hero-career time, .hero-career small { margin: 0; padding: 0; min-height: 0; max-width: none; }
.hero-career li > span { line-height: 1.45; }
.hero-end > span:last-child { display: inline-flex; align-items: center; gap: 4px; }
.project-copy > h3 { margin-top: 0; }
.project.featured h3 { margin-top: 38px; }
.project-copy > p.project-highlight, .featured .project-copy > p.project-highlight { color: var(--lime); }
.project-copy > p:not(.project-highlight) { max-width: none; }
.project-tags { padding-right: 0; }
.featured .cover-card-art img { width: auto; max-width: 100%; max-height: 90%; mask-image: none; }
.cover-review-art img { display: block; width: 100%; height: 100%; object-fit: cover; }
.resume-page .resume-subtitle { color: var(--lime); }
.resume-page .resume-summary { max-width: 100%; }
.resume-page .experience > .experience-item > div > p { color: var(--text); }
.resume-highlights strong { color: var(--text); font-weight: inherit; }
@media print {
  .resume-highlights strong { color: #222; font-weight: 600; }
}
.resume-page .outline-button { border-radius: 6px; }
.resume-tools .back-link, .footer a:last-child { display: inline-flex; align-items: center; gap: 5px; }
@media (max-width: 720px) {
  .hero h1 { margin-bottom: 30px; }
  .hero-actions { margin-top: 24px; }
  .hero-bottom > .hero-profile > .hero-bio { font-size: var(--type-caption); }
  .hero-career { margin-top: 28px; }
  .project.featured h3 { margin-top: 0; }
  .cover-review-art { height: auto; aspect-ratio: 1670 / 942; }
}
