/* Decorative layers never receive visitor input. Legacy banner stays as a no-JS fallback. */
.crfx-host{position:relative}
.crfx-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none!important;z-index:2;contain:layout paint;isolation:isolate}
/* Shared stacking contract: section backgrounds < decoration (1..5) < content (6).
   Only regions actually containing effects participate. Do not lift whole sections:
   their images must remain behind a scene attached to main or to the viewport. */
:where(:has(> :is(.crfx-layer,.crfx-event-layer):not(:empty))) :where(h1,h2,h3,h4,h5,h6,p,a,button,label,input,select,textarea,form,nav,summary,details,table,ul,ol,blockquote,figure,figcaption,[role="button"],[role="dialog"],[data-crfx-content]):not(:where(.crfx-layer *,.crfx-event-layer *,.crfx-editor-layer *)){position:relative;z-index:6}
:has(> :is(.crfx-layer,.crfx-event-layer):not(:empty)) :is(.cr-banner-content,.cr-portal-inner,.cr-institutions__inner,.cr-countdown-panel,.cr-status-inner,.cr-marquee-track,.crcamp-hero,.crcamp-shell,.crcb-ambient-content,.crlt-intro,.crlt-panel){position:relative;z-index:6}
:has(> :is(.crfx-layer,.crfx-event-layer):not(:empty)) :is(.cr-banner-scroll,.crlt-scroll){z-index:6}
/* These two scene wrappers used isolation without a layer index. That trapped
   their text below the main overlay. Retain the image above its section background. */
