@font-face{font-family:"Cormorant Garamond";src:url('assets/cormorant-garamond.ttf') format('truetype');font-weight:300 700;font-display:swap}@font-face{font-family:"Cormorant Garamond";src:url('assets/cormorant-garamond-italic.ttf') format('truetype');font-weight:300 700;font-style:italic;font-display:swap}
:root{--burgundy:#290805;--cream:#f5e7d2;--gold:#c5a257;--ink:#302318;--red:#8f2528;--nav-height:88px}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--nav-height) + 24px)}body{margin:0;background:var(--cream);color:var(--ink);font:16px "Cormorant Garamond",Georgia,serif;padding-top:var(--nav-height)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}button,a,summary{-webkit-tap-highlight-color:transparent}img{display:block;width:100%;height:auto}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:400}p{line-height:1.75}.container{width:calc(100% - 9%);max-width:1440px;margin:auto}.section{padding:76px 0}.page{min-height:calc(100svh - var(--nav-height))}.dark{background:var(--burgundy);color:var(--gold)}.site-header{position:fixed;inset:0 0 auto;z-index:100;height:var(--nav-height);background:#290805f5;color:var(--cream);border-bottom:1px solid #b7975526;backdrop-filter:blur(12px)}.nav{height:100%;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;justify-content:center;width:48px;min-height:64px}.brand img{width:auto;height:56px;object-fit:contain}.nav-links{display:flex;gap:44px;align-items:center}.nav-links a{font-size:14px;text-transform:uppercase;letter-spacing:.02em;position:relative;min-height:44px;display:flex;align-items:center}.nav-links a:hover,.nav-links a[aria-current]{color:var(--gold)}.nav-links a[aria-current]:after{content:'';position:absolute;bottom:2px;left:0;right:0;height:1px;background:var(--gold)}.menu-toggle{display:none}.hero{position:relative;isolation:isolate;overflow:hidden;background:var(--burgundy);color:var(--cream);display:flex;align-items:center}.hero:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#290805 0%,#290805b5 28%,#29080520 60%),url('assets/hero.webp') right center/auto 100% no-repeat}.hero-content{padding-top:70px;padding-bottom:110px}h1{font-size:clamp(72px,7.5vw,120px);line-height:1.02;letter-spacing:-.02em}.gold-rule{width:80px;height:1px;background:var(--gold);margin:38px 0 30px}.tagline{font-style:italic;color:var(--gold);font-size:17px}.actions{display:flex;gap:16px;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;padding:13px 28px;font-size:13px;letter-spacing:.02em;text-transform:uppercase;border:1px solid;min-height:44px}.gold{background:var(--gold);border-color:var(--gold);color:var(--burgundy)}.outline{border-color:var(--gold);color:var(--gold)}.button:hover{filter:brightness(1.13)}.about{display:flex;align-items:center}.about-layout{display:grid;grid-template-columns:1.05fr 1fr;gap:100px;align-items:center}.eyebrow{font-size:13px;text-transform:uppercase;letter-spacing:.02em;color:var(--red);margin-bottom:36px}.about h2{font-size:clamp(38px,4vw,62px);line-height:1.1;margin-bottom:38px}.about h2 span{color:var(--red)}.about-copy>p:not(.eyebrow){max-width:490px;font-size:17px}.about-art{max-width:320px;margin:auto}.about-art img{aspect-ratio:1.07;object-fit:cover;border-radius:2px}.about-more{margin-top:30px}.about-more summary{width:fit-content;list-style:none;color:var(--red);border-color:var(--red)}.about-more summary::-webkit-details-marker{display:none}.about-more p{margin-top:20px;max-width:490px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:42px}.section-heading h2,.lined{font-size:27px;text-transform:uppercase}.section-heading>a{font-size:13px;text-transform:uppercase;letter-spacing:.03em}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.project-image{padding:0;width:100%;display:block;overflow:hidden}.project-image img{aspect-ratio:1.225;object-fit:cover;transition:transform .25s}.project-image:hover img{transform:scale(1.03)}.projects h3{font-size:25px;margin:20px 0 8px}.projects h3 button{padding:0;text-align:left}.projects p{font-size:15px;line-height:1.5;color:#d1b788}.projects .role{font-size:13px;color:#c9a889;margin-top:12px}.work{padding-bottom:0}.publications{background:var(--cream);color:var(--ink);margin-top:76px}.lined{display:flex;align-items:center;gap:20px;margin-bottom:40px}.lined:after{content:'';width:85px;height:1px;background:#d8c6ad}.publication-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:36px 22px}.publication-grid figure{margin:0;grid-column:span 2}.publication-grid figure.wide{grid-column:span 3}.publication-grid button{padding:0;width:100%;display:block}.publication-grid img{aspect-ratio:1.247;object-fit:cover}.publication-grid .wide img{aspect-ratio:1.9}.publication-grid figcaption{text-align:center;font-size:16px;margin-top:14px}.tool-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:38px}.tool-list li{display:flex;flex-direction:column;align-items:center;gap:10px;font:13px "Cormorant Garamond",Georgia,serif}.tool{height:45px;width:45px;border-radius:6px;display:grid;place-items:center;font:bold 28px "Cormorant Garamond",Georgia,serif}.ps{background:#001e36;color:#31a8ff}.canva{color:white;border-radius:50%;background:linear-gradient(130deg,#00c6c3,#6750d9);font-style:italic}.vscode{color:#008bd4;font-size:44px}.html{background:#e9542c;color:white;clip-path:polygon(8% 0,92% 0,84% 86%,50% 100%,16% 86%)}.css{background:#1572b6;color:white;clip-path:polygon(8% 0,92% 0,84% 86%,50% 100%,16% 86%)}.js{background:#f1d94e;color:#302c16;border-radius:0;font-size:23px}.figma-icon{width:30px;height:45px;display:grid;grid-template-columns:1fr 1fr}.figma-icon i{background:#f24e1e;border-radius:8px 0 0 8px}.figma-icon i:nth-child(2){background:#ff7262;border-radius:0 8px 8px 0}.figma-icon i:nth-child(3){background:#a259ff}.figma-icon i:nth-child(4){background:#1abcfe;border-radius:50%}.figma-icon i:nth-child(5){background:#0acf83;border-radius:8px 0 8px 8px}.education{padding:70px 0 0}.education-layout{display:grid;grid-template-columns:270px 1fr;gap:34px}.school{display:flex;align-items:flex-start;gap:18px;padding-top:32px}.school-mark{width:70px;height:79px;object-fit:contain;flex-shrink:0}.school h3{font-size:19px}.school p{font-size:13px;color:#856851;line-height:1.6;margin-top:5px}.certificates .eyebrow{margin-bottom:10px}.certificates ul{margin:0;padding:10px;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#3b1410;border-radius:6px}.certificates li{padding:10px 12px;background:#cebab1;border-radius:4px;color:#36241d;font-size:14px;line-height:1.3}.certificates small{display:block;font:12px/1.4 "Cormorant Garamond",Georgia,serif;color:#604b43;margin-top:4px}footer.section{padding:100px 0;background:linear-gradient(120deg,#290805,#190504);display:flex;align-items:center}footer .eyebrow{color:var(--gold);margin-bottom:22px;font-size:13px}footer h2{color:var(--cream);font-size:clamp(36px,4.1vw,64px);line-height:1.2}.contact-links{display:flex;gap:30px;flex-wrap:wrap;margin-top:32px;font-size:16px;color:#d7bfb1}.contact-links a:first-child{text-decoration:underline;text-underline-offset:8px;overflow-wrap:anywhere}.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid #5a3022;margin-top:42px;padding-top:30px;font-size:19px}.footer-bottom a:last-child{text-transform:uppercase;font-size:13px}.back-link{display:inline-flex;min-height:44px;align-items:center;color:var(--red);border-bottom:1px solid #b48264;margin-bottom:30px;font-size:15px}.project-top{display:grid;grid-template-columns:1.7fr 1.65fr;gap:55px;margin-bottom:42px}.project-top h1{font-size:clamp(35px,3.6vw,55px);line-height:1.15;margin-bottom:26px}.project-intro{font:18px/1.6 "Cormorant Garamond",Georgia,serif;color:#756a60;max-width:620px}.project-meta{display:grid;grid-template-columns:1fr 1.5fr .35fr;gap:24px;font:16px/1.5 "Cormorant Garamond",Georgia,serif}.project-meta dt{font-size:13px;color:#897c70;margin-bottom:12px;text-transform:uppercase}.project-meta dd{margin:0}.project-meta ul{list-style:none;margin:0;padding:0}.project-meta li{margin-bottom:5px}.project-feature{display:grid;grid-template-columns:1.7fr 1fr;gap:30px}.project-feature>img{border-radius:3px}.project-feature h2{font-size:34px;line-height:1.15;margin:20px 0 25px}.project-feature p{font:17px/1.6 "Cormorant Garamond",Georgia,serif;color:#746658}.project-feature ul{padding-left:22px;font:16px/1.7 "Cormorant Garamond",Georgia,serif;margin-top:35px}.museum-story{background:#2c1c12;color:var(--cream);padding:30px;border-radius:8px}.museum-story h2{margin-top:0}.museum-story p{color:#d0c1a9}.museum-story ol{list-style:none;padding:0;margin:30px 0 0;font:16px "Cormorant Garamond",Georgia,serif;counter-reset:steps}.museum-story li{padding:15px 0;border-top:1px solid #8c7352;counter-increment:steps}.museum-story li:before{content:'0' counter(steps) '  ';margin-right:8px}.project-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:24px}.project-gallery img{border-radius:3px;aspect-ratio:1.88;object-fit:cover}.project-gallery video{width:100%;background:white;aspect-ratio:1.78;object-fit:contain}.project-gallery figure{margin:0}.project-gallery figcaption{font:14px "Cormorant Garamond",Georgia,serif;margin-top:10px;color:#6b5545}.project-feature.nesaki-feature{grid-template-columns:1.3fr 1fr;max-width:1100px;margin:auto}.project-feature.nesaki-feature img{height:auto;object-fit:contain}.project-link{margin-top:26px;color:var(--red)}dialog{position:fixed;inset:0;border:1px solid #8c6c3c;background:var(--cream);color:var(--ink);width:min(900px,calc(100% - 32px));max-height:calc(100dvh - 40px);padding:28px;overflow:auto;z-index:200}dialog::backdrop{background:#190402c9;backdrop-filter:blur(4px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.dialog-head h2{font-size:30px}.close{font:32px "Cormorant Garamond",Georgia,serif;width:44px;height:44px;flex-shrink:0}#viewer-body img{max-height:70dvh;object-fit:contain}.skip{position:fixed;top:-100px;left:12px;z-index:300;background:var(--cream);color:var(--burgundy);padding:16px}.skip:focus{top:12px}:focus-visible{outline:3px solid #be973f;outline-offset:5px}
@media(max-width:1000px){.about-layout{gap:45px}.section{padding-top:55px;padding-bottom:55px}.work{padding-bottom:0}.nav-links{gap:25px}.education-layout{grid-template-columns:220px 1fr}.projects{gap:20px}.projects h3{font-size:23px}.lined{font-size:24px}.project-top{grid-template-columns:1fr;gap:20px}.project-meta{max-width:700px}.project-feature{gap:22px}.project-feature h2{font-size:29px}.museum-story{padding:24px}.education{padding-top:60px;padding-bottom:0}}
@media(max-width:640px){:root{--nav-height:76px}.container{width:calc(100% - 40px)}.brand{min-height:54px}.brand img{height:48px}.menu-toggle{display:block;color:var(--gold);border:1px solid #8f6e3b;padding:10px 18px;min-height:44px}.nav-links{display:none;position:absolute;top:76px;left:0;right:0;background:#290805;z-index:101;padding:12px 20px 20px;border-bottom:1px solid #8f6e3b;gap:0;flex-direction:column;align-items:stretch}.nav-links.open{display:flex}.nav-links a{padding:14px}.nav-links a[aria-current]:after{left:14px;right:14px}.hero-content{padding-top:95px;padding-bottom:110px}h1{font-size:64px}.hero:before{background:linear-gradient(90deg,#290805ec,#29080560),url('assets/hero.webp') center/cover no-repeat}.tagline{font-size:16px}.actions{gap:12px}.button{padding:13px 17px;font-size:12px}.section{padding:42px 0}.about-layout{grid-template-columns:1fr;gap:36px}.about h2{font-size:36px;margin-bottom:28px}.about-art{max-width:290px;width:100%}.about-copy>p:not(.eyebrow){font-size:16px}.eyebrow{margin-bottom:25px}.section-heading{align-items:flex-start;gap:20px;margin-bottom:28px}.section-heading h2,.lined{font-size:23px}.section-heading>a{font-size:12px;max-width:85px;line-height:1.5}.projects{grid-template-columns:1fr;gap:38px}.projects h3{font-size:27px;margin-top:17px}.projects p{font-size:16px}.work{padding-bottom:0}.publications{margin-top:42px}.publication-grid{grid-template-columns:1fr 1fr;gap:24px 15px}.publication-grid figure,.publication-grid figure.wide{grid-column:span 1}.publication-grid figure:last-child{grid-column:span 2}.publication-grid .wide img{aspect-ratio:1.24}.publication-grid figure:last-child img{aspect-ratio:1.9}.publication-grid figcaption{font-size:15px}.lined{line-height:1.4;gap:15px}.lined:after{width:40px;flex-shrink:0}.tool-list{gap:28px}.education{padding:50px 0 0}.education-layout{grid-template-columns:1fr;gap:30px}.school{padding-top:0}.certificates ul{grid-template-columns:1fr}.certificates li{font-size:15px}footer.section{padding:55px 0}footer h2{font-size:38px}.contact-links{gap:20px;font-size:14px}.footer-bottom{gap:20px;font-size:17px}.project-top{gap:12px;margin-bottom:26px}.project-top h1{font-size:36px;margin-bottom:20px}.project-intro{font-size:16px}.project-meta{grid-template-columns:1fr 1fr;gap:20px;font-size:14px}.project-feature,.project-feature.nesaki-feature{grid-template-columns:1fr;gap:20px}.project-feature h2{font-size:30px}.project-feature p{font-size:16px}.project-gallery{grid-template-columns:1fr}.project-gallery img{aspect-ratio:auto}.project-gallery video{min-height:200px}.museum-story{padding:26px}.back-link{margin-bottom:25px}dialog{padding:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

.tool-image{width:50px;height:50px;object-fit:contain}.tool-list{gap:56px}@media(max-width:640px){.tool-list{gap:28px}}
/* Cohesive, isolated tab surfaces. */
body:has(#work:not([hidden])){background:var(--burgundy)}
.work.section{padding:clamp(30px,5vh,54px) 0 36px;display:flex;align-items:center}
.work .section-heading{margin-bottom:28px}
.work .project-image img{max-height:clamp(220px,43vh,430px);width:100%;object-fit:cover}
.work .projects h3{margin-top:16px}
.publications.section{margin-top:0;padding-top:32px}
.hero:before{display:none}
.hero-photo{position:absolute;z-index:0;inset:0 0 0 auto;width:80%;height:100%;object-fit:cover;object-position:60% 65%;pointer-events:none}
.hero-shade{position:absolute;z-index:1;inset:0;background:linear-gradient(90deg,#290805 0%,#290805d9 25%,#29080520 53%,transparent 75%);pointer-events:none}
.hero-content{position:relative;z-index:2;padding-top:30px;padding-bottom:75px}
.hero h1{font-size:clamp(72px,7.1vw,112px);line-height:1.04}
#skills.section{padding:28px 0 26px}
#skills .lined{margin-bottom:22px;font-size:25px}
#skills .tool-image{width:42px;height:42px}
#skills .tool-list{gap:48px}
#skills .tool-list li{gap:8px}
#skills .education{padding-top:30px;padding-bottom:0}
#skills .education-layout{grid-template-columns:250px minmax(0,1fr);gap:28px}
#skills .school{padding-top:28px}
#skills .certificates .eyebrow{margin-bottom:8px}
#skills .certificates ul{padding:8px;gap:6px}
#skills .certificates li{padding:8px 10px;font-size:14px;line-height:1.25}
#skills .certificates small{font-size:12px;line-height:1.25;margin-top:3px}
@media(min-width:1001px) and (max-height:800px){
 :root{--nav-height:76px}
 #skills.section{padding-top:20px;padding-bottom:20px}
 #skills .education{padding-top:22px}
 #skills .lined{font-size:23px;margin-bottom:17px}
 #skills .certificates li{padding:6px 9px}
 .work .project-image img{max-height:38vh}
 .hero-content{padding-top:20px;padding-bottom:40px}
 .hero h1{font-size:clamp(64px,7vw,100px)}
 .hero .gold-rule{margin:28px 0 22px}
}
@media(max-width:1000px){#skills .education-layout{grid-template-columns:210px minmax(0,1fr)}#skills .tool-list{gap:35px}}
@media(max-width:640px){
 .work.section{padding:30px 0 36px;display:block}
 .work .project-image img{max-height:none}
 .hero-photo{width:100%;object-position:56% center;opacity:.8}
 .hero-shade{background:linear-gradient(90deg,#290805e6,#29080550)}
 .hero-content{padding-top:70px;padding-bottom:90px}
 .hero h1{font-size:clamp(54px,13vw,72px)}
 #skills.section{padding:28px 0 36px}
 #skills .tool-list{gap:24px}
 #skills .education{padding-top:34px}
 #skills .education-layout{grid-template-columns:1fr;gap:24px}
 #skills .school{padding-top:0}
 #skills .certificates ul{grid-template-columns:1fr}
 #skills .certificates li{padding:10px 12px;font-size:15px}
}
/* Project case-study popups follow the supplied detailed reference screens. */
dialog.project-popup{width:min(1240px,calc(100% - 48px));padding:38px 40px;max-height:calc(100dvh - 48px);border:1px solid #927257;border-radius:6px;box-shadow:0 16px 80px #0006}
.project-popup .dialog-head{position:sticky;top:-38px;background:var(--cream);z-index:3;min-height:42px;justify-content:flex-end;margin-bottom:8px}
.project-popup #viewer-title{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.project-popup #viewer-body img{max-height:none}
.project-popup .project-top h1{font-size:42px}
.project-popup .project-top{gap:35px;margin-bottom:32px}
.project-popup .project-intro{font-size:16px}
.project-popup .project-meta{font-size:14px;gap:20px}
.project-popup .project-feature h2{font-size:31px}
.project-popup .project-feature p{font-size:16px}
.project-popup .project-feature.nesaki-feature img{max-height:620px;width:100%;object-fit:contain}
@media(max-width:640px){dialog.project-popup{width:calc(100% - 24px);padding:18px;max-height:calc(100dvh - 24px)}.project-popup .dialog-head{top:-18px}.project-popup .project-top h1{font-size:32px}.project-popup .project-feature h2{font-size:28px}.project-popup .project-feature.nesaki-feature img{max-height:none}}
/* Keep the shared Home navigation identical on Contact. */
.site-header{background:var(--burgundy);backdrop-filter:none}
body:has(#home:not([hidden])),body:has(#contact:not([hidden])){background:var(--burgundy)}
body:has(#home:not([hidden])) .site-header,body:has(#contact:not([hidden])) .site-header{border-bottom:1px solid #c5a25755}
#contact{background:linear-gradient(180deg,var(--burgundy) 0%,#190504 100%)}
/* SignSnap trial: 1100 × 600 reference layout, bounded by the viewport. */
dialog.project-popup.signsnap-popup{width:min(1100px,90vw,165dvh);height:auto;aspect-ratio:11/6;max-height:90dvh;padding:32px;overflow:visible;container-type:inline-size}
.signsnap-popup .dialog-head{position:absolute;top:6px;right:6px;min-height:0;margin:0;background:transparent}
.signsnap-popup .close{width:28px;height:28px;font-size:26px}
.signsnap-popup #viewer-body{height:100%;min-height:0}
.signsnap-layout{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr);gap:18px}
.signsnap-top{display:grid;grid-template-columns:40% 13% minmax(0,1fr) 6%;gap:16px}
.signsnap-intro h1{font-size:clamp(30px,3.7cqw,42px);line-height:1.1;margin-bottom:16px}
.signsnap-intro p,.signsnap-meta p,.signsnap-meta li{font:clamp(13px,1.4cqw,15px)/1.5 "Cormorant Garamond",Georgia,serif;color:#75695e}
.signsnap-intro a{display:block;font:13px/1.4 "Cormorant Garamond",Georgia,serif;color:var(--red);margin-top:8px;text-decoration:underline;text-underline-offset:3px}
.signsnap-meta h2{font:bold 12px/1.4 "Cormorant Garamond",Georgia,serif;text-transform:uppercase;color:#998e84;margin:0 0 10px}
.signsnap-meta ul{list-style:none;margin:0;padding:0}
.signsnap-meta li{color:#3e3025;margin:0 0 3px}
.signsnap-meta p{color:#3e3025}
.signsnap-media{display:grid;grid-template-columns:62% 18% 1fr;gap:30px;min-height:0}
.signsnap-preview{display:block;min-height:0;height:100%}
.signsnap-popup #viewer-body .signsnap-preview img{width:100%;height:100%;object-fit:contain;object-position:top left;max-height:100%}
.signsnap-animations{display:grid;grid-template-rows:repeat(3,minmax(0,1fr));gap:18px;min-height:0}
.signsnap-animations video{width:100%;height:100%;min-height:0;object-fit:contain;background:white;box-shadow:0 3px 5px #0003}
@media(max-width:840px){dialog.project-popup.signsnap-popup{width:90vw;aspect-ratio:auto;height:auto;max-height:90dvh;overflow:auto;padding:24px}.signsnap-popup .dialog-head{position:sticky;top:-24px;right:auto;background:var(--cream);margin-bottom:12px}.signsnap-layout{height:auto;gap:24px}.signsnap-top{grid-template-columns:1fr 1fr;gap:20px}.signsnap-intro{grid-column:1/-1}.signsnap-intro h1{font-size:34px}.signsnap-intro p,.signsnap-meta p,.signsnap-meta li{font-size:15px}.signsnap-media{grid-template-columns:1fr;gap:20px}.signsnap-preview{height:auto}.signsnap-popup #viewer-body .signsnap-preview img{height:auto}.signsnap-animations{grid-template-columns:repeat(3,1fr);grid-template-rows:1fr;gap:12px}.signsnap-animations video{height:auto;aspect-ratio:1.5}}
@media(max-width:500px){.signsnap-animations{grid-template-columns:1fr;grid-template-rows:repeat(3,auto)}.signsnap-animations video{aspect-ratio:1.78}}
/* Definite track heights prevent Safari video intrinsic sizes from stretching the popup. */
dialog.project-popup.signsnap-popup{height:min(600px,49.0909vw,90dvh);aspect-ratio:auto;overflow:hidden}
.signsnap-popup #viewer-body{height:100%;min-height:0;overflow:hidden}
.signsnap-layout{height:100%;min-height:0;grid-template-rows:auto minmax(0,1fr)}
.signsnap-media,.signsnap-animations{height:100%;min-height:0;min-width:0;overflow:hidden}
.sign-animation-frame{position:relative;min-width:0;min-height:0;width:100%;height:100%;overflow:hidden;background:white;box-shadow:0 3px 5px #0003}
.signsnap-animations .sign-animation-frame video{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:100%;object-fit:contain;box-shadow:none}
@media(max-width:840px){dialog.project-popup.signsnap-popup{height:auto;overflow:auto}.signsnap-popup #viewer-body{height:auto;overflow:visible}.signsnap-layout,.signsnap-media,.signsnap-animations{height:auto;overflow:visible}.sign-animation-frame{height:auto;aspect-ratio:1.5}}
@media(max-width:500px){.sign-animation-frame{aspect-ratio:1.78}}
/* Nesaki: supplied four-screen popup composition with bounded image tracks. */
dialog.project-popup.nesaki-popup{width:min(1100px,90vw,165dvh);height:min(600px,49.0909vw,90dvh);max-height:90dvh;padding:32px;overflow:hidden;container-type:inline-size}
.nesaki-popup .dialog-head{position:absolute;top:6px;right:6px;min-height:0;margin:0;background:transparent}
.nesaki-popup .close{width:28px;height:28px;font-size:26px}
.nesaki-popup #viewer-body{height:100%;min-height:0;overflow:hidden}
.nesaki-layout{height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:26px}
.nesaki-top{display:grid;grid-template-columns:40% 21% minmax(0,1fr) 9%;gap:20px}
.nesaki-intro h1{font-size:clamp(29px,3.6cqw,39px);line-height:1.1;margin-bottom:20px}
.nesaki-intro p{font:clamp(13px,1.4cqw,15px)/1.55 "Cormorant Garamond",Georgia,serif;color:#75695e}
.nesaki-meta h2{font:bold 12px/1.4 "Cormorant Garamond",Georgia,serif;color:#998e84;text-transform:uppercase;margin:0 0 12px}
.nesaki-meta p{font:clamp(13px,1.4cqw,15px)/1.5 "Cormorant Garamond",Georgia,serif;color:#3e3025}
.nesaki-screens{display:grid;grid-template-columns:1268fr 768fr 640fr 984fr;gap:28px;min-width:0;min-height:0;height:100%;align-items:start}
.nesaki-popup #viewer-body .nesaki-screens img{width:100%;height:100%;max-height:100%;min-width:0;min-height:0;object-fit:contain;object-position:top center}
@media(max-width:840px){dialog.project-popup.nesaki-popup{width:90vw;height:auto;padding:24px;overflow:auto}.nesaki-popup .dialog-head{position:sticky;top:-24px;background:var(--cream);margin-bottom:12px}.nesaki-popup #viewer-body{height:auto;overflow:visible}.nesaki-layout{height:auto}.nesaki-top{grid-template-columns:1fr 1fr;gap:20px}.nesaki-intro{grid-column:1/-1}.nesaki-intro h1{font-size:33px}.nesaki-intro p,.nesaki-meta p{font-size:15px}.nesaki-screens{grid-template-columns:1fr 1fr;gap:20px;height:auto}.nesaki-popup #viewer-body .nesaki-screens img{height:auto;max-height:none}}
@media(max-width:500px){.nesaki-screens{grid-template-columns:1fr}}

/* Original Louvre popup composition and full-resolution project screenshots. */
dialog.project-popup.louvre-popup{width:min(1100px,90vw,165dvh);height:min(600px,49.0909vw,90dvh);max-height:90dvh;padding:32px;overflow:hidden;container-type:inline-size}
.louvre-popup .dialog-head{position:absolute;top:6px;right:6px;margin:0;z-index:2}.louvre-popup .dialog-head h2{display:none}.louvre-popup .close{width:28px;height:28px;font-size:25px}
.louvre-popup #viewer-body{height:100%;min-height:0;overflow:hidden}.louvre-layout{height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:26px}
.louvre-popup .nesaki-top{grid-template-columns:40% 21% minmax(0,1fr) 9%}.louvre-popup .nesaki-meta ul{list-style:none;padding:0;margin:0;font:clamp(12px,1.3cqw,15px)/1.5 "Cormorant Garamond",Georgia,serif;color:#3e3025}
@media(max-width:840px){dialog.project-popup.louvre-popup{width:90vw;height:auto;padding:24px;overflow:auto}.louvre-popup .dialog-head{position:sticky;top:-24px;background:var(--cream);margin-bottom:12px}.louvre-popup #viewer-body{height:auto;overflow:visible}.louvre-layout{height:auto}.louvre-popup .nesaki-top{grid-template-columns:1fr 1fr}}
@media(max-width:500px){}

/* Updated Tools & Skills and Education references, rendered as editable content. */
#skills.section{padding:30px 0 32px;background:var(--cream)}
#skills .lined{font-size:clamp(26px,2.05vw,34px);line-height:1.2;text-transform:uppercase;margin-bottom:28px;gap:0}
#skills .lined:after{display:none}
#skills .tool-list{gap:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));max-width:820px}
#skills .tool-list li{align-items:flex-start;gap:12px;font:14px/1.3 "Cormorant Garamond",Georgia,serif;color:#796e61}
#skills .tool-image{width:48px;height:48px;object-fit:contain}
#skills .education{padding-top:36px;padding-bottom:0}
#skills .education-layout{grid-template-columns:minmax(0,29%) minmax(0,1fr);gap:30px;align-items:start}
#skills .school{padding-top:0;gap:22px;min-width:0}
#skills .school-mark{width:70px;height:80px;object-fit:contain}
#skills .school h3{font-size:clamp(18px,1.3vw,24px);line-height:1.25}
#skills .school p{font:clamp(13px,.95vw,16px)/1.4 "Cormorant Garamond",Georgia,serif;color:#8c8072;margin-top:8px}
#skills .school .school-program{color:#a54429}
#skills .certificates{min-width:0}
#skills .certificates .eyebrow{font:clamp(16px,1.2vw,21px)/1.2 "Cormorant Garamond",Georgia,serif;color:#a54429;margin-bottom:14px;letter-spacing:0}
#skills .certificates ul{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;background:#3b100c;border:1px solid #ab8973;border-radius:8px;padding:11px;gap:9px 12px}
#skills .certificates li{background:#c6b7b7;border-radius:6px;padding:9px 11px;font:clamp(14px,.98vw,18px)/1.3 "Cormorant Garamond",Georgia,serif;min-width:0;color:#302318}
#skills .certificates small{display:block;font:clamp(12px,.8vw,14px)/1.3 "Cormorant Garamond",Georgia,serif;color:#70655c;margin-top:5px}
@media(max-width:1000px){#skills .education-layout{grid-template-columns:1fr;gap:24px}#skills .school{max-width:600px}#skills .school-mark{width:64px;height:74px}#skills .tool-list{max-width:none}}
@media(max-width:640px){#skills.section{padding:28px 0 32px}#skills .lined{font-size:25px;margin-bottom:24px}#skills .tool-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:24px 12px}#skills .tool-list li{font-size:12px}#skills .tool-image{width:44px;height:44px}#skills .education{padding-top:36px}#skills .education-layout{gap:26px}#skills .certificates ul{grid-template-columns:1fr;padding:10px;gap:9px}#skills .certificates li{font-size:16px;padding:12px}#skills .certificates small{font-size:13px}}

/* Serif typography from the popup references; six SignSnap media positions. */
.project-popup .signsnap-intro h1,.project-popup .nesaki-intro h1{font-family:"Cormorant Garamond",Georgia,serif;font-weight:400}
.project-popup .signsnap-intro p,.project-popup .signsnap-intro a,.project-popup .signsnap-meta p,.project-popup .signsnap-meta li,.project-popup .signsnap-meta h2,.project-popup .nesaki-intro p,.project-popup .nesaki-meta p,.project-popup .nesaki-meta h2,.project-popup.louvre-popup .nesaki-meta ul{font-family:"Cormorant Garamond",Georgia,serif;font-weight:400}
.project-popup .signsnap-meta h2,.project-popup .nesaki-meta h2{font-size:11px;letter-spacing:.02em}
.signsnap-media{grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);gap:28px}
.signsnap-animations{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:14px}
.signsnap-popup #viewer-body .sign-still img{position:absolute;inset:0;width:100%;height:100%;max-height:100%;object-fit:contain}
@media(max-width:840px){.signsnap-media{grid-template-columns:1fr;gap:20px}.signsnap-animations{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,auto);gap:14px}.sign-animation-frame{height:auto;aspect-ratio:728/492}}
@media(max-width:500px){.signsnap-animations{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.sign-animation-frame{aspect-ratio:728/492}}

/* Independent certificate columns avoid gaps beneath shorter cards. */
#skills .certificate-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;background:#3b100c;border:1px solid #ab8973;border-radius:8px;padding:11px;align-items:start}
#skills .certificates .certificate-column{display:flex;flex-direction:column;gap:9px;list-style:none;background:transparent;border:0;border-radius:0;padding:0;margin:0;min-width:0}
.signsnap-animations video{pointer-events:none}
@media(max-width:640px){#skills .certificate-columns{grid-template-columns:1fr;padding:10px;gap:9px}}

/* Revised popup references and unobtrusive close-button focus. */
dialog .close,dialog .close:focus,dialog .close:focus-visible{border:0;outline:0;box-shadow:none;background:transparent;border-radius:0}
dialog .close:focus-visible{text-decoration:underline;text-underline-offset:5px}
.project-popup .signsnap-intro h1,.project-popup .nesaki-intro h1{font-weight:700;letter-spacing:0}
.signsnap-intro h1{margin-bottom:18px}.signsnap-top{grid-template-columns:40% 13% minmax(0,1fr) 6%;gap:18px}
.project-popup .signsnap-meta li:before,.louvre-popup .nesaki-meta li:before{content:'· ';}
.signsnap-media{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:28px}
.sign-animation-frame{box-shadow:0 3px 5px #0003}
.louvre-layout{gap:40px}.louvre-popup .nesaki-top{grid-template-columns:40% 13% 10% minmax(0,1fr);gap:28px}
.louvre-popup .nesaki-intro h1{font-size:clamp(29px,3.3cqw,38px);margin-bottom:22px}
@media(max-width:840px){.signsnap-top,.louvre-popup .nesaki-top{grid-template-columns:1fr 1fr;gap:20px}.signsnap-media{grid-template-columns:1fr;gap:20px}.louvre-layout{gap:26px}}
@media(max-width:500px){}

.signsnap-animations video[controls]{pointer-events:auto}

/* Popup geometry measured from the supplied 2048 × 1123 designs. */
dialog .close,dialog .close:focus,dialog .close:focus-visible{text-decoration:none;outline:none;border:0;box-shadow:none;background:transparent}
dialog.project-popup.signsnap-popup,dialog.project-popup.louvre-popup{padding:0;width:min(1100px,90vw,164.5dvh);height:min(603px,49.35vw,90dvh)}
.signsnap-popup #viewer-body,.louvre-popup #viewer-body{height:100%}
.signsnap-layout,.louvre-layout{position:relative;display:block;height:100%;padding:0}
.signsnap-top,.louvre-popup .nesaki-top{position:absolute;left:3.85%;right:3.85%;top:6.2%;grid-template-columns:41% 12% minmax(0,1fr) 5%;gap:2.3%;align-items:start}
.project-popup .signsnap-intro h1,.project-popup.louvre-popup .nesaki-intro h1{font-size:3.05cqw;line-height:1.05;font-weight:700;margin-bottom:1.7cqw}
.project-popup .signsnap-intro p,.project-popup.louvre-popup .nesaki-intro p{font-size:1.13cqw;line-height:1.6;font-weight:400}
.project-popup .signsnap-meta p,.project-popup .signsnap-meta li,.project-popup.louvre-popup .nesaki-meta ul,.project-popup.louvre-popup .nesaki-meta p{font-size:1.08cqw;line-height:1.5;font-weight:400}
.project-popup .signsnap-meta h2,.project-popup.louvre-popup .nesaki-meta h2{font-size:1.1cqw;line-height:1.3;margin-bottom:.9cqw;font-weight:400}
.signsnap-intro a{font-size:.9cqw;line-height:1.2;margin-top:.45cqw}
.signsnap-media{position:absolute;left:3.85%;right:3.85%;top:26%;bottom:9.5%;height:auto;grid-template-columns:60% minmax(0,1fr);gap:3%}
.signsnap-animations{height:100%;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:5% 6%}
.louvre-popup .nesaki-top{top:9.2%;grid-template-columns:41% 12% 10% minmax(0,1fr);gap:2.3%}
@media(max-width:840px){dialog.project-popup.signsnap-popup,dialog.project-popup.louvre-popup{height:auto;padding:24px}.signsnap-layout,.louvre-layout{position:static;height:auto;display:grid;grid-template-rows:auto auto;gap:24px}.signsnap-top,.louvre-popup .nesaki-top{position:static;grid-template-columns:1fr 1fr;gap:20px}.project-popup .signsnap-intro h1,.project-popup.louvre-popup .nesaki-intro h1{font-size:34px;margin-bottom:18px}.project-popup .signsnap-intro p,.project-popup.louvre-popup .nesaki-intro p,.project-popup .signsnap-meta p,.project-popup .signsnap-meta li,.project-popup.louvre-popup .nesaki-meta ul,.project-popup.louvre-popup .nesaki-meta p{font-size:16px}.project-popup .signsnap-meta h2,.project-popup.louvre-popup .nesaki-meta h2{font-size:14px;margin-bottom:10px}.signsnap-intro a{font-size:14px;margin-top:10px}.signsnap-animations{height:auto;gap:14px}}
@media(max-width:500px){}

/* Explicit media dimensions prevent Safari collapsing the popup's image grid. */
@media(min-width:841px){
 .signsnap-media{bottom:auto;height:64.5%}
}

/* Education(1).png: school panel, independent certificate columns and serif labels. */
#skills .education>.container>.lined{margin-bottom:clamp(30px,3vw,48px)}
#skills .education-layout{grid-template-columns:minmax(0,29%) minmax(0,1fr);gap:30px}
#skills .school{gap:28px}#skills .school h3{font-size:clamp(18px,1.35vw,24px)}
#skills .certificate-columns{gap:12px;padding:11px;background:#3b100c}
#skills .certificates .certificate-column{gap:9px}
#skills .certificates li{font-size:clamp(14px,1vw,19px);line-height:1.25;padding:9px 11px;background:#c6b7b7}
#skills .certificates small{font-size:clamp(11px,.8vw,14px);line-height:1.3;color:#81756b}
.certificate-trigger{display:block;width:100%;text-align:left;padding:0;font:inherit;color:inherit}
.certificate-preview{position:fixed;z-index:180;top:50%;left:50%;transform:translate(-50%,-50%);width:min(720px,86vw);padding:16px;background:var(--cream);border:1px solid #b99d76;box-shadow:0 14px 50px #19040266;pointer-events:none}
.certificate-preview p{margin:0 0 10px;font-size:20px;line-height:1.2}.certificate-preview img{width:100%;height:auto;max-height:70dvh;object-fit:contain}
@media(max-width:1000px){#skills .education-layout{grid-template-columns:1fr}}
@media(max-width:640px){#skills .certificate-columns{grid-template-columns:1fr}#skills .certificates li{font-size:16px;padding:12px}#skills .certificates small{font-size:13px}#skills .school{gap:20px}}

/* Final Louvre composition: three bounded columns, with no shared image positioning. */
.museum-media{position:absolute;left:1.9%;right:2.6%;top:37.8%;height:48.5%;display:flex;gap:1.2%;min-width:0;min-height:0}
.museum-column{display:flex;flex-direction:column;gap:2.2%;min-width:0;min-height:0;height:100%}
.museum-left{flex:0 0 24.8%}.museum-center{flex:0 0 48.7%}.museum-right{flex:0 0 24.1%}
.museum-frame{position:relative;flex:1 1 0;min-width:0;min-height:0;overflow:hidden}
.louvre-popup #viewer-body .museum-frame img,.louvre-popup #viewer-body .museum-frame video{position:absolute;inset:0;display:block;width:100%;height:100%;max-height:none;margin:0;object-fit:contain;object-position:center}
#skills .certificates .certificate-column{align-items:stretch;width:100%;min-width:0}
#skills .certificates .certificate-column>li{display:block;align-self:stretch;width:100%;min-width:0;max-width:none;box-sizing:border-box}
@media(max-width:840px){.museum-media{position:static;display:grid;grid-template-columns:1fr 1fr;height:auto;gap:16px}.museum-column{height:auto;gap:16px}.museum-center{grid-column:1/-1;grid-row:1}.museum-frame{flex:none;aspect-ratio:1.8}.museum-left .museum-frame,.museum-right .museum-frame{aspect-ratio:1.8}}
@media(max-width:500px){.museum-media{grid-template-columns:1fr}.museum-center{grid-column:auto}}

/* Keep the complete education tab in a standard desktop viewport. */
@media(min-width:900px){
 #skills.section{padding:clamp(12px,2vh,24px) 0}
 #skills .lined{font-size:clamp(24px,2.2vw,32px);line-height:1.1;margin-bottom:clamp(12px,1.8vh,20px)}
 #skills .tool-image{width:clamp(36px,5.5vh,48px);height:clamp(36px,5.5vh,48px)}
 #skills .tool-list li{gap:8px;font-size:13px}
 #skills .education{padding-top:clamp(36px,6vh,60px)}
 #skills .education>.container>.lined{margin-bottom:clamp(16px,2.4vh,28px)}
 #skills .education-layout{grid-template-columns:minmax(0,27%) minmax(0,1fr);gap:24px}
 #skills .school{gap:18px}
 #skills .school-mark{width:60px;height:68px}
 #skills .certificates .eyebrow{font-size:17px;margin-bottom:9px}
 #skills .certificate-columns{padding:9px;gap:10px}
 #skills .certificates .certificate-column{gap:6px}
 #skills .certificates li{padding:6px 9px;font-size:clamp(13px,1vw,16px);line-height:1.2}
 #skills .certificates small{font-size:clamp(11px,.8vw,13px);line-height:1.15;margin-top:3px}
}

/* Soft entrances and responsive details complement the editorial design. */
@media(min-width:900px) and (max-width:1199px){
 #skills.section{padding:12px 0}
 #skills .lined{font-size:24px;margin-bottom:12px}
 #skills .tool-image{width:36px;height:36px}
 #skills .education{padding-top:24px}
 #skills .education>.container>.lined{margin-bottom:12px}
 #skills .education-layout{grid-template-columns:minmax(0,23%) minmax(0,1fr);gap:18px}
 #skills .school{gap:12px}
 #skills .school-mark{width:44px;height:52px}
 #skills .school h3{font-size:18px}
 #skills .certificates li{padding:4px 8px}
 #skills .certificates .certificate-column{gap:4px}
}
@keyframes page-arrive{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes detail-arrive{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes preview-arrive{from{opacity:0;scale:.97}to{opacity:1;scale:1}}
.page:not([hidden]){animation:page-arrive .45s ease-out both}
#skills:not([hidden]) .tool-list li{animation:detail-arrive .5s ease-out both}
#skills .tool-list li:nth-child(2){animation-delay:.04s}
#skills .tool-list li:nth-child(3){animation-delay:.08s}
#skills .tool-list li:nth-child(4){animation-delay:.12s}
#skills .tool-list li:nth-child(5){animation-delay:.16s}
#skills .tool-list li:nth-child(6){animation-delay:.20s}
#skills .tool-list li:nth-child(7){animation-delay:.24s}
.tool-image,.brand img{transition:transform .25s ease,filter .25s ease}
.tool-list li:hover .tool-image{transform:translateY(-4px) scale(1.06);filter:drop-shadow(0 5px 5px #30231822)}
.brand:hover img{transform:scale(1.05)}
.projects article,.publication-grid button,#skills .certificates li{transition:transform .25s ease,box-shadow .25s ease,background-color .25s ease}
#skills .certificates li:hover,#skills .certificates li:focus-within{transform:translateY(-2px);background:#dfd0c4;box-shadow:0 4px 10px #19040225}
.publication-grid button:hover{transform:translateY(-3px)}
dialog[open],.certificate-preview:not([hidden]){animation:preview-arrive .22s ease-out both}
.nav-links a,.button{transition:color .2s ease,background-color .2s ease,box-shadow .2s ease}
@media(prefers-reduced-motion:reduce){.page:not([hidden]),#skills:not([hidden]) .tool-list li,dialog[open],.certificate-preview:not([hidden]){animation:none}.tool-image,.brand img,.projects article,.publication-grid button,#skills .certificates li,.nav-links a,.button{transition:none}.tool-list li:hover .tool-image,.brand:hover img,.publication-grid button:hover,#skills .certificates li:hover,#skills .certificates li:focus-within{transform:none}}

/* Contact identity and downloadable résumé. */
#contact .contact-label{font-size:clamp(18px,1.65vw,25px);line-height:1.25;letter-spacing:.03em;margin-bottom:24px}
@media(min-width:900px){
 #skills.section{display:flex;flex-direction:column;min-height:calc(100dvh - var(--nav-height));padding-bottom:clamp(12px,2vh,24px)}
 #skills>.container{margin:0 auto}
 #skills .education{display:flex;flex-direction:column;flex:1 0 auto}
 #skills .education>.container{display:flex;flex-direction:column;flex:1 0 auto;margin:0 auto}
 #skills .education-layout{flex:1 0 auto;align-items:stretch}
 #skills .certificates{display:flex;flex-direction:column}
 #skills .certificate-columns{flex:1 0 auto;align-items:stretch}
 #skills .certificates .certificate-column{height:auto;align-self:stretch}
 #skills .certificates .certificate-column>li{flex:1 0 auto;display:flex;align-items:center}
}
#about .about-more p{max-width:620px;font-size:17px;line-height:1.65}
@media(max-width:640px){#contact .contact-label{font-size:19px;margin-bottom:20px}#about .about-more p{font-size:16px;line-height:1.65}}
#contact .footer-bottom{border-top:0;padding-top:0;align-items:center;gap:24px;flex-wrap:wrap;margin-top:48px}
#contact .footer-name{font-size:clamp(20px,2vw,28px);line-height:1.35;color:var(--gold)}
#contact .resume-download{gap:12px;text-transform:uppercase;font-size:13px;min-height:48px}
@media(max-width:899px){#skills .education{padding-top:48px}}
@media(max-width:840px){
 .signsnap-media{position:static;inset:auto;height:auto;display:grid;grid-template-columns:1fr;gap:24px}
 .signsnap-preview{height:auto}
 .signsnap-popup #viewer-body .signsnap-preview img{height:auto;max-height:none}
 .signsnap-animations{height:auto;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(3,auto);gap:12px}
 .sign-animation-frame{height:auto;aspect-ratio:728/492}
 dialog.project-popup{max-height:calc(100dvh - 32px);overscroll-behavior:contain}
}
@media(max-width:640px){
 .hero-photo{width:100%;height:100%;object-fit:cover;object-position:58% center}
 .hero h1{font-size:clamp(46px,12vw,68px);overflow-wrap:normal}
 .actions{flex-wrap:wrap}
 #skills .school{gap:16px}
 #skills .school-mark{width:52px;height:60px}
 #skills .school h3{font-size:21px}
 #skills .school p{font-size:15px}
 #skills .education-layout{grid-template-columns:1fr;gap:28px}
 #contact.section{padding:40px 0}
 #contact h2{font-size:clamp(30px,8vw,40px)}
 #contact .contact-links{flex-direction:column;align-items:flex-start;gap:16px;font-size:16px}
 #contact .contact-links a{display:inline-flex;align-items:center;min-height:44px;max-width:100%;word-break:break-word}
 #contact .footer-bottom{flex-direction:column;align-items:flex-start;margin-top:32px;gap:22px}
 #contact .footer-name{font-size:23px}
 #contact .resume-download{width:100%;max-width:320px}
 .certificate-preview{width:calc(100vw - 24px);padding:12px;max-height:calc(100dvh - 24px)}
 .certificate-preview p{font-size:17px}
 .certificate-preview img{max-height:calc(100dvh - 130px)}
}

.about-art img{object-position:center 25%}

/* A cream portrait panel with the portfolio's gold editorial frame. */
.about-art{position:relative;background:var(--cream);border:1px solid #b99a61;border-radius:160px 160px 8px 8px;overflow:hidden;box-shadow:0 10px 28px #29080510;isolation:isolate}
.about-art img{mix-blend-mode:multiply;border-radius:inherit}

/* Final motion: restrained continuous movement and reveals on entry. */
@keyframes photo-drift{from{transform:scale(1.015) translateX(0)}to{transform:scale(1.055) translateX(-.6%)}}
@keyframes gentle-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes rule-open{from{opacity:0;scale:0 1}to{opacity:1;scale:1 1}}
#home:not([hidden]) .hero-photo{animation:photo-drift 18s ease-in-out infinite alternate;transform-origin:70% center}
#home:not([hidden]) .hero-content h1{animation:detail-arrive .8s ease-out both}
#home:not([hidden]) .gold-rule{animation:rule-open .8s .2s ease-out both;transform-origin:left center}
#home:not([hidden]) .tagline{animation:detail-arrive .7s .3s ease-out both}
#home:not([hidden]) .actions{animation:detail-arrive .7s .45s ease-out both}
#about:not([hidden]) .about-art{animation:gentle-float 7s ease-in-out infinite}
.about-art img{transition:transform .6s ease}
.about-art:hover img{transform:scale(1.025)}
#skills:not([hidden]) .tool-image{animation:gentle-float 6s ease-in-out infinite}
#skills .tool-list li:nth-child(2) .tool-image{animation-delay:.5s}
#skills .tool-list li:nth-child(3) .tool-image{animation-delay:1s}
#skills .tool-list li:nth-child(4) .tool-image{animation-delay:1.5s}
#skills .tool-list li:nth-child(5) .tool-image{animation-delay:2s}
#skills .tool-list li:nth-child(6) .tool-image{animation-delay:2.5s}
#skills .tool-list li:nth-child(7) .tool-image{animation-delay:3s}
.motion-reveal{opacity:0;translate:0 14px;transition:opacity .7s ease,translate .7s cubic-bezier(.2,.65,.3,1),box-shadow .25s ease,background-color .25s ease}
.motion-reveal.is-visible{opacity:1;translate:0 0}
.projects article:nth-child(2){transition-delay:.1s}
.projects article:nth-child(3){transition-delay:.2s}
.button{position:relative;overflow:hidden;transition:background-color .25s ease,color .25s ease,box-shadow .25s ease,translate .25s ease}
.button:before{content:'';position:absolute;inset:-50% auto -50% -75%;width:35%;background:linear-gradient(90deg,transparent,#fff4,transparent);transform:skewX(-20deg);transition:left .65s ease;pointer-events:none}
.button:hover:before,.button:focus-visible:before{left:140%}
.button:hover{translate:0 -2px;box-shadow:0 5px 16px #19040220}
.contact-links a{transition:color .25s ease,translate .25s ease}
.contact-links a:hover{color:var(--gold);translate:0 -2px}
@media(prefers-reduced-motion:reduce){
 #home:not([hidden]) .hero-photo,#home:not([hidden]) .hero-content h1,#home:not([hidden]) .gold-rule,#home:not([hidden]) .tagline,#home:not([hidden]) .actions,#about:not([hidden]) .about-art,#skills:not([hidden]) .tool-image{animation:none}
 .motion-reveal,.motion-reveal.is-visible{opacity:1;translate:none;transition:none}
 .about-art img,.button,.button:before,.contact-links a{transition:none}
 .about-art:hover img{transform:none}.button:hover,.contact-links a:hover{translate:none}.button:before{display:none}
}

/* Publication heading and mobile navigation. */
#publications .lined:after{display:none}
@media(max-width:640px){.menu-toggle{width:46px;height:46px;padding:11px;display:flex;flex-direction:column;justify-content:center;gap:5px;border:0;background:transparent}.menu-toggle span{display:block;width:24px;height:2px;background:var(--gold);transition:transform .2s,opacity .2s}.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}}
.pin-locked{overflow:hidden;background:#290805}
.pin-gate{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at top,#54251c,#290805 70%);overflow:auto;color:#f5e6ce}
.pin-gate[hidden]{display:none}
.pin-card{width:min(100%,460px);padding:clamp(24px,5vw,48px);text-align:center;border:1px solid #c5a25766;background:#290805aa;box-shadow:0 24px 80px #0003}
.pin-card>img{width:90px;height:90px;object-fit:contain;margin:0 auto 24px}
.pin-eyebrow{font:11px/1.6 "Cormorant Garamond",Georgia,serif;letter-spacing:2px;color:var(--gold)}
.pin-card h1{font-size:clamp(30px,5vw,42px);line-height:1.2;margin:18px 0}
.pin-card>p:not(.pin-eyebrow){font:14px/1.6 "Cormorant Garamond",Georgia,serif}
.pin-card label{display:block;margin:28px 0 10px;font:12px "Cormorant Garamond",Georgia,serif;letter-spacing:1px}
.pin-card input{display:block;width:100%;height:56px;border:1px solid #c5a257;background:#f5e6ce;color:#290805;text-align:center;font:24px "Cormorant Garamond",Georgia,serif;letter-spacing:12px;border-radius:0;padding:12px}
.pin-card .pin-error{min-height:24px;margin:10px 0;color:#ffd0c0}
.pin-card .button{width:100%;min-height:48px}
@media(prefers-reduced-motion:reduce){.menu-toggle span{transition:none}}

/* Consistent typography and aligned resume action. */
html,body,button,input,select,textarea,summary{font-family:"Cormorant Garamond",Georgia,serif}
#contact .footer-bottom{display:flex;justify-content:flex-start;align-items:flex-start;margin-top:30px;gap:0}
#contact .resume-download{font-size:16px;min-height:48px;margin:0}
.pin-card>p:not(.pin-eyebrow){font-size:18px}
.pin-eyebrow{font-size:14px}
.pin-card label{font-size:17px}
.pin-card .button{font-size:16px}
@media(max-width:640px){#contact .footer-bottom{margin-top:24px}#contact .resume-download{width:auto;max-width:100%;padding:13px 24px}.pin-card>p:not(.pin-eyebrow){font-size:17px}}
