/* ============================================================
   HOPE — styles
   Palette: nuit / violet (sa couleur) / or (Sidy) / rose (Hope)
   ============================================================ */

/* ---------- Fonts (self-hosted) ---------- */
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/cormorant-garamond-latin-400-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/cormorant-garamond-latin-500-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/cormorant-garamond-latin-600-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/cormorant-garamond-latin-700-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400;font-display:swap;src:url(fonts/cormorant-garamond-latin-400-italic.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:500;font-display:swap;src:url(fonts/cormorant-garamond-latin-500-italic.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:600;font-display:swap;src:url(fonts/cormorant-garamond-latin-600-italic.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:700;font-display:swap;src:url(fonts/cormorant-garamond-latin-700-italic.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Manrope';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/manrope-latin-300-normal.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:400;font-display:swap;src:url(fonts/manrope-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:500;font-display:swap;src:url(fonts/manrope-latin-500-normal.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url(fonts/manrope-latin-600-normal.woff2) format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url(fonts/manrope-latin-700-normal.woff2) format('woff2')}

/* ---------- Tokens ---------- */
:root{
  --night:#07091a;
  --night-2:#0f1230;
  --violet:#3b2a7a;
  --violet-2:#6a4cc9;
  --gold:#f2c27b;
  --gold-2:#ffe0a3;
  --rose:#ff9aa8;
  --rose-2:#ffc4cc;
  --cream:#fbf5ea;
  --muted:rgba(251,245,234,.62);
  --faint:rgba(251,245,234,.28);
  --line:rgba(251,245,234,.12);
  --glass:rgba(16,18,46,.55);
  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'Manrope',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --maxw:1120px;
  --pad:clamp(18px,4vw,48px);
}

*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{scroll-behavior:auto;-webkit-text-size-adjust:100%;overflow-anchor:none;overflow-x:clip}
html,body{background:var(--night);color:var(--cream)}
body{
  font-family:var(--sans);
  font-weight:400;
  line-height:1.6;
  overflow-x:hidden;
  min-height:100svh;
}
body.locked{overflow:hidden;height:100svh}
::selection{background:rgba(242,194,123,.35)}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:inherit}

/* ---------- Background canvas ---------- */
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block;pointer-events:none}
#bg-veil{position:fixed;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(120% 80% at 50% 110%,rgba(59,42,122,.35),transparent 60%),
             linear-gradient(180deg,rgba(7,9,26,0) 0%,rgba(7,9,26,0) 70%,rgba(7,9,26,.55) 100%);
  opacity:.9}
#grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- Lock screen ---------- */
#lock{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(90% 70% at 50% 0%,rgba(59,42,122,.55),rgba(7,9,26,.92) 60%);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  transition:opacity 1.2s ease,visibility 1.2s}
#lock.open{opacity:0;visibility:hidden;pointer-events:none}
.lock-card{width:min(92vw,440px);text-align:center;padding:36px 22px}
.lock-heart{font-size:30px;display:inline-block;animation:beat 1.8s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1)}12%{transform:scale(1.16)}24%{transform:scale(1)}36%{transform:scale(1.1)}48%{transform:scale(1)}}
.lock-eyebrow{margin-top:16px;font-size:11px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold);font-weight:600}
.lock-title{font-family:var(--serif);font-weight:600;font-style:italic;font-size:clamp(46px,12vw,72px);line-height:1;margin-top:8px}
.lock-text{margin:18px auto 0;max-width:34ch;color:var(--muted);font-size:14.5px;line-height:1.7;font-weight:300}
.lock-text b{color:var(--cream);font-weight:500}
.lock-form{margin-top:22px;display:flex;flex-direction:column;gap:10px;align-items:center}
.lock-input{width:100%;max-width:320px;text-align:center;font-family:var(--serif);font-size:24px;font-weight:500;
  padding:12px 16px;border-radius:14px;color:var(--cream);background:rgba(251,245,234,.06);
  border:1px solid rgba(242,194,123,.35);outline:none;transition:border-color .2s,box-shadow .2s}
