/* =========================================================
   Revisly — landing page
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300..900;1,300..900&display=swap');

:root{
  /* surfaces */
  --page-bg:#f9f8f8;
  --surface-primary:#ffffff;
  --surface-secondary:#fbfbfa;
  --surface-tertiary:#f2f2f2;
  --surface-border:#e9e8e6;

  /* ink */
  --ink-primary:#252525;
  --ink-secondary:#6f6d6a;
  --ink-tertiary:#9a9895;

  /* sky (brand) */
  --sky-bold:#1e88d8;
  --sky-bold-hover:#3b9de6;
  --sky-bold-border:#14618f;
  --sky-bold-ink:#f7fbff;
  --sky-primary:#6cb4e4;
  --sky-ink:#dcedfd;
  --sky-pill:#c6e3ff;
  --sky-soft:#eaf5ff;
  --sky-glow:#a4cdee;

  --highlight:#fbf0a8;
  --radius:16px;

  --shadow-sm:0 1px 2px rgba(15,23,42,.06);
  --shadow-md:0 6px 18px rgba(15,23,42,.08);
  --shadow-lg:0 18px 48px rgba(15,23,42,.10);
  --shadow-xl:0 26px 70px rgba(15,23,42,.14);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;
  background:var(--page-bg);
  color:var(--ink-primary);
  font-family:"Figtree","Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4,p{margin:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
img,svg,canvas{display:block;max-width:100%}
ul{margin:0;padding:0;list-style:none}

.wrap{width:100%;max-width:1152px;margin:0 auto;padding:0 24px}

/* ---------- ambient background ---------- */
.bg-glow{
  position:absolute;inset:0 0 auto 0;height:860px;z-index:0;pointer-events:none;
  background:
    radial-gradient(90% 72% at 22% -12%, var(--sky-glow) 0%, rgba(0,0,0,0) 62%),
    radial-gradient(90% 72% at 82% -12%, var(--sky-glow) 0%, rgba(0,0,0,0) 60%);
}
.bg-noise{
  position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.45;
  background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='0.3'/%3E%3C/svg%3E");
  background-size:180px 180px;
  mix-blend-mode:multiply;
}

/* ---------- buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  white-space:nowrap;font-weight:600;border-radius:var(--radius);
  transition:transform .12s ease, background-color .18s ease, color .18s ease;
}
.btn-stack{position:relative;display:inline-flex;margin-top:2px}
.btn-stack .btn{z-index:2}
.btn-stack::after{
  content:"";position:absolute;inset:0;z-index:1;border-radius:var(--radius);
  background:var(--sky-bold-border);transform:translateY(2px);
}
.btn-stack.round::after,.btn-stack.round .btn{border-radius:999px}
.btn-stack:hover .btn{transform:translateY(2px)}
.btn-stack.full,.btn-stack.full .btn{width:100%}

.btn-primary{background:var(--sky-bold);color:var(--sky-bold-ink);padding:12px 40px;font-size:20px}
.btn-primary:hover{background:var(--sky-bold-hover)}
.btn-secondary{background:var(--surface-tertiary);color:var(--ink-primary);padding:12px 40px;font-size:20px;font-weight:500}
.btn-stack.neutral::after{background:#dcdcd8}
.btn-pill{padding:10px 24px;font-size:16px;font-weight:500;border-radius:999px;background:var(--surface-primary);color:var(--ink-primary)}
.btn-stack.round::after{background:#e4e3e0}
.btn-chip{background:var(--sky-ink);color:var(--ink-primary);padding:12px 24px;font-size:18px;font-weight:500}
.btn-stack.chip::after{background:#b9d9f5}

/* ---------- header ---------- */
.site-header{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;justify-content:center;padding:12px 16px;
}
.nav{position:relative;width:100%;max-width:1400px;margin:0 auto;transition:max-width .35s cubic-bezier(.4,0,.2,1)}
.nav-plate{
  position:absolute;inset:0;border-radius:999px;
  background:var(--surface-primary);border:1px solid var(--surface-border);
  filter:drop-shadow(0 3px 6px rgba(15,23,42,.08));
  opacity:0;transition:opacity .35s ease;
}
.nav-inner{
  position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between;
  min-height:42px;padding:8px 12px 8px 24px;
}
.nav-links{display:flex;align-items:center;gap:32px}
.nav-links a{font-size:16px;color:var(--ink-primary);transition:opacity .15s}
.nav-links a:hover{opacity:.65}
.nav-right{display:flex;align-items:center;gap:16px}

.site-header.scrolled .nav{max-width:1000px}
.site-header.scrolled .nav-plate{opacity:1}
.site-header.scrolled .btn-pill{background:var(--sky-pill)}

.logo{display:flex;align-items:center;gap:9px;font-size:20px;font-weight:700;letter-spacing:-.01em}
.logo svg{width:26px;height:26px;flex:none}

/* ---------- hero ---------- */
.hero{
  position:relative;z-index:1;
  display:flex;flex-direction:column;align-items:center;
  width:100%;min-height:100svh;padding:128px 16px 40px;overflow:hidden;
}
.hero-grid{
  display:flex;align-items:center;justify-content:space-between;gap:80px;
  width:100%;max-width:1240px;margin:0 auto;flex:1;
}
.hero-copy{display:flex;flex-direction:column;width:50%;flex:none}
.hero h1{font-size:4.5rem;font-weight:700;line-height:1.05;letter-spacing:-.015em;max-width:7.9em}
.hero h1 .accent{color:var(--sky-bold)}
.hero-sub{margin-top:16px;font-size:1.5rem;color:var(--ink-secondary);max-width:23.5em}
.hero-cta{margin-top:32px;width:100%;max-width:384px}
.cta-mobile{display:none;flex-direction:column;gap:12px;width:100%}
.cta-desktop{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}
.hero-note{font-size:14px;color:var(--ink-secondary);width:100%;text-align:center}
.hero-visual{width:50%;display:flex;justify-content:flex-end;position:relative}
.hero-visual-inner{position:relative;width:100%;max-width:720px}

