/* Generated by other_files/tools/build_experience_css.py. Edit source layers. */
/* experience-v30.css */
/* v30: shared accessible controls, responsive administration and AI hub. */
:root { --hub-ink:#153449; --hub-muted:#526a7a; --hub-line:#dce7ef; }
:where(button,input,select,textarea,a,summary):focus-visible { outline:3px solid #0b75ad; outline-offset:3px; }
:where(input,select,textarea) { scroll-margin-block:100px; }
:where(button,.button):disabled { opacity:.55; cursor:not-allowed; }
:where(.portal-main,.hub-provider,.hub-form-grid,.hub-routes) > * { min-width:0; }
.portal-main :is(h1,h2,h3) { text-wrap:balance; }
.portal-main :is(.panel,.hub-section) { scroll-margin-top:24px; }
.portal-main .panel-head { flex-wrap:wrap; gap:14px; }
.portal-main .page-head-actions { flex-wrap:wrap; }
.portal-main .page-head-actions .button { white-space:normal; text-align:center; }
.portal-main :is(.ai-provider-banner,.ai-admin-head,.promotion-head) { overflow-wrap:anywhere; }
.portal-main .ai-admin-tabs { max-width:100%; overflow-x:auto; overscroll-behavior-inline:contain; }
.portal-main .ai-admin-tabs button { flex:0 0 auto; min-height:44px; }
.ai-hub { color:var(--hub-ink); max-width:1500px; margin-inline:auto; }
.ai-hub :is(p,small) { line-height:1.6; }
.ai-hub small { color:var(--hub-muted); font-size:.8rem; }
.ai-hub label { display:flex; flex-direction:column; gap:8px; font-size:.87rem; font-weight:650; min-width:0; }
.ai-hub label small { font-weight:400; }
.ai-hub input:not([type=checkbox]),.ai-hub select { width:100%; min-width:0; min-height:46px; background:#fff; color:var(--hub-ink); border:1px solid #adbfcc; border-radius:10px; padding:10px 12px; font:inherit; }
.ai-hub .button { white-space:normal; min-height:44px; text-align:center; line-height:1.4; }
.ai-hub code { font-size:.85em; overflow-wrap:anywhere; }
.hub-hero { display:flex; justify-content:space-between; align-items:center; gap:28px; padding:36px; border-radius:22px; background:linear-gradient(115deg,#0c3d59,#146781); color:#fff; margin-bottom:22px; }
.hub-hero .eyebrow { color:#b8e2ef; font-size:.7rem; letter-spacing:.13em; }
.hub-hero h1 { font-size:clamp(2rem,3vw,3rem); letter-spacing:-.04em; line-height:1.12; margin:13px 0; }
.hub-hero p { color:#e0f0f7; margin:0; font-size:1rem; }
.hub-hero-actions { display:grid; gap:10px; flex:0 1 240px; }
.hub-hero-actions .button { background:#fff; color:#104661; border:1px solid #fff; }
.hub-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:24px; }
.hub-metrics article { border:1px solid var(--hub-line); background:#fff; border-radius:16px; padding:22px; }
.hub-metrics article>span { display:block; font-size:.82rem; font-weight:650; color:var(--hub-muted); }
.hub-metrics strong { display:block; font-size:2.15rem; line-height:1.35; margin-top:8px; font-variant-numeric:tabular-nums; }
.hub-metrics strong small { font-size:1rem; font-weight:500; }
.hub-metrics p { margin:5px 0 0; font-size:.75rem; color:var(--hub-muted); }
.hub-section { padding:26px; border:1px solid var(--hub-line); background:#fff; border-radius:18px; margin:22px 0; }
.hub-section-head { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; }
.hub-section-head h2 { margin:8px 0 0; font-size:1.4rem; line-height:1.3; letter-spacing:-.02em; }
.hub-section-head p { color:var(--hub-muted); font-size:.85rem; margin:10px 0 0; }
.hub-routes { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.hub-routes>.button { grid-column:1/-1; justify-self:start; }
.hub-caption { font-size:.8rem; color:var(--hub-muted); font-weight:400; line-height:1.6; overflow-wrap:anywhere; }
.hub-notice { border:1px solid #c9e1ea; border-left:4px solid #2886a7; padding:18px 20px; border-radius:12px; background:#f2f9fc; margin:20px 0; font-size:.85rem; overflow-wrap:anywhere; }
.hub-notice p { margin:6px 0 0; }
.hub-notice--warning { background:#fff9ef; border-color:#e7cca3; border-left-color:#a96313; color:#62421c; }
.hub-pill { display:inline-flex; align-items:center; border-radius:24px; background:#eef3f7; color:#405f73; padding:5px 10px; font-size:.68rem; font-weight:700; line-height:1.5; white-space:nowrap; }
.hub-pill--ready { background:#e8f5ed; color:#216645; }
.hub-profile>summary { display:flex; justify-content:space-between; align-items:center; gap:14px; cursor:pointer; list-style:none; min-height:50px; }
.hub-profile>summary::-webkit-details-marker { display:none; }
.hub-profile>summary strong,.hub-profile>summary small { display:block; margin-top:7px; }
.hub-profile>summary strong { font-size:1.2rem; }
.hub-summary-arrow { font-size:1.5rem; }
.hub-profile[open] .hub-summary-arrow { transform:rotate(180deg); }
.hub-details-body { margin-top:22px; border-top:1px solid var(--hub-line); padding-top:2px; }
.hub-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
.hub-wide { grid-column:1/-1; }
.ai-hub .hub-check { flex-direction:row; align-items:flex-start; gap:10px; font-weight:500; line-height:1.6; }
.ai-hub .hub-check input { width:19px; height:19px; min-width:19px; margin:3px 0 0; accent-color:#0b668e; }
.hub-consent { background:#f3f7fa; border:1px solid var(--hub-line); border-radius:10px; padding:13px; }
.hub-catalog { margin:32px 0; }
.hub-toolbar { display:flex; flex-wrap:wrap; align-items:end; gap:16px; padding:18px; margin-bottom:20px; background:#eaf1f6; border:1px solid #d7e4ed; border-radius:14px; }
.hub-search { flex:1 1 230px; }
.hub-toolbar>label:not(.hub-search) { flex:0 1 230px; }
.hub-toolbar>span { padding-bottom:12px; }
.hub-provider-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; align-items:start; }
.hub-provider { background:#fff; border:1px solid var(--hub-line); border-radius:18px; padding:24px; box-shadow:0 4px 18px #173b4f04; scroll-margin-top:24px; overflow-wrap:anywhere; }
.hub-provider:target { border-color:#1378a3; box-shadow:0 0 0 3px #d3e9f3; }
.hub-provider[hidden] { display:none; }
.hub-provider--retired { background:#f4f6f8; }
.hub-provider-heading { display:flex; align-items:center; gap:12px; }
.hub-provider-heading>div:nth-child(2) { flex:1; min-width:0; }
.hub-provider-heading h3 { font-size:1.1rem; line-height:1.4; margin:2px 0 0; }
.hub-provider-heading small { font-size:.66rem; }
.hub-provider-logo { display:grid; place-items:center; flex:0 0 42px; height:42px; background:#e9f3f8; border:1px solid #d6e9f1; border-radius:12px; color:#1b6684; font-size:.8rem; font-weight:800; letter-spacing:.02em; }
.hub-provider-description { font-size:.85rem; margin:20px 0 16px; color:var(--hub-muted); }
.hub-provider-limit { background:#f5f8fa; border:1px solid #e5edf2; border-radius:12px; padding:14px 16px; font-size:.79rem; }
.hub-provider-limit strong { font-size:.75rem; }
.hub-provider-limit p { margin:6px 0 0; color:var(--hub-muted); }
.hub-provider-links { display:flex; flex-wrap:wrap; gap:6px 18px; margin:16px 0; }
.hub-provider-links a { display:inline-flex; align-items:center; min-height:34px; font-size:.76rem; color:#08608a; text-decoration:underline; text-underline-offset:3px; }
.hub-provider-status { display:flex; flex-wrap:wrap; gap:6px 14px; color:var(--hub-muted); font-size:.71rem; border-top:1px solid var(--hub-line); padding:13px 0; }
.hub-status-ok { color:#236644; font-weight:650; }
.hub-connection>summary { min-height:46px; cursor:pointer; display:flex; align-items:center; justify-content:space-between; padding:10px 14px; background:#eff5f9; color:#164c6a; border-radius:10px; list-style:none; font-size:.83rem; font-weight:700; }
.hub-connection>summary::-webkit-details-marker { display:none; }
.hub-connection[open]>summary { margin-bottom:20px; }
.hub-connection[open]>summary>span:last-child { transform:rotate(45deg); }
.hub-connection-body .hub-form-grid { margin-top:20px; gap:16px; }
.hub-full { width:100%; }
.hub-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.hub-actions form { flex:1 1 130px; }
.hub-actions form .button { width:100%; font-size:.8rem; }
.hub-diagnostics { margin:20px 0; border:1px solid var(--hub-line); border-radius:12px; padding:16px; font-size:.8rem; background:#f8fafc; }
.hub-diagnostics>p { margin:6px 0 14px; color:var(--hub-muted); }
.hub-diagnostics dl { margin:0 0 12px; }
.hub-diagnostics dl>div { display:flex; justify-content:space-between; gap:16px; padding:7px 0; border-bottom:1px solid #e4ecf1; }
.hub-diagnostics dt { color:var(--hub-muted); }
.hub-diagnostics dd { margin:0; text-align:right; font-variant-numeric:tabular-nums; }
.hub-danger>summary { min-height:44px; padding:10px 0; cursor:pointer; color:#974329; font-size:.8rem; }
.hub-danger p { font-size:.8rem; color:var(--hub-muted); }
.hub-empty { padding:35px; text-align:center; background:#fff; border:1px dashed #adc4d2; border-radius:14px; }
/* Public site: readable long content, safe controls and no off-canvas form fields. */
body:not(.portal-body) :is(.page-content,.article-content,.rich-text) { overflow-wrap:anywhere; }
body:not(.portal-body) :is(.page-content,.article-content,.rich-text) img { max-width:100%; height:auto; }
body:not(.portal-body) :is(.page-content,.article-content,.rich-text) table { display:block; max-width:100%; overflow-x:auto; }
body:not(.portal-body) :is(.hero-actions,.booking-actions) { flex-wrap:wrap; }
body:not(.portal-body) :is(.program-card,.teacher-card,.price-card) .button { white-space:normal; text-align:center; }
@media (prefers-reduced-motion:reduce) { .ai-hub *, .ai-hub *::before,.ai-hub *::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }
@media (max-width:1250px) and (min-width:901px) { .hub-provider-grid { grid-template-columns:minmax(0,1fr); } }
@media (max-width:760px) {
  .hub-hero { padding:24px; flex-direction:column; align-items:stretch; gap:20px; }
  .hub-hero-actions { flex:auto; display:flex; flex-wrap:wrap; }
  .hub-hero-actions>.button { flex:1 1 180px; }
  .hub-provider-grid { grid-template-columns:minmax(0,1fr); }
  .hub-section-head { align-items:flex-start; flex-direction:column; }
  .hub-metrics { gap:10px; }
  .hub-metrics article { padding:16px 12px; }
  .hub-metrics article>span { font-size:.73rem; }
  .hub-metrics strong { font-size:1.8rem; }
  .hub-metrics p { display:none; }
  .hub-routes { grid-template-columns:minmax(0,1fr); }
  .hub-routes>.button { width:100%; }
  .portal-main .ai-settings-layout { grid-template-columns:minmax(0,1fr); }
  .portal-main .ai-provider-banner { display:flex; flex-direction:column; align-items:stretch; gap:12px; }
  .portal-main .ai-provider-banner__privacy { min-width:0; max-width:none; }
}
@media (max-width:520px) {
  .hub-hero,.hub-section,.hub-provider { padding:20px 16px; border-radius:14px; }
  .hub-hero h1 { font-size:2.15rem; }
  .hub-form-grid { grid-template-columns:minmax(0,1fr); }
  .hub-metrics { grid-template-columns:minmax(0,1fr); }
  .hub-metrics article { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:12px 16px; border-radius:12px; }
  .hub-metrics article>span { font-size:.8rem; max-width:180px; }
  .hub-metrics strong { margin:0; font-size:1.7rem; }
  .hub-provider-heading { flex-wrap:wrap; }
  .hub-provider-heading>.hub-pill { margin-left:54px; }
  .hub-provider-heading>div:nth-child(2) { flex-basis:calc(100% - 54px); }
  .hub-toolbar>label { flex-basis:100%!important; }
  .hub-toolbar>span { padding:0; }
  .hub-notice { padding:15px; }
  .hub-actions>.button { flex:1 1 100%; }
  .hub-diagnostics dl>div { flex-direction:column; gap:2px; }
  .hub-diagnostics dd { text-align:left; }
  .ai-hub input:not([type=checkbox]),.ai-hub select,.portal-main :is(input:not([type=checkbox]):not([type=radio]),select,textarea) { font-size:16px; }
  .portal-main .panel-head>div { min-width:0; max-width:100%; }
  body:not(.portal-body) .hero-actions>.button { width:100%; }
  body:not(.portal-body) :is(input,select,textarea) { font-size:16px; }
  body:not(.portal-body) .section-heading { padding-inline:4px; }
}
/* Keep the custom publish checkbox in its label, not in the page width. */
.portal-main .promotion-switch-card { position:relative; }
.portal-main .promotion-switch-card>input { width:1px!important; height:1px!important; min-width:1px!important; min-height:1px!important; padding:0; margin:-1px; border:0; clip-path:inset(50%); overflow:hidden; }
.portal-main .promotion-switch-card:has(input:focus-visible) { outline:3px solid #0b75ad; outline-offset:3px; }
.portal-main .promotion-search,.portal-main .promotion-search input { min-width:0; }
.portal-main .ai-admin-kpis article>div { min-width:0; overflow-wrap:anywhere; }
@media(max-width:480px) { .portal-main .ai-admin-kpis { grid-template-columns:minmax(0,1fr); } }

/* experience-v31.css */
/* v31: readable public pages and task-oriented administration.
   No page-level overflow hiding, third-party fonts or disabled focus outlines. */
:root {
  --surface-radius: 18px;
  --focus-ring: #0878ad;
}
:where(html) { scroll-padding-block: 96px 24px; }
:where(img, video, svg) { max-width: 100%; }
:where(button, .button, input, select, textarea, summary) { -webkit-tap-highlight-color: transparent; }
:where(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid var(--focus-ring); outline-offset: 4px;
}
:where(.button, button) { touch-action: manipulation; }
:where(.button, button):disabled { transform: none; }
:where(input, textarea)::placeholder { color: #617587; opacity: 1; }
:where(.alert, .flash-stack, .html-content) { overflow-wrap: anywhere; }
:where(.button, button, label, summary) { overflow-wrap: break-word; }

/* Public website: consistent rhythm, aligned cards and generous touch targets. */
body:not(.portal-body) { line-height: 1.6; }
body:not(.portal-body) .section-heading { margin-bottom: clamp(24px, 4vw, 44px); }
body:not(.portal-body) .section-heading p { color: #4c6475; line-height: 1.75; }
body:not(.portal-body) :is(.program-grid, .teacher-grid, .price-grid, .review-grid) {
  gap: clamp(18px, 2vw, 28px);
}
body:not(.portal-body) .program-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
body:not(.portal-body) .teacher-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
body:not(.portal-body) :is(.program-card, .teacher-card) { display: flex; flex-direction: column; height: 100%; overflow: hidden; }
body:not(.portal-body) :is(.program-card-body, .teacher-body) { display: flex; flex-direction: column; flex: 1; gap: 10px; }
body:not(.portal-body) :is(.program-card-body, .teacher-body) :is(h3, p) { margin-block: 0; }
body:not(.portal-body) .program-card-body .button { margin-top: auto; align-self: flex-start; }
body:not(.portal-body) .price-card { padding: clamp(22px, 3vw, 34px); }
body:not(.portal-body) .hero-dots button { min-width: 44px; min-height: 44px; border-width: 15px; }
body:not(.portal-body) .hero-dots button.is-active { min-width: 52px; }
body:not(.portal-body) .form-grid > label { min-width: 0; }
body:not(.portal-body) :is(.booking-card, .feedback-card, .enroll-form) { border-radius: var(--surface-radius); }
body:not(.portal-body) .site-footer { padding-bottom: max(36px, env(safe-area-inset-bottom, 0px)); }

/* Consent must be discoverable on arrival, not hidden below the entire footer.
   Both choices remain visible. The banner is non-modal and does not trap focus. */
body:not(.portal-body) .cookie-panel {
  position: fixed; inset: auto auto max(16px, env(safe-area-inset-bottom, 0px)) 20px;
  z-index: 1000; width: min(840px, calc(100% - 40px)); max-width: none;
  margin: 0; padding: 22px 24px; display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(180px, 240px); gap: 24px;
  max-height: 55dvh; overflow-y: auto; overscroll-behavior: contain;
  border: 1px solid #bacdd9; border-radius: 18px;
  background: #fff; box-shadow: 0 12px 50px #163b4f29;
}
body:not(.portal-body) .cookie-panel[hidden] { display: none; }
body:not(.portal-body) .cookie-panel strong { font-size: .96rem; }
body:not(.portal-body) .cookie-panel p { font-size: .85rem; line-height: 1.6; margin: 6px 0; }
body:not(.portal-body) .cookie-panel__actions { display: flex; flex-direction: column; gap: 8px; margin: 0; }
body:not(.portal-body) .cookie-panel__actions > .button { flex: 0 0 auto; min-height: 44px; width: 100%; font-size: .81rem; }
body:not(.portal-body):has(.cookie-panel:not([hidden])) .ai-chat:not(.is-open) .ai-chat__launcher { visibility: hidden; }
body:not(.portal-body):has(.cookie-panel:not([hidden])) .contact-dock:not(.is-open) { visibility: hidden; }
.captcha-feedback { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.captcha-feedback small { line-height: 1.5; color: #4c6374; }
.captcha-retry { min-height: 44px; border-radius: 10px; white-space: normal; }

/* Administrative layout: less density, no viewport-sized form columns. */
.portal-main { min-width: 0; }
.portal-main > :is(header, section, .panel, .dashboard-grid, .promotion-workspace, .ai-hub) { max-width: 1600px; }
.portal-body .portal-page-head h1 { font-size: clamp(1.6rem, 2.6vw, 2.4rem); line-height: 1.2; }
.portal-body .portal-page-head > div { min-width: 0; }
.portal-body .panel { border-color: #dce6ed; }
.portal-body .portal-sidebar a { border-radius: 10px; }
.portal-body .portal-sidebar a[aria-current="page"] { box-shadow: inset 3px 0 #84ccdf; }
.portal-body .workspace-search { max-width: 860px; }
.portal-main :is(.settings-form, .promotion-workspace, .ai-settings-layout, .hub-form-grid) > * { min-width: 0; }
.portal-main :is(.table-wrap, .table-responsive) { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
.portal-main .table-wrap:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 3px; }
.portal-main .page-head-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.portal-main :is(.promotion-kpis, .ai-admin-kpis) article { min-width: 0; }
.portal-main .promotion-command-bar > * { min-width: 0; }
.portal-main .promotion-command-bar p { overflow-wrap: anywhere; }
.portal-main .promotion-topic-presets { display: flex; flex-wrap: wrap; gap: 8px; }
.portal-main .promotion-topic-presets button { white-space: normal; min-height: 42px; text-align: left; }
.portal-main .promotion-generate-button { min-height: 60px; }
.portal-main .promotion-generate-status { padding: 12px 16px; border-radius: 12px; background: #edf6fa; color: #184b65; }
.portal-main .promotion-tab-buttons { overflow-x: auto; max-width: 100%; overscroll-behavior-inline: contain; }
.portal-main .promotion-tab-buttons button { flex: 0 0 auto; min-height: 44px; }
.portal-main .promotion-tab-panel[hidden] { display: none; }
.portal-main .promotion-social-preview textarea { width: 100%; min-height: 180px; line-height: 1.7; resize: vertical; }

/* Distinguish a stored secret from a tested task; status is never colour-only. */
.hub-task-statuses { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 16px 0 18px; }
.hub-task-status { min-width: 0; padding: 12px 13px; background: #f3f6f9; border: 1px solid #dbe5ed; border-left: 3px solid #7891a5; border-radius: 10px; }
.hub-task-status strong { display: block; font-size: .78rem; margin-bottom: 4px; }
.hub-task-status span { display: block; font-size: .81rem; line-height: 1.5; font-weight: 650; }
.hub-task-status small { display: block; font-size: .72rem; margin-top: 6px; }
.hub-task-status.is-ok { background: #edf8f1; border-color: #bfdcc9; border-left-color: #288350; color: #175332; }
.hub-task-status.is-warning { background: #fff8eb; border-color: #e8d2ad; border-left-color: #a66a17; }
.hub-check span > small { display: block; margin-top: 5px; }
.hub-provider .hub-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.hub-provider .hub-actions > form { min-width: 0; }
.hub-provider .hub-actions button { width: 100%; height: 100%; font-size: .8rem; padding-inline: 10px; }
.hub-provider .hub-connection > summary { min-height: 48px; }
.hub-provider .hub-diagnostics { border-radius: 12px; }
.hub-notice strong { line-height: 1.5; }

@media (min-width: 901px) and (max-width: 1180px) {
  .portal-body .portal-layout { grid-template-columns: 232px minmax(0, 1fr); }
  .portal-body .portal-main { padding-inline: 24px; }
  .portal-main .promotion-workspace { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 760px) {
  :where(html) { scroll-padding-top: 24px; }
  body:not(.portal-body) .cookie-panel {
    inset-inline: 12px; bottom: max(12px, env(safe-area-inset-bottom, 0px));
    width: auto; padding: 18px; grid-template-columns: minmax(0, 1fr); gap: 12px;
  }
  body:not(.portal-body) .cookie-panel__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body:not(.portal-body) .cookie-panel p { font-size: .8rem; }
  body:not(.portal-body) .cookie-panel strong { font-size: .88rem; }
  body:not(.portal-body) .program-card-body .button { align-self: stretch; text-align: center; }
  .portal-main .promotion-workspace { grid-template-columns: minmax(0, 1fr); }
  .portal-main .promotion-publish-row { display: flex; flex-direction: column; align-items: stretch; gap: 16px; }
  .portal-main .promotion-publish-row > * { width: 100%; min-width: 0; }
  .portal-main .promotion-brief-grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 520px) {
  .portal-main .page-head-actions { display: grid; grid-template-columns: minmax(0, 1fr); width: 100%; }
  .portal-main .page-head-actions > .button { width: 100%; }
  .portal-main .promotion-command-bar { display: flex; flex-wrap: wrap; gap: 12px; padding: 18px; }
  .portal-main .promotion-command-bar > :nth-child(2) { flex: 1 1 calc(100% - 40px); }
  .portal-main .promotion-command-bar__meta { flex: 1 1 110px; }
  .hub-task-statuses { grid-template-columns: minmax(0, 1fr); }
  .hub-task-status { display: grid; grid-template-columns: 62px minmax(0, 1fr); column-gap: 8px; align-items: start; }
  .hub-task-status small { grid-column: 2; }
  .hub-provider .hub-actions { grid-template-columns: minmax(0, 1fr); }
  .portal-main .promotion-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .portal-main .promotion-kpis article { padding: 14px 10px; gap: 8px; }
  .portal-main .promotion-kpi-icon { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}
@media print {
  .cookie-panel, .ai-chat, .contact-dock, .portal-sidebar, .portal-topbar, .workspace-search { display: none !important; }
  .portal-layout { display: block; }
  .portal-main { padding: 0; }
}

/* experience-v32.css */
/* Release 32. Explicit homepage layouts; each photo owns its dimensions.
   Scoped rules intentionally override the legacy v25-v31 flex/grid cascade. */
body:not(.portal-body) .home-teachers { --teacher-columns:4; display:grid; grid-template-columns:repeat(var(--teacher-columns),minmax(0,1fr)); align-items:stretch; }
body:not(.portal-body) .home-teachers[data-columns="2"] { --teacher-columns:2; }
body:not(.portal-body) .home-teachers .teacher-card { min-width:0; height:auto; background:#fff; }
body:not(.portal-body) .home-teachers .teacher-photo { display:block; position:relative; flex:none; width:100%; height:auto; min-height:0; aspect-ratio:4/5; overflow:hidden; background:#eaf1f5; }
body:not(.portal-body) .home-teachers[data-columns="2"] .teacher-photo { aspect-ratio:4/3; }
body:not(.portal-body) .home-teachers .teacher-photo img { display:block; position:static; width:100%; height:100%; object-fit:cover; object-position:center 22%; }
body:not(.portal-body) .home-teachers .teacher-photo img[hidden], .teacher-photo__placeholder[hidden] { display:none; }
.teacher-photo__placeholder { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:18px; color:#42677c; background:linear-gradient(140deg,#edf5f9,#d9e7ee); padding:24px; text-align:center; }
.teacher-photo__placeholder > span { display:grid; place-items:center; width:92px; height:92px; border-radius:50%; font-size:2.8rem; background:#fff; }
body:not(.portal-body) .home-teachers .teacher-body { padding:clamp(20px,2.1vw,30px); gap:12px; }
body:not(.portal-body) .home-teachers .teacher-position { color:#4b6678; font-size:.86rem; line-height:1.5; }
body:not(.portal-body) .home-teachers[data-columns="2"] .teacher-body h3 { font-size:clamp(1.35rem,2.1vw,1.85rem); }
body:not(.portal-body) .home-teachers .teacher-bio { line-height:1.7; overflow-wrap:anywhere; }
body:not(.portal-body) .home-teachers .teacher-bio p + p { margin-top:12px; }
body:not(.portal-body) .home-programs { --program-gap:clamp(18px,2vw,28px); display:grid; gap:var(--program-gap); }
body:not(.portal-body) .home-program-row { --program-columns:4; display:flex; flex-wrap:wrap; justify-content:center; align-items:stretch; gap:var(--program-gap); }
body:not(.portal-body) .home-program-row[data-columns="1"] { --program-columns:1; }
body:not(.portal-body) .home-program-row[data-columns="2"] { --program-columns:2; }
body:not(.portal-body) .home-program-row[data-columns="3"] { --program-columns:3; }
body:not(.portal-body) .home-program-row > .program-card { flex:0 0 calc((100% - (var(--program-columns) - 1)*var(--program-gap))/var(--program-columns)); min-width:0; height:auto; max-width:100%; }
body:not(.portal-body) .home-program-row .program-image { flex:none; aspect-ratio:3/2; height:auto; min-height:0; }
body:not(.portal-body) .home-program-row .program-image img { width:100%; height:100%; object-fit:cover; }
body:not(.portal-body) .home-program-row .program-card-body { gap:14px; }
body:not(.portal-body) .home-program-row .card-link { margin-top:auto; padding-top:8px; }
body:not(.portal-body) .home-program-row .program-card:focus-visible { outline:3px solid #0878ad; outline-offset:5px; }
@media (min-width:1100px) {
  body:not(.portal-body) .home-program-row[data-columns="1"] > .program-card { flex-basis:100%; max-width:1120px; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  body:not(.portal-body) .home-program-row[data-columns="1"] .program-image { height:100%; min-height:280px; }
  body:not(.portal-body) .home-program-row[data-columns="1"] .program-card-body { justify-content:center; padding:clamp(28px,3.5vw,52px); }
  body:not(.portal-body) .home-program-row[data-columns="1"] h3 { font-size:1.7rem; }
}
/* Administration: hierarchy, readable long labels, comfortable mobile controls. */
.portal-body .layout-settings { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(230px,.85fr); gap:28px; padding:4px 0; }
.layout-settings__controls { display:grid; gap:22px; min-width:0; }
.layout-settings__controls > label { display:grid; gap:9px; }
.layout-settings :is(select,textarea) { width:100%; min-width:0; min-height:46px; }
.layout-settings :is(p,small) { color:#4d6576; line-height:1.65; }
.layout-row-settings { border-top:1px solid #dce7ee; padding-top:22px; }
.layout-row-settings h3 { margin:0 0 8px; font-size:1rem; }
.layout-row-settings p { margin:0 0 16px; font-size:.88rem; }
.layout-row-editor[hidden], [data-program-rows-source][hidden] { display:none; }
.layout-row-editor { display:grid; gap:14px; }
[data-program-row-list] { display:grid; gap:10px; }
.layout-row-control { display:grid; grid-template-columns:1fr 82px 44px; align-items:center; gap:10px; padding:12px; border:1px solid #d7e4ec; border-radius:12px; background:#f7fafc; }
.layout-row-control label { font-weight:600; font-size:.9rem; }
.layout-row-control button { display:grid; place-items:center; min-width:44px; min-height:44px; padding:0; border:1px solid #d7e4ec; border-radius:9px; color:#7b3540; background:#fff; cursor:pointer; font-size:1.4rem; }
.layout-preview { min-width:0; border:1px solid #d7e4ec; background:#f7fafc; border-radius:16px; padding:22px; align-self:start; }
.layout-preview h3 { margin:6px 0 10px; font-size:1.1rem; }
.layout-preview h4 { margin:24px 0 10px; font-size:.9rem; }
.layout-preview__hint, .layout-preview > small { display:block; font-size:.82rem; }
.layout-preview__teachers { display:grid; grid-template-columns:repeat(var(--preview-columns,4),minmax(0,1fr)); gap:8px; }
.layout-preview__teacher { display:grid; gap:8px; justify-items:center; border-radius:9px; border:1px solid #cbdae5; background:#fff; padding:12px 4px; font-size:.66rem; overflow-wrap:anywhere; }
.layout-preview__teacher::before { content:''; width:28px; height:28px; border-radius:50%; background:#bdd9e7; }
.layout-preview__row { display:flex; justify-content:center; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
.layout-preview__program { flex:0 0 calc((100% - (var(--preview-columns,4) - 1)*6px)/var(--preview-columns,4)); min-width:0; padding:12px 6px; border-radius:8px; border:1px solid #a8cbdd; background:#e8f3f9; color:#205573; text-align:center; font-size:.72rem; overflow-wrap:anywhere; }
[data-layout-summary] { font-size:.83rem; margin:18px 0; }
.metrika-help { background:#f0f7fa; border:1px solid #c4dce7; border-radius:14px; padding:22px; margin-bottom:24px; }
.metrika-help h3 { margin-top:0; }
.metrika-help :is(p,code) { overflow-wrap:anywhere; }
.content-layout-link { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin:0 0 18px; }
.content-layout-link p { margin:0; color:#526b7b; }
.content-item-name { display:flex; align-items:center; gap:14px; min-width:180px; }
.content-item-thumb { flex:none; width:52px; height:64px; object-fit:cover; object-position:center top; border:1px solid #d6e3eb; border-radius:9px; background:#eef4f8; }
.portal-body .settings-section { scroll-margin-top:92px; }
.portal-body .settings-section__head { flex-wrap:wrap; gap:16px; }
.portal-body .settings-section__identity { min-width:0; }
.portal-body .settings-section__identity > div { min-width:0; }
.portal-body .settings-section__identity p { max-width:70ch; }
.portal-body :is(input,select,textarea):focus-visible { outline:3px solid #0878ad; outline-offset:2px; }
@media (max-width:1099px) {
  body:not(.portal-body) .home-teachers { --teacher-columns:2; }
  body:not(.portal-body) .home-program-row:is([data-columns="3"],[data-columns="4"]) { --program-columns:2; }
  .portal-body .layout-settings { grid-template-columns:minmax(0,1fr); }
}
@media (max-width:719px) {
  body:not(.portal-body) .home-teachers, body:not(.portal-body) .home-teachers[data-columns="2"] { --teacher-columns:1; }
  body:not(.portal-body) .home-teachers .teacher-photo, body:not(.portal-body) .home-teachers[data-columns="2"] .teacher-photo { aspect-ratio:4/3; }
  body:not(.portal-body) .home-program-row[data-columns] { --program-columns:1; }
  body:not(.portal-body) .home-program-row .program-card-body { padding:24px; }
  .layout-preview { padding:18px; }
  .layout-row-control { grid-template-columns:minmax(0,1fr) 70px 44px; padding:10px; gap:8px; }
  .layout-row-control label { font-size:.85rem; }
  .portal-body .metrika-help { padding:18px; }
  .portal-body .settings-section__icon { flex-shrink:0; }
  .portal-body .settings-section__count { margin-left:0; }
  .portal-body .content-layout-link > .button { width:100%; }
  .portal-body .layout-settings select { font-size:16px; }
}
@media (prefers-reduced-motion:reduce) {
  body:not(.portal-body) :is(.home-teachers .teacher-card,.home-program-row .program-card) { transition:none; transform:none; }
}
/* Long campaign titles/URLs must not determine the grid's minimum width. */
.portal-main .promotion-list { grid-template-columns:minmax(0,1fr); }
.portal-main :is(.promotion-card,.promotion-card__identity,.promotion-card__identity > div,.promotion-content-tabs,.promotion-tab-panel,.promotion-seo-preview) { min-width:0; }
.portal-main :is(.promotion-card__identity,.promotion-seo-preview,.promotion-keywords,.promotion-warning) { overflow-wrap:anywhere; }
.portal-main .promotion-article-preview > summary { flex-wrap:wrap; }
.portal-body .settings-section { scroll-margin-top:170px; }
@media (max-width:719px) {
  /* On a phone two sticky bars otherwise obscure a third of the viewport. */
  .portal-body .settings-search-panel { position:static; }
  .portal-body .settings-section { scroll-margin-top:90px; }
  .portal-body .settings-save-bar { padding:10px 12px; gap:8px; }
  .portal-body .settings-save-bar > div small { display:none; }
}

/* experience-v33.css */
/* Loaded after all legacy themes. Consent and maps share no sizing rules. */
.branch-yandex-map.external-consent-placeholder.is-loaded,
.yandex-map.external-consent-placeholder.is-loaded { display: block; position: relative; padding: 0; align-content: normal; }
.branch-yandex-map.external-consent-placeholder.is-loaded > iframe,
.yandex-map.external-consent-placeholder.is-loaded > iframe { position: absolute; inset: 0; display: block; width: 100%; height: 100%; min-height: 100%; border: 0; margin: 0; }
.branch-yandex-map.external-consent-placeholder { min-height: 260px; box-sizing: border-box; }
body.privacy-is-open { overflow: hidden; }
.privacy-overlay { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left)); background: rgba(9, 24, 36, .72); backdrop-filter: blur(4px); overflow: auto; overscroll-behavior: contain; box-sizing: border-box; }
.privacy-overlay[hidden] { display: none !important; }
.privacy-card { box-sizing: border-box; width: min(100%, 700px); max-height: calc(100dvh - 32px); max-height: min(calc(100dvh - 32px), calc(var(--visual-height, 100dvh) - 32px)); overflow-y: auto; overscroll-behavior: contain; background: #fff; color: #18384b; padding: clamp(18px, 3vw, 32px); border-radius: 20px; box-shadow: 0 28px 90px rgba(0, 0, 0, .25); overflow-wrap: anywhere; }
.privacy-card h2 { margin: 0 0 12px; line-height: 1.2; font-size: clamp(1.35rem, 4vw, 1.9rem); }
.privacy-card p, .privacy-document p { font-size: .95rem; line-height: 1.55; }
.privacy-options { display: grid; gap: 10px; margin: 18px 0; }
.privacy-options label { display: flex; align-items: flex-start; gap: 12px; padding: 14px; border: 1px solid #cdd9e1; border-radius: 12px; cursor: pointer; text-align: left; }
.privacy-options input[type=checkbox] { width: 22px; height: 22px; min-width: 22px; margin: 2px 0 0; accent-color: #0b5d8b; }
.privacy-options span { min-width: 0; }
.privacy-options strong, .privacy-options small { display: block; }
.privacy-options small { margin-top: 5px; color: #425c6a; line-height: 1.45; font-size: .84rem; }
.privacy-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.privacy-actions .button { min-height: 48px; white-space: normal; width: 100%; min-width: 0; font-size: .92rem; }
.privacy-actions .button:last-child { grid-column: 1 / -1; }
.privacy-legal-links a { text-decoration: underline; }
.privacy-document { max-width: 1000px; padding-top: 40px; padding-bottom: 50px; }
.privacy-noscript { padding: 20px; }
[data-privacy-status]:empty { display: none; }
@media(max-width: 380px) { .privacy-actions { grid-template-columns: 1fr; } .privacy-options label { padding: 10px; } }
@media(prefers-reduced-motion: reduce) { .privacy-overlay { backdrop-filter: none; } }
@media print { .privacy-overlay { display: none !important; } }
/* Safe editorial components: plain HTML, local media, no embedded scripts. */
.html-content .ai-callout, .content-article .ai-callout { border-left: 4px solid var(--brand, #0b5d8b); background: #eef6fa; padding: 20px 24px; margin: 24px 0; border-radius: 0 14px 14px 0; }
.html-content .ai-steps, .content-article .ai-steps { padding: 20px 28px 20px 44px; border: 1px solid #d5e2e9; border-radius: 16px; }
.html-content .ai-cover, .content-article .ai-cover { margin: 24px 0; }
.ai-cover img { display: block; width: 100%; max-height: 480px; object-fit: cover; border-radius: 16px; }
.ai-cover figcaption { font-size: .9rem; line-height: 1.5; color: #526878; margin: 8px 0; }
.ai-checklist li { margin: 10px 0; }

/* Administration: native forms remain usable without scripts. */
.pub-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; align-items:start; }
.pub-form { display:grid; gap:16px; margin:18px 0; min-width:0; }
.pub-form label { display:grid; gap:7px; min-width:0; font-weight:600; }
.pub-form input:not([type=checkbox]),.pub-form select,.pub-form textarea { width:100%; max-width:100%; min-width:0; padding:11px 12px; border:1px solid #cbd5e1; border-radius:10px; background:#fff; color:#17263c; }
.pub-form small,.pub-help,.pub-delivery small { color:#52627a; font-size:.88rem; font-weight:400; line-height:1.6; }
.pub-form fieldset { border:1px solid #dce4ed; border-radius:12px; padding:14px; min-width:0; }
.pub-form .pub-check,.pub-check { display:flex; flex-direction:row; gap:10px; align-items:flex-start; font-weight:400; margin:8px 0; }
.pub-check input { flex:0 0 auto; margin-top:5px; }
.pub-help { padding:14px; border-radius:12px; background:#f1f5f9; overflow-wrap:anywhere; }
.pub-channel,.pub-delivery { padding:18px; border:1px solid #dce4ed; border-radius:14px; min-width:0; overflow-wrap:anywhere; }
.pub-channel header,.pub-delivery header { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.pub-channel h3 { margin:0; }
.pub-channel details { margin:15px 0; }
.pub-badge { display:inline-block; padding:5px 10px; background:#eaf2fa; border-radius:16px; color:#24496b; font-size:.8rem; }
.pub-deliveries { display:grid; gap:12px; }.pub-actions { display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px; }
.quota-card { border:1px solid #dce4ed; border-radius:12px; padding:15px; margin:14px 0; background:#fff; min-width:0; overflow-wrap:anywhere; }
.quota-card h4 { margin:0 0 10px; }.quota-meters { display:grid; grid-template-columns:repeat(3,minmax(0,1fr));gap:10px; }
.quota-meters div { padding:10px;background:#f5f8fc;border-radius:10px; }.quota-meters strong { display:block; font-size:1.3rem; }
.quota-card small { font-size:.8rem; color:#52627a; }.quota-card details { margin-top:12px; }.quota-card summary { cursor:pointer; }
.pub-form [hidden], [data-publishing-channel-form] [hidden] { display:none!important; }
@media(max-width:900px){.pub-grid {grid-template-columns:minmax(0,1fr);} }
@media(max-width:460px){.quota-meters{grid-template-columns:1fr;}.pub-channel,.pub-delivery{padding:12px;}.pub-actions .button{width:100%;}.pub-form{gap:12px;}}

/* Keep refusal and acceptance visible even on a short mobile viewport. */
.privacy-card { display:flex; flex-direction:column; overflow:hidden; }
.privacy-card > h2,.privacy-card > p { flex-shrink:0; }
.privacy-card > form { display:flex; flex-direction:column; min-height:0; overflow:hidden; }
.privacy-card .privacy-scroll { min-height:0; overflow-y:auto; overscroll-behavior:contain; padding-right:4px; }
.privacy-card .privacy-actions { flex-shrink:0; padding-top:12px; border-top:1px solid #e1e7ec; background:#fff; }
.privacy-card [data-privacy-status] { flex-shrink:0; margin-bottom:0; }
.privacy-options label { flex-direction:row; }
.privacy-options small { font-weight:400; }
@media(max-height:450px){.privacy-card{padding:14px 20px;}.privacy-card > p{margin:4px 0;font-size:.85rem;}.privacy-card h2{font-size:1.2rem;margin-bottom:6px;}.privacy-actions .button{min-height:42px;padding:8px;}.privacy-card .privacy-actions{padding-top:8px;gap:6px;}}

/* experience-v34.css */
/* v34: full-width administration and responsive operational screens.
   Scoped layout changes leave the public reading measure and student portal intact. */
.admin-workspace .portal-main { width:100%; max-width:none; padding:clamp(16px,2vw,32px); }
.admin-workspace .portal-main > * { max-width:none; }
.admin-workspace .workspace-search { width:100%; max-width:none; margin-bottom:24px; }
.admin-workspace .workspace-search label { flex:1; min-width:0; }
.admin-workspace :is(.settings-shell,.settings-workspace,.settings-form,.settings-panel,.content-form) { max-width:none; min-width:0; }
.admin-workspace .portal-page-head { align-items:flex-start; gap:20px; }
.admin-workspace .portal-page-head p { max-width:78ch; }
.admin-workspace .portal-page-head .crm-actions { flex-shrink:0; }
.admin-workspace :is(.panel,.form-grid,.ops-two-columns,.workspace-queues) { min-width:0; }
.admin-workspace .workspace-queues { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; align-items:stretch; margin-bottom:24px; }
.admin-workspace .workspace-queues > .panel { margin:0; display:flex; flex-direction:column; }
.admin-workspace .workspace-queues .panel-head { align-items:flex-start; gap:14px; }
.admin-workspace .workspace-queues .panel-head h2 { font-size:1.08rem; line-height:1.45; }
.queue-count { display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; min-width:32px; height:32px; border-radius:10px; padding:0 8px; background:#edf5fa; color:#164c6a; font-size:.9rem; font-variant-numeric:tabular-nums; }
.admin-workspace .workspace-queues > .panel > .crm-muted { margin:0 0 8px; line-height:1.65; }
.admin-workspace .workspace-queues .crm-task { gap:12px; }
.admin-workspace .workspace-queues .crm-task > div { min-width:0; overflow-wrap:anywhere; }
.admin-workspace .workspace-queues > .panel > a:last-child { margin-top:auto; padding-top:12px; }
.ops-two-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; align-items:start; margin-bottom:24px; }
.ops-two-columns > .panel { margin:0; }
.ops-guide { background:linear-gradient(135deg,#fff,#f3f8fb); }
.ops-guide ol { padding-left:22px; margin-block:16px; }
.ops-guide li { padding-left:4px; margin-block:12px; line-height:1.7; }
.field-help { color:#526878; font-size:.9rem; font-weight:400; line-height:1.65; overflow-wrap:anywhere; }
label .field-help { display:block; }
.ops-status { display:inline-flex; align-items:center; gap:6px; border-radius:8px; padding:5px 10px; font-size:.85rem; font-weight:650; line-height:1.45; background:#edf2f6; color:#435b70; white-space:normal; }
.ops-status:is(.is-healthy,.is-ok,.is-sent,.is-accepted) { background:#e7f5ef; color:#1d624a; }
.ops-status:is(.is-stale,.is-missing,.is-error,.is-paused,.is-failed,.is-expired) { background:#fff2df; color:#805012; }
.ops-status:is(.is-running,.is-once,.is-recent,.is-pending,.is-sending) { background:#e9f3fb; color:#215479; }
.ops-status.is-revoked { background:#f8ecec; color:#823d43; }
.ops-worker-summary { display:flex; align-items:center; justify-content:space-between; gap:24px; }
.ops-worker-summary > div { min-width:0; }
.ops-worker-summary > .button { flex:0 0 auto; }
.ops-worker-summary p:last-child { margin-bottom:0; }
.ops-details { border-top:1px solid #dbe6ec; margin-top:24px; padding-top:12px; }
.ops-details summary { min-height:44px; padding:10px 0; cursor:pointer; font-weight:650; }
.ops-details p { max-width:90ch; line-height:1.7; }
.ops-code, .ops-guide pre, .ops-workflows pre { max-width:100%; overflow-x:auto; padding:16px; border:1px solid #d6e3eb; border-radius:12px; background:#f3f7fa; color:#213e51; font-size:.85rem; line-height:1.65; white-space:pre-wrap; overflow-wrap:anywhere; }
.ops-table { width:100%; }
.ops-table th { white-space:nowrap; }
.ops-table :is(td,th) { vertical-align:top; }
.ops-table td { overflow-wrap:anywhere; }
.ops-table .field-help { display:block; margin-top:4px; }
.ops-table .crm-actions { gap:8px; }
.invite-result { border-color:#8cb8cc!important; background:#f6fbfd; }
.invite-result input { width:100%; font-size:1rem; font-family:ui-monospace,monospace; padding:12px; margin-block:8px 16px; border:1px solid #bacfdd; border-radius:10px; color:#19394e; background:#fff; }
.invite-result .page-head-actions { margin-bottom:12px; }
.teacher-schedule-fields { border:0; padding:0; margin:0; min-width:0; }
.teacher-schedule-fields:disabled { opacity:.6; }
.admin-workspace [data-teacher-schedule] [hidden] { display:none!important; }
.admin-workspace .form-grid > :is(label,div,p) { min-width:0; }
.admin-workspace .form-grid input:not([type=checkbox]):not([type=radio]),
.admin-workspace .form-grid select,.admin-workspace .form-grid textarea { max-width:100%; min-width:0; }
.admin-workspace .form-grid :is(.form-wide,.full) { grid-column:1/-1; }
.admin-workspace :is(.table-wrap,.table-responsive) { border-radius:12px; }
.admin-workspace .table-wrap[tabindex] { scroll-margin-top:100px; }
.admin-workspace .portal-sidebar a.is-active { background:#ffffff1c; box-shadow:inset 3px 0 #8cd1e3; }
body:not(.portal-body) :is(.auth-card,.auth-box) { padding:clamp(20px,4vw,40px); }
body:not(.portal-body) :is(.auth-card,.auth-box) p { line-height:1.7; }
body:not(.portal-body) :is(.auth-card,.auth-box) .alert { margin-bottom:20px; }
body:not(.portal-body) :is(.program-card,.teacher-card,.price-card) { border:1px solid #e0e9ef; }
body:not(.portal-body) .hero-content h1 { text-wrap:balance; }
body:not(.portal-body) .section-heading h2 { text-wrap:balance; }
body:not(.portal-body) .contact-card { overflow-wrap:anywhere; }
@media(min-width:1800px) {
  .admin-workspace .workspace-queues { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media(max-width:1100px) {
  .ops-two-columns { grid-template-columns:minmax(0,1fr); gap:20px; }
  .admin-workspace .portal-page-head .crm-actions { flex-shrink:1; }
  .ops-worker-summary { align-items:flex-start; flex-direction:column; gap:16px; }
}
@media(max-width:700px) {
  .admin-workspace .portal-main { padding:16px 12px 28px; }
  .admin-workspace .workspace-queues { grid-template-columns:minmax(0,1fr); gap:14px; }
  .admin-workspace .portal-page-head { margin-bottom:20px; gap:16px; }
  .admin-workspace .workspace-search { margin-bottom:20px; gap:8px; }
  .admin-workspace .workspace-search input { padding-inline:12px; }
  .admin-workspace .workspace-search button { padding-inline:14px; }
  .admin-workspace .panel { padding:18px; border-radius:16px; }
  .ops-two-columns { gap:16px; }
  .ops-guide ol { padding-left:18px; }
  .admin-workspace :is(.form-grid,.teacher-schedule-fields) { grid-template-columns:minmax(0,1fr); }
  .ops-worker-summary > .button { width:100%; }
  .invite-result .page-head-actions > * { width:100%; }
  .ops-table { min-width:680px; }
  body :is(input,select,textarea) { font-size:16px; }
  body:not(.portal-body) :is(.auth-card,.auth-box) .button { width:100%; }
  body:not(.portal-body) .section-heading h2 { line-height:1.25; }
}
@media(prefers-reduced-motion:reduce) {
  .admin-workspace *, body:not(.portal-body) .hero-content * { scroll-behavior:auto!important; }
}

/* experience-v35.css */
/* v35: unified consent, branch cards and responsive publishing controls. */
:root { --privacy-banner-height: 0px; }
html { scroll-padding-bottom: calc(var(--privacy-banner-height) + 20px); }
body.privacy-is-open { overflow: auto; padding-bottom: var(--privacy-banner-height); }
.privacy-overlay.privacy-banner {
  inset: auto 0 0; display: block; padding: 12px max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));
  background: transparent; backdrop-filter: none; overflow: visible;
}
.privacy-banner .privacy-card {
  width: min(1180px,100%); margin-inline: auto; max-height: min(70dvh,580px);
  padding: 22px 26px; border: 1px solid #c9d9e3; border-radius: 18px;
  box-shadow: 0 -4px 40px #18394b26; background: #fff;
}
.privacy-banner .privacy-card h2 { font-size: 1.2rem; margin: 0 0 8px; line-height: 1.35; }
.privacy-banner .privacy-card p { margin: 0 0 10px; font-size: .91rem; line-height: 1.55; }
.privacy-banner .privacy-card .privacy-scroll { padding-right: 6px; }
.privacy-actions { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.privacy-actions .button:last-child { grid-column: auto; }
.privacy-banner .privacy-actions { padding-top: 12px; }
.privacy-banner .privacy-actions .button { min-height: 44px; }
.privacy-banner .privacy-legal-links { color: #415d6e; font-size: .83rem; }
.privacy-banner [data-privacy-status]:not(:empty) { padding-top: 10px; }
.privacy-is-open .ai-chat__launcher, .privacy-is-open .ai-chat__toggle { display: none; }

/* Keep all primary phones readable and remove legacy flex/row-marker spacing. */
.utility-row, .utility-contact, .utility-primary-phones { min-width: 0; }
.utility-contact { flex-wrap: wrap; row-gap: 8px; }
.utility-primary-phones { display: flex; flex-wrap: wrap; gap: 6px 20px; align-items: center; }
.utility-primary-phones .utility-phone { display: flex; flex-direction: column; justify-content: center; min-height: 44px; line-height: 1.35; }
.utility-primary-phones .utility-phone small { font-size: .67rem; font-weight: 400; color: #e0edf5; white-space: normal; max-width: 26ch; }
.utility-primary-phones .utility-phone span { white-space: nowrap; }
.utility-directory .top-phone-list {
  display: grid; grid-template-columns: minmax(0,1fr); grid-auto-flow: row;
  justify-content: stretch; align-content: start; align-items: stretch;
  width: min(360px,calc(100vw - 32px)); min-width: 0; gap: 0; padding: 8px;
  max-height: 65dvh; overflow-y: auto; text-align: left;
}
.utility-directory .top-phone-list > a {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: center;
  width: 100%; min-width: 0; margin: 0; padding: 10px 12px; min-height: 56px;
  text-align: left; border-radius: 8px; overflow-wrap: anywhere;
}
.utility-directory .top-phone-list > a + a { border-top: 1px solid #e1e9ee; }
.utility-directory .top-phone-list > a:hover { background: #edf5f9; }
.utility-directory .top-phone-list > a::after { content: none; }
.utility-directory .top-phone-list .phone-row-break { display: none; }
.site-footer a[href^="tel:"] { align-items: flex-start; text-align: left; }
.contact-options-grid .public-contact-card { text-align: left; }

/* Structured branch cards: restrained hierarchy, consistent reading order. */
.contacts-page-intro { max-width: 68ch; margin: 16px 0 0; color: #456171; line-height: 1.7; }
.branch-directory { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 28px; margin-top: 32px; align-items: start; }
.branch-public-card { min-width: 0; border: 1px solid #d8e4ec; background: #fff; border-radius: 22px; overflow: hidden; box-shadow: 0 8px 28px #1d4c6810; scroll-margin-top: 120px; }
.branch-public-card__body { padding: clamp(20px,2.5vw,32px); display: grid; gap: 24px; }
.branch-public-card h2 { margin: 6px 0 14px; font-size: clamp(1.45rem,2.2vw,1.9rem); line-height: 1.25; color: var(--brand-dark,#12384e); overflow-wrap: anywhere; }
.branch-public-card__address { color: #415b6b; line-height: 1.65; overflow-wrap: anywhere; }
.branch-public-card__address p { margin: 0 0 6px; }
.branch-card-section h3 { margin: 0 0 12px; font-size: .9rem; color: #4a6373; font-weight: 650; }
.branch-card-phones { display: grid; gap: 8px; }
.branch-card-phones a { display: flex; flex-direction: column; gap: 2px; min-height: 44px; align-items: flex-start; }
.branch-card-phones strong { color: var(--brand,#0b5d8b); font-size: 1.12rem; }
.branch-card-phones :is(span,small) { color: #506978; font-size: .82rem; }
.branch-language-tags { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 0; }
.branch-language-tags li { border: 1px solid #d8e8f1; background: #f1f7fb; color: #225876; border-radius: 999px; padding: 6px 12px; font-size: .88rem; overflow-wrap: anywhere; max-width: 100%; }
.branch-card-level { display: flex; align-items: center; justify-content: space-between; gap: 18px; border-radius: 12px; padding: 14px 16px; background: #f4f7fa; }
.branch-card-level span { color: #455f6e; font-size: .86rem; line-height: 1.5; }
.branch-card-level strong { color: var(--brand,#0b5d8b); font-size: 1.5rem; }
.branch-card-teachers { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; list-style: none; padding: 0; margin: 0; }
.branch-card-teachers li { display: flex; gap: 10px; align-items: center; min-width: 0; }
.branch-card-teachers :is(img,.branch-teacher-initial) { flex: 0 0 48px; width: 48px; height: 48px; border-radius: 50%; object-fit: cover; }
.branch-teacher-initial { display: grid; place-items: center; background: #ecf4f8; color: #246183; font-size: 1.2rem; font-weight: 600; }
.branch-card-teachers strong { display: block; color: #244557; font-size: .87rem; line-height: 1.45; overflow-wrap: anywhere; }
.branch-card-teachers small { display: block; color: #5a7180; font-size: .77rem; margin-top: 3px; overflow-wrap: anywhere; }
.branch-public-card__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.branch-public-card__actions:empty { display: none; }
.branch-public-card__actions .button { min-height: 46px; white-space: normal; }
.branch-carousel { position: relative; background: #edf3f6; }
.branch-carousel figure { position: relative; margin: 0; }
.branch-carousel [hidden] { display: none!important; }
.branch-carousel img { display: block; width: 100%; height: auto; aspect-ratio: 3/2; object-fit: cover; }
.branch-carousel figcaption { position: absolute; inset: auto 0 0; padding: 32px 18px 12px; background: linear-gradient(transparent,#102f49de); color: #fff; font-size: .84rem; line-height: 1.5; }
.branch-carousel__controls { display: flex; gap: 8px; align-items: center; padding: 8px 12px; background: #f2f6f9; border-bottom: 1px solid #dce6ed; }
.branch-carousel__controls button { display: inline-flex; justify-content: center; align-items: center; border: 1px solid #c6d8e3; border-radius: 8px; background: #fff; color: #254d65; padding: 6px 12px; min-height: 44px; min-width: 44px; font: inherit; cursor: pointer; }
.branch-carousel__controls [data-carousel-pause] { margin-left: auto; font-size: .82rem; }
.branch-carousel__controls [data-carousel-count] { color: #3c5e71; font-variant-numeric: tabular-nums; font-size: .82rem; }

/* Native checkboxes get a fixed control column, flexible multi-line caption. */
.portal-body .pub-check, .portal-body .pub-form .pub-check,
.portal-body .promotion-brief-grid .pub-check {
  display: grid; grid-template-columns: 22px minmax(0,1fr); gap: 10px;
  align-items: start; justify-content: start; padding: 12px 14px; margin: 0;
  min-width: 0; border: 1px solid #d4e1ea; border-radius: 10px;
  background: #f8fbfd; font-size: .92rem; line-height: 1.55; font-weight: 400;
  text-align: left; cursor: pointer;
}
.portal-body .pub-check input[type=checkbox] {
  display: block; position: static; appearance: auto; opacity: 1; transform: none;
  width: 20px; height: 20px; min-width: 20px; max-width: 20px; min-height: 20px;
  padding: 0; margin: 2px 0 0; border-radius: 4px; box-shadow: none; accent-color: var(--brand,#0b5d8b);
}
.portal-body .pub-check > span { min-width: 0; overflow-wrap: anywhere; }
.portal-body .pub-check:has(input:checked) { border-color: #77abc8; background: #eef7fc; }
.portal-body .pub-check:focus-within { outline: 2px solid #1779a8; outline-offset: 3px; }
.portal-body .pub-form fieldset .pub-check + .pub-check { margin-top: 10px; }
.portal-body .pub-grid > .panel { margin: 0; }
.portal-body .pub-grid { margin-bottom: 24px; }
.portal-body .pub-channel details > summary, .pub-help > summary { padding: 10px 0; min-height: 44px; cursor: pointer; }
.portal-body .pub-form .button { justify-self: start; white-space: normal; min-height: 44px; }
.portal-body .pub-actions .pub-check { flex-basis: 100%; }
.portal-body .pub-delivery header > strong { min-width: 0; overflow-wrap: anywhere; }

/* Branch editing: the same alignment and spacing as the publishing forms. */
.branch-visibility-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 12px; margin: 20px 0; }
.branch-visibility-grid .check-card { display: grid; grid-template-columns: 20px minmax(0,1fr); gap: 12px; align-items: start; margin: 0; min-width: 0; }
.branch-visibility-grid .check-card input[type=checkbox] { width: 20px; min-width: 20px; max-width: 20px; height: 20px; padding: 0; margin: 2px 0 0; accent-color: var(--brand,#0b5d8b); }
.branch-visibility-grid .check-card > span { min-width: 0; overflow-wrap: anywhere; }
.branch-photo-editor { min-width: 0; margin: 24px 0 0; padding: 20px; border: 1px solid #d3e1ea; border-radius: 14px; }
.branch-photo-editor legend { font-weight: 650; padding-inline: 8px; color: #244c63; }
.branch-photo-editor__actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0; }
.branch-photo-editor [hidden] { display: none!important; }
.branch-photo-row { display: grid; grid-template-columns: 100px minmax(0,1fr) minmax(0,1fr) auto; gap: 14px; align-items: center; padding: 16px 0; border-bottom: 1px solid #e0e8ee; }
.branch-photo-row label { min-width: 0; font-size: .85rem; }
.branch-photo-row input { width: 100%; min-width: 0; }
.branch-photo-row img,.branch-photo-placeholder { display: block; width: 100px; height: 76px; object-fit: cover; border-radius: 8px; background: #eff4f7; }
.branch-photo-placeholder { display: grid; place-items: center; color: #577486; }
.branch-photo-order { display: flex; flex-wrap: wrap; gap: 6px; }
.branch-photo-order .button { min-width: 44px; min-height: 44px; padding: 8px 10px; }
.branch-photo-order .button:disabled { opacity: .4; cursor: not-allowed; }
.branch-photo-row:last-child { border-bottom: 0; }

body :is(a,button,input,select,textarea,summary):focus-visible { outline: 3px solid #1680b3; outline-offset: 3px; }
@media(max-width:1200px) {
  .branch-visibility-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .branch-photo-row { grid-template-columns: 90px minmax(0,1fr); }
  .branch-photo-row > label:last-of-type { grid-column: 2; }
  .branch-photo-order { grid-column: 2; }
}
@media(max-width:1000px) {
  .branch-directory { grid-template-columns: minmax(0,1fr); max-width: 760px; }
  .utility-primary-phones { justify-content: center; gap: 6px 14px; }
}
@media(max-width:600px) {
  .privacy-banner .privacy-card { padding: 16px; max-height: 72dvh; border-radius: 14px; }
  .privacy-banner .privacy-card h2 { font-size: 1.08rem; }
  .privacy-banner .privacy-card p { font-size: .82rem; }
  .privacy-actions { grid-template-columns: minmax(0,1fr); gap: 7px; }
  .privacy-banner .privacy-actions { padding-top: 10px; }
  .privacy-actions .button { font-size: .87rem; padding: 8px 12px; }
  .utility-row { gap: 8px; }
  .utility-contact { justify-content: center; width: 100%; }
  .utility-primary-phones { width: 100%; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 4px 10px; }
  .utility-primary-phones .utility-phone { align-items: center; font-size: .84rem; text-align: center; }
  .utility-primary-phones .utility-phone small { font-size: .62rem; }
  .utility-directory { position: static; }
  .utility-contact { position: relative; }
  .utility-directory .top-phone-list { right: 50%; transform: translateX(50%); top: 100%; width: min(360px,calc(100vw - 32px)); }
  .branch-directory { gap: 20px; margin-top: 20px; }
  .branch-public-card { border-radius: 16px; }
  .branch-public-card__body { gap: 20px; }
  .branch-public-card__actions .button { width: 100%; }
  .branch-card-teachers { grid-template-columns: minmax(0,1fr); }
  .branch-visibility-grid { grid-template-columns: minmax(0,1fr); }
  .branch-photo-editor { padding: 12px; }
  .branch-photo-row { grid-template-columns: minmax(0,1fr); gap: 10px; }
  .branch-photo-row > label:last-of-type,.branch-photo-order { grid-column: auto; }
  .branch-photo-editor__actions > * { width: 100%; white-space: normal; }
  .portal-body .pub-form .button { justify-self: stretch; width: 100%; }
  .portal-body .pub-check { padding: 12px; }
}
@media(max-width:350px) { .utility-primary-phones { grid-template-columns: minmax(0,1fr); } }
@media(max-height:500px) {
  .privacy-banner .privacy-card { max-height: 85dvh; padding: 12px 16px; }
  .privacy-banner .privacy-actions { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; }
  .privacy-banner .privacy-actions .button { font-size: .76rem; padding: 6px; }
}
@media(prefers-reduced-motion:reduce) {
  .branch-public-card *, .privacy-banner * { animation: none!important; transition: none!important; scroll-behavior: auto!important; }
}
@media print { .privacy-banner,.branch-carousel__controls { display: none!important; } }

/* experience-v36.css */
/* v36: readable reviews, accessible overlays and task-oriented administration.
   No third-party assets, page-level clipping or JavaScript-dependent card heights. */
:root { --review-card-height: 25rem; }
body:not(.portal-body) .section-dark .section-heading-light p { color: #cbdce7; }
body:not(.portal-body) .review-grid { align-items: stretch; }
body:not(.portal-body) .review-grid > .review-card--uniform {
  display: flex; flex-direction: column; height: var(--review-card-height); min-height: 0;
  min-width: 0; padding: 26px; gap: 14px; margin: 0; background: #fff; color: #183749;
  border: 1px solid #dde7ee; border-radius: 20px; box-shadow: 0 8px 28px #061c2c16;
}
.review-card--uniform .review-card__top { flex: 0 0 auto; align-items: center; min-height: 32px; }
.review-card--uniform .stars { font-size: 1.15rem; letter-spacing: .12em; color: #a56b0a; }
.review-card--uniform .review-source { background: #f3f5f8; color: #42586b; font-size: .72rem; }
.review-card--uniform .review-card__excerpt {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6; line-clamp: 6;
  overflow: hidden; overflow-wrap: anywhere; font-size: 1rem; line-height: 1.65;
  margin: 0; max-height: 9.9em; flex: 0 1 auto; color: #314b5d;
}
.review-card--uniform .review-card__read {
  display: inline-flex; align-items: center; gap: 12px; align-self: flex-start;
  min-height: 44px; flex: 0 0 auto; color: #085b85; font-size: .9rem; font-weight: 700;
  text-decoration: underline; text-underline-offset: 4px;
}
.review-card--uniform .review-card__read:hover { color: #033b5a; }
body:not(.portal-body) .review-card--uniform footer {
  display: grid; gap: 4px; flex: 0 0 auto; margin: auto 0 0; padding: 14px 0 0;
  border-top: 1px solid #e2eaf0; min-height: 94px;
}
.review-card--uniform footer strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.4; }
.review-card--uniform .review-card__meta { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; font-size: .78rem; line-height: 1.5; max-height: 3em; color: #546a7b; }
.review-card--uniform footer :is(a,small) { color: #435f72; font-size: .77rem; line-height: 1.5; }
.review-card--uniform footer a { min-height: 28px; display: inline-flex; align-items: center; text-decoration: underline; text-underline-offset: 3px; }
.review-dialog { width: min(720px,calc(100% - 32px)); max-width: none; max-height: min(88dvh,800px); margin: auto; padding: 0; border: 1px solid #c8d9e4; border-radius: 22px; color: #19384b; background: #fff; box-shadow: 0 24px 100px #071b3680; overflow: hidden; }
.review-dialog:not([open]) { display: none; }
.review-dialog[open] { display: flex; flex-direction: column; }
.review-dialog::backdrop { background: #0b203abc; backdrop-filter: blur(4px); }
body.review-dialog-open { overflow: hidden; }
.review-dialog__head { display: flex; flex: 0 0 auto; justify-content: space-between; align-items: flex-start; gap: 20px; padding: 24px 28px 18px; border-bottom: 1px solid #e1e9ee; }
.review-dialog__head > div { min-width: 0; }
.review-dialog__head h2 { margin: 6px 0; font-size: clamp(1.2rem,3vw,1.7rem); line-height: 1.3; overflow-wrap: anywhere; }
.review-dialog__head p { margin: 0; color: #526879; font-size: .86rem; line-height: 1.6; overflow-wrap: anywhere; max-height: 5.2em; overflow-y: auto; }
.review-dialog__close { display: grid; place-items: center; width: 44px; height: 44px; flex: 0 0 44px; border: 1px solid #d4e1e9; border-radius: 12px; font-size: 28px; line-height: 1; background: #f3f7fa; color: #234b62; cursor: pointer; }
.review-dialog__body { min-height: 0; overflow-y: auto; overflow-wrap: anywhere; overscroll-behavior: contain; padding: 24px 28px; line-height: 1.8; font-size: 1rem; color: #294859; }
.review-dialog__body > :first-child { margin-top: 0; }
.review-dialog__body > :last-child { margin-bottom: 0; }
.review-dialog__body :is(img,table,pre) { max-width: 100%; }
.review-dialog__body :is(table,pre) { overflow: auto; display: block; }
.review-dialog__body a { color: #075f8a; text-decoration: underline; }
.review-dialog__footer { display: flex; justify-content: space-between; gap: 16px; align-items: center; flex: 0 0 auto; padding: 16px 28px; border-top: 1px solid #e1e9ee; }
.review-dialog__footer .button { min-height: 44px; }
.review-detail { padding-block: 32px; overflow-wrap: anywhere; }
.review-detail .html-content { margin-block: 24px; line-height: 1.8; }

/* Typing feedback is visual only; a stable text alternative is announced once. */
.ai-chat__message.is-pending p::after { content: none; animation: none; }
.ai-chat__message.is-pending { width: fit-content; min-width: 88px; }
.ai-chat__message .ai-chat__typing { display: flex; align-items: center; min-height: 44px; margin: 0; padding: 10px 13px; }
.ai-chat__typing-dots { display: inline-flex; align-items: center; gap: 5px; height: 20px; }
.ai-chat__typing-dots i { display: block; width: 7px; height: 7px; border-radius: 50%; background: #567488; animation: ll-typing 1.25s ease-in-out infinite; }
.ai-chat__typing-dots i:nth-child(2) { animation-delay: .16s; }
.ai-chat__typing-dots i:nth-child(3) { animation-delay: .32s; }
@keyframes ll-typing { 0%,60%,100% { transform: translateY(0); opacity: .45; } 30% { transform: translateY(-5px); opacity: 1; } }

.portal-body .yandex-branch-card__head { flex-wrap: wrap; gap: 12px; }
.portal-body .yandex-branch-card__head > div { min-width: 0; }
.portal-body .yandex-branch-card__head .status { max-width: 100%; white-space: normal; overflow-wrap: anywhere; }

/* Shared desktop refinements preserve the established blue/red brand. */
.portal-body .panel { box-shadow: 0 4px 18px #17374b05; }
.portal-body .panel-head { gap: 16px; }
.portal-body .panel-head > div { min-width: 0; }
.portal-body .portal-page-head .page-head-actions { align-items: center; }
.portal-body .table-wrap table th { color: #455e71; font-size: .78rem; letter-spacing: .015em; }
.portal-body .table-wrap table td { vertical-align: top; }
.portal-body :is(.review-filters,.review-bulk) label { font-size: .86rem; line-height: 1.5; }
.portal-body :is(.review-filters,.review-bulk) :is(input,select) { min-height: 44px; }
.review-filters { display: grid; grid-template-columns: minmax(180px,1.5fr) repeat(3,minmax(130px,1fr)); gap: 14px; margin: 22px 0; align-items: end; }
.review-filters > label { display: flex; flex-direction: column; min-width: 0; }
.review-filters :is(input,select) { width: 100%; min-width: 0; }
.review-filter-actions { display: flex; flex-wrap: wrap; gap: 10px; grid-column: 1/-1; }
.review-bulk { padding: 20px; margin: 0 0 20px; border: 1px solid #c8dce9; border-radius: 14px; background: #f3f8fc; }
.review-bulk__top { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; margin-bottom: 14px; }
.portal-body .review-select-page:not([hidden]) { display: inline-flex; align-items: center; min-height: 44px; cursor: pointer; }
.review-bulk__top > span { color: #355e77; font-size: .86rem; font-variant-numeric: tabular-nums; }
.review-bulk__actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; }
.review-bulk__actions > label { display: flex; flex: 1 1 220px; max-width: 420px; flex-direction: column; min-width: 0; }
.review-bulk__actions select { width: 100%; }
.portal-body .review-confirm { display: grid; grid-template-columns: 22px minmax(0,1fr); align-items: start; gap: 10px; margin-top: 18px; min-height: 44px; cursor: pointer; font-weight: 400; }
.portal-body .review-confirm input[type=checkbox], .portal-body .review-select input[type=checkbox] { appearance: auto; width: 20px; height: 20px; min-height: 20px; margin: 2px 0 0; padding: 0; flex: 0 0 20px; accent-color: var(--brand); }
.portal-body .review-select input[type=checkbox] { margin: 10px; cursor: pointer; }
.review-bulk .field-help { margin: 12px 0 0; font-size: .8rem; }
.reviews-admin-table { width: 100%; table-layout: fixed; }
.reviews-admin-table .review-select { width: 52px; padding-inline: 4px; }
.reviews-admin-table th:nth-child(2) { width: 30%; }
.reviews-admin-table th:last-child { width: 135px; }
.reviews-admin-table td { white-space: normal; overflow-wrap: anywhere; }
.reviews-admin-table .review-main > strong { font-size: .94rem; }
.reviews-admin-table .review-snippet { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; margin: 8px 0 0; max-width: none; font-size: .85rem; line-height: 1.65; color: #526b7b; }
.reviews-admin-table .block { margin-top: 6px; }
.reviews-admin-table .actions { display: table-cell; white-space: normal; }
.reviews-admin-table .actions > * { margin: 0 0 8px; }
.reviews-admin-table .button { width: 100%; min-height: 44px; }
.reviews-admin-table tr.is-selected td { background: #eaf5fb; }
.review-pagination { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px; margin-top: 20px; font-size: .87rem; color: #4c6779; }
.review-pagination > div { display: flex; flex-wrap: wrap; gap: 10px; }
.cron-domain { display: block; width: fit-content; max-width: 100%; padding: 10px 16px; background: #edf5fa; border-radius: 10px; color: #174f6c; font-weight: 700; font-size: 1.1rem; overflow-wrap: anywhere; }
.cron-origin .field-help { max-width: 90ch; }
.ops-table code { white-space: nowrap; }
.ops-status.is-warning { background: #fff2df; color: #805012; }
.ops-guide summary { min-height: 44px; padding-block: 10px; cursor: pointer; font-weight: 650; }

@media (max-width:1280px) {
  .review-filters { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width:1100px) {
  .reviews-admin-table, .reviews-admin-table tbody { display: block; min-width: 0; }
  .reviews-admin-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
  .reviews-admin-table tbody { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 16px; }
  .reviews-admin-table tr { position: relative; display: grid; grid-template-columns: 44px minmax(0,1fr); align-content: start; padding: 14px; gap: 10px 2px; border: 1px solid #d9e5ec; border-radius: 14px; background: #fff; }
  .reviews-admin-table tr.is-selected { border-color: #5098bc; background: #edf7fc; }
  .reviews-admin-table :is(td,th) { width: auto; border: 0; padding: 0; background: transparent!important; }
  .reviews-admin-table td.review-select { grid-column: 1; grid-row: 1; width: 44px; padding: 0; }
  .reviews-admin-table td.review-main { grid-column: 2; padding-top: 7px; }
  .reviews-admin-table td[data-label] { grid-column: 2; font-size: .83rem; }
  .reviews-admin-table td[data-label]::before { content: attr(data-label); display: block; color: #617689; font-size: .72rem; margin-bottom: 4px; }
  .reviews-admin-table .review-main .review-snippet { -webkit-line-clamp: 4; }
  .reviews-admin-table td.actions { display: flex; flex-wrap: wrap; grid-column: 1/-1; gap: 8px; padding-top: 8px; border-top: 1px solid #e0e9ef; }
  .reviews-admin-table .actions > * { flex: 1 1 90px; margin: 0; }
  .reviews-admin-table td[colspan] { grid-column: 1/-1; }
  .reviews-table-wrap { overflow: visible!important; border: 0!important; }
}
@media (max-width:700px) {
  body:not(.portal-body) .review-grid > .review-card--uniform { padding: 22px; }
  .reviews-admin-table tbody { grid-template-columns: minmax(0,1fr); }
  .review-dialog { width: calc(100% - 20px); max-height: calc(100dvh - 24px); border-radius: 18px; }
  .review-dialog__head { padding: 18px; gap: 10px; }
  .review-dialog__body { padding: 18px; }
  .review-dialog__footer { padding: 14px 18px max(14px,env(safe-area-inset-bottom)); gap: 10px; flex-wrap: wrap; }
  .review-dialog__footer > * { flex: 1 1 auto; }
  .review-dialog__footer .button { width: 100%; }
  .review-bulk { padding: 16px; }
  .review-bulk__actions { align-items: stretch; flex-direction: column; }
  .review-bulk__actions > label { flex: none; max-width: none; }
  .portal-body :is(.review-filters,.review-bulk) :is(input,select) { font-size: 16px; }
  .portal-body .panel-head { flex-wrap: wrap; }
  .portal-body .page-head-actions { width: 100%; }
  .portal-body .page-head-actions > :is(a,form) { flex: 1 1 180px; }
  .portal-body .page-head-actions > form .button { width: 100%; }
  .review-pagination { align-items: stretch; flex-direction: column; }
  .review-pagination .button { flex: 1; }
  .cron-domain { font-size: .95rem; }
}
@media (max-width:420px) {
  .review-filters { grid-template-columns: minmax(0,1fr); }
  .review-bulk__top { gap: 8px; }
  .review-bulk__top strong { flex-basis: 100%; }
}
@media (prefers-reduced-motion:reduce) {
  .ai-chat__typing-dots i { animation: none; opacity: .7; }
}
@media (forced-colors:active) {
  .ai-chat__typing-dots i { background: CanvasText; }
  .reviews-admin-table tr.is-selected { outline: 2px solid Highlight; }
}

/* experience-v37.css */
/* v37: compact reviews, quieter layouts and usable narrow-screen forms.
   No viewport overflow masking. Tables scroll inside their own labelled region. */
:root { --review-card-height: 22.5rem; }
body:not(.portal-body) .review-grid.review-carousel__track {
  display: grid; grid-auto-flow: column; grid-template-columns: none;
  grid-auto-columns: calc((100% - 40px) / 3); gap: 20px;
  align-items: stretch; overflow-x: auto; overflow-y: hidden;
  scroll-snap-type: x mandatory; overscroll-behavior-x: contain;
  padding: 4px 0 12px; scrollbar-width: thin; min-width: 0;
}
body:not(.portal-body) .review-carousel__track > .review-card--uniform {
  display: grid; grid-template-rows: auto minmax(0,1fr) auto; gap: 12px;
  height: auto; padding: 22px; min-width: 0; scroll-snap-align: start;
  border-radius: 18px; box-shadow: 0 6px 20px #061c2c14;
}
body:not(.portal-body) .reviews-enhanced .review-carousel__track > .review-card--uniform {
  height: var(--review-card-height); grid-template-rows: 28px minmax(0,1fr) auto;
}
.review-card--uniform .review-card__content { min-width: 0; min-height: 0; }
.reviews-enhanced .review-card__content {
  display: grid; grid-template-rows: minmax(0,1fr) auto; gap: 4px; min-height: 0;
}
.review-carousel__track .review-card__excerpt {
  display: block; -webkit-line-clamp: unset; line-clamp: unset; max-height: none;
  margin: 0; line-height: 1.6; font-size: .96rem; overflow: visible;
}
.reviews-enhanced .review-card__excerpt { overflow: hidden; min-height: 0; align-self: stretch; }
.review-carousel__track .review-card__read {
  grid-row: 2; align-self: center; min-height: 40px; margin: 0; font-size: .86rem;
}
.review-carousel__track [hidden], .review-carousel__controls[hidden] { display: none!important; }
.review-carousel__track .review-card__top .stars { margin: 0; }
body:not(.portal-body) .review-carousel__track .review-card--uniform footer {
  min-height: 82px; margin: 0; padding-top: 10px; gap: 2px;
}
.review-carousel__track .review-card--uniform footer a { margin-top: 0; }
.review-carousel__controls {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  margin-top: 12px; color: #e1edf5;
}
.review-carousel__arrows { display: flex; align-items: center; gap: 16px; }
.review-carousel__controls button {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; min-height: 44px; padding: 8px 15px; border: 1px solid #94b3c5;
  background: #ffffff10; color: #fff; font: inherit; border-radius: 12px; cursor: pointer;
}
.review-carousel__controls button:hover { background: #ffffff25; }
.review-carousel__controls button:disabled { color: #d6e3ec; cursor: default; }
.review-carousel__controls [data-review-count] { font-variant-numeric: tabular-nums; font-size: .88rem; }
.review-carousel__track > .empty-public-state { grid-column: 1; width: 100%; }

/* Consistent visual hierarchy while keeping the current brand and photography. */
body:not(.portal-body) .section { padding-block: clamp(48px,6vw,88px); }
body:not(.portal-body) .section-heading { margin-bottom: clamp(28px,3vw,40px); }
body:not(.portal-body) .section-heading h2 { text-wrap: balance; line-height: 1.16; }
body:not(.portal-body) .section-heading p { max-width: 64ch; margin-inline: auto; line-height: 1.65; }
body:not(.portal-body) .auth-card h1 { line-height: 1.12; text-wrap: balance; }
body:not(.portal-body) :is(.program-card-body,.teacher-body,.price-card) { min-width: 0; }
body:not(.portal-body) :is(.program-card h3,.teacher-body h3,.price-card h3) { overflow-wrap: anywhere; }
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible {
  outline: 3px solid #2585b6; outline-offset: 3px;
}
.section-dark :where(a,button,[tabindex]):focus-visible { outline-color: #b9e2fa; }
.portal-body .portal-main { min-width: 0; }
.portal-body .portal-page-head h1 { text-wrap: balance; letter-spacing: -.025em; line-height: 1.16; }
.portal-body .portal-page-head p { max-width: 72ch; line-height: 1.65; }
.portal-body .panel-head { align-items: flex-start; gap: 16px; }
.portal-body .panel-head :is(h2,p) { overflow-wrap: anywhere; }
.portal-body :is(.form-grid,.filter-row,.page-head-actions,.sticky-actions) > * { min-width: 0; }
.portal-body .form-grid > label { line-height: 1.5; }
.portal-body .form-grid :is(input,select,textarea) { max-width: 100%; }
.portal-body .table-wrap { max-width: 100%; overscroll-behavior-inline: contain; }
.portal-body .table-wrap th { line-height: 1.4; }
.portal-body .table-wrap td { line-height: 1.5; }
.portal-body .table-wrap tbody tr:hover { background: #f4f8fb; }
.portal-body .filter-row { flex-wrap: wrap; row-gap: 12px; }
.portal-body :is(.page-head-actions,.sticky-actions,.reauth-actions) { flex-wrap: wrap; }
.password-issued { max-width: 780px; }
.password-issued h1 { line-height: 1.2; text-wrap: balance; }
.password-copy-row { display: flex; align-items: stretch; gap: 10px; margin-top: 8px; }
.password-copy-row input { min-width: 0; flex: 1; font: 600 1.1rem/1.5 ui-monospace,monospace; letter-spacing: .025em; }
.password-copy-row .button { flex-shrink: 0; }
.password-reset-panel p { max-width: 76ch; }
.password-reset-panel form { display: grid; gap: 18px; justify-items: start; }
.password-reset-panel .check-card { max-width: 100%; }
.backup-health { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 20px; align-items: start; }
.backup-health h2 { margin-top: 0; }
.backup-health p { margin-bottom: 0; max-width: 76ch; }
.backup-health code { overflow-wrap: anywhere; }
.password-change-page { min-height: 100dvh; padding: 24px 16px; display: grid; place-items: center; }
.password-change-page .mfa-card { width: min(100%,540px); margin: auto; box-sizing: border-box; }
.password-change-page .eyebrow { color: #36647c; font-weight: 650; letter-spacing: .06em; font-size: .8rem; }
.password-change-page h1 { line-height: 1.15; }
.password-change-page input { font-size: 16px; letter-spacing: normal; box-sizing: border-box; width: 100%; }
.password-change-page form > button { margin-top: 18px; }
.password-change-page .password-exit { background: #eef4f8; color: #234c64; border: 1px solid #cbdde8; }
.password-change-page .alert-danger { background: #fff2f1; border: 1px solid #ebc4c1; color: #8a2923; padding: 14px; border-radius: 10px; }
@media (max-width:1100px) {
  body:not(.portal-body) .review-grid.review-carousel__track { grid-auto-columns: calc((100% - 20px) / 2); }
}
@media (max-width:700px) {
  body:not(.portal-body) .review-grid.review-carousel__track { grid-auto-columns: 100%; gap: 16px; }
  body:not(.portal-body) .review-carousel__track > .review-card--uniform { padding: 20px; }
  body:not(.portal-body) .section-heading h2 { font-size: clamp(1.75rem,7vw,2.4rem); }
  body:not(.portal-body) :is(.auth-card,.lead-form) :is(input,textarea,select) { font-size: 16px; }
  .portal-body .portal-page-head { gap: 18px; }
  .portal-body .portal-page-head h1 { font-size: clamp(1.6rem,7vw,2.2rem); }
  .portal-body .panel-head { flex-wrap: wrap; }
  .portal-body :is(.filter-row,.page-head-actions) > :is(input,select,label) { flex: 1 1 180px; }
  .portal-body :is(.button,input:not([type=checkbox]):not([type=radio]),select) { min-height: 44px; }
  .portal-body :is(input,select,textarea) { font-size: 16px; }
  .portal-body .sticky-actions { gap: 10px; padding-bottom: max(12px,env(safe-area-inset-bottom)); }
  .portal-body .sticky-actions > .button { flex: 1 1 150px; }
  .password-copy-row { flex-wrap: wrap; }
  .password-copy-row input { flex-basis: 100%; width: 100%; }
  .password-copy-row .button { width: 100%; }
  .password-reset-panel form, .password-reset-panel form > .button { width: 100%; }
  .backup-health { grid-template-columns: minmax(0,1fr); gap: 12px; }
}
@media (prefers-reduced-motion:reduce) {
  .review-carousel__track { scroll-behavior: auto!important; }
}
@media print {
  [data-password-issued] #temporary-password { visibility: hidden; }
}

/* experience-v38.css */
/* Release 38: shared responsive polish. Loaded LAST by both base templates.
   Review card height is configured ONLY by the two variables below.
   Without JavaScript reviews retain their full text and natural height. */
:root {
  --review-card-height: 16.5rem; /* Desktop / tablet: 296px with a 16px root. */
  --portal-action-height: 0px;
}

/* Compact cards, with space reserved for the author and the full-text action. */
body:not(.portal-body) .review-carousel__track > .review-card--uniform {
  padding: 18px; gap: 10px;
}
body:not(.portal-body) .reviews-enhanced .review-carousel__track > .review-card--uniform {
  grid-template-rows: 24px minmax(0, 1fr) auto;
}
body:not(.portal-body) .review-carousel__track .review-card--uniform footer {
  min-height: 64px; padding-top: 8px; border-top: 1px solid #e1eaf0;
}
.review-carousel__track .review-card__read { min-height: 44px; }
.review-carousel__track .review-card__excerpt { line-height: 1.55; }
.review-carousel__controls { flex-wrap: wrap; }
.review-carousel__arrows { gap: 12px; }
.review-card--uniform footer :is(strong, .review-card__meta) { overflow-wrap: anywhere; }
body:not(.portal-body) .review-carousel__track > .empty-public-state { grid-column: 1 / -1; }

/* A consistent reading rhythm and shorter, expandable teacher biographies. */
body:not(.portal-body) .section { padding-block: clamp(44px, 5vw, 76px); }
body:not(.portal-body) .section-heading { margin-bottom: clamp(24px, 3vw, 36px); }
body:not(.portal-body) .program-card-body { display: flex; flex-direction: column; flex: 1; }
body:not(.portal-body) .program-card-body .card-link { margin-top: auto; padding-top: 14px; }
body:not(.portal-body) .teacher-body { display: flex; flex-direction: column; flex: 1; }
.teacher-bio-summary { margin: 12px 0 16px; color: #486271; font-size: .92rem; line-height: 1.65; }
.teacher-bio-details { margin-top: auto; border-top: 1px solid #dce7ee; }
.teacher-bio-details > summary {
  min-height: 44px; padding-block: 12px; cursor: pointer;
  color: var(--brand, #0b5d8b); font-size: .9rem; font-weight: 650;
}
.teacher-bio-details .teacher-bio { padding-bottom: 8px; }
.teacher-bio-details[open] > summary { margin-bottom: 8px; }
body:not(.portal-body) .price-card .button { min-height: 44px; }
body:not(.portal-body) .footer-grid a { line-height: 1.6; }
.utility-directory > summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; }
.utility-directory > summary::after { content: '\25BE'; margin-left: 6px; font-size: .8em; }
.utility-directory[open] > summary::after { content: '\25BE'; transform: rotate(180deg); }
.utility-directory > summary::-webkit-details-marker { display: none; }
.header-phones-empty { color: inherit; font-size: .85rem; }

/* Hidden role fields stay hidden even in the presence of older layout rules. */
[data-student-profile][hidden] { display: none !important; }
.student-profile__fields { margin: 0; padding: 0; border: 0; min-width: 0; }
.portal-body [data-user-form] { max-width: 1120px; }
.portal-body .portal-main .eyebrow { color: #476a7f; }
.portal-body .portal-page-head { align-items: flex-start; }
.portal-body .portal-page-head p { margin-bottom: 0; }
.portal-body :is(.panel, .settings-search-panel, .settings-navigation) { border-color: #dce6ee; }
.portal-body .panel { box-shadow: 0 3px 16px #163b5305; }
.portal-body .form-grid > label { font-size: .9rem; color: #294b60; }
.portal-body :is(input, select, textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]) {
  border-color: #bfd1de;
}
.portal-body :is(input, select, textarea):focus-visible {
  outline: 3px solid #0b6e9e; outline-offset: 2px;
}
.portal-body :is(.page-head-actions, .settings-section__identity, .settings-section__head) { min-width: 0; }
.portal-body .settings-section__identity > div { min-width: 0; }
.portal-body .settings-section__identity :is(h2, p) { overflow-wrap: anywhere; }
.portal-body .panel-head > :is(span, div) { min-width: 0; }
.portal-body .table-wrap:focus-visible { outline: 3px solid #0b6e9e; outline-offset: 3px; }
.portal-body .table-wrap :is(button, .button) { min-height: 36px; }
.portal-body .settings-navigation nav a { min-height: 44px; }
.portal-body .sticky-actions { box-shadow: 0 5px 24px #173e5414; }
html.portal-document {
  scroll-padding-top: 100px;
  scroll-padding-bottom: calc(var(--portal-action-height) + 24px);
}
.portal-body :is(input, textarea, select, button, [tabindex]) {
  scroll-margin-bottom: calc(var(--portal-action-height) + 24px);
}
.settings-mobile-jump { display: none; }
.portal-body .workspace-search { gap: 8px; }
.portal-body .workspace-search label { min-width: 0; }
.portal-body .workspace-search button { flex: 0 0 auto; }

/* Consent remains a genuine choice, with equal, readable touch targets. */
.privacy-banner .privacy-card { border-radius: 16px; }
.privacy-banner .privacy-actions .button { min-height: 44px; font-size: .9rem; line-height: 1.35; }
.privacy-banner .privacy-card .privacy-scroll { scrollbar-width: thin; }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  body:not(.portal-body) .program-card { transition: box-shadow .18s ease, border-color .18s ease; }
  body:not(.portal-body) .program-card:hover { border-color: #9bbdce; box-shadow: 0 10px 28px #1c4f6b14; }
}
@media (max-width: 900px) {
  .settings-workspace.settings-jump-ready > .settings-navigation { display: none; }
  .settings-mobile-jump {
    display: grid; gap: 8px; padding: 16px; margin-bottom: 16px;
    border: 1px solid #dce6ee; border-radius: 14px; background: #fff;
    color: #294b60; font-size: .9rem; font-weight: 650;
  }
  .settings-mobile-jump select { width: 100%; min-height: 44px; font-size: 16px; }
  html.portal-document { scroll-padding-top: 20px; }
}
/* Older v25 rules hid the entire phone strip below 760px. */
@media (max-width: 760px) {
  body:not(.portal-body) .utility-bar { display: block; }
  body:not(.portal-body) .utility-row { flex-direction: column; gap: 0; padding-block: 6px; }
  body:not(.portal-body) .utility-branches { display: none; }
  body:not(.portal-body) .utility-contact { justify-content: center; width: 100%; gap: 4px 12px; }
  body:not(.portal-body) .utility-primary-phones { justify-content: center; }
  body:not(.portal-body) .utility-primary-phones > .utility-phone:only-child { grid-column: 1 / -1; }
}
@media (max-width: 700px) {
  :root { --review-card-height: 17rem; } /* Phone: 304px with a 16px root. */
  body:not(.portal-body) .review-carousel__track > .review-card--uniform { padding: 18px; }
  body:not(.portal-body) .teacher-body { padding: 20px; }
  body:not(.portal-body) .teacher-bio-summary { font-size: 1rem; }
  body:not(.portal-body) .footer-grid a { min-height: 32px; display: inline-flex; align-items: center; }
  .portal-body .portal-main { padding: 20px 14px 32px; }
  .portal-body .panel { padding: 20px 18px; border-radius: 16px; }
  .portal-body .portal-page-head { margin-bottom: 22px; }
  .portal-body .portal-page-head h1 { font-size: clamp(1.6rem, 7vw, 2.1rem); }
  .portal-body :is(.button, .portal-menu-toggle, .table-wrap button, .table-wrap .button) { min-height: 44px; }
  .portal-body .portal-menu-toggle { min-width: 44px; }
  .portal-body .form-grid { gap: 20px; }
  .portal-body .form-grid > label { font-size: .93rem; }
  .portal-body .check-card { align-items: flex-start; }
  .portal-body .check-card input { flex: 0 0 auto; margin-top: 4px; }
  .portal-body .sticky-actions { bottom: 8px; padding: 10px; padding-bottom: max(10px, env(safe-area-inset-bottom)); }
  .portal-body .sticky-actions > .button { flex-basis: auto; /* Also works when a mobile toolbar uses a column. */ }
  .portal-body .settings-save-bar { gap: 8px; }
  .portal-body .page-head-actions { gap: 8px; width: 100%; }
  .portal-body .page-head-actions > .button { flex: 1 1 150px; }
  .privacy-banner .privacy-card { padding: 18px; max-height: 75dvh; }
  .privacy-banner .privacy-actions { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .privacy-banner .privacy-actions .button { font-size: .93rem; min-height: 44px; }
}
@media (max-height: 500px) and (max-width: 1100px) {
  .portal-body .sticky-actions { position: static; }
  .privacy-banner .privacy-card { max-height: 85dvh; padding: 12px; }
  .privacy-banner .privacy-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .privacy-banner .privacy-actions .button { font-size: .8rem; padding: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .teacher-bio-details, .program-card { transition: none !important; }
}

/* experience-v39.css */
/* Shared final layer: circular carousels, restrained surfaces, responsive records. */
:root { --card-gap: 20px; --card-per-view: 3; }

/* Readable no-script fallback: no clipping, scrollbars or hidden content. */
body:not(.portal-body) [data-card-carousel]:not(.card-carousel--ready) .card-carousel__track {
  display: grid; grid-auto-flow: row; grid-template-columns: repeat(3,minmax(0,1fr));
  grid-auto-columns: auto; overflow: visible; gap: 20px;
}
.card-carousel__stage { position: relative; min-width: 0; padding-inline: 25px; }
body:not(.portal-body) .card-carousel--ready .card-carousel__track {
  display: flex; gap: var(--card-gap); grid-template-columns: none;
  overflow-x: auto; overflow-y: hidden; scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain; scrollbar-width: none; -ms-overflow-style: none;
  padding: 5px 0 14px; margin: 0; min-width: 0; align-items: stretch;
}
body:not(.portal-body) .card-carousel--ready .card-carousel__track::-webkit-scrollbar { display: none; height: 0; }
body:not(.portal-body) .card-carousel--ready .card-carousel__track > article {
  flex: 0 0 calc((100% - (var(--card-per-view) - 1) * var(--card-gap)) / var(--card-per-view));
  min-width: 0; max-width: none; scroll-snap-align: start; scroll-snap-stop: always;
}
.card-carousel__arrow {
  position: absolute; top: 50%; z-index: 2; transform: translateY(-50%);
  width: 46px; height: 46px; min-height: 46px; display: grid; place-items: center;
  padding: 0; border-radius: 50%; border: 1px solid #c7dce8;
  background: #fff; color: #104c6b; box-shadow: 0 4px 14px #123f5b18;
  transition: background .18s ease, box-shadow .18s ease; cursor: pointer;
}
.card-carousel__arrow--prev { left: 0; }
.card-carousel__arrow--next { right: 0; }
.card-carousel__arrow:hover { background: #edf6fa; box-shadow: 0 5px 18px #123f5b28; }
.section-dark .card-carousel__arrow { border-color: #b2cbda; background: #f5fbff; color: #0d415d; }
.section-dark .card-carousel__arrow:hover { background: #dceef8; }
.card-carousel__dots {
  display: flex; justify-content: center; align-items: center; max-width: 360px;
  min-height: 44px; margin: 9px auto 0; gap: 0;
}
.card-carousel__dot {
  flex: 0 0 36px; width: 36px; height: 44px; padding: 0;
  display: grid; place-items: center; border: 0; border-radius: 8px;
  background: transparent; color: #8caebf; cursor: pointer;
}
.card-carousel__dot::before { content: ''; width: 7px; height: 7px; border-radius: 99px; background: currentColor; transition: width .18s ease; }
.card-carousel__dot[aria-current="true"] { color: #0b5d8b; }
.card-carousel__dot[aria-current="true"]::before { width: 23px; }
.section-dark .card-carousel__dot { color: #789caf; }
.section-dark .card-carousel__dot[aria-current="true"] { color: #fff; }
[data-card-carousel] [hidden] { display: none !important; }
.card-carousel__track:focus-visible { outline: 3px solid #2980ac; outline-offset: 4px; border-radius: 14px; }
body:not(.portal-body) .card-carousel--ready .review-card--uniform { border: 1px solid #e3edf3; box-shadow: none; }
body:not(.portal-body) .review-card__excerpt { overflow-wrap: anywhere; }
body:not(.portal-body) .card-carousel--ready .teacher-card {
  border-radius: 20px; border-color: #dce8f0; box-shadow: none; height: auto;
}
body:not(.portal-body) .card-carousel--ready .teacher-photo { aspect-ratio: 4 / 4.25; max-height: 345px; }
body:not(.portal-body) .card-carousel--ready .teacher-body { padding: 22px; }
body:not(.portal-body) .card-carousel--ready .teacher-body h3 { line-height: 1.35; margin-block: 10px 0; font-size: 1.14rem; }
body:not(.portal-body) .card-carousel--ready .teacher-position { letter-spacing: .08em; font-size: .71rem; }
body:not(.portal-body) .card-carousel--ready .teacher-bio-summary { margin-top: 12px; line-height: 1.65; }
body:not(.portal-body) .section-heading .eyebrow { display: block; margin-bottom: 12px; }
body:not(.portal-body) .section-heading p:empty { display: none; }
body:not(.portal-body) :is(.program-card,.price-card) { border-radius: 20px; }
body:not(.portal-body) :is(.content-article,.html-content) { overflow-wrap: anywhere; }

/* A two-column work area with a genuinely useful guide, not an empty gutter. */
.portal-body .channel-workspace { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(240px,1fr); gap: 22px; align-items: start; }
.portal-body .channel-workspace > * { min-width: 0; }
.portal-body .channel-workspace .panel { margin: 0; }
.portal-body .crm-channel-grid:empty { display: none; }
.portal-body .crm-channel-grid:not(:empty) { margin-bottom: 22px; }
.portal-body .crm-channel-card { display: flex; flex-direction: column; margin: 0; }
.portal-body .crm-channel-card .crm-toolbar { margin-top: 0; }
.portal-body .crm-channel-card .crm-actions { margin-top: auto; padding-top: 18px; }
.portal-body .crm-channel-card h2 { font-size: 1.2rem; margin: 8px 0 0; }
.portal-body .channel-health { border-left: 3px solid #b8cedb; padding-left: 12px; font-size: .9rem; line-height: 1.6; overflow-wrap: anywhere; }
.portal-body .channel-health--ok { border-color: #36956a; }
.portal-body .channel-health--error { border-color: #c04c48; }
.portal-body .channel-guide { background: #f7fafc; }
.portal-body .channel-guide h2 { font-size: 1.3rem; line-height: 1.35; margin: 8px 0 20px; }
.connection-steps { list-style: none; counter-reset: connection; padding: 0; margin: 0 0 22px; display: grid; gap: 20px; }
.connection-steps li { counter-increment: connection; position: relative; padding-left: 42px; }
.connection-steps li::before { content: counter(connection); position: absolute; left: 0; top: 0; width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; background: #e3eef5; color: #17506c; font-size: .85rem; font-weight: 750; }
.connection-steps strong { font-size: .94rem; }
.connection-steps p { margin: 4px 0 0; color: #536b7c; font-size: .87rem; line-height: 1.65; }
.smtp-preset { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; border: 1px solid #cfe3ed; border-radius: 12px; padding: 14px; background: #f0f7fb; }
.smtp-preset > div { display: grid; gap: 2px; min-width: 0; }
.smtp-preset strong { font-size: .9rem; }
.smtp-preset span { color: #43677d; font-size: .82rem; overflow-wrap: anywhere; }
.smtp-help { margin-top: 24px; border-top: 1px solid #d9e5ed; padding-top: 6px; }
.smtp-help summary { padding-block: 12px; min-height: 44px; font-weight: 650; cursor: pointer; }
.smtp-help p { font-size: .87rem; line-height: 1.65; }
.portal-body .crm-form-grid small.field-help { font-size: .8rem; color: #4f6879; line-height: 1.5; }
.portal-body .channel-save-actions { border-top: 1px solid #e2ebf1; padding-top: 18px; }
.portal-body [aria-busy="true"] > [data-pending-label], .portal-body button[aria-busy="true"] { cursor: progress; opacity: .8; }
.portal-body .crm-tabs { flex-wrap: wrap; overflow: visible; border-bottom: 0; gap: 6px; padding: 6px; background: #eaf0f5; border-radius: 14px; }
.portal-body .crm-tabs a { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; padding: 10px 14px; font-size: .88rem; }
.portal-body .crm-tabs a.active { background: #fff; box-shadow: 0 2px 6px #163e5110; color: #0b5d8b; }
.portal-body .crm-filters > * { min-width: 0; max-width: 100%; }
.portal-body .crm-filters label { min-width: 150px; }
.portal-body .crm-filters .filter-count { margin-left: auto; padding-block: 11px; color: #536d80; }
.portal-body .record-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.portal-body .record-actions form { margin: 0; }
.portal-body .button-delete { background: #fff; color: #a33137; border: 1px solid #e5bdc0; }
.portal-body .button-delete:hover { background: #fff1f1; color: #86242c; box-shadow: none; transform: none; }
.portal-body .button-delete:disabled { opacity: .65; cursor: not-allowed; }
.portal-body .record-actions .button { min-height: 40px; }
.portal-body .records-table { width: 100%; }
.portal-body .records-table th { font-size: .76rem; letter-spacing: .035em; color: #577084; background: #f4f8fb; }
.portal-body .records-table td { overflow-wrap: anywhere; }
.portal-body .records-table td:first-child { min-width: 180px; }
.portal-body .records-table .crm-badge { white-space: normal; }
.portal-body .records-table details > summary { min-height: 36px; cursor: pointer; color: #0b5d8b; }
.portal-body .record-note { font-size: .78rem; color: #607486; }
.portal-body :is(.portal-page-head,.panel-head,.crm-actions) .button { white-space: normal; }
.portal-body .flash-stack .alert { overflow-wrap: anywhere; }
.portal-body .ops-guide .field-help { line-height: 1.65; }
.portal-body .ops-table .page-head-actions { margin: 0; }
@media (max-width: 1250px) {
  .portal-body .channel-workspace { grid-template-columns: minmax(0,1fr); }
  .portal-body .connection-steps { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
@media (max-width: 1100px) {
  body:not(.portal-body) [data-card-carousel]:not(.card-carousel--ready) .card-carousel__track { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (max-width: 760px) {
  .portal-body .records-wrap { overflow: visible; }
  .portal-body .records-table { display: block; min-width: 0 !important; border: 0; }
  .portal-body .records-table thead { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); }
  .portal-body .records-table tbody { display: grid; gap: 14px; }
  .portal-body .records-table tr { display: block; border: 1px solid #d9e5ed; border-radius: 14px; overflow: hidden; background: #fff; }
  .portal-body .records-table td { display: block; width: auto; min-width: 0; max-width: none; border: 0; padding: 10px 16px; text-align: left; }
  .portal-body .records-table td + td { border-top: 1px solid #eef3f6; }
  .portal-body .records-table td[data-label]::before { content: attr(data-label); display: block; color: #5b7385; font-size: .73rem; font-weight: 700; margin-bottom: 4px; }
  .portal-body .records-table td:first-child { background: #f4f8fb; padding-top: 15px; padding-bottom: 15px; }
  .portal-body .records-table td:last-child { padding-bottom: 16px; }
  .portal-body .records-table details { max-width: none; }
  .portal-body .record-actions .button { min-height: 44px; }
  .portal-body .crm-tabs { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .portal-body .crm-tabs a { white-space: normal; text-align: center; font-size: .84rem; }
  .portal-body .crm-filters { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: end; gap: 12px; }
  .portal-body .crm-filters label { min-width: 0; }
  .portal-body .crm-filters .filter-count { grid-column: 1 / -1; padding: 0; margin: 0; }
  .portal-body .connection-steps { grid-template-columns: minmax(0,1fr); }
  .portal-body .channel-workspace { gap: 18px; }
}
@media (max-width: 700px) {
  :root { --card-gap: 16px; }
  body:not(.portal-body) [data-card-carousel]:not(.card-carousel--ready) .card-carousel__track { grid-template-columns: minmax(0,1fr); }
  .card-carousel__stage { padding-inline: 22px; }
  .card-carousel__arrow { width: 44px; height: 44px; min-height: 44px; }
  .card-carousel__arrow--prev { left: -3px; }
  .card-carousel__arrow--next { right: -3px; }
  .card-carousel__dots { margin-top: 4px; }
  body:not(.portal-body) .card-carousel--ready .teacher-photo { aspect-ratio: 4 / 3.6; max-height: 310px; }
  body:not(.portal-body) .card-carousel--ready .teacher-body { padding: 20px; }
  body:not(.portal-body) .card-carousel--ready .teacher-body h3 { font-size: 1.18rem; }
  body:not(.portal-body) .card-carousel--ready .review-card--uniform { padding: 20px; }
  .portal-body .smtp-preset .button { width: 100%; }
  .portal-body .channel-save-actions > .button { width: 100%; }
  .portal-body .crm-stats article { padding: 16px 12px; }
  .portal-body .crm-stats small { font-size: .8rem; line-height: 1.4; }
  .portal-body .crm-stats span { line-height: 1.45; }
}
@media (prefers-reduced-motion: reduce) {
  .card-carousel__arrow, .card-carousel__dot::before { transition: none; }
}

/* experience-v40.css */
/* Final shared layout layer. Native content stays available without JavaScript. */
:root { --review-card-height: 18rem; }
[data-card-carousel] { --card-grid-columns: 3; }
[data-card-columns="1"] { --card-grid-columns: 1; }
[data-card-columns="2"] { --card-grid-columns: 2; }
[data-card-columns="4"] { --card-grid-columns: 4; }
.card-carousel__stage { padding: 0; }
body:not(.portal-body) [data-card-carousel]:not(.card-carousel--ready) .card-carousel__track {
  display: grid; grid-template-columns: repeat(var(--card-grid-columns), minmax(0,1fr));
  grid-auto-flow: row; grid-auto-columns: auto; gap: var(--card-gap,20px);
  overflow: visible; scroll-snap-type: none; padding: 4px 0; margin: 0;
}
body:not(.portal-body) [data-card-carousel].card-carousel--static .card-carousel__track { grid-template-columns: repeat(var(--card-per-view,var(--card-grid-columns)),minmax(0,1fr)); }
body:not(.portal-body) [data-card-carousel]:not(.card-carousel--ready) .card-carousel__track > article { min-width: 0; width: 100%; }
body:not(.portal-body) .card-carousel--static .card-carousel__track > article:only-child { max-width: 560px; justify-self: center; }
body:not(.portal-body) .card-carousel--static .teacher-grid > article:only-child { max-width: 420px; }
.card-carousel__navigation {
  display: grid; grid-template-columns: 44px minmax(0,1fr) 44px;
  align-items: center; gap: 10px; width: min(100%,360px); margin: 18px auto 0;
}
.card-carousel__navigation[hidden] { display: none !important; }
.card-carousel__navigation .card-carousel__arrow {
  position: static; transform: none; width: 44px; height: 44px; min-height: 44px;
  box-shadow: none; border-color: #b4cbd8;
}
.card-carousel__navigation .card-carousel__arrow--prev { grid-column: 1; grid-row: 1; }
.card-carousel__navigation .card-carousel__arrow--next { grid-column: 3; grid-row: 1; }
.card-carousel__navigation .card-carousel__dots { grid-column: 2; grid-row: 1; margin: 0; min-width: 0; width: 100%; max-width: none; }
.card-carousel__navigation .card-carousel__dot { width: 32px; flex-basis: 32px; }
.card-carousel__arrow[aria-disabled="true"] { opacity: .4; cursor: default; }
.card-carousel__arrow[aria-disabled="true"]:hover { background: #fff; box-shadow: none; }
body:not(.portal-body) .card-carousel--enhanced .teacher-card {
  display: flex; flex-direction: column; border-radius: 18px; box-shadow: none; height: auto; border-color: #d9e6ed;
}
body:not(.portal-body) .card-carousel--enhanced .teacher-photo {
  aspect-ratio: 4 / 4.2; min-height: 0; height: auto; max-height: 310px; overflow: hidden;
}
body:not(.portal-body) .card-carousel--enhanced .teacher-photo img { width: 100%; height: 100%; object-fit: cover; }
body:not(.portal-body) .card-carousel--enhanced .teacher-body { padding: 22px; gap: 0; }
body:not(.portal-body) .card-carousel--enhanced .teacher-body h3 { font-size: 1.12rem; line-height: 1.4; margin: 10px 0 0; text-wrap: balance; }
body:not(.portal-body) .card-carousel--enhanced .teacher-position { font-size: .7rem; letter-spacing: .075em; line-height: 1.55; }
body:not(.portal-body) .card-carousel--enhanced .teacher-bio-summary { margin: 12px 0 16px; font-size: .91rem; }
body:not(.portal-body) .card-carousel--enhanced .teacher-bio { margin-top: 12px; font-size: .91rem; }
body:not(.portal-body) .card-carousel--enhanced .review-card--uniform { border: 1px solid #e1e9ef; border-radius: 18px; box-shadow: none; }
body:not(.portal-body) .section-heading h2 { letter-spacing: -.025em; text-wrap: balance; }
body:not(.portal-body) .section-heading p { max-width: 62ch; }
body:not(.portal-body) :is(.program-card,.price-card,.branch-public-card) { box-shadow: 0 4px 18px #16384b08; }
body:not(.portal-body) :is(.hero-copy h1,.hero-copy .hero-title) { text-wrap: balance; }
body:not(.portal-body) :is(.content-article,.html-content) img { height: auto; }

/* Settings: independent groups, compact navigation and one clear save action. */
.portal-body .settings-header-actions { display: flex; align-items: start; justify-content: flex-end; gap: 10px; flex-wrap: wrap; }
.portal-body .settings-shortcuts { position: relative; }
.portal-body .settings-shortcuts > summary { list-style: none; min-height: 44px; cursor: pointer; }
.portal-body .settings-shortcuts > summary::-webkit-details-marker { display: none; }
.portal-body .settings-shortcuts > summary::after { content: '\2304'; margin-left: 8px; }
.portal-body .settings-shortcuts[open] > summary { background: #eaf2f7; border-color: #a8c6d6; }
.portal-body .settings-shortcuts .page-head-actions {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 15; display: grid;
  width: min(290px,calc(100vw - 32px)); padding: 8px; margin: 0; gap: 4px;
  border: 1px solid #d9e5ed; border-radius: 14px; background: #fff; box-shadow: 0 12px 36px #14344b20;
}
.portal-body .settings-shortcuts .page-head-actions > .button { justify-content: flex-start; border: 0; flex: auto; }
.portal-body .settings-search-panel { box-shadow: none; padding: 14px 18px; margin-bottom: 18px; }
.portal-body .settings-section__identity { align-items: start; }
.portal-body .settings-section__icon { flex-shrink: 0; width: 40px; height: 40px; border-radius: 11px; background: #eaf3f8; color: #145570; box-shadow: none; }
.portal-body .settings-section__head { background: transparent; padding: 0 0 20px; margin-bottom: 20px; border-bottom: 1px solid #e6edf2; }
.portal-body .settings-section__head h2 { font-size: 1.2rem; line-height: 1.35; }
.portal-body .settings-section__head p { max-width: 65ch; margin-bottom: 0; font-size: .88rem; }
.portal-body .layout-settings { grid-template-columns: minmax(0,1.45fr) minmax(220px,.8fr); gap: 22px; }
.portal-body .carousel-settings-card { min-width: 0; margin: 0; padding: 18px; border: 1px solid #d7e5ed; border-radius: 14px; background: #fff; }
.portal-body .carousel-settings-card legend { padding: 0 8px; margin-left: -8px; font-size: 1rem; font-weight: 750; color: #16485f; }
.portal-body .carousel-settings-grid { display: grid; grid-template-columns: minmax(85px,.6fr) minmax(0,1.4fr); gap: 16px 12px; }
.portal-body .carousel-settings-grid label { min-width: 0; font-size: .84rem; }
.portal-body .carousel-settings-grid select { font-size: .91rem; min-width: 0; padding-inline: 10px; }
.portal-body .carousel-loop-field { grid-column: 1 / -1; }
.portal-body .carousel-loop-field small { font-size: .77rem; font-weight: 400; }
.portal-body .carousel-settings--grid .carousel-loop-field { opacity: .65; }
.portal-body .carousel-settings-card .carousel-settings-link { margin: 14px 0 0; font-size: .79rem; font-weight: 400; }
.portal-body .carousel-settings-note { padding: 16px; margin: 0; background: #f0f6fa; border-left: 3px solid #92b8cb; border-radius: 0 10px 10px 0; font-size: .84rem; }
.portal-body .layout-preview { background: #f7fafc; padding: 20px; }
.layout-preview__review { display: grid; place-items: center; min-height: 58px; background: #fff; border: 1px solid #c9dce7; border-radius: 8px; font-size: .78rem; color: #315e75; }
.portal-body .settings-save-bar { background: #fff; border-color: #cbdde8; }
.portal-body .settings-save-bar.is-dirty { border-color: #5c9ab8; box-shadow: 0 4px 24px #1458791c; }

/* Workspace rhythm. Dense datasets keep their own accessible scroll regions. */
.portal-body .portal-main { width: 100%; max-width: 1800px; margin-inline: auto; }
.portal-body :is(.panel,.stat-grid > article) { border-radius: 16px; box-shadow: 0 2px 10px #12364b04; }
.portal-body .panel-head h2 { line-height: 1.4; }
.portal-body .portal-sidebar a.is-active::after { display: none; }
.portal-body .portal-sidebar a { border-radius: 10px; }
.portal-body .portal-page-head > div { min-width: 0; }
.portal-body .workspace-queues { gap: 18px; }
.portal-body .workspace-queues .panel { padding: 22px; }
.portal-body .queue-count { font-variant-numeric: tabular-nums; min-width: 34px; text-align: center; }
.portal-body .filter-row { align-items: end; margin-bottom: 18px; }
.portal-body .filter-row > label { flex: 1 1 180px; min-width: 0; }
.portal-body .filter-row > .button { flex: 0 0 auto; }
.portal-body .records-table :is(th,td) { vertical-align: top; }
.portal-body .records-table th { text-transform: none; font-size: .82rem; letter-spacing: 0; }
.portal-body .records-table .record-actions { min-width: 175px; }
.portal-body .users-filter-label { color: #465f72; font-size: .8rem; }

@media (max-width: 1100px) {
  [data-card-columns="3"], [data-card-columns="4"] { --card-grid-columns: 2; }
  .portal-body .layout-settings { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 760px) {
  .portal-body .records-table .record-actions { min-width: 0; }
  .portal-body .records-table td[data-label] { padding: 12px 16px; }
  .portal-body .records-table .record-actions .button { min-height: 44px; }
  .portal-body .records-table td[colspan] { padding: 22px 16px; }
}
@media (max-width: 700px) {
  [data-card-carousel] { --card-grid-columns: 1; }
  .card-carousel__stage { padding: 0; }
  .card-carousel__navigation { margin-top: 14px; max-width: 312px; }
  body:not(.portal-body) .card-carousel--enhanced .teacher-photo { aspect-ratio: 4 / 3.6; max-height: 320px; }
  body:not(.portal-body) .card-carousel--enhanced .teacher-body { padding: 20px; }
  body:not(.portal-body) .card-carousel--enhanced .teacher-body h3 { font-size: 1.2rem; }
  body:not(.portal-body) .section-heading h2 { font-size: clamp(1.75rem,6.5vw,2.4rem); }
  .portal-body .settings-header-actions { justify-content: stretch; width: 100%; gap: 8px; }
  .portal-body .settings-header-actions > * { flex: 1 1 auto; }
  .portal-body .settings-shortcuts > summary { width: 100%; }
  .portal-body .settings-search-panel { padding: 12px; }
  .portal-body .settings-mobile-jump { padding: 12px; gap: 6px; }
  .portal-body .settings-section { padding: 18px 16px; }
  .portal-body .settings-section__head { padding-bottom: 16px; margin-bottom: 18px; }
  .portal-body .settings-section__identity { gap: 12px; }
  .portal-body .settings-section__head h2 { font-size: 1.1rem; }
  .portal-body .carousel-settings-card { padding: 14px 12px; }
  .portal-body .carousel-settings-grid { grid-template-columns: minmax(0,1fr); gap: 12px; }
  .portal-body .carousel-settings-grid select { font-size: 16px; }
  .portal-body .workspace-queues .panel { padding: 18px; }
  .portal-body .settings-save-bar { padding: 10px 12px; }
  .portal-body .settings-save-bar:not(.is-dirty) > div { display: none; }
  .portal-body .workspace-search { margin-bottom: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  [data-card-carousel] * { scroll-behavior: auto !important; transition: none !important; }
}
@media print {
  .card-carousel__navigation { display: none !important; }
  [data-carousel-clone] { display: none !important; }
  body:not(.portal-body) [data-card-carousel] .card-carousel__track { display: grid !important; grid-template-columns: repeat(2,minmax(0,1fr)); overflow: visible; }
  body:not(.portal-body) .reviews-enhanced .review-card--uniform { height: auto; }
}

/* experience-v41.css */
/* Shared responsive finish. Keep editorial content, brand colors and native controls. */
:root {
  --ui-line: #dce7ee;
  --ui-ink: #153c52;
  --ui-muted: #496577;
  --ui-surface: #f4f8fb;
}
body:not(.portal-body) :is(.section-heading h1,.section-heading h2,.quick-contact-copy h2) {
  line-height: 1.17; text-wrap: balance; letter-spacing: -.025em;
}
body:not(.portal-body) .section-heading p { line-height: 1.7; color: var(--ui-muted); }
body:not(.portal-body) :is(.teacher-card,.program-card,.price-card) { border-color: var(--ui-line); }
body:not(.portal-body) :is(.program-card-body,.teacher-body) { min-width: 0; }
body:not(.portal-body) :is(.teacher-body h3,.program-card h3,.contact-card h3) { overflow-wrap: anywhere; }
body:not(.portal-body) .program-card-body .card-link { min-height: 44px; display: inline-flex; align-items: center; }
body:not(.portal-body) .hero-copy :is(h1,.hero-title) { line-height: 1.12; letter-spacing: -.03em; }
body:not(.portal-body) .hero-note { line-height: 1.6; }
body:not(.portal-body) .button { text-wrap: pretty; }
body:not(.portal-body) .contact-channel-button { min-height: 56px; border: 1px solid var(--ui-line); border-radius: 14px; }
body:not(.portal-body) .contact-hub { gap: 24px; }
body:not(.portal-body) .contact-hub__links { gap: 12px; }
body:not(.portal-body) .contact-hub h3 { line-height: 1.25; margin-block: 8px; }
body:not(.portal-body) .contact-hub p { line-height: 1.65; }

/* Native details: the preview disappears when the FULL biography is shown.
   This also works without JavaScript, in cloned carousel cards and in print. */
body:not(.portal-body) .teacher-bio-details { margin-top: 12px; border-top: 0; }
body:not(.portal-body) .teacher-bio-details > summary {
  display: block; list-style: none; padding: 0; margin: 0;
  font-weight: 400; border-radius: 8px;
}
.teacher-bio-details > summary::-webkit-details-marker { display: none; }
body:not(.portal-body) .teacher-bio-details .teacher-bio-summary {
  display: block; color: var(--ui-muted); font-weight: 400;
  font-size: .94rem; line-height: 1.65; margin: 0 0 16px;
}
.teacher-bio-action {
  position: relative; /* Contain the off-screen accessible name inside each carousel card. */
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  min-height: 48px; padding-block: 12px; border-top: 1px solid var(--ui-line);
  color: var(--brand, #0b5d8b); font-size: .9rem; font-weight: 700;
}
.teacher-bio-chevron { font-size: 1.3rem; line-height: 1; }
.teacher-bio-details .teacher-bio-close { display: none; }
body:not(.portal-body) .teacher-bio-details[open] > summary .teacher-bio-summary,
.teacher-bio-details[open] .teacher-bio-open { display: none; }
.teacher-bio-details[open] .teacher-bio-close { display: inline; }
.teacher-bio-details[open] .teacher-bio-chevron { transform: rotate(180deg); }
body:not(.portal-body) .teacher-bio-details[open] .teacher-bio { margin: 8px 0 0; line-height: 1.7; }
.teacher-bio-details .teacher-bio > :first-child { margin-top: 0; }
.teacher-bio-details .teacher-bio > :last-child { margin-bottom: 0; }

/* One visual field hierarchy; no successful captcha message or empty gap. */
.captcha-feedback[hidden] { display: none !important; }
body:not(.portal-body) .lead-form { gap: 20px 18px; border: 1px solid var(--ui-line); border-radius: 20px; }
body:not(.portal-body) .lead-form > label { color: var(--ui-ink); font-size: .91rem; line-height: 1.5; }
body:not(.portal-body) .lead-form :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]) {
  border-color: #b4cbd9; border-radius: 10px; background: #fff; color: #18394c;
  min-height: 48px; padding: 12px 14px;
}
body:not(.portal-body) .lead-form :is(input,select,textarea):focus-visible {
  outline: 3px solid var(--brand, #0b5d8b); outline-offset: 3px;
}
body:not(.portal-body) .lead-form :is(.booking-form-note,.form-submit small) { color: var(--ui-muted); line-height: 1.65; }
body:not(.portal-body) .booking-form-note { margin: 0; padding-bottom: 16px; border-bottom: 1px solid #e5edf2; }
body:not(.portal-body) .booking-options { background: var(--ui-surface); border-color: var(--ui-line); border-radius: 12px; }
body:not(.portal-body) .booking-options > summary { min-height: 48px; }
body:not(.portal-body) .lead-form .consent-check { font-size: .84rem; line-height: 1.7; font-weight: 400; }
body:not(.portal-body) .consent-check a { text-underline-offset: 3px; }
body:not(.portal-body) .form-submit { gap: 14px; align-items: start; }
body:not(.portal-body) .form-submit .button { min-height: 52px; }
body:not(.portal-body) .quick-contact-copy { align-self: center; }
body:not(.portal-body) .quick-contact-copy p { max-width: 45ch; line-height: 1.75; }
body:not(.portal-body) .booking-page { background: #f6f9fc; }
body:not(.portal-body) .booking-page .lead-form { background: #fff; padding: clamp(20px,4vw,36px); box-shadow: 0 8px 32px #173e5408; }

/* Explicit MAX handoff: no timer or user-agent detection. */
.max-contact-page { background: var(--ui-surface); }
.max-contact-back { display: inline-flex; align-items: center; min-height: 44px; margin-bottom: 16px; font-weight: 650; }
.max-contact-card { padding: clamp(22px,5vw,44px); border: 1px solid var(--ui-line); border-radius: 24px; background: #fff; box-shadow: 0 8px 32px #173e5408; }
.max-contact-card h1 { font-size: clamp(1.8rem,4vw,2.75rem); line-height: 1.15; letter-spacing: -.025em; margin: 12px 0 16px; text-wrap: balance; }
.max-contact-card p { color: var(--ui-muted); line-height: 1.7; }
.max-contact-choices { display: grid; gap: 12px; margin-block: 28px; }
.max-contact-choice { display: flex; align-items: center; gap: 16px; padding: 20px; border: 1px solid #bcd2df; border-radius: 14px; color: var(--ui-ink); text-decoration: none; }
.max-contact-choice > span:nth-child(2) { flex: 1; min-width: 0; }
.max-contact-choice strong { display: block; line-height: 1.4; }
.max-contact-choice small { display: block; margin-top: 4px; color: var(--ui-muted); line-height: 1.5; }
.max-contact-choice__icon { width: 44px; height: 44px; flex: 0 0 44px; display: grid; place-items: center; border-radius: 12px; background: #edf4fa; font-size: 1.5rem; }
.max-contact-help { font-size: .88rem; }
.portal-body .max-settings-preview { padding: 20px; border: 1px solid var(--ui-line); border-radius: 14px; background: var(--ui-surface); }
.portal-body .max-settings-preview h3 { margin: 0 0 10px; }
.portal-body .max-settings-preview > p { font-size: .88rem; line-height: 1.65; }
.portal-body .max-settings-row { display: flex; align-items: start; gap: 18px; padding-top: 16px; border-top: 1px solid var(--ui-line); }
.portal-body .max-settings-row + .max-settings-row { margin-top: 16px; }
.portal-body .max-settings-row > div { flex: 1; min-width: 0; }
.portal-body .max-settings-row code { display: block; overflow-wrap: anywhere; white-space: normal; margin-block: 8px; font-size: .82rem; }
.portal-body .max-settings-warning { color: #775114; border-left: 3px solid #d0a558; padding-left: 12px; font-size: .85rem; line-height: 1.65; }

/* Workspace: compact summaries, consistent panels, useful empty states. */
.portal-body { color: #19384d; background: #f3f7fb; }
.portal-body .portal-topbar { border-bottom-color: var(--ui-line); }
.portal-body .portal-page-head { gap: 20px; }
.portal-body .portal-page-head h1 { line-height: 1.2; letter-spacing: -.025em; text-wrap: balance; }
.portal-body .portal-page-head p { max-width: 66ch; line-height: 1.7; }
.portal-body .workspace-search { max-width: 100%; margin-bottom: 24px; }
.portal-body .workspace-search input { background: #fff; min-height: 46px; border-radius: 12px; }
.portal-body .portal-sidebar a { line-height: 1.5; min-height: 44px; }
.portal-body .portal-sidebar :is(a:focus-visible,a[aria-current=page]) { box-shadow: inset 3px 0 #8ccee0; }
.portal-body .portal-sidebar a:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }
.portal-body .sidebar-caption { letter-spacing: .1em; line-height: 1.5; }
.portal-body .panel-head { gap: 16px; }
.portal-body .panel-head h2 { font-size: 1.1rem; letter-spacing: -.01em; }
.portal-body .workspace-overview {
  display: flex; flex-wrap: wrap; align-items: center; gap: 22px 36px;
  padding: 22px 24px; margin-bottom: 20px; background: #eaf3f9;
  border: 1px solid #d2e2ed; border-radius: 16px;
}
.portal-body .workspace-overview > div { display: grid; gap: 6px; min-width: 0; }
.portal-body .workspace-overview strong { font-size: 1.65rem; font-variant-numeric: tabular-nums; line-height: 1.3; color: #164b68; }
.portal-body .workspace-overview strong small { font-size: .86rem; font-weight: 500; color: #365d73; }
.portal-body .workspace-empty-toggle { margin-left: auto; display: inline-flex; flex-direction: row; align-items: center; gap: 10px; min-height: 44px; font-size: .88rem; font-weight: 600; color: #244d65; cursor: pointer; }
.portal-body .workspace-empty-toggle input { width: 20px; height: 20px; flex-shrink: 0; accent-color: var(--brand,#0b5d8b); }
.portal-body .workspace-empty-toggle[hidden], .portal-body .workspace-queue[hidden],
.portal-body .workspace-empty-message[hidden] { display: none !important; }
.portal-body .workspace-empty-message { padding: 24px; border: 1px dashed #b5cbd9; border-radius: 16px; background: #fff; color: #33596f; line-height: 1.6; }
.portal-body .workspace-queues { align-items: stretch; }
.portal-body .workspace-queue { padding: 20px 22px; }
.portal-body .workspace-queue--active { border-top: 3px solid var(--brand,#0b5d8b); }
.portal-body .workspace-queue .panel-head { margin-bottom: 14px; align-items: start; }
.portal-body .workspace-queue .panel-head h2 { margin: 4px 0; }
.portal-body .workspace-queue > .crm-muted:last-child { margin-block: 10px 0; }
.portal-body .queue-count { min-width: 36px; padding: 6px 10px; border-radius: 10px; font-size: .88rem; line-height: 1.5; }
.portal-body .workspace-queue--empty .queue-count { background: #f1f5f8; color: #49687c; }
.portal-body .queue-explanation { font-size: .83rem; margin-bottom: 10px; }
.portal-body .queue-explanation > summary { cursor: pointer; color: #365d74; min-height: 32px; padding-block: 6px; }
.portal-body .queue-explanation p { margin-block: 6px 14px; line-height: 1.65; }
.portal-body :is(.settings-section,.carousel-settings-card,.max-settings-preview) { scroll-margin-top: 24px; }
.portal-body .setting-field > small { line-height: 1.65; }
.portal-body .records-table :is(th,td) { padding-block: 14px; line-height: 1.55; }
.portal-body .record-actions :is(.button,button) { min-height: 44px; }
.portal-body .table-wrap { border-radius: 12px; scrollbar-color: #8ba9ba #edf3f7; }
.portal-body .table-scroll-hint { font-size: .8rem; line-height: 1.6; color: #486b80; }
.portal-body .filter-row :is(input,select) { min-height: 44px; }

/* Narrow and zoomed viewports use content reflow, not document-wide clipping. */
@media (max-width: 760px) {
  body:not(.portal-body) .utility-row { padding-block: 8px; }
  body:not(.portal-body) .utility-contact { gap: 6px 10px; justify-content: flex-end; }
  body:not(.portal-body) .utility-primary-phones { display: flex; flex: 1 1 132px; flex-wrap: wrap; width: auto; gap: 8px 16px; justify-content: flex-start; }
  body:not(.portal-body) .utility-primary-phones .utility-phone { text-align: left; align-items: flex-start; }
  body:not(.portal-body) .utility-primary-phones .utility-phone small { font-size: .64rem; }
  body:not(.portal-body) .utility-contact .contact-icon-link { width: 44px; height: 44px; min-width: 44px; }
  body:not(.portal-body) .utility-directory > summary { font-size: .76rem; }
  .portal-body .max-settings-row { flex-direction: column; gap: 10px; }
  .portal-body .workspace-overview { padding: 18px; gap: 18px 28px; }
  .portal-body .workspace-empty-toggle { margin-left: 0; width: 100%; }
}
@media (max-width: 700px) {
  body:not(.portal-body) .hero-copy :is(h1,.hero-title) { font-size: clamp(1.8rem,7.7vw,2.6rem); }
  body:not(.portal-body) .hero-copy { padding-top: 24px; }
  body:not(.portal-body) .teacher-bio-details .teacher-bio-summary { font-size: 1rem; }
  body:not(.portal-body) .lead-form { padding: 22px 18px; gap: 18px; border-radius: 16px; }
  body:not(.portal-body) .lead-form :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]) { font-size: 16px; }
  body:not(.portal-body) .quick-contact-grid { gap: 28px; }
  body:not(.portal-body) .quick-contact-copy h2 { font-size: clamp(1.8rem,8vw,2.4rem); }
  body:not(.portal-body) .contact-hub { padding: 24px 18px; border-radius: 16px; }
  body:not(.portal-body) .contact-hub__links { width: 100%; }
  body:not(.portal-body) .contact-hub__links > a { flex: 1 1 130px; }
  .portal-body .workspace-search { margin-bottom: 20px; }
  .portal-body .workspace-queue { padding: 18px; }
  .portal-body .portal-page-head { gap: 16px; margin-bottom: 20px; }
  .portal-body .settings-header-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .portal-body .settings-header-actions .button { padding-inline: 10px; font-size: .85rem; min-width: 0; }
  .portal-body .max-settings-preview { padding: 16px; }
  .max-contact-choice { gap: 12px; padding: 16px 12px; }
  .max-contact-choice__icon { width: 36px; height: 36px; flex-basis: 36px; }
  .max-contact-choice strong { font-size: .95rem; }
}
@media (max-width: 420px) {
  body:not(.portal-body) .utility-directory { order: 5; }
  body:not(.portal-body) .form-submit > .button { width: 100%; }
  .portal-body .workspace-overview { display: grid; grid-template-columns: minmax(0,1fr); gap: 14px; }
  .portal-body .workspace-overview > div { grid-template-columns: 72px minmax(0,1fr); align-items: center; gap: 10px; }
  .portal-body .workspace-overview strong { font-size: 1.4rem; }
  .portal-body .workspace-overview strong small { font-size: .82rem; }
  .portal-body .panel-head { flex-wrap: wrap; }
}
@media (min-width: 1600px) { .portal-body .workspace-queues { grid-template-columns: repeat(3,minmax(0,1fr)); } }
@media (hover:hover) {
  .teacher-bio-action:hover { color: #083e5d; }
  .max-contact-choice:hover { background: #f3f8fc; border-color: #78a6bf; }
  body:not(.portal-body) .contact-channel-button:hover { box-shadow: 0 5px 16px #16384b10; }
}
@media (prefers-reduced-motion: reduce) {
  .max-contact-choice,.teacher-bio-chevron { transition: none; }
}
@media print {
  .workspace-empty-toggle { display: none !important; }
  .portal-body .workspace-queue[hidden] { display: block !important; }
  .teacher-bio-details .teacher-bio { display: block !important; }
  body:not(.portal-body) .teacher-bio-details .teacher-bio-summary { display: none !important; }
}

/* experience-v43.css */
/* v43: legible integration diagnostics, responsive controls, no fixed overlays. */
.metrika-diagnostics {
  margin-block: 24px; padding: clamp(18px,3vw,28px); border: 1px solid #c4d8e5;
  border-radius: 18px; background: #f4f9fc; color: #193e53; overflow-wrap: anywhere;
}
.metrika-diagnostics__heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.metrika-diagnostics h2 { margin: 6px 0 0; font-size: clamp(1.4rem,3vw,1.85rem); line-height: 1.25; }
.metrika-diagnostics p { max-width: 100ch; line-height: 1.7; }
.metrika-status-badge { display: inline-block; padding: 8px 12px; border-radius: 999px; background: #e1edf5; color: #24526b; font-size: .85rem; font-weight: 700; }
.metrika-diagnostics[data-state=ready] .metrika-status-badge { background: #d9eee5; color: #1a5b40; }
.metrika-diagnostics:is([data-state=network_error],[data-state=csp_error],[data-state=timeout]) .metrika-status-badge { background: #fff0d5; color: #6e450c; }
.metrika-diagnostics__facts { display: grid; grid-template-columns: minmax(0,.7fr) minmax(0,1.4fr) minmax(0,1fr); gap: 12px; margin: 20px 0; }
.metrika-diagnostics__facts > div { min-width: 0; padding: 14px 16px; border: 1px solid #d7e5ee; border-radius: 12px; background: #fff; }
.metrika-diagnostics__facts dt { font-size: .8rem; color: #496577; margin-bottom: 8px; }
.metrika-diagnostics__facts dd { margin: 0; font-size: .9rem; line-height: 1.6; font-weight: 600; }
.metrika-diagnostics__actions { display: flex; flex-wrap: wrap; gap: 10px; }
.metrika-diagnostics__actions > * { min-height: 44px; }
.metrika-diagnostics__note { font-size: .82rem; color: #496577; margin-bottom: 0; }
.metrika-network-help { margin-top: 20px; border-top: 1px solid #cedfe9; padding-top: 12px; }
.metrika-network-help summary { cursor: pointer; padding-block: 10px; min-height: 44px; font-weight: 650; }
.metrika-mismatch { padding: 14px 16px; background: #fff1dd; border-left: 3px solid #a67426; border-radius: 8px; color: #634213; }
.metrika-informer { margin: 20px 0 0; min-height: 31px; }
.metrika-informer a { display: inline-flex; align-items: center; min-height: 44px; font-size: .8rem; text-underline-offset: 3px; }
.metrika-informer img { width: 88px; height: 31px; border: 0; object-fit: contain; }
.metrika-informer[hidden], .metrika-informer [hidden], .metrika-diagnostics [hidden] { display: none !important; }
.portal-body .metrika-help { border: 1px solid #c5dce9; border-radius: 16px; background: #f3f9fc; padding: clamp(18px,3vw,28px); min-width: 0; }
.portal-body .metrika-help h3 { margin: 0; line-height: 1.35; }
.portal-body .metrika-help p { line-height: 1.7; max-width: 95ch; color: #38596b; }
.portal-body .metrika-help__head { display: flex; align-items: center; gap: 14px; justify-content: space-between; flex-wrap: wrap; }
.portal-body .metrika-help__actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.portal-body .metrika-help__actions .button { min-height: 44px; }
.portal-body .metrika-help code, .portal-body .setting-field code { overflow-wrap: anywhere; white-space: normal; }
.portal-body .setting-field :is(input,select,textarea) { min-width: 0; max-width: 100%; }
.portal-body .settings-section .form-grid > *, .portal-body .settings-form > * { min-width: 0; }
.portal-body .metrika-help__notice { padding-left: 14px; border-left: 3px solid #8ab4cc; font-size: .87rem; }
body:not(.portal-body) .teacher-bio-details > summary:focus-visible { outline: 3px solid var(--brand,#0b5d8b); outline-offset: 4px; }
body:not(.portal-body) :is(.html-content,.content-article) { overflow-wrap: anywhere; }
body:not(.portal-body) :is(.html-content,.content-article) img { max-width: 100%; height: auto; }
@media (max-width: 760px) {
  .metrika-diagnostics__facts { grid-template-columns: minmax(0,1fr); }
  .metrika-diagnostics__actions, .portal-body .metrika-help__actions { display: grid; grid-template-columns: minmax(0,1fr); }
  .metrika-diagnostics { margin-block: 16px; }
  .metrika-status-badge { max-width: 100%; }
  .portal-body .setting-field :is(input,select,textarea) { font-size: 16px; }
  body:not(.portal-body) .lead-form :is(input,select,textarea) { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .metrika-diagnostics *, .metrika-help * { scroll-behavior: auto; transition: none; }
}
@media print { .metrika-diagnostics, .metrika-informer { display: none !important; } }
/* Keep the first mobile screen usable without hiding any consent choices. */
.privacy-banner .privacy-explanation { margin-bottom: 8px; }
.privacy-banner .privacy-explanation summary { min-height: 36px; padding-block: 7px; cursor: pointer; color: #235b79; font-size: .86rem; font-weight: 600; }
.privacy-banner .privacy-explanation[open] summary { margin-bottom: 8px; }
.privacy-banner .privacy-explanation p { font-size: .85rem; line-height: 1.65; }
.privacy-banner .privacy-explanation summary:focus-visible { outline: 2px solid var(--brand,#0b5d8b); outline-offset: 3px; }
@media (max-width: 760px) and (min-height: 451px) {
  .privacy-banner .privacy-actions { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .privacy-banner .privacy-actions .button:first-child { grid-column: 1 / -1; }
  .privacy-banner .privacy-actions .button:last-child { grid-column: auto; }
  .privacy-banner .privacy-actions .button { min-height: 44px; font-size: .85rem; padding: 9px 8px; }
}.portal-body .metrika-basic-fields { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; margin-block: 20px; }
.portal-body .metrika-options { border: 1px solid #cbdde8; border-radius: 12px; background: #fff; padding: 0 14px; margin-top: 12px; }
.portal-body .metrika-options > summary { cursor: pointer; padding-block: 14px; min-height: 48px; line-height: 1.5; font-size: .9rem; font-weight: 650; }
.portal-body .metrika-options__fields { display: grid; gap: 10px; padding-bottom: 12px; }
.portal-body .metrika-options .check-card { padding: 12px; margin: 0; }
.portal-body .metrika-options .check-card strong { line-height: 1.5; font-size: .88rem; }
.portal-body .metrika-options .check-card input { flex-shrink: 0; }
.portal-body .metrika-network-help p { font-size: .86rem; }
@media (max-width: 760px) { .portal-body .metrika-basic-fields { grid-template-columns: minmax(0,1fr); gap: 16px; } }
/* experience-v44.css */
/* Shared final design layer. Source for the generated experience.css bundle. */
:root { --ui-line: #d9e5ed; --ui-muted: #476477; --ui-surface: #f3f7fa; }
body:not(.portal-body) .utility-messengers { display:flex; align-items:center; gap:6px; }
.utility-primary-phones .utility-phone span { font-variant-numeric:tabular-nums; }
.utility-directory > summary { list-style:none; gap:8px; border-radius:8px; }
.utility-directory > summary:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.utility-directory .top-phone-list { max-height:min(60vh,520px); overflow:auto; overscroll-behavior:contain; }
.utility-directory .top-phone-list > a { min-height:68px; min-width:0; gap:4px; padding:14px 16px; }
.utility-directory .top-phone-list .phone-purpose { white-space:normal; overflow-wrap:anywhere; line-height:1.5; }
.utility-directory .top-phone-list > a > span { color:#123e56; font-size:1rem; font-weight:750; white-space:nowrap; }
.phone-directory-count { display:inline-grid; place-items:center; min-width:22px; height:22px; padding-inline:5px; border:1px solid #ffffff55; border-radius:6px; font-size:.75rem; }

/* Portraits, readable bios, and a real image-failure state. */
body:not(.portal-body) #teachers { background:#f5f8fa; }
body:not(.portal-body) #teachers .teacher-card { display:flex; flex-direction:column; align-self:start; height:100%; border:1px solid var(--ui-line); border-radius:20px; background:#fff; box-shadow:0 4px 18px #173e5408; overflow:hidden; }
body:not(.portal-body) #teachers .teacher-photo { position:relative; flex:none; width:100%; height:auto; min-height:0; max-height:350px; aspect-ratio:4/4.5; background:#e7eff3; border-bottom:1px solid var(--ui-line); }
body:not(.portal-body) #teachers .teacher-photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 20%; }
body:not(.portal-body) #teachers .teacher-photo [hidden] { display:none!important; }
body:not(.portal-body) #teachers .teacher-photo__placeholder:not([hidden]) { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; padding:24px; background:linear-gradient(140deg,#e2edf4,#f6f9fb); color:#496879; text-align:center; }
body:not(.portal-body) #teachers .teacher-photo__placeholder span { display:grid; place-items:center; width:100px; height:100px; border-radius:50%; border:1px solid #b9cedb; background:#f8fbfd; color:#205875; font-size:2.75rem; font-weight:500; }
body:not(.portal-body) #teachers .teacher-photo__placeholder small { display:block; color:#476477; font-size:.82rem; }
body:not(.portal-body) #teachers .teacher-body { display:flex; flex:1; flex-direction:column; align-items:stretch; padding:24px; min-width:0; }
body:not(.portal-body) #teachers .teacher-position { align-self:start; padding:5px 9px; border-radius:6px; margin:0 0 12px; background:#edf4f8; color:#365b72; font-size:.67rem; line-height:1.5; font-weight:700; letter-spacing:.06em; }
body:not(.portal-body) #teachers .teacher-body h3 { margin:0; min-height:2.65em; font-size:1.15rem; font-weight:750; line-height:1.35; text-wrap:pretty; color:#163f56; }
body:not(.portal-body) #teachers .teacher-bio-details { margin-top:14px; }
body:not(.portal-body) #teachers .teacher-bio-summary { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; overflow:hidden; line-height:1.7; font-size:.92rem; margin:0 0 18px; min-height:5.1em; }
body:not(.portal-body) #teachers .teacher-bio { color:var(--ui-muted); line-height:1.75; font-size:.92rem; overflow-wrap:anywhere; }
body:not(.portal-body) #teachers .teacher-bio-details[open] .teacher-bio-summary { display:none; }
body:not(.portal-body) #teachers .teacher-bio-action { min-height:48px; margin:0; border-top:1px solid var(--ui-line); padding-block:12px; }
body:not(.portal-body) #teachers .teacher-bio-details[open] .teacher-bio { margin-top:12px; }
body:not(.portal-body) #teachers .teacher-bio :is(img,video,iframe) { max-width:100%; }
body:not(.portal-body) #teachers .teacher-bio :is(ul,ol) { padding-left:22px; }
body:not(.portal-body) .section-heading-light p { color:#cbdce7; }
body:not(.portal-body) .section-heading-light .eyebrow { color:#c7e6f4; }

/* Reserve the tallest slide to prevent page jumps on rotation. */
body:not(.portal-body) .hero-track { display:grid; min-width:0; }
body:not(.portal-body) .hero-track > .hero-slide { position:relative; inset:auto; grid-area:1/1; width:100%; min-width:0; align-self:stretch; }
body:not(.portal-body) .hero-track > .hero-slide:not(.is-active) { pointer-events:none; }
.hero-navigation { position:absolute; z-index:5; bottom:18px; left:50%; transform:translateX(-50%); display:flex; align-items:center; justify-content:center; gap:12px; width:max-content; max-width:calc(100% - 32px); }
body:not(.portal-body) .hero-navigation .hero-dots { position:static; transform:none; padding:0; margin:0; min-height:44px; flex-wrap:wrap; justify-content:center; }
.autoplay-toggle { display:inline-flex; align-items:center; justify-content:center; flex:none; min-height:44px; padding:10px 14px; border:1px solid #b7cedb; border-radius:10px; background:#fff; color:#194d69; font:600 .8rem/1.3 var(--font, sans-serif); cursor:pointer; }
.autoplay-toggle[hidden] { display:none!important; }
.autoplay-toggle:hover { background:#eaf3f8; }
.autoplay-actions { display:flex; justify-content:center; margin-top:12px; }
.autoplay-actions:has(>[hidden]) { display:none; }
.section-dark .autoplay-toggle { background:transparent; border-color:#7f9cad; color:#f4f9fc; }
.section-dark .autoplay-toggle:hover { background:#ffffff15; }

/* A focused, recoverable 404: copy first, contained illustration second. */
body:not(.portal-body) .not-found-section { min-height:0; padding:clamp(32px,6vw,88px) 0; background:#f4f8fb; }
body:not(.portal-body) .not-found-card { width:min(1200px,calc(100% - 48px)); margin:0 auto; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.95fr); gap:clamp(28px,4vw,60px); padding:clamp(24px,4vw,56px); border:1px solid #dbe7ef; border-radius:28px; background:#fff; box-shadow:0 10px 40px #173e5406; align-items:center; }
body:not(.portal-body) .not-found-copy { min-width:0; max-width:100%; padding:0; }
.not-found-eyebrow { display:block; margin-bottom:20px; color:#476b81; text-transform:uppercase; letter-spacing:.14em; font-size:.75rem; font-weight:750; }
.not-found-art { position:relative; display:grid; place-items:center; aspect-ratio:1; max-height:420px; width:100%; overflow:hidden; border-radius:24px; background:#edf5f9; isolation:isolate; }
.not-found-art > strong { position:relative; z-index:1; font-size:clamp(5rem,10vw,9rem); color:#164c69; line-height:1; letter-spacing:-.07em; font-weight:800; }
.not-found-orbit { position:absolute; width:78%; height:78%; border:1px dashed #a4bdcd; border-radius:50%; }
.not-found-tile { position:absolute; display:grid; place-items:center; width:19%; aspect-ratio:1; border:1px solid #cee0ec; border-radius:16px; background:#fff; color:#357593; font-size:clamp(1.3rem,2.5vw,2.3rem); font-weight:700; box-shadow:0 8px 22px #2853700b; }
.not-found-tile--letters { top:11%; left:11%; transform:rotate(-10deg); }
.not-found-tile--question { bottom:12%; right:10%; transform:rotate(12deg); background:#fff4ec; border-color:#efdfd2; color:#a86836; }
.not-found-art-label { position:absolute; bottom:12%; left:9%; color:#688496; font-size:.75rem; letter-spacing:.04em; }

body:not(.portal-body) .not-found-copy h1 { margin:0 0 18px; font-family:var(--font); font-size:clamp(1.8rem,3vw,2.7rem); font-weight:750; line-height:1.15; letter-spacing:-.025em; text-wrap:balance; }
body:not(.portal-body) .not-found-copy p { font-size:1rem; line-height:1.75; margin:0; color:var(--ui-muted); }
body:not(.portal-body) .not-found-actions { margin-top:26px; display:flex; flex-wrap:wrap; gap:12px; }
body:not(.portal-body) .not-found-image { width:100%; height:auto; max-height:430px; object-fit:contain; border-radius:18px; box-shadow:none; }
.not-found-links { display:flex; flex-wrap:wrap; gap:12px 24px; margin-top:24px; padding-top:20px; border-top:1px solid var(--ui-line); }
.not-found-links a { display:inline-flex; min-height:44px; align-items:center; font-size:.9rem; text-decoration:underline; text-underline-offset:4px; }
.max-contact-unavailable { padding:18px; border:1px solid #dfd2b7; border-radius:14px; background:#fffaf0; color:#604b24; }
.max-contact-unavailable strong { display:block; line-height:1.5; }
.max-contact-unavailable p { margin-bottom:0; font-size:.9rem; }

/* Administrative workspace: deliberate spacing and clear control hierarchy. */
.portal-body .portal-content { min-width:0; }
.portal-body .panel { border-color:var(--ui-line); box-shadow:0 3px 16px #163f5605; }
.portal-body .panel + .panel { margin-top:24px; }
.portal-body .panel-head h2 { font-weight:700; line-height:1.4; }
.portal-body .panel-head p { margin-top:8px; font-size:.9rem; }
.portal-body .carousel-settings { border-top:3px solid #4383a8; }
.portal-body .carousel-settings__grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; align-items:start; }
.portal-body .carousel-settings__grid > label { min-width:0; margin:0; line-height:1.5; }
.portal-body .carousel-settings .check-card { min-height:96px; padding:18px; background:#f7fafc; border:1px solid var(--ui-line); border-radius:12px; align-items:flex-start; }
.portal-body .carousel-settings .check-card input { flex:0 0 20px; width:20px; height:20px; margin-top:2px; }
.portal-body .carousel-settings .check-card strong { font-size:.92rem; font-weight:650; line-height:1.5; }
.portal-body .carousel-settings small { color:#496576; font-weight:400; line-height:1.6; }
.portal-body .carousel-settings__note { margin:20px 0; padding:14px 16px; border-radius:10px; background:#eef5fa; color:#3a5c73; font-size:.86rem; line-height:1.7; }
.portal-body .carousel-settings .panel-actions { border-top:1px solid var(--ui-line); padding-top:18px; margin-top:18px; }
.portal-body .table-wrap { border:1px solid #e0e8ee; border-radius:12px; }
.portal-body .table-wrap table { margin:0; }
.portal-body .table-wrap th { padding-block:15px; color:#36546a; font-weight:650; background:#f4f8fb; }
.portal-body .table-wrap td { padding-block:16px; vertical-align:middle; }
.portal-body .content-item-name { gap:14px; }
.portal-body .content-item-thumb { flex-shrink:0; object-fit:cover; border-radius:8px; border:1px solid var(--ui-line); }
.portal-body :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=hidden]) { min-height:44px; }
.portal-body :is(.actions,.panel-actions,.page-head-actions) .button { min-height:44px; }
.portal-body .empty-state { padding:32px 20px; }
.portal-body .max-settings-app-link { padding:18px; border-radius:12px; border:1px solid #cfdee8; background:#f7fafc; margin-block:18px; }

@media (hover:hover) and (prefers-reduced-motion:no-preference) {
  body:not(.portal-body) #teachers .teacher-card:hover { border-color:#a9c7d8; box-shadow:0 10px 26px #173e5410; }
}
@media (max-width:900px) {
  body:not(.portal-body) .not-found-card { gap:24px; padding:28px; }
  .portal-body .carousel-settings .panel-head { flex-wrap:wrap; }
}
@media (max-width:760px) {
  body:not(.portal-body) .utility-row { padding-block:10px; }
  body:not(.portal-body) .utility-contact { display:block; width:100%; min-width:0; }
  body:not(.portal-body) .utility-primary-phones { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:100%; gap:8px 16px; }
  body:not(.portal-body) .utility-primary-phones .utility-phone { min-width:0; min-height:46px; padding:2px 0; align-items:flex-start; justify-content:center; text-align:left; gap:3px; }
  body:not(.portal-body) .utility-primary-phones .utility-phone span { font-size:.92rem; line-height:1.4; letter-spacing:0; white-space:nowrap; }
  body:not(.portal-body) .utility-primary-phones .utility-phone small { font-size:.72rem; line-height:1.45; max-width:100%; white-space:normal; overflow-wrap:anywhere; }
  body:not(.portal-body) .utility-primary-phones > .utility-phone:only-child { grid-column:1/-1; }
  body:not(.portal-body) .utility-messengers { display:none; }
  body:not(.portal-body) .utility-directory { position:static; display:block; width:100%; margin-top:6px; }
  body:not(.portal-body) .utility-directory > summary { display:flex; justify-content:flex-start; width:100%; min-height:44px; padding:8px 0; font-size:.8rem; border-top:1px solid #ffffff26; border-radius:0; }
  body:not(.portal-body) .utility-directory .top-phone-list { position:static; inset:auto; transform:none; width:100%; max-width:100%; margin:4px 0 6px; display:flex; align-items:stretch; gap:0; max-height:min(55dvh,440px); border-radius:12px; box-shadow:none; }
  body:not(.portal-body) #teachers .teacher-photo { aspect-ratio:4/3.8; max-height:340px; }
  body:not(.portal-body) #teachers .teacher-body { padding:22px; }
  body:not(.portal-body) #teachers .teacher-body h3 { min-height:0; font-size:1.2rem; }
  body:not(.portal-body) .hero-navigation { position:relative; inset:auto; transform:none; width:100%; max-width:100%; padding:10px 14px; min-height:56px; flex-wrap:wrap; }
  body:not(.portal-body) .hero-navigation .hero-dots { width:auto; flex:0 1 auto; gap:2px; }
  body:not(.portal-body) .not-found-card { width:calc(100% - 32px); grid-template-columns:minmax(0,1fr); padding:24px; border-radius:20px; }
  body:not(.portal-body) .not-found-image { max-height:230px; margin-top:8px; }
  .not-found-art { aspect-ratio:1.6; max-height:230px; border-radius:14px; }
  .not-found-art > strong { font-size:5.5rem; }
  .not-found-art-label { font-size:.65rem; }
  body:not(.portal-body) .not-found-actions { flex-direction:column; }
  .not-found-links { gap:4px 20px; margin-top:20px; padding-top:14px; }
  .portal-body .carousel-settings__grid { grid-template-columns:minmax(0,1fr); gap:16px; }
  .portal-body .carousel-settings .check-card { min-height:0; padding:16px; }
  .portal-body .carousel-settings .panel-actions .button { width:100%; }
  .portal-body .max-settings-row { flex-direction:column; }
  .portal-body :is(input,select,textarea):not([type=checkbox]):not([type=radio]) { font-size:16px; }
  .portal-body .panel + .panel { margin-top:18px; }
}
@media (max-width:360px) {
  body:not(.portal-body) .utility-primary-phones { grid-template-columns:minmax(0,1fr); gap:5px; }
  body:not(.portal-body) .utility-primary-phones .utility-phone { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:10px; }
  body:not(.portal-body) .utility-primary-phones .utility-phone span { font-size:.88rem; }
  body:not(.portal-body) .utility-primary-phones .utility-phone small { font-size:.7rem; }
}
@media (prefers-reduced-motion:reduce) {
  body:not(.portal-body) .hero-slide { transition:none; }
  body:not(.portal-body) :is(.teacher-card,.program-card):hover { transform:none; }
}
@media print { .autoplay-actions,.hero-navigation,.utility-directory { display:none!important; } }

/* experience-v45.css */
/* v45: readable rich content, usable editors and a responsive Push workspace. */
:where(.html-content,.content-article,.program-rich-text,.teacher-bio,.editor-visual) {
  word-break:normal; overflow-wrap:break-word;
}
:is(.html-content,.content-article,.program-rich-text,.teacher-bio,.editor-visual)
:is(img.emoji,img.emoticon,img[data-mce-object="emoticon"]) {
  display:inline!important; width:1em!important; height:1em!important;
  max-width:none; margin:0 .08em; padding:0; border:0; border-radius:0;
  box-shadow:none; vertical-align:-.12em; object-fit:contain;
}
:is(.html-content,.content-article,.program-rich-text) :is(span.emoji,span.emoticon,.ll-emoji) {
  display:inline; white-space:nowrap; line-height:inherit;
}
body:not(.portal-body) .program-facts {
  display:block; margin:24px 0; border:1px solid #d6e2ea; border-radius:18px;
  overflow:hidden; background:#fff;
}
body:not(.portal-body) .program-facts > div {
  display:grid; grid-template-columns:minmax(180px,.32fr) minmax(0,1fr); gap:24px;
  padding:22px 26px; background:transparent; border:0; border-bottom:1px solid #e0e8ee;
  border-radius:0; align-items:start;
}
body:not(.portal-body) .program-facts > div:nth-child(even) {background:#f7fafc;}
body:not(.portal-body) .program-facts > div:last-child {border-bottom:0;}
body:not(.portal-body) .program-facts dt {margin:0;font-size:.95rem;line-height:1.65;color:#244b64;}
body:not(.portal-body) .program-facts dd {min-width:0;line-height:1.75;font-size:1rem;color:#273f50;}
body:not(.portal-body) .program-facts dd.program-rich-text {white-space:normal;overflow-wrap:break-word;}
.program-rich-text > :first-child {margin-top:0;}
.program-rich-text > :last-child {margin-bottom:0;}
.program-rich-text p {margin:0 0 .75em;}
.program-rich-text :is(ul,ol) {padding-left:1.4em;margin:.4em 0 .8em;}
.program-rich-text li + li {margin-top:.35em;}
.program-rich-text :is(h2,h3,h4) {font-size:1.12em;line-height:1.5;margin:1em 0 .5em;}
.program-rich-text a {text-decoration:underline;text-underline-offset:3px;}
.program-rich-text img {max-width:100%;height:auto;}
.program-rich-text table {max-width:100%;border-collapse:collapse;}
.program-rich-text :is(td,th) {padding:.5em;border:1px solid #cfdae2;}
body:not(.portal-body) .program-source {padding:16px 20px;border-left:3px solid #5e8ca6;background:#f1f6f9;color:#425e70;font-size:.88rem;line-height:1.7;border-radius:0 10px 10px 0;}
.inner-hero-grid > div {min-width:0;}
body:not(.portal-body) .booking-explanation {max-width:65ch;}

/* Both TinyMCE and the local fallback fit their parent rather than the viewport. */
.portal-body .rich-field {min-width:0;}
.portal-body .rich-field > label {display:block;font-weight:700;margin-bottom:10px;line-height:1.5;}
.portal-body .rich-field > .field-help {display:block;margin-top:10px;font-weight:400;line-height:1.6;}
.portal-body :is(.ll-editor,.tox-tinymce) {max-width:100%;min-width:0;}
.portal-body .ll-editor {border:1px solid #bacdd9;border-radius:12px;overflow:hidden;background:#fff;text-align:left;font-weight:400;}
.portal-body .ll-editor:focus-within {border-color:#38799d;box-shadow:0 0 0 3px #28759d1a;}
.ll-editor [hidden] {display:none!important;}
.portal-body .ll-editor__toolbar {display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:8px;background:#f4f8fb;border-bottom:1px solid #d2dfe8;}
.portal-body .ll-editor__toolbar > :is(button,select) {display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:44px;min-height:44px;margin:0;padding:7px 10px;border:1px solid transparent;border-radius:7px;background:transparent;color:#244b64;font-size:.85rem;line-height:1.25;font-weight:600;box-shadow:none;transform:none;}
.portal-body .ll-editor__toolbar > select {min-width:104px;max-width:100%;border-color:#d2dfe8;background:#fff;padding-right:22px;}
.portal-body .ll-editor__toolbar button:hover {background:#e4eef5;border-color:#c8dbe8;}
.portal-body .ll-editor__toolbar button:disabled {opacity:.4;cursor:not-allowed;}
.ll-editor__bold {font-weight:850!important;}.ll-editor__italic {font-style:italic;}
.portal-body .ll-editor__visual {min-height:190px;max-height:520px;overflow:auto;padding:18px;outline:0;font-size:1rem;line-height:1.75;font-weight:400;white-space:normal;overflow-wrap:break-word;resize:vertical;}
.portal-body .ll-editor[data-size="full"] .ll-editor__visual {min-height:300px;}
.portal-body .ll-editor__visual > :first-child {margin-top:0;}
.portal-body .ll-editor__visual > :last-child {margin-bottom:0;}
.portal-body .ll-editor__visual :is(ul,ol) {padding-left:1.5em;}
.portal-body .ll-editor__visual img {max-width:100%;height:auto;}
.portal-body .ll-editor__visual table {border-collapse:collapse;max-width:100%;}
.portal-body .ll-editor__visual :is(td,th) {border:1px solid #bbcfdb;padding:.5em;min-width:50px;}
.portal-body .ll-editor__source {display:block;width:100%;min-height:260px;max-height:520px;border:0;border-radius:0;padding:18px;font:14px/1.65 ui-monospace,monospace;resize:vertical;}
.portal-body .ll-editor__hint {margin:0;padding:9px 14px;border-top:1px solid #e3ebf1;background:#fafcfd;color:#536d7e;font-size:.75rem;font-weight:400;line-height:1.6;}
.portal-body .content-save-note {background:#f2f7fa;color:#425f72;}
.portal-body .content-save-note p {margin:0;line-height:1.75;}
.portal-body .sticky-actions {gap:10px;flex-wrap:wrap;padding-bottom:max(14px,env(safe-area-inset-bottom));}

/* Notification channels: deliberate hierarchy instead of email-only placeholders. */
.portal-body .channel-workspace {display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.43fr);gap:24px;align-items:start;margin-top:24px;}
.portal-body .channel-workspace > .panel {min-width:0;margin:0;}
.portal-body .channel-guide {position:static;}
.portal-body .channel-guide h2 {font-size:1.3rem;line-height:1.4;}
.portal-body .channel-guide p {line-height:1.7;}
.portal-body [data-channel-guide][hidden] {display:none!important;}
.portal-body .channel-workspace:not(:has([data-channel-guide]:not([hidden]))) {grid-template-columns:minmax(0,1fr);}
.portal-body .crm-channel-grid {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:18px;}
.portal-body .crm-channel-card {min-width:0;margin:0;display:flex;flex-direction:column;}
.portal-body .crm-channel-card h2 {font-size:1.2rem;line-height:1.5;overflow-wrap:anywhere;margin-block:16px 8px;}
.portal-body .crm-channel-card .crm-actions {margin-top:auto;padding-top:18px;gap:8px;}
.portal-body .crm-channel-card .crm-actions form {margin:0;}
.portal-body .crm-channel-card .button {white-space:normal;min-height:44px;}
.portal-body .crm-form-grid > :is(label,div),.portal-body .crm-form-grid label {min-width:0;}
.portal-body .push-intro {padding:18px;border:1px solid #d4e4ed;border-radius:12px;background:#f1f7fb;}
.push-intro h3 {margin:12px 0 8px;line-height:1.4;}.push-intro p {margin:0;line-height:1.7;color:#425f72;}
.portal-body .push-preview {display:flex;align-items:flex-start;gap:14px;padding:20px;border:1px solid #cfdee8;border-radius:16px;background:linear-gradient(140deg,#fff,#f4f8fb);box-shadow:0 4px 16px #1b4d6508;}
.push-preview > img {flex:0 0 48px;width:48px;height:48px;border-radius:10px;}
.push-preview > div {min-width:0;}.push-preview strong {display:block;margin-top:8px;font-size:1rem;color:#173f56;}
.push-preview p {margin:6px 0 10px;font-size:.9rem;line-height:1.65;color:#425f72;}
.push-preview small {display:block;font-size:.68rem;letter-spacing:.02em;font-weight:500;color:#587386;}
.portal-body .push-key-details {padding:16px;border:1px solid #d7e2e9;border-radius:12px;}
.portal-body .push-key-details summary {font-weight:650;cursor:pointer;min-height:32px;}
.portal-body .push-key-details textarea {width:100%;font:13px/1.6 ui-monospace,monospace;word-break:break-all;resize:vertical;background:#f7fafc;margin-top:8px;}
.push-diagnostics {padding-top:18px;margin-top:22px;border-top:1px solid #dce6ed;}
.push-diagnostics h3 {margin:0 0 14px;font-size:1rem;}
.push-check {display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #e4ecf2;color:#2b4b60;font-size:.86rem;line-height:1.5;}
.push-check > span {display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border-radius:50%;background:#fff0d6;color:#86601e;font-weight:800;}
.push-check.is-ready > span {background:#e2f2e9;color:#226549;}
.push-check small {display:block;font-size:.73rem;color:#60798b;font-weight:400;}
.push-guide > .button {margin-top:18px;}
.portal-body .push-operations {margin-top:24px;}
.push-metrics {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:20px 0;}
.push-metrics > div {display:flex;flex-direction:column;justify-content:space-between;gap:14px;padding:18px;border:1px solid #d7e3ec;border-radius:12px;background:#f7fafc;min-width:0;}
.push-metrics dt {color:#506b7e;font-size:.82rem;line-height:1.6;}
.push-metrics dd {margin:0;color:#174e6b;font-size:2rem;line-height:1.2;font-weight:750;font-variant-numeric:tabular-nums;}
.push-danger-zone {margin-top:24px;border:1px solid #e8cbcb;border-radius:12px;padding:16px 20px;background:#fffafa;}
.push-danger-zone summary {color:#903a3a;font-weight:650;min-height:32px;cursor:pointer;}
.push-danger-zone p {font-size:.9rem;line-height:1.75;color:#654d4d;}
.push-rotate-form {display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;}
.push-rotate-form label {flex:1;min-width:180px;}.push-rotate-form input {margin-top:8px;}
.portal-body [data-push-status] {padding:14px 16px;border-left:3px solid #4a829f;background:#eef5fa;border-radius:0 10px 10px 0;line-height:1.75;}
.portal-body [data-push-status][data-state="error"] {border-color:#bc735a;background:#fff6ef;color:#744e3c;}
.portal-body [data-push-refresh] {margin-top:14px;}
.portal-body .push-channel-shortcut {display:flex;gap:12px;flex-wrap:wrap;margin:0 0 20px;}
@media (max-width:1279px) {
  .portal-body .channel-workspace {grid-template-columns:minmax(0,1fr);}
  .portal-body .channel-guide {max-width:none;}
  .push-metrics {grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:700px) {
  body:not(.portal-body) .program-facts > div {grid-template-columns:minmax(0,1fr);gap:8px;padding:18px;}
  body:not(.portal-body) .program-facts dt {font-size:.88rem;}
  body:not(.portal-body) .program-facts dd {font-size:.96rem;}
  .portal-body .channel-workspace {gap:18px;}
  .portal-body .channel-workspace .crm-form-grid {grid-template-columns:minmax(0,1fr);}
  .portal-body .ll-editor__toolbar {padding:6px;gap:3px;}
  .portal-body .ll-editor__visual {padding:14px;min-height:170px;}
  .portal-body .ll-editor__toolbar > :is(button,select) {font-size:.8rem;}
  .portal-body .push-preview {padding:16px;gap:10px;}
  .portal-body .push-rotate-form {display:grid;grid-template-columns:minmax(0,1fr);}
  .portal-body .push-rotate-form label {min-width:0;}
  .portal-body .push-rotate-form .button {width:100%;}
  .portal-body .sticky-actions .button {flex:1;min-width:0;padding-inline:14px;}
  .portal-body .channel-save-actions .button {flex:1 1 180px;}
  .portal-body :is(input,textarea,select):not([type=checkbox]):not([type=radio]):not([type=hidden]) {font-size:16px;}
  .portal-body .ll-editor__toolbar select {font-size:14px;}
}
@media (max-width:390px) {
  .push-metrics {gap:8px;}.push-metrics > div {padding:12px;}
  .push-metrics dt {font-size:.75rem;}.push-metrics dd {font-size:1.6rem;}
  .portal-body .push-preview {flex-direction:column;}
  .portal-body .ll-editor__toolbar > :is(button,select) {padding-inline:7px;}
}
@media (prefers-reduced-motion:reduce) {
  .ll-editor *,.push-preview,.push-check {scroll-behavior:auto;transition:none;}
}

/* experience-v46.css */
/* v46: consistent program typography, publication controls and notification rules. */
/* Do not hide overflow on the page: fix its source, keep tables locally scrollable. */
:where(.ll-emoji) {display:inline-block!important;white-space:nowrap;word-break:normal;overflow-wrap:normal;text-indent:0;line-height:inherit;vertical-align:baseline;}
.program-hero--text {grid-template-columns:minmax(0,1fr)!important;}
.program-hero--text > div {max-width:850px;}
.program-card h3 :is(strong,b,em,i,u,s,span) {font-size:inherit;line-height:inherit;}
.program-card .program-card-body {display:flex;flex-direction:column;flex:1;min-width:0;}
.program-card .card-link {margin-top:auto;padding-top:16px;}
.program-image--placeholder {display:grid;place-items:center;min-height:180px;background:linear-gradient(130deg,#edf5fb,#dcebf3);}
.program-image--placeholder .program-icon {position:static;}
body:not(.portal-body) .program-source > .program-rich-text {margin:10px 0;}
body:not(.portal-body) .program-source a {text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere;}
body:not(.portal-body) .program-facts:empty {display:none;}
.portal-body .visibility-grid,.notification-choice-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;}
.portal-body .visibility-option {display:flex;align-items:center;gap:12px;min-width:0;min-height:52px;margin:0;padding:12px 14px;border:1px solid #d5e1e9;border-radius:10px;background:#fafcfe;font-size:.92rem;line-height:1.5;cursor:pointer;}
.portal-body .visibility-option:has(input:checked) {background:#eff7fb;border-color:#9cbfd1;}
.portal-body .visibility-option input {flex:0 0 20px;width:20px;height:20px;margin:0;accent-color:var(--brand);}
.portal-body .visibility-option span {min-width:0;}
.portal-body .rich-field {min-width:0;}
.portal-body .ll-editor[data-inline="1"] .ll-editor__visual {min-height:90px;max-height:240px;font-size:1.12rem;}
.portal-body .ll-editor__visual:focus-visible {outline:3px solid #2b769e;outline-offset:-3px;}
.portal-body :is(.ll-editor__source,.ll-editor__visual)[hidden] {display:none!important;}
.portal-body :is(.notification-rule-form,.notification-preferences-layout,.recipient-picker) [hidden] {display:none!important;}
.portal-body .notification-rule-list {display:grid;gap:14px;}
.portal-body .notification-rule-card {display:grid;grid-template-columns:minmax(0,1fr) auto;gap:22px;padding:22px;border:1px solid #d7e3eb;border-radius:14px;background:#fbfdff;min-width:0;}
.portal-body .notification-rule-heading {display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;}
.portal-body .notification-rule-heading h3 {margin:0;font-size:1.05rem;line-height:1.5;overflow-wrap:anywhere;}
.notification-state {display:inline-flex;align-items:center;padding:4px 10px;border-radius:100px;line-height:1.5;font-size:.76rem;font-weight:650;background:#e8edf1;color:#425b6c;}
.notification-state.is-on {background:#e4f3ec;color:#225d44;}
.notification-rule-facts {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0;}
.notification-rule-facts > div {min-width:0;}
.notification-rule-facts dt {font-size:.75rem;line-height:1.6;color:#587182;margin-bottom:5px;}
.notification-rule-facts dd {margin:0;font-size:.88rem;line-height:1.6;overflow-wrap:anywhere;color:#23465d;}
.notification-rule-actions {display:flex;flex-direction:column;gap:8px;align-items:stretch;justify-content:center;}
.notification-rule-actions form {margin:0;}
.portal-body .notification-rule-actions .button {width:100%;min-height:40px;}
.portal-body .notification-form-step {padding:26px 0;border-bottom:1px solid #dce6ee;}
.portal-body .notification-form-step:first-of-type {padding-top:8px;}
.portal-body .notification-form-step h3 {display:flex;align-items:center;gap:12px;margin:0 0 22px;font-size:1.15rem;line-height:1.4;}
.notification-form-step h3 > span {display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;background:#e8f2f8;color:#225874;border-radius:50%;font-size:.86rem;}
.portal-body .notification-rule-form fieldset {min-width:0;padding:16px;border:1px solid #d6e2eb;border-radius:12px;margin:16px 0;}
.portal-body .notification-rule-form legend {padding:0 7px;font-size:.88rem;font-weight:650;color:#34586f;}
.portal-body .notification-rule-form .crm-check {min-height:44px;align-items:center;line-height:1.55;margin:0;}
.portal-body .recipient-picker {min-width:0;}
.portal-body .recipient-list {max-height:320px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid #d6e2eb;border-radius:10px;background:#fff;}
.portal-body .recipient-option {display:flex;gap:12px;align-items:center;margin:0;padding:13px 16px;min-height:64px;cursor:pointer;border-bottom:1px solid #e5edf3;line-height:1.5;}
.portal-body .recipient-option:last-child {border-bottom:0;}
.portal-body .recipient-option:has(input:checked) {background:#edf7fc;}
.portal-body .recipient-option input,.portal-body .primary-channel-choice input {flex:0 0 20px;width:20px;height:20px;margin:0;accent-color:var(--brand);}
.recipient-option > span {display:block;min-width:0;}
.recipient-option :is(strong,small) {display:block;overflow-wrap:anywhere;}
.recipient-option strong {font-size:.9rem;color:#24485f;}
.recipient-option small {font-size:.76rem;color:#506b7d;font-weight:400;margin-top:3px;}
.portal-body .notification-message-preview {margin:20px 0 0;padding:20px;border:1px solid #c9dce8;border-radius:12px;background:#f2f7fb;overflow-wrap:anywhere;}
.notification-message-preview small {display:block;font-size:.74rem;color:#536f81;margin-bottom:12px;line-height:1.6;}
.notification-message-preview strong {display:block;color:#23495f;}
.notification-message-preview p {white-space:pre-wrap;margin:10px 0 0;line-height:1.7;}
.notification-template-help {margin-top:18px;border:1px solid #dce6ed;border-radius:10px;padding:12px 16px;color:#34586f;}
.notification-template-help summary {cursor:pointer;min-height:32px;line-height:1.7;}
.notification-template-help p {font-size:.84rem;line-height:1.8;overflow-wrap:anywhere;}
.portal-body .notification-save {display:flex;gap:20px;justify-content:space-between;align-items:center;flex-wrap:wrap;margin-top:24px;}
.notification-empty {padding:24px;border:1px dashed #adc6d6;border-radius:12px;background:#f5f9fc;color:#34586f;}
.notification-empty h3 {margin:0 0 8px;}.notification-empty p {margin:0;line-height:1.7;max-width:70ch;}
.portal-body .notification-preferences-layout {display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin-bottom:24px;}
.portal-body .notification-preferences-layout > .panel {margin:0;min-width:0;}
.portal-body .notification-preference-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0;}
.portal-body .notification-preference-card {min-width:0;margin:0;padding:18px;border:1px solid #ccdce7;border-radius:12px;background:#fff;}
.portal-body .notification-preference-card:has(input[type=radio]:checked) {border-color:#4b88a7;box-shadow:inset 0 0 0 1px #4b88a7;background:#f4faff;}
.portal-body .notification-preference-card legend {padding:0 8px;font-size:1rem;font-weight:700;color:#244e67;}
.portal-body .primary-channel-choice {display:flex;align-items:center;gap:12px;min-height:44px;margin:0;font-size:.92rem;cursor:pointer;}
.portal-body .notification-preference-card .crm-check {min-height:44px;align-items:center;font-size:.85rem;line-height:1.55;margin:0;}
.notification-channel-status {margin:10px 0 14px;font-size:.78rem;line-height:1.65;color:#765333;}
.notification-channel-status.is-ready {color:#276344;}
/* Global workspace polish: readable wrapping and local table scroll at narrow widths. */
.portal-body :is(.portal-page-head,.panel-head) {row-gap:16px;}
.portal-body :is(.portal-page-head,.panel-head) > div {min-width:0;}
.portal-body .table-wrap {max-width:100%;overscroll-behavior-x:contain;}
.portal-body :is(input,select,textarea):focus-visible {outline:3px solid #2e7da5;outline-offset:2px;}
.portal-body :is(.button,summary,a):focus-visible,body:not(.portal-body) .program-card:focus-visible {outline:3px solid #2e7da5;outline-offset:4px;}
@media (min-width:1600px) {.portal-body .notification-preference-grid {grid-template-columns:repeat(3,minmax(0,1fr));}}
@media (max-width:1100px) {.notification-rule-facts {grid-template-columns:minmax(0,1fr);gap:10px;}.notification-rule-facts > div {display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;}}
@media (max-width:700px) {
  .portal-body .visibility-grid,.notification-choice-grid,.portal-body .notification-preference-grid {grid-template-columns:minmax(0,1fr);}
  .portal-body .notification-rule-card {grid-template-columns:minmax(0,1fr);padding:18px;gap:18px;}
  .notification-rule-actions {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
  .portal-body .notification-rule-actions .button {min-height:44px;padding:9px 8px;font-size:.78rem;white-space:normal;}
  .notification-rule-facts > div {grid-template-columns:minmax(0,1fr);gap:0;}
  .portal-body .notification-form-step {padding:22px 0;}
  .portal-body .notification-form-step .crm-form-grid {grid-template-columns:minmax(0,1fr);}
  .portal-body .notification-rule-form fieldset {padding:12px;}
  .portal-body .recipient-option {padding:12px;}
  .portal-body .notification-save {align-items:stretch;flex-direction:column;gap:12px;}
  .portal-body .notification-save .button {width:100%;}
  .portal-body .notification-message-preview {padding:16px;}
  .portal-body .notification-template-help {padding:10px 12px;}
  .portal-body .notification-preference-card {padding:14px;}
  .portal-body .notification-preference-grid {gap:14px;}
  .portal-body :is(input,select,textarea) {font-size:16px;}
}
@media (prefers-reduced-motion:reduce) {.notification-rule-card,.visibility-option,.program-card {transition:none!important;}}
/* Override the legacy form label column direction only for choice controls. */
.portal-body :is(.visibility-option,.primary-channel-choice,.recipient-option) {flex-direction:row;justify-content:flex-start;text-align:left;}
.portal-body .visibility-option span {flex:1;}
body:not(.portal-body) .program-source + .button {margin-top:20px;}
.portal-body .program-form-nav {display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px;}
.portal-body .program-form-nav a {display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;border:1px solid #cfdee8;border-radius:10px;background:#fff;font-size:.88rem;font-weight:600;}
.portal-body :is(.rich-field,.program-visibility) {scroll-margin-top:100px;}
@media (min-width:1280px) {
  .portal-body .rich-field--fact .ll-editor__visual {min-height:150px;}
}
