/* Round 300. Page geometry only: controls use the existing shared primitives. */
.vw-page { color: var(--ink); font-size: 15px; line-height: 1.5; padding: 26px 0 56px; }
.vw-page * { min-width: 0; }
.vw-page a, .vw-page button, .vw-page summary, .vw-page select, .vw-page input:not([type="hidden"]) { min-height: 44px; }
.vw-page a { display: inline-flex; align-items: center; }
.vw-page .pill { font-size: 13px; }
.vw-page p { margin: 0 0 12px; }
.vw-page h1 { font-size: 38px; line-height: 1.1; font-weight: 800; margin: 0 0 10px; }
.vw-page h2 { font-size: 20px; font-weight: 800; margin: 0 0 6px; }
.vw-page h3 { font-size: 17px; font-weight: 700; margin: 0 0 4px; }
.vw-hero { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 22px; }
.vw-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 22px; font-size: 16px; }
.vw-hero-actions { display: flex; flex: none; flex-direction: column; align-items: flex-end; gap: 10px; }
.vw-deadline { border-bottom: 3px solid var(--gold); }
.vw-layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 22px; align-items: start; }
.vw-schedule, .vw-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); }
.vw-filter { padding: 24px 26px 18px; }
.vw-filter-heading { display: flex; gap: 12px; justify-content: space-between; align-items: baseline; }
.vw-filter-heading p { font-size: 14px; }
.vw-controls { display: flex; gap: 10px; flex-wrap: wrap; }
.vw-controls .sdc-select { flex: 1 1 220px; max-width: 100%; }
.vw-controls .sdc-input { flex: 1 1 180px; width: auto; }
.vw-search-all { font-size: 14px; }
/* Round 309: the member nav is sticky at top 0 and 65px tall; the strip pins below it (Point Schedule's convention). */
.vw-days { position: sticky; top: var(--nav-h, 65px); z-index: 10; display: flex; background: var(--surface); border-block: 1px solid var(--line); }
.vw-page .vw-day { display: flex; flex: 1; flex-direction: column; justify-content: center; min-height: 90px; padding: 10px 4px; color: var(--ink); font-size: 13px; text-decoration: none; border-bottom: 3px solid transparent; }
.vw-day b { font-size: 25px; }
.vw-day.is-on { background: var(--brand-soft); border-bottom-color: var(--brand); }
.vw-day.is-past { border-top: 2px dashed var(--line); }
.vw-day.is-past > span:first-child::after { content: ' · past'; }
.vw-panel[hidden] { display: none; }
.vw-panel-heading { padding: 20px 26px; display: flex; justify-content: space-between; gap: 16px; align-items: center; border-bottom: 1px solid var(--line); }
.vw-panel-heading > a { font-weight: 700; }
.vw-ring, .vw-event { padding: 18px 26px; border-bottom: 1px solid var(--line); display: flex; gap: 16px; justify-content: space-between; align-items: center; }
.vw-event--anchor { background: var(--tint); }
.vw-row-main { flex: 1; overflow-wrap: anywhere; }
.vw-row-title, .vw-row-meta, .vw-judges { display: flex; align-items: center; gap: 6px 14px; flex-wrap: wrap; }
.vw-row-title { margin-bottom: 4px; }
.vw-event-name { font-size: 17px; }
.vw-number, .vw-row-meta { font-size: 13px; }
.vw-breed-summary { display: block; font-size: 17px; }
.vw-judge { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px; font-size: 14px; }
.vw-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; justify-content: flex-end; max-width: 270px; }
.vw-hit .vw-event-name { text-decoration: underline; text-decoration-thickness: 2px; }
.vw-section-label { display: flex; justify-content: space-between; padding: 12px 26px; font-size: 14px; font-weight: 800; margin: 0; background: var(--tint); }
.vw-empty { padding: 26px; }
.vw-footer { padding: 18px 26px; font-size: 14px; background: var(--tint); border-radius: 0 0 var(--radius-md) var(--radius-md); }
.vw-page .vw-footer { margin: 0; }
.vw-fold > summary { display: none; }
.vw-fold:not([open]) > .vw-fold-body { display: block; }
.vw-rail { display: grid; gap: 18px; }
.vw-card { padding: 22px; }
.vw-card p, .vw-card li { font-size: 14px; }
.vw-note { padding: 12px; background: var(--gold-soft); border: 1px solid var(--gold); border-radius: var(--radius-sm); font-size: 14px; }
.vw-super { padding: 16px 0; border-bottom: 1px solid var(--line); }
.vw-rail .pa-button { width: 100%; }
.vw-mail { overflow-wrap: anywhere; font-size: 14px; }
.vw-details summary { display: flex; align-items: center; font-weight: 700; color: var(--brand); cursor: pointer; }
.vw-details ul { list-style: none; padding: 0; margin: 8px 0; }
.vw-details li { display: flex; flex-direction: column; gap: 4px; padding-bottom: 10px; }
.vw-documents { padding-top: 16px; }
.vw-location address { font-style: normal; }
.vw-location img, .vw-location iframe { width: 100%; max-width: 100%; border: 0; margin-bottom: 12px; }
.vw-location iframe { height: 220px; }
.vw-location img { height: auto; }
.vw-fine, .vw-location figcaption { font-size: 13px; }
.vw-page .vw-phone-directions { display: none; }
@media (max-width: 1099.98px) {
    .vw-layout { grid-template-columns: minmax(0, 1fr) 290px; gap: 16px; }
    .vw-page h1 { font-size: 32px; }
    .vw-ring, .vw-event { flex-wrap: wrap; }
    .vw-actions { max-width: none; justify-content: flex-start; }
}
@media (max-width: 849.98px) {
    .vw-layout { grid-template-columns: minmax(0, 1fr); }
    .vw-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
    .vw-hero { align-items: flex-start; }
    .vw-filter-heading { display: block; }
}
@media (max-width: 560px) {
    .vw-hero { display: block; }
    .vw-page h1 { font-size: 30px; }
    .vw-hero-actions { align-items: flex-start; margin-top: 12px; }
    .vw-days { position: static; display: grid; grid-template-columns: repeat(auto-fit, minmax(72px, 1fr)); }
    .vw-rail { grid-template-columns: minmax(0, 1fr); }
    .vw-filter, .vw-ring, .vw-event, .vw-panel-heading, .vw-footer { padding: 18px; }
    .vw-panel-heading { display: block; }
    .vw-page .vw-phone-directions { display: inline-flex; }
    .vw-controls { flex-direction: column; }
    .vw-controls .sdc-select, .vw-controls .sdc-input { flex: auto; width: 100%; font-size: 16px; }
    .vw-fold > summary { display: flex; align-items: center; padding: 12px 18px; }
    .vw-fold:not([open]) > .vw-fold-body { display: none; }
    .vw-actions { width: 100%; }
    /* Round 309: past rings put Save and Event details after the judges, before the placements. */
    .vw-ring--past { row-gap: 10px; }
    .vw-ring--past > .vw-row-main { display: contents; }
    .vw-ring--past > .vw-row-main > * { flex: 0 0 100%; }
    .vw-ring--past > .vw-actions { order: 1; }
    .vw-ring--past .vw-ring-results { order: 2; }
}

