/* Élan preview: compact editorial scale and restrained basketball motion. */
.hero{min-height:min(720px,88svh)}
.hero-content{padding-top:132px;padding-bottom:76px;gap:32px}
.hero h1{font-size:clamp(72px,9vw,138px);margin:20px 0 17px}
.hero-sub{font-size:clamp(17px,1.5vw,20px);line-height:1.45;margin-bottom:22px}
.section{padding:clamp(58px,6.4vw,88px) 0}
.section-title{font-size:clamp(48px,5.8vw,84px)}
.story,.story.small{min-height:405px}
.story h3{font-size:clamp(35px,3.2vw,48px)}
.home-news,.teams-section{padding-top:70px;padding-bottom:74px}
.home-news-slide,.home-news-visual{min-height:415px}
.home-news-copy h3{font-size:clamp(47px,4.6vw,69px)}
.teams-intro{margin-bottom:27px}
.teams-heading h2{font-size:clamp(68px,7.6vw,115px)}
.teams-arena,.teams-visual{min-height:490px}
.teams-directory-head{min-height:59px}
.teams-directory-foot{min-height:47px}
.teams-route{min-height:61px}
.teams-route-main strong{font-size:clamp(26px,2.5vw,35px)}
.teams-route-arrow{width:38px;height:38px}
.ps-home.wide h2{font-size:clamp(58px,6.5vw,91px)}
.match-section .section-title{font-size:clamp(57px,6.9vw,100px)}
.match-feature{min-height:475px}
.match-score{font-size:clamp(92px,11.5vw,165px)}
.match-intro{font-size:17px}
.club-footer-hero{padding-top:62px;padding-bottom:65px}
.club-footer-hero h2{font-size:clamp(70px,8vw,119px)}

.page-hero:not(.team-hero){min-height:430px}
.page-hero:not(.team-hero) .wrap{padding-top:48px;padding-bottom:48px}
.page-hero:not(.team-hero) h1{font-size:clamp(72px,8.3vw,120px);margin-bottom:18px}
.page-hero:not(.team-hero) .lede{font-size:clamp(17px,1.5vw,20px)}
.page-hero:not(.team-hero) .page-hero-visual{height:310px}
main:not(.team-page) .page-section{padding-top:65px;padding-bottom:68px}
main:not(.team-page) .page-section h2,main:not(.team-page) .section-head h2{font-size:clamp(48px,6vw,83px)}
.section-head{margin-bottom:26px}
.story-text{font-size:18px}
.value-card{min-height:220px;padding:20px}
.value-card h3{font-size:32px}
.stat-line b{font-size:68px}
.team-entry{min-height:230px;padding:20px}
.team-entry .giant{font-size:91px}
.team-entry h3{font-size:34px}
.join-step{min-height:225px;padding:21px}
.join-step span{font-size:70px}
.join-step h3{font-size:32px}
.news-card{min-height:360px}
.news-card h3{font-size:clamp(35px,3vw,49px)}
.article-shell h2{font-size:clamp(48px,5.7vw,74px)}
.article-shell p,.article-shell li{font-size:18px}
.training-section,.club-faq,.club-life,.basket-rules,.volunteer-section,.club-partners,.president-word{padding-top:60px;padding-bottom:64px}
.training-section .section-head h2,.club-faq .section-head h2,.club-life h2,.basket-rules h2{font-size:clamp(47px,5.3vw,74px)}
.volunteer-section h2,.club-partners h2,.club-outing h2,.join-monclub h2,.president-word h2{font-size:clamp(47px,5.5vw,78px)}
.president-word blockquote p{font-size:clamp(30px,3vw,46px)}

.shopfront-hero,.shopfront-grid{min-height:545px}
.shopfront-hero h1{font-size:clamp(105px,10.6vw,160px)}
.shopfront-image{height:475px}
.shop-collection,.shop-how,.shop-faq,.product-story{padding-top:65px;padding-bottom:70px}
.shop-collection h2,.shop-how h2,.shop-faq h2,.product-story h2,.product-other h2,.shop-end h2{font-size:clamp(49px,5.8vw,83px)}
.shop-card-stage{height:380px}
.shop-card-copy h3{font-size:clamp(43px,3.8vw,56px)}
.shop-how-grid>div{min-height:195px}
.shop-how-grid h3{font-size:35px}
.product-info h1{font-size:clamp(79px,7.4vw,116px)}
.product-lede{font-size:19px}
.product-story-copy{font-size:18px}
.contact-hero{min-height:440px}
.contact-hero h1{font-size:clamp(76px,8.9vw,130px)}
.contact-body{padding-top:65px;padding-bottom:70px}
.contact-body h2{font-size:clamp(52px,5.6vw,80px)}
.contact-form h3{font-size:39px}
.ps-page .ps-hero-grid,.ps-page .ps-hero-media,.ps-page .ps-hero-media img{min-height:510px}
.ps-page .ps-hero h1{font-size:clamp(67px,6.8vw,101px)}
.ps-page .ps-choice,.ps-page .ps-process{padding-top:65px;padding-bottom:70px}
.ps-page .ps-section-head h2{font-size:clamp(51px,5.4vw,79px)}
.ps-page .ps-choice-card{min-height:190px}
.ps-page .ps-choice-card summary{min-height:170px}
.ps-page .ps-choice-card summary strong{font-size:clamp(33px,2.8vw,42px)}
.ps-page .ps-steps li{min-height:165px}
.ps-page .ps-final h2{font-size:clamp(54px,5.7vw,84px)}
.news-page .news-section-heading h2,.match-page .match-dashboard-head h2,.match-page .fixture-intro h2{font-size:clamp(43px,4.2vw,63px)}
.news-page .news-lead-card,.news-page .news-lead-image{min-height:440px}
.news-page .news-journal-visual{height:265px}
.match-page .fixture-row{min-height:140px}

