/* landing-1.css : sorti de landing.html (versionné par date de modification). */
  html, body { margin: 0; padding: 0; overflow-x: hidden; }
  body { line-height: 1.55; }
  a { color: inherit; text-decoration: none; }
  .ld-wrap { max-width: none; margin: 0 auto; padding: 0 clamp(16px,4vw,64px); position: relative; z-index: 1; }

  /* ----- Décor parallaxe (fond animé) ----- */
  .ld-bg { position: fixed; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; }
  .ld-orb { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .55;
    will-change: transform; transition: opacity .6s ease; }
  .ld-orb.o1 { width: 520px; height: 520px; top: -160px; left: -120px;
    background:radial-gradient(circle at 30% 30%, var(--sw-blue), transparent 70%); }
  .ld-orb.o2 { width: 460px; height: 460px; top: 120px; right: -140px;
    background:radial-gradient(circle at 60% 40%, var(--sw-violet), transparent 70%); opacity: .42; }
  .ld-orb.o3 { width: 400px; height: 400px; top: 720px; left: 8%;
    background:radial-gradient(circle at 50% 50%, var(--sw-teal), transparent 70%); opacity: .32; }
  .ld-orb.o4 { width: 340px; height: 340px; top: 1180px; right: 12%;
    background:radial-gradient(circle at 50% 50%, var(--sw-blue), transparent 70%); opacity: .30; }
  /* Grille en perspective qui défile lentement */
  .ld-grid { position: absolute; inset: 0; opacity: .05; will-change: transform;
    background-image:linear-gradient(color-mix(in srgb, var(--sw-ink) 60%, transparent) 1px, transparent 1px),
                      linear-gradient(90deg, color-mix(in srgb, var(--sw-ink) 60%, transparent) 1px, transparent 1px);
    background-size: 46px 46px; mask-image:radial-gradient(ellipse 80% 60% at 50% 0, var(--sw-inset), transparent 75%);
    -webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 0, var(--sw-inset), transparent 75%); }

  /* Nav */
  .ld-nav { display: flex; align-items: center; gap: 14px; padding: 18px 0; }
  .ld-brand { display: flex; align-items: center; gap: 10px; font-weight: 800; font-size: 1.15rem; }
  .ld-brand img { width: 34px; height: 34px; border-radius: 9px; object-fit: contain; }
  .ld-brand-mark { animation: ld-bob 4.5s ease-in-out infinite; }

  /* Hero */
  .ld-hero { position: relative; text-align: center; padding: 70px 0 60px; }
  .ld-hero h1 { position: relative; font-size: clamp(2.1rem,5vw,3.4rem); font-weight: 900; letter-spacing: -.02em; margin: 0 0 16px; }
  .ld-hero h1 .grad { background:linear-gradient(90deg,var(--sw-blue-ink),var(--sw-blue-ink),var(--sw-violet-ink),var(--sw-blue-ink));
    background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent;
    animation: ld-grad 7s ease infinite; }
  .ld-hero p { position: relative; color: var(--dsx-text-mut); font-size: clamp(1rem,2.2vw,1.18rem); max-width: 620px; margin: 0 auto 24px; }
  .ld-cta { position: relative; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
  .ld-btn-lg { padding: 12px 22px; font-size: .98rem; }

  /* ----- Tags de statut (Discord / Komeon) ----- */
  .ld-status-row { position: relative; display: flex; gap: 14px; justify-content: center; align-items: stretch;
    flex-wrap: wrap; margin: 0 0 26px; }
  .ld-status { display: flex; align-items: center; gap: 11px; padding: 9px 16px 9px 13px;
    border-radius: 16px; background:color-mix(in srgb, var(--sw-ink) 3%, transparent); border: 1px solid var(--dsx-line);
    backdrop-filter: blur(6px); transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease;
    text-decoration: none; color: inherit; cursor: pointer; }
  .ld-status:hover { transform: translateY(-3px); }
  .ld-status .ld-st-ic { width: 30px; height: 30px; border-radius: 9px; display: flex; align-items: center;
    justify-content: center; font-size: 1.05rem; flex: none; }
  .ld-status .ld-st-body { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.15; }
  .ld-status .ld-st-name { font-weight: 800; font-size: .95rem; }
  .ld-status .ld-st-tag { display: inline-flex; align-items: center; gap: 5px; font-size: .72rem; font-weight: 700;
    letter-spacing: .01em; margin-top: 2px; }
  .ld-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; }
  .ld-dot.live { box-shadow: 0 0 0 0 currentColor; animation: ld-pulse 2s ease-out infinite; }

  /* Discord — disponible (bêta) */
  .ld-status.discord { border-color: rgba(88,101,242,.38); }
  .ld-status.discord:hover { box-shadow: 0 10px 30px -12px rgba(88,101,242,.6); border-color: rgba(88,101,242,.6); }
  .ld-status.discord .ld-st-ic { background: rgba(88,101,242,.18); color: #8a93f5; }
  .ld-status.discord .ld-st-tag { color: #3ddc84; }
  .ld-status.discord .ld-dot { color: #3ddc84; background: #3ddc84; }

  /* Komeon — en développement (alpha) */
  .ld-status.komeon { border-color:color-mix(in srgb, var(--sw-violet-ink) 32%, transparent); }
  .ld-status.komeon:hover { box-shadow:0 10px 30px -12px color-mix(in srgb, var(--sw-violet-ink) 50%, transparent); border-color:color-mix(in srgb, var(--sw-violet-ink) 55%, transparent); }
  .ld-status.komeon .ld-st-ic { background:color-mix(in srgb, var(--sw-violet-ink) 18%, transparent); color:var(--sw-violet-ink); }
  .ld-status.komeon .ld-st-tag { color: var(--dsx-warn); }
  .ld-status.komeon .ld-dot { color: var(--dsx-warn); background: var(--sw-yellow); }
  .ld-status.komeon { opacity: .92; }

  /* Features */
  .ld-feats { display: grid; grid-template-columns: repeat(auto-fit,minmax(240px,1fr)); gap: 16px; margin: 30px 0 70px; }
  .ld-feat { background: var(--dsx-surface); border: 1px solid var(--dsx-line); border-radius: var(--dsx-radius); padding: 20px;
    transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease; }
  .ld-feat:hover { transform: translateY(-6px); border-color:color-mix(in srgb, var(--sw-blue-ink) 40%, transparent); box-shadow:0 16px 40px -18px color-mix(in srgb, var(--sw-blue-ink) 55%, transparent); }
  .ld-feat .ic { width: 42px; height: 42px; border-radius: 11px; background: var(--dsx-accent-soft); color: var(--sw-blue-ink);
    display: flex; align-items: center; justify-content: center; font-size: 1.2rem; margin-bottom: 12px;
    transition: transform .3s ease; }
  .ld-feat:hover .ic { transform: scale(1.12) rotate(-4deg); }
  .ld-feat h3 { margin: 0 0 6px; font-size: 1.02rem; }
  .ld-feat p { margin: 0; color: var(--dsx-text-mut); font-size: .88rem; }

  /* CTA band */
  .ld-band { position: relative; overflow: hidden;
    background:linear-gradient(135deg, color-mix(in srgb, var(--sw-blue-ink) 18%, transparent), color-mix(in srgb, var(--sw-violet-ink) 8%, transparent));
    border: 1px solid var(--dsx-line); border-radius: 18px; padding: 36px 26px; text-align: center; margin-bottom: 60px; }
  .ld-band::after { content: ''; position: absolute; inset: 0; pointer-events: none;
    background:radial-gradient(40% 80% at 50% 120%, color-mix(in srgb, var(--sw-violet-ink) 25%, transparent), transparent 70%); }
  .ld-band h2 { position: relative; margin: 0 0 10px; font-size: clamp(1.4rem,3vw,2rem); }
  .ld-band p { position: relative; color: var(--dsx-text-mut); margin: 0 0 22px; }
  .ld-band a { position: relative; }
  .ld-foot { border-top: 1px solid var(--dsx-line); padding: 26px 0; color: var(--dsx-text-mut); font-size: .85rem;
    display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
  /* Footer légal : pleine largeur (le contenu était bridé à 1180px centré) + bandeau full-bleed */
  .ld-wrap .ob-foot { margin-left: calc(50% - 50vw); width: 100vw; }
  .ld-wrap .ob-foot-in { max-width: none; padding: 0 clamp(16px,4vw,64px); }

  /* ----- Reveal au scroll ----- */
  .reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s ease; }
  .reveal.in { opacity: 1; transform: none; }
  /* fade SANS transform → cumulable avec le parallax (data-px) sans conflit */
  .fade { opacity: 0; transition: opacity .8s ease; }
  .fade.in { opacity: 1; }
  [data-px] { will-change: transform; }

  /* ----- Keyframes ----- */
  @keyframes ld-grad { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }
  @keyframes ld-bob  { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
  @keyframes ld-pulse {
    0%   { box-shadow: 0 0 0 0 currentColor; opacity: 1; }
    70%  { box-shadow: 0 0 0 7px transparent; opacity: .85; }
    100% { box-shadow: 0 0 0 0 transparent; opacity: 1; } }

  /* ===== Aperçu concret des fonctionnalités (showcase) ===== */
  .ld-showcase { margin: 4px 0 64px; }
  .ld-showcase-head { text-align: center; margin-bottom: 26px; }
  .ld-showcase-head h2 { font-size: clamp(1.5rem,3.4vw,2.1rem); margin: 0 0 8px; }
  .ld-showcase-head p { color: var(--dsx-text-mut); margin: 0; }
  .ld-demo { max-width: 440px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }
  .ld-demo-card { background:color-mix(in srgb, var(--sw-surface) 72%, transparent); backdrop-filter: blur(12px);
    border: 1px solid var(--dsx-line); border-radius: 16px; padding: 15px 17px;
    box-shadow:0 18px 50px -28px rgba(0,0,0,.8); }
  .ld-demo-tag { font-size: .68rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
    color:var(--sw-blue-ink); display: flex; align-items: center; gap: 6px; margin-bottom: 11px; }
  /* Carte niveau */
  .ld-lvl { display: flex; align-items: center; gap: 12px; }
  .ld-lvl-av { width: 42px; height: 42px; border-radius: 50%; flex: none;
    background:linear-gradient(135deg,var(--sw-blue),var(--sw-violet)); display: flex; align-items: center;
    justify-content: center; font-weight: 800; color:var(--sw-on); }
  .ld-lvl-body { flex: 1; min-width: 0; }
  .ld-lvl-top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 5px; }
  .ld-lvl-name { font-weight: 700; font-size: .92rem; }
  .ld-lvl-tag { font-size: .72rem; color:var(--sw-yellow-ink); font-weight: 800; }
  .ld-xp { height: 9px; border-radius: 6px; background:color-mix(in srgb, var(--sw-ink) 8%, transparent); overflow: hidden; }
  .ld-xp-fill { height: 100%; width: 0; border-radius: 6px;
    background:linear-gradient(90deg,var(--sw-blue),var(--sw-violet)); transition: width 1.4s cubic-bezier(.2,.8,.2,1); }
  .reveal.in .ld-xp-fill { width: 72%; }
  .ld-lvl-sub { font-size: .7rem; color: var(--dsx-text-mut); margin-top: 5px; }
  /* Toggles de modules */
  .ld-mod { display: flex; align-items: center; gap: 10px; padding: 7px 0; }
  .ld-mod + .ld-mod { border-top:1px solid color-mix(in srgb, var(--sw-ink) 5%, transparent); }
  .ld-mod i { width: 30px; height: 30px; border-radius: 8px; background: var(--dsx-accent-soft);
    color: var(--sw-blue-ink); display: flex; align-items: center; justify-content: center; font-size: .95rem; flex: none; }
  .ld-mod span { flex: 1; font-size: .88rem; font-weight: 600; }
  .ld-sw { width: 38px; height: 22px; border-radius: 12px; background:color-mix(in srgb, var(--sw-ink) 12%, transparent);
    position: relative; flex: none; transition: background .4s ease; }
  .ld-sw::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px;
    border-radius: 50%; background:var(--sw-white); transition: transform .4s cubic-bezier(.2,.8,.2,1); }
  .reveal.in .ld-sw.on { background:var(--sw-green); }
  .reveal.in .ld-sw.on::after { transform: translateX(16px); }
  /* Embed Discord */
  .ld-embed { border-left: 4px solid #5865f2; background: rgba(255,255,255,.03);
    border-radius: 6px; padding: 11px 13px; }
  .ld-embed-title { font-weight: 800; font-size: .9rem; color:var(--sw-blue-ink); margin-bottom: 4px; }
  .ld-embed-desc { font-size: .8rem; color: var(--dsx-text-mut); line-height: 1.45; }
  .ld-embed-foot { font-size: .68rem; color: var(--dsx-text-mut); margin-top: 8px; opacity: .8; }

  /* ===== Modernisation MOBILE (uniquement) ===== */
  @media (max-width: 820px) {
    .ld-wrap { padding: 0 16px; }
    .ld-hero { padding: 40px 0 38px; }
    .ld-hero h1 { font-size: clamp(2rem,8vw,2.6rem); }
    .ld-hero p { font-size: .98rem; }
    /* CTA pleine largeur, plus tactile — box-sizing pour ne pas déborder du viewport */
    .ld-cta { flex-direction: column; align-items: stretch; }
    .ld-cta .ld-btn-lg { width: 100%; box-sizing: border-box; justify-content: center;
      padding: 14px 18px; font-size: 1rem; }
    /* Nav compacte : le bouton ne déborde plus / ne passe plus sur 2 lignes */
    .ld-nav { gap: 8px; padding: 14px 0; }
    .ld-nav .ld-nav-link { padding: 0 4px; font-size: .86rem; }
    .ld-nav .dsx-btn { white-space: nowrap; padding: 9px 13px; font-size: .85rem; }
    .ld-nav-extra { display: none; }   /* « Discord » masqué → bouton « Connexion » court */
    .ld-brand { font-size: 1.02rem; }
    .ld-brand img { width: 28px; height: 28px; }
    /* Cartes features : effet verre + accent, plus modernes */
    .ld-feats { gap: 12px; margin: 22px 0 50px; }
    .ld-feat { background:linear-gradient(160deg, color-mix(in srgb, var(--sw-bg) 60%, transparent), color-mix(in srgb, var(--sw-surface) 50%, transparent));
      backdrop-filter: blur(10px); border-radius: 16px; padding: 16px; }
    .ld-feat:active { transform: scale(.98); }
    .ld-band { padding: 28px 18px; border-radius: 20px; }
    /* Orbes plus présentes et nettes sur petit écran */
    .ld-orb { filter: blur(48px); }
    .ld-orb.o1 { width: 360px; height: 360px; }
    .ld-orb.o2 { width: 320px; height: 320px; }
  }

  /* Invite à activer le parallax gyroscope (iOS demande une permission) */
  .ld-tilt-cta { display: none; position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%);
    z-index: 50; background:color-mix(in srgb, var(--sw-surface) 92%, transparent); border:1px solid color-mix(in srgb, var(--sw-blue-ink) 50%, transparent);
    border-radius: 999px; padding: 9px 16px; font-size: .8rem; font-weight: 700; color:var(--sw-blue-ink);
    box-shadow:0 10px 30px rgba(0,0,0,.5); cursor: pointer; backdrop-filter: blur(8px); }

  /* ===== Grille « tous les modules » (large) ===== */
  .ld-section-head { text-align: center; margin: 0 0 26px; }
  .ld-section-head h2 { font-size: clamp(1.6rem,3.4vw,2.3rem); font-weight: 900; margin: 0 0 8px; }
  .ld-section-head p { color: var(--dsx-text-mut); margin: 0; font-size: 1.02rem; }
  .ld-modgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; margin-bottom: 70px; }
  .ld-mod-chip { display: flex; align-items: center; gap: 11px; background: var(--dsx-surface);
    border: 1px solid var(--dsx-line); border-radius: 12px; padding: 13px 15px;
    transition: transform .2s, border-color .2s, background .2s; }
  .ld-mod-chip:hover { transform: translateY(-3px); border-color:color-mix(in srgb, var(--sw-blue-ink) 45%, transparent); background:color-mix(in srgb, var(--sw-blue-ink) 6%, transparent); }
  .ld-mod-chip i { width: 36px; height: 36px; border-radius: 10px; background: var(--dsx-accent-soft);
    color: var(--sw-blue-ink); display: flex; align-items: center; justify-content: center; font-size: 1.1rem; flex: none; }
  .ld-mod-chip b { font-size: .92rem; font-weight: 700; display: block; }
  .ld-mod-chip span { font-size: .74rem; color: var(--dsx-text-mut); }

  /* ===== Scènes PARALLAX full-bleed : on passe d'une fonctionnalité à l'autre ===== */
  .ld-scenes { position: relative; margin-bottom: 30px; }
  /* PAS d'overflow:hidden → les halos floutés se fondent d'une scène à l'autre
     (sinon on voit une coupure nette au bord). Le scroll horizontal est géré par body. */
  .ld-scene { position: relative; width: 100vw; left: 50%; transform: translateX(-50%);
    min-height: 78vh; display: flex; align-items: center; padding: 60px 0; }
  .ld-scene-bg { position: absolute; width: 70vw; height: 70vw; max-width: 880px; max-height: 880px;
    border-radius: 50%; filter: blur(85px); opacity: .5; will-change: transform; z-index: 0; pointer-events: none; }
  .ld-scene.s-blue   .ld-scene-bg { background:radial-gradient(circle,var(--sw-blue),transparent 68%); top: -12%; right: -8%; }
  .ld-scene.s-purple .ld-scene-bg { background:radial-gradient(circle,var(--sw-violet),transparent 68%); bottom: -18%; left: -8%; }
  .ld-scene.s-red    .ld-scene-bg { background:radial-gradient(circle,var(--sw-red),transparent 68%); top: -10%; left: -4%; opacity: .36; }
  .ld-scene-inner { position: relative; z-index: 1; max-width: 1320px; margin: 0 auto; padding: 0 28px; width: 100%;
    display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }
  .ld-scene.rev .ld-scene-txt { order: 2; }
  .ld-scene-txt .tag { display: inline-block; font-size: .74rem; font-weight: 800; letter-spacing: .1em;
    text-transform: uppercase; color:var(--sw-blue-ink); margin-bottom: 12px; }
  .ld-scene-txt h3 { font-size: clamp(1.7rem,2.7vw,2.5rem); font-weight: 900; margin: 0 0 16px; line-height: 1.1; }
  .ld-scene-txt p { color: var(--dsx-text-mut); margin: 0 0 18px; line-height: 1.65; font-size: 1.05rem; }
  .ld-scene-txt ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 11px; }
  .ld-scene-txt li { display: flex; gap: 10px; align-items: flex-start; font-size: .98rem; }
  .ld-scene-txt li i { color:var(--sw-green-ink); margin-top: 3px; }
  .ld-scene-vis { background:color-mix(in srgb, var(--sw-surface) 72%, transparent); backdrop-filter: blur(12px); border: 1px solid var(--dsx-line);
    border-radius: 18px; padding: 24px; box-shadow:0 30px 90px -45px rgba(0,0,0,.9);
    display: flex; flex-direction: column; gap: 12px; }
  /* maquettes (mock) */
  .ld-m-embed { border-left: 4px solid #5865f2; background: rgba(255,255,255,.03); border-radius: 6px; padding: 13px 15px; }
  .ld-m-embed .t { font-weight: 800; color: #8a93f5; margin-bottom: 5px; }
  .ld-m-embed .d { font-size: .85rem; color: var(--dsx-text-mut); line-height: 1.5; }
  .ld-m-row { display: flex; align-items: center; gap: 12px; }
  .ld-m-av { width: 40px; height: 40px; border-radius: 50%; background: linear-gradient(135deg,#5865f2,#a855f7);
    flex: none; display: flex; align-items: center; justify-content: center; font-weight: 800; color: #fff; }
  .ld-m-bar { height: 9px; border-radius: 6px; background: rgba(255,255,255,.08); overflow: hidden; }
  .ld-m-bar > i { display: block; height: 100%; width: 0; background: linear-gradient(90deg,#5865f2,#a855f7); transition: width 1.3s cubic-bezier(.2,.8,.2,1); }
  .reveal.in .ld-m-bar > i, .fade.in .ld-m-bar > i { width: 68%; }
  .ld-m-log { display: flex; align-items: center; gap: 9px; font-size: .85rem; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,.05); }
  .ld-m-log:last-child { border-bottom: none; }
  .ld-m-log i { color: #ed4245; }
  .ld-m-pill { display: inline-flex; align-items: center; gap: 6px; background: rgba(61,220,132,.14); color: #3ddc84;
    font-size: .74rem; font-weight: 700; padding: 4px 10px; border-radius: 6px; }
  @media (max-width: 820px) {
    .ld-scene { min-height: auto; padding: 46px 0; }
    .ld-scene-inner { grid-template-columns: 1fr; gap: 26px; padding: 0 18px; }
    .ld-scene.rev .ld-scene-txt { order: 0; }
    .ld-scene-bg { width: 130vw; height: 130vw; }
  }

  /* ===== Bandeau de chiffres ===== */
  .ld-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 16px; margin-bottom: 70px; text-align: center; }
  .ld-stat { background: var(--dsx-surface); border: 1px solid var(--dsx-line); border-radius: 16px; padding: 24px 16px; }
  .ld-stat .n { font-size: 2rem; font-weight: 900; background:linear-gradient(90deg,var(--sw-blue-ink),var(--sw-violet-ink)); -webkit-background-clip: text; background-clip: text; color: transparent; }
  .ld-stat .l { color: var(--dsx-text-mut); font-size: .85rem; margin-top: 4px; }

  /* ===== Maquette produit (hero) ===== */
  .ld-hero-app { position: relative; max-width: 1140px; margin: 50px auto 0; min-height: 640px; display: flex; flex-direction: column; align-items: center; justify-content: center; }
  @media (max-width: 600px) { .ld-hero-app { min-height: 560px; } }
  .ld-app-glow { position: absolute; inset: -50px -30px -10px;
    background:radial-gradient(ellipse at 50% 35%, color-mix(in srgb, var(--sw-blue-ink) 45%, transparent), color-mix(in srgb, var(--sw-violet-ink) 18%, transparent) 45%, transparent 72%);
    filter: blur(45px); z-index: 0; }
  .ld-app-win { position: relative; z-index: 1; background:var(--sw-surface); border: 1px solid var(--dsx-line);
    border-radius: 14px; overflow: hidden; box-shadow:0 60px 130px -50px rgba(0,0,0,.95);
    animation: ld-float 7s ease-in-out infinite; text-align: left; }
  .ld-app-bar { display: flex; align-items: center; gap: 7px; padding: 11px 14px; background:color-mix(in srgb, var(--sw-ink) 3%, transparent); border-bottom: 1px solid var(--dsx-line); }
  .ld-app-bar > span { width: 11px; height: 11px; border-radius: 50%; background: var(--dsx-text-mut); opacity: .5; }
  .ld-app-bar > span:nth-child(1) { background:var(--sw-red); opacity: 1; }
  .ld-app-bar > span:nth-child(2) { background:var(--sw-yellow); opacity: 1; }
  .ld-app-bar > span:nth-child(3) { background:var(--sw-green); opacity: 1; }
  .ld-app-url { margin-left: 12px; font-size: .76rem; color: var(--dsx-text-mut); background:var(--sw-inset); padding: 4px 14px; border-radius: 6px; }
  .ld-app-body { display: grid; grid-template-columns: 58px 1fr; min-height: 290px; }
  .ld-app-side { background:var(--sw-inset); display: flex; flex-direction: column; align-items: center; gap: 20px; padding: 20px 0; color: var(--dsx-text-mut); font-size: 1.15rem; }
  .ld-app-side i:first-child { color: var(--sw-blue-ink); }
  .ld-app-main { padding: 22px; }
  .ld-app-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 16px; }
  .ld-app-stat { background: var(--dsx-surface); border: 1px solid var(--dsx-line); border-radius: 12px; padding: 16px; }
  .ld-app-stat b { font-size: 1.5rem; font-weight: 900; display: block; }
  .ld-app-stat span { font-size: .74rem; color: var(--dsx-text-mut); }
  .ld-app-mods { display: flex; flex-direction: column; gap: 10px; }
  .ld-app-mod { display: flex; align-items: center; gap: 12px; background: var(--dsx-surface); border: 1px solid var(--dsx-line); border-radius: 10px; padding: 13px 16px; font-weight: 600; font-size: .92rem; }
  .ld-app-mod i { color: var(--sw-blue-ink); }
  @keyframes ld-float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-13px); } }
  /* --- Démo animée du dashboard (vues, navigation, mobile) --- */
  .ld-app-main { position: relative; }
  .ld-view { display: none; }
  .ld-view.on { display: block; animation: ldFade .5s ease; }
  @keyframes ldFade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
  .ld-vh { font-family: 'Outfit', inherit; font-weight: 800; font-size: .9rem; margin-bottom: 13px; }
  .ld-sw2 { margin-left: auto; width: 38px; height: 22px; border-radius: 12px; background:color-mix(in srgb, var(--sw-ink) 14%, transparent); position: relative; flex: none; transition: background .35s; }
  .ld-sw2::after { content: ''; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background:var(--sw-white); transition: transform .35s; }
  .ld-sw2.on { background:var(--sw-green); }
  .ld-sw2.on::after { transform: translateX(16px); }
  .ld-chart { display: flex; align-items: flex-end; gap: 9px; height: 150px; padding: 6px 2px; }
  .ld-chart > i { flex: 1; background:linear-gradient(180deg,var(--sw-blue),var(--sw-blue)); border-radius: 6px 6px 3px 3px; height: 6px; transition: height .9s cubic-bezier(.2,.8,.2,1); }
  .ld-view.on .ld-chart > i { height: var(--h); }
  .ld-app-side i { transition: color .25s, transform .25s; cursor: default; }
  .ld-app-side i.act { color: var(--sw-blue-ink); transform: scale(1.18); }
  .ld-app-win { transition: max-width .6s cubic-bezier(.4,0,.2,1), border-radius .5s; width: 100%; max-width: 100%; margin-left: auto; margin-right: auto; }
  /* --- Aperçu fidèle du VRAI dashboard gratuit --- */
  .ld-cfg { padding: 16px; }
  .ld-cfg-bar { display: flex; gap: 6px; padding: 8px; background:var(--sw-inset); border-radius: 12px; margin: 0 0 18px; overflow-x: auto; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; scroll-snap-type: x proximity; scrollbar-width: none; }
  .ld-cfg-bar::-webkit-scrollbar { display: none; }
  .ld-cfg-bar .mb { position: relative; flex: none; width: 42px; height: 42px; border-radius: 10px; display: grid; place-items: center; color: var(--dsx-text-mut); font-size: 1.05rem; background: transparent; border: 0; cursor: pointer; scroll-snap-align: center; transition: color .4s ease, background .4s ease; }
  .ld-cfg-bar .mb.act { color:var(--sw-ink); background: var(--dsx-accent-soft); }
  .ld-cfg-bar .mb.act::after { content: ''; position: absolute; bottom: -9px; left: 50%; transform: translateX(-50%); border: 5px solid transparent; border-bottom-color: var(--dsx-accent-soft); }
  /* carte serveur */
  .ld-cfg-hero { display: flex; align-items: center; gap: 12px; border:1px solid color-mix(in srgb, var(--sw-blue-ink) 35%, transparent); border-radius: 14px; padding: 13px 15px; margin-bottom: 13px;
    background:linear-gradient(120deg, color-mix(in srgb, var(--sw-blue-ink) 16%, transparent), color-mix(in srgb, var(--sw-violet-ink) 8%, transparent)); }
  .ch-av { width: 42px; height: 42px; border-radius: 12px; background: var(--dsx-accent-soft); color: var(--sw-blue-ink); display: grid; place-items: center; font-size: 1.15rem; flex: none; }
  .ch-info { min-width: 0; }
  .ch-info b { font-family: 'Outfit', inherit; font-weight: 800; font-size: 1rem; display: block; }
  .ch-badge { display: inline-flex; align-items: center; gap: 5px; font-size: .68rem; font-weight: 800; color:var(--sw-green-ink); background:color-mix(in srgb, var(--sw-green-ink) 16%, transparent); padding: 2px 8px; border-radius: 6px; margin-top: 3px; }
  .ch-stats { margin-left: auto; display: flex; gap: 16px; text-align: center; }
  .ch-stats b { font-weight: 900; font-size: 1.05rem; display: block; line-height: 1; }
  .ch-stats small { font-size: .62rem; color: var(--dsx-text-mut); }
  /* Contenu du module actif (change à chaque module — style du vrai module) */
  .ld-cfg-content { min-height: 226px; }
  .cv { animation: cvIn .5s cubic-bezier(.2,.8,.2,1) both; }
  @keyframes cvIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
  .cv-head { display: flex; align-items: center; gap: 11px; margin-bottom: 15px; }
  .cv-toggle { width: 42px; height: 24px; border-radius: 13px; background:var(--sw-green); position: relative; flex: none; box-shadow:0 0 10px color-mix(in srgb, var(--sw-green-ink) 35%, transparent); }
  .cv-toggle::after { content: ''; position: absolute; top: 3px; left: 21px; width: 18px; height: 18px; border-radius: 50%; background:var(--sw-white); }
  .cv-ic { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; font-size: 1.05rem; flex: none; }
  .cv-meta { min-width: 0; }
  .cv-meta b { font-family: 'Outfit', inherit; font-weight: 800; font-size: 1.02rem; display: block; line-height: 1.15; }
  .cv-meta small { font-size: .72rem; color: var(--dsx-text-mut); }
  .cv-sec { font-size: .67rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--sw-blue-ink); padding-bottom: 9px; margin-bottom: 11px; border-bottom: 1px solid var(--dsx-line); }
  .cv-rows { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
  .ld-app-win.phone .cv-rows { grid-template-columns: 1fr; gap: 8px; }
  .cv-row { display: flex; align-items: center; gap: 11px; background: var(--dsx-surface); border: 1px solid var(--dsx-line); border-radius: 11px; padding: 11px 13px; }
  .cv-row .ri { color: var(--dsx-text-mut); font-size: .92rem; flex: none; }
  .cv-row .rl { flex: 1; font-size: .85rem; font-weight: 600; }
  .cv-sw { width: 34px; height: 19px; border-radius: 11px; background:color-mix(in srgb, var(--sw-ink) 14%, transparent); position: relative; flex: none; transition: background .3s; }
  .cv-sw::after { content: ''; position: absolute; top: 2px; left: 2px; width: 15px; height: 15px; border-radius: 50%; background:var(--sw-white); transition: left .3s; }
  .cv-sw.on { background:var(--sw-green); }
  .cv-sw.on::after { left: 17px; }
  /* --- Mode téléphone : vrai smartphone (dynamic island + home) --- */
  .ph-island, .ph-home { display: none; }
  .ld-app-win.phone { max-width: 272px; min-height: 592px; display: flex; flex-direction: column; border-radius: 48px; border:11px solid var(--sw-line); padding: 0; background:var(--sw-inset);
    box-shadow:0 42px 84px -26px rgba(0,0,0,.82), inset 0 0 0 2px var(--sw-surface); }
  .ld-app-win.phone .ld-app-bar { display: none; }
  .ld-app-win.phone .ld-cfg { flex: 1; }
  .ld-app-win.phone .ph-island { display: block; width: 86px; height: 23px; background:var(--sw-inset); border-radius: 12px; margin: 11px auto 6px; }
  .ld-app-win.phone .ph-home { display: block; width: 96px; height: 5px; border-radius: 3px; background:color-mix(in srgb, var(--sw-ink) 50%, transparent); margin: 6px auto 11px; }
  .ld-app-win.phone .ld-cfg { padding: 4px 12px 2px; }
  .ld-app-win.phone .ch-stats { display: none; }
  /* Boutons physiques du téléphone (côtés du châssis) — visibles seulement en mode téléphone */
  .ph-btn { display: none; position: absolute; width: 5px; z-index: 2; border-radius: 3px;
    background:linear-gradient(180deg, var(--sw-bg), var(--sw-inset));
    box-shadow:0 1px 2px rgba(0,0,0,.6), inset 0 1px 0 color-mix(in srgb, var(--sw-ink) 14%, transparent); }
  .ld-hero-app:has(.ld-app-win.phone) .ph-btn { display: block; }
  .ph-btn-mute  { left: calc(50% - 150px); top: 92px;  height: 26px; }        /* interrupteur silencieux */
  .ph-btn-volup { left: calc(50% - 150px); top: 132px; height: 50px; }        /* volume + */
  .ph-btn-voldn { left: calc(50% - 150px); top: 190px; height: 50px; }        /* volume − */
  .ph-btn-power { left: calc(50% + 145px); top: 156px; height: 82px; }        /* bouton marche */
  @media (max-width: 600px) {
    .ld-hero-app { margin-top: 36px; }
    .ld-app-stat b { font-size: 1.2rem; }
    .ld-app-stat span { font-size: .66rem; }
    .ld-app-body { min-height: auto; }
    .ld-app-side { font-size: 1rem; gap: 15px; }
  }

  /* ===== Bento grid (moderne, asymétrique) ===== */
  .ld-bento { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-rows: minmax(158px, auto);
    gap: 16px; margin-bottom: 80px; }
  .bento-card { position: relative; overflow: hidden; border-radius: 20px; padding: 24px;
    background:linear-gradient(155deg, color-mix(in srgb, var(--sw-raised) 55%, transparent), color-mix(in srgb, var(--sw-surface) 55%, transparent));
    backdrop-filter: blur(12px); border: 1px solid var(--dsx-line);
    transition: transform .3s cubic-bezier(.2,.8,.2,1), border-color .3s, box-shadow .3s; }
  .bento-card::before { content: ''; position: absolute; width: 240px; height: 240px; border-radius: 50%;
    top: -120px; right: -80px; background:radial-gradient(circle, var(--bento-glow, color-mix(in srgb, var(--sw-blue-ink) 35%, transparent)), transparent 70%);
    filter: blur(30px); opacity: .8; pointer-events: none; transition: transform .4s; }
  .bento-card:hover { transform: translateY(-6px); border-color:color-mix(in srgb, var(--sw-blue-ink) 50%, transparent);
    box-shadow:0 24px 60px -30px color-mix(in srgb, var(--sw-blue-ink) 55%, transparent); }
  .bento-card:hover::before { transform: scale(1.25); }
  .bento-card > * { position: relative; z-index: 1; }
  .bento-lg { grid-column: span 2; grid-row: span 2; }
  .bento-wide { grid-column: span 2; }
  .bento-ic { font-size: 2rem; margin-bottom: 12px; }
  .bento-card h3 { margin: 0 0 8px; font-size: 1.25rem; font-weight: 800; }
  .bento-lg h3 { font-size: 1.7rem; }
  .bento-card p { margin: 0; color: var(--dsx-text-mut); font-size: .92rem; line-height: 1.55; }
  .bento-chips { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 20px; }
  .bento-chip { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 6px;
    background:color-mix(in srgb, var(--sw-ink) 3%, transparent); border: 1px solid var(--dsx-line); border-radius: 12px; }
  .bento-chip i { font-size: 1.3rem; color: var(--sw-blue-ink); }
  .bento-chip span { font-size: .68rem; color: var(--dsx-text-mut); text-align: center; }
  .bento-stat { display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; }
  .bento-stat b { font-size: 2.6rem; font-weight: 900; line-height: 1;
    background:linear-gradient(90deg,var(--sw-blue-ink),var(--sw-violet-ink)); -webkit-background-clip: text; background-clip: text; color: transparent; }
  .bento-stat span { color: var(--dsx-text-mut); font-size: .9rem; margin-top: 6px; }
  @media (max-width: 860px) {
    .ld-bento { grid-template-columns: 1fr 1fr; grid-auto-rows: minmax(140px, auto); }
    .bento-lg { grid-column: span 2; grid-row: span 1; }
    .bento-wide { grid-column: span 2; }
  }
  @media (max-width: 520px) {
    .ld-bento { grid-template-columns: 1fr; }
    .bento-lg, .bento-wide { grid-column: span 1; }
    .bento-chips { grid-template-columns: repeat(4, 1fr); }
  }

  @media (prefers-reduced-motion: reduce) {
    .ld-hero h1 .grad, .ld-brand-mark, .ld-dot.live, .ld-app-win { animation: none !important; }
    .reveal, .fade { opacity: 1; transform: none; transition: none; }
    [data-px] { transform: none !important; }
    .ld-orb, .ld-grid { transform: none !important; }
    .reveal.in .ld-xp-fill, .reveal.in .ld-m-bar > i, .fade.in .ld-m-bar > i { transition: none; }
  }
