/* mySKIES2 · UI Guide 1.3.4. Legacy files retain layout/functional states only.
   The page stylesheet is intentionally imported in portal-legacy by layout.php. */
@layer portal-legacy, portal-clean;
@layer portal-clean {
  .portal-ui :where(*), .portal-ui :where(*)::before, .portal-ui :where(*)::after {
    font-family: inherit; font-size: inherit; font-weight: inherit; line-height: inherit;
    letter-spacing: normal; text-transform: none; text-shadow: none;
    box-shadow: none; backdrop-filter: none; background-image: none;
    background-color: transparent; color: inherit;
    border-color: var(--sk-border-subtle); border-radius: var(--sk-radius-control);
  }
  .portal-ui :where(a, button):hover { transform: none; box-shadow: none; }
}
:root {
  --skies-navy: var(--sk-brand-navy); --skies-aviation-blue: var(--sk-brand-aviation);
  --skies-technical-blue: var(--sk-brand-technical); --skies-carbon-grey: var(--sk-brand-carbon);
  --bg: var(--sk-bg-page); --bg-soft: var(--sk-bg-subtle); --panel: var(--sk-bg-surface);
  --panel-border: var(--sk-border-subtle); --text: var(--sk-text-primary);
  --heading: var(--sk-text-heading); --muted: var(--sk-text-secondary);
  --accent: var(--sk-brand-technical); --accent-2: var(--sk-brand-aviation);
  --success: var(--sk-status-success-text); --warning: var(--sk-status-warning-text);
  --danger: var(--sk-status-error-text); --shadow: none;
}
html { font-size:100%; scroll-padding-top:96px; }
body.portal-ui { margin:0; background:var(--sk-bg-page); color:var(--sk-text-primary); font:400 1rem/1.5 var(--sk-font-body); font-synthesis:none; caret-color:auto; }
.portal-ui *, .portal-ui *::before, .portal-ui *::after { box-sizing:border-box; }
.portal-ui [hidden], .portal-ui .is-hidden { display:none !important; }
.portal-ui h1 { font:700 2rem/2.5rem var(--sk-font-heading); color:var(--sk-text-heading); letter-spacing:-.02em; margin:0 0 12px; }
.portal-ui h2 { font:600 1.5rem/2rem var(--sk-font-heading); color:var(--sk-text-heading); margin:0 0 8px; }
.portal-ui h3 { font:600 1.25rem/1.75rem var(--sk-font-heading); color:var(--sk-brand-aviation); margin:0 0 8px; }
.portal-ui h4 { font:600 1rem/1.5rem var(--sk-font-heading); color:var(--sk-text-heading); }
.portal-ui p { margin:8px 0 0; font:400 1rem/1.5rem var(--sk-font-body); }
.portal-ui strong, .portal-ui b { font-weight:600; }
.portal-ui small { font-size:.875rem; line-height:1.25rem; }
.portal-ui :is(h1,h2,h3,p,dd,strong,span,a) { overflow-wrap:anywhere; }
.portal-ui img { max-width:100%; height:auto; object-fit:contain; }
.portal-ui a { color:var(--sk-link); }
.portal-ui p a { text-decoration:underline; text-underline-offset:3px; }
.portal-ui :is(a,button,summary):focus-visible { outline:3px solid var(--sk-focus-ring); outline-offset:2px; box-shadow:0 0 0 2px var(--sk-focus-gap); }
.portal-ui :is(h1,h2,h3,main)[tabindex="-1"]:focus:not(:focus-visible) { outline:none; box-shadow:none; }
.portal-ui .sk-icon-holder { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; flex:0 0 20px; font-style:normal; color:inherit; vertical-align:middle; }
.portal-ui .sk-icon-holder::before, .portal-ui .sk-icon-holder::after { content:none !important; }
.portal-ui .sk-icon-holder svg { display:block; width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2; }
.portal-ui .fa-spin svg { animation:portal-spin 1s linear infinite; }
@keyframes portal-spin { to { transform:rotate(360deg); } }

/* Desktop shell: persistent labelled navigation. Compact rail is not used here. */
.portal-shell.is-authenticated { display:grid; grid-template-columns:248px minmax(0,1fr); min-height:100svh; background:var(--sk-bg-page); }
.portal-ui .portal-sidebar.panel { position:sticky; top:0; z-index:var(--sk-z-sticky); height:100svh; min-height:0; display:flex; flex-direction:column; gap:24px; padding:24px 16px; overflow-y:auto; border:0; border-radius:0; background:var(--sk-brand-navy); color:var(--sk-text-inverse); }
.portal-sidebar::before,.portal-sidebar::after { content:none; }
.sidebar-brand-block { display:flex; flex-direction:column; align-items:flex-start; gap:16px; padding:8px 12px 16px; border:0; background:none; }
.sidebar-brand-mark { display:block; width:86px; height:auto; min-height:0; flex:none; border:0; border-radius:0; background:none; }
.sidebar-brand-copy { display:flex; flex-direction:column; gap:4px; }
.sidebar-brand-copy .sidebar-brand-badge { display:none; }
.sidebar-brand-copy strong { color:white; font:600 1.25rem/1.75rem var(--sk-font-heading); margin:0; }
.sidebar-brand-copy small { color:var(--sk-neutral-300); font-size:.875rem; line-height:1.25rem; }
.sidebar-nav { display:grid; gap:4px; margin:0; }
.sidebar-nav-item, .sidebar-logout-link { display:flex; position:relative; gap:8px; align-items:center; min-height:44px; padding:11px 12px; border:1px solid transparent; border-radius:8px; background:transparent; font:600 .875rem/1.25rem var(--sk-font-heading); transform:none; text-decoration:none; transition:background-color 120ms var(--sk-ease),color 120ms var(--sk-ease); }
.portal-ui .sidebar-nav-item, .portal-ui .sidebar-logout-link { color:var(--sk-text-inverse); }
.portal-ui .sidebar-nav-item:hover,.portal-ui .sidebar-nav-item.is-active,.portal-ui .sidebar-logout-link:hover { background:var(--sk-brand-aviation); color:var(--sk-text-inverse); transform:none; }
.sidebar-nav-item.is-active::before { content:""; position:absolute; top:10px; bottom:10px; left:0; width:3px; background:white; border-radius:0; }
.portal-sidebar :is(a,button,input):focus-visible,.portal-mobile-header :is(a,button):focus-visible { outline-color:var(--sk-brand-technical); box-shadow:0 0 0 2px var(--sk-brand-navy); }
.sidebar-nav-alert { display:inline-flex; align-items:center; justify-content:center; min-width:24px; min-height:24px; margin-left:auto; padding:4px 6px; background:white; color:var(--sk-brand-navy); font:600 .75rem/1rem var(--sk-font-heading); border-radius:999px; animation:none; }
.sidebar-footer { display:grid; gap:12px; margin-top:auto; padding-top:16px; border-top:1px solid var(--sk-neutral-700); }
.sidebar-user-card { display:flex; gap:12px; align-items:center; padding:0 8px; border:0; }
.sidebar-user-avatar { width:40px; height:40px; display:grid; place-items:center; flex:none; border-radius:999px; background:var(--sk-brand-aviation); color:white; font:600 .875rem/1.25rem var(--sk-font-heading); }
.sidebar-user-meta { min-width:0; }
.sidebar-user-meta strong { color:white; font-size:.875rem; }
.sidebar-user-meta span { color:var(--sk-neutral-300); font-size:.75rem; }
.portal-ui .portal-sidebar .sidebar-signature { display:grid; justify-items:center; gap:3px; padding-top:3px; color:var(--sk-neutral-300); font-size:11px; text-align:center; }
.portal-toast-preference { display:flex; align-items:center; gap:8px; min-height:44px; font-size:.75rem; line-height:1rem; color:var(--sk-neutral-300); }
.portal-toast-preference input { width:20px; height:20px; flex:none; accent-color:var(--sk-brand-aviation); }
.portal-main { padding:32px; min-width:0; }
.portal-main.with-sidebar { background:var(--sk-bg-page); }
.portal-content { width:100%; max-width:1280px; margin-inline:auto; }
.portal-content > :is(section,div) { max-width:100%; min-width:0; }
.portal-mobile-header { display:none; }
.portal-skip-link { position:fixed; z-index:900; top:8px; left:16px; padding:12px 16px; background:white; transform:translateY(-160%); }
.portal-skip-link:focus { transform:none; }

/* Page headings sit on the canvas. Cards are reserved for actual content. */
.portal-ui :is(.dashboard-page,.account-page,.documents-page,.document-viewer-page,.mandatory-reads-page,.mandatory-read-viewer-page,.support-page,.my-exams-page,.tms-student-page) { display:grid; gap:24px; width:100%; margin:0; }
.portal-ui :is(.dashboard-hero,.account-hero,.documents-hero,.document-viewer-hero,.mandatory-reads-hero,.mandatory-read-viewer-hero,.support-hero,.my-exams-hero) { position:relative; display:flex; flex-wrap:wrap; justify-content:space-between; gap:24px; align-items:center; min-height:0; padding:0 0 24px; margin:0; border:0; border-bottom:1px solid var(--sk-border-subtle); border-radius:0; background:transparent; overflow:visible; }
.portal-ui :is(.dashboard-hero,.account-hero,.documents-hero,.document-viewer-hero,.mandatory-reads-hero,.mandatory-read-viewer-hero,.support-hero,.my-exams-hero)::before,
.portal-ui :is(.dashboard-hero,.account-hero,.documents-hero,.document-viewer-hero,.mandatory-reads-hero,.mandatory-read-viewer-hero,.support-hero,.my-exams-hero)::after { content:none; }
.portal-ui :is(.hero-copy,.account-hero-copy,.documents-hero-copy,.support-hero-copy,.my-exams-hero__copy) { min-width:0; flex:1 1 360px; }
.portal-ui :is(.hero-copy,.account-hero-copy,.documents-hero-copy,.support-hero-copy,.my-exams-hero__copy) p { color:var(--sk-text-secondary); max-width:65ch; }
.portal-ui :is(.hero-kicker,.section-kicker,.login-kicker,.login-card__eyebrow,[class$="-eyebrow"],[class$="__eyebrow"]) { display:inline-flex; align-items:center; gap:8px; width:auto; min-height:0; padding:0; margin:0 0 8px; border:0; border-radius:0; background:none; color:var(--sk-brand-aviation); font:500 .875rem/1.25rem var(--sk-font-body); letter-spacing:normal; text-transform:none; }
.portal-ui :is(.hero-kicker,.section-kicker) > .sk-icon-holder { display:none; }
.portal-ui :is(.documents-hero-icon,.my-exams-hero__icon) { display:none; }
.portal-ui .my-exams-hero__identity { flex:1 1 340px; }
.portal-ui .my-exams-hero__summary { display:flex; flex-wrap:wrap; gap:24px; }
.portal-ui .my-exams-hero-stat { padding:0; border:0; min-width:0; gap:8px; }
.portal-ui .my-exams-hero-stat strong { display:block; font-size:.875rem; }
.portal-ui .my-exams-hero-stat small { color:var(--sk-text-secondary); }

/* Surfaces and secondary metadata. No repeated tinted card-inside-card shells. */
.portal-ui :is(.panel,.support-panel,.exam-assignment,.exam-empty-state,.exam-workspace-panel,.tms-landing,.tms-workspace,.tms-post-training-panel,.tms-form-card,.tms-side-card,.tms-empty-card,.tms-landing-summary-card,.document-folder-card,.folder-card,.mandatory-reads-section) { background:var(--sk-bg-surface); border:1px solid var(--sk-border-subtle); border-radius:12px; box-shadow:none; }
.portal-ui :is(.dashboard-card,.account-card,.support-panel,.exam-empty-state,.exam-workspace-panel,.tms-post-training-panel,.tms-form-card,.tms-side-card,.tms-empty-card,.tms-landing-summary-card,.document-folder-card,.folder-card,.mandatory-reads-section) { padding:24px; }
.portal-ui :is(.section-head,.account-card-header,.support-section-head) { margin:0 0 24px; gap:16px; }
.portal-ui :is(.section-head,.account-card-header,.support-section-head) p { color:var(--sk-text-secondary); }
.portal-ui :is([class$="-grid"],[class$="-layout"],[class$="-row"]) { min-width:0; }
.portal-ui :is([class$="-grid"],[class$="-layout"]) > * { min-width:0; }
.portal-ui :is(.hero-profile-card,.account-primary-identity,.account-detail,.discord-current-name,.session-item,.action-item,.exam-summary-stat,.exam-status-card) { border:1px solid var(--sk-border-subtle); background:var(--sk-bg-surface); border-radius:8px; box-shadow:none; }
.portal-ui :is(.hero-profile-card,.account-primary-identity,.account-detail) { padding:16px; }
.portal-ui .hero-profile-card { min-width:170px; gap:12px; }
.portal-ui .hero-profile-card strong { font:600 1rem/1.5rem var(--sk-font-heading); }
.portal-ui :is(.hero-profile-card span,.account-detail dt,.account-field-label,.training-overview-label,.session-meta-row,.documents-status-pill,.my-exams-hero-stat span) { font:400 .875rem/1.25rem var(--sk-font-body); color:var(--sk-text-secondary); text-transform:none; letter-spacing:normal; }
.portal-ui .training-overview-grid { gap:16px; grid-template-columns:repeat(3,minmax(0,1fr)); }
.portal-ui .training-overview-card { padding:24px; gap:16px; align-items:start; }
.portal-ui .training-overview-card strong { font:600 1.25rem/1.75rem var(--sk-font-heading); color:var(--sk-text-heading); }
.portal-ui .training-overview-card p { font-size:.875rem; line-height:1.25rem; color:var(--sk-text-secondary); }
.portal-ui :is(.training-overview-icon,.hero-profile-avatar,.empty-state-icon,.action-icon,.account-primary-identity__icon,.document-folder-icon,.folder-icon) { display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; flex:0 0 40px; border:0; border-radius:8px; background:var(--sk-selection-bg); color:var(--sk-brand-aviation); }
.portal-ui .dashboard-main-grid { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr); gap:24px; align-items:stretch; }
.portal-ui .dashboard-empty-state { padding:24px 0 0; background:none; border:0; border-top:1px solid var(--sk-border-subtle); border-radius:0; }
.portal-ui .dashboard-empty-state strong { display:block; margin-top:12px; color:var(--sk-text-heading); }
.portal-ui .dashboard-empty-state p { color:var(--sk-text-secondary); margin-bottom:16px; }
.portal-ui .action-list { display:grid; gap:12px; }
.portal-ui .action-item { display:flex; gap:12px; padding:16px; align-items:center; text-decoration:none; }
.portal-ui .action-item:hover { border-color:var(--sk-brand-aviation); background:var(--sk-selection-bg); transform:none; }
.portal-ui .action-copy { flex:1; min-width:0; }
.portal-ui .action-copy strong { font:600 .875rem/1.25rem var(--sk-font-heading); color:var(--sk-brand-aviation); }
.portal-ui .action-copy small { display:block; color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); margin-top:8px; }
.portal-ui .session-item { padding:16px; border-left:3px solid var(--sk-brand-aviation); }
.portal-ui .session-item.is-next { background:var(--sk-neutral-25); }
.portal-ui .session-date-block { background:none; color:var(--sk-text-heading); }
.portal-ui .account-identity-layout { grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); gap:24px; }
.portal-ui .account-primary-identity { border:0; background:var(--sk-neutral-25); }
.portal-ui .account-primary-identity__name { font:600 1.5rem/2rem var(--sk-font-heading); color:var(--sk-text-heading); }
.portal-ui .account-detail-grid { gap:16px; }
.portal-ui .account-detail { border:0; border-bottom:1px solid var(--sk-border-subtle); border-radius:0; padding:0 0 12px; }
.portal-ui .account-detail dd { font:400 1rem/1.5rem var(--sk-font-body); color:var(--sk-text-primary); }
.portal-ui :is(.account-primary-identity__meta,.folder-detail-intro,.document-meta,.support-ticket-preview,.tms-landing-copy p) { color:var(--sk-text-secondary); }

