:root{--bg:#0b0d12;--bg2:#12151c;--bg3:#1a1e28;--line:#262b38;--tx:#e8eaf0;--mut:#8b93a7;--ac:#ff7a1a;--ac2:#ffb066;--ok:#2ecc71;--err:#ff5d5d;--r:12px}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tx);font:15px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.muted{color:var(--mut)}.small{font-size:12px}
button,select,input{font:inherit;color:inherit}
.btn{background:var(--bg3);border:1px solid var(--line);color:var(--tx);padding:8px 14px;border-radius:10px;cursor:pointer}
.btn:hover{border-color:var(--ac)}.btn.primary{background:linear-gradient(135deg,var(--ac),#ff4d00);border:0;color:#fff;font-weight:600}
.btn.ghost{background:transparent}.btn.icon{padding:8px 11px;min-width:40px}.btn.big{padding:13px 16px;font-size:16px;width:100%}
:focus-visible{outline:3px solid var(--ac2);outline-offset:2px}
input,select{background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}
input:focus,select:focus{border-color:var(--ac);outline:none}
.err{background:#3a1519;border:1px solid #6b2229;color:#ffb3b3;padding:9px 12px;border-radius:10px;margin:10px 0}

/* intro */
.intro{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 50% 40%,#1c1f2b,#05060a);display:flex;align-items:center;justify-content:center;animation:fadeout .6s ease 2.4s forwards;cursor:pointer}
.intro-box{text-align:center;animation:pop .9s cubic-bezier(.2,.9,.3,1.2) both}
.intro-logo{width:min(46vw,220px);height:auto;object-fit:contain;filter:drop-shadow(0 0 26px rgba(255,122,26,.25))}
.intro-title{font-size:clamp(28px,6vw,46px);font-weight:800;letter-spacing:.2em;margin-top:18px;background:linear-gradient(90deg,var(--ac2),var(--ac));-webkit-background-clip:text;background-clip:text;color:transparent}
.intro-sub{color:var(--mut);margin-top:6px;letter-spacing:.12em}
.intro-bar{width:min(60vw,260px);height:3px;background:#222;border-radius:3px;margin:26px auto 0;overflow:hidden}
.intro-bar span{display:block;height:100%;width:0;background:var(--ac);animation:load 2.3s ease forwards}
@keyframes pop{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}
@keyframes load{to{width:100%}}
@keyframes fadeout{to{opacity:0;visibility:hidden}}

/* login */
.login{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;background:radial-gradient(circle at 50% 0,#1b1f2c,var(--bg) 60%)}
.login-card{width:100%;max-width:380px;background:var(--bg2);border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.login-logo{display:block;margin:0 auto 12px;width:140px;height:auto;object-fit:contain}
.login-card h1{font-size:20px;text-align:center;margin:0}.login-card p{text-align:center;margin:4px 0 14px}
.login-card label{display:block;margin:12px 0 5px;color:var(--mut);font-size:13px}
.login-card .btn{margin-top:14px}
.foot{color:var(--mut);text-align:center;padding:14px;font-size:12px}
.login .foot{margin-top:16px}

/* app */
.app{height:100%;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:14px;padding:8px 14px;background:var(--bg2);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.08em}
.brand img{height:48px;width:auto;object-fit:contain;flex:none}
.tabs{display:flex;gap:4px;flex:1;overflow-x:auto}
.tab{background:transparent;border:0;color:var(--mut);padding:9px 14px;border-radius:10px;cursor:pointer;white-space:nowrap}
.tab.active{background:var(--bg3);color:var(--ac2);font-weight:600}
.top-r{display:flex;gap:8px;align-items:center}
.top-r select{width:auto;max-width:170px}.top-r input{width:170px;min-width:0}
.user{position:relative}.menu{position:absolute;right:0;top:110%;background:var(--bg2);border:1px solid var(--line);border-radius:12px;padding:12px;min-width:200px;z-index:20;display:flex;flex-direction:column;gap:10px}
.main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,.9fr) minmax(460px,1.1fr);gap:0}
.player-col{display:flex;flex-direction:column;min-width:0;padding:12px;overflow:auto}
.player{position:relative;flex:0 0 auto;background:#000;border-radius:var(--r);overflow:hidden;aspect-ratio:var(--video-aspect,16/9);width:100%}
.player video{position:absolute;inset:0;width:100%;height:100%;background:#000;display:block;object-fit:contain}
.player.fit-cover{aspect-ratio:16/9}
.player.fit-cover video{object-fit:cover}
.player:fullscreen{width:100%;height:100%;aspect-ratio:auto;border-radius:0}
.player:-webkit-full-screen{width:100%;height:100%;aspect-ratio:auto;border-radius:0}
.player-msg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;color:var(--mut);pointer-events:none;font-size:16px}
.player-msg.err{color:#ffb3b3}
.player-msg.busy::after{content:"";width:34px;height:34px;border:4px solid #333;border-top-color:var(--ac);border-radius:50%;animation:sp 1s linear infinite;margin-left:12px}
@keyframes sp{to{transform:rotate(360deg)}}
.now{padding:12px 4px;flex:none}.now-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.now-title{font-size:18px;font-weight:700;flex:1;min-width:140px}
.now-btns{display:flex;gap:6px;flex-wrap:wrap}
.video-fit{width:auto;max-width:180px;padding:8px 10px;font-size:13px}
.now-sub{color:var(--mut);font-size:13px;margin-top:2px}
.now-epg{margin-top:8px;font-size:13px}.now-epg b{color:var(--ac2)}
.list-col{display:flex;flex-direction:column;min-width:0;min-height:0;border-left:1px solid var(--line);background:var(--bg2)}
.cat-row{display:none;padding:8px}
.cols{flex:1;min-height:0;display:grid;grid-template-columns:170px minmax(0,1fr)}
.cats{list-style:none;margin:0;padding:6px;overflow:auto;border-right:1px solid var(--line)}
.cats li{padding:9px 10px;border-radius:9px;cursor:pointer;color:var(--mut);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cats li:hover{background:var(--bg3)}.cats li.active{background:var(--bg3);color:var(--ac2);font-weight:600}
.items-wrap{display:flex;flex-direction:column;min-height:0;min-width:0;background:radial-gradient(ellipse at 20% 0,rgba(132,23,67,.12),transparent 55%),#080e18}
.items-head{padding:12px 10px;color:#a3aec2;font-size:12px;display:flex;gap:8px;align-items:center;flex:none;min-height:40px}
/* Hasta tres tarjetas por fila; se reducen las columnas al faltar espacio. */
.items{list-style:none;margin:0;padding:6px 8px 12px;overflow:auto;flex:1;min-height:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,max(165px,calc((100% - 16px)/3))),1fr));gap:8px;align-content:start;scrollbar-width:thin;scrollbar-color:#354258 #080e18}
.items::-webkit-scrollbar{width:6px}.items::-webkit-scrollbar-thumb{background:#354258;border-radius:6px}.items::-webkit-scrollbar-track{background:#080e18}
.item{position:relative;min-width:0;list-style:none;border:1px solid #29384d;border-radius:7px;background:linear-gradient(125deg,#0b1729,#060e19);box-shadow:0 3px 9px rgba(0,0,0,.18);transition:border-color .15s,background .15s,box-shadow .15s}
.item:hover{border-color:#62718b;background:linear-gradient(125deg,#122139,#0a1423)}
.item.playing,.item:focus-within{border-color:#ff3979;box-shadow:0 0 0 1px rgba(255,57,121,.35),0 0 15px rgba(255,37,106,.16);background:linear-gradient(125deg,#1b1b31,#0b1020)}
.item-open{display:flex;align-items:center;gap:8px;width:100%;min-height:74px;height:100%;padding:7px;border:0;border-radius:6px;background:none;color:#f3f5fa;text-align:left;cursor:pointer}
.item-open:focus-visible{outline:2px solid #ff83ae;outline-offset:-3px}
.item .thumb{position:relative;display:flex;align-items:center;justify-content:center;width:50px;height:50px;flex:none;overflow:hidden;border-radius:4px;background:linear-gradient(145deg,#253c59,#152338)}
.item .thumb.poster{width:46px;height:66px}
.item .thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#f5f6f8}
.item .thumb.poster img{background:#101c2e}
.item .thumb-fallback{font-size:10px;font-weight:700;letter-spacing:.04em;color:#b9cbe2}
.item .nm{display:flex;flex:1;flex-direction:column;gap:6px;min-width:0}
.item .item-title{padding-right:13px;font-size:12px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.item .item-action{display:flex;align-items:center;gap:4px;color:#d8dfeb;font-size:10px;line-height:1.35}
.item .play-symbol{display:inline-flex;align-items:center;justify-content:center;width:11px;height:11px;flex:none;border:1px solid currentColor;border-radius:50%;font-size:6px;padding-left:1px}
.item .star{position:absolute;top:3px;right:3px;width:25px;height:27px;display:flex;align-items:center;justify-content:center;background:none;border:0;border-radius:5px;color:#9baac1;font-size:17px;cursor:pointer;padding:0}
.item .star:hover,.item .star:focus-visible{color:#fff;background:#26334b}.item .star.on{color:#ffb35c}
.item .sub{font-size:10px;color:#9daac0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.catalog-section{grid-column:1/-1;min-width:0;list-style:none}
.back{margin:0 0 4px}.series-plot{padding:4px 2px 10px;line-height:1.6}
.season{padding:10px 2px 4px;font-size:14px;font-weight:700;color:#e1e7f2}
#more{margin:8px auto 12px;display:block}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#222833;border:1px solid var(--ac);padding:10px 16px;border-radius:12px;z-index:50;max-width:90vw}

/* movil / tablet */
@media (max-width:900px){
  .main{grid-template-columns:1fr;grid-template-rows:auto minmax(240px,1fr);flex:1 0 auto}
  .player-col{padding:0;overflow:visible}
  .player{border-radius:0;max-height:38dvh;width:100%}
  .now{padding:8px 12px}
  .list-col{border-left:0;border-top:1px solid var(--line);min-height:240px}
  .cols{grid-template-columns:1fr}.cats{display:none}
  .cat-row{display:block}
  .top{gap:8px;padding:6px 10px}.brand span{display:none}.brand img{height:42px}
  .top-r{width:100%}.top-r input{flex:1;width:auto}
  .tabs{order:3;width:100%;flex:none}
  .tab{flex:1;padding:9px 6px}
  .app{height:auto;min-height:100dvh}
  .items{flex:none;max-height:58dvh;min-height:150px}
  .foot.small{padding:6px}
}
@media (min-width:1500px){body{font-size:17px}.cols{grid-template-columns:200px minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.item{transition:none}}
