/* VideoVault front end. Structural CSS only, every rule under .vvault-front: no font-family and
   no hard-coded text colours, so the theme supplies both (approved mockup, docs/design/public-pages-mockup.html).
   Sections: tokens and base | layout | facts | chips | thumbnails and player | rows and cards |
   events and stats | text blocks | fallback page (VideoPage). Wave-2 tasks add their own sections below. */
/* ---- Tokens and base ---- */
/* Shared appearances are independent of theme colours and module layout. */
/* R33: every module is its own size container, so its layout follows the space it is placed in (a sidebar, a column, a builder section, full width), never the viewport. Rules inside a module use @container vv; a rule on the module root itself queries the space around it. */
.vvault-front .vvault-module{container:vv/inline-size;min-width:0;overflow-wrap:anywhere}
.vvault-front .vvault-module.vvault-module--editorial{padding:1rem 0;border:0;border-top:3px solid var(--vv-accent);border-radius:0;background:transparent}
.vvault-front .vvault-module.vvault-module--editorial>h2{border:0;padding:0;font-size:1.15rem}
.vvault-front .vvault-module.vvault-module--compact{padding:0;border:0;border-radius:0;background:transparent}
.vvault-front .vvault-module.vvault-module--compact>h2{border:0;padding:0;font-size:1rem}
.vvault-front .vvault-module--compact .vvault-summary{border:0;padding-left:0}
.vvault-front .vvault-module>.vvault-section__head{border:0;padding:0}
.vvault-front .vvault-module .vvault-summary p:first-child{margin-top:0}
.vvault-front .vvault-module .vvault-summary p:last-child{margin-bottom:0}
.vvault-front .vvault-module--compact .vvault-ev{border:0;border-radius:0;background:transparent;padding:.5rem 0}
.vvault-front{--vv-ink:var(--wp--preset--color--contrast,currentColor);--vv-paper:var(--wp--preset--color--base,#fff);--vv-accent:var(--wp--preset--color--accent-1,currentColor);--vv-line:color-mix(in srgb,currentColor 20%,transparent);--vv-edge:color-mix(in srgb,currentColor 55%,transparent);--vv-soft:color-mix(in srgb,currentColor 5%,transparent);--vv-muted:color-mix(in srgb,currentColor 80%,transparent);--vv-pic-row:12rem;--vv-pic-lead:20rem;container:vv/inline-size;line-height:1.55}
.vvault-front *,.vvault-front *::before,.vvault-front *::after{box-sizing:border-box}
.vvault-front a{color:inherit}
.vvault-front ::placeholder{color:var(--vv-muted);opacity:1}
/* Focus ring in the context's text colour (--vv-ink is redefined by Cinema), never currentColor: a light label
   on its own dark fill would draw a light ring on a light page (R30). A theme may set --vv-ring. */
.vvault-front :focus-visible{outline:3px solid var(--vv-ring,var(--vv-ink));outline-offset:2px}
.vvault-front img{max-width:100%;height:auto}
.vvault-front .vvault-muted{color:var(--vv-muted)}
.vvault-front .vvault-eyebrow{font-size:max(.875rem,.78em);letter-spacing:.07em;text-transform:uppercase;font-weight:700;color:var(--vv-muted);margin:0 0 .5rem}
.vvault-front h1,.vvault-front h2,.vvault-front h3{overflow-wrap:anywhere}
.vvault-front .vvault-page__head h1{margin:0 0 .5rem;line-height:1.15}
.vvault-front .vvault-hint{font-size:max(.875rem,.85em);color:var(--vv-muted);margin:0}
/* ---- Layout ---- */
/* Classic templates: our wrapper sets the width (block templates use the group's layout). */
.vvault-page:not(.wp-block-group){max-width:min(1120px,var(--responsive--alignwide-width,calc(100% - 2rem)));margin-left:auto;margin-right:auto}
.vvault-front .vvault-section{margin:3rem 0 0}
.vvault-front .vvault-section>h2,.vvault-front .vvault-section__head{margin:0 0 1rem;padding-bottom:.5rem;border-bottom:2px solid var(--vv-line)}
.vvault-front .vvault-section__head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem}
.vvault-front .vvault-section__head h2{margin:0}
.vvault-front .vvault-section__head a{font-size:max(.875rem,.9em)}
.vvault-front .wp-block-column>.vvault-front:first-child>.vvault-section{margin-top:0}
/* ---- Chips ---- */
.vvault-front .vvault-chips{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}
.vvault-front .vvault-chip{display:inline-flex;align-items:center;gap:.5rem;min-height:2.5rem;padding:.25rem 1rem;border:1px solid var(--vv-edge);border-radius:999px;background:transparent;color:inherit;font:inherit;font-size:max(.875rem,.92em);text-decoration:none;cursor:pointer}
.vvault-front a.vvault-chip:hover{background:var(--vv-soft);text-decoration:underline}
.vvault-front .vvault-chip small{font-size:max(.875rem,.85em);opacity:.8}
.vvault-front .vvault-chip--plain{border-color:var(--vv-line);min-height:0;padding:0 .75rem;cursor:default}
/* ---- Thumbnails and the click-to-load player ---- */
.vvault-front .vvault-thumb{position:relative;display:block;aspect-ratio:16/9;width:100%;border-radius:.35rem;overflow:hidden;background:var(--vv-soft)}
.vvault-front .vvault-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.vvault-front .vvault-thumb__len{position:absolute;right:.35rem;bottom:.35rem;background:rgba(0,0,0,.82);color:#fff;border-radius:.2rem;padding:0 .25rem;font-size:max(.875rem,.75em);font-variant-numeric:tabular-nums;z-index:1}
.vvault-front .vvault-embed{position:relative;aspect-ratio:16/9;width:100%;background:#000;border-radius:.5rem;overflow:hidden;margin:0}
.vvault-front .vvault-embed iframe,.vvault-front .vvault-embed__play,.vvault-front .vvault-embed__play img{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;object-fit:cover}
.vvault-front .vvault-embed__play{color:#fff;text-decoration:none}
.vvault-front .vvault-embed__icon{position:absolute;left:50%;top:50%;width:68px;height:48px;margin:0;translate:-50% -50%;color:#fff;background:rgba(0,0,0,.8);border-radius:12px;border:2px solid #fff;transition:transform .15s}
.vvault-front .vvault-embed__play:hover .vvault-embed__icon,.vvault-front .vvault-embed__play:focus-visible .vvault-embed__icon{background:#000;scale:1.06}
.vvault-front .vvault-embed__play:focus-visible{outline:3px solid #fff;outline-offset:-6px}
.vvault-front .vvault-embed__cap{position:absolute;left:.75rem;right:.75rem;bottom:.6rem;text-align:left;font-size:max(.875rem,.8em);text-shadow:0 1px 2px #000}
/* ---- Video rows and cards ---- */
.vvault-front .vvault-rows{margin:0;padding:0;list-style:none}
.vvault-front .vvault-row{display:grid;grid-template-columns:7.25rem minmax(0,1fr);gap:.5rem 1rem;padding:1rem 0;border-top:1px solid var(--vv-line);margin:0}
.vvault-front .vvault-row:last-child{border-bottom:1px solid var(--vv-line)}
.vvault-front .vvault-row[hidden]{display:none}
.vvault-front .vvault-row h3,.vvault-front .vvault-card h3{margin:0 0 .25rem;font-size:1.02em;line-height:1.3}
.vvault-front .vvault-row p{margin:.25rem 0 0;font-size:max(.875rem,.92em)}
.vvault-front .vvault-meta{font-size:max(.875rem,.86em);color:var(--vv-muted)}
.vvault-front .vvault-tag{display:inline-block;border:1px solid var(--vv-edge);border-radius:.25rem;padding:0 .5rem;margin-right:.25rem;font-size:max(.875rem,.72em);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:inherit;vertical-align:.08em}
@container vv (min-width:600px){.vvault-front .vvault-row{grid-template-columns:11rem minmax(0,1fr)}}
.vvault-front .vvault-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(12.5rem,16rem);gap:1rem;overflow-x:auto;padding:0 0 .75rem;margin:0;list-style:none;scroll-snap-type:x proximity}
.vvault-front .vvault-strip>li{scroll-snap-align:start;margin:0}
.vvault-front .vvault-card h3{margin-top:.5rem}
/* ---- Events, on this day, stats ---- */
.vvault-front .vvault-grid{display:grid;gap:1rem;grid-template-columns:1fr;margin:0;padding:0;list-style:none}
@container vv (min-width:560px){.vvault-front .vvault-grid{grid-template-columns:repeat(2,1fr)}}
@container vv (min-width:860px){.vvault-front .vvault-grid--3{grid-template-columns:repeat(3,1fr)}}
.vvault-front .vvault-grid>li{margin:0}
.vvault-front .vvault-ev{display:block;border:1px solid var(--vv-line);border-radius:.5rem;padding:1rem 1rem;height:100%;text-decoration:none}
.vvault-front .vvault-ev h3{margin:0 0 .25rem;font-size:1.02em;line-height:1.3}
.vvault-front .vvault-ev:hover{border-color:var(--vv-edge)}
.vvault-front .vvault-ev:hover h3{text-decoration:underline}
.vvault-front .vvault-ev p{margin:.25rem 0 0}
.vvault-front .vvault-note{background:var(--vv-soft);border:1px solid var(--vv-line);border-radius:.5rem;padding:1rem 1rem;margin:1rem 0 0}
.vvault-front .vvault-note h3{margin:0 0 .25rem;font-size:1em}
.vvault-front .vvault-note p{margin:0}
.vvault-front .vvault-note p+p{margin-top:.75em}
.vvault-front .vvault-note :is(p,ul,ol){max-width:62ch}
.vvault-front .vvault-note .vvault-eyebrow{margin-bottom:.25rem}
/* Curator's note: the owner's few sentences under the player or the event title. One callout, accent edge, reading size (R32). */
.vvault-front .vvault-curator-note{margin:1rem 0;padding:1rem;border:1px solid var(--vv-line);border-left:4px solid var(--vv-accent);border-radius:.5rem;background:var(--vv-soft);font-size:max(1.0625rem,1em);line-height:1.6}
.vvault-front .vvault-curator-note .vvault-eyebrow{margin:0 0 .25rem}
.vvault-front .vvault-curator-note p{margin:0 0 .5rem}
.vvault-front .vvault-curator-note p:last-child{margin-bottom:0}
/* ---- Text blocks: summary, article, moments, FAQ, AI label (R16) ---- */
.vvault-front .vvault-ai-label{font-size:max(.875rem,.82em);color:var(--vv-muted);margin:0 0 .75rem}
.vvault-front .vvault-summary{border-left:4px solid var(--vv-accent);padding:0 0 0 1rem;max-width:var(--vv-measure,57ch)}
.vvault-front .vvault-summary p{font-size:max(1.0625rem,1em)}
.vvault-front .vvault-summary p{margin:0 0 1rem}
.vvault-front .vvault-summary p:last-child{margin-bottom:0}
/* Reading text (review rule R32): at least 17px, 1.5 leading, about 69 characters a line. */
.vvault-front .vvault-prose{max-width:var(--vv-measure,57ch);font-size:max(1.0625rem,1em);line-height:1.6}
/* Compact sets its modules at .9rem / 1.45; its running text still reads at body size (R32). */
.vvault-front .vvault-module--compact :is(.vvault-prose,.vvault-summary){font-size:1.0625rem;line-height:1.55}
.vvault-front .vvault-prose h2{margin:2rem 0 .5rem;font-size:1.25em}
.vvault-front .vvault-prose p{margin:0 0 1rem}
.vvault-front .vvault-prose a{text-decoration:underline}
.vvault-front .vvault-original-title{margin:.5rem 0 1rem;font-size:max(.875rem,.9em);color:var(--vv-muted);overflow-wrap:anywhere}
.vvault-front .vvault-original-title span{font-weight:600}
.vvault-front .vvault-front__body h2{font-size:1.25em;margin:1.5rem 0 .5rem}
.vvault-front .vvault-front__body a{text-decoration:underline}
.vvault-front>.vvault-embed{margin-bottom:1.5rem}
.vvault-front .vvault-ai-label{font-size:max(.875rem,.8em);color:var(--vv-muted);margin:0 0 1rem}
.vvault-front .vvault-sources{font-size:max(.875rem,.86em);color:var(--vv-muted);margin:2rem 0 0;padding-top:.75rem;border-top:1px solid var(--vv-line)}
.vvault-front .vvault-empty{margin:1rem 0;color:var(--vv-muted)}
.vvault-front .vvault-find{margin:1rem 0 0}
.vvault-front .vvault-pager{margin:1.5rem 0 0}
.vvault-front .vvault-pager ul{display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none}
.vvault-front .vvault-pager li{margin:0}
.vvault-front .vvault-pager .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:2.5rem;min-height:2.5rem;padding:0 .75rem;border:1px solid var(--vv-line);border-radius:.35rem;text-decoration:none}
.vvault-front .vvault-pager a.page-numbers:hover{border-color:var(--vv-edge);text-decoration:underline}
.vvault-front .vvault-pager .current{border-color:currentColor;font-weight:700}
.vvault-front .vvault-pager .dots{border-color:transparent}
.vvault-front .vvault-chip--on{border-color:currentColor;font-weight:700;background:var(--vv-soft)}
/* ==== Task 8: Find a crash filter bar (own section; T11 consolidates) ==== */
/* Button: one component (R30). Variants and contexts set only the tokens --vv-btn-bg / -fg / -line
   (and optionally -bg-hover / -bg-active); every state paints label and background from the same pair,
   so no theme or plugin :hover rule can leave a label in the colour of its own background. */
.vvault-front .vvault-btn{--vv-btn-bg:var(--vv-go,var(--vv-ink));--vv-btn-fg:#fff;--vv-btn-line:var(--vv-btn-bg);display:inline-flex;align-items:center;justify-content:center;min-height:2.75rem;padding:.5rem 1.5rem;border:2px solid var(--vv-btn-line);border-radius:.4rem;background:var(--vv-btn-bg);color:var(--vv-btn-fg);font:inherit;font-weight:700;text-decoration:none;cursor:pointer;opacity:1}
.vvault-front .vvault-btn:is(:hover,:focus-visible){background:var(--vv-btn-bg-hover,color-mix(in srgb,var(--vv-btn-bg) 86%,var(--vv-btn-fg)));color:var(--vv-btn-fg);opacity:1;text-decoration:none}
.vvault-front .vvault-btn:active{background:var(--vv-btn-bg-active,color-mix(in srgb,var(--vv-btn-bg) 74%,var(--vv-btn-fg)));color:var(--vv-btn-fg)}
.vvault-front .vvault-btn:focus-visible{outline:3px solid var(--vv-ring,var(--vv-ink));outline-offset:2px}
.vvault-front .vvault-find{border:1px solid var(--vv-edge);border-radius:.6rem;padding:1rem 1rem;background:var(--vv-soft);margin:0 0 1.5rem}
.vvault-front{--vv-go:#22503f}
.vvault-front .vvault-find p{margin:0}
.vvault-front .vvault-find__summary{display:flex;align-items:center;gap:.5rem;min-height:2.75rem;cursor:pointer;font-weight:700;font-size:1.1em;list-style:none}
.vvault-front .vvault-find__summary::-webkit-details-marker{display:none}
.vvault-front .vvault-find__title{display:none;margin:0;font-size:1.45em;line-height:1.1;white-space:nowrap}
/* The folded bar's name for screen readers: a closed details hides its own h2, so this copy stands in until it opens. */
.vvault-front .vvault-find__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.vvault-front .vvault-findform:has(>details[open])>.vvault-find__sr{display:none}
.vvault-front .vvault-find__body{display:block}
.vvault-front .vvault-find__row{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem;align-items:stretch}
.vvault-front .vvault-find__row .vvault-field{flex:1 1 100%;border:1px solid var(--vv-edge);border-radius:.4rem;background:var(--vv-paper);padding:.25rem .75rem .25rem;min-width:0}
.vvault-front .vvault-find__row .vvault-field label{font-size:max(.875rem,.7em);font-weight:700;margin:0;color:var(--vv-muted)}
.vvault-front .vvault-find__row .vvault-field select{border:0;min-height:2rem;padding:0;background:transparent}
.vvault-front .vvault-find__go{flex:1 1 100%;display:flex}
.vvault-front .vvault-find__go .vvault-btn{width:100%}
.vvault-front .vvault-find__hint{margin:.5rem 0 0;font-size:max(.875rem,.85em)}
.vvault-front .vvault-find__more{margin-top:.5rem}
.vvault-front .vvault-find__more>summary{cursor:pointer;font-weight:700;font-size:max(.875rem,.9em);min-height:2.25rem;display:flex;align-items:center}
@container vv (min-width:600px){.vvault-front .vvault-find__summary{display:none}.vvault-front .vvault-find__body{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.5rem 1rem}.vvault-front .vvault-find__title{display:block}.vvault-front .vvault-find__row{margin:0;flex-wrap:nowrap}.vvault-front .vvault-find__row .vvault-field{flex:1 1 0}.vvault-front .vvault-find__go{flex:0 0 auto}.vvault-front .vvault-find__go .vvault-btn{width:auto;min-width:7rem}.vvault-front .vvault-find__hint,.vvault-front .vvault-find__more{grid-column:1/-1}}
.vvault-front .vvault-find__grid{display:grid;gap:.75rem 1rem;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));margin:1rem 0}.vvault-front .vvault-find__grid:last-child,.vvault-front .vvault-find__grid :is(.vvault-field,label):last-child{margin-bottom:0}
.vvault-front .vvault-find__grid .vvault-field--wide{grid-column:1/-1}
.vvault-front .vvault-find__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem}
.vvault-front .vvault-field{border:0;margin:0;padding:0;min-width:0}
.vvault-front .vvault-field label,.vvault-front .vvault-field legend{display:block;font-size:max(.875rem,.85em);font-weight:700;margin:0 0 .25rem;padding:0}
.vvault-front .vvault-field select,.vvault-front .vvault-field input[type=search],.vvault-front .vvault-field input[type=number]{width:100%;min-height:2.75rem;padding:0 .75rem;border:1px solid var(--vv-edge);border-radius:.4rem;background:var(--vv-paper);color:inherit;font:inherit;box-sizing:border-box}
.vvault-front .vvault-check{display:flex;align-items:center;gap:.5rem;min-height:2.25rem;font-size:max(.875rem,.95em)}
.vvault-front .vvault-check input{width:1.1rem;height:1.1rem;margin:0;accent-color:var(--vv-ink)}
.vvault-front .vvault-find a,.vvault-front .vvault-found a:not(.vvault-chip){display:inline-block;min-height:1.5rem;padding-block:.25rem}
.vvault-front .vvault-found{margin:0 0 1rem;scroll-margin-top:1rem}
.vvault-front .vvault-found:focus{outline:none}
.vvault-front .vvault-found:focus-visible{outline:2px solid var(--vv-edge);outline-offset:6px;border-radius:.3rem}
.vvault-front .vvault-chip--x{min-height:2.25rem}
.vvault-front .vvault-pager{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:1rem 0 0}
.vvault-front .vvault-chip[aria-current]{background:var(--vv-ink);color:var(--vv-paper);border-color:var(--vv-ink)}
/* ==== Editorial module system: VV-001..008 (isolated-module designs, 2026-10-30) ====
   Tokens only: a theme sets fonts/colours (theme.json custom.videovault.*); every value falls back to
   inheriting the theme. "Editorial" is the designs' card; Minimal and Outlined stay alternatives. */
.vvault-front{--vv-measure:57ch;--vv-font-ui:var(--wp--custom--videovault--font-ui,inherit);--vv-font-display:var(--wp--custom--videovault--font-display,inherit);--vv-title-weight:var(--wp--custom--videovault--title-weight,700);--vv-strong:var(--wp--custom--videovault--accent,var(--vv-ink));--vv-on-strong:var(--vv-paper);--vv-panel:color-mix(in srgb,var(--vv-strong) 6%,var(--vv-paper));--vv-card-line:color-mix(in srgb,currentColor 17%,transparent);--vv-radius:var(--wp--custom--videovault--radius,6px);--vv-pad:2rem;--vv-title:clamp(1.65rem,1.1rem + 2.4cqi,2.45rem)}
.vvault-front .vvault-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* Kicker: small caps label with a short trailing rule ("SUMMARY ——"). */
.vvault-front .vvault-kicker,.vvault-front h2.vvault-kicker{display:flex;align-items:center;gap:.75rem;margin:0 0 1rem;padding:0;border:0;font-family:var(--vv-font-ui);font-size:.875rem;font-weight:500;line-height:1.3;letter-spacing:.075em;text-transform:uppercase;color:inherit}
.vvault-front .vvault-kicker::after{content:"";width:2.75rem;height:1px;background:currentColor;opacity:.7;flex:none}
.vvault-front .vvault-dek{margin:-.25rem 0 1rem;max-width:62ch;font-size:1.02em;color:var(--vv-muted);line-height:1.45}
/* Board 04: Sources and Related events sit under whitespace, not the Editorial accent rule. */
.vvault-front .vvault-module.vvault-module--editorial:is(.vvault-sources,.vvault-related-events){border-top:0}
.vvault-front .vvault-module.vvault-module--editorial>.vvault-section__head h2,.vvault-front .vvault-module.vvault-module--clean>.vvault-section__head h2,.vvault-front .vvault-module.vvault-module--cinema>.vvault-section__head h2{font-size:var(--vv-title);line-height:1.08;letter-spacing:-.012em;font-weight:var(--vv-title-weight);margin:0}
.vvault-front .vvault-module--compact>.vvault-section__head h2{font-size:1.5rem}
.vvault-front .vvault-mod-title{font-size:var(--vv-title);line-height:1.08;letter-spacing:-.012em;font-weight:var(--vv-title-weight);margin:-.25rem 0 .5rem;padding:0;border:0}
/* R16 label: quiet line at the foot of the module, never removed. */
.vvault-front .vvault-ai-label{display:block;margin:1rem 0 0;padding-top:1rem;border-top:1px solid var(--vv-card-line);font-family:var(--vv-font-ui);font-size:.875rem;line-height:1.45;color:var(--vv-muted)}
.vvault-front .vvault-ai-label::before{content:"\2731";display:inline-block;margin-right:.5rem;color:var(--vv-strong);font-size:1.05em;line-height:1}
.vvault-front .vvault-ai-label a{color:inherit;text-decoration:underline;text-underline-offset:.2em;margin-left:.25rem;padding-left:.5rem;border-left:1px solid var(--vv-card-line)}
.vvault-front .vvault-ai-label a:hover{color:var(--vv-strong)}
.vvault-front .vvault-page__head{margin:0 0 1.5rem}
.vvault-front .vvault-page__head h1{font-size:clamp(2.2rem,1.4rem + 4.2cqi,4rem);line-height:1.04;letter-spacing:-.018em;font-weight:var(--vv-title-weight);margin:0 0 .5rem}
.vvault-front .vvault-avatar{display:inline-grid;place-items:center;flex:none;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--vv-strong);color:var(--vv-on-strong);font-family:var(--vv-font-display);font-size:1.05rem;font-weight:600;letter-spacing:.02em}
/* VV-002 Video player: rounded frame, accent play disc, duration badge. */
.vvault-front .vvault-embed{border-radius:var(--vv-radius)}
.vvault-front .vvault-embed__icon{width:4.5rem;height:4.5rem;margin:0;border-radius:50%;background:var(--vv-strong);border:3px solid #fff;box-shadow:0 2px 14px rgba(0,0,0,.35)}
.vvault-front .vvault-embed__play:hover .vvault-embed__icon,.vvault-front .vvault-embed__play:focus-visible .vvault-embed__icon{background:var(--vv-strong);scale:1.07}
.vvault-front .vvault-embed__len{position:absolute;top:.85rem;right:.85rem;padding:.25rem .5rem;border-radius:4px;background:rgba(20,22,22,.78);color:#fff;font-family:var(--vv-font-ui);font-size:.875rem;font-variant-numeric:tabular-nums;line-height:1.3}
.vvault-front .vvault-embed__cap{left:1rem;right:1rem;bottom:.8rem;font-family:var(--vv-font-ui);font-size:.875rem}
/* ==== VV-001..008 pass 2: icons, source footer, header facts, empty player, thumbs, cards ==== */
.vvault-front .vvault-ico{flex:none;width:1.2em;height:1.2em;color:var(--vv-strong)}
.vvault-front .vvault-btn.vvault-btn--play{display:inline-flex;align-items:center;justify-content:center;gap:.75rem;min-height:2.9rem;padding:.5rem 1rem;border:0;border-radius:4px;--vv-btn-bg:var(--vv-strong);--vv-btn-fg:var(--vv-on-strong);font-family:var(--vv-font-ui);font-size:1rem;font-weight:500;text-decoration:none;white-space:nowrap}
.vvault-front .vvault-btn--play:focus-visible{outline:3px solid var(--vv-ring,var(--vv-ink));outline-offset:3px}
.vvault-front .vvault-btn__arrow{--vv-ico-size:1.15em}
.vvault-front .vvault-avatar--lg{width:3.6rem;height:3.6rem;font-size:1.35rem}
.vvault-front .vvault-avatar--sm{width:2.1rem;height:2.1rem;font-size:.875rem;background:color-mix(in srgb,var(--vv-strong) 62%,var(--vv-paper))}
/* Facts row (header, empty player). */
.vvault-front .vvault-factline{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 0;margin:0;padding:0;list-style:none;font-family:var(--vv-font-ui);font-size:1rem}
.vvault-front .vvault-factline>li{display:inline-flex;align-items:center;gap:.5rem;margin:0;padding:0 1rem;border-left:1px solid var(--vv-card-line);line-height:1.3}
.vvault-front .vvault-factline>li:first-child{padding-left:0;border-left:0}
.vvault-front .vvault-factline .vvault-ico{color:inherit;width:1.35em;height:1.35em}
/* VV-002 no-video panel. */
.vvault-front .vvault-embed--empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:1.5rem;background:var(--vv-panel);color:inherit;text-align:center;aspect-ratio:16/9;height:auto}
.vvault-front .vvault-embed--empty .vvault-embed__icon{position:static;translate:none;margin:0 0 .5rem;border-color:transparent;box-shadow:none}
.vvault-front .vvault-embed__title{margin:0;font-family:var(--vv-font-display);font-weight:var(--vv-title-weight);font-size:clamp(1.35rem,1rem + 2cqi,2rem);line-height:1.15}
.vvault-front .vvault-embed--empty .vvault-factline{justify-content:center}
.vvault-front .vvault-embed__empty-note{margin:0;font-family:var(--vv-font-ui);font-size:.875rem;color:var(--vv-muted)}
@container vv (max-width:480px){.vvault-front .vvault-embed--empty{aspect-ratio:auto;min-height:14rem}}
/* Header reading order: title, subtitle, facts row, details, lead, link (DOM order stays module order). */
.vvault-front .vvault-page__head{display:flex;flex-direction:column;align-items:stretch}
.vvault-front .vvault-page__head>*{max-width:100%}
.vvault-front .vvault-page__head .vvault-factline{order:2}
/* Beat the appearance h2 size rules (.vvault-module--*>h2) for kickers and module titles. */
.vvault-front .vvault-module.vvault-module>h2.vvault-mod-title{font-size:var(--vv-title)}
.vvault-front .vvault-module.vvault-module>h2.vvault-kicker{font-size:.875rem}
.vvault-front .vvault-embed--empty{min-height:20rem}
.vvault-front .vvault-embed--empty .vvault-embed__icon{position:relative;left:auto;top:auto;width:5rem;height:5rem}
.vvault-front .vvault-summary__grid{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem 1.5rem;align-items:start}
@container vv (min-width:640px){.vvault-front .vvault-summary__grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}}
.vvault-front .vvault-summary__thumb{position:relative;display:block;aspect-ratio:16/9;border-radius:var(--vv-radius);overflow:hidden;background:var(--vv-panel)}
.vvault-front .vvault-summary__thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vvault-front .vvault-summary__thumb .vvault-embed__icon{width:3.6rem;height:3.6rem;margin:0}
.vvault-front .vvault-summary__len{position:absolute;left:.75rem;bottom:.75rem;padding:.25rem .5rem;border-radius:4px;background:rgba(20,22,22,.82);color:#fff;font-family:var(--vv-font-ui);font-size:.875rem}
/* Wrapped fact rows: every row starts without a divider (the leading one is clipped). */
.vvault-front .vvault-embed--empty .vvault-factline{margin-left:0;clip-path:none}
.vvault-front .vvault-embed--empty .vvault-factline>li{border-left:0;padding:0 .5rem}
/* ==== Editorial module system: VV-009..016 (isolated-module designs, batch 2, 2026-10-30) ==== */
/* Card shell for the batch-2 modules (Editorial), squared in Outlined, bare in Minimal. */
.vvault-front .vvault-module--editorial:is(.vvault-evidence,.vvault-srclist,.vvault-evlink,.vvault-coverage,.vvault-timeline-box,.vvault-seq,.vvault-pn,.vvault-related),.vvault-front .vvault-module--clean:is(.vvault-evidence,.vvault-srclist,.vvault-evlink,.vvault-coverage,.vvault-timeline-box,.vvault-seq,.vvault-pn,.vvault-related),.vvault-front .vvault-module--cinema:is(.vvault-evidence,.vvault-srclist,.vvault-evlink,.vvault-coverage,.vvault-timeline-box,.vvault-seq,.vvault-pn,.vvault-related){padding:var(--vv-pad);border:1px solid var(--vv-card-line);border-radius:var(--vv-radius);background:var(--vv-paper)}
.vvault-front :is(.vvault-evidence,.vvault-srclist,.vvault-evlink,.vvault-coverage,.vvault-timeline-box,.vvault-seq,.vvault-pn,.vvault-related) :is(h2,h3,h4){font-family:var(--vv-font-display)}
.vvault-front :is(.vvault-evidence,.vvault-srclist,.vvault-evlink,.vvault-coverage,.vvault-timeline-box,.vvault-seq,.vvault-pn,.vvault-related) a{color:inherit}
.vvault-front .vvault-module.vvault-module>.vvault-modhead h2.vvault-mod-title,.vvault-front .vvault-modhead h2.vvault-mod-title{margin:0;font-size:var(--vv-title)}
/* Module head: title left, link or count right. */
.vvault-front .vvault-modhead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1rem;margin:0 0 .5rem}
.vvault-front .vvault-modhead>a,.vvault-front .vvault-subhead>a{font-family:var(--vv-font-ui);font-size:.95rem;color:var(--vv-strong);text-decoration:none;white-space:nowrap}
.vvault-front .vvault-modhead>a:hover,.vvault-front .vvault-subhead>a:hover{text-decoration:underline;text-underline-offset:.2em}
.vvault-front .vvault-modhead--rule{padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--vv-card-line)}
.vvault-front .vvault-modhead__count{display:inline-flex;align-items:center;gap:.5rem;text-decoration:underline!important;text-underline-offset:.2em}
.vvault-front .vvault-subhead{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem;margin:1.5rem 0 .75rem}
.vvault-front .vvault-subhead h3{margin:0;font-size:clamp(1.25rem,1rem + 1cqi,1.6rem);font-weight:var(--vv-title-weight);line-height:1.15}
/* Kicker with a rule that runs to the edge (VV-009). */
.vvault-front .vvault-kicker--rule::after{flex:1 1 auto;width:auto;opacity:.35}
/* Thumbnail: reserved 16:9, play disc, duration. */
.vvault-front .vvault-th{position:relative;display:block;aspect-ratio:16/9;border-radius:4px;overflow:hidden;background:var(--vv-panel)}
.vvault-front .vvault-th img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vvault-front .vvault-th__play{position:absolute;left:.7rem;bottom:.7rem;width:2.4rem;height:2.4rem;border-radius:50%;background:var(--vv-strong);border:2px solid #fff;box-shadow:0 1px 6px rgba(0,0,0,.3);color:#fff}
.vvault-front .vvault-th__len{position:absolute;right:.55rem;bottom:.55rem;padding:0 .5rem;border-radius:4px;background:rgba(20,22,22,.82);color:#fff;font-family:var(--vv-font-ui);font-size:.875rem;font-variant-numeric:tabular-nums;line-height:1.4}
/* Byline: avatar, channel, small facts with thin dividers. */
.vvault-front .vvault-by{display:flex;align-items:center;gap:.75rem;font-family:var(--vv-font-ui);line-height:1.35;min-width:0}
.vvault-front .vvault-by__text{display:flex;flex-direction:column;min-width:0}
.vvault-front .vvault-by__name{font-size:.92rem;font-weight:500}
.vvault-front .vvault-by__bits{font-size:.875rem;color:var(--vv-muted)}
.vvault-front .vvault-sep{display:inline-block;width:1px;height:.9em;margin:0 .5rem;vertical-align:-.1em;background:var(--vv-card-line)}
/* Pill label ("Video source", "Now playing"). */
.vvault-front .vvault-pill{display:inline-block;margin:0 0 .5rem;padding:.25rem .5rem;border-radius:3px;background:color-mix(in srgb,var(--vv-strong) 14%,var(--vv-paper));font-family:var(--vv-font-ui);font-size:.875rem;line-height:1.4}
.vvault-front .vvault-pill--strong{background:var(--vv-strong);color:var(--vv-on-strong)}
.vvault-front .vvault-link{display:inline-flex;align-items:center;gap:.5rem;min-height:2rem;color:var(--vv-strong)!important;text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}
.vvault-front .vvault-link__disc{width:1.35rem;height:1.35rem;border-radius:50%;background:var(--vv-strong);color:var(--vv-on-strong)}
.vvault-front .vvault-btn-strong__disc{width:1.3rem;height:1.3rem;border-radius:50%;background:var(--vv-on-strong);color:var(--vv-strong)}
/* Small AI label under one item (R16). */
.vvault-front .vvault-ai-label--item{margin:.5rem 0 0;padding:0;border:0;font-size:.875rem}
.vvault-front .vvault-grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,11.5rem),1fr));gap:1rem 1rem;margin:0;padding:0;list-style:none}
.vvault-front .vvault-gcard{display:flex;flex-direction:column;gap:.5rem;margin:0;min-width:0}
.vvault-front .vvault-gcard__title{margin:.25rem 0 0;font-size:1.12rem;line-height:1.25;font-weight:var(--vv-title-weight)}
.vvault-front .vvault-gcard__title a{text-decoration:none}
.vvault-front .vvault-gcard__title a:hover{text-decoration:underline}
/* VV-012 More coverage of this event (video rows; VV-014 reuses them). */
.vvault-front .vvault-coverage .vvault-dek{max-width:none;margin:0 0 1rem;padding-bottom:1rem;border-bottom:1px solid var(--vv-card-line);font-family:var(--vv-font-ui);font-size:1rem;color:inherit}
.vvault-front .vvault-gcard__kicker{margin:.25rem 0 -.25rem;font-family:var(--vv-font-ui);font-size:.875rem;letter-spacing:.06em;text-transform:uppercase}
.vvault-front .vvault-gcard--link{position:relative}
.vvault-front .vvault-gcard--link .vvault-by{padding-right:1rem}
.vvault-front :is(.vvault-topicterms,.vvault-reltopics,.vvault-vcoll,.vvault-evcoll,.vvault-tindex,.vvault-chcoll,.vvault-stcoll,.vvault-pick) :is(h2,h3,h4){font-family:var(--vv-font-display)}
.vvault-front :is(.vvault-topicterms,.vvault-reltopics,.vvault-vcoll,.vvault-evcoll,.vvault-tindex,.vvault-chcoll,.vvault-stcoll,.vvault-pick) :is(h3,h4) a{text-decoration:none}
.vvault-front :is(.vvault-topicterms,.vvault-reltopics,.vvault-vcoll,.vvault-evcoll,.vvault-tindex,.vvault-chcoll,.vvault-stcoll,.vvault-pick) :is(h3,h4) a:hover{text-decoration:underline;text-decoration-thickness:1px}
.vvault-front .vvault-kicker--plain::after{display:none}
.vvault-front .vvault-subhead--rule{padding-bottom:.5rem;border-bottom:1px solid var(--vv-card-line)}
/* Strong button (the designs' solid accent button). */
.vvault-front .vvault-btn-strong{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.75rem;padding:.5rem 1.5rem;border-radius:4px;background:var(--vv-strong);color:var(--vv-on-strong)!important;font-family:var(--vv-font-ui);font-size:1rem;font-weight:500;text-decoration:none!important;line-height:1.2}
.vvault-front .vvault-btn-strong:hover{filter:brightness(1.12)}
.vvault-front .vvault-btn-strong:focus-visible{outline:3px solid var(--vv-strong);outline-offset:3px}
.vvault-front .vvault-btn-strong--sm{min-height:2.4rem;padding:.25rem 1rem;font-size:.95rem}
.vvault-front .vvault-btn-strong--lg{min-height:3.1rem;padding:.5rem 2rem;font-family:var(--vv-font-display);font-size:1.25rem}
/* Image frame (owner pictures and local thumbnails): reserved 16:9, empty panel without one. */
.vvault-front .vvault-frame{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--vv-panel)}
.vvault-front .vvault-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vvault-front .vvault-frame img.vvault-img--yt{height:133.4%;top:-16.7%}
/* Avatar tones (channel initials): shades of the accent. */
.vvault-front .vvault-avatar.vvault-tone-2{background:color-mix(in srgb,var(--vv-strong) 72%,#8a7a3d)}
.vvault-front .vvault-avatar.vvault-tone-3{background:color-mix(in srgb,var(--vv-strong) 30%,#b9ad8c);color:#1d2420}
/* Video items (VV-017 rows, VV-019 grid and rows, VV-022 mini). */
.vvault-front .vvault-vis{margin:0;padding:0;list-style:none}
.vvault-front .vvault-vi{margin:0;min-width:0}
.vvault-front .vvault-vi__body{min-width:0}
.vvault-front .vvault-vi__title{margin:0 0 .25rem;font-size:clamp(1.1rem,1rem + .45cqi,1.3rem);line-height:1.18;font-weight:var(--vv-title-weight)}
.vvault-front .vvault-vi__facts{margin:0 0 .5rem;font-family:var(--vv-font-ui);font-size:.875rem;color:var(--vv-muted)}
.vvault-front .vvault-vi__blurb{margin:0 0 .75rem;font-size:.97rem;line-height:1.42;max-width:58ch}
.vvault-front .vvault-vi .vvault-by{margin:0}
.vvault-front .vvault-vi .vvault-ai-label--item{margin:.75rem 0 0;padding-top:.5rem;border-top:1px solid var(--vv-card-line)}
.vvault-front .vvault-vis--rows .vvault-vi{display:grid;grid-template-columns:minmax(0,min(38%,var(--vv-pic-row))) minmax(0,1fr);gap:1rem 1.5rem;align-items:start;padding:1rem 0;border-top:1px solid var(--vv-card-line)}
.vvault-front .vvault-vis--rows .vvault-vi:first-child{border-top:0;padding-top:.25rem}
.vvault-front .vvault-vis--rows .vvault-vi .vvault-ai-label--item{border-top:0;padding-top:0}
.vvault-front .vvault-vis--grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10.5rem),1fr));gap:1.5rem 1rem}
.vvault-front .vvault-vis--grid .vvault-vi__title{font-size:clamp(1.05rem,.95rem + .4cqi,1.25rem)}
.vvault-front .vvault-vis--grid .vvault-vi__blurb{font-size:.94rem}
.vvault-front .vvault-vis--grid .vvault-vi{display:flex;flex-direction:column;gap:.75rem}
.vvault-front .vvault-vis--grid .vvault-vi__body{display:flex;flex-direction:column;flex:1}
.vvault-front .vvault-vis--grid .vvault-ai-label--item{margin-top:auto;padding-top:.75rem}
.vvault-front .vvault-vis--grid .vvault-by{margin-bottom:.5rem}
@container vv (max-width:420px){.vvault-front .vvault-vis--rows .vvault-vi{grid-template-columns:minmax(0,min(40%,var(--vv-pic-row))) minmax(0,1fr);gap:.75rem 1rem}.vvault-front .vvault-vis--rows .vvault-vi__title{font-size:1.05rem}.vvault-front .vvault-vis--rows .vvault-vi__blurb{font-size:.92rem}}
@container vv (max-width:300px){.vvault-front .vvault-vis--rows .vvault-vi{grid-template-columns:minmax(0,1fr)}}
.vvault-front .vvault-vis--mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9.75rem),1fr));gap:1rem 1rem}
.vvault-front .vvault-vi--mini{display:grid;grid-template-columns:minmax(0,min(48%,var(--vv-pic-row))) minmax(0,1fr);gap:.5rem;align-items:start}
.vvault-front .vvault-vi--mini .vvault-vi__title{margin:0 0 .25rem;font-size:.875rem;line-height:1.2}
.vvault-front .vvault-vi--mini .vvault-vi__facts,.vvault-front .vvault-vi--mini .vvault-vi__date{margin:0;font-family:var(--vv-font-ui);font-size:.875rem;line-height:1.45;color:var(--vv-muted)}
.vvault-front .vvault-vi--mini .vvault-th__len{font-size:.875rem;right:.3rem;bottom:.3rem;padding:0 .25rem}
.vvault-front .vvault-vi--mini .vvault-vi__facts .vvault-sep{margin:0 .25rem}
/* ==== Editorial module system: VV-025..032 (isolated-module designs, batch 4, 2026-10-30) ==== */
.vvault-front .vvault-module--editorial:is(.vvault-otd,.vvault-datebr,section.vvault-libstats,.vvault-lsearch,.vvault-facets,.vvault-active,.vvault-rtool,.vvault-sresults),.vvault-front .vvault-module--clean:is(.vvault-otd,.vvault-datebr,section.vvault-libstats,.vvault-lsearch,.vvault-facets,.vvault-active,.vvault-rtool,.vvault-sresults),.vvault-front .vvault-module--cinema:is(.vvault-otd,.vvault-datebr,section.vvault-libstats,.vvault-lsearch,.vvault-facets,.vvault-active,.vvault-rtool,.vvault-sresults){padding:var(--vv-pad);border:1px solid var(--vv-card-line);border-radius:var(--vv-radius);background:var(--vv-paper)}
.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-lsearch,.vvault-facets,.vvault-active,.vvault-rtool,.vvault-sresults) :is(h2,h3,h4){font-family:var(--vv-font-display)}
.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-lsearch,.vvault-facets,.vvault-active,.vvault-rtool,.vvault-sresults) a{color:inherit}
.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-sresults) :is(h3,h4) a{text-decoration:none}
.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-sresults) :is(h3,h4) a:hover{text-decoration:underline;text-decoration-thickness:1px}
.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-facets)>.vvault-mod-title,.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-facets) .vvault-mod-title{margin:0 0 .25rem;font-size:clamp(1.9rem,1.2rem + 3cqi,3.1rem);line-height:1.02}
.vvault-front :is(.vvault-otd,.vvault-datebr,.vvault-libstats,.vvault-facets) .vvault-dek{margin:0;max-width:52ch;font-family:var(--vv-font-ui);font-size:clamp(.95rem,.9rem + .25cqi,1.08rem);color:inherit}
/* Select box with a chevron (and an optional calendar icon); native control, keyboard as usual. */
.vvault-front .vvault-select{position:relative;display:inline-flex;align-items:center;min-width:0}
.vvault-front .vvault-select select,.vvault-front .vvault-select input{width:100%;min-height:2.85rem;margin:0;padding:0 2.5rem 0 1rem;border:1px solid var(--vv-card-line);border-radius:4px;background:var(--vv-paper);color:inherit;font-family:var(--vv-font-ui);font-size:.98rem;-webkit-appearance:none;appearance:none;cursor:pointer}
.vvault-front .vvault-select input{padding-right:1rem;cursor:text}
.vvault-front .vvault-select::after{content:"";position:absolute;right:.9rem;top:50%;width:1rem;height:1rem;margin-top:-.5rem;background:currentColor;-webkit-mask:var(--vv-ico-chevron) center/contain no-repeat;mask:var(--vv-ico-chevron) center/contain no-repeat;rotate:90deg;pointer-events:none}
.vvault-front .vvault-select--date::after{display:none}
.vvault-front .vvault-select--cal select,.vvault-front .vvault-select--cal input{padding-left:3rem}
.vvault-front .vvault-select--cal::before{content:"";position:absolute;left:1rem;top:50%;width:1.25rem;height:1.25rem;margin-top:-.625rem;background:currentColor;-webkit-mask:var(--vv-ico-calendar) center/contain no-repeat;mask:var(--vv-ico-calendar) center/contain no-repeat;pointer-events:none}
.vvault-front .vvault-select select:focus-visible,.vvault-front .vvault-select input:focus-visible{outline:3px solid var(--vv-strong);outline-offset:1px}
.vvault-front .vvault-datepick{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:stretch;margin:0}
.vvault-front .vvault-datepick .vvault-select{flex:1 1 9rem}
.vvault-front .vvault-datepick .vvault-btn-strong{flex:0 0 auto;min-height:2.85rem}
.vvault-front .vvault-vis--side{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19.5rem),1fr));gap:1rem 1.5rem}
.vvault-front .vvault-vis--side .vvault-vi{display:grid;grid-template-columns:minmax(0,min(44%,var(--vv-pic-row))) minmax(0,1fr);gap:.5rem 1rem;align-items:start;padding:0;border:0}
.vvault-front .vvault-vis--side .vvault-vi__title{font-size:1.08rem}
.vvault-front .vvault-vis--side .vvault-vi__facts{display:none}
.vvault-front .vvault-vis--side .vvault-vi__blurb{font-family:var(--vv-font-ui);font-size:.88rem;line-height:1.45;margin-bottom:.5rem}
.vvault-front .vvault-vis--side .vvault-by .vvault-avatar{width:2rem;height:2rem;font-size:.875rem}
.vvault-front .vvault-vis--side .vvault-by__name,.vvault-front .vvault-vis--side .vvault-by__bits{font-size:.875rem}
.vvault-front .vvault-vis--side .vvault-ai-label--item{margin-top:.5rem;padding-top:0;border:0;font-size:.875rem}
.vvault-front .vvault-th img.vvault-img--yt{height:133.4%;top:-16.7%}
.vvault-front .vvault-btn-quiet{display:inline-flex;align-items:center;justify-content:center;min-height:2.6rem;padding:.25rem 1rem;border:1px solid var(--vv-card-line);border-radius:4px;background:var(--vv-paper);color:inherit;font-family:var(--vv-font-ui);font-size:.95rem;cursor:pointer;text-decoration:none}
.vvault-front .vvault-btn-quiet:hover{border-color:var(--vv-strong);color:var(--vv-strong)}
.vvault-front .vvault-btn-quiet[hidden]{display:none}
.vvault-front .vvault-select--bare select{min-height:2.4rem;padding:0 2rem 0 .5rem;border-color:transparent;background:transparent;font-size:.95rem;font-weight:500}
.vvault-front .vvault-select--bare::after{right:.55rem;width:.875rem;height:.875rem;margin-top:-.4375rem}
.vvault-front .vvault-vis--results{margin-top:1rem}
.vvault-front .vvault-found>.vvault-note{padding:1rem 1rem;border:1px solid var(--vv-card-line);border-radius:4px;background:var(--vv-paper);font-family:var(--vv-font-ui)}
.vvault-front .vvault-found>.vvault-note h3{margin:0 0 .5rem;font-family:var(--vv-font-display);font-size:clamp(1.3rem,1.1rem + .8cqi,1.7rem)}
.vvault-front :is(.vvault-tintro,.vvault-chprof,.vvault-sintro,.vvault-rpath,.vvault-cmp,.vvault-after,.vvault-locs) :is(h2,h3,h4){font-family:var(--vv-font-display);font-weight:var(--vv-title-weight)}
.vvault-front :is(.vvault-tintro,.vvault-chprof,.vvault-sintro,.vvault-rpath,.vvault-cmp,.vvault-after,.vvault-locs) :is(h2,h3,h4) a{color:inherit;text-decoration:none}
.vvault-front :is(.vvault-tintro,.vvault-chprof,.vvault-sintro,.vvault-rpath,.vvault-cmp,.vvault-after,.vvault-locs) :is(h2,h3,h4) a:hover{text-decoration:underline;text-underline-offset:.15em}
.vvault-front .vvault-big-title{font-size:var(--vv-title);line-height:1.06;letter-spacing:-.014em;margin:0 0 .5rem}
/* ==== Clean appearance (default since 2026-10-31): the approved Tesla-board designs ====
   Structure only: light framed cards, 8px radius, compact type scale, tinted label panels, small
   accent kickers with no rule, and image-led layouts (a large picture beside the text). Colours are
   the theme's (base, contrast, and custom.videovault.accent when a theme names one); fonts are the
   theme's. Every rule is scoped to .vvault-module--clean. */
