/* Fieldwork remains the visual authority. This layer restores portfolio depth. */
html{scroll-padding-top:24px;scrollbar-color:#8d9ed2 var(--paper)}
body{caret-color:var(--blue)}
[hidden]{display:none!important}
.site-header{height:auto;min-height:110px;gap:28px;padding-block:22px}
.site-header nav{gap:23px;flex-wrap:wrap;justify-content:center}
.site-header nav a{min-height:44px;display:inline-flex;align-items:center}
.header-resume{font-size:12px;font-weight:600;white-space:nowrap;border-bottom:1px solid var(--blue);padding-block:12px;color:var(--blue)}
.hero-actions{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.hero-actions>.text-link{margin-top:28px}
.motion-control{position:static;display:flex;justify-content:center;margin-top:15px}
.motion-control button{min-height:44px;padding:8px 16px;border:1px solid var(--line);border-radius:24px;background:transparent;font-size:11px;color:var(--muted)}
.motion-control button:disabled{cursor:default}
.playground-controls .untangle-button{min-height:44px}
.playground-controls p{font-size:11px}
.stage-note,.project-footnote,.hero-bottom,.project-context,.footer-bottom{font-size:11px}
.project-library{margin-top:64px;padding-top:42px;border-top:1px solid var(--line)}
.library-heading{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:25px}
.library-heading h3{font-size:32px;letter-spacing:-.035em}
.library-heading p{font-size:13px;line-height:1.8;color:var(--muted);max-width:330px}
.project-filters{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.project-filters button{min-height:44px;border:1px solid var(--line);border-radius:24px;padding:10px 16px;background:transparent;color:var(--ink);font-size:12px}
.project-filters button[aria-pressed=true]{background:var(--blue);border-color:var(--blue);color:#fff}
.project-filters button:hover{border-color:var(--blue)}
.filter-status{font-size:12px;color:var(--muted);margin-bottom:26px}
.archive-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 26px}
.archive-project>a{display:block}.archive-project>a:hover h4{color:var(--blue)}
.archive-image{aspect-ratio:16/10;background:#edf0f8;border:1px solid var(--line);overflow:hidden;margin-bottom:19px}
.archive-image img{width:100%;height:100%;object-fit:contain}
.project-motion{position:relative;isolation:isolate;animation-play-state:paused}
.project-motion-svg{display:block;width:100%;height:100%}
.project-motion-svg text{font-family:var(--body);font-size:10px;font-weight:600;letter-spacing:.04em;fill:var(--ink)}
.project-motion-svg *{transform-box:fill-box;transform-origin:center;animation-play-state:paused}
.pm-line{fill:none;stroke:#2447df;stroke-width:2;stroke-dasharray:5 6}
.pm-question{animation:pm-float 4.8s ease-in-out infinite}.pm-answer{animation:pm-pulse 3.2s ease-in-out infinite}.pm-memory{animation:pm-lift 4.8s ease-in-out infinite}
.pm-packet{--travel:35px;animation:pm-packet 3.2s linear infinite}.pm-packet.pm-delay-two{--travel:52px}
.pm-delay-one{animation-delay:-1.3s!important}.pm-delay-two{animation-delay:-2.4s!important}
.pm-docs rect:nth-child(1){animation:pm-doc-one 5.4s ease-in-out infinite}.pm-docs rect:nth-child(2){animation:pm-doc-two 5.4s ease-in-out infinite}.pm-docs rect:nth-child(3){animation:pm-doc-three 5.4s ease-in-out infinite}
.pm-search-route,.pm-signal,.pm-route,.pm-beat-route{fill:none;stroke-dasharray:8 8;animation:pm-dash 4.2s linear infinite}.pm-cluster{animation:pm-cluster 4s ease-in-out infinite}.pm-search{animation:pm-search 4.8s ease-in-out infinite}.pm-scan{animation:pm-scan 3.8s ease-in-out infinite}
.pm-pixels{animation:pm-pixels 4s steps(2,end) infinite}.pm-output{animation:pm-pulse 3.6s ease-in-out infinite}
.pm-map-points circle{animation:pm-point 3.6s ease-in-out infinite}.pm-map-points circle:nth-child(2n){animation-delay:-1.4s}.pm-map-points circle:nth-child(3n){animation-delay:-2.5s}.pm-pin{animation:pm-pin 3.2s ease-in-out infinite}.pm-patrol{animation:pm-patrol 6.2s cubic-bezier(.45,0,.55,1) infinite}
.pm-request-card{animation:pm-request-card 4.4s ease-in-out infinite}.pm-response-card{animation:pm-response-card 4.4s ease-in-out infinite}.pm-request-dot{animation:pm-request 2.8s linear infinite}.pm-response-dot{animation:pm-response 2.8s linear infinite}
.pm-alert{animation:pm-alert 3.4s ease-out infinite}.unit-a{animation:pm-unit-a 6s ease-in-out infinite}.unit-b{animation:pm-unit-b 6s ease-in-out infinite}.route-b{animation-direction:reverse}
html .project-motion .project-motion-svg *{animation-play-state:paused}
html[data-motion="playing"][data-tab-hidden="false"] .project-motion[data-in-view="true"] .project-motion-svg *{animation-play-state:running}
@keyframes pm-float{0%,100%{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-7px) rotate(1deg)}}
@keyframes pm-lift{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes pm-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@keyframes pm-packet{0%{opacity:0;transform:translateX(0)}15%,75%{opacity:1}100%{opacity:0;transform:translateX(var(--travel))}}
@keyframes pm-doc-one{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(10px,10px) rotate(3deg)}}
@keyframes pm-doc-two{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(13px,-8px) rotate(-3deg)}}
@keyframes pm-doc-three{0%,100%{transform:translate(0,0) rotate(0)}50%{transform:translate(-5px,12px) rotate(2deg)}}
@keyframes pm-dash{to{stroke-dashoffset:-64}}
@keyframes pm-cluster{0%,100%{transform:scale(.96);opacity:.72}50%{transform:scale(1.04);opacity:1}}
@keyframes pm-search{0%,100%{transform:translateX(-8px)}50%{transform:translateX(8px)}}
@keyframes pm-scan{0%,100%{transform:translateY(-31px);opacity:0}20%,80%{opacity:.8}50%{transform:translateY(31px)}}
@keyframes pm-pixels{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes pm-point{0%,100%{transform:scale(.72);opacity:.55}50%{transform:scale(1.35);opacity:1}}
@keyframes pm-pin{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes pm-patrol{0%,100%{transform:translate(0,0)}18%{transform:translate(43px,-43px)}38%{transform:translate(77px,12px)}58%{transform:translate(114px,-39px)}78%{transform:translate(159px,-74px)}95%{transform:translate(249px,-23px)}}
@keyframes pm-request-card{0%,100%{transform:translateX(0)}50%{transform:translateX(5px)}}
@keyframes pm-response-card{0%,100%{transform:translateX(0)}50%{transform:translateX(-5px)}}
@keyframes pm-request{0%{transform:translateX(0);opacity:0}20%,80%{opacity:1}100%{transform:translateX(29px);opacity:0}}
@keyframes pm-response{0%{transform:translateX(0);opacity:0}20%,80%{opacity:1}100%{transform:translateX(20px);opacity:0}}
@keyframes pm-alert{0%{transform:scale(.45);opacity:0}35%{opacity:1}100%{transform:scale(1.45);opacity:0}}
@keyframes pm-unit-a{0%,100%{transform:translate(0,0)}25%{transform:translate(62px,8px)}50%{transform:translate(134px,13px)}75%{transform:translate(221px,-10px)}}
@keyframes pm-unit-b{0%,100%{transform:translate(0,0)}25%{transform:translate(-46px,-19px)}50%{transform:translate(-107px,0)}75%{transform:translate(-172px,-23px)}}
.archive-project h4{font-family:var(--display);font-size:23px;font-weight:600;letter-spacing:-.025em;line-height:1.2;margin:0 0 12px}
.archive-project p{font-size:13px;line-height:1.8;color:var(--muted)}
.archive-project .archive-meta{color:var(--blue);font-size:11px;margin-bottom:9px}
.archive-project .archive-tools{font-size:11px;margin-top:14px}
.about-links .text-link{min-height:44px}
.original-voice{max-width:750px;margin-top:45px;padding:30px 0;border-block:1px solid var(--line)}
.original-voice blockquote{font-family:var(--display);font-size:clamp(23px,2.5vw,31px);line-height:1.35;letter-spacing:-.025em;margin:0 0 15px}
.original-voice p{font-size:14px;line-height:1.85;color:var(--muted)}
.experience-section{padding-block:70px 35px}.experience-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:38px}
.experience-heading p{font-size:13px;line-height:1.8;color:var(--muted);max-width:360px;margin-top:18px}
.experience-heading .text-link{flex-shrink:0;min-height:44px}
.career-list{border-top:1px solid var(--line)}
.career-item{border-bottom:1px solid var(--line)}
.career-item summary{list-style:none;display:grid;grid-template-columns:155px 1fr 24px;gap:24px;padding:25px 0;cursor:pointer;align-items:center}
.career-item summary::-webkit-details-marker{display:none}
.career-item summary:after{content:'+';font-family:var(--display);font-size:24px;color:var(--blue);text-align:center}
.career-item[open] summary:after{content:'−'}
.career-date{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.career-role{display:flex;flex-direction:column;gap:7px}.career-role strong{font-family:var(--display);font-size:23px;font-weight:600;letter-spacing:-.025em}.career-role span{font-size:13px;color:var(--muted)}
.career-description{margin:0 48px 26px 179px;max-width:730px;font-size:14px;line-height:1.85;color:var(--muted)}
.career-description p+p{margin-top:12px}
.education{margin-top:46px;display:grid;grid-template-columns:155px 1fr;gap:24px}
.education>h3{font-size:19px;letter-spacing:-.025em;padding-top:6px}
.education-list{display:grid;grid-template-columns:1fr 1fr;gap:30px}.education-list article{padding-block:6px 18px}
.education h4{font-family:var(--display);font-size:21px;font-weight:600;line-height:1.25;margin:0 0 10px;letter-spacing:-.025em}
.education p{font-size:13px;line-height:1.8;color:var(--muted)}
.toolkit{margin-top:40px;border-top:1px solid var(--line);padding:30px 0 15px}
.toolkit h3{font-size:23px;letter-spacing:-.025em;margin-bottom:24px}
.tool-groups{display:grid;grid-template-columns:1fr 1fr 1fr;gap:32px}
.tool-groups h4{font-size:13px;font-weight:500;color:var(--blue);margin:0 0 12px}
.tool-groups p{font-size:14px;line-height:1.9;max-width:310px}
.awards-section{padding-block:65px;background:#e9edff;margin-top:35px}
.awards-layout{display:grid;grid-template-columns:.85fr 1.2fr;gap:90px}
.awards-intro p{font-size:14px;line-height:1.85;color:#4d5f9b;margin-top:23px;max-width:330px}
.award-list{list-style:none;margin:0;padding:0}
.award-list li{padding:20px 0;border-bottom:1px solid #b9c5ef}.award-list li:first-child{padding-top:0}
.award-list h3{font-size:21px;letter-spacing:-.025em;line-height:1.25;margin-bottom:8px}
.award-list .award-place{font-size:12px;font-weight:600;color:var(--blue);margin-bottom:10px}
.award-list p{font-size:13px;line-height:1.8;color:#4d5f9b}
.writing-section{padding-block:75px;gap:70px;grid-template-columns:.85fr 1.2fr}
.writing-section .writing-intro{align-self:start}.writing-intro>p{margin-top:24px}
.writing-section .article-list{align-self:start;list-style:none;padding:0;margin:0}
.article-list li{border-bottom:1px solid var(--line)}
.article-list a{display:block;padding:20px 0}.article-list li:first-child a{padding-top:0}
.article-list time{display:block;font-size:11px;color:var(--muted);margin-bottom:10px;font-variant-numeric:tabular-nums}
.article-list h3{font-size:22px;line-height:1.3;letter-spacing:-.025em}.article-list a:hover h3{color:var(--blue)}
.contact-section:before{display:none}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:90px;margin:30px 0 55px}
.contact-layout h2{font-size:60px}.contact-layout p{font-size:14px;line-height:1.8;max-width:370px;margin-top:24px;color:#435b39}
.contact-links{display:flex;gap:24px;flex-wrap:wrap;margin-top:24px}.contact-links a{border-bottom:1px solid #2447df66;font-size:13px;padding:12px 0}
.contact-form{display:grid;gap:18px}.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px}.contact-form label{display:grid;gap:9px;font-size:12px;color:#354a2d}
.contact-form input,.contact-form textarea{border:1px solid #889e7c;background:#ffffff8c;padding:13px 15px;border-radius:5px;font:inherit;font-size:15px;color:var(--ink);width:100%;min-width:0;caret-color:var(--blue)}
.contact-form textarea{resize:vertical;min-height:130px}.contact-form input::placeholder,.contact-form textarea::placeholder{color:#52634a}
.contact-form button{justify-self:start;border:1px solid var(--blue);background:var(--blue);color:#fff;border-radius:30px;padding:14px 22px;min-height:46px;font-size:13px}
.contact-form button:disabled{opacity:.65;cursor:default}.contact-form .form-note{font-size:11px;margin:0;line-height:1.7;max-width:none;color:#435b39}
.footer-bottom{padding-bottom:0}.footer-bottom>div{flex-wrap:wrap}
@media(max-width:1100px){.site-header{flex-wrap:wrap;gap:10px 24px}.site-header nav{order:3;width:100%;justify-content:flex-start;gap:24px}.header-resume{margin-left:auto}.archive-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.awards-layout,.writing-section,.contact-layout{gap:45px}.career-item summary{grid-template-columns:125px 1fr 24px}.career-description{margin-left:149px}.education{grid-template-columns:125px 1fr}}
@media(max-width:600px){.site-header{padding-block:14px;gap:8px 12px}.site-header nav{gap:4px 20px;font-size:12px}.header-resume{font-size:11px}.hero-actions{gap:20px}.hero-actions>.text-link{font-size:12px;margin-top:24px}.project-library{margin-top:38px;padding-top:30px}.library-heading{display:block}.library-heading p{margin-top:14px}.project-filters{gap:6px}.project-filters button{padding-inline:12px;font-size:11px}.archive-grid{grid-template-columns:1fr;gap:32px}.archive-project h4{font-size:25px}.archive-project p{font-size:14px}.archive-image{aspect-ratio:16/9}.original-voice{margin-top:30px;padding-block:24px}.experience-section{padding-top:40px}.experience-heading{display:block}.experience-heading h2{font-size:42px}.experience-heading .text-link{margin-top:20px}.career-item summary{grid-template-columns:1fr 24px;gap:9px 14px;padding-block:20px}.career-date{grid-column:1;font-size:11px}.career-role{grid-column:1}.career-item summary:after{grid-column:2;grid-row:1/3}.career-role strong{font-size:22px}.career-description{margin:0 22px 23px 0;font-size:14px}.education{grid-template-columns:1fr;gap:20px;margin-top:32px}.education-list{grid-template-columns:1fr;gap:18px}.education-list article{padding-bottom:0}.tool-groups{grid-template-columns:1fr;gap:24px}.tool-groups p{max-width:none}.awards-section{padding-block:45px}.awards-layout,.writing-section,.contact-layout{grid-template-columns:1fr;gap:34px}.awards-intro h2{font-size:42px}.awards-intro p{margin-top:18px}.writing-section{padding-block:50px}.writing-intro>p{margin-top:20px}.contact-layout{margin:10px 0 36px}.contact-layout h2{font-size:53px}.contact-layout p{font-size:14px}.form-pair{grid-template-columns:1fr}.contact-form input,.contact-form textarea{font-size:16px}.contact-form .form-note{font-size:12px}.footer-bottom>div{gap:15px 22px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.project-motion-svg *{animation:none!important}.project-motion-svg .pm-search-route,.project-motion-svg .pm-signal,.project-motion-svg .pm-route,.project-motion-svg .pm-beat-route{stroke-dasharray:none}}
