/* NX-4346. Public circuit composition; primitives remain in the canonical DS distribution. */
.nxt-public-circuit {
    container-type: inline-size;
    container-name: public-circuit-page;
    display: grid;
    gap: var(--stack-gap-section);
    min-inline-size: 0;
    color: var(--fg-primary);
    font-family: var(--font-sans);
    font-size: var(--text-md);
    line-height: var(--lh-normal);
    font-synthesis: none;
}

.nxt-public-circuit *,
.nxt-public-circuit *::before,
.nxt-public-circuit *::after { box-sizing: border-box; }
.nxt-public-circuit [hidden] { display: none !important; }
.nxt-public-circuit p,
.nxt-public-circuit h1,
.nxt-public-circuit h2,
.nxt-public-circuit h3 { margin: 0; color: inherit; font-family: inherit; overflow-wrap: anywhere; }
.nxt-public-circuit h1 { padding: 0; font-size: var(--text-2xl); line-height: var(--lh-heading); font-weight: var(--weight-medium); letter-spacing: var(--track-snug); text-align: start; text-wrap: pretty; }
.nxt-public-circuit h2 { font-size: var(--text-xl); line-height: var(--lh-snug); font-weight: var(--weight-medium); }
.nxt-public-circuit h3 { font-size: var(--text-lg); line-height: var(--lh-snug); font-weight: var(--weight-medium); }
.nxt-public-circuit a:not(.nxt-button) { color: inherit; text-decoration: underline; text-underline-offset: var(--space-1); }
.nxt-public-circuit :focus-visible { outline: var(--focus-ring-width) solid var(--focus-ring); outline-offset: var(--focus-ring-gap); }

.nxt-public-circuit-next,
.nxt-public-circuit-section {
    padding: var(--space-6);
    background: var(--bg-surface);
    border: var(--hairline-size) solid var(--border-subtle);
    border-radius: var(--surface-frame-radius);
    min-inline-size: 0;
}

