/* Hallmark · macrostructure: Long Document · tone: brand-consistent and practical · anchor hue: AALA teal · theme: existing AALA visual system · contrast: pass (40–41) · nav/footer: existing AALA · slop: pass (42–49) · mobile: pass (34, 49–57) */
/* Hallmark · pre-emit critique: P5 H5 E4 S5 R5 V4 */
/* Reference match: aalaconference.com/program.html · Montserrat · white paper · white-to-teal navigation · teal headings · light-grey cards */

html,
body.programme-page { overflow-x: clip; }
body.programme-page { margin: 0; background: var(--color-paper); color: var(--color-ink); font-family: var(--font-body); font-size: var(--text-base); line-height: 1.6; }
.programme-page *, .programme-page *::before, .programme-page *::after { box-sizing: border-box; }
.programme-page a, .programme-page button, .programme-page summary { -webkit-tap-highlight-color: var(--color-clear); }
.programme-page a:focus-visible, .programme-page button:focus-visible, .programme-page summary:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
.programme-page a[aria-disabled="true"], .programme-page button:disabled, .programme-page summary[aria-disabled="true"] { cursor: not-allowed; opacity: 0.55; pointer-events: none; }

.programme-page .navbar { position: sticky; top: 0; z-index: var(--z-nav); display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 5%; background: linear-gradient(to right, #ffffff 0%, #168e6a 50%); box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
.programme-page .logo-area { flex-shrink: 0; }
.programme-page .logo-area a { display: block; line-height: 0; }
.programme-page .logo-area img { display: block; width: auto; max-height: 60px; }
.programme-page .nav-links { min-width: 0; display: flex; flex: 1; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px; }
.programme-page .nav-links a { margin: 0 15px; color: #ffffff; font-size: 1rem; font-weight: bold; line-height: inherit; text-decoration: none; white-space: nowrap; }
.programme-page .nav-links a:hover, .programme-page .nav-links a:active { color: #f2d82e; }
.programme-page .nav-links a[aria-current="page"] { color: #ffffff; }
.programme-page .nav-links a[aria-current="page"] { text-decoration: underline; text-decoration-color: var(--color-highlight); text-decoration-thickness: var(--rule-thin); text-underline-offset: var(--space-3xs); }
.programme-page .nav-links a:focus-visible, .programme-page .hamburger:focus-visible { outline-color: var(--color-highlight); }
.programme-page .hamburger { min-width: var(--touch-target); min-height: var(--touch-target); display: none; align-items: center; justify-content: center; padding: 0; border: 0; background: var(--color-clear); color: var(--color-accent-ink); font: 700 var(--text-xl)/1 var(--font-body); cursor: pointer; }
.programme-page .hamburger:hover, .programme-page .hamburger:active { color: var(--color-highlight); }

.programme-page .programme-container { width: 100%; max-width: var(--page-width); margin: var(--space-lg) auto; padding-inline: var(--space-sm); }
.programme-intro { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: var(--space-xl); padding-block-end: var(--space-xl); }
.programme-intro-copy { min-width: 0; }
.programme-intro h1, .programme-key h2, .day-heading h2 { min-width: 0; color: var(--color-accent); font-family: var(--font-display); font-style: normal; font-weight: 700; overflow-wrap: anywhere; }
.programme-intro h1 { width: fit-content; margin: 0; padding-block-end: var(--space-3xs); border-block-end: var(--rule-accent) solid var(--color-accent); font-size: var(--text-2xl); line-height: 1.2; }
.programme-intro-copy p { max-width: var(--measure); margin: 0; }
.programme-download { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2xs); }
.download-link { min-height: var(--touch-target); display: inline-flex; align-items: center; justify-content: center; gap: var(--space-lg); padding-inline: var(--space-sm); border: var(--rule-thin) solid var(--color-accent); border-radius: var(--radius-md); background: var(--color-paper); color: var(--color-accent-dark); font-weight: 700; line-height: 1; text-decoration: none; white-space: nowrap; }
.download-link:hover, .download-link:active { background: var(--color-accent); color: var(--color-accent-ink); }
.programme-download p { max-width: 45ch; margin: 0; font-size: var(--text-sm); }
.programme-shell { min-width: 0; }
.programme-key { padding-block: var(--space-sm) var(--space-lg); }
.programme-key h2, .day-heading h2 { width: fit-content; margin: 0 0 var(--space-sm); padding-block-end: var(--space-3xs); border-block-end: var(--rule-accent) solid var(--color-accent); font-size: var(--text-xl); line-height: 1.25; }
.legend { display: flex; flex-wrap: wrap; gap: var(--space-2xs) var(--space-sm); }
.legend-item, .session-type { display: inline-flex; align-items: center; gap: var(--space-2xs); color: var(--color-ink); font-size: var(--text-xs); font-weight: 600; line-height: 1.2; }
.legend-swatch { width: var(--space-xs); height: var(--space-xs); flex: 0 0 auto; border-radius: 50%; background: var(--session-color); }

.day-tabs-wrap { position: sticky; top: 5rem; z-index: var(--z-tabs); background: var(--color-paper); border-block: var(--rule-thin) solid var(--color-rule); box-shadow: 0 2px 5px var(--color-shadow); }
.day-tabs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.day-tab { min-width: 0; min-height: var(--touch-target); padding: var(--space-xs) var(--space-2xs); border: 0; border-inline-end: var(--rule-thin) solid var(--color-rule); background: var(--color-paper); color: var(--color-ink); font: 700 var(--text-sm)/1 var(--font-body); cursor: pointer; white-space: nowrap; }
.day-tab:first-child { border-inline-start: var(--rule-thin) solid var(--color-rule); }
.day-tab:hover { background: var(--color-paper-soft); }
.day-tab:active { background: var(--color-paper-raised); }
.day-tab[aria-selected="true"] { background: var(--color-accent); color: var(--color-accent-ink); }
.day-panel[hidden] { display: none; }
.day-heading { padding-block: var(--space-lg) var(--space-sm); }
.day-heading p { max-width: var(--measure); margin: 0; }
.timeline { margin: 0; padding: 0; border: 0; list-style: none; }
.time-group { display: grid; grid-template-columns: 4.25rem minmax(0, 1fr); gap: var(--space-sm); padding-block: var(--space-sm); border-block-start: var(--rule-thin) solid var(--color-rule); }
.time-marker { margin: 0; color: var(--color-accent-dark); font-size: var(--text-lg); font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1.25; }
.time-events { min-width: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2xs); align-items: start; }
.time-events.single-event > * { grid-column: 1 / -1; }

.session-card { --session-color: var(--color-other); min-width: 0; padding: var(--space-xs); border: var(--rule-thin) solid var(--color-rule); border-block-start: var(--rule-accent) solid var(--session-color); border-radius: var(--radius-md); background: var(--color-paper-raised); box-shadow: 0 2px 5px var(--color-shadow); }
.category-theme-1 { --session-color: var(--color-theme-1); } .category-theme-2 { --session-color: var(--color-theme-2); } .category-theme-3 { --session-color: var(--color-theme-3); } .category-theme-4 { --session-color: var(--color-theme-4); }
.category-featured { --session-color: var(--color-featured); } .category-poster { --session-color: var(--color-poster); } .category-symposium { --session-color: var(--color-symposium); } .category-plenary { --session-color: var(--color-plenary); }
.category-workshop { --session-color: var(--color-workshop); } .category-ceremony { --session-color: var(--color-ceremony); } .category-break { --session-color: var(--color-break); } .category-social { --session-color: var(--color-social); } .category-other { --session-color: var(--color-other); }
.session-meta { margin: 0 0 var(--space-2xs); display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3xs) var(--space-2xs); color: var(--color-ink); font-size: var(--text-2xs); }
.session-time { font-variant-numeric: tabular-nums; }
.session-room { color: var(--color-ink-strong); font-style: italic; font-weight: 700; }
.session-title-row { min-width: 0; display: flex; align-items: flex-start; gap: var(--space-2xs); }
.session-title-text { min-width: 0; flex: 1 1 auto; display: flex; flex-direction: column; gap: var(--space-3xs); line-height: 1.4; overflow-wrap: anywhere; }
.submission-id { display: block; margin: 0; color: var(--color-ink); font-size: var(--text-xs); font-style: italic; font-weight: 400; line-height: 1.2; white-space: nowrap; }
.session-title { display: block; color: var(--color-ink-strong); font-size: var(--text-sm); font-weight: 700; line-height: 1.35; }
.session-note { margin: var(--space-2xs) 0 0; color: var(--color-ink); font-size: var(--text-xs); font-weight: 600; line-height: 1.35; }
.session-sponsorship { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3xs) var(--space-xs); margin-block-start: var(--space-xs); padding-block-start: var(--space-2xs); border-block-start: var(--rule-thin) solid var(--color-rule); }
.session-sponsor-label { color: var(--color-ink); font-size: var(--text-2xs); font-weight: 600; }
.session-sponsor-logo { display: block; width: auto; max-width: 8.5rem; max-height: 3rem; object-fit: contain; object-position: left center; }
.category-plenary .session-sponsor-logo { max-width: 10rem; max-height: 3.5rem; }

details { min-width: 0; }
details > summary { list-style: none; cursor: pointer; }
details > summary::-webkit-details-marker { display: none; }
.title-details > summary, .author-details > summary { min-height: var(--touch-target); display: flex; align-items: center; gap: var(--space-xs); margin-inline: calc(var(--space-2xs) * -1); padding-inline: var(--space-2xs); border-radius: var(--radius-sm); }
.title-details > summary:hover, .author-details > summary:hover { background: var(--color-paper-soft); }
.title-details > summary:active, .author-details > summary:active { background: var(--color-paper); }
.expand-mark { width: var(--expand-size); min-width: var(--expand-size); height: var(--expand-size); display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 0; color: var(--color-ink-strong); font-size: var(--text-base); font-weight: 700; line-height: 1; }
.expand-mark::before { content: "+"; }
details[open] > summary .expand-mark::before { content: "−"; }
.abstract-panel, .bio-panel { max-width: var(--measure); margin-block: var(--space-2xs) var(--space-3xs); padding: var(--space-sm); border-inline-start: var(--rule-accent) solid var(--session-color); background: var(--color-paper-soft); color: var(--color-ink); font-size: var(--text-sm); line-height: 1.55; white-space: pre-line; }
.category-plenary .abstract-panel { max-width: none; }
.abstract-panel p, .bio-panel p { margin: 0; }
.abstract-label, .bio-label { display: block; margin-block-end: var(--space-2xs); color: var(--color-accent-dark); font-size: var(--text-xs); font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }

.authors { margin: var(--space-2xs) 0 0; padding: 0; list-style: none; }
.authors li + li { margin-block-start: 0; }
.programme-page .timeline .authors li { position: static; padding: 0; }
.programme-page .timeline .authors li::before { display: none; }
.author-line, .author-summary-text { min-width: 0; display: block; color: var(--color-ink-strong); font-size: var(--text-xs); font-weight: 400; line-height: 1.4; overflow-wrap: anywhere; }
.author-summary-text { flex: 1 1 auto; }
.author-details > summary { min-height: var(--space-lg); align-items: flex-start; gap: var(--space-3xs); }
.author-affiliation { color: var(--color-ink); }
.poster-band { --session-color: var(--color-poster); min-width: 0; padding-block-start: var(--space-sm); border-block-start: var(--rule-accent) solid var(--session-color); }
.time-events > .poster-band { grid-column: 1 / -1; }
.poster-band-title { display: block; color: var(--color-ink-strong); font-size: var(--text-base); }
.poster-band-intro { max-width: none; margin: var(--space-xs) 0 var(--space-md); font-size: var(--text-sm); line-height: 1.4; }
.poster-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2xs); }
.poster-item { background: var(--color-paper); }
.poster-item .session-time, .poster-item .session-room { display: none; }
.programme-error { max-width: var(--measure); padding: var(--space-md); border: var(--rule-thin) solid var(--color-focus); }
.programme-page .program-footer { margin-block-start: var(--space-2xl); padding: var(--space-lg); background: var(--color-accent); color: var(--color-accent-ink); text-align: center; }
.programme-page .program-footer p { margin: 0; }

