/* /videos (task 020; player from task 018): one square player with a playlist. Intro, then "Browse by" (who you are /
   platform) with one row of tabs under it, then the stage:
   player on the left with Previous / Next straight under it, then the title and script; the group's playlist on the right.
   The player is sized from the viewport height (--vx-size) so the square and its buttons sit above the fold on a laptop.
   Single column under 960 px: player, buttons, title, playlist. */
.vx{padding:calc(var(--head) + clamp(14px,2.2vw,28px)) 0 clamp(56px,7vw,96px)}
.vx .crumbs{margin-bottom:8px}

.vx-intro{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
.vx h1{font-size:clamp(2rem,3.2vw,2.75rem);line-height:1.04;letter-spacing:-.04em;max-width:17ch}
.vx-lede{max-width:44ch;color:var(--body);line-height:1.5}
@media (min-width:960px){
  .vx-intro{grid-template-columns:max-content minmax(0,44ch);gap:48px;align-items:end}
  .vx-lede{padding-bottom:6px}
}

/* Browse by: a two-way switch (who you are / platform), then that row's tabs as light pills. One row on a laptop. */
.vx-pick{display:flex;flex-direction:column;gap:12px;margin-top:clamp(18px,2.4vw,26px);scroll-margin-top:calc(var(--head) + 12px)}
.vx-by{display:flex;align-items:center;gap:12px}
.vx-by-label{font-size:.92rem;font-weight:600;color:var(--ink);white-space:nowrap}
.vx-seg{display:inline-flex;padding:4px;border-radius:999px;background:rgba(17,18,20,.07)}
.vx-seg-b{min-height:44px;padding:0 18px;border:0;border-radius:999px;background:transparent;font:500 .95rem/1 var(--font-body);color:var(--body);cursor:pointer;white-space:nowrap;transition:background-color .18s,color .18s,box-shadow .18s}
.vx-seg-b:hover{color:var(--ink)}
.vx-seg-b[aria-pressed="true"]{background:#fff;color:var(--ink);font-weight:600;box-shadow:0 1px 3px rgba(10,13,20,.14)}
.vx-seg-b:focus-visible{outline:3px solid var(--blue-ink);outline-offset:2px}
.vx-tabs{display:flex;flex-wrap:wrap;gap:8px}
.vx-tabs[hidden]{display:none}
.vx-tab{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--line-2);border-radius:999px;background:transparent;font:500 .95rem/1.2 var(--font-body);color:var(--ink);cursor:pointer;transition:background-color .18s,color .18s,border-color .18s}
.vx-tab:hover{border-color:rgba(17,18,20,.32)}
.vx-tab[aria-selected="true"]{background:#0B0C10;border-color:#0B0C10;color:#fff}
.vx-tab:focus-visible{outline:3px solid var(--blue-ink);outline-offset:2px}
.vx-mark{display:block;width:20px;height:20px;object-fit:contain}
.vx-tab[aria-selected="true"] .vx-mark{filter:brightness(0) invert(1)}
@media (min-width:760px){
  .vx-pick{flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px 20px}
  .vx-by{padding-right:20px;border-right:1px solid var(--line-2)}
}
@media (max-width:380px){
  .vx-by{flex-wrap:wrap}
  .vx-seg{width:100%}
  .vx-seg-b{flex:1;padding:0 10px}
}

/* Stage */
.vx-stage{--vx-size:clamp(380px,calc(100svh - 400px),600px);display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-top:clamp(18px,2.2vw,24px)}
.vx-screen{width:100%;max-width:600px}
@media (min-width:960px){
  .vx-stage{grid-template-columns:var(--vx-size) minmax(0,1fr);grid-template-areas:"screen queue" "info queue";gap:20px clamp(28px,3.4vw,48px);align-items:start}
  .vx-screen{grid-area:screen;max-width:none}
  .vx-info{grid-area:info}
  .vx-queue{grid-area:queue}
}

.vx-frame{position:relative;container-type:inline-size;aspect-ratio:1/1;border-radius:16px;overflow:hidden;background:#0A0D14}
.vx-frame video{display:block;width:100%;height:100%;object-fit:contain;background:#0A0D14}

/* The first-play button sits in the empty lower band of every poster, clear of its headline. */
.vx-play{position:absolute;left:6%;bottom:6%;display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 22px 0 18px;border:0;border-radius:999px;background:#0B0C10;color:#fff;font:600 1rem/1 var(--font-body);cursor:pointer;box-shadow:0 8px 24px rgba(10,13,20,.22);transition:background-color .18s,color .18s,transform .18s}
.vx-play .ic{width:20px;height:20px}
.vx-play-t{font:500 .9rem/1 var(--mono);opacity:.78}
.vx-play:hover{background:var(--blue);color:#0B0C10}
.vx-play:active{transform:scale(.97)}
.vx-play:focus-visible{outline:3px solid var(--blue-ink);outline-offset:3px}
.vx-play[hidden]{display:none}

/* "Next: <title>" and the end card cover the finished frame. Sized from the frame (cqi) so they fit a phone. */
.vx-over{position:absolute;inset:0;display:grid;place-items:center;padding:7%;background:rgba(10,13,20,.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;text-align:center}
.vx-over[hidden]{display:none}
.vx-over-in{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,2.4cqi,14px);max-width:30em}
.vx-over-h{font:600 clamp(1.05rem,5.2cqi,1.6rem)/1.2 var(--font-head);letter-spacing:-.02em;text-wrap:balance}
.vx-over-sub{font-size:clamp(.85rem,3.4cqi,1rem);line-height:1.45;color:rgba(255,255,255,.8);text-wrap:balance}
.vx-over-btns{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:4px}
.vx-over-link{min-height:44px;padding:0 6px;border:0;background:transparent;color:#fff;font:500 clamp(.85rem,3.4cqi,.98rem)/1.3 var(--font-body);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.vx-over-link[hidden]{display:none}
.vx-over :focus-visible{outline:2px solid #fff;outline-offset:3px}
/* A phone-sized square keeps the heading and the actions; the sentence under the end card's heading goes. */
@container (max-width:360px){
  #vx-end .vx-over-sub{display:none}
  .vx-over-btns{gap:8px}
}

/* Under the player */
.vx-title{font:600 clamp(1.2rem,1.7vw,1.4rem)/1.25 var(--font-head);letter-spacing:-.02em}
.vx-meta{margin-top:4px;font-size:.88rem;line-height:1.45;color:var(--muted)}
.vx-script{margin-top:2px}
.vx-script summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;color:var(--blue-ink);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.vx-script p{margin-top:2px;max-width:66ch;line-height:1.6;color:var(--body)}

/* Previous / Next, straight under the player */
.vx-ctrl{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"prev pos next";align-items:center;gap:10px;margin-top:12px}
.vx-prev{grid-area:prev}
.vx-next{grid-area:next}
.vx-pos{grid-area:pos;text-align:center;line-height:1.3}
.vx-pos strong{display:block;font-weight:600;color:var(--ink)}
.vx-pos span{display:block;font-size:.85rem;color:var(--muted)}
.vx-ctrl .btn{padding:0 16px}
.vx-prev .ic{transform:rotate(180deg)}
.vx-ctrl .btn[aria-disabled="true"]{opacity:.45;cursor:default}
.vx-ctrl .btn[aria-disabled="true"]:hover{border-color:var(--line-2)}

/* Playlist */
.vx-panel-h{display:none}
.vx-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px}
.vx-item{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:center;gap:14px;width:100%;padding:7px 8px;border:1px solid transparent;border-radius:14px;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;transition:background-color .18s,border-color .18s}
.vx-item:hover{background:rgba(17,18,20,.045)}
.vx-item[aria-current="true"]{background:#fff;border-color:var(--line-2)}
.vx-item:focus-visible{outline:3px solid var(--blue-ink);outline-offset:1px}
.vx-thumb{display:block;width:56px;height:56px;border-radius:8px;object-fit:cover;background:#0A0D14}
.vx-item-t{min-width:0;font:600 .98rem/1.3 var(--font-head);letter-spacing:-.01em;color:var(--ink)}
.vx-item-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:4.5em}
.vx-dur{font:500 .85rem/1 var(--mono);color:var(--muted)}
.vx-tag{display:inline-flex;align-items:center;gap:4px;font-size:.8rem;font-weight:600;line-height:1.2;white-space:nowrap}
.vx-tag:empty{display:none}
.vx-tag .ic{width:14px;height:14px}
.vx-tag[data-state="playing"],.vx-tag[data-state="paused"],.vx-tag[data-state="ready"]{color:var(--blue-ink)}
.vx-tag[data-state="watched"]{color:#0E7C66}
.vx-more{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:10px;color:var(--blue-ink);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.vx-more .ic{width:16px;height:16px}

/* Without JS every group's list shows, stacked. */
.no-js .vx-panel[hidden]{display:block}
.no-js .vx-panel-h{display:block;margin:18px 0 6px;font:600 1rem/1.3 var(--font-head)}
.no-js .vx-pick,.no-js .vx-play,.no-js .vx-ctrl{display:none}

@media (min-width:960px){
  .vx-item{grid-template-columns:64px minmax(0,1fr) auto}
  .vx-thumb{width:64px;height:64px}
}
@media (max-width:520px){
  .vx-ctrl{grid-template-columns:1fr 1fr;grid-template-areas:"pos pos" "prev next"}
  .vx-ctrl .btn{padding:0 12px}
  .vx-item{gap:12px}
  .vx-play{min-height:48px;padding:0 18px 0 14px}
}

@media (prefers-reduced-motion:reduce){
  .vx-tab,.vx-seg-b,.vx-play,.vx-item{transition:none}
  .vx-play:active{transform:none}
}