/* ---------- la mascotte : le renard ----------
   Assis sur le bord de la carte de démonstration. Les mouvements
   continus (queue, respiration, tête, écharpe) sont en CSS ; les
   gestes ponctuels (clignement, oreille, saut, regard qui suit le
   curseur, réactions à la démonstration) sont posés par renard.js,
   qui ajoute ou retire des classes et deux variables. */
.mascot{position:absolute;bottom:100%;right:28px;margin-bottom:-7px;width:96px;height:96px;z-index:20;cursor:pointer;overflow:visible}

.renard .r-echarpe{fill:var(--sky-bold)}
.renard .r-saut,.renard .r-queue,.renard .r-respire,.renard .r-tete,
.renard .r-oreille,.renard .r-oeil,.renard .r-echarpe-bout,.renard .r-coeur{transform-box:fill-box}

/* la queue balaie, la base fixe */
.renard .r-queue{transform-origin:0% 100%;animation:r-queue 2.6s ease-in-out infinite}
@keyframes r-queue{0%,100%{rotate:-4deg}50%{rotate:9deg}}

/* il respire */
.renard .r-respire{transform-origin:50% 100%;animation:r-respire 3.4s ease-in-out infinite}
@keyframes r-respire{0%,100%{scale:1 1}50%{scale:1.012 1.028}}

/* la tête penche doucement, et se tourne vers le curseur */
.renard .r-tete{transform-origin:50% 92%;animation:r-tete 5.5s ease-in-out infinite;
  translate:var(--r-tx,0px) var(--r-ty,0px);transition:translate .35s ease-out}
@keyframes r-tete{0%,100%{rotate:-2.5deg}50%{rotate:3deg}}

/* les yeux suivent, clignent */
.renard .r-regard{translate:var(--r-px,0px) var(--r-py,0px);transition:translate .25s ease-out}
.renard .r-oeil{transform-origin:50% 55%;transition:scale .07s ease-in}
.renard.cligne .r-oeil{scale:1 .08}

/* une oreille frémit de temps en temps */
.renard .r-oreille{transform-origin:50% 100%}
.renard .r-oreille-g.frisson{animation:r-oreille-g .5s ease}
.renard .r-oreille-d.frisson{animation:r-oreille-d .5s ease}
@keyframes r-oreille-g{0%,100%{rotate:0deg}25%{rotate:-15deg}60%{rotate:7deg}}
@keyframes r-oreille-d{0%,100%{rotate:0deg}25%{rotate:15deg}60%{rotate:-7deg}}

/* le bout de l'écharpe flotte */
.renard .r-echarpe-bout{transform-origin:30% 0%;animation:r-echarpe 1.9s ease-in-out infinite}
@keyframes r-echarpe{0%,100%{rotate:-7deg}50%{rotate:8deg}}

/* content : yeux plissés, bouche ouverte, queue qui s'emballe */
.renard .r-yeux-joie,.renard .r-bouche-joie,.renard .r-coeur{opacity:0}
.renard .r-yeux,.renard .r-bouche,.renard .r-yeux-joie,.renard .r-bouche-joie{transition:opacity .12s}
.renard.joie .r-yeux,.renard.ravi .r-yeux,.renard.joie .r-bouche,.renard.ravi .r-bouche{opacity:0}
.renard.joie .r-yeux-joie,.renard.ravi .r-yeux-joie,.renard.joie .r-bouche-joie,.renard.ravi .r-bouche-joie{opacity:1}
.renard.joie .r-queue,.renard.ravi .r-queue{animation-duration:.55s}

/* le saut : il se tasse, bondit, se réceptionne */
.renard .r-saut{transform-origin:50% 100%}
.renard.saute .r-saut{animation:r-saut .72s cubic-bezier(.3,.7,.4,1)}
@keyframes r-saut{
  0%{translate:0 0;scale:1 1}
  18%{translate:0 0;scale:1.08 .9}
  48%{translate:0 -18px;scale:.95 1.06}
  78%{translate:0 0;scale:1.07 .93}
  100%{translate:0 0;scale:1 1}
}

/* un cœur au clic */
.renard .r-coeur{transform-origin:50% 100%}
.renard.coeur .r-coeur{animation:r-coeur 1s ease-out}
@keyframes r-coeur{
  0%{opacity:0;translate:0 4px;scale:.5}
  30%{opacity:1;translate:0 0;scale:1.15}
  100%{opacity:0;translate:0 -16px;scale:1}
}

/* ---------- upload demo card ---------- */
.demo-card{
  position:relative;width:100%;border-radius:14px;overflow:hidden;
  border:1px solid var(--surface-border);background:var(--surface-secondary);
  box-shadow:var(--shadow-xl);
}
.demo-card .demo-inner{position:relative;width:100%;padding:12px;background:var(--surface-primary)}
.demo-stage{position:relative;width:100%;aspect-ratio:16/11;min-height:360px;border-radius:10px;overflow:hidden;background:var(--surface-primary)}
.demo-scene{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0 32px;transition:opacity .55s ease}
.demo-scene.out{opacity:0;pointer-events:none}