.vvault-front .vvault-module--clean{--vv-radius:var(--wp--custom--videovault--radius,8px);--vv-pad:1.5rem;--vv-title:clamp(1.2rem,1rem + 1.1cqi,1.55rem);--vv-title-weight:var(--wp--custom--videovault--title-weight,600);--vv-card-line:color-mix(in srgb,currentColor 13%,transparent);--vv-panel:color-mix(in srgb,currentColor 4%,var(--vv-paper));--vv-gap:1.5rem;font-size:.95rem;line-height:1.5}
.vvault-front .vvault-module--clean :is(.vvault-kicker,h2.vvault-kicker){gap:0;margin:0 0 .5rem;font-size:.875rem;font-weight:600;letter-spacing:.09em;color:var(--vv-strong)}
.vvault-front .vvault-module--clean .vvault-kicker::after{content:none}
.vvault-front .vvault-module--clean :is(.vvault-mod-title,>.vvault-section__head h2){font-size:var(--vv-title);line-height:1.2;letter-spacing:0;margin:0 0 .5rem}
.vvault-front .vvault-module--clean .vvault-dek{margin:0 0 1rem;font-size:.95rem}
/* R16 label: a quiet tinted bar with the sparkle, as on the boards. */
.vvault-front .vvault-module--clean .vvault-ai-label{margin:1rem 0 0;padding:.5rem .75rem;border:0;border-radius:calc(var(--vv-radius) - 2px);background:var(--vv-panel);font-size:.875rem}
.vvault-front .vvault-module--clean .vvault-ai-label::before{content:"\2726";font-size:max(.875rem,.95em)}
.vvault-front .vvault-module--clean .vvault-btn.vvault-btn--play{min-height:2.6rem;padding:.5rem 1rem;border-radius:calc(var(--vv-radius) - 2px);font-size:.93rem}
/* Pictures: one frame for every image-led layout (16:9, cropped YouTube bars, rounded). */
.vvault-front .vvault-media{position:relative;margin:0;aspect-ratio:16/10;border-radius:calc(var(--vv-radius) - 2px);overflow:hidden;background:var(--vv-panel)}
.vvault-front .vvault-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.vvault-front .vvault-media img.vvault-img--yt{height:133.4%;top:-16.7%}
.vvault-front .vvault-module--clean .vvault-factline{font-size:.88rem;gap:.5rem 0}
.vvault-front .vvault-module--clean .vvault-summary__thumb{border-radius:calc(var(--vv-radius) - 2px)}
/* VV-004 image-led summary (Clean, Cinema): the picture sits beside the text from 520px. */
@container vv (min-width:520px){.vvault-front :is(.vvault-module--clean,.vvault-module--cinema) .vvault-summary__grid{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:1rem}}
.vvault-front .vvault-module--clean .vvault-summary__grid .vvault-summary{font-size:.95rem}
/* Clean type scale for every module: one module-title size and one item-title size, in the UI
   font, so the boards' compact rhythm holds across all 40 modules (layouts follow per group). */
