@import url('https://fonts.googleapis.com/css2?family=Lilita+One&family=Manrope:wght@400;500;600;700&family=Yellowtail&display=swap');
:root{--cream:#f7f0df;--sky:#a9c8e8;--blue:#30476b;--coral:#d96548;--gold:#ddba55;--espresso:#493127;--pad:clamp(18px,4vw,64px)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;overflow-x:hidden;background:var(--cream);color:var(--blue);font-family:Manrope,sans-serif}body.menu-open{overflow:hidden}img{display:block;width:100%}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit}.skip-link{position:fixed;z-index:1000;left:16px;top:-80px;padding:12px;background:var(--cream)}.skip-link:focus{top:12px}:focus-visible{outline:2px solid var(--coral);outline-offset:4px}.eyebrow{margin:0;font-size:9px;font-weight:700;letter-spacing:.2em;text-transform:uppercase}.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s}.reveal.seen{opacity:1;transform:none}
.site-header{position:fixed;z-index:50;top:0;right:0;left:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:15px var(--pad);border-bottom:1px solid rgba(48,71,107,.24);background:rgba(247,240,223,.84);backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:11px;width:max-content;font:400 18px "Lilita One",sans-serif;letter-spacing:.04em}.brand img{width:46px;height:46px;border-radius:12px}.site-header>p{margin:0;font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.menu-button{justify-self:end;display:flex;align-items:center;gap:9px;padding:10px 0;border:0;background:transparent;font-size:10px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;cursor:pointer}.menu-button i{width:7px;height:7px;border-radius:50%;background:var(--coral)}.site-menu{position:fixed;z-index:40;inset:0;display:grid;grid-template-rows:auto 1fr auto;padding:105px var(--pad) 45px;background:var(--blue);color:var(--cream);visibility:hidden;opacity:0;transform:translateY(-20px);transition:opacity .45s,transform .55s,visibility 0s linear .55s}.site-menu.open{visibility:visible;opacity:1;transform:none;transition-delay:0s}.menu-meta,.menu-foot{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.15em;text-transform:uppercase}.menu-links{align-self:center}.menu-links a{display:grid;grid-template-columns:55px 1fr auto;align-items:baseline;width:min(100%,1050px);padding:8px 0;border-bottom:1px solid rgba(247,240,223,.28);font:400 clamp(52px,8vw,118px)/.92 "Lilita One",sans-serif}.menu-links a span{font:700 9px Manrope,sans-serif;letter-spacing:.16em}.menu-links a::after{content:"↗";font:400 .35em Manrope,sans-serif;opacity:0}.menu-links a:hover{color:var(--gold)}.menu-links a:hover::after,.menu-links a[aria-current=page]::after{opacity:1}.menu-foot a+a{margin-left:30px}
.portfolio-menu{width:min(100%,1050px);border-bottom:1px solid rgba(247,240,223,.28)}.portfolio-menu summary{display:grid;grid-template-columns:55px 1fr auto;align-items:baseline;padding:8px 0;list-style:none;font:400 clamp(52px,8vw,118px)/.92 "Lilita One",sans-serif;cursor:pointer}.portfolio-menu summary::-webkit-details-marker{display:none}.portfolio-menu summary span{font:700 9px Manrope,sans-serif;letter-spacing:.16em}.portfolio-menu summary::after{content:"+";font:.35em Manrope,sans-serif}.portfolio-menu[open] summary::after{content:"−"}.portfolio-menu summary:hover{color:var(--gold)}.portfolio-menu>div{display:flex;flex-wrap:wrap;gap:8px 24px;padding:8px 0 18px 55px}.menu-links .portfolio-menu>div a{display:block;width:auto;padding:0;border:0;font:600 10px/1.5 Manrope,sans-serif;letter-spacing:.12em;text-transform:uppercase}.menu-links .portfolio-menu>div a::after{display:none}.menu-links .portfolio-menu>div a:hover,.menu-links .portfolio-menu>div a[aria-current=page]{color:var(--gold)}.menu-links .portfolio-menu>div .portfolio-all{margin-left:auto}
.portfolio-hero{position:relative;display:grid;grid-template-columns:.88fr 1.12fr;align-items:center;gap:7vw;min-height:100svh;padding:125px var(--pad) 70px;overflow:hidden;background:var(--sky)}.hero-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(48,71,107,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(48,71,107,.07) 1px,transparent 1px);background-size:42px 42px}.hero-copy,.hero-frame{position:relative;z-index:2}.hero-copy h1{margin:24px 0 35px;font:400 clamp(78px,10vw,155px)/.76 "Lilita One",sans-serif;letter-spacing:-.04em}.hero-copy h1 em{display:inline-block;color:var(--coral);font:400 .66em Yellowtail,cursive;white-space:nowrap}.hero-copy>p:last-child{max-width:480px;font-size:clamp(15px,1.4vw,19px);line-height:1.65}.hero-frame{margin:0;padding:12px;background:var(--cream);box-shadow:22px 24px 0 rgba(48,71,107,.17);transform:rotate(1.3deg)}.hero-frame::after{content:"";position:absolute;inset:-16px;background:linear-gradient(var(--coral),var(--coral)) left top/50px 3px no-repeat,linear-gradient(var(--coral),var(--coral)) left top/3px 50px no-repeat,linear-gradient(var(--coral),var(--coral)) right bottom/50px 3px no-repeat,linear-gradient(var(--coral),var(--coral)) right bottom/3px 50px no-repeat;pointer-events:none}.hero-frame img{width:100%;height:auto}.hero-frame figcaption{display:flex;justify-content:space-between;gap:20px;padding:13px 5px 3px;font-size:8px;letter-spacing:.14em;text-transform:uppercase}.hero-frame strong{font-weight:700}.hero-note{position:absolute;z-index:3;left:var(--pad);bottom:32px;margin:0;color:var(--coral);font:400 24px Yellowtail,cursive;transform:rotate(-3deg)}.scroll-cue{position:absolute;z-index:3;right:var(--pad);bottom:25px;display:flex;align-items:center;gap:13px;font-size:8px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.scroll-cue i{display:grid;width:34px;height:34px;place-items:center;border:1px solid;border-radius:50%;font-style:normal;animation:bob 1.6s infinite}@keyframes bob{50%{transform:translateY(6px)}}
.project-explorer{position:relative;height:560vh;background:var(--gold)}.explorer-stage{--explorer-color:var(--gold);--explorer-ink:var(--blue);position:sticky;top:0;height:100svh;overflow:hidden;background:var(--explorer-color);color:var(--explorer-ink);transition:background-color .65s,color .4s}.explorer-stage[data-active="4"]{--explorer-ink:var(--cream)}.explorer-grid{position:absolute;inset:0;background-image:linear-gradient(currentColor 1px,transparent 1px),linear-gradient(90deg,currentColor 1px,transparent 1px);background-size:54px 54px;opacity:.055}.explorer-meta{position:absolute;z-index:45;top:96px;right:var(--pad);left:var(--pad);display:flex;justify-content:space-between;font-size:9px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.explorer-cards{position:absolute;inset:0}.project-card{--card-x:0vw;--card-y:0vh;--card-scale:.5;--card-rotate:0deg;--card-z:1;position:absolute;z-index:var(--card-z);top:46%;left:50%;display:block;width:clamp(250px,36vw,610px);opacity:.3;filter:saturate(.35) contrast(.88);transform:translate(-50%,-50%) translate(var(--card-x),var(--card-y)) rotate(var(--card-rotate)) scale(var(--card-scale));transform-origin:center;transition:transform .78s cubic-bezier(.22,.8,.2,1),opacity .55s,filter .55s,box-shadow .55s}.project-card::after{content:"";position:absolute;inset:0;background:var(--explorer-color);mix-blend-mode:color;opacity:.62;transition:opacity .5s}.project-card img{width:100%;height:auto;max-height:64vh;object-fit:contain;box-shadow:0 22px 55px rgba(37,30,25,.16)}.project-card.is-active{opacity:1;filter:none}.project-card.is-active::before{content:"";position:absolute;z-index:3;inset:-16px;background:linear-gradient(currentColor,currentColor) left top/52px 3px no-repeat,linear-gradient(currentColor,currentColor) left top/3px 52px no-repeat,linear-gradient(currentColor,currentColor) right top/52px 3px no-repeat,linear-gradient(currentColor,currentColor) right top/3px 52px no-repeat,linear-gradient(currentColor,currentColor) left bottom/52px 3px no-repeat,linear-gradient(currentColor,currentColor) left bottom/3px 52px no-repeat,linear-gradient(currentColor,currentColor) right bottom/52px 3px no-repeat,linear-gradient(currentColor,currentColor) right bottom/3px 52px no-repeat;pointer-events:none}.project-card.is-active::after{opacity:0}.project-card.is-active img{box-shadow:0 30px 70px rgba(37,30,25,.24)}.explorer-caption{position:absolute;z-index:40;right:12vw;bottom:5vh;left:12vw;text-align:center;pointer-events:none}.explorer-caption span,.explorer-caption p{margin:0;font-size:8px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.explorer-caption h2{margin:8px 0 5px;font:400 clamp(54px,6.5vw,104px)/.82 "Lilita One",sans-serif;letter-spacing:-.035em;text-shadow:2px 2px 0 rgba(247,240,223,.48)}.explorer-progress{position:absolute;z-index:45;right:var(--pad);bottom:24px;left:var(--pad);height:2px;background:color-mix(in srgb,currentColor 20%,transparent);transform-origin:left}.explorer-progress i{display:block;width:100%;height:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .14s linear}.explorer-flash{position:absolute;z-index:60;inset:0;display:flex;align-items:flex-end;justify-content:space-between;padding:0 var(--pad) 28px;background:var(--explorer-color);font-size:9px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;visibility:hidden;clip-path:inset(0 100% 0 0);pointer-events:none}.explorer-flash strong{font:400 50px/1 "Lilita One",sans-serif}.explorer-flash.play{visibility:visible;animation:frame-flash .52s cubic-bezier(.76,0,.24,1)}@keyframes frame-flash{0%{clip-path:inset(0 100% 0 0)}45%{clip-path:inset(0 0 0 0)}55%{clip-path:inset(0 0 0 0)}100%{clip-path:inset(0 0 0 100%)}}
.portfolio-categories{padding:clamp(110px,14vw,190px) var(--pad);background:var(--cream)}.categories-heading{display:grid;grid-template-columns:1.15fr .85fr;align-items:end;gap:8vw;margin-bottom:clamp(75px,10vw,135px)}.categories-heading h2{margin:24px 0 0;font:400 clamp(72px,9vw,138px)/.76 "Lilita One",sans-serif;letter-spacing:-.04em}.categories-heading h2 em{color:var(--coral);font:400 .64em Yellowtail,cursive}.categories-heading>p{max-width:480px;margin:0 0 8px;font-size:16px;line-height:1.7}.category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(54px,6vw,86px) clamp(25px,5vw,75px);max-width:1320px;margin:auto}.category-card{position:relative;display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto auto;align-items:end}.category-card>div{grid-column:1/-1;overflow:hidden;padding:13px;background:var(--sky)}.category-card img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;transition:transform .6s cubic-bezier(.22,.8,.2,1),filter .35s}.category-card span{grid-column:1/-1;margin:17px 0 8px;font-size:8px;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.category-card h3{margin:0;font:400 clamp(44px,5.4vw,82px)/.85 "Lilita One",sans-serif}.category-card p{grid-column:1/-1;margin:11px 0 0;font-size:8px;font-weight:700;letter-spacing:.15em;text-transform:uppercase}.category-card:hover img{transform:scale(1.025);filter:saturate(1.12)}.category-portraits>div{background:var(--gold)}.category-performances>div{background:var(--coral)}.category-weddings>div{background:var(--sky)}
.archive{padding:clamp(100px,13vw,180px) var(--pad);background:var(--cream)}.archive-heading{display:grid;grid-template-columns:1.2fr .8fr;align-items:end;gap:9vw;margin-bottom:clamp(90px,12vw,165px)}.archive-heading h2{margin:25px 0 0;font:400 clamp(75px,10vw,155px)/.76 "Lilita One",sans-serif;letter-spacing:-.04em}.archive-heading h2 em{color:var(--coral);font:400 .64em Yellowtail,cursive}.archive-heading>p{max-width:520px;margin:0 0 10px;font-size:17px;line-height:1.7}.work-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:clamp(24px,3vw,50px)}.work{margin:0}.work button{position:relative;display:block;width:100%;padding:0;overflow:hidden;border:0;background:none;cursor:zoom-in}.work img{width:100%;height:auto;transition:filter .3s,transform .45s}.work button>span{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:end;justify-content:space-between;gap:15px;padding:45px 18px 16px;background:linear-gradient(transparent,rgba(48,71,107,.92));color:var(--cream);font-size:8px;font-style:normal;font-weight:700;letter-spacing:.14em;text-transform:uppercase;opacity:0;transform:translateY(12px);transition:opacity .25s,transform .25s}.work button>span i{font-style:normal}.work button:hover img,.work button:focus-visible img{filter:saturate(.78);transform:scale(1.012)}.work button:hover>span,.work button:focus-visible>span{opacity:1;transform:none}.work-a{grid-column:1/8}.work-b{grid-column:9/13;margin-top:9vw}.work-c{grid-column:5/13;margin-top:5vw}.archive-note{grid-column:1/5;align-self:center;margin:9vw 0 0;font:400 clamp(31px,3.5vw,52px)/1.08 "Lilita One",sans-serif}.archive-note em{color:var(--coral);font:400 .78em Yellowtail,cursive}.work-d{grid-column:1/10;margin-top:10vw}.work-e{grid-column:10/13;margin-top:18vw}.work-f{grid-column:3/13;margin-top:7vw}.work-g{grid-column:1/5;margin-top:8vw}.work-h{grid-column:7/13;margin-top:13vw}.archive-pull{grid-column:2/8;align-self:center;margin:12vw 0 0;font:400 clamp(58px,7vw,105px)/.78 "Lilita One",sans-serif}.archive-pull em{color:var(--coral);font:400 .7em Yellowtail,cursive}.work-i{grid-column:1/11;margin-top:9vw}.work-j{grid-column:2/6;margin-top:9vw}.work-k{grid-column:7/13;margin-top:15vw}.stock-note{max-width:720px;margin:120px auto 0;color:rgba(48,71,107,.75);font-size:10px;line-height:1.7;text-align:center}.contact-poster{display:flex;min-height:760px;flex-direction:column;align-items:center;justify-content:center;padding:110px var(--pad);background:var(--sky);text-align:center}.contact-poster h2{margin:65px 0 0;font:400 clamp(70px,8.5vw,132px)/.8 "Lilita One",sans-serif;letter-spacing:-.035em}.contact-poster h2 em{color:var(--coral);font:400 .67em Yellowtail,cursive}.contact-poster>i{width:1px;height:100px;margin:58px 0;background:var(--gold)}.contact-poster>a{padding:20px 58px;background:var(--gold);font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;transition:background .2s,color .2s,transform .2s}.contact-poster>a:hover{background:var(--coral);color:var(--cream);transform:translateY(-3px)}
.lightbox{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;padding:55px;border:0;background:rgba(48,71,107,.97);color:var(--cream)}.lightbox::backdrop{background:transparent}.lightbox img{width:100%;height:calc(100% - 32px);object-fit:contain}.lightbox p{margin:10px 0 0;text-align:center;font-size:9px;letter-spacing:.15em;text-transform:uppercase}.lightbox-close{position:absolute;z-index:2;right:20px;top:12px;border:0;background:none;color:var(--cream);font-size:34px;cursor:pointer}.site-footer{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end;gap:40px;padding:75px var(--pad);background:var(--espresso);color:var(--cream)}.site-footer>a img{width:min(330px,80%)}.site-footer>div{display:flex;flex-direction:column;gap:10px;font-size:10px;letter-spacing:.1em;text-transform:uppercase}.site-footer>p{justify-self:end;margin:0;font-size:9px;line-height:1.8;text-align:right}
@media(max-width:900px){.portfolio-hero{grid-template-columns:1fr;gap:70px;padding-top:140px}.hero-copy{max-width:700px}.hero-frame{width:88%;margin-left:auto}.archive-heading{grid-template-columns:1fr}.archive-heading>p{margin-left:auto}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:78px 22px}.work,.work-a,.work-b,.work-c,.work-d,.work-e,.work-f,.work-g,.work-h,.work-i,.work-j,.work-k{margin:0}.work-a,.work-d,.work-f,.work-i,.work-k{grid-column:1/-1}.work-b,.work-e,.work-g,.work-j{grid-column:1}.work-c,.work-h{grid-column:2}.archive-note,.archive-pull{grid-column:1/-1}.archive-note{margin:10px 5vw;font-size:44px}.archive-pull{margin:20px 4vw;font-size:82px}.site-footer{grid-template-columns:1fr 1fr}.site-footer>p{justify-self:start;grid-column:1/-1;text-align:left}}
@media(max-width:650px){.site-header{grid-template-columns:1fr 1fr}.site-header>p,.brand span{display:none}.brand img{width:42px;height:42px}.site-menu{padding:95px 20px 35px}.menu-meta{display:none}.menu-links a{grid-template-columns:35px 1fr;font-size:43px}.menu-links a::after{display:none}.menu-foot{display:grid;gap:12px}.menu-foot a+a{margin:0}.portfolio-hero{min-height:auto;gap:58px;padding:120px 16px 105px}.hero-copy h1{font-size:76px}.hero-copy>p:last-child{font-size:15px}.hero-frame{width:94%;padding:8px}.hero-note{position:static;grid-row:3;margin:0;font-size:21px}.scroll-cue{right:16px;bottom:22px}.scroll-cue span{display:none}.archive{padding:95px 14px}.archive-heading{margin-bottom:85px}.archive-heading h2{font-size:72px}.archive-heading>p{font-size:15px}.work-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:55px 12px}.work,.work-a,.work-b,.work-c,.work-d,.work-e,.work-f,.work-g,.work-h,.work-i,.work-j,.work-k{margin:0}.work-a,.work-d,.work-f,.work-i,.work-k{grid-column:1/-1}.work-b,.work-e,.work-g,.work-j{grid-column:1}.work-c,.work-h{grid-column:2}.archive-note{grid-column:1/-1;margin:10px 10px 0;font-size:34px}.archive-pull{grid-column:1/-1;margin:15px 5px;font-size:65px}.work button>span{display:none}.stock-note{margin-top:80px}.contact-poster{min-height:680px;padding:90px 20px}.contact-poster h2{margin-top:55px;font-size:59px}.contact-poster>i{height:78px;margin:48px 0}.contact-poster>a{padding:18px 43px}.lightbox{padding:48px 12px}.site-footer{grid-template-columns:1fr;padding:60px 20px}.site-footer>p{grid-column:auto}.site-footer>a img{width:260px}}
.site-footer{gap:32px;padding:40px var(--pad)}.site-footer>a img{width:min(205px,70%)}.site-footer>div{gap:8px;font-size:9px}@media(max-width:650px){.site-footer{gap:28px;padding:36px 20px}.site-footer>a img{width:170px}}
@media(max-width:650px){.site-footer{grid-template-columns:1fr 1fr;align-items:start;gap:20px;padding:28px 20px}.site-footer>a img{width:130px}.site-footer>p{grid-column:1/-1;margin-top:2px}}
@media(max-width:650px){.portfolio-menu summary{grid-template-columns:35px 1fr;font-size:43px}.portfolio-menu>div{display:grid;gap:6px;padding:6px 0 14px 35px}.menu-links .portfolio-menu>div a{font-size:9px}.menu-links .portfolio-menu>div .portfolio-all{margin-left:0}.portfolio-categories{padding:95px 14px}.categories-heading{grid-template-columns:1fr;margin-bottom:70px}.categories-heading h2{font-size:71px}.categories-heading>p{font-size:14px}.category-grid{grid-template-columns:1fr;gap:70px}.category-events,.category-performances,.category-portraits,.category-weddings{margin:0}.category-card h3{font-size:58px}.category-card>div{padding:8px}}
@media(max-width:700px){.project-explorer{height:500vh}.explorer-meta{top:82px;right:16px;left:16px;font-size:7px}.explorer-instruction{display:none}.project-card{top:43%;width:72vw}.project-card img{max-height:55vh}.project-card.is-active::before{inset:-9px;background-size:28px 2px,2px 28px,28px 2px,2px 28px,28px 2px,2px 28px,28px 2px,2px 28px}.explorer-caption{right:12px;bottom:7vh;left:12px}.explorer-caption h2{margin:7px 0 4px;font-size:clamp(42px,13vw,60px);line-height:.84}.explorer-caption span,.explorer-caption p{font-size:6px}.explorer-progress{right:16px;bottom:18px;left:16px}.explorer-flash{padding:0 16px 24px;font-size:7px}.explorer-flash strong{font-size:38px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.scroll-cue i{animation:none}.site-menu,.work img,.work button>span{transition:none}.project-explorer{height:auto;padding:110px var(--pad);background:var(--gold)}.explorer-stage{position:relative;height:auto;overflow:visible;background:transparent!important;color:var(--blue)!important}.explorer-grid,.explorer-flash,.explorer-progress{display:none}.explorer-meta{position:static;margin-bottom:60px}.explorer-cards{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.project-card{position:relative;top:auto;left:auto;width:auto;opacity:1;filter:none;transform:none!important;transition:none}.project-card::after,.project-card::before{display:none}.project-card img{max-height:none}.project-card[aria-hidden="true"]{display:block}.explorer-caption{position:static;margin-top:55px;text-align:left}.explorer-caption h2{font-size:60px}.project-card{pointer-events:auto}.project-card[tabindex="-1"]{visibility:visible}}

/* Smaller category cards keep attention on the photography. */
.portfolio-categories{padding:clamp(82px,10vw,135px) var(--pad)}
.categories-heading{max-width:1080px;margin-right:auto;margin-bottom:clamp(52px,6vw,78px);margin-left:auto}
.categories-heading h2{font-size:clamp(58px,6.8vw,96px)}
.categories-heading>p{font-size:14px}
.category-grid{max-width:1040px;gap:46px 34px}
.category-card>div{padding:9px}
.category-card span{margin:13px 0 6px;font-size:7px}
.category-card h3{font-size:clamp(30px,2.9vw,44px);line-height:.94}
.category-card p{margin-top:8px;font-size:7px}

@media(max-width:650px){
  .portfolio-categories{padding:78px 14px}
  .categories-heading{margin-bottom:52px}
  .categories-heading h2{font-size:56px}
  .category-grid{gap:48px}
  .category-card h3{font-size:38px}
}

/* Portfolio scale refinement across full, half, and mobile views. */
.portfolio-hero{min-height:74svh;padding:104px var(--pad) 48px;gap:4.5vw}
.hero-copy h1{font-size:clamp(58px,6.3vw,92px);line-height:.8}
.hero-copy>p:last-child{max-width:430px;font-size:clamp(14px,1.15vw,17px)}
.hero-frame{width:min(100%,620px);justify-self:end}
.hero-note{font-size:21px}
.explorer-caption h2{font-size:clamp(40px,4.35vw,64px);line-height:.88}

@media(max-width:900px){
  .portfolio-hero{grid-template-columns:1fr;min-height:auto;gap:30px;padding:100px 24px 48px}
  .hero-copy{max-width:600px}
  .hero-copy h1{font-size:clamp(52px,7.8vw,62px)}
  .hero-copy>p:last-child{max-width:500px;font-size:14px}
  .hero-frame{width:min(64%,500px);justify-self:center;margin:0}
  .hero-frame::after{inset:-11px;background-size:36px 2px,2px 36px,36px 2px,2px 36px}
  .hero-note{position:static;grid-row:3;margin-top:2px;font-size:19px}
  .scroll-cue{bottom:24px}
  .explorer-caption h2{font-size:clamp(36px,6.1vw,48px)}
}

@media(max-width:650px){
  .portfolio-hero{gap:24px;padding:96px 16px 44px}
  .hero-copy h1{font-size:48px}
  .hero-copy>p:last-child{font-size:13px;line-height:1.55}
  .hero-frame{width:78%;padding:7px}
  .hero-frame::after{inset:-8px;background-size:26px 2px,2px 26px,26px 2px,2px 26px}
  .hero-frame figcaption{padding-top:9px;font-size:6px}
  .hero-note{font-size:17px}
  .explorer-caption{bottom:6vh}
  .explorer-caption h2{font-size:clamp(32px,9.3vw,38px);line-height:.9}
  .explorer-caption span,.explorer-caption p{font-size:6px}
}

/* Compact portfolio booking invitation. */
.contact-poster{min-height:430px;padding:58px var(--pad)}
.contact-poster h2{margin:30px 0 0;font-size:clamp(52px,5.2vw,76px);line-height:.84}
.contact-poster h2 em{font-size:.63em}
.contact-poster>i{height:42px;margin:28px 0}
.contact-poster>a{padding:15px 42px;font-size:8px}

@media(max-width:900px){
  .contact-poster{min-height:400px;padding:52px 26px}
  .contact-poster h2{margin-top:26px;font-size:clamp(48px,7vw,60px)}
  .contact-poster>i{height:38px;margin:25px 0}
}

@media(max-width:650px){
  .contact-poster{min-height:370px;padding:46px 18px}
  .contact-poster h2{margin-top:23px;font-size:46px;line-height:.86}
  .contact-poster>i{height:34px;margin:22px 0}
  .contact-poster>a{padding:14px 34px}
}

/* Selectable photo canvas: hover titles on desktop, tap to explore on touch. */
.project-explorer{height:auto;padding:0;background:var(--gold)}
.explorer-stage{position:relative;height:clamp(700px,100svh,1000px);min-height:0;background:var(--gold);color:var(--blue);overflow:hidden}
.explorer-meta{top:30px;z-index:2}
.explorer-cards{position:absolute;inset:0;display:block}
.project-card,.project-card[aria-hidden="true"]{position:absolute;display:block;left:var(--x);top:var(--y);width:25%;max-width:380px;opacity:1;filter:none;transform:translate(-50%,-50%);transition:filter .3s,opacity .3s,transform .4s;visibility:visible;pointer-events:auto;z-index:3}
.project-card:nth-child(1){--x:18%;--y:28%}
.project-card:nth-child(2){--x:50%;--y:21%}
.project-card:nth-child(3){--x:82%;--y:28%}
.project-card:nth-child(4){--x:18%;--y:72%}
.project-card:nth-child(5){--x:50%;--y:80%}
.project-card:nth-child(6){--x:82%;--y:72%}
.project-card img{display:block;width:100%;height:auto;max-height:29svh;object-fit:contain;box-shadow:none;transition:filter .3s}
.project-card::after{inset:0;background:var(--gold);opacity:.16;mix-blend-mode:color}
.project-card.is-active{z-index:4;opacity:1;filter:none;transform:translate(-50%,-50%) scale(1.035)}
.project-card.is-active::before{display:block;inset:-11px;background-size:32px 2px,2px 32px,32px 2px,2px 32px,32px 2px,2px 32px,32px 2px,2px 32px}
.project-card.is-active::after{opacity:0}
.project-card.is-active img{box-shadow:none}
.has-selection .project-card:not(.is-active){opacity:.4;filter:saturate(.35)}
.explorer-caption{position:absolute;z-index:5;left:15%;right:15%;top:50%;bottom:auto;transform:translateY(-50%);text-align:center;opacity:0;transition:opacity .2s;pointer-events:none}
.has-selection .explorer-caption{opacity:1}
.explorer-caption h2{font-size:clamp(36px,4.2vw,60px);line-height:.95;margin:9px 0;text-shadow:none}
.explorer-caption p,.explorer-count{font-size:8px;letter-spacing:.15em}
.explorer-hint{position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);font:400 26px Yellowtail,cursive;text-align:center;transition:opacity .2s;pointer-events:none}
.has-selection .explorer-hint{opacity:0}
.explorer-open[hidden]{display:none}
.explorer-open{display:inline-block;margin-top:16px;padding:12px 21px;border:1px solid var(--blue);font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;pointer-events:auto}
@media(max-width:1000px) and (min-width:701px){
 .explorer-stage{height:760px}
 .project-card{width:27%}
 .explorer-caption{left:8%;right:8%}
 .explorer-caption h2{font-size:44px}
 .explorer-instruction{display:block;font-size:8px}
}
@media(max-width:700px){
 .project-explorer{padding:0}
 .explorer-stage{height:auto;padding:34px 20px 28px;overflow:visible}
 .explorer-meta{position:static;gap:16px;align-items:start;font-size:7px;margin:0 0 32px}
 .explorer-instruction{display:block;max-width:125px;text-align:right;font-size:7px;line-height:1.6}
 .explorer-cards{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:34px 24px}
 .project-card,.project-card.is-active,.project-card[aria-hidden="true"]{position:relative;left:auto;top:auto;width:100%;max-width:none;transform:none}
 .project-card:nth-child(even){margin-top:30px}
 .project-card img{max-height:190px}
 .project-card.is-active::before{inset:-7px;background-size:20px 2px,2px 20px,20px 2px,2px 20px,20px 2px,2px 20px,20px 2px,2px 20px}
 .explorer-caption{position:relative;top:auto;left:auto;right:auto;bottom:auto;transform:none;min-height:135px;padding-top:28px;margin:0}
 .explorer-caption h2{font-size:34px;line-height:1.05}
 .explorer-caption p,.explorer-count{font-size:7px}
 .explorer-hint{top:auto;bottom:78px;transform:none;font-size:23px;padding:0 20px}
}
@media(prefers-reduced-motion:reduce){
 .project-card,.project-card img,.explorer-caption,.explorer-hint{transition:none}
 .project-card.is-active{transform:translate(-50%,-50%)}
 .project-card::after,.project-card.is-active::before{display:block}
}
@media(max-width:700px) and (prefers-reduced-motion:reduce){.project-card.is-active{transform:none}}
@media(max-width:700px){
 .explorer-stage{padding-bottom:70px}
 .explorer-caption{position:fixed;z-index:45;top:auto;left:16px;right:16px;bottom:16px;min-height:0;margin:0;padding:17px 20px;background:var(--cream);border:1px solid rgba(48,71,107,.25);box-shadow:0 8px 35px rgba(48,71,107,.18);visibility:hidden;pointer-events:none;transform:none}
 .has-selection .explorer-caption{visibility:visible}
 .explorer-caption h2{font-size:29px;line-height:1.05;margin:6px 0}
 .explorer-open{margin-top:12px;padding:10px 18px}
 .explorer-hint{bottom:25px;font-size:21px}
}
@media(prefers-reduced-motion:reduce){
 .explorer-meta{position:absolute;margin:0}
 .explorer-caption{margin:0;text-align:center}
 .project-card,.project-card.is-active{transform:translate(-50%,-50%)!important}
}
@media(max-width:700px) and (prefers-reduced-motion:reduce){
 .explorer-meta{position:static;margin-bottom:32px}
 .project-card,.project-card.is-active{transform:none!important}
}
.category-families>div{background:var(--gold)}
.category-events>div{background:var(--coral)}
