/* One class briefing, shared by the direct page and the native dialog. */
@font-face { font-family: 'Roboto Condensed'; src: url('assets/roboto-condensed.woff') format('woff'); font-weight: 100 900; font-style: normal; font-display: swap; }
.class-detail-page { background: #edf2f7; color: #102c43; font: 17px/1.5 Abel, sans-serif; }
.class-detail-page > .site-header { position: relative; height: 84px; background: white; }
.class-detail-page .all-courses { margin-left: auto; }
.class-detail-page > main { padding: 32px 24px 64px; }
.class-detail-page > footer { background: white; }
.class-briefing { --text: #102c43; --muted: #5b7084; --red: #df0038; --border: #dbe4ec; --heading: 'Roboto Condensed','Arial Narrow',sans-serif; max-width: 1320px; margin: auto; color: var(--text); background: white; font: 17px/1.5 Abel, sans-serif; text-align: left; }
.class-briefing :is(h1,h2,h3) { font-family: var(--heading); font-weight: 650; }
.class-briefing *, .class-panel * { box-sizing: border-box; }
.class-briefing [hidden], .class-panel [hidden] { display: none !important; }
.class-briefing :is(p,h1,h2,h3,dd,li,a,strong) { overflow-wrap: anywhere; }
.class-briefing :is(p,h1,h2,h3,ul,ol,dl) { margin-top: 0; }
.class-briefing strong { font-weight: 400; }
.class-briefing .eyebrow { font-size: 11px; letter-spacing: .15em; }
.class-briefing :is(a,button,input,summary):focus-visible, .class-panel-toolbar :is(a,button):focus-visible { outline: 3px solid #cc0034; outline-offset: 3px; }
.class-briefing :is(section,[id]) { scroll-margin-top: 70px; }
.class-briefing .button { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 14px 18px; min-height: 48px; border: 0; border-radius: 5px; font: inherit; cursor: pointer; text-align: center; text-decoration: none; }
.class-briefing .button-red { color: white; background: #df0038; box-shadow: 0 5px 16px #df003814; }
.class-briefing .button-red:hover { background: #bd002f; }
.briefing-layout { display: grid; grid-template-columns: minmax(0,1fr) 360px; align-items: start; }
.briefing-intro { grid-column: 1; grid-row: 1; min-width: 0; }
.briefing-hero { min-height: 335px; position: relative; isolation: isolate; overflow: hidden; background: #0c253b; color: white; padding: 38px 36px 60px; }
.briefing-aircraft { position: absolute; z-index: -2; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 70% center; opacity: .64; }
.briefing-hero::after { position: absolute; content: ''; inset: 0; z-index: -1; background: linear-gradient(90deg,#0a2138ed,#0a213889 65%,#0a213838); }
.briefing-hero-copy { max-width: 620px; }
.briefing-hero .eyebrow { color: #d6e3ee; margin-bottom: 25px; }
.briefing-hero h1 { font-size: clamp(36px,4.2vw,66px); line-height: 1.05; letter-spacing: -.025em; color: white; margin-bottom: 16px; }
.briefing-program { font-size: 24px; line-height: 1.25; margin-bottom: 20px; }
.briefing-location { font-size: 16px; color: #edf4fa; margin-bottom: 14px; max-width: 440px; }
.briefing-school { display: flex; align-items: center; gap: 10px; color: #c5d5e3; font-size: 13px; margin-bottom: 0; }
.briefing-school img { max-height: 30px; max-width: 100px; object-fit: contain; background: white; border-radius: 3px; padding: 3px; }
.briefing-dates { position: relative; margin: -28px 30px 0; padding: 20px 24px 14px; background: white; border: 1px solid #dbe4ec; border-left: 3px solid #df0038; border-radius: 7px; box-shadow: 0 6px 18px #102c430b; display: grid; grid-template-columns: minmax(0,1fr) 70px minmax(0,1fr); gap: 12px; align-items: center; }
.briefing-dates > div:last-of-type { text-align: right; }
.briefing-dates > div > span { display: block; font-size: 10px; letter-spacing: .16em; color: #5b7084; margin-bottom: 3px; }
.briefing-dates strong { display: block; font: 600 clamp(18px,2vw,26px)/1.2 var(--heading,Abel,sans-serif); text-transform: uppercase; }
.briefing-dates > p { grid-column: 1/-1; text-align: center; font-size: 14px; color: #5b7084; margin-bottom: 0; }
.briefing-route { display: flex; align-items: center; gap: 6px; }
.briefing-route::before,.briefing-route::after { content: ''; flex: 1; border-top: 1px dashed #98aabb; }
.briefing-route svg { width: 23px; height: 23px; fill: #102c43; transform: rotate(90deg); }
.briefing-content { grid-column: 1; grid-row: 2; min-width: 0; padding: 12px 36px 40px; }
.class-briefing .class-section-nav { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; position: sticky; top: 0; background: #fffffffa; z-index: 3; border-bottom: 1px solid #dbe4ec; padding: 10px 0; }
.class-briefing .class-section-nav a { font-size: 15px; padding: 9px 0; color: #526b81; border-bottom: 2px solid transparent; text-decoration: none; }
.class-briefing .class-section-nav a:hover,.class-briefing .class-section-nav a[aria-current] { color: #102c43; border-color: #df0038; }
.briefing-quick-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; padding-top: 26px; }
.briefing-quick-facts a { border: 1px solid #e7edf3; background: #f3f6fa; border-radius: 6px; padding: 15px; text-decoration: none; color: #102c43; }
.briefing-quick-facts a:hover { border-color: #b6c8d9; }
.briefing-quick-facts a > span { display: block; font-size: 27px; line-height: 1; margin-bottom: 12px; }
.briefing-quick-facts svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.briefing-quick-facts strong { display: block; font-size: 16px; margin-bottom: 6px; }
.briefing-quick-facts small { display: block; font-size: 13px; line-height: 1.45; color: #536d84; }
.class-briefing .detail-section { padding: 32px 0; border-bottom: 1px solid #dbe4ec; }
.class-briefing .detail-section:last-child { border-bottom: 0; }
.class-briefing .section-marker { display: flex; justify-content: space-between; color: #526c83; font-size: 10px; letter-spacing: .13em; margin-bottom: 10px; }
.class-briefing h2 { font-size: 34px; line-height: 1.13; letter-spacing: -.02em; margin-bottom: 18px; }
.class-briefing h3 { font-size: 22px; line-height: 1.25; margin-bottom: 12px; }
.class-briefing .detail-section p { color: #536a7e; white-space: pre-line; font-size: 17px; line-height: 1.6; }
.class-briefing .detail-subheading { margin-top: 26px; }
.class-briefing .program-image { margin: 20px 0; }
.class-briefing .program-image img { width: 100%; max-height: 340px; object-fit: cover; border-radius: 5px; }
.class-briefing .outcome-list { list-style: none; padding: 0; margin-bottom: 0; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px 18px; }
.class-briefing .outcome-list li { display: flex; gap: 10px; color: #536a7e; }
.class-briefing .outcome-list li > span { color: #df0038; }
.class-briefing .syllabus-route { list-style: none; padding: 0; margin: 22px 0 0; }
.class-briefing .syllabus-route li { display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 16px; position: relative; padding-bottom: 22px; }
.class-briefing .syllabus-route li:not(:last-child)::before { content: ''; position: absolute; top: 34px; bottom: 0; left: 16px; border-left: 1px dashed #b5c7d7; }
.class-briefing .syllabus-stop { display: grid; place-items: center; align-self: start; width: 34px; height: 34px; font-size: 13px; border: 1px solid #ccdbe7; border-radius: 50%; color: #102c43; }
.class-briefing .syllabus-route li p { margin: 0; padding: 3px 0 12px; border-bottom: 1px solid #e8eef3; }
.class-briefing summary { cursor: pointer; font-size: 17px; color: #102c43; padding: 10px 0; }
.class-briefing summary::marker { color: #df0038; }
.class-briefing .schedule-summary { display: flex; justify-content: space-between; gap: 15px; padding: 20px; border: 1px solid #dbe4ec; background: #f6f8fb; }
.class-briefing .schedule-summary .eyebrow { display: block; }
.class-briefing .schedule-summary strong { font-size: 22px; }
.class-briefing .schedule-path { color: #df0038; align-self: center; }
.class-briefing .schedule-notes { margin: 16px 0; }
.class-briefing .schedule-notes p { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 20px; margin: 6px 0; font-size: 15px; }
.class-briefing .schedule-notes strong { color: #102c43; }
.class-briefing .schedule-disclosure { border-block: 1px solid #dbe4ec; }
.class-briefing .schedule-disclosure > summary { padding: 16px 0; }
.class-briefing .calendar { padding-bottom: 20px; }
.class-briefing .calendar-grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 3px; }
.class-briefing .calendar-grid > div { min-width: 0; padding: 6px; background: #f1f5f9; font-size: 11px; }
.class-briefing .calendar-grid .session { background: #e6eff6; }
.class-briefing .calendar-grid .holiday { background: #fff1d0; }
.class-briefing .calendar-grid .day-head { background: #102c43; color: white; }
.class-briefing .calendar-grid :is(strong,span) { display: block; }
.class-briefing .schedule-list { display: none; }
.class-briefing .schedule-row { display: flex; justify-content: space-between; gap: 15px; padding: 12px 0; border-bottom: 1px solid #dbe4ec; font-size: 15px; }
.class-briefing .class-logistics { margin-bottom: 0; }
.class-briefing .class-logistics > div { display: grid; grid-template-columns: 110px minmax(0,1fr); gap: 14px; padding: 9px 0; border-bottom: 1px solid #edf2f6; }
.class-briefing .class-logistics dt { color: #5b7084; }
.class-briefing .class-logistics dd { margin: 0; }
.class-briefing .approval-list article { display: flex; align-items: start; gap: 18px; padding: 14px 0; }
.class-briefing .approval-seal { font-size: 14px; min-width: 40px; padding-top: 3px; color: #df0038; }
.class-briefing .approval-list p { font-size: 15px; margin-bottom: 0; }
.class-briefing .approval-list h3 { font-size: 20px; }
.class-briefing .class-faqs details { border-bottom: 1px solid #dbe4ec; }
.class-briefing .class-faqs p { padding: 12px 0; }
.class-briefing .class-sidebar { grid-column: 2; grid-row: 1/3; min-width: 0; border-left: 1px solid #dbe4ec; position: sticky; top: min(20px,calc(100dvh - var(--sidebar-height,1000px) - 20px)); background: white; }
.briefing-price { padding: 26px; background: #0c293f; color: white; }
.briefing-price > strong { display: block; font-size: 53px; line-height: 1.1; margin: 8px 0; color: white; }
.briefing-price > p { font-size: 15px; margin-bottom: 0; color: #dbe6ef; }
.class-briefing .departure-enrollment { padding: 22px 25px; border-bottom: 1px solid #e1e8ef; }
.class-briefing .departure-enrollment-counts { display: block; border: 0; padding-top: 0; }
.class-briefing .departure-confirmed { font-size: 16px; margin-bottom: 8px; }
.class-briefing .departure-confirmed > strong { font-size: 26px; }
.class-briefing .departure-availability { display: flex; flex-wrap: wrap; gap: 7px 12px; align-items: baseline; justify-content: flex-start; font-size: 15px; margin-bottom: 16px; }
.class-briefing .departure-waitlist { border-left: 1px solid #bbc6d1; padding-left: 12px; color: #875805; }
.class-briefing .departure-availability > strong { color: #102c43; }
.class-briefing .departure-meter-legend { display: flex; flex-wrap: wrap; gap: 6px 12px; font-size: 12px; margin: 0; }
.class-briefing .departure-interest-total { font-size: 12px; margin: 0; color: #52677c; }
.class-briefing .departure-seat-note { margin-top: 15px; }
.class-briefing .departure-seat-note > strong { font-size: 18px; }
.class-briefing .departure-seat-note p { font-size: 14px; line-height: 1.45; }
.class-briefing .class-reserve { padding: 25px; }
.class-briefing .class-reserve h2 { font-size: 29px; margin: 20px 0 12px; }
.class-briefing .reserve-intro { font-size: 15px; color: #536a7e; margin-bottom: 16px; }
.class-briefing .class-reserve > p:not(.reserve-intro) { font-size: 14px; }
.class-briefing .class-reserve > p a { text-decoration: underline; }
.class-briefing .enrollment-steps-mini { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #667d90; }
.class-briefing .enrollment-steps-mini > span { display: flex; gap: 8px; }
.class-briefing .enrollment-steps-mini .current { color: #be0030; }
.class-briefing .enrollment-steps-mini i { border-top: 1px dashed #b0c1d0; width: 25px; }
.class-briefing .form-name-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.class-briefing .field { min-width: 0; margin-bottom: 13px; }
.class-briefing .field label { display: block; font-size: 14px; margin-bottom: 6px; }
.class-briefing .field label > span { color: #5b7084; }
.class-briefing .field input { font: inherit; font-size: 16px; width: 100%; min-width: 0; min-height: 43px; border: 1px solid #bdcddd; background: #fcfdff; color: #102c43; border-radius: 4px; padding: 9px 10px; }
.class-briefing .privacy-notice h3 { font-size: 15px; margin: 16px 0 8px; }
.class-briefing .privacy-text { max-height: 85px; overflow: auto; font-size: 13px; line-height: 1.5; color: #526a7f; white-space: pre-line; border: 1px solid #e2e9ef; padding: 9px; }
.class-briefing .privacy-check { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; margin: 16px 0; }
.class-briefing .privacy-check input { flex: 0 0 17px; width: 17px; height: 17px; margin-top: 3px; accent-color: #df0038; }
.class-briefing .reserve-submit { width: 100%; }
.class-briefing .reserve-note { color: #60788d; font-size: 13px; margin: 12px 0 0; }
.class-briefing .validation-summary { border-left: 3px solid #df0038; padding: 16px; background: #fff0f3; margin: 14px 0; font-size: 15px; }
.class-briefing .validation-summary ul { padding-left: 16px; margin-bottom: 0; }
.class-briefing .class-messages { padding: 18px; }
.briefing-closed { padding: 20px 25px; color: #9f1738; font-size: 16px; }
.class-briefing .mobile-cta { display: none; }
/* Modal shell owns scrolling, focus and browser history; the article is unchanged. */
.class-panel { width: min(1320px,calc(100vw - 56px)); height: min(1080px,calc(100dvh - 48px)); max-width: none; max-height: none; padding: 0; border: 0; border-radius: 12px; color: #102c43; background: white; overflow: hidden; box-shadow: 0 25px 100px #00142666; }
.class-panel[open] { display: flex; flex-direction: column; }
.class-panel::backdrop { background: #051b32a6; backdrop-filter: blur(4px); }
.class-panel-toolbar { display: flex; align-items: center; gap: 18px; flex-shrink: 0; min-height: 52px; padding: 8px 20px; border-bottom: 1px solid #dbe4ec; font: 14px Abel,sans-serif; background: white; }
.class-panel-toolbar button { display: inline-flex; align-items: center; min-height: 36px; color: #102c43; background: transparent; border: 0; font: inherit; cursor: pointer; text-decoration: none; }
.class-panel-toolbar .class-panel-close { margin-left: auto; font-size: 26px; width: 36px; justify-content: center; }
.class-panel-scroll { overflow: auto; overscroll-behavior: contain; flex: 1; min-height: 0; scrollbar-gutter: stable; }
.class-panel .class-briefing { min-height: 100%; }
.class-panel .class-sidebar { top: min(15px,calc(100dvh - var(--sidebar-height,1000px) - 100px)); }
.class-panel-loading { display: grid; place-items: center; min-height: 240px; padding: 30px; font: 20px Abel,sans-serif; color: #536a7e; }
.class-panel-loading span { border-top: 2px solid #df0038; padding-top: 20px; }
html.class-panel-open { overflow: hidden; scrollbar-gutter: stable; }
@media (max-width:1100px) {
  .briefing-layout { grid-template-columns: minmax(0,1fr) 320px; }
  .briefing-hero { padding: 30px 25px 55px; }
  .briefing-content { padding-inline: 25px; }
  .briefing-dates { margin-inline: 20px; padding-inline: 16px; grid-template-columns: minmax(0,1fr) 35px minmax(0,1fr); }
  .briefing-quick-facts { grid-template-columns: 1fr 1fr; }
  .briefing-quick-facts a:last-child:nth-child(3) { grid-column: 1/-1; }
  .briefing-quick-facts a > span { display: none; }
}
@media (max-width:800px) {
  .class-detail-page > .site-header { padding: 0 20px; height: 72px; gap: 15px; }
  .class-detail-page .portal-link { display: none; }
  .class-detail-page .all-courses { font-size: 14px; white-space: nowrap; }
  .class-detail-page > main { padding: 0 0 80px; }
  .briefing-layout { grid-template-columns: minmax(0,1fr); }
  .briefing-intro { grid-column: 1; grid-row: 1; }
  .briefing-content { grid-column: 1; grid-row: 3; padding: 0 24px; }
  .class-briefing .class-sidebar { display: contents; }
  .briefing-ticket { grid-row: 2; padding: 18px 24px 0; }
  .briefing-price { display: none; }
  .class-briefing .departure-enrollment { padding: 18px 0; }
  .class-briefing .departure-confirmed > strong { font-size: 24px; }
  .class-briefing .departure-seat-note { padding: 12px; }
  .class-briefing .class-reserve { grid-column: 1; grid-row: 4; padding: 28px 24px 105px; border-top: 1px dashed #bdcddd; }
  .briefing-hero { min-height: 285px; padding: 30px 24px 55px; }
  .briefing-hero h1 { font-size: 44px; }
  .briefing-program { font-size: 21px; }
  .briefing-location { font-size: 15px; }
  .briefing-dates { margin-inline: 24px; gap: 10px; }
  .class-briefing .class-section-nav { gap: 14px; flex-wrap: wrap; }
  .class-briefing .class-section-nav a { font-size: 14px; }
  .class-briefing h2 { font-size: 30px; }
  .class-briefing .outcome-list { grid-template-columns: 1fr; }
  .class-briefing .calendar-grid { display: none; }
  .class-briefing .schedule-list { display: block; }
  .class-briefing .schedule-row { flex-wrap: wrap; }
  .class-briefing .mobile-cta { position: fixed; display: flex; align-items: center; justify-content: space-between; gap: 15px; bottom: 0; left: 0; right: 0; z-index: 10; padding: 12px 20px max(12px,env(safe-area-inset-bottom)); background: #fffffff5; border-top: 1px solid #dbe4ec; box-shadow: 0 -8px 30px #102c430a; }
  .class-briefing .mobile-cta > span { font-size: 26px; line-height: 1.1; }
  .class-briefing .mobile-cta small { display: block; font-size: 9px; letter-spacing: .1em; margin-bottom: 5px; }
  .class-briefing .mobile-cta a { background: #df0038; color: white; font-size: 16px; padding: 13px 16px; border-radius: 5px; text-decoration: none; }
  .class-panel { width: 100vw; height: 100dvh; max-width: 100%; margin: 0; border-radius: 0; }
  .class-panel-toolbar { padding: 8px 14px; gap: 10px; }
  .class-panel .mobile-cta { position: absolute; }
  .class-panel-scroll { scrollbar-gutter: auto; padding-bottom: 80px; }
  .briefing-closed { padding-inline: 0; }
}
@media (max-width:360px) {
  .briefing-hero h1 { font-size: 36px; }
  .briefing-dates { margin-inline: 16px; padding-inline: 12px; grid-template-columns: minmax(0,1fr) 24px minmax(0,1fr); }
  .briefing-content,.briefing-ticket,.class-briefing .class-reserve { padding-inline: 18px; }
  .class-briefing .form-name-row { grid-template-columns: 1fr; gap: 0; }
}
@media (prefers-reduced-motion:reduce) {
  .class-briefing *, .class-panel { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