/* Same client palettes and heading composition as ranking-publico (NX-4734). */
.nxt-public-circuit .nxt-public-circuit-header {
    --circuit-organizer-fill: var(--neutral-fill);
    --circuit-header-inline-padding: var(--space-6);
    min-inline-size: 0;
    inline-size: 100%;
    border: var(--control-frame-border-width) solid var(--surface-frame-border);
    border-radius: var(--surface-frame-radius);
    background: var(--surface-frame-bg);
    color: var(--surface-frame-fg);
    -webkit-font-smoothing: antialiased;
}
.nxt-public-circuit .nxt-public-circuit-header[data-organizer="AM00"] { --circuit-organizer-fill: color-mix(in oklab, var(--semantic-success-8) 70%, var(--neutral-9)); }
.nxt-public-circuit .nxt-public-circuit-header[data-organizer="CM00"] { --circuit-organizer-fill: color-mix(in oklch, var(--accent-2-8) 60%, var(--semantic-info-9)); }
.nxt-public-circuit .nxt-public-circuit-header[data-organizer="7700"] { --circuit-organizer-fill: color-mix(in oklch, var(--accent-2-9) 40%, var(--semantic-info-8)); }
.nxt-public-circuit .nxt-public-circuit-header[data-organizer="CP00"] { --circuit-organizer-fill: color-mix(in oklch, var(--accent-2-8) 80%, var(--semantic-info-6)); }
.nxt-public-circuit .nxt-public-circuit-header[data-organizer="CM01"] { --circuit-organizer-fill: color-mix(in oklch, var(--semantic-error-8) 90%, var(--accent-2-11)); }
.nxt-public-circuit .nxt-public-circuit-header[data-organizer="CM11"] { --circuit-organizer-fill: color-mix(in oklch, var(--accent-2-9) 35%, var(--semantic-info-7)); }
.nxt-public-circuit .nxt-public-circuit-heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: start;
    gap: var(--space-5);
    padding: var(--space-5) var(--circuit-header-inline-padding);
    border-start-start-radius: inherit;
    border-start-end-radius: inherit;
    background: var(--circuit-organizer-fill);
    color: var(--neutral-fill-fg);
}
.nxt-public-circuit .nxt-public-circuit-title-group { display: grid; min-inline-size: 0; gap: var(--stack-gap-heading); }
.nxt-public-circuit .nxt-public-circuit-brand { inline-size: calc(var(--space-7) * 3); block-size: auto; aspect-ratio: 5; fill: currentColor; }
.nxt-public-circuit .nxt-public-circuit-heading[data-brand-hidden] { grid-template-columns: minmax(0, 1fr); }
.nxt-public-circuit .nxt-public-circuit-heading[data-brand-hidden] .nxt-public-circuit-brand { display: none; }
.nxt-public-circuit .nxt-public-circuit-title-probe { position: fixed; inline-size: max-content; max-inline-size: none; white-space: nowrap; visibility: hidden; pointer-events: none; }
.nxt-public-circuit .nxt-public-circuit-period { font-size: var(--text-sm); line-height: var(--lh-normal); font-variant-numeric: tabular-nums; }
.nxt-public-circuit .nxt-public-circuit-period time { display: inline-block; }
.nxt-public-circuit-eyebrow { font-size: var(--text-sm); font-weight: var(--weight-medium); }
.nxt-public-circuit-header-resources { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-4); padding: var(--space-4) var(--circuit-header-inline-padding); }
.nxt-public-circuit-committees { display: flex; flex: 1; flex-wrap: wrap; gap: var(--space-3); font-size: var(--text-sm); }
.nxt-public-circuit-committees .nxt-badge { max-inline-size: 100%; white-space: normal; }
.nxt-public-circuit-poster { flex: 0 1 calc(var(--space-7) * 3); }
.nxt-public-circuit-poster img { display: block; max-inline-size: 100%; max-block-size: calc(var(--space-7) * 4); object-fit: contain; }
.nxt-public-circuit-actions,
.nxt-public-circuit-view-controls { display: flex; align-items: center; flex-wrap: wrap; gap: var(--action-gap); }
.nxt-public-circuit-section,
.nxt-public-circuit-next { display: grid; gap: var(--stack-gap-section); scroll-margin-block-start: var(--space-5); }
.nxt-public-circuit-section-heading { display: grid; gap: var(--stack-gap-heading); }
.nxt-public-circuit-section-heading p,
.nxt-public-circuit-date { color: var(--fg-secondary); font-size: var(--text-sm); }
.nxt-public-circuit-section-toolbar { display: flex; align-items: end; justify-content: space-between; flex-wrap: wrap; column-gap: var(--space-5); row-gap: var(--space-4); }
.nxt-public-circuit-competition-list { display: grid; gap: var(--stack-gap-related); list-style: none; padding: 0; margin: 0; }
.nxt-public-circuit-competition-list > li + li { border-block-start: var(--hairline-size) solid var(--border-subtle); padding-block-start: var(--space-5); }
.nxt-public-circuit-competition-list > .nxt-public-circuit-month-heading { border-block-start: 0; padding-block-start: var(--space-3); font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--fg-secondary); }
.nxt-public-circuit-competition { display: flex; flex-wrap: wrap; align-items: center; column-gap: var(--space-5); row-gap: var(--space-4); min-inline-size: 0; }
.nxt-public-circuit-competition-copy { display: grid; gap: var(--stack-gap-heading); flex: 1; min-inline-size: min(100%, var(--field-w-medium)); }
.nxt-public-circuit-competition-copy .nxt-badge { justify-self: start; }
.nxt-public-circuit-competition[data-status="cancelada"] h3 { text-decoration: line-through; color: var(--fg-secondary); }
.nxt-public-circuit-empty { padding: var(--space-5); background: var(--bg-sunken); border-radius: var(--radius-sm); color: var(--fg-secondary); }

