@charset "UTF-8";
/* Design tokens: porcelain / ink / pine. No external fonts or UI dependencies. */
:root{
 --color-paper:#f5f5f1;--color-white:#fff;--color-ink:#24312c;--color-body:#45534c;--color-muted:#58645c;
 --color-accent:#315e4d;--color-accent-hover:#234736;--color-tint:#e8eee7;--color-blue:#e8edf0;--color-sand:#f0e9de;
 --color-line:#d5dcd3;--color-focus:#a4522c;--color-inverse:#fff;--color-note:#edf1eb;
 --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--space-10:8rem;
 --radius-sm:4px;--radius-md:10px;--radius-lg:16px;--border:1px solid var(--color-line);--shadow-dialog:0 24px 80px #17271c26;
 --font-sans:Inter,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;--font-serif:Georgia,"Times New Roman",serif;--font-mono:Consolas,monospace;
 --text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.5rem;--text-h2:clamp(1.875rem,3vw,2.75rem);--text-hero:clamp(3.5rem,5.3vw,5rem);
 --weight-normal:400;--weight-medium:500;--weight-bold:650;--leading-body:1.85;--leading-heading:1.35;
 --container:1160px;--gutter:48px;--section-space:104px;--motion:180ms ease;
 color-scheme:light;font-family:var(--font-sans);font-synthesis:none;color:var(--color-ink);background:var(--color-paper);scroll-behavior:smooth;scroll-padding-top:112px
}
*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--color-focus);outline-offset:5px}::selection{background:#d7e3d4;color:var(--color-ink)}[hidden]{display:none!important}img{max-width:100%}h1,h2,h3,p{margin-top:0}h2{font-size:var(--text-h2);font-weight:var(--weight-medium);letter-spacing:-.035em;line-height:var(--leading-heading);margin-bottom:0}h3{font-weight:var(--weight-medium)}.wrap,.header-inner{width:min(var(--container),calc(100% - var(--gutter)*2));margin-inline:auto}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--color-ink);color:white;padding:12px}.skip:focus{top:16px}.eyebrow{font:var(--text-xs)/1.6 var(--font-mono);letter-spacing:.13em;color:var(--color-muted);margin-bottom:24px}.heading-translation{display:block;font:italic 1.1em/1.3 var(--font-serif);color:var(--color-accent);letter-spacing:-.025em;margin-top:4px}.accent{color:var(--color-accent)}
/* Stable, solid navigation */
.header{position:sticky;top:0;z-index:20;background:var(--color-paper);border-bottom:var(--border)}.header-inner{min-height:82px;display:flex;justify-content:space-between;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:17px;flex-shrink:0}.brand-name{font-size:1.15rem;font-weight:650;letter-spacing:.1em}.brand-sub{font:var(--text-xs)/1.5 var(--font-mono);letter-spacing:.065em;color:var(--color-muted);border-left:var(--border);padding-left:17px}.header nav{display:flex;align-items:center;gap:26px}.header nav a{font-size:var(--text-sm);line-height:2;position:relative;color:var(--color-body)}.header nav a:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--color-accent);transform:scaleX(0);transition:transform var(--motion);transform-origin:left}.header nav a.active{color:var(--color-accent)}.header nav a.active:after{transform:scaleX(1)}.nav-contact{display:flex;align-items:center;gap:17px;font-size:var(--text-xs);padding:10px 0 10px 22px;border-left:var(--border)}.menu-toggle{display:none}
/* Identity and an immediate route into the work */
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:80px;padding-block:76px 70px;align-items:center}.hero .eyebrow{display:flex;gap:24px;margin-bottom:28px}.intro{font-size:1rem;color:var(--color-body);margin-bottom:12px}.hero h1{font-size:var(--text-hero);line-height:1.12;letter-spacing:-.065em;font-weight:var(--weight-medium);margin-bottom:24px}.hero-name-en{font:italic .64em/1.35 var(--font-serif);letter-spacing:-.025em;display:block;margin-top:6px;color:var(--color-accent)}.hero-role{font-size:1.5rem;font-weight:500;margin-bottom:22px;display:flex;align-items:center;gap:18px}.role-note{font-size:var(--text-xs);font-weight:400;padding-left:16px;border-left:var(--border);color:var(--color-muted)}.hero-description{color:var(--color-body);font-size:var(--text-base);line-height:var(--leading-body);max-width:530px;margin-bottom:28px}.hero-actions{display:flex;align-items:center;gap:30px}.button{display:inline-flex;align-items:center;justify-content:center;gap:27px;min-height:48px;padding:13px 21px;font-size:var(--text-sm);font-weight:500;border:1px solid transparent;border-radius:var(--radius-sm);transition:background var(--motion),color var(--motion),border-color var(--motion)}.primary{background:var(--color-ink);color:var(--color-inverse)}.secondary{color:var(--color-ink);background:transparent;border-color:var(--color-line)}.text-link{font-size:var(--text-sm);display:inline-flex;gap:17px;align-items:center;border-bottom:1px solid var(--color-ink);padding-block:9px}.hero-index{background:var(--color-tint);border-radius:var(--radius-md);padding:32px 32px 22px;align-self:center}.index-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:26px}.index-heading .eyebrow{margin:0}.index-heading>span{font:var(--text-xs) var(--font-mono);color:var(--color-muted)}.hero-index h2{font-size:clamp(1.75rem,2.3vw,2rem);letter-spacing:-.03em;line-height:1.5;margin-bottom:14px}.index-description{font-size:var(--text-sm);color:var(--color-muted);margin-bottom:28px}.index-item{display:grid;grid-template-columns:24px 1fr 18px;align-items:center;gap:12px;min-height:67px;border-top:1px solid #c9d4c9;padding-block:15px;transition:color var(--motion)}.index-number{font:var(--text-xs) var(--font-mono);color:var(--color-muted)}.index-item strong{font-size:var(--text-sm);font-weight:500;line-height:1.65}.index-arrow{transition:transform var(--motion)}.index-foot{padding-top:24px;display:flex;flex-wrap:wrap;gap:9px 16px;border-top:1px solid #c9d4c9;font-size:var(--text-xs);color:var(--color-muted)}.ticker{width:min(var(--container),calc(100% - var(--gutter)*2));margin:auto;border-block:var(--border)}.ticker>div{display:grid;grid-template-columns:1fr 1fr 1fr 1.3fr;gap:24px;padding-block:25px}.ticker i{display:none}.ticker>div>span{font-size:var(--text-sm);font-weight:500}.ticker small{display:block;font-size:var(--text-xs);font-weight:400;color:var(--color-muted);margin-top:8px}
/* Work: one flagship, two supporting case studies */
.section{padding-block:var(--section-space)}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:40px}.section-heading .eyebrow{margin-bottom:16px}.section-note{font-size:var(--text-sm);line-height:var(--leading-body);color:var(--color-muted);margin:0;max-width:320px}.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:36px;row-gap:64px}.work-card{min-width:0;scroll-margin-top:20px}.work-card.featured{grid-column:1/-1;display:grid;grid-template-columns:1.28fr 1fr;align-items:stretch;background:var(--color-white);border:var(--border);border-radius:var(--radius-md);overflow:hidden}.work-visual{min-height:330px;display:flex;flex-direction:column;padding:25px 28px 18px;background:var(--color-blue);border-radius:var(--radius-md);color:var(--color-ink)}.featured .work-visual{background:#dfe8df;border-radius:0;min-height:470px;padding:28px 34px 22px}.cover-experiment{background:var(--color-sand)}.cover-heading,.cover-caption{display:flex;justify-content:space-between;align-items:center;gap:14px;font:var(--text-xs)/1.6 var(--font-mono);color:var(--color-body)}.cover-heading{letter-spacing:.03em}.cover-index{font-size:1rem}.cover-caption{margin-top:auto;padding-top:22px;font-family:var(--font-sans);color:var(--color-muted)}.cover-caption>span:last-child{font:var(--text-xs) var(--font-mono);letter-spacing:.015em}.agent-diagram{margin-block:auto;padding-top:32px;padding-bottom:10px}.diagram-label{font-size:var(--text-xs);color:var(--color-muted);display:block;margin-bottom:10px}.intent-line strong{font-size:clamp(1.4rem,2vw,1.8rem);font-weight:500;line-height:1.55;letter-spacing:-.025em}.agent-path{display:flex;align-items:center;gap:12px;margin:26px 0 14px}.agent-path>div{flex:1;min-width:0;border-top:1px solid #a8bba7;padding-top:13px}.agent-path>div>span{font:var(--text-xs) var(--font-mono);color:var(--color-muted)}.agent-path b{font-weight:500;font-size:var(--text-sm);display:block;margin:8px 0 5px}.agent-path small{font-size:var(--text-xs);color:var(--color-muted);line-height:1.7;display:block}.agent-path i{font-size:1rem;font-style:normal;color:#627761}.action-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--color-accent);color:white;padding:16px;border-radius:var(--radius-sm);font-size:var(--text-xs);margin-top:22px}.action-bar b{font-size:var(--text-sm);font-weight:500}.task-labels{display:flex;gap:14px;flex-wrap:wrap;margin-top:15px;color:#50644e;font-size:var(--text-xs)}.rule-diagram,.growth-diagram{padding-block:25px 8px}.rule-diagram>p,.growth-diagram>p{font-size:1.65rem;line-height:1.5;letter-spacing:-.03em;margin-bottom:24px}.rule-inputs{display:flex;gap:8px}.rule-inputs span{border:1px solid #b7c8cf;border-radius:var(--radius-sm);padding:8px 14px;font-size:var(--text-sm)}.rule-line{margin-top:20px;border-top:1px solid #b7c8cf;display:flex;align-items:center;justify-content:space-between;padding-top:15px;font-size:var(--text-sm)}.rule-line i{font-style:normal}.growth-steps{display:flex;align-items:flex-start;gap:8px}.growth-steps>div{flex:1;border-top:1px solid #bcab92;padding:12px 0}.growth-steps>div:nth-child(2){margin-top:14px}.growth-steps>div:nth-child(3){margin-top:28px}.growth-steps span{font:var(--text-xs) var(--font-mono);color:#6d5e47}.growth-steps b{display:block;margin:8px 0;font-size:1.15rem;font-weight:500}.growth-steps small{font-size:var(--text-xs);color:#6d5e47;line-height:1.65;display:block}.work-body{padding:26px 0 0;display:flex;flex-direction:column}.featured .work-body{padding:38px 36px 28px}.work-category{font:var(--text-xs)/1.6 var(--font-mono);letter-spacing:.06em;color:var(--color-muted);margin-bottom:13px}.work-body h3{font-size:1.5rem;line-height:1.5;letter-spacing:-.03em;margin-bottom:15px}.featured .work-body h3{font-size:1.8rem}.project-summary{font-size:var(--text-base);line-height:var(--leading-body);color:var(--color-body);margin-bottom:24px}.project-outcome{display:flex;gap:18px;align-items:center;padding-block:17px;border-top:var(--border);margin-top:auto;margin-bottom:16px}.project-metric{font:400 2rem/1.2 var(--font-mono);letter-spacing:-.07em;color:var(--color-accent);white-space:nowrap}.featured .project-outcome{display:block}.featured .project-metric{font-size:2.3rem}.project-metric-label{font-size:var(--text-xs);line-height:1.75;color:var(--color-muted);margin:0;max-width:210px}.featured .project-metric-label{margin-top:8px;max-width:none}.tags{display:flex;gap:8px 14px;flex-wrap:wrap}.tag{font-size:var(--text-xs);color:var(--color-muted);line-height:1.6}.tag:not(:last-child):after{content:"/";margin-left:14px;color:#b0b9af}.case-button{display:flex;align-items:center;justify-content:space-between;gap:15px;width:100%;padding:17px 0 13px;margin-top:22px;border:0;border-top:var(--border);background:transparent;color:var(--color-ink);font-size:var(--text-sm);text-align:left;transition:color var(--motion)}.case-button>span{font-size:1.25rem;transition:transform var(--motion)}.project-period{font:var(--text-xs)/1.5 var(--font-mono);color:var(--color-muted);margin:8px 0 0}.evidence-note,.draft-note{font-size:var(--text-xs);line-height:var(--leading-body);color:var(--color-muted);max-width:840px;margin:30px 0 0}
/* Supporting information gets quieter, open layouts */
.approach-section{background:#ecefe9;border-block:var(--border)}.architecture{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));margin:44px 0 54px;border-block:1px solid #cbd5c7;padding-block:22px}.architecture>span{font:var(--text-xs) var(--font-mono);color:var(--color-muted);padding-inline:18px;border-left:1px solid #cbd5c7;display:flex;flex-direction:column;gap:12px;min-width:0}.architecture>span:first-child{padding-left:0;border:0}.architecture b{font:500 1.05rem var(--font-sans);color:var(--color-ink)}.architecture small{font:var(--text-xs)/1.8 var(--font-sans)}.process-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px}.step{font:var(--text-xs) var(--font-mono);color:var(--color-muted);display:flex;gap:15px;flex-wrap:wrap}.process-grid h3{font-size:var(--text-lg);margin:23px 0 14px;letter-spacing:-.025em}.process-grid p{font-size:var(--text-base);line-height:1.9;color:var(--color-body);margin:0}.experience-section{display:grid;grid-template-columns:.9fr 1.45fr;gap:52px 78px}.experience-intro h2{font-size:2.25rem}.experience-intro>p:not(.eyebrow){margin-block:24px;font-size:var(--text-base);line-height:var(--leading-body);color:var(--color-body)}.resume-link{margin-top:10px}.timeline article{padding-block:0 30px;margin-bottom:28px;border-bottom:var(--border)}.timeline article:last-child{margin-bottom:0;padding-bottom:0;border:0}.period{font:var(--text-xs)/1.5 var(--font-mono);color:var(--color-muted);margin-bottom:12px}.timeline h3{font-size:1.3rem;line-height:1.5;margin-bottom:8px}.organization{font-size:var(--text-sm);color:var(--color-muted);margin-bottom:15px}.description{font-size:var(--text-base);color:var(--color-body);line-height:var(--leading-body);margin:0}.education{grid-column:1/-1;display:grid;grid-template-columns:1.1fr 1fr 1fr;border-top:var(--border);padding-top:36px;gap:40px;margin-top:10px}.education .eyebrow{margin-bottom:12px}.education h3{font-size:1.25rem;margin:0}.education strong{font-size:var(--text-base);font-weight:500}.education p{font-size:var(--text-xs);color:var(--color-muted);margin:12px 0}.education span{font:var(--text-sm) var(--font-mono);color:var(--color-accent)}
/* Personal photography as a quiet editorial spread */
.photography-section{padding-top:32px;padding-bottom:100px}.photo-grid{display:grid;grid-template-columns:1.12fr .85fr;align-items:start;gap:80px}.photo-grid figure{margin:0}.photo-grid figure:last-child{margin-top:108px}.photo-grid a{display:block;background:#e3e7df;overflow:hidden;border-radius:var(--radius-sm)}.photo-grid img{display:block;width:100%;height:auto;transition:transform 400ms ease}.photo-grid figcaption{display:flex;justify-content:space-between;gap:15px;padding-top:15px;font-size:var(--text-xs);line-height:1.6;color:var(--color-muted)}.contact-section{padding-block:48px 52px;border-top:2px solid var(--color-ink);border-bottom:var(--border)}.contact-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.contact-top .eyebrow{margin:0}.contact-label{font:var(--text-xs) var(--font-mono);color:var(--color-muted)}.contact-section h2{font-size:clamp(2rem,4.2vw,3.6rem);line-height:1.45;font-weight:400;letter-spacing:-.035em}.contact-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-top:28px}.contact-bottom p{font-size:var(--text-base);color:var(--color-body);line-height:var(--leading-body);margin-bottom:16px}.email-address{display:inline-block;font:var(--text-base)/1.6 var(--font-mono);border-bottom:1px solid var(--color-ink);overflow-wrap:anywhere}.contact-buttons{display:flex;gap:10px;flex-wrap:wrap}.contact-pending{color:var(--color-muted);font-size:var(--text-sm)}.footer{display:flex;justify-content:space-between;align-items:center;gap:25px;padding-block:28px 35px;font-size:var(--text-xs);color:var(--color-muted)}.footer>span:nth-child(2){font-family:var(--font-mono);letter-spacing:.025em}
/* Accessible case study reading surface */
dialog{width:min(780px,calc(100% - 40px));max-height:88dvh;padding:28px 38px 36px;border:var(--border);border-radius:var(--radius-md);background:var(--color-white);color:var(--color-ink);box-shadow:var(--shadow-dialog);overflow:auto;overscroll-behavior:contain}dialog::backdrop{background:#18271c66}.dialog-top{position:sticky;top:-28px;display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--color-white);padding-block:10px 16px;border-bottom:var(--border);z-index:2}.dialog-top .eyebrow{margin:0}.icon-button{border:var(--border);border-radius:var(--radius-sm);background:var(--color-white);color:var(--color-ink);width:44px;height:44px;flex-shrink:0;font-size:1.65rem;line-height:1}.case-status{font:var(--text-xs)/1.7 var(--font-mono);color:var(--color-accent);margin:26px 0 14px}dialog h2{font-size:1.8rem;line-height:1.5;margin-bottom:18px}#case-summary{font-size:var(--text-base);color:var(--color-body);line-height:var(--leading-body)}#case-details section{border-top:var(--border);margin-top:28px;padding-top:20px}#case-details h3{font-size:var(--text-lg);margin-bottom:12px}#case-details p{font-size:var(--text-base);line-height:1.95;color:var(--color-body);margin-bottom:0}#case-details .case-note{font-size:var(--text-sm);padding:16px 20px;background:var(--color-note);margin-top:28px;border-left:2px solid #9cad95}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:50;background:var(--color-ink);color:white;max-width:calc(100% - 32px);padding:15px 22px;border-radius:var(--radius-sm);font-size:var(--text-sm);opacity:0;pointer-events:none;transition:opacity var(--motion)}.toast.visible{opacity:1}
@media(hover:hover) and (pointer:fine){.primary:hover{background:var(--color-accent)}.secondary:hover{background:var(--color-tint);border-color:var(--color-accent)}.text-link:hover,.email-address:hover,.nav-contact:hover,.footer a:hover{color:var(--color-accent);border-color:var(--color-accent)}.header nav a:hover:after{transform:scaleX(1)}.index-item:hover{color:var(--color-accent)}.index-item:hover .index-arrow,.case-button:hover>span{transform:translate(2px,-2px)}.case-button:hover{color:var(--color-accent)}.photo-grid a:hover img{transform:scale(1.015)}.icon-button:hover{background:var(--color-tint)}}
/* Tablet */
@media(max-width:1100px){:root{--gutter:32px;--section-space:84px}.header-inner{gap:20px}.brand-sub{display:none}.header nav{gap:23px}.hero{gap:40px;grid-template-columns:1.12fr 1fr;padding-block:62px}.hero-index{padding:28px 25px 22px}.hero-role{font-size:1.3rem}.hero-description{font-size:.95rem}.hero h1{font-size:4rem}.featured .work-body{padding:28px}.featured .work-body h3{font-size:1.5rem}.featured .work-visual{padding:25px}.agent-path{gap:7px}.agent-path small{font-size:.75rem}.action-bar{flex-wrap:wrap}.action-bar b{font-size:.8125rem}.project-metric{font-size:1.75rem}.project-outcome{gap:12px}.work-body h3{font-size:1.35rem}.experience-section{gap:44px}.photo-grid{gap:48px}.architecture>span{padding-inline:12px}.process-grid{gap:24px}}
/* Mobile: reordered density, expanded reading widths and tap navigation */
@media(max-width:760px){:root{--gutter:22px;--section-space:64px;--text-h2:1.875rem;scroll-padding-top:92px}.header-inner{min-height:68px;flex-wrap:wrap;gap:0}.brand-name{font-size:1rem}.brand-sub{display:block;font-size:.6875rem;padding-left:12px}.brand{gap:12px}.nav-contact{display:none}.menu-toggle{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-left:auto;padding:12px 0 12px 18px;background:transparent;border:0;font-size:var(--text-sm);color:var(--color-ink);min-height:44px}.menu-toggle span{font-size:1.25rem;transition:transform var(--motion)}.menu-toggle[aria-expanded=true] span{transform:rotate(45deg)}.header nav{display:none;flex-basis:100%;padding:8px 0 20px;gap:0;flex-wrap:wrap}.header.menu-open nav{display:flex}.header nav a{font-size:var(--text-sm);padding:12px 15px 12px 0;margin-right:18px;min-height:44px}.header nav a:after{bottom:6px;right:15px}.hero{grid-template-columns:1fr;gap:36px;padding:42px 0 42px}.hero .eyebrow{font-size:var(--text-xs);gap:22px;margin-bottom:24px}.intro{font-size:var(--text-sm)}.hero h1{font-size:3.6rem;line-height:1.12;margin-bottom:23px}.hero-name-en{font-size:.63em}.hero-role{font-size:1.3rem;margin-bottom:18px}.hero-description{font-size:var(--text-base);line-height:1.9;margin-bottom:24px;max-width:none}.hero-actions{gap:25px}.button{padding:12px 17px;gap:20px;min-height:47px}.hero-index{padding:24px 22px 18px;border-radius:var(--radius-md)}.index-heading{margin-bottom:18px}.hero-index h2{font-size:1.5rem;line-height:1.4}.hero-index h2 br{display:none}.index-description{font-size:var(--text-xs);margin-bottom:21px}.index-item{min-height:63px;gap:10px}.index-item strong{font-size:var(--text-sm)}.index-foot{padding-top:19px;gap:9px 15px}.ticker>div{grid-template-columns:1fr 1fr;gap:24px 18px;padding-block:24px}.ticker small{margin-top:6px;font-size:var(--text-xs)}.section-heading{display:block;margin-bottom:28px}.section-heading .eyebrow{margin-bottom:12px}.section-note{margin-top:20px;font-size:var(--text-sm);max-width:none}.section-note br{display:none}.work-grid{grid-template-columns:1fr;gap:44px}.work-card.featured{display:block}.work-visual{min-height:300px;padding:22px}.featured .work-visual{min-height:370px;padding:22px}.cover-heading{font-size:.6875rem;letter-spacing:0}.cover-caption{gap:8px;font-size:var(--text-xs)}.cover-caption>span:last-child{font-size:.6875rem;letter-spacing:0}.agent-diagram{padding-top:25px}.intent-line strong{font-size:1.4rem}.agent-path{gap:8px;margin-block:23px 10px}.agent-path b{font-size:.8125rem}.agent-path small{font-size:.75rem}.agent-path i{font-size:.8125rem}.action-bar{gap:8px;padding:12px;font-size:.75rem}.action-bar b{font-size:.8125rem}.action-bar>span:last-child{display:none}.task-labels{gap:12px;font-size:var(--text-xs)}.featured .work-body{padding:25px 22px}.work-body{padding-top:23px}.featured .work-body h3,.work-body h3{font-size:1.4rem}.project-summary{font-size:var(--text-base);margin-bottom:20px}.project-outcome,.featured .project-outcome{display:block;padding-block:17px;margin-bottom:12px}.project-metric,.featured .project-metric{font-size:2rem}.project-metric-label,.featured .project-metric-label{margin-top:8px;max-width:none;font-size:var(--text-xs)}.tags{gap:9px}.tag:not(:last-child):after{margin-left:9px}.case-button{margin-top:21px;min-height:48px}.rule-diagram>p,.growth-diagram>p{font-size:1.45rem}.rule-inputs span{font-size:.8125rem;padding:8px 12px}.rule-line{font-size:.875rem}.growth-steps{gap:9px}.growth-steps small{font-size:.75rem}.architecture{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 0;margin:30px 0 36px}.architecture>span{padding-left:20px;gap:8px}.architecture>span:nth-child(odd){padding-left:0;border:0}.architecture b{font-size:var(--text-base)}.architecture small{font-size:var(--text-xs)}.process-grid{grid-template-columns:1fr;gap:0}.process-grid article{border-top:var(--border);padding-block:22px}.process-grid article:first-child{padding-top:0;border:0}.process-grid article:last-child{padding-bottom:0}.process-grid h3{font-size:var(--text-lg);margin:13px 0 10px}.process-grid p{font-size:var(--text-base);line-height:1.85}.step{font-size:var(--text-xs)}.experience-section{grid-template-columns:1fr;gap:35px}.experience-intro h2{font-size:1.9rem}.experience-intro>p:not(.eyebrow){font-size:var(--text-base);margin-block:20px}.experience-intro>p br{display:none}.timeline article{margin-bottom:23px;padding-bottom:24px}.timeline h3{font-size:1.3rem}.organization{font-size:var(--text-sm)}.education{grid-template-columns:1fr;gap:25px;margin-top:0;padding-top:28px}.education>div:not(:first-child){padding-top:22px;border-top:var(--border)}.education h3{font-size:1.2rem}.education .eyebrow{margin-bottom:9px}.photography-section{padding-top:10px;padding-bottom:64px}.photo-grid{grid-template-columns:1fr;gap:32px}.photo-grid figure:last-child{margin-top:0}.photo-grid figcaption{font-size:var(--text-xs)}.contact-section{padding-block:30px 36px}.contact-top{margin-bottom:24px}.contact-label{display:none}.contact-section h2{font-size:1.9rem;line-height:1.5;letter-spacing:-.045em}.contact-bottom{flex-direction:column;align-items:flex-start;gap:25px;margin-top:24px}.contact-bottom p{font-size:var(--text-base)}.email-address{font-size:.95rem}.contact-buttons{gap:12px}.footer{flex-wrap:wrap;gap:19px;padding-block:25px 30px}.footer>span:nth-child(2){order:3;width:100%;font-size:.6875rem}.footer a{margin-left:auto}dialog{width:calc(100% - 24px);max-height:90dvh;padding:18px 22px 26px}.dialog-top{top:-18px;padding-block:8px 13px}.dialog-top .eyebrow{font-size:.6875rem}.case-status{font-size:var(--text-xs)}dialog h2{font-size:1.4rem}#case-details .case-note{padding:14px;font-size:var(--text-sm)}}
@media(max-width:360px){:root{--gutter:18px}.brand-sub{font-size:.625rem}.hero h1{font-size:3.2rem}.hero-actions{gap:20px}.hero-index{padding:21px 18px}.featured .work-visual{padding:20px 17px}.featured .work-body{padding-inline:18px}.action-bar{display:block}.action-bar b{display:block;margin-top:5px}.contact-section h2{font-size:1.75rem}}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.photo-grid a:hover img{transform:none}}
@media print{.header,.hero-index,.hero-actions,.case-button,.menu-toggle,.toast{display:none}.hero,.work-grid,.featured,.experience-section{display:block!important}.section{padding-block:25px}.work-card,.process-grid article,.timeline article{break-inside:avoid}.wrap{width:100%}.work-visual{min-height:250px}body{background:white;color:black}}

/* Compact photography gallery: keep every supplied composition intact. */
.photography-section{padding-bottom:72px}
.photography-section .section-heading{margin-bottom:28px}
.photography-section .heading-translation{font-size:.82em}
.photography-preview{display:grid;grid-template-columns:1.1fr .85fr .85fr 1.1fr;gap:18px;align-items:start}
.photography-preview figure,.photography-all figure{margin:0;min-width:0}
.photography-preview figure:nth-child(2){margin-top:34px}
.photography-preview figure:nth-child(3){margin-top:68px}
.photography-preview figure:nth-child(4){margin-top:18px}
.photography-preview a,.photography-all a{display:block;overflow:hidden;background:var(--color-tint);border-radius:var(--radius-sm)}
.photography-preview img,.photography-all img{display:block;width:100%;height:auto;transition:filter var(--motion)}
.photography-preview figcaption,.photography-all figcaption{display:flex;justify-content:space-between;gap:8px;font-size:var(--text-xs);line-height:1.7;color:var(--color-muted);padding-top:10px}
.photography-controls{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:var(--border);padding-top:20px;margin-top:25px}
.photography-count{font-size:var(--text-sm);color:var(--color-muted);margin:0}
.photography-toggle{background:transparent;border:0;border-bottom:1px solid var(--color-ink);padding:10px 0;color:var(--color-ink);font-size:var(--text-sm);min-height:44px}
.photography-all{display:grid;grid-template-columns:1fr 1.05fr .95fr;gap:30px 25px;padding-top:32px}
.photography-collapse-row{grid-column:1/-1;display:flex;justify-content:center}
#photo-dialog{width:min(1120px,calc(100% - 32px));height:min(94dvh,1100px);max-height:94dvh;padding:16px 22px;overflow:hidden;display:flex;flex-direction:column}
#photo-dialog:not([open]){display:none}
.photo-dialog-top{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-shrink:0}
.photo-dialog-top h2{font-size:var(--text-sm);font-weight:500;letter-spacing:0;margin:0}
.photo-viewer{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:12px 0}
.photo-viewer img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.photo-viewer-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-shrink:0}
.photo-viewer-footer p{margin:0;font-size:var(--text-sm);color:var(--color-muted)}
.photo-viewer-buttons{display:flex;gap:10px}
.photo-viewer-buttons button{min-width:44px;min-height:44px;background:var(--color-white);border:var(--border);border-radius:var(--radius-sm);font-size:1.25rem;color:var(--color-ink)}
@media(hover:hover) and (pointer:fine){.photography-preview a:hover img,.photography-all a:hover img{filter:brightness(.95)}.photography-toggle:hover{color:var(--color-accent);border-color:var(--color-accent)}.photo-viewer-buttons button:hover{background:var(--color-tint)}}
@media(max-width:1000px) and (min-width:761px){.photography-preview{gap:14px}.photography-preview figure:nth-child(3){margin-top:42px}.photography-preview figcaption{font-size:.75rem;flex-wrap:wrap}.photography-all{gap:24px 18px}}
@media(max-width:760px){.photography-section{padding-bottom:64px}.photography-preview{grid-template-columns:1fr .94fr;gap:24px 16px}.photography-preview figure:nth-child(2){margin-top:25px}.photography-preview figure:nth-child(3){margin-top:0}.photography-preview figure:nth-child(4){margin-top:25px}.photography-preview figcaption,.photography-all figcaption{font-size:.75rem;flex-wrap:wrap;gap:2px 6px}.photography-controls{align-items:flex-start;flex-direction:column;gap:8px;margin-top:22px}.photography-count{font-size:.8125rem}.photography-all{grid-template-columns:1fr 1fr;gap:25px 16px;padding-top:28px}.photography-all figure:nth-child(even){margin-top:20px}#photo-dialog{width:calc(100% - 16px);height:92dvh;max-height:92dvh;padding:12px}.photo-viewer-footer{gap:8px}.photo-viewer-footer p{font-size:.8125rem}.photo-viewer-buttons{gap:8px}.photo-dialog-top h2{font-size:.8125rem}.photo-dialog-top{gap:8px}}

/* Data-driven AI coding work, sharing the portfolio's editorial tokens. */
.vibe-section{border-top:var(--border);background:var(--color-white)}
.vibe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 32px}
.vibe-card{min-width:0;border-top:var(--border);padding-top:20px}
.vibe-card:first-child{grid-column:1/-1;display:grid;grid-template-columns:1.25fr 1fr;gap:48px;align-items:center;border:0;padding:0}
.vibe-visual{min-width:0;background:var(--color-tint);border:var(--border);border-radius:var(--radius-sm);overflow:hidden}
.vibe-browser{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:var(--border);font:11px/1.5 var(--font-mono);color:var(--color-muted)}
.vibe-browser>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.vibe-browser>span:last-child{white-space:nowrap;font-size:9px}.vibe-browser-dots{letter-spacing:3px;font-size:7px;flex-shrink:0}
.vibe-canvas{padding:32px}.vibe-canvas>.eyebrow{margin-bottom:12px;font-size:10px}
.vibe-preview-title{font-size:clamp(1.5rem,2.2vw,2rem);line-height:1.4;letter-spacing:-.03em;margin-bottom:30px}
.vibe-preview-features{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 20px}
.vibe-preview-features>div{border-top:1px solid #bac9bd;padding-top:12px;min-width:0}
.vibe-feature-number{font:11px var(--font-mono);color:var(--color-accent)}
.vibe-preview-features strong{display:block;font-size:14px;font-weight:500;line-height:1.6;margin:9px 0 4px}.vibe-preview-features small{font-size:11px;color:var(--color-muted);line-height:1.5;display:block}
.vibe-preview-caption{font-size:11px;color:var(--color-muted);margin:28px 0 0}
.vibe-cover{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;background:var(--color-paper)}
.vibe-body{padding-top:24px;min-width:0}.vibe-card:first-child .vibe-body{padding-block:20px}
.vibe-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;font:12px/1.5 var(--font-mono);color:var(--color-accent);margin-bottom:20px}
.vibe-status{display:inline-flex;align-items:center;gap:8px}.vibe-status:before{content:'';width:6px;height:6px;background:var(--color-accent);border-radius:50%}
.vibe-body h3{font-size:clamp(1.5rem,2.4vw,2rem);margin-bottom:8px;line-height:1.4;letter-spacing:-.03em}
.vibe-subtitle{font:italic 20px/1.4 var(--font-serif);color:var(--color-accent);margin-bottom:22px}
.vibe-description{font-size:15px;line-height:var(--leading-body);color:var(--color-body);margin-bottom:24px;max-width:48ch}
.vibe-tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px 14px;margin:0 0 28px;padding:0;font-size:12px;color:var(--color-muted)}
.vibe-tags li+li{border-left:var(--border);padding-left:14px}.vibe-actions{display:flex;align-items:center;flex-wrap:wrap;gap:20px}
.vibe-controls{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:var(--border);margin-top:40px;padding-top:20px}.vibe-controls p{margin:0;font-size:13px;color:var(--color-muted)}.vibe-toggle{background:none;border:0;border-bottom:1px solid var(--color-ink);min-height:44px;padding-inline:0}
@media(min-width:761px) and (max-width:1100px){.header-inner{gap:18px}.header nav{gap:16px}.brand-sub{display:none}.vibe-card:first-child{gap:28px}.vibe-canvas{padding:24px}}
@media(max-width:760px){.vibe-grid{grid-template-columns:minmax(0,1fr);gap:40px}.vibe-card:first-child{display:block}.vibe-card:first-child .vibe-body{padding:24px 0 0}.vibe-canvas{padding:24px 20px}.vibe-browser{padding:12px}.vibe-browser>span:last-child{display:none}.vibe-preview-features{gap:22px 14px}.vibe-preview-features strong{font-size:13px}.vibe-preview-title{font-size:24px;margin-bottom:24px}.vibe-subtitle{font-size:19px}.vibe-body h3{font-size:26px}.vibe-controls{align-items:flex-start;flex-direction:column}.vibe-description{font-size:14px}}

#vibe-title{text-wrap:balance}@media(max-width:760px){#vibe-title{font-size:26px;line-height:1.5}.vibe-body h3,.vibe-subtitle{overflow-wrap:anywhere}}
