/* Listas desplegables propias (ver vanta-ui.js). */
.vs{position:relative;display:inline-flex;vertical-align:middle}
.vs-native{display:none!important}
.vs-button{display:inline-flex;align-items:center;justify-content:space-between;gap:12px;min-width:150px;min-height:38px;padding:8px 12px;background:#1e1e1e;border:1px solid #383838;border-radius:8px;color:#e2eadf;font-size:13px;text-align:left}
.vs-button:hover{border-color:#525252}
.vs-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.vs-caret{width:8px;height:8px;flex-shrink:0;border-right:2px solid currentColor;border-bottom:2px solid currentColor;opacity:.7;transform:translateY(-2px) rotate(45deg);transition:transform .15s}
.vs.is-open .vs-caret{transform:translateY(2px) rotate(-135deg)}
.vs-menu{position:absolute;z-index:60;top:calc(100% + 6px);right:0;min-width:100%;max-height:min(320px,60vh);overflow:auto;display:flex;flex-direction:column;gap:2px;padding:6px;background:#161616;border:1px solid #383838;border-radius:10px;box-shadow:0 18px 50px #000c}
.vs.vs-up .vs-menu{top:auto;bottom:calc(100% + 6px)}
.vs-option{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:transparent;border-radius:7px;color:#dfe8dc;font-size:13px;text-align:left;white-space:nowrap}
.vs-option::before{content:"";width:14px;flex-shrink:0}
.vs-option.is-selected{color:var(--accent);font-weight:650}
.vs-option.is-selected::before{content:"✓"}
.vs-option:hover,.vs-option:focus{background:var(--accent-tint-strong,#233516);color:#fff;outline:none}
.vs-option:disabled{opacity:.45}
/* Campo con error (validación propia) */
.field input.is-invalid{border-color:#ff8a73;box-shadow:0 0 0 2px #ff8a7333}
/* Modo TV */
html.tv .vs-button{min-width:240px;min-height:56px;padding:12px 20px;border-radius:12px;font-size:19px}
html.tv .vs-button:focus{outline:none;box-shadow:0 0 0 4px var(--accent)}
html.tv .vs-caret{width:11px;height:11px}
html.tv .vs-menu{max-height:min(520px,60vh);padding:8px;border-radius:14px}
html.tv .vs-option{padding:14px 20px;font-size:20px;border-radius:10px}
html.tv .vs-menu .vs-option:focus{background:var(--accent);color:var(--accent-contrast,#102006);outline:none}
html.tv .vs .vs-button:focus{outline:none}
/* Tarjeta de instalación (install.js) */
.install-sheet{position:fixed;z-index:90;right:20px;bottom:24px;width:min(400px,calc(100vw - 32px));padding:20px 20px 18px;background:#141414;border:1px solid #343434;border-radius:18px;box-shadow:0 24px 70px #000d;color:var(--text);opacity:0;transform:translateY(16px);transition:opacity .22s,transform .22s}
.install-sheet.visible{opacity:1;transform:none}
dialog .install-sheet{position:fixed}
.install-close{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:50%;background:#ffffff10;color:#bebebe;font-size:22px;line-height:1}
.install-head{display:flex;gap:14px;align-items:center;padding-right:28px}
.install-head img{width:56px;height:56px;border-radius:14px;flex-shrink:0;box-shadow:0 6px 18px #0008}
.install-head h2{font-size:18px;letter-spacing:-.3px}
.install-head p{margin-top:4px;font-size:13px;line-height:1.5;color:#b2b2b2}
.install-steps{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.install-steps li{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.55;color:#dfe8dc}
.install-steps b{color:#fff}
.install-steps svg{display:inline-block;width:20px;height:20px;margin:0 2px;vertical-align:-4px;stroke:var(--accent);stroke-width:1.8;fill:none}
.install-steps svg circle[r="1.6"]{fill:var(--accent);stroke:none}
.install-n{display:grid;place-items:center;width:24px;height:24px;flex-shrink:0;margin-top:1px;border-radius:50%;background:var(--accent-tint,#203416);color:var(--accent);font-size:12px;font-weight:700}
.install-actions{display:flex;gap:10px;margin-top:18px}
.install-actions .button{flex:1;min-height:44px}
@media(max-width:600px){.install-sheet{left:12px;right:12px;width:auto;bottom:calc(74px + env(safe-area-inset-bottom))}}
/* Selector de idioma en Mi cuenta */
.lang-switch{display:flex;gap:8px}
.lang-switch .button{flex:1}
.lang-switch .button.active{background:var(--accent);color:var(--accent-contrast,#15200e);border-color:var(--accent)}
/* Sin sesión: solo la pantalla de acceso, sin menú ni barras. */
html.needs-login .sidebar,
html.needs-login .mobile-nav,
html.needs-login .library-mobile,
html.needs-login .topbar,
html.needs-login footer,
html.needs-login .install-sheet{display:none!important}
html.needs-login .main-shell{margin-left:0!important;padding:0!important;max-width:none}
html.needs-login main{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:clamp(20px,5vw,48px)}
html.needs-login .login-panel{margin:0;width:100%;max-width:440px}
/* La marca acompaña al formulario, ya que la barra lateral está oculta. */
.login-screen{display:flex;flex-direction:column;align-items:center;gap:clamp(18px,3vh,32px);width:100%;max-width:440px}
.login-brand{display:flex;align-items:center;justify-content:center;min-height:60px}
.login-brand img{max-height:110px;max-width:230px;object-fit:contain}
.login-brand span{font-size:27px;font-weight:800;letter-spacing:5px;color:var(--accent)}
html.tv .login-screen{max-width:620px;gap:40px}
html.tv .login-brand img{max-height:170px;max-width:340px}
html.tv .login-brand span{font-size:40px}
html.tv.needs-login main{min-height:100vh}
html.tv.needs-login .login-panel{max-width:620px;padding:48px}
