/* =============================================================
   security.css — Mot de passe et écran de verrouillage
   -------------------------------------------------------------
   Quand <html> porte l'attribut data-locked (posé par js/boot.js
   puis par js/ui/lock-screen.js), seul l'écran de verrouillage
   est visible : la barre du haut et l'agenda sont cachés.
   ============================================================= */

/* ---------- Écran de verrouillage ---------- */
.lock-screen {
  display: none;
}

html[data-locked] .lock-screen {
  display: flex;
  justify-content: center;
  min-height: 100dvh;
  padding: max(1.5rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right))
    max(1.5rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
}

html[data-locked] .app-header,
html[data-locked] .app-main,
html[data-locked] .skip-link {
  display: none;
}

.lock-card {
  align-self: flex-start;
  width: 100%;
  max-width: 27rem;
  margin-top: min(8vh, 4rem);
  padding: 2rem 1.5rem;
  border: 1px solid var(--color-paper-edge);
  border-radius: 1rem;
  background: var(--color-paper);
  background-image: var(--paper-texture);
  box-shadow: var(--shadow);
  text-align: center;
}

.lock-logo {
  width: 5.5rem;
  height: 5.5rem;
  margin: 0 auto 1rem;
  filter: var(--logo-glow);
}

.lock-card h1 {
  margin: 0 0 0.5rem;
}

.lock-form {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  margin-top: 1.5rem;
  text-align: left;
}

.lock-form .field {
  margin: 0;
}

.lock-form .field-error:empty {
  display: none;
}

.lock-form .btn-primary {
  width: 100%;
}

/* « J'ai oublié mon mot de passe » : replié par défaut. */
.lock-forgot {
  margin-top: 1.5rem;
  border-top: 1px solid var(--color-border);
  text-align: left;
}

.lock-forgot summary {
  display: flex;
  align-items: center;
  min-height: 44px;
  margin-top: 0.5rem;
  color: var(--color-text-muted);
  font-weight: 600;
  cursor: pointer;
}

.lock-forgot p {
  margin: 0.5rem 0;
}

.lock-forgot .btn {
  margin-top: 0.5rem;
}

/* ---------- Champ de mot de passe + bouton « Afficher » ---------- */
.password-row {
  display: flex;
  gap: 0.5rem;
}

.password-row input {
  flex: 1;
  width: auto;
  min-width: 0;
  min-height: max(44px, 2.75rem);
  padding: 0.55rem 0.75rem;
  border: 1px solid var(--color-border-strong);
  border-radius: 0.6rem;
  background: var(--color-bg);
  color: var(--color-text);
  font: inherit;
}

/* Le bouton garde la même hauteur que le champ. */
.password-toggle {
  align-self: stretch;
}

/* Case « J'ai compris » : le texte peut passer sur plusieurs lignes. */
.checkbox-row-wrap {
  align-items: flex-start;
  margin-top: 0.25rem;
  font-weight: 400;
}

.checkbox-row-wrap input {
  flex-shrink: 0;
  margin-top: 0.6rem;
}

.checkbox-row-wrap span {
  padding-block: 0.5rem;
}

/* ---------- Avertissement « Si tu perds ton mot de passe… » ---------- */
.notice-warning {
  border-left: 4px solid var(--color-danger);
  font-weight: 600;
}

/* ---------- Bouton « Verrouiller » de la barre du haut ----------
   Sur un écran étroit, quand ce bouton est présent, les boutons de la
   barre n'affichent que leur icône (cadenas, roue dentée) : tout tient
   sur une ligne. Leur nom reste lu par les lecteurs d'écran. */
@media (max-width: 30rem) {
  .header-actions:has(#bouton-verrouiller:not([hidden])) .btn {
    width: max(44px, 2.75rem);
    padding: 0;
  }

  .header-actions:has(#bouton-verrouiller:not([hidden])) .header-label {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
}