.nxt-public-circuit-calendar,
.nxt-public-circuit-undated { display: grid; gap: var(--stack-gap-related); min-inline-size: 0; }
.nxt-public-circuit-calendar-toolbar { display: flex; align-items: end; justify-content: space-between; flex-wrap: wrap; gap: var(--space-4); }
.nxt-public-circuit .nxt-public-circuit-calendar-date-field { inline-size: var(--field-w-medium); max-inline-size: 100%; }
.nxt-public-circuit .nxt-public-circuit-date-picker { inline-size: 100%; min-inline-size: 0; min-block-size: var(--ctrl-block-h-md); padding-inline: var(--field-inline-pad-md); font: inherit; }
.nxt-public-circuit-calendar-title,
.nxt-public-circuit [data-circuit-calendar-title] { text-transform: capitalize; }
.nxt-public-circuit-calendar-hint { font-size: var(--text-sm); color: var(--fg-secondary); }
.nxt-public-circuit-calendar-scroll { overflow: auto; border: var(--hairline-size) solid var(--border-subtle); border-radius: var(--radius-sm); }
.nxt-public-circuit-calendar-table { inline-size: 100%; min-inline-size: calc(var(--space-7) * 14); table-layout: fixed; border-collapse: collapse; }
.nxt-public-circuit-calendar-table th,
.nxt-public-circuit-calendar-table td { border: var(--hairline-size) solid var(--border-subtle); padding: var(--space-2); vertical-align: top; }
.nxt-public-circuit-calendar-table th { font-size: var(--text-sm); text-align: start; background: var(--bg-sunken); }
.nxt-public-circuit-calendar-table abbr { text-decoration: none; }
.nxt-public-circuit-calendar-table td { block-size: calc(var(--space-7) * 2); }
.nxt-public-circuit-calendar-table td[data-today] { box-shadow: inset 0 0 0 var(--focus-ring-width) var(--border-strong); }
.nxt-public-circuit-calendar-day { display: block; margin-block-end: var(--space-2); font-size: var(--text-sm); font-weight: var(--weight-medium); }
.nxt-public-circuit-calendar-table td[data-selected] .nxt-public-circuit-calendar-day { inline-size: fit-content; padding-inline: var(--space-2); border-radius: var(--radius-sm); color: var(--neutral-fill-fg); background: var(--neutral-fill); }
.nxt-public-circuit-calendar-table td[data-outside-period] .nxt-public-circuit-calendar-day { color: var(--fg-tertiary); }
.nxt-public-circuit-calendar-events { display: grid; gap: var(--space-2); list-style: none; padding: 0; margin: 0; }
.nxt-public-circuit-calendar-event { position: relative; display: grid; gap: var(--stack-gap-heading); min-block-size: var(--ctrl-block-h-md); padding: var(--space-2); border-radius: var(--radius-sm); background: var(--bg-sunken); font-size: var(--text-xs); line-height: var(--lh-snug); overflow-wrap: anywhere; }
.nxt-public-circuit-calendar-event small { font-size: inherit; color: var(--fg-secondary); }
.nxt-public-circuit-calendar-event[data-cancelled] { text-decoration: line-through; color: var(--fg-secondary); }
.nxt-public-circuit-undated ul { display: grid; gap: var(--space-2); padding-inline-start: var(--space-5); margin: 0; }

@media (width < 768px) {
    .nxt-public-circuit-next,
    .nxt-public-circuit-section { padding: var(--space-4); }
    .nxt-public-circuit .nxt-public-circuit-actions > .nxt-button { flex: 1 1 auto; }
}

/* Same --bp-md container threshold as the public ranking header. */
@container public-circuit-page (width < 768px) {
    .nxt-public-circuit .nxt-public-circuit-calendar-toolbar { display: grid; grid-template-columns: minmax(0, 1fr); }
    .nxt-public-circuit .nxt-public-circuit-calendar-date-field { inline-size: 100%; }
    .nxt-public-circuit .nxt-public-circuit-header { --circuit-header-inline-padding: var(--space-4); }
    .nxt-public-circuit .nxt-public-circuit-header-resources { display: grid; grid-template-columns: minmax(0, 1fr); }
    .nxt-public-circuit .nxt-public-circuit-poster { justify-self: start; }
    .nxt-public-circuit h1 { font-size: var(--text-xl); }
    .nxt-public-circuit .nxt-public-circuit-heading { grid-template-columns: minmax(0, 1fr); gap: var(--space-4); }
    .nxt-public-circuit .nxt-public-circuit-heading .nxt-public-circuit-brand,
    .nxt-public-circuit .nxt-public-circuit-heading[data-brand-hidden] .nxt-public-circuit-brand { display: block; grid-row: 1; justify-self: end; }
}
