/* ============================================================
   Mosaïque vidéo — nokipowlonski.com
   Complète la grille « Sélection » (#portfolio) : cartes supplémentaires
   générées depuis videos/manifest.js, 4 rangées visibles par défaut,
   bouton discret pour afficher le reste, lecteur vidéo épuré dans la lightbox.
   Les fichiers vidéo (videos/media/*.mp4) et vignettes (videos/thumbs/*.webp)
   sont hébergés sur ce site : aucun service tiers.
   ============================================================ */
#portfolio{margin-bottom:12px}   /* 12 + 28 = les 40 px d’origine quand le bouton est masqué */
#portfolio .card.is-collapsed{display:none}
#portfolio .card:focus-visible{outline:3px solid #000;outline-offset:2px}
#portfolio .card .dur{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.72);color:#fff;font-size:12px;
  line-height:1.2;padding:4px 8px;border-radius:999px;font-weight:700;font-variant-numeric:tabular-nums}
#portfolio .card[data-kind="video"] .badge{max-width:calc(100% - 70px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Aperçu au survol (videos.js) : vidéo muette posée sur la vignette, sous le titre et la durée ;
   pointer-events:none → la carte reçoit toujours la souris et le clic. */
#portfolio .card .prev{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block;
  border-radius:inherit;background:#000;pointer-events:none;opacity:0;transition:opacity .25s ease}
#portfolio .card .prev.is-on{opacity:1}
@media (max-width:559px){#portfolio{grid-template-columns:repeat(2,1fr)}}   /* téléphone : 2 colonnes, comme la galerie Instagram */
.vid-foot{display:flex;justify-content:center;margin:0 0 28px}
.vid-more{background:transparent;border:1.5px solid #000;color:#000;border-radius:999px;padding:10px 16px;min-height:36px;
  font:700 12px/1 Helvetica,Arial,sans-serif;cursor:pointer;letter-spacing:.02em;opacity:.7;transition:opacity .15s,background .15s,color .15s}
.vid-more:hover,.vid-more:focus-visible{opacity:1;background:#000;color:#fff}
.vid-more:focus-visible{outline:3px solid #000;outline-offset:2px}
.vid-more[hidden]{display:none}
/* Lecteur : la lightbox existante accueille une <video> + une ligne de titre.
   Le cadre prend la taille réelle du fichier lu (100 %), sans jamais l’agrandir :
   --vid-w = largeur du fichier en pixels, réduite seulement si l’écran est plus petit. */
.lightbox.has-video .lb-inner{width:auto;max-width:none;min-width:min(300px,calc(100vw - 48px))}
.lb-media.is-video{width:auto;height:auto;max-height:none;aspect-ratio:auto;display:flex;flex-direction:column}
.lb-media.is-video video{display:block;width:var(--vid-w,calc(100vw - 48px));height:auto;
  max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);background:#000;object-fit:contain;outline:none}
.lb-title{color:#fff;padding:12px 14px;font-size:13px;line-height:1.45;display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.lb-title .t{font-weight:700;margin:0}
.lb-title .t .c{display:block;font-weight:400;opacity:.7;font-size:12px;margin-top:2px}
.lb-title .y{opacity:.6;white-space:nowrap;font-variant-numeric:tabular-nums}
.lb-title .err{color:#ffb4a2;opacity:1;white-space:normal}
.lb-title .err a{color:#fff;border-bottom:1px solid rgba(255,255,255,.6)}
@media (prefers-reduced-motion:reduce){.vid-more,#portfolio .card{transition:none}#portfolio .card .prev{display:none}}