.filetypes{display:flex;align-items:flex-start;justify-content:center;gap:16px;margin-bottom:22px}
.filetype{
  width:52px;height:52px;border-radius:14px;background:var(--surface-primary);
  border:1px solid rgba(255,255,255,.8);box-shadow:0 10px 24px rgba(15,23,42,.12);
  display:flex;align-items:center;justify-content:center;
  animation:floaty 4s ease-in-out infinite;
}
.filetype:nth-child(2){animation-delay:.4s}
.filetype:nth-child(3){animation-delay:.8s}
.filetype:nth-child(4){animation-delay:1.2s}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.filetype svg{width:26px;height:26px}

.dropzone{
  width:100%;max-width:30rem;border:2px dashed #dbdad6;border-radius:14px;
  padding:44px 20px;text-align:center;background:#fdfdfc;
}
.dropzone .up{width:26px;height:26px;margin:0 auto 12px;color:var(--ink-secondary)}
.dropzone b{display:block;font-size:15px;font-weight:600}
.dropzone span{font-size:12px;color:var(--ink-tertiary)}

.filelist{display:flex;flex-direction:column;gap:10px;width:100%;max-width:30rem}
.filerow{
  display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;
  border-radius:12px;background:var(--surface-primary);padding:9px 14px;
  border:1px solid var(--surface-border);box-shadow:var(--shadow-sm);
  opacity:0;transform:translateY(10px);
  transition:opacity .45s ease, transform .45s cubic-bezier(.4,0,.2,1);
}
.filerow.in{opacity:1;transform:translateY(0)}
.filerow .ico{width:24px;height:24px}
.filerow .nm{font-size:14px;font-weight:500}
.filerow .mt{font-size:12px;color:var(--ink-tertiary)}
.demo-action{width:100%;max-width:30rem;display:flex;justify-content:center;margin-top:20px;min-height:46px;align-items:center}
.generating{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:500;color:var(--ink-secondary)}
.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--sky-ink);border-top-color:var(--sky-bold);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
/* Le déplacement de la main portait sur left/top, qui n'étaient pas
   dans la liste des transitions : elle sautait d'un point à l'autre.
   C'est la piste qu'on translate maintenant — le navigateur compose
   une translation sans refaire la mise en page, et l'easing déclaré
   ici s'applique enfin. */
.hand-piste{
  position:absolute;inset:0;z-index:30;pointer-events:none;
  transform:translate(78%,92%);
  transition:transform .9s cubic-bezier(.33,0,.2,1);
  will-change:transform;
}
/* Au bouclage, la main revient à son point de départ : ce retour ne
   doit pas se voir traverser la carte. */
.hand-piste.sansGlisse{transition:none}
.hand{
  position:absolute;left:0;top:0;width:40px;height:40px;opacity:0;
  transition:opacity .35s ease;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.18));
}

/* ---------- scènes de résultat : flashcards puis quiz ---------- */
/* La démonstration ne s'arrêtait plus au « on génère » : elle montre
   maintenant ce qui sort. C'est le produit, pas la promesse. Le
   contenu est repris tel quel des catalogues de l'application. */
.demo-titre{
  display:flex;align-items:center;gap:8px;margin-bottom:18px;
  font-size:13px;font-weight:600;color:var(--ink-secondary);
}
.demo-titre svg{width:16px;height:16px;color:var(--sky-bold)}

/* la carte qui se retourne */
.flip{perspective:900px;width:100%;max-width:30rem;height:148px}
.flip-in{
  position:relative;width:100%;height:100%;
  transform-style:preserve-3d;
  transition:transform .85s cubic-bezier(.4,0,.2,1);
  will-change:transform;
}
.flip.tourne .flip-in{transform:rotateY(180deg)}
.flip-face{
  position:absolute;inset:0;backface-visibility:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;
  padding:20px 24px;text-align:center;border-radius:14px;
  background:var(--surface-primary);
  border:1px solid var(--surface-border);box-shadow:var(--shadow-md);
}
.flip-face b{font-size:15px;font-weight:600;line-height:1.45}
.flip-dos{
  transform:rotateY(180deg);
  background:var(--sky-soft);border-color:var(--sky-ink);
}
.flip-tag{
  font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;
  color:var(--ink-tertiary);
}
.flip-dos .flip-tag{color:var(--sky-bold-border)}

/* les quatre appréciations de la répétition espacée */
.notes-srs{display:flex;gap:8px;margin-top:18px}
.notes-srs span{
  padding:7px 15px;border-radius:999px;font-size:13px;font-weight:500;
  background:var(--surface-tertiary);color:var(--ink-secondary);
  border:1px solid var(--surface-border);
  transition:background-color .35s ease,color .35s ease,border-color .35s ease;
}
.notes-srs span.on{
  background:var(--sky-bold);color:var(--sky-bold-ink);border-color:var(--sky-bold);
}