.lock-input::placeholder{color:var(--faint);font-style:italic;font-size:19px}
.lock-input:focus{border-color:var(--gold);box-shadow:0 0 0 4px rgba(242,194,123,.12)}
.lock-input.shake{animation:shake .5s}
@keyframes shake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(4px)}30%,50%,70%{transform:translateX(-6px)}40%,60%{transform:translateX(6px)}}
.lock-btn{font-weight:600;font-size:15px;padding:12px 30px;border-radius:999px;color:var(--night);
  background:linear-gradient(135deg,var(--rose),var(--gold));box-shadow:0 10px 30px rgba(242,194,123,.18)}
.lock-hint{min-height:22px;margin-top:6px;font-size:13px;color:var(--gold);opacity:0;transition:opacity .4s}
.lock-hint.show{opacity:1}
.lock-foot{margin-top:26px;font-size:11.5px;color:var(--faint)}

/* ---------- Layout ---------- */
main{position:relative;z-index:3}
.section{position:relative;padding:clamp(80px,14vh,150px) var(--pad);min-height:100svh;display:flex;align-items:center}
.section .inner{width:100%;max-width:var(--maxw);margin:0 auto}
.narrow{max-width:720px}
.eyebrow{font-size:11px;letter-spacing:.38em;text-transform:uppercase;color:var(--gold);font-weight:600}
.eyebrow.rose{color:var(--rose)}
.date{font-family:var(--serif);font-style:italic;font-size:clamp(17px,2.2vw,21px);color:var(--muted);margin-top:8px}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.05;letter-spacing:-.01em}
h2{font-size:clamp(38px,6.5vw,72px);margin-top:10px}
h2 em{font-style:italic;color:var(--rose);font-weight:500}
h2 .gold{color:var(--gold);font-style:italic;font-weight:500}
.lead{margin-top:22px;font-size:clamp(16px,1.6vw,19px);line-height:1.75;color:var(--muted);font-weight:300;max-width:60ch}
.lead b,.lead strong{color:var(--cream);font-weight:500}
.lead em{color:var(--gold-2);font-style:italic;font-family:var(--serif);font-size:1.12em}
.note{margin-top:22px;font-family:var(--serif);font-style:italic;font-size:clamp(18px,2.2vw,23px);line-height:1.5;color:var(--cream)}
.note small{display:block;font-family:var(--sans);font-style:normal;font-size:12px;color:var(--faint);margin-top:6px;letter-spacing:.06em}

/* reveal */
.rv{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
.rv-d1{transition-delay:.12s}.rv-d2{transition-delay:.24s}.rv-d3{transition-delay:.36s}.rv-d4{transition-delay:.48s}

/* ---------- Hero ---------- */
#hero{min-height:100svh;text-align:center;align-items:center;justify-content:center}
#hero .inner{max-width:900px;position:relative;padding:40px 20px}
#hero .inner::before{content:"";position:absolute;inset:-10% -20%;z-index:-1;background:radial-gradient(closest-side,rgba(7,9,26,.82),rgba(7,9,26,.5) 55%,transparent 100%);pointer-events:none}
.hero-title{font-family:var(--serif);font-weight:700;font-style:italic;font-size:clamp(96px,26vw,260px);line-height:.9;
  letter-spacing:-.02em;margin-top:14px;
  background:linear-gradient(180deg,#fff6e6 0%,var(--gold-2) 45%,var(--gold) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 10px 40px rgba(242,194,123,.18))}
.hero-sub{margin-top:14px;font-family:var(--serif);font-size:clamp(20px,3vw,30px);font-weight:500;color:var(--cream)}
.hero-sub span{color:var(--faint);margin:0 .4em}
.hero-micro{margin:22px auto 0;max-width:46ch;color:var(--muted);font-size:14px;line-height:1.7;font-weight:300}
.legend{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:10px 18px;margin-top:16px;font-size:12px;letter-spacing:.08em;color:var(--muted)}
.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle;box-shadow:0 0 12px currentColor}
.legend .g{color:var(--gold)}.legend .r{color:var(--rose)}
.scroll-cue{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--faint)}
.scroll-cue::after{content:"";display:block;width:1px;height:38px;margin:10px auto 0;background:linear-gradient(180deg,var(--gold),transparent);animation:cue 2s ease-in-out infinite}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ---------- Two-column chapter ---------- */
.chapter{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,72px);align-items:center}
@media (max-width:860px){.chapter{grid-template-columns:1fr}}