/* Round 302: shared secondary action, with the approved wrapping heading. */
.vw-panel-heading { flex-wrap: wrap; }
.vw-panel-heading > .vw-saveall { margin-left: auto; }
.vw-saveall-done { display: inline-flex; align-items: center; min-height: 44px; margin-left: auto; font-weight: 700; color: var(--ink); }
.vw-saveall-done::before { content: '✓'; margin-right: 6px; color: var(--brand); font-weight: 800; }

/* Round 303: the public shell has neither Bootstrap's reset nor section sizing. */
.vw-page, .vw-page * { box-sizing: border-box; }
.vw-page section { padding: 0; }
.vw-page .vw-card { padding: 22px; }
.vw-public-wrap { display: block; }
.vw-public-wrap > .vw-page { padding-top: 18px; }
.vw-guest-line { font-size: 14.5px; margin: 10px 0 0; }
.vw-teaser { border-top: 1px solid var(--line); }
.vw-public-wrap .pd-paywall { margin: 0; border-radius: 0; }

/* Round 305: approved demo result grids and label treatment; dog links keep the shared skin.
   Round 309: the Results pill is the shared .pill--gold; the hairline is the token; a label that is
   not a winner code takes its own line; the dog link keeps a 44px hit area through padding
   (Option B) instead of the page's 44px inline-flex box, so every placement row is one height. */
.vw-ring--past { align-items: flex-start; }
.vw-ring-results, .vw-event-results { margin-top: 8px; border-top: 1px solid var(--line); }
.vw-ring-results .evr-place-row { display: grid; grid-template-columns: 48px minmax(0,1fr); gap: 8px; padding: 5px 0; border-top: 1px solid var(--line); font-size: 14.5px; }
.vw-ring-results .evr-place-row:first-child { border-top: 0; }
.vw-ring-results .evr-place-row--long { grid-template-columns: minmax(0, 1fr); }
.vw-ring-results .evr-place-row--long .evr-place { white-space: normal; }
.vw-ring-results a.evr-doglink { display: inline-block; min-height: 0; padding: 11px 0; margin: -11px 0; }
.vw-event-results .evr-award { display: grid; grid-template-columns: 120px minmax(0,1fr); gap: 8px; padding: 5px 0; font-size: 14.5px; }
.vw-not-posted { margin: 8px 0 0; font-size: 14px; font-weight: 600; }
.vw-ring-results .evr-place, .vw-event-results .evr-award-label { font-weight: 800; color: var(--brand); }
/* Round 309: documents by day in the results rail: event on the left, its two links on the right. */
.vw-doc-day li { flex-direction: row; justify-content: space-between; align-items: center; gap: 4px 12px; flex-wrap: wrap; padding-bottom: 0; }
.vw-doc-links { display: flex; gap: 14px; white-space: nowrap; }