.vvault-front .vvault-module--clean :is(h2.vvault-mod-title,.vvault-evidence__title,.vvault-tintro__name,.vvault-sintro__title,.vvault-rpath__title,h2.vvault-rpath__title,.vvault-pick__title,.vvault-locs__title,.vvault-cmp__title,.vvault-chprof__name,.vvault-after__title,.vvault-find__title,.vvault-stlead__title,.vvault-tindex__fname,.vvault-otd__name,.vvault-evlink__name,.vvault-datebr__head h3,.vvault-datebr__none h3,.vvault-otd__none h3,.vvault-otd__try h3,.vvault-sresults__nh,.vvault-found>.vvault-note h3){font-size:var(--vv-title);line-height:1.2;letter-spacing:0;font-weight:var(--vv-title-weight)}
.vvault-front .vvault-module--clean :is(.vvault-vrow__title,.vvault-seq__title,.vvault-tl__what,.vvault-evrow__name,.vvault-vi__title,.vvault-srcrow__title,.vvault-dbrow__name,.vvault-sritem__title,.vvault-stcard__title,.vvault-pn__title,.vvault-rstep__title,.vvault-chrow__name,.vvault-reltopic__name,.vvault-loc__name,.vvault-after__ih,.vvault-after__ct,.vvault-cmp__name,.vvault-cmp__sharedh,.vvault-tev__name,.vvault-gcard__title,.vvault-tile__title,.vvault-chvid__title,.vvault-loc__vt,.vvault-vcard__title,.vvault-subhead h3,.vvault-tindex__browse,.vvault-stcoll__more,.vvault-pick__sub){font-family:var(--vv-font-ui);font-size:1.0625rem;line-height:1.3;letter-spacing:0;font-weight:600}
/* Clean card text: blurbs and leads in lists and grids are short, muted and clamped (3 lines), so
   rows keep the boards' even rhythm. Full text stays on the video's own page. */
