/* MRE 26 — official campaign assets, midnight violet and magenta. */
:root { color-scheme:dark; --paper:#110f24; --ink:#f7f5ff; --muted:#b4aecb; --line:#353048; --lime:#f2e7ff; --orange:#ff60a5; --error:#ffadae; --blue:#72b0ff; background:#090813; }
/* The page never scrolls sideways: animated glows and 3D tilts may brush past the edges. */
html, body { overflow-x:clip; }
body { background:radial-gradient(ellipse at 15% 10%,#34215a66,transparent 55%),radial-gradient(ellipse at 90% 65%,#7c12442b,transparent 45%),#090813; }
.app-shell { background:radial-gradient(ellipse at 80% 0,#39215444,transparent 470px),var(--paper); border-color:#302944; box-shadow:0 0 100px #07061166; }
.brand-header { height:86px; }
.brand img { display:block; width:132px; height:auto; }
.header-location { color:#c3bbd8; letter-spacing:.9px; }
.tiny-dot { background:#fa298b; box-shadow:0 0 8px #f8238b55; }
.eyebrow { color:#c9b9ed; font-size:9px; letter-spacing:1.6px; }
.eyebrow:before { background:#f62988; height:2px; }
.view:not(.inner-view):not(.ticket-view):not(.empty-view) h1 { font-size:33px; font-weight:760; line-height:1.12; letter-spacing:-1.3px; }
.view:not(.inner-view):not(.ticket-view):not(.empty-view) h1 em { font-size:31px; }
h1 em { font-family:inherit; font-style:normal; font-weight:inherit; color:#ff64aa; }
.subtitle { color:#bab3cd; }
.event-meta { font-size:10px; padding-bottom:22px; }
.event-meta .icon { color:#e574b1; }
.step-item { color:#aaa1c0; }
.step-number { border-color:#5b506f; background:#1d182e; }
.active .step-number { background:#dc0060; border-color:#eb277d; color:white; box-shadow:0 0 15px #e500641f; }
.step-item.done .step-number { background:#392762; border-color:#7655b1; color:#e5d6ff; }
.section-heading h2 { font-weight:680; }
.text-input,.phone-group,.zone-select { color:#f3efff; background:#1c182e; border-color:#494054; }
.text-input::placeholder { color:#a79bb7; }
.text-input:hover,.phone-group:hover,.zone-select:hover { border-color:#817195; }
.text-input:focus { border-color:#c17bfd; outline-color:#c17bfd2e; }
.phone-group input { background:transparent; }
.phone-group select { color:#f3efff; }
select option { background:#20192f; color:#f4f0ff; }
.field-label { color:#e8e1f4; }
.consent-row input { background:#211b34; border-color:#92809f; }
.consent-row input:checked { background:#d90062; border-color:#f74093; }
.consent-row label { color:#bdb3ce; }
.consent-row .link-button { color:#ecc9f9; }
.action-bar { background:#110f24fa; border-color:#3b304a; }
.primary { background:#d5005d; border-color:#ec287e; color:white; box-shadow:0 4px 22px #ca005522; transition:background .2s,transform .2s,box-shadow .2s; }
.primary:hover:not(:disabled) { background:#b90050; border-color:#ff4993; box-shadow:0 4px 25px #ec007d30; }
.primary:active:not(:disabled) { transform:translateY(1px); }
.primary:disabled { background:#322a41; border-color:#4b3a58; color:#b1a3bc; box-shadow:none; }
.secondary { color:#efe7ff; background:#211a34; border-color:#645171; }
.secondary:hover { background:#362345; }
.large-symbol { background:linear-gradient(145deg,#452361,#261d3f); border:1px solid #77518f; color:#f593c2; box-shadow:0 10px 30px #9b1c7014; }
.otp-input { background:#1c182e; border-color:#63526f; color:#f9f5ff; }
.otp-input:focus { border-color:#e98ec8; outline-color:#fa55aa25; }
.otp-wrap.has-success .otp-input { background:#153d31; border-color:#64b696; }
.otp-status.success { color:#94e6bb; }
.resend-row button { color:#f097d2; }
.resend-row button:disabled { color:#b4aecb; }
.info-card { background:#211a32; border-color:#42364f; }
.info-card strong { color:#f3e8fc; }
.message { background:#472436; color:#ffc4d4; }
.message.success { background:#19362d; color:#b0f0c8; }
.mock-note code { color:#f7a9d5; }
.network { background:#503924; color:#ffe2b1; }
.live-label:before { background:#94cdb4; }
.plan-toolbar { gap:8px; }
.plan-toolbar>span:first-child { max-width:58%; line-height:1.5; }
.plan-note { font-size:10px; line-height:1.7; border-left:2px solid #775391; padding-left:10px; }
.map-simulation { font-size:10px; color:#c7b2dc; text-align:center; margin:10px 0 4px; }
.selection-info { align-items:center; }
.selection-info>div:first-child { min-width:0; }
.selection-info strong { font-size:14px; }
.selection-info .remaining { flex-shrink:0; }
.reserved-tag { color:#b9efd3; background:#1b372f; border-color:#3e705c; }
.countdown-cell { background:linear-gradient(155deg,#2b1e3e,#1b172a); border-color:#53405f; position:relative; }
.countdown-cell:before { content:''; position:absolute; top:0; left:24%; width:52%; height:1px; background:#dd609d; }
.countdown-cell strong { color:#f8eefb; }
.ticket { background:#1b162a; border-color:#55415c; box-shadow:0 12px 35px #0003; }
.ticket-top { min-height:150px; background:linear-gradient(90deg,#150d2ada,#150d2a40),url('/assets/campagne-stade.webp') center 36%/cover; }
.ticket-top { background-size:cover,160% auto; }
.ticket-top:after { display:none; }
.ticket-brand img { width:155px; height:auto; display:block; margin:9px 0 17px; }
.ticket-caption { color:#ffdaeb; position:relative; }
.ticket-zone { color:#f7d0e8; background:#422238; border-color:#794164; }
.ticket-details { color:#c6bace; }
.ticket-details strong { color:#f2e8f6; }
.ticket-bottom { border-color:#70536a; }
.ticket-bottom:before,.ticket-bottom:after { border-color:#55415c; }
.qr-wrap { border-radius:8px; background:#f4edf7; }
.qr-lock span { background:#231932; color:#ffd3e9; box-shadow:0 3px 15px #4c245355; }
.fake-qr { opacity:.48; }
.ticket-id { color:#b4a3c0; }
.modal-overlay { background:#070611d9; backdrop-filter:blur(5px); }
.modal { background:#20172e; border:1px solid #63446b; }
.skip-link { background:#d5005d; color:white; }
.skip-link:not(:focus) { clip-path:inset(50%); width:1px; height:1px; padding:0; overflow:hidden; }
@media(min-width:600px) { .action-bar { border-color:#3b304a; } }
@media(max-width:359px) { .brand-header { height:76px; } .brand img { width:112px; } .header-location { font-size:7px; letter-spacing:.5px; } .view:not(.inner-view):not(.ticket-view):not(.empty-view) h1 { font-size:29px; } .view:not(.inner-view):not(.ticket-view):not(.empty-view) h1 em { font-size:27px; } .selection-info strong { font-size:13px; } .selection-info span { font-size:10px; } }
.reset-demo { position:fixed; top:2px; left:50%; transform:translateX(-50%); z-index:90; padding:3px 10px; border:1px dashed #ff60a5aa; border-radius:20px; background:#1d1934e6; color:#f7a9d5; font-size:10px; font-weight:650; letter-spacing:.3px; }
.reset-demo:hover { background:#2a2347; color:#fff; }
/* Hidden under the full-screen overlays (call, fitting rooms): it would sit on top of their header. */
body.call-open .reset-demo, body.tryon-open .reset-demo { display:none; }


/* Seat plan (configuration concert): lands in 3D, lights up in a wave from the stage, stage lights sweep the pelouse. */
.stadium { position:relative; width:auto; margin:6px -20px 8px; perspective:1100px; }
.seat-plan { display:block; width:100%; height:auto; overflow:visible; transform-origin:50% 65%; animation:pl-land 1.5s cubic-bezier(.2,.7,.2,1) backwards; }
.seat-plan text { font-family:"Segoe UI",Arial,sans-serif; text-anchor:middle; pointer-events:none; }
.pl-track { fill:#1a1630; stroke:#2e2749; stroke-width:2; }
.pl-grass { fill:url(#pl-grass); stroke:#3b3162; stroke-width:2; }
.pl-aisles { fill:none; stroke:#62d6ea; stroke-opacity:.4; stroke-width:8; stroke-linecap:round; stroke-dasharray:1 15; animation:pl-fade .8s .6s backwards, pl-flow 1.4s 1.4s linear 6; }
.pl-lights { position:absolute; inset:0; overflow:hidden; pointer-events:none; animation:pl-fade 1.4s 2.2s backwards; }
.pl-lights i { position:absolute; left:50%; top:27%; width:26%; height:66%; margin-left:-13%; transform-origin:50% 0; clip-path:polygon(50% 0, 0 100%, 100% 100%); filter:blur(6px); background:linear-gradient(#fff2df8c, #ff8fd024 55%, #b98cff00); animation:pl-sweep 7s ease-in-out infinite alternate; }
.pl-lights i:nth-child(1) { animation-duration:8s; animation-delay:-3s; }
.pl-lights i:nth-child(2) { width:14%; margin-left:-7%; opacity:.8; }
.pl-lights i:nth-child(3) { animation-duration:6.5s; animation-delay:-5s; animation-direction:alternate-reverse; }
.has-selection ~ .pl-lights { opacity:.55; }
.pl-deck { fill:#1b1438; stroke:#ff5aa8; stroke-width:2; animation:pl-glow 2.8s 1.2s ease-in-out 4 alternate; }
.pl-screen { fill:url(#pl-screen); animation:pl-power 1.1s .3s both, pl-blink 2.2s 1.4s ease-in-out infinite alternate; }
.pl-shock circle { fill:none; stroke:#ffd6f0; stroke-width:2.5; opacity:0; transform-box:fill-box; transform-origin:center; animation:pl-shock 1.35s .3s linear both; }
.pl-shock circle + circle { stroke:#ff5aa8; stroke-width:1.5; animation-delay:.48s; }
.pl-speaker { fill:#3a3355; }
.pl-catwalk { fill:#261c48; stroke:#ff5aa899; stroke-width:1.5; }
.pl-stage-title { fill:#fff; font-size:27px; font-weight:800; letter-spacing:5px; }
.pl-stage-sub { fill:#c9b9ed; font-size:14px; }
.pl-note { fill:#b4aecb; font-size:11px; font-weight:700; letter-spacing:1px; }
.pl-labels text { fill:#7d7699; font-size:15px; font-weight:700; letter-spacing:1.5px; }
.pl-labels .pl-hint { font-size:12px; font-weight:400; letter-spacing:0; }
.zone { --c:#8a7dff; outline:none; transition:opacity .45s; }
/* No tap rectangle or focus ring around a whole zone: keyboard focus is shown on its blocks instead. */
.seat-plan, .seat-plan * { -webkit-tap-highlight-color:transparent; }
.seat-plan .zone:focus, .seat-plan .zone:focus-visible { outline:none; }
.zone:not([data-status="full"]) { cursor:pointer; }
.zone .touch { fill:transparent; }
/* The plate is the zone; the blocks on top are only its rows, drawn as thin subdivisions. */
.zone .plate { fill:var(--c); stroke:#0d0b1c; stroke-width:4; stroke-linejoin:round; transition:fill .3s, stroke .3s, filter .3s; animation:pl-fade .5s calc(var(--dmax, 900ms) + 1000ms) backwards; }
.zone .blk { fill:var(--c); stroke:#0d0b1c; stroke-opacity:.45; stroke-width:1.5; transform-box:fill-box; transform-origin:center; transition:fill .3s, filter .3s; animation:pl-assemble 1s calc(var(--d) + 350ms) cubic-bezier(.2,.8,.2,1) backwards; }
.zone text { fill:#fff; font-size:19px; font-weight:700; animation:pl-fade .5s calc(var(--d) + 1050ms) backwards; }
.zone text.sm { font-size:14px; }
.zone[data-status="almost"] .plate { stroke:#ffc56b; stroke-dasharray:7 5; animation:pl-fade .5s calc(var(--dmax, 900ms) + 1000ms) backwards, pl-march 1s calc(var(--dmax, 900ms) + 1500ms) linear 8; }
.zone[data-status="full"] .plate, .zone[data-status="full"] .blk { fill:url(#pl-hatch); }
.zone[data-status="full"] .blk, .invite .blk { animation-name:pl-assemble-plain; }
.zone[data-status="full"] text { fill:#8d86a3; }
.zone .gate, .invite .gate { transform-box:fill-box; transform-origin:center; animation:pl-pop .6s calc(var(--d, 900ms) + 1100ms) cubic-bezier(.3,1.6,.5,1) backwards; }
.zone .gate { fill:#e8741f; stroke:#0d0b1c; stroke-width:2; }
.zone text.gate-num { fill:#fff; font-size:13px; font-weight:800; }
.zone[data-status="full"] .gate { fill:#4a4560; }
.zone[data-zone^="principale"] .blk { stroke:#1b1438; }
.invite { pointer-events:none; }
.barriers { pointer-events:none; animation:pl-fade .6s 1.4s backwards; }
.barrier { fill:none; stroke:#06050e; stroke-width:9; stroke-linecap:round; }
.barrier-core { fill:none; stroke:#ffc56b; stroke-width:1.8; stroke-dasharray:4 4; stroke-linecap:round; }
.has-selection .barriers { opacity:.6; }
.invite .blk { fill:url(#pl-invite); stroke:#f07cc8; stroke-width:1.5; stroke-dasharray:4 3; animation:pl-assemble-plain 1s calc(var(--d) + 350ms) cubic-bezier(.2,.8,.2,1) backwards; transform-box:fill-box; transform-origin:center; }
.invite text { animation:pl-fade .5s calc(var(--d, 900ms) + 1050ms) backwards; }
.invite text { fill:#ffd3ee; font-size:14px; font-weight:700; }
.invite .inv-label { font-size:11px; letter-spacing:.5px; }
.invite .gate { fill:#b04594; stroke:#0d0b1c; stroke-width:2; }
.invite text.gate-num { fill:#fff; font-size:13px; font-weight:800; }
.has-selection .invite { opacity:.26; transition:opacity .45s; }
.zone:not([data-status="full"]):hover .plate, .zone:not([data-status="full"]):hover .blk { filter:brightness(1.3); }
.zone:focus-visible .plate { stroke:#fff; stroke-width:5; stroke-dasharray:none; }
.has-selection .zone:not(.selected) { opacity:.26; }
.zone.selected { filter:drop-shadow(0 0 9px var(--c)); }
.zone.selected .plate { stroke:#fff; stroke-width:4; stroke-dasharray:none; }
.zone.selected .blk { stroke:#fff; stroke-opacity:.5; animation:pl-wave .9s calc(var(--d) * .55) ease-out both; }
.plan-legend .legend-title { grid-column:1/-1; margin:8px 0 0; color:#c9b9ed; font-size:10px; font-weight:750; letter-spacing:1.4px; text-transform:uppercase; }
.plan-legend .legend-invite { grid-column:1/-1; display:flex; align-items:center; gap:9px; margin:4px 0 0; color:var(--muted); font-size:11px; line-height:1.5; }
.plan-legend .legend-invite i { background:repeating-linear-gradient(45deg,#8a3478 0 3px,#5a2150 3px 6px); box-shadow:none; border:1px dashed #f07cc8; }
.plan-legend { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:4px 0 20px; }
.plan-legend button { --c:#8a7dff; display:flex; align-items:center; gap:10px; min-height:52px; padding:8px 11px; border:1px solid #3b304a; border-radius:10px; background:#1a1530; color:var(--ink); text-align:left; font-size:13px; font-weight:650; line-height:1.3; transition:border-color .25s, background .25s, transform .25s; animation:pl-fade .6s backwards; }
.plan-legend button:nth-child(2) { animation-delay:.08s; } .plan-legend button:nth-child(3) { animation-delay:.16s; } .plan-legend button:nth-child(4) { animation-delay:.24s; } .plan-legend button:nth-child(5) { animation-delay:.32s; } .plan-legend button:nth-child(6) { animation-delay:.4s; }
.plan-legend i { width:13px; height:13px; flex-shrink:0; border-radius:4px; background:var(--c); box-shadow:0 0 12px var(--c); }
.plan-legend small { display:block; margin-top:2px; color:var(--muted); font-size:11px; font-weight:400; }
.plan-legend .almost small { color:#ffc56b; }
.plan-legend button:hover:not(:disabled) { border-color:var(--c); }
.plan-legend button[aria-pressed="true"] { border-color:var(--c); background:color-mix(in srgb, var(--c) 20%, #1a1530); transform:translateY(-2px); }
.plan-legend button:disabled { opacity:.5; cursor:not-allowed; }
.plan-legend button:disabled i { background:repeating-linear-gradient(45deg,#3b3550 0 3px,#2a2638 3px 6px); box-shadow:none; }
@keyframes pl-land { from { opacity:0; transform:rotateX(52deg) scale(.8) translateY(40px); } }
@keyframes pl-pop { from { opacity:0; transform:scale(.3); } }
@keyframes pl-fade { from { opacity:0; } }
@keyframes pl-flow { to { stroke-dashoffset:-16; } }
@keyframes pl-march { to { stroke-dashoffset:-12; } }
@keyframes pl-sweep { from { transform:rotate(-22deg); } to { transform:rotate(22deg); } }
@keyframes pl-assemble { 0% { opacity:0; transform:translate(var(--dx), var(--dy)) rotate(var(--r)) scale(.2); } 55% { opacity:1; fill:#fff; transform:translate(0, 0) rotate(0) scale(1.14); } 100% { transform:none; } }
@keyframes pl-assemble-plain { 0% { opacity:0; transform:translate(var(--dx), var(--dy)) rotate(var(--r)) scale(.2); } 55% { opacity:1; transform:translate(0, 0) rotate(0) scale(1.14); } 100% { transform:none; } }
@keyframes pl-shock { 0% { opacity:.95; transform:scale(1); } 100% { opacity:0; transform:scale(1000); } }
@keyframes pl-power { 0% { opacity:0; } 25% { opacity:1; } 40% { opacity:.15; } 55% { opacity:1; } 70% { opacity:.4; } 100% { opacity:1; } }
@keyframes pl-glow { from { stroke-opacity:.35; } to { stroke-opacity:1; } }
@keyframes pl-blink { from { opacity:.55; } to { opacity:1; } }
@keyframes pl-wave { 30% { fill:#fff; transform:scale(1.12); } }
/* Countdown before the opening: the info card keeps the left alignment of the other cards. */
.soon-view .info-card { text-align:left; }
.soon-view .info-card strong { margin-bottom:3px; }

/* Profile questions (commune, faith, church, recontact). */
.profile-intro { display:flex; gap:10px; align-items:flex-start; border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin:6px 0 18px; font-size:12px; line-height:1.6; color:var(--muted); }
.profile-intro p { margin:0; }
.profile-intro .icon { width:16px; height:16px; margin-top:2px; }
#field-commune .zone-select, #field-christian .zone-select { font-size:16px; }
