/*! CAS Bespoke Menu | GPL-2.0-or-later | Readable source: assets/css/text-scramble.css */
/* The intact source establishes width and remains available to assistive technology. */.cas-menu-scramble-label{position:relative;display:inline-block;max-width:100%;min-width:0;vertical-align:baseline;}.cas-menu-scramble-label:is(.cas-menu-scramble-label--scramble, .cas-menu-scramble-label--roll, .cas-menu-scramble-label--tracking, .cas-menu-scramble-label--roll-stagger, .cas-menu-scramble-label--glow-wave, .cas-menu-scramble-label--neon-duotone, .cas-menu-scramble-label--fuzzy) > .cas-menu-scramble-source{opacity:0;}.cas-menu-scramble-visual{position:absolute;inset:0;overflow:hidden;pointer-events:none;}.cas-menu-scramble-visual::before{content:attr(data-scramble-text);}.cas-menu-scramble-label:is(.cas-menu-scramble-label--tracking, .cas-menu-scramble-label--roll-stagger, .cas-menu-scramble-label--glow-wave) .cas-menu-scramble-visual{overflow:visible;}.cas-menu-scramble-label:is(.cas-menu-scramble-label--tracking, .cas-menu-scramble-label--roll-stagger, .cas-menu-scramble-label--glow-wave) .cas-menu-scramble-visual::before{content:none;}.cas-menu-text-character{position:absolute;display:block;white-space:pre;pointer-events:none;}.cas-menu-text-character::before{content:attr(data-tracking-character);}.cas-menu-scramble-label--roll-stagger .cas-menu-text-character{overflow:hidden;}.cas-menu-scramble-label--roll-stagger .cas-menu-text-character::before,.cas-menu-scramble-label--roll-stagger .cas-menu-text-character::after{content:attr(data-tracking-character);position:absolute;inset:0;transform:translateY(var(--cas-menu-character-roll, 0%));}.cas-menu-scramble-label--roll-stagger .cas-menu-text-character::after{top:100%;bottom:-100%;}.cas-menu-scramble-label--roll .cas-menu-scramble-visual::before,.cas-menu-scramble-label--roll .cas-menu-scramble-visual::after{content:attr(data-scramble-text);position:absolute;inset:0;animation-duration:var(--cas-menu-hover-duration, 180ms);animation-timing-function:var(--cas-menu-hover-easing, ease-out);animation-fill-mode:both;}.cas-menu-scramble-label--roll .cas-menu-scramble-visual::before{color:var(--cas-menu-desktop-text, var(--cas-menu-preview-desktop-text, inherit));animation-name:cas-menu-text-roll-out;}.cas-menu-scramble-label--roll .cas-menu-scramble-visual::after{animation-name:cas-menu-text-roll-in;}.cas-menu-scramble-label--submenu.cas-menu-scramble-label--roll .cas-menu-scramble-visual::before{color:var(--cas-menu-desktop-submenu-text, var(--cas-menu-preview-dropdown-text, inherit));}.cas-menu-scramble-label--brackets .cas-menu-scramble-visual{overflow:visible;}.cas-menu-scramble-label--brackets:not(.cas-menu-scramble-label--bracket-anchor) .cas-menu-scramble-visual{display:none;}.cas-menu-scramble-label--brackets .cas-menu-scramble-visual::before,.cas-menu-scramble-label--brackets .cas-menu-scramble-visual::after{position:absolute;top:50%;font-weight:600;line-height:1;animation-duration:var(--cas-menu-hover-duration, 180ms);animation-timing-function:var(--cas-menu-hover-easing, ease-out);animation-fill-mode:both;}.cas-menu-scramble-label--brackets .cas-menu-scramble-visual::before{content:'[';left:-.6em;animation-name:cas-menu-bracket-left;}.cas-menu-scramble-label--brackets .cas-menu-scramble-visual::after{content:']';right:-.6em;animation-name:cas-menu-bracket-right;}@keyframes cas-menu-text-roll-out{from{transform:translateY(0);}to{transform:translateY(-110%);}}@keyframes cas-menu-text-roll-in{from{transform:translateY(110%);}to{transform:translateY(0);}}@keyframes cas-menu-bracket-left{from{opacity:0;transform:translate(-.65em, calc(-50% - .3em));}to{opacity:1;transform:translate(0, -50%);}}@keyframes cas-menu-bracket-right{from{opacity:0;transform:translate(.65em, calc(-50% + .3em));}to{opacity:1;transform:translate(0, -50%);}}/* Whole-label paint keeps Unicode shaping and the original accessible text intact. */.cas-menu-scramble-label:is(.cas-menu-scramble-label--neon-duotone,.cas-menu-scramble-label--aurora,.cas-menu-scramble-label--negative-mask,.cas-menu-scramble-label--negative-mask-follow) > .cas-menu-scramble-visual{overflow:visible;--cas-menu-text-primary:var(--cas-menu-effect-colour,currentColor);--cas-menu-text-secondary:var(--cas-menu-effect-secondary,currentColor);}.cas-menu-scramble-label--neon-duotone > .cas-menu-scramble-visual::before{animation:cas-menu-text-neon-duotone var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-in-out) infinite alternate;}@keyframes cas-menu-text-neon-duotone{from{text-shadow:var(--cas-menu-text-base-shadow),0 0 .025em currentColor,0 0 .08em var(--cas-menu-text-primary),0 0 .08em var(--cas-menu-text-primary),0 0 calc(.6em * var(--cas-menu-text-effect-intensity,.5)) var(--cas-menu-text-primary),0 0 calc(1.2em * var(--cas-menu-text-effect-intensity,.5)) var(--cas-menu-text-primary);}to{text-shadow:var(--cas-menu-text-base-shadow),0 0 .025em currentColor,0 0 .08em var(--cas-menu-text-secondary),0 0 .08em var(--cas-menu-text-secondary),0 0 calc(.6em * var(--cas-menu-text-effect-intensity,.5)) var(--cas-menu-text-secondary),0 0 calc(1.2em * var(--cas-menu-text-effect-intensity,.5)) var(--cas-menu-text-secondary);}}/* With no background-clip support, the intact source remains the readable fallback. */.cas-menu-scramble-label--aurora > .cas-menu-scramble-visual{opacity:var(--cas-menu-text-effect-intensity,.5);}.cas-menu-scramble-label--aurora > .cas-menu-scramble-visual::before{display:block;white-space:inherit;}@supports ((background-clip:text) or (-webkit-background-clip:text)){.cas-menu-scramble-label--aurora > .cas-menu-scramble-visual::before{background-image:radial-gradient(ellipse at 20% 15%,var(--cas-menu-text-primary) 0%,transparent 55%),radial-gradient(ellipse at 75% 85%,var(--cas-menu-text-secondary) 0%,transparent 60%),linear-gradient(115deg,var(--cas-menu-text-primary),var(--cas-menu-text-secondary),var(--cas-menu-text-primary));background-size:220% 240%,260% 220%,200% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;text-shadow:none;animation:cas-menu-text-aurora var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-in-out) infinite alternate;}}@keyframes cas-menu-text-aurora{from{background-position:0% 0%,100% 100%,0% 50%;}to{background-position:100% 100%,0% 0%,100% 50%;}}/* A moving disc and an identically clipped text copy produce a local negative mask.
   Both use configured colours; no blending/filter affects the surrounding menu. */.cas-menu-scramble-label--negative-mask > .cas-menu-scramble-visual::before{content:"";position:absolute;top:50%;width:var(--cas-menu-text-mask-size);height:var(--cas-menu-text-mask-size);border-radius:50%;transform:translate(-50%,-50%);background:var(--cas-menu-text-primary);animation:cas-menu-text-mask-disc var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-in-out) infinite alternate;}.cas-menu-scramble-label--negative-mask > .cas-menu-scramble-visual::after{content:attr(data-scramble-text);position:absolute;inset:0;color:var(--cas-menu-text-secondary);text-shadow:none;clip-path:circle(calc(var(--cas-menu-text-mask-size) / 2) at calc(var(--cas-menu-text-mask-size) / 2) 50%);animation:cas-menu-text-mask-copy var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-in-out) infinite alternate;}@keyframes cas-menu-text-mask-disc{from{left:calc(var(--cas-menu-text-mask-size) / 2);}to{left:calc(100% - var(--cas-menu-text-mask-size) / 2);}}@keyframes cas-menu-text-mask-copy{from{clip-path:circle(calc(var(--cas-menu-text-mask-size) / 2) at calc(var(--cas-menu-text-mask-size) / 2) 50%);}to{clip-path:circle(calc(var(--cas-menu-text-mask-size) / 2) at calc(100% - var(--cas-menu-text-mask-size) / 2) 50%);}}/* Pointer-follow variant shares exactly one centre between the disc and inverse copy. */.cas-menu-scramble-label--negative-mask-follow > .cas-menu-scramble-visual::before{content:"";position:absolute;left:var(--cas-menu-text-mask-x,50%);top:var(--cas-menu-text-mask-y,50%);width:var(--cas-menu-text-mask-size);height:var(--cas-menu-text-mask-size);border-radius:50%;transform:translate(-50%,-50%);background:var(--cas-menu-text-primary);transition:left var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-out),top var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-out);}.cas-menu-scramble-label--negative-mask-follow > .cas-menu-scramble-visual::after{content:attr(data-scramble-text);position:absolute;inset:0;color:var(--cas-menu-text-secondary);text-shadow:none;clip-path:circle(calc(var(--cas-menu-text-mask-size) / 2) at var(--cas-menu-text-mask-x,50%) var(--cas-menu-text-mask-y,50%));transition:clip-path var(--cas-menu-hover-duration,180ms) var(--cas-menu-hover-easing,ease-out);}/* Independently displaced horizontal scanlines give a sharp analogue-noise texture.
   Only the title overlay is sliced; its canonical source still establishes layout. */.cas-menu-scramble-label--fuzzy > .cas-menu-scramble-visual{overflow:visible;}.cas-menu-scramble-label--fuzzy > .cas-menu-scramble-visual::before{content:none;}.cas-menu-fuzzy-strip{position:absolute;inset:0;pointer-events:none;animation:cas-menu-text-fuzzy var(--cas-menu-hover-duration,180ms) steps(1,end) infinite;}.cas-menu-fuzzy-strip::before{content:attr(data-fuzzy-text);white-space:inherit;}@keyframes cas-menu-text-fuzzy{0%,100%{transform:translateX(var(--cas-fuzzy-x0));}17%{transform:translateX(var(--cas-fuzzy-x1));}39%{transform:translateX(var(--cas-fuzzy-x2));}58%{transform:translateX(var(--cas-fuzzy-x3));}81%{transform:translateX(var(--cas-fuzzy-x4));}}@media (prefers-reduced-motion: reduce){.cas-menu-scramble-label > .cas-menu-scramble-source{opacity:1 !important;}.cas-menu-scramble-visual{display:none;}}.cas-menu-scramble-label--glow-wave .cas-menu-text-character{transform-origin:center center;}
