/* UCA TV - dark cinematic glass, violet to cyan. 3D: the channel ring on the start page, tilting cards, aurora. */
:root{--bg:#07080f;--bg2:#0d0f1c;--fg:#eef0ff;--mut:#9aa0c3;--line:rgba(255,255,255,.09);--glass:rgba(22,25,46,.55);--glass2:rgba(30,34,62,.7);
--a:#7c5cff;--b:#00d4ff;--c:#ff4fd8;--ok:#38e0a0;--bad:#ff5a7a;--grad:linear-gradient(120deg,var(--a),var(--b));--r:18px;
--shadow:0 20px 60px -20px rgba(0,0,0,.7),0 0 0 1px var(--line) inset}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.55 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif;min-height:100vh;overflow-x:hidden}
a{color:var(--b);text-decoration:none}a:hover{text-decoration:underline}
[hidden]{display:none!important}
h1,h2,h3{line-height:1.15;margin:0 0 .5em;letter-spacing:-.01em}h1{font-size:clamp(30px,5vw,58px)}h2{font-size:clamp(22px,3vw,32px)}
.fine{color:var(--mut);font-size:14px}small.fine{display:block}
code{background:var(--glass2);padding:1px 6px;border-radius:6px}

/* aurora */
.aurora{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.aurora i{position:absolute;width:60vmax;height:60vmax;border-radius:50%;filter:blur(90px);opacity:.28;animation:drift 26s ease-in-out infinite alternate}
.aurora i:nth-child(1){background:var(--a);left:-15vmax;top:-20vmax}
.aurora i:nth-child(2){background:var(--b);right:-20vmax;top:10vmax;animation-duration:32s;opacity:.18}
.aurora i:nth-child(3){background:var(--c);left:20vmax;bottom:-35vmax;animation-duration:38s;opacity:.14}
@keyframes drift{to{transform:translate3d(8vmax,6vmax,0) scale(1.15)}}

/* header / footer */
.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px clamp(16px,4vw,48px);
backdrop-filter:blur(16px);background:rgba(7,8,15,.6);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;color:var(--fg);font-size:20px;font-weight:600;white-space:nowrap}.brand:hover{text-decoration:none}
.brand b{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.logo{width:30px;height:30px;border-radius:9px;background:var(--grad);display:grid;place-items:center;box-shadow:0 0 24px -4px var(--a);animation:pulse 4s ease-in-out infinite}
.logo i{width:0;height:0;border-left:10px solid #fff;border-top:6px solid transparent;border-bottom:6px solid transparent;margin-left:3px}
@keyframes pulse{50%{box-shadow:0 0 34px 0 var(--b)}}
.top nav{display:flex;align-items:center;gap:18px;font-size:15px}.top nav a{color:var(--fg)}
.top nav form{margin:0}
footer{display:flex;flex-wrap:wrap;gap:18px;justify-content:center;padding:40px 16px;color:var(--mut);font-size:14px;border-top:1px solid var(--line);margin-top:60px}
footer a{color:var(--mut)}
main{padding:0 clamp(16px,4vw,48px);max-width:1280px;margin:0 auto}

/* buttons, forms */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;color:#fff;font:600 15px/1 inherit;padding:14px 24px;border-radius:999px;
background:var(--grad);box-shadow:0 10px 30px -10px var(--a);transition:transform .2s,box-shadow .2s;white-space:nowrap}
.btn:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 16px 40px -12px var(--b)}
.btn.ghost{background:var(--glass2);box-shadow:0 0 0 1px var(--line) inset}.btn.sm{padding:9px 16px;font-size:14px}
.btn.danger{background:linear-gradient(120deg,#ff3d6e,#ff7a59)}
button.link{background:none;border:0;color:var(--b);cursor:pointer;font:inherit;padding:0}button.link.danger{color:var(--bad)}
.form{display:flex;flex-direction:column;gap:14px}.form label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--mut)}
input,select,textarea{background:rgba(5,6,14,.6);color:var(--fg);border:1px solid var(--line);border-radius:12px;padding:11px 13px;font:inherit;width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--a);border-color:transparent}
label.check{flex-direction:row!important;align-items:center;gap:10px}label.check input{width:auto}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid2 .wide{grid-column:1/-1}
.err{color:var(--bad)}.ok{color:var(--ok)}

/* glass */
.glass{background:var(--glass);backdrop-filter:blur(18px);border-radius:var(--r);box-shadow:var(--shadow)}
.card{padding:22px;margin:18px 0}.card h2{font-size:20px}

