.has-action-icon{display:inline-flex;align-items:center;justify-content:center;gap:10px}
.has-action-icon>.school-icon{display:block;flex:0 0 24px;width:24px;height:24px;fill:currentColor;pointer-events:none}
.has-action-icon>.school-icon use{transform:scale(1.45);transform-origin:12px 12px}
.has-action-icon:is(.link-button,.announcement-open)>.school-icon{width:20px;height:20px;flex-basis:20px}
.admin-body .has-action-icon>.school-icon{width:21px;height:21px;flex-basis:21px}
.admin-body .sidebar nav .has-action-icon{justify-content:flex-start;width:100%}
.has-action-icon>.school-icon+span:empty{display:none}
@media(max-width:760px){.has-action-icon{gap:8px}.has-action-icon>.school-icon{width:22px;height:22px;flex-basis:22px}.editorial-actions .has-action-icon{white-space:normal;text-align:center}}

/* Match the header artwork's visible scale, including its generous viewBox margins. */
body .has-action-icon{gap:12px}
body .has-action-icon>.school-icon{width:28px;height:28px;flex-basis:28px;max-width:none}
body .has-action-icon>.school-icon use{transform:scale(1.8);transform-origin:12px 12px}
@media(max-width:760px){body .has-action-icon{gap:10px}body .has-action-icon>.school-icon{width:24px;height:24px;flex-basis:24px}}

/* Controls retain numeric indicators and their own icons; portal actions need room. */
@media(max-width:760px){
 .hero-carousel .hero-community-bar .hero-portals>div,.menu-community .menu-portals{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:360px){
 body .site-header .header-actions .header-portal{font-size:10px;gap:4px;padding-inline:5px}
 .site-header .header-actions .header-portal>.school-icon{width:18px;height:18px;flex-basis:18px}
}