/* Light 3D depth on pointer devices; transforms are updated by experience-upgrade.js. */
@media (hover:hover) and (pointer:fine) and (min-width:901px){
  .experience-tilt{--experience-rx:0deg;--experience-ry:0deg;--experience-lift:0px;transform:perspective(1100px) rotateX(var(--experience-rx)) rotateY(var(--experience-ry)) translate3d(0,var(--experience-lift),0);transform-style:preserve-3d;transition:transform .35s cubic-bezier(.2,.75,.2,1),border-color .25s}
  .experience-tilt:hover,.experience-tilt.is-tilting{transform:perspective(1100px) rotateX(var(--experience-rx)) rotateY(var(--experience-ry)) translate3d(0,var(--experience-lift),0)}
  .experience-tilt.is-tilting{transition:transform .07s linear,border-color .25s;will-change:transform}
  .experience-tilt:hover{--experience-lift:-3px}
  .experience-tilt :is(h3,.go,.shop-card-copy b,.product-image-caption){transform:translateZ(16px)}
}
:is(.btn,.button,.ps-button,.club-footer-primary,.team-action-grid a) :is(.arrow,i,b[aria-hidden]){display:inline-block;transition:transform .25s ease}
:is(.btn,.button,.ps-button,.club-footer-primary,.team-action-grid a):hover :is(.arrow,i,b[aria-hidden]){transform:translate(4px,-2px)}
:is(.btn,.button,.ps-button,.club-footer-primary,.team-action-grid a):focus-visible :is(.arrow,i,b[aria-hidden]){transform:translate(4px,-2px)}

