@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--green:#567c93;--pink:#ffde59;--paper:#edf5fa;--ink:#192e3e;--lime:#bed8e8}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:32px}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:17px}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid #ffde59;outline-offset:7px}button{font:inherit}header{position:absolute;top:0;left:0;width:100%;z-index:5;height:100px;padding:0 4.8%;display:flex;align-items:center;justify-content:space-between;color:var(--paper)}.wordmark{font-family:'Space Grotesk',sans-serif;font-size:43px;font-weight:700;letter-spacing:-4px;display:flex;align-items:center;gap:8px}.wordmark span{color:var(--pink);font-size:30px;letter-spacing:0}nav{display:flex;gap:36px;font-size:15px}nav a{border-bottom:1px solid transparent;padding:6px 0}nav a:hover{border-color:var(--pink)}nav span{margin-left:5px;color:var(--pink)}.hero{min-height:850px;height:100svh;max-height:1100px;position:relative;overflow:hidden;background:var(--green);color:var(--paper);padding:122px 4.8% 100px}.hero-top,.hero-bottom,.section-label,.interest-top,.role-tag,.role-foot,.toolbox>span,.footer-top>div>span,.footer-bottom{font-size:12px;font-weight:500;letter-spacing:1px}.hero-top{display:flex;justify-content:space-between;opacity:.7}.hero-copy{position:relative;z-index:2;margin-top:48px;pointer-events:none}.hero-copy a{pointer-events:auto}.hello{font-size:23px;margin:0 0 20px;color:var(--pink)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'Space Grotesk',sans-serif;font-weight:500;letter-spacing:-.065em}h1{font-size:clamp(72px,7.4vw,122px);line-height:.97;margin-bottom:25px}h1 em{font-style:normal;color:var(--pink)}.intro{font-size:17px;line-height:1.6;opacity:.83;margin-bottom:25px}.round-link{display:inline-flex;align-items:center;gap:24px;font-size:15px}.arrow{display:grid;place-items:center;border:1px solid #9bb9a7;border-radius:50%;height:43px;width:43px;transition:background .2s,color .2s}.round-link:hover .arrow{background:var(--pink);color:var(--green)}.goo-space{position:absolute;width:54%;height:75%;right:0;top:15%;display:grid;place-items:center;pointer-events:none;background-image:radial-gradient(#a9c9b329 .8px,transparent .8px);background-size:26px 26px;mask-image:none}#goo{width:100%;height:100%;overflow:visible}.eyes{display:flex;gap:5px}.hero-eyes{position:absolute;top:45%;left:47%;transform:translate(-50%,-50%) rotate(-9deg)}.eye{width:86px;height:95px;border-radius:50%;background:var(--paper);position:relative;overflow:hidden;box-shadow:0 2px 0 #00000008}.eye:nth-child(2){transform:translateY(-6px)}.eye i{position:absolute;display:block;width:29px;height:34px;border-radius:50%;background:#172a23;top:50%;left:50%;transform:translate(-50%,-50%)}.goo-note{position:absolute;right:15%;bottom:7%;font-size:17px;font-style:italic;color:var(--pink);transform:rotate(-8deg)}.hero-bottom{position:absolute;bottom:30px;left:4.8%;right:4.8%;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #ffffff30;padding-top:20px;gap:18px}.hero-bottom>a{font-size:26px}.motion-controls{display:flex;align-items:center;gap:16px}.pointer-hint{font-size:13px;font-weight:400;letter-spacing:0;opacity:.8}#motion{border:1px solid #ffffff55;background:transparent;color:var(--paper);width:31px;height:31px;border-radius:50%;cursor:pointer;font-size:14px}.ticker{overflow:hidden;background:var(--pink);padding:24px 0;white-space:nowrap;border-bottom:1px solid var(--ink)}.ticker>div{display:flex;align-items:center;justify-content:space-around;gap:32px;min-width:1050px}.ticker span{font-family:'Space Grotesk',sans-serif;font-size:17px;font-weight:500;letter-spacing:1px}.ticker b{font-size:28px;font-weight:400}.section-wrap{padding:100px 6%}.section-label{margin-bottom:55px}.about-grid{display:grid;grid-template-columns:.85fr 1fr;gap:11%;align-items:center}.photo-wrap{position:relative;padding:16px 16px 50px;background:#fff;transform:rotate(-3deg);box-shadow:0 4px 20px #192e3e10;max-width:430px;margin-left:20px}.portrait{width:100%;aspect-ratio:0.84;overflow:hidden;position:relative}.portrait img{width:100%;height:100%;object-fit:cover;object-position:center 58%;display:block}.photo-note{display:block;text-align:center;position:absolute;bottom:17px;left:0;right:0;font-size:16px;font-style:italic}.photo-sticker{position:absolute;background:var(--lime);width:109px;height:109px;border-radius:50%;right:-37px;bottom:38px;display:grid;align-content:center;text-align:center;transform:rotate(12deg);font-size:18px}.about h2{font-size:clamp(40px,4.5vw,69px);line-height:1.04;margin-bottom:26px}.about h2>span{color:var(--green)}.about p{line-height:1.7;max-width:530px;font-size:17px;color:#435966}.about .handwritten{font-size:23px;color:var(--green);font-style:italic;letter-spacing:-.7px;margin-top:30px}.tags{display:flex;gap:10px;flex-wrap:wrap}.tags span{border:1px solid #bdccd6;border-radius:40px;padding:10px 16px;font-size:13px}.doing{background:#e3edf3}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:50px;gap:30px}.section-heading h2{font-size:clamp(40px,4.3vw,66px);line-height:1.05;margin-bottom:0}.section-heading>p{font-size:16px;line-height:1.6;margin:0;color:#435966}.roles{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #adbfcb;border-bottom:1px solid #adbfcb}.roles article{padding:28px 28px 28px 0;display:flex;flex-direction:column;justify-content:space-between;min-height:370px}.roles article+article{padding-left:28px;border-left:1px solid #adbfcb}.role-num{font-family:'Space Grotesk',sans-serif;font-size:32px;color:#71856f;letter-spacing:-2px;margin-bottom:34px}.role-tag{display:block;margin-bottom:14px;font-size:11px}h3{font-size:32px;line-height:1.12;margin-bottom:17px}.roles p{font-size:15px;line-height:1.65;color:#435966}.role-foot{letter-spacing:0;font-size:12px;margin-top:20px}.toolbox{margin-top:45px;display:flex;align-items:start;flex-wrap:wrap;gap:25px}.toolbox>span{padding-top:12px}.toolbox>div{display:flex;flex-wrap:wrap;gap:8px}.toolbox>div>span{background:var(--paper);padding:9px 16px;border-radius:4px;font-size:14px}.toolbox>p{font-size:14px;color:#435966;width:100%;margin:0}.interest-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.interest-grid article{padding:35px;border-radius:3px}.interest-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:45px;font-size:11px}.interest-top>span+span{font-size:27px}.music{background:var(--green);color:var(--paper)}.music h3,.sports h3,.food h3{font-size:44px}.interest-grid p{font-size:15px;line-height:1.6}.music p{opacity:.78}.music ul{list-style:none;margin:32px 0 0;padding:0}.music li{display:flex;justify-content:space-between;border-top:1px solid #ffffff35;padding:15px 0;font-size:18px}.music li>span+span{font-size:12px;opacity:.5;padding-top:5px}.interest-stack{display:grid;grid-template-rows:1fr 1fr;gap:24px}.sports{background:var(--lime);position:relative;overflow:hidden}.sports .interest-top,.food .interest-top{margin-bottom:20px}.sports p{max-width:300px;position:relative;z-index:1}.court-line{position:absolute;width:180px;height:210px;border:2px solid #567c9330;right:-45px;bottom:-45px;transform:rotate(-23deg)}.court-line:after{content:'';position:absolute;top:50%;left:0;width:100%;border-top:2px solid #567c9330}.food{background:var(--pink)}footer{background:var(--green);color:var(--paper);padding:65px 6% 26px}.footer-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:60px;gap:24px}.footer-top>div>span{font-size:11px;color:#d1e0ea}footer h2{font-size:clamp(55px,8vw,120px);line-height:1.1;margin:18px 0 0;color:var(--pink)}.footer-monster{background:#0062ad;width:205px;height:145px;display:grid;place-items:center;border-radius:4px;transform:rotate(5deg)}.footer-monster .eye{width:62px;height:68px}.footer-monster .eye i{width:24px;height:24px}.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid #ffffff30;padding-top:25px;font-size:12px;letter-spacing:0;gap:20px}.skip{position:fixed;top:-80px;left:16px;background:var(--pink);padding:15px;z-index:99}.skip:focus{top:15px}::selection{background:var(--pink);color:var(--green)}
@media(min-width:1600px){.hero{padding-left:8%;padding-right:8%}.hero-copy{margin-top:70px}.section-wrap{padding-left:max(6%,calc((100% - 1400px)/2));padding-right:max(6%,calc((100% - 1400px)/2))}}@media(max-width:900px){.hero{min-height:770px;max-height:950px}.hero-top>span+span{display:none}.hero-copy{margin-top:55px}h1{font-size:80px}.goo-space{width:55%;right:-6%;top:23%;height:58%}.hero-eyes .eye{width:54px;height:62px}.hero-eyes .eye i{width:21px;height:24px}.hero-bottom>span{font-size:10px}.goo-note{right:12%;font-size:14px}.section-wrap{padding:75px 6%}.about-grid{gap:9%;grid-template-columns:.85fr 1fr}.photo-wrap{margin-left:0}.about h2{font-size:42px}.about p{font-size:16px}.roles article{padding-right:18px}.roles article+article{padding-left:18px}.roles h3{font-size:27px}.section-heading>p{max-width:280px}.interest-grid article{padding:27px}.music h3,.sports h3,.food h3{font-size:36px}}
@media(max-width:600px){header{height:85px;padding:0 6%}.wordmark{font-size:36px}nav{gap:18px;font-size:13px}nav span{display:none}.hero{height:auto;min-height:970px;padding:104px 6% 85px}.hero-top{font-size:10px}.hero-copy{margin-top:35px}.hello{font-size:19px;margin-bottom:18px}h1{font-size:72px;line-height:.96}.intro{font-size:15px;line-height:1.5}.round-link{font-size:14px;gap:17px}.goo-space{width:100%;height:370px;right:-7%;top:548px;background-size:23px 23px}.hero-eyes .eye{width:54px;height:59px}.hero-eyes .eye i{width:21px;height:24px}.goo-note{bottom:3%;right:18%;font-size:15px}.hero-bottom{left:6%;right:6%;bottom:22px;padding-top:14px}.hero-bottom>span{display:none}.pointer-hint{font-size:12px}.ticker{padding:17px 0}.ticker>div{justify-content:flex-start;padding-left:25px;gap:28px}.ticker span{font-size:14px}.ticker b{font-size:24px}.section-wrap{padding:62px 6%}.section-label{font-size:10px;margin-bottom:35px}.about-grid{grid-template-columns:1fr;gap:55px}.photo-wrap{width:76%;margin:0 auto;max-width:350px}.photo-sticker{width:90px;height:90px;font-size:16px}.about h2{font-size:49px}.about p{max-width:none}.about .handwritten{font-size:22px}.section-heading{display:block;margin-bottom:32px}.section-heading h2{font-size:43px}.section-heading>p{margin-top:24px;max-width:none;font-size:15px}.roles{grid-template-columns:1fr}.roles article,.roles article+article{border-left:0;padding:27px 0;min-height:0;display:grid;grid-template-columns:45px 1fr;gap:15px}.roles article+article{border-top:1px solid #adbfcb}.role-num{font-size:27px}.roles h3{font-size:32px}.roles p{margin-bottom:0}.role-foot{grid-column:2;margin-top:0}.toolbox{gap:20px}.interest-grid{grid-template-columns:1fr;gap:20px}.interest-stack{gap:20px}.music h3,.sports h3,.food h3{font-size:39px}.interest-grid article{padding:28px}.interest-top{margin-bottom:30px}.footer-top{align-items:start;padding-bottom:35px}.footer-top>div>span{font-size:9px;line-height:1.8;display:block;max-width:240px}footer h2{font-size:54px}.footer-monster{width:85px;min-width:85px;height:83px;margin-top:20px}.footer-monster .eye{width:30px;height:35px}.footer-monster .eye i{width:13px;height:13px}.footer-monster .eyes{gap:2px}.footer-bottom{flex-wrap:wrap;font-size:11px;row-gap:17px}.footer-bottom>span:nth-child(2){order:3;width:100%;opacity:.6}footer{padding:45px 6% 25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Poster-inspired typography from Ethan’s campaign reference. */
h1,h2,h3,.wordmark{font-family:Arial,Helvetica,sans-serif;font-weight:800;letter-spacing:-.075em}h1{font-size:clamp(72px,7.8vw,125px);line-height:.95}h1 em{color:#ffde59;text-shadow:6px 7px 0 #ffba21}h2,h3{text-transform:lowercase}.hello{font-weight:600;letter-spacing:-.04em}.campaign{display:grid;grid-template-columns:.65fr 1.35fr;gap:40px;align-items:center;padding:50px 0 0}.campaign h3{font-size:40px}.campaign p{font-size:15px;line-height:1.65;color:#435966;max-width:330px}.campaign img{width:100%;height:auto;display:block;border:1px solid #c8cdbf;transition:transform .2s}.campaign a:hover img{transform:rotate(-1deg)}footer h2{color:#ffde59;text-shadow:4px 5px 0 #ffba21}
@media(max-width:900px){h1{font-size:80px}.campaign{gap:25px}.campaign h3{font-size:34px}}
@media(max-width:600px){h1{font-size:70px}h1 em{text-shadow:4px 5px 0 #ffba21}.campaign{grid-template-columns:1fr;gap:15px;padding-top:35px}.campaign h3{font-size:38px}.campaign p{max-width:none}footer h2{text-shadow:5px 6px 0 #ffba21}}

.brand-blob{width:31px;height:31px;color:var(--pink);transform:rotate(-12deg);flex-shrink:0}.wordmark:hover .brand-blob{transform:rotate(12deg)}

@media (hover:hover) and (pointer:fine){body{cursor:url("assets/cursor-goo-blue.svg") 3 3,auto}a,button,#motion{cursor:url("assets/cursor-goo-yellow.svg") 3 3,pointer}}

/* Portfolio sections */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.linkedin-grid{display:grid;grid-template-columns:1.15fr .75fr;gap:12%;align-items:center}.linkedin-copy h2{font-size:clamp(50px,6vw,90px);line-height:1;margin-bottom:32px}.linkedin-copy p{max-width:540px;line-height:1.7;color:#435966}.linkedin-grid .photo-wrap{width:100%;max-width:345px;margin:0;transform:rotate(3deg)}.profile-link{display:inline-flex;align-items:center;gap:16px;border-bottom:1px solid #ffba21;padding:15px 0;font-size:clamp(15px,1.5vw,20px);margin-top:16px}.profile-link:hover{color:#ffba21}.linkedin-icon{display:grid;place-items:center;background:var(--green);color:var(--paper);width:35px;height:35px;border-radius:5px;font-size:24px;font-weight:700;letter-spacing:-1px}.section-label,.role-tag{text-transform:lowercase}.projects-section{background:#e3edf3}.project-feature{border-top:1px solid #adbfcb;border-bottom:1px solid #adbfcb;padding:45px 0;display:grid;grid-template-columns:1fr 1fr;gap:9%}.project-title h3{font-size:clamp(65px,8vw,110px);text-transform:none;line-height:1;margin:20px 0}.project-title h3 span{color:#ffba21}.project-title>p{font-size:21px;line-height:1.4}.project-tags{display:flex;gap:8px;flex-wrap:wrap;max-width:360px;margin-top:28px}.project-tags>span{font-size:13px;padding:8px 13px;background:var(--paper);border-radius:4px}.project-description{padding-top:35px}.project-description>p{line-height:1.75;color:#435966;font-size:17px}.metric-list{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0}.metric-list>span{border-left:3px solid #ffba21;padding:7px 14px;font-size:16px}.involvement-list{border-top:1px solid #bdccd6}.involvement-list article{display:grid;grid-template-columns:50px 1fr auto;gap:25px;padding:33px 0;border-bottom:1px solid #bdccd6}.involvement-number{font-family:'Space Grotesk',sans-serif;font-size:24px;color:#6c8799}.involvement-list h3{font-size:33px;margin-bottom:14px;letter-spacing:-.045em}.involvement-list p{max-width:620px;font-size:16px;line-height:1.65;color:#435966;margin-bottom:0}.involvement-date{font-size:13px;padding-top:3px;color:#536b7a}.sandbox-section{background:var(--pink)}.sandbox-inner{position:relative;text-align:center;padding:28px 0 42px}.sandbox-status{display:inline-block;border:1px solid #192e3e40;border-radius:30px;padding:9px 17px;font-size:13px;margin-bottom:30px}.sandbox-inner h2{font-size:clamp(60px,8vw,115px);line-height:.97;margin-bottom:25px}.sandbox-inner p{line-height:1.7;font-size:17px}.sandbox-signoff{font-style:italic;font-size:20px;margin-top:35px;transform:rotate(-4deg)}
@media(max-width:900px){header nav{gap:20px;font-size:14px}.linkedin-grid{gap:8%}.involvement-list article{grid-template-columns:35px 1fr;gap:20px}.involvement-date{grid-column:2}.project-feature{gap:6%}.linkedin-grid .photo-note{font-size:13px}}
@media(max-width:600px){header{height:110px;align-items:flex-start;padding-top:17px;flex-wrap:wrap}.wordmark{height:37px}header nav{width:100%;justify-content:space-between;gap:12px;font-size:13px;padding-bottom:12px}.hero{padding-top:122px}.linkedin-grid{grid-template-columns:1fr;gap:45px}.linkedin-copy h2{font-size:57px}.linkedin-grid .photo-wrap{width:78%;margin:0 auto}.profile-link{font-size:16px;gap:12px}.project-feature{grid-template-columns:1fr;gap:18px;padding:30px 0}.project-description{padding-top:0}.project-title h3{font-size:82px}.project-title>p{font-size:19px}.project-tags{margin-top:22px}.project-description>p{font-size:16px}.involvement-list article{gap:13px;grid-template-columns:28px 1fr}.involvement-list h3{font-size:29px}.involvement-date{font-size:12px}.involvement-list p{font-size:15px}.sandbox-inner{padding:16px 0 25px}.sandbox-inner h2{font-size:63px}.sandbox-inner p{font-size:16px}.sandbox-inner p br{display:none}}

/* Persistent navigation with room for anchor targets. */
header{position:fixed;background:var(--green);box-shadow:0 1px 0 #ffffff1c;z-index:20}html{scroll-padding-top:120px}@media(max-width:600px){html{scroll-padding-top:130px}}

/* Fixed upright photo cylinder; interaction belongs to the sandbox. */
.rotor-stage{position:absolute;right:0;top:120px;width:51%;height:calc(100% - 200px);pointer-events:none;overflow:hidden}.rotor-stage canvas{width:100%;height:100%;display:block}.gallery-caption{font-size:13px;font-weight:400;letter-spacing:0;color:var(--pink)}.sandbox-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:35px}.sandbox-heading h2{font-size:clamp(50px,6vw,82px);line-height:.97;margin:0}.sandbox-heading p{line-height:1.6;margin:0}.blob-playground{height:580px;position:relative;overflow:hidden;background:var(--green);border-radius:14px;color:var(--paper)}.blob-playground .goo-space{width:100%;height:100%;inset:0;background-size:26px 26px;mask-image:none}.blob-playground #goo{height:100%;width:100%}.playground-toolbar{position:absolute;left:25px;right:25px;bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #ffffff30;padding-top:15px}.playground-toolbar>span{font-size:12px}.blob-playground .hero-eyes .eye{width:70px;height:78px}.blob-playground .hero-eyes .eye i{width:27px;height:30px}.sandbox-section .section-label{margin-bottom:35px}
@media(max-width:900px){.rotor-stage{width:44%;right:0;top:160px;height:calc(100% - 260px)}.blob-playground{height:500px}.playground-toolbar .pointer-hint{display:none}}
@media(max-width:600px){.hero{min-height:1100px}.rotor-stage{width:100%;height:480px;top:565px;right:0}.gallery-caption{font-size:12px}.sandbox-heading{display:block}.sandbox-heading h2{font-size:58px;margin-bottom:22px}.sandbox-heading p{font-size:16px}.blob-playground{height:440px}.blob-playground .hero-eyes .eye{width:49px;height:55px}.blob-playground .hero-eyes .eye i{width:20px;height:22px}.playground-toolbar{left:17px;right:17px;bottom:16px}.playground-toolbar>span{font-size:11px}}

.gallery-controls{display:flex;align-items:center;gap:15px}#gallery-motion{border:1px solid #ffffff55;background:transparent;color:var(--paper);width:31px;height:31px;border-radius:50%;font-size:14px}@media(hover:hover) and (pointer:fine){#gallery-motion{cursor:url("assets/cursor-goo-yellow.svg") 3 3,pointer}}

/* Large, edge-cropped cylinder alongside the headline. */
.rotor-stage{width:56%;right:-8%;top:95px;height:calc(100% - 125px)}
@media(min-width:901px){.hero-copy{max-width:54%}}
@media(min-width:601px) and (max-width:900px){.rotor-stage{width:50%;right:-5%;top:115px;height:calc(100% - 150px)}.hero h1{font-size:72px}}
@media(max-width:600px){.hero{min-height:1170px}.rotor-stage{width:110%;height:540px;top:550px;right:-10%}}

/* Compact hero: the bottom strip owns its own row, outside the gallery. */
.hero{height:auto;min-height:0;max-height:none;padding:100px 0 0;overflow:hidden}
.hero-main{display:grid;grid-template-columns:1fr 1fr;align-items:center;position:relative;min-height:610px;overflow:hidden}
.hero .hero-copy{margin:0;padding:48px 0 48px 9.6%;max-width:none}
.hero h1{font-size:clamp(64px,7.1vw,108px);line-height:1.04;letter-spacing:-.055em}
.hero h1 em{text-shadow:2px 3px 0 #ffba21}
.hero .intro{opacity:1;line-height:1.65}
.hero .rotor-stage{position:absolute;left:52%;right:auto;top:0;bottom:0;width:56%;height:100%;border-radius:35% 0 0 28% / 14% 0 0 17%;overflow:hidden}
.hero-bottom{position:relative;left:auto;right:auto;bottom:auto;margin:0 4.8%;padding:19px 0;min-height:77px;z-index:3;background:var(--green)}
@media(min-width:1500px){.hero-main{min-height:720px}}
@media(min-width:601px) and (max-width:900px){.hero-main{min-height:570px}.hero h1{font-size:clamp(49px,8.2vw,70px)}.hero .hello{font-size:20px}.hero .intro{font-size:15px}.hero .rotor-stage{left:54%;width:54%}.hero .hero-copy{padding-top:40px;padding-bottom:40px}}
@media(max-width:600px){.hero{padding-top:110px;min-height:0}.hero-main{display:flex;flex-direction:column;min-height:0;align-items:stretch}.hero .hero-copy{padding:32px 6% 22px}.hero h1{font-size:clamp(53px,15.6vw,75px);letter-spacing:-.055em;line-height:1.02}.hero .rotor-stage{position:relative;left:5%;top:auto;bottom:auto;right:auto;width:105%;height:450px;flex:none;border-radius:38% 0 0 27% / 12% 0 0 14%}.hero-bottom{margin:0 6%;padding:16px 0;min-height:65px}.hero .intro{font-size:15px}.hero .round-link{margin-top:0}}

/* Blue palette: slate blue base, light blue accents, original pink. */
header,.hero,footer{color:#fff}.hero .intro,.hero-bottom,.footer-bottom{color:#fff}.gallery-caption{color:#fff}

/* The Rotor gallery supports direct dragging with momentum. */
.rotor-stage{pointer-events:auto}

/* Contact card. */
.contact-grid{display:grid;grid-template-columns:1.15fr .75fr;gap:12%;align-items:center}.contact-copy h2{font-size:clamp(50px,6vw,90px);line-height:1;margin-bottom:32px}.contact-copy p{max-width:500px;line-height:1.7;color:#435966}.contact-grid .photo-wrap{width:100%;max-width:345px;margin:0;transform:rotate(3deg)}.contact-open-button{border:0;border-bottom:1px solid #91acbd;background:transparent;color:var(--ink);padding:13px 0;margin-top:12px;font-size:16px;font-weight:600;cursor:pointer}.contact-open-button span{display:inline-block;margin-left:10px;color:#ffba21;transition:transform .2s}.contact-open-button:hover span{transform:translate(3px,-3px)}.contact-modal{width:min(560px,calc(100% - 32px));max-height:calc(100dvh - 40px);border:0;border-radius:26px;padding:18px;background:var(--green);color:#fff;box-shadow:14px 16px 0 var(--pink);overflow:auto}.contact-modal::backdrop{background:#192e3eb8;backdrop-filter:blur(5px)}.contact-modal-head{display:flex;justify-content:space-between;align-items:start;padding:14px 16px 8px}.contact-modal-head span{font-size:10px;font-weight:700;letter-spacing:1px;text-transform:lowercase;color:#d9e8f1}.contact-modal-head h2{font-size:clamp(42px,7vw,68px);line-height:1;margin:5px 0 0;color:#fff}.contact-modal-head button{border:1px solid #ffffff55;border-radius:50%;width:40px;height:40px;background:transparent;color:#fff;font-size:25px;line-height:1;cursor:pointer}.contact-modal-head button:hover{background:var(--pink);color:var(--ink);border-color:var(--pink)}.contact-card{padding:8px}.contact-card a{display:grid;grid-template-columns:44px 1fr auto;gap:16px;align-items:center;padding:18px;border-radius:15px;transition:background .2s,transform .2s}.contact-card a+a{border-top:1px solid #ffffff30}.contact-card a:hover{background:#ffffff14;transform:translateX(4px)}.contact-card a>span:nth-child(2){font-size:16px;overflow-wrap:anywhere}.contact-card small{display:block;margin-bottom:3px;color:#d9e8f1;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:lowercase}.contact-card b{font-size:19px;font-weight:400;color:var(--pink)}.contact-icon{width:40px;height:40px;border:1px solid #ffffff55;border-radius:50%;display:grid;place-items:center;font-size:13px;font-weight:700;letter-spacing:-.5px}
@media(max-width:800px){.contact-grid{grid-template-columns:1fr;gap:45px}.contact-grid .photo-wrap{margin:0 auto}}
@media(max-width:600px){.contact-modal{padding:10px;border-radius:20px;box-shadow:7px 8px 0 var(--pink)}.contact-card{padding:7px}.contact-card a{grid-template-columns:38px 1fr auto;gap:12px;padding:15px 12px}.contact-icon{width:36px;height:36px}.contact-card a>span:nth-child(2){font-size:14px}}

/* Organization marks in the involvement list. */
.involvement-list article{grid-template-columns:50px 76px 1fr auto;align-items:start}
.involvement-logo{width:68px;height:68px;border-radius:14px;overflow:hidden;display:grid;place-items:center;background:#fff;box-shadow:0 2px 10px #192e3e12}
.involvement-logo img{width:100%;height:100%;object-fit:contain;display:block}
.logo-asub,.logo-cs{background:#151515}.logo-asub img{width:100%;height:100%;object-fit:cover;transform:translateY(-9%) scale(1.32)}.logo-vsa img{width:88%;height:88%}
@media(max-width:900px){.involvement-list article{grid-template-columns:35px 68px 1fr}.involvement-date{grid-column:3}}
@media(max-width:600px){.involvement-list article{grid-template-columns:28px 54px 1fr;gap:13px}.involvement-logo{width:50px;height:50px;border-radius:10px}.involvement-date{grid-column:3}}

/* Project stories and supplied logos. */
.project-feature{border-bottom:0}
.project-feature:last-child{border-bottom:1px solid #adbfcb}
.project-brand{display:flex;align-items:center;gap:20px;margin:24px 0 10px}.project-brand h3{margin:0}
.project-name-link{display:inline-flex}.project-name-link:hover h3{color:#ffba21}.project-name-link h3{transition:color .2s ease}
.project-logo{height:auto;margin:0;display:flex;align-items:center;background:transparent;flex:none}
.project-logo img{width:100%;height:auto;object-fit:contain;display:block}
.project-logo-ad4pt{width:78px}
.project-logo-dinq{width:auto}.project-logo-dinq img{width:260px;max-width:100%}
.project-tags{max-width:420px}
.project-notes{display:grid;gap:18px;margin-top:34px}
.project-notes>div{border-top:1px solid #adbfcb;padding-top:15px}
.project-notes strong{display:block;font-size:12px;letter-spacing:1px;text-transform:lowercase;margin-bottom:7px}
.project-notes p{margin:0;color:#435966;font-size:15px;line-height:1.6}
.project-feature-dinq{grid-template-columns:.78fr 1.22fr;gap:6%;padding:38px 0 0}
.project-feature-dinq .project-description{padding-top:22px}
.project-feature-dinq .metric-list{margin:20px 0 0}
.project-feature-dinq .project-notes{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:8px 0 0;border-top:1px solid #adbfcb;counter-reset:project-note}
.project-feature-dinq .project-notes>div{border:0;padding:20px 34px 24px 0;counter-increment:project-note}
.project-feature-dinq .project-notes>div+div{border:0;padding-left:20px}
.project-feature-dinq .project-notes strong{margin-bottom:7px}
.project-feature-dinq .project-notes strong::before{content:'0' counter(project-note) ' / ';color:#6c8799;font-weight:500}
.project-feature-dinq .project-notes p{max-width:330px;font-size:14px;line-height:1.48}
.projects-section{padding-bottom:55px}
@media(max-width:900px){.project-feature-dinq{grid-template-columns:.85fr 1.15fr}}
@media(max-width:700px){.projects-section{padding-bottom:40px}.project-feature-dinq{grid-template-columns:1fr;padding:28px 0 0}.project-feature-dinq .project-description{padding-top:0}.project-feature-dinq .project-notes{grid-template-columns:1fr;margin-top:8px}.project-feature-dinq .project-notes>div,.project-feature-dinq .project-notes>div+div{padding:16px 0;border-left:0}.project-feature-dinq .project-notes>div+div{border-top:1px solid #adbfcb}.project-feature-dinq .project-notes p{max-width:none}}

/* Rounded identity and a more playful, character-free footer. */
.wordmark{font-family:'Arial Rounded MT Bold','Trebuchet MS',sans-serif;font-weight:900;letter-spacing:-4.5px;-webkit-text-stroke:.6px currentColor}
footer{padding:68px 6% 25px;overflow:hidden}
.footer-top{align-items:flex-end;padding-bottom:34px}
.footer-copy{max-width:820px}
.footer-copy>span{display:block;color:#d1e0ea}
footer .footer-copy h2{font-family:'Arial Rounded MT Bold','Trebuchet MS',sans-serif;font-size:clamp(64px,9vw,138px);font-weight:900;letter-spacing:-.075em;line-height:.9;margin:19px 0 18px;color:var(--pink);text-shadow:5px 6px 0 #0062ad}
.footer-copy p{margin:0;color:#e4eef4;font-size:16px;line-height:1.5}
.footer-bubble{position:relative;flex:0 0 178px;width:178px;height:178px;display:grid;place-items:center;border-radius:48% 52% 43% 57% / 58% 43% 57% 42%;background:var(--pink);color:var(--ink);transform:rotate(-7deg);box-shadow:10px 12px 0 #0062ad;transition:transform .3s cubic-bezier(.2,.8,.2,1),border-radius .3s}
.footer-bubble span{font-family:'Arial Rounded MT Bold','Trebuchet MS',sans-serif;font-size:32px;font-weight:900;line-height:.9;letter-spacing:-1.5px;text-align:center}
.footer-bubble b{position:absolute;right:29px;top:25px;font-size:22px;font-weight:500}
.footer-bubble:hover{transform:rotate(3deg) scale(1.05);border-radius:58% 42% 54% 46% / 45% 59% 41% 55%}
.footer-ribbon{margin:8px -8% 48px;padding:15px 0;overflow:hidden;background:#0062ad;color:#fff;border-top:1px solid #ffffff55;border-bottom:1px solid #ffffff55;transform:rotate(-1.4deg)}
.footer-ribbon>div{display:flex;align-items:center;gap:28px;width:max-content;animation:footer-ribbon-move 18s linear infinite}
.footer-ribbon span{font-family:'Space Grotesk',sans-serif;font-size:17px;font-weight:700;letter-spacing:2px}
.footer-ribbon i{font-style:normal;color:var(--pink);font-size:20px}
@keyframes footer-ribbon-move{to{transform:translateX(-50%)}}
@media(max-width:700px){footer{padding-top:48px}.footer-top{align-items:flex-start}.footer-copy p{font-size:14px;max-width:245px}footer .footer-copy h2{font-size:52px;text-shadow:3px 4px 0 #0062ad}.footer-bubble{flex-basis:98px;width:98px;height:98px;box-shadow:6px 7px 0 #0062ad}.footer-bubble span{font-size:21px}.footer-bubble b{right:14px;top:13px;font-size:16px}.footer-ribbon{margin-top:2px;margin-bottom:35px}.footer-bottom>span:nth-child(2){display:none}}
@media(prefers-reduced-motion:reduce){.footer-ribbon>div{animation-play-state:paused}}
.project-site-link{display:inline-flex;align-items:center;gap:8px;margin-top:24px;padding-bottom:5px;border-bottom:1px solid #91acbd;font-size:15px;font-weight:600}
.project-site-link:hover{color:#ffba21;border-color:#ffba21}.project-logo-dinq{transition:transform .2s ease}.project-logo-dinq:hover{transform:translateY(-3px)}
.project-action{position:relative;align-items:flex-start;flex-direction:column;gap:7px;padding:8px 0}.click-cue{display:inline-flex;align-items:center;gap:6px;padding:0;font-size:11px;font-weight:700;letter-spacing:.5px;white-space:nowrap;text-transform:lowercase;transition:color .2s,transform .2s}.project-action:hover .click-cue{color:#ffba21;transform:translateX(3px)}.click-cue b{font-size:13px;font-weight:500}
@media(max-width:600px){.project-brand{gap:14px;margin-top:20px}.project-logo{height:auto}.project-logo-ad4pt{width:62px}.project-logo-dinq{width:auto}.project-logo-dinq img{width:220px}.project-action{gap:7px}.click-cue{font-size:10px}}
.rotor-stage canvas{touch-action:pan-y;cursor:grab}
.rotor-stage.dragging canvas{cursor:grabbing}

/* Liquid-lens cursor: calm, precise, and softly elastic. */
.liquid-cursor,.liquid-cursor-satellite{display:none}
@media (hover:hover) and (pointer:fine){
  html,body,body *{cursor:none!important}
  .liquid-cursor{--cursor-x:-80px;--cursor-y:-80px;--cursor-stretch:1;--cursor-squash:1;--cursor-tilt:0deg;display:block;position:fixed;left:0;top:0;width:40px;height:40px;z-index:2147483647;pointer-events:none;opacity:0;color:#2f6f95;transform:translate3d(var(--cursor-x),var(--cursor-y),0) translate(-50%,-50%) rotate(var(--cursor-tilt)) scale(var(--cursor-stretch),var(--cursor-squash));transition:opacity .14s,color .18s;will-change:transform}
  .liquid-cursor.is-visible{opacity:1}.liquid-cursor.is-hovering{color:#ffde59}.liquid-cursor.is-pressed{--cursor-stretch:.82!important;--cursor-squash:1.16!important}
  .liquid-cursor-halo{position:absolute;inset:2px;border:2px solid currentColor;border-radius:58% 42% 52% 48% / 45% 58% 42% 55%;background:color-mix(in srgb,currentColor 14%,transparent);box-shadow:0 3px 12px #192e3e22;animation:liquid-lens-breathe 2.4s ease-in-out infinite alternate;transition:background .18s,transform .18s}
  .liquid-cursor-core{position:absolute;left:50%;top:50%;width:6px;height:6px;border-radius:50%;background:currentColor;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #f5f4edaa}
  .liquid-cursor.is-hovering .liquid-cursor-halo{background:color-mix(in srgb,currentColor 27%,transparent);transform:scale(1.12)}
  .liquid-cursor-satellite{display:block;position:fixed;left:0;top:0;width:9px;height:9px;z-index:2147483646;pointer-events:none;color:#2f6f95;background:currentColor;border-radius:65% 35% 55% 45% / 42% 62% 38% 58%;opacity:0;transition:opacity .16s,color .18s;box-shadow:0 1px 4px #192e3e30;will-change:transform}
  .liquid-cursor-satellite::after{content:'';position:absolute;right:60%;top:38%;width:14px;height:3px;border-radius:999px;background:linear-gradient(90deg,transparent,currentColor)}
  .liquid-cursor-satellite.is-visible{opacity:.9}.liquid-cursor-satellite.is-hovering{color:#ffde59}
  @keyframes liquid-lens-breathe{0%{border-radius:58% 42% 52% 48% / 45% 58% 42% 55%}100%{border-radius:43% 57% 39% 61% / 59% 40% 60% 41%}}
}
@media (prefers-reduced-motion:reduce){.liquid-cursor-halo{animation:none!important}.liquid-cursor{transition:color .16s,opacity .15s!important}}

/* Click-through Polaroid stack. */
.photo-stack-wrap{position:relative;width:100%;max-width:390px;margin:0 auto;padding:42px 46px 72px}
.photo-stack{position:relative;display:block;width:100%;aspect-ratio:.84;border:0;background:transparent;padding:0;color:var(--ink);isolation:isolate}
.photo-card{--photo-z:1;--photo-x:0px;--photo-y:0px;--photo-rotate:0deg;position:absolute;inset:0;margin:0;padding:13px 13px 49px;background:#fff;box-shadow:5px 12px 25px #192e3e32;transform:translate(var(--photo-x),var(--photo-y)) rotate(var(--photo-rotate));transform-origin:50% 90%;transition:transform .48s cubic-bezier(.2,.8,.2,1),box-shadow .3s,opacity .3s;z-index:var(--photo-z)}
.photo-card::after{content:'';position:absolute;inset:0;border:1px solid #192e3e12;pointer-events:none}
.photo-card .portrait{height:100%;aspect-ratio:auto}.photo-card .portrait img{object-position:center center}
.photo-card:first-child .portrait img{object-position:center 58%}
.photo-card figcaption{position:absolute;left:14px;right:14px;bottom:16px;text-align:center;font-size:15px;font-style:italic;letter-spacing:-.2px}
.photo-stack:hover .photo-card.is-active{transform:translateY(-5px) rotate(-1deg);box-shadow:0 16px 34px #192e3e2b}
.photo-stack:active .photo-card.is-active{transform:translateY(1px) rotate(-2deg) scale(.985)}
@media(max-width:800px){.photo-stack-wrap{max-width:370px;padding:38px 42px 68px}}
@media(max-width:600px){.photo-stack-wrap{padding:36px 38px 62px}.photo-card{padding:10px 10px 44px}.photo-card figcaption{bottom:14px;font-size:14px}}

.gallery-lightbox {
  width: min(92vw, 1100px);
  height: min(90vh, 900px);
  padding: 0;
  border: 0;
  background: transparent;
  overflow: visible;
}
.gallery-lightbox::backdrop {
  background: rgba(11, 18, 25, .88);
  backdrop-filter: blur(12px);
}
.gallery-lightbox[open] {
  display: grid;
  place-items: center;
}
.gallery-lightbox img {
  display: block;
  max-width: 100%;
  max-height: 88vh;
  border-radius: 18px;
  object-fit: contain;
  box-shadow: 0 24px 80px rgba(0, 0, 0, .48);
}
.gallery-lightbox-close {
  position: fixed;
  top: 20px;
  right: 24px;
  z-index: 2;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 50%;
  background: var(--yellow, #ffd84d);
  color: #172536;
  font: 700 30px/1 system-ui, sans-serif;
  cursor: pointer;
  box-shadow: 0 8px 30px rgba(0, 0, 0, .28);
}

/* Polished fixes: aligned navigation, animated intro, modal motion, and top-layer cursor. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
header nav{align-items:center}
header nav a{display:inline-flex;align-items:center;min-height:36px;line-height:1}
header nav a span{display:inline-block;line-height:1;transform:translateY(-1px)}
.role-heading{display:flex;flex-direction:column;min-height:2.02em}
.typed-role-line{display:flex;align-items:baseline;min-width:0;color:var(--pink)}
.typed-role-line em{display:inline-block;min-width:1ch;white-space:nowrap}
.typing-caret{display:inline-block;width:.055em;height:.76em;margin-left:.075em;background:currentColor;transform:translateY(.04em);animation:typing-caret-blink .82s steps(1,end) infinite}
@keyframes typing-caret-blink{50%{opacity:0}}

.gallery-lightbox[open]{opacity:1}
.gallery-lightbox[open]::backdrop{animation:gallery-backdrop-in .2s linear both}
.gallery-lightbox>img{transition:none}
.gallery-lightbox.is-transitioning>img{opacity:0}
.gallery-transition-card{position:fixed!important;display:block;z-index:1;margin:0;pointer-events:none;transform-style:preserve-3d;will-change:left,top,width,height,transform;border:0!important;outline:0!important;background:transparent!important;box-shadow:none!important}
.gallery-transition-card.is-spinning-open{animation:gallery-spin-open .5s linear both}
.gallery-transition-face{position:absolute;inset:0;display:block;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;margin:0;object-fit:cover;border:0!important;outline:0!important;border-radius:16px;box-shadow:none!important;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(.6px);will-change:transform}
.gallery-transition-face.is-back{transform:rotateY(180deg) translateZ(.6px)}
.gallery-lightbox-close{z-index:3}
@keyframes lightbox-fade-in{from{opacity:0}to{opacity:1}}
@keyframes gallery-backdrop-in{0%{background:rgba(11,18,25,0);backdrop-filter:blur(0)}100%{background:rgba(11,18,25,.88);backdrop-filter:blur(12px)}}
@keyframes gallery-spin-open{
  0%{left:var(--start-left);top:var(--start-top);width:var(--start-width);height:var(--start-height);transform:perspective(1200px) translateZ(0) rotateY(0deg) rotateX(0deg) scale(1)}
  22%{transform:perspective(1200px) translateZ(72px) rotateY(72deg) rotateX(2deg) scale(1.015)}
  25%{transform:perspective(1200px) translateZ(78px) rotateY(90deg) rotateX(8deg) scale(1.018)}
  28%{transform:perspective(1200px) translateZ(84px) rotateY(108deg) rotateX(2deg) scale(1.02)}
  50%{left:var(--mid-left);top:var(--mid-top);width:var(--mid-width);height:var(--mid-height);transform:perspective(1200px) translateZ(105px) rotateY(180deg) rotateX(2deg) scale(1.025)}
  72%{transform:perspective(1200px) translateZ(84px) rotateY(252deg) rotateX(-2deg) scale(1.02)}
  75%{transform:perspective(1200px) translateZ(78px) rotateY(270deg) rotateX(-8deg) scale(1.018)}
  78%{transform:perspective(1200px) translateZ(72px) rotateY(288deg) rotateX(-2deg) scale(1.015)}
  100%{left:var(--target-left);top:var(--target-top);width:var(--target-width);height:var(--target-height);transform:perspective(1200px) translateZ(0) rotateY(360deg) rotateX(0deg) scale(1)}
}

@media (hover:hover) and (pointer:fine){
  dialog.cursor-host,dialog.cursor-host *{cursor:none!important}
  dialog.cursor-host .liquid-cursor,dialog.cursor-host .liquid-cursor-satellite{position:fixed}
}
@media (prefers-reduced-motion:reduce){.typing-caret{animation:none}.gallery-lightbox[open],.gallery-transition-card.is-spinning-open{animation:none!important}}
@media(max-width:600px){.role-heading{min-height:2.08em}.typed-role-line em{white-space:normal}.typing-caret{flex:none}}

/* Clearer blue for the primary canvas, paired with the original warm paper. */
:root{--green:#3f7698;--paper:#f5f4ed}

/* Keep the intro crisp; soften only the animated role. */
.hero .role-heading{font-family:'Space Grotesk',sans-serif;font-weight:500;letter-spacing:-.065em;line-height:.97}
.hero .role-heading>span:first-child{font-family:Arial,Helvetica,sans-serif;font-weight:800;letter-spacing:-.075em}
.hero .typed-role-line{line-height:1;margin-top:0}
.hero .typed-role-line em{font-family:'Arial Rounded MT Bold','DM Sans',sans-serif;font-style:normal;font-weight:700;letter-spacing:-.055em}

/* The final project mirrors AD4PT: highlights followed by one concise takeaway. */
.project-feature-dinq{padding-bottom:38px}
.project-feature-dinq .metric-list{margin-bottom:28px}
.project-feature-dinq .project-description>p:last-child{margin-bottom:0}

/* With the ribbon removed, the footer closes cleanly on its utility row. */
.footer-top{padding-bottom:48px}

/* Tactile, text-free footer squishy. */
.footer-squishy{--squish-x:0;--squish-y:0;--press-x:34%;--press-y:27%;isolation:isolate;overflow:visible;touch-action:none;cursor:grab;background:radial-gradient(circle at var(--press-x) var(--press-y),#fff8c9 0 4%,#fff0a2 5% 10%,transparent 22%),radial-gradient(circle at 34% 27%,#fff4ae 0 7%,#ffe66f 25%,#ffcf34 70%,#f2aa17 100%);border:0;border-radius:54% 46% 51% 49% / 48% 55% 45% 52%;box-shadow:inset -15px -18px 24px #e29a1655,inset 11px 12px 18px #fff8c277,9px 13px 0 #0062ad55,0 18px 32px #17344735;transform:translate(calc(var(--squish-x)*11px),calc(var(--squish-y)*11px)) rotate(calc(-4deg + var(--squish-x)*3deg)) scale(calc(1 + var(--squish-y)*.04),calc(1 - var(--squish-y)*.03));transition:border-radius .22s ease,box-shadow .22s ease,transform .13s ease;will-change:transform,border-radius}
.footer-squishy::before,.footer-squishy::after{content:'';position:absolute;z-index:2;pointer-events:none;border-radius:50%}
.footer-squishy::before{width:31px;height:17px;left:30px;top:31px;transform:rotate(-28deg)}
.footer-squishy::before{background:#fff8ccaa;filter:blur(.2px)}
.footer-squishy::after{width:64px;height:50px;left:var(--press-x);top:var(--press-y);opacity:0;background:radial-gradient(ellipse at center,#a967183d 0 18%,#b8791830 36%,transparent 70%);filter:blur(2px);transform:translate(-50%,-50%) scale(.25);transition:opacity .16s ease,transform .18s ease}
.squishy-core{position:absolute;inset:14%;z-index:-1;border-radius:46% 54% 45% 55% / 57% 43% 57% 43%;background:radial-gradient(circle at 62% 68%,#f7b51e55,transparent 42%);transition:transform .22s ease,border-radius .25s ease}
.footer-squishy:hover{border-radius:46% 54% 43% 57% / 58% 43% 57% 42%;box-shadow:inset -19px -14px 27px #e29a165f,inset 13px 14px 18px #fff8c288,12px 16px 0 #0062ad55,0 22px 38px #17344742}
.footer-squishy.is-squished{cursor:grabbing;border-radius:58% 42% 55% 45% / 44% 56% 46% 54%;transform:translate(var(--drag-x,0),var(--drag-y,7px)) rotate(var(--drag-tilt,0deg)) scale(var(--squeeze-x,1.1),var(--squeeze-y,.88));box-shadow:inset -20px -12px 27px #d58b176b,inset 9px 8px 15px #fff4ae77,6px 8px 0 #0062ad55,0 10px 20px #17344732;transition:transform .18s ease-out,border-radius .2s ease,box-shadow .2s ease}
.footer-squishy.is-squished::after{opacity:1;transform:translate(-50%,-50%) scale(1)}
.footer-squishy.is-squished .squishy-core{transform:scale(.88,1.18);border-radius:60% 40% 62% 38% / 42% 58% 45% 55%}
.footer-squishy.is-rebounding{animation:squishy-rise 2.25s cubic-bezier(.16,.7,.28,1)}
.footer-squishy.is-rebounding::after{animation:dimple-rise 2.25s ease-out forwards}
@keyframes squishy-rise{0%{transform:translate(var(--drag-x,0),var(--drag-y,7px)) rotate(var(--drag-tilt,0deg)) scale(var(--squeeze-x,1.1),var(--squeeze-y,.88));border-radius:58% 42% 55% 45% / 44% 56% 46% 54%}45%{transform:translate(0,3px) rotate(-2deg) scale(1.045,.95);border-radius:56% 44% 52% 48% / 46% 54% 47% 53%}75%{transform:translate(0,1px) rotate(-3deg) scale(1.012,.985)}100%{transform:translate(0,0) rotate(-4deg) scale(1);border-radius:54% 46% 51% 49% / 48% 55% 45% 52%}}
@keyframes dimple-rise{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}65%{opacity:.28;transform:translate(-50%,-50%) scale(.52)}100%{opacity:0;transform:translate(-50%,-50%) scale(.18)}}
@media(max-width:700px){.footer-squishy{flex-basis:98px;width:98px;height:98px}}
@media(prefers-reduced-motion:reduce){.footer-squishy{transition:none}}

/* Final touch and responsive safeguards for phones and tablets. */
html,body{max-width:100%;overflow-x:hidden}
@media(max-width:900px){
  .contact-grid{grid-template-columns:1fr .82fr;gap:7%}
  .contact-copy h2{font-size:clamp(50px,7vw,68px)}
  .photo-stack-wrap{min-width:0}
}
@media(max-width:600px){
  header nav a{display:flex;align-items:center;min-height:44px}
  .wordmark{min-height:44px}
  #gallery-motion{width:42px;height:42px}
  .hero-bottom>a{display:grid;place-items:center;min-width:44px;min-height:44px}
  .footer-bottom a{display:flex;align-items:center;min-height:44px}
  .contact-grid{grid-template-columns:1fr;gap:45px}
}
