/* Luna Park de Paris · base structurelle (variables, mise en page, formulaires, boutons flottants, tchat, météo).
   L'identité (polices, néon, ampoules, tickets, sections) est dans lp.css. */
:root {
  --lp-night: #07061A; --lp-deep: #0E0B33; --lp-violet: #6A1FA0; --lp-electric: #7B2FF7; --lp-pink: #FF2E9A;
  --lp-gold: #FFC24A; --lp-gold-2: #E8B04A; --lp-cyan: #2FE6FF; --lp-red: #C8102E; --lp-ivory: #FFF6E5;
  --lp-f-display: 'Big Shoulders Display', 'Arial Narrow', Impact, sans-serif;
  --lp-f-neon: 'Yellowtail', 'Brush Script MT', cursive;
  --lp-f-text: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --lp-f-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --ink: var(--lp-ivory); --mute: rgba(255, 246, 229, .68); --dim: rgba(255, 246, 229, .45);
  --line: rgba(255, 246, 229, .12); --line-g: rgba(255, 194, 74, .28);
  --glass: rgba(14, 11, 51, .62);
  --gutter: clamp(1rem, 4.4vw, 4.6rem);
  --bar: 5.6rem;
  --ease: cubic-bezier(.22, 1, .36, 1);
  --ease-io: cubic-bezier(.76, 0, .24, 1);
  color-scheme: dark;
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; background: var(--lp-night); }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: clip; }
body { margin: 0; background: var(--lp-night); color: var(--ink); overflow-x: clip; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; font-family: var(--lp-f-text); font-size: 1.0625rem; line-height: 1.6; }
img, video, canvas, svg { display: block; max-width: 100%; }
a { color: inherit; }
button, input, select, textarea { font: inherit; color: inherit; }
p { margin: 0; }
h1, h2, h3, h4 { margin: 0; font-weight: inherit; }
ul, ol { margin: 0; padding: 0; }
:focus-visible { outline: 2px solid var(--lp-gold); outline-offset: 3px; }
::selection { background: var(--lp-pink); color: #fff; }
.sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; left: 1rem; top: -4rem; z-index: 300; background: var(--lp-gold); color: var(--lp-night); padding: .6rem 1rem; font-weight: 700; }
.skip:focus { top: 1rem; }
.wrap { width: 100%; max-width: 96rem; margin-inline: auto; padding-inline: var(--gutter); }
.line-mask { padding: .24em .3em .18em; margin: -.24em -.3em -.18em; }
main#contenu { overflow-x: clip; position: relative; z-index: 1; }
[data-reveal] { opacity: 0; transform: translateY(26px); }
.no-js [data-reveal], .reduced [data-reveal] { opacity: 1; transform: none; }

