
.iptv4ca-loader{--iv-pink:#ee45a3;--iv-white:#effaff;position:fixed;inset:0;z-index:2147483000;display:none;place-items:center;overflow:hidden;isolation:isolate;background:linear-gradient(150deg,#021020ee,#06243cbb 52%,#12142be8);color:var(--iv-white);font-family:Poppins,Inter,system-ui,-apple-system,"Segoe UI",sans-serif;opacity:1;visibility:visible;transition:opacity .75s ease,visibility .75s ease;pointer-events:auto}
.iptv4ca-loader.iv-active{display:grid}
.iptv4ca-loader.iv-closed{opacity:0;visibility:hidden;pointer-events:none}
.iptv4ca-loader *{box-sizing:border-box}
.iptv4ca-loader .iv-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.iptv4ca-loader:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 50%,transparent 23%,rgba(1,8,21,.45) 100%);z-index:0}
.iptv4ca-loader .iv-stage{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:min(94vw,1000px);min-height:340px;padding:clamp(24px,5vw,64px) clamp(12px,4vw,48px);text-align:center;text-shadow:0 5px 22px #001b2bce;perspective:900px}
.iptv4ca-loader .iv-type-viewport{position:relative;display:flex;align-items:center;justify-content:center;width:100%;min-height:clamp(90px,12vw,125px);padding:12px 0;overflow:visible;transform-style:preserve-3d}
.iptv4ca-loader .iv-type-word{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;white-space:pre;gap:0;font-weight:700;font-size:clamp(27px,5.6vw,66px);letter-spacing:-.045em;line-height:1.05;pointer-events:none;color:#f7fcff;text-shadow:0 0 12px #4bc5ff25}
.iptv4ca-loader .iv-type-word.long{font-size:clamp(23px,4.8vw,55px)}
.iptv4ca-loader .iv-letter{display:inline-block;opacity:0;transform:translate3d(0,26px,0) scale(.94);animation:iv-arrive .48s cubic-bezier(.15,.85,.17,1.12) both;animation-delay:calc(var(--j)*25ms)}
.iptv4ca-loader .iv-type-word.leaving .iv-letter{animation:iv-depart .16s ease-in both;animation-delay:0ms}
@keyframes iv-arrive{0%{opacity:0;transform:translate3d(0,25px,0) scale(.94)}100%{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@keyframes iv-depart{0%{opacity:1;transform:translate3d(0,0,0)}100%{opacity:0;transform:translate3d(0,-19px,0)}}
.iptv4ca-loader .iv-brand{font-weight:900;letter-spacing:-.065em;line-height:1.06;font-size:clamp(72px,12vw,148px);margin:10px 0 0;display:flex;justify-content:center;align-items:center;min-height:1.13em;white-space:nowrap}
.iptv4ca-loader .iv-brand-char{color:var(--iv-white);display:inline-block;min-width:.54em;opacity:0;transform:translate3d(0,8px,0);transition:opacity .15s ease,transform .21s cubic-bezier(.2,.85,.2,1)}
.iptv4ca-loader .iv-brand-char.visible{opacity:1;transform:none}
.iptv4ca-loader .iv-brand-char.rolling{text-shadow:0 0 16px #76e5ff44}
.iptv4ca-loader .iv-brand-char.pink{color:var(--iv-pink)}
.iptv4ca-loader .iv-tagline{margin:16px auto 0;color:#fff;font-size:clamp(14px,2.1vw,21px);font-weight:500;letter-spacing:.005em;line-height:1.5;text-transform:none;max-width:min(93vw,850px);padding-inline:12px;text-align:center;text-wrap:balance}
.iptv4ca-loader .iv-message{margin:30px 0 0;color:#c4dfed;font-size:clamp(14px,2.1vw,18px);line-height:1.5}
@media(max-width:680px){.iptv4ca-loader .iv-stage{padding:28px 12px;min-height:330px}.iptv4ca-loader .iv-type-viewport{min-height:108px}.iptv4ca-loader .iv-type-word{font-size:clamp(26px,7vw,46px)}.iptv4ca-loader .iv-type-word.long{font-size:clamp(22px,6.2vw,40px)}.iptv4ca-loader .iv-brand{font-size:clamp(52px,12.5vw,88px)}.iptv4ca-loader .iv-tagline{font-size:clamp(12px,3.4vw,16px)}.iptv4ca-loader .iv-message{margin-top:26px}}
@media(max-width:360px){.iptv4ca-loader .iv-type-word{font-size:26px}.iptv4ca-loader .iv-type-word.long{font-size:22px}.iptv4ca-loader .iv-brand{font-size:clamp(44px,12vw,59px)}}
@media(prefers-reduced-motion:reduce){.iptv4ca-loader,.iptv4ca-loader .iv-brand-char{transition:none}.iptv4ca-loader .iv-letter,.iptv4ca-loader .iv-type-word.leaving .iv-letter{animation:none;transform:none;opacity:1}}

/* Safeguard against static foreground text flashing before the animation engine initializes. */
html.iv-home-loading body > :not(#iptv4ca-loader):not(script){visibility:hidden!important}
html.iv-home-loading body > #iptv4ca-loader{visibility:visible!important}
.iptv4ca-loader .iv-stage{opacity:0;transition:opacity .2s ease}
.iptv4ca-loader.iv-ready .iv-stage{opacity:1}
.iptv4ca-loader .iv-static-word .iv-letter{opacity:1;transform:none;animation:none}
.iptv4ca-loader .iv-brand-char{min-width:.54em}
.iptv4ca-loader .iv-brand-char.rolling{transform:translateY(-2px)}
@media(prefers-reduced-motion:reduce){.iptv4ca-loader .iv-stage{transition:none}}

/* Performance v1.2.0: stable and GPU-friendly motion. */
.iptv4ca-loader .iv-letter{will-change:transform,opacity;backface-visibility:hidden}
.iptv4ca-loader .iv-type-word{filter:none}
.iptv4ca-loader .iv-brand-char{filter:none!important;will-change:auto}
.iptv4ca-loader.iv-closed{transition:opacity .7s ease,visibility .7s ease}
