/* DR-15/16 detail view. Mirror the public shell only while this route is mounted. */
html:has(body[data-route="program"], .programs-detail) { background:#fff; }
body:is([data-route="program"], :has(.programs-detail)) { background:#fff; color:var(--isa-ink,#000); }
body:is([data-route="program"], :has(.programs-detail)) > header { background:#fff; border-bottom:1px solid var(--isa-line,#d8e0e5); padding:0 max(24px,calc((100vw - 1200px) / 2)); min-height:72px; gap:28px; }
body:is([data-route="program"], :has(.programs-detail)) > header .brand { flex:0 0 auto; color:var(--isa-ink,#000); }
body:is([data-route="program"], :has(.programs-detail)) > header nav { flex:1; justify-content:flex-end; gap:4px 6px; }
body:is([data-route="program"], :has(.programs-detail)) > header nav a, body:is([data-route="program"], :has(.programs-detail)) > header nav #email-logout { min-height:72px; padding:0 14px; color:var(--isa-muted,#404040); font-weight:500; font-size:.9375rem; }
body:is([data-route="program"], :has(.programs-detail)) > header nav a.active { color:var(--isa-ink,#000); font-weight:600; background:transparent; box-shadow:inset 0 -2px var(--isa-ink,#000); }
body:is([data-route="program"], :has(.programs-detail)) > header #forms-locale { border:0; border-radius:0; min-width:0; padding-inline:0 20px; font-size:.875rem; font-weight:500; color:var(--isa-muted,#404040); background-position:right 0 center; }
body:is([data-route="program"], :has(.programs-detail)) > main { max-width:1248px; margin-block:0; padding-inline:24px; }
body:is([data-route="program"], :has(.programs-detail)) .isa-forms:has(.programs-detail) { max-width:none; margin:0; padding:0; }
body:is([data-route="program"], :has(.programs-detail)) .programs-detail { padding-inline:0; }
body:is([data-route="program"], :has(.programs-detail)) > main > .hint:has(a[hidden]) { display:none; }
body:is([data-route="program"], :has(.programs-detail)) > main > .notice.public-entry-notice { background:transparent; border:0; border-left:2px solid var(--isa-secondary,#4cccbe); padding:2px 0 2px 14px; margin:18px 0 0; font-size:.8125rem; line-height:1.6; color:var(--isa-muted,#404040); }
body:is([data-route="program"], :has(.programs-detail)) > footer { width:min(1200px,calc(100% - 48px)); max-width:none; margin:0 auto; padding:28px 0 56px; border-top:1px solid var(--isa-ink,#000); font-size:.875rem; color:var(--isa-muted,#404040); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px 24px; line-height:1.9; }
body:is([data-route="program"], :has(.programs-detail)) > footer a { color:var(--isa-ink,#000); text-decoration:underline; text-underline-offset:3px; text-decoration-color:var(--isa-line-strong,#0c5773); white-space:nowrap; }
.programs-detail { max-width:1200px; margin:0 auto; padding:0 24px 96px; color:var(--isa-ink,#000); line-height:1.55; overflow-wrap:anywhere; }
.programs-detail *, .programs-detail *::before, .programs-detail *::after { box-sizing:border-box; }
.programs-detail [hidden] { display:none; }
.programs-detail .programs-detail-back { display:inline-flex; align-items:center; min-height:44px; margin-top:28px; color:var(--isa-muted,#404040); font-size:.9375rem; text-decoration:none; }
.programs-detail .programs-detail-back:hover { text-decoration:underline; text-underline-offset:4px; }
.programs-detail .programs-detail-layout { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:72px; margin-top:20px; align-items:start; }
.programs-detail .programs-detail-content { min-width:0; }
.programs-detail .programs-detail-poster { position:sticky; top:24px; margin:0; }
.programs-detail .programs-detail-poster img, .programs-detail .programs-detail-poster-fallback { display:block; width:100%; height:auto; aspect-ratio:4 / 5; object-fit:contain; background:var(--isa-surface-2,#f4f4f4); border-radius:4px; }
.programs-detail .programs-detail-poster-fallback { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:24px; padding:24px; text-align:center; }
.programs-detail .programs-detail-poster-symbol { letter-spacing:.16em; font-weight:700; color:var(--isa-heading,#0c5773); }
.programs-detail .programs-detail-poster-day { display:block; font-family:var(--isa-font-display,serif); font-size:4rem; line-height:1.2; }
.programs-detail .programs-detail-poster-month, .programs-detail .programs-detail-poster-message { font-size:.875rem; color:var(--isa-muted,#404040); }
.programs-detail .programs-detail-meta { display:flex; align-items:center; flex-wrap:wrap; gap:6px 14px; font-size:.8125rem; color:var(--isa-muted,#404040); margin-top:6px; }
.programs-detail .programs-detail-status { display:inline-flex; align-items:center; gap:7px; font-weight:700; color:var(--isa-ink,#000); }
.programs-detail .programs-detail-status::before { content:''; width:6px; height:6px; flex:none; border-radius:50%; background:var(--isa-accent,#ffc600); }
.programs-detail .programs-detail-status[data-status=closed]::before { background:var(--isa-muted,#404040); }
.programs-detail .programs-detail-title { color:var(--isa-ink,#000); font-family:var(--isa-font-display,serif); font-weight:500; font-size:2.375rem; line-height:1.25; letter-spacing:-.02em; margin:14px 0 0; text-wrap:balance; word-break:keep-all; }
.programs-detail:lang(ja) .programs-detail-title { word-break:normal; overflow-wrap:break-word; }
.programs-detail .programs-detail-lead { margin:18px 0 0; font-size:1.0625rem; line-height:1.7; color:var(--isa-muted,#404040); max-width:40em; }
.programs-detail .programs-detail-facts { list-style:none; margin:28px 0 0; padding:20px 0 4px; border-top:1px solid var(--isa-ink,#000); display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 24px; }
.programs-detail .programs-detail-facts li { display:grid; grid-template-columns:minmax(60px,auto) minmax(0,1fr); gap:12px; font-size:.9375rem; font-weight:500; }
.programs-detail .programs-detail-fact-label { color:var(--isa-muted,#404040); font-size:.8125rem; padding-top:2px; }
.programs-detail .programs-detail-facts a { color:var(--isa-primary,#0c5773); text-underline-offset:3px; }
.programs-detail .programs-detail-map { white-space:nowrap; }
.programs-detail .programs-detail-timezone { font-size:.8125rem; color:var(--isa-muted,#404040); margin:12px 0 0; }
.programs-detail .programs-detail-actions { display:flex; flex-wrap:wrap; align-items:center; gap:16px; margin-top:32px; }
.programs-detail .programs-detail-cta, .programs-detail .programs-detail-retry { display:inline-flex; align-items:center; justify-content:center; min-height:52px; padding:12px 24px; width:auto; border:0; border-radius:2px; background:var(--isa-primary,#0c5773); color:var(--isa-on-primary,#fff); font:inherit; font-weight:700; text-align:center; text-decoration:none; cursor:pointer; }
.programs-detail .programs-detail-cta:hover, .programs-detail .programs-detail-retry:hover { background:var(--isa-primary,#0c5773); color:var(--isa-on-primary,#fff); text-decoration:underline; }
.programs-detail .programs-detail-cta:disabled { background:var(--isa-surface-2,#f4f4f4); color:var(--isa-muted,#404040); cursor:default; text-decoration:none; opacity:1; }
.programs-detail .programs-detail-external-notice { flex:1 1 180px; margin:0; color:var(--isa-muted,#404040); font-size:.8125rem; }
.programs-detail .programs-detail-body { margin-top:48px; max-width:42em; }
.programs-detail .programs-detail-body-title { color:var(--isa-ink,#000); font-size:1.125rem; margin:0 0 14px; }
.programs-detail .programs-detail-paragraph { margin:0 0 14px; white-space:pre-line; line-height:1.8; color:var(--isa-ink,#000); }
.programs-detail .programs-detail-note { margin-top:40px; padding-top:16px; border-top:1px solid var(--isa-line,#d8e0e5); font-size:.8125rem; color:var(--isa-muted,#404040); }
.programs-detail .programs-detail-state { margin-top:32px; }
.programs-detail :focus-visible { outline:3px solid var(--isa-focus,#0c5773); outline-offset:4px; }
.programs-detail .programs-detail-sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
/* DR-18: the detail live region sits beside the replaced view, outside .programs-detail. */
.programs-detail-live { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
/* Short copies for the mobile bar only; the long notice stays the CTA description. */
.programs-detail .programs-detail-external-short, .programs-detail .programs-detail-bar-fact { display:none; }
@media(max-width:1000px) {
 body:is([data-route="program"], :has(.programs-detail)) > header nav a, body:is([data-route="program"], :has(.programs-detail)) > header nav #email-logout { min-height:56px; }
 .programs-detail .programs-detail-layout { gap:32px; } .programs-detail .programs-detail-facts { grid-template-columns:minmax(0,1fr); }
}
/* DR-18: one rem reserve and one position decide the fixed bar; design overrides these two. */
@media(max-width:760px) {
 html:has(body[data-route="program"], .programs-detail) { --programs-detail-bar-reserve:12rem; --programs-detail-bar-position:fixed; scroll-padding-bottom:calc(var(--programs-detail-bar-reserve,12rem) + env(safe-area-inset-bottom,0px)); }
 body:is([data-route="program"], :has(.programs-detail)) > header { padding:10px 24px 0; min-height:0; gap:6px 12px; }
 body:is([data-route="program"], :has(.programs-detail)) > header nav { flex-basis:100%; justify-content:flex-start; gap:0; }
 body:is([data-route="program"], :has(.programs-detail)) > header nav a, body:is([data-route="program"], :has(.programs-detail)) > header nav #email-logout { min-height:44px; padding:8px 10px; }
 body:is([data-route="program"], :has(.programs-detail)) > header #forms-locale { min-height:44px; }
 body:is([data-route="program"], :has(.programs-detail)) > footer { flex-direction:column; padding:24px 0 calc(var(--programs-detail-bar-reserve,12rem) + env(safe-area-inset-bottom,0px)); }
 body:is([data-route="program"], :has(.programs-detail)) > footer a { display:inline-block; padding-block:12px; }
 .programs-detail { padding:0 24px calc(var(--programs-detail-bar-reserve,12rem) + env(safe-area-inset-bottom,0px)); }
 .programs-detail .programs-detail-layout { grid-template-columns:minmax(0,1fr); row-gap:20px; margin-top:12px; }
 .programs-detail .programs-detail-poster { position:static; }
 .programs-detail .programs-detail-title { font-size:1.75rem; }
 .programs-detail .programs-detail-lead { font-size:.9375rem; }
 .programs-detail .programs-detail-facts { gap:10px; }
 .programs-detail .programs-detail-actions { display:flex; position:var(--programs-detail-bar-position,fixed); z-index:20; left:0; right:0; bottom:0; flex-wrap:nowrap; align-items:center; gap:12px; margin:0; padding:12px 24px calc(12px + env(safe-area-inset-bottom,0px)); background:var(--isa-surface,#fff); border-top:1px solid var(--isa-line,#d8e0e5); }
 .programs-detail .programs-detail-cta { flex:1 1 55%; min-width:0; padding:12px; font-size:.9375rem; }
 .programs-detail .programs-detail-external-notice { display:none; }
 .programs-detail :is(.programs-detail-external-short, .programs-detail-bar-fact) { display:block; flex:1 1 45%; min-width:0; font-size:.75rem; line-height:1.4; }
 .programs-detail :is(a,button,[tabindex]) { scroll-margin-block:24px calc(var(--programs-detail-bar-reserve,12rem) + env(safe-area-inset-bottom,0px)); }
}
/* Landscape phones and 400% zoom: a fixed bar would cover most of the screen. */
@media(max-width:760px) and (max-height:480px) {
 html:has(body[data-route="program"], .programs-detail) { --programs-detail-bar-reserve:0rem; --programs-detail-bar-position:static; }
}
