/* AI Apps · Videos. The shared look comes from app.css + shell.css; this
   sheet holds the clip grid and the player dialog. */

.videos-page .gallery-intro .videos-lede { max-width:600px; margin:14px auto 0; color:#77797e; font-size:14px; line-height:1.6; text-wrap:pretty; }
.videos-page .videos-lede a { color:inherit; text-underline-offset:3px; }
.videos-page .videos-toolbar { grid-template-columns:repeat(2, minmax(0, 1fr)); }

.video-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:30px 20px; list-style:none; margin:0; padding:12px 0 0; }
.video-card { min-width:0; }
.video-thumb { position:relative; display:block; width:100%; aspect-ratio:16/9; padding:0; border:0; border-radius:18px; overflow:hidden; background:#16171a; cursor:pointer; box-shadow:0 1px 2px #0000000f, 0 10px 28px -16px #00000066; transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s ease; }
.video-thumb:hover { transform:translateY(-2px); box-shadow:0 2px 4px #00000012, 0 18px 36px -18px #00000080; }
.video-thumb:focus-visible { outline:3px solid var(--section); outline-offset:3px; }
.video-thumb img, .video-thumb .video-preview { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.video-thumb .video-preview { opacity:0; transition:opacity .25s ease; }
.video-thumb.previewing .video-preview { opacity:1; }
.video-play { position:absolute; left:50%; top:50%; width:52px; height:52px; margin:-26px 0 0 -26px; border-radius:50%; background:#ffffffe6; box-shadow:0 6px 20px -6px #00000080; transition:opacity .2s ease, transform .2s ease; }
.video-play::after { content:""; position:absolute; left:21px; top:17px; border-style:solid; border-width:9px 0 9px 14px; border-color:transparent transparent transparent #16171a; }
.video-thumb:hover .video-play { transform:scale(1.06); }
.video-thumb.previewing .video-play { opacity:0; }
.video-time { position:absolute; right:10px; bottom:10px; padding:3px 7px; border-radius:7px; background:#000000a6; color:#fff; font-size:11px; font-weight:650; font-variant-numeric:tabular-nums; }

.video-title { margin:13px 0 0; font-size:15px; line-height:1.3; font-weight:650; letter-spacing:-.3px; }
.video-title-button { all:unset; cursor:pointer; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.video-title-button:hover { text-decoration:underline; text-underline-offset:3px; }
.video-title-button:focus-visible { outline:2px solid var(--section); outline-offset:2px; border-radius:4px; }
.video-meta { display:flex; align-items:center; gap:12px; margin:6px 0 0; font-size:12px; color:#7d7e83; }
.video-creator { color:var(--ink); font-weight:600; text-decoration:none; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.video-creator:hover { text-decoration:underline; text-underline-offset:3px; }
.video-likes { margin-left:auto; flex-shrink:0; font-variant-numeric:tabular-nums; }
/* Plays counted here (11 Oct 2026) sit before X's like snapshot. */
.video-plays { display:inline-block; margin-left:auto; flex-shrink:0; color:var(--section); font-weight:650; font-variant-numeric:tabular-nums; }
.video-plays + .video-likes { margin-left:0; }
.player-plays { color:var(--section); font-weight:650; }
.player-plays:empty { display:none; }
/* Reader stars under each clip and in the player (13 Oct 2026). */
.video-rate { display:flex; margin:8px 0 0; }
.player-rate { margin:10px 0 0; }
.player-rate .rate-meta { margin:0; }
.video-tool { display:inline-block; margin:8px 0 0; padding:3px 9px; border-radius:999px; background:var(--section-soft); color:var(--section); font-size:11px; font-weight:650; }

/* Player: the clip fills the width, the credits sit under it. */
.videos-page dialog.video-dialog { width:min(960px, calc(100vw - 32px)); max-width:none; max-height:calc(100dvh - 32px); padding:0; overflow:auto; border:0; border-radius:20px; background:#fff; }
.videos-page dialog.video-dialog::backdrop { background:#0b0c0fcc; backdrop-filter:blur(4px); }
.video-dialog .dialog-close { position:absolute; top:12px; right:12px; z-index:2; background:#ffffffe0; }
.player-frame { background:#000; }
.player-frame video { display:block; width:100%; max-height:calc(100dvh - 200px); aspect-ratio:16/9; background:#000; }
.player-body { padding:18px 22px 22px; }
.player-body h2 { margin:0; font-size:22px; letter-spacing:-.6px; }
.player-meta { display:flex; flex-wrap:wrap; gap:4px 14px; margin:8px 0 0; color:#7d7e83; font-size:13px; }
.player-meta a { color:var(--ink); font-weight:600; text-decoration:none; }
.player-meta a:hover { text-decoration:underline; text-underline-offset:3px; }
.player-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }

@media (min-width:1500px) { .video-grid { grid-template-columns:repeat(4, minmax(0, 1fr)); } }
@media (max-width:1000px) { .video-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:26px 14px; } }
@media (max-width:640px) {
  .video-grid { grid-template-columns:1fr; gap:26px; }
  .video-thumb { border-radius:15px; }
  .videos-page .gallery-intro .videos-lede { font-size:13px; }
  .player-body { padding:14px 16px 18px; }
  .player-body h2 { font-size:19px; }
}
