/* Bilong Digital — bundle CSS V8. Ordre de cascade préservé. */

/* ===== css/main.css ===== */
:root{
  --chocolate:#553633;
  --chocolate-2:#2d1f1d;
  --rose:#dfabb0;
  --rose-soft:#fff0f2;
  --nude:#f2d7c5;
  --cream:#fffaf6;
  --cream-2:#f8efe8;
  --gold:#caa24a;
  --ink:#231c1a;
  --muted:#74645f;
  --line:rgba(85,54,51,.13);
  --shadow:0 24px 70px rgba(64,40,36,.12);
  --shadow-sm:0 12px 35px rgba(64,40,36,.08);
  --radius:28px;
  --ease:cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--cream);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}
body:before{content:"";position:fixed;inset:0;z-index:-2;background:radial-gradient(circle at 12% 15%,rgba(223,171,176,.28),transparent 28%),radial-gradient(circle at 90% 0,rgba(202,162,74,.2),transparent 26%),linear-gradient(180deg,var(--cream),#fff)}
button,input,select,textarea{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}.hidden{display:none!important}.container{width:min(1160px,calc(100% - 40px));margin-inline:auto}.narrow{width:min(860px,calc(100% - 40px));margin-inline:auto}.section{padding:84px 0}.serif{font-family:'Cormorant Garamond',serif}.script{font-family:'Great Vibes',cursive}.eyebrow{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:rgba(255,255,255,.72);border-radius:999px;padding:8px 14px;color:var(--chocolate);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;font-weight:800}.title{font-family:'Cormorant Garamond',serif;font-weight:700;color:var(--chocolate);font-size:clamp(2.4rem,6vw,5rem);line-height:.95;letter-spacing:-.03em}.lead{color:var(--muted);font-size:clamp(1rem,2vw,1.18rem)}
.loader{position:fixed;inset:0;z-index:9999;background:linear-gradient(135deg,var(--cream),var(--rose-soft));display:grid;place-items:center;transition:opacity .45s var(--ease),visibility .45s var(--ease)}.loader.hide{opacity:0;visibility:hidden}.loader-card{text-align:center;background:rgba(255,255,255,.7);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:32px;padding:34px 46px;backdrop-filter:blur(18px)}.loader-mark{font-size:2.8rem;animation:pulse 1.5s infinite}.loader-title{font-family:'Great Vibes',cursive;font-size:2.7rem;color:var(--chocolate)}.loader-subtitle{font-size:.82rem;color:var(--muted)}
.nav{position:sticky;top:0;z-index:100;background:rgba(255,250,246,.82);backdrop-filter:blur(20px);border-bottom:1px solid var(--line)}.nav-inner{height:74px;width:min(1180px,calc(100% - 32px));margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:12px;border:0;background:transparent;color:var(--chocolate);text-align:left}.brand-photo{width:44px;height:44px;border-radius:50%;background:url('../assets/img/line-hero.jpg') 30% center/cover;border:2px solid white;box-shadow:0 0 0 1px var(--line),var(--shadow-sm)}.brand strong{display:block;font-family:'Cormorant Garamond',serif;font-size:1.45rem;line-height:1}.brand small{font-size:.68rem;color:var(--muted);font-weight:700;letter-spacing:.12em;text-transform:uppercase}.nav-links{display:flex;align-items:center;gap:6px}.nav-links button{border:0;background:transparent;border-radius:999px;padding:10px 14px;color:var(--muted);font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;transition:.2s var(--ease)}.nav-links button:hover,.nav-links button.active{background:white;color:var(--chocolate);box-shadow:var(--shadow-sm)}.menu-toggle{display:none;border:0;background:white;border-radius:16px;width:46px;height:46px;font-size:1.2rem;color:var(--chocolate);box-shadow:var(--shadow-sm)}.nav-backdrop{position:fixed;inset:74px 0 0;background:rgba(45,31,29,.22);backdrop-filter:blur(4px);z-index:80}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border-radius:999px;border:0;padding:14px 22px;font-weight:850;text-decoration:none;transition:.22s var(--ease);min-height:48px}.btn:active{transform:scale(.98)}.btn-primary{background:var(--chocolate);color:white;box-shadow:0 16px 35px rgba(85,54,51,.22)}.btn-primary:hover{background:#6c4742;transform:translateY(-2px)}.btn-soft{background:white;color:var(--chocolate);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.btn-soft:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.btn-gold{background:var(--gold);color:#2d1f1d}.btn-danger{background:#b74c4c;color:white}.card{background:rgba(255,255,255,.86);border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:var(--radius);padding:28px}.card-soft{background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(255,240,242,.62))}.input,.select,.textarea{width:100%;border:1px solid var(--line);border-radius:18px;padding:14px 16px;background:white;color:var(--ink);outline:0;transition:.2s var(--ease)}.textarea{min-height:110px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:rgba(202,162,74,.65);box-shadow:0 0 0 5px rgba(202,162,74,.14)}.field{display:grid;gap:7px}.field label{font-size:.78rem;font-weight:850;color:var(--chocolate);letter-spacing:.06em;text-transform:uppercase}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.gate{position:relative;min-height:100vh;min-height:100dvh;background:url('../assets/img/gate-cover.jpg') center/cover no-repeat;overflow:hidden}.gate::before{content:'';position:absolute;inset:0;background:linear-gradient(0deg,rgba(45,31,29,.16) 0%,rgba(45,31,29,0) 32%)}.gate-caption{display:none;position:absolute;left:clamp(22px,6vw,80px);bottom:clamp(26px,6vh,64px);z-index:2;color:white}.gate-caption .script{font-size:clamp(3.2rem,7vw,5.4rem);color:#fff;text-shadow:0 4px 30px rgba(45,31,29,.55);line-height:1}.gate-caption p{margin-top:6px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;font-size:clamp(.8rem,1.4vw,1rem);text-shadow:0 2px 14px rgba(45,31,29,.65);opacity:.95}.gate-float{position:absolute;top:50%;transform:translateY(-50%);right:clamp(24px,6.5vw,110px);width:min(410px,calc(100vw - 40px));z-index:2;padding:clamp(24px,2.6vw,36px)}.card-glass{background:rgba(255,255,255,.95);backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);border-radius:30px;border:1px solid rgba(255,255,255,.65);box-shadow:0 34px 70px rgba(45,31,29,.38),0 6px 18px rgba(45,31,29,.18)}.gate-label{font-size:.78rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.gate-float .input{font-size:1.05rem;text-align:center;text-transform:uppercase;letter-spacing:.08em}.code-help{margin-top:18px;color:var(--muted);font-size:.82rem;text-align:center}.shake{animation:shake .36s ease both}
.hero{padding:84px 0 54px}.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:42px;align-items:center}.hero-copy{display:grid;gap:24px}.hero-copy h1{font-size:clamp(4rem,10vw,8rem)}.hero-copy .script{font-size:clamp(3.3rem,8vw,6rem);color:var(--rose);line-height:.85;text-shadow:0 12px 35px rgba(223,171,176,.22)}.hero-photo{position:relative;border-radius:46px;overflow:hidden;box-shadow:var(--shadow);min-height:580px;background:url('../assets/img/line-hero.jpg') 30% center/cover}.hero-photo:before{content:"";position:absolute;inset:16px;border:1px solid rgba(255,255,255,.7);border-radius:36px}.event-chips{display:flex;gap:10px;flex-wrap:wrap}.chip-info{display:inline-flex;align-items:center;padding:9px 16px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--chocolate);font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.count-card{background:linear-gradient(180deg,var(--chocolate),var(--chocolate-2));color:white;border-radius:26px;padding:22px 12px;text-align:center;box-shadow:var(--shadow-sm);transition:.2s var(--ease)}.count-card:hover{transform:translateY(-3px)}.count-card strong{font-size:clamp(2rem,5vw,3.7rem);line-height:1;color:var(--gold);font-weight:850}.count-card span{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;color:rgba(255,255,255,.75);margin-top:5px}.program{background:linear-gradient(180deg,#fff,var(--cream-2));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.program-flow{display:grid;gap:12px;margin-top:34px}.program-row{display:grid;grid-template-columns:80px 1fr;gap:18px;align-items:start;padding:18px;border-radius:24px;background:rgba(255,255,255,.72);border:1px solid var(--line);transition:.2s var(--ease)}.program-row:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.program-time{font-weight:850;color:var(--gold)}.program-title{font-weight:850;color:var(--chocolate);font-size:1.05rem}.program-desc{color:var(--muted);margin-top:2px}.no-end{margin-top:18px;border-radius:28px;background:var(--chocolate);color:white;padding:24px;text-align:center;box-shadow:var(--shadow)}.no-end .script{font-size:2.7rem;color:var(--gold);line-height:1}.venue-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:30px}.venue-card{min-height:170px;display:grid;align-content:end;background:white;border:1px solid var(--line);border-radius:28px;padding:22px;box-shadow:var(--shadow-sm)}.venue-card b{color:var(--chocolate);font-size:1.05rem}.venue-card span{color:var(--muted);font-size:.92rem;margin-top:4px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:28px}.section-head p{max-width:600px}.rsvp-status{padding:20px;border-radius:24px;background:var(--rose-soft);border:1px solid rgba(223,171,176,.55);margin-bottom:18px}.choice-row{display:flex;gap:10px;flex-wrap:wrap}.choice{flex:1;min-width:170px;border:1px solid var(--line);background:white;border-radius:22px;padding:14px;font-weight:850;color:var(--chocolate);transition:.2s}.choice.selected{border-color:var(--gold);background:var(--gold-glow,#fff3d7);box-shadow:0 0 0 5px rgba(202,162,74,.12)}.companion{border:1px solid var(--line);background:rgba(255,255,255,.75);border-radius:24px;padding:16px;margin-top:12px}.companion-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.small-btn{border:0;border-radius:999px;background:var(--rose-soft);color:var(--chocolate);padding:8px 12px;font-weight:800}.drink-grid{display:flex;gap:8px;flex-wrap:wrap}.drink-chip{border:1px solid var(--line);background:white;border-radius:999px;padding:9px 12px;font-weight:750;color:var(--muted);transition:.2s}.drink-chip.selected,.drink-chip:hover{background:var(--rose-soft);color:var(--chocolate);border-color:rgba(223,171,176,.9)}
.admin-shell{display:grid;grid-template-columns:250px 1fr;gap:24px}.admin-side{position:sticky;top:94px;align-self:start;background:var(--chocolate-2);color:white;border-radius:30px;padding:20px}.admin-side h3{font-family:'Cormorant Garamond';font-size:2rem}.admin-side button{width:100%;border:0;background:transparent;color:rgba(255,255,255,.78);text-align:left;padding:12px;border-radius:16px;margin-top:6px;font-weight:800}.admin-side button.active,.admin-side button:hover{background:rgba(255,255,255,.09);color:white}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.stat{background:white;border:1px solid var(--line);box-shadow:var(--shadow-sm);border-radius:24px;padding:20px}.stat strong{display:block;font-size:2.4rem;color:var(--chocolate);line-height:1}.stat span{color:var(--muted);font-size:.82rem;font-weight:800}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow-sm)}table{width:100%;border-collapse:separate;border-spacing:0;min-width:900px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);font-size:.9rem}th{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.1em}tr:last-child td{border-bottom:0}.badge{display:inline-flex;border-radius:999px;padding:6px 10px;font-size:.75rem;font-weight:850}.badge-ok{background:#e9f7ef;color:#25794b}.badge-wait{background:#fff3d6;color:#8b6300}.badge-no{background:#fdeaea;color:#a63d3d}.btn-danger{background:#fdeaea;color:#a63d3d;border:1px solid #f3c9c9}.btn-danger:hover{background:#a63d3d;color:white}.admin-actions{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.toast-mount{position:fixed;right:18px;bottom:18px;z-index:999;display:grid;gap:10px}.toast{background:white;border:1px solid var(--line);border-left:5px solid var(--gold);box-shadow:var(--shadow);border-radius:18px;padding:14px 16px;min-width:260px;animation:slideIn .26s var(--ease)}.toast.error{border-left-color:#c55252}.modal{position:fixed;inset:0;background:rgba(45,31,29,.52);z-index:600;display:grid;place-items:center;padding:20px}.modal-card{width:min(560px,100%);background:white;border-radius:30px;box-shadow:var(--shadow);padding:24px}.footer{background:linear-gradient(135deg,var(--chocolate-2),#140f0e);color:var(--nude);padding:54px 0;text-align:center}.footer .script{font-size:3rem;color:var(--gold)}.footer p{color:rgba(242,215,197,.75)}
@keyframes pulse{50%{transform:scale(1.05)}}@keyframes shake{20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}@keyframes slideIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:960px){.gate{background-position:30% center}.gate::before{background:linear-gradient(0deg,rgba(45,31,29,.30) 0%,rgba(45,31,29,0) 40%),linear-gradient(180deg,rgba(45,31,29,.22) 0%,rgba(45,31,29,0) 26%)}.gate-caption{display:block;left:20px;top:22px;bottom:auto}.gate-caption .script{font-size:clamp(2.6rem,9vw,3.6rem)}.gate-float{top:auto;bottom:clamp(18px,6vh,54px);right:50%;transform:translate(50%,0)}.hero-grid{grid-template-columns:1fr}.hero-photo{min-height:420px;order:-1}.venue-grid,.grid-3,.stat-grid{grid-template-columns:1fr 1fr}.admin-shell{grid-template-columns:1fr}.admin-side{position:static}.nav-links{position:fixed;top:74px;left:16px;right:16px;display:grid;background:rgba(255,250,246,.97);backdrop-filter:blur(18px);border:1px solid var(--line);border-radius:28px;padding:16px;box-shadow:var(--shadow);transform:translateY(-18px);opacity:0;pointer-events:none;transition:.22s var(--ease);z-index:120}.nav-links.open{opacity:1;transform:translateY(0);pointer-events:auto}.nav-links button{text-align:left}.menu-toggle{display:block}}
@media(max-width:620px){.container,.narrow{width:min(100% - 28px,1160px)}.section{padding:56px 0}.hero{padding-top:40px}.hero-copy h1{font-size:4rem}.countdown{grid-template-columns:repeat(2,1fr)}.venue-grid,.grid-2,.grid-3,.stat-grid{grid-template-columns:1fr}.program-row{grid-template-columns:1fr;gap:6px}.gate-caption p{font-size:.72rem}.card{padding:20px}.section-head{display:grid}.btn{width:100%}.choice{min-width:100%}.admin-actions .btn{width:100%}}
@media print{.nav,.admin-actions,.btn,.toast-mount{display:none!important}body{background:white}.card,.table-wrap{box-shadow:none;border:1px solid #ddd}}

/* V10 Premium roles & confirmation */
.premium-rsvp .vip-header{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:center;overflow:hidden;position:relative}.premium-rsvp .vip-header:before{content:"";position:absolute;right:-60px;top:-80px;width:220px;height:220px;border-radius:50%;background:rgba(202,162,74,.12)}.vip-ticket{position:relative;background:linear-gradient(135deg,var(--chocolate),#7a504a);color:#fff;border-radius:26px;padding:24px;box-shadow:var(--shadow);border:1px solid rgba(255,255,255,.2)}.vip-ticket span{display:block;text-transform:uppercase;letter-spacing:.16em;font-size:.68rem;opacity:.75;font-weight:900}.vip-ticket strong{display:block;font-size:1.45rem;margin:6px 0 14px;color:#fff}.vip-ticket em{display:block;font-style:normal;padding-top:9px;border-top:1px solid rgba(255,255,255,.18);margin-top:9px;color:rgba(255,255,255,.88);font-weight:700}.event-mini-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:16px}.event-mini-grid>div{background:#fff;border:1px solid var(--line);border-radius:22px;padding:16px;box-shadow:var(--shadow-sm);display:grid;gap:4px}.event-mini-grid b{color:var(--chocolate)}.event-mini-grid span{font-size:.82rem;color:var(--muted)}.premium-form{padding:34px}.vip-status{background:linear-gradient(135deg,rgba(255,240,242,.9),rgba(255,255,255,.95));border:1px dashed rgba(202,162,74,.55);border-radius:22px;padding:16px;margin-bottom:22px}.form-section-title{font-family:'Cormorant Garamond',serif;font-size:1.7rem;color:var(--chocolate);margin:26px 0 12px}.mini-help{color:var(--muted);font-size:.92rem}.btn-confirm{width:100%;font-size:1.02rem;letter-spacing:.04em;text-transform:uppercase}.success-card{background:linear-gradient(135deg,rgba(255,255,255,.95),rgba(255,240,242,.72));border:1px solid rgba(202,162,74,.25)}.small-btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;border:0;background:#fff;color:var(--chocolate);border-radius:999px;padding:8px 12px;font-weight:850;box-shadow:var(--shadow-sm);border:1px solid var(--line)}
@media (max-width:900px){.premium-rsvp .vip-header{grid-template-columns:1fr}.event-mini-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.premium-form{padding:22px}}
@media (max-width:560px){.event-mini-grid{grid-template-columns:1fr}.vip-ticket{padding:20px}.premium-rsvp .title{font-size:2.5rem!important}}

/* ===== Compléments maquette VIP ===== */
.count-line{font-family:'Great Vibes',cursive;font-size:1.7rem;color:var(--gold);margin-top:4px}
.input-locked{background:rgba(242,215,197,.25);color:var(--muted);cursor:not-allowed}

/* ===== Sobriété — synchronisation 02/07/2026 ===== */
.loader-mark{font-size:1.4rem;letter-spacing:.2em;color:var(--gold);font-weight:600}

/* Liens cliquables (Maps, téléphone, email) */
.map-link{color:var(--chocolate);text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px;transition:color .25s var(--ease)}
.map-link:hover{color:var(--gold)}
.map-link-light{color:inherit}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}


/* ===== css/pages.css ===== */
/* ============================================================
   Line Nasya — pages.css · V15 Ultimate
   Sections de pages, tableau de bord, galerie, animations
   ============================================================ */

/* ---------- Page de connexion : lumière et douceur ---------- */
.gate::before{
  background:
    radial-gradient(620px 720px at 78% 50%, rgba(255,250,246,.50), rgba(255,250,246,0) 72%),
    linear-gradient(0deg, rgba(45,31,29,.10), transparent 30%);
}
.card-glass{
  background:rgba(255,255,255,.86);
  backdrop-filter:blur(18px) saturate(1.2);
  -webkit-backdrop-filter:blur(18px) saturate(1.2);
}
.gate-float{
  animation:gateIn .9s var(--ease) both, gateFloat 7.5s ease-in-out 1.4s infinite;
}
@keyframes gateIn{
  from{opacity:0; transform:translateY(calc(-50% + 26px))}
  to{opacity:1; transform:translateY(-50%)}
}
@keyframes gateFloat{
  0%,100%{transform:translateY(-50%)}
  50%{transform:translateY(calc(-50% - 7px))}
}

/* ---------- Apparition des sections au défilement ---------- */
.reveal{opacity:0; transform:translateY(28px); transition:opacity .75s var(--ease), transform .75s var(--ease)}
.reveal.in{opacity:1; transform:none}

/* ---------- Micro-interactions ---------- */
.btn{transition:transform .2s var(--ease), box-shadow .2s var(--ease), background .25s var(--ease), color .25s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.card, .info-card, .chart-card, .shot{transition:transform .3s var(--ease), box-shadow .3s var(--ease)}
.info-card:hover, .chart-card:hover{transform:translateY(-4px); box-shadow:var(--shadow)}

/* ---------- Section Informations pratiques ---------- */
.infos-section{background:linear-gradient(180deg, var(--cream) 0%, #fdf3ee 100%)}
.info-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px}
.info-card{
  background:white; border:1px solid var(--line); border-radius:26px;
  padding:26px 24px; display:grid; gap:6px; box-shadow:var(--shadow-sm);
}
.info-ic{font-size:1.5rem; line-height:1}
.info-card b{font-family:'Cormorant Garamond',serif; font-size:1.35rem; color:var(--chocolate)}
.info-card span:last-child{color:var(--muted); font-size:.93rem}

/* ---------- Galerie façon Pinterest ---------- */
.gallery-section{background:white}
.masonry{columns:3 300px; column-gap:18px}
.shot{
  break-inside:avoid; margin:0 0 18px; border-radius:26px; overflow:hidden;
  position:relative; box-shadow:var(--shadow-sm); border:1px solid var(--line);
}
.shot img{width:100%; display:block; transition:transform .6s var(--ease)}
.shot:hover img{transform:scale(1.045)}
.shot figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:26px 18px 14px;
  color:white; font-size:.85rem; letter-spacing:.04em;
  background:linear-gradient(0deg, rgba(45,31,29,.55), transparent);
  opacity:0; transition:opacity .4s var(--ease);
}
.shot:hover figcaption{opacity:1}

/* ---------- Programme : fond photographique adouci ---------- */
.program-soft{
  background:
    linear-gradient(rgba(255,250,246,.72), rgba(255,250,246,.86)),
    url('../assets/img/section-soft.jpg') center/cover fixed;
}

/* ---------- Tableau de bord : graphiques ---------- */
.charts-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:18px; margin:26px 0}
.chart-card{background:white; border:1px solid var(--line); border-radius:26px; padding:22px; box-shadow:var(--shadow-sm)}
.chart-card h3{font-family:'Cormorant Garamond',serif; font-size:1.45rem; color:var(--chocolate); margin-bottom:14px}
.bar-row{display:grid; grid-template-columns:110px 1fr 74px; align-items:center; gap:12px; margin:10px 0}
.bar-row span{font-size:.85rem; color:var(--muted)}
.bar-row b{font-size:.9rem; color:var(--chocolate); text-align:right}
.bar-row b i{font-style:normal; color:var(--muted); font-size:.75rem; margin-left:5px}
.bar-track{height:10px; border-radius:99px; background:#f3e6de; overflow:hidden}
.bar-fill{height:100%; border-radius:99px; background:linear-gradient(90deg, var(--gold), var(--rose, #d8a1a4)); transition:width .8s var(--ease)}

/* ---------- Liste des invités : recherche, filtres, pagination ---------- */
.guest-toolbar{display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:22px 0 14px}
.guest-toolbar .input{flex:1; min-width:220px}
.filter-row{display:flex; gap:8px; flex-wrap:wrap}
.filter-chip{
  padding:10px 16px; border-radius:99px; border:1px solid var(--line); background:white;
  font-size:.8rem; font-weight:700; letter-spacing:.06em; color:var(--muted); cursor:pointer;
  transition:all .25s var(--ease);
}
.filter-chip:hover{border-color:var(--gold); color:var(--chocolate)}
.filter-chip.active{background:var(--chocolate); border-color:var(--chocolate); color:white}
.sort-btn{width:auto; min-height:auto; padding:10px 16px; font-size:.8rem}
.pager{display:flex; align-items:center; justify-content:center; gap:16px; margin:18px 0 6px}
.pager span{font-size:.85rem; color:var(--muted)}
.pager .small-btn[disabled]{opacity:.4; cursor:not-allowed}

/* ---------- Accessibilité : réduire les animations ---------- */
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1; transform:none; transition:none}
  .gate-float{animation:none}
  .btn, .card, .shot img{transition:none}
  .program-soft{background-attachment:scroll}
}

/* ---------- Formulaire en étapes : présence en avant ---------- */
.step-title{display:flex;align-items:center;gap:12px}
.step-n{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--gold);color:white;font-family:Inter,sans-serif;font-size:.85rem;font-weight:800;flex:none}
.choice-xl{gap:14px}
.choice-xl .choice{flex:1;min-width:200px;padding:20px 18px;font-size:1.02rem;border-width:2px}
.choice-xl .choice.selected{box-shadow:0 10px 26px rgba(85,54,51,.16)}
.btn-confirm{width:100%;margin-top:26px;padding:19px;font-size:1.05rem;letter-spacing:.02em}

/* ---------- Plan de salle ---------- */
.seat-toggle{display:inline-flex;background:white;border:1px solid var(--line);border-radius:999px;padding:4px;margin:18px 0;gap:4px}
.seat-toggle button{border:0;background:transparent;padding:10px 22px;border-radius:999px;font-weight:800;font-size:.85rem;color:var(--muted);cursor:pointer;transition:all .25s var(--ease)}
.seat-toggle button.active{background:var(--chocolate);color:white}
.seat-unassigned{margin-bottom:16px}
.seat-list{display:grid;gap:14px}
.seat-card{padding:20px}
.seat-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.seat-head b{font-family:'Cormorant Garamond',serif;font-size:1.3rem;color:var(--chocolate);margin-right:auto}
.seat-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.seat-chip{display:inline-flex;align-items:center;gap:6px;background:#faf0ea;border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-size:.82rem;color:var(--chocolate)}
.seat-x{border:0;background:transparent;color:var(--muted);font-size:1rem;cursor:pointer;line-height:1;padding:0 2px}
.seat-x:hover{color:#a63d3d}
.seat-assign{margin-top:12px;max-width:340px}
.seat-plan{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px;margin-top:8px}
.seat-table{aspect-ratio:1;border-radius:50%;background:white;border:2px solid var(--line);display:grid;place-content:center;text-align:center;gap:4px;box-shadow:var(--shadow-sm)}
.seat-table b{font-size:.9rem;color:var(--chocolate);padding:0 10px}
.seat-table span{font-size:.8rem;color:var(--muted)}
.seat-table.full{border-color:var(--gold);background:linear-gradient(160deg,#fff,#faf0e6)}

/* ===== V21 — réponse prioritaire, infos condensées et galerie éditoriale ===== */
.answer-first{padding-top:72px;background:linear-gradient(180deg,#fffaf7 0%,#fff 100%)}
.answer-heading{margin-bottom:28px}
.hero-primary-action{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:22px 0 18px}
.hero-primary-action span{font-size:.88rem;color:var(--muted)}
.btn-rsvp-main{min-height:58px;padding-inline:28px;font-size:1rem;box-shadow:0 14px 30px rgba(107,63,53,.22);animation:rsvpGlow 2.4s ease-in-out infinite}
@keyframes rsvpGlow{0%,100%{transform:translateY(0);box-shadow:0 12px 28px rgba(107,63,53,.18)}50%{transform:translateY(-2px);box-shadow:0 16px 36px rgba(201,164,76,.34)}}
.welcome-note{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:8px 0 22px}
.welcome-note span{color:var(--muted);font-size:.9rem}
.compact-head{margin-bottom:34px}
.practical-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,.95fr);gap:56px;align-items:start}
.practical-copy{display:grid;grid-template-columns:1fr 1fr;gap:0 34px}
.practical-block{padding:24px 0;border-top:1px solid rgba(107,63,53,.18)}
.practical-block:nth-child(-n+2){border-top:0;padding-top:0}
.practical-block h3{font-family:var(--font-display);font-size:1.45rem;color:var(--chocolate);margin:6px 0 8px}
.practical-block p{color:var(--muted);line-height:1.65;margin:0}
.mini-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.16em;font-weight:800;color:var(--gold)}
.text-action{display:inline-block;margin-top:12px;font-weight:800;color:var(--chocolate);text-decoration:none;border-bottom:1px solid var(--gold)}
.dress-palette{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.dress-palette span{display:flex;align-items:center;gap:10px;color:var(--chocolate);font-weight:700}
.dress-palette i{width:28px;height:28px;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 1px rgba(75,48,43,.12)}
.contact-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.contact-actions a{padding:10px 14px;border:1px solid rgba(107,63,53,.18);border-radius:999px;text-decoration:none;color:var(--chocolate);font-weight:800;background:#fff}
.map-panel{position:sticky;top:110px;border-radius:30px;overflow:hidden;box-shadow:0 22px 60px rgba(75,48,43,.14);min-height:520px;background:#eee}
.map-panel iframe{display:block;width:100%;height:520px;border:0}
.feature-gallery{display:grid;grid-template-columns:1.35fr 1fr 1fr;grid-auto-rows:240px;gap:18px}
.feature-gallery .shot{margin:0;position:relative;border-radius:24px;overflow:hidden;background:#eee}
.feature-gallery .shot-main{grid-row:span 2}
.feature-gallery .shot img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .55s ease}
.feature-gallery .shot:hover img{transform:scale(1.035)}
.feature-gallery figcaption{position:absolute;left:14px;right:14px;bottom:14px;padding:9px 12px;border-radius:14px;background:rgba(255,250,247,.84);backdrop-filter:blur(8px);color:var(--chocolate);font-size:.82rem}
@media (prefers-reduced-motion:reduce){.btn-rsvp-main{animation:none}.feature-gallery .shot img{transition:none}}

/* Programme final : deux temps, illustrations SVG et animations douces */
.program-heading{align-items:center}
.program-split{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:30px}
.program-part{position:relative;padding:30px 26px;border-radius:34px;overflow:hidden}
.program-part-kids{background:linear-gradient(145deg,rgba(231,196,180,.34),rgba(217,160,167,.18))}
.program-part-adults{background:linear-gradient(145deg,rgba(107,63,53,.98),rgba(73,42,35,.98));color:#fff}
.program-part:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 85% 10%,rgba(201,164,76,.2),transparent 34%)}
.program-part-head{position:relative;margin-bottom:22px}
.program-part-head>span{display:inline-block;font-size:.72rem;font-weight:850;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.program-part-head h3{font-size:clamp(1.65rem,3vw,2.35rem);margin:8px 0 6px;color:var(--chocolate)}
.program-part-adults .program-part-head h3{color:#fff}
.program-part-head p{color:var(--muted);max-width:34rem}
.program-part-adults .program-part-head p{color:rgba(255,255,255,.72)}
.program-part .program-flow{margin-top:0;gap:10px}
.program-part .program-row{grid-template-columns:92px 1fr;align-items:center;padding:16px 0;border-radius:0;border:0;border-bottom:1px solid rgba(107,63,53,.14);background:transparent;box-shadow:none;animation:programFloat 5.5s ease-in-out infinite}
.program-part .program-row:nth-child(2){animation-delay:.35s}.program-part .program-row:nth-child(3){animation-delay:.7s}.program-part .program-row:nth-child(4){animation-delay:1.05s}
.program-part-adults .program-row{border-bottom-color:rgba(255,255,255,.14)}
.program-part .program-row:last-child{border-bottom:0}
.program-visual{display:grid;justify-items:center;gap:7px}
.program-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:rgba(255,255,255,.72);box-shadow:0 10px 24px rgba(107,63,53,.12);animation:iconBob 3.2s ease-in-out infinite}
.program-part-adults .program-icon{background:rgba(255,255,255,.1);box-shadow:none}
.program-icon svg{width:28px;height:28px;fill:none;stroke:var(--chocolate);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.program-part-adults .program-icon svg{stroke:var(--gold)}
.program-part .program-time{font-size:.75rem;line-height:1;text-align:center;color:var(--gold)}
.program-part .program-title{font-size:1.02rem}
.program-part-adults .program-title{color:#fff}
.program-part-adults .program-desc{color:rgba(255,255,255,.72)}
@keyframes iconBob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(2deg)}}
@keyframes programFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@media(max-width:860px){.program-split{grid-template-columns:1fr}.program-part{padding:26px 20px}}
@media(max-width:520px){.program-part{border-radius:26px;padding:23px 16px}.program-part .program-row{grid-template-columns:72px 1fr;gap:12px}.program-icon{width:42px;height:42px}.program-icon svg{width:24px;height:24px}.program-part-head h3{font-size:1.7rem}}
@media(prefers-reduced-motion:reduce){.program-row,.program-icon{animation:none!important}}


/* ===== css/responsive.css ===== */
/* ============================================================
   Line Nasya — responsive.css · V15 Ultimate
   Trois paliers : grand écran ≥1600 · tablette ≤900 · mobile ≤390
   ============================================================ */

/* ---------- Grand écran (≥ 1600 px) : plus d'air ---------- */
@media (min-width:1600px){
  .container{width:min(100% - 48px, 1320px)}
  .narrow{width:min(100% - 48px, 900px)}
  .section{padding:110px 0}
  .masonry{columns:3 340px}
  .gate-float{right:clamp(60px, 9vw, 170px); width:440px}
}

/* ---------- Tablette (≤ 900 px) ---------- */
@media (max-width:900px){
  .info-grid{grid-template-columns:1fr 1fr}
  .charts-grid{grid-template-columns:1fr}
  .masonry{columns:2 220px}
  .bar-row{grid-template-columns:96px 1fr 66px}
  .guest-toolbar{align-items:stretch}
  .guest-toolbar .input{min-width:100%}
  .program-soft{background-attachment:scroll}
  .table-wrap{overflow-x:auto}
  .table-wrap table{min-width:640px}
}

/* ---------- Téléphone (≤ 390 px) ---------- */
@media (max-width:390px){
  .section{padding:44px 0}
  .hero{padding-top:28px}
  .hero-copy h1{font-size:3rem}
  .hero-copy .script{font-size:3.4rem}
  .info-grid{grid-template-columns:1fr}
  .masonry{columns:1 auto}
  .count-line{font-size:1.35rem}
  .countdown{gap:8px}
  .count-card strong{font-size:1.6rem}
  .vip-header{display:grid; gap:16px}
  .vip-ticket{max-width:100%}
  .event-mini-grid{grid-template-columns:1fr 1fr}
  .filter-chip{padding:8px 12px; font-size:.72rem}
  .pager{flex-wrap:wrap; gap:8px}
  .chart-card{padding:16px}
  .bar-row{grid-template-columns:84px 1fr 58px; gap:8px}
  .gate-float{width:calc(100vw - 28px); padding:20px}
  .code-help{font-size:.75rem}
  .footer .script{font-size:2.6rem}
}

/* ============================================================
   CORRECTIF MOBILE — débordements horizontaux (espace admin)
   Bloc autonome : à coller tel quel en fin de responsive.css.
   Ne modifie aucune règle existante, n'enlève rien.
   ============================================================ */

/* Cause racine : les enfants d'une grille ne rétrécissent pas
   sous la largeur de leur contenu (tableau large) sans min-width:0.
   Le tableau scrolle désormais DANS son cadre au lieu d'élargir la page. */
.admin-shell > *{min-width:0}
.charts-grid > *, .chart-card, .bar-track{min-width:0}

@media (max-width:900px){
  /* Boutons d'action : empilés, pleine largeur réelle, texte qui respire */
  .admin-actions{display:grid;grid-template-columns:1fr;gap:10px}
  .admin-actions .btn{width:100%;white-space:normal;text-align:center}

  /* Graphiques : colonnes fluides, plus de chiffres coupés */
  .bar-row{grid-template-columns:minmax(78px,auto) minmax(0,1fr) auto;gap:8px}
  .bar-row span{overflow-wrap:break-word}
  .chart-card{overflow:hidden}
  .chart-card p, .lead{overflow-wrap:break-word}

  /* Le tableau garde son défilement interne */
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* Barre d'outils invités : tout passe à la ligne proprement */
  .guest-toolbar{flex-wrap:wrap}
  .filter-row{flex-wrap:wrap}
  .sort-btn{width:auto}
}

@media (max-width:390px){
  .bar-row{grid-template-columns:minmax(64px,auto) minmax(0,1fr) auto}
  .bar-row b{font-size:.8rem}
  .bar-row b i{display:block;margin-left:0}
  .sort-btn{width:100%}
  .admin-side{padding:18px}
}

/* Ceinture de sécurité globale : plus jamais de page plus large que l'écran */
@media (max-width:900px){
  html, body{max-width:100vw;overflow-x:hidden}
  .container, .narrow{overflow-wrap:break-word}
}

/* ============================================================
   REFONTE RESPONSIVE COMPLÈTE — 8 points de rupture
   390 / 480 / 576 / 768 / 992 / 1200 / 1440 / 1920
   Bloc additif : n'enlève rien, affine tout.
   ============================================================ */

/* ---------- Base (tous écrans) : marges saines ---------- */
.container{width:min(100%,1200px);padding-inline:18px;margin-inline:auto}
section{overflow:hidden}
.guest-toolbar .input, .search{width:100%;max-width:100%;box-sizing:border-box}

/* ---------- ≤ 992 px : menu Admin en onglets horizontaux défilants ---------- */
@media (max-width:992px){
  .admin-shell{grid-template-columns:1fr;gap:14px}
  .admin-side{
    display:flex;flex-direction:row;align-items:center;gap:8px;
    overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;
    padding:10px 12px;border-radius:999px;position:sticky;top:74px;z-index:40;
  }
  .admin-side::-webkit-scrollbar{display:none}
  .admin-side h3{display:none}
  .admin-side button{
    flex:none;width:auto;white-space:nowrap;scroll-snap-align:start;
    padding:10px 18px;border-radius:999px;font-size:.85rem;
  }
  .charts-grid{grid-template-columns:1fr}
  .chart-card{width:100%}
}

/* ---------- ≤ 768 px : tableaux en cartes (une carte par ligne) ---------- */
@media (max-width:768px){
  .table-wrap{overflow:visible}
  .table-wrap table{min-width:0;width:100%;border-collapse:separate;border-spacing:0}
  .table-wrap thead{display:none}
  .table-wrap tbody{display:grid;gap:12px}
  .table-wrap tr{
    display:block;background:white;border:1px solid var(--line);
    border-radius:20px;padding:16px 18px;box-shadow:var(--shadow-sm);
  }
  .table-wrap td{
    display:flex;justify-content:space-between;align-items:center;gap:14px;
    border:0 !important;padding:7px 0;text-align:right;
  }
  .table-wrap td::before{
    content:attr(data-label);font-weight:800;color:var(--muted);
    font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;text-align:left;flex:none;
  }
  .table-wrap td[data-label=""]{justify-content:flex-start}
  .table-wrap td[data-label=""]::before{display:none}
  .table-wrap td.row-actions{flex-wrap:wrap;justify-content:flex-start}
}

/* ---------- ≤ 576 px : filtres défilants + recherche pleine largeur ---------- */
@media (max-width:576px){
  .guest-toolbar{display:grid;grid-template-columns:1fr;gap:10px}
  .filter-row{
    display:flex;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    scroll-snap-type:x mandatory;padding-bottom:4px;
  }
  .filter-row::-webkit-scrollbar{display:none}
  .filter-chip{flex:none;scroll-snap-align:start}
  .sort-btn{width:100%}
}

/* ---------- ≤ 480 px : jauges compactes, libellé au-dessus ---------- */
@media (max-width:480px){
  .bar-row{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}
  .bar-row span{grid-column:1 / -1;font-size:.82rem;color:var(--chocolate);font-weight:600}
  .bar-row b{font-size:.8rem}
  .bar-row b i{margin-left:4px}
  .stat-grid{grid-template-columns:1fr 1fr;gap:10px}
  .stat strong{font-size:1.7rem}
  .seat-plan{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}
}

/* ---------- ≤ 390 px : très petits écrans ---------- */
@media (max-width:390px){
  .container{padding-inline:14px}
  .admin-side{top:66px}
  .admin-side button{padding:9px 14px;font-size:.8rem}
  .seat-toggle button{padding:9px 16px}
}

/* ---------- ≥ 1200 px : confort desktop ---------- */
@media (min-width:1200px){
  .container{width:min(100%,1200px)}
}

/* ---------- ≥ 1440 px : grands écrans ---------- */
@media (min-width:1440px){
  .container{width:min(100%,1320px)}
  html{font-size:17px}
}

/* ---------- ≥ 1920 px : TV / très grands écrans ---------- */
@media (min-width:1920px){
  .container{width:min(100%,1520px)}
  html{font-size:18px}
  .section{padding:130px 0}
}

/* ===== V21 responsive additions ===== */
@media (max-width:980px){
  .practical-layout{grid-template-columns:1fr;gap:32px}
  .map-panel{position:relative;top:auto;min-height:400px}
  .map-panel iframe{height:400px}
  .feature-gallery{grid-template-columns:1fr 1fr;grid-auto-rows:220px}
}
@media (max-width:640px){
  .answer-first{padding-top:48px}
  .hero-primary-action{display:grid;gap:10px}
  .btn-rsvp-main{width:100%;min-height:60px}
  .welcome-note{align-items:flex-start;flex-direction:column}
  .practical-copy{grid-template-columns:1fr;gap:0}
  .practical-block,.practical-block:nth-child(-n+2){padding:20px 0;border-top:1px solid rgba(107,63,53,.18)}
  .practical-block:first-child{border-top:0;padding-top:0}
  .dress-palette{grid-template-columns:1fr 1fr}
  .contact-actions{display:grid;grid-template-columns:1fr}
  .contact-actions a{text-align:center}
  .map-panel{border-radius:22px;min-height:300px}
  .map-panel iframe{height:300px}
  .feature-gallery{grid-template-columns:1fr 1fr;grid-auto-rows:170px;gap:12px}
  .feature-gallery .shot-main{grid-column:1/-1;grid-row:span 2}
  .feature-gallery figcaption{font-size:.76rem;left:9px;right:9px;bottom:9px}
}
@media (max-width:390px){
  .dress-palette{grid-template-columns:1fr}
  .feature-gallery{grid-auto-rows:145px}
}


/* ===== css/audit-final.css ===== */
/* Audit professionnel responsive final — 10/07/2026 */
:root{--page-pad:clamp(14px,3vw,28px)}
html{width:100%;max-width:100%;overflow-x:clip;-webkit-text-size-adjust:100%}
body{width:100%;max-width:100%;overflow-x:clip}
#app,.section,.hero,.program,.footer{width:100%;max-width:100%}
section{overflow:visible}
*,*::before,*::after{min-width:0}
img,svg,video,canvas,iframe{max-width:100%}
iframe{display:block;width:100%;border:0}
p,h1,h2,h3,h4,a,button,label,span,td,th{overflow-wrap:anywhere}
.container,.narrow{width:min(100%,1240px);padding-inline:var(--page-pad);margin-inline:auto}
.narrow{max-width:900px}
.btn,button,input,select,textarea{touch-action:manipulation}
.btn,.choice,.filter-chip,.small-btn,.admin-side button{min-height:46px}
:focus-visible{outline:3px solid rgba(202,162,74,.65);outline-offset:3px}

/* Header */
.nav-inner{width:min(100%,1240px);padding-inline:var(--page-pad);height:auto;min-height:74px}
.brand{min-width:0}.brand>span:last-child{min-width:0}.brand strong,.brand small{white-space:normal}

/* Login: no absolute card on narrow displays */
@media(max-width:820px){
  .gate{display:grid;align-items:end;min-height:100svh;background-position:32% center;overflow:auto;padding:clamp(90px,20vh,170px) var(--page-pad) 24px}
  .gate::before{background:linear-gradient(180deg,rgba(45,31,29,.05) 12%,rgba(45,31,29,.30) 55%,rgba(255,250,246,.92) 100%)}
  .gate-float{position:relative;inset:auto;transform:none!important;width:min(100%,500px);margin:0 auto;padding:clamp(20px,5vw,30px);animation:none!important}
  .card-glass{border-radius:24px;box-shadow:0 18px 45px rgba(45,31,29,.24)}
  .gate-float .title{font-size:clamp(2.25rem,11vw,3.5rem)!important;line-height:1}
  .gate-float .script{font-size:clamp(2.4rem,12vw,3.6rem)!important}
}
@media(max-width:380px){.gate{padding-inline:12px}.gate-float{padding:18px}.loader-card{max-width:calc(100vw - 28px);padding:26px 20px}}

/* Guest page */
.hero-grid,.premium-rsvp .vip-header,.practical-layout,.program-split,.admin-shell{min-width:0}
@media(max-width:900px){
  .hero{padding:46px 0 34px}.hero-grid{grid-template-columns:1fr;gap:26px}.hero-photo{min-height:clamp(320px,72vw,540px);border-radius:28px;order:-1}
  .hero-copy h1{font-size:clamp(3rem,14vw,5.5rem)}.hero-copy .script{font-size:clamp(3rem,13vw,5rem)}
  .section-head{display:grid;align-items:start;gap:12px}.section-head p{max-width:none}
  .countdown{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.count-card{border-radius:18px;padding:16px 6px}.count-card strong{font-size:clamp(1.55rem,8vw,2.5rem)}.count-card span{font-size:.58rem;letter-spacing:.06em}
  .premium-rsvp .vip-header{grid-template-columns:1fr}.premium-form{padding:clamp(18px,4vw,26px)}
  .grid-2,.grid-3{grid-template-columns:1fr}
}
@media(max-width:520px){
  .section{padding:48px 0}.card{padding:18px;border-radius:22px}.title{font-size:clamp(2.3rem,12vw,3.6rem)}
  .countdown{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero-primary-action{display:grid}.hero-primary-action .btn{width:100%}
  .choice-row{display:grid;grid-template-columns:1fr}.choice{width:100%;min-width:0}
  .event-mini-grid{grid-template-columns:1fr!important}
  .program-part .program-row{grid-template-columns:64px minmax(0,1fr);padding:14px 0}
  .footer{text-align:center}.footer a{display:inline-block;margin-block:3px}
}

/* Information + gallery */
.practical-layout{grid-template-columns:minmax(0,1fr) minmax(320px,.85fr)}
.map-panel iframe{min-height:360px}
@media(max-width:980px){.practical-layout{grid-template-columns:1fr}.map-panel{position:relative;top:auto;min-height:0}.map-panel iframe{min-height:320px}}
@media(max-width:640px){.practical-copy,.dress-palette{grid-template-columns:1fr}.feature-gallery{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:150px}.feature-gallery .shot-main{grid-column:1/-1;grid-row:span 2}.feature-gallery figcaption{opacity:1}}
@media(max-width:380px){.feature-gallery{grid-template-columns:1fr;grid-auto-rows:220px}.feature-gallery .shot-main{grid-column:auto;grid-row:auto}}

/* Organizer/Admin: desktop and mobile robust */
.admin-shell{display:grid;grid-template-columns:250px minmax(0,1fr);gap:28px;align-items:start}
.admin-shell>div{min-width:0;width:100%}
.admin-side{max-width:100%}
.admin-actions{display:flex;flex-wrap:wrap;gap:10px}.admin-actions .btn{white-space:normal}
.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.charts-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.chart-card,.stat,.table-wrap{max-width:100%}
.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.table-wrap table{width:100%;min-width:720px}
.guest-toolbar{display:flex;align-items:stretch}.guest-toolbar .input{min-width:min(260px,100%)}
.modal{max-width:min(720px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto}

@media(max-width:992px){
 .admin-shell{grid-template-columns:1fr;gap:16px}
 .admin-side{position:sticky;top:74px;z-index:45;display:flex!important;flex-direction:row!important;gap:8px;width:100%;overflow-x:auto;overscroll-behavior-inline:contain;padding:9px;background:rgba(255,250,246,.96);border-radius:18px;box-shadow:var(--shadow-sm);scrollbar-width:none}
 .admin-side::-webkit-scrollbar{display:none}.admin-side h3{display:none}.admin-side button{flex:0 0 auto;width:auto!important;white-space:nowrap;padding:10px 14px}
 .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.charts-grid{grid-template-columns:1fr}
 .admin-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.admin-actions .btn{width:100%}
}
@media(max-width:720px){
 .admin-shell .section-head{margin-bottom:18px}.admin-shell .title{font-size:clamp(2.3rem,12vw,3.5rem)!important}
 .admin-actions{grid-template-columns:1fr}
 .guest-toolbar{display:grid;grid-template-columns:1fr;gap:10px}.guest-toolbar .input,.sort-btn{width:100%;min-width:0}
 .filter-row{display:flex;flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.filter-chip{flex:0 0 auto}
 .table-wrap{overflow:visible}.table-wrap table{min-width:0;border:0}.table-wrap thead{display:none}.table-wrap tbody{display:grid;gap:12px}
 .table-wrap tr{display:block;width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow-sm)}
 .table-wrap td{display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr);gap:10px;width:100%;padding:7px 0!important;border:0!important;text-align:right;align-items:start}
 .table-wrap td::before{content:attr(data-label);font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:left}
 .table-wrap td[data-label=""]{display:flex;flex-wrap:wrap;justify-content:flex-start}.table-wrap td[data-label=""]::before{display:none}
 .table-wrap td[colspan]{display:block;text-align:left}.table-wrap td[colspan]::before{display:none}
 .row-actions .small-btn{flex:1 1 92px}
 .bar-row{grid-template-columns:minmax(80px,auto) minmax(0,1fr) auto}.bar-row span{font-size:.8rem}.bar-row b{white-space:nowrap}
 .seat-plan{grid-template-columns:repeat(2,minmax(0,1fr))}.seat-table{aspect-ratio:auto;min-height:130px;border-radius:24px}
}
@media(max-width:390px){
 .stat-grid{grid-template-columns:1fr 1fr}.stat{padding:16px 10px}.stat strong{font-size:1.7rem}
 .bar-row{grid-template-columns:minmax(0,1fr) auto;gap:4px 8px}.bar-row span{grid-column:1/-1}.bar-track{grid-column:1/2}
 .table-wrap td{grid-template-columns:1fr;text-align:left;gap:2px}.table-wrap td::before{margin-bottom:1px}.seat-plan{grid-template-columns:1fr 1fr}
}

/* Navigation mobile */
@media(max-width:760px){
 .nav-inner{min-height:66px}.brand-photo{width:40px;height:40px}.brand strong{font-size:1.2rem}.brand small{font-size:.58rem}
 .menu-toggle{display:grid;place-items:center;flex:0 0 46px}
 .nav-links{position:fixed;left:var(--page-pad);right:var(--page-pad);top:76px;display:grid!important;gap:6px;padding:12px;border-radius:20px;background:#fff;box-shadow:0 20px 60px rgba(45,31,29,.22);transform:translateY(-14px);opacity:0;visibility:hidden;transition:.2s}
 .nav-links.open{transform:none;opacity:1;visibility:visible}.nav-links button{width:100%;min-height:48px;text-align:left;padding-inline:16px}
}

/* Clear guidance and back-to-top */
.back-to-top{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:90;width:50px;height:50px;border:0;border-radius:50%;background:var(--chocolate);color:#fff;font-size:1.45rem;box-shadow:0 14px 32px rgba(45,31,29,.28);opacity:0;visibility:hidden;transform:translateY(12px);transition:.22s}
.back-to-top.show{opacity:1;visibility:visible;transform:none}
.form-section-title{scroll-margin-top:110px}
.mini-help{line-height:1.55}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}


/* ===== css/final-login-responsive.css ===== */
/* Version finale 12/07/2026 — page de connexion pensée séparément pour desktop et mobile */
.gate-redesign{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(360px,520px);
  min-height:100svh;
  width:100%;
  overflow:hidden;
  background:#f8eee8;
}
.gate-redesign::before{display:none!important}
.gate-visual{
  min-width:0;
  min-height:100svh;
  background-image:linear-gradient(90deg,rgba(56,31,27,.04),rgba(255,250,246,.08)),url('../assets/img/gate-cover.jpg');
  background-size:cover;
  background-position:center center;
  background-repeat:no-repeat;
}
.gate-panel{
  display:grid;
  place-items:center;
  min-width:0;
  padding:clamp(28px,5vw,72px);
  background:linear-gradient(145deg,#fffaf7 0%,#f8e9e2 100%);
  border-left:1px solid rgba(108,62,53,.10);
}
.gate-redesign .gate-float{
  position:static!important;
  inset:auto!important;
  transform:none!important;
  width:min(100%,440px)!important;
  margin:0!important;
  padding:clamp(28px,4vw,44px)!important;
  animation:none!important;
}
.gate-redesign .card-glass{
  background:rgba(255,255,255,.88);
  border:1px solid rgba(201,164,76,.24);
  border-radius:30px;
  box-shadow:0 26px 60px rgba(74,42,37,.16);
  backdrop-filter:blur(10px);
}
.gate-kicker{
  display:inline-block;
  color:#9a6e2d;
  font-size:.76rem;
  font-weight:800;
  letter-spacing:.16em;
  text-transform:uppercase;
  margin-bottom:14px;
}
.gate-title{
  margin:0;
  color:#56332e;
  font-family:'Cormorant Garamond',serif;
  font-size:clamp(2.35rem,4vw,3.5rem);
  line-height:.98;
  text-wrap:balance;
}
.gate-copy{
  margin:18px auto 0;
  max-width:34ch;
  color:#75645f;
  line-height:1.65;
  font-size:1rem;
}
.gate-form{display:grid;gap:12px;margin-top:26px}
.gate-form .input{
  width:100%;
  min-height:56px;
  text-align:center;
  font-size:1rem;
  letter-spacing:.07em;
  text-transform:uppercase;
  border-radius:16px;
}
.gate-form .btn{width:100%;min-height:56px;border-radius:16px;font-size:1rem}
.gate-mobile-title{display:none}

@media (max-width:900px){
  .gate-redesign{
    display:block;
    min-height:100svh;
    overflow:visible;
    background:#fff9f5;
  }
  .gate-visual{
    position:relative;
    min-height:0;
    height:52svh;
    max-height:520px;
    background-size:cover;
    background-position:center 33%;
  }
  .gate-visual::after{
    content:'';
    position:absolute;
    inset:auto 0 0;
    height:35%;
    background:linear-gradient(transparent,#fff9f5);
    pointer-events:none;
  }
  .gate-mobile-title{
    display:grid;
    position:absolute;
    z-index:1;
    top:max(18px,env(safe-area-inset-top));
    left:18px;
    right:18px;
    color:#fff;
    text-align:left;
    text-shadow:0 2px 18px rgba(54,27,24,.48);
  }
  .gate-mobile-title strong{
    font-family:'Great Vibes',cursive;
    font-size:clamp(2.2rem,10vw,4rem);
    font-weight:400;
    line-height:1;
  }
  .gate-mobile-title span{
    margin-top:7px;
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.18em;
    text-transform:uppercase;
  }
  .gate-panel{
    position:relative;
    z-index:3;
    display:block;
    padding:0 14px max(24px,env(safe-area-inset-bottom));
    margin-top:-38px;
    background:transparent;
    border:0;
  }
  .gate-redesign .gate-float{
    width:100%!important;
    max-width:520px!important;
    margin:0 auto!important;
    padding:26px 20px!important;
  }
  .gate-title{font-size:clamp(2.25rem,11vw,3.35rem)}
  .gate-copy{font-size:.96rem;line-height:1.55}
  .gate-form{margin-top:22px}
  .gate-form .input,.gate-form .btn{min-height:54px}
}

@media (max-width:390px){
  .gate-visual{height:46svh;min-height:330px;background-position:center 32%}
  .gate-panel{margin-top:-28px;padding-inline:10px}
  .gate-redesign .gate-float{padding:22px 16px!important;border-radius:22px}
  .gate-kicker{font-size:.68rem}
  .gate-title{font-size:2.35rem}
  .gate-copy{font-size:.91rem}
  .code-help{font-size:.76rem}
}

@media (max-height:680px) and (max-width:900px){
  .gate-visual{height:43svh;min-height:280px}
  .gate-panel{margin-top:-24px}
  .gate-redesign .gate-float{padding-block:20px!important}
  .gate-copy{margin-top:12px}
  .gate-form{margin-top:16px}
}

/* Bilong Digital credit + galerie facile à maintenir */
.site-credit{
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid rgba(255,255,255,.14);
  font-size:.9rem;
  opacity:.82;
}
.site-credit a{color:#d9b45b;text-decoration:none;font-weight:700}
.site-credit a:hover,.site-credit a:focus-visible{text-decoration:underline}
.feature-gallery img{display:block;width:100%;height:100%;object-fit:cover}
@media (max-width:640px){
  .site-credit{font-size:.84rem;line-height:1.55}
}


/* ===== css/premium-line.css ===== */
:root{
  --brown:#5a352e; --brown-2:#765047; --powder:#d7a3aa; --nude:#ead0c1;
  --gold:#c5a15a; --ivory:#fffaf6; --ink:#3d2b28; --muted:#74615d;
  --radius:26px; --shadow:0 18px 60px rgba(90,53,46,.12);
}
*{box-sizing:border-box;min-width:0}
html{scroll-behavior:smooth;overflow-x:hidden}
body{overflow-x:hidden;background:var(--ivory);color:var(--ink)}
img,iframe,svg{max-width:100%}
button,a,input,select,textarea{font:inherit}
button,a{touch-action:manipulation}
.container,.narrow{width:min(1180px,calc(100% - 36px));margin-inline:auto}
.narrow{width:min(980px,calc(100% - 36px))}
.section{padding:clamp(64px,8vw,112px) 0;overflow:clip}
.title,.script,.brand strong,.gate-title{overflow-wrap:anywhere}

/* Login */
.gate-redesign{min-height:100svh;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(380px,.85fr);background:#f8ede7}
.gate-visual{min-height:100svh;background-image:linear-gradient(90deg,rgba(38,19,16,.08),rgba(38,19,16,0)),url('../assets/img/gate-cover.jpg');background-size:cover;background-position:center;position:relative}
.gate-visual:after{content:"";position:absolute;inset:auto 0 0;height:34%;background:linear-gradient(transparent,rgba(46,24,20,.54))}
.gate-mobile-title{position:absolute;z-index:2;left:clamp(24px,5vw,72px);bottom:clamp(28px,6vw,72px);color:white;display:grid;gap:5px;text-shadow:0 4px 20px rgba(0,0,0,.35)}
.gate-mobile-title strong{font-family:'Cormorant Garamond',serif;font-size:clamp(2.4rem,5vw,5rem);line-height:.95}
.gate-mobile-title span{font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.gate-panel{display:grid;place-items:center;padding:clamp(28px,6vw,76px);background:radial-gradient(circle at 15% 10%,rgba(215,163,170,.28),transparent 35%),linear-gradient(145deg,#fffaf6,#f5e4dc)}
.gate-float{width:min(100%,510px);padding:clamp(28px,5vw,54px);border:1px solid rgba(197,161,90,.35);border-radius:32px;background:rgba(255,250,246,.90);box-shadow:var(--shadow);backdrop-filter:blur(14px)}
.gate-kicker,.eyebrow,.mini-label{color:var(--brown);letter-spacing:.12em;text-transform:uppercase;font-weight:800;font-size:.76rem}
.gate-title{font-size:clamp(2.2rem,4vw,4.2rem);line-height:.98;margin:15px 0;font-family:'Cormorant Garamond',serif;color:var(--brown)}
.gate-copy{font-size:1.04rem;line-height:1.7;color:var(--muted)}
.gate-form{display:grid;gap:12px;margin-top:26px}
.input,.select,.textarea{width:100%;max-width:100%;border:1px solid rgba(90,53,46,.18);background:#fff;border-radius:16px;min-height:52px;padding:13px 15px;color:var(--ink)}
.input:focus,.select:focus,.textarea:focus{outline:3px solid rgba(215,163,170,.32);border-color:var(--powder)}
.btn{min-height:50px;border-radius:999px;padding:13px 22px;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-weight:800;white-space:normal;text-align:center}
.btn-primary{background:linear-gradient(135deg,var(--brown),#8d5f55);color:#fff;border:0;box-shadow:0 12px 30px rgba(90,53,46,.2)}
.btn-primary:hover{transform:translateY(-2px)}

/* Navigation */
.nav{background:rgba(255,250,246,.94);backdrop-filter:blur(16px);border-bottom:1px solid rgba(90,53,46,.1)}
.nav-inner{width:min(1220px,calc(100% - 28px));margin:auto}
.nav-links button{border-radius:999px}
.nav-links button[data-nav="rsvp"]{background:var(--brown);color:#fff;box-shadow:0 8px 22px rgba(90,53,46,.18)}

/* Hero */
.hero{min-height:auto;padding:clamp(56px,7vw,100px) 0;background:radial-gradient(circle at 10% 10%,rgba(215,163,170,.23),transparent 31%),linear-gradient(145deg,#fffaf6,#f5e4dc)}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.82fr);gap:clamp(28px,6vw,88px);align-items:center}
.hero-photo{min-height:clamp(440px,58vw,720px);border-radius:48% 48% 20px 20px;background-position:center top;box-shadow:var(--shadow);position:relative;overflow:hidden}
.hero-photo:after{content:"1";position:absolute;right:18px;bottom:-40px;font-family:'Cormorant Garamond',serif;font-size:clamp(10rem,20vw,19rem);color:rgba(255,255,255,.74);line-height:1;text-shadow:0 4px 30px rgba(90,53,46,.18)}
.hero .title{font-size:clamp(2.8rem,6vw,6.2rem);line-height:.9;color:var(--brown)}
.hero .script{font-size:clamp(3.2rem,7vw,7.2rem);color:var(--gold);line-height:1}
.hero-primary-action{margin-top:28px;display:flex;align-items:center;gap:15px;flex-wrap:wrap}
.btn-rsvp-main,.btn-confirm{position:relative;overflow:hidden;isolation:isolate;animation:linePulse 2.4s ease-in-out infinite}
.btn-rsvp-main:after,.btn-confirm:after{content:"";position:absolute;inset:0 auto 0 -65%;width:45%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);transform:skewX(-20deg);animation:lineShine 3.2s ease-in-out infinite;z-index:-1}
@keyframes linePulse{50%{transform:scale(1.035);box-shadow:0 0 0 8px rgba(215,163,170,.18),0 15px 34px rgba(90,53,46,.25)}}
@keyframes lineShine{55%,100%{left:125%}}
.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:28px}
.count-card{padding:15px 8px;border:1px solid rgba(90,53,46,.12);background:rgba(255,255,255,.63);border-radius:18px;text-align:center}
.count-card strong{display:block;font-size:clamp(1.45rem,3vw,2.3rem);color:var(--brown)}
.count-card span{font-size:.75rem;color:var(--muted)}

/* RSVP first */
.answer-first{background:#fff}
.answer-heading,.section-head{align-items:end;gap:28px}
.premium-rsvp .vip-header,.event-mini-grid{display:none!important}
.premium-form{border:0!important;box-shadow:var(--shadow)!important;border-radius:32px!important;padding:clamp(22px,5vw,48px)!important;background:linear-gradient(180deg,#fff,#fffaf7)!important}
.rsvp-status{padding:16px 0 22px;border-bottom:1px solid rgba(90,53,46,.12);margin-bottom:22px}
.step-title{display:flex;align-items:center;gap:12px;margin-top:32px;color:var(--brown)}
.step-n{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--nude);color:var(--brown);font-weight:900;flex:0 0 auto}
.choice-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.choice,.drink-chip{min-height:48px;border:1px solid rgba(90,53,46,.16);border-radius:14px;background:#fff;color:var(--ink);font-weight:700}
.choice.selected,.drink-chip.selected{background:var(--brown);color:#fff;border-color:var(--brown)}
.grid-2,.grid-3{gap:14px}
.companion{border:0!important;border-top:1px solid rgba(90,53,46,.13)!important;border-radius:0!important;padding:22px 0!important;background:transparent!important}
.btn-confirm{width:100%;margin-top:30px;font-size:1.05rem}

/* practical info */
.infos-section{background:#f8eee8}
.practical-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(380px,1.1fr);gap:clamp(28px,5vw,64px);align-items:stretch}
.practical-copy{display:grid;gap:0}
.practical-block{padding:22px 0;border-bottom:1px solid rgba(90,53,46,.14)}
.practical-block h3{font-family:'Cormorant Garamond',serif;font-size:clamp(1.65rem,3vw,2.4rem);color:var(--brown);margin:6px 0}
.dress-palette{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
.dress-palette span{display:flex;align-items:center;gap:10px;font-weight:700}
.dress-palette i{width:38px;height:38px;border-radius:12px;background:var(--swatch);border:2px solid rgba(255,255,255,.85);box-shadow:0 0 0 1px rgba(90,53,46,.12)}
.contact-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.contact-actions a,.text-action{min-height:44px;padding:11px 16px;border-radius:999px;border:1px solid rgba(90,53,46,.2);display:inline-flex;align-items:center;color:var(--brown);font-weight:800;background:#fff}
.map-panel{min-height:520px;border-radius:28px;overflow:hidden;box-shadow:var(--shadow)}
.map-panel iframe{width:100%;height:100%;min-height:520px;border:0}

/* gallery */
.gallery-section{background:#fff}
.feature-gallery{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:115px;gap:14px}
.shot{grid-column:span 4;grid-row:span 3;margin:0;border-radius:22px;overflow:hidden;position:relative;background:#eadfd8}
.shot-main{grid-column:span 8;grid-row:span 6}
.shot img{width:100%;height:100%;object-fit:cover;transition:transform .7s ease}
.shot:hover img{transform:scale(1.045)}
.shot figcaption{position:absolute;left:14px;right:14px;bottom:14px;padding:10px 12px;border-radius:14px;background:rgba(48,27,23,.6);backdrop-filter:blur(8px);color:white;font-weight:700;font-size:.88rem}

/* Program */
.program{background:linear-gradient(180deg,#f8eee8,#fffaf6)}
.program-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.program-part{border:1px solid rgba(90,53,46,.12);border-radius:28px;background:rgba(255,255,255,.78);padding:clamp(22px,4vw,36px);box-shadow:0 12px 45px rgba(90,53,46,.08)}
.program-part-head h3{font-family:'Cormorant Garamond',serif;font-size:2.2rem;color:var(--brown);margin:5px 0}
.program-flow{display:grid;gap:0;margin-top:22px}
.program-item{display:grid;grid-template-columns:56px minmax(0,1fr);gap:14px;padding:18px 0;border-top:1px solid rgba(90,53,46,.1)}
.program-icon{width:52px;height:52px;border-radius:18px;background:var(--nude);display:grid;place-items:center;animation:floatIcon 3.6s ease-in-out infinite}
.program-icon svg{width:31px;height:31px;fill:none;stroke:var(--brown);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@keyframes floatIcon{50%{transform:translateY(-5px) rotate(1deg)}}

/* Admin responsive foundation */
.admin-shell{display:grid;grid-template-columns:240px minmax(0,1fr);gap:28px;align-items:start}
.admin-side{position:sticky;top:92px}
.table-wrap{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}
table{width:100%;min-width:760px}

.back-to-top{display:grid!important;place-items:center;position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));width:50px;height:50px;border:0;border-radius:50%;background:var(--brown);color:#fff;box-shadow:0 12px 30px rgba(90,53,46,.28);z-index:80;opacity:0;pointer-events:none;transform:translateY(10px);transition:.25s}
.back-to-top.show{opacity:1;pointer-events:auto;transform:none}
.footer{background:var(--brown);color:#fff}
.footer a{color:#f1d39a}

@media(max-width:900px){
  .gate-redesign{grid-template-columns:1fr}.gate-visual{min-height:48svh}.gate-panel{padding:0 18px 32px}.gate-float{margin-top:-42px;position:relative;z-index:4}
  .hero-grid,.practical-layout,.program-split,.admin-shell{grid-template-columns:1fr}
  .hero-photo{order:-1;min-height:55svh;max-height:650px}
  .map-panel,.map-panel iframe{min-height:380px}
  .admin-side{position:static;display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;scrollbar-width:none}
  .admin-side h3{display:none}.admin-side button{flex:0 0 auto;white-space:nowrap}
}
@media(max-width:640px){
  .container,.narrow{width:min(100% - 24px,1180px)}
  .section{padding:58px 0}
  .gate-visual{min-height:43svh;background-position:center top}.gate-mobile-title{left:20px;bottom:24px}.gate-mobile-title strong{font-size:2.5rem}
  .gate-panel{padding-inline:12px}.gate-float{border-radius:24px;padding:26px 20px;margin-top:-26px}.gate-title{font-size:2.35rem}
  .hero{padding-top:26px}.hero-grid{gap:22px}.hero-photo{min-height:48svh;border-radius:26px}.hero .title{font-size:3.2rem}.hero .script{font-size:3.7rem}
  .hero-primary-action{display:grid}.hero-primary-action .btn{width:100%}
  .countdown{grid-template-columns:repeat(2,minmax(0,1fr))}
  .section-head,.answer-heading{display:grid;align-items:start;gap:10px}
  .premium-form{padding:20px 15px!important;border-radius:22px!important}
  .choice-row,.grid-2,.grid-3,.dress-palette{grid-template-columns:1fr}
  .drink-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .feature-gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:145px;gap:9px}.shot,.shot-main{grid-column:span 1;grid-row:span 2}.shot-main{grid-column:span 2;grid-row:span 3}
  .map-panel,.map-panel iframe{min-height:320px}
  .program-part{padding:20px 16px}.program-item{grid-template-columns:46px minmax(0,1fr);gap:11px}.program-icon{width:44px;height:44px}.program-icon svg{width:27px;height:27px}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .admin-actions,.filter-row{display:grid!important;grid-template-columns:1fr!important}.admin-actions .btn,.filter-row>*{width:100%!important}
  .modal-card{width:calc(100% - 20px)!important;max-height:calc(100svh - 24px)!important;overflow:auto!important}
  .nav-inner{width:calc(100% - 20px)}
}
@media(max-width:360px){
  .container,.narrow{width:calc(100% - 16px)}
  .gate-panel{padding-inline:8px}.gate-float{padding:23px 14px}.gate-title{font-size:2.05rem}
  .hero .title{font-size:2.75rem}.hero .script{font-size:3.15rem}
  .btn{padding-inline:14px}.drink-grid{grid-template-columns:1fr!important}
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}


/* ===== css/final-ui-fixes.css ===== */
/* Correctifs finaux d'affichage et d'interaction — 12/07/2026 */
:root{
  --line-brown:#5a352e;
  --line-brown-dark:#3f2521;
  --line-powder:#d7a3aa;
  --line-nude:#ead0c1;
  --line-gold:#c5a15a;
  --line-ivory:#fffaf6;
  --line-text:#3d2b28;
  --line-muted:#6f5c57;
}
html,body,#app{max-width:100%;overflow-x:clip}
body{line-height:1.55}
button,a{cursor:pointer}
button:disabled{cursor:not-allowed}
.section-head,.compact-head,.answer-heading{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(260px,.65fr);align-items:end!important;gap:clamp(16px,4vw,44px)!important}
.section-head .lead,.compact-head .lead,.answer-heading .lead{margin:0;max-width:48ch;color:var(--line-muted)}
.title{max-width:18ch;text-wrap:balance}
.lead{overflow-wrap:normal;word-break:normal}

/* Boutons et liens toujours réellement accessibles */
.btn,.choice,.drink-chip,.contact-actions a,.text-action,.nav-links button,.small-btn{
  position:relative;z-index:1;pointer-events:auto!important;
}
.btn:active,.choice:active,.contact-actions a:active,.text-action:active{transform:scale(.985)}
.contact-actions a,.text-action{text-decoration:none}
.contact-actions a:hover,.text-action:hover{background:var(--line-brown);border-color:var(--line-brown);color:#fff}

/* Informations : alignement propre, blocs lisibles */
.practical-layout{align-items:start!important}
.practical-copy{min-width:0}
.practical-block{display:block!important;padding:24px 0!important}
.practical-block:first-child{padding-top:0!important}
.practical-block p{margin:.45rem 0 0;max-width:58ch;color:var(--line-muted)}
.practical-block .text-action{margin-top:14px}
.dress-palette span{min-height:48px;padding:8px 10px;border-radius:14px;background:rgba(255,255,255,.55)}
.map-panel{position:sticky;top:96px}

/* Galerie cliquable et accessible */
.feature-gallery .shot{
  appearance:none;border:0;padding:0;text-align:left;color:inherit;cursor:zoom-in;
  font:inherit;box-shadow:none;
}
.shot:focus-visible{outline:4px solid rgba(197,161,90,.65);outline-offset:4px}
.shot-caption{position:absolute;left:14px;right:14px;bottom:14px;padding:10px 12px;border-radius:14px;background:rgba(48,27,23,.68);backdrop-filter:blur(8px);color:#fff;font-weight:700;font-size:.88rem;z-index:2}
.shot-zoom{position:absolute;right:14px;top:14px;padding:7px 10px;border-radius:999px;background:rgba(255,250,246,.9);color:var(--line-brown);font-size:.72rem;font-weight:800;z-index:2;opacity:0;transform:translateY(-4px);transition:.22s}
.shot:hover .shot-zoom,.shot:focus-visible .shot-zoom{opacity:1;transform:none}
.gallery-lightbox{position:relative;display:grid;place-items:center;gap:14px;max-width:min(100%,980px);padding:16px}
.gallery-lightbox img{display:block;max-width:100%;max-height:76svh;object-fit:contain;border-radius:18px;background:#f2e7e1}
.gallery-lightbox p{margin:0;text-align:center;color:var(--line-text);font-weight:700}
.lightbox-close,.lightbox-nav{position:absolute;z-index:5;border:0;display:grid;place-items:center;background:rgba(63,37,33,.88);color:#fff;box-shadow:0 8px 28px rgba(0,0,0,.24)}
.lightbox-close{right:12px;top:12px;width:44px;height:44px;border-radius:50%;font-size:1.8rem}
.lightbox-nav{top:50%;width:46px;height:58px;border-radius:16px;transform:translateY(-50%);font-size:2rem}
.lightbox-prev{left:12px}.lightbox-next{right:12px}

/* Programme : contraste garanti, aucun blanc sur blanc */
.program-split{align-items:stretch}
.program-part{overflow:hidden!important}
.program-part-kids{background:linear-gradient(145deg,#f7e9e3,#f4dde0)!important;color:var(--line-text)!important}
.program-part-adults{background:linear-gradient(145deg,#684138,#442821)!important;color:#fff!important;border-color:rgba(255,255,255,.16)!important}
.program-part-head,.program-row,.program-visual,.program-copy{position:relative;z-index:1;min-width:0}
.program-part-head h3{color:var(--line-brown)!important}
.program-part-kids .program-part-head p,.program-part-kids .program-desc{color:#67504b!important}
.program-part-adults .program-part-head h3,.program-part-adults .program-title{color:#fff!important}
.program-part-adults .program-part-head p,.program-part-adults .program-desc{color:rgba(255,255,255,.84)!important}
.program-part-adults .program-time{color:#f2cf83!important}
.program-part-adults .program-icon{background:rgba(255,255,255,.12)!important;border:1px solid rgba(255,255,255,.12)}
.program-part-adults .program-icon svg{stroke:#f2cf83!important}
.program-part-kids .program-icon{background:rgba(255,255,255,.72)!important}
.program-part .program-row{display:grid!important;grid-template-columns:86px minmax(0,1fr)!important;gap:16px!important;align-items:center!important;padding:18px 0!important;background:transparent!important}
.program-visual{display:grid;justify-items:center;gap:8px}
.program-time{font-size:.77rem!important;line-height:1.15!important;text-align:center;white-space:normal}
.program-title{font-size:1.03rem!important;line-height:1.3;margin-bottom:4px}
.program-desc{font-size:.94rem;line-height:1.55}

/* Formulaire : lisibilité et simplicité tactile */
.premium-form label{display:block;margin-bottom:7px;color:var(--line-text);font-weight:750}
.premium-form .field{min-width:0}
.input,.select,.textarea{font-size:16px!important}
.choice,.drink-chip{cursor:pointer}

/* Modal au-dessus de tout */
.modal{z-index:9999!important;padding:12px!important}
.modal-card{max-width:min(980px,calc(100vw - 24px))!important}

@media(max-width:900px){
  .section-head,.compact-head,.answer-heading{grid-template-columns:1fr!important;align-items:start!important}
  .section-head .lead,.compact-head .lead,.answer-heading .lead{max-width:none}
  .title{max-width:none}
  .map-panel{position:relative;top:auto}
  .program-split{grid-template-columns:1fr!important}
}
@media(max-width:640px){
  .section{padding:48px 0!important}
  .container,.narrow{width:calc(100% - 24px)!important;padding-inline:0!important}
  .hero-copy{text-align:left}
  .hero .title{font-size:clamp(2.7rem,14vw,3.6rem)!important;line-height:.95!important}
  .hero .script{font-size:clamp(3rem,15vw,4rem)!important}
  .program-part .program-row{grid-template-columns:64px minmax(0,1fr)!important;gap:12px!important}
  .program-part{padding:22px 16px!important}
  .program-title{font-size:1rem!important}
  .program-desc{font-size:.91rem}
  .feature-gallery{grid-template-columns:1fr!important;grid-auto-rows:260px!important}
  .feature-gallery .shot,.feature-gallery .shot-main{grid-column:auto!important;grid-row:auto!important;min-height:260px}
  .shot-zoom{opacity:1;transform:none}
  .contact-actions{display:grid;grid-template-columns:1fr}
  .contact-actions a,.text-action{width:100%;justify-content:center}
  .dress-palette{grid-template-columns:1fr 1fr!important}
  .lightbox-nav{width:40px;height:52px}.lightbox-prev{left:5px}.lightbox-next{right:5px}
}
@media(max-width:380px){
  .container,.narrow{width:calc(100% - 16px)!important}
  .dress-palette{grid-template-columns:1fr!important}
  .program-part .program-row{grid-template-columns:1fr!important;text-align:left}
  .program-visual{grid-template-columns:46px 1fr;justify-content:start;align-items:center}
  .program-time{text-align:left!important}
}


/* ===== css/studio-v3.css ===== */
:root{--font-display:'Cormorant Garamond',serif;--font-body:'Nunito',sans-serif}
*{font-family:var(--font-body)}
.title,.serif,h1,h2,h3,.brand strong,.program-title,.practical-block h3,.footer-title{font-family:var(--font-display)!important}
.script{font-family:var(--font-display)!important;font-style:italic;font-weight:600;letter-spacing:-.03em}
.eyebrow,.mini-label,.brand small,.count-card span,.nav-links button{font-family:var(--font-body)!important}
.hero{padding:clamp(44px,6vw,82px) 0}
.hero-grid{grid-template-columns:minmax(0,1fr) minmax(340px,.92fr);align-items:center;gap:clamp(30px,5vw,72px)}
.hero-copy{display:flex;flex-direction:column;justify-content:center;min-height:clamp(520px,57vw,690px)}
.hero-photo{min-height:clamp(520px,57vw,690px);background-position:center center;border-radius:42% 42% 28px 28px}
.hero .title{font-size:clamp(3.5rem,6.5vw,6.4rem);line-height:.88;max-width:760px}
.hero .lead{max-width:620px;font-size:clamp(1rem,1.3vw,1.2rem);margin-top:20px}
.countdown-priority{margin:28px 0 10px}.count-line{margin:0 0 10px;font-family:var(--font-display);font-style:italic;font-size:1.25rem;color:var(--gold)}
.hero-primary-action{margin-top:22px}.welcome-note{margin-top:22px}
.memory-carousel{position:relative;max-width:980px;margin:0 auto;padding:0 64px 48px}.carousel-track{position:relative;aspect-ratio:16/9;border-radius:32px;overflow:hidden;background:#f4ebe6;box-shadow:var(--shadow)}
.carousel-slide{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;opacity:0;pointer-events:none;transition:opacity .45s ease,transform .45s ease;transform:scale(1.015);background:transparent}.carousel-slide.is-active{opacity:1;pointer-events:auto;transform:scale(1)}
.carousel-slide img{width:100%;height:100%;object-fit:cover;display:block}.carousel-caption{position:absolute;left:20px;bottom:20px;max-width:calc(100% - 40px);padding:10px 16px;border-radius:999px;background:rgba(49,28,25,.72);color:#fff;backdrop-filter:blur(10px);font-size:.92rem}
.carousel-arrow{position:absolute;top:42%;z-index:3;width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--chocolate);font-size:2rem;box-shadow:var(--shadow-sm)}.carousel-prev{left:0}.carousel-next{right:0}
.carousel-dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:8px}.carousel-dot{width:9px;height:9px;border:0;border-radius:50%;background:#d8c9c3;padding:0}.carousel-dot.is-active{width:28px;border-radius:999px;background:var(--gold)}
.room-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px 0;color:var(--muted)}.room-plan{position:relative;min-height:620px;border-radius:32px;border:2px solid rgba(107,63,53,.18);background:linear-gradient(90deg,rgba(107,63,53,.035) 1px,transparent 1px),linear-gradient(rgba(107,63,53,.035) 1px,transparent 1px),#fffaf7;background-size:32px 32px;overflow:hidden;box-shadow:inset 0 0 0 10px rgba(201,164,76,.06)}
.room-label{position:absolute;z-index:1;font-size:.7rem;letter-spacing:.14em;font-weight:800;color:rgba(107,63,53,.5)}.room-stage{top:16px;left:50%;transform:translateX(-50%);padding:8px 22px;border-radius:999px;background:rgba(201,164,76,.14)}.room-entry{bottom:16px;left:18px}
.room-table{position:absolute;transform:translate(-50%,-50%);width:126px;aspect-ratio:1;border-radius:50%;border:2px solid #d9a0a7;background:linear-gradient(145deg,#fff,#f8ece8);box-shadow:0 12px 30px rgba(92,53,47,.16);display:grid;place-content:center;text-align:center;gap:4px;cursor:grab;touch-action:none;color:var(--chocolate);z-index:2}.room-table:active{cursor:grabbing;box-shadow:0 16px 36px rgba(92,53,47,.28);transform:translate(-50%,-50%) scale(1.03)}.room-table.full{border-color:var(--gold);background:linear-gradient(145deg,#fff9e8,#f2ddaf)}.room-table b{font-family:var(--font-display)!important;font-size:1.05rem}.room-table span{font-size:.72rem;color:var(--muted)}
.admin-shell .title{font-size:clamp(2.8rem,5vw,5rem)}.admin-side h3{font-family:var(--font-display)!important}
@media(max-width:960px){.hero-grid{grid-template-columns:1fr}.hero-copy{min-height:auto;order:1}.hero-photo{order:0;min-height:clamp(380px,68vw,600px);border-radius:30px;background-position:center center}.hero .title{font-size:clamp(3.2rem,10vw,5.4rem)}.memory-carousel{padding-inline:54px}.room-plan{min-height:560px}}
@media(max-width:620px){.hero{padding-top:20px}.hero-photo{min-height:55svh}.hero-copy{padding-top:8px}.hero .title{font-size:clamp(2.75rem,13vw,4.2rem)}.countdown-priority{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.count-card{padding:14px 3px}.count-card strong{font-size:clamp(1.35rem,7vw,2rem)}.count-card span{font-size:.5rem}.hero-primary-action{display:grid}.hero-primary-action span{text-align:center}.memory-carousel{padding:0 0 40px}.carousel-track{aspect-ratio:4/5;border-radius:24px}.carousel-arrow{top:auto;bottom:0;width:40px;height:40px}.carousel-prev{left:18px}.carousel-next{right:18px}.carousel-dots{bottom:14px}.carousel-caption{left:12px;bottom:12px;max-width:calc(100% - 24px);font-size:.8rem}.room-toolbar{align-items:flex-start;flex-direction:column}.room-toolbar .small-btn{width:100%}.room-plan{min-height:520px;border-radius:22px}.room-table{width:94px}.room-table b{font-size:.88rem}.room-table span{font-size:.62rem}}
@media(prefers-reduced-motion:reduce){.carousel-slide{transition:none}.room-table{transition:none}}


/* ===== css/responsive-tv-final.css ===== */
/* Responsive final : 320px -> écrans TV 4K/8K */
html{overflow-x:hidden;text-size-adjust:100%;-webkit-text-size-adjust:100%}
body{overflow-x:hidden;min-width:0}
img,svg,video,canvas,iframe{max-width:100%}
*{min-width:0}
.container,.narrow{width:min(100% - 32px,1280px);margin-inline:auto}
.narrow{max-width:1120px}
.title,h1,h2,h3,p,a,button,label,span,td,th{overflow-wrap:anywhere}

/* Connexion : aucune superposition ni largeur fixe */
.gate-redesign{min-height:100svh;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(420px,.75fr);background:#f7ebe5;overflow:hidden}
.gate-visual{min-height:100svh;background-size:cover;background-position:center center}
.gate-panel{min-width:0;display:grid;place-items:center;padding:clamp(28px,4vw,76px)}
.gate-redesign .gate-float{position:relative!important;inset:auto!important;transform:none!important;width:min(100%,540px)!important;margin:0 auto!important}
.gate-title{font-size:clamp(2.55rem,3.8vw,4.6rem);line-height:.95}
.gate-copy{font-size:clamp(1rem,1.1vw,1.22rem);line-height:1.65}
.gate-form{display:grid;gap:12px}
.gate-form .input,.gate-form .btn{width:100%;min-height:56px}

/* Contenu général et hero */
.hero-grid{width:100%;align-items:center}
.hero-copy,.hero-photo{min-width:0}
.hero-photo{background-position:center center}
.hero-primary-action{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.countdown{width:100%}
.count-card{min-width:0}

/* Admin / organisation */
.admin-shell,.organizer-shell,.practical-layout,.program-split{min-width:0}
.admin-main,.admin-content,.organizer-main,.organizer-content{min-width:0;max-width:100%}
.table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.guest-toolbar{max-width:100%}
.filter-row{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.room-plan{max-width:100%;touch-action:none}

@media (max-width: 899px){
  .container,.narrow{width:min(100% - 24px,760px)}
  .gate-redesign{display:flex;flex-direction:column;min-height:100svh}
  .gate-visual{height:46svh;min-height:300px;max-height:520px;flex:none;background-position:center 25%}
  .gate-panel{display:block;padding:0 12px 28px;margin-top:-28px;position:relative;z-index:3}
  .gate-redesign .gate-float{width:min(100%,520px)!important;padding:clamp(22px,5vw,34px)!important;border-radius:26px!important}
  .gate-mobile-title{display:none!important}
  .gate-title{font-size:clamp(2.15rem,9vw,3.5rem)}
  .hero-grid{grid-template-columns:1fr!important}
  .hero-photo{order:-1;min-height:clamp(330px,68vw,560px)!important;border-radius:26px!important}
  .hero-copy{min-height:auto!important;padding-top:16px}
  .hero .title{font-size:clamp(2.65rem,11vw,4.6rem)!important;line-height:.94!important}
  .hero-primary-action{display:grid;gap:10px}
  .hero-primary-action .btn{width:100%}
  .hero-primary-action span{text-align:center}
  .section-head,.compact-head,.program-heading,.answer-heading{display:block!important}
  .section-head .lead,.compact-head .lead,.program-heading .lead,.answer-heading .lead{margin-top:12px;max-width:100%!important}
  .practical-layout,.program-split{grid-template-columns:1fr!important}
  .map-panel iframe{min-height:360px}
  .admin-shell{grid-template-columns:1fr!important}
  .admin-side{position:static!important;max-width:100%}
  .admin-tabs,.admin-side nav{display:flex!important;overflow-x:auto;gap:8px;padding-bottom:8px;scroll-snap-type:x proximity}
  .admin-tabs button,.admin-side nav button{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .guest-toolbar{display:grid!important;grid-template-columns:1fr!important}
  .guest-toolbar .sort-btn{width:100%}
  .room-plan{min-height:560px!important}
}

@media (max-width: 520px){
  .container,.narrow{width:min(100% - 18px,480px)}
  .gate-visual{height:42svh;min-height:270px;background-position:center 22%}
  .gate-panel{margin-top:-20px;padding-inline:8px}
  .gate-redesign .gate-float{padding:20px 14px!important;border-radius:22px!important}
  .gate-title{font-size:clamp(2rem,10.5vw,2.8rem)}
  .gate-copy{font-size:.98rem;line-height:1.55}
  .gate-form .input,.gate-form .btn{min-height:52px;font-size:1rem}
  .hero{padding-top:18px!important}
  .hero-photo{min-height:54svh!important;background-position:center center!important}
  .countdown-priority{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .count-card{padding:12px 6px!important}
  .count-card strong{font-size:1.7rem!important}
  .count-card span{font-size:.62rem!important}
  .title{font-size:clamp(2.25rem,11vw,3.3rem)!important;line-height:1!important}
  .lead{font-size:1rem!important;line-height:1.6}
  .btn,.input,.small-btn{min-height:48px}
  .contact-actions{display:grid!important;grid-template-columns:1fr!important}
  .contact-actions a{width:100%;text-align:center}
  .dress-palette{grid-template-columns:1fr 1fr!important}
  .memory-carousel{padding-inline:0!important}
  .carousel-track{aspect-ratio:4/5!important}
  .program-row{grid-template-columns:78px minmax(0,1fr)!important;gap:12px!important}
  .program-time{font-size:.72rem!important}
  .stat-grid{grid-template-columns:1fr!important}
  .room-plan{min-height:500px!important}
  .room-table{width:88px!important}
}

/* Full HD grands écrans */
@media (min-width: 1600px){
  .container{width:min(88vw,1540px)}
  .narrow{width:min(82vw,1320px);max-width:none}
  .hero-grid{gap:clamp(50px,5vw,100px)}
  .hero-copy,.hero-photo{min-height:clamp(640px,48vw,820px)}
  .hero .title{font-size:clamp(5rem,5.6vw,7rem)}
}

/* TV 4K / très grands écrans */
@media (min-width: 2400px){
  html{font-size:19px}
  .container{width:min(84vw,2050px)}
  .narrow{width:min(78vw,1760px);max-width:none}
  .navbar-inner{width:min(84vw,2050px);margin-inline:auto}
  .gate-redesign{grid-template-columns:minmax(0,1.35fr) minmax(620px,.65fr)}
  .gate-panel{padding:clamp(70px,5vw,140px)}
  .gate-redesign .gate-float{width:min(100%,720px)!important;padding:64px!important;border-radius:42px!important}
  .gate-title{font-size:5.4rem}
  .gate-copy{font-size:1.35rem}
  .gate-form .input,.gate-form .btn{min-height:72px;font-size:1.2rem}
  .hero-copy,.hero-photo{min-height:900px}
  .hero .title{font-size:8rem}
  .section{padding-block:110px}
  .title{font-size:clamp(4.4rem,4.5vw,7rem)}
  .lead{font-size:1.35rem}
  .room-plan{min-height:900px}
  .room-table{width:160px}
}

/* TV 8K / affichage salon géant */
@media (min-width: 3800px){
  html{font-size:23px}
  .container{width:min(82vw,2920px)}
  .narrow{width:min(76vw,2500px)}
  .navbar-inner{width:min(82vw,2920px)}
  .gate-redesign{grid-template-columns:minmax(0,1.4fr) minmax(900px,.6fr)}
  .gate-redesign .gate-float{width:min(100%,940px)!important;padding:86px!important}
  .gate-title{font-size:6.8rem}
  .gate-copy{font-size:1.55rem}
  .hero-copy,.hero-photo{min-height:1250px}
  .hero .title{font-size:10rem}
  .room-plan{min-height:1200px}
  .room-table{width:210px}
}


/* ===== css/master-final.css ===== */
/* Version finale — cohérence typographique, alignements, responsive et plan de salle */
:root{
  --font-display:"Cormorant Garamond",Georgia,serif;
  --font-body:"Nunito",Arial,sans-serif;
  --brown:#5f382f;
  --brown-dark:#34201d;
  --pink:#d8a1a8;
  --nude:#e7c4b4;
  --gold:#c9a44c;
  --paper:#fffaf7;
  --ink:#4c3530;
  --muted:#786863;
}
html{font-size:16px;scroll-behavior:smooth;overflow-x:hidden}
body{font-family:var(--font-body);color:var(--ink);overflow-x:hidden;background:#fffaf7}
*,*::before,*::after{box-sizing:border-box}
img,iframe,svg{max-width:100%}
button,input,select,textarea{font:inherit}
.container{width:min(1180px,calc(100% - 40px));margin-inline:auto}
.narrow{width:min(920px,calc(100% - 40px));margin-inline:auto}
.title,.serif,h1,h2,h3,.brand strong,.gate-title,.program-title,.footer-title{font-family:var(--font-display)!important;overflow-wrap:anywhere}
.title{font-size:clamp(2.25rem,5vw,4.6rem)!important;line-height:.98!important;letter-spacing:-.035em!important}
h1.title{font-size:clamp(3rem,6vw,5.7rem)!important}
h2.title{font-size:clamp(2.3rem,4.6vw,4.1rem)!important}
h3{font-size:clamp(1.35rem,2vw,1.85rem);line-height:1.15}
.lead{font-size:clamp(1rem,1.25vw,1.17rem)!important;line-height:1.68;max-width:64ch}
.eyebrow,.mini-label{font-size:.78rem!important;letter-spacing:.13em;line-height:1.2}
.btn,.small-btn,.filter-chip,.choice{min-height:46px;display:inline-flex;align-items:center;justify-content:center;line-height:1.25;white-space:normal}
.section{padding-block:clamp(62px,8vw,112px);position:relative}
.section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,430px);gap:clamp(22px,5vw,70px);align-items:end;margin-bottom:clamp(28px,5vw,54px)}
.section-head>*{min-width:0}

/* Accueil avec photo en fond et voile lisible */
.hero{position:relative;isolation:isolate;background-image:linear-gradient(90deg,rgba(255,250,247,.97) 0%,rgba(255,250,247,.92) 44%,rgba(255,250,247,.28) 70%,rgba(255,250,247,.12) 100%),url('../assets/img/line-hero.jpg');background-size:cover;background-position:center 35%;min-height:min(900px,calc(100svh - 80px));display:flex;align-items:center}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 70%,#fffaf7 100%)}
.hero-grid{display:block!important;padding-block:clamp(58px,8vw,110px)}
.hero-copy{width:min(680px,58%);min-height:auto!important;padding:clamp(22px,3vw,42px);border-radius:30px;background:rgba(255,250,247,.78);backdrop-filter:blur(12px);box-shadow:0 20px 60px rgba(78,43,37,.11)}
.hero-photo{display:none!important}
.hero .title{max-width:640px!important;margin:10px 0 26px!important}
.countdown-priority{display:grid;grid-template-columns:repeat(4,minmax(82px,1fr));gap:10px;margin:0 0 12px!important}
.count-card{padding:18px 8px!important;border-radius:18px!important;background:rgba(255,255,255,.88)!important;border:1px solid rgba(95,56,47,.12)!important}
.count-card strong{font-size:clamp(1.8rem,3vw,2.55rem)!important;line-height:1}
.count-card span{font-size:.66rem!important;letter-spacing:.1em}
.count-line{font-size:1.05rem!important;margin:0 0 22px!important}
.hero-primary-action{margin-top:28px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.welcome-note{margin-top:30px;display:flex;justify-content:space-between;gap:16px;align-items:center;border-top:1px solid rgba(95,56,47,.15);padding-top:18px}

/* Informations et carte */
.practical-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(420px,1.1fr);gap:clamp(28px,5vw,70px);align-items:start}
.practical-copy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 32px}
.practical-block{padding:24px 0;border-top:1px solid rgba(95,56,47,.17);min-width:0}
.practical-block h3{font-size:clamp(1.65rem,2.7vw,2.55rem);margin:.55rem 0 .7rem}
.practical-block p,.practical-block a{font-size:1rem;line-height:1.6;overflow-wrap:anywhere}
.map-panel{position:sticky;top:100px;border-radius:30px;overflow:hidden;box-shadow:0 22px 56px rgba(70,39,34,.14);min-height:540px}
.map-panel iframe{display:block;width:100%;height:540px;border:0}
.dress-palette{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dress-palette span{display:flex;align-items:center;gap:10px;min-width:0;padding:10px;border-radius:14px;background:rgba(255,255,255,.74)}
.contact-actions{display:flex;flex-wrap:wrap;gap:10px}
.contact-actions a,.text-action{min-height:44px;display:inline-flex;align-items:center;padding:10px 15px;border-radius:999px;border:1px solid rgba(95,56,47,.16);background:#fff;text-decoration:none;color:var(--brown);font-weight:800}

/* Formulaire simple et lisible */
.premium-form{padding:clamp(20px,4vw,44px)!important}
.step-title{font-size:clamp(1.35rem,2.4vw,2rem)!important;display:flex;align-items:center;gap:12px;line-height:1.2}
.grid-2,.grid-3{gap:16px!important}
.field label{font-size:.9rem;line-height:1.35}
.input,.select,.textarea{font-size:1rem!important;min-height:50px;width:100%;max-width:100%}
.companion{padding:18px!important}

/* Galerie carrousel */
.memory-carousel{max-width:900px;margin-inline:auto}
.carousel-track{aspect-ratio:16/9!important;min-height:420px}
.carousel-slide img{object-position:center}

/* Programme contraste garanti */
.program-section,.program-part,.program-card{color:var(--ink)}
.program-part-dark{background:var(--brown-dark)!important;color:#fff!important}
.program-part-dark *{color:#fff!important}
.program-card{background:rgba(255,255,255,.9)!important}
.program-part-dark .program-card{background:rgba(255,255,255,.11)!important;border-color:rgba(255,255,255,.22)!important}
.program-card p{font-size:1rem!important;line-height:1.6!important}

/* Admin / organisateur */
.admin-shell{display:grid;grid-template-columns:250px minmax(0,1fr)!important;gap:36px!important;align-items:start}
.admin-shell>div,.admin-shell>*{min-width:0}
.admin-side{position:sticky;top:96px;width:100%;padding:24px!important;border-radius:28px!important}
.admin-side h3{font-size:clamp(1.8rem,2.4vw,2.5rem)!important;line-height:1!important;overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important}
.admin-side button{width:100%;text-align:left;min-height:48px}
.admin-shell .section-head{grid-template-columns:minmax(0,1fr) minmax(250px,390px);margin-bottom:28px}
.admin-shell .title{font-size:clamp(2.55rem,5vw,4.7rem)!important;line-height:.92!important;max-width:700px}
.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:14px}
.stat{min-width:0;padding:22px!important}
.stat strong{font-size:clamp(2rem,3.4vw,3.2rem)!important}
.admin-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}
.admin-actions .btn,.admin-actions label{flex:0 1 auto}
.guest-toolbar{display:grid!important;grid-template-columns:minmax(220px,1fr) auto auto;gap:12px;align-items:center}
.filter-row{display:flex;flex-wrap:wrap;gap:8px}
.table-wrap{width:100%;max-width:100%;overflow:auto;border-radius:24px}
.table-wrap table{width:100%;min-width:760px;table-layout:auto}
.table-wrap th,.table-wrap td{padding:15px 14px!important;vertical-align:middle;overflow-wrap:anywhere}
.table-wrap th{font-size:.76rem!important;letter-spacing:.08em}
.table-wrap td{font-size:.92rem!important;line-height:1.4}
.row-actions{min-width:210px}
.pager{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:18px}
.charts-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.chart-card{min-width:0}
.bar-row{grid-template-columns:minmax(110px,180px) minmax(100px,1fr) 70px!important}

/* Plan de salle fonctionnel et professionnel */
.seat-toggle{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 18px}
.seat-toggle button{min-height:44px;padding:10px 18px}
.room-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 0}
.room-plan{position:relative;width:100%;height:clamp(560px,62vw,820px);min-height:560px;border:2px solid rgba(95,56,47,.16);border-radius:32px;overflow:hidden;background-color:#fffaf7;background-image:linear-gradient(rgba(95,56,47,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(95,56,47,.055) 1px,transparent 1px);background-size:40px 40px;box-shadow:inset 0 0 0 12px rgba(231,196,180,.16)}
.room-plan::before{content:"";position:absolute;inset:74px 20% 18%;border:1px dashed rgba(201,164,76,.35);border-radius:28px;pointer-events:none}
.room-dance{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:28%;aspect-ratio:1;border-radius:24px;border:2px dashed rgba(201,164,76,.45);display:grid;place-items:center;color:rgba(95,56,47,.48);font-size:.72rem;font-weight:900;letter-spacing:.12em;pointer-events:none}
.room-stage{top:18px!important;font-size:.72rem!important}
.room-entry{bottom:18px!important;left:22px!important}
.room-table{width:clamp(96px,10vw,138px)!important;min-width:96px;user-select:none;-webkit-user-select:none;touch-action:none;transition:box-shadow .15s ease,transform .15s ease}
.room-table.is-dragging{z-index:20!important;box-shadow:0 20px 50px rgba(74,40,34,.32)!important}
.room-table b{font-size:clamp(.88rem,1.2vw,1.08rem)!important;line-height:1.05}
.room-table span{font-size:.68rem!important}
.seat-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.seat-card{min-width:0}
.seat-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.seat-head b{font-size:1.15rem}
.seat-assign{margin-top:14px}
.modal-card{max-height:min(88svh,760px);overflow:auto}
.modal-title{font-size:2rem!important}
.modal-grid{margin-top:16px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:18px}
.import-label{cursor:pointer}

/* Fonds doux sur sections internes avec contraste */
.infos-section{background:linear-gradient(rgba(255,250,247,.93),rgba(255,250,247,.96)),url('../assets/img/section-soft.jpg') center/cover fixed}
.gallery-section{background:linear-gradient(135deg,#fffaf7,#f8e8e3)}
.answer-first{background:linear-gradient(180deg,#fffaf7,#f8ece8)}

/* Très grands écrans : garder une largeur confortable sans grossissement excessif */
@media(min-width:1800px){
  html{font-size:17px}
  .container{width:min(1420px,calc(100% - 96px))}
  .narrow{width:min(1040px,calc(100% - 96px))}
  .hero-copy{width:min(760px,52%)}
  .hero{min-height:900px}
  .map-panel,.map-panel iframe{height:620px;min-height:620px}
  .room-plan{height:820px}
}
@media(min-width:3000px){
  html{font-size:19px}
  .container{width:min(1700px,calc(100% - 160px))}
  .hero-copy{width:820px}
  .title{max-width:900px}
}

/* Tablette */
@media(max-width:1080px){
  .container,.narrow{width:min(100% - 32px,960px)}
  .hero{background-position:65% center}
  .hero-copy{width:min(680px,70%)}
  .practical-layout{grid-template-columns:1fr}
  .map-panel{position:relative;top:auto;min-height:430px}
  .map-panel iframe{height:430px}
  .admin-shell{grid-template-columns:1fr!important;gap:18px!important}
  .admin-side{position:sticky;top:72px;z-index:12;display:flex;overflow-x:auto;gap:8px;padding:10px!important;border-radius:18px!important}
  .admin-side h3{display:none}
  .admin-side button{width:auto;flex:0 0 auto;white-space:nowrap;text-align:center;padding-inline:16px}
  .admin-shell .section-head{grid-template-columns:1fr}
  .guest-toolbar{grid-template-columns:1fr}
  .filter-row{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
  .charts-grid{grid-template-columns:1fr!important}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .seat-list{grid-template-columns:1fr}
}

/* Mobile */
@media(max-width:720px){
  html{font-size:15.5px}
  .container,.narrow{width:calc(100% - 24px)}
  .section{padding-block:54px}
  .section-head{grid-template-columns:1fr;gap:14px;margin-bottom:28px}
  .hero{min-height:auto;background-position:62% center;background-image:linear-gradient(180deg,rgba(255,250,247,.5),rgba(255,250,247,.95) 44%,#fffaf7 100%),url('../assets/img/line-hero.jpg');align-items:flex-end;padding-top:42svh}
  .hero-grid{padding:0 0 26px}
  .hero-copy{width:100%;padding:22px 16px;border-radius:26px;background:rgba(255,250,247,.93)}
  .hero .title{font-size:clamp(2.7rem,13vw,4.25rem)!important;margin-bottom:20px!important}
  .countdown-priority{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .count-card{padding:13px 3px!important;border-radius:14px!important}
  .count-card strong{font-size:clamp(1.45rem,7vw,2rem)!important}
  .count-card span{font-size:.5rem!important}
  .hero-primary-action{display:grid;gap:10px}
  .hero-primary-action .btn{width:100%}
  .hero-primary-action span{text-align:center}
  .welcome-note{display:grid;text-align:center}
  .practical-copy{grid-template-columns:1fr}
  .map-panel,.map-panel iframe{height:350px;min-height:350px;border-radius:22px}
  .dress-palette{grid-template-columns:1fr 1fr}
  .grid-2,.grid-3{grid-template-columns:1fr!important}
  .choice-row{grid-template-columns:1fr!important}
  .premium-form{padding:18px!important}
  .memory-carousel{padding-inline:0!important}
  .carousel-track{aspect-ratio:4/5!important;min-height:0}
  .carousel-arrow{width:44px;height:44px;top:50%}
  .carousel-prev{left:8px}.carousel-next{right:8px}
  .admin-shell .title{font-size:clamp(2.4rem,13vw,3.7rem)!important}
  .stat-grid{gap:8px!important}
  .stat{padding:16px 12px!important}
  .admin-actions{display:grid!important;grid-template-columns:1fr!important}
  .admin-actions .btn,.admin-actions label{width:100%}
  .table-wrap{overflow:visible!important;background:transparent!important;border:0!important}
  .table-wrap table{min-width:0!important;width:100%!important}
  .table-wrap thead{display:none}
  .table-wrap tbody{display:grid;gap:12px}
  .table-wrap tr{display:block;padding:14px;border:1px solid rgba(95,56,47,.13);border-radius:18px;background:#fff;box-shadow:0 8px 24px rgba(80,45,39,.06)}
  .table-wrap td{display:flex!important;justify-content:space-between;gap:14px;padding:8px 0!important;border:0!important;text-align:right;min-width:0}
  .table-wrap td::before{content:attr(data-label);font-weight:800;color:var(--brown);text-align:left;flex:0 0 40%;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}
  .table-wrap td[data-label=""]::before{display:none}
  .table-wrap td[data-label=""]{justify-content:flex-start;flex-wrap:wrap}
  .row-actions{min-width:0!important}
  .bar-row{grid-template-columns:1fr 56px!important;gap:6px 10px!important}
  .bar-row span{grid-column:1/-1}
  .bar-track{grid-column:1}
  .room-plan{height:520px;min-height:520px;border-radius:22px;background-size:28px 28px}
  .room-plan::before{inset:64px 10% 18%}
  .room-dance{width:42%}
  .room-table{width:88px!important;min-width:88px}
  .room-table b{font-size:.82rem!important}
  .room-table span{font-size:.58rem!important}
  .room-toolbar .small-btn{width:100%}
  .modal-card{width:calc(100% - 20px)!important;padding:18px!important}
}

@media(max-width:380px){
  .container,.narrow{width:calc(100% - 18px)}
  .hero-copy{padding:18px 12px}
  .count-card strong{font-size:1.35rem!important}
  .dress-palette{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:1fr 1fr!important}
}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.infos-section{background-attachment:scroll}}


/* ===== css/final-polish.css ===== */
/* =====================================================================
   FINAL POLISH — Line Nasya / Bilong Digital
   Correctifs de lisibilité, alignement, contacts et plan de salle
   ===================================================================== */

:root{
  --content-max:1280px;
  --page-pad:clamp(18px,3vw,42px);
  --radius:24px;
}

html{scroll-behavior:smooth;overflow-x:hidden}
body{overflow-x:hidden}
*,*::before,*::after{box-sizing:border-box}

/* Ne jamais couper les mots lettre par lettre */
h1,h2,h3,h4,h5,h6,.title,.brand strong,.admin-side h3,.practical-block h3,
button,a,label,th,td,p,span,strong,small{
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:auto;
}

.container{width:min(100% - (var(--page-pad) * 2),var(--content-max));margin-inline:auto}
.narrow{width:min(100% - (var(--page-pad) * 2),980px);margin-inline:auto}
.section{padding-block:clamp(64px,8vw,112px)}

/* Navigation toujours visible */
.nav{position:sticky!important;top:0!important;z-index:10000!important;background:rgba(255,250,247,.96)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid rgba(107,63,53,.1)}
.nav-inner{width:min(100% - 32px,var(--content-max));margin:auto;min-height:78px}
.nav-links button{white-space:nowrap}

/* Typographie cohérente et maîtrisée */
.title{font-size:clamp(2.35rem,4.5vw,4.8rem)!important;line-height:.98!important;letter-spacing:-.035em}
.section-head .lead,.compact-head .lead,.answer-heading .lead{max-width:520px;line-height:1.65}
.response-page-head{margin-bottom:28px!important;align-items:end!important}
.response-page-head .title{margin-top:10px!important}

/* Résumé invitation : une seule information, sans répétition */
.invite-summary{display:grid;grid-template-columns:1.5fr 1fr .7fr;gap:12px;margin-bottom:18px}
.invite-summary>div{padding:18px 20px;border:1px solid rgba(107,63,53,.13);border-radius:18px;background:rgba(255,255,255,.78)}
.invite-summary .mini-label{display:block;margin-bottom:4px}
.invite-summary strong{display:block;color:var(--chocolate);font-size:1rem;line-height:1.35}
.premium-form{padding:clamp(22px,4vw,42px)!important}
.companion-zone{margin-top:20px}
.companion-zone>#addCompanion{width:auto;margin-top:12px}

/* Informations pratiques */
.practical-copy{align-items:start}
.practical-block{min-width:0}
.practical-block h3{font-size:clamp(2rem,3.2vw,3.15rem)!important;line-height:1.04!important;margin:.55rem 0 1rem}
.dress-palette{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
.dress-item{display:flex!important;align-items:center!important;gap:11px!important;min-width:0;padding:10px 12px;border:1px solid rgba(107,63,53,.09);border-radius:16px;background:rgba(255,255,255,.72)}
.dress-item i{flex:0 0 38px;width:38px!important;height:38px!important;border-radius:12px!important}
.dress-item b{min-width:0;font-size:.98rem;line-height:1.15;white-space:normal}

.contact-actions{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px!important}
.contact-actions a{display:flex!important;align-items:center!important;justify-content:center;gap:9px;min-height:50px!important;padding:11px 14px!important;text-align:center}
.contact-actions svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:0 0 20px}
.contact-actions span{white-space:nowrap}

/* Administration */
.admin-page{padding-top:clamp(46px,6vw,84px)}
.admin-shell{grid-template-columns:250px minmax(0,1fr)!important;gap:34px!important}
.admin-main{min-width:0}
.admin-side{position:sticky;top:102px;min-width:0}
.admin-side h3{font-size:2.25rem!important;line-height:1!important;margin:0 0 20px!important;white-space:nowrap}
.admin-page-head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:32px;align-items:end;margin-bottom:26px}
.admin-page-head h1{font-family:var(--font-display)!important;font-size:clamp(2.8rem,5vw,5.4rem)!important;line-height:.9!important;letter-spacing:-.04em;margin:10px 0 0;color:var(--chocolate);max-width:760px}
.admin-page-head p{font-size:clamp(1rem,1.45vw,1.3rem);line-height:1.6;color:var(--muted);margin:0}
.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.stat{min-width:0}
.table-wrap{overflow:auto;-webkit-overflow-scrolling:touch}
table{min-width:880px}
th,td{white-space:normal!important;vertical-align:middle}

/* Plan de salle — personnes individuelles */
.seat-toggle{display:flex;gap:8px;padding:5px;border:1px solid rgba(107,63,53,.12);border-radius:999px;background:#fff;margin:18px 0}
.seat-toggle button{border:0;background:transparent;padding:11px 18px;border-radius:999px;font-weight:800;color:var(--muted)}
.seat-toggle button.active{background:var(--chocolate);color:#fff}
.seat-unassigned{display:grid;grid-template-columns:minmax(220px,.6fr) minmax(0,1.4fr);gap:20px;align-items:start}
.seat-unassigned p{margin:.35rem 0 0;color:var(--muted)}
.unassigned-people{display:flex;flex-wrap:wrap;gap:8px}
.unassigned-people>span{display:grid;padding:9px 12px;border-radius:14px;background:#fff;border:1px solid rgba(107,63,53,.1);font-weight:800;color:var(--chocolate)}
.unassigned-people small{font-weight:600;color:var(--muted);font-size:.72rem}
.seat-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.seat-card{min-width:0}
.seat-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:8px;align-items:center}
.seat-head>div{display:grid;min-width:0}
.seat-head>div b{font-size:1.18rem}
.seat-head>div small{color:var(--muted)}
.seat-chips{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.seat-chip{display:flex!important;align-items:center!important;gap:10px!important;padding:9px 10px 9px 13px!important;border-radius:16px!important;max-width:100%}
.seat-chip>span{display:grid;min-width:0}
.seat-chip b{font-size:.9rem;white-space:normal}
.seat-chip small{font-size:.68rem;color:var(--muted);white-space:normal}
.seat-x{flex:0 0 28px}
.seat-assign{margin-top:12px}
.room-toolbar{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:18px 0}
.room-plan{position:relative;min-height:680px;border-radius:28px;overflow:hidden;background:
  linear-gradient(rgba(255,255,255,.93),rgba(255,255,255,.93)),
  repeating-linear-gradient(0deg,transparent 0 39px,rgba(107,63,53,.05) 40px),
  repeating-linear-gradient(90deg,transparent 0 39px,rgba(107,63,53,.05) 40px);
  border:1px solid rgba(107,63,53,.13);touch-action:none;user-select:none}
.room-table{position:absolute;transform:translate(-50%,-50%);width:116px;min-height:96px;border-radius:50%;border:2px solid rgba(107,63,53,.22);background:#fff;box-shadow:0 12px 28px rgba(80,46,40,.13);display:grid;place-content:center;gap:2px;text-align:center;padding:12px;cursor:grab;touch-action:none;z-index:3}
.room-table:active,.room-table.is-dragging{cursor:grabbing;box-shadow:0 18px 38px rgba(80,46,40,.24);z-index:10}
.room-table.full{background:#6b3f35;color:#fff;border-color:#6b3f35}
.room-table b{font-size:.9rem;line-height:1.05}
.room-table span{font-size:.75rem;font-weight:800}
.room-table small{font-size:.55rem;line-height:1.15;max-height:2.3em;overflow:hidden}
.room-label,.room-dance{position:absolute;z-index:1;font-weight:900;letter-spacing:.08em;text-transform:uppercase;color:rgba(107,63,53,.55);pointer-events:none}
.room-stage{top:16px;left:50%;transform:translateX(-50%)}
.room-entry{bottom:16px;left:20px}
.room-dance{left:50%;top:50%;transform:translate(-50%,-50%);width:28%;aspect-ratio:1.45;border:2px dashed rgba(201,164,76,.45);border-radius:24px;display:grid;place-items:center;color:rgba(201,164,76,.75)}
.plan-legend{display:flex;gap:20px;flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:.85rem}
.plan-legend span{display:flex;align-items:center;gap:7px}.plan-legend i{width:14px;height:14px;border-radius:50%;display:inline-block}.legend-free{background:#fff;border:2px solid rgba(107,63,53,.3)}.legend-full{background:#6b3f35}

/* Responsive */
@media (max-width:1050px){
  .admin-shell{grid-template-columns:1fr!important}
  .admin-side{position:static;display:flex;overflow-x:auto;gap:8px;padding:12px;border-radius:20px;scrollbar-width:none}
  .admin-side::-webkit-scrollbar{display:none}.admin-side h3{display:none}.admin-side button{flex:0 0 auto;white-space:nowrap}
  .admin-page-head{grid-template-columns:1fr;gap:10px;align-items:start}
  .admin-page-head h1{font-size:clamp(2.8rem,8vw,4.5rem)!important}
  .seat-list{grid-template-columns:1fr}
}

@media (max-width:760px){
  .nav-inner{min-height:70px}
  .title{font-size:clamp(2.2rem,11vw,3.45rem)!important}
  .section{padding-block:58px}
  .response-page-head{display:block!important}
  .response-page-head .lead{margin-top:12px}
  .invite-summary{grid-template-columns:1fr}
  .contact-actions{grid-template-columns:1fr!important}
  .dress-palette{grid-template-columns:1fr 1fr!important}
  .seat-unassigned{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .seat-head{grid-template-columns:minmax(0,1fr) auto}
  .seat-head .small-btn{width:auto}
  .room-toolbar{align-items:stretch;flex-direction:column}
  .room-plan{min-height:560px;border-radius:20px}
  .room-table{width:94px;min-height:82px;padding:8px}
  .room-dance{width:42%}
  .premium-form{border-radius:22px!important}
}

@media (max-width:420px){
  .dress-palette{grid-template-columns:1fr!important}
  .stat-grid{gap:8px}.stat{padding:15px 12px}
  .admin-page-head h1{font-size:2.75rem!important;line-height:.95!important}
  .seat-toggle{display:grid;grid-template-columns:1fr 1fr;border-radius:18px}
  .seat-toggle button{padding:10px 8px}
  .room-plan{min-height:500px}
  .room-table{width:84px;min-height:76px}
}

@media (min-width:1920px){
  :root{--content-max:1540px}
  .nav-inner{min-height:94px}
  .section{padding-block:120px}
  .admin-page-head h1{font-size:6rem!important}
  .room-plan{min-height:820px}
}


/* ===== css/ultra-professional-fix.css ===== */
/* ================================================================
   ULTRA PROFESSIONAL FIX — navigation, login, pages et responsive
   Dernière feuille chargée : elle neutralise les conflits précédents.
   ================================================================ */
:root{--app-nav-h:80px;--app-nav-mobile-h:70px;--safe-x:max(14px,env(safe-area-inset-left))}
html{scroll-padding-top:calc(var(--app-nav-h) + 18px)}
body{min-width:320px;overflow-x:hidden!important}
body.has-app-nav #app{padding-top:var(--app-nav-h)}

/* Navigation réellement persistante */
.nav{position:fixed!important;inset:0 0 auto 0!important;height:var(--app-nav-h);z-index:10000!important;display:block;background:rgba(255,250,247,.96)!important;box-shadow:0 5px 24px rgba(66,37,32,.08);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.nav.hidden{display:none!important}
.nav-inner{height:100%!important;min-height:0!important;width:min(1280px,calc(100% - 36px))!important;margin:auto!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:20px!important}
.brand{flex:0 1 auto;min-width:0}
.brand span:last-child{min-width:0}
.brand strong,.brand small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-links{position:static!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:7px!important;transform:none!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important;background:transparent!important;box-shadow:none!important;border:0!important;padding:0!important}
.nav-links button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 17px!important;border-radius:999px!important;white-space:nowrap!important}
.nav-links button.active,.nav-links button[aria-current="page"]{background:var(--brown,#6b3f35)!important;color:#fff!important;box-shadow:0 8px 20px rgba(91,51,43,.18)!important}
.nav-links button[data-nav="logout"]{background:transparent!important;color:var(--muted)!important;box-shadow:none!important}
.menu-toggle{display:none!important}
.nav-backdrop{z-index:9998!important;top:var(--app-nav-mobile-h)!important}

/* Login : une composition stable sur tous les écrans */
.gate-redesign{display:grid!important;grid-template-columns:minmax(0,1.55fr) minmax(420px,.95fr)!important;min-height:100svh!important;height:auto!important;overflow:hidden!important;background:#f8ece7!important;padding:0!important}
.gate-redesign .gate-visual{display:block!important;min-height:100svh!important;height:auto!important;background-image:linear-gradient(0deg,rgba(54,28,24,.18),rgba(54,28,24,0) 42%),url('../assets/img/gate-cover.jpg')!important;background-size:cover!important;background-position:center center!important;background-repeat:no-repeat!important}
.gate-redesign .gate-panel{display:grid!important;place-items:center!important;min-width:0!important;min-height:100svh!important;margin:0!important;padding:clamp(28px,4vw,72px)!important;background:radial-gradient(circle at 20% 12%,rgba(218,161,171,.22),transparent 35%),linear-gradient(145deg,#fffaf7,#f5e5df)!important}
.gate-redesign .gate-float{position:relative!important;inset:auto!important;transform:none!important;width:min(100%,520px)!important;margin:0!important;padding:clamp(30px,4vw,52px)!important;border-radius:32px!important;background:rgba(255,255,255,.91)!important;box-shadow:0 28px 80px rgba(73,40,34,.15)!important}
.gate-title{font-size:clamp(2.7rem,4vw,4.25rem)!important;line-height:.96!important;max-width:12ch;margin:18px auto!important;overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important}
.gate-copy{max-width:38ch;margin-inline:auto!important;line-height:1.65!important}
.gate-form .input,.gate-form .btn{width:100%!important;min-height:58px!important}
.gate-mobile-title{display:block!important}

/* Chaque page commence proprement sous la navigation */
.section:first-child,.admin-page{scroll-margin-top:calc(var(--app-nav-h) + 16px)}
.premium-rsvp{padding-top:clamp(46px,6vw,82px)!important;background:linear-gradient(180deg,#fffaf7,#f8ece8)!important}
.premium-rsvp>.narrow{width:min(960px,calc(100% - 32px))!important}
.invite-summary{margin-top:0!important}
.admin-page{padding-top:clamp(52px,6vw,88px)!important}
.admin-page-head{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(260px,420px)!important;align-items:end!important;gap:30px!important;margin-bottom:28px!important}
.admin-page-head h1{font-family:'Cormorant Garamond',serif!important;font-size:clamp(3.2rem,6vw,5.6rem)!important;line-height:.87!important;margin:12px 0 0!important;max-width:780px!important;overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important}
.admin-main{min-width:0!important}
.admin-side h3{overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important}

/* Informations : éviter les textes et boutons écrasés */
.practical-copy{min-width:0!important}
.practical-block{min-width:0!important}
.dress-palette{grid-template-columns:repeat(2,minmax(120px,1fr))!important}
.dress-item b{white-space:normal!important;overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important}
.contact-actions{display:flex!important;flex-wrap:wrap!important;align-items:center!important}
.contact-actions a{flex:0 0 auto!important;white-space:nowrap!important}
.map-panel{width:100%!important;min-width:0!important}

/* Tablettes et téléphones */
@media(max-width:960px){
  :root{--app-nav-h:var(--app-nav-mobile-h)}
  html{scroll-padding-top:calc(var(--app-nav-mobile-h) + 14px)}
  body.has-app-nav #app{padding-top:var(--app-nav-mobile-h)}
  .nav{height:var(--app-nav-mobile-h)!important}
  .nav-inner{width:calc(100% - 24px)!important;gap:10px!important}
  .brand-photo{width:42px!important;height:42px!important;flex:none}
  .brand strong{font-size:1.25rem!important}
  .brand small{font-size:.6rem!important}
  .menu-toggle{display:grid!important;place-items:center!important;flex:none!important}
  .nav-links{position:fixed!important;left:12px!important;right:12px!important;top:calc(var(--app-nav-mobile-h) + 10px)!important;display:grid!important;gap:7px!important;padding:12px!important;border:1px solid rgba(99,56,47,.12)!important;border-radius:22px!important;background:rgba(255,250,247,.99)!important;box-shadow:0 24px 70px rgba(55,30,26,.24)!important;transform:translateY(-12px)!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transition:.2s ease!important}
  .nav-links.open{transform:none!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important}
  .nav-links button{width:100%!important;justify-content:flex-start!important;text-align:left!important;min-height:50px!important;padding-inline:17px!important}
  .gate-redesign{display:flex!important;flex-direction:column!important;min-height:100svh!important;overflow:visible!important}
  .gate-redesign .gate-visual{height:48svh!important;min-height:340px!important;max-height:560px!important;flex:none!important;background-position:center 24%!important}
  .gate-redesign .gate-panel{display:block!important;min-height:auto!important;margin:0!important;padding:0 14px max(28px,env(safe-area-inset-bottom))!important;background:linear-gradient(180deg,#f8ece7,#fffaf7)!important}
  .gate-redesign .gate-float{width:min(100%,600px)!important;margin:-38px auto 0!important;padding:30px 22px!important;border-radius:28px!important;z-index:3!important}
  .gate-mobile-title{display:none!important}
  .gate-title{font-size:clamp(2.45rem,8.5vw,3.55rem)!important;max-width:14ch!important}
  .admin-page-head{grid-template-columns:1fr!important;gap:12px!important;align-items:start!important}
  .admin-page-head h1{font-size:clamp(3rem,10vw,4.6rem)!important;line-height:.92!important}
  .admin-side{top:calc(var(--app-nav-mobile-h) + 8px)!important}
}

@media(max-width:620px){
  .brand span:last-child{max-width:150px}
  .gate-redesign .gate-visual{height:41svh!important;min-height:285px!important;background-position:center 22%!important}
  .gate-redesign .gate-panel{padding-inline:10px!important}
  .gate-redesign .gate-float{margin-top:-24px!important;padding:24px 16px!important;border-radius:24px!important}
  .gate-kicker{font-size:.7rem!important}
  .gate-title{font-size:clamp(2.2rem,10.2vw,2.9rem)!important;margin:14px auto!important}
  .gate-copy{font-size:.95rem!important;line-height:1.55!important}
  .gate-form{margin-top:20px!important}
  .gate-form .input,.gate-form .btn{min-height:54px!important;font-size:1rem!important}
  .premium-rsvp>.narrow{width:calc(100% - 20px)!important}
  .premium-form{padding:20px 14px!important}
  .admin-page{padding-top:36px!important}
  .admin-page-head h1{font-size:clamp(2.75rem,15vw,4rem)!important}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .practical-copy{grid-template-columns:1fr!important}
  .dress-palette{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .contact-actions a{flex:1 1 130px!important;justify-content:center!important}
  .map-panel,.map-panel iframe{min-height:340px!important;height:340px!important}
}

@media(max-width:380px){
  .brand span:last-child{max-width:118px}
  .gate-redesign .gate-visual{height:38svh!important;min-height:255px!important}
  .gate-redesign .gate-float{padding:21px 13px!important}
  .gate-title{font-size:2.12rem!important}
  .dress-palette{grid-template-columns:1fr!important}
}


/* ===== css/final-admin-centered.css ===== */
/* ================================================================
   FINAL ADMIN + ORGANISATEUR + CENTRAGE
   Chargé en dernier pour garantir une mise en page stable.
   ================================================================ */

/* Pages publiques : contenu recentré et largeur confortable */
.premium-rsvp{
  display:block!important;
  padding-inline:clamp(16px,3vw,42px)!important;
}
.premium-rsvp>.narrow{
  width:min(100%,1120px)!important;
  max-width:1120px!important;
  margin-inline:auto!important;
}
.premium-rsvp .invite-summary,
.premium-rsvp .premium-form,
.premium-rsvp .success-card{
  width:100%!important;
  margin-inline:auto!important;
}
.premium-rsvp .premium-form{max-width:980px!important}
.premium-rsvp .invite-summary{max-width:980px!important}

/* Administration et organisation : ensemble centré */
.admin-page{
  min-height:calc(100svh - var(--app-nav-h));
  padding-inline:clamp(16px,3vw,42px)!important;
}
.admin-page>.container.admin-shell{
  width:min(100%,1480px)!important;
  max-width:1480px!important;
  margin-inline:auto!important;
  padding-inline:0!important;
  display:grid!important;
  grid-template-columns:280px minmax(0,1fr)!important;
  gap:clamp(24px,3vw,46px)!important;
  align-items:start!important;
}
.admin-main{
  width:100%!important;
  max-width:1180px!important;
  min-width:0!important;
  margin-inline:auto!important;
}

/* Sidebar fixe visuellement pendant le défilement, admin ET organisateur */
.admin-side{
  position:sticky!important;
  top:calc(var(--app-nav-h) + 22px)!important;
  align-self:start!important;
  max-height:calc(100svh - var(--app-nav-h) - 44px)!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  z-index:20!important;
  border-radius:28px!important;
  box-shadow:0 20px 50px rgba(50,29,25,.16)!important;
}
.admin-side h3{
  font-size:clamp(2rem,2.4vw,2.65rem)!important;
  line-height:1!important;
  margin:0 0 14px!important;
  white-space:normal!important;
}
.admin-side button{
  min-height:48px!important;
  display:flex!important;
  align-items:center!important;
  width:100%!important;
}

/* En-tête et statistiques cohérents */
.admin-page-head{
  margin-top:0!important;
  padding-top:0!important;
}
.admin-page-head h1{
  max-width:100%!important;
  line-height:.94!important;
}
.stat-grid{
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
}
.admin-actions{
  align-items:center!important;
}
.admin-actions .btn,
.admin-actions .import-label{
  min-height:46px!important;
}

/* Ancres et changement d'onglet : aucun contenu masqué sous la nav */
.admin-main>[id],
.admin-main .card,
.admin-main .table-wrap{
  scroll-margin-top:calc(var(--app-nav-h) + 28px);
}

@media (max-width:1080px){
  .admin-page>.container.admin-shell{
    grid-template-columns:240px minmax(0,1fr)!important;
    gap:24px!important;
  }
  .admin-side{padding:18px!important}
  .admin-side h3{font-size:2rem!important}
}

/* Tablette/mobile : la navigation admin devient une barre sticky horizontale */
@media (max-width:960px){
  .premium-rsvp{padding-inline:12px!important}
  .premium-rsvp>.narrow{width:100%!important}
  .premium-rsvp .premium-form,
  .premium-rsvp .invite-summary{max-width:760px!important}

  .admin-page{padding-inline:12px!important}
  .admin-page>.container.admin-shell{
    width:min(100%,820px)!important;
    grid-template-columns:1fr!important;
    gap:18px!important;
  }
  .admin-side{
    position:sticky!important;
    top:calc(var(--app-nav-mobile-h) + 8px)!important;
    max-height:none!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    display:flex!important;
    align-items:center!important;
    gap:8px!important;
    padding:10px!important;
    border-radius:20px!important;
    white-space:nowrap!important;
    z-index:50!important;
  }
  .admin-side h3{
    font-family:'Nunito',sans-serif!important;
    font-size:.78rem!important;
    letter-spacing:.1em!important;
    text-transform:uppercase!important;
    flex:0 0 auto!important;
    margin:0 6px 0 4px!important;
  }
  .admin-side button{
    flex:0 0 auto!important;
    width:auto!important;
    min-height:42px!important;
    margin:0!important;
    padding:10px 14px!important;
  }
  .admin-main{max-width:820px!important}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

@media (max-width:620px){
  .premium-rsvp{padding-inline:8px!important}
  .premium-rsvp .premium-form{padding:18px 12px!important}
  .admin-page{padding-inline:8px!important}
  .admin-page>.container.admin-shell{gap:14px!important}
  .admin-side{margin-inline:0!important;border-radius:16px!important}
  .admin-page-head h1{font-size:clamp(2.55rem,13vw,3.8rem)!important}
  .stat{padding:16px!important}
  .stat strong{font-size:2rem!important}
}


/* ===== css/guest-experience-final.css ===== */
/* Expérience invité finale : navigation, accueil personnalisé et ancres */
#infos, #programme, #gallery, #confirmation { scroll-margin-top: 92px; }

.star-welcome {
  position: relative;
  overflow: hidden;
  text-align: center;
  padding: clamp(28px, 5vw, 58px);
  max-width: 680px;
  border-radius: 32px;
  background:
    radial-gradient(circle at 12% 12%, rgba(201,164,76,.20), transparent 24%),
    radial-gradient(circle at 88% 16%, rgba(217,160,167,.22), transparent 28%),
    linear-gradient(145deg, #fffdfb, #fff7f3);
  border: 1px solid rgba(107,63,53,.12);
  box-shadow: 0 28px 80px rgba(80,47,42,.22);
}
.star-welcome::before,
.star-welcome::after {
  content: "✦";
  position: absolute;
  font-size: 5rem;
  color: rgba(201,164,76,.14);
  transform: rotate(18deg);
}
.star-welcome::before { left: 22px; bottom: 15px; }
.star-welcome::after { right: 24px; top: 18px; }
.star-sparkles { color: var(--gold); letter-spacing: .45em; font-size: clamp(1rem, 3vw, 1.45rem); margin-bottom: 18px; }
.star-kicker { display:block; text-transform: uppercase; letter-spacing: .18em; font-weight: 800; font-size: .78rem; color: var(--chocolate); }
.star-welcome h2 { margin: 18px 0 12px; color: var(--chocolate); font-family: "Cormorant Garamond", serif; font-size: clamp(2.7rem, 7vw, 5.5rem); line-height: .9; font-weight: 600; }
.star-welcome h2 strong { display:block; margin-top: 12px; color: #8c594d; font-style: italic; text-shadow: 0 8px 28px rgba(140,89,77,.18); overflow-wrap: anywhere; }
.star-welcome p { max-width: 500px; margin: 0 auto; font-size: clamp(1rem, 2vw, 1.16rem); line-height: 1.7; color: var(--muted); }
.star-symbol { width: 58px; height: 58px; display:grid; place-items:center; margin: 20px auto; border-radius: 50%; color:#fff; background:linear-gradient(145deg,#c9a44c,#a87931); box-shadow:0 12px 30px rgba(169,121,49,.28); font-size:1.5rem; }
.star-welcome .btn { min-width: min(100%, 280px); }

@media (min-width: 961px) {
  #navLinks { gap: 4px; }
  #navLinks button { padding-inline: 13px; }
}
@media (max-width: 1180px) and (min-width: 961px) {
  #navLinks button { padding-inline: 9px; font-size: .78rem; }
  .brand strong { font-size: 1.15rem; }
}
@media (max-width: 600px) {
  .star-welcome { border-radius: 24px; padding: 30px 20px; }
  .star-sparkles { letter-spacing: .25em; }
}


/* ===== css/mobile-login-image-fix.css ===== */
/* Correctif final : rendre l'image de Line réellement visible sur GSM */
@media (max-width: 960px) {
  .gate-redesign .gate-visual {
    display: block !important;
    width: 100% !important;
    height: 52svh !important;
    min-height: 360px !important;
    max-height: 590px !important;
    flex: 0 0 auto !important;
    background-image:
      linear-gradient(180deg, rgba(55,31,27,.02) 0%, rgba(55,31,27,.04) 58%, rgba(55,31,27,.28) 100%),
      url('../assets/img/gate-cover.jpg') !important;
    background-size: cover !important;
    /* Sur l'image source, Line se trouve à gauche : on cadre donc l'axe horizontal à 23 %. */
    background-position: 23% center !important;
    background-repeat: no-repeat !important;
  }

  .gate-redesign .gate-mobile-title {
    display: block !important;
    left: 22px !important;
    right: 22px !important;
    bottom: 54px !important;
    color: #fff !important;
    text-align: left !important;
    text-shadow: 0 3px 22px rgba(45,31,29,.72) !important;
    z-index: 2 !important;
  }

  .gate-redesign .gate-mobile-title strong {
    display: block !important;
    font-family: 'Cormorant Garamond', serif !important;
    font-size: clamp(2.3rem, 11vw, 3.7rem) !important;
    line-height: .92 !important;
  }

  .gate-redesign .gate-mobile-title span {
    display: block !important;
    margin-top: 8px !important;
    font-size: .78rem !important;
    font-weight: 800 !important;
    letter-spacing: .16em !important;
    text-transform: uppercase !important;
  }

  .gate-redesign .gate-panel {
    position: relative !important;
    z-index: 3 !important;
  }

  .gate-redesign .gate-float {
    margin-top: -44px !important;
  }
}

@media (max-width: 600px) {
  .gate-redesign .gate-visual {
    height: 50svh !important;
    min-height: 330px !important;
    background-position: 21% center !important;
  }

  .gate-redesign .gate-float {
    margin-top: -34px !important;
  }
}

@media (max-width: 380px) {
  .gate-redesign .gate-visual {
    height: 48svh !important;
    min-height: 300px !important;
    background-position: 19% center !important;
  }
}


/* ===== css/pro-audit-v4.css ===== */
/* ==================================================================
   AUDIT PRO V4 — correctifs définitifs mobile, navigation et back-office
   Chargé en dernier afin d'annuler les anciennes règles conflictuelles.
   ================================================================== */

/* Cohérence générale */
html { scroll-behavior: smooth; }
body { text-rendering: optimizeLegibility; }
.section-head,
.compact-head,
.response-page-head,
.admin-page-head { text-align: center !important; }
.section-head > *,
.compact-head > *,
.response-page-head > *,
.admin-page-head > * { margin-inline: auto !important; }
.section-head .lead,
.compact-head .lead,
.response-page-head .lead,
.admin-page-head p { max-width: 52ch !important; }
.stat { text-align: center !important; }

/* Navigation principale : aucun chevauchement, un seul état actif */
.nav-links button.active,
.nav-links button[aria-current="page"] {
  background: var(--brown, #6b3f35) !important;
  color: #fff !important;
}
.nav-links button:not(.active):not([aria-current="page"]):not([data-nav="logout"]) {
  background: transparent !important;
  color: var(--chocolate, #56332c) !important;
  box-shadow: none !important;
}

/* LOGIN MOBILE : photo réellement en fond, visible dès l'ouverture */
@media (max-width: 960px) {
  .gate-redesign {
    position: relative !important;
    display: block !important;
    min-height: 100svh !important;
    background:
      linear-gradient(180deg, rgba(45,25,22,.02) 0%, rgba(45,25,22,.08) 38%, rgba(45,25,22,.42) 63%, rgba(248,236,231,.96) 82%),
      url('../assets/img/gate-cover.jpg') 21% top / auto 62svh no-repeat,
      #f8ece7 !important;
    overflow: hidden !important;
  }

  .gate-redesign .gate-visual {
    display: block !important;
    position: relative !important;
    width: 100% !important;
    height: 57svh !important;
    min-height: 390px !important;
    max-height: 620px !important;
    background:
      linear-gradient(180deg, rgba(45,25,22,0) 45%, rgba(45,25,22,.40) 100%),
      url('../assets/img/gate-cover.jpg') 21% center / cover no-repeat !important;
  }

  .gate-redesign .gate-mobile-title {
    display: block !important;
    left: 22px !important;
    right: 22px !important;
    bottom: 74px !important;
    text-align: left !important;
    color: #fff !important;
    text-shadow: 0 4px 22px rgba(31,16,14,.72) !important;
  }

  .gate-redesign .gate-panel {
    position: relative !important;
    z-index: 4 !important;
    display: block !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 12px max(28px, env(safe-area-inset-bottom)) !important;
    background: transparent !important;
  }

  .gate-redesign .gate-float {
    width: min(100%, 610px) !important;
    margin: -64px auto 0 !important;
    padding: clamp(25px, 6vw, 38px) clamp(17px, 5vw, 30px) !important;
    border-radius: 30px !important;
    background: rgba(255,255,255,.94) !important;
    border: 1px solid rgba(255,255,255,.82) !important;
    box-shadow: 0 28px 70px rgba(60,31,27,.25) !important;
    backdrop-filter: blur(16px) saturate(1.08) !important;
    -webkit-backdrop-filter: blur(16px) saturate(1.08) !important;
  }
}

@media (max-width: 620px) {
  .gate-redesign {
    background-position: 18% top !important;
    background-size: auto 58svh !important;
  }
  .gate-redesign .gate-visual {
    height: 52svh !important;
    min-height: 350px !important;
    background-position: 18% center !important;
  }
  .gate-redesign .gate-mobile-title { bottom: 62px !important; }
  .gate-redesign .gate-float { margin-top: -52px !important; }
  .gate-title {
    font-size: clamp(2.25rem, 10vw, 3rem) !important;
    line-height: .97 !important;
  }
}

@media (max-width: 390px) {
  .gate-redesign .gate-visual {
    height: 49svh !important;
    min-height: 320px !important;
    background-position: 16% center !important;
  }
  .gate-redesign .gate-float { margin-top: -42px !important; }
}

/* BACK-OFFICE : sidebar/onglets toujours visibles et lisibles */
.admin-side {
  background: linear-gradient(155deg, #3d2723, #2d1d1a) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,.08) !important;
}
.admin-side h3 {
  color: #fff !important;
  text-align: center !important;
}
.admin-side button {
  color: rgba(255,255,255,.88) !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  justify-content: center !important;
  text-align: center !important;
}
.admin-side button:hover,
.admin-side button:focus-visible {
  color: #fff !important;
  background: rgba(255,255,255,.10) !important;
  border-color: rgba(255,255,255,.12) !important;
}
.admin-side button.active {
  color: #40261f !important;
  background: linear-gradient(135deg, #fffaf6, #f2dcd3) !important;
  border-color: rgba(255,255,255,.75) !important;
  box-shadow: 0 10px 24px rgba(0,0,0,.18) !important;
}
.admin-page-head {
  grid-template-columns: 1fr !important;
  justify-items: center !important;
  align-items: center !important;
}
.admin-page-head h1 {
  text-align: center !important;
  max-width: 12ch !important;
  margin-inline: auto !important;
}
.admin-page-head p { text-align: center !important; }
.admin-actions { justify-content: center !important; }

@media (min-width: 961px) {
  .admin-side {
    position: sticky !important;
    top: calc(var(--app-nav-h) + 20px) !important;
  }
}

@media (max-width: 960px) {
  .admin-page {
    padding-top: 22px !important;
  }
  .admin-page > .container.admin-shell {
    width: min(100%, 860px) !important;
    gap: 20px !important;
  }
  .admin-side {
    position: sticky !important;
    top: calc(var(--app-nav-mobile-h) + 8px) !important;
    z-index: 220 !important;
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    width: 100% !important;
    min-height: 64px !important;
    padding: 9px !important;
    gap: 8px !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    border-radius: 20px !important;
    box-shadow: 0 15px 38px rgba(50,28,24,.24) !important;
    scrollbar-width: none !important;
    -webkit-overflow-scrolling: touch;
  }
  .admin-side::-webkit-scrollbar { display: none !important; }
  .admin-side h3 {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    align-items: center !important;
    margin: 0 4px 0 2px !important;
    padding: 0 10px !important;
    font-family: 'Nunito', sans-serif !important;
    font-size: .72rem !important;
    line-height: 1.2 !important;
    letter-spacing: .10em !important;
    text-transform: uppercase !important;
    white-space: nowrap !important;
  }
  .admin-side button {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    width: auto !important;
    min-width: max-content !important;
    min-height: 46px !important;
    margin: 0 !important;
    padding: 10px 16px !important;
    border-radius: 14px !important;
    white-space: nowrap !important;
    font-size: .86rem !important;
  }
  .admin-main { width: 100% !important; }
  .admin-page-head { margin-top: 6px !important; }
  .admin-page-head .eyebrow { margin-inline: auto !important; }
  .admin-page-head h1 {
    font-size: clamp(3rem, 12vw, 4.5rem) !important;
    line-height: .93 !important;
    max-width: 10ch !important;
  }
}

@media (max-width: 620px) {
  .admin-page { padding-inline: 10px !important; }
  .admin-side {
    top: calc(var(--app-nav-mobile-h) + 6px) !important;
    border-radius: 17px !important;
  }
  .admin-side h3 { display: none !important; }
  .admin-side button {
    min-height: 44px !important;
    padding-inline: 14px !important;
    font-size: .82rem !important;
  }
  .admin-page-head h1 {
    font-size: clamp(2.8rem, 14vw, 3.9rem) !important;
  }
  .admin-page-head p {
    font-size: 1rem !important;
    line-height: 1.6 !important;
  }
  .stat-grid { gap: 10px !important; }
  .stat { padding: 18px 10px !important; }
  .stat strong { font-size: 2.25rem !important; }
  .stat span { display: block !important; margin-top: 8px !important; }
}

/* Menu mobile principal : compact, lisible et sans boutons géants */
@media (max-width: 960px) {
  .nav-links {
    max-height: calc(100svh - var(--app-nav-mobile-h) - 28px) !important;
    overflow-y: auto !important;
    grid-template-columns: 1fr 1fr !important;
    align-content: start !important;
  }
  .nav-links button {
    justify-content: center !important;
    text-align: center !important;
    min-height: 48px !important;
    font-size: .82rem !important;
  }
  .nav-links button[data-nav="logout"] {
    grid-column: 1 / -1 !important;
  }
}
@media (max-width: 430px) {
  .nav-links { grid-template-columns: 1fr !important; }
  .nav-links button[data-nav="logout"] { grid-column: auto !important; }
}


/* ===== css/confirmation-center-v5.css ===== */
/* ================================================================
   CONFIRMATION — centrage final
   ================================================================ */
.premium-rsvp .success-card{
  text-align:center!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  max-width:1120px!important;
  margin-inline:auto!important;
  padding-inline:clamp(22px,5vw,72px)!important;
}
.premium-rsvp .success-card .script,
.premium-rsvp .success-card .title,
.premium-rsvp .success-card .lead{
  width:100%!important;
  max-width:820px!important;
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}
.premium-rsvp .success-card .title{
  display:block!important;
  max-width:12ch!important;
  margin-top:12px!important;
  margin-bottom:10px!important;
  line-height:.98!important;
  text-wrap:balance!important;
}
.premium-rsvp .success-card .lead{
  line-height:1.6!important;
  text-wrap:pretty!important;
}
.premium-rsvp .success-card .vip-ticket{
  margin-left:auto!important;
  margin-right:auto!important;
  text-align:center!important;
}
.premium-rsvp .success-card > div:last-child{
  width:100%!important;
  justify-content:center!important;
}
@media (max-width:620px){
  .premium-rsvp .success-card{
    padding:28px 18px!important;
  }
  .premium-rsvp .success-card .script{
    font-size:clamp(2.5rem,13vw,3.5rem)!important;
  }
  .premium-rsvp .success-card .title{
    font-size:clamp(2.35rem,12vw,3.2rem)!important;
    max-width:10ch!important;
  }
}


/* ===== css/final-complete-v6.css ===== */
/* Final complete audit v6 */
:root{--final-nav-gap:18px}
html{scroll-behavior:smooth;scroll-padding-top:calc(88px + env(safe-area-inset-top))}
.section[id]{scroll-margin-top:calc(88px + env(safe-area-inset-top))}

/* Center every page entry point consistently */
.section>.container,.section>.narrow,.admin-shell{margin-inline:auto}
.section-head,.admin-page-head{align-items:center}
.section-head>div,.section-head>.lead,.admin-page-head>div,.admin-page-head>p{text-align:center}
.section-head>div,.admin-page-head>div{margin-inline:auto}
.section-head>.lead,.admin-page-head>p{margin-inline:auto;max-width:720px}

/* Program now reads as one continuous family event */
.program-unified{align-items:stretch}
.program-unified .program-part{height:100%}
.program-unified .program-part-head{text-align:left}
.program-unified .program-row{align-items:flex-start}

/* Five useful statistics, without imposing any venue quota */
.stat-grid-with-places{grid-template-columns:repeat(5,minmax(0,1fr))}
.stat-grid-with-places .stat-places{background:linear-gradient(145deg,#fffaf7,#f8e9e4);border-color:rgba(111,67,58,.2)}
.stat-grid-with-places .stat-places strong{color:var(--gold-dark,#a87c28)}

/* Admin / organizer tabs stay centered and land at the right offset */
.admin-side{top:calc(var(--nav-h,78px) + 20px)}
.admin-page-head{scroll-margin-top:calc(92px + env(safe-area-inset-top))}
.admin-side button{text-align:center}

@media (max-width:1100px){
  .stat-grid-with-places{grid-template-columns:repeat(3,minmax(0,1fr))}
  .stat-grid-with-places .stat-places{grid-column:span 1}
}
@media (max-width:760px){
  html{scroll-padding-top:calc(82px + env(safe-area-inset-top))}
  .section[id],.admin-page-head{scroll-margin-top:calc(82px + env(safe-area-inset-top))}
  .section-head,.admin-page-head{display:flex!important;flex-direction:column!important;justify-content:center!important;text-align:center!important;gap:12px!important}
  .section-head .title,.section-head .lead,.admin-page-head h1,.admin-page-head p{text-align:center!important;margin-inline:auto!important}
  .program-unified{grid-template-columns:1fr!important}
  .program-unified .program-part-head{text-align:center}
  .program-unified .program-row{grid-template-columns:78px minmax(0,1fr)}
  .stat-grid-with-places{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat-grid-with-places .stat-places{grid-column:1/-1}
  .admin-side{top:calc(80px + env(safe-area-inset-top));justify-content:center}
}
@media (max-width:430px){
  .program-unified .program-row{grid-template-columns:68px minmax(0,1fr)}
  .stat-grid-with-places{gap:10px}
}


/* ===== css/final-login-transparent-v7.css ===== */
/* Dernière correction : login transparent sur l'image + contraste renforcé */
.gate-redesign{
  position:relative!important;
  min-height:100svh!important;
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:#4b2d27!important;
}
.gate-redesign::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-2;
  background-image:url('../assets/img/gate-cover.jpg');
  background-size:cover;
  background-position:center center;
  background-repeat:no-repeat;
  transform:scale(1.01);
}
.gate-redesign::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(90deg,rgba(35,17,14,.14) 0%,rgba(35,17,14,.18) 48%,rgba(35,17,14,.52) 100%);
}
.gate-redesign .gate-visual{
  background:none!important;
  min-height:100svh!important;
}
.gate-redesign .gate-panel{
  background:transparent!important;
  min-height:100svh!important;
  padding:clamp(24px,4vw,70px)!important;
  display:grid!important;
  place-items:center!important;
}
.gate-redesign .gate-float{
  background:rgba(45,24,21,.58)!important;
  border:1px solid rgba(255,255,255,.28)!important;
  box-shadow:0 28px 90px rgba(20,8,6,.34)!important;
  backdrop-filter:blur(13px) saturate(1.1)!important;
  -webkit-backdrop-filter:blur(13px) saturate(1.1)!important;
  color:#fffaf7!important;
}
.gate-redesign .gate-kicker,
.gate-redesign .gate-title,
.gate-redesign .gate-copy{
  color:#fffaf7!important;
  text-shadow:0 2px 18px rgba(25,9,7,.55)!important;
}
.gate-redesign .gate-copy{font-weight:600!important;}
.gate-redesign .input{
  background:rgba(255,255,255,.93)!important;
  color:#4a2c27!important;
  border-color:rgba(255,255,255,.72)!important;
}
.gate-redesign .input::placeholder{color:#765f59!important;opacity:1!important;}
.gate-redesign .btn-primary{
  background:linear-gradient(135deg,#6c3d33,#9a6256)!important;
  color:#fff!important;
  border-color:rgba(255,255,255,.22)!important;
  box-shadow:0 14px 34px rgba(25,8,5,.32)!important;
}
.gate-redesign .gate-deadline{color:#fff1eb!important;text-shadow:0 2px 10px rgba(25,9,7,.45)!important;}

@media (max-width: 900px){
  .gate-redesign{
    display:flex!important;
    min-height:100svh!important;
    background:#3f241f!important;
  }
  .gate-redesign::before{
    background-position:30% center!important;
  }
  .gate-redesign::after{
    background:linear-gradient(180deg,rgba(31,13,10,.12) 0%,rgba(31,13,10,.36) 42%,rgba(31,13,10,.68) 100%)!important;
  }
  .gate-redesign .gate-visual{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    min-height:100%!important;
    max-height:none!important;
    background:none!important;
  }
  .gate-redesign .gate-panel{
    position:relative!important;
    z-index:2!important;
    width:100%!important;
    min-height:100svh!important;
    margin:0!important;
    padding:clamp(110px,20svh,190px) 16px max(26px,env(safe-area-inset-bottom))!important;
    display:flex!important;
    align-items:flex-end!important;
    justify-content:center!important;
    background:transparent!important;
  }
  .gate-redesign .gate-float{
    width:min(100%,620px)!important;
    margin:0 auto!important;
    padding:28px 20px!important;
    border-radius:28px!important;
    background:rgba(42,21,18,.54)!important;
  }
  .gate-redesign .gate-mobile-title{display:none!important;}
  .gate-redesign .gate-title{font-size:clamp(2.25rem,10vw,3.3rem)!important;max-width:13ch!important;}
  .gate-redesign .gate-copy{font-size:1rem!important;line-height:1.58!important;}
}
@media (max-width: 430px){
  .gate-redesign::before{background-position:27% center!important;}
  .gate-redesign .gate-panel{padding:96px 12px 18px!important;}
  .gate-redesign .gate-float{padding:24px 16px!important;border-radius:24px!important;}
  .gate-redesign .gate-title{font-size:clamp(2.05rem,10.8vw,2.7rem)!important;}
}


/* ===== css/mobile-admin-tabs-final-v8.css ===== */
/* V8 — correction finale des onglets Administration / Organisation sur mobile */
@media (max-width: 960px) {
  .admin-page > .container.admin-shell {
    width: min(100%, 920px) !important;
    padding-inline: 10px !important;
    margin-inline: auto !important;
  }

  .admin-side {
    justify-content: flex-start !important;
    scroll-padding-inline: 10px !important;
    padding: 9px 10px !important;
    overscroll-behavior-inline: contain !important;
    touch-action: pan-x !important;
  }

  .admin-side button:first-of-type {
    margin-left: 0 !important;
  }

  .admin-side button:last-of-type {
    margin-right: 4px !important;
  }

  .admin-side button {
    scroll-snap-align: start !important;
  }

  .admin-page-head,
  .admin-page-head > div,
  .admin-page-head p,
  .admin-page-head h1,
  .admin-page-head .eyebrow {
    width: 100% !important;
    max-width: 100% !important;
    text-align: center !important;
    margin-inline: auto !important;
  }

  .admin-page-head h1 {
    max-width: 11ch !important;
  }
}

@media (max-width: 620px) {
  .admin-page {
    padding-inline: 0 !important;
  }

  .admin-side {
    width: calc(100% - 20px) !important;
    margin-inline: auto !important;
    border-radius: 18px !important;
  }

  .admin-side button {
    min-height: 46px !important;
    padding: 10px 15px !important;
    font-size: .86rem !important;
  }

  .admin-main {
    width: min(100%, 760px) !important;
    margin-inline: auto !important;
  }

  .admin-page-head {
    padding-inline: 12px !important;
  }

  .admin-page-head h1 {
    font-size: clamp(2.8rem, 13vw, 4.25rem) !important;
    line-height: .94 !important;
  }

  .stat-grid-with-places,
  .charts-grid,
  .admin-actions,
  .table-wrap,
  #guestPager,
  .seating-toolbar,
  .seating-grid {
    margin-inline: 10px !important;
  }
}

@media (max-width: 390px) {
  .admin-side button {
    padding-inline: 13px !important;
    font-size: .82rem !important;
  }
}


/* ===== css/release-final-v9.css ===== */
/* VERSION FINALE V9 — priorité absolue : photo de Line + navigation active visible */

/* Page de connexion : vraie image visible, jamais remplacée par un fond uni */
.gate-redesign{
  display:grid!important;
  grid-template-columns:minmax(0,1.65fr) minmax(420px,.85fr)!important;
  min-height:100svh!important;
  background:#f8ece7!important;
  overflow:hidden!important;
  position:relative!important;
}
.gate-redesign::before,
.gate-redesign::after{content:none!important;display:none!important;}
.gate-redesign .gate-visual{
  display:block!important;
  position:relative!important;
  inset:auto!important;
  width:auto!important;
  height:auto!important;
  min-height:100svh!important;
  max-height:none!important;
  background-image:linear-gradient(0deg,rgba(50,24,20,.34) 0%,rgba(50,24,20,.05) 42%,rgba(50,24,20,0) 70%),url('../assets/img/gate-cover.jpg')!important;
  background-size:cover!important;
  background-position:center center!important;
  background-repeat:no-repeat!important;
}
.gate-redesign .gate-mobile-title{
  display:flex!important;
  position:absolute!important;
  left:clamp(28px,5vw,80px)!important;
  bottom:clamp(34px,6vh,76px)!important;
  z-index:2!important;
  flex-direction:column!important;
  gap:8px!important;
  color:#fff!important;
  text-shadow:0 4px 20px rgba(40,17,13,.7)!important;
}
.gate-redesign .gate-mobile-title strong{
  font-size:clamp(2.8rem,5vw,5.2rem)!important;
  line-height:.95!important;
}
.gate-redesign .gate-mobile-title span{
  font-size:clamp(.82rem,1.2vw,1.05rem)!important;
  font-weight:900!important;
  letter-spacing:.16em!important;
}
.gate-redesign .gate-panel{
  display:grid!important;
  place-items:center!important;
  min-height:100svh!important;
  padding:clamp(26px,4vw,72px)!important;
  background:radial-gradient(circle at 18% 12%,rgba(220,167,176,.26),transparent 36%),linear-gradient(145deg,#fffaf7,#f4e3dc)!important;
}
.gate-redesign .gate-float{
  width:min(100%,540px)!important;
  margin:0 auto!important;
  padding:clamp(30px,4vw,54px)!important;
  border-radius:32px!important;
  background:rgba(255,255,255,.94)!important;
  border:1px solid rgba(118,68,57,.14)!important;
  box-shadow:0 30px 90px rgba(83,45,37,.18)!important;
  color:#60372f!important;
  backdrop-filter:blur(12px)!important;
}
.gate-redesign .gate-kicker,
.gate-redesign .gate-title{color:#60372f!important;text-shadow:none!important;}
.gate-redesign .gate-copy{color:#7a6964!important;text-shadow:none!important;font-weight:500!important;}
.gate-redesign .code-help{color:#806d67!important;}
.gate-redesign .input{background:#fff!important;color:#4a2c27!important;border-color:rgba(96,55,47,.22)!important;}
.gate-redesign .btn-primary{background:linear-gradient(135deg,#6c3d33,#9a6256)!important;color:#fff!important;}

/* Navigation : onglet choisi plus grand, plus gras et très visible */
.nav-links button.active,
.nav-links button[aria-current="page"]{
  font-weight:950!important;
  font-size:1.03em!important;
  letter-spacing:.045em!important;
  transform:scale(1.06)!important;
  box-shadow:0 12px 28px rgba(92,48,40,.22)!important;
}
.nav-links button{transition:transform .2s ease,box-shadow .2s ease,background .2s ease,color .2s ease!important;}

/* Onglets internes admin / organisateur : actif nettement renforcé */
.admin-tabs button.active,
.organizer-tabs button.active,
.sidebar-nav button.active,
.tab-list button.active,
[role="tab"].active,
[aria-selected="true"]{
  font-weight:950!important;
  transform:scale(1.035)!important;
}

@media (max-width:900px){
  .gate-redesign{
    display:flex!important;
    flex-direction:column!important;
    min-height:100svh!important;
    overflow:visible!important;
  }
  .gate-redesign .gate-visual{
    flex:none!important;
    width:100%!important;
    height:52svh!important;
    min-height:330px!important;
    max-height:560px!important;
    background-position:27% center!important;
  }
  .gate-redesign .gate-mobile-title{
    display:flex!important;
    left:22px!important;
    bottom:56px!important;
  }
  .gate-redesign .gate-mobile-title strong{font-size:clamp(2.35rem,10vw,3.5rem)!important;}
  .gate-redesign .gate-panel{
    min-height:auto!important;
    width:100%!important;
    padding:0 14px max(28px,env(safe-area-inset-bottom))!important;
    margin:0!important;
    background:linear-gradient(180deg,#f5e5df,#fffaf7)!important;
  }
  .gate-redesign .gate-float{
    width:min(100%,620px)!important;
    margin:-42px auto 0!important;
    padding:28px 20px!important;
    border-radius:28px!important;
    position:relative!important;
    z-index:5!important;
  }
  .nav-links button.active,
  .nav-links button[aria-current="page"]{
    transform:none!important;
    font-size:1.08rem!important;
    font-weight:950!important;
  }
}

@media (max-width:430px){
  .gate-redesign .gate-visual{
    height:48svh!important;
    min-height:300px!important;
    background-position:24% center!important;
  }
  .gate-redesign .gate-mobile-title{left:18px!important;bottom:48px!important;}
  .gate-redesign .gate-float{margin-top:-34px!important;padding:24px 16px!important;border-radius:24px!important;}
  .gate-redesign .gate-title{font-size:clamp(2.05rem,10.5vw,2.75rem)!important;}
}


/* ===== css/release-final-v10.css ===== */
/* V10 — coordonnées cadeaux + navigation admin/organisation fixe pendant le défilement */

/* Bloc cadeaux */
.gift-block{
  grid-column:1 / -1;
  text-align:center;
  background:linear-gradient(145deg,rgba(255,255,255,.88),rgba(248,231,225,.9));
  border:1px solid rgba(111,63,52,.14);
  border-radius:28px;
  padding:clamp(24px,4vw,42px)!important;
  box-shadow:0 18px 48px rgba(73,39,32,.09);
}
.gift-block>p{max-width:760px;margin:10px auto 22px;}
.gift-bank-card{
  width:min(100%,760px);
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
  align-items:stretch;
}
.gift-bank-card>div{
  min-width:0;
  background:#fff;
  border:1px solid rgba(111,63,52,.14);
  border-radius:18px;
  padding:16px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:6px;
}
.gift-bank-card span{
  font-size:.72rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  font-weight:800;
  color:var(--muted);
}
.gift-bank-card strong{overflow-wrap:anywhere;color:var(--brown);}
.gift-iban{font-size:clamp(1rem,2vw,1.18rem);letter-spacing:.04em;}
.gift-copy-btn{grid-column:1 / -1;justify-self:center;margin-top:4px;}

/* Les conteneurs ne doivent jamais annuler position:sticky */
.admin-page,
.admin-page>.container.admin-shell,
.admin-main{
  overflow:visible!important;
}

/* PC : le panneau Administration / Organisation reste visible pendant le scroll */
@media (min-width:961px){
  .admin-page>.container.admin-shell{align-items:start!important;}
  .admin-side{
    position:sticky!important;
    top:calc(var(--app-nav-h) + 18px)!important;
    z-index:80!important;
    max-height:calc(100svh - var(--app-nav-h) - 36px)!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
  }
}

/* Mobile/tablette : barre interne toujours accessible et entièrement défilable */
@media (max-width:960px){
  .admin-side{
    position:sticky!important;
    top:calc(var(--app-nav-mobile-h) + 6px)!important;
    z-index:90!important;
    width:100%!important;
    max-width:100%!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;
  }
  .admin-side h3,
  .admin-side button{scroll-snap-align:start;}
}

@media (max-width:700px){
  .gift-bank-card{grid-template-columns:1fr;}
  .gift-copy-btn{grid-column:auto;width:100%;}
}


/* ===== css/release-final-v11.css ===== */
/* V11 — alignement final des pages/onglets et hero remonté */

/* Chaque destination s'ouvre sous la navigation, sans décalage latéral */
#app > section,
#infos,
#gallery,
#programme,
#confirmation,
.premium-rsvp,
.admin-page{
  scroll-margin-top:calc(var(--app-nav-h,74px) + 18px);
}

#app > section > .container,
#app > section > .narrow,
.admin-page > .container.admin-shell{
  margin-left:auto!important;
  margin-right:auto!important;
}

/* Accueil : bloc principal et décompte plus haut, visible dans le premier écran */
@media (min-width:721px){
  .hero{
    min-height:calc(100svh - var(--app-nav-h,74px))!important;
    align-items:flex-start!important;
  }
  .hero-grid{
    padding-top:clamp(18px,3vh,34px)!important;
    padding-bottom:clamp(24px,4vh,48px)!important;
  }
  .hero-copy{
    padding:clamp(20px,2.5vw,34px)!important;
  }
  .hero .title{
    margin:8px 0 20px!important;
    font-size:clamp(3rem,5.4vw,5.25rem)!important;
  }
  .countdown-priority{margin-bottom:8px!important;}
  .count-line{margin-bottom:16px!important;}
  .hero-primary-action{margin-top:20px!important;}
}

/* Pages Administration / Organisation parfaitement centrées */
.admin-page{
  padding-top:clamp(34px,5vw,64px)!important;
}
.admin-page > .container.admin-shell{
  justify-content:center!important;
}
.admin-main{
  justify-self:center!important;
}
.admin-page-head{
  width:100%!important;
  text-align:center!important;
  justify-items:center!important;
}
.admin-page-head > div,
.admin-page-head > p{
  margin-inline:auto!important;
}
.admin-page-head h1{
  margin-inline:auto!important;
  text-align:center!important;
}
.admin-page-head p{
  max-width:720px!important;
  text-align:center!important;
}

/* Onglets internes : premier et dernier entièrement visibles */
.admin-side{
  scroll-padding-inline:14px!important;
}
.admin-side button{
  scroll-margin-inline:10px!important;
}

@media (max-width:960px){
  :root{--admin-tabs-h:84px;}
  #app > section,
  #infos,
  #gallery,
  #programme,
  #confirmation,
  .premium-rsvp,
  .admin-page{
    scroll-margin-top:calc(var(--app-nav-mobile-h,82px) + 16px);
  }
  .admin-page{
    padding-top:18px!important;
  }
  .admin-page > .container.admin-shell{
    width:min(100%,860px)!important;
  }
  .admin-side{
    padding:10px 12px!important;
    scroll-padding-left:12px!important;
    scroll-padding-right:12px!important;
  }
  .admin-side button:first-of-type{margin-left:0!important;}
  .admin-side button:last-of-type{margin-right:2px!important;}
  .admin-main{width:100%!important;}
  .admin-page-head{padding-top:4px!important;}
}

@media (max-width:720px){
  .hero{
    padding-top:34svh!important;
    background-position:60% center!important;
  }
  .hero-grid{padding-bottom:18px!important;}
  .hero-copy{padding:18px 14px!important;}
  .hero .title{
    font-size:clamp(2.45rem,11.5vw,3.65rem)!important;
    margin:6px 0 16px!important;
  }
  .count-line{margin-bottom:14px!important;}
  .hero-primary-action{margin-top:16px!important;}
  .admin-page-head h1{font-size:clamp(2.7rem,12vw,4.1rem)!important;}
}


/* ===== css/release-final-v12.css ===== */
/* Final V12 — navigation dynamique, pages courtes et univers princesse */
:root{--princess-gold:#caa34a;--princess-rose:#d8a0aa;--princess-cream:#fffaf6}

/* La page d'accueil reste courte et tient mieux dans l'écran */
.hero{min-height:calc(100svh - var(--nav-h,80px));padding-top:clamp(14px,2vh,30px);padding-bottom:clamp(20px,3vh,44px)}
.hero-grid{align-items:center}
.hero-copy{align-self:center}
.home-shortcuts{padding:clamp(28px,5vw,64px) 0;background:linear-gradient(180deg,#fffaf7,#f8eeeb)}
.shortcut-head{text-align:center;max-width:720px;margin:0 auto 24px}
.shortcut-head h2{font-family:"Cormorant Garamond",serif;font-size:clamp(2rem,4vw,3.5rem);line-height:1;margin:.35rem 0 .6rem;color:var(--ink)}
.shortcut-head p{margin:0;color:var(--muted)}
.shortcut-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;max-width:1120px;margin:auto}
.shortcut-card{border:1px solid rgba(91,55,48,.13);background:rgba(255,255,255,.88);border-radius:24px;padding:22px 16px;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7px;box-shadow:0 14px 34px rgba(91,55,48,.08);cursor:pointer;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.shortcut-card:hover,.shortcut-card:focus-visible{transform:translateY(-5px);box-shadow:0 20px 44px rgba(91,55,48,.14);border-color:rgba(202,163,74,.55)}
.shortcut-card>span{font-size:1.8rem;color:var(--princess-gold)}
.shortcut-card strong{font-size:1.03rem;color:var(--ink)}
.shortcut-card small{color:var(--muted);line-height:1.35}
.shortcut-primary{background:linear-gradient(145deg,#6b4037,#8e584c)}
.shortcut-primary strong,.shortcut-primary small,.shortcut-primary>span{color:#fff}

/* Onglet actif plus grand et clairement dynamique */
.nav-links button{transition:transform .22s ease,background .22s ease,color .22s ease,box-shadow .22s ease;font-weight:800}
.nav-links button.active{font-size:1.02em;font-weight:900;transform:scale(1.07);box-shadow:0 10px 24px rgba(91,55,48,.2)}
.nav-links button:active{transform:scale(.98)}

/* Chaque menu ouvre une page autonome, centrée et courte */
body.has-app-nav #app>.section{min-height:calc(100svh - var(--nav-h,80px));display:flex;align-items:center;padding-top:clamp(38px,7vh,82px);padding-bottom:clamp(38px,7vh,82px)}
body.has-app-nav #app>.section>.container,body.has-app-nav #app>.section>.narrow{width:100%}
.infos-section .section-head,.gallery-section .section-head,.program .section-head{text-align:center;justify-content:center;max-width:900px;margin-left:auto;margin-right:auto}
.infos-section .section-head>*,.gallery-section .section-head>*,.program .section-head>*{max-width:100%}

/* Cadeaux : vraie page du menu */
.gift-page{text-align:center}
.gift-page-card{position:relative;max-width:760px;margin:auto;padding:clamp(28px,5vw,64px);border-radius:34px;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(252,239,236,.96));border:1px solid rgba(202,163,74,.35);box-shadow:0 26px 70px rgba(91,55,48,.13);overflow:hidden}
.gift-page-card:before,.gift-page-card:after{content:"✦";position:absolute;color:rgba(202,163,74,.35);font-size:2rem;animation:princessTwinkle 2.8s ease-in-out infinite}
.gift-page-card:before{top:26px;left:30px}.gift-page-card:after{right:30px;bottom:26px;animation-delay:1.2s}
.gift-crown{font-size:3.2rem;line-height:1;color:var(--princess-gold);filter:drop-shadow(0 8px 12px rgba(202,163,74,.25));animation:crownFloat 3.6s ease-in-out infinite}
.gift-bank-large{max-width:580px;margin:24px auto 10px;text-align:left}
.gift-bank-large>div{padding:14px 0;border-bottom:1px solid rgba(91,55,48,.12)}
.gift-bank-large span{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;margin-bottom:4px}
.gift-bank-large strong{font-size:clamp(1rem,2.4vw,1.25rem);overflow-wrap:anywhere}
.gift-bank-large .btn{width:100%;margin-top:18px}
.gift-note{margin:18px 0 0;color:#8a6258;font-style:italic}

/* Animation princesse subtile, non gênante */
.princess-magic{position:fixed;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.princess-magic span{position:absolute;color:rgba(202,163,74,.28);font-size:clamp(18px,2.5vw,34px);animation:princessDrift 10s linear infinite;opacity:0}
.princess-magic span:nth-child(1){left:8%;animation-delay:0s}.princess-magic span:nth-child(2){left:22%;animation-delay:2s}.princess-magic span:nth-child(3){left:43%;animation-delay:4s}.princess-magic span:nth-child(4){left:64%;animation-delay:1s}.princess-magic span:nth-child(5){left:81%;animation-delay:5s}.princess-magic span:nth-child(6){left:93%;animation-delay:3s}
#navbar,#app,.back-to-top{position:relative;z-index:3}
@keyframes princessDrift{0%{transform:translateY(105vh) rotate(0deg) scale(.7);opacity:0}12%{opacity:.75}82%{opacity:.45}100%{transform:translateY(-15vh) rotate(220deg) scale(1.15);opacity:0}}
@keyframes princessTwinkle{0%,100%{opacity:.25;transform:scale(.8) rotate(0)}50%{opacity:.85;transform:scale(1.15) rotate(18deg)}}
@keyframes crownFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(2deg)}}

@media(max-width:960px){
  .shortcut-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nav-links button.active{transform:none;font-size:1.05em}
  body.has-app-nav #app>.section{display:block;min-height:auto;padding-top:32px;padding-bottom:42px}
}
@media(max-width:560px){
  .hero{min-height:auto;padding-top:12px}
  .shortcut-grid{grid-template-columns:1fr 1fr;gap:10px}
  .shortcut-card{min-height:130px;padding:16px 10px;border-radius:20px}
  .shortcut-card small{font-size:.76rem}
  .gift-page-card{border-radius:24px;padding:30px 18px}
  .princess-magic span{font-size:20px}
}
@media(prefers-reduced-motion:reduce){.princess-magic,.gift-crown,.gift-page-card:before,.gift-page-card:after{animation:none!important}.shortcut-card,.nav-links button{transition:none!important}}


/* ===== css/release-final-v13.css ===== */
/* V13 — correction finale de la page d'accès sur mobile
   Objectifs : bouton entièrement accessible, défilement naturel, carte plus compacte,
   aucune zone masquée par la barre du navigateur. */
html,body{min-height:100%;overflow-x:hidden}
body{overflow-y:auto!important}

@media (max-width:900px){
  .gate-redesign{
    display:flex!important;
    flex-direction:column!important;
    min-height:100dvh!important;
    height:auto!important;
    overflow:visible!important;
    background:linear-gradient(180deg,#f4e3dc,#fffaf7)!important;
  }
  .gate-redesign .gate-visual{
    position:relative!important;
    inset:auto!important;
    flex:0 0 auto!important;
    width:100%!important;
    height:clamp(310px,42svh,430px)!important;
    min-height:310px!important;
    max-height:430px!important;
    background-image:linear-gradient(0deg,rgba(54,28,23,.24),rgba(54,28,23,0) 48%),url('../assets/img/gate-cover.jpg')!important;
    background-size:cover!important;
    background-position:25% center!important;
    background-repeat:no-repeat!important;
  }
  .gate-redesign .gate-mobile-title{
    display:flex!important;
    left:clamp(18px,5vw,34px)!important;
    bottom:clamp(42px,7vh,66px)!important;
  }
  .gate-redesign .gate-mobile-title strong{
    font-size:clamp(2.2rem,9vw,3.35rem)!important;
    line-height:.95!important;
  }
  .gate-redesign .gate-panel{
    position:relative!important;
    z-index:4!important;
    width:100%!important;
    min-height:0!important;
    height:auto!important;
    margin:0!important;
    padding:0 14px max(34px,env(safe-area-inset-bottom))!important;
    display:block!important;
    background:linear-gradient(180deg,#f4e3dc 0%,#fffaf7 100%)!important;
  }
  .gate-redesign .gate-float{
    width:min(100%,620px)!important;
    margin:-34px auto 0!important;
    padding:clamp(22px,5vw,30px) clamp(16px,4.5vw,24px)!important;
    border-radius:28px!important;
    background:rgba(255,255,255,.97)!important;
    border:1px solid rgba(118,68,57,.13)!important;
    box-shadow:0 24px 68px rgba(83,45,37,.16)!important;
    color:#60372f!important;
    backdrop-filter:blur(10px)!important;
    -webkit-backdrop-filter:blur(10px)!important;
  }
  .gate-redesign .gate-kicker,
  .gate-redesign .gate-title{color:#60372f!important;text-shadow:none!important}
  .gate-redesign .gate-copy{color:#7a6964!important;text-shadow:none!important;font-weight:500!important}
  .gate-redesign .gate-title{
    max-width:13ch!important;
    margin:14px auto 16px!important;
    font-size:clamp(2.15rem,8.7vw,3rem)!important;
    line-height:.98!important;
  }
  .gate-redesign .gate-copy{
    max-width:34rem!important;
    margin:0 auto 18px!important;
    font-size:clamp(.94rem,3.5vw,1.05rem)!important;
    line-height:1.48!important;
  }
  .gate-redesign .gate-form{gap:10px!important}
  .gate-redesign .input,
  .gate-redesign .btn-primary{
    min-height:56px!important;
    height:56px!important;
  }
  .gate-redesign .input{
    background:#fff!important;
    color:#4a2c27!important;
    border-color:rgba(96,55,47,.22)!important;
    font-size:1rem!important;
  }
  .gate-redesign .btn-primary{
    background:linear-gradient(135deg,#6c3d33,#9a6256)!important;
    color:#fff!important;
    margin:0!important;
  }
  .gate-redesign .code-help{
    margin:14px 0 0!important;
    color:#806d67!important;
    font-size:.82rem!important;
  }
}

@media (max-width:430px){
  .gate-redesign .gate-visual{
    height:clamp(290px,39svh,360px)!important;
    min-height:290px!important;
    background-position:23% center!important;
  }
  .gate-redesign .gate-mobile-title{left:16px!important;bottom:40px!important}
  .gate-redesign .gate-mobile-title strong{font-size:clamp(2rem,9.2vw,2.8rem)!important}
  .gate-redesign .gate-float{margin-top:-28px!important;border-radius:24px!important;padding:22px 15px!important}
  .gate-redesign .gate-title{font-size:clamp(2rem,9vw,2.55rem)!important;margin:12px auto 14px!important}
  .gate-redesign .gate-copy{font-size:.94rem!important;line-height:1.44!important;margin-bottom:16px!important}
  .gate-redesign .input,.gate-redesign .btn-primary{height:54px!important;min-height:54px!important}
}

@media (min-width:901px){
  /* Recadrage discret de l'image de gauche pour limiter la zone décorative vide. */
  .gate-redesign .gate-visual{background-position:24% center!important}
}


/* ===== css/child-princess-theme.css ===== */
/* Thème enfant-princesse inspiré des grands portails jeunesse, sans imitation directe. */
:root{
  --kid-pink:#ff7eb6;
  --kid-peach:#ffb86b;
  --kid-yellow:#ffd75e;
  --kid-purple:#8f6bff;
  --kid-blue:#61c7ff;
  --kid-mint:#76e2b3;
  --kid-ink:#5a3650;
}
body:not(.admin-mode){
  background:
    radial-gradient(circle at 10% 8%,rgba(255,215,94,.28) 0 90px,transparent 92px),
    radial-gradient(circle at 92% 15%,rgba(97,199,255,.20) 0 110px,transparent 112px),
    linear-gradient(180deg,#fffaf3 0%,#fff5fb 48%,#f6f2ff 100%);
}
body:not(.admin-mode) .nav{
  background:rgba(255,255,255,.94);
  border-bottom:4px solid var(--kid-yellow);
  box-shadow:0 8px 24px rgba(90,54,80,.12);
}
body:not(.admin-mode) .brand-photo{border:4px solid #fff;box-shadow:0 0 0 3px var(--kid-pink)}
body:not(.admin-mode) .nav-links button{
  border-radius:999px;
  font-weight:900;
  letter-spacing:.04em;
  transition:transform .18s ease,box-shadow .18s ease,background .18s ease;
}
body:not(.admin-mode) .nav-links button:hover{transform:translateY(-3px) rotate(-1deg);box-shadow:0 8px 16px rgba(90,54,80,.14)}
body:not(.admin-mode) .nav-links button.active{background:linear-gradient(135deg,var(--kid-pink),var(--kid-purple));color:#fff}
body:not(.admin-mode) .card,
body:not(.admin-mode) .invite-summary,
body:not(.admin-mode) .success-card{
  border:3px solid rgba(255,255,255,.9);
  border-radius:30px;
  box-shadow:0 18px 40px rgba(109,72,99,.16),0 0 0 3px rgba(255,215,94,.35);
}
body:not(.admin-mode) .premium-form{position:relative;overflow:hidden}
body:not(.admin-mode) .premium-form::before,
body:not(.admin-mode) .premium-form::after{content:"";position:absolute;border-radius:50%;pointer-events:none;opacity:.16}
body:not(.admin-mode) .premium-form::before{width:180px;height:180px;background:var(--kid-pink);top:-90px;right:-80px}
body:not(.admin-mode) .premium-form::after{width:140px;height:140px;background:var(--kid-blue);bottom:-70px;left:-60px}
body:not(.admin-mode) .step-n{background:linear-gradient(135deg,var(--kid-yellow),var(--kid-peach));color:var(--kid-ink);box-shadow:0 5px 0 rgba(161,97,49,.2)}
body:not(.admin-mode) .form-section-title{color:var(--kid-ink)}
body:not(.admin-mode) .choice,
body:not(.admin-mode) .drink-chip{
  border:2px solid rgba(143,107,255,.25);
  border-radius:18px;
  background:#fff;
  font-weight:800;
  box-shadow:0 6px 0 rgba(143,107,255,.10);
}
body:not(.admin-mode) .choice:hover,
body:not(.admin-mode) .drink-chip:hover{transform:translateY(-2px)}
body:not(.admin-mode) .choice.selected,
body:not(.admin-mode) .drink-chip.selected{background:linear-gradient(135deg,var(--kid-purple),var(--kid-pink));color:#fff;border-color:transparent}
body:not(.admin-mode) .companion{
  background:linear-gradient(145deg,#fff,#fff9fd);
  border:2px dashed rgba(255,126,182,.55);
  border-radius:24px;
  box-shadow:0 10px 22px rgba(90,54,80,.09);
}
body:not(.admin-mode) .companion:nth-child(2n){border-color:rgba(97,199,255,.65)}
body:not(.admin-mode) .extra-companion{border-style:solid;border-color:var(--kid-peach);background:#fff9ef}
.companion-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.btn-outline-playful{background:#fff;border:2px dashed var(--kid-peach);color:var(--kid-ink)}
.btn-outline-playful:hover{background:#fff6e8;transform:translateY(-2px)}
body:not(.admin-mode) .btn-primary{background:linear-gradient(135deg,var(--kid-pink),var(--kid-purple));border:0;box-shadow:0 8px 0 #6d4cc8,0 16px 26px rgba(143,107,255,.25)}
body:not(.admin-mode) .btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 0 #6d4cc8,0 18px 28px rgba(143,107,255,.28)}
body:not(.admin-mode) .btn-primary:active{transform:translateY(5px);box-shadow:0 3px 0 #6d4cc8}
body:not(.admin-mode) .input,
body:not(.admin-mode) .select,
body:not(.admin-mode) .textarea{border:2px solid rgba(143,107,255,.20);border-radius:18px;background:#fff;box-shadow:inset 0 2px 0 rgba(255,255,255,.8)}
body:not(.admin-mode) .input:focus,
body:not(.admin-mode) .select:focus,
body:not(.admin-mode) .textarea:focus{border-color:var(--kid-purple);box-shadow:0 0 0 5px rgba(143,107,255,.13)}
.attendance-help{background:linear-gradient(90deg,#fff7cf,#ffeef7);border-radius:16px;padding:12px 14px;border-left:5px solid var(--kid-yellow)}
@media (max-width:760px){
  body:not(.admin-mode) .premium-form{border-radius:24px}
  .companion-actions .btn{width:100%}
  body:not(.admin-mode) .choice-row{grid-template-columns:1fr}
}


/* Dynamic saved RSVP summary */
.saved-response-card{margin:28px auto 12px;text-align:left;max-width:760px;padding:22px;border-radius:26px;background:linear-gradient(145deg,#fffdfd,#fff4fb);border:2px solid rgba(198,111,154,.18);box-shadow:0 16px 40px rgba(111,61,91,.10)}
.saved-response-head{display:flex;justify-content:space-between;gap:14px;align-items:center;padding-bottom:16px;border-bottom:1px dashed rgba(111,61,91,.22)}
.saved-response-head span,.saved-grid span,.saved-note span{font-size:.76rem;text-transform:uppercase;letter-spacing:.11em;color:var(--muted)}
.saved-response-head strong{color:#8f476f;background:#ffe9f5;border-radius:999px;padding:8px 13px}
.saved-section{margin-top:18px}.saved-section h3{margin:0 0 10px;color:#603848;font-size:1rem}
.saved-people{list-style:none;padding:0;margin:0;display:grid;gap:9px}.saved-people li{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid rgba(111,61,91,.12);border-radius:16px;padding:11px 13px}.saved-people li div{display:flex;flex-direction:column}.saved-people small{color:var(--muted);margin-top:2px}.saved-person-index{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#ffd75e;color:#624226;font-weight:900}
.saved-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.saved-grid>div{background:#fff;border:1px solid rgba(111,61,91,.12);border-radius:16px;padding:12px}.saved-grid strong{display:block;margin-top:5px;color:#53343d;overflow-wrap:anywhere}
.saved-chips{display:flex;flex-wrap:wrap;gap:8px}.saved-chip{padding:7px 11px;border-radius:999px;background:#e8f5ff;color:#275672;font-weight:700;font-size:.86rem}.saved-empty{color:var(--muted)}
.saved-note{margin-top:14px;padding:13px 15px;border-radius:16px;background:#fff8e8;border:1px solid rgba(210,161,44,.18)}.saved-note p{margin:6px 0 0;white-space:pre-wrap;color:#5c4741}
@media(max-width:640px){.saved-response-card{padding:16px;border-radius:20px}.saved-response-head{align-items:flex-start;flex-direction:column}.saved-grid{grid-template-columns:1fr}}


/* ===== css/dress-code-v4.css ===== */
:root{--dress-brown:#6b3f35;--dress-powder:#d9a0a7;--dress-nude:#e7c4b4;--dress-gold:#c9a44c}
.dress-spotlight{padding:28px 0 8px;background:linear-gradient(180deg,rgba(255,248,244,.2),rgba(231,196,180,.18))}
.dress-spotlight-card{position:relative;overflow:hidden;display:grid;grid-template-columns:1.15fr .85fr;gap:34px;align-items:center;padding:34px;border:1px solid rgba(107,63,53,.14);border-radius:32px;background:linear-gradient(135deg,#fffaf7 0%,#f8e8e7 52%,#f4eadf 100%);box-shadow:0 18px 46px rgba(107,63,53,.12)}
.dress-spotlight-card:before{content:'♕';position:absolute;right:-8px;top:-32px;font-size:9rem;color:rgba(201,164,76,.11);transform:rotate(10deg)}
.dress-copy h2{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,4vw,3.6rem);line-height:.98;margin:10px 0 16px;color:#5b352f}
.dress-copy p{font-size:1.02rem;line-height:1.7;max-width:660px;color:#6d564f;margin:0 0 22px}
.dress-color-grid{display:grid;grid-template-columns:repeat(2,minmax(110px,1fr));gap:14px;position:relative;z-index:1}
.dress-color{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:18px;background:rgba(255,255,255,.75);box-shadow:0 8px 18px rgba(90,55,48,.08);font-size:.92rem;color:#5c4640}
.dress-color span{width:44px;height:44px;border-radius:50%;display:block;border:3px solid rgba(255,255,255,.85);box-shadow:0 0 0 1px rgba(82,53,47,.12)}
.dress-color.brown span{background:var(--dress-brown)}.dress-color.powder span{background:var(--dress-powder)}.dress-color.nude span{background:var(--dress-nude)}.dress-color.gold span{background:linear-gradient(135deg,#ecd58b,#b88422)}
.dress-ack-card{margin:18px 0 20px;padding:18px;border-radius:20px;background:linear-gradient(135deg,#fff8f3,#f6e5e7);border:1px solid rgba(107,63,53,.14)}
.dress-mini-palette{display:flex;gap:8px;margin-bottom:12px}.dress-mini-palette i{width:28px;height:28px;border-radius:50%;box-shadow:0 0 0 2px #fff,0 0 0 3px rgba(107,63,53,.12)}
.c-brown{background:var(--dress-brown)}.c-powder{background:var(--dress-powder)}.c-nude{background:var(--dress-nude)}.c-gold{background:linear-gradient(135deg,#ecd58b,#b88422)}
.dress-check{display:flex;gap:12px;align-items:flex-start;font-weight:700;color:#5c403a;cursor:pointer}.dress-check input{width:21px;height:21px;margin-top:2px;accent-color:var(--dress-brown);flex:0 0 auto}.dress-ack-card p{margin:9px 0 0 33px;font-size:.9rem;color:#7b635c}
.practical-block.dress-block{background:linear-gradient(135deg,#fff7f2,#f7e4e7);border:1px solid rgba(201,164,76,.28)}
@media(max-width:760px){.dress-spotlight{padding-top:18px}.dress-spotlight-card{grid-template-columns:1fr;padding:24px 20px;border-radius:26px}.dress-color-grid{grid-template-columns:1fr 1fr;gap:10px}.dress-color{padding:10px;font-size:.84rem}.dress-color span{width:36px;height:36px}.dress-copy .btn{width:100%}}


/* ===== css/princess-world-v5.css ===== */
/* V5 — véritable univers princesse animé, dans la palette marron / rose poudré / nude / doré */
:root{
  --royal-brown:#6b3f35;
  --royal-powder:#d9a0a7;
  --royal-nude:#e7c4b4;
  --royal-gold:#c9a44c;
  --royal-cream:#fff9f3;
}
body{overflow-x:hidden}
.fairy-world{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:linear-gradient(180deg,#fff9f4 0%,#f9e9e8 50%,#f3e3d6 100%)}
.sky-cloud{position:absolute;width:190px;height:56px;border-radius:999px;background:rgba(255,255,255,.82);filter:drop-shadow(0 12px 18px rgba(107,63,53,.08));animation:cloudDrift 28s linear infinite}
.sky-cloud:before,.sky-cloud:after{content:"";position:absolute;border-radius:50%;background:inherit}
.sky-cloud:before{width:78px;height:78px;left:28px;top:-32px}.sky-cloud:after{width:98px;height:98px;right:22px;top:-45px}
.cloud-one{top:8%;left:-210px}.cloud-two{top:29%;left:-280px;transform:scale(.72);animation-duration:34s;animation-delay:-12s}.cloud-three{top:63%;left:-250px;transform:scale(.9);animation-duration:38s;animation-delay:-22s}
.floating-balloon{position:absolute;width:38px;height:48px;border-radius:50% 50% 46% 46%;box-shadow:inset -8px -10px 0 rgba(107,63,53,.08),0 12px 24px rgba(107,63,53,.12);animation:balloonFloat 8s ease-in-out infinite}
.floating-balloon:after{content:"";position:absolute;width:1px;height:110px;background:rgba(107,63,53,.3);left:50%;top:47px}.floating-balloon:before{content:"";position:absolute;width:8px;height:8px;background:inherit;left:15px;bottom:-4px;transform:rotate(45deg)}
.balloon-one{left:4%;top:72%;background:var(--royal-powder)}.balloon-two{right:6%;top:24%;background:var(--royal-gold);animation-delay:-2.5s}.balloon-three{right:17%;top:78%;background:var(--royal-nude);animation-delay:-5s}
.magic-star{position:absolute;color:var(--royal-gold);text-shadow:0 0 14px rgba(201,164,76,.55);animation:twinkle 2.4s ease-in-out infinite}.star-one{top:15%;left:18%;font-size:26px}.star-two{top:42%;right:15%;font-size:20px;animation-delay:-.8s}.star-three{top:75%;left:12%;font-size:30px;animation-delay:-1.5s}.star-four{top:60%;right:28%;font-size:22px;animation-delay:-2s}
.flying-butterfly{position:absolute;font-size:30px;filter:saturate(.45) sepia(.25);animation:butterflyPath 15s ease-in-out infinite}.butterfly-one{left:8%;top:40%}.butterfly-two{right:10%;top:58%;animation-delay:-7s;animation-duration:18s}
.flower-garden{position:absolute;bottom:4px;font-size:38px;letter-spacing:8px;color:var(--royal-powder);text-shadow:0 3px 0 rgba(107,63,53,.08);animation:flowerSway 4s ease-in-out infinite}.flower-left{left:12px}.flower-right{right:12px;animation-delay:-2s}
.princess-magic{z-index:2}
.princess-gate{position:relative;isolation:isolate}
.princess-gate .gate-visual{position:relative;overflow:hidden}
.gate-castle{position:absolute;left:50%;bottom:6%;width:min(420px,78%);height:270px;transform:translateX(-50%);opacity:.88;filter:drop-shadow(0 20px 30px rgba(82,46,39,.18));animation:castleRise 1.1s cubic-bezier(.2,.8,.2,1) both}
.castle-main,.castle-tower{position:absolute;bottom:0;background:linear-gradient(180deg,#f2d9d4,#c98f93);border:4px solid rgba(255,255,255,.55);box-shadow:inset 0 -18px 0 rgba(107,63,53,.08)}
.castle-main{left:25%;width:50%;height:180px;border-radius:28px 28px 0 0}.castle-main:before{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:68px;height:92px;border-radius:38px 38px 0 0;background:var(--royal-brown)}
.castle-tower{width:28%;height:220px;border-radius:24px 24px 0 0}.tower-left{left:0}.tower-right{right:0}
.castle-tower:before{content:"";position:absolute;left:50%;top:-52px;transform:translateX(-50%);width:0;height:0;border-left:54px solid transparent;border-right:54px solid transparent;border-bottom:58px solid var(--royal-gold)}
.castle-main:after,.castle-tower:after{content:"✦";position:absolute;top:28px;left:50%;transform:translateX(-50%);font-size:34px;color:#fff7da;text-shadow:0 2px 8px rgba(107,63,53,.25)}
.castle-crown{position:absolute;z-index:3;left:50%;top:-72px;transform:translateX(-50%);font-size:74px;color:var(--royal-gold);text-shadow:0 7px 16px rgba(107,63,53,.18);animation:crownFloat 3s ease-in-out infinite}
.gate-sparkles i{position:absolute;color:#fff4c4;font-style:normal;text-shadow:0 0 12px rgba(201,164,76,.8);animation:twinkle 1.8s ease-in-out infinite}.gate-sparkles i:nth-child(1){left:12%;top:16%;font-size:28px}.gate-sparkles i:nth-child(2){right:18%;top:11%;font-size:22px;animation-delay:-.5s}.gate-sparkles i:nth-child(3){left:22%;top:55%;font-size:20px;animation-delay:-1s}.gate-sparkles i:nth-child(4){right:12%;top:45%;font-size:24px;animation-delay:-1.4s}.gate-sparkles i:nth-child(5){left:48%;top:8%;font-size:18px;animation-delay:-.7s}
.princess-gate .gate-float{border:2px solid rgba(201,164,76,.35)!important;box-shadow:0 26px 65px rgba(107,63,53,.18),0 0 0 8px rgba(255,255,255,.35)!important;backdrop-filter:blur(18px)}
.princess-gate .gate-kicker:before{content:"♕ ";color:var(--royal-gold)}
.princess-gate .gate-title{color:var(--royal-brown);text-shadow:0 2px 0 #fff}
.princess-hero{position:relative;overflow:hidden}
.princess-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 80% 15%,rgba(201,164,76,.20),transparent 28%),radial-gradient(circle at 12% 80%,rgba(217,160,167,.26),transparent 34%);pointer-events:none}
.hero-decor span{position:absolute;z-index:1;pointer-events:none}.hero-crown{right:9%;top:7%;font-size:78px;color:rgba(201,164,76,.34);animation:crownFloat 4s ease-in-out infinite}.hero-wand{left:6%;top:26%;font-size:34px;color:var(--royal-gold);animation:twinkle 2s infinite}.hero-heart{right:42%;bottom:11%;font-size:36px;color:rgba(217,160,167,.48);animation:heartBeat 2.8s ease-in-out infinite}
.princess-hero .hero-photo{position:relative;border-radius:48% 48% 26px 26px!important;border:7px solid rgba(255,255,255,.78)!important;box-shadow:0 0 0 4px rgba(201,164,76,.42),0 28px 60px rgba(107,63,53,.24)!important}
.princess-hero .hero-photo:before{content:"♕";position:absolute;z-index:2;top:-42px;left:50%;transform:translateX(-50%);font-size:68px;color:var(--royal-gold);text-shadow:0 6px 14px rgba(107,63,53,.25)}
.princess-hero .title{color:var(--royal-brown);text-wrap:balance}.princess-hero .eyebrow{background:rgba(255,255,255,.7);border:1px solid rgba(201,164,76,.32);padding:8px 14px;border-radius:999px}
.shortcut-card{position:relative;overflow:hidden}.shortcut-card:after{content:"✦";position:absolute;right:12px;top:8px;color:rgba(201,164,76,.34);font-size:24px}.shortcut-card:hover{transform:translateY(-8px) rotate(-.5deg)!important}
.dress-spotlight-card{border:3px solid rgba(255,255,255,.9)!important;box-shadow:0 20px 44px rgba(107,63,53,.14),0 0 0 4px rgba(201,164,76,.20)!important}
@keyframes cloudDrift{from{transform:translateX(0)}to{transform:translateX(calc(100vw + 520px))}}
@keyframes balloonFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-34px) rotate(4deg)}}
@keyframes twinkle{0%,100%{opacity:.35;transform:scale(.72) rotate(0)}50%{opacity:1;transform:scale(1.25) rotate(18deg)}}
@keyframes butterflyPath{0%,100%{transform:translate(0,0) rotate(-8deg)}25%{transform:translate(70px,-42px) rotate(8deg)}50%{transform:translate(145px,20px) rotate(-5deg)}75%{transform:translate(60px,54px) rotate(8deg)}}
@keyframes flowerSway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(3deg)}}
@keyframes castleRise{from{opacity:0;transform:translate(-50%,55px) scale(.92)}to{opacity:.88;transform:translate(-50%,0) scale(1)}}
@keyframes crownFloat{0%,100%{transform:translateX(-50%) translateY(0) rotate(-2deg)}50%{transform:translateX(-50%) translateY(-10px) rotate(2deg)}}
@keyframes heartBeat{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
@media(prefers-reduced-motion:reduce){.fairy-world *,.gate-castle,.castle-crown,.hero-decor span{animation:none!important}}
@media(max-width:780px){
  .sky-cloud{opacity:.55}.floating-balloon{transform:scale(.75)}.flower-garden{font-size:26px}
  .gate-castle{height:205px;width:88%;bottom:3%}.castle-main{height:135px}.castle-tower{height:165px}.castle-crown{font-size:54px;top:-52px}
  .hero-crown{font-size:54px;right:3%;top:2%}.hero-wand{left:2%;top:18%}.hero-heart{right:8%;bottom:5%}
  .princess-hero .hero-photo:before{font-size:50px;top:-34px}
}


/* ===== css/admin-v6.css ===== */
:root{--managed-gate-image:url('../assets/img/gate-cover.jpg');--managed-hero-image:url('../assets/img/line-hero.jpg')}
.gate,.gate-visual,.gate-redesign .gate-visual{background-image:linear-gradient(0deg,rgba(54,28,24,.18),rgba(54,28,24,0) 42%),var(--managed-gate-image)!important}
.hero,.hero-photo{background-image:linear-gradient(90deg,rgba(255,250,247,.97) 0%,rgba(255,250,247,.90) 42%,rgba(255,250,247,.12) 100%),var(--managed-hero-image)!important}
.hero-photo{background-image:var(--managed-hero-image)!important;background-size:cover!important;background-position:30% center!important}
.admin-section-intro{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:0 0 22px;padding:20px 22px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(135deg,#fff,#fff8f4)}
.admin-section-intro h2,.admin-section-intro h3{margin:0;color:var(--chocolate)}
.admin-section-intro p{margin:5px 0 0;color:var(--muted)}
.admin-subtitle{margin:24px 0 14px;color:var(--chocolate)}
.media-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:28px}
.media-card{display:flex;flex-direction:column;gap:11px;padding:15px;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:var(--shadow-sm)}
.media-card h3{margin:0;color:var(--chocolate);font-size:1.05rem}.media-card p{margin:0;color:var(--muted);font-size:.78rem;overflow-wrap:anywhere}
.media-preview{height:180px;border-radius:18px;overflow:hidden;background:linear-gradient(135deg,var(--rose-soft),#fff4dc);display:grid;place-items:center;color:var(--muted)}
.media-preview img{width:100%;height:100%;object-fit:cover}.media-row{display:grid;grid-template-columns:100px 1fr;gap:10px;align-items:center}.media-check{display:flex;align-items:center;gap:8px;color:var(--chocolate);font-weight:800}.media-actions,.modal-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.empty-media{grid-column:1/-1;text-align:center;color:var(--muted)}
.gallery-admin-head{margin-top:28px}.admin-side{overflow:auto}.admin-side button{white-space:nowrap}
@media(max-width:900px){.media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-section-intro{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.media-grid{grid-template-columns:1fr}.media-preview{height:220px}.admin-section-intro{padding:16px}.media-actions .btn{flex:1}.admin-side{display:flex;gap:8px}.admin-side h3{display:none}}
.forgot-link{margin-top:10px;border:0;background:transparent;color:var(--chocolate);text-decoration:underline;font-weight:800;cursor:pointer}.forgot-link:hover{color:var(--gold-dark,#9a6d22)}
.media-hint{font-size:.82rem;color:var(--muted);margin:.2rem 0 .5rem}.btn-ghost{background:#fff;border:1px dashed rgba(91,58,49,.28);color:var(--chocolate)}
.media-actions{flex-wrap:wrap}.media-actions .btn,.media-actions label.btn{flex:1 1 135px;text-align:center}



/* ===== V11: médias dynamiques fiables + univers enfant plus vivant ===== */
.kids-magic-layer{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.kid-balloon,.kid-star{position:absolute;filter:drop-shadow(0 8px 14px rgba(107,63,53,.15));user-select:none}
.kid-balloon{font-size:clamp(34px,4vw,62px);animation:kidBalloon 5.4s ease-in-out infinite}
.kb1{left:8%;top:18%;animation-delay:-1.2s}.kb2{right:10%;top:12%;animation-delay:-3.1s}
.kid-star{font-size:clamp(22px,2.8vw,40px);animation:kidTwinkle 2.4s ease-in-out infinite}
.ks1{left:19%;top:34%}.ks2{right:23%;top:29%;animation-delay:-1.1s}
.kid-bubble{position:absolute;width:clamp(22px,3vw,44px);aspect-ratio:1;border-radius:50%;border:2px solid rgba(255,255,255,.7);background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.85),rgba(237,182,190,.20) 45%,rgba(201,164,76,.12));box-shadow:inset 0 0 14px rgba(255,255,255,.7);animation:kidBubble 7s linear infinite}
.kbu1{left:28%;bottom:-8%;animation-delay:-1s}.kbu2{left:58%;bottom:-10%;animation-delay:-3.4s}.kbu3{left:76%;bottom:-12%;animation-delay:-5.2s}
.hero-kids-magic{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.hero-kids-magic span{position:absolute;font-size:clamp(24px,3.3vw,48px);animation:kidTwinkle 3s ease-in-out infinite;filter:drop-shadow(0 8px 14px rgba(107,63,53,.12))}
.hero-kids-magic span:nth-child(1){left:4%;top:16%;animation:kidBalloon 5s ease-in-out infinite}.hero-kids-magic span:nth-child(2){right:8%;top:14%;animation-delay:-.8s}.hero-kids-magic span:nth-child(3){right:13%;bottom:12%;animation:butterflyPath 8s ease-in-out infinite}.hero-kids-magic span:nth-child(4){left:46%;top:8%;animation-delay:-1.6s}
.btn-primary,.shortcut-card,.choice,.drink-chip{transition:transform .2s ease,box-shadow .2s ease,filter .2s ease}
.btn-primary:hover,.choice:hover,.drink-chip:hover{transform:translateY(-3px) scale(1.02);filter:saturate(1.08)}
.btn-primary:active,.choice:active,.drink-chip:active{transform:translateY(0) scale(.98)}
.star-welcome .star-symbol{animation:kidBounce 1.8s ease-in-out infinite}
@keyframes kidBalloon{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-26px) rotate(5deg)}}
@keyframes kidTwinkle{0%,100%{opacity:.35;transform:scale(.78) rotate(-10deg)}50%{opacity:1;transform:scale(1.2) rotate(12deg)}}
@keyframes kidBubble{0%{transform:translateY(0) scale(.75);opacity:0}12%{opacity:.8}80%{opacity:.65}100%{transform:translateY(-115vh) translateX(35px) scale(1.18);opacity:0}}
@keyframes kidBounce{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-10px) rotate(4deg)}}
@media(max-width:780px){.kb2{display:none}.kids-magic-layer{opacity:.85}.hero-kids-magic span:nth-child(2){display:none}}
@media(prefers-reduced-motion:reduce){.kids-magic-layer *,.hero-kids-magic *,.star-welcome .star-symbol{animation:none!important}}

/* ===== V12 : positionnement responsive global et anti-décalage ===== */
html{width:100%;max-width:100%;overflow-x:hidden;scroll-behavior:smooth}
body{width:100%;max-width:100%;overflow-x:hidden;min-height:100%;margin:0}
*,*::before,*::after{box-sizing:border-box}
img,svg,video,canvas,iframe{max-width:100%;height:auto}
button,input,select,textarea{max-width:100%;min-width:0}
#app,main,.section,.container,.narrow,.admin-main,.admin-shell,.hero-grid,.gate-panel,.gate-visual{min-width:0;max-width:100%}
.container{width:min(1280px,calc(100% - clamp(28px,5vw,64px)))!important;margin-inline:auto!important;padding-inline:0!important}
.narrow{width:min(1040px,calc(100% - clamp(28px,5vw,64px)))!important;margin-inline:auto!important;padding-inline:0!important}
.section{width:100%;overflow-x:clip}

/* Navigation stable et centrée */
.nav{left:0;right:0;width:100%}
.nav-inner{width:min(1280px,calc(100% - 28px))!important;margin-inline:auto!important;display:flex;align-items:center;justify-content:space-between;gap:18px}
.brand{min-width:0;flex:0 1 auto}
.brand span:last-child{min-width:0}
.nav-links{min-width:0;justify-content:flex-end}
.nav-links button{white-space:nowrap}

/* Page de connexion */
.gate-redesign{width:100%;grid-template-columns:minmax(0,1.2fr) minmax(390px,.8fr)!important}
.gate-visual,.gate-panel{width:100%;min-width:0}
.gate-panel{padding:clamp(24px,4vw,64px)!important}
.gate-redesign .gate-float{position:relative!important;inset:auto!important;transform:none!important;width:min(100%,520px)!important;margin-inline:auto!important}
.gate-title,.gate-copy{text-wrap:balance}
.gate-form .input{width:100%}
.gate-mobile-title{max-width:min(92%,760px)}

/* Pages publiques */
.hero-grid{grid-template-columns:minmax(0,1fr) minmax(340px,.92fr)!important}
.hero-copy,.hero-photo{min-width:0;width:100%}
.hero-copy{align-self:center}
.hero-photo{justify-self:stretch}
.hero .title{overflow-wrap:anywhere;text-wrap:balance}
.countdown{width:100%;grid-template-columns:repeat(4,minmax(0,1fr))}
.count-card{min-width:0}
.shortcut-grid,.dress-spotlight-card,.practical-layout,.program-split,.media-grid,.charts-grid,.stat-grid{min-width:0}
.shortcut-card,.program-part,.practical-block,.chart-card,.stat,.media-card{min-width:0;overflow:hidden}
.section-head,.compact-head,.answer-heading{grid-template-columns:minmax(0,1fr) minmax(260px,.7fr)!important}
.map-panel iframe{display:block;width:100%;height:100%;min-height:440px;border:0}

/* Formulaires */
.card,.premium-form,.saved-response-card,.invite-summary{max-width:100%}
.grid-2,.grid-3,.event-mini-grid,.saved-grid{min-width:0}
.field{min-width:0}
.input,.select,.textarea{width:100%}
.choice-row,.drink-grid,.companion-actions,.modal-actions,.media-actions{max-width:100%}
.companion{overflow:hidden}

/* Administration */
.admin-shell{grid-template-columns:240px minmax(0,1fr)!important;width:100%}
.admin-main{width:100%;overflow:hidden}
.admin-side{max-width:100%}
.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.table-wrap{width:100%;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}
.table-wrap table{width:100%;min-width:780px}
.admin-actions{align-items:stretch}
.admin-actions .btn{max-width:100%}
.media-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.media-preview{width:100%}
.room-plan{max-width:100%;overflow:hidden}

/* Modales et notifications */
.modal{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overflow:auto}
.modal-card{width:min(620px,100%);max-height:calc(100dvh - 32px);overflow:auto;margin:auto}
.toast-mount{right:max(12px,env(safe-area-inset-right));left:auto;bottom:max(12px,env(safe-area-inset-bottom));max-width:min(380px,calc(100vw - 24px))}
.toast{min-width:0;width:100%}

/* Grand écran */
@media(min-width:1440px){
  .container{width:min(1320px,calc(100% - 80px))!important}
  .narrow{width:min(1080px,calc(100% - 80px))!important}
  .gate-redesign{grid-template-columns:minmax(0,1.35fr) minmax(430px,.65fr)!important}
}

/* Tablette paysage / petit ordinateur */
@media(max-width:1100px){
  .nav-links{gap:2px}
  .nav-links button{padding-inline:11px;font-size:.78rem}
  .gate-redesign{grid-template-columns:minmax(0,1fr) minmax(360px,.82fr)!important}
  .hero-grid{grid-template-columns:minmax(0,1fr) minmax(300px,.82fr)!important;gap:34px!important}
  .hero-copy,.hero-photo{min-height:520px!important}
  .program-split{grid-template-columns:1fr!important}
  .practical-layout{grid-template-columns:1fr!important}
  .map-panel{min-height:420px}
  .media-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .admin-shell{grid-template-columns:210px minmax(0,1fr)!important;gap:18px!important}
}

/* Tablette portrait */
@media(max-width:900px){
  .container,.narrow{width:min(100% - 28px,100%)!important}
  .nav-inner{width:calc(100% - 24px)!important}
  .menu-toggle{display:inline-flex!important;flex:0 0 auto}
  .nav-links{position:fixed;top:0;right:0;bottom:0;width:min(360px,88vw);padding:96px 20px 32px;display:flex!important;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;background:#fffaf7;box-shadow:-18px 0 46px rgba(66,38,32,.22);transform:translateX(105%);transition:transform .25s ease;z-index:1001;overflow:auto}
  .nav-links.open{transform:translateX(0)}
  .nav-links button{width:100%;text-align:left;padding:15px 18px;font-size:.95rem;border-radius:16px}
  .gate-redesign{display:grid!important;grid-template-columns:1fr!important;min-height:auto!important}
  .gate-visual{min-height:56svh!important}
  .gate-panel{min-height:44svh!important;padding:28px 18px 42px!important}
  .gate-redesign .gate-float{width:min(620px,100%)!important}
  .hero-grid{grid-template-columns:1fr!important}
  .hero-copy{min-height:auto!important;text-align:center;align-items:center}
  .hero-copy .lead,.hero-primary-action,.welcome-note{margin-inline:auto}
  .hero-primary-action{justify-content:center}
  .hero-photo{min-height:clamp(420px,75vw,620px)!important;width:min(720px,100%);margin-inline:auto}
  .section-head,.compact-head,.answer-heading{grid-template-columns:1fr!important;align-items:start!important}
  .section-head .lead,.compact-head .lead,.answer-heading .lead{max-width:none}
  .dress-spotlight-card{grid-template-columns:1fr!important}
  .shortcut-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .admin-shell{display:block!important}
  .admin-side{position:sticky!important;top:74px!important;z-index:30;display:flex!important;gap:8px;overflow-x:auto;padding:10px!important;margin-bottom:18px;border-radius:18px;scrollbar-width:none}
  .admin-side::-webkit-scrollbar{display:none}
  .admin-side h3{display:none}
  .admin-side button{width:auto!important;flex:0 0 auto;margin:0!important;padding:11px 14px!important}
  .admin-main{overflow:visible}
  .admin-page-head{grid-template-columns:1fr!important}
  .media-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Téléphone */
@media(max-width:640px){
  :root{--mobile-pad:16px}
  .container,.narrow{width:calc(100% - (var(--mobile-pad) * 2))!important}
  .section{padding:50px 0!important}
  .nav-inner{width:calc(100% - 18px)!important;min-height:68px!important}
  .brand-photo{width:46px!important;height:46px!important;flex:0 0 46px}
  .brand strong{font-size:1.1rem!important}
  .brand small{font-size:.68rem!important}
  .gate-visual{min-height:52svh!important;background-position:center center!important}
  .gate-panel{min-height:48svh!important;padding:24px 14px 34px!important}
  .gate-redesign .gate-float{padding:28px 20px!important;border-radius:24px!important}
  .gate-title{font-size:clamp(2.3rem,12vw,3.5rem)!important}
  .gate-copy{font-size:.98rem!important}
  .gate-mobile-title{left:18px!important;right:18px!important;bottom:22px!important}
  .gate-mobile-title strong{font-size:clamp(2.2rem,12vw,3.7rem)!important}
  .hero{padding:48px 0!important}
  .hero-copy{text-align:left;align-items:stretch}
  .hero .title{font-size:clamp(2.8rem,13vw,4.3rem)!important;line-height:.92!important}
  .hero-copy .lead{margin-inline:0}
  .hero-primary-action{justify-content:flex-start;align-items:stretch}
  .hero-primary-action .btn{width:100%}
  .hero-photo{min-height:clamp(390px,112vw,560px)!important;border-radius:34% 34% 22px 22px!important}
  .countdown{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .count-card{padding:17px 10px!important;border-radius:20px!important}
  .shortcut-grid{grid-template-columns:1fr!important}
  .dress-color-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .program-part{padding:20px 16px!important}
  .program-part .program-row{grid-template-columns:68px minmax(0,1fr)!important;gap:12px!important}
  .program-icon{width:44px!important;height:44px!important}
  .program-title{font-size:.98rem!important}
  .program-desc{font-size:.88rem!important}
  .grid-2,.grid-3,.saved-grid,.invite-summary,.event-mini-grid{grid-template-columns:1fr!important}
  .premium-form{padding:22px 16px!important;border-radius:24px!important}
  .choice-row{display:grid!important;grid-template-columns:1fr!important}
  .choice{min-width:0!important;width:100%}
  .companion{padding:14px!important}
  .companion-head{align-items:flex-start;gap:10px}
  .companion-actions{display:grid!important;grid-template-columns:1fr!important}
  .companion-actions .btn{width:100%}
  .drink-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .drink-chip{width:100%}
  .stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
  .stat{padding:16px!important}
  .stat strong{font-size:2rem!important}
  .admin-page{padding-top:20px!important}
  .admin-side{top:68px!important;margin-inline:-4px}
  .admin-actions{display:grid!important;grid-template-columns:1fr!important}
  .admin-actions .btn,.admin-actions label.btn{width:100%!important}
  .media-grid{grid-template-columns:1fr!important}
  .media-preview{height:220px!important}
  .media-actions{display:grid!important;grid-template-columns:1fr!important}
  .media-actions .btn,.media-actions label.btn{width:100%!important}
  .table-wrap{border-radius:18px!important}
  .modal{padding:10px!important;align-items:end}
  .modal-card{width:100%!important;max-height:90dvh!important;border-radius:24px 24px 12px 12px!important;padding:20px 16px!important}
  .footer{padding:42px 0!important}
  .footer .script{font-size:2.5rem!important}
  .toast-mount{left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom))}
}

/* Très petits téléphones */
@media(max-width:380px){
  .container,.narrow{width:calc(100% - 24px)!important}
  .brand strong{font-size:1rem!important}
  .brand small{display:none}
  .gate-redesign .gate-float{padding:24px 16px!important}
  .gate-title{font-size:2.35rem!important}
  .countdown{gap:8px!important}
  .drink-grid{grid-template-columns:1fr!important}
  .stat-grid{grid-template-columns:1fr!important}
}

/* Paysage mobile : éviter les éléments coupés */
@media(max-height:560px) and (orientation:landscape){
  .gate-redesign{grid-template-columns:1fr 1fr!important;min-height:100dvh!important}
  .gate-visual,.gate-panel{min-height:100dvh!important}
  .gate-panel{padding:16px!important}
  .gate-redesign .gate-float{padding:18px!important;max-height:calc(100dvh - 24px);overflow:auto}
  .gate-title{font-size:2.25rem!important;margin:8px 0!important}
  .gate-copy{font-size:.9rem!important;line-height:1.45!important}
  .gate-form{margin-top:14px!important}
  .code-help,.forgot-link{margin-top:8px!important}
}


/* ===== V13 URGENT FIX: couverture réellement dynamique ===== */
.gate-redesign{
  position:relative!important;
  isolation:isolate;
  overflow:hidden!important;
  background:#f7ebe6!important;
}
.gate-cover-image{
  position:absolute!important;
  inset:0!important;
  z-index:-3!important;
  width:100%!important;
  height:100%!important;
  min-height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
}
.gate-cover-overlay{
  position:absolute;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(42,20,17,.08) 0%,rgba(42,20,17,.12) 50%,rgba(42,20,17,.30) 100%);
}
.gate-redesign .gate-visual{
  position:relative!important;
  z-index:0!important;
  background:transparent!important;
}
.gate-redesign .gate-panel{
  position:relative!important;
  z-index:2!important;
}
@media(max-width:960px){
  .gate-cover-image{object-position:center 22%!important;}
  .gate-cover-overlay{background:linear-gradient(180deg,rgba(42,20,17,.04) 0%,rgba(42,20,17,.10) 48%,rgba(42,20,17,.34) 100%);}
}


/* ===== V14 : médiathèque centralisée et fonds dynamiques ===== */
body{background-image:linear-gradient(rgba(255,250,247,.94),rgba(255,250,247,.94)),var(--managed-page-bg)!important;background-size:cover,cover;background-attachment:fixed,fixed;background-position:center,center;}
.program-soft{background-image:linear-gradient(rgba(255,250,247,.88),rgba(255,250,247,.92)),var(--managed-program-bg)!important;background-size:cover;background-position:center;}
.gift-page{background-image:linear-gradient(rgba(255,250,247,.88),rgba(255,250,247,.92)),var(--managed-gifts-bg)!important;background-size:cover;background-position:center;}
.gallery-section{background-image:linear-gradient(rgba(255,250,247,.9),rgba(255,250,247,.92)),var(--managed-gallery-bg)!important;background-size:cover;background-position:center;}
.dress-spotlight{background-image:linear-gradient(rgba(255,250,247,.88),rgba(255,250,247,.92)),var(--managed-dress-bg)!important;background-size:cover;background-position:center;}
.media-meta{margin:4px 0 10px;color:var(--muted);font-size:.82rem;word-break:break-word}
.media-card .field{margin-top:10px;text-align:left}
.media-card .field label{display:block;margin-bottom:6px;font-size:.78rem;font-weight:700;color:var(--chocolate)}

/* =====================================================================
   V15 FINAL RESPONSIVE — alignement stable téléphone/tablette/ordinateur
   Chargé en dernier pour neutraliser les anciens conflits de styles.
   ===================================================================== */
:root{
  --v15-nav-h:80px;
  --v15-content:min(1320px,calc(100vw - 40px));
}
html,body{max-width:100%;overflow-x:hidden!important}
body{min-width:320px}
#app{width:100%;min-width:0}
.container{width:var(--v15-content)!important;max-width:1320px!important;margin-inline:auto!important}
.narrow{width:min(1040px,calc(100vw - 40px))!important;max-width:1040px!important;margin-inline:auto!important}

/* Connexion : l'image reste uniquement dans la zone de gauche sur desktop */
.gate-redesign{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) clamp(420px,34vw,560px)!important;
  min-height:100dvh!important;
  overflow:hidden!important;
  isolation:isolate!important;
}
.gate-cover-image{
  inset:0 auto 0 0!important;
  width:calc(100% - clamp(420px,34vw,560px))!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
  z-index:-2!important;
}
.gate-cover-overlay{
  right:clamp(420px,34vw,560px)!important;
  background:linear-gradient(0deg,rgba(50,27,23,.25),rgba(50,27,23,.01) 52%)!important;
}
.gate-visual{grid-column:1;min-width:0!important;min-height:100dvh!important;background:none!important}
.gate-panel{
  grid-column:2;
  min-width:0!important;
  min-height:100dvh!important;
  padding:clamp(24px,3vw,54px)!important;
  overflow:auto!important;
}
.gate-redesign .gate-float{
  width:min(100%,470px)!important;
  padding:clamp(28px,3.2vw,46px)!important;
  margin:auto!important;
}
.gate-title{
  font-size:clamp(2.65rem,3.45vw,4.15rem)!important;
  max-width:11ch!important;
}
.gate-copy{max-width:34ch!important;font-size:clamp(.96rem,1.05vw,1.08rem)!important}
.gate-form{width:100%!important;min-width:0!important}
.gate-form .input{
  min-width:0!important;
  padding-inline:18px!important;
  font-size:clamp(.82rem,.85vw,.98rem)!important;
  letter-spacing:.035em!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
.gate-form .input::placeholder{font-size:clamp(.78rem,.8vw,.92rem);letter-spacing:.025em;opacity:.9}
.forgot-link{max-width:100%;white-space:normal;text-align:center;line-height:1.35}

/* Modal d'accueil invité : toujours centrée, jamais géante ni coupée */
.modal{display:grid!important;place-items:center!important;padding:16px!important;overflow:auto!important}
.modal-card{width:min(620px,calc(100vw - 32px))!important;max-width:620px!important;max-height:calc(100dvh - 32px)!important;margin:auto!important;overflow:auto!important}
.modal-card:has(.star-welcome){padding:0!important;background:transparent!important;box-shadow:none!important}
.star-welcome{width:100%!important;max-width:620px!important;max-height:calc(100dvh - 32px)!important;overflow:auto!important}
.star-welcome h2{font-size:clamp(2.6rem,5.6vw,4.7rem)!important;overflow-wrap:normal!important;word-break:normal!important}

/* Navigation et pages publiques */
.nav-inner{width:min(1320px,calc(100% - 32px))!important}
.hero-grid{width:min(1320px,calc(100% - 40px))!important;margin-inline:auto!important;display:grid!important;grid-template-columns:minmax(0,1fr) minmax(360px,.88fr)!important;gap:clamp(34px,5vw,76px)!important;padding-block:clamp(48px,6vw,90px)!important}
.hero-copy,.hero-photo{min-width:0!important}
.hero-photo{min-height:clamp(500px,62vh,720px)!important}
.countdown-priority{grid-template-columns:repeat(4,minmax(0,1fr))!important;width:100%!important}
.count-card{min-width:0!important}
.count-card strong{font-size:clamp(1.75rem,3vw,3rem)!important}
.count-card span{white-space:nowrap!important;font-size:clamp(.52rem,.65vw,.68rem)!important}
.section-head,.compact-head,.answer-heading{width:100%!important;min-width:0!important}
.shortcut-grid,.dress-spotlight-card,.practical-layout,.program-split,.media-grid,.charts-grid,.stat-grid{width:100%!important;min-width:0!important}

/* Administration */
.admin-page>.container.admin-shell{width:min(1480px,calc(100vw - 40px))!important;max-width:1480px!important}
.admin-main{min-width:0!important;width:100%!important}
.media-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
.media-card{min-width:0!important}
.media-preview{aspect-ratio:16/10;overflow:hidden}
.media-preview img{width:100%;height:100%;object-fit:cover}
.table-wrap{max-width:100%!important;overflow:auto!important;-webkit-overflow-scrolling:touch}

/* Ordinateurs portables / zoom navigateur */
@media (max-width:1280px){
  .gate-redesign{grid-template-columns:minmax(0,1fr) clamp(390px,36vw,500px)!important}
  .gate-cover-image{width:calc(100% - clamp(390px,36vw,500px))!important}
  .gate-cover-overlay{right:clamp(390px,36vw,500px)!important}
  .gate-panel{padding:24px!important}
  .gate-redesign .gate-float{width:min(100%,440px)!important;padding:30px 28px!important}
  .gate-title{font-size:clamp(2.5rem,3.6vw,3.65rem)!important}
  .nav-links button{padding-inline:10px!important;font-size:.76rem!important}
  .hero-grid{grid-template-columns:minmax(0,1fr) minmax(330px,.8fr)!important}
  .media-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Tablettes : image au-dessus, panneau dessous */
@media (max-width:960px){
  :root{--v15-nav-h:70px;--v15-content:calc(100vw - 28px)}
  .container{width:calc(100vw - 28px)!important}
  .narrow{width:calc(100vw - 28px)!important}
  .gate-redesign{display:flex!important;flex-direction:column!important;min-height:100dvh!important;overflow:visible!important}
  .gate-cover-image{
    position:absolute!important;
    inset:0 0 auto 0!important;
    width:100%!important;
    height:52svh!important;
    min-height:360px!important;
    max-height:600px!important;
    object-position:center 24%!important;
  }
  .gate-cover-overlay{inset:0 0 auto 0!important;width:100%!important;height:52svh!important;min-height:360px!important;max-height:600px!important;background:linear-gradient(180deg,rgba(40,20,18,.02),rgba(40,20,18,.04) 62%,rgba(40,20,18,.3))!important}
  .gate-visual{width:100%!important;height:52svh!important;min-height:360px!important;max-height:600px!important;flex:none!important}
  .gate-panel{width:100%!important;min-height:auto!important;padding:0 14px max(30px,env(safe-area-inset-bottom))!important;overflow:visible!important}
  .gate-redesign .gate-float{width:min(600px,100%)!important;margin:-36px auto 0!important;padding:30px 22px!important;border-radius:28px!important}
  .gate-title{font-size:clamp(2.5rem,8vw,3.6rem)!important;max-width:14ch!important}
  .gate-form .input,.gate-form .btn{min-height:56px!important}
  .hero-grid{display:grid!important;grid-template-columns:1fr!important;width:calc(100vw - 28px)!important;padding-block:36px 54px!important}
  .hero-photo{order:-1;min-height:clamp(420px,72vw,620px)!important;width:min(720px,100%)!important;margin-inline:auto!important}
  .hero-copy{text-align:center!important;align-items:center!important}
  .hero-primary-action{justify-content:center!important}
  .media-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .admin-page>.container.admin-shell{width:calc(100vw - 28px)!important}
}

/* Téléphones */
@media (max-width:640px){
  :root{--v15-content:calc(100vw - 24px)}
  .container,.narrow{width:calc(100vw - 24px)!important}
  .gate-cover-image,.gate-cover-overlay,.gate-visual{height:44svh!important;min-height:285px!important;max-height:470px!important}
  .gate-cover-image{object-position:center 22%!important}
  .gate-panel{padding-inline:10px!important}
  .gate-redesign .gate-float{margin-top:-24px!important;padding:24px 16px!important;border-radius:24px!important}
  .gate-title{font-size:clamp(2.18rem,10vw,2.9rem)!important;margin:14px auto!important}
  .gate-copy{font-size:.94rem!important;line-height:1.55!important}
  .gate-form .input{font-size:.9rem!important;padding-inline:14px!important}
  .gate-form .input::placeholder{font-size:.82rem!important;letter-spacing:0!important}
  .gate-form .btn{font-size:.92rem!important;padding-inline:12px!important}
  .code-help{font-size:.76rem!important}
  .forgot-link{font-size:.82rem!important}
  .hero-grid{width:calc(100vw - 24px)!important;text-align:left!important}
  .hero-copy{text-align:left!important;align-items:stretch!important}
  .hero-photo{min-height:clamp(390px,112vw,560px)!important}
  .hero .title{font-size:clamp(2.75rem,12vw,4rem)!important}
  .hero-primary-action{justify-content:flex-start!important}
  .hero-primary-action .btn{width:100%!important}
  .countdown-priority{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .count-card strong{font-size:clamp(1.65rem,8vw,2.2rem)!important}
  .media-grid{grid-template-columns:1fr!important}
  .media-card{width:100%!important}
  .media-actions{display:grid!important;grid-template-columns:1fr!important}
  .media-actions .btn,.media-actions label{width:100%!important}
  .admin-page>.container.admin-shell{width:calc(100vw - 20px)!important}
  .admin-page-head h1{font-size:clamp(2.65rem,13vw,3.8rem)!important}
  .modal{padding:10px!important}
  .modal-card{width:calc(100vw - 20px)!important;max-height:calc(100dvh - 20px)!important;padding:18px!important}
  .modal-card:has(.star-welcome){padding:0!important}
  .star-welcome{padding:28px 18px!important;border-radius:24px!important;max-height:calc(100dvh - 20px)!important}
  .star-welcome h2{font-size:clamp(2.45rem,12vw,3.55rem)!important}
}

/* Très petits écrans */
@media (max-width:380px){
  .container,.narrow{width:calc(100vw - 18px)!important}
  .gate-cover-image,.gate-cover-overlay,.gate-visual{height:40svh!important;min-height:255px!important}
  .gate-redesign .gate-float{padding:21px 13px!important}
  .gate-title{font-size:2.05rem!important}
  .gate-form .input{font-size:.84rem!important}
  .gate-form .input::placeholder{font-size:.76rem!important}
  .brand span:last-child{max-width:112px!important}
}

/* Téléphone en paysage */
@media (max-height:560px) and (orientation:landscape) and (max-width:960px){
  .gate-redesign{display:grid!important;grid-template-columns:1fr minmax(340px,44vw)!important;min-height:100dvh!important;overflow:hidden!important}
  .gate-cover-image{inset:0 auto 0 0!important;width:calc(100% - minmax(340px,44vw))!important;height:100%!important;min-height:100%!important;max-height:none!important}
  .gate-cover-overlay{inset:0 minmax(340px,44vw) 0 0!important;height:100%!important;min-height:100%!important;max-height:none!important}
  .gate-visual{grid-column:1!important;height:100dvh!important;min-height:100dvh!important;max-height:none!important}
  .gate-panel{grid-column:2!important;height:100dvh!important;overflow:auto!important;padding:12px!important}
  .gate-redesign .gate-float{margin:auto!important;padding:18px!important;border-radius:20px!important}
  .gate-title{font-size:2.15rem!important;margin:8px auto!important}
  .gate-copy{font-size:.86rem!important;line-height:1.4!important}
  .gate-form{margin-top:12px!important;gap:8px!important}
  .gate-form .input,.gate-form .btn{min-height:46px!important}
  .code-help,.forgot-link{margin-top:7px!important}
}


/* V16 — champ de connexion sécurisé, lisible et responsive */
.credential-field{position:relative;width:100%;min-width:0}
.credential-field .credential-input{width:100%;padding-right:58px!important;text-transform:none!important;letter-spacing:.03em}
.credential-toggle{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:44px;height:44px;border:0;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.86);color:var(--chocolate);font-size:1.15rem;cursor:pointer;box-shadow:0 5px 18px rgba(91,50,43,.12);transition:transform .2s ease,background .2s ease,box-shadow .2s ease;z-index:3}
.credential-toggle:hover{transform:translateY(-50%) scale(1.06);background:#fff;box-shadow:0 7px 22px rgba(91,50,43,.18)}
.credential-toggle:focus-visible{outline:3px solid rgba(201,164,76,.45);outline-offset:2px}
.credential-toggle .eye-closed{display:none}
.credential-toggle[aria-pressed="true"] .eye-open{display:none}
.credential-toggle[aria-pressed="true"] .eye-closed{display:inline}
.gate-form{min-width:0}
.gate-form>*{min-width:0}
.gate-form .credential-field{grid-column:1/-1}
@media (max-width:640px){
  .credential-field .credential-input{padding-right:54px!important}
  .credential-toggle{right:6px;width:42px;height:42px;font-size:1.05rem}
}

/* V19 — Correctif menu mobile : le panneau doit rester au-dessus du voile flouté */
@media (max-width: 960px) {
  .nav {
    z-index: 10000 !important;
    isolation: isolate;
  }
  .nav-inner {
    position: relative;
    z-index: 10002 !important;
  }
  .menu-toggle {
    position: relative;
    z-index: 10004 !important;
  }
  .nav-links {
    z-index: 10003 !important;
    max-height: calc(100dvh - var(--app-nav-mobile-h, 74px) - 28px) !important;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
  .nav-backdrop {
    z-index: 9998 !important;
  }
}

/* ===== V20 — compatibilité complète GSM, tablette, ordinateur, TV et 4K ===== */
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas,iframe{max-width:100%;height:auto}
button,input,select,textarea{max-width:100%}
main,#app{width:100%;min-width:0;overflow-x:clip}

/* Corrige la règle paysage invalide de la V15/V16 */
@media (max-height:560px) and (orientation:landscape) and (max-width:960px){
  .gate-redesign{grid-template-columns:minmax(0,1fr) clamp(340px,44vw,520px)!important}
  .gate-cover-image{width:calc(100% - clamp(340px,44vw,520px))!important}
  .gate-cover-overlay{right:clamp(340px,44vw,520px)!important}
}

/* GSM étroits et anciens appareils */
@media (max-width:340px){
  .container,.narrow{width:calc(100vw - 14px)!important}
  .nav-inner{width:calc(100% - 10px)!important}
  .brand-photo{width:42px!important;height:42px!important;flex-basis:42px!important}
  .brand strong{font-size:.94rem!important}
  .menu-toggle{width:50px!important;height:50px!important}
  .gate-redesign .gate-float{padding:18px 11px!important}
  .gate-title{font-size:1.92rem!important}
  .gate-copy{font-size:.88rem!important}
  .credential-field .credential-input{font-size:.8rem!important;padding-left:12px!important;padding-right:48px!important}
  .credential-toggle{width:38px!important;height:38px!important}
  .hero .title{font-size:2.55rem!important}
  .countdown-priority{grid-template-columns:1fr 1fr!important}
  .program-part .program-row{grid-template-columns:56px minmax(0,1fr)!important}
}

/* Tablettes intermédiaires */
@media (min-width:641px) and (max-width:1024px){
  .container{width:min(94vw,960px)!important}
  .narrow{width:min(90vw,840px)!important}
  .gate-redesign .gate-float{max-width:640px!important}
  .hero-grid{gap:30px!important}
  .shortcut-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .media-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .charts-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}

/* Téléphones grands formats */
@media (min-width:641px) and (max-width:760px){
  .gate-cover-image,.gate-cover-overlay,.gate-visual{height:48svh!important}
  .gate-redesign .gate-float{margin-top:-30px!important}
  .hero-photo{min-height:520px!important}
}

/* Ordinateurs standards */
@media (min-width:1025px) and (max-width:1439px){
  .container{width:min(1240px,calc(100% - 48px))!important}
  .narrow{width:min(980px,calc(100% - 48px))!important}
  .gate-redesign{grid-template-columns:minmax(0,1fr) minmax(400px,34vw)!important}
  .hero-grid{width:min(1240px,calc(100% - 48px))!important}
}

/* TV Full HD et grands écrans */
@media (min-width:1440px){
  :root{font-size:16px}
  .container{width:min(1480px,calc(100% - 96px))!important}
  .narrow{width:min(1160px,calc(100% - 96px))!important}
  .nav-inner{width:min(1480px,calc(100% - 96px))!important}
  .gate-redesign{grid-template-columns:minmax(0,1fr) minmax(460px,31vw)!important}
  .gate-redesign .gate-float{width:min(520px,100%)!important}
  .hero-grid{width:min(1480px,calc(100% - 96px))!important}
  .hero-photo{min-height:680px!important}
  .media-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
}

/* TV 4K : conserver une largeur lisible, sans étirer le contenu */
@media (min-width:2200px){
  :root{font-size:18px}
  .container{width:min(1760px,calc(100% - 160px))!important}
  .narrow{width:min(1320px,calc(100% - 160px))!important}
  .nav-inner{width:min(1760px,calc(100% - 160px))!important}
  .gate-redesign{grid-template-columns:minmax(0,1fr) 620px!important}
  .gate-redesign .gate-float{width:560px!important;padding:44px 40px!important}
  .hero-grid{width:min(1760px,calc(100% - 160px))!important}
  .hero-photo{min-height:820px!important}
  .section{padding-block:96px!important}
}

/* TV 4K très large */
@media (min-width:3200px){
  :root{font-size:20px}
  .container{width:1960px!important}
  .narrow{width:1480px!important}
  .nav-inner{width:1960px!important}
  .hero-grid{width:1960px!important}
}

/* Navigation au clavier et télécommande TV */
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:4px solid rgba(201,164,76,.72)!important;
  outline-offset:3px!important;
}
@media (pointer:coarse){
  button,.btn,.small-btn,.nav-links button{min-height:44px}
  .nav-links button{padding-block:14px}
}

/* Réduction des animations pour appareils peu puissants ou préférence utilisateur */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}

/* ===== V23 — Accueil royal compact, sans grands espaces vides ===== */
.royal-home-hero{position:relative;padding:0!important;min-height:auto!important;background:linear-gradient(110deg,#fff8f5 0%,#fffaf7 50%,#f9ece7 100%)!important;overflow:hidden}
.royal-home-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 68% 22%,rgba(223,171,176,.20),transparent 27%),radial-gradient(circle at 92% 10%,rgba(202,162,74,.14),transparent 22%);pointer-events:none}
.royal-hero-grid{position:relative;z-index:2;display:grid;grid-template-columns:minmax(300px,.92fr) minmax(430px,1.16fr) minmax(320px,.86fr);min-height:clamp(560px,70vh,720px);width:100%;max-width:1680px;margin-inline:auto;align-items:stretch}
.royal-hero-photo{min-height:100%;background-image:linear-gradient(180deg,rgba(85,54,51,0) 60%,rgba(85,54,51,.08)),var(--managed-hero-image)!important;background-size:cover!important;background-position:32% center!important;box-shadow:inset -20px 0 45px rgba(255,250,247,.38)}
.royal-hero-main{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:54px clamp(30px,4vw,76px);min-width:0}
.royal-date{border-color:rgba(223,171,176,.62)!important;color:#bf536d!important;background:rgba(255,255,255,.72)!important;font-size:.78rem!important}
.royal-title{font-size:clamp(4rem,6.2vw,7.2rem)!important;line-height:.78!important;letter-spacing:-.045em!important;margin:18px 0 20px!important;max-width:720px}
.royal-title em{font-style:normal;color:var(--gold);text-shadow:0 9px 25px rgba(202,162,74,.18)}
.royal-divider{width:min(240px,70%);display:flex;align-items:center;gap:12px;color:var(--gold);margin:4px 0 16px}.royal-divider:before,.royal-divider:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,var(--gold))}.royal-divider:after{transform:scaleX(-1)}
.royal-lead{max-width:570px;color:#5f4742!important;font-size:clamp(1rem,1.25vw,1.2rem)!important}
.royal-home-hero .hero-primary-action{margin:26px 0 10px!important;justify-content:center!important}
.royal-home-hero .btn-rsvp-main{background:linear-gradient(90deg,#e86eaa,#9557ed)!important;border:3px solid rgba(255,255,255,.78)!important;box-shadow:0 9px 0 #7544c8,0 18px 34px rgba(149,87,237,.22)!important;padding:16px 28px!important;min-height:58px!important}
.royal-home-hero .btn-rsvp-main:hover{transform:translateY(-2px)!important;box-shadow:0 11px 0 #7544c8,0 22px 38px rgba(149,87,237,.28)!important}
.royal-deadline{font-size:.88rem;color:var(--muted)}
.royal-home-hero .welcome-note{width:min(560px,100%);margin-top:22px!important}
.royal-hero-side{display:flex;flex-direction:column;justify-content:center;gap:24px;padding:42px clamp(24px,3vw,48px) 42px 8px;min-width:0}
.royal-countdown-card,.royal-dress-card{background:rgba(255,255,255,.76);border:1px solid rgba(85,54,51,.11);border-radius:26px;padding:24px;box-shadow:0 18px 50px rgba(85,54,51,.10);backdrop-filter:blur(10px)}
.royal-side-label{display:block;text-align:center;text-transform:uppercase;letter-spacing:.12em;font-size:.74rem;font-weight:850;color:#b24d67;margin-bottom:17px}
.royal-countdown-card .countdown{gap:8px!important}.royal-countdown-card .count-card{min-width:0!important;padding:15px 6px!important;border-radius:16px!important;background:#fff!important;color:var(--chocolate)!important;border:1px solid var(--line)!important;box-shadow:0 8px 18px rgba(85,54,51,.06)!important}.royal-countdown-card .count-card strong{font-size:clamp(1.6rem,2.2vw,2.35rem)!important}.royal-countdown-card .count-card span{font-size:.58rem!important}.royal-countdown-card .count-line{text-align:center;margin:14px 0 0!important;font-size:.82rem!important;color:var(--gold)!important}
.royal-palette{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.royal-palette div{display:grid;justify-items:center;gap:8px;text-align:center}.royal-palette i{width:48px;height:48px;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 2px rgba(255,255,255,.68),0 0 0 1px rgba(85,54,51,.09)}.royal-palette small{font-size:.66rem;font-weight:800;color:var(--chocolate);text-transform:uppercase}
.royal-text-link{display:block;margin:18px auto 0;border:0;background:transparent;color:var(--chocolate);font-weight:800;font-size:.8rem}
.royal-sparkles span{position:absolute;z-index:3;pointer-events:none;color:rgba(202,162,74,.72);animation:twinkle 3s ease-in-out infinite}.royal-sparkles span:nth-child(1){left:35%;top:18%;font-size:28px}.royal-sparkles span:nth-child(2){right:17%;top:6%;font-size:48px;color:rgba(202,162,74,.26)}.royal-sparkles span:nth-child(3){left:58%;bottom:15%;font-size:24px}.royal-sparkles span:nth-child(4){left:47%;top:48%;font-size:24px;color:rgba(223,171,176,.52)}.royal-sparkles span:nth-child(5){right:4%;top:18%;font-size:40px;animation:butterflyPath 8s ease-in-out infinite}
.event-strip{position:relative;z-index:5;margin-top:-2px;padding:0 34px 18px;background:linear-gradient(180deg,rgba(255,250,247,0),#fffaf7 38%)}
.event-strip-inner{width:min(1500px,100%);margin-inline:auto;display:grid;grid-template-columns:repeat(4,1fr);background:rgba(255,255,255,.94);border:1px solid rgba(202,162,74,.38);border-radius:25px;box-shadow:0 18px 46px rgba(85,54,51,.11);overflow:hidden}
.event-strip article{display:flex;align-items:center;gap:16px;padding:24px 28px;min-width:0;position:relative}.event-strip article:not(:last-child):after{content:"";position:absolute;right:0;top:24%;height:52%;width:1px;background:rgba(85,54,51,.12)}
.event-icon{display:grid;place-items:center;flex:0 0 54px;width:54px;height:54px;border-radius:50%;font-size:1.55rem;color:#d75d7c;background:linear-gradient(145deg,#fff,#f8dfe4);box-shadow:0 8px 18px rgba(223,171,176,.2)}
.event-strip small{display:block;text-transform:uppercase;letter-spacing:.12em;font-size:.68rem;font-weight:850;color:#c25770;margin-bottom:3px}.event-strip strong{display:block;font-size:.9rem;line-height:1.35;color:var(--chocolate)}.event-strip strong span{font-weight:600;color:var(--muted);font-size:.78rem}
.home-shortcuts{padding:50px 0 68px!important}.shortcut-head{margin-bottom:28px!important}.shortcut-head h2{font-size:clamp(2.5rem,4.5vw,4.6rem)!important}.shortcut-grid{gap:16px!important}.shortcut-card{min-height:142px!important}
@media(max-width:1180px){.royal-hero-grid{grid-template-columns:minmax(300px,.8fr) minmax(430px,1.1fr)}.royal-hero-side{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;padding:0 34px 34px}.royal-hero-photo{min-height:620px}.royal-hero-main{min-height:620px}.event-strip-inner{grid-template-columns:repeat(2,1fr)}.event-strip article:nth-child(2):after{display:none}}
@media(max-width:780px){.royal-hero-grid{grid-template-columns:1fr!important;min-height:auto}.royal-hero-photo{min-height:clamp(400px,112vw,610px);order:0;background-position:34% center!important}.royal-hero-main{order:1;min-height:auto;padding:38px 20px}.royal-title{font-size:clamp(3.7rem,18vw,5.7rem)!important;line-height:.82!important}.royal-hero-side{order:2;display:grid;grid-template-columns:1fr;padding:0 16px 28px}.royal-countdown-card,.royal-dress-card{padding:20px 15px}.royal-palette i{width:42px;height:42px}.event-strip{padding:0 14px 12px}.event-strip-inner{grid-template-columns:1fr}.event-strip article{padding:18px 20px}.event-strip article:after{display:none!important}.home-shortcuts{padding:38px 0 52px!important}.royal-sparkles span:nth-child(1),.royal-sparkles span:nth-child(3),.royal-sparkles span:nth-child(4){display:none}}
@media(max-width:430px){.royal-countdown-card .count-card{padding:12px 3px!important}.royal-countdown-card .count-card strong{font-size:1.45rem!important}.royal-palette{gap:7px}.royal-palette i{width:37px;height:37px}.royal-palette small{font-size:.56rem}.event-icon{width:46px;height:46px;flex-basis:46px}.royal-title{font-size:3.65rem!important}}
@media(prefers-reduced-motion:reduce){.royal-sparkles span,.royal-home-hero .btn-rsvp-main{animation:none!important}}

/* ===== V24 — intégration finale de la photo dans l'accueil ===== */
.royal-hero-photo{position:relative;isolation:isolate;background-position:52% center!important}
.royal-hero-photo::after{content:"";position:absolute;z-index:1;inset:0 0 0 auto;width:34%;pointer-events:none;background:linear-gradient(90deg,rgba(255,250,247,0),rgba(255,250,247,.68) 70%,rgba(255,250,247,.96))}
.royal-hero-photo::before{content:"";position:absolute;z-index:1;inset:auto 0 0 0;height:18%;pointer-events:none;background:linear-gradient(180deg,transparent,rgba(255,250,247,.42))}
@media(max-width:780px){
  .royal-hero-photo{background-position:50% 38%!important}
  .royal-hero-photo::after{display:none}
  .royal-hero-photo::before{height:12%;background:linear-gradient(180deg,transparent,rgba(255,250,247,.3))}
}

/* ===== V25 — correctif navigation petits ordinateurs + audit sécurité ===== */
@media (min-width:961px) and (max-width:1200px){
  .nav-inner{
    width:calc(100% - 24px)!important;
    gap:10px!important;
  }
  .brand{
    flex:0 1 190px!important;
  }
  .brand-photo{
    width:40px!important;
    height:40px!important;
    flex:0 0 40px!important;
  }
  .brand strong{
    font-size:1.08rem!important;
  }
  .brand small{
    font-size:.55rem!important;
    letter-spacing:.08em!important;
  }
  .nav-links{
    gap:2px!important;
    flex:1 1 auto!important;
  }
  .nav-links button{
    min-height:42px!important;
    padding:8px 8px!important;
    font-size:.68rem!important;
    letter-spacing:.025em!important;
  }
  .nav-links button.active,
  .nav-links button[aria-current="page"]{
    transform:none!important;
    font-size:.7rem!important;
  }
}

/* ===== V26 — correctif définitif du menu GSM ===== */
@media (max-width:960px){
  .menu-toggle{
    display:inline-grid!important;
    place-items:center!important;
    position:relative!important;
    z-index:10005!important;
  }
  .nav-links{
    position:fixed!important;
    top:var(--app-nav-mobile-h,70px)!important;
    left:12px!important;
    right:12px!important;
    bottom:auto!important;
    width:auto!important;
    max-height:calc(100dvh - var(--app-nav-mobile-h,70px) - 24px)!important;
    padding:12px!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    align-content:start!important;
    gap:7px!important;
    overflow-y:auto!important;
    background:rgba(255,250,247,.99)!important;
    border:1px solid rgba(99,56,47,.14)!important;
    border-radius:22px!important;
    box-shadow:0 24px 70px rgba(55,30,26,.26)!important;
    transform:translateY(-14px)!important;
    opacity:0!important;
    visibility:hidden!important;
    pointer-events:none!important;
    z-index:10003!important;
    transition:transform .22s ease,opacity .22s ease,visibility .22s ease!important;
  }
  .nav-links.open{
    transform:translateY(0)!important;
    opacity:1!important;
    visibility:visible!important;
    pointer-events:auto!important;
  }
  .nav-links button{
    width:100%!important;
    min-height:48px!important;
    justify-content:center!important;
    text-align:center!important;
    padding:12px 10px!important;
    font-size:.82rem!important;
  }
  .nav-links button[data-nav="logout"]{grid-column:1/-1!important}
  .nav-backdrop{
    position:fixed!important;
    inset:var(--app-nav-mobile-h,70px) 0 0!important;
    z-index:9998!important;
  }
}
@media (max-width:430px){
  .nav-links{grid-template-columns:1fr!important}
  .nav-links button[data-nav="logout"]{grid-column:auto!important}
}

/* ===== V26.1 — durcissement menu GSM (compatibilité et confort) ===== */
@media (max-width:960px){
  .menu-toggle{
    width:48px!important;height:48px!important;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .nav-links{
    /* Fallback pour anciens navigateurs sans dvh (iOS < 15.4) */
    max-height:calc(100vh - var(--app-nav-mobile-h,70px) - 24px)!important;
    max-height:calc(100svh - var(--app-nav-mobile-h,70px) - 24px)!important;
    max-height:calc(100dvh - var(--app-nav-mobile-h,70px) - 24px)!important;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    padding-bottom:max(12px,env(safe-area-inset-bottom))!important;
  }
  .nav-links button{
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }
  .nav-backdrop.hidden{display:none!important}
}


/* ===== V28 — photo d’accueil garantie =====
   L’image est désormais un véritable élément <img>, avec repli local si
   l’image choisie dans la médiathèque est absente ou inaccessible. */
.royal-hero-photo{
  position:relative!important;
  isolation:isolate!important;
  overflow:hidden!important;
  background:#f7e7df!important;
}
.royal-hero-photo-img{
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  object-fit:cover!important;
  object-position:52% center!important;
}
.royal-hero-photo::after{z-index:2!important}
.royal-hero-photo::before{z-index:2!important}
@media(max-width:780px){
  .royal-hero-photo-img{object-position:50% 38%!important}
}


/* ===== V29 — correctif définitif photo accueil ===== */
.royal-hero-photo{
  display:block!important;
  min-width:0!important;
  background-color:#f7e7df!important;
  background-image:url('/assets/img/line-hero.jpg?v=20260714-v33')!important;
  background-size:cover!important;
  background-position:50% center!important;
  background-repeat:no-repeat!important;
}
.royal-hero-photo-img{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
}
@media(max-width:780px){
  .royal-hero-photo{background-position:50% 38%!important;}
}


/* ===== V31 FINAL — photo accueil, menu GSM, galerie admin uniquement ===== */

/* PHOTO D'ACCUEIL
   Pour changer la photo, remplacez simplement :
   assets/img/line-hero.jpg
   en gardant exactement ce nom. */
.royal-home-hero .royal-hero-grid{
  grid-template-columns:minmax(300px,.92fr) minmax(430px,1.16fr) minmax(320px,.86fr)!important;
}
.royal-home-hero .royal-hero-photo{
  display:block!important;
  position:relative!important;
  min-height:clamp(560px,70vh,720px)!important;
  overflow:hidden!important;
  background:#f4ded5!important;
}
.royal-home-hero .royal-hero-photo-img{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  opacity:1!important;
  visibility:visible!important;
  object-fit:cover!important;
  object-position:50% center!important;
  z-index:0!important;
}
.royal-home-hero .royal-hero-photo::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  top:0!important;right:0!important;bottom:0!important;
  width:30%!important;
  z-index:2!important;
  pointer-events:none!important;
  background:linear-gradient(90deg,rgba(255,250,247,0),rgba(255,250,247,.92))!important;
}
.royal-home-hero .royal-hero-photo::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:0!important;right:0!important;bottom:0!important;
  height:15%!important;
  z-index:2!important;
  pointer-events:none!important;
  background:linear-gradient(180deg,transparent,rgba(255,250,247,.32))!important;
}

/* MENU GSM : état fermé puis état ouvert sans conflit avec les anciennes feuilles. */
@media(max-width:960px){
  .menu-toggle{
    display:grid!important;
    place-items:center!important;
    flex:0 0 48px!important;
    width:48px!important;
    height:48px!important;
    z-index:10002!important;
  }
  #navLinks.nav-links{
    position:fixed!important;
    top:calc(var(--app-nav-mobile-h,70px) + 8px)!important;
    left:12px!important;
    right:12px!important;
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
    gap:7px!important;
    padding:12px!important;
    max-height:calc(100dvh - var(--app-nav-mobile-h,70px) - 26px)!important;
    overflow-y:auto!important;
    border:1px solid rgba(95,56,47,.14)!important;
    border-radius:22px!important;
    background:#fffaf7!important;
    box-shadow:0 24px 70px rgba(55,30,26,.28)!important;
    transform:translateY(-14px)!important;
    opacity:0!important;
    visibility:hidden!important;
    pointer-events:none!important;
    z-index:10001!important;
  }
  #navLinks.nav-links.open{
    transform:translateY(0)!important;
    opacity:1!important;
    visibility:visible!important;
    pointer-events:auto!important;
  }
  #navLinks.nav-links button{
    display:flex!important;
    width:100%!important;
    min-height:48px!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center!important;
  }
  .nav-backdrop:not(.hidden){
    display:block!important;
    position:fixed!important;
    inset:var(--app-nav-mobile-h,70px) 0 0!important;
    background:rgba(45,31,29,.35)!important;
    backdrop-filter:blur(3px)!important;
    z-index:9999!important;
  }
  .royal-home-hero .royal-hero-grid{
    grid-template-columns:1fr!important;
  }
  .royal-home-hero .royal-hero-photo{
    min-height:clamp(390px,105vw,600px)!important;
    order:0!important;
  }
  .royal-home-hero .royal-hero-photo-img{
    object-position:50% 38%!important;
  }
  .royal-home-hero .royal-hero-photo::after{display:none!important}
}
@media(max-width:430px){
  #navLinks.nav-links{grid-template-columns:1fr!important}
}

/* V34 — Carte d'invitation en image */
.invite-card-modal{display:grid;gap:14px}
.invite-card-preview{background:var(--rose-soft);border:1px solid var(--line);border-radius:22px;padding:14px;display:grid;place-items:center;min-height:220px}
.invite-card-canvas{width:min(320px,100%);height:auto;border-radius:14px;box-shadow:var(--shadow)}