.experience-ball-scene{position:absolute;z-index:0;top:65px;right:clamp(22px,5vw,90px);width:128px;height:175px;pointer-events:none;perspective:800px}
.experience-ball-scene .experience-ball{display:block;width:118px;aspect-ratio:1;background:url('/design/20261102/assets/basketball-transition-20261101.webp') center/contain no-repeat;filter:drop-shadow(9px 13px 10px #0009);transform-origin:center;animation:experience-ball-bounce 3.5s ease-in-out infinite;animation-play-state:paused}
.experience-ball-scene .experience-shadow{position:absolute;width:92px;height:15px;bottom:6px;left:13px;background:#0009;border-radius:50%;filter:blur(8px);animation:experience-ball-shadow 3.5s ease-in-out infinite;animation-play-state:paused}
.experience-ball-scene.is-in-view .experience-ball,.experience-ball-scene.is-in-view .experience-shadow{animation-play-state:running}
@keyframes experience-ball-bounce{0%,100%{transform:translate3d(0,4px,0) rotate(-13deg) scaleY(.94)}28%{transform:translate3d(0,-67px,48px) rotate(8deg) scaleY(1)}52%{transform:translate3d(0,3px,0) rotate(25deg) scaleY(.92)}72%{transform:translate3d(0,-31px,26px) rotate(39deg) scaleY(1)}}
@keyframes experience-ball-shadow{0%,52%,100%{transform:scale(1);opacity:.55}28%{transform:scale(.58);opacity:.23}72%{transform:scale(.78);opacity:.36}}

@media(max-width:900px){
  .hero{min-height:min(700px,90svh)}
  .teams-arena,.teams-visual{min-height:0}
  .teams-visual{min-height:355px}
  .experience-ball-scene{right:20px;top:70px;width:90px;height:126px;opacity:.72}
  .experience-ball-scene .experience-ball{width:82px}
  .experience-ball-scene .experience-shadow{width:64px;left:9px}
}
@media(max-width:700px){
  .hero{min-height:min(660px,89svh)}
  .hero-content{padding:130px 20px 72px}
  .hero h1{font-size:clamp(62px,15vw,92px)}
  .hero-sub{font-size:16px}
  .section{padding:53px 0}
  .section-title{font-size:clamp(46px,11vw,65px)}
  .story,.story.small{min-height:345px}
  .home-news,.teams-section{padding:52px 0}
  .home-news-visual{height:225px;min-height:225px}
  .home-news-copy{min-height:275px}
  .home-news-copy h3{font-size:clamp(45px,10.4vw,59px)}
  .teams-heading h2{font-size:clamp(62px,14.5vw,85px)}
  .teams-visual{min-height:270px}
  .teams-route{min-height:62px}
  .teams-route-main strong{font-size:clamp(24px,6.8vw,31px)}
  .teams-route-arrow{width:32px;height:32px}
  .match-section .section-title{font-size:clamp(51px,12vw,76px)}
  .match-feature{min-height:440px}
  .match-score{font-size:clamp(88px,24vw,112px)}
  .experience-ball-scene{display:none}
  .club-footer-hero{padding:49px 0 54px}
  .club-footer-hero h2{font-size:clamp(65px,16vw,92px)}
  .page-hero:not(.team-hero){min-height:0}
  .page-hero:not(.team-hero) .wrap{padding:50px 0 0}
  .page-hero:not(.team-hero) h1{font-size:clamp(64px,15.5vw,91px)}
  .page-hero:not(.team-hero) .lede{font-size:17px}
  .page-hero:not(.team-hero) .page-hero-visual{height:225px;margin-top:26px}
  main:not(.team-page) .page-section{padding-top:52px;padding-bottom:55px}
  main:not(.team-page) .page-section h2,main:not(.team-page) .section-head h2{font-size:clamp(43px,10.8vw,62px)}
  .value-card{min-height:190px}
  .team-entry{min-height:195px}
  .team-entry .giant{font-size:74px}
  .join-step{min-height:195px}
  .news-card{min-height:310px}
  .training-section,.club-faq,.club-life,.basket-rules,.volunteer-section,.club-partners,.president-word{padding-top:50px;padding-bottom:53px}
  .training-section .section-head h2,.club-faq .section-head h2,.club-life h2,.basket-rules h2{font-size:clamp(43px,10.3vw,60px)}
  .volunteer-section h2,.club-partners h2,.club-outing h2,.join-monclub h2,.president-word h2{font-size:clamp(45px,10.7vw,63px)}
  .shopfront-grid{padding-top:48px}
  .shopfront-hero h1{font-size:clamp(77px,18vw,106px)}
  .shopfront-image{height:295px}
  .shop-collection,.shop-how,.shop-faq,.product-story{padding:52px 0}
  .shop-collection h2,.shop-how h2,.shop-faq h2,.product-story h2,.product-other h2,.shop-end h2{font-size:clamp(46px,10.3vw,63px)}
  .shop-card-stage{height:300px}
  .shop-card-copy h3{font-size:clamp(43px,9.5vw,54px)}
  .shop-how-grid>div{min-height:175px}
  .product-info h1{font-size:clamp(68px,16vw,96px)}
  .product-main-image{height:345px;min-height:0}
  .contact-hero-grid{padding:49px 0 0}
  .contact-hero h1{font-size:clamp(69px,16vw,105px)}
  .contact-body{padding:53px 0}
  .contact-body h2{font-size:clamp(49px,10.8vw,64px)}
  .ps-page .ps-hero-copy{padding:48px 0 42px}
  .ps-page .ps-hero h1{font-size:clamp(59px,12.7vw,84px)}
  .ps-page .ps-hero-media,.ps-page .ps-hero-media img{min-height:270px}
  .ps-page .ps-choice,.ps-page .ps-process{padding:52px 0}
  .ps-page .ps-section-head h2{font-size:clamp(48px,11.5vw,68px)}
  .ps-page .ps-choice-card summary{min-height:125px}
  .ps-page .ps-choice-card summary strong{font-size:39px}
  .ps-page .ps-final h2{font-size:clamp(52px,12vw,72px)}
  .news-page .news-section-heading h2,.match-page .match-dashboard-head h2,.match-page .fixture-intro h2{font-size:clamp(39px,9.2vw,48px)}
}
@media(max-width:370px){
  .hero h1{font-size:60px}
  .teams-route-main strong{font-size:24px}
  .page-hero:not(.team-hero) h1{font-size:61px}
  .product-info h1{font-size:65px}
}
@media(prefers-reduced-motion:reduce){
  .experience-ball-scene .experience-ball,.experience-ball-scene .experience-shadow{animation:none}
  .experience-tilt,.experience-tilt:hover{transform:none!important;transition:none!important}
  :is(.btn,.button,.ps-button,.club-footer-primary,.team-action-grid a) :is(.arrow,i,b[aria-hidden]){transition:none}
}