/* ---------- Chat (WhatsApp-like) ---------- */
.phone{position:relative;border-radius:28px;padding:18px 14px 20px;
  background:linear-gradient(180deg,rgba(20,24,60,.72),rgba(10,12,32,.72));
  border:1px solid var(--line);box-shadow:0 30px 80px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.06);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.phone-head{display:flex;align-items:center;gap:10px;padding:2px 6px 12px;border-bottom:1px solid var(--line);margin-bottom:12px}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-size:16px;
  background:linear-gradient(135deg,var(--rose),var(--violet-2))}
.avatar.g{background:linear-gradient(135deg,var(--gold),var(--violet-2))}
.phone-name{font-weight:600;font-size:14px}
.phone-status{font-size:11px;color:var(--faint)}
.chat{display:flex;flex-direction:column;gap:8px}
.daychip{align-self:center;font-size:11px;letter-spacing:.06em;color:var(--muted);background:rgba(251,245,234,.07);padding:4px 10px;border-radius:999px;margin:6px 0}
.msg{max-width:84%;padding:9px 12px 8px;border-radius:16px;font-size:14.5px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word;
  opacity:0;transform:translateY(10px) scale(.98);transition:opacity .5s ease,transform .5s ease}
.msg.in{opacity:1;transform:none}
.msg.s{align-self:flex-end;background:linear-gradient(135deg,rgba(242,194,123,.28),rgba(242,194,123,.16));border-bottom-right-radius:4px;color:#fff3dc}
.msg.h{align-self:flex-start;background:linear-gradient(135deg,rgba(255,154,168,.26),rgba(255,154,168,.14));border-bottom-left-radius:4px;color:#ffe8ec}
.msg time{display:block;text-align:right;font-size:10.5px;opacity:.55;margin-top:3px;font-family:var(--sans)}
.msg{position:relative}
.msg.typing-state{color:transparent!important}
.msg.typing-state time{opacity:0}
.msg.typing-state::after{content:"";position:absolute;left:14px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;
  background:#fbf5ea;box-shadow:12px 0 0 #fbf5ea,24px 0 0 #fbf5ea;opacity:.7;animation:dots 1.1s infinite}
@keyframes dots{0%,100%{opacity:.35}50%{opacity:.9}}

/* ---------- Callouts / quote cards ---------- */
.callouts{display:grid;gap:12px;margin-top:26px}
.callout{padding:14px 16px;border-radius:16px;border:1px solid var(--line);background:var(--glass);font-size:14.5px;line-height:1.5;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.callout .who{display:block;font-size:11px;letter-spacing:.2em;text-transform:uppercase;margin-bottom:5px;font-weight:600}
.callout.s .who{color:var(--gold)}.callout.h .who{color:var(--rose)}
.callout q{quotes:none;font-family:var(--serif);font-size:18px;line-height:1.4;color:var(--cream)}
.callout .when{display:block;margin-top:6px;font-size:11.5px;color:var(--faint)}

.quote-big{font-family:var(--serif);font-size:clamp(24px,3.6vw,38px);line-height:1.3;font-weight:500;margin-top:26px}
.quote-big.rose{color:var(--rose-2)}.quote-big.gold{color:var(--gold-2)}
.quote-big small{display:block;font-family:var(--sans);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-top:10px;font-weight:600}

/* ---------- Itinerary (Gorée) ---------- */
.itin{margin-top:26px;border-left:1px solid rgba(242,194,123,.35);padding-left:18px;display:grid;gap:10px}
.itin li{list-style:none;position:relative;font-size:15px;color:var(--cream)}
.itin li::before{content:"";position:absolute;left:-22px;top:9px;width:7px;height:7px;border-radius:50%;background:var(--gold);box-shadow:0 0 12px var(--gold)}
.itin b{font-family:var(--serif);font-size:18px;font-weight:600;color:var(--gold-2);margin-right:8px}
.itin .ps{color:var(--muted);font-size:13.5px;margin-top:6px}

/* ---------- Timeline (fameuse question) ---------- */
.steps{margin-top:30px;display:grid;gap:18px}
.step{display:grid;grid-template-columns:110px 1fr;gap:14px;align-items:start}
@media (max-width:640px){.step{grid-template-columns:1fr}}
.step .when{font-family:var(--serif);font-style:italic;font-size:18px;color:var(--gold);padding-top:6px}
.step .when small{display:block;font-family:var(--sans);font-style:normal;font-size:11px;color:var(--faint);letter-spacing:.1em}
.step .bubbles{display:flex;flex-direction:column;gap:6px}
.bub{max-width:100%;padding:8px 12px;border-radius:14px;font-size:14.5px;line-height:1.45;white-space:pre-wrap}
.bub.s{align-self:flex-start;background:rgba(242,194,123,.16);border:1px solid rgba(242,194,123,.22);border-bottom-left-radius:4px}
.bub.h{align-self:flex-end;background:rgba(255,154,168,.16);border:1px solid rgba(255,154,168,.25);border-bottom-right-radius:4px}
.bub.yes{background:linear-gradient(135deg,rgba(255,154,168,.32),rgba(242,194,123,.32));border-color:rgba(255,224,163,.5);font-family:var(--serif);font-size:20px;font-weight:600}

/* ---------- Dictionary ---------- */
.dico{margin-top:34px;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;perspective:1200px}
.card{position:relative;padding:20px 18px 18px;border-radius:20px;border:1px solid var(--line);background:var(--glass);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transform-style:preserve-3d;transition:transform .35s ease,border-color .35s;
  min-height:150px;display:flex;flex-direction:column;justify-content:flex-start;gap:4px;overflow:hidden}
.card::before{content:"";position:absolute;inset:0;background:radial-gradient(400px circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.08),transparent 45%);opacity:0;transition:opacity .35s;pointer-events:none}
.card:hover{border-color:rgba(242,194,123,.35)}
.card:hover::before{opacity:1}
.card .w{font-family:var(--serif);font-size:clamp(24px,2.6vw,30px);font-weight:600;line-height:1.05;letter-spacing:-.01em}
.card .w.ar{font-family:var(--serif);direction:rtl;font-size:30px}
.card .n{margin-top:10px;font-size:12.5px;color:var(--muted);line-height:1.5}
.card .n b{color:var(--cream);font-weight:600}
.card .k{position:absolute;top:14px;right:16px;font-family:var(--serif);font-size:15px;color:var(--gold);font-style:italic}
.card.rose .k{color:var(--rose)}
.card.wide{grid-column:span 2}
@media (max-width:520px){.card.wide{grid-column:span 1}}
.emoji-row{margin-top:18px;display:flex;flex-wrap:wrap;gap:10px 22px;font-size:14px;color:var(--muted)}
.emoji-row span b{color:var(--cream);font-family:var(--serif);font-size:19px;margin-left:4px}

/* ---------- Numbers ---------- */
.stats{margin-top:34px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.stat{padding:22px 20px;border-radius:20px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.stat .v{font-family:var(--serif);font-weight:600;font-size:clamp(40px,5vw,60px);line-height:1;letter-spacing:-.02em;
  background:linear-gradient(180deg,#fff6e6,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.stat.rose .v{background:linear-gradient(180deg,#fff0f2,var(--rose));-webkit-background-clip:text;background-clip:text}
.stat .l{margin-top:8px;font-size:13px;color:var(--muted);line-height:1.5}
.stat .l b{color:var(--cream);font-weight:600}
.chart-wrap{margin-top:22px;padding:22px 18px 14px;border-radius:20px;border:1px solid var(--line);background:var(--glass)}
.chart-wrap h3{font-size:16px;font-family:var(--sans);font-weight:600;letter-spacing:.02em}
.chart-wrap p{font-size:12.5px;color:var(--muted);margin-top:4px}
#chart{width:100%;height:auto;margin-top:12px;display:block}
.facts{margin-top:22px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.fact{font-family:var(--serif);font-size:19px;line-height:1.4;padding:16px 18px;border-radius:16px;border:1px dashed rgba(242,194,123,.25);background:var(--glass);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.fact b{color:var(--gold-2);font-weight:600}
.fact.rose{border-color:rgba(255,154,168,.3)}.fact.rose b{color:var(--rose-2)}

/* ---------- Two lists (Ce que nous voulons) ---------- */
.lists{margin-top:30px;display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media (max-width:760px){.lists{grid-template-columns:1fr}}
.list{padding:22px 20px;border-radius:22px;border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.list h3{font-size:22px;font-weight:600}
.list h3 small{display:block;font-family:var(--sans);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint);margin-top:4px;font-weight:600}
.list.h h3{color:var(--rose-2)}.list.s h3{color:var(--gold-2)}
.list ol{margin-top:14px;display:grid;gap:10px;list-style:none}
.list li{position:relative;padding-left:34px;font-size:14.5px;line-height:1.55;color:var(--cream)}
.list li span{position:absolute;left:0;top:1px;font-family:var(--serif);font-style:italic;font-size:17px;color:var(--faint)}
.list li em{color:var(--muted);font-style:normal}

/* ---------- Quotes wall ---------- */
.wall{margin-top:30px;columns:2;column-gap:16px}
@media (max-width:700px){.wall{columns:1}}
.q{break-inside:avoid;margin:0 0 16px;padding:18px 20px;border-radius:18px;border:1px solid var(--line);background:var(--glass);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);will-change:transform}
.q p{font-family:var(--serif);font-size:clamp(19px,2.2vw,23px);line-height:1.35;font-weight:500}
.q.h p{color:var(--rose-2)}.q.s p{color:var(--gold-2)}
.q .m{margin-top:10px;font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:600}
.q p.ar{direction:rtl;font-size:28px}
.wall-title{display:flex;align-items:baseline;gap:14px;margin-top:40px}
.wall-title h3{font-size:clamp(28px,4vw,40px)}
.wall-title.h h3{color:var(--rose-2)}.wall-title.s h3{color:var(--gold-2)}
.wall-title span{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--faint)}

/* ---------- Hier soir ---------- */
#hier .phone{max-width:460px}

/* ---------- Optional photo ---------- */
.photo{grid-column:1/-1;margin:26px auto 0;max-width:520px;border-radius:24px;overflow:hidden;border:1px solid var(--line);box-shadow:0 30px 80px rgba(0,0,0,.45)}
.photo img{width:100%;height:auto}

/* ---------- Question ---------- */
#question .eyebrow{text-shadow:0 1px 14px rgba(7,9,26,.95),0 0 4px rgba(7,9,26,.8)}
#question{min-height:100svh;text-align:center;align-items:center;justify-content:center;padding-top:clamp(40px,7vh,90px);padding-bottom:clamp(40px,7vh,90px)}
#question .inner{max-width:760px}
.ring-space{height:clamp(190px,27vh,270px)}  /* room for the 3D ring behind */
.q-name{font-family:var(--serif);font-size:clamp(28px,4.4vw,44px);font-weight:500;color:var(--muted)}
.q-ask{font-family:var(--serif);font-weight:600;font-size:clamp(40px,8vw,88px);line-height:1;letter-spacing:-.02em;margin-top:8px;
  background:linear-gradient(180deg,#fff6e6,var(--gold-2) 60%,var(--gold));-webkit-background-clip:text;background-clip:text;color:transparent}
.q-ask em{font-style:italic;font-weight:500}
.q-sub{margin-top:14px;font-family:var(--serif);font-style:italic;font-size:clamp(20px,2.8vw,28px);color:var(--rose-2)}
.btns{position:relative;height:150px;margin-top:34px}
#oui{position:relative;z-index:4;font-weight:700;font-size:19px;padding:17px 54px;border-radius:999px;color:var(--night);
  background:linear-gradient(135deg,var(--rose),var(--gold));box-shadow:0 0 0 0 rgba(255,154,168,.55);animation:glow 2s ease-in-out infinite;
  transition:transform .2s}
#oui:hover{transform:scale(1.05)}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(255,154,168,.55),0 14px 40px rgba(242,194,123,.25)}50%{box-shadow:0 0 0 18px rgba(255,154,168,0),0 14px 40px rgba(242,194,123,.35)}}
#non{position:absolute;left:50%;top:84px;transform:translateX(-50%);z-index:3;
  color:var(--muted);border:1px solid rgba(251,245,234,.3);border-radius:999px;padding:12px 34px;font-size:15px;font-weight:400;
  transition:left .35s cubic-bezier(.2,.8,.3,1.2),top .35s cubic-bezier(.2,.8,.3,1.2),font-size .3s,padding .3s;white-space:nowrap}

/* ---------- Oui screen ---------- */
#oui-screen{display:none;text-align:center;max-width:640px;margin:0 auto;position:relative;padding:30px 16px;border-radius:32px}
#oui-screen::before{content:"";position:absolute;inset:-6% -14%;z-index:-1;background:radial-gradient(closest-side,rgba(7,9,26,.8),rgba(7,9,26,.45) 60%,transparent 100%);pointer-events:none}
#oui-screen.show{display:block}
#oui-screen h2{font-size:clamp(44px,9vw,84px)}
#oui-screen h2 span{color:var(--rose)}
#oui-screen .lead{margin-left:auto;margin-right:auto;text-align:center}
.wa{display:inline-block;margin-top:26px;text-decoration:none;background:#25D366;color:#fff;font-weight:700;font-size:16px;padding:16px 34px;border-radius:999px;box-shadow:0 10px 30px rgba(37,211,102,.35);transition:transform .2s}
.wa:hover{transform:translateY(-2px)}
.stamp{margin-top:18px;font-size:12.5px;color:var(--faint);letter-spacing:.04em}
.sign{margin-top:28px;font-family:var(--serif);font-style:italic;font-size:19px;color:var(--muted)}
.confetti{position:fixed;top:-40px;z-index:50;pointer-events:none;animation:fall linear forwards;will-change:transform}
@keyframes fall{to{transform:translateY(112vh) rotate(600deg);opacity:.95}}

/* ---------- Footer ---------- */
footer{position:relative;z-index:3;padding:60px var(--pad) calc(46px + env(safe-area-inset-bottom));text-align:center;color:var(--faint);font-size:12.5px;line-height:1.8}
footer b{color:var(--muted);font-weight:500}

/* ---------- Peek (secret) ---------- */
#peek{display:none;position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:60;background:rgba(16,18,46,.85);backdrop-filter:blur(10px);
  border:1px solid rgba(242,194,123,.45);border-radius:14px;padding:12px 20px;font-size:13px;color:var(--gold);max-width:88vw;text-align:center}

/* ---------- Progress ---------- */
#progress{position:fixed;left:0;top:0;height:2px;width:0;z-index:70;background:linear-gradient(90deg,var(--gold),var(--rose));pointer-events:none}


/* ---------- Chart on small screens ---------- */
.chart-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:12px;scrollbar-width:thin}
.chart-scroll #chart{margin-top:0}
@media (max-width:640px){.chart-scroll #chart{min-width:660px}}

/* ---------- Lock entrance ---------- */
.lock-card>*{opacity:0;transform:translateY(14px);animation:lockIn .8s cubic-bezier(.2,.7,.2,1) forwards}
.lock-card>:nth-child(1){animation-delay:.1s}
.lock-card>:nth-child(2){animation-delay:.28s}
.lock-card>:nth-child(3){animation-delay:.46s}
.lock-card>:nth-child(4){animation-delay:.64s}
.lock-card>:nth-child(5){animation-delay:.82s}
.lock-card>:nth-child(6){animation-delay:1s}
.lock-card .lock-heart{animation:lockIn .8s .1s cubic-bezier(.2,.7,.2,1) forwards,beat 1.8s 1.1s ease-in-out infinite}
@keyframes lockIn{to{opacity:1;transform:none}}
.lock-card{transition:transform 1.1s ease,filter 1.1s ease}
#lock.open .lock-card{transform:scale(1.06);filter:blur(8px)}

/* ---------- Title reveals: blur to sharp ---------- */
.rv-blur{filter:blur(10px)}
.rv-blur.in{filter:blur(0)}
.rv-blur{transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1),filter 1.1s cubic-bezier(.2,.7,.2,1)}

/* ---------- Hero glow breathing ---------- */
.hero-title{animation:heroGlow 5.5s ease-in-out infinite}
@keyframes heroGlow{0%,100%{filter:drop-shadow(0 10px 40px rgba(242,194,123,.18))}50%{filter:drop-shadow(0 12px 58px rgba(242,194,123,.34))}}

/* ---------- Stat pop ---------- */
.stat.rv{transform:translateY(24px) scale(.96)}

/* ---------- Press + focus states ---------- */
.lock-btn,.wa,#oui{transition:transform .2s}
.lock-btn:active,.wa:active,#oui:active{transform:scale(.95)}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.lock-input:focus-visible{outline:none}

/* ---------- Non wobble ---------- */
#non.wob{animation:wob .38s ease}
@keyframes wob{25%{transform:rotate(5deg)}75%{transform:rotate(-4deg)}}

/* ---------- Motion prefs ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01s!important;animation-iteration-count:1!important;transition-duration:.01s!important;scroll-behavior:auto!important}
  .rv,.msg{opacity:1;transform:none;filter:none}
  .lock-card>*{opacity:1;transform:none}
  .hero-title{animation:none}
}