/* ---------- chargement ---------- */
.loader { position: fixed; inset: 0; z-index: 250; display: grid; place-items: center; background: radial-gradient(ellipse at 50% 40%, #1a1150 0%, var(--lp-night) 62%); }
.loader__in { display: grid; justify-items: center; gap: 1.6rem; }
.loader__ring { position: relative; width: 11rem; height: 11rem; display: grid; place-items: center; --p: 0; }
.loader__ring i { position: absolute; left: 50%; top: 50%; width: .5rem; height: .5rem; margin: -.25rem; border-radius: 50%; background: #FFE7A3; box-shadow: 0 0 6px 2px rgba(255, 194, 74, .9), 0 0 16px 4px rgba(255, 140, 40, .4); transform: rotate(calc(var(--i) * 15deg)) translateY(-5.2rem); opacity: clamp(.12, calc((var(--p) - var(--i)) * 1), 1); transition: opacity .2s; }
.loader__logo { width: 7.6rem; height: auto; aspect-ratio: 420 / 371; filter: drop-shadow(0 6px 16px rgba(0, 0, 0, .5)) drop-shadow(0 0 22px rgba(255, 194, 74, .35)); }
.loader__n { font: 500 .72rem/1 var(--lp-f-mono); letter-spacing: .3em; color: var(--lp-gold); font-variant-numeric: tabular-nums; }
.is-loaded .loader { pointer-events: none; }

/* ---------- curseur ---------- */
.cursor { position: fixed; left: 0; top: 0; z-index: 240; pointer-events: none; display: none; }
@media (hover: hover) and (pointer: fine) { .cursor { display: block; } }
.cursor__dot { width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: #FFE7A3; box-shadow: 0 0 8px 2px rgba(255, 194, 74, .9), 0 0 24px 6px rgba(255, 46, 154, .35); transition: transform .35s var(--ease), opacity .3s; }
.cursor.is-link .cursor__dot { transform: scale(3.2); opacity: .55; }
.cursor__label { position: absolute; left: 22px; top: 18px; white-space: nowrap; padding: .32rem .6rem; font: 500 .62rem/1 var(--lp-f-mono); letter-spacing: .16em; text-transform: uppercase; background: var(--lp-gold); color: var(--lp-night); opacity: 0; transform: translateY(6px); transition: opacity .3s, transform .4s var(--ease); }
.cursor.has-label .cursor__label { opacity: 1; transform: none; }

/* ---------- formulaires ---------- */
.fld { display: grid; gap: .45rem; font: 500 .68rem/1.2 var(--lp-f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--lp-gold-2); }
.fld input, .fld select, .fld textarea { height: 3.3rem; padding: 0 1rem; width: 100%; min-width: 0; font: 400 1rem/1.4 var(--lp-f-text); letter-spacing: 0; text-transform: none; color: var(--ink); background: rgba(255, 246, 229, .04); border: 1px solid rgba(255, 246, 229, .16); border-radius: 2px; transition: border-color .3s, background .3s, box-shadow .3s; }
.fld select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--lp-gold) 50%), linear-gradient(135deg, var(--lp-gold) 50%, transparent 50%); background-position: calc(100% - 1.2rem) 55%, calc(100% - .9rem) 55%; background-size: .32rem .32rem; background-repeat: no-repeat; padding-right: 2.4rem; }
.fld select option { background: var(--lp-deep); color: var(--ink); }
.fld textarea { height: auto; padding: .85rem 1rem; min-height: 7rem; resize: vertical; }
.fld input::placeholder, .fld textarea::placeholder { color: rgba(255, 246, 229, .35); }
.fld input:focus, .fld select:focus, .fld textarea:focus { outline: none; border-color: var(--lp-gold); background: rgba(255, 194, 74, .06); box-shadow: 0 0 0 3px rgba(255, 194, 74, .12), 0 0 22px -6px rgba(255, 194, 74, .6); }
.row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.chips label { position: relative; }
.chips input { position: absolute; opacity: 0; pointer-events: none; }
.chips span { display: inline-block; cursor: pointer; padding: .62rem 1rem; font: 500 .7rem/1.2 var(--lp-f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); border: 1px dashed rgba(255, 194, 74, .35); border-radius: 2px; transition: background .25s, color .25s, border-color .25s, box-shadow .25s; }
.chips input:checked + span { background: var(--lp-gold); color: var(--lp-night); border-color: var(--lp-gold); box-shadow: 0 0 18px -4px rgba(255, 194, 74, .8); }
.chips input:focus-visible + span { outline: 2px solid var(--lp-gold); outline-offset: 2px; }
.consent { display: grid; grid-template-columns: auto 1fr; gap: .8rem; align-items: start; font-size: .88rem; color: var(--mute); }
.consent input { margin-top: .25rem; width: 1.1rem; height: 1.1rem; accent-color: var(--lp-gold); }
.note { font: 400 .72rem/1.5 var(--lp-f-mono); letter-spacing: .04em; color: var(--dim); }
.done { margin-top: 1.4rem; padding: 1.4rem 1.5rem; border: 1px solid rgba(255, 194, 74, .45); background: linear-gradient(135deg, rgba(255, 194, 74, .12), rgba(255, 46, 154, .08)); box-shadow: 0 0 40px -12px rgba(255, 194, 74, .5); }
.done[hidden] { display: none; }
.done b { display: block; font: 800 1.9rem/1 var(--lp-f-display); text-transform: uppercase; color: var(--lp-gold); margin-bottom: .5rem; }
.done p { color: var(--mute); }
.done p + p { margin-top: .5rem; }
.done a { color: var(--lp-gold); }

/* ---------- boutons flottants ---------- */
.fabs { position: fixed; inset: auto 0 0 0; z-index: 65; pointer-events: none; opacity: 0; transform: translateY(20px); transition: opacity .8s var(--ease), transform .8s var(--ease); }
.fabs.is-in { opacity: 1; transform: none; }
.menu-open .fabs, .cine-open .fabs, .lb-open .fabs { opacity: 0; pointer-events: none; }
.fabs.is-in > *, .fabs.is-in .fab-r > * { pointer-events: auto; }
.fab-meteo { position: fixed; left: max(1rem, env(safe-area-inset-left)); bottom: max(1rem, env(safe-area-inset-bottom)); display: grid; grid-template-columns: 2.3rem auto; grid-template-rows: auto auto; column-gap: .65rem; align-items: center; padding: .45rem 1.1rem .45rem .5rem; cursor: pointer; text-align: left; background: var(--glass); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border: 1px solid rgba(255, 194, 74, .3); border-radius: 3rem; color: var(--ink); transition: border-color .3s, transform .5s var(--ease), box-shadow .3s; }
.fab-meteo:hover { transform: translateY(-2px); border-color: var(--lp-gold); box-shadow: 0 0 24px -6px rgba(255, 194, 74, .6); }
.fab-meteo__ico { grid-row: 1 / 3; width: 2.3rem; height: 2.3rem; display: grid; place-items: center; --ico-acc: var(--lp-gold); color: rgba(255, 246, 229, .8); }
.fab-meteo__ico svg { width: 1.6rem; height: 1.6rem; }
.fab-meteo__t { font: 800 1.15rem/1 var(--lp-f-display); letter-spacing: .02em; }
.fab-meteo__l { font: 500 .58rem/1.2 var(--lp-f-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--lp-gold); }
.fab-r { position: fixed; right: max(1rem, env(safe-area-inset-right)); bottom: max(1rem, env(safe-area-inset-bottom)); display: flex; flex-direction: column; gap: .7rem; align-items: flex-end; }
.fab-btn { position: relative; height: 3.6rem; min-width: 3.6rem; border: 0; border-radius: 3rem; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; text-decoration: none; transition: transform .5s var(--ease), padding .5s var(--ease), box-shadow .3s; }
.fab-btn svg { width: 1.4rem; height: 1.4rem; flex: none; }
.fab-btn:hover { transform: translateY(-2px); }
.fab-call { padding: 0 1.1rem; gap: 0; overflow: hidden; background: linear-gradient(180deg, #FFDE8A, #FFC24A 45%, #E39A2A); color: var(--lp-night); box-shadow: 0 0 0 1px rgba(255, 231, 163, .6) inset, 0 10px 30px -8px rgba(0, 0, 0, .6), 0 0 26px -4px rgba(255, 194, 74, .7); }
.fab-call__n { max-width: 0; opacity: 0; white-space: nowrap; font: 600 .82rem/1 var(--lp-f-mono); letter-spacing: .06em; transition: max-width .55s var(--ease), opacity .3s, margin .55s var(--ease); }
.fab-call:hover .fab-call__n, .fab-call:focus-visible .fab-call__n { max-width: 10rem; opacity: 1; margin-left: .7rem; }
.fab-chat { background: linear-gradient(160deg, #8C3BFF, var(--lp-violet)); color: #fff; box-shadow: 0 0 0 1px rgba(255, 255, 255, .15) inset, 0 10px 30px -8px rgba(0, 0, 0, .6), 0 0 26px -6px rgba(123, 47, 247, .9); }
.fab-badge { position: absolute; top: -.2rem; right: -.2rem; width: 1.3rem; height: 1.3rem; border-radius: 50%; font-style: normal; font: 700 .68rem/1 var(--lp-f-mono); display: grid; place-items: center; background: var(--lp-pink); color: #fff; box-shadow: 0 0 12px var(--lp-pink); transition: transform .4s var(--ease); }
.fab-chat.is-seen .fab-badge { transform: scale(0); }
.fab-panel { position: fixed; bottom: calc(max(1rem, env(safe-area-inset-bottom)) + 4.8rem); width: min(25rem, calc(100vw - 2rem)); overflow: hidden; transform-origin: bottom center; background: rgba(12, 9, 40, .94); backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); border: 1px solid rgba(255, 194, 74, .28); box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .8), 0 0 50px -20px rgba(123, 47, 247, .6); border-radius: 6px; }
.fab-panel[hidden] { display: none; }
.fab-panel--meteo { left: max(1rem, env(safe-area-inset-left)); }
.fab-panel--chat { right: max(1rem, env(safe-area-inset-right)); bottom: calc(max(1rem, env(safe-area-inset-bottom)) + 9.2rem); height: min(34rem, calc(100svh - 12rem)); display: flex; flex-direction: column; }
.fab-panel--chat[hidden] { display: none; }
.mt { padding: 1.3rem; display: grid; gap: 1.1rem; }
.mt__now { display: grid; grid-template-columns: 3.4rem 1fr auto; gap: .9rem; align-items: center; }
.mt__ico { width: 3.4rem; height: 3.4rem; display: grid; place-items: center; --ico-acc: var(--lp-gold); color: rgba(255, 246, 229, .85); }
.mt__ico svg { width: 2.4rem; height: 2.4rem; }
.mt__now span, .mt__now small { display: block; }
.mt__t { font: 800 2.4rem/1 var(--lp-f-display); }
.mt__now span { color: var(--mute); font-size: .88rem; }
.mt__now small { font: 400 .62rem/1.4 var(--lp-f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--dim); }
.mt__days { list-style: none; margin: 0; padding: .8rem 0; display: grid; grid-template-columns: repeat(3, 1fr); border-block: 1px solid var(--line); }
.mt__days li { display: grid; justify-items: center; gap: .15rem; font-size: .8rem; --ico-acc: var(--lp-gold); color: var(--mute); }
.mt__days svg { width: 1.7rem; height: 1.7rem; }
.mt__days b { color: var(--ink); }
.mt__tip { display: grid; gap: .55rem; padding: 1.1rem 1.1rem 1.2rem; background: linear-gradient(135deg, rgba(255, 194, 74, .12), rgba(123, 47, 247, .12)); border: 1px solid rgba(255, 194, 74, .25); }
.mt__tip b { font: 800 1.45rem/1.05 var(--lp-f-display); text-transform: uppercase; }
.mt__tip p { color: var(--mute); font-size: .92rem; }
.mt__tip .tk { justify-self: start; margin-top: .3rem; }
.mt__src { font: 400 .6rem/1 var(--lp-f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--dim); }
.chat__head { display: grid; grid-template-columns: 3.4rem 1fr auto; gap: .8rem; align-items: center; padding: 1rem 1rem 1rem 1.1rem; border-bottom: 1px solid var(--line); background: linear-gradient(90deg, rgba(123, 47, 247, .25), transparent); }
.chat__head img { width: 3.4rem; height: auto; aspect-ratio: 420 / 371; filter: drop-shadow(0 2px 6px rgba(0, 0, 0, .5)); }
.chat__head b { font: 800 1.2rem/1 var(--lp-f-display); text-transform: uppercase; letter-spacing: .02em; }
.chat__head span { display: flex; align-items: center; gap: .4rem; margin-top: .3rem; font: 400 .6rem/1 var(--lp-f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); }
.chat__head span i { width: .45rem; height: .45rem; border-radius: 50%; background: #4CF0A0; box-shadow: 0 0 0 3px rgba(76, 240, 160, .18), 0 0 8px #4CF0A0; }
.chat__x { width: 2.2rem; height: 2.2rem; background: none; border: 1px solid var(--line); border-radius: 50%; display: grid; place-items: center; cursor: pointer; color: var(--ink); }
.chat__x svg { width: 1rem; height: 1rem; }
.chat__log { flex: 1; overflow-y: auto; padding: 1.1rem; display: flex; flex-direction: column; gap: .55rem; overscroll-behavior: contain; scrollbar-width: thin; }
.msg { max-width: 88%; padding: .72rem .95rem; font-size: .93rem; line-height: 1.45; border-radius: 4px; }
.msg a { color: var(--lp-gold); }
.msg--bot { align-self: flex-start; background: rgba(255, 246, 229, .06); border: 1px solid var(--line); }
.msg--me { align-self: flex-end; background: linear-gradient(135deg, var(--lp-electric), var(--lp-violet)); color: #fff; }
.msg--typing { display: flex; gap: .3rem; padding: .85rem 1rem; }
.msg--typing i { width: .42rem; height: .42rem; border-radius: 50%; background: var(--lp-gold); box-shadow: 0 0 6px var(--lp-gold); animation: typing 1s infinite ease-in-out; }
.msg--typing i:nth-child(2) { animation-delay: .15s; } .msg--typing i:nth-child(3) { animation-delay: .3s; }
@keyframes typing { 0%, 60%, 100% { transform: none; opacity: .4; } 30% { transform: translateY(-4px); opacity: 1; } }
.chat__chips { display: flex; flex-wrap: wrap; gap: .4rem; padding: 0 1.1rem .8rem; }
.chat__chips:empty { display: none; }
.chat__chips button { background: none; padding: .45rem .8rem; font: 500 .64rem/1.2 var(--lp-f-mono); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; color: var(--lp-gold); border: 1px dashed rgba(255, 194, 74, .45); border-radius: 2px; transition: background .25s, color .25s; }
.chat__chips button:hover { background: var(--lp-gold); color: var(--lp-night); }
.chat__in { display: grid; grid-template-columns: 1fr auto; gap: .5rem; padding: .8rem; border-top: 1px solid var(--line); }
.chat__in input { height: 2.9rem; padding: 0 1.1rem; font-size: 16px; min-width: 0; background: rgba(255, 246, 229, .05); border: 1px solid var(--line); border-radius: 2rem; color: var(--ink); }
.chat__in input:focus { outline: none; border-color: var(--lp-gold); }
.chat__in button { width: 2.9rem; height: 2.9rem; border: 0; border-radius: 50%; display: grid; place-items: center; cursor: pointer; background: var(--lp-gold); color: var(--lp-night); }
.chat__in button svg { width: 1.2rem; height: 1.2rem; }

@media (max-width: 860px) {
  :root { --bar: 4.6rem; }
  body { font-size: 1rem; }
  .row { grid-template-columns: 1fr; }
  .fab-meteo { padding: .35rem .85rem .35rem .4rem; grid-template-rows: auto; }
  .fab-meteo__l { display: none; }
  .fab-meteo__ico { grid-row: auto; }
  .fab-r { flex-direction: row-reverse; align-items: center; }
  .fab-btn { height: 3.2rem; min-width: 3.2rem; }
  .fab-call { padding: 0 .95rem; }
  .fab-panel, .fab-panel--meteo, .fab-panel--chat { left: .6rem; right: .6rem; width: auto; bottom: calc(max(.6rem, env(safe-area-inset-bottom)) + 4.4rem); }
  .fab-panel--chat { height: min(34rem, calc(100svh - 9rem)); }
}
@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; }
  .msg--typing i { animation: none; }
}