@media screen and (max-width: 64rem) {
    .time-events, .poster-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (max-width: 48rem) {
    .programme-page .navbar { padding: 10px 16px; }
    .programme-page .logo-area img { max-height: 48px; }
    .programme-page .hamburger { min-width: 0; min-height: 0; display: block; cursor: pointer; font: inherit; font-size: 24px; line-height: normal; color: #ffffff; flex-shrink: 0; }
    .programme-page .nav-links { position: absolute; inset-block-start: 100%; inset-inline: 0; width: 100%; display: none; flex-direction: column; align-items: stretch; padding: 10px 0; background-color: #168e6a; box-shadow: 0 6px 12px rgba(0,0,0,0.14); }
    .programme-page .nav-links.is-open { display: flex; }
    .programme-page .nav-links a { width: 100%; margin: 8px 0; padding: 8px 12px; text-align: center; }
    .programme-page .programme-container { margin-block: var(--space-md); padding-inline: var(--space-sm); }
    .programme-intro { grid-template-columns: minmax(0, 1fr); align-items: start; gap: var(--space-lg); }
    .day-tabs-wrap { top: 4.25rem; }
    .time-group { grid-template-columns: minmax(0, 1fr); gap: var(--space-xs); }
    .time-events, .poster-list { grid-template-columns: minmax(0, 1fr); }
}
@media screen and (max-width: 24rem) { .day-tab { padding-inline: var(--space-3xs); font-size: var(--text-xs); } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; } }
@media print { .navbar, .programme-download, .programme-key, .day-tabs-wrap, .program-footer { display: none; } }
