/* ============================================
   WAB. — Barre de navigation : le menu du téléphone
   Le bouton rond à deux traits, le panneau qui se déroule dans la
   plaque et le voile derrière. Séparé de nav.css, qui garde la
   barre elle-même.

   Tiroir d'après Header 3 (efferd, 21st.dev) : à l'ouverture, le
   contenu du panneau arrive de 97 % à 100 % de sa taille avec un
   fondu, en 150 ms ; il repart plus vite encore à la fermeture.
   ============================================ */

/* ── Bouton menu ──
   Une touche ronde, blanche et en relief, comme la page en cours dans
   la barre ; deux traits dedans. À l'ouverture, ils pivotent l'un
   vers l'autre et se croisent en ×, et la touche reste enfoncée. */
.topbar__menu {
    display: grid;
    place-items: center;
    flex: none;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--key-light);
    box-shadow: 0 0 0 var(--hair) var(--edge), var(--key-light-relief);
    transition: box-shadow var(--dur-1) var(--ease-out), translate var(--dur-1) var(--ease-out);
}

.topbar__menu[aria-expanded='true'] {
    translate: 0 1px;
    box-shadow: 0 0 0 var(--hair) var(--edge), var(--key-pressed);
}

.topbar__lines {
    display: grid;
    gap: 5px;
}

.topbar__lines span {
    width: 16px;
    height: 2px;
    border-radius: 2px;
    background: var(--ink);
    transition: translate 0.35s var(--ease), rotate 0.35s var(--ease);
}

.topbar__menu[aria-expanded='true'] .topbar__lines span:first-child {
    translate: 0 3.5px;
    rotate: 45deg;
}

.topbar__menu[aria-expanded='true'] .topbar__lines span:last-child {
    translate: 0 -3.5px;
    rotate: -45deg;
}

@media (prefers-reduced-motion: reduce) {
    .topbar__menu,
    .topbar__lines span {
        transition: none;
    }
}

/* ── Le menu déroulé ──
   La hauteur est animée par une piste de grille qui passe de 0fr à
   1fr : le panneau s'ouvre sans qu'on ait à le mesurer. */
.topbar__panel {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.45s var(--ease);
}

.topbar__inner.is-open .topbar__panel {
    grid-template-rows: 1fr;
}

.topbar__panel-inner {
    overflow: hidden;
    /* visibility retire les liens du parcours au clavier tant que le
       menu est replié — une hauteur nulle ne suffit pas. */
    visibility: hidden;
    transition: visibility 0s linear 0.45s;
}

.topbar__inner.is-open .topbar__panel-inner {
    visibility: visible;
    transition-delay: 0s;
}

.panel__nav,
.panel__meta {
    opacity: 0;
    scale: 0.97;
    transform-origin: top center;
    transition: opacity 0.12s var(--ease-out), scale 0.12s var(--ease-out);
}

.topbar__inner.is-open .panel__nav,
.topbar__inner.is-open .panel__meta {
    opacity: 1;
    scale: 1;
    transition-duration: 0.15s;
    transition-delay: 0.08s;
}

/* Le panneau suit la même marge que la barre. */
.panel__nav,
.panel__meta {
    padding-inline: var(--pill-pad);
}

.panel__nav {
    padding-top: 6px;
}

.panel__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 15px 0;
    font-size: 1.2rem;
    font-weight: var(--w-strong);
    letter-spacing: -0.02em;
    color: var(--ink);
    box-shadow: inset 0 -1px 0 var(--line);
    transition: color 0.25s var(--ease-out);
}

.panel__link:hover,
.panel__link:active {
    color: var(--klein-text);
}

.panel__link svg {
    color: var(--ink-muted);
}

.panel__meta {
    padding-top: 18px;
    padding-bottom: 22px;
    display: grid;
    gap: 12px;
}

.panel__row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    font-size: 12px;
    line-height: 1.5;
}

.panel__key {
    font-weight: var(--w-strong);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--klein-text);
    white-space: nowrap;
}

.panel__value {
    text-align: right;
    color: var(--ink);
    word-break: break-word;
}

a.panel__value:hover {
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* ── Voile derrière le menu ouvert ── */
.topbar-scrim {
    position: fixed;
    inset: 0;
    z-index: 118;
    background: rgba(11, 11, 12, 0.28);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.35s var(--ease-out);
}

.topbar-scrim.is-open {
    opacity: 1;
    pointer-events: auto;
}

/* ── Bureau ── */
@media (min-width: 900px) {
    .topbar__menu,
    .topbar__panel,
    .topbar-scrim {
        display: none;
    }
}