/* Shared controls: one primary per existing action group. */
.portal-ui :is(button,.btn-primary,.inline-link,.login-submit,.login-secondary,.support-primary-button,.support-secondary-button,.support-primary-cta,.support-secondary-cta,.tms-download-button,.tms-secondary-link-action,.tms-post-training-primary-action,.document-action,.document-open-link,.folder-open-button,.account-action-button,.discord-action,.exam-primary-action,.exam-secondary-action,.mandatory-read-action,.mandatory-reads-layout-alert__cta,.discord-membership-warning__cta) {
  display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px;
  padding:11px 16px; border:1px solid var(--sk-brand-aviation); border-radius:8px;
  background:var(--sk-bg-surface); color:var(--sk-brand-aviation); font:600 .875rem/1.25rem var(--sk-font-heading);
  box-shadow:none; text-shadow:none; text-decoration:none; white-space:normal; cursor:pointer;
  transition:background-color 120ms var(--sk-ease),color 120ms var(--sk-ease),border-color 120ms var(--sk-ease);
}
.portal-ui :is(button,.inline-link,.login-secondary,.support-secondary-button,.support-secondary-cta,.tms-download-button,.tms-secondary-link-action,.exam-secondary-action):hover { background:var(--sk-action-secondary-hover-bg,var(--sk-selection-bg)); color:var(--sk-link-hover); transform:none; }
.portal-ui :is(button,.inline-link,.login-secondary):active { background:var(--sk-action-subtle-active); color:var(--sk-brand-navy); }
.portal-ui :is(button[type="submit"],.btn-primary,.login-submit,.support-create-trigger,.support-primary-cta,.support-primary-button,.exam-primary-action,.tms-post-training-primary-action,.tms-attendance-confirm-button,.tms-attendance-dialog-primary,[data-exam-confirm-trigger]) { background:var(--sk-action-primary-bg); color:var(--sk-action-primary-text); border-color:var(--sk-action-primary-border); }
.portal-ui :is(button[type="submit"],.btn-primary,.login-submit,.support-create-trigger,.support-primary-cta,.support-primary-button,.exam-primary-action,.tms-post-training-primary-action,.tms-attendance-confirm-button,.tms-attendance-dialog-primary,[data-exam-confirm-trigger]):hover { background:var(--sk-action-primary-hover); color:white; }
.portal-ui :is(button[type="submit"],.btn-primary,.login-submit,.support-create-trigger,.support-primary-cta,.support-primary-button,.exam-primary-action,.tms-post-training-primary-action,.tms-attendance-confirm-button,.tms-attendance-dialog-primary,[data-exam-confirm-trigger]):active { background:var(--sk-action-primary-active); color:white; }
.portal-ui :is([data-support-close-create],[data-support-close-archive],[data-exam-confirm-cancel],[data-tms-attendance-confirm-cancel],.sk-picker-close,.portal-dialog-close) { border-color:transparent; background:transparent; color:var(--sk-brand-aviation); }
.portal-ui :is(.support-icon-button,.exam-icon-button,.sk-picker-close,.portal-dialog-close) { width:44px; min-width:44px; height:44px; padding:11px; flex:none; }
.portal-ui :is(.account-deletion-dialog-confirm,.account-deletion-confirm-button,[data-account-deletion-submit]) { background:var(--sk-status-error-border); color:white; border-color:var(--sk-status-error-border); }
.portal-ui :is(button:disabled,[aria-disabled="true"],input:disabled,select:disabled,textarea:disabled) { background:var(--sk-neutral-100); color:var(--sk-neutral-600); border-color:var(--sk-neutral-300); opacity:1; cursor:not-allowed; box-shadow:none; }
.portal-ui :is(button,a) > :is(i,svg) { color:inherit; }
.portal-ui :where(input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),textarea,select) { min-height:44px; max-width:100%; width:100%; padding:9px 12px; border:1px solid var(--sk-border-control); border-radius:8px; background:white; color:var(--sk-text-primary); font:400 1rem/1.5rem var(--sk-font-body); box-shadow:none; }
.portal-ui textarea { min-height:120px; resize:vertical; }
.portal-ui :is(input,textarea)::placeholder { color:var(--sk-text-secondary); opacity:1; }
.portal-ui :is(input,textarea,select):focus { border-color:var(--sk-brand-aviation); outline:3px solid var(--sk-focus-ring); outline-offset:2px; box-shadow:0 0 0 2px white; }
.portal-ui :is(input,textarea)[readonly] { background:var(--sk-bg-subtle); }
.portal-ui [aria-invalid="true"] { border-color:var(--sk-status-error-border); }
.portal-ui :is(input[type="checkbox"],input[type="radio"]) { width:20px; height:20px; min-width:20px; accent-color:var(--sk-brand-aviation); flex:none; }
.portal-ui :is(.field-group,.support-form label,.exam-alternative-row label) { display:flex; flex-direction:column; gap:8px; font:600 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui :is(.login-form,.support-form,.tms-form-card form) { display:grid; gap:24px; }
.portal-ui :is(.sk-help,[class$="-help"],[class$="-error"]) { font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui [class$="-error"] { color:var(--sk-status-error-text); }

/* Badges use the same text, geometry and semantic colours throughout. */
.portal-ui :is([class$="-badge"],[class*="-badge "],[class$="-pill"],[class*="-pill "],.session-status,.exam-status,.exam-status-pill,.tms-status-pill,.documents-status-pill) { display:inline-flex; align-items:center; gap:4px; width:fit-content; max-width:100%; min-height:26px; padding:4px 8px; border:1px solid var(--sk-status-neutral-border); border-radius:999px; background:var(--sk-status-neutral-bg); color:var(--sk-status-neutral-text); font:600 .75rem/1rem var(--sk-font-heading); white-space:normal; }
.portal-ui :is(.account-status-badge--active,.is-completed,.is-closed,.is-approved,.discord-state-badge--available,.soft-badge--active,.is-success):not(article):not(section):not(button):not(a) { --sk-tone-bg:var(--sk-status-success-bg); --sk-tone-text:var(--sk-status-success-text); --sk-tone-border:var(--sk-status-success-border); }
.portal-ui :is(.is-pending,.is-warning,.account-status-badge--hold,.discord-state-badge--locked,.is-awaiting_student_response) { --sk-tone-bg:var(--sk-status-warning-bg); --sk-tone-text:var(--sk-status-warning-text); --sk-tone-border:var(--sk-status-warning-border); }
.portal-ui :is(.is-error,.is-failed,.is-rejected) { --sk-tone-bg:var(--sk-status-error-bg); --sk-tone-text:var(--sk-status-error-text); --sk-tone-border:var(--sk-status-error-border); }
.portal-ui :is([class$="-badge"],[class*="-badge "],[class$="-pill"],[class*="-pill "],.session-status) { background:var(--sk-tone-bg,var(--sk-status-neutral-bg)); color:var(--sk-tone-text,var(--sk-status-neutral-text)); border-color:var(--sk-tone-border,var(--sk-status-neutral-border)); }
.portal-ui :is(.flash,.support-flash,.login-alert,.discord-setup-required-card,.mandatory-reads-layout-alert,.discord-membership-warning,.documents-access-notice) { padding:16px; border:1px solid var(--sk-status-info-border); border-radius:8px; background:var(--sk-status-info-bg); color:var(--sk-status-info-text); box-shadow:none; }
.portal-ui :is(.flash-error,.support-flash-error,.login-alert-error) { background:var(--sk-status-error-bg); color:var(--sk-status-error-text); border-color:var(--sk-status-error-border); }
.portal-ui :is(.flash-success,.support-flash-success,.login-alert-success) { background:var(--sk-status-success-bg); color:var(--sk-status-success-text); border-color:var(--sk-status-success-border); }
.portal-ui :is(.flash-warning,.support-flash-warning,.login-alert-warning,.discord-membership-warning,.mandatory-reads-layout-alert) { background:var(--sk-status-warning-bg); color:var(--sk-status-warning-text); border-color:var(--sk-status-warning-border); }
.portal-ui :is(.discord-membership-warning-slot,.mandatory-reads-alert-slot):not([hidden]) { margin-bottom:24px; }
.portal-ui .mandatory-reads-layout-alert__body strong { color:inherit; }

/* Documents, reads, reports and exams. Keep scrolling within the viewer/table. */
.portal-ui :is(.documents-folder-grid,.folder-grid) { gap:24px; }
.portal-ui :is(.document-folder-card,.folder-card) { display:flex; flex-direction:column; gap:16px; }
.portal-ui :is(.document-folder-card,.folder-card):hover { transform:none; }
.portal-ui :is(.document-frame,.document-preview-frame,iframe) { width:100%; border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; }
.portal-ui :is(.document-frame,.document-preview-frame) { min-height:60svh; }
.portal-ui table { width:100%; border-collapse:collapse; background:white; color:var(--sk-text-primary); font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui :is(th,td) { padding:12px 16px; text-align:left; border-bottom:1px solid var(--sk-border-subtle); }
.portal-ui th { background:var(--sk-bg-subtle); color:var(--sk-text-heading); font-weight:600; }
.portal-ui :is(.table-wrap,.table-responsive,.table-scroll,.document-table-wrap) { max-width:100%; overflow:auto; }
.portal-ui :is(.exam-empty-state,.support-empty-state,.tms-empty-state,.mandatory-reads-empty-state) { text-align:left; min-height:0; }
.portal-ui .exam-assignment > summary { padding:24px; list-style:none; min-height:44px; }
.portal-ui summary { font:600 .875rem/1.25rem var(--sk-font-heading); cursor:pointer; min-height:44px; }
.portal-ui summary::-webkit-details-marker { display:none; }
.portal-ui .exam-assignment[open] > summary { border-bottom:1px solid var(--sk-border-subtle); border-radius:12px 12px 0 0; }
.portal-ui .exam-assignment > summary:hover { background:var(--sk-selection-bg); }
.portal-ui :is(.exam-month-tab,.support-ticket-view-button) { min-height:44px; padding:11px 16px; border:0; border-bottom:3px solid transparent; border-radius:0; background:none; color:var(--sk-brand-aviation); font:600 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui :is(.exam-month-tab.is-active,.support-ticket-view-button.is-active) { border-bottom-color:var(--sk-brand-aviation); color:var(--sk-brand-navy); background:none; }
.portal-ui :is(.exam-range-option,.discord-name-option,.account-discord-option) { padding:12px 16px; min-height:44px; border:1px solid var(--sk-border-control); border-radius:8px; background:white; color:var(--sk-text-primary); }
.portal-ui :is(.exam-range-option.is-selected,.discord-name-option.is-selected,.account-discord-option.is-selected,.tms-decision-button.is-selected) { background:var(--sk-selection-bg); border-color:var(--sk-selection-border); color:var(--sk-selection-text); }
.portal-ui :is(.exam-calendar-day,.exam-day-button) { min-height:44px; min-width:44px; }
.portal-ui .exam-alternative-row { display:grid; grid-template-columns:minmax(0,1.3fr) repeat(2,minmax(0,1fr)) auto; gap:16px; align-items:end; }
.portal-ui :is(.tms-landing-hero,.tms-workspace-hero,.tms-post-training-hero) { padding:24px; background:white; border:1px solid var(--sk-border-subtle); border-radius:12px; color:var(--sk-text-primary); }
.portal-ui :is(.tms-landing-hero,.tms-workspace-hero,.tms-post-training-hero)::before,.portal-ui :is(.tms-landing-hero,.tms-workspace-hero,.tms-post-training-hero)::after { content:none; }
.portal-ui :is(.tms-landing-countdown,.tms-live-timer,.tms-timer) { background:var(--sk-neutral-25); border:1px solid var(--sk-border-subtle); border-radius:8px; color:var(--sk-text-heading); font-variant-numeric:tabular-nums; padding:16px; }
.portal-ui :is(.tms-workspace-grid,.tms-post-training-grid,.tms-landing-grid) { gap:24px; }
.portal-ui :is(.tms-check-item,.tms-progress-item,.tms-item-card,.tms-post-training-summary-item) { padding:16px; border-color:var(--sk-border-subtle); background:white; border-radius:8px; }
.portal-ui :is(.tms-check-item.is-passed,.tms-post-training-pass-item) { background:var(--sk-status-success-bg); color:var(--sk-status-success-text); }
.portal-ui :is(.tms-check-item.is-failed,.tms-post-training-fail-item) { background:var(--sk-status-error-bg); color:var(--sk-status-error-text); }

/* Dialogs are anchored to the visible viewport, not to a scrolled card. */
.portal-ui dialog { width:min(560px,calc(100% - 32px)); max-width:none; max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); margin:auto; padding:24px; border:1px solid var(--sk-border-subtle); border-radius:16px; background:white; color:var(--sk-text-primary); box-shadow:var(--sk-shadow-overlay); overflow:auto; }
.portal-ui dialog::backdrop { background:var(--sk-overlay); backdrop-filter:none; }
.portal-ui .support-modal { position:fixed; inset:0; z-index:var(--sk-z-dialog); display:none; align-items:center; justify-content:center; padding:16px; overflow:auto; background:var(--sk-overlay); backdrop-filter:none; }
.portal-ui .support-modal.is-open { display:flex; }
.portal-ui .support-modal-backdrop { position:absolute; inset:0; background:transparent; backdrop-filter:none; }
.portal-ui .support-modal-card { position:relative; margin:auto; width:min(560px,100%); max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); overflow-y:auto; border-radius:16px; background:white; box-shadow:var(--sk-shadow-overlay); }
.portal-ui :is(.support-modal-actions,.exam-confirm-dialog__actions,.account-deletion-dialog-actions) { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; margin-top:24px; }
.portal-ui .support-modal-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; }
.portal-ui .support-ticket-menu-panel { position:absolute; z-index:var(--sk-z-menu); border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; box-shadow:var(--sk-shadow-raised); padding:4px; }
.portal-ui .support-ticket-menu-panel button { border:0; width:100%; text-align:left; justify-content:flex-start; }
.portal-ui .support-message { padding:16px; border:1px solid var(--sk-border-subtle); border-radius:12px; background:white; }
.portal-ui .support-message.is-staff { background:var(--sk-selection-bg); border-left:3px solid var(--sk-brand-aviation); }

/* Authentication / onboarding keep the same backend forms and states. */
.portal-ui .portal-shell.is-guest { min-height:100svh; background:var(--sk-bg-page); }
.portal-ui .portal-shell.is-guest .portal-main { padding:0; }
.portal-ui .login-shell { min-height:100svh; display:grid; place-items:center; background:var(--sk-bg-page); padding:calc(32px + env(safe-area-inset-top)) 16px calc(32px + env(safe-area-inset-bottom)); }
.portal-ui .login-shell::before,.portal-ui .login-shell::after,.portal-ui .login-panel::before,.portal-ui .login-panel::after { content:none; }
.portal-ui .login-panel { display:block; width:100%; max-width:480px; padding:0; margin:0; }
.portal-ui .login-card-wrap { width:100%; max-width:none; }
.portal-ui .login-chip { display:flex; justify-content:center; padding:20px; border:0; border-radius:12px 12px 0 0; background:var(--sk-brand-navy); color:white; margin:0; }
.portal-ui .login-chip img { width:86px; height:auto; }
.portal-ui .login-card { width:100%; padding:32px; border-radius:0 0 12px 12px; border:1px solid var(--sk-border-subtle); background:white; box-shadow:none; }
.portal-ui .login-card__header { margin:0 0 24px; }
.portal-ui .login-card__header h1 { font-size:2rem; line-height:2.5rem; }
.portal-ui .login-card__header p { color:var(--sk-text-secondary); }
.portal-ui :is(.login-submit,.login-secondary) { width:100%; min-height:44px; }
.portal-ui .login-divider { margin:20px 0; color:var(--sk-text-secondary); }
.portal-ui .login-accordion { border:0; padding:0; }
.portal-ui .login-accordion__body { height:auto; opacity:1; overflow:visible; padding:0; transition:none; }
.portal-ui .login-accordion__inner { padding:24px 0 0; }
.portal-ui .login-footer-note { margin-top:24px; color:var(--sk-text-secondary); font-size:.875rem; line-height:1.25rem; }
.portal-ui .login-footer-note a { color:var(--sk-brand-aviation); }
.portal-ui :is(.discord-onboarding-card,.discord-setup-card,.account-deletion-card) { background:white; border:1px solid var(--sk-border-subtle); border-radius:12px; padding:24px; }
.portal-ui .portal-main.onboarding-main { min-height:100svh; background:var(--sk-bg-page); }

/* Shared pickers: only the canonical field is submitted. */
.sk-picker-control { display:block; position:relative; min-width:0; width:100%; }
.portal-ui .sk-picker-canonical { position:absolute !important; width:1px !important; height:1px !important; min-height:0 !important; padding:0 !important; margin:0 !important; clip-path:inset(50%) !important; overflow:hidden !important; pointer-events:none !important; }
.portal-ui .sk-picker-trigger { display:flex; justify-content:space-between; gap:12px; text-align:left; width:100%; min-height:44px; padding:9px 12px; border:1px solid var(--sk-border-control); background:white; color:var(--sk-text-primary); font:400 1rem/1.5rem var(--sk-font-body); }
.sk-picker-chevron,.sk-picker-check { display:flex; flex:none; color:var(--sk-brand-aviation); }
.sk-picker-chevron svg,.sk-picker-check svg { width:20px; height:20px; }
.sk-suite-picker { position:fixed; z-index:450; display:flex; flex-direction:column; margin:0; padding:0; border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; color:var(--sk-text-primary); box-shadow:var(--sk-shadow-raised); overflow:hidden; font:400 1rem/1.5rem var(--sk-font-body); }
.sk-picker-head { display:flex; align-items:center; justify-content:space-between; flex:none; gap:12px; padding:8px 12px; border-bottom:1px solid var(--sk-border-subtle); background:white; }
.sk-picker-head strong { font:600 .875rem/1.25rem var(--sk-font-heading); color:var(--sk-text-heading); }
.sk-picker-search { margin:12px; width:calc(100% - 24px) !important; flex:none; }
.sk-picker-options { min-height:0; overflow-y:auto; padding:4px; overscroll-behavior:contain; }
.portal-ui .sk-picker-option { display:flex; justify-content:space-between; width:100%; min-height:44px; padding:11px 12px; border:1px solid transparent; background:white; color:var(--sk-text-primary); font:400 1rem/1.5rem var(--sk-font-body); text-align:left; }
.portal-ui .sk-picker-option:hover { background:var(--sk-selection-bg); }
.portal-ui .sk-picker-option.is-focused { outline:3px solid var(--sk-focus-ring); outline-offset:-3px; }
.portal-ui .sk-picker-option[aria-selected="true"] { background:var(--sk-selection-bg); color:var(--sk-selection-text); border-color:var(--sk-selection-border); }
.portal-ui .sk-picker-option:disabled { background:var(--sk-bg-subtle); color:var(--sk-text-secondary); }
.sk-picker-group { padding:12px; color:var(--sk-text-secondary); font:600 .875rem/1.25rem var(--sk-font-heading); }
.sk-picker-empty { padding:16px; }
.sk-picker-footer { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:8px; padding:12px; border-top:1px solid var(--sk-border-subtle); flex:none; background:white; }
.sk-picker-error { display:block; margin-top:8px; color:var(--sk-status-error-text); font:400 .875rem/1.25rem var(--sk-font-body); }
.sk-date-body { padding:16px; overflow-y:auto; min-height:0; overscroll-behavior:contain; }
.sk-date-typed,.sk-time-typed { display:flex; flex-direction:column; gap:8px; margin-bottom:16px; font:600 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui .sk-time-typed input { font:600 1.5rem/2rem var(--sk-font-heading); text-align:center; font-variant-numeric:tabular-nums; }
.sk-date-navigation { display:flex; align-items:center; justify-content:space-between; gap:4px; margin-bottom:8px; }
.sk-date-navigation strong { font:600 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui .sk-date-year { width:68px; padding:9px 8px; }
.sk-date-grid { display:grid; grid-template-columns:repeat(7,44px); justify-content:center; }
.sk-date-weekday { text-align:center; padding:8px 0; color:var(--sk-text-secondary); font-size:.75rem; }
.portal-ui .sk-date-day { width:44px; min-width:44px; min-height:44px; border:1px solid transparent; padding:8px; background:white; color:var(--sk-text-primary); }
.portal-ui .sk-date-day[aria-current="date"] { text-decoration:underline; text-underline-offset:4px; }
.portal-ui .sk-date-day[aria-pressed="true"] { border-color:var(--sk-brand-aviation); background:var(--sk-selection-bg); color:var(--sk-brand-navy); }
.portal-ui .sk-date-day.is-outside { color:var(--sk-text-secondary); }
.portal-ui .sk-date-day:disabled { color:var(--sk-text-secondary); background:var(--sk-bg-subtle); }
.portal-ui .sk-date-day:hover:not(:disabled) { background:var(--sk-selection-bg); }

/* Map the actual portal templates, including populated and restricted states. */
.portal-ui .portal-content :is(.dashboard-hero,.account-hero,.documents-hero,.document-viewer-hero,.mandatory-reads-hero,.mandatory-read-viewer-hero,.support-hero,.my-exams-hero,.tms-student-hero,.portal-training-heading) { padding:0 0 24px; border:0; border-bottom:1px solid var(--sk-border-subtle); border-radius:0; background:transparent; }
.portal-ui .portal-content :is(.document-viewer-hero,.mandatory-read-viewer-hero) { display:flex; flex-direction:column; align-items:stretch; gap:16px; }
.portal-ui :is(.support-kicker,.my-read-card__kicker,.mandatory-reads-badge) { display:inline-flex; gap:8px; margin:0 0 8px; padding:0; border:0; background:none; color:var(--sk-brand-aviation); font:500 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui :is(.tms-landing-card,.tms-post-training-landing,.tms-live-workspace,.exam-assignment-card,.account-card--identity,.documents-folder-section,.documents-folder-detail,.my-reads-section,.my-read-card,.published-document-item,.login-card)::before,
.portal-ui :is(.tms-landing-card,.tms-post-training-landing,.tms-live-workspace,.document-viewer-hero,.login-card,.discord-setup-logo)::after,
body.portal-ui::before,body.portal-ui::after { content:none; }
.portal-ui :is(.documents-stage-panel)::after { content:none; }
.portal-ui :is(.account-button,.btn-secondary,.document-folder-action,.documents-folder-close,.report-action-button,.document-viewer-back,.document-viewer-download,.document-viewer-primary-action,.mandatory-read-back,.my-read-card__action,.tms-scheduler-button,.tms-primary-action,.tms-secondary-action,.exam-primary-button,.exam-secondary-button,.exam-danger-button,.discord-action-button,.discord-setup-logout,.account-deletion-logoff) { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:11px 16px; border:1px solid var(--sk-brand-aviation); border-radius:8px; background:white; color:var(--sk-brand-aviation); font:600 .875rem/1.25rem var(--sk-font-heading); text-decoration:none; box-shadow:none; white-space:normal; transition:background-color 120ms var(--sk-ease),border-color 120ms var(--sk-ease),color 120ms var(--sk-ease); }
.portal-ui :is(.account-button,.btn-secondary,.document-folder-action,.documents-folder-close,.report-action-button,.document-viewer-back,.document-viewer-download,.document-viewer-primary-action,.mandatory-read-back,.my-read-card__action,.tms-secondary-action,.exam-secondary-button,.discord-action-button,.discord-setup-logout,.account-deletion-logoff):hover { background:var(--sk-action-subtle-hover); color:var(--sk-action-subtle-hover-text); border-color:var(--sk-action-subtle-hover-text); }
.portal-ui :is(.account-button,.document-folder-action,.my-read-card__action,.exam-secondary-button):active { background:var(--sk-action-subtle-active); color:var(--sk-brand-navy); }
.portal-ui :is(.account-button--primary,.tms-scheduler-button,.tms-primary-action,.exam-primary-button,.discord-action-button.btn-primary) { background:var(--sk-action-primary-bg); color:white; }
.portal-ui :is(.account-button--primary,.tms-scheduler-button,.tms-primary-action,.exam-primary-button,.discord-action-button.btn-primary):hover { background:var(--sk-action-primary-hover); color:white; border-color:var(--sk-action-primary-border); }
.portal-ui :is(.account-button--primary,.tms-scheduler-button,.tms-primary-action,.exam-primary-button,.discord-action-button.btn-primary):active { background:var(--sk-action-primary-active); color:white; border-color:var(--sk-action-primary-active-border); }
.portal-ui :is(.account-button--danger,.exam-danger-button,[data-account-deletion-submit]) { background:var(--sk-action-danger-bg); border-color:var(--sk-action-danger-bg); color:white; }
.portal-ui :is(.account-button--danger,.exam-danger-button,[data-account-deletion-submit]):hover { background:var(--sk-action-danger-hover); border-color:var(--sk-action-danger-hover); color:white; }
.portal-ui :is(.account-button--danger,.exam-danger-button,[data-account-deletion-submit]):active { background:var(--sk-action-danger-active); border-color:var(--sk-action-danger-active); color:white; }
.portal-ui :is(.documents-folder-section,.documents-folder-detail,.document-viewer-empty,.my-reads-section,.my-reads-empty,.mandatory-read-confirm,.my-exams-empty,.exam-work-card,.exam-detail-card,.exam-guidance-card,.tms-report-card,.tms-signature-card,.tms-overview-card,.discord-setup-panel,.discord-setup-flow) { padding:24px; background:white; border:1px solid var(--sk-border-subtle); border-radius:12px; box-shadow:none; }
.portal-ui :is(.my-reads-section,.documents-folder-section) .my-reads-empty { border:0; padding:16px 0; }
.portal-ui :is(.documents-empty-state,.document-preview-unavailable,.support-empty,.my-exams-empty) { display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:16px; text-align:left; min-height:0; padding:24px; }
.portal-ui :is(.documents-empty-icon,.document-preview-unavailable-icon,.document-viewer-file-icon,.my-reads-empty__icon,.my-read-card__icon,.my-exams-empty__icon,.support-empty-icon,.support-ticket-icon,.exam-side-card-head__icon,.tms-landing-hero-icon,.tms-landing-panel-icon,.tms-live-section-icon,.discord-panel-icon) { width:40px; height:40px; min-width:40px; min-height:40px; display:flex; align-items:center; justify-content:center; border:0; border-radius:8px; background:var(--sk-selection-bg); color:var(--sk-brand-aviation); }
.portal-ui :is(.documents-section-head,.my-reads-section__head,.document-folder-title-row,.document-viewer-toolbar) { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:16px; margin-bottom:16px; }
.portal-ui :is(.documents-folder-grid,.documents-content-grid) { grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:24px; }
.portal-ui .document-folder-action { align-self:flex-start; margin-top:auto; }
.portal-ui :is(.training-report-item,.published-document-item,.my-read-card,.support-ticket-row) { padding:16px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; }
.portal-ui :is(.published-document-item,.my-read-card,.support-ticket-row):hover { border-color:var(--sk-brand-aviation); box-shadow:none; transform:none; }
.portal-ui .my-read-card { display:grid; grid-template-columns:40px minmax(0,1fr) auto; gap:16px; margin:16px 0 0; }
.portal-ui .my-read-card__action { align-self:center; }
.portal-ui :is(.document-folder-body p,.document-folder-meta,.my-read-card__meta,.document-viewer-summary,.support-ticket-date,.support-ticket-facts) { color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .mandatory-reads-hero__counts { display:flex; gap:24px; }
.portal-ui .mandatory-reads-hero__counts > div { display:grid; gap:4px; padding:0; border:0; background:none; }
.portal-ui .mandatory-reads-hero__counts strong { color:var(--sk-brand-navy); font:600 1.5rem/2rem var(--sk-font-heading); }
.portal-ui .mandatory-reads-hero__counts span { font-size:.875rem; color:var(--sk-text-secondary); }
.portal-ui .mandatory-read-memo { padding:24px; max-width:80ch; margin:auto; font:400 1rem/1.75rem var(--sk-font-body); }
.portal-ui :is(.mandatory-read-pdf-frame,.document-viewer-frame) { display:block; min-height:65svh; border:0; }
.portal-ui .document-viewer { overflow:hidden; padding:0; }
.portal-ui :is(.mandatory-read-confirm form,.mandatory-read-confirmed) { display:flex; flex-wrap:wrap; align-items:center; gap:16px; }
.portal-ui .mandatory-read-confirm form p { flex:1 1 280px; margin:0; }
.portal-ui .mandatory-read-confirmed { color:var(--sk-status-success-text); }

.portal-ui .exam-assignment-card { padding:0; overflow:hidden; }
.portal-ui .exam-assignment-card > summary { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; padding:24px; list-style:none; }
.portal-ui .exam-assignment-card > summary:hover { background:var(--sk-selection-bg); }
.portal-ui .exam-assignment-card[open] > summary { border-bottom:1px solid var(--sk-border-subtle); }
.portal-ui .exam-assignment-body { padding:24px; }
.portal-ui :is(.exam-workspace,.exam-layout) { gap:24px; }
.portal-ui .exam-work-card { margin-bottom:24px; }
.portal-ui :is(.exam-work-card,.exam-detail-card) :is(label,form) { min-width:0; }
.portal-ui .exam-day-button { min-width:64px; border-color:var(--sk-border-control); color:var(--sk-brand-aviation); }
.portal-ui .exam-day-button strong { font:600 1.5rem/2rem var(--sk-font-heading); }
.portal-ui .exam-day-button.is-active { background:var(--sk-selection-bg); color:var(--sk-selection-text); border-color:var(--sk-selection-border); }
.portal-ui .exam-day-button::before { content:none; }
.portal-ui .exam-range-option { display:flex; align-items:center; gap:12px; }
.portal-ui :is(.exam-range-option,.discord-name-option) input[type="radio"] { position:static; width:20px; height:20px; opacity:1; pointer-events:auto; }
.portal-ui :is(.exam-range-option__selector,.discord-name-option-marker) { display:none; }
.portal-ui .discord-name-option { display:flex; align-items:flex-start; gap:12px; }
.portal-ui .discord-name-option:has(input:checked) { background:var(--sk-selection-bg); border-color:var(--sk-selection-border); }
.portal-ui :is(.exam-range-option,.discord-name-option):has(input:focus-visible) { outline:3px solid var(--sk-focus-ring); outline-offset:2px; }
.portal-ui .exam-range-option__copy { flex:1; min-width:0; }
.portal-ui .exam-range-list { grid-template-columns:1fr; }
.portal-ui .exam-progress { padding:16px 0; gap:16px; }
.portal-ui .exam-progress li { background:none; }
.portal-ui .exam-progress li::after { background:var(--sk-border-subtle); }
.portal-ui .exam-progress li.is-complete::after { background:var(--sk-brand-aviation); }
.portal-ui :is(.exam-progress-icon,.exam-progress__icon) { background:var(--sk-bg-subtle); color:var(--sk-text-secondary); border:1px solid var(--sk-border-subtle); border-radius:8px; }
.portal-ui .exam-progress :is(.is-current,.is-complete) :is(.exam-progress-icon,.exam-progress__icon) { background:var(--sk-selection-bg); color:var(--sk-brand-aviation); }
.portal-ui .exam-progress__marker { background:var(--sk-bg-subtle); color:var(--sk-text-secondary); border:1px solid var(--sk-border-subtle); border-radius:8px; }
.portal-ui .exam-progress li:is(.is-active,.is-complete) .exam-progress__marker { background:var(--sk-selection-bg); color:var(--sk-brand-aviation); }
.portal-ui .exam-progress__copy small { white-space:normal; font-size:.75rem; line-height:1rem; opacity:1; color:var(--sk-text-secondary); }
.portal-ui .exam-assignment-layout { padding:24px; gap:24px; }
.portal-ui :is(.exam-disclosure,.support-reply-disclosure) { border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; }
.portal-ui :is(.exam-disclosure,.support-reply-disclosure) > summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px; list-style:none; }
.portal-ui :is(.exam-disclosure__body,.support-reply-disclosure__body,.login-accordion__body) { display:block; height:auto; opacity:1; visibility:visible; overflow:visible; transition:none; }
.portal-ui :is(.exam-disclosure__body,.support-reply-disclosure__inner) { padding:16px; border-top:1px solid var(--sk-border-subtle); }
.portal-ui .support-reply-form { padding:0; }
.portal-ui :is(.exam-disclosure__chevron,.support-reply-disclosure__chevron),.portal-ui .login-secondary--staff::after { transition:transform 180ms var(--sk-ease); }
.portal-ui summary[aria-expanded="false"] :is(.exam-disclosure__chevron,.support-reply-disclosure__chevron) { transform:rotate(0); }
.portal-ui summary[aria-expanded="true"] :is(.exam-disclosure__chevron,.support-reply-disclosure__chevron) { transform:rotate(180deg); }
.portal-ui .exam-alternative-row label > span:first-child,.portal-ui form > label,.portal-ui .account-deletion-dialog__confirmation label { font:600 .875rem/1.25rem var(--sk-font-heading); }

.portal-ui :is(.support-ticket-control-panel,.support-ticket-list-panel) { overflow:visible; }
.portal-ui .support-ticket-control-panel { padding:0; background:none; border:0; border-radius:0; }
.portal-ui .support-ticket-view-controls { display:flex; flex-wrap:wrap; gap:8px; }
.portal-ui .support-ticket-row { display:flex; align-items:center; gap:12px; }
.portal-ui .support-ticket-row::before { content:none; }
.portal-ui .support-ticket-link { display:flex; flex:1; align-items:center; flex-wrap:wrap; min-width:0; gap:16px; padding:0; }
.portal-ui .support-ticket-main { flex:1 1 180px; }
.portal-ui .support-ticket-main > strong { font:600 1rem/1.5rem var(--sk-font-heading); color:var(--sk-brand-aviation); }
.portal-ui .support-ticket-meta { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.portal-ui .support-ticket-menu { position:relative; top:auto; right:auto; transform:none; padding:0; align-self:flex-start; }
.portal-ui .support-ticket-menu-button { width:44px; height:44px; min-width:44px; padding:11px; }
.portal-ui .support-ticket-menu-dropdown { top:calc(100% + 4px); right:0; width:208px; min-width:0; padding:4px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; box-shadow:var(--sk-shadow-raised); transform:translateY(-4px); transition:opacity 180ms var(--sk-ease),transform 180ms var(--sk-ease),visibility 0s linear 180ms; }
.portal-ui .support-ticket-menu.is-open .support-ticket-menu-dropdown { transform:translateY(0); transition-delay:0s; }
.portal-ui .support-ticket-menu-dropdown button { width:100%; justify-content:flex-start; border:0; }
.portal-ui .support-message-bubble { background:transparent; border:0; padding:0; box-shadow:none; }
.portal-ui .support-message-avatar { width:36px; height:36px; min-width:36px; background:var(--sk-selection-bg); color:var(--sk-brand-aviation); border-radius:999px; }
.portal-ui .support-message-body { font:400 1rem/1.5rem var(--sk-font-body); }
.portal-ui .support-message-meta { display:flex; flex-wrap:wrap; gap:8px; font-size:.875rem; color:var(--sk-text-secondary); }
.portal-ui .support-mini-card { padding:16px; background:var(--sk-bg-subtle); border:0; border-radius:8px; }

.portal-ui :is(.tms-landing-card,.tms-live-workspace,.tms-post-training-landing) { padding:24px; }
.portal-ui :is(.tms-landing-shell,.tms-live-shell,.tms-post-training-shell) { display:grid; gap:24px; padding:0; }
.portal-ui :is(.tms-landing-hero,.tms-live-hero,.tms-post-training-hero) { padding:0 0 24px; background:none; border:0; border-bottom:1px solid var(--sk-border-subtle); border-radius:0; }
.portal-ui :is(.tms-landing-panel,.tms-live-modules-card,.tms-live-tasks-card) { padding:24px; border:1px solid var(--sk-border-subtle); border-radius:12px; background:white; }
.portal-ui :is(.tms-landing-content-grid,.tms-live-content-grid) { gap:24px; }
.portal-ui :is(.tms-landing-detail-card,.tms-post-training-meta-card,.tms-live-module-card) { padding:16px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:var(--sk-neutral-25); }
.portal-ui :is(.tms-live-timer-card,.tms-live-control-panel,.tms-landing-readiness) { background:none; border:0; padding:0; }
.portal-ui :is(.tms-live-timer-card .live-timer,.tms-attendance-countdown) { display:block; border:1px solid var(--sk-border-subtle); border-radius:8px; padding:12px 16px; color:var(--sk-brand-navy); font:600 1.5rem/2rem var(--sk-font-heading); font-variant-numeric:tabular-nums; }
.portal-ui .tms-landing-stepper { padding:0; gap:16px; }
.portal-ui .tms-landing-stepper li { gap:12px; padding:12px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; }
.portal-ui .tms-step-marker { display:flex; align-items:center; justify-content:center; width:32px; height:32px; min-width:32px; background:var(--sk-selection-bg); color:var(--sk-brand-aviation); border-radius:8px; }
.portal-ui .tms-landing-stepper li.is-complete .tms-step-marker { background:var(--sk-status-success-bg); color:var(--sk-status-success-text); }
.portal-ui :is(.tms-dispute-panel,.tms-signature-panel) { transition:height 180ms var(--sk-ease),opacity 180ms var(--sk-ease); }
.portal-ui :is(.tms-post-training-dispute-panel,.tms-post-training-signature-panel) { --tms-dispute-panel-padding-block:24px; --tms-signature-panel-padding-block:24px; padding-block:0; transition:height 180ms var(--sk-ease),opacity 180ms var(--sk-ease),transform 180ms var(--sk-ease),padding-top 180ms var(--sk-ease),padding-bottom 180ms var(--sk-ease); }
.portal-ui :is(.tms-post-training-dispute-panel.is-dispute-open,.tms-post-training-signature-panel.is-signature-open) { padding-block:24px; }
.portal-ui :is(.tms-post-training-dispute-panel.is-dispute-closing,.tms-post-training-signature-panel.is-signature-closing) { padding-block:0; }

.portal-ui :is(.documents-profile-notice,.my-exams-state--warning,.exam-guidance-card--warning,.discord-lock-summary,.support-warning,.support-closed-note,.account-deletion-dialog__notice,.tms-attendance-card--pending,.tms-attendance-card--open) { padding:16px; border:1px solid var(--sk-status-warning-border); border-radius:8px; background:var(--sk-status-warning-bg); color:var(--sk-status-warning-text); }
.portal-ui :is(.my-exams-state--info,.exam-guidance-card--info,.exam-guidance-card--action,.tms-landing-info-note,.discord-setup-info-note) { padding:16px; border:1px solid var(--sk-status-info-border); border-radius:8px; background:var(--sk-status-info-bg); color:var(--sk-status-info-text); }
.portal-ui :is(.my-exams-state--danger,.exam-guidance-card--danger,.exam-outcome-panel--fail,.discord-setup-alert,.account-deletion-finalizing) { padding:16px; border:1px solid var(--sk-status-error-border); border-radius:8px; background:var(--sk-status-error-bg); color:var(--sk-status-error-text); }
.portal-ui :is(.exam-guidance-card--success,.exam-confirmed-panel,.exam-outcome-panel--pass,.tms-attendance-card--acknowledged,.discord-setup-alert.is-success) { padding:16px; border:1px solid var(--sk-status-success-border); border-radius:8px; background:var(--sk-status-success-bg); color:var(--sk-status-success-text); }
.portal-ui :is(.is-good,.is-complete,.is-resolved,.is-confirmed,.is-verified) { --sk-tone-bg:var(--sk-status-success-bg); --sk-tone-text:var(--sk-status-success-text); --sk-tone-border:var(--sk-status-success-border); }
.portal-ui :is(.is-action,.support-pill.is-open,.support-update-badge) { --sk-tone-bg:var(--sk-status-info-bg); --sk-tone-text:var(--sk-status-info-text); --sk-tone-border:var(--sk-status-info-border); }
.portal-ui :is(.support-pill,.status-pill,.tms-landing-status-pill,.tms-live-status-pill,.exam-assignment-status,.account-status-badge,.soft-badge) { min-height:32px; padding:4px 8px; background:var(--sk-tone-bg,var(--sk-status-neutral-bg)); color:var(--sk-tone-text,var(--sk-status-neutral-text)); border:1px solid var(--sk-tone-border,var(--sk-status-neutral-border)); border-radius:999px; font:600 .75rem/1rem var(--sk-font-heading); }

.portal-ui .discord-setup-topbar { background:var(--sk-brand-navy); color:white; padding:16px 24px; border:0; border-radius:12px; }
.portal-ui .discord-setup-logo { display:flex; align-items:center; justify-content:center; width:86px; min-width:86px; height:auto; border:0; padding:0; border-radius:0; background:none; }
.portal-ui .discord-setup-logo img { width:86px; }
.portal-ui .discord-setup-brand-copy strong { color:white; }
.portal-ui :is(.discord-motion-visual img,.discord-motion-signal,.discord-verification-orbit,.discord-nickname-animation,.account-deletion-warning__halo) { display:none; }
.portal-ui .discord-motion-visual { display:flex; min-height:0; height:48px; width:48px; margin:0 0 16px; padding:0; }
.portal-ui .discord-motion-state-icon { position:static; width:48px; height:48px; display:flex; justify-content:center; align-items:center; background:var(--sk-selection-bg); color:var(--sk-brand-aviation); border-radius:8px; animation:none; }
.portal-ui :is(.discord-setup-shell,.discord-name-options) { gap:24px; }
.portal-ui :is(.discord-setup-flow,.discord-setup-panel) { min-height:0; }
.portal-ui .discord-step { padding:12px; gap:12px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:white; }
.portal-ui .discord-step.is-active { border-color:var(--sk-brand-aviation); background:var(--sk-selection-bg); }
.portal-ui .discord-flow-progress { background:var(--sk-neutral-100); height:8px; border-radius:999px; }
.portal-ui .discord-flow-progress > span { background:var(--sk-brand-aviation); border-radius:999px; }
.portal-ui .account-deletion-page { width:min(100%,800px); min-height:0; padding:0; gap:24px; }
.portal-ui .account-deletion-brand { display:flex; align-items:center; justify-content:flex-start; padding:16px 24px; border-radius:12px; background:var(--sk-brand-navy); color:white; }
.portal-ui .account-deletion-brand img { width:86px; height:auto; }
.portal-ui .account-deletion-brand small { color:white; font:600 1rem/1.5rem var(--sk-font-heading); }
.portal-ui .account-deletion-warning { padding:24px; border:1px solid var(--sk-border-subtle); border-radius:12px; background:white; }
.portal-ui :is(.account-deletion-warning__status-grid,.account-deletion-dialog__impact) { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr)); gap:16px; margin:24px 0; padding:0; border:0; background:none; }
.portal-ui :is(.account-deletion-warning__status-grid,.account-deletion-dialog__impact) > div { padding:16px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:var(--sk-bg-subtle); }
.portal-ui :is(.account-reactivation,.account-deletion-dialog__shell,.account-deletion-dialog__body,.account-deletion-dialog__confirmation) { padding:0; background:none; border:0; border-radius:0; }
.portal-ui .account-deletion-dialog__input-wrap { padding:0; border:0; background:none; }
.portal-ui .account-deletion-dialog__input-wrap > .sk-icon-holder { display:none; }
.portal-ui .account-deletion-dialog__actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; margin-top:24px; }
.portal-ui .account-reactivation form { display:grid; gap:16px; margin-top:24px; }
.portal-ui .account-deletion-dialog__brand { padding:16px; margin:0 0 24px; background:var(--sk-brand-navy); color:white; border-radius:8px; }
.portal-ui .account-deletion-dialog__orbit { display:none; }
.portal-ui .account-deletion-dialog__brand-mark { width:86px; min-width:86px; min-height:0; height:auto; border:0; border-radius:0; padding:0; background:none; }
.portal-ui .account-deletion-dialog__close { width:44px; height:44px; min-width:44px; padding:11px; border-color:var(--sk-brand-technical); background:var(--sk-brand-aviation); color:white; }
.portal-ui .account-deletion-dialog__surface { border:0; padding:0; border-radius:0; background:none; }
.portal-ui .account-deletion-dialog__brand-lockup { min-width:0; gap:12px; }
.portal-ui .account-deletion-dialog__brand-lockup :is(strong,small) { color:white; }
.portal-ui .account-deletion-dialog__brand-lockup strong { font:600 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui dialog { bottom:auto; margin:0 auto; max-height:calc(var(--portal-visible-height,100dvh) - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); transform:none; }
.portal-ui .support-modal { inset:auto 0; top:var(--portal-visible-top,0px); height:var(--portal-visible-height,100dvh); }
.portal-ui .support-modal-card { max-height:calc(var(--portal-visible-height,100dvh) - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); transform:none; }
.portal-ui .documents-stage-panel:is(.is-entering-folder,.is-entering-folders) { animation:portal-panel-in 180ms var(--sk-ease) both; }
.portal-ui .documents-stage-panel:is(.is-leaving-folder,.is-leaving-folders) { animation:portal-panel-out 180ms var(--sk-ease) both; }
@keyframes portal-panel-in { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
@keyframes portal-panel-out { from { opacity:1; transform:none; } to { opacity:0; transform:translateY(-4px); } }

/* Token-protected TMS report preview is a standalone document, not a second shell. */
.portal-ui .tms-preview-page { width:min(1280px,calc(100% - 64px)); padding:32px 0; gap:24px; }
.portal-ui .tms-preview-topbar { padding:16px 24px; background:var(--sk-brand-navy); color:white; border:0; border-radius:12px; gap:24px; }
.portal-ui .tms-preview-brand { color:white; gap:16px; }
.portal-ui .tms-preview-brand img { width:86px; }
.portal-ui .tms-preview-brand-product strong { font:600 1rem/1.5rem var(--sk-font-heading); color:white; }
.portal-ui .tms-preview-brand-product small { font:400 .875rem/1.25rem var(--sk-font-body); color:var(--sk-neutral-300); }
.portal-ui :is(.tms-preview-back-link,.tms-preview-primary-action,.tms-preview-secondary-action) { display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:11px 16px; border:1px solid var(--sk-brand-aviation); border-radius:8px; background:white; color:var(--sk-brand-aviation); font:600 .875rem/1.25rem var(--sk-font-heading); text-decoration:none; }
.portal-ui .tms-preview-primary-action { background:var(--sk-brand-technical); color:white; }
.portal-ui .tms-preview-primary-action:hover { background:var(--sk-action-primary-hover); }
.portal-ui .tms-preview-secondary-action:hover { background:var(--sk-action-subtle-hover); }
.portal-ui .tms-preview-topbar .tms-preview-back-link { border-color:var(--sk-brand-technical); background:var(--sk-brand-aviation); color:white; }
.portal-ui .tms-preview-panel { padding:24px; border:1px solid var(--sk-border-subtle); border-radius:12px; background:white; }
.portal-ui :is(.tms-preview-workspace,.tms-preview-outcome-main) { gap:24px; }
.portal-ui .tms-preview-outcome::before { content:none; }
.portal-ui :is(.tms-preview-result-card,.tms-preview-facts > div,.tms-preview-module,.tms-preview-note) { padding:16px; border:1px solid var(--sk-border-subtle); border-radius:8px; background:var(--sk-bg-subtle); }
.portal-ui .tms-preview-result-card.is-passed,.portal-ui .tms-preview-item-result.is-pass { background:var(--sk-status-success-bg); color:var(--sk-status-success-text); border-color:var(--sk-status-success-border); }
.portal-ui .tms-preview-result-card.is-failed,.portal-ui .tms-preview-item-result.is-failed { background:var(--sk-status-error-bg); color:var(--sk-status-error-text); border-color:var(--sk-status-error-border); }
.portal-ui .tms-preview-result-copy > strong { font:600 1.5rem/2rem var(--sk-font-heading); }
.portal-ui .tms-preview-progress-track { background:var(--sk-neutral-100); height:8px; }
.portal-ui .tms-preview-progress-track > span { background:var(--sk-brand-aviation); }
.portal-ui .tms-preview-journey-marker { width:32px; height:32px; background:var(--sk-bg-subtle); color:var(--sk-brand-aviation); border:1px solid var(--sk-border-subtle); border-radius:8px; }
.portal-ui .tms-preview-journey-marker::before { content:none; }
.portal-ui .tms-preview-journey li:is(.is-active,.is-complete) .tms-preview-journey-marker { background:var(--sk-selection-bg); color:var(--sk-brand-aviation); }
.portal-ui .tms-preview-journey li::after { background:var(--sk-border-subtle); }
.portal-ui .tms-preview-eyebrow { color:var(--sk-brand-aviation); font:500 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui .tms-preview-sidebar { position:static; }

/* Keep kit toast controls untouched by the portal's legacy button adapter. */
.portal-ui .sk-toast .sk-button { background:var(--sk-btn-bg); color:var(--sk-btn-text); border-color:var(--sk-btn-border); padding:11px 16px; }
.portal-ui .sk-toast .sk-button:hover { background:var(--sk-btn-hover-bg); color:var(--sk-btn-hover-text); border-color:var(--sk-btn-hover-border); }
.portal-ui .sk-toast .sk-button:active { background:var(--sk-btn-active-bg); color:var(--sk-btn-active-text); border-color:var(--sk-btn-active-border); }
.portal-ui .sk-toast .sk-toast__close { padding:11px; }
.portal-ui .sk-toast .sk-toast__message { font:400 .875rem/1.25rem var(--sk-font-body); margin:0; }
.portal-ui .sk-toast .sk-toast__title { font:600 .875rem/1.25rem var(--sk-font-heading); margin:0; }
.portal-ui :is(button:disabled,button:disabled:hover,button:disabled:active,[aria-disabled="true"],input:disabled,select:disabled,textarea:disabled) { background:var(--sk-neutral-100); color:var(--sk-neutral-600); border-color:var(--sk-neutral-300); opacity:1; cursor:not-allowed; box-shadow:none; }

@media(max-width:1199px) {
  .portal-ui .training-overview-card { grid-template-columns:1fr; }
  .portal-ui .dashboard-main-grid { grid-template-columns:minmax(0,1fr); }
}
@media(max-width:1023px) {
  .portal-shell.is-authenticated { grid-template-columns:224px minmax(0,1fr); }
  .portal-main { padding:24px; }
  .portal-ui .training-overview-grid { grid-template-columns:1fr; }
  .portal-ui .training-overview-card { grid-template-columns:40px minmax(0,1fr); }
  .portal-ui .account-identity-layout { grid-template-columns:1fr; }
  .portal-ui :is(.exam-assignment-layout,.tms-landing-content-grid,.tms-live-content-grid,.tms-post-training-review-layout,.tms-report-layout,.discord-setup-shell) { grid-template-columns:1fr; }
  .portal-ui .exam-progress { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portal-ui .exam-progress li::after { display:none; }
  .portal-ui :is(.tms-preview-workspace,.tms-preview-outcome-main) { grid-template-columns:1fr; }
}
@media(max-width:767px) {
  .portal-ui h1,.portal-ui .login-card__header h1 { font-size:1.75rem; line-height:2.25rem; }
  .portal-shell.is-authenticated { display:block; min-height:calc(100svh - 72px); }
  .portal-mobile-header { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:calc(12px + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 12px max(16px,env(safe-area-inset-left)); background:var(--sk-brand-navy); color:white; }
  .portal-mobile-brand { display:flex; align-items:center; gap:12px; text-decoration:none; }
  .portal-ui .portal-mobile-brand { color:white; }
  .portal-mobile-brand img { width:86px; height:auto; }
  .portal-mobile-brand strong { font:600 1rem/1.5rem var(--sk-font-heading); }
  .portal-ui .portal-menu-toggle { color:white; background:var(--sk-brand-aviation); border-color:var(--sk-brand-technical); padding:11px 12px; }
  .portal-ui .portal-sidebar.panel { display:flex; position:static; height:auto; padding:16px; gap:16px; }
  .portal-ui[data-portal-navigation="ready"] .portal-sidebar:not(.is-mobile-open) { display:none; }
  .portal-ui:not([data-portal-navigation="ready"]) .portal-menu-toggle { display:none; }
  .portal-sidebar .sidebar-brand-block { display:none; }
  .sidebar-footer { margin:0; }
  .portal-main { padding:24px 16px calc(24px + env(safe-area-inset-bottom)); }
  .portal-ui :is(.dashboard-page,.account-page,.documents-page,.document-viewer-page,.mandatory-reads-page,.support-page,.my-exams-page,.tms-student-page) { gap:24px; }
  .portal-ui :is(.hero-copy,.account-hero-copy,.documents-hero-copy,.support-hero-copy,.my-exams-hero__copy,.my-exams-hero__identity) { flex-basis:100%; }
  .portal-ui :is(.dashboard-card,.account-card,.support-panel,.exam-empty-state,.exam-workspace-panel,.tms-post-training-panel,.tms-form-card,.tms-side-card,.tms-empty-card,.tms-landing-summary-card,.document-folder-card,.folder-card,.mandatory-reads-section,.login-card) { padding:16px; }
  .portal-ui :is(.dashboard-hero,.account-hero,.documents-hero,.mandatory-reads-hero,.support-hero,.my-exams-hero) { display:flex; flex-direction:column; align-items:stretch; gap:16px; }
  .portal-ui :is(.account-card-header--row,.support-section-head,.documents-section-head) { flex-wrap:wrap; }
  .portal-ui .hero-profile-card { width:100%; }
  .portal-ui :is(.documents-folder-grid,.folder-grid,.account-detail-grid,.tms-workspace-grid,.tms-post-training-grid,.tms-landing-grid,.tms-landing-body,.tms-landing-layout,.tms-post-training-layout) { grid-template-columns:1fr; }
  .portal-ui .exam-alternative-row { grid-template-columns:1fr 1fr; }
  .portal-ui .exam-alternative-row > label:first-child { grid-column:1/-1; }
  .portal-ui .exam-alternative-row > button { grid-column:1/-1; }
  .portal-ui .support-ticket-view-tabs { display:flex; flex-wrap:wrap; }
  .portal-ui .support-modal-card { padding:16px; }
  .portal-ui dialog { padding:16px; }
  .portal-ui :is(.tms-landing-hero,.tms-workspace-hero,.tms-post-training-hero) { padding:16px; }
  .portal-ui .session-item { display:flex; flex-direction:column; align-items:flex-start; gap:12px; }
  .portal-ui .my-exams-hero__summary { gap:16px; }
  .portal-ui :is(.documents-folder-section,.documents-folder-detail,.document-viewer-empty,.my-reads-section,.mandatory-read-confirm,.my-exams-empty,.exam-assignment-layout,.exam-work-card,.exam-detail-card,.exam-guidance-card,.tms-report-card,.tms-signature-card,.tms-overview-card,.discord-setup-panel,.discord-setup-flow,.tms-landing-card,.tms-live-workspace,.tms-post-training-landing,.tms-landing-panel,.tms-live-modules-card,.tms-live-tasks-card,.account-deletion-warning) { padding:16px; }
  .portal-ui .exam-assignment-card > summary { padding:16px; }
  .portal-ui .my-read-card { grid-template-columns:40px minmax(0,1fr); }
  .portal-ui .my-read-card__action { grid-column:1/-1; justify-self:start; }
  .portal-ui .mandatory-read-memo { padding:16px; }
  .portal-ui :is(.support-detail-grid,.tms-landing-detail-grid) { grid-template-columns:1fr; }
  .portal-ui :is(.tms-landing-hero,.tms-live-hero,.tms-post-training-hero) { display:flex; flex-direction:column; align-items:flex-start; padding:0 0 16px; gap:16px; }
  .portal-ui .support-ticket-link { gap:12px; }
  .portal-ui .support-ticket-meta { flex-basis:100%; }
  .portal-ui .discord-setup-topbar { padding:16px; flex-wrap:wrap; }
  .portal-ui .support-message { gap:12px; padding:12px; }
  .portal-ui .exam-range-option { flex-wrap:wrap; }
  .portal-ui .exam-range-option__duration { margin-left:32px; }
  .portal-ui .exam-alternative-row { grid-template-columns:1fr; }
  .portal-ui .exam-alternative-row > * { grid-column:1; }
  .portal-ui .tms-preview-page { width:calc(100% - 32px); padding:calc(16px + env(safe-area-inset-top)) 0 calc(16px + env(safe-area-inset-bottom)); }
  .portal-ui :is(.tms-preview-panel,.tms-preview-topbar) { padding:16px; }
  .portal-ui .tms-preview-topbar { flex-wrap:wrap; }
  .portal-ui .tms-preview-facts { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:375px) {
  /* Seven 44px day targets cannot fit: the equivalent labelled date field remains. */
  .sk-date-calendar { display:none; }
  .sk-date-typed::after { content:"Enter the date as YYYY-MM-DD."; color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); }
  .portal-mobile-brand { gap:8px; }
  .portal-mobile-brand img { width:86px; }
  .portal-mobile-brand strong { font-size:.875rem; }
  .portal-ui .portal-menu-toggle { padding-inline:8px; }
}
@media(prefers-reduced-motion:reduce) {
  .portal-ui *, .portal-ui *::before,.portal-ui *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}
@media(forced-colors:active) {
  .portal-ui :is(button,a,input,select,textarea,summary) { forced-color-adjust:auto; }
  .portal-ui :is(button,[aria-current="page"],[aria-selected="true"]) { border:1px solid ButtonText; }
}
/* Compact portal corrections, shared across desktop and mobile. */
.portal-ui .sidebar-brand-block {flex-direction:row;align-items:center;gap:12px;padding:8px 8px 20px;}
.portal-ui .sidebar-brand-block .sidebar-brand-mark {width:48px;height:auto;flex:0 0 48px;object-fit:contain;}
.portal-ui .sidebar-brand-copy,.portal-ui .portal-brand-text {display:flex;flex-direction:column;gap:0;}
.portal-ui .sidebar-brand-copy strong,.portal-ui .portal-brand-text strong {font-size:14px;line-height:20px;}
.portal-ui .sidebar-brand-copy small,.portal-ui .portal-brand-text small {font-size:12px;line-height:16px;color:var(--sk-text-inverse);opacity:.7;}
.portal-ui .portal-mobile-brand img {width:48px;height:auto;}
.portal-ui .document-folder-card {display:grid;grid-template-columns:40px minmax(0,1fr);grid-template-areas:"icon body" ". action";gap:12px;padding:16px;min-height:0;align-content:start;}
.portal-ui .document-folder-body {display:grid;gap:8px;align-content:start;}
.portal-ui .document-folder-body p {margin:0;}
.portal-ui .document-folder-action {margin:0;justify-self:start;}
.portal-ui .document-folder-title-row h3 {margin:0;font-size:18px;line-height:24px;}
.portal-ui .document-folder-meta {gap:6px;}
.portal-ui .training-report-item {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:16px;min-height:0;}
.portal-ui .training-report-main {display:grid;gap:8px;}
.portal-ui .training-report-title-row h3 {margin:0;font-size:18px;line-height:24px;}
.portal-ui .training-report-meta-grid {display:flex;flex-wrap:wrap;gap:8px 24px;}
.portal-ui .training-report-meta-grid div {display:flex;flex-wrap:wrap;gap:6px;padding:0;border:0;background:transparent;min-height:0;}
.portal-ui .training-report-meta-grid span,.portal-ui .training-report-meta-grid strong {font-size:14px;line-height:20px;}
.portal-ui .training-report-meta-grid span::after {content:":";}
.portal-ui .training-report-actions {display:flex;flex-direction:column;align-items:flex-end;gap:8px;}
.portal-ui .mandatory-read-viewer-page .mandatory-read-confirm {min-height:0;height:auto;padding:16px;}
.portal-ui .mandatory-read-viewer-page .mandatory-read-confirm form,.portal-ui .mandatory-read-confirmed,.portal-ui .mandatory-read-confirm__archived {display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:16px;min-height:0;height:auto;padding:0;border:0;background:transparent;}
.portal-ui .mandatory-read-viewer-page .mandatory-read-confirm form p {flex:1 1 240px;margin:0;min-height:0;}
.portal-ui .mandatory-read-confirm .btn-confirm-read {margin:0;}
.portal-ui .support-message,.portal-ui .support-message.is-staff {display:flex;align-items:flex-start;justify-content:flex-start;width:100%;gap:12px;}
.portal-ui .support-page .support-message-bubble {flex:1 1 0;width:auto;max-width:none;min-width:0;}
.portal-ui .support-message.is-staff .support-message-avatar {order:0;}
.portal-ui .support-message-meta {margin-bottom:8px;}
.portal-ui .support-page .support-thread {padding:16px;gap:12px;}
.portal-ui .support-page .support-ticket-row,.portal-ui .support-page .support-ticket-row:hover {transform:none;animation:none;transition:background-color 180ms ease,border-color 180ms ease;}
.portal-ui .tms-landing-countdown.is-confirm-attendance {background:var(--sk-status-error-bg);border:1px solid var(--sk-status-error-border);color:var(--sk-status-error-text);}
.portal-ui .tms-landing-countdown.is-confirm-attendance :is(strong,span,[data-tms-start-countdown],[data-tms-countdown-label]) {color:var(--sk-status-error-text);}
.portal-ui .portal-inline-notice {position:relative;padding-right:60px;}
.portal-ui .portal-notice-close {position:absolute;right:8px;top:8px;display:grid;place-items:center;width:36px;height:36px;min-height:36px;padding:0;border:0;background:transparent;color:inherit;font-size:24px;line-height:1;cursor:pointer;}
@media(max-width:600px) {
 .portal-ui .training-report-item {grid-template-columns:minmax(0,1fr);gap:12px;}
 .portal-ui .training-report-actions {flex-direction:row;justify-content:space-between;align-items:center;}
 .portal-ui .mandatory-read-confirm .btn-confirm-read {width:100%;}
 .portal-ui .document-folder-card {grid-template-areas:"icon body" "action action";}
 .portal-ui .support-page .support-thread {padding:12px;}
}
/* Account access follows the shared Scheduler layout. */
.portal-ui .portal-login-header {display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px 32px;padding-top:calc(24px + env(safe-area-inset-top));border-bottom:1px solid var(--sk-border-subtle);background:var(--sk-bg-surface);}
.portal-ui .portal-login-header a {display:flex;align-items:center;gap:16px;color:var(--sk-text-heading);text-decoration:none;}
.portal-ui .portal-login-header>span {font-size:14px;color:var(--sk-text-secondary);}
.portal-ui .portal-login-logo {display:block;width:48px;height:24px;background:var(--sk-brand-aviation);mask:url('../ui/sk2-compact-white.png') center/contain no-repeat;}
.portal-ui .portal-login-header strong {border-left:1px solid var(--sk-border-subtle);padding-left:16px;}
.portal-ui .login-shell {display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;gap:clamp(32px,10vw,200px);width:100%;max-width:1440px;min-height:0;margin:auto;padding:24px 32px 48px;}
.portal-ui .portal-login-intro {display:flex;flex-direction:column;justify-content:space-between;gap:64px;min-height:544px;padding:32px;border-radius:12px;background:var(--sk-brand-navy);color:var(--sk-text-inverse);}
.portal-ui .portal-login-intro h2 {color:var(--sk-text-inverse);font-size:24px;line-height:32px;margin:0 0 16px;}
.portal-ui .portal-login-intro p {max-width:340px;margin:0;}
.portal-ui .portal-login-intro ul {display:grid;gap:20px;margin:32px 0 0;padding:0;list-style:none;}
.portal-ui .portal-login-intro li {display:flex;align-items:center;gap:12px;font-size:14px;}
.portal-ui .portal-login-intro li i {color:var(--sk-brand-technical);}
.portal-ui .portal-login-intro>small {border-top:1px solid var(--sk-brand-aviation);padding-top:24px;font-size:12px;}
.portal-ui .login-panel {max-width:448px;margin:24px 0 0;}
.portal-ui .login-card.panel {padding:32px;border-radius:12px;}
.portal-ui .portal-login-hint {font-size:14px;line-height:20px;color:var(--sk-text-secondary);margin:12px 0 0;}
.portal-ui .portal-login-trust {text-align:center;font-size:12px;color:var(--sk-text-secondary);margin:20px 0 0;}
@media(max-width:767px){
 .portal-ui .portal-login-header {padding:calc(16px + env(safe-area-inset-top)) 16px 16px;}
 .portal-ui .portal-login-header>span {display:none;}
 .portal-ui .login-shell {grid-template-columns:minmax(0,1fr);gap:24px;padding:24px 16px calc(32px + env(safe-area-inset-bottom));}
 .portal-ui .login-panel {grid-row:1;margin:0;max-width:448px;justify-self:center;}
 .portal-ui .login-card.panel {padding:24px;}
 .portal-ui .portal-login-intro {min-height:0;gap:32px;padding:24px;max-width:448px;width:100%;justify-self:center;}
}
/* Match Scheduler account-access proportions without the authenticated content cap. */
.portal-ui .portal-shell.is-guest .portal-content {max-width:none;margin:0;}
.portal-ui .portal-login-header {width:100%;min-height:calc(72px + env(safe-area-inset-top));padding:calc(16px + env(safe-area-inset-top)) max(32px,env(safe-area-inset-right)) 16px max(32px,env(safe-area-inset-left));border-radius:0;}
.portal-ui .portal-login-header strong {border-radius:0;font:600 16px/24px var(--sk-font-heading);}
.portal-ui .login-shell {max-width:1440px;grid-template-columns:minmax(260px,.85fr) minmax(0,1.15fr);gap:40px;padding:24px;justify-items:stretch;}
.portal-ui .portal-login-intro {padding:40px 32px;gap:48px;min-height:544px;}
.portal-ui .portal-login-intro>small {border-radius:0;}
.portal-ui .login-panel {width:100%;max-width:448px;justify-self:center;margin:24px 0 0;}
.portal-ui .login-card__header {margin-bottom:28px;}
.portal-ui .login-card__header h1 {margin:0 0 12px;}
.portal-ui .login-card__header p {margin:0;}
.portal-ui .login-divider {display:flex;align-items:center;gap:12px;margin:28px 0;}
.portal-ui .login-divider::before,.portal-ui .login-divider::after {content:"";display:block;position:static;height:1px;flex:1;background:var(--sk-border-subtle);}
.portal-ui .login-secondary--staff {justify-content:space-between;}
.portal-ui .login-secondary--staff::after {content:none;}
.portal-ui .portal-login-staff-label {display:flex;align-items:center;gap:8px;}
.portal-ui .portal-login-chevron {width:16px;height:16px;transition:transform 180ms var(--sk-ease);}
.portal-ui .login-secondary[aria-expanded="true"] .portal-login-chevron {transform:rotate(180deg);}
.portal-ui .login-shell .sk-button {background:var(--sk-btn-bg);border-color:var(--sk-btn-border);color:var(--sk-btn-text);text-decoration:none;box-shadow:none;transform:none;}
.portal-ui .login-shell .sk-button:hover:not([aria-disabled="true"]):not([aria-busy="true"]) {background:var(--sk-btn-hover-bg);border-color:var(--sk-btn-hover-border);color:var(--sk-btn-hover-text);}
.portal-ui .login-shell .sk-button:active:not([aria-disabled="true"]):not([aria-busy="true"]) {background:var(--sk-btn-active-bg);border-color:var(--sk-btn-active-border);color:var(--sk-btn-active-text);}
.portal-ui .login-shell .sk-button[aria-busy="true"] {cursor:progress;}
.portal-ui .login-shell .sk-button[aria-disabled="true"]:not([aria-busy="true"]) {background:var(--sk-disabled-bg);color:var(--sk-disabled-text);border-color:var(--sk-disabled-border);cursor:not-allowed;}
.portal-ui .login-form--staff {gap:20px;}
.portal-ui .portal-login-password {position:relative;display:block;}
.portal-ui .portal-login-password input {padding-right:72px;}
.portal-ui .login-shell .portal-login-reveal {position:absolute;inset:1px 1px 1px auto;width:64px;min-height:0;padding:8px;background:transparent;border:0;border-radius:0 8px 8px 0;outline:none;box-shadow:none;}
.portal-ui .login-shell .portal-login-reveal:hover,.portal-ui .login-shell .portal-login-reveal:active,.portal-ui .login-shell .portal-login-reveal:focus-visible {background:transparent;outline:none;box-shadow:none;}
.portal-ui .account-card--discord {padding:20px;}
.portal-ui .account-card--discord .account-card-header {margin-bottom:16px;}
.portal-ui .discord-overview {display:grid;grid-template-columns:minmax(200px,.6fr) minmax(0,1.4fr);gap:16px;align-items:start;}
.portal-ui .discord-current-name {min-height:0;padding:16px;align-self:start;gap:12px;}
.portal-ui .discord-overview--editable {grid-template-columns:minmax(0,1fr);}
.portal-ui .discord-lock-summary {min-height:0;padding:16px;gap:12px;}
.portal-ui .discord-lock-summary__body {display:grid;gap:8px;}
.portal-ui .discord-lock-summary__body>strong,.portal-ui .discord-lock-summary__body>p {margin:0;}
.portal-ui .discord-lock-summary__eyebrow {display:none;}
.portal-ui .discord-lock-summary__meta {display:flex;flex-wrap:wrap;gap:8px 16px;margin:0;font-size:14px;line-height:20px;}
.portal-ui .discord-lock-summary__meta span {padding:0;min-height:0;}
@media(max-width:1023px){.portal-ui .login-shell{gap:24px;}.portal-ui .portal-login-intro{padding:32px 24px;}.portal-ui .login-card.panel{padding:24px;}}
@media(max-width:767px){
 .portal-ui .portal-login-header{padding-inline:max(16px,env(safe-area-inset-left));}
 .portal-ui .login-shell{display:block;padding:20px 16px calc(32px + env(safe-area-inset-bottom));}
 .portal-ui .portal-login-intro{display:none;}
 .portal-ui .login-panel{margin:0 auto;}
 .portal-ui .login-card.panel{padding:24px 20px;}
 .portal-ui .discord-overview{grid-template-columns:minmax(0,1fr);gap:12px;}
 .portal-ui .account-card--discord{padding:16px;}
}
.portal-ui .tms-landing-countdown.is-attendance-confirmed {
  background:var(--sk-status-success-bg);
  border:1px solid var(--sk-status-success-border);
  color:var(--sk-status-success-text);
}
.portal-ui .tms-landing-countdown.is-attendance-confirmed :is(small,strong,span,i,svg) {
  color:var(--sk-status-success-text);
}
/* Student training: booking, preparation and live session share one layout. */
.portal-ui .tms-student-page {width:100%;max-width:none;gap:24px;}
.portal-ui :is(.tms-landing-card,.tms-live-workspace) {padding:32px;min-height:0;margin:0;border-radius:12px;}
.portal-ui :is(.tms-landing-shell,.tms-live-shell) {width:100%;max-width:none;margin:0;padding:0;}
.portal-ui :is(.tms-landing-hero,.tms-live-hero) {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;padding:0 0 24px;margin:0 0 24px;border-bottom:1px solid var(--sk-border-subtle);}
.portal-ui .tms-landing-hero-icon {display:none;}
.portal-ui :is(.tms-landing-hero-copy,.tms-live-hero-copy) {min-width:0;}
.portal-ui :is(.tms-landing-hero,.tms-live-hero) h1 {margin:12px 0;font:700 32px/40px var(--sk-font-heading);}
.portal-ui :is(.tms-landing-hero,.tms-live-hero) p {max-width:65ch;margin:0;color:var(--sk-text-secondary);}
.portal-ui .tms-landing-meta-row {display:flex;flex-wrap:wrap;align-items:center;gap:12px;}
.portal-ui :is(.tms-landing-status-pill,.tms-live-status-pill,.tms-live-task-count,.tms-live-task-status) {display:inline-flex;align-items:center;justify-content:center;flex:none;gap:8px;height:32px;min-height:32px;min-width:112px;width:max-content;max-width:100%;padding:0 12px;line-height:20px;font-size:12px;font-weight:600;text-align:center;white-space:nowrap;border-radius:999px;}
.portal-ui :is(.tms-landing-status-pill,.tms-live-status-pill)>span:empty {display:none;}
.portal-ui .tms-live-status-pill:is(.status-in_progress,.status-active,.status-started,.status-live,.status-ongoing) {background:var(--sk-status-success-bg);color:var(--sk-status-success-text);border:1px solid var(--sk-status-success-border);}
.portal-ui .tms-landing-readiness {display:grid;gap:4px;padding:12px 16px;border:0;border-left:3px solid var(--sk-brand-technical);background:var(--sk-selection-bg);border-radius:8px;max-width:280px;}
.portal-ui .tms-landing-content-grid {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:24px;align-items:start;}
.portal-ui .tms-landing-panel {padding:20px;min-height:0;border:1px solid var(--sk-border-subtle);border-radius:12px;background:var(--sk-bg-surface);}
.portal-ui .tms-landing-panel-head {margin:0 0 20px;gap:12px;}
.portal-ui .tms-landing-panel-head h3 {margin:0 0 4px;}
.portal-ui .tms-landing-panel-head p {margin:0;font-size:14px;line-height:20px;}
.portal-ui .tms-landing-stepper {display:grid;gap:16px;margin:0;padding:0;}
.portal-ui .tms-landing-stepper li {display:flex;align-items:flex-start;gap:12px;min-height:0;padding:0;border:0;background:transparent;}
.portal-ui .tms-landing-stepper li strong {display:block;margin:0 0 4px;}
.portal-ui .tms-step-marker {width:32px;height:32px;flex:0 0 32px;}
.portal-ui .tms-landing-detail-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.portal-ui .tms-landing-detail-card {min-height:0;padding:0;border:0;background:transparent;display:grid;gap:8px;}
.portal-ui .tms-landing-countdown {display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:20px;padding:16px;min-height:64px;}
.portal-ui .tms-landing-countdown [data-tms-start-countdown] {font:600 20px/28px var(--sk-font-heading);font-variant-numeric:tabular-nums;}
.portal-ui .tms-landing-info-note {margin:24px 0 0;}
.portal-ui .tms-landing-content-grid--empty {grid-template-columns:minmax(0,1fr) minmax(0,1fr);}
.portal-ui .tms-landing-cta-panel {display:flex;flex-direction:column;align-items:flex-start;gap:16px;background:var(--sk-selection-bg);}
.portal-ui .tms-landing-cta-panel :is(h3,p) {margin:0;}
.portal-ui .tms-scheduler-button {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:12px 16px;border-radius:8px;background:var(--sk-action-primary-bg);border:1px solid var(--sk-action-primary-border);color:var(--sk-action-primary-text);text-decoration:none;}
.portal-ui .tms-scheduler-button:hover {background:var(--sk-action-primary-hover);color:var(--sk-action-primary-text);}
.portal-ui .tms-live-control-panel {display:grid;grid-template-columns:1fr;justify-items:end;gap:12px;width:300px;max-width:100%;}
.portal-ui .tms-live-timer-card {display:grid;gap:8px;width:100%;padding:16px;border:1px solid var(--sk-border-subtle);border-radius:8px;background:var(--sk-bg-page);text-align:center;}
.portal-ui .tms-live-timer-card .live-timer {border:0;background:transparent;padding:0;margin:0;font:600 32px/40px var(--sk-font-heading);font-variant-numeric:tabular-nums;letter-spacing:.04em;color:var(--sk-text-heading);}
.portal-ui .tms-live-timer-card.is-running {border-color:var(--sk-brand-aviation);background:var(--sk-selection-bg);}
.portal-ui .tms-live-control-panel .tms-landing-countdown {width:100%;margin:0;min-height:56px;}
.portal-ui .tms-live-content-grid {display:grid;grid-template-columns:minmax(0,1fr);gap:24px;}
.portal-ui .portal-session-guidance {display:flex;align-items:flex-start;gap:16px;padding:20px;background:var(--sk-selection-bg);border:1px solid var(--sk-border-subtle);border-radius:12px;}
.portal-ui .portal-session-guidance h2 {font-size:20px;line-height:28px;margin:0 0 8px;}
.portal-ui .portal-session-guidance p {margin:0;max-width:70ch;}
.portal-ui .tms-live-tasks-card {grid-column:1;min-width:0;padding:20px;border-radius:12px;}
.portal-ui .tms-live-task-empty {padding:16px;min-height:0;}
@media(max-width:767px){
 .portal-ui :is(.tms-landing-card,.tms-live-workspace){padding:20px;}
 .portal-ui :is(.tms-landing-hero,.tms-live-hero,.tms-landing-content-grid,.tms-landing-content-grid--empty){grid-template-columns:minmax(0,1fr);gap:20px;}
 .portal-ui :is(.tms-landing-hero,.tms-live-hero) h1{font-size:28px;line-height:36px;}
 .portal-ui .tms-live-control-panel{width:100%;justify-items:start;}
 .portal-ui .tms-landing-readiness{max-width:none;}
 .portal-ui .tms-landing-cta-panel{grid-row:1;}
 .portal-ui .tms-live-tasks-head{flex-wrap:wrap;}
 .portal-ui :is(.tms-landing-panel,.tms-live-tasks-card,.portal-session-guidance){padding:16px;}
}
/* Read status is identified by colour, an icon and an explicit label. */
.portal-ui :is(.my-reads-section--pending,.my-reads-total--pending) {
 --read-bg:var(--sk-status-warning-bg);--read-border:var(--sk-status-warning-border);--read-text:var(--sk-status-warning-text);
}
.portal-ui :is(.my-reads-section--completed,.my-reads-total--completed) {
 --read-bg:var(--sk-status-success-bg);--read-border:var(--sk-status-success-border);--read-text:var(--sk-status-success-text);
}
.portal-ui .my-reads-section {padding:20px;border-top:3px solid var(--read-border);}
.portal-ui .my-reads-section__head {padding:12px 16px;margin:0 0 20px;background:var(--read-bg);border:0;border-radius:8px;}
.portal-ui .my-reads-section__title :is(h2,i,svg) {color:var(--read-text);}
.portal-ui .my-reads-section__head>span {display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border:1px solid var(--read-border);border-radius:999px;color:var(--read-text);background:var(--sk-bg-surface);font-size:14px;line-height:20px;}
.portal-ui .my-read-card {border-left:3px solid var(--read-border);padding:16px;}
.portal-ui .my-read-card__icon {background:var(--read-bg);color:var(--read-text);}
.portal-ui .my-read-status-row {display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:0 0 8px;}
.portal-ui .my-read-status-pill {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:112px;height:32px;padding:0 12px;border:1px solid var(--read-border);border-radius:999px;background:var(--read-bg);color:var(--read-text);font:600 12px/20px var(--sk-font-body);white-space:nowrap;}
.portal-ui .my-read-format {font-size:12px;line-height:20px;color:var(--sk-text-secondary);}
.portal-ui .my-read-card__body h3 {margin:0 0 12px;}
.portal-ui .my-read-card--pending .my-read-card__action {background:var(--sk-action-primary-bg);border-color:var(--sk-action-primary-border);color:var(--sk-action-primary-text);}
.portal-ui .my-read-card--pending .my-read-card__action:hover {background:var(--sk-action-primary-hover);color:var(--sk-action-primary-text);}
.portal-ui .mandatory-reads-hero__counts>div {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:100px;padding:12px 16px;border:1px solid var(--read-border);border-radius:8px;background:var(--read-bg);}
.portal-ui .mandatory-reads-hero__counts>div :is(strong,span) {color:var(--read-text);}
@media(max-width:600px){
 .portal-ui .my-reads-section{padding:16px;}
 .portal-ui .my-reads-section__head{padding:12px;gap:12px;}
 .portal-ui .my-reads-section__title h2{font-size:20px;line-height:28px;}
 .portal-ui .mandatory-reads-hero__counts{display:flex;gap:12px;flex-wrap:wrap;}
}
.portal-ui .portal-content .mandatory-read-viewer-hero.portal-read-heading {
 display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:24px;
 min-height:0;padding:0 0 20px;margin:0;border:0;border-bottom:1px solid var(--sk-border-subtle);border-radius:0;
}
.portal-ui .portal-read-heading__copy {min-width:0;flex:1;}
.portal-ui .portal-read-heading h1 {margin:0 0 12px;font:700 28px/36px var(--sk-font-heading);overflow-wrap:anywhere;}
.portal-ui .portal-read-heading__meta {display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;color:var(--sk-text-secondary);font:400 14px/20px var(--sk-font-body);}
.portal-ui .portal-read-heading__status {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:112px;height:32px;padding:0 12px;border:1px solid var(--sk-status-warning-border);border-radius:999px;background:var(--sk-status-warning-bg);color:var(--sk-status-warning-text);font:600 12px/20px var(--sk-font-body);}
.portal-ui .portal-read-heading__status.is-completed {background:var(--sk-status-success-bg);border-color:var(--sk-status-success-border);color:var(--sk-status-success-text);}
.portal-ui .portal-read-heading .mandatory-read-back {margin:0;flex-shrink:0;align-self:center;}
@media(max-width:600px){
 .portal-ui .portal-content .mandatory-read-viewer-hero.portal-read-heading{flex-direction:column;align-items:stretch;gap:16px;}
 .portal-ui .portal-read-heading .mandatory-read-back{align-self:flex-start;}
 .portal-ui .portal-read-heading h1{font-size:24px;line-height:32px;}
}
.portal-ui .portal-raster-reader {width:100%;background:var(--sk-bg-page);border-radius:8px;padding:16px;}
.portal-ui .portal-reader-status {margin:0 0 16px;color:var(--sk-text-secondary);font-size:14px;line-height:20px;}
.portal-ui .portal-reader-pages {display:grid;gap:20px;}
.portal-ui .portal-reader-page {margin:0 auto;min-height:600px;width:100%;max-width:1000px;background:var(--sk-bg-surface);border:1px solid var(--sk-border-subtle);border-radius:0;}
.portal-ui .portal-reader-page canvas {display:block;width:100%;height:auto;border-radius:0;}
.portal-ui .portal-reader-page figcaption {padding:8px 12px;text-align:center;font-size:12px;color:var(--sk-text-secondary);}
@media(max-width:600px){.portal-ui .portal-raster-reader{padding:8px;}.portal-ui .portal-reader-page{min-height:360px;}}
.portal-ui .my-reads-pagination {display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--sk-border-subtle);border-radius:0;}
.portal-ui .my-reads-pagination :is(a,button) {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin:0;}
.portal-ui .my-reads-pagination__position {text-align:center;font-size:14px;line-height:20px;color:var(--sk-text-secondary);font-variant-numeric:tabular-nums;}
@media(max-width:420px){.portal-ui .my-reads-pagination{flex-wrap:wrap;}.portal-ui .my-reads-pagination__position{order:-1;flex-basis:100%;}}
.portal-ui .my-reads-title-row {display:flex;align-items:center;gap:12px;}
.portal-ui .my-reads-title-row h1 {margin:0;}
.portal-ui .my-reads-info-button {display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:12px;flex:none;border-color:transparent;background:transparent;color:var(--sk-brand-aviation);}
.portal-ui .my-reads-info-heading {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px;}
.portal-ui .my-reads-info-heading h2 {margin:0;font-size:24px;line-height:32px;}
.portal-ui .my-reads-info-warning {display:flex;align-items:flex-start;gap:12px;padding:16px;margin:16px 0;border:1px solid var(--sk-status-warning-border);border-radius:8px;background:var(--sk-status-warning-bg);color:var(--sk-status-warning-text);}
.portal-ui .my-reads-info-warning>i {flex:none;margin-top:2px;}
.portal-ui .my-reads-info-warning p {margin:8px 0 0;}
.portal-ui .my-reads-info-actions {display:flex;justify-content:flex-end;margin-top:24px;}
.portal-ui .tms-reads-required {display:flex;align-items:flex-start;gap:16px;padding:24px;background:var(--sk-status-warning-bg);border:1px solid var(--sk-status-warning-border);border-radius:12px;color:var(--sk-status-warning-text);}
.portal-ui .tms-reads-required>i {flex:none;margin-top:4px;}
.portal-ui .tms-reads-required h1 {margin:0 0 12px;font-size:24px;line-height:32px;color:var(--sk-status-warning-text);}
.portal-ui .tms-reads-required p {margin:0 0 20px;max-width:65ch;}
@media(max-width:600px){.portal-ui .tms-reads-required{padding:20px;}}
.portal-ui .tms-landing-content-grid {align-items:stretch;}
.portal-ui .tms-landing-content-grid>.tms-landing-panel {align-self:stretch;height:auto;}
.portal-ui .tms-landing-details-panel {display:flex;flex-direction:column;}
.portal-ui .tms-landing-details-panel .tms-landing-countdown {margin-top:auto;}
.portal-ui .tms-landing-details-panel .tms-landing-detail-grid {margin-bottom:20px;}
.portal-ui .tms-landing-cta-panel .tms-scheduler-button {margin-top:auto;}
.portal-ui .tms-attendance-priority__timer {
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.portal-ui .tms-attendance-priority {
  grid-template-columns: minmax(0, 1fr) minmax(200px, .35fr);
  grid-template-areas: "action timer";
  align-items: center;
  gap: 24px;
}
.portal-ui .tms-attendance-priority__timer {
  grid-area: timer;
  align-items: center;
  justify-content: center;
}
.portal-ui .tms-attendance-priority__timer > .tms-landing-countdown {
  flex: 0 1 auto;
  width: 100%;
  max-width: 260px;
  min-height: 104px;
  box-sizing: border-box;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin: 0;
  padding: 16px;
  text-align: center;
  background: var(--sk-bg-subtle);
  border: 1px solid var(--sk-border-subtle);
  border-radius: 8px;
  box-shadow: none;
  color: var(--sk-text-secondary);
}
.portal-ui .tms-attendance-priority__timer > .tms-landing-countdown.is-confirm-attendance {
  background: var(--sk-bg-subtle);
  border: 1px solid var(--sk-border-subtle);
  color: var(--sk-text-secondary);
}
.portal-ui .tms-attendance-priority__timer .tms-landing-countdown small {
  color: var(--sk-text-secondary);
  font-size: .8125rem;
  font-weight: 600;
  line-height: 1.25;
}
.portal-ui .tms-attendance-priority__timer-icon {
  color: var(--sk-brand-aviation);
  font-size: 1rem;
  line-height: 1;
}
.portal-ui .tms-attendance-priority__timer .tms-landing-countdown [data-tms-start-countdown] {
  color: var(--sk-text-heading);
  font-size: 1.25rem;
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  line-height: 1.25;
}
.portal-ui .tms-attendance-priority__action {
  grid-area: action;
  display: flex;
  min-width: 0;
}
.portal-ui .tms-attendance-priority .tms-attendance-card {
  flex: 1 1 auto;
  grid-template-columns: 56px minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-items: start;
  gap: 16px;
  width: 100%;
}
.portal-ui .tms-attendance-priority .tms-attendance-icon {
  width: 48px;
  height: 48px;
  border-radius: 8px;
  background: var(--sk-selection-bg);
  border: 1px solid var(--sk-border-subtle);
  color: var(--sk-brand-aviation);
  font-size: 1rem;
}
.portal-ui .tms-attendance-priority .tms-attendance-copy h3 {
  margin: 0;
  color: var(--sk-text-heading);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.35;
}
.portal-ui .tms-attendance-priority .tms-attendance-copy p {
  max-width: 64ch;
  margin: 8px 0 0;
  color: var(--sk-text-secondary);
  font-size: 1rem;
  line-height: 1.5;
}
.portal-ui .tms-attendance-priority .tms-attendance-actions {
  min-width: 0;
  width: 100%;
}
@media(max-width:760px) {
  .portal-ui .tms-attendance-priority {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "action"
      "timer";
    gap: 16px;
  }
  .portal-ui .tms-attendance-priority__timer > .tms-landing-countdown {
    min-height: 96px;
    margin-left: auto;
  }
  .portal-ui .tms-attendance-priority .tms-attendance-card {
    grid-template-rows: auto auto;
  }
}
.portal-ui .tms-reads-required {display:grid;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:24px;padding:24px;border:1px solid var(--sk-border-subtle);border-top:3px solid var(--sk-status-warning-border);background:var(--sk-bg-surface);color:var(--sk-text-primary);}
.portal-ui .tms-reads-required__icon {display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--sk-status-warning-border);border-radius:8px;background:var(--sk-status-warning-bg);color:var(--sk-status-warning-text);}
.portal-ui .tms-reads-required__body {min-width:0;}
.portal-ui .tms-reads-required__meta {display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;font-size:14px;line-height:20px;color:var(--sk-text-secondary);}
.portal-ui .tms-reads-required__status {display:inline-flex;align-items:center;justify-content:center;min-width:112px;height:32px;padding:0 12px;border:1px solid var(--sk-status-warning-border);border-radius:999px;background:var(--sk-status-warning-bg);color:var(--sk-status-warning-text);font:600 12px/20px var(--sk-font-body);}
.portal-ui .tms-reads-required h1 {color:var(--sk-text-heading);margin:0 0 8px;}
.portal-ui .tms-reads-required p {margin:0;color:var(--sk-text-secondary);}
.portal-ui .tms-reads-required>.mandatory-reads-layout-alert__cta {white-space:nowrap;}
@media(max-width:900px){
 .portal-ui .tms-reads-required {grid-template-columns:48px minmax(0,1fr);gap:16px;padding:20px;}
 .portal-ui .tms-reads-required>.mandatory-reads-layout-alert__cta {grid-column:2;justify-self:start;}
}
@media(max-width:480px){
 .portal-ui .tms-reads-required {grid-template-columns:minmax(0,1fr);}
 .portal-ui .tms-reads-required>.mandatory-reads-layout-alert__cta {grid-column:1;width:100%;}
}

/* Report journey: completed, current and upcoming steps. */
.portal-ui .tms-post-training-steps{display:grid;gap:12px;list-style:none;margin:0;padding:0}
.portal-ui .tms-post-training-steps>li{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px;border:1px solid var(--sk-border-subtle);border-left-width:4px;border-radius:8px;background:var(--sk-bg-surface);transition:background-color 180ms,border-color 180ms}
.portal-ui .tms-post-training-steps>li>span{display:inline-flex;align-items:center;justify-content:center;position:relative;flex:0 0 36px;width:36px;height:36px;border:1px solid var(--sk-border-subtle);border-radius:8px;background:var(--sk-bg-surface);color:var(--sk-text-secondary)}
.portal-ui .tms-post-training-steps>li>div{flex:1 1 210px;min-width:0}
.portal-ui .tms-post-training-steps strong{display:block;margin:0 0 4px;font:600 14px/20px var(--sk-font-heading)}
.portal-ui .tms-post-training-steps small{display:block;color:var(--sk-text-secondary);font-size:13px;line-height:20px}
.portal-ui .tms-post-training-steps>li::after{content:'Pending';flex:0 0 auto;margin-left:auto;padding:3px 8px;border:1px solid var(--sk-border-subtle);border-radius:999px;color:var(--sk-text-secondary);font-size:12px;font-weight:600;line-height:16px}
.portal-ui .tms-post-training-steps>li.is-complete{background:var(--sk-status-success-bg);border-color:var(--sk-status-success-border)}
.portal-ui .tms-post-training-steps>li.is-complete>span{background:var(--sk-status-success-bg);border-color:var(--sk-status-success-border);color:var(--sk-status-success-text)}
.portal-ui .tms-post-training-steps>li.is-complete strong{color:var(--sk-status-success-text)}
.portal-ui .tms-post-training-steps>li.is-complete::after{content:'Completed';color:var(--sk-status-success-text);border-color:var(--sk-status-success-border)}
.portal-ui .tms-post-training-steps>li.is-active{background:var(--sk-selection-bg);border-color:var(--sk-brand-aviation)}
.portal-ui .tms-post-training-steps>li.is-active>span{background:var(--sk-brand-aviation);border-color:var(--sk-brand-aviation);color:var(--sk-text-inverse)}
.portal-ui .tms-post-training-steps>li.is-active strong{color:var(--sk-brand-aviation)}
.portal-ui .tms-post-training-steps>li.is-active::after{content:'In progress';color:var(--sk-brand-aviation);border-color:var(--sk-brand-aviation)}
.portal-ui .tms-post-training-steps>li.is-active>span::after{content:'';position:absolute;right:-4px;top:-4px;width:9px;height:9px;border:2px solid var(--sk-bg-surface);border-radius:50%;background:var(--sk-brand-aviation);animation:sk-report-step-pulse 2s ease-in-out infinite}
@keyframes sk-report-step-pulse{0%,100%{box-shadow:0 0 0 0 rgb(35 90 154 / 0)}50%{box-shadow:0 0 0 5px rgb(35 90 154 / .2)}}
@media(prefers-reduced-motion:reduce){.portal-ui .tms-post-training-steps>li{transition:none}.portal-ui .tms-post-training-steps>li.is-active>span::after{animation:none}}

/* Student report decisions and compact report evidence. */
.portal-ui .decision-actions{border:0;background:none;box-shadow:none;padding:0;gap:12px}
.portal-ui .decision-button{display:flex;flex-wrap:wrap;gap:8px;min-height:44px;padding:10px 12px;border:1px solid var(--decision-border);border-radius:8px;background:var(--decision-bg);color:var(--decision-text);box-shadow:none;transform:none}
.portal-ui .decision-button.is-agree{--decision-bg:var(--sk-status-success-bg);--decision-text:var(--sk-status-success-text);--decision-border:var(--sk-status-success-border)}
.portal-ui .decision-button.is-dispute{--decision-bg:var(--sk-status-error-bg);--decision-text:var(--sk-status-error-text);--decision-border:var(--sk-status-error-border)}
.portal-ui .decision-button:hover,.portal-ui .decision-button.is-selected{background:var(--decision-text);border-color:var(--decision-text);color:white;box-shadow:none;transform:none}
.portal-ui .decision-button::before,.portal-ui .decision-button::after,.portal-ui .decision-actions::before,.portal-ui .decision-actions::after{content:none}
.portal-ui .decision-button .decision-button-copy,.portal-ui .decision-button .decision-selected-mark{border:0;background:none;box-shadow:none;color:inherit}
.portal-ui .decision-button .decision-selected-mark{padding:0;font-size:12px}
.portal-ui .tms-post-training-signature-panel[hidden]{display:none!important}
.portal-ui .tms-preview-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;background:none;border:0;padding:0}
.portal-ui .tms-preview-facts>div{min-height:0;padding:12px 16px;background:var(--sk-bg-surface)}
.portal-ui .tms-preview-facts dt{font-size:12px;line-height:18px;color:var(--sk-text-secondary);margin:0 0 4px}
.portal-ui .tms-preview-facts dd{font-size:14px;line-height:20px;margin:0}
.portal-ui .tms-preview-module{padding:16px;background:var(--sk-bg-surface)}
.portal-ui .tms-preview-check-state{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:24px;padding:3px 8px;border:1px solid var(--result-border);border-radius:999px;background:var(--result-bg);color:var(--result-text);font:600 12px/16px var(--sk-font-body)}
.portal-ui .tms-preview-check-state.is-pass{--result-bg:var(--sk-status-success-bg);--result-border:var(--sk-status-success-border);--result-text:var(--sk-status-success-text)}
.portal-ui .tms-preview-check-state.is-failed{--result-bg:var(--sk-status-error-bg);--result-border:var(--sk-status-error-border);--result-text:var(--sk-status-error-text)}
.portal-ui .tms-preview-check-state:is(.is-not-completed,.is-pending){--result-bg:var(--sk-status-warning-bg);--result-border:var(--sk-status-warning-border);--result-text:var(--sk-status-warning-text)}
.portal-ui .tms-preview-check-state>span{background:currentColor;border:0;width:6px;height:6px;border-radius:50%}
@media(max-width:700px){.portal-ui .tms-preview-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.portal-ui .tms-preview-facts{grid-template-columns:minmax(0,1fr)}.portal-ui .decision-actions{grid-template-columns:minmax(0,1fr)}}

/* The decision selector is a layout wrapper, not an enclosing card. */
.portal-ui .tms-post-training-decision-selector{border:0;background:transparent;box-shadow:none}

/* Give the unavailable-report notice room to breathe. */
.portal-ui .tms-preview-unavailable{width:100%;max-width:760px;min-height:420px;padding:40px 48px;gap:20px;margin:clamp(32px,8vh,96px) auto 0}
.portal-ui .tms-preview-unavailable h1{max-width:640px;margin:0;font-size:32px;line-height:40px}
.portal-ui .tms-preview-unavailable p{max-width:600px;margin:0;font-size:16px;line-height:24px}
.portal-ui .tms-preview-unavailable .tms-preview-primary-action{margin-top:8px}
@media(max-width:600px){.portal-ui .tms-preview-unavailable{min-height:0;padding:32px 24px;gap:20px}.portal-ui .tms-preview-unavailable h1{font-size:26px;line-height:34px}.portal-ui .tms-preview-unavailable .tms-preview-primary-action{min-width:0;width:100%}}

/* Spacious, centered notice for unavailable training reports. */
.portal-ui .tms-report-unavailable-notice{display:grid;justify-items:center;align-content:center;gap:24px;width:100%;max-width:760px;min-height:360px;margin:clamp(32px,8vh,96px) auto;padding:40px 48px;text-align:center}
.portal-ui .tms-report-unavailable-notice h1{margin:0;max-width:640px;font-size:32px;line-height:40px}
.portal-ui .tms-report-unavailable-notice p{margin:0;max-width:600px;font-size:16px;line-height:24px}
.portal-ui .tms-report-unavailable-notice .tms-preview-secondary-action{margin-top:8px}
@media(max-width:600px){.portal-ui .tms-report-unavailable-notice{min-height:0;padding:32px 24px;gap:20px}.portal-ui .tms-report-unavailable-notice h1{font-size:26px;line-height:34px}.portal-ui .tms-report-unavailable-notice .tms-preview-secondary-action{width:100%}}

/* Examination date choices are calendar tiles, not horizontal action buttons. */
.portal-ui .exam-calendar-grid > button.exam-day-button {
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr);
  grid-template-areas: "weekday weekday" "number month" "count count";
  align-items: baseline;
  align-content: start;
  justify-content: stretch;
  justify-items: start;
  gap: 4px 8px;
  width: 100%;
  min-width: 0;
  min-height: 112px;
  padding: 12px;
  text-align: left;
  white-space: normal;
}
.portal-ui .exam-calendar-grid > .exam-day-button > * {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: normal;
  word-break: normal;
}
.portal-ui .exam-calendar-grid .exam-day-button__weekday {
  grid-area: weekday;
  white-space: nowrap;
  font: 600 .875rem/1.25rem var(--sk-font-heading);
}
.portal-ui .exam-calendar-grid .exam-day-button > strong {
  grid-area: number;
  white-space: nowrap;
  font: 600 1.5rem/2rem var(--sk-font-heading);
}
.portal-ui .exam-calendar-grid .exam-day-button__month {
  grid-area: month;
  align-self: baseline;
  padding: 0;
  white-space: nowrap;
  font: 400 .875rem/1.25rem var(--sk-font-body);
}
.portal-ui .exam-calendar-grid .exam-day-button > small {
  grid-area: count;
  margin: 0;
  font: 400 .875rem/1.25rem var(--sk-font-body);
}

/* My Exams: task-first cards, shared SKIES2 tokens and a single session filter. */
.portal-ui .my-exams-page .exam-list-toolbar { display:flex; align-items:end; justify-content:space-between; flex-wrap:wrap; gap:16px; }
.portal-ui .my-exams-page .exam-list-toolbar h2 { margin:0; font:600 1.25rem/1.75rem var(--sk-font-heading); color:var(--sk-text-heading); }
.portal-ui .my-exams-page .exam-list-toolbar p { margin:4px 0 0; color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .my-exams-page .exam-list-toolbar form { display:grid; gap:8px; width:260px; max-width:100%; margin:0; }
.portal-ui .my-exams-page .exam-list-toolbar label { margin:0; }
.portal-ui .my-exams-page .exam-list-toolbar [role="alert"] { color:var(--sk-status-error-text); }
.portal-ui .my-exams-page .exam-filter-empty { padding:24px; }
.portal-ui .my-exams-page .exam-filter-empty p { margin:8px 0 0; }
.portal-ui .my-exams-page .exam-filter-linked-note { margin:0; color:var(--sk-text-secondary); }
.portal-ui .my-exams-page [hidden] { display:none !important; }
.portal-ui .my-exams-page .my-exams-list { display:grid; gap:16px; }
.portal-ui .my-exams-page .exam-assignment-card > summary { display:grid; grid-template-columns:minmax(0,1fr) minmax(180px,32%); gap:24px; padding:20px 24px; border-radius:12px; }
.portal-ui .my-exams-page .exam-assignment-card[open] > summary { border-radius:12px 12px 0 0; }
.portal-ui .my-exams-page .exam-assignment-title { min-width:0; gap:16px; align-items:center; }
.portal-ui .my-exams-page .exam-assignment-title > div { min-width:0; }
.portal-ui .my-exams-page .exam-assignment-title__icon { width:40px; height:40px; flex:0 0 40px; border:0; border-radius:8px; background:var(--sk-selection-bg); color:var(--sk-brand-aviation); box-shadow:none; }
.portal-ui .my-exams-page .exam-assignment-context { gap:6px 12px; margin:0 0 8px; }
.portal-ui .my-exams-page .exam-assignment-eyebrow { color:var(--sk-text-secondary); font:400 .75rem/1rem var(--sk-font-body); letter-spacing:normal; }
.portal-ui .my-exams-page .exam-context-meta { color:var(--sk-text-secondary); font:400 .75rem/1rem var(--sk-font-body); }
.portal-ui .my-exams-page .exam-assignment-course-title { display:block; color:var(--sk-text-heading); font:600 1.125rem/1.5rem var(--sk-font-heading); }
.portal-ui .my-exams-page .exam-assignment-title p { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin:8px 0 0; color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .my-exams-page .exam-assignment-title p strong { color:var(--sk-text-primary); font-weight:500; }
.portal-ui .my-exams-page .exam-assignment-summary-side { display:flex; flex-direction:row; flex-wrap:wrap; gap:8px 12px; justify-content:flex-end; align-items:center; min-width:0; }
.portal-ui .my-exams-page .exam-assignment-summary-date { grid-column:1; font:400 .875rem/1.25rem var(--sk-font-body); color:var(--sk-text-secondary); }
.portal-ui .my-exams-page .exam-assignment-summary-side .exam-status { grid-column:1; max-width:100%; white-space:normal; text-align:left; }
.portal-ui .my-exams-page .exam-assignment-chevron { grid-column:2; grid-row:1 / span 2; color:var(--sk-brand-aviation); border:0; background:none; }
.portal-ui .my-exams-page .exam-status { padding:4px 8px; min-height:28px; gap:6px; border-radius:999px; font:600 .75rem/1rem var(--sk-font-heading); box-shadow:none; }
.portal-ui .my-exams-page .exam-status--confirmed { background:var(--sk-status-info-bg); color:var(--sk-status-info-text); border-color:var(--sk-status-info-border); }
.portal-ui .my-exams-page :is(.exam-status--awaiting_student_selection,.exam-status--signing,.exam-status--expired,.exam-status--availability_expired) { background:var(--sk-status-warning-bg); color:var(--sk-status-warning-text); border-color:var(--sk-status-warning-border); }
.portal-ui .my-exams-page .exam-progress { margin:0; padding:16px 24px; border-bottom:1px solid var(--sk-border-subtle); background:var(--sk-neutral-25); }
.portal-ui .my-exams-page .exam-progress__marker { width:32px; height:32px; flex:0 0 32px; box-shadow:none; }
.portal-ui .my-exams-page .exam-progress__copy strong { font:600 .875rem/1.25rem var(--sk-font-heading); }
.portal-ui .my-exams-page .exam-assignment-layout { grid-template-columns:minmax(0,1fr) minmax(240px,30%); padding:24px; gap:24px; }
.portal-ui .my-exams-page :is(.exam-assignment-main,.exam-assignment-sidebar) { gap:16px; }
.portal-ui .my-exams-page .exam-work-card { min-height:0; margin:0; padding:20px; }
.portal-ui .my-exams-page :is(.exam-detail-card,.exam-guidance-card) { padding:16px; }
.portal-ui .my-exams-page .exam-detail-card { background:var(--sk-neutral-25); }
.portal-ui .my-exams-page :is(.exam-section-head h3,.exam-side-card-head h3,.exam-guidance-card h3) { margin:4px 0 8px; font:600 1.125rem/1.5rem var(--sk-font-heading); color:var(--sk-brand-aviation); letter-spacing:normal; }
.portal-ui .my-exams-page :is(.exam-confirmed-panel,.exam-outcome-panel) { align-items:flex-start; gap:16px; min-height:0; }
.portal-ui .my-exams-page .exam-confirmed-panel { background:var(--sk-status-info-bg); border-color:var(--sk-status-info-border); }
.portal-ui .my-exams-page :is(.exam-confirmed-panel__icon,.exam-outcome-panel__icon) { width:40px; height:40px; flex:0 0 40px; border-radius:8px; color:var(--sk-brand-aviation); background:var(--sk-selection-bg); box-shadow:none; border:0; }
.portal-ui .my-exams-page :is(.exam-confirmed-panel__content,.exam-outcome-panel__content) { flex:1; }
.portal-ui .my-exams-page :is(.exam-confirmed-panel__content h3,.exam-outcome-panel__content h3) { font:600 1.25rem/1.75rem var(--sk-font-heading); margin:8px 0; letter-spacing:normal; }
.portal-ui .my-exams-page :is(.exam-confirmed-panel__content p,.exam-outcome-panel__content p,.exam-guidance-card p) { font:400 .875rem/1.25rem var(--sk-font-body); margin:8px 0 16px; }
.portal-ui .my-exams-page .exam-detail-list { margin:16px 0 0; }
.portal-ui .my-exams-page .exam-detail-list > div { padding:12px 0; }
.portal-ui .my-exams-page .exam-detail-list dd { overflow-wrap:anywhere; font:500 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .my-exams-page .exam-continuation-panel { padding:16px; margin-top:20px; background:var(--sk-bg-surface); box-shadow:none; border-radius:8px; }
.portal-ui .my-exams-page :is(.exam-primary-button,.exam-secondary-button) { min-height:44px; padding:11px 16px; gap:8px; font:600 .875rem/1.25rem var(--sk-font-heading); white-space:normal; overflow-wrap:normal; }
.portal-ui .my-exams-page :is(.exam-outcome-documents,.exam-alternative-actions) { display:flex; flex-wrap:wrap; gap:12px; margin-top:16px; }
@media (max-width:1000px) {
  .portal-ui .my-exams-page .exam-assignment-layout { grid-template-columns:minmax(0,1fr); }
  .portal-ui .my-exams-page .exam-assignment-sidebar { grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; }
}
@media (max-width:767px) {
  .portal-ui .my-exams-page .exam-list-toolbar form { width:100%; }
  .portal-ui .my-exams-page .exam-assignment-card > summary { grid-template-columns:minmax(0,1fr); padding:16px; gap:16px; }
  .portal-ui .my-exams-page .exam-assignment-summary-side { justify-content:flex-start; width:100%; }
  .portal-ui .my-exams-page .exam-assignment-chevron { justify-self:end; }
  .portal-ui .my-exams-page .exam-assignment-layout { padding:16px; gap:16px; }
  .portal-ui .my-exams-page .exam-assignment-sidebar { grid-template-columns:minmax(0,1fr); }
  .portal-ui .my-exams-page .exam-progress { padding:16px; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .portal-ui .my-exams-page .exam-work-card { padding:16px; }
}

/* Expanded exam: action first, then compact facts across the available width. */
.portal-ui .my-exams-page .exam-assignment-layout { grid-template-columns:minmax(0,1fr); gap:16px; }
.portal-ui .my-exams-page .exam-assignment-sidebar { grid-template-columns:minmax(0,1fr); gap:16px; }
.portal-ui .my-exams-page .exam-detail-card { background:var(--sk-neutral-25); }
.portal-ui .my-exams-page .exam-side-card-head { padding:0; margin:0 0 16px; border:0; gap:12px; }
.portal-ui .my-exams-page .exam-side-card-head h3 { margin:0; }
.portal-ui .my-exams-page .exam-detail-list { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); column-gap:24px; row-gap:16px; margin:0; }
.portal-ui .my-exams-page .exam-detail-list > div { display:flex; flex-direction:column; gap:4px; min-width:0; padding:0; border:0; border-radius:0; background:none; }
.portal-ui .my-exams-page .exam-detail-list dt { display:flex; align-items:center; gap:8px; margin:0; color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .my-exams-page .exam-detail-list dd { margin:0 0 0 28px; color:var(--sk-text-heading); }
.portal-ui .my-exams-page .exam-detail-list .is-expired dd { color:var(--sk-status-error-text); }
.portal-ui .my-exams-page .exam-detail-list .is-emphasised dd { color:var(--sk-status-warning-text); font-weight:600; }
.portal-ui .my-exams-page .my-exams-state { min-height:0; align-items:flex-start; gap:12px; padding:16px; }
.portal-ui .my-exams-page .my-exams-state p { margin:4px 0 0; max-width:85ch; font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .my-exams-page .my-exams-state__icon { width:32px; height:32px; flex:0 0 32px; border-radius:8px; box-shadow:none; }
.portal-ui .my-exams-page .exam-guidance-card { display:flex; align-items:flex-start; gap:12px; }
.portal-ui .my-exams-page .exam-guidance-card h3 { margin:0 0 4px; font-size:1rem; line-height:1.5rem; }
.portal-ui .my-exams-page .exam-guidance-card p { margin:0; max-width:85ch; }
@media (max-width:767px) {
 .portal-ui .my-exams-page .exam-detail-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
 .portal-ui .my-exams-page .my-exams-state { flex-direction:row; }
}
@media (max-width:480px) {
 .portal-ui .my-exams-page .exam-detail-list { grid-template-columns:minmax(0,1fr); }
}

/* Explicit re-examination consent; never infer consent from dismissing a notice. */
.portal-ui .exam-consent-notice { display:flex; align-items:center; flex-wrap:wrap; gap:16px; padding:20px; border:1px solid var(--sk-status-warning-border); border-radius:12px; background:var(--sk-status-warning-bg); color:var(--sk-status-warning-text); }
.portal-ui .exam-consent-notice > div { flex:1 1 280px; }
.portal-ui .exam-consent-notice h2 { font:600 1.125rem/1.5rem var(--sk-font-heading); margin:0; color:inherit; }
.portal-ui .exam-consent-notice p { font:400 .875rem/1.25rem var(--sk-font-body); margin:4px 0 0; }
.portal-ui .exam-consent-notice[data-decision="granted"] { border-color:var(--sk-status-success-border); background:var(--sk-status-success-bg); color:var(--sk-status-success-text); }
.portal-ui .exam-consent-notice[data-decision="denied"] { border-color:var(--sk-status-neutral-border); background:var(--sk-status-neutral-bg); color:var(--sk-status-neutral-text); }
.portal-ui dialog.exam-consent-dialog { position:fixed; inset:50% auto auto 50%; top:50% !important; transform:translate(-50%,-50%); margin:0; width:min(620px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); overflow:auto; box-sizing:border-box; padding:24px; border:1px solid var(--sk-border-subtle); border-radius:12px; background:var(--sk-bg-surface); color:var(--sk-text-primary); }
.portal-ui dialog.exam-consent-dialog::backdrop { background:rgb(10 29 55 / .5); }
.portal-ui .exam-consent-dialog-head { display:flex; align-items:center; gap:12px; color:var(--sk-brand-aviation); margin-bottom:16px; }
.portal-ui .exam-consent-dialog-head h2 { font:600 1.25rem/1.75rem var(--sk-font-heading); }
.portal-ui .exam-consent-dialog p { font:400 1rem/1.5rem var(--sk-font-body); margin:0 0 16px; }
.portal-ui .exam-consent-facts { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding:16px; border-radius:8px; background:var(--sk-bg-page); margin:16px 0; }
.portal-ui .exam-consent-facts dt { color:var(--sk-text-secondary); font:400 .875rem/1.25rem var(--sk-font-body); }
.portal-ui .exam-consent-facts dd { margin:4px 0 0; font:500 .875rem/1.25rem var(--sk-font-body); overflow-wrap:anywhere; }
.portal-ui .exam-consent-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:12px; margin:20px 0 12px; }
.portal-ui .exam-consent-dialog[data-decision="denied"] { border-color:var(--sk-status-warning-border); }
.portal-ui .exam-consent-dialog[data-decision="denied"] .exam-consent-dialog-head { color:var(--sk-status-warning-text); }
.portal-ui .exam-consent-dialog[data-decision="granted"] { border-color:var(--sk-brand-aviation); }
.portal-ui .exam-consent-dialog [role="alert"] { color:var(--sk-status-error-text); }
@media(max-width:480px){ .portal-ui .exam-consent-facts { grid-template-columns:1fr; } .portal-ui dialog.exam-consent-dialog { padding:16px; } }

.portal-ui .my-exams-page .exam-assignment-summary-side > .exam-assignment-chevron { flex:0 0 20px; }


/* Reserve intrinsic width for the date/status group instead of 32% of the card. */
.portal-ui .my-exams-page .exam-assignment-card > summary {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
}
.portal-ui .my-exams-page .exam-assignment-card > summary > .exam-assignment-title {
  flex:1 1 340px;
}
.portal-ui .my-exams-page .exam-assignment-card > summary > .exam-assignment-summary-side {
  flex:0 1 auto;
  width:auto;
  max-width:100%;
  margin-left:auto;
  flex-wrap:nowrap;
}
.portal-ui .my-exams-page .exam-assignment-summary-side > .exam-assignment-summary-date,
.portal-ui .my-exams-page .exam-assignment-summary-side > .exam-status {
  flex:0 0 auto;
  white-space:nowrap;
}
@media (max-width:600px) {
  .portal-ui .my-exams-page .exam-assignment-card > summary > .exam-assignment-summary-side {
    margin-left:0;
    flex-wrap:wrap;
    justify-content:flex-start;
  }
  .portal-ui .my-exams-page .exam-assignment-summary-side > .exam-status {
    flex:0 1 auto;
    white-space:normal;
  }
}

/* Same release credit and placement as Scheduler, before the user card. */
.portal-ui .portal-sidebar .sidebar-signature{display:block;flex:0 0 auto;width:100%;margin-top:auto;padding:0;text-align:center}
.portal-ui .portal-sidebar .sidebar-signature>small{display:block;color:#BCC8D8;font:400 12px/16px var(--sk-font-body);margin:0;padding:0}
.portal-ui .portal-sidebar .sidebar-footer{margin-top:0}

.portal-ui .portal-sidebar .sidebar-footer{margin-top:auto}
.portal-ui .portal-sidebar .sidebar-signature{margin-top:0;padding-bottom:16px}