.vvault-front .vvault-module--clean :is(.vvault-vi__blurb,.vvault-vi__sum,.vvault-chvid__blurb,.vvault-chrow__desc,.vvault-dbrow__lead,.vvault-evrow__lead,.vvault-loc__desc,.vvault-otd__lead,.vvault-reltopic__desc,.vvault-rstep__blurb,.vvault-sritem__text,.vvault-stcard__intro,.vvault-tev__lead,.vvault-evlink__lead){font-size:.875rem;line-height:1.45;color:var(--vv-muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
/* Clean buttons: one size and the UI font for every strong button (the boards' quiet buttons). */
.vvault-front .vvault-module--clean :is(.vvault-btn-strong,.vvault-btn-strong--lg){min-height:2.5rem;padding:.5rem 1rem;border-radius:calc(var(--vv-radius) - 2px);font-family:var(--vv-font-ui);font-size:.92rem}
.vvault-front .vvault-module--clean .vvault-btn-strong--sm{min-height:2.1rem;padding:.25rem .75rem;font-size:.875rem}
/* VV-022 (Clean): a channel's newest videos stack picture over title, so titles never wrap to a word per line. */
.vvault-front .vvault-module--clean .vvault-vi.vvault-vi--mini{display:flex;flex-direction:column;gap:.5rem}
.vvault-front .vvault-module--clean .vvault-vis--mini .vvault-vi__title{font-size:.88rem}
.vvault-front .vvault-module--clean .vvault-vi--mini>.vvault-vi__media{display:block;width:100%}
/* ==== Cinema appearance: dark panels, bold display type, big pictures ====
   Colours are still the theme's: the panel is the theme's contrast colour and the text its base
   colour (inverted), so every theme gets its own dark version. Image-led like Clean. */
.vvault-front .vvault-module--cinema{--vv-ink:var(--wp--preset--color--base,#fff);--vv-paper:var(--wp--preset--color--contrast,#111);--vv-strong:var(--wp--preset--color--base,#fff);--vv-on-strong:var(--wp--preset--color--contrast,#111);--vv-radius:var(--wp--custom--videovault--radius,12px);--vv-pad:2rem;--vv-title:clamp(1.5rem,1.1rem + 2cqi,2.3rem);--vv-title-weight:800;--vv-card-line:color-mix(in srgb,currentColor 18%,transparent);--vv-panel:color-mix(in srgb,currentColor 8%,var(--vv-paper));--vv-muted:color-mix(in srgb,currentColor 72%,transparent);--vv-gap:2rem;color:var(--vv-ink);background:var(--vv-paper);padding:var(--vv-pad);border:0;border-radius:var(--vv-radius)}
.vvault-front .vvault-module.vvault-module--cinema{background:var(--vv-paper);padding:var(--vv-pad);border:0;border-radius:var(--vv-radius)}
.vvault-front .vvault-module--cinema :is(.vvault-kicker,h2.vvault-kicker){gap:.5rem;font-size:.875rem;font-weight:700;letter-spacing:.16em;color:inherit;opacity:.85}
.vvault-front .vvault-module--cinema .vvault-kicker::after{width:1.5rem;height:2px;opacity:1}
.vvault-front .vvault-module--cinema :is(h2.vvault-mod-title,.vvault-mod-title,>.vvault-section__head h2,.vvault-evidence__title,.vvault-tintro__name,.vvault-sintro__title,.vvault-rpath__title,.vvault-pick__title,.vvault-chprof__name,.vvault-stlead__title,.vvault-otd__name,.vvault-evlink__name){font-size:var(--vv-title);font-weight:800;line-height:1.05;letter-spacing:-.02em;text-transform:none}
.vvault-front .vvault-module--cinema :is(.vvault-vrow__title,.vvault-seq__title,.vvault-evrow__name,.vvault-vi__title,.vvault-srcrow__title,.vvault-pn__title,.vvault-rstep__title,.vvault-stcard__title,.vvault-chrow__name,.vvault-sritem__title,.vvault-dbrow__name){font-weight:700;letter-spacing:-.01em}
.vvault-front .vvault-module--cinema :is(.vvault-media,.vvault-frame,.vvault-th,.vvault-thumb){border-radius:calc(var(--vv-radius) - 4px)}
.vvault-front .vvault-module--cinema .vvault-btn.vvault-btn--play{--vv-btn-bg:var(--vv-strong);--vv-btn-fg:var(--vv-on-strong)}
/* The play disc is filled with --vv-strong (white in Cinema), so its glyph takes the pair colour (R30, R31). */
.vvault-front .vvault-module--cinema .vvault-embed__icon:not(.vvault-player--page *){color:var(--vv-on-strong)}
/* Head modules (player, header facts, video details) have no panel of their own in any style, so in Cinema
   they keep the page's own colours; Cinema's light text on a light page was invisible (R32). */
.vvault-front .vvault-module--cinema:is(.vvault-player,.vvault-headfacts,.vvault-video-meta,.vvault-origtitle):not(.vvault-module--cinema *,.vvault-page__head *){--vv-ink:var(--wp--preset--color--contrast,currentColor);--vv-paper:var(--wp--preset--color--base,#fff);--vv-strong:var(--wp--custom--videovault--accent,var(--vv-ink));--vv-on-strong:var(--vv-paper);--vv-muted:color-mix(in srgb,var(--vv-ink) 74%,transparent);color:var(--vv-ink)}
.vvault-front .vvault-module--cinema .vvault-btn-strong{background:var(--vv-strong);color:var(--vv-on-strong)}
.vvault-front .vvault-module--cinema :is(.vvault-btn.vvault-btn--play,.vvault-btn-strong){border-radius:999px;font-weight:700;padding-inline:1.5rem}
.vvault-front .vvault-module--cinema a:not([class*="btn"]){color:inherit}
.vvault-front .vvault-module--cinema :is(table,th,td,.vvault-faq,.vvault-toc,.vvault-pn__card,.vvault-rstep__note){border-color:var(--vv-card-line)}
.vvault-front .vvault-module--cinema :is(input,select,textarea){background:var(--vv-panel);color:inherit;border-color:var(--vv-card-line)}
.vvault-front .vvault-module--cinema .vvault-summary__grid{gap:var(--vv-gap)}
/* Cinema in a page header: the whole header becomes the dark panel; its modules sit bare inside. */
.vvault-front .vvault-page__head:has(.vvault-module--cinema){--vv-ink:var(--wp--preset--color--base,#fff);--vv-paper:var(--wp--preset--color--contrast,#111);color:var(--vv-ink);background:var(--vv-paper);padding:2rem;border:0;border-radius:var(--wp--custom--videovault--radius,12px)}
.vvault-front .vvault-page__head .vvault-module.vvault-module--cinema{padding:0;background:transparent;border-radius:0}
/* A Cinema module inside another (the no-results suggestions) sits on its parent's dark panel: no second frame, no doubled padding (R34 inset). */
.vvault-front .vvault-module--cinema .vvault-module.vvault-module--cinema{padding:0;background:transparent;border-radius:0}
.vvault-front .vvault-page__head:has(.vvault-module--cinema) h1{font-weight:800;letter-spacing:-.025em}
/* ==== Compact appearance: list-first and dense ====
   No frames or panels; hairline rows; small thumbnails; grids become lists; one-line blurbs;
   pictures never lead. For large libraries where more per screen matters more than pictures. */
.vvault-front .vvault-module--compact{--vv-radius:4px;--vv-pad:0;--vv-title:1.15rem;--vv-title-weight:700;--vv-card-line:color-mix(in srgb,currentColor 14%,transparent);--vv-panel:transparent;font-size:.9rem;line-height:1.45}
.vvault-front .vvault-module.vvault-module--compact{padding:0;border:0;border-top:2px solid currentColor;padding-top:.75rem;background:transparent;border-radius:0}
.vvault-front .vvault-module--compact :is(.vvault-kicker,h2.vvault-kicker){margin:0 0 .25rem;font-size:.875rem;font-weight:700;letter-spacing:.08em}
.vvault-front .vvault-module--compact .vvault-kicker::after{content:none}
.vvault-front .vvault-module--compact :is(h2.vvault-mod-title,.vvault-mod-title,>.vvault-section__head h2,.vvault-evidence__title,.vvault-tintro__name,.vvault-sintro__title,.vvault-rpath__title,.vvault-pick__title,.vvault-chprof__name,.vvault-stlead__title,.vvault-otd__name,.vvault-evlink__name,.vvault-find__title){font-family:var(--vv-font-ui);font-size:var(--vv-title);font-weight:700;line-height:1.25;letter-spacing:0;margin:0 0 .5rem}
.vvault-front .vvault-module--compact :is(.vvault-vrow__title,.vvault-seq__title,.vvault-tl__what,.vvault-evrow__name,.vvault-vi__title,.vvault-srcrow__title,.vvault-dbrow__name,.vvault-sritem__title,.vvault-stcard__title,.vvault-pn__title,.vvault-rstep__title,.vvault-chrow__name,.vvault-reltopic__name,.vvault-loc__name,.vvault-tev__name,.vvault-chvid__title){font-family:var(--vv-font-ui);font-size:1.0625rem;font-weight:600;line-height:1.3;margin:0}
.vvault-front .vvault-module--compact .vvault-dek{font-size:.875rem;margin:0 0 .5rem}
.vvault-front .vvault-module--compact .vvault-ai-label{margin:.5rem 0 0;padding:0;border:0;font-size:.875rem}
/* Every collection is a list of hairline rows with a small thumbnail. */
.vvault-front .vvault-module--compact :is(.vvault-vis--grid,.vvault-vis--rows,.vvault-vis--side,.vvault-vis--mini){display:block}
.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-stcard,.vvault-dbrow,.vvault-chvid){display:grid;grid-template-columns:6rem minmax(0,1fr);gap:.25rem .75rem;align-items:start;margin:0;padding:.5rem 0;border:0;border-top:1px solid var(--vv-card-line);background:transparent;border-radius:0}
.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-stcard,.vvault-dbrow,.vvault-chvid)>*{grid-column:2;min-width:0}
.vvault-front .vvault-module--compact :is(.vvault-vi__media,.vvault-vrow__media,.vvault-srcrow__media,.vvault-evrow__media,.vvault-sritem__media,.vvault-stcard__media,.vvault-dbrow__media,.vvault-chvid__media){grid-column:1;grid-row:1/span 4}
.vvault-front .vvault-module--compact :is(.vvault-th,.vvault-frame,.vvault-thumb){aspect-ratio:16/9;height:auto;min-height:0;border-radius:3px}
.vvault-front .vvault-module--compact :is(.vvault-th__play,.vvault-embed__icon):not(.vvault-player *){transform:scale(.6)}
.vvault-front .vvault-module--compact :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text,.vvault-stcard__intro,.vvault-otd__lead,.vvault-tev__lead,.vvault-loc__desc,.vvault-reltopic__desc,.vvault-rstep__blurb,.vvault-evlink__lead){margin:0 0 0;font-size:.875rem;color:var(--vv-muted);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.vvault-front .vvault-module--compact .vvault-summary__grid{grid-template-columns:7rem minmax(0,1fr);gap:.75rem}
.vvault-front .vvault-module--compact :is(.vvault-btn.vvault-btn--play,.vvault-btn-strong,.vvault-pn__btn){min-height:2rem;padding:.25rem .75rem;font-family:var(--vv-font-ui);font-size:.875rem;border-radius:3px}
@container vv (max-width:340px){.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-stcard,.vvault-dbrow,.vvault-chvid){grid-template-columns:6rem minmax(0,1fr)}}
/* Cinema play discs stay dark on pictures (the theme's contrast colour), white triangle and ring. */
.vvault-front .vvault-module--cinema :is(.vvault-th__play,.vvault-moments__play){background:color-mix(in srgb,var(--wp--preset--color--contrast,#111) 82%,transparent)}
/* ==== Layout variants (vvault-variant--*): the same content arranged differently, in any style.
   Pure CSS on the same markup, so a variant never changes what is queried. Horizontal variants
   stack on narrow screens. ==== */
/* Picture placement: header, facts, summary, article, featured pick, story and topic intros. */
.vvault-front .vvault-variant--none :is(.vvault-media,.vvault-headfacts__media,.vvault-facts__media,.vvault-article__media,.vvault-summary__thumb,.vvault-pick__media,.vvault-sintro__media,.vvault-tintro__media){display:none}
.vvault-front .vvault-variant--none :is(.vvault-facts__body,.vvault-summary__grid,.vvault-pick__main,.vvault-tintro__head){grid-template-columns:minmax(0,1fr)!important}
.vvault-front .vvault-page__head:has(>.vvault-variant--none){display:flex;padding:0;border:0}
.vvault-front .vvault-variant--top :is(.vvault-facts__body,.vvault-summary__grid,.vvault-pick__main,.vvault-tintro__head,.vvault-stlead){grid-template-columns:minmax(0,1fr)!important}
.vvault-front .vvault-variant--top :is(.vvault-media,.vvault-headfacts__media,.vvault-facts__media,.vvault-summary__thumb,.vvault-pick__media,.vvault-tintro__media){order:-5;aspect-ratio:21/9;min-height:0}
.vvault-front .vvault-page__head:has(>.vvault-variant--top){display:flex;flex-direction:column}
@container vv (min-width:561px){.vvault-front .vvault-variant--right :is(.vvault-facts__media,.vvault-summary__thumb,.vvault-pick__media,.vvault-tintro__media,.vvault-stlead__media){order:5}.vvault-front .vvault-page__head:has(>.vvault-variant--left){grid-template-columns:minmax(0,min(44%,var(--vv-pic-lead))) minmax(0,1fr)}.vvault-front .vvault-page__head:has(>.vvault-variant--left)>*:not(.vvault-headfacts){grid-column:2}}
/* Collections: grid, side-scrolling row, list, compact list. */
.vvault-front .vvault-variant--grid :is(.vvault-vrows,.vvault-evrows,.vvault-chcoll__list,.vvault-stcards,.vvault-grid3){display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:1rem}
.vvault-front .vvault-variant--strip :is(.vvault-vrows,.vvault-evrows,.vvault-chcoll__list,.vvault-stcards,.vvault-grid3){display:grid;grid-auto-flow:column;grid-auto-columns:minmax(12rem,15rem);grid-template-columns:none;gap:1rem;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding-bottom:.5rem}
.vvault-front .vvault-variant--strip :is(.vvault-vrow,.vvault-evrow,.vvault-stcard,.vvault-chrow,.vvault-grid3>li){display:flex;flex-direction:column;gap:.5rem;padding:0;border:0;scroll-snap-align:start}
.vvault-front .vvault-variant--list :is(.vvault-stcards,.vvault-grid3){display:block}
.vvault-front .vvault-variant--list :is(.vvault-stcard,.vvault-grid3>li){display:grid;grid-template-columns:minmax(7rem,32%) minmax(0,1fr);gap:.5rem 1rem;padding:.75rem 0;border-top:1px solid var(--vv-card-line)}
.vvault-front .vvault-variant--compact :is(.vvault-vrows,.vvault-evrows,.vvault-stcards,.vvault-grid3,.vvault-chcoll__list){display:block}
.vvault-front .vvault-variant--compact :is(.vvault-vrow,.vvault-evrow,.vvault-stcard,.vvault-grid3>li){display:grid;grid-template-columns:5rem minmax(0,1fr);gap:0 .75rem;padding:.5rem 0;border-top:1px solid var(--vv-card-line)}
.vvault-front .vvault-variant--compact :is(.vvault-vrow__blurb,.vvault-evrow__lead,.vvault-stcard__intro,.vvault-vi__blurb,.vvault-evrow__side){display:none}
.vvault-front :is(.vvault-variant--strip,.vvault-variant--horizontal) :is(.vvault-vrows,.vvault-evrows,.vvault-chcoll__list,.vvault-stcards,.vvault-grid3,.vvault-timeline,.vvault-seq__list){position:relative}
/* ==== Review fixes 2026-10-31 (docs/design/module-review-2026-10-31.md) ==== */
/* S2 spacing scale: 4/8/12/16/24/32px. */
.vvault-front{--vv-s1:.25rem;--vv-s2:.5rem;--vv-s3:.75rem;--vv-s4:1rem;--vv-s5:1.5rem;--vv-s6:2rem;--vv-control-h:2.5rem;--vv-radius-sm:4px;--vv-radius-pill:999px}
/* S1 fact rows: items separated by a column gap; the divider sits in the gap, left of each item,
   and the list clips only sideways at its own edge, so a divider that starts a wrapped row is cut
   while icons (always inside an item) never are. */
.vvault-front .vvault-factline{column-gap:var(--vv-s4);row-gap:var(--vv-s2);margin-left:0;clip-path:none;overflow-x:clip;overflow-y:visible}
.vvault-front .vvault-factline>li,.vvault-front .vvault-factline>li:first-child{position:relative;padding:0;border:0}
.vvault-front .vvault-factline>li+li::before{content:"";position:absolute;left:calc(var(--vv-s2) * -1);top:15%;bottom:15%;width:1px;background:var(--vv-card-line)}
.vvault-front .vvault-embed--empty .vvault-factline>li+li::before{content:none}
/* S8: no automatic rule under module titles; S13: modules carry no outer margin. */
.vvault-front .vvault-module>h2,.vvault-front .vvault-module>.vvault-section__head{border-bottom:0;padding-bottom:0}
.vvault-front .vvault-section.vvault-module{margin:0}
.vvault-front :where(.vvault-module+.vvault-module,.vvault-module+.vvault-section){margin-top:var(--vv-s6)}
/* Rhythm only between modules in one container; a block theme spaces blocks with its own gap. */
/* S3 card system, every appearance: cards in a grid are equal height with the byline pinned to the
   bottom; titles clamp at 2 lines; excerpts are 0.85 of the title size at most and clamp at 2-3. */
.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-tiles,.vvault-stcards,.vvault-vis--mini)>li{display:flex;flex-direction:column;height:100%;min-width:0}
.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-tiles,.vvault-stcards)>li>:is(.vvault-vi__body,.vvault-gcard__body,.vvault-stcard__body){display:flex;flex-direction:column;flex:1 1 auto;min-width:0}
.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-tiles,.vvault-stcards,.vvault-vis--mini)>li .vvault-by{margin-top:auto;padding-top:var(--vv-s2)}
.vvault-front :is(.vvault-vi__title,.vvault-gcard__title,.vvault-tile__title,.vvault-stcard__title,.vvault-vrow__title,.vvault-seq__title,.vvault-srcrow__title,.vvault-pn__title,.vvault-rstep__title,.vvault-chvid__title){display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vvault-front :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-rstep__blurb,.vvault-stcard__intro,.vvault-reltopic__desc,.vvault-loc__desc,.vvault-after__ib,.vvault-tev__lead,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text,.vvault-otd__lead){font-size:.875rem;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-stcards) :is(.vvault-vi__blurb,.vvault-stcard__intro){-webkit-line-clamp:2}
.vvault-front .vvault-module--compact :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text,.vvault-stcard__intro,.vvault-otd__lead,.vvault-tev__lead,.vvault-loc__desc,.vvault-reltopic__desc,.vvault-rstep__blurb){font-size:.875rem}
.vvault-front .vvault-by__bits{white-space:normal}
.vvault-front .vvault-by__bits>span:not(.vvault-sep){white-space:nowrap}
/* VV-022 mini cards: at most two per row so titles stay readable. */
.vvault-front .vvault-vis--mini{grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr))}
/* S4 one empty-thumbnail treatment: the panel colour with a muted video glyph; the dark placeholder
   picture is hidden wherever the server substitutes it. */
.vvault-front :is(.vvault-th,.vvault-frame,.vvault-thumb,.vvault-media) img[src$="thumbnail-placeholder.svg"]{opacity:0}
.vvault-front :is(.vvault-th,.vvault-frame,.vvault-thumb,.vvault-media):is(:has(img[src$="thumbnail-placeholder.svg"]),:not(:has(img))){background:var(--vv-panel,color-mix(in srgb,currentColor 6%,transparent))}
/* Compact cards are drawn on --vv-panel, so an empty frame needs its own tint to show where the picture would be. */
.vvault-front .vvault-module--compact :is(.vvault-th,.vvault-frame,.vvault-thumb,.vvault-media):is(:has(img[src$="thumbnail-placeholder.svg"]),:not(:has(img))){background:color-mix(in srgb,currentColor 6%,var(--vv-panel,transparent))}
.vvault-front :is(.vvault-th,.vvault-frame,.vvault-thumb,.vvault-media):is(:has(img[src$="thumbnail-placeholder.svg"]),:not(:has(img)))::before{content:"";position:absolute;left:50%;top:50%;width:2rem;height:2rem;margin:-1rem 0 0 -1rem;background:currentColor;opacity:.28;-webkit-mask:var(--vv-ico-play-disc) center/contain no-repeat;mask:var(--vv-ico-play-disc) center/contain no-repeat;pointer-events:none}
.vvault-front :is(.vvault-th,.vvault-frame,.vvault-thumb,.vvault-media):is(:has(img[src$="thumbnail-placeholder.svg"]),:not(:has(img))) .vvault-th__play{display:none}
/* A picture-less card in a row of pictured ones keeps the picture slot: a quiet tinted plate with
   the event's mark (e.g. "DA 191") instead of the video glyph, so the row stays even. */
.vvault-front .vvault-frame.vvault-plate{display:grid;place-items:center;background:color-mix(in srgb,var(--vv-accent,currentColor) 7%,var(--vv-panel,var(--vv-soft)))}
.vvault-front .vvault-frame.vvault-plate.vvault-plate::before{content:none}
.vvault-front .vvault-plate__mark{font-family:var(--vv-font-display);font-size:clamp(1.25rem,1rem + 1vw,1.75rem);font-weight:var(--vv-title-weight,600);line-height:1;letter-spacing:.04em;color:var(--vv-muted)}
/* S12 contrast: avatar initials on a strong mix; captions over pictures get a scrim. */
.vvault-front .vvault-avatar--sm,.vvault-front .vvault-avatar{background:color-mix(in srgb,var(--vv-strong) 88%,var(--vv-paper))}
.vvault-front .vvault-embed__cap{left:0;right:0;bottom:0;padding:var(--vv-s5) var(--vv-s4) var(--vv-s3);background:linear-gradient(transparent,rgba(0,0,0,.66));text-shadow:none}
/* S10 controls: one height, and a select never cuts off its own value. */
.vvault-front .vvault-module :is(select,input[type="search"],input[type="text"],input[type="date"],.vvault-btn,.vvault-btn-strong,button[type="submit"]){min-height:var(--vv-control-h)}
.vvault-front .vvault-module .vvault-select{min-width:min(100%,max-content);flex-wrap:nowrap}
.vvault-front .vvault-module .vvault-select select{min-width:0;max-width:100%;field-sizing:content;text-overflow:ellipsis}
.vvault-front .vvault-module :is(.vvault-schoices,.vvault-datepick){flex-wrap:wrap}
.vvault-front .vvault-module input[type="date"]:focus-visible,.vvault-front .vvault-module select:focus-visible,.vvault-front .vvault-module input:focus-visible{outline:3px solid currentColor;outline-offset:2px}
/* Rows: the thumbnail centres against the text; excerpts clamp at two lines in rows. */
.vvault-front :is(.vvault-vrow,.vvault-srcrow,.vvault-vis--rows>.vvault-vi,.vvault-vis--side>.vvault-vi,.vvault-evrow,.vvault-sritem,.vvault-reltopic,.vvault-dbrow){align-items:center}
.vvault-front :is(.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-vi__blurb,.vvault-evrow__lead,.vvault-sritem__text,.vvault-reltopic__desc,.vvault-dbrow__lead){-webkit-line-clamp:2}
@container vv (max-width:480px){.vvault-front .vvault-module{--vv-pad:var(--vv-s4)}}
/* Bylines are one line each (name, then details), so bylines in a row share one top edge. */
.vvault-front .vvault-by__text{min-width:0;flex:1 1 auto}
.vvault-front :is(.vvault-by__name,.vvault-by__bits){display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Cards in a grid: bylines share one height whether or not they have a details line. */
.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-tiles,.vvault-stcards,.vvault-vis--mini)>li .vvault-by{min-height:3rem}
.vvault-front .vvault-module :is(.vvault-evrow__media,.vvault-sritem__media,.vvault-seq__media,.vvault-vrow__media,.vvault-srcrow__media,.vvault-vi__media,.vvault-dbrow__media){align-self:center}
/* R24 follow-ups. Excerpts: one size under every title scale (ratio stays at or below 0.85). */
.vvault-front :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-rstep__blurb,.vvault-stcard__intro,.vvault-reltopic__desc,.vvault-loc__desc,.vvault-after__ib,.vvault-tev__lead,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text){font-size:.875rem}
.vvault-front .vvault-module--compact :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text,.vvault-stcard__intro,.vvault-tev__lead,.vvault-loc__desc,.vvault-reltopic__desc,.vvault-rstep__blurb){font-size:.875rem}
/* Narrow containers: picture-beside rows stack, picture on top (not in Compact, which keeps small thumbnails). */
@container vv (max-width:560px){.vvault-front .vvault-module:not(.vvault-module--compact) :is(.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-dbrow,.vvault-loc,.vvault-vis--rows>.vvault-vi,.vvault-vis--side>.vvault-vi,.vvault-otd__event,.vvault-reltopic){display:flex;flex-direction:column;align-items:stretch;gap:var(--vv-s2)}.vvault-front .vvault-module:not(.vvault-module--compact) :is(.vvault-stlead,.vvault-pick__main,.vvault-tintro__head,.vvault-evlink__main,.vvault-facts__body,.vvault-summary__grid){grid-template-columns:minmax(0,1fr)}}
/* Compact rows: small thumbnail centred against short text. */
.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-stcard,.vvault-dbrow,.vvault-chvid,.vvault-loc){align-items:center}
.vvault-front .vvault-module--compact :is(.vvault-vi__media,.vvault-vrow__media,.vvault-srcrow__media,.vvault-evrow__media,.vvault-sritem__media,.vvault-stcard__media,.vvault-dbrow__media,.vvault-chvid__media,.vvault-loc__media){grid-row:1/-1;align-self:center}
.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-stcard,.vvault-dbrow,.vvault-chvid)>:not([class*="__media"]){grid-column:2}
.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-sritem)>:is(.vvault-vi__body,.vvault-vrow__body,.vvault-sritem__body){display:flex;flex-direction:column;gap:2px}
.vvault-front .vvault-module--compact .vvault-by{min-height:0;padding-top:0}
.vvault-front .vvault-module--compact :is(.vvault-vi__facts,.vvault-evrow__body .vvault-factline,.vvault-evrow__side,.vvault-evrow__chans){display:none}
/* Lead layouts in every style: centred 4:3 picture, lead clamped to four lines. */
.vvault-front :is(.vvault-stlead__media,.vvault-pick__media,.vvault-tintro__media,.vvault-evlink__media,.vvault-otd__media) :is(.vvault-frame,.vvault-th){aspect-ratio:4/3;height:auto}
.vvault-front .vvault-module :is(.vvault-btn,.vvault-btn-strong){max-width:100%;white-space:normal;text-align:center}
/* S7: meta lines (date · aircraft · length) stay on one line with an ellipsis, so no separator dangles. */
.vvault-front :is(.vvault-vi__facts,.vvault-vi__date,.vvault-vrow__meta,.vvault-seq__date,.vvault-sritem__meta,.vvault-chvid__meta){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vvault-front .vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-sritem)>:is(.vvault-vi__body,.vvault-vrow__body,.vvault-sritem__body){gap:var(--vv-s1)}
.vvault-front .vvault-module :is(.vvault-vis--grid,.vvault-vis--rows,.vvault-vis--side,.vvault-vis--mini,ul,ol,div) :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-rstep__blurb,.vvault-stcard__intro,.vvault-reltopic__desc,.vvault-loc__desc,.vvault-tev__lead,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text){font-size:.875rem}
.vvault-front .vvault-module.vvault-module--compact :is(.vvault-vis--grid,.vvault-vis--rows,.vvault-vis--side,.vvault-vis--mini,ul,ol,div) :is(.vvault-vi__blurb,.vvault-vrow__blurb,.vvault-seq__blurb,.vvault-srcrow__blurb,.vvault-pn__blurb,.vvault-chvid__blurb,.vvault-evrow__lead,.vvault-dbrow__lead,.vvault-sritem__text,.vvault-stcard__intro,.vvault-tev__lead,.vvault-loc__desc,.vvault-reltopic__desc,.vvault-rstep__blurb){font-size:.875rem}
/* Lead layouts whose text runs much taller than a picture: in Editorial and Compact the picture
   leads on top (a banner), so no tall empty run opens beside it. */