/* le quiz */
.quiz-demo{width:100%;max-width:30rem}
.quiz-enonce{
  display:block;margin-bottom:15px;text-align:center;
  font-size:15px;font-weight:600;line-height:1.45;
}
.quiz-opts{display:flex;flex-direction:column;gap:9px}
.opt{
  display:flex;align-items:center;gap:11px;padding:11px 15px;border-radius:12px;
  font-size:14px;background:var(--surface-primary);
  border:1px solid var(--surface-border);box-shadow:var(--shadow-sm);
  transition:background-color .35s ease,border-color .35s ease,color .35s ease;
}
.opt::before{
  content:"";width:15px;height:15px;border-radius:999px;flex:none;
  border:2px solid #d5d4d1;
  transition:border-color .35s ease,background-color .35s ease,box-shadow .35s ease;
}
.opt.choisi{background:#eafaf0;border-color:#54b37a;color:#1c6b3f;font-weight:600}
.opt.choisi::before{border-color:#54b37a;background:#54b37a;box-shadow:inset 0 0 0 2px #eafaf0}

/* ---------- démonstration du hero ----------
   Un plateau fixe de 600 × 500 px, réduit ou agrandi d'un seul bloc
   pour remplir la carte (--tb-s, calculé par script.js). Tout ce qui
   suit est donc écrit en pixels du plateau, jamais de l'écran. */
.tb-stage{position:relative;width:100%;aspect-ratio:600/500;border-radius:10px;overflow:hidden;background:var(--surface-primary)}
.tb-canvas{
  position:absolute;left:50%;top:50%;width:600px;height:500px;margin:-250px 0 0 -300px;
  transform:scale(var(--tb-s,1));transform-origin:center center;
}
.tb-layer{position:absolute;inset:0;transition:opacity .45s ease}
.tb-layer.off,.tb-scene.off{opacity:0;pointer-events:none}
.tb-scene{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0 32px;
  transition:opacity .4s ease;
}

/* -- les icônes, puis la zone de dépôt -- */
.tb-drop{position:relative;width:100%;max-width:480px}
.tb-icons{
  position:absolute;left:50%;bottom:100%;margin-bottom:16px;z-index:2;
  display:flex;gap:16px;transform:translateX(-50%);
}
.tb-icon{
  width:64px;height:64px;border-radius:16px;border:1px solid;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 10px 24px rgba(15,23,42,.08);
  opacity:0;transform:translateY(10px) scale(.6);
  transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .3s ease;
}
.tb-icon svg{width:32px;height:32px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.12))}
.tb-word{background:#eaf2ff;border-color:#c8dbff}
.tb-pdf{background:#fdeeee;border-color:#f6cbc8}
.tb-txt{background:#f4f4f2;border-color:#e2e1dd}
.tb-mic{background:#f1ecff;border-color:#dacdff}
.tb-icon.in{opacity:1;transform:none}
.tb-icon.flotte{animation:tbFlotte 3s ease-in-out infinite}
.tb-icon:nth-child(2).flotte{animation-delay:.3s}
.tb-icon:nth-child(3).flotte{animation-delay:.6s}
.tb-icon:nth-child(4).flotte{animation-delay:.9s}
@keyframes tbFlotte{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
/* la chute dans la zone */
.tb-icon.tombe{
  animation:none;opacity:0;transform:translateY(170px) scale(.35);
  transition:transform .55s cubic-bezier(.55,0,.75,.15),opacity .25s ease .3s;
}
.tb-zone{
  height:248px;border-radius:28px;border:2px dashed #dcdbd7;background:var(--surface-primary);
  box-shadow:var(--shadow-sm);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  transition:transform .22s cubic-bezier(.34,1.56,.64,1),border-color .3s ease,background-color .3s ease;
}
.tb-zone.recoit{transform:scale(1.035);border-color:var(--sky-primary);background:var(--sky-soft)}
.tb-zone .up{width:40px;height:40px;color:var(--ink-secondary)}
.tb-zone-txt{display:flex;flex-direction:column;align-items:center;gap:4px}
.tb-zone-txt b{font-size:18px;font-weight:600}
.tb-zone-txt span{font-size:14px;color:var(--ink-secondary)}

/* -- la liste : empilée au centre, puis déployée -- */
.tb-list{display:flex;flex-direction:column;align-items:center;gap:24px;width:100%;max-width:480px}
.tb-rows{position:relative;width:100%;height:248px}
.tb-row{
  position:absolute;left:0;right:0;top:50%;height:56px;margin-top:-28px;
  display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;
  padding:0 16px;border-radius:12px;background:var(--surface-primary);
  border:1px solid var(--surface-border);box-shadow:var(--shadow-sm);
  opacity:0;transform:scale(.94);
  transition:transform .6s cubic-bezier(.34,1.35,.64,1),opacity .3s ease;
}
.tb-row svg{width:24px;height:24px}
.tb-row span{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tb-prog{
  position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);z-index:5;
  display:flex;flex-direction:column;align-items:center;gap:12px;padding:0 24px;
  opacity:0;transition:opacity .35s ease;
}
.tb-prog.on{opacity:1}
.tb-prog-lbl{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}
.tb-prog-lbl svg{width:16px;height:16px;color:var(--sky-bold);animation:tbPouls 1.1s ease-in-out infinite}
@keyframes tbPouls{50%{opacity:.35}}
.tb-bar{width:100%;padding:1px;border-radius:999px;background:var(--surface-border)}
.tb-bar i{
  display:block;width:0;height:14px;border-radius:999px;visibility:hidden;
  background:var(--sky-bold);border:1px solid var(--sky-bold-border);border-bottom-width:3px;
}
.tb-bar i.go{visibility:visible;width:100%;transition:width 1.2s linear}
.tb-gen{width:100%;opacity:0;transition:opacity .35s ease}
.tb-gen.on{opacity:1}
.tb-gen button{
  width:100%;display:flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 24px;border-radius:16px;font-size:18px;font-weight:600;cursor:default;
  background:var(--sky-ink);color:var(--sky-bold-border);
  transition:transform .15s ease,filter .15s ease;
}
.tb-gen button.presse{transform:translateY(1px) scale(.985);filter:brightness(.97)}
.tb-gen-ico{width:18px;height:18px;display:none}
.tb-gen button.charge .tb-gen-ico{display:block;animation:tbPouls 1.1s ease-in-out infinite}

/* -- la main -- */
.tb-hand{
  position:absolute;left:0;top:0;z-index:30;width:48px;height:48px;pointer-events:none;
  opacity:0;filter:drop-shadow(0 4px 6px rgba(0,0,0,.18));
  transition:transform .9s cubic-bezier(.33,0,.2,1),opacity .3s ease;
}
.tb-hand-in{width:100%;height:100%;transform-origin:20% 20%;transition:transform .16s ease}
.tb-hand-in svg{width:100%;height:100%}
.tb-hand.clic .tb-hand-in{transform:scale(.84) rotate(-12deg)}

/* -- le fil -- */
.tb-mask{
  position:absolute;inset:0;overflow:hidden;
  -webkit-mask-image:linear-gradient(transparent 0%,#000 15%,#000 85%,transparent 100%);
          mask-image:linear-gradient(transparent 0%,#000 15%,#000 85%,transparent 100%);
}
.tb-feed{
  position:relative;padding:0 32px;display:flex;flex-direction:column;gap:24px;
  transition:transform .9s cubic-bezier(.65,0,.35,1);will-change:transform;
}
.tb-feed.net{transition:none}
.tb-spacer{height:250px;flex:none}
.tb-c{
  position:relative;padding:24px;border-radius:16px;background:var(--surface-primary);
  border:2px solid var(--surface-border);box-shadow:0 2px 0 var(--surface-border);
  opacity:.4;transform:scale(.95);transform-origin:center;
  transition:opacity .5s ease,transform .5s ease;
}
.tb-c.on{opacity:1;transform:none}
.tb-c h4{margin:0 0 8px;font-size:16px;font-weight:700;line-height:1.35}
.tb-c p{font-size:14px;line-height:1.65;color:var(--ink-secondary)}
.tb-choices{display:flex;flex-direction:column;gap:12px;margin-top:16px}
.tb-ch{
  display:flex;align-items:center;height:40px;padding:0 16px;border-radius:12px;
  background:var(--surface-primary);border:1px solid var(--surface-border);border-bottom-width:3px;
  font-size:14px;font-weight:500;
  transition:background-color .3s ease,border-color .3s ease,color .3s ease;
}
.tb-ch.sel{background:var(--surface-tertiary)}
.tb-ch.ok{background:#e7f7ec;border-color:#5cb87a;color:#1c6b3f}
.tb-blank{
  display:inline-flex;justify-content:center;align-items:flex-end;min-width:120px;height:24px;
  padding:0 8px;vertical-align:bottom;border-bottom:1px solid var(--ink-primary);
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--ink-primary);
  transition:color .3s ease,border-color .3s ease;
}
.tb-blank.ecrit::after{
  content:"";width:2px;height:16px;margin:0 0 3px 1px;background:var(--sky-bold);
  animation:tbCaret 1s step-end infinite;
}
@keyframes tbCaret{50%{opacity:0}}
.tb-blank.ok{color:#1c7a45;border-color:#5cb87a}

/* la carte qui se retourne */
.tb-c-flip{padding:0;border:0;background:none;box-shadow:none}
.tb-flip{perspective:1000px;height:150px}
.tb-flip-in{position:relative;height:100%;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.4,0,.2,1)}
.tb-flip.tourne .tb-flip-in{transform:rotateY(180deg)}
.tb-face{
  position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  padding:20px 28px;text-align:center;border-radius:16px;background:var(--surface-primary);
  border:2px solid var(--surface-border);box-shadow:0 2px 0 var(--surface-border);
}
.tb-face b{font-size:16px;font-weight:700;line-height:1.4}
.tb-face-dos{transform:rotateY(180deg);background:var(--sky-soft);border-color:var(--sky-ink);box-shadow:0 2px 0 var(--sky-ink)}
.tb-face-tag{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-tertiary)}
.tb-face-dos .tb-face-tag{color:var(--sky-bold-border)}

/* -- la flèche du fil -- */
.tb-ptr{
  position:absolute;left:0;top:0;z-index:30;width:22px;height:22px;pointer-events:none;
  opacity:0;filter:drop-shadow(0 2px 3px rgba(0,0,0,.25));
  transition:transform .9s cubic-bezier(.33,0,.2,1),opacity .3s ease;
}
.tb-ptr svg{width:100%;height:100%;transform-origin:20% 20%;transition:transform .15s ease}
.tb-ptr.clic svg{transform:scale(.8)}
.tb-net{transition:opacity .3s ease !important}

/* ---------- logo marquee ---------- */
.trusted{position:relative;z-index:10;width:100%;margin-top:40px}
.trusted p{
  margin-bottom:16px;text-align:center;font-size:14px;font-weight:600;
  text-transform:uppercase;letter-spacing:.14em;color:var(--ink-secondary);
}
.marquee{position:relative;width:100%;height:34px;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-track{position:absolute;display:flex;animation:scrollx 36s linear infinite}
.marquee-set{display:flex;gap:48px;align-items:center;padding:0 24px;min-width:max-content}
.marquee-set span{font-size:19px;font-weight:700;letter-spacing:.02em;color:#252525;opacity:.34;white-space:nowrap;font-family:Georgia,"Times New Roman",serif}
.marquee-set span.sans{font-family:inherit;letter-spacing:-.02em}
@keyframes scrollx{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- section: simple ---------- */
.simple{position:relative;z-index:20;width:100%;padding:64px 0 48px;overflow:hidden}
.simple .wrap{display:flex;flex-direction:column;gap:40px}
.h2{font-size:3rem;font-weight:700;line-height:1.15;letter-spacing:-.02em;text-align:center}
.h2 .accent{color:var(--sky-primary)}
.simple-row{display:flex;align-items:center;gap:48px}
.simple-list{width:41.6%;display:flex;flex-direction:column;gap:40px}
.feature{
  text-align:left;padding-left:20px;border-left:3px solid transparent;
  transition:border-color .25s ease;
}
.feature h3{font-size:1.875rem;font-weight:700;color:var(--ink-secondary);transition:color .25s}
.feature p{margin-top:8px;font-size:1.125rem;color:var(--ink-tertiary);transition:color .25s}
.feature.active{border-left-color:var(--ink-primary)}
.feature.active h3{color:var(--ink-primary)}
.feature.active p{color:var(--ink-secondary)}
.simple-visual{width:58.4%;position:relative}

/* ---------- bento ---------- */
.more{padding:64px 0}
.more-head{text-align:center;margin-bottom:44px}
.more-head h2{font-size:3rem;font-weight:700;letter-spacing:-.02em}
.more-head p{margin-top:12px;font-size:1.0625rem;color:var(--ink-secondary)}
.bento{display:flex;flex-direction:column;gap:24px}
.bento-row{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.card{
  background:var(--surface-secondary);border:1px solid var(--surface-border);
  border-radius:24px;padding:32px;overflow:hidden;position:relative;
  box-shadow:var(--shadow-sm);
}
.card h3{font-size:1.5rem;font-weight:700;letter-spacing:-.01em}
.card p{margin-top:8px;font-size:.9375rem;color:var(--ink-secondary);max-width:46ch}
.card-wide{display:grid;grid-template-columns:.85fr 1.15fr;align-items:center;gap:24px;padding:48px}
.card-tall{display:flex;flex-direction:column;min-height:380px}
.card-art{position:relative;margin-top:24px;flex:1;min-height:210px}

/* texte réservé aux lecteurs d'écran */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- essai sans compte ---------- */
.essai{padding:72px 0 8px;position:relative;z-index:20}
.essai-carte{
  max-width:860px;margin:0 auto;padding:40px;border-radius:28px;
  background:var(--surface-primary);border:1px solid var(--surface-border);box-shadow:var(--shadow-lg);
}
.essai-tete{text-align:center}
.essai-badge{
  display:inline-block;padding:4px 12px;border-radius:999px;font-size:.75rem;font-weight:700;
  letter-spacing:.04em;text-transform:uppercase;background:var(--sky-soft);color:var(--sky-bold-border);
}
.essai-tete h2{margin-top:14px;font-size:2.25rem;font-weight:700;letter-spacing:-.02em;line-height:1.15}
.essai-tete p{margin:12px auto 0;max-width:36rem;font-size:1.0625rem;color:var(--ink-secondary)}
.essai-form{display:flex;gap:12px;margin-top:28px}
.essai-champ{
  flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:0 16px;border-radius:14px;
  background:var(--surface-secondary);border:1.5px solid var(--surface-border);
  transition:border-color .18s,box-shadow .18s;
}
.essai-champ:focus-within{border-color:var(--sky-bold);box-shadow:0 0 0 4px var(--sky-ink)}
.essai-champ svg{width:26px;height:26px;flex:none}
.essai-champ input{flex:1;min-width:0;height:52px;border:0;outline:0;background:none;font:inherit;font-size:1rem;color:var(--ink-primary)}
.essai-form .btn{height:100%;padding:14px 26px;font-size:1.0625rem;white-space:nowrap}
.essai-form .btn[disabled]{opacity:.6;pointer-events:none}
.essai-aide{margin-top:12px;text-align:center;font-size:.875rem;color:var(--ink-tertiary)}
.essai-lien{color:var(--sky-bold);font-weight:600;text-decoration:underline;text-underline-offset:2px}

/* la progression : une barre et un pourcentage */
.essai-progression{margin:24px auto 0;max-width:560px}
.essai-progression-tete{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.9375rem;color:var(--ink-secondary)}
.essai-progression-tete b{font-size:1.125rem;font-weight:700;color:var(--ink-primary);font-variant-numeric:tabular-nums}
.essai-barre{margin-top:10px;height:12px;border-radius:999px;background:var(--surface-tertiary);overflow:hidden}
.essai-barre i{
  display:block;height:100%;width:0;border-radius:inherit;
  background:linear-gradient(90deg,var(--sky-primary),var(--sky-bold));
  transition:width .35s ease;
}
.essai-progression.fini .essai-barre i{background:#3f9a55}
.essai-progression.rate .essai-barre i{background:#cf5647}
.essai-progression.rate .essai-progression-tete b{color:#b8453a}
.essai-erreur{
  margin-top:16px;padding:12px 16px;border-radius:12px;text-align:center;font-size:.9375rem;
  background:#fdf0ee;border:1px solid #f3c9c3;color:#9a3a30;
}
.essai-erreur a{color:inherit;font-weight:700;text-decoration:underline}

.essai-resultat{margin-top:28px;display:flex;flex-direction:column;gap:20px}
.essai-video{display:flex;align-items:center;gap:14px}
.essai-video img{width:120px;height:68px;border-radius:10px;object-fit:cover;flex:none;background:var(--surface-tertiary)}
.essai-video b{display:block;font-size:1rem;font-weight:600;line-height:1.35}
.essai-video span{display:block;margin-top:2px;font-size:.8125rem;color:var(--ink-tertiary)}
/* la fiche se lit en partie : la suite donne envie de créer le compte */
.essai-fiche{
  position:relative;max-height:440px;overflow:hidden;padding:24px 28px;border-radius:18px;
  background:var(--surface-secondary);border:1px solid var(--surface-border);
  font-size:.9375rem;line-height:1.7;color:var(--ink-secondary);
}
.essai-fiche::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:160px;
  background:linear-gradient(to bottom,rgba(251,251,250,0),var(--surface-secondary) 85%);
}
.essai-fiche h2{margin:18px 0 6px;font-size:1.125rem;font-weight:700;color:var(--ink-primary)}
.essai-fiche h3{margin:12px 0 4px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--sky-bold)}
.essai-fiche p{margin:0 0 8px}
.essai-fiche ul,.essai-fiche ol{margin:0 0 8px;padding-left:20px}
.essai-fiche ul{list-style:disc}
.essai-fiche ol{list-style:decimal}
.essai-fiche em{font-size:.8125rem;color:var(--ink-tertiary)}
.essai-fiche a{color:var(--sky-bold)}
.essai-suite{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}
.essai-chiffres{display:flex;gap:28px;font-size:1rem;color:var(--ink-secondary)}
.essai-chiffres b{font-size:1.5rem;color:var(--ink-primary)}
.essai-suite p{font-size:.875rem;color:var(--ink-tertiary)}

/* ---------- trois façons d'importer ---------- */
.trois-voies{padding:72px 0 16px}
.voies{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.voie{
  background:var(--surface-secondary);border:1px solid var(--surface-border);
  border-radius:24px;padding:32px;box-shadow:var(--shadow-sm);
}
.voie-ico{
  width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  background:var(--surface-primary);border:1px solid var(--surface-border);box-shadow:var(--shadow-sm);
}
.voie-ico svg{width:30px;height:30px}
.voie h3{margin-top:20px;font-size:1.375rem;font-weight:700;letter-spacing:-.01em}
.voie p{margin-top:8px;font-size:.9375rem;line-height:1.6;color:var(--ink-secondary)}
.voies-garantie{
  display:flex;align-items:center;justify-content:center;gap:10px;margin:32px auto 0;max-width:46rem;
  text-align:center;font-size:.9375rem;color:var(--ink-secondary);
}
.voies-garantie svg{width:20px;height:20px;flex:none;color:var(--sky-bold)}

/* flashcard fan */
.fan{position:absolute;inset:auto -32px -62px -32px;height:230px}
.fan .qcard{
  position:absolute;width:168px;background:#fff;border:1px solid var(--surface-border);
  border-radius:12px;box-shadow:var(--shadow-md);padding:13px;font-size:11.5px;line-height:1.38;
}
.fan .qcard b{font-weight:600;display:block;margin-bottom:8px}
.fan .opt{display:flex;align-items:center;gap:6px;margin-top:5px;color:var(--ink-secondary)}
.fan .opt i{width:9px;height:9px;border-radius:50%;border:1.5px solid #cfcecb;flex:none}
.fan .line{height:1px;background:#e6e5e2;margin-top:10px}

/* guides grid */
.guides{position:absolute;inset:auto 0 -60px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.guide{
  background:#fff;border:1px solid var(--surface-border);border-radius:8px;padding:10px;
  box-shadow:var(--shadow-sm);height:250px;overflow:hidden;
}
.guide b{font-size:8.5px;font-weight:700;display:block;margin-bottom:8px;line-height:1.3}
.guide .txt{height:4px;background:#ececeb;border-radius:2px;margin-bottom:5px}
.guide .txt.s{width:68%}
.guide .txt.m{width:88%}

/* doc collab */
.doc{position:relative;margin-top:22px;font-size:15px;line-height:1.62;color:var(--ink-primary)}
.doc mark{background:var(--highlight);padding:1px 2px;border-radius:2px}
.doc .tag{
  display:inline-block;background:#f6a20a;color:#fff;font-size:11px;font-weight:700;
  border-radius:4px;padding:1px 6px;vertical-align:middle;
}
.doc .caret{display:inline-block;width:2px;height:19px;background:var(--sky-bold);vertical-align:-4px;animation:blink 1.1s step-end infinite}
@keyframes blink{50%{opacity:0}}
.doc .cursor-label{
  position:absolute;right:0;bottom:-8px;background:var(--sky-bold);color:#fff;
  font-size:11px;font-weight:600;border-radius:4px;padding:2px 7px;
}

/* ---------- faq ---------- */
.faq{padding:80px 0 40px}
.faq h2{font-size:3.25rem;font-weight:700;text-align:center;letter-spacing:-.025em}
.faq .sub{text-align:center;color:var(--ink-secondary);margin-top:14px;margin-bottom:44px;font-size:.9375rem}
.faq-list{max-width:820px;margin:0 auto}
.faq-item{border-bottom:1px solid var(--surface-border)}
.faq-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:20px 4px;text-align:left;font-size:15px;font-weight:500}
.faq-q svg{width:16px;height:16px;flex:none;color:var(--ink-tertiary);transition:transform .3s}
.faq-item.open .faq-q svg{transform:rotate(180deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .35s ease}
.faq-a p{padding:0 4px 22px;font-size:14.5px;line-height:1.65;color:var(--ink-secondary);max-width:74ch}
.faq-a a{color:var(--sky-bold);text-decoration:underline;text-underline-offset:2px}

/* ---------- final cta ---------- */
.cta{padding:40px 0 96px}
.cta-card{
  background:var(--surface-primary);border:1px solid var(--surface-border);
  border-radius:28px;padding:72px 32px;text-align:center;box-shadow:var(--shadow-md);
}
.cta-card h2{font-size:3rem;font-weight:700;letter-spacing:-.025em}
.cta-card h2 mark{background:var(--highlight);color:inherit;padding:2px 8px;border-radius:4px}
.cta-card p{margin-top:16px;color:var(--ink-secondary)}
.cta-card .btn-stack{margin-top:28px}
.cta-card .stars{margin-top:14px;font-size:13px;color:var(--ink-tertiary)}

/* ---------- footer ---------- */
.site-footer{padding:56px 0 72px;text-align:center}
.site-footer .logo{justify-content:center;margin-bottom:12px}
.site-footer .tag{color:var(--ink-secondary);font-size:14.5px}
.footer-rule{height:1px;background:var(--surface-border);max-width:420px;margin:26px auto}
.footer-links{display:flex;justify-content:center;gap:22px;font-size:13.5px;color:var(--ink-secondary)}
.footer-links a:hover{color:var(--ink-primary)}
.copyright{margin-top:18px;font-size:12.5px;color:var(--ink-tertiary)}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(22px)}
.reveal.seen{opacity:1;transform:none;transition:opacity .7s ease,transform .7s cubic-bezier(.4,0,.2,1)}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .hero h1{font-size:3.5rem}
  .h2,.more-head h2,.cta-card h2{font-size:2.5rem}
  .faq h2{font-size:2.5rem}
}
@media (max-width:900px){
  .essai-carte{padding:28px 20px;border-radius:22px}
  .essai-tete h2{font-size:1.75rem}
  .essai-form{flex-direction:column}
  .essai-form .btn{width:100%}
  .essai-fiche{padding:18px}
  .voies{grid-template-columns:1fr}
  .voie{padding:24px}
  .hero{padding-top:112px}
  .hero-grid{flex-direction:column;gap:40px}
  .hero-copy,.hero-visual{width:100%}
  .hero-copy{align-items:center;text-align:center}
  .hero h1{max-width:none}
  .hero-sub{max-width:none}
  .hero-cta{max-width:340px}
  .cta-mobile{display:flex}
  .cta-desktop{display:none}
  .hero-visual{justify-content:center}
  .simple-row{flex-direction:column;gap:36px}
  .simple-list,.simple-visual{width:100%}
  .bento-row{grid-template-columns:1fr}
  .card-wide{grid-template-columns:1fr;padding:32px}
  /* le renard reste, plus petit ; la carte descend pour lui faire
     place sans qu'il chevauche les boutons au-dessus */
  .hero-visual{padding-top:52px}
  .mascot{width:76px;height:76px;right:20px;margin-bottom:-5px}
}
@media (max-width:640px){
  .hero h1{font-size:2.5rem}
  .hero-sub{font-size:1.125rem}
  .h2,.more-head h2,.cta-card h2,.faq h2{font-size:2rem}
  .nav-links{display:none}
  .btn-primary,.btn-secondary{font-size:17px;padding:12px 28px}
  .guides{grid-template-columns:repeat(2,1fr)}
  .cta-card{padding:48px 20px}
  .site-header.scrolled .nav{max-width:100%}
  .filetypes{gap:10px}
  .filetype{width:44px;height:44px}
}

/* ---------- mouvement réduit ----------
   script.js respecte déjà ce réglage : il fige la démonstration et
   affiche directement son résultat. La CSS, elle, continuait de faire
   flotter la mascotte, les icônes et le bandeau de logos — les deux se
   contredisaient. On coupe ici ce qui bouge tout seul, en gardant les
   fondus, qui ne provoquent pas de gêne vestibulaire. */
@media (prefers-reduced-motion: reduce) {
  /* le renard reste immobile ; seule son expression change au survol */
  .renard *,
  .filetype,
  .marquee-track,
  .spinner { animation: none }

  .hand-piste,
  .tb-feed,
  .tb-hand,
  .tb-ptr { transition: none }
  .tb-icon.flotte,
  .tb-prog-lbl svg { animation: none }

  /* la révélation au défilement se contente d'apparaître */
  .reveal { opacity: 1; transform: none }
  .reveal.seen { transition: none }
}

/* ---------- confirmation après suppression du compte ---------- */
.avis-compte{
  position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:200;
  display:flex;align-items:center;gap:14px;max-width:calc(100% - 32px);
  padding:12px 14px 12px 18px;border-radius:12px;
  background:#1f2a22;border:.8px solid rgba(78,163,90,.55);color:#e8f3ea;
  font-size:.9375rem;box-shadow:0 10px 30px rgba(0,0,0,.35);
}
.avis-compte button{background:none;border:0;color:inherit;font-size:1.25rem;line-height:1;cursor:pointer;opacity:.8}
.avis-compte button:hover{opacity:1}
