/* Module banner: animated vector surfaces, selectable text, stable local actions. */
.wv-banner{box-sizing:border-box;--bn-ink:#2b203b;--bn-accent:#603a87;--bn-paper:#eee2fa;--bn-soft:#e1f0e6;--bn-line:#b49bcd;container-type:inline-size;isolation:isolate;position:relative;display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden;min-width:0;width:100%;padding:24px 27px 14px;border:1px solid var(--bn-line);border-radius:24px;background:radial-gradient(ellipse at 95% 10%,#ffffffd0,transparent 50%),linear-gradient(115deg,#faf7ff,var(--bn-paper) 70%,var(--bn-soft));box-shadow:0 8px 28px #34204410;font:14px/1.5 system-ui,sans-serif;color:var(--bn-ink);margin:0 0 22px;text-align:left}
.wv-banner[data-tone=mint]{--bn-accent:#285d52;--bn-paper:#dff0e7;--bn-soft:#e4dbf6;--bn-line:#99bdb2;--bn-ink:#1d3d35}
.wv-banner[data-tone=pink]{--bn-accent:#8a365d;--bn-paper:#f7dfeb;--bn-soft:#e9ddfa;--bn-line:#cf9bb4;--bn-ink:#42213a}
.wv-banner[data-tone=gold]{--bn-accent:#765018;--bn-paper:#f8ebce;--bn-soft:#e6eed7;--bn-line:#c7ad7a;--bn-ink:#493817}
.wv-banner[data-tone=blue]{--bn-accent:#345d8b;--bn-paper:#dfebfa;--bn-soft:#e8e0f7;--bn-line:#9db5d2;--bn-ink:#243c58}
.wv-banner *{box-sizing:border-box}
.wv-banner :is(button,a){font:inherit;touch-action:manipulation;cursor:pointer;text-decoration:none;letter-spacing:normal}
.wv-banner svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.wv-banner .wv-banner-sr{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.wv-banner-copy{position:relative;z-index:2;min-width:0;padding-right:29%;color:var(--bn-ink)}
.wv-banner-eyebrow{display:flex;align-items:center;gap:7px;color:var(--bn-accent);font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;margin-bottom:12px}
.wv-banner-slides{display:grid;grid-template-columns:minmax(0,1fr);min-width:0}
.wv-banner-slide{grid-area:1/1;min-width:0;visibility:hidden;pointer-events:none;opacity:0;transform:translateY(9px);transition:opacity .45s,transform .45s;align-self:start}
.wv-banner-slide.is-active{visibility:visible;pointer-events:auto;opacity:1;transform:none}
.wv-banner .wv-banner-slide h2{font-size:clamp(25px,3.6cqw,37px);font-weight:800;letter-spacing:-1.1px;line-height:1.12;margin:0 0 11px;color:var(--bn-ink);text-wrap:balance;overflow-wrap:normal}
.wv-banner .wv-banner-slide p{font-size:13px;line-height:1.6;color:var(--bn-ink);opacity:.85;margin:0;max-width:530px}
.wv-banner-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:17px;min-width:0}
.wv-banner .wv-banner-actions :is(a,button){display:inline-flex;align-items:center;justify-content:center;min-height:42px;min-width:0;padding:9px 14px;border-radius:12px;font-size:12px;font-weight:700;line-height:1.4;border:1px solid var(--bn-accent);white-space:normal;text-align:center}
.wv-banner .wv-banner-primary{background:var(--bn-accent);color:#fff;box-shadow:0 4px 10px #3f24551c}
.wv-banner .wv-banner-secondary{background:#ffffff80;color:var(--bn-accent);border-color:var(--bn-line)!important}
.wv-banner .wv-banner-actions :is(a,button):hover{filter:brightness(.95)}
.wv-banner .wv-banner-art{position:absolute;z-index:1;right:3%;top:14%;width:25%;height:175px;color:var(--bn-accent);pointer-events:none}
.wv-banner-art-card{position:absolute;display:flex;flex-direction:column;gap:9px;width:116px;height:134px;padding:17px;border:1px solid #ffffffd6;border-radius:21px;background:#ffffff99;box-shadow:0 12px 22px #34223d12;backdrop-filter:blur(5px)}
.wv-banner-art-card.back{left:0;top:17px;transform:rotate(-15deg);background:linear-gradient(150deg,var(--bn-soft),#ffffffa0);padding-top:35px;animation:wv-banner-back 8s ease-in-out infinite}
.wv-banner-art-card.front{right:4%;top:11px;transform:rotate(12deg);animation:wv-banner-front 7s ease-in-out infinite}
.wv-banner-art-card.front>svg{width:40px;height:40px;margin-bottom:5px}
.wv-banner-art-card i{display:block;width:100%;height:5px;border-radius:10px;background:currentColor;opacity:.16}
.wv-banner-art-card i:last-child{width:65%}
.wv-banner-art-token{position:absolute;bottom:0;left:-5px;display:grid;place-items:center;width:51px;height:51px;border-radius:17px;background:var(--bn-accent);color:#fff;box-shadow:0 8px 18px #36224222;transform:rotate(-7deg);animation:wv-banner-token 6s ease-in-out infinite}
.wv-banner-art-token svg{width:24px;height:24px}
.wv-banner-art-spark{position:absolute;right:-1%;top:-7%;color:var(--bn-accent);animation:wv-banner-token 9s ease-in-out infinite}
.wv-banner-art-spark svg{width:35px;height:35px}
.wv-banner-bar{display:flex;align-items:center;gap:10px;margin-top:16px;position:relative;z-index:2;min-width:0}
.wv-banner-dots{display:flex;gap:0;align-items:center}
.wv-banner .wv-banner-dots button{display:grid;place-items:center;width:30px;height:40px;min-width:30px;min-height:40px;border:0;background:transparent;padding:0;box-shadow:none}
.wv-banner-dots button:after{content:'';width:6px;height:6px;border-radius:10px;background:var(--bn-accent);opacity:.32;transition:width .3s,opacity .3s}
.wv-banner-dots button[aria-pressed=true]:after{width:22px;opacity:1}
.wv-banner-count{font-size:10px;color:var(--bn-accent);font-variant-numeric:tabular-nums;letter-spacing:.08em}
.wv-banner .wv-banner-pause{margin-left:auto;display:grid;place-items:center;width:40px;height:40px;min-height:40px;min-width:40px;padding:0;border:1px solid var(--bn-line);border-radius:50%;background:#ffffff90;color:var(--bn-accent);font-size:16px;box-shadow:none}
.wv-banner [aria-pressed]:focus-visible,.wv-banner :is(a,button):focus-visible{outline:3px solid var(--bn-accent);outline-offset:2px}
.wv-banner[data-running=false] .wv-banner-art *{animation-play-state:paused}
@keyframes wv-banner-front{50%{transform:translateY(-7px) rotate(8deg)}}
@keyframes wv-banner-back{50%{transform:translate(3px,5px) rotate(-10deg)}}
@keyframes wv-banner-token{50%{transform:translateY(-8px) rotate(5deg)}}
@container(max-width:650px){.wv-banner-copy{padding-right:0}.wv-banner .wv-banner-art{right:17px;top:12px;width:43px;height:43px;opacity:.7}.wv-banner-art-card,.wv-banner-art-token{display:none}.wv-banner-art-spark{right:0;top:0}.wv-banner-art-spark svg{width:26px;height:26px}.wv-banner .wv-banner-slide h2{font-size:29px;letter-spacing:-.8px}.wv-banner .wv-banner-slide p{font-size:12px}.wv-banner-eyebrow{padding-right:30px}.wv-banner-actions{margin-top:13px}.wv-banner-bar{margin-top:8px}}
@container(max-width:370px){.wv-banner .wv-banner-slide h2{font-size:25px}.wv-banner .wv-banner-actions :is(a,button){padding:9px 10px;font-size:11px}.wv-banner-actions{gap:7px}.wv-banner-eyebrow{font-size:9px;letter-spacing:.08em}}
@media(max-width:650px){.wv-banner{padding:19px 17px 8px;border-radius:20px;margin-bottom:17px}}
@media(prefers-reduced-motion:reduce){.wv-banner *{animation:none!important;transition:none!important}}
@media(forced-colors:active){.wv-banner{border:2px solid CanvasText}.wv-banner .wv-banner-primary{border:2px solid ButtonText}.wv-banner-dots button[aria-pressed=true]{border:2px solid Highlight}}
/* Integration: banner replaces the module introduction, not its content controls. */
.pc-discovery>.wv-banner-host{margin:-24px -24px 19px}.pc-discovery>.wv-banner-host>.wv-banner{border-radius:23px 23px 0 0;margin:0;border:0;border-bottom:1px solid var(--bn-line);box-shadow:none}
.wv-banner-host{min-width:0}
.wv-banner-host:empty{display:none}
@media(max-width:650px){.pc-discovery>.wv-banner-host{margin:-17px -13px 17px}.pc-discovery>.wv-banner-host>.wv-banner{border-radius:19px 19px 0 0}}