.vvault-front :is(.vvault-module--editorial,.vvault-module--compact) :is(.vvault-stlead,.vvault-pick__main){display:flex;flex-direction:column;align-items:stretch;gap:var(--vv-s3)}
.vvault-front :is(.vvault-module--editorial,.vvault-module--compact) :is(.vvault-stlead__media,.vvault-pick__media){order:-1;align-self:stretch}
.vvault-front :is(.vvault-module--editorial,.vvault-module--compact) :is(.vvault-stlead__media,.vvault-pick__media) :is(.vvault-frame,.vvault-th){aspect-ratio:21/9}
.vvault-front .vvault-module--cinema :is(.vvault-stlead__media,.vvault-pick__media) :is(.vvault-frame,.vvault-th){aspect-ratio:21/9}
.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-tiles,.vvault-stcards,.vvault-vis--mini)>li>:is(a,figure,div)[class*="__media"],.vvault-front :is(.vvault-vis--grid,.vvault-grid3,.vvault-tiles,.vvault-stcards,.vvault-vis--mini)>li>a:first-child{display:block;width:100%;align-self:stretch}
@container vv (max-width:560px){.vvault-front .vvault-module:not(.vvault-module--compact) :is(.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-dbrow,.vvault-loc,.vvault-vi,.vvault-otd__event,.vvault-reltopic,.vvault-seq__item,.vvault-rstep)>[class*="__media"]{display:block;width:100%;max-width:none;align-self:stretch}}
/* Disclosures: open headings on wide pages, accordions on phones. */
.vvault-front .vvault-acc{margin:0}
.vvault-front .vvault-acc__sum{display:flex;align-items:center;gap:var(--vv-s3);list-style:none;cursor:pointer}
.vvault-front .vvault-acc__sum::-webkit-details-marker{display:none}
.vvault-front .vvault-acc__sum>.vvault-ico{width:1.25rem;height:1.25rem;flex:none;color:var(--vv-strong)}
.vvault-front .vvault-acc__title{margin:0;font-size:1.15rem;line-height:1.25;font-weight:var(--vv-title-weight)}
.vvault-front .vvault-acc__chev{display:none;margin:0 var(--vv-s1) 0 auto}
@container vvev (min-width:761px){.vvault-front .vvault-acc>.vvault-acc__sum{pointer-events:none;cursor:default}.vvault-front .vvault-acc::details-content{content-visibility:visible;height:auto}}
.vvault-front .vvault-evmore .vvault-acc__sum{margin:0 0 var(--vv-s4)}
.vvault-front .vvault-evmore__list{display:flex;flex-direction:column;gap:var(--vv-s4);margin:0;padding:0;list-style:none}
.vvault-front .vvault-evmore__item{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:var(--vv-s4);align-items:start;margin:0}
.vvault-front .vvault-evmore__media{display:block}
.vvault-front .vvault-evmore__thumb{display:block;aspect-ratio:16/9;overflow:hidden;border-radius:var(--vv-radius-sm);background:color-mix(in srgb,currentColor 10%,transparent)}
.vvault-front .vvault-evmore__thumb img{display:block;width:100%;height:100%;object-fit:cover}
.vvault-front .vvault-evmore__text{min-width:0}
.vvault-front .vvault-evmore__kicker{margin:0;font-family:var(--vv-font-ui);font-size:.875rem;font-weight:600;line-height:1.3}
.vvault-front .vvault-evmore__title{margin:0;font-size:1rem;line-height:1.3;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.vvault-front .vvault-evmore__title a{text-decoration:none}
.vvault-front .vvault-evmore__title a:hover{text-decoration:underline}
.vvault-front .vvault-evmore__meta{margin:var(--vv-s1) 0 0;font-family:var(--vv-font-ui);font-size:.875rem;color:var(--vv-muted)}
@container vvev (max-width:760px){.vvault-front .vvault-acc__chev{display:block}}
/* Photo credits: a quiet line on large pictures (as the boards' "Source: ..." caption); cards carry none. */
.vvault-front .vvault-credit{margin:0;font-family:var(--vv-font-ui);font-size:.875rem;line-height:1.3;color:#fff}
.vvault-front .vvault-credit a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.vvault-front :is(.vvault-hero__media,.vvault-evfacts__photo,.vvault-embed)>.vvault-credit{position:absolute;right:0;bottom:0;z-index:2;max-width:100%;padding:var(--vv-s4) var(--vv-s3) var(--vv-s2) var(--vv-s6);background:linear-gradient(90deg,transparent,rgba(0,0,0,.55) 35%);text-align:right}
/* /events/ cards: the picture leads, as in board 01's latest events. */
.vvault-front .vvault-ev--pic{display:block}
.vvault-front .vvault-ev__frame{margin:0 0 var(--vv-s3)}
.vvault-front .vvault-photo-credits{margin:0;padding-left:var(--vv-s5);font-size:.92rem;line-height:1.5}
.vvault-front .vvault-photo-credits li{margin:0 0 var(--vv-s2)}
.vvault-front .vvault-module.vvault-module--editorial .vvault-page-h2{margin:0;font-family:var(--vv-font-display);font-size:1.625rem;line-height:1.15;letter-spacing:-.01em;font-weight:var(--vv-title-weight)}
.vvault-front .vvault-arrowlink{color:var(--vv-vp-accent,var(--vv-strong));font-weight:500;font-size:.875rem;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.vvault-front .vvault-badge{display:inline-flex;align-items:center;min-height:1.5rem;padding:0 var(--vv-s3);border-radius:var(--vv-radius-pill);background:var(--vv-vp-chip,var(--vv-soft));font-size:.875rem;line-height:1.2;white-space:nowrap}
.vvault-front .vvault-badge--line{background:color-mix(in srgb,var(--vv-vp-accent,var(--vv-strong)) 9%,var(--vv-paper));border:1px solid var(--vv-vp-accent,var(--vv-strong));color:var(--vv-vp-accent,var(--vv-strong))}
.vvault-front .vvault-vhead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--vv-s3) var(--vv-s5);margin:0 0 var(--vv-s5)}
.vvault-front .vvault-vhead__dek{margin:var(--vv-s1) 0 0;color:var(--vv-muted);font-size:.9375rem}
.vvault-front .vvault-side__title{margin:0 0 var(--vv-s3);font-family:var(--vv-font-display);font-size:1.0625rem;line-height:1.3;font-weight:600}
.vvault-front .vvault-seg{display:inline-flex;padding:var(--vv-s1);border-radius:var(--vv-radius-pill);background:var(--vv-vp-chip,var(--vv-soft))}
.vvault-front .vvault-seg a{display:inline-flex;align-items:center;min-height:2rem;padding:0 var(--vv-s3);border-radius:var(--vv-radius-pill);text-decoration:none;font-size:.875rem;white-space:nowrap}
.vvault-front .vvault-seg a[aria-pressed="true"]{background:var(--vv-vp-accent,var(--vv-strong));color:var(--vv-on-strong)}
/* More coverage: a video without a calm picture shows its channel's initials, filling the 16:9 box. */
.vvault-front .vvault-evmore__thumb .vvault-plate{display:grid;place-items:center;width:100%;height:100%;background:color-mix(in srgb,var(--vv-accent,currentColor) 7%,var(--vv-panel,var(--vv-soft)))}
.vvault-front .vvault-evmore__thumb .vvault-plate__mark{font-size:1rem}
.vvault-front .vvault-th .vvault-plate{display:grid;place-items:center;width:100%;height:100%;background:color-mix(in srgb,var(--vv-accent,currentColor) 7%,var(--vv-panel,var(--vv-soft)))}
.vvault-front .vvault-th .vvault-plate__mark{font-size:1rem}
.vvault-front .vvault-th.vvault-th.vvault-th:has(.vvault-plate)::before{content:none}
/* Small text links get a 24px-high hit area (WCAG 2.5.8) without moving the text: padding taken back by margin. */
.vvault-front .vvault-crumbs a,.vvault-front .vvault-credit a,.vvault-front .vvault-evread__cta a{display:inline-block;padding-block:5px;margin-block:-5px;padding-block:max(1px,calc((24px - 1lh) / 2));margin-block:min(-1px,calc((1lh - 24px) / 2))}
/* Visitors who ask for less motion get none. */
@media (prefers-reduced-motion:reduce){.vvault-front *,.vvault-front ::before,.vvault-front ::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* Icons (R31): one SVG set, Front\Icon. Size, stroke and alignment are set here only; modules place icons, never redraw them. */
.vvault-front{--vv-ico-stroke:clamp(1.25px,.09em,2.25px)}
.vvault-front .vvault-ico{overflow:visible}
.vvault-front .vvault-ico[fill="none"]{stroke-width:var(--vv-ico-stroke)}
.vvault-front .vvault-ico[fill="none"] *{vector-effect:non-scaling-stroke}
/* Next to text: a square of --vv-ico-size (1em). In running text vertical-align puts its centre on the middle of the cap height; in a flex row the row centres it. */
.vvault-front .vvault-ico--inline{--vv-ico-size:1em;width:var(--vv-ico-size);height:var(--vv-ico-size);color:inherit;vertical-align:calc((.7em - var(--vv-ico-size)) / 2);vertical-align:calc((1cap - var(--vv-ico-size)) / 2)}
.vvault-front :is(.vvault-chev,.vvault-ext,.vvault-arrow,.vvault-btn__arrow,.vvault-x,.vvault-ico-link){margin-inline-start:var(--vv-s2)}
/* A glyph in a round button: the grid centres it, and the play triangle carries its own 1/8-width optical shift. */
.vvault-front .vvault-disc{display:inline-grid;place-items:center;flex:none}
.vvault-front .vvault-disc>.vvault-ico{width:var(--vv-disc-glyph,58%);height:var(--vv-disc-glyph,58%);color:inherit}
/* Disclosures: a leading chevron points right and turns down when open; a trailing one points down and turns up. */
.vvault-front details>summary .vvault-chev{transition:rotate .15s}
.vvault-front details[open]>summary .vvault-chev{rotate:90deg}
.vvault-front :is(.vvault-acc__chev,.vvault-faq__chev,.vvault-find__chev,.vvault-tchip__chev){rotate:90deg}
.vvault-front details[open]>summary :is(.vvault-acc__chev,.vvault-faq__chev,.vvault-find__chev,.vvault-tchip__chev){rotate:-90deg}
.vvault-front summary>.vvault-chev:first-child{margin-inline:0}
.vvault-front .vvault-find__chev{margin-inline-start:auto}
.vvault-front .vvault-gcard__foot{display:flex;align-items:center;gap:var(--vv-s2);margin-top:auto;padding-top:var(--vv-s2)}
.vvault-front .vvault-gcard__foot>.vvault-by{flex:1;margin-top:0;padding-top:0}
.vvault-front .vvault-gcard__go{margin-inline-start:auto}
/* Icon rows set in display type: trim the text box to cap height so the row's centring puts the icon on the cap middle in any font (no effect where text-box is unsupported). */
.vvault-front :is(.vvault-acc__sum>h2,.vvault-acc__sum>h3,.vvault-find__summary>span){text-box:trim-both cap alphabetic}
/* An inline play glyph fills 11 of 24 units, so it is drawn larger to match the old triangles' size. */
.vvault-front .vvault-btn__play{--vv-ico-size:1.5em}
/* Compact thumbnails in a narrow module are too small for both the play disc and the duration; the duration says it is a video. */
@container vv (max-width:800px){.vvault-front .vvault-module--compact .vvault-th:has(.vvault-th__len) .vvault-th__play{display:none}}
/* R34: rows divided by a rule on top end on the panel's own padding, so the last row keeps no bottom padding (it left 12-16px extra under every list in a box). */
.vvault-front :is(.vvault-rstep,.vvault-dbrow,.vvault-tl__item,.vvault-tindex .vvault-topic-list li,.vvault-reltopic,.vvault-srcrow,.vvault-vis--rows>.vvault-vi,.vvault-evcoll--list .vvault-evrow,.vvault-loc,.vvault-result,.vvault-row,.vvault-seq__item,.vvault-vrow,.vvault-variant--list :is(.vvault-stcard,.vvault-grid3>li),.vvault-variant--compact :is(.vvault-vrow,.vvault-evrow,.vvault-stcard,.vvault-grid3>li),.vvault-module--compact :is(.vvault-vi,.vvault-vrow,.vvault-srcrow,.vvault-evrow,.vvault-sritem,.vvault-stcard,.vvault-dbrow,.vvault-chvid)):last-child{padding-bottom:0}
/* R34: a block's last child never carries its bottom margin into the box around it (a card's clamped excerpt, an article's last paragraph). */
.vvault-front .vvault-module :is(p,ul,ol,dl,blockquote,figure,.vvault-by):last-child{margin-bottom:0}
.vvault-front .vvault-tindex__feature:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0}

/* R33: a row with a picture beside its text centres the text against the picture wherever the row is side by side, so a wide container or a short entry leaves no empty run beside it (stacked rows, under 561px, keep their own alignment; Compact rows always sit side by side). */
@container vv (min-width:561px){.vvault-front .vvault-module.vvault-module :is(.vvault-vrow,.vvault-evrow,.vvault-srcrow,.vvault-sritem,.vvault-dbrow,.vvault-reltopic,.vvault-vis--rows>.vvault-vi,.vvault-vis--side>.vvault-vi,.vvault-seq__item,.vvault-pn__card,.vvault-stlead){align-items:center}}
.vvault-front .vvault-module.vvault-module--compact :is(.vvault-vrow,.vvault-evrow,.vvault-srcrow,.vvault-sritem,.vvault-dbrow,.vvault-reltopic,.vvault-vis--rows>.vvault-vi,.vvault-vis--side>.vvault-vi,.vvault-seq__item,.vvault-pn__card,.vvault-stlead),.vvault-front .vvault-evmore__item{align-items:center}
