:root{ --bg:#050505; --bg2:#0b0b0b; --red:#f70502; --red2:#ff2b27; --cream:#f5f0e8; --muted:rgba(245,240,232,.66); --line:rgba(245,240,232,.18); --card:rgba(245,240,232,.045); --shadow:rgba(247,5,2,.22); --max:1180px; } *{box-sizing:border-box;margin:0;padding:0} html{scroll-behavior:smooth} body{font-family:Inter,Arial,Helvetica,sans-serif;background:var(--bg);color:var(--cream);overflow-x:hidden;background-image:radial-gradient(circle at 80% 12%,rgba(247,5,2,.13),transparent 30%),linear-gradient(180deg,#070707,#000)} a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.noise{position:fixed;inset:0;pointer-events:none;z-index:-1;opacity:.16;background-image:radial-gradient(rgba(255,255,255,.35) .6px,transparent .6px);background-size:18px 18px;animation:grain 18s linear infinite}.noise:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.03),rgba(255,255,255,.03) 1px,transparent 1px,transparent 4px)}@keyframes grain{to{transform:translate3d(-18px,-18px,0)}} .site-header{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:18px clamp(18px,5vw,70px);background:linear-gradient(180deg,rgba(5,5,5,.96),rgba(5,5,5,.72),transparent);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:12px;font-weight:950;letter-spacing:-.04em;text-transform:uppercase;font-size:1.05rem}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:var(--red);color:#050505;font-weight:1000;transform:skew(-8deg) rotate(-2deg);box-shadow:6px 6px 0 rgba(245,240,232,.1)}.nav{display:flex;align-items:center;gap:28px}.nav a{font-size:.76rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:800;transition:.2s}.nav a:hover,.nav a.active{color:var(--cream)}.nav-cta{color:var(--red2)!important;font-weight:1000!important;text-shadow:0 0 14px rgba(247,5,2,.4)}.burger{display:none;background:none;border:0;color:var(--cream);font-size:1.6rem}.section{padding:120px clamp(20px,6vw,80px)}.container{max-width:var(--max);margin:0 auto}.hero{min-height:100vh;display:flex;align-items:center;position:relative;overflow:hidden}.hero:before{content:"NEXTWAVE";position:absolute;right:-8vw;top:17vh;font-size:clamp(5rem,18vw,18rem);font-weight:1000;letter-spacing:-.1em;color:rgba(245,240,232,.035);line-height:.8;z-index:0}.hero:after{content:"";position:absolute;inset:auto 0 0 0;height:32vh;background:linear-gradient(transparent,#050505)}.hero-inner{position:relative;z-index:1;max-width:980px}.kicker,.ticket-label,.section-label{display:inline-flex;align-items:center;gap:8px;color:var(--red2);font-weight:1000;text-transform:uppercase;letter-spacing:.12em;font-size:.78rem;margin-bottom:22px}.stamp{display:inline-block;background:var(--red);color:#080808;font-weight:1000;text-transform:uppercase;letter-spacing:.06em;padding:10px 16px;transform:rotate(-1.5deg);margin-bottom:28px;box-shadow:8px 8px 0 rgba(245,240,232,.09)}h1,.mega-title{font-size:clamp(4rem,12vw,11rem);line-height:.78;text-transform:uppercase;letter-spacing:-.085em;font-weight:1000}.hero h1{text-shadow:8px 8px 0 var(--red)}h1 span,.red{color:var(--red2);text-shadow:none}.subtitle{margin-top:28px;max-width:660px;color:var(--muted);font-size:clamp(1.05rem,2.1vw,1.45rem);line-height:1.5}.actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:36px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:54px;padding:0 24px;background:var(--red);color:#050505;text-transform:uppercase;letter-spacing:.08em;font-weight:1000;border:2px solid var(--red);box-shadow:8px 8px 0 rgba(245,240,232,.13);transition:.18s ease}.btn:hover{transform:translate(3px,3px);box-shadow:3px 3px 0 rgba(245,240,232,.18)}.btn-secondary{background:transparent;color:var(--cream);border-color:var(--line)}.quick-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:54px;border:1px solid var(--line);background:var(--line);max-width:900px}.quick-strip div{background:rgba(5,5,5,.86);padding:20px}.quick-strip small{display:block;color:var(--muted);text-transform:uppercase;letter-spacing:.11em;font-size:.72rem;margin-bottom:8px}.quick-strip strong{text-transform:uppercase;font-size:1rem}.brand-block{position:relative;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:linear-gradient(135deg,rgba(247,5,2,.14),rgba(255,255,255,.025));overflow:hidden}.brand-block:before{content:"URBAN STUDENT PARTY";position:absolute;left:-2vw;top:30px;font-size:clamp(4rem,13vw,12rem);font-weight:1000;letter-spacing:-.08em;color:rgba(245,240,232,.035);white-space:nowrap}.brand-grid{position:relative;z-index:1;display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:end}.section-title{font-size:clamp(2.8rem,7vw,7rem);line-height:.82;text-transform:uppercase;letter-spacing:-.07em;font-weight:1000}.text{color:var(--muted);line-height:1.8;font-size:1.05rem}.poster-card{border:1px solid var(--line);background:var(--card);padding:24px;min-height:360px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 24px 70px rgba(0,0,0,.38)}.poster-card b{font-size:clamp(2rem,5vw,4rem);line-height:.85;text-transform:uppercase;letter-spacing:-.06em}.poster-card em{font-style:normal;color:var(--red2);font-weight:1000;text-transform:uppercase}.venue-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:stretch}.venue-card{border:1px solid var(--line);background:rgba(255,255,255,.035);padding:34px;min-height:430px;display:flex;flex-direction:column;justify-content:space-between}.map-wrap{border:1px solid var(--line);background:rgba(255,255,255,.04);padding:12px;min-height:430px}.map-wrap iframe{width:100%;height:100%;min-height:405px;border:0;filter:grayscale(1) contrast(1.1)}.final-cta{text-align:center;background:radial-gradient(circle at 50% 0,rgba(247,5,2,.16),transparent 35%)}.final-cta .section-title{max-width:900px;margin:0 auto 22px}.footer{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:34px clamp(20px,6vw,80px);border-top:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-size:.75rem}.reveal{opacity:0;transform:translateY(18px);transition:.6s ease}.reveal.visible{opacity:1;transform:none} /* ticket locked/open pages */ .ticket-lock-page{min-height:100vh;background:radial-gradient(circle at 75% 20%,rgba(255,34,34,.14),transparent 28%),linear-gradient(180deg,#050505 0%,#000 100%);padding-top:90px}.ticket-lock-hero{min-height:calc(100vh - 90px);display:flex;flex-direction:column;justify-content:center;padding:70px clamp(22px,7vw,90px);position:relative;overflow:hidden}.ticket-lock-hero::before{content:"TICKETS";position:absolute;right:-4vw;top:12vh;font-size:clamp(5rem,18vw,17rem);font-weight:1000;letter-spacing:-.08em;color:rgba(255,255,255,.035);line-height:.8;z-index:0}.ticket-label{position:relative;z-index:1;margin-bottom:18px}.ticket-stamp{position:relative;z-index:1;width:fit-content;background:var(--red);color:#050505;padding:12px 20px;font-weight:1000;text-transform:uppercase;letter-spacing:.08em;transform:rotate(-1.5deg);margin-bottom:34px}.ticket-lock-hero h1{position:relative;z-index:1;font-size:clamp(3.6rem,11vw,9rem);line-height:.82;max-width:950px;text-transform:uppercase;letter-spacing:-.08em;color:var(--cream);text-shadow:8px 8px 0 #e31818;margin-bottom:28px;font-weight:1000}.ticket-lock-hero h1 span{color:var(--red2);text-shadow:none}.ticket-subtitle{position:relative;z-index:1;max-width:560px;font-size:clamp(1rem,2vw,1.25rem);color:var(--cream);margin-bottom:36px;line-height:1.5}.flip-countdown{position:relative;z-index:1;display:flex;gap:14px;flex-wrap:wrap;max-width:780px}.flip-unit{text-align:center}.flip{background:#0b0b0b;border:1px solid rgba(255,255,255,.2);width:132px;height:124px;font-size:clamp(3rem,6vw,4.8rem);font-weight:1000;color:var(--red2);display:flex;align-items:center;justify-content:center;position:relative;perspective:260px;overflow:hidden;box-shadow:inset 0 -1px 0 rgba(255,255,255,.18),0 20px 45px rgba(0,0,0,.35)}.flip:before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(255,255,255,.18);z-index:2}.flip.animate{animation:flipAnim .55s ease}@keyframes flipAnim{0%{transform:rotateX(0)}50%{transform:rotateX(-88deg)}100%{transform:rotateX(0)}}.flip-unit span{display:block;margin-top:9px;color:var(--cream);text-transform:uppercase;font-size:.76rem;letter-spacing:.1em;font-weight:800}.ticket-info{position:relative;z-index:1;margin-top:28px;color:rgba(245,240,232,.65);font-size:.95rem}.eventfrog-box{position:relative;z-index:2;width:100%;max-width:980px;margin-top:30px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);padding:14px;box-shadow:0 28px 70px rgba(0,0,0,.4)}.eventfrog-box iframe{display:block;border:0;min-height:520px;background:#fff}.simple-page{padding-top:100px;min-height:100vh}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:34px}.card{border:1px solid var(--line);background:var(--card);padding:28px;min-height:180px}.card h3{text-transform:uppercase;margin-bottom:12px;color:var(--red2)}.faq-list{max-width:900px;margin-top:34px}.faq-item{border-bottom:1px solid var(--line);padding:24px 0}.faq-item h3{text-transform:uppercase;color:var(--cream);margin-bottom:10px}.glitch{position:relative}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;left:0;top:0;opacity:.55;clip-path:inset(0 0 50% 0);pointer-events:none}.glitch:before{transform:translate(2px,-1px);color:var(--red)}.glitch:after{transform:translate(-2px,1px);color:var(--cream);opacity:.25;clip-path:inset(50% 0 0 0)} @media(max-width:850px){.burger{display:block}.nav{position:absolute;top:72px;left:18px;right:18px;display:grid;gap:16px;padding:20px;background:rgba(5,5,5,.96);border:1px solid var(--line);opacity:0;pointer-events:none;transform:translateY(-8px);transition:.22s}.nav.open{opacity:1;pointer-events:auto;transform:none}.hero{min-height:94vh}.hero h1{text-shadow:4px 4px 0 var(--red)}.quick-strip{grid-template-columns:repeat(2,1fr)}.brand-grid,.venue-grid{grid-template-columns:1fr}.section{padding:90px 20px}.cards{grid-template-columns:1fr}.ticket-lock-page{padding-top:76px}.ticket-lock-hero{min-height:calc(100vh - 76px);padding:46px 20px}.ticket-stamp{font-size:.72rem}.ticket-lock-hero h1{font-size:clamp(3rem,17vw,5.2rem);text-shadow:4px 4px 0 #e31818}.flip-countdown{display:grid;grid-template-columns:repeat(2,1fr);width:100%;gap:12px}.flip{width:100%;height:102px;font-size:3rem}.footer{justify-content:center;text-align:center}} @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}} clamp(20px,6vw,72px);display:flex;gap:18px;justify-content:space-between;flex-wrap:wrap;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.12em}.footer strong,.footer a{color:#fff}.glitch{position:relative}.glitch:before,.glitch:after{content:attr(data-text);position:absolute;inset:0;opacity:.5}.glitch:before{color:var(--red);transform:translate(3px,-2px);clip-path:polygon(0 0,100% 0,100% 35%,0 35%);animation:glitch 2.6s infinite}.glitch:after{color:#fff;transform:translate(-3px,2px);clip-path:polygon(0 60%,100% 60%,100% 100%,0 100%);animation:glitch 2.1s infinite reverse}@keyframes glitch{0%,90%,100%{transform:translate(0)}92%{transform:translate(8px,-4px)}94%{transform:translate(-8px,4px)}}.reveal{opacity:0;transform:translateY(34px);transition:opacity .7s ease,transform .7s ease}.reveal.visible{opacity:1;transform:translateY(0)}@media(max-width:900px){.burger{display:block}.nav{position:absolute;top:75px;left:16px;right:16px;display:grid;background:rgba(8,8,8,.96);border:1px solid var(--line);padding:22px;opacity:0;pointer-events:none;transform:translateY(-10px);transition:.25s}.nav.open{opacity:1;pointer-events:auto;transform:translateY(0)}.hero{padding-top:115px}.hero h1{text-shadow:6px 6px 0 rgba(255,29,29,.72),-1px -1px 0 #fff}.quick-info{grid-template-columns:1fr 1fr;margin-top:-20px}.split,.venue-section,.ticket-panel,.info-layout{grid-template-columns:1fr}.cards-grid{grid-template-columns:1fr}.countdown{grid-template-columns:1fr 1fr}.map-frame iframe{height:320px}.footer{justify-content:center;text-align:center}.section{padding:80px 20px}.page-hero{padding:50px 20px 20px}.ticket-panel,.info-layout,.faq-list{padding-left:20px;padding-right:20px}}@media(max-width:520px){.quick-info{grid-template-columns:1fr}.hero-actions{display:grid}.btn-primary{box-shadow:5px 5px 0 #fff}.section-copy h2,.section-heading h2,.venue-title h2,.cta-box h2,.page-hero h1{font-size:4rem}.ticket-card h2{font-size:3rem}.poster-bg{font-size:5rem}}

/* Safe mobile, accessibility and Instagram in-app browser improvements */
html {
  -webkit-text-size-adjust: 100%;
  text-rendering: optimizeLegibility;
}

body {
  min-height: 100vh;
  min-height: var(--app-height, 100vh);
  -webkit-font-smoothing: antialiased;
}

.full-screen,
.ticket-lock-page {
  min-height: 100vh;
  min-height: 100dvh;
  min-height: var(--app-height, 100vh);
}

.site-header {
  padding-top: max(18px, env(safe-area-inset-top));
  padding-left: max(clamp(18px, 5vw, 72px), env(safe-area-inset-left));
  padding-right: max(clamp(18px, 5vw, 72px), env(safe-area-inset-right));
}

.footer,
.hero,
.ticket-lock-page {
  padding-left: max(20px, env(safe-area-inset-left));
  padding-right: max(20px, env(safe-area-inset-right));
}

.btn,
.burger,
.nav a,
.insta-button,
summary {
  -webkit-tap-highlight-color: rgba(255, 29, 29, .22);
}

.btn,
.nav a,
.insta-button {
  min-height: 44px;
}

button,
a,
summary,
iframe {
  touch-action: manipulation;
}

:focus-visible {
  outline: 3px solid var(--red, #ff1d1d);
  outline-offset: 4px;
}

.burger {
  cursor: pointer;
}

.map-frame iframe,
.eventfrog-box iframe {
  max-width: 100%;
  border: 0;
}

.eventfrog-box {
  width: min(100%, 980px);
  margin-inline: auto;
  overflow: hidden;
  border: 1px solid var(--line, rgba(245,241,234,.16));
  background: rgba(0,0,0,.32);
}

.eventfrog-box iframe {
  display: block;
  min-height: 560px;
}

@media (max-width: 900px) {
  .nav {
    max-height: calc(100dvh - 96px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
}

@media (max-width: 520px) {
  .hero,
  .ticket-lock-hero {
    padding-bottom: max(42px, env(safe-area-inset-bottom));
  }

  .hero-actions .btn,
  .ticket-lock-hero .btn {
    width: 100%;
  }

  .eventfrog-box iframe {
    min-height: 620px;
  }
}

@media (hover: none) and (pointer: coarse) {
  .cursor-glow {
    display: none;
  }

  .btn:hover,
  .btn-primary:hover {
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
  }

  .reveal {
    opacity: 1 !important;
    transform: none !important;
  }
}

.calendar-cta {
  margin-top: 2rem;
  display: flex;
  justify-content: flex-start;
}

.calendar-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.55rem;
  min-height: 44px;
  padding: 0.72rem 1.05rem;
  border: 1px solid rgba(245, 232, 204, 0.34);
  border-radius: 999px;
  color: #f5e8cc;
  background: rgba(245, 232, 204, 0.035);
  text-decoration: none;
  font-size: 0.76rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.calendar-button__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.08rem;
  height: 1.08rem;
  border-radius: 50%;
  color: #050505;
  background: #ff1d1d;
  font-size: 0.85rem;
  font-weight: 900;
  line-height: 1;
}

.calendar-button:hover,
.calendar-button:focus-visible {
  border-color: rgba(255, 29, 29, 0.85);
  background: rgba(255, 29, 29, 0.08);
}

.calendar-button:focus-visible {
  outline: 2px solid #f5e8cc;
  outline-offset: 4px;
}

@media (max-width: 768px) {
  .calendar-cta {
    justify-content: center;
    margin-top: 1.5rem;
  }

  .calendar-button {
    max-width: 92vw;
    padding: 0.78rem 0.95rem;
    font-size: 0.68rem;
    text-align: center;
  }
}

.calendar-help {
  margin-top: 0.65rem;
  color: rgba(245, 232, 204, 0.55);
  font-size: 0.78rem;
  line-height: 1.4;
}
/* Footer legal links */
.footer-links {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

.footer-links a {
  color: rgba(245, 240, 232, .68);
  text-decoration: none;
}

.footer-links a:hover,
.footer-links a:focus-visible {
  color: var(--cream);
  text-decoration: underline;
  text-underline-offset: .2em;
}

/* Legal pages */
.page-legal {
  min-height: 100vh;
  background:
    radial-gradient(circle at 82% 14%, rgba(247, 5, 2, .12), transparent 30rem),
    linear-gradient(180deg, #070707, #000);
}

.legal-page {
  width: min(100% - 2rem, 860px);
  margin: 0 auto;
  padding: clamp(7rem, 12vh, 9rem) 0 clamp(3rem, 8vh, 5rem);
  color: var(--cream);
}

.legal-back {
  display: inline-flex;
  margin-bottom: 2rem;
  color: rgba(245, 240, 232, .68);
  text-decoration: none;
  font-size: .9rem;
}

.legal-back:hover,
.legal-back:focus-visible {
  color: var(--cream);
  text-decoration: underline;
  text-underline-offset: .2em;
}

.legal-page h1 {
  margin: 0 0 1rem;
  font-size: clamp(2.6rem, 8vw, 5.4rem);
  line-height: .86;
  letter-spacing: -.07em;
  text-transform: uppercase;
  font-weight: 1000;
  text-shadow: 5px 5px 0 rgba(247, 5, 2, .8);
}

.legal-updated {
  margin-bottom: 2.2rem;
  color: rgba(245, 240, 232, .52) !important;
  font-size: .85rem !important;
}

.legal-page section {
  border-top: 1px solid var(--line);
  padding-top: 1.45rem;
  margin-top: 1.45rem;
}

.legal-page h2 {
  margin: 0 0 .75rem;
  color: var(--red2);
  font-size: .95rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.legal-page p,
.legal-page li {
  color: rgba(245, 240, 232, .76);
  font-size: .98rem;
  line-height: 1.7;
}

.legal-page p + p {
  margin-top: .8rem;
}

.legal-page a {
  color: var(--cream);
  text-decoration: underline;
  text-underline-offset: .2em;
}

.legal-page ul {
  padding-left: 1.2rem;
}

/* Billetterie locked page: keep it on one screen */
body.page-billetterie {
  height: 100vh;
  height: 100dvh;
  min-height: var(--app-height, 100vh);
  overflow: hidden;
}

body.page-billetterie .ticket-lock-page {
  height: 100vh;
  height: 100dvh;
  min-height: var(--app-height, 100vh);
  padding-top: 78px;
  display: flex;
  flex-direction: column;
}

body.page-billetterie .ticket-lock-hero {
  flex: 1 1 auto;
  min-height: 0;
  justify-content: center;
  padding-top: clamp(1rem, 3vh, 2.3rem);
  padding-bottom: clamp(1rem, 3vh, 2rem);
}

body.page-billetterie .ticket-stamp {
  margin-bottom: clamp(1rem, 2.6vh, 1.8rem);
}

body.page-billetterie .ticket-label {
  margin-bottom: .8rem;
}

body.page-billetterie .ticket-lock-hero h1 {
  font-size: clamp(3rem, 10vw, 7.4rem);
  margin-bottom: clamp(1rem, 2.5vh, 1.6rem);
}

body.page-billetterie .ticket-subtitle {
  margin-bottom: clamp(.7rem, 2vh, 1.3rem);
}

body.page-billetterie .flip-countdown {
  gap: clamp(.55rem, 1.6vw, .9rem);
}

body.page-billetterie .flip {
  width: clamp(5.1rem, 10vw, 7.5rem);
  height: clamp(4.7rem, 9vw, 6.7rem);
  font-size: clamp(2.5rem, 5vw, 4.1rem);
}

body.page-billetterie .flip-unit span {
  margin-top: .45rem;
  font-size: .68rem;
}

body.page-billetterie .calendar-cta {
  margin-top: clamp(1rem, 2.5vh, 1.45rem);
}

body.page-billetterie .footer {
  flex: 0 0 auto;
  padding-top: .75rem;
  padding-bottom: max(.75rem, env(safe-area-inset-bottom));
  font-size: .66rem;
  gap: .7rem;
}

@media (max-width: 850px) {
  .footer-links {
    justify-content: center;
    gap: .7rem .9rem;
  }

  body.page-billetterie .ticket-lock-page {
    padding-top: 74px;
  }

  body.page-billetterie .ticket-lock-hero {
    padding-top: 1rem;
    padding-bottom: .8rem;
  }

  body.page-billetterie .ticket-stamp {
    font-size: .68rem;
    padding: .65rem .9rem;
  }

  body.page-billetterie .flip-countdown {
    max-width: 430px;
    margin-inline: auto;
  }

  body.page-billetterie .flip {
    height: clamp(4.15rem, 16vw, 5.8rem);
    font-size: clamp(2.2rem, 9vw, 3rem);
  }

  body.page-billetterie .footer {
    padding-left: 1rem;
    padding-right: 1rem;
  }
}

@media (max-height: 720px) {
  body.page-billetterie .ticket-stamp {
    margin-bottom: .85rem;
  }

  body.page-billetterie .ticket-lock-hero h1 {
    font-size: clamp(2.6rem, 9vw, 6rem);
    margin-bottom: .75rem;
  }

  body.page-billetterie .flip {
    height: 4.4rem;
    font-size: 2.45rem;
  }

  body.page-billetterie .calendar-cta {
    margin-top: .8rem;
  }

  body.page-billetterie .calendar-button {
    min-height: 40px;
    padding: .62rem .9rem;
    font-size: .64rem;
  }

  body.page-billetterie .footer {
    padding-top: .55rem;
    padding-bottom: .55rem;
  }
}


/* Footer — version discrète premium */
.footer {
  width: 100%;
  border-top: 1px solid rgba(245, 240, 232, 0.08);
  padding: 0.95rem 1.25rem calc(0.95rem + env(safe-area-inset-bottom));
  color: rgba(245, 240, 232, 0.42);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: rgba(5, 5, 5, 0.72);
}

.footer-inner {
  width: min(100%, 1180px);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.65rem 0.8rem;
  flex-wrap: wrap;
  text-align: center;
}

.footer-copy {
  margin: 0;
  color: rgba(245, 240, 232, 0.44);
  white-space: nowrap;
}

.footer-links {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.38rem;
  flex-wrap: wrap;
}

.footer-links a,
.footer-links span {
  color: rgba(245, 240, 232, 0.42);
  text-decoration: none;
}

.footer-links a:hover,
.footer-links a:focus-visible {
  color: var(--cream);
  text-decoration: underline;
  text-underline-offset: 0.22em;
}

.footer-links a:focus-visible {
  outline: 2px solid rgba(245, 240, 232, 0.55);
  outline-offset: 0.24rem;
  border-radius: 0.2rem;
}

/* Billetterie — compact sur un écran */
body.page-billetterie {
  min-height: 100vh;
  min-height: 100dvh;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
}

body.page-billetterie .ticket-lock-page {
  min-height: 100vh;
  min-height: 100dvh;
  height: 100vh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  padding-top: 76px;
}

body.page-billetterie .ticket-lock-hero {
  flex: 1 1 auto;
  min-height: 0;
  justify-content: center;
  padding-top: clamp(0.8rem, 2.5vh, 1.8rem);
  padding-bottom: clamp(0.7rem, 2vh, 1.4rem);
}

body.page-billetterie .ticket-stamp {
  margin-bottom: clamp(0.8rem, 2.2vh, 1.4rem);
}

body.page-billetterie .ticket-lock-hero h1 {
  margin-bottom: clamp(0.7rem, 2vh, 1.25rem);
}

body.page-billetterie .ticket-subtitle {
  display: none;
}

body.page-billetterie .calendar-cta {
  margin-top: clamp(0.85rem, 2vh, 1.3rem);
}

body.page-billetterie .footer {
  flex: 0 0 auto;
  border-top-color: rgba(245, 240, 232, 0.06);
  padding-top: 0.55rem;
  padding-bottom: max(0.55rem, env(safe-area-inset-bottom));
  font-size: 0.58rem;
  background: transparent;
}

body.page-billetterie .footer-inner {
  gap: 0.25rem 0.5rem;
}

@media (max-width: 640px) {
  .footer {
    padding-top: 0.8rem;
    font-size: 0.62rem;
    letter-spacing: 0.045em;
  }

  .footer-inner {
    gap: 0.35rem 0.45rem;
  }

  .footer-copy {
    width: 100%;
  }

  .footer-links {
    gap: 0.3rem;
  }

  body.page-billetterie .footer {
    font-size: 0.54rem;
  }
}

@media (max-height: 700px) {
  body.page-billetterie .ticket-lock-page {
    padding-top: 68px;
  }

  body.page-billetterie .ticket-lock-hero {
    padding-top: 0.55rem;
    padding-bottom: 0.45rem;
  }

  body.page-billetterie .ticket-stamp {
    margin-bottom: 0.65rem;
    padding: 0.55rem 0.8rem;
  }

  body.page-billetterie .ticket-lock-hero h1 {
    font-size: clamp(2.4rem, 8.5vw, 5.4rem);
    margin-bottom: 0.55rem;
  }

  body.page-billetterie .flip {
    height: 4rem;
    font-size: 2.2rem;
  }

  body.page-billetterie .flip-unit span {
    margin-top: 0.32rem;
    font-size: 0.58rem;
  }

  body.page-billetterie .calendar-cta {
    margin-top: 0.6rem;
  }

  body.page-billetterie .calendar-button {
    min-height: 36px;
    padding: 0.54rem 0.78rem;
    font-size: 0.58rem;
  }

  body.page-billetterie .footer {
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
    font-size: 0.5rem;
  }
}

/* =========================================================
   FOOTER — version lisible desktop + discret mobile
   À garder tout en bas du fichier pour écraser les anciens styles.
   ========================================================= */
.footer {
  width: 100%;
  border-top: 1px solid rgba(245, 240, 232, 0.14);
  padding: 1.15rem 1.5rem calc(1.15rem + env(safe-area-inset-bottom));
  color: rgba(245, 240, 232, 0.68);
  font-size: 0.8rem;
  line-height: 1.45;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  background: rgba(5, 5, 5, 0.78);
}

.footer-inner {
  width: min(100%, 1180px);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.85rem;
  flex-wrap: wrap;
  text-align: center;
}

.footer p,
.footer-copy {
  margin: 0;
  color: rgba(245, 240, 232, 0.72);
}

.footer-links {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.footer-links a,
.footer-links span {
  color: rgba(245, 240, 232, 0.72);
  text-decoration: none;
}

.footer-links a:hover,
.footer-links a:focus-visible {
  color: #f5f0e8;
  text-decoration: underline;
  text-underline-offset: 0.22em;
}

.footer-links a:focus-visible {
  outline: 2px solid #f5f0e8;
  outline-offset: 4px;
}

@media (min-width: 900px) {
  .footer {
    font-size: 0.84rem;
    padding-top: 1.25rem;
    padding-bottom: 1.25rem;
  }

  .footer p,
  .footer-copy,
  .footer-links a,
  .footer-links span {
    color: rgba(245, 240, 232, 0.78);
  }
}

@media (max-width: 640px) {
  .footer {
    padding: 0.85rem 1rem calc(0.9rem + env(safe-area-inset-bottom));
    font-size: 0.66rem;
    letter-spacing: 0.055em;
  }

  .footer-inner {
    gap: 0.35rem;
  }

  .footer-links {
    gap: 0.35rem;
  }
}

/* Billetterie : footer lisible mais compact pour garder la page sur 1 écran */
body.page-billetterie .footer {
  flex: 0 0 auto;
  padding-top: 0.65rem;
  padding-bottom: calc(0.75rem + env(safe-area-inset-bottom));
  font-size: 0.68rem;
  background: rgba(5, 5, 5, 0.72);
}

body.page-billetterie .footer-inner {
  gap: 0.45rem;
}

@media (min-width: 900px) {
  body.page-billetterie .footer {
    font-size: 0.78rem;
  }
}
