/* The same artwork and light connect the three worlds. */
html{background:#08080d}
body{isolation:isolate}
.cosmic-atmosphere{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden;background:var(--bg)}
.cosmic-atmosphere:before{content:'';position:absolute;inset:-10%;background:url('/assets/clover-dimension.jpg') 59% 45%/cover;opacity:.16;filter:grayscale(.7) brightness(.65);animation:atmosphereDrift 38s ease-in-out infinite;transform-origin:59% 42%}
.cosmic-atmosphere:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#08080d60,#08080d90 45%,#08080d60)}
.artist-entry .dimension-art>img{mask-image:linear-gradient(90deg,transparent,#000 20%,#000 85%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 20%,#000 85%,transparent)}
.site-header nav a,.button,.contact-button,.filters button,.enquiry-tabs button,.modal-platforms button,.motion-toggle,.round-play,.world-card,.project-card,.memory-card,.event-film-card{transition:transform .65s cubic-bezier(.2,.8,.2,1),box-shadow .65s,border-color .65s,background .65s}
.nav-name{transform-origin:center;transition:transform .6s,color .4s,text-shadow .6s}
.site-header nav a:focus-visible .nav-name{animation:navBreathe 2.6s ease-in-out infinite;color:#efdcff;text-shadow:0 0 22px #dcb6f57a}
.button:focus-visible,.contact-button:focus-visible,.round-play:focus-visible{animation:surfaceBreathe 2.8s ease-in-out infinite;box-shadow:0 8px 35px #c89be830}
.world-card:focus-visible,.project-card:focus-visible,.memory-card:focus-visible,.event-film-card:focus-visible{transform:translateY(-6px) scale(1.012);box-shadow:0 16px 55px #bc8dd631}
@media(hover:hover) and (pointer:fine){
 .site-header nav a:hover{transform:translateY(-3px)}
 .site-header nav a:hover .nav-name{animation:navBreathe 2.6s ease-in-out infinite;color:#efdcff;text-shadow:0 0 22px #dcb6f57a}
 .button:hover,.contact-button:hover,.filters button:hover,.enquiry-tabs button:hover,.modal-platforms button:hover,.motion-toggle:hover,.round-play:hover{animation:surfaceBreathe 2.8s ease-in-out infinite;border-color:#dec5ee80;box-shadow:0 8px 35px #c89be830}
 .world-card:hover,.project-card.visible:hover,.memory-card.visible:hover,.event-film-card.visible:hover{transform:translateY(-7px) scale(1.012);border-color:#e0c3ee66;box-shadow:0 16px 55px #bc8dd631}
 .world-card:hover img,.project-card:hover>img,.memory-card:hover img,.event-film-card:hover>img{animation:mediaBreathe 5s ease-in-out infinite}
 .text-link:hover{color:#efdcff;text-shadow:0 0 18px #c595e666}
}
.button:active,.contact-button:active{transform:scale(.98);animation:none}
/* A small flowing light knot accompanies travel without a camera zoom. */
.page-transition{display:grid;place-items:center;background:#08080dda;opacity:0;transform:none;clip-path:none;mask-image:none;-webkit-mask-image:none;transition:none;pointer-events:none}
.page-transition:before{content:none;background:none;transform:none;filter:none;animation:none;transition:none}
.page-transition .dimension-light{display:none}
.transition-mark{display:block;width:88px;height:88px;filter:drop-shadow(0 0 8px #cdb5de44)}
.transition-mark svg{display:block;width:100%;height:100%}
.transition-mark path{stroke-dasharray:110 45;animation:lightThread 1.8s linear infinite}
.transition-mark path:nth-child(2){stroke-dasharray:70 35;animation-direction:reverse;opacity:.65}
.page-transition small{position:absolute;left:0;right:0;top:calc(50% + 68px);bottom:auto;text-align:center;font-size:.62rem;letter-spacing:.25em;opacity:.75}
.page-transition.departing{pointer-events:auto;animation:lightVeilIn .42s ease both}
.page-transition.departing .transition-mark,.page-transition.arriving .transition-mark{animation:lightKnotDrift 1.6s ease-in-out infinite alternate}
html.orb-arrival .page-transition{opacity:1}
.page-transition.arriving{pointer-events:none;animation:lightVeilOut .48s ease both}
.route-appearing .dimension-copy,.route-appearing .hero-meta,.route-appearing .dream-word,.route-appearing .trip-word,.route-appearing .dream-scene-copy,.route-appearing .trip-scene-copy{animation:contentBreatheIn 1.6s cubic-bezier(.15,.7,.2,1) both;animation-delay:.2s}
.route-appearing .hero-meta{animation-delay:.12s}.route-appearing .dream-scene-copy,.route-appearing .trip-scene-copy{animation-delay:.4s}
.route-appearing .site-header nav a{animation:contentBreatheIn 1.25s cubic-bezier(.15,.7,.2,1) both}.route-appearing .site-header nav a:nth-child(2){animation-delay:.1s}.route-appearing .site-header nav a:nth-child(3){animation-delay:.2s}
.js-motion .reveal{opacity:0;transform:translateY(32px) scale(.96);filter:blur(5px);transition:opacity 1.1s ease,transform 1.2s cubic-bezier(.15,.7,.2,1),filter 1.1s ease;transition-delay:var(--reveal-delay,0ms)}
.js-motion .reveal.visible{opacity:1;transform:none;filter:none}
dialog[open]{animation:contentBreatheIn .6s cubic-bezier(.15,.7,.2,1)}dialog::backdrop{background:#08040ccb;backdrop-filter:blur(14px)}
body[data-motion=off] .reveal{filter:none!important}body[data-motion=off] .cosmic-atmosphere:before{transform:none}
@keyframes atmosphereDrift{0%,100%{transform:scale(1.02) translate(-1%,0)}50%{transform:scale(1.12) translate(1%,1%)}}
@keyframes navBreathe{0%,100%{transform:scale(1.06)}50%{transform:scale(1.13)}}
@keyframes surfaceBreathe{0%,100%{transform:translateY(-3px) scale(1.02)}50%{transform:translateY(-4px) scale(1.045)}}
@keyframes mediaBreathe{0%,100%{transform:scale(1.035)}50%{transform:scale(1.075)}}
@keyframes contentBreatheIn{from{opacity:0;transform:translateY(12px);filter:none}to{opacity:1;transform:none;filter:none}}
@keyframes lightVeilIn{from{opacity:0}55%,100%{opacity:1}}
@keyframes lightVeilOut{from{opacity:1}to{opacity:0}}
@keyframes lightThread{to{stroke-dashoffset:-310}}
@keyframes lightKnotDrift{from{transform:rotate(-6deg);opacity:.8}to{transform:rotate(6deg);opacity:1}}
@media(max-width:700px){.cosmic-atmosphere:before{background-position:59% center;opacity:.16}.artist-entry .dimension-art>img{mask-image:none;-webkit-mask-image:none}.page-transition:before{transform-origin:58% 42%}}
@media(prefers-reduced-motion:reduce){.js-motion .reveal{opacity:1;transform:none;filter:none}.route-appearing *{opacity:1;filter:none}.page-transition{display:none}}

.route-appearing .dream-scene,.route-appearing .trip-scene{animation:sceneBreatheIn 1.8s cubic-bezier(.15,.7,.2,1) both}
@keyframes sceneBreatheIn{from{opacity:.7;transform:translateY(10px);filter:none}to{opacity:1;transform:none;filter:none}}
.js-motion .reveal.visible:is(.world-card,.project-card,.memory-card,.event-film-card):focus-visible{transform:translateY(-6px) scale(1.012);transition-delay:0ms}
@media(hover:hover) and (pointer:fine){.js-motion .reveal.visible:is(.world-card,.project-card,.memory-card,.event-film-card):hover{transform:translateY(-7px) scale(1.012);transition-delay:0ms}}
.local-portfolio-video{display:block;width:100%;max-height:60svh;background:#08080d;border:1px solid var(--line);border-radius:5px;margin-bottom:24px}


/* Text and controls respond to the same gentle breathing rhythm. */
a,button,summary,input,select,textarea{transition:transform .6s cubic-bezier(.15,.7,.2,1),box-shadow .6s,border-color .6s}
a:focus-visible,button:focus-visible,summary:focus-visible{animation:surfaceBreathe 2.8s ease-in-out infinite}
input:focus,select:focus,textarea:focus{transform:translateY(-2px) scale(1.015);border-color:#d7c5ee80;box-shadow:0 6px 28px #c89be818}
[data-text-breathe]{transition:transform .8s cubic-bezier(.15,.7,.2,1);transform-origin:left center}
@media(hover:hover) and (pointer:fine){
 a:not(.world-card):not(.brand):hover,button:not(.project-card):not(.memory-card):not(.event-film-card):hover,summary:hover{animation:surfaceBreathe 2.8s ease-in-out infinite}
 [data-text-breathe]:hover{animation:textBreathe 4s ease-in-out infinite}
 .brand:hover img,.sound-card:hover .sound-art,.profile-portrait:hover{animation:mediaBreathe 5s ease-in-out infinite}
}
@keyframes textBreathe{0%,100%{transform:translateY(-2px) scale(1.005)}50%{transform:translateY(-4px) scale(1.015)}}
@media(prefers-reduced-motion:reduce){a,button,summary,input,select,textarea,[data-text-breathe]{animation:none!important;transition:none!important;transform:none!important}}

.dimension-copy,.dimension-art{animation:none}
.route-appearing .dimension-art{animation:arriveIn 2s cubic-bezier(.2,.5,.15,1) both}
/* The page itself inhales and exhales beneath the orb passage. */
.route-appearing main{animation:pageBreatheIn 1.7s cubic-bezier(.15,.7,.2,1) both;transform-origin:50% 35%}
body[data-journey-state=departing] main{animation:pageBreatheOut .85s cubic-bezier(.3,.3,.2,1) both;transform-origin:59% 42%}
@keyframes pageBreatheIn{from{opacity:.5;transform:translateY(20px) scale(.965);filter:blur(3px)}80%{opacity:1;transform:scale(1.004);filter:blur(0px)}to{opacity:1;transform:none;filter:none}}
@keyframes pageBreatheOut{from{opacity:1;transform:none;filter:blur(0px)}to{opacity:.3;transform:scale(.93);filter:blur(5px)}}

/* Chapters fill a screen, with longer galleries and forms allowed to continue. */
html{scroll-snap-type:y proximity;scroll-padding-top:0}
main>.section,.closing-section{min-height:100svh;scroll-snap-align:start;scroll-margin-top:0;display:flex;flex-direction:column;justify-content:center;padding-top:clamp(60px,9svh,100px);padding-bottom:clamp(60px,9svh,100px)}
main>.about-section,main>.bookings-section{display:grid;align-content:center}
main>.hero,main>.dimension-entry{min-height:calc(100svh - var(--header-height,94px));scroll-snap-align:start}
main>.dimension-entry{height:calc(100svh - var(--header-height,94px))}
main>.hero,main>.dimension-entry{scroll-margin-top:var(--header-height,94px)}
@media(max-width:700px){main>.section,.closing-section{padding-top:60px;padding-bottom:70px}.dimension-copy{bottom:9%}.dimension-copy h1{font-size:clamp(3.6rem,15vw,4.4rem)}}

/* Dreamers fills each screen without pushing its artwork or controls off-screen. */
body[data-page=dreamers] main>.dream-hero{height:calc(100svh - var(--header-height,94px));min-height:0;display:flex;flex-direction:column;gap:14px;padding-top:18px;padding-bottom:18px}
.dream-hero .hero-meta{flex:none}
.dream-hero .dream-word{margin:0;padding:0;line-height:0;flex:none}
.dream-hero .dream-word .official-dreamers{display:block}
.dream-hero .dream-scene{height:auto;min-height:0;flex:1}
.dream-hero .dream-scene-copy{height:100%;padding:24px 6%;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}
.dream-hero .dream-scene-copy h2{font-size:clamp(2.6rem,5vw,4.5rem);line-height:1.04;margin:0}
.dream-hero .dream-scene-copy .eyebrow{margin-bottom:12px}
.dream-hero .dream-scene-copy p{margin:16px 0 20px}
.dream-hero .scene-label{bottom:18px}
.dream-hero .ticker{flex:none;margin:0;padding:10px 0;font-size:.75rem;line-height:1.2;gap:12px}
body[data-page=dreamers] main>.section{padding-top:clamp(32px,6svh,64px);padding-bottom:clamp(32px,6svh,64px)}
body[data-page=dreamers] .section-head{margin-bottom:24px}
body[data-page=dreamers] .announcement-panel{min-height:360px;height:60svh;max-height:560px}
body[data-page=dreamers] .announcement-panel>div{padding:32px 5%}
body[data-page=dreamers] .memories-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
body[data-page=dreamers] .memory-card img{height:clamp(130px,21svh,210px);aspect-ratio:auto}
body[data-page=dreamers] .memory-card>span{padding:14px 16px}
body[data-page=dreamers] .memory-archive-link{margin-top:22px}
.mobile-gallery-hint{display:none}
@media(max-width:700px){
 body[data-page=dreamers] main>.dream-hero{gap:14px;padding-top:16px;padding-bottom:16px}
 .dream-hero .dream-scene-copy{padding:26px 7% 48px}
 .dream-hero .dream-scene-copy h2{font-size:clamp(2.6rem,11vw,3.65rem)}
 .dream-hero .dream-scene-copy .eyebrow{max-width:230px;line-height:1.5}
 .dream-hero .dream-scene-copy p{margin:18px 0 22px}
 .dream-hero .scene-label{font-size:.65rem;bottom:14px;left:7%}
 .dream-hero .ticker{display:grid;grid-template-columns:1fr 1fr;font-size:.65rem;gap:8px 20px;padding:10px 0}
 body[data-page=dreamers] .section-head{gap:14px}
 body[data-page=dreamers] .announcement-panel{height:57svh;min-height:360px;max-height:580px}
 body[data-page=dreamers] .announcement-panel>div{padding:32px 7%}
 body[data-page=dreamers] .memories-grid,body[data-page=dreamers] .event-film-grid{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:100%;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;padding-bottom:12px;scrollbar-width:thin;scrollbar-color:var(--accent) transparent}
 body[data-page=dreamers] .memory-card,body[data-page=dreamers] .event-film-card{scroll-snap-align:start;min-width:0}
 body[data-page=dreamers] .memory-card img{height:clamp(220px,40svh,400px)}
 body[data-page=dreamers] .event-film-card{min-height:clamp(300px,45svh,420px)}
 .mobile-gallery-hint{display:block;margin-top:10px;color:var(--accent);font-size:.875rem}
}
@media(max-height:680px) and (min-width:701px){
 .dream-hero .dream-scene-copy h2{font-size:2.7rem}
 .dream-hero .dream-scene-copy{padding:16px 5%}
 .dream-hero .dream-scene-copy p{margin:10px 0 14px}
 .dream-hero .dream-scene-copy .eyebrow{margin-bottom:8px}
}

body[data-page=dreamers] .dreamers-services-section .booking-intro{width:100%;max-width:780px;margin-inline:auto}
body[data-page=dreamers] .dreamers-enquiry-section .section-head,body[data-page=dreamers] .dreamers-enquiry-section .enquiry-panel{width:100%;max-width:640px;margin-inline:auto}
body[data-page=dreamers] .dreamers-enquiry-section .enquiry-panel{align-self:center}
.optional-enquiry-details{border:1px solid var(--line);border-radius:4px;padding:12px;color:var(--ink)}
.optional-enquiry-details summary{cursor:pointer;font-size:.875rem;line-height:1.4}
.optional-enquiry-details summary span{color:var(--muted)}
.optional-enquiry-details[open] .field-row{margin-top:18px;margin-bottom:18px}
@media(max-width:700px){
 body[data-page=dreamers] main>.dream-hero{padding-bottom:86px}
 body[data-page=dreamers] .dreamers-enquiry-section .enquiry-panel{padding:20px 16px}
 body[data-page=dreamers] .dreamers-enquiry-section form{gap:14px}
 body[data-page=dreamers] .dreamers-enquiry-section form>.field-row{grid-template-columns:1fr 1fr;gap:12px}
}

@media(min-width:701px){
 .dreamers-enquiry-section form{grid-template-columns:1fr 1fr;gap:14px 20px}
 .dreamers-enquiry-section form>.field-row,.dreamers-enquiry-section .form-submit,.dreamers-enquiry-section .form-note,.dreamers-enquiry-section form>.text-link{grid-column:1/-1}
 .dreamers-enquiry-section form>label.scope-field,.dreamers-enquiry-section form>details{grid-column:1}
 .dreamers-enquiry-section form>.message-field{grid-column:2;grid-row:2/span 2}
.dreamers-enquiry-section form:has(>.scope-field[hidden])>.message-field{grid-column:1/-1;grid-row:auto}
}

/* The shared shop is its own world; the artist pages retain their content. */
.site-header nav{gap:28px}
body[data-page=shop]{--accent:#e3b284;--surface:#191410;--line:#43362e}
body[data-page=shop] main>.shop-feature{min-height:calc(100svh - var(--header-height,94px));padding-top:24px;padding-bottom:24px;scroll-margin-top:var(--header-height,94px)}
.shop-feature .section-head{margin-bottom:20px}
.shop-feature h1{font-size:clamp(3rem,5vw,4.5rem);line-height:1}
.shop-feature .section-head .eyebrow{margin-bottom:8px}
.shop-product{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(32px,7vw,90px);align-items:center;max-width:1100px;width:100%;margin-inline:auto}
.shop-cover{display:block;position:relative;padding:0;height:clamp(360px,58svh,520px);width:100%;overflow:hidden;border-radius:5px;border:1px solid #aa7b5140}
.shop-cover>img{width:100%;height:100%;object-fit:contain;background:#110d0b;transition:transform 1s}
.shop-cover>span{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;padding:16px 22px;background:linear-gradient(transparent,#120d09);color:#f6e6d9;font-size:.7rem;letter-spacing:.13em}
.shop-cover:focus-visible{box-shadow:0 12px 50px #b47a3730}
@media(hover:hover) and (pointer:fine){.shop-cover:hover>img{animation:mediaBreathe 5s ease-in-out infinite}}
.shop-product-copy>.eyebrow{margin-bottom:12px}
.shop-product-copy h2{font-size:clamp(3rem,4.4vw,3.75rem);line-height:.98;margin-bottom:12px}
.shop-product h2 em,.shop-future-card h3 em{font-family:Georgia,serif;font-weight:400;color:var(--accent)}
.shop-description{max-width:440px;font-size:1rem;line-height:1.5}
.shop-specs{display:flex;gap:18px;margin:14px 0 10px;font-size:.7rem;letter-spacing:.08em;color:var(--accent);flex-wrap:wrap}
.shop-price{display:flex;align-items:center;gap:18px;margin-bottom:12px}
.shop-price strong{font:500 2rem var(--head);letter-spacing:-.04em}
.shop-price span{font-size:.8rem;color:var(--muted)}
.shop-preview-label{display:block;font-size:.65rem;letter-spacing:.12em;margin-bottom:8px;color:var(--accent)}
.shop-product audio{width:100%;max-width:430px;height:42px;display:block;color-scheme:dark}
.shop-actions{display:flex;align-items:center;gap:22px;flex-wrap:wrap;margin:14px 0 6px}
.shop-actions .button{padding:12px 20px}
.shop-status{font-size:.8rem;color:var(--muted);margin:6px 0}
.shop-future-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.shop-future-card{position:relative;min-height:360px;display:flex;flex-direction:column;align-items:flex-start;padding:36px;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:#100c0bd9}
.shop-tickets{background:linear-gradient(90deg,#100a12ed,#100a12b0),url('/assets/clover-dimension.jpg') center/cover}
.shop-merch{background:radial-gradient(ellipse at 90% 0%,#70533435,transparent 65%),#120e0ed9}
.shop-future-card h3{font-size:clamp(2rem,3.5vw,3.5rem);margin-bottom:20px}
.shop-future-card p{max-width:350px;line-height:1.5;margin-bottom:24px}
.shop-future-card .button{padding:10px 18px;margin-bottom:20px}
.shop-future-status{font-size:.65rem;letter-spacing:.12em;color:var(--accent);margin-top:auto}
.pack-category-list{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.pack-category-list li{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--line);font-size:.875rem}
.pack-category-list strong{color:var(--accent)}
@media(min-width:701px) and (max-width:1000px){.site-header{gap:12px;padding-inline:3%}.site-header nav{gap:16px}.header-actions{gap:10px}.contact-button{padding:10px 12px}.contact-button span{margin-left:10px}.motion-toggle{font-size:.75rem}}
@media(max-width:700px){
 .site-header nav{gap:12px}
 .site-header nav small{font-size:.5rem;letter-spacing:.05em}
 .mobile-dock a{min-width:50px}
 .mobile-dock span{font-size:.65rem}
 body[data-page=shop] main>.shop-feature{padding:24px 5% 86px;justify-content:center}
 .shop-feature .section-head{gap:8px;margin-bottom:22px}
 .shop-feature h1{font-size:2.8rem}
 .shop-feature .section-head>p{font-size:.8rem}
 .shop-product{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:12px 18px}
 .shop-cover{grid-column:1;grid-row:1/span 3;height:200px;min-width:0}
 .shop-cover>span{font-size:.52rem;padding:10px 12px;letter-spacing:.05em}
 .shop-product-copy{display:contents}
 .shop-product-copy>.eyebrow{grid-column:2;grid-row:1;font-size:.6rem;margin:0;align-self:end}
 .shop-product-copy h2{grid-column:2;grid-row:2;font-size:2.4rem;margin:0;align-self:center}
 .shop-description{grid-column:2;grid-row:3;font-size:.85rem;line-height:1.45;align-self:start}
 .shop-specs{grid-column:1/-1;margin:6px 0 0;gap:14px;font-size:.62rem}
 .shop-price{grid-column:1/-1;margin:0;gap:14px}
 .shop-price strong{font-size:1.7rem}
 .shop-price span{font-size:.75rem}
 .shop-preview-label{grid-column:1/-1;margin:0}
 .shop-product audio{grid-column:1/-1;max-width:none}
 .shop-actions{grid-column:1/-1;margin:4px 0 0;gap:16px}
 .shop-actions .button{font-size:.8rem;padding:11px 16px;gap:18px}
 .shop-actions .text-link{font-size:.75rem}
 .shop-product-copy>.shop-status{grid-column:1/-1;margin:0;font-size:.75rem}
 .shop-future-grid{grid-template-columns:1fr;gap:18px}
 .shop-future-card{min-height:250px;padding:26px}
 .shop-future-card h3{font-size:2.25rem;margin-bottom:14px}
 .shop-future-card p{font-size:.875rem;margin-bottom:16px}
 .shop-future-card .eyebrow{margin-bottom:14px}
 .pack-category-list{grid-template-columns:1fr}
}