/* hero + 3D ring */
.hero{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:30px;min-height:calc(100vh - 140px);padding:40px 0}
.kicker{text-transform:uppercase;letter-spacing:.18em;font-size:13px;color:var(--b);margin:0 0 14px}
.shine{background:linear-gradient(100deg,#fff 20%,var(--b) 40%,var(--a) 55%,#fff 75%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 8s linear infinite}
@keyframes shine{to{background-position:-250% 0}}
.lead{font-size:clamp(17px,1.6vw,20px);color:var(--mut);max-width:560px}
.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.stage{height:460px;perspective:1100px;position:relative;display:grid;place-items:center}
.ring{position:relative;width:190px;height:120px;transform-style:preserve-3d;animation:spin 30s linear infinite}
.stage:hover .ring{animation-duration:60s}
@keyframes spin{from{transform:rotateX(-8deg) rotateY(0)}to{transform:rotateX(-8deg) rotateY(-360deg)}}
.face{position:absolute;inset:0;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
background:linear-gradient(150deg,rgba(124,92,255,.35),rgba(0,212,255,.18));border:1px solid rgba(255,255,255,.18);backdrop-filter:blur(6px);
transform:rotateY(calc(var(--i) * 360deg / var(--n))) translateZ(calc(var(--n) * 30px + 60px));box-shadow:0 0 40px -10px var(--a);backface-visibility:hidden}
.face img{max-width:70%;max-height:52px;object-fit:contain;filter:drop-shadow(0 4px 10px rgba(0,0,0,.6))}
.face b{font-size:32px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.face span{font-size:13px;color:#fff;max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.floor{position:absolute;bottom:20px;width:70%;height:60px;border-radius:50%;background:radial-gradient(closest-side,rgba(124,92,255,.45),transparent);filter:blur(10px)}

/* sections */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:10px 0 70px}
.stats div{padding:22px;text-align:center}.stats b{display:block;font-size:34px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stats span{color:var(--mut);font-size:14px}
.features{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:80px}
.features article{padding:26px}.features p{color:var(--mut);margin:0}
.tilt{transform-style:preserve-3d;transition:transform .25s ease,box-shadow .25s;will-change:transform}
.tilt:hover{box-shadow:0 30px 70px -25px var(--a),0 0 0 1px rgba(255,255,255,.14) inset}
.ico{width:48px;height:48px;border-radius:14px;margin-bottom:16px;background:var(--grad);position:relative;transform:translateZ(30px);box-shadow:0 10px 30px -10px var(--b)}
.ico::after{content:"";position:absolute;inset:13px;border:2.5px solid #fff;border-radius:5px}
.i-live::after{border-radius:50%;inset:16px;background:#fff;animation:blink 1.6s infinite}@keyframes blink{50%{opacity:.25}}
.i-guide::after{border-width:2.5px 0;inset:15px 12px}.i-apps::after{border-radius:3px;inset:12px 16px}.i-lock::after{border-radius:4px 4px 6px 6px;inset:18px 14px 12px}
.i-fav::after{border:0;inset:12px;background:#fff;clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.i-sync::after{border-radius:50%;border-right-color:transparent;animation:rot 2.5s linear infinite}@keyframes rot{to{transform:rotate(360deg)}}
.steps{margin-bottom:80px;text-align:center}.steps ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:18px;counter-reset:s;margin:0}
.steps li{counter-increment:s;padding:26px;border-radius:var(--r);background:var(--glass);box-shadow:var(--shadow);text-align:left}
.steps li::before{content:counter(s);display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--grad);font-weight:700;margin-bottom:12px}
.steps li b{display:block;font-size:18px}.steps li span{color:var(--mut)}
.pricing{text-align:center;margin-bottom:40px}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;text-align:left;margin:20px 0}
.plan{padding:28px;position:relative;display:flex;flex-direction:column}.plan ul{padding-left:20px;color:var(--mut);flex:1}.plan .btn{align-self:flex-start}
.plan.hot{background:linear-gradient(160deg,rgba(124,92,255,.35),rgba(0,212,255,.12));box-shadow:0 0 0 1px rgba(124,92,255,.6) inset,0 30px 80px -30px var(--a)}
.price{font-size:38px;font-weight:700;margin:4px 0 6px}.price small{font-size:15px;color:var(--mut);font-weight:400}
.ribbon{position:absolute;top:16px;right:16px;background:var(--grad);font-size:12px;padding:4px 10px;border-radius:99px}
.reveal{opacity:0;transform:translateY(30px) scale(.98);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}.reveal.in{opacity:1;transform:none}

/* auth, docs, account */
.auth{max-width:440px;margin:60px auto;padding:34px}
.doc{max-width:820px;margin:40px auto;padding:34px}.doc p,.doc li{color:#cfd3ef}
.acct{max-width:860px;margin:30px auto}
.plan-box{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;padding:24px;margin:18px 0}
.plan-box small{color:var(--mut);letter-spacing:.14em;font-size:12px}.plan-box h2{margin:4px 0}.plan-box p{margin:0;color:var(--mut)}
.plan-box.hot{background:linear-gradient(160deg,rgba(124,92,255,.32),rgba(0,212,255,.1))}
.plan-box.pulse{animation:glow 2s ease-in-out 3}@keyframes glow{50%{box-shadow:0 0 0 2px var(--b),0 0 50px -10px var(--b)}}
.plan-acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.plan-acts form{margin:0}
.rows div{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}.rows div:last-child{border:0}.rows span{color:var(--mut)}
.copy{display:flex;gap:8px;margin:10px 0}.copy input{font-family:Consolas,monospace;font-size:13px}
.dev{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.dev small{color:var(--mut);flex:1}.dev form{margin:0}
.dot{width:9px;height:9px;border-radius:50%;background:#555b80}.dot.on{background:var(--ok);box-shadow:0 0 10px var(--ok)}
details summary{cursor:pointer}.danger summary{color:var(--bad)}

/* the TV page */
.tvapp{padding:24px 0}
.tvbar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:18px}.tvbar h1{font-size:30px;margin:0}
.tvbar input{max-width:340px}.chips{display:flex;gap:8px;flex-wrap:wrap;width:100%}
.chip{border:0;cursor:pointer;color:var(--fg);background:var(--glass2);padding:7px 14px;border-radius:99px;font:14px inherit;box-shadow:0 0 0 1px var(--line) inset;transition:.2s}
.chip.on{background:var(--grad);box-shadow:none}
.upsell{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 18px;margin-bottom:18px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px;perspective:1200px}
.grid h3{grid-column:1/-1;margin:18px 0 0;font-size:18px;color:var(--mut);font-weight:500}
.tile{position:relative;border-radius:16px;padding:14px;cursor:pointer;background:var(--glass);box-shadow:var(--shadow);transform-style:preserve-3d;
transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s;animation:tilein .6s both;animation-delay:calc(var(--k) * 25ms);outline:none}
@keyframes tilein{from{opacity:0;transform:translateY(24px) rotateX(18deg)}}
.tile:hover,.tile:focus-visible{transform:translateY(-6px) rotateX(6deg) scale(1.03);box-shadow:0 26px 50px -20px var(--a),0 0 0 1px rgba(124,92,255,.7) inset}
.tile .art{height:96px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(150deg,rgba(124,92,255,.22),rgba(0,212,255,.08));margin-bottom:10px;overflow:hidden;transform:translateZ(24px)}
.tile .art img{max-width:75%;max-height:64px;object-fit:contain}.tile .art b{font-size:30px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.tile .nm{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile .now{font-size:13px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:19px}
.tile .bar{height:3px;border-radius:2px;background:var(--line);margin-top:6px;overflow:hidden}.tile .bar i{display:block;height:100%;background:var(--grad)}
.tile .fav{position:absolute;top:10px;right:10px;background:none;border:0;font-size:18px;cursor:pointer;color:#7a80a8;transform:translateZ(30px)}.tile .fav.on{color:#ffd166}
.tile .tag{position:absolute;top:10px;left:10px;font-size:11px;padding:2px 8px;border-radius:99px;background:rgba(0,0,0,.55);transform:translateZ(30px)}
.tile.locked .art{filter:grayscale(.7) brightness(.7)}.tile.locked .tag{background:var(--grad)}
.tile.down{opacity:.55}
.player{margin-bottom:22px;overflow:hidden;animation:pop .45s cubic-bezier(.2,.8,.2,1)}@keyframes pop{from{opacity:0;transform:perspective(900px) rotateX(-10deg) translateY(-16px)}}
.pv{position:relative;background:#000;aspect-ratio:16/9;max-height:72vh}.pv video{width:100%;height:100%;display:block;background:#000}
.pmsg{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:20px;background:rgba(5,6,14,.85)}
.pinfo{display:flex;justify-content:space-between;gap:16px;padding:16px 20px;align-items:flex-start}.pinfo h2{margin:2px 0}.pinfo p{margin:2px 0}
.pinfo small{color:var(--b);text-transform:uppercase;letter-spacing:.12em;font-size:12px}
.empty{padding:40px;text-align:center}

/* admin */
.adm{padding:24px 0}.adm h1{font-size:30px}
.admtabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 18px}.admtabs a{padding:8px 14px;border-radius:99px;color:var(--fg);background:var(--glass2);font-size:14px}
.admtabs a.on{background:var(--grad)}.admtabs a:hover{text-decoration:none}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:16px 0}.cards div{padding:18px}.cards b{display:block;font-size:28px}.cards span{color:var(--mut);font-size:13px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.two .card{margin:0}
.filters,.bulk{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}.filters input,.filters select,.bulk select,.bulk input{width:auto;min-width:150px}
.tblwrap{overflow-x:auto;border-radius:var(--r);background:var(--glass);box-shadow:var(--shadow);margin:10px 0}
.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;color:var(--mut);font-weight:500;padding:12px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.tbl tr:last-child td{border:0}.tbl tr.off td{opacity:.5}
.tbl td.lg{width:56px}.tbl td.lg img{max-width:48px;max-height:30px;object-fit:contain}.tbl input[type=checkbox]{width:auto}
.tbl .acts{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.tbl .acts form{margin:0}
form.inline{display:flex;gap:6px;align-items:center;margin:0}form.inline input{width:80px;padding:6px 8px}
.pill{display:inline-block;font-size:12px;padding:3px 9px;border-radius:99px;background:var(--glass2);white-space:nowrap}.pill.hot{background:var(--grad)}
.pill.ok{background:rgba(56,224,160,.18);color:var(--ok)}.pill.bad{background:rgba(255,90,122,.18);color:var(--bad)}
.mailprev{width:100%;height:520px;border:0;border-radius:var(--r);background:#fff}

@media (max-width:900px){.hero{grid-template-columns:1fr;min-height:auto;text-align:center}.hero .cta{justify-content:center}.lead{margin:0 auto}
.stage{height:340px}.features,.plans,.steps ol{grid-template-columns:1fr}.stats,.cards{grid-template-columns:repeat(2,1fr)}.two,.grid2{grid-template-columns:1fr}}
@media (max-width:520px){.top nav{gap:12px;font-size:14px}.top nav a[href="/#plans"]{display:none}.grid{grid-template-columns:repeat(2,1fr);gap:10px}
.stage{transform:scale(.75);height:300px}.auth,.doc{padding:22px}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* the TV app promo: a little television whose rows of tiles slide like the app */
.tvapp-promo{display:grid;grid-template-columns:1.1fr 1fr;gap:30px;align-items:center;padding:34px;margin-bottom:80px}
.tvframe{perspective:900px}
.tvscreen{aspect-ratio:16/9;border-radius:14px;border:6px solid #1b1e33;background:radial-gradient(circle at 20% 10%,rgba(124,92,255,.5),transparent 60%),#05060d;
display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr;gap:8px;padding:14% 6% 6%;transform:rotateY(-14deg) rotateX(4deg);box-shadow:0 40px 80px -30px var(--a);overflow:hidden;position:relative}
.tvscreen::before{content:"";position:absolute;left:6%;top:5%;width:38%;height:6%;border-radius:4px;background:var(--grad);opacity:.85}
.tvscreen i{border-radius:8px;background:linear-gradient(150deg,rgba(124,92,255,.45),rgba(0,212,255,.2));animation:tvrow 6s ease-in-out infinite}
.tvscreen i:nth-child(2){animation-delay:.4s}.tvscreen i:nth-child(3){animation-delay:.8s}.tvscreen i:nth-child(4){animation-delay:1.2s}.tvscreen i:nth-child(5){animation-delay:1.6s}.tvscreen i:nth-child(6){animation-delay:2s}
@keyframes tvrow{0%,70%,100%{transform:none;box-shadow:none}35%{transform:scale(1.08);box-shadow:0 0 0 2px #fff,0 10px 30px -6px var(--b)}}
.tvfoot{width:30%;height:10px;margin:14px auto 0;border-radius:6px;background:#1b1e33;transform:rotateY(-14deg)}
@media (max-width:900px){.tvapp-promo{grid-template-columns:1fr;text-align:center}.tvapp-promo .cta{justify-content:center}}
