/* PUCC polish layer: animations, ad banners, floating actions */
#progress{position:fixed;top:0;left:0;height:4px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,#E50914,#075B3A);z-index:9999;pointer-events:none}
/* richer reveal variants */
.reveal{transition-duration:.9s}
.stagger .reveal:nth-child(2){transition-delay:.08s}.stagger .reveal:nth-child(3){transition-delay:.16s}.stagger .reveal:nth-child(4){transition-delay:.24s}.stagger .reveal:nth-child(5){transition-delay:.32s}.stagger .reveal:nth-child(6){transition-delay:.4s}
/* hero life */
.hero,.page-banner{position:relative;overflow:hidden}
.hero::before,.page-banner::before{content:"";position:absolute;inset:-20%;z-index:0;pointer-events:none;background:radial-gradient(40% 40% at 20% 30%,rgba(229,9,20,.13),transparent 70%),radial-gradient(38% 38% at 80% 70%,rgba(7,91,58,.16),transparent 70%);animation:drift 14s ease-in-out infinite alternate}
.hero>:not(svg),.page-banner>:not(svg){position:relative;z-index:1}
.hero>svg,.page-banner>svg{position:absolute}
.hero-curve,.banner-curve{animation:floaty 9s ease-in-out infinite}
.hero-curve.c2,.banner-curve.c2{animation-duration:12s;animation-direction:reverse}
.hero-visual{animation:floaty 7s ease-in-out infinite}
.hero-badge .dot{animation:pulse 1.8s ease-out infinite}
.hero h1,.page-banner h1{background:linear-gradient(100deg,var(--ink) 0 40%,var(--red) 50%,var(--green) 60%,var(--ink) 70% 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shine 7s linear infinite}
@keyframes drift{to{transform:translate3d(4%,-3%,0) scale(1.08)}}
@keyframes floaty{50%{transform:translateY(-14px) rotate(1.5deg)}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(229,9,20,.55)}100%{box-shadow:0 0 0 12px rgba(229,9,20,0)}}
@keyframes shine{to{background-position:-250% 0}}
/* buttons: shine sweep */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::after{content:"";position:absolute;top:0;left:-70%;width:50%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);transition:left .7s ease;z-index:-1}
.btn:hover::after{left:130%}
.btn-primary{animation:glow 2.8s ease-in-out infinite}
@keyframes glow{50%{box-shadow:0 12px 34px rgba(229,9,20,.5)}}
/* cards: lift + cursor spotlight */
.why-card,.course-card,.dir-card,.stat-card,.approach-card,.vm-card,.msg-card{position:relative;transition:transform .35s cubic-bezier(.2,.7,.3,1),box-shadow .35s,background .3s}
.course-card:hover,.dir-card:hover,.stat-card:hover,.approach-card:hover{transform:translateY(-8px);box-shadow:0 22px 50px rgba(17,17,17,.14)}
.why-card::before,.course-card::before,.dir-card::before,.stat-card::before,.approach-card::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),rgba(229,9,20,.09),rgba(7,91,58,.06) 45%,transparent 70%)}
.why-card:hover::before,.course-card:hover::before,.dir-card:hover::before,.stat-card:hover::before,.approach-card:hover::before{opacity:1}
.dir-photo img,.av-frame img,.cc-img img{transition:transform .8s cubic-bezier(.2,.7,.3,1)}
.dir-card:hover .dir-photo img{transform:scale(1.05)}
.stat-ic{transition:transform .5s}.stat-card:hover .stat-ic{transform:rotate(-8deg) scale(1.15)}
/* marquee ad strip */
.ad-strip{background:linear-gradient(90deg,var(--green-deep),var(--green));color:#fff;overflow:hidden;white-space:nowrap;padding:13px 0;position:relative;z-index:2;border-block:1px solid rgba(255,255,255,.12)}
.ad-track{display:inline-flex;gap:46px;animation:marq 32s linear infinite;will-change:transform}
.ad-strip:hover .ad-track{animation-play-state:paused}
.ad-track span{font-family:var(--ff-head);font-weight:600;font-size:15px;letter-spacing:.04em;display:inline-flex;align-items:center;gap:46px}
.ad-track span::after{content:"\25C6";color:#ff5a63;font-size:11px}
@keyframes marq{to{transform:translateX(-50%)}}
/* big admissions ad */
.ad-banner{position:relative;overflow:hidden;border-radius:30px;padding:56px 52px;color:#fff;display:grid;grid-template-columns:1.4fr 1fr;gap:34px;align-items:center;background:linear-gradient(130deg,#7a0309 0%,#B4070F 45%,#054228 100%);background-size:200% 200%;animation:grad 10s ease infinite;box-shadow:0 30px 70px rgba(180,7,15,.3)}
.ad-banner::before,.ad-banner::after{content:"";position:absolute;border-radius:50%;border:34px solid rgba(255,255,255,.1);pointer-events:none}
.ad-banner::before{width:340px;height:340px;right:-90px;top:-110px;animation:floaty 8s ease-in-out infinite}
.ad-banner::after{width:220px;height:220px;left:-70px;bottom:-100px;animation:floaty 10s ease-in-out infinite reverse}
@keyframes grad{50%{background-position:100% 50%}}
.ad-tag{display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--red-deep);font:700 12.5px var(--ff-head);letter-spacing:.1em;padding:7px 14px;border-radius:99px}
.ad-tag i{width:8px;height:8px;border-radius:50%;background:var(--red);animation:pulse 1.6s infinite}
.ad-banner h2{font-size:clamp(30px,4.4vw,52px);line-height:1.05;margin:18px 0 14px;color:#fff;position:relative}
.ad-banner h2 em{font-style:normal;color:#ffd24d}
.ad-banner p{color:rgba(255,255,255,.9);font-size:17px;line-height:1.65;max-width:52ch;position:relative}
.ad-pills{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px;position:relative}
.ad-pills span{padding:8px 15px;border-radius:99px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.28);font-weight:600;font-size:13.5px;backdrop-filter:blur(4px)}
.ad-side{position:relative;display:grid;gap:14px;justify-items:start}
.ad-side .call{font:700 28px var(--ff-head);color:#fff;text-decoration:none}
.ad-side small{color:rgba(255,255,255,.8);display:block}
@media(max-width:860px){.ad-banner{grid-template-columns:1fr;padding:38px 26px}}
/* floating actions */
.fab{position:fixed;right:18px;bottom:18px;display:grid;gap:12px;z-index:900}
.fab a,.fab button{width:54px;height:54px;border-radius:50%;border:0;display:grid;place-items:center;color:#fff;cursor:pointer;box-shadow:0 10px 26px rgba(0,0,0,.28);transition:transform .25s}
.fab a:hover,.fab button:hover{transform:scale(1.12) translateY(-3px)}
.fab .wa{background:#25D366;animation:pulse2 2.2s infinite}.fab .ph{background:var(--red)}
.fab .up{background:var(--ink);opacity:0;pointer-events:none;transform:translateY(10px)}.fab .up.show{opacity:1;pointer-events:auto;transform:none}
@keyframes pulse2{0%{box-shadow:0 0 0 0 rgba(37,211,102,.6)}100%{box-shadow:0 0 0 18px rgba(37,211,102,0)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* inner-page hero (split layout) */
.page-banner{padding:calc(var(--nav-h) + 40px) 0 56px}
.ph-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}
.ph-copy .sub{max-width:54ch}
.page-banner .hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}
.ph-visual{position:relative;border-radius:28px;overflow:hidden;background:#fff;box-shadow:0 30px 70px rgba(17,17,17,.2);animation:floaty 8s ease-in-out infinite;transform:rotate(1.2deg)}
.ph-visual img{width:100%;height:auto;object-fit:contain;display:block}
.ph-chip{position:absolute;left:16px;bottom:16px;z-index:2;display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--ink);font:700 13px var(--ff-head);padding:9px 15px;border-radius:99px;box-shadow:0 8px 22px rgba(0,0,0,.2)}
.ph-chip i{width:8px;height:8px;border-radius:50%;background:var(--red);animation:pulse 1.8s infinite}
.ph-icon{display:grid;place-items:center;background:linear-gradient(150deg,var(--green),var(--green-deep))}
.ph-icon svg{width:46%;color:#fff;opacity:.95}
@media(max-width:900px){.ph-grid{grid-template-columns:1fr;gap:30px}.ph-visual{transform:none;max-width:560px}.page-banner{padding-bottom:44px}}
.page-banner .eyebrow{margin-bottom:16px}
.ph-icon{aspect-ratio:4/3}

/* stats band stays static */
.stat-card,.stat-card:hover{transform:none!important;box-shadow:none!important;transition:none}
.stat-card::before{display:none!important}
.stat-card:hover .stat-ic{transform:none}
