/* 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; }
}