:where(:has(> :is(.crfx-layer,.crfx-event-layer):not(:empty))) :is(.cr-institutions,.crlt-home-section){isolation:auto}
:where(:has(> :is(.crfx-layer,.crfx-event-layer):not(:empty))) .crlt-home-image{z-index:0}
/* A local effect attached to a control stays behind its own label as well. */
:is(a,button):has(> :is(.crfx-layer,.crfx-event-layer):not(:empty)){isolation:isolate}
:is(a,button)>:is(.crfx-layer,.crfx-event-layer){z-index:-1}
.crfx-layer *,.crfx-event-layer *{pointer-events:none!important}
.crfx-point{position:absolute;left:0;top:0;width:0;height:0;transform-origin:0 0;pointer-events:none!important}
.crfx-effect{position:absolute;left:0;top:0;transform:translate(-50%,-50%);pointer-events:none!important}
.crfx-glow,.crfx-particle-zone{position:absolute;inset:0;pointer-events:none!important}
.crfx-glow{border-radius:50%;background:radial-gradient(ellipse,var(--fx-color) 0%,transparent 68%);filter:blur(var(--fx-blur));opacity:var(--fx-opacity);animation:crfx-pulse var(--fx-duration) ease-in-out infinite alternate}
.crfx-effect--mist .crfx-glow{background:var(--fx-color);animation-name:crfx-mist}
.crfx-effect--flicker .crfx-glow{animation-name:crfx-flicker}
.crfx-effect--beam .crfx-glow{border-radius:0;clip-path:polygon(45% 0,55% 0,100% 100%,0 100%);transform-origin:50% 0;animation-name:crfx-pulse}
.crfx-particle{position:absolute;display:block;width:var(--p-size);height:var(--p-size);border-radius:50%;background:var(--p-color);box-shadow:0 0 10px var(--p-color);opacity:0;animation:crfx-particle var(--p-duration) linear var(--p-delay) infinite;filter:brightness(var(--p-brightness))}
.crfx-particle--leaf{border-radius:0 80% 0 80%}.crfx-particle--petal{border-radius:80% 20% 80% 40%}.crfx-particle--snow{box-shadow:0 0 3px var(--p-color)}
.crfx-static .crfx-glow{animation:none}.crfx-paused *,.crfx-document-paused .crfx-layer *{animation-play-state:paused!important}
.crfx-managed>.cr-banner-paperlight,.crfx-managed>.cr-banner-mist,.crfx-managed>.cr-banner-chest-glow,.crfx-managed>.cr-banner-firelight,.crfx-managed>.cr-banner-particles{display:none!important}
@keyframes crfx-pulse{from{opacity:var(--fx-opacity);transform:scale(1)}to{opacity:var(--fx-peak);transform:scale(var(--fx-scale))}}
@keyframes crfx-mist{from{opacity:var(--fx-opacity);translate:0 0;scale:1}to{opacity:var(--fx-peak);translate:var(--fx-dx) var(--fx-dy);scale:var(--fx-scale)}}
@keyframes crfx-flicker{0%{opacity:var(--fx-opacity);transform:translateY(3px) scale(.88,1)}37%{opacity:var(--fx-mid);transform:translateY(-1px) scale(1.02,1.06)}100%{opacity:var(--fx-peak);transform:translateY(-4px) scale(1.05,1.17)}}
@keyframes crfx-particle{0%{opacity:0;transform:translate(0,var(--p-start)) scale(.55)}16%{opacity:var(--p-opacity)}56%{opacity:var(--p-peak)}84%{opacity:calc(var(--p-opacity)*.24)}100%{opacity:0;transform:translate(var(--p-dx),var(--p-dy)) scale(1.05)}}
@media(prefers-reduced-motion:reduce){.crfx-glow{animation:none!important}.crfx-particle{display:none!important}}
.crfx-particle--natural{animation-name:crfx-particle-natural;filter:brightness(var(--p-brightness)) blur(var(--p-blur,0px))}
.crfx-scroll-reactive{filter:blur(var(--crfx-scroll-blur,0px))}
@keyframes crfx-particle-natural{
  0%{opacity:var(--p-opacity);transform:translate3d(0,0,0) rotate(var(--p-angle))}
  28%{opacity:var(--p-opacity);transform:translate3d(calc(var(--p-dx)*.28 + var(--p-sway)),calc(var(--p-dy)*.25),0) rotate(calc(var(--p-angle) + var(--p-turn)*.25))}
  56%{opacity:var(--p-peak);transform:translate3d(calc(var(--p-dx)*.56 - var(--p-sway)*.7),calc(var(--p-dy)*.57),0) rotate(calc(var(--p-angle) + var(--p-turn)*.55))}
  82%{opacity:var(--p-opacity);transform:translate3d(calc(var(--p-dx)*.82 + var(--p-sway)*.4),calc(var(--p-dy)*.84),0) rotate(calc(var(--p-angle) + var(--p-turn)*.8))}
  100%{opacity:var(--p-opacity);transform:translate3d(var(--p-dx),var(--p-dy),0) rotate(calc(var(--p-angle) + var(--p-turn)))}
}
@media(prefers-reduced-motion:reduce){.crfx-scroll-reactive{filter:none!important}}
/* Only constructed in an authenticated, nonce-protected admin preview. */
.crfx-editor-layer{position:absolute;inset:0;z-index:8;pointer-events:none}
.crfx-marker{position:absolute;transform:translate(-50%,-50%);width:calc(40px / var(--crfx-preview-scale,1));height:calc(40px / var(--crfx-preview-scale,1));min-width:0;min-height:0;border:2px solid #fff;border-radius:50%;background:#841c30;color:#fff;font:600 calc(13px / var(--crfx-preview-scale,1))/1 sans-serif;display:grid;place-items:center;padding:0;box-shadow:0 0 0 2px #841c30;cursor:grab;pointer-events:auto;touch-action:none}
.crfx-marker[aria-pressed=true]{background:#176b94;box-shadow:0 0 0 3px #ffd169}.crfx-marker:focus-visible{outline:3px solid #ffd169;outline-offset:4px}
.crfx-pick-highlight{outline:3px dashed #ffd169!important;outline-offset:-3px}
html.crfx-admin-preview{margin-top:0!important}.crfx-admin-preview #wpadminbar{display:none!important}
