@zevra/ui 0.20.0 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -636,8 +636,23 @@
636
636
  /* ─── FAQ ───────────────────────────────────────────────────────────────
637
637
  * Cinq questions par page au maximum. */
638
638
 
639
+ /* Le filet, comme `.zv-fold` : sans lui, la FAQ est un aplat blanc posé sur
640
+ * le papier, sans début ni fin. Toutes les autres surfaces blanches de la
641
+ * vitrine — carte, encart, tarif — en portent un ; celle-ci faisait tache. */
639
642
  .zv-faq {
640
643
  background: var(--white);
644
+ border: 1px solid var(--line);
645
+ }
646
+
647
+ /* Chaque question est un `<details>` : le repli est natif, sans JavaScript.
648
+ * Le filet sépare les questions ENTRE elles ; la première n'en porte pas, il
649
+ * tomberait sur celui du bloc et ferait un trait double. */
650
+ .zv-faq__item {
651
+ border-top: 1px solid var(--hairline);
652
+ }
653
+
654
+ .zv-faq__item:first-child {
655
+ border-top: 0;
641
656
  }
642
657
 
643
658
  .zv-faq__q {
@@ -646,22 +661,54 @@
646
661
  align-items: center;
647
662
  gap: 16px;
648
663
  padding: 18px 24px;
649
- border-bottom: 1px solid var(--hairline);
650
664
  font-size: 14px;
651
665
  font-weight: 600;
652
666
  cursor: pointer;
667
+ /* Le marqueur natif du `<summary>` tombe : le chevron du composant fait le
668
+ * même travail sans imposer le triangle du navigateur. Même traitement que
669
+ * `.zv-fold__titre`. */
670
+ list-style: none;
653
671
  }
654
672
 
655
- .zv-faq__q svg {
673
+ .zv-faq__q::-webkit-details-marker {
674
+ display: none;
675
+ }
676
+
677
+ /* Une FAQ de vitrine veut ses questions dans le PLAN DU DOCUMENT : c'est ce
678
+ * que lisent les moteurs, et ce que parcourt un lecteur d'écran qui saute de
679
+ * titre en titre. On accepte donc un `<h2>`/`<h3>`/`<h4>` comme question,
680
+ * et on lui retire ce que le navigateur lui met — taille, graisse, marges —
681
+ * pour qu'il se rende comme le reste des questions. Le niveau reste au
682
+ * balisage, l'apparence au système. */
683
+ .zv-faq__q > :is(h2, h3, h4) {
684
+ margin: 0;
685
+ font: inherit;
686
+ color: inherit;
687
+ }
688
+
689
+ .zv-faq__q:hover {
690
+ background: var(--panel);
691
+ }
692
+
693
+ /* Le chevron porte sa classe : cibler tout `svg` du titre attraperait aussi
694
+ * une icône posée dans le libellé, qui se verrait rétrécie et retournée. */
695
+ .zv-faq__chevron {
656
696
  width: 14px;
657
697
  height: 14px;
658
698
  flex: none;
659
699
  color: var(--accent);
700
+ transition: rotate 160ms cubic-bezier(0.2, 0.7, 0.2, 1);
701
+ }
702
+
703
+ .zv-faq__item[open] .zv-faq__chevron {
704
+ rotate: 180deg;
660
705
  }
661
706
 
662
707
  .zv-faq__a {
663
- padding: 14px 24px;
708
+ margin: 0;
709
+ padding: 0 24px 18px;
664
710
  font-size: 13px;
711
+ line-height: 1.6;
665
712
  color: var(--muted);
666
713
  }
667
714
 
package/src/layout.css CHANGED
@@ -395,11 +395,15 @@
395
395
  padding-top: 22px;
396
396
  padding-bottom: 12px;
397
397
  z-index: 40;
398
- background: linear-gradient(
399
- 180deg,
400
- color-mix(in srgb, var(--paper) 92%, transparent),
401
- color-mix(in srgb, var(--paper) 0%, transparent)
402
- );
398
+ /* Le voile est PLEIN derrière la barre, et il se dégrade EN DESSOUS d'elle
399
+ * (::after). Il était auparavant dégradé sur toute sa hauteur : à sa base
400
+ * il ne restait donc presque rien, et un titre de 38 ou 56px qui passait
401
+ * dessous se retrouvait COUPÉ EN DEUX — moitié voilée, moitié nette, avec
402
+ * les entrées de nav posées sur ses lettres. Deux textes superposés, aucun
403
+ * lisible. Signalé en recette sur mcp-factory.
404
+ * Le dégradé n'est pas perdu : il vit sous la barre, là où il adoucit le
405
+ * passage sans se disputer la place avec la navigation. */
406
+ background: color-mix(in srgb, var(--paper) 92%, transparent);
403
407
  /* ⚠️ LE PRÉFIXÉ D'ABORD. Lightning CSS — le compilateur de Tailwind v4,
404
408
  * donc celui de toutes nos applications Next — SUPPRIME `backdrop-filter`
405
409
  * non préfixé quand il précède la forme `-webkit-`. Or Firefox ne connaît
@@ -419,6 +423,25 @@
419
423
  backdrop-filter: blur(6px);
420
424
  }
421
425
 
426
+ /* La frange de dégradé, posée SOUS la barre. `pointer-events: none` : elle
427
+ * couvre le haut du contenu, elle ne doit rien intercepter. */
428
+ .zv-header::after {
429
+ content: '';
430
+ position: absolute;
431
+ top: 100%;
432
+ left: 0;
433
+ right: 0;
434
+ height: 24px;
435
+ background: linear-gradient(
436
+ 180deg,
437
+ color-mix(in srgb, var(--paper) 92%, transparent),
438
+ color-mix(in srgb, var(--paper) 0%, transparent)
439
+ );
440
+ -webkit-backdrop-filter: blur(6px);
441
+ backdrop-filter: blur(6px);
442
+ pointer-events: none;
443
+ }
444
+
422
445
  .zv-header:has(> .zv-nav) {
423
446
  display: block;
424
447
  padding-top: 0;