.catalog-banner-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:28px;align-items:stretch}.catalog-banner-content{min-width:0}.catalog-banner-rail{padding-top:35px;min-width:0}.catalog-vertical-banner{position:sticky;top:var(--catalog-sticky-top,140px);width:min(280px,calc((100svh - var(--catalog-sticky-top,140px) - 20px)*415/1382));margin:0 auto;border:1px solid #dce5ec;border-radius:18px;overflow:hidden;background:#edf8ff;box-shadow:0 8px 30px #17374e08}.catalog-vertical-banner>svg{display:block;width:100%;height:auto}.catalog-vertical-banner .vertical-portal{transition:filter .2s}.catalog-vertical-banner .vertical-portal:hover{filter:drop-shadow(0 0 7px #fff)}.catalog-vertical-banner .vertical-portal:focus-visible{outline:none;filter:drop-shadow(0 0 6px #087dab)}main:has(.catalog-banner-layout){max-width:1518px}.catalog-banner-content .results-top{flex-wrap:wrap}.catalog-banner-content .results-top h2{flex-basis:100%}@media(max-width:1000px){.catalog-banner-layout{display:block}.catalog-banner-rail{display:none}}@media(prefers-reduced-motion:reduce){.catalog-vertical-banner *{animation:none!important;transition:none!important}}

.catalog-vertical-banner>svg>text:nth-of-type(-n+6){fill:#fff;paint-order:stroke;stroke:#194f7620;stroke-width:1px;filter:drop-shadow(0 1px 3px #17374e55)}
/* Gentle independent drift; preserve each logo's SVG layout transform. */
@keyframes verticalPortalDrift{0%,100%{transform:translate(0,0)}25%{transform:translate(10px,-8px) rotate(.8deg)}60%{transform:translate(-9px,9px) rotate(-.8deg)}80%{transform:translate(-11px,-5px) rotate(.5deg)}}
.catalog-vertical-banner .vertical-portal{animation:verticalPortalDrift 5s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.catalog-vertical-banner .vertical-portal:nth-of-type(2n){animation-duration:6s;animation-delay:-6s;animation-direction:reverse}
.catalog-vertical-banner .vertical-portal:nth-of-type(3n){animation-duration:7s;animation-delay:-11s}
.catalog-vertical-banner .vertical-portal:nth-of-type(5n){animation-delay:-4s;animation-duration:5.5s}
.catalog-vertical-banner:hover .vertical-portal,.catalog-vertical-banner:focus-within .vertical-portal{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.catalog-vertical-banner .vertical-portal{animation:none}}

.school-banner-layout .catalog-banner-rail{padding-top:0}.school-banner-layout .detail-grid{grid-template-columns:minmax(0,1fr)}
