/* Thu vien cua Truong — Ocean Library 1.0.0. Scoped to the existing player. */
body.tv-library{--tv-surface:#fff;--tv-soft:#f2f8ff;--tv-ink:#102b51;--tv-muted:#59708f;--tv-line:#e3eef9;--tv-blue:#0787ff;--be-background:#fff;--be-background-alternative:#f5faff;--be-text:#102b51;--be-secondary-text:#59708f;--be-hint-text:#6a7f99;--be-divider-default:#dfebf8;--be-divider-lighter:#ecf2fa;--be-hover:#eef7ff;--be-chip:#eef6ff;--be-link:#087dec;--be-accent-default:#0787ff;--be-accent-lighter:#58b6ff;--be-accent-emphasis:#e1f2ff;--be-accent-contrast:#fff;--be-primary-default:#0787ff;--be-primary-lighter:#67b8ff;--be-foreground-base:#102b51;--be-raised-button:#fff;background:#eaf5ff;color:var(--tv-ink)}
body.tv-library.tv-night{--tv-surface:#13243a;--tv-soft:#182d46;--tv-ink:#edf5ff;--tv-muted:#a5bbd7;--tv-line:#2a415d;--be-background:#13243a;--be-background-alternative:#0e1c2d;--be-text:#edf5ff;--be-secondary-text:#a5bbd7;--be-hint-text:#95accb;--be-divider-default:#2a415d;--be-divider-lighter:#22374e;--be-hover:#203c59;--be-chip:#203c59;--be-accent-emphasis:#1b4567;--be-foreground-base:#edf5ff;background:#0e1c2d}
body.tv-library web-player{font-family:Arial,"Helvetica Neue",sans-serif;background:var(--tv-surface)!important;color:var(--tv-ink)!important;font-size:14px;line-height:1.5}
.tv-library web-player *{box-sizing:border-box}
.tv-library web-player a{color:inherit}
.tv-library web-player button,.tv-library web-player a,.tv-library web-player input{-webkit-tap-highlight-color:transparent}
.tv-library web-player a:focus-visible,.tv-library web-player button:focus-visible,.tv-library web-player input:focus-visible{outline:3px solid #45a6ff;outline-offset:3px}
.tv-library web-player .player-content{height:calc(100% - 84px)!important}
.tv-library web-player .page-content,.tv-library web-player .mat-drawer-content{background:var(--tv-surface)!important}
.tv-library web-player .page-wrapper{overflow-y:auto!important;overflow-x:hidden!important;scroll-behavior:smooth;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#bdd8ed transparent}
.tv-library web-player .space-wrapper{height:auto!important;min-height:calc(100% - 78px);width:100%!important;max-width:1440px!important;margin:auto!important}
.tv-library web-player channel-show{display:block;padding:12px 32px 36px!important;overflow:visible!important}
.tv-library web-player album,.tv-library web-player playlist,.tv-library web-player artist-page,.tv-library web-player search,.tv-library web-player .user-library-page,.tv-library web-player library-albums,.tv-library web-player library-artists,.tv-library web-player library-playlists{padding:24px 32px!important;display:block;min-width:0}
.tv-library web-player ad-host{max-width:100%;overflow:hidden}
.tv-library web-player ad-host img{max-width:100%;height:auto}
.tv-library web-player .tv-old-banner{display:none!important}
.tv-library nav-sidebar{width:222px!important;background:linear-gradient(155deg,var(--tv-surface),var(--tv-soft))!important;border-right:1px solid var(--tv-line)!important;z-index:5!important}
.tv-library nav-sidebar .content{height:100%!important;padding:20px 12px!important}
.tv-library nav-sidebar .logo-container{display:flex;align-items:center;justify-content:center;margin:0 0 24px;width:100%;min-height:56px}
.tv-library nav-sidebar .logo-container .tv-brand{display:block;width:186px;max-width:100%;height:auto;margin:0}
.tv-library nav-sidebar .logo-container.tv-brand-ready>img:not(.tv-brand){display:none!important}
.tv-library nav-sidebar .sidebar-nav{margin:0!important}
.tv-library nav-sidebar .sidebar-nav .custom-menu-item,.tv-library nav-sidebar .sidebar-nav .sidebar-nav-item{display:flex!important;align-items:center;min-height:44px;padding:10px 12px!important;font-size:14px!important;font-weight:500!important;border:0!important;border-radius:10px;margin-bottom:5px;text-transform:none!important}
.tv-library nav-sidebar .sidebar-nav .custom-menu-item.active,.tv-library nav-sidebar .sidebar-nav .sidebar-nav-item.active{background:#ddf1ff!important;color:#0576e9!important}
.tv-library nav-sidebar .sidebar-nav .mat-icon{width:20px!important;height:20px!important;margin-right:13px!important;flex:none}
.tv-library nav-sidebar .sidebar-nav .tv-nav-icon-backed>.mat-icon{display:none!important}
.tv-library .tv-sidebar-icon{display:inline-flex;align-items:center;margin-right:13px;flex:none}
.tv-library nav-sidebar .sidebar-nav .tv-current-nav{background:#ddf1ff!important;color:#0576e9!important}
.tv-library nav-sidebar .separator{margin:20px 10px!important;background:var(--tv-line)!important}
.tv-library nav-sidebar .your-music-container .title,.tv-library nav-sidebar .playlists-container .header .name{font-size:11px!important;letter-spacing:.7px;font-weight:600!important;color:var(--tv-muted);padding:0 12px!important}
.tv-library nav-sidebar .auth-container{margin:12px 0!important;padding:10px!important;white-space:normal}
.tv-library nav-sidebar .auth-container>a{border-radius:8px!important}
.tv-library .tv-vip{display:flex;flex-direction:column;gap:10px;padding:18px 14px;margin:26px 2px 12px;border-radius:13px;background:linear-gradient(125deg,#123b65,#247ba2);color:#fff!important;text-decoration:none}
.tv-library .tv-vip strong{font-size:14px;color:#ffdc7a}.tv-library .tv-vip span{font-size:12px;line-height:1.6}.tv-library .tv-vip b{font-size:11px;border-radius:7px;background:#ffdc7a;color:#173d62;padding:8px;text-align:center}
.tv-library nav-sidebar .current-track{position:fixed;bottom:0;left:0;width:242px;height:84px!important;border:0!important;padding:12px 14px!important;background:var(--tv-surface);z-index:12}
.tv-library nav-sidebar .current-track media-image{height:48px!important;width:48px!important;border-radius:7px;overflow:hidden}
.tv-library nav-sidebar .current-track .track-name{font-size:13px;font-weight:600}
.tv-library nav-sidebar .current-track .artist-name{font-size:11px!important}
.tv-library nav-sidebar .current-track .toggle-track{flex:none}
.tv-library.tv-header-ready nav-sidebar .search-bar-container{display:none!important}
.tv-library .tv-topbar{display:flex;align-items:center;gap:16px;padding:16px 32px;background:var(--tv-surface);position:sticky;top:0;z-index:8;min-height:78px;border-bottom:1px solid transparent}
.tv-library .tv-topbar .tv-mobile-brand{display:none}
.tv-library .tv-search{display:flex;align-items:center;gap:10px;width:min(560px,70%);height:43px;margin-right:auto;border:1px solid var(--tv-line);border-radius:12px;background:var(--tv-soft);padding:0 13px}
.tv-library .tv-search input{font:inherit!important;color:var(--tv-ink)!important;min-width:0;width:100%;height:100%;background:transparent!important;border:0!important;padding:0!important;outline:none!important;box-shadow:none!important}
.tv-library .tv-search input::placeholder{color:var(--tv-muted);opacity:1}
.tv-library .tv-search button,.tv-library .tv-icon-button{display:inline-flex;align-items:center;justify-content:center;flex:none;width:35px;height:35px;border:0;border-radius:10px;color:var(--tv-ink);background:var(--tv-soft);cursor:pointer;padding:7px}
.tv-library .tv-search button{background:transparent;width:28px;padding:3px}
.tv-library .tv-icon{width:21px;height:21px;display:inline-block;vertical-align:middle;flex:none}
.tv-library .tv-login{border-radius:9px;background:var(--tv-blue);color:#fff!important;padding:10px 19px;font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none}
.tv-library .tv-hero{position:relative;isolation:isolate;min-height:276px;display:flex;align-items:center;border-radius:17px;overflow:hidden;padding:24px 32px;margin-bottom:16px;background:#d5f0ff url('hero.webp') center center/cover no-repeat;color:#092b50;box-shadow:0 7px 30px #3486ba0d}
.tv-library .tv-hero:before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#e4f5ffe8,#e5f6ff60 45%,transparent 67%)}
.tv-library .tv-hero-copy{width:55%;max-width:570px}
.tv-library .tv-hero h1{font-family:Georgia,"Times New Roman",serif;font-weight:700!important;font-size:clamp(32px,3.3vw,53px)!important;line-height:1.08;margin:0 0 14px!important;letter-spacing:-1.1px;text-transform:none!important}
.tv-library .tv-hero p{font-size:15px;line-height:1.5;margin:0 0 22px;max-width:360px}
.tv-library .tv-hero-actions{display:flex;flex-wrap:wrap;gap:10px}
.tv-library .tv-hero-actions a{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:42px;border-radius:9px;padding:10px 18px;font-size:13px;font-weight:600;text-decoration:none}
.tv-library .tv-primary{background:linear-gradient(105deg,#00a4ff,#087aff);color:#fff!important;box-shadow:0 5px 14px #057aea27}
.tv-library .tv-secondary{background:#ffffffd9;color:#092b50!important;border:1px solid #fff}
.tv-library .tv-hero-note{display:inline-flex;gap:8px;align-items:center;margin-top:18px;background:#0966aaab;border:1px solid #a4e3ff;color:#fff;border-radius:20px;padding:5px 11px;font-size:11px;backdrop-filter:blur(5px)}
.tv-library .tv-topics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:26px;scrollbar-width:none}
.tv-library .tv-topic{display:flex;align-items:center;gap:10px;padding:13px 15px;border-radius:11px;background:#e6f5ff;color:#17689d!important;white-space:nowrap;font-size:13px;font-weight:500;text-decoration:none}
.tv-library .tv-topic:nth-child(2){background:#e8f8f0;color:#18745a!important}.tv-library .tv-topic:nth-child(3){background:#fff5e1;color:#90620e!important}.tv-library .tv-topic:nth-child(4){background:#f0ecff;color:#6556a0!important}.tv-library .tv-topic:nth-child(5){background:#ffedef;color:#b34e62!important}
.tv-library channel-content .sub-channel{display:flex;flex-direction:column;gap:0;min-width:0}
.tv-library channel-content .sub-channel>h2{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:none!important;white-space:normal!important;margin:0 0 13px!important;font-weight:700!important;font-size:22px!important;line-height:1.3;min-height:30px}
.tv-library channel-content .sub-channel>h2>a:not(.tv-see-all){text-transform:none!important;min-width:0;text-decoration:none}
.tv-library channel-content .sub-channel>h2>.mat-icon{display:none}
.tv-library .tv-see-all{font-family:Arial,sans-serif;font-size:12px!important;color:var(--tv-blue)!important;font-weight:500;white-space:nowrap;text-transform:none!important;margin-left:auto;text-decoration:none}
.tv-library channel-content .sub-channel>channel-content{margin-bottom:29px!important;min-width:0}
.tv-library media-grid{width:100%!important;margin:0!important;position:relative;display:block}
.tv-library media-grid .carousel-track{overflow:visible!important}
.tv-library media-grid .media-grid-content{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;transform:none!important;transition:none!important;min-width:0}
.tv-library media-grid .media-grid-item{padding:10px!important;min-width:0;width:auto!important;max-width:none!important;flex:none!important;border:1px solid var(--tv-line);border-radius:12px;background:linear-gradient(150deg,var(--tv-surface),var(--tv-soft));overflow:hidden}
.tv-library media-grid .media-grid-item .img-container{padding-top:125%!important;width:100%!important;position:relative;border-radius:7px;overflow:hidden;background:var(--tv-soft);cursor:pointer}
.tv-library media-grid .media-grid-item .img-container img{object-fit:cover!important;width:100%!important;height:100%!important;border-radius:7px!important;box-shadow:none!important}
.tv-library media-grid .media-grid-item .footer{padding:10px 0 0!important;text-align:left!important;min-width:0}
.tv-library .media-grid-item .primary-text{display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.45!important;font-size:13px!important;font-weight:600!important;white-space:normal!important;overflow:hidden;text-overflow:ellipsis;min-height:38px;margin:0!important;text-decoration:none}
.tv-library .media-grid-item .secondary-text{display:block!important;margin:4px 0 0!important;font-size:11px!important;color:var(--tv-muted)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv-library .media-grid-item .secondary-text a{color:inherit!important}
.tv-library media-grid .nav-arrows{display:none!important}
.tv-library media-grid .media-grid-item playback-control-button{display:flex!important;position:absolute!important;right:8px!important;bottom:8px!important;top:auto!important;left:auto!important;width:34px!important;height:34px!important;border:0!important;border-radius:50%!important;background:#fff!important;color:#0787ff!important;box-shadow:0 3px 12px #102b5126;transform:none!important;opacity:1!important;z-index:2}
.tv-library media-grid .media-grid-item playback-control-button button{width:34px!important;height:34px!important;line-height:34px!important;padding:5px!important}
.tv-library media-grid .media-grid-item playback-control-button .mat-icon{width:24px!important;height:24px!important;line-height:24px!important;color:#0787ff!important}
.tv-library .media-grid-item .img-container:hover img{filter:brightness(.94)!important}
.tv-library .tv-home media-grid .tv-card-hidden{display:none!important}
.tv-library .tv-home .tv-latest media-grid .media-grid-item .img-container{padding-top:100%!important}
.tv-library .tv-more{display:block;margin:14px auto 0;border:1px solid var(--tv-line);border-radius:20px;background:var(--tv-soft);color:var(--tv-blue);padding:8px 22px;min-height:38px;font:500 12px Arial,sans-serif;cursor:pointer}
.tv-library .tv-more[hidden]{display:none!important}
.tv-library track-table{display:block;min-width:0}
.tv-library track-table table.material-table{width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0 6px!important}
.tv-library track-table .material-table tr{height:62px!important;background:var(--tv-soft);border-radius:10px}
.tv-library track-table .material-table tr.header-row{height:32px!important;background:transparent;font-size:11px;color:var(--tv-muted)}
.tv-library track-table .material-table td,.tv-library track-table .material-table th{border:0!important;padding:8px 10px;vertical-align:middle}
.tv-library track-table .material-table td:first-child{border-radius:10px 0 0 10px}.tv-library track-table .material-table td:last-child{border-radius:0 10px 10px 0}
.tv-library track-table .number-column{width:48px!important;color:var(--tv-blue)!important}
.tv-library track-table th.number-column{padding-left:18px!important}
.tv-library track-table .like-column{width:45px!important}.tv-library track-table .options-column{width:43px!important}.tv-library track-table .duration-column{width:65px!important;font-size:12px;color:var(--tv-muted)}
.tv-library track-table .name-column{font-size:13px!important;font-weight:500;color:inherit}
.tv-library track-table .name-column>span{white-space:normal;line-height:1.45}
.tv-library track-table .artist-column,.tv-library track-table .album-column{width:18%!important;font-size:12px;color:var(--tv-muted)}
.tv-library track-table .track-image{display:inline-block!important;width:40px!important;height:40px!important;flex:none;border-radius:6px;overflow:hidden;margin-right:10px!important}
.tv-library track-table .name-column{overflow:hidden;text-overflow:ellipsis}
.tv-library track-table .track-options-button{visibility:visible!important;color:var(--tv-muted);width:32px!important;height:32px!important;line-height:32px!important}
.tv-library .media-page-header{background:linear-gradient(125deg,var(--tv-soft),var(--tv-surface));padding:24px!important;border:1px solid var(--tv-line);border-radius:17px;margin:0 0 24px!important}
.tv-library .media-page-header .header-image{width:190px!important;height:238px!important;object-fit:cover;margin-right:26px!important;border-radius:10px;overflow:hidden;box-shadow:0 8px 20px #102b5114!important}
.tv-library .media-page-header .header-image img{width:100%;height:100%;object-fit:cover}
.tv-library .media-page-header .title{font-size:30px!important;line-height:1.25;font-weight:700!important;overflow-wrap:anywhere}
.tv-library .media-page-header .subtitle{white-space:normal!important;flex-wrap:wrap;font-size:12px!important;margin-bottom:20px!important}
.tv-library .media-page-header .artist{font-size:14px!important;line-height:1.5}
.tv-library .media-page-header .action-buttons{white-space:normal!important;margin-bottom:0!important}
.tv-library .media-page-header .action-button{border-radius:9px!important}
.tv-library .media-page-header .nav-links{overflow:auto;max-width:100%}
.tv-library .tv-collections{margin:4px 0 32px;padding:0;order:35}
.tv-library .tv-collections h2{font-size:22px;margin:0 0 14px;font-weight:700}
.tv-library .tv-collection-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.tv-library .tv-collection{padding:24px;border-radius:14px;min-height:142px;text-decoration:none;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;isolation:isolate;background:linear-gradient(115deg,#0579ab,#1a83de);color:#fff!important}
.tv-library .tv-collection:nth-child(2){background:linear-gradient(115deg,#23476c,#4d74ac)}
.tv-library .tv-collection{background-image:linear-gradient(0deg,#08263fd9,transparent 85%),url('collections.png');background-size:100% 100%,200% auto;background-position:center,left center;background-repeat:no-repeat}
.tv-library .tv-collection:nth-child(2){background-image:linear-gradient(0deg,#08263fd9,transparent 85%),url('collections.png');background-size:100% 100%,200% auto;background-position:center,right center;background-repeat:no-repeat}
.tv-library .tv-collection:before{content:none}
.tv-library .tv-collection .tv-icon{width:30px;height:30px;margin-bottom:15px;opacity:.9}
.tv-library .tv-collection strong{font-size:19px;line-height:1.3}.tv-library .tv-collection span{font-size:12px;margin-top:4px;opacity:.9}
.tv-library player-controls{height:84px!important;position:relative;z-index:10;background:var(--tv-surface)!important;border-top:1px solid var(--tv-line)!important;padding:0 20px 0 255px!important;gap:8px;box-shadow:0 -5px 25px #17497705}
.tv-library player-controls main-playback-buttons{flex:none;gap:4px}
.tv-library main-playback-buttons .play-track,.tv-library main-playback-buttons .pause-track{width:43px!important;height:43px!important;padding:8px!important;background:var(--tv-blue)!important;color:#fff!important;border-radius:50%!important;margin:0 6px;box-shadow:0 4px 12px #0086ff29}
.tv-library main-playback-buttons .play-track .mat-icon,.tv-library main-playback-buttons .pause-track .mat-icon{width:27px!important;height:27px!important}
.tv-library main-playback-buttons button:disabled{opacity:.45}
.tv-library player-controls player-seekbar{margin-left:10px!important;min-width:100px}
.tv-library player-seekbar .outer-track .inner-track{background:var(--tv-line)!important;height:4px!important}
.tv-library player-seekbar .outer-track .progress-track{height:4px!important;border-radius:4px}
.tv-library player-controls .lyrics-button-separator{display:none!important}
.tv-library player-controls volume-controls{max-width:140px}
.tv-library player-controls .lyrics{font-size:12px!important;margin-left:6px!important}
.tv-library .tv-native-seek{width:32px;height:36px;flex:none;display:inline-flex;justify-content:center;align-items:center;border:0;background:transparent;color:var(--tv-muted);font:12px Arial;cursor:pointer;border-radius:7px}
.tv-library .tv-native-seek[hidden],.tv-library .tv-speed[hidden]{display:none!important}
.tv-library .tv-speed{width:54px;min-height:34px;background:var(--tv-soft);color:var(--tv-ink);border:1px solid var(--tv-line);border-radius:7px;padding:4px;font-size:11px;cursor:pointer}
.tv-library queue-sidebar{border-color:var(--tv-line)!important;background:var(--tv-surface)!important;z-index:9}
.tv-library queue-sidebar:not(.hide){box-shadow:-8px 0 30px #102b510a}
.tv-library .tv-footer{margin-top:24px;padding:18px 0 10px;border-top:1px solid var(--tv-line);display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;color:var(--tv-muted)}
.tv-library .tv-footer a{text-decoration:none;color:var(--tv-blue)}
.tv-library .tv-mobile-nav{display:none}
.tv-library .tv-home .tv-popular track-table tr.header-row,.tv-library .tv-home .tv-popular track-table .like-column,.tv-library .tv-home .tv-popular track-table .artist-column,.tv-library .tv-home .tv-popular track-table .album-column{display:none!important}
.tv-library .tv-home .tv-popular track-table tr.track-list-row:nth-child(n+4){display:none!important}
.tv-library .tv-home .tv-popular track-table .number-column{width:40px!important}.tv-library .tv-home .tv-popular track-table .number{padding-left:2px!important}
@media(min-width:1100px){
 .tv-library .tv-home>channel-content>.sub-channel{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 20px;align-items:start}
 .tv-library .tv-home>channel-content>.sub-channel>h2,.tv-library .tv-home>channel-content>.sub-channel>channel-content{grid-column:1 / -1}
 .tv-library .tv-home>channel-content>.sub-channel>.tv-latest-heading{grid-row:1}.tv-library .tv-home>channel-content>.sub-channel>.tv-latest{grid-row:2}
 .tv-library .tv-home>channel-content>.sub-channel>.tv-popular-heading{grid-column:1;grid-row:3}.tv-library .tv-home>channel-content>.sub-channel>.tv-popular{grid-column:1;grid-row:4}
 .tv-library .tv-home>channel-content>.sub-channel>.tv-collections{grid-column:2;grid-row:3 / span 2;margin-top:0}
 .tv-library .tv-collections h2{font-size:22px;line-height:30px;margin-bottom:13px}.tv-library .tv-collection{min-height:196px;padding:19px}.tv-library .tv-collection strong{font-size:17px}
}
@media(min-width:769px) and (max-width:1180px){.tv-library nav-sidebar{width:190px!important}.tv-library nav-sidebar .content{padding:16px 8px!important}.tv-library nav-sidebar .logo-container .tv-brand{width:170px}.tv-library .tv-topbar{padding:14px 22px}.tv-library web-player channel-show{padding:10px 22px 30px!important}.tv-library .tv-hero{padding:30px 26px;min-height:260px}.tv-library .tv-hero h1{font-size:38px!important}.tv-library .tv-topic{padding:12px 10px;gap:7px;font-size:12px}.tv-library media-grid .media-grid-content{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.tv-library player-controls .lyrics,.tv-library player-controls .shuffle-button{display:none!important}.tv-library player-controls volume-controls{max-width:90px}.tv-library player-controls{padding-left:230px!important;gap:3px}.tv-library nav-sidebar .current-track{width:222px}.tv-library .tv-native-seek{width:28px}}
@media(min-width:769px) and (max-width:950px){.tv-library media-grid .media-grid-content{grid-template-columns:repeat(3,minmax(0,1fr))}.tv-library .tv-hero-copy{width:62%}.tv-library .tv-hero h1{font-size:33px!important}.tv-library .tv-hero p{font-size:13px}.tv-library .tv-topics{overflow-x:auto;display:flex}.tv-library .tv-topic{flex:none}.tv-library player-controls .player-action,.tv-library player-controls repeat-button,.tv-library player-controls .tv-native-seek{display:none!important}.tv-library .tv-collection{padding:18px}.tv-library .tv-collection strong{font-size:16px}}
@media(max-width:768px){
 .tv-library web-player .player-content,.tv-library web-player .player-content.mobile{height:calc(100% - var(--tv-mobile-height,66px))!important}
 .tv-library nav-sidebar{display:none!important}.tv-library web-player .space-wrapper{min-height:calc(100% - 70px)}
 .tv-library web-player channel-show{padding:8px 16px 24px!important}
 .tv-library web-player album,.tv-library web-player playlist,.tv-library web-player artist-page,.tv-library web-player search,.tv-library web-player .user-library-page,.tv-library web-player library-albums,.tv-library web-player library-artists,.tv-library web-player library-playlists{padding:12px 16px 24px!important}
 .tv-library .tv-topbar{min-height:66px;padding:10px 16px;gap:9px;flex-wrap:wrap;box-shadow:0 2px 15px #0a4f8b05}
 .tv-library .tv-topbar .tv-mobile-brand{display:block;margin-right:auto;line-height:1;max-width:185px}
 .tv-library .tv-mobile-brand img{width:175px;max-width:100%;height:45px;object-fit:contain}
 .tv-library .tv-topbar>.tv-search{display:none;order:5;width:100%;margin:0}
 .tv-library .tv-topbar.tv-search-open>.tv-search{display:flex}
 .tv-library .tv-login{display:none}.tv-library .tv-search-toggle{display:inline-flex}
 .tv-library .tv-hero{padding:22px 18px;min-height:225px;border-radius:13px;background-position:70% center;margin-bottom:12px}
 .tv-library .tv-hero:before{background:linear-gradient(90deg,#e0f4fff2,#e5f6ff9c 45%,transparent 85%)}
 .tv-library .tv-hero-copy{width:72%;max-width:330px}
 .tv-library .tv-hero h1{font-size:31px!important;letter-spacing:-.6px;line-height:1.1;margin-bottom:10px!important}
 .tv-library .tv-hero p{font-size:12px;margin-bottom:15px;max-width:205px}
 .tv-library .tv-hero-actions a{min-height:36px;padding:8px 12px;font-size:11px;gap:6px}
 .tv-library .tv-hero-actions .tv-secondary{display:none}.tv-library .tv-hero-note{font-size:10px;margin-top:14px;padding:4px 9px}.tv-library .tv-hero-note .tv-icon{width:15px;height:15px}
 .tv-library .tv-topics{display:flex;overflow-x:auto;gap:8px;margin:0 -16px 22px;padding:0 16px;scroll-snap-type:x proximity}
 .tv-library .tv-topic{padding:11px 13px;gap:8px;font-size:12px;flex:none;scroll-snap-align:start}
 .tv-library channel-content .sub-channel>h2{font-size:19px!important;margin-bottom:12px!important;gap:8px}.tv-library .tv-see-all{font-size:11px!important}
 .tv-library channel-content .sub-channel>channel-content{margin-bottom:23px!important}
 .tv-library media-grid .media-grid-content{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}
 .tv-library media-grid .media-grid-item{padding:8px!important;border-radius:10px!important}
 .tv-library .media-grid-item .primary-text{font-size:12px!important;line-height:1.4!important;min-height:34px}
 .tv-library .media-grid-item .secondary-text{font-size:10px!important;margin-top:3px!important}
 .tv-library media-grid .media-grid-item .footer{padding-top:8px!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item{display:grid;grid-template-columns:58px minmax(0,1fr);gap:8px;align-items:start}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item .img-container{padding-top:0!important;height:83px!important}
 .tv-library .tv-home .tv-latest .media-grid-item .footer{padding-top:0!important;min-width:0}
 .tv-library .tv-home .tv-latest .media-grid-item .primary-text{min-height:0;font-size:11px!important;-webkit-line-clamp:3}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item playback-control-button{right:3px!important;bottom:4px!important;width:26px!important;height:26px!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item playback-control-button button{width:26px!important;height:26px!important;padding:3px!important;line-height:26px!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item playback-control-button .mat-icon{width:20px!important;height:20px!important}
 .tv-library .tv-collection-grid{gap:10px}.tv-library .tv-collections h2{font-size:19px}.tv-library .tv-collection{padding:16px;min-height:145px}.tv-library .tv-collection strong{font-size:16px}.tv-library .tv-collection span{font-size:11px}
 .tv-library track-table table.material-table{display:block!important;border-spacing:0!important}.tv-library track-table thead{display:none!important}.tv-library track-table tbody{display:block!important}
 .tv-library track-table table.material-table tr.track-list-row{display:grid!important;grid-template-columns:minmax(0,1fr) 36px;grid-template-rows:auto auto;align-items:center;gap:2px 5px;position:relative;height:auto!important;min-height:65px;padding:10px!important;margin:0 0 8px!important;background:var(--tv-soft)!important;border-radius:10px}
 .tv-library track-table .material-table td{display:block!important;padding:0!important;width:auto!important;max-width:none!important;border:0!important}
 .tv-library track-table .name-column{grid-column:1;grid-row:1;white-space:normal!important;font-size:12px!important;min-width:0}
 .tv-library track-table .name-column>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 .tv-library track-table .name-column .track-image{float:left;width:42px!important;height:42px!important;margin-right:10px!important}
 .tv-library track-table .artist-column{grid-column:1;grid-row:2;font-size:10px!important;color:var(--tv-muted);pointer-events:auto!important}
 .tv-library track-table .artist-column artists-links-list{max-width:100%!important;white-space:nowrap}
 .tv-library track-table .options-column{grid-column:2;grid-row:1 / 3;position:static!important;text-align:center}
 .tv-library track-table .number-column,.tv-library track-table .like-column,.tv-library track-table .album-column,.tv-library track-table .created-at-column,.tv-library track-table .duration-column,.tv-library track-table .popularity-column{display:none!important}
 .tv-library .media-page-header{padding:18px 14px!important;margin-bottom:18px!important;border-radius:12px}
 .tv-library .media-page-header .flex-container{display:flex!important;flex-direction:column;align-items:center!important;gap:16px}
 .tv-library .media-page-header .header-image{width:148px!important;height:190px!important;margin:0!important;flex:none}
 .tv-library .media-page-header .header-content{display:flex!important;flex-direction:column;align-items:center!important;width:100%;min-width:0;text-align:center}
 .tv-library .media-page-header .title{font-size:23px!important;line-height:1.3;margin:0 0 12px!important}
 .tv-library .media-page-header .subtitle{justify-content:center!important;font-size:11px!important;margin:0 0 16px!important;line-height:1.8}
 .tv-library .media-page-header .artist{justify-content:center!important;margin:0 0 12px!important;font-size:12px!important}
 .tv-library .media-page-header .action-buttons{max-width:100%}.tv-library .media-page-header track-actions-bar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px}
 .tv-library .media-page-header .action-button{font-size:12px!important;min-width:0!important;padding:0 14px!important;margin:0!important;line-height:38px!important}
 .tv-library mobile-player-controls{z-index:11!important;background:var(--tv-surface)!important;border-top:1px solid var(--tv-line);box-shadow:0 -4px 24px #102b5109;padding-bottom:env(safe-area-inset-bottom,0px)}
 .tv-library mobile-player-controls .controls{padding:6px 13px!important;min-height:62px;gap:7px}
 .tv-library mobile-player-controls .track-info{text-align:left!important;padding:0 6px!important}
 .tv-library mobile-player-controls .track-info .track-name{font-size:12px!important;font-weight:600}
 .tv-library mobile-player-controls .track-info .artist-name{font-size:10px!important}
 .tv-library mobile-player-controls .controls .maximize .mat-icon{width:24px!important;height:24px!important}
 .tv-library mobile-player-controls .controls main-playback-buttons{width:100px!important;flex:0 0 100px!important}
 .tv-library mobile-player-controls main-playback-buttons .play-track,.tv-library mobile-player-controls main-playback-buttons .pause-track{width:35px!important;height:35px!important;padding:5px!important;margin:0 4px}
 .tv-library mobile-player-controls main-playback-buttons .previous-track,.tv-library mobile-player-controls main-playback-buttons .next-track{width:25px!important;height:25px!important}
 .tv-library mobile-player-controls .tv-player-thumb{width:39px;height:48px;border-radius:5px;object-fit:cover;flex:none}
 .tv-library mobile-player-controls player-seekbar{height:3px!important;display:flex!important}
 .tv-library mobile-player-controls .nav{padding:0!important;min-height:61px;display:flex!important;border-color:var(--tv-line)!important}
 .tv-library mobile-player-controls .nav>custom-menu-item{flex:1;min-width:0}
 .tv-library mobile-player-controls .nav .nav-item,.tv-library mobile-player-controls .nav .custom-menu-item,.tv-library mobile-player-controls .nav a{font-size:10px!important;line-height:1.3;min-height:60px;text-align:center;color:var(--tv-muted);padding:9px 3px 6px!important;flex:1}
 .tv-library mobile-player-controls .nav a.active,.tv-library mobile-player-controls .nav .active{color:var(--tv-blue)!important}
 .tv-library mobile-player-controls .nav .mat-icon{width:22px!important;height:22px!important;margin:0 auto 5px!important}
 .tv-library mobile-player-controls.tv-nav-ready>.nav{display:none!important}
 .tv-library .tv-mobile-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));min-height:61px;border-top:1px solid var(--tv-line);background:var(--tv-surface)}
 .tv-library .tv-mobile-nav a,.tv-library .tv-mobile-nav button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:5px;font:10px/1.2 Arial,sans-serif;color:var(--tv-muted);text-decoration:none;min-height:60px;padding:7px 2px;border:0;background:transparent;cursor:pointer}
 .tv-library .tv-mobile-nav .active{color:var(--tv-blue)}.tv-library .tv-mobile-nav .tv-icon{width:21px;height:21px}
 .tv-library .tv-footer{font-size:10px;align-items:flex-start;flex-wrap:wrap}
 .tv-library .tv-header-ready{min-width:0}
}
@media(min-width:769px){.tv-library .tv-search-toggle{display:none}}
@media(max-width:359px){.tv-library .tv-topbar{padding:8px 12px;gap:6px}.tv-library .tv-mobile-brand img{width:151px}.tv-library .tv-login{padding:8px;font-size:10px}.tv-library .tv-icon-button{width:31px;height:31px}.tv-library web-player channel-show{padding-left:12px!important;padding-right:12px!important}.tv-library .tv-hero{padding:20px 14px}.tv-library .tv-hero h1{font-size:27px!important}.tv-library .tv-home .tv-latest media-grid .media-grid-item{grid-template-columns:47px minmax(0,1fr);gap:6px}.tv-library .tv-home .tv-latest media-grid .media-grid-item .img-container{height:73px!important}.tv-library .tv-topics{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px}}
@media(prefers-reduced-motion:reduce){.tv-library web-player *{scroll-behavior:auto!important;transition:none!important}}

/* TV Library layout hotfix 1.0.1 — cover and play alignment; 2026-10-30.
   Restricted to Angular media-grid; other player controls are untouched. */
.tv-library media-grid .media-grid-content{align-items:stretch!important}
.tv-library media-grid .media-grid-item{position:relative!important;display:flex!important;flex-direction:column!important;height:100%!important;min-width:0!important}
.tv-library media-grid .media-grid-item>.img-container{position:relative!important;display:block!important;flex:0 0 auto!important;width:100%!important;height:0!important;padding-top:125%!important;overflow:hidden!important;isolation:isolate!important}
.tv-library media-grid .media-grid-item>.img-container>media-image{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;display:block!important;overflow:hidden!important}
.tv-library media-grid .media-grid-item>.img-container>media-image img{display:block!important;position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-width:none!important;object-fit:contain!important;object-position:center center!important}
.tv-library media-grid .media-grid-item>.img-container>playback-control-button{position:absolute!important;right:8px!important;bottom:8px!important;left:auto!important;top:auto!important;display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;margin:0!important;padding:0!important;transform:none!important;z-index:5!important;overflow:visible!important;opacity:1!important}
.tv-library media-grid .media-grid-item>.img-container>playback-control-button button{display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;margin:0!important;padding:0!important;line-height:1!important;border-radius:50%!important}
.tv-library media-grid .media-grid-item>.img-container>playback-control-button .mat-icon{display:block!important;flex:none!important;width:22px!important;height:22px!important;line-height:22px!important;margin:0!important}
.tv-library media-grid .media-grid-item>.footer{flex:1 1 auto!important;min-width:0!important;width:100%!important}
.tv-library .tv-home .tv-latest media-grid .media-grid-item>.img-container{padding-top:100%!important}
@media(max-width:768px){
 .tv-library media-grid .media-grid-item>.img-container>playback-control-button,.tv-library media-grid .media-grid-item>.img-container>playback-control-button button{width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important}
 .tv-library media-grid .media-grid-item>.img-container>playback-control-button{right:6px!important;bottom:6px!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item{display:grid!important;grid-template-columns:58px minmax(0,1fr)!important;align-content:start!important;align-items:start!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item>.img-container{height:83px!important;padding-top:0!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item>.img-container>playback-control-button,.tv-library .tv-home .tv-latest media-grid .media-grid-item>.img-container>playback-control-button button{width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item>.img-container>playback-control-button{right:3px!important;bottom:4px!important}
}
@media(max-width:359px){.tv-library .tv-home .tv-latest media-grid .media-grid-item{grid-template-columns:47px minmax(0,1fr)!important}.tv-library .tv-home .tv-latest media-grid .media-grid-item>.img-container{height:73px!important}}

/* Library play placement v1.0.2 — 2026-10-30: place controls inside book-card information footer. */
.tv-library media-grid .media-grid-item>.footer{position:relative!important;box-sizing:border-box!important;min-height:78px!important;padding:9px 44px 12px 0!important;overflow:visible!important}
.tv-library media-grid .media-grid-item>.footer>playback-control-button{position:absolute!important;right:0!important;bottom:5px!important;left:auto!important;top:auto!important;transform:none!important;display:inline-flex!important;justify-content:center!important;align-items:center!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;background:#e7f5ff!important;border:1px solid #d5eaff!important;border-radius:50%!important;box-shadow:none!important;z-index:5!important;opacity:1!important;visibility:visible!important}
.tv-library media-grid .media-grid-item>.footer>playback-control-button button{display:inline-flex!important;justify-content:center!important;align-items:center!important;position:static!important;margin:0!important;padding:4px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:1!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important}
.tv-library media-grid .media-grid-item>.footer>playback-control-button .mat-icon{display:block!important;margin:0!important;width:21px!important;height:21px!important;font-size:21px!important;line-height:21px!important;color:#087dff!important}
.tv-library .tv-home .tv-latest media-grid .media-grid-item>.footer{min-height:72px!important}
@media(max-width:768px){
 .tv-library media-grid .media-grid-item>.footer{min-height:75px!important;padding-right:36px!important;padding-bottom:9px!important}
 .tv-library media-grid .media-grid-item>.footer>playback-control-button{right:1px!important;bottom:5px!important;width:27px!important;height:27px!important;min-width:27px!important;min-height:27px!important}
 .tv-library media-grid .media-grid-item>.footer>playback-control-button button{width:25px!important;height:25px!important;min-width:25px!important;min-height:25px!important;padding:2px!important}
 .tv-library media-grid .media-grid-item>.footer>playback-control-button .mat-icon{width:19px!important;height:19px!important;font-size:19px!important;line-height:19px!important}
 .tv-library .tv-home .tv-latest media-grid .media-grid-item>.footer{min-height:83px!important;padding:0 31px 0 0!important}
}

/* TV Library v1.0.3: center REAL Angular play / pause icon within the same round control. */
.tv-library media-grid .media-grid-item playback-control-button,
.tv-library media-grid .media-grid-item>.footer>playback-control-button {
  display:grid!important;place-items:center!important;
  overflow:hidden!important;padding:0!important;
  box-sizing:border-box!important;
  width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;
  border-radius:50%!important;background:#e8f5ff!important;border:1px solid #d5eaff!important;
  line-height:normal!important;
}
.tv-library media-grid .media-grid-item playback-control-button>button,
.tv-library media-grid .media-grid-item playback-control-button button,
.tv-library media-grid .media-grid-item>.footer>playback-control-button button {
  position:static!important;inset:auto!important;transform:none!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;
  margin:0!important;padding:0!important;border:0!important;
  background:transparent!important;border-radius:50%!important;
  box-shadow:none!important;line-height:1!important;
}
.tv-library media-grid .media-grid-item playback-control-button button .mat-icon,
.tv-library media-grid .media-grid-item playback-control-button button mat-icon,
.tv-library media-grid .media-grid-item>.footer>playback-control-button button .mat-icon {
  display:flex!important;align-items:center!important;justify-content:center!important;
  flex:none!important;position:static!important;transform:none!important;
  margin:0!important;padding:0!important;
  width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;
  font-size:22px!important;line-height:22px!important;
  text-align:center!important;vertical-align:middle!important;
  color:#087dff!important;
}
.tv-library media-grid .media-grid-item playback-control-button button svg,
.tv-library media-grid .media-grid-item playback-control-button button .mat-icon svg {
  display:block!important;width:21px!important;height:21px!important;
  margin:auto!important;flex:none!important;
}
/* Material icon ligatures and SVGs are rendered by the original playback-control-button.
   Do not replace the icon with CSS content; Angular toggles the real play/pause state. */
@media(max-width:768px){
  .tv-library media-grid .media-grid-item playback-control-button,
  .tv-library media-grid .media-grid-item>.footer>playback-control-button{
    width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;
  }
  .tv-library media-grid .media-grid-item playback-control-button button .mat-icon,
  .tv-library media-grid .media-grid-item playback-control-button button mat-icon{
    width:19px!important;height:19px!important;min-width:19px!important;min-height:19px!important;
    font-size:19px!important;line-height:19px!important;
  }
}

/* FINAL FIX 2026-10-30: Angular's play and pause buttons BOTH exist in the DOM.
   The previous forced display:flex exposed both. Only Angular .visible is shown. */
.tv-library media-grid .media-grid-item playback-control-button .play-button:not(.visible),
.tv-library media-grid .media-grid-item playback-control-button .pause-button:not(.visible),
.tv-library media-grid .media-grid-item playback-control-button button:not(.visible) {
  display:none!important;
}
.tv-library media-grid .media-grid-item playback-control-button .play-button.visible,
.tv-library media-grid .media-grid-item playback-control-button .pause-button.visible {
  display:flex!important;align-items:center!important;justify-content:center!important;
  position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
  padding:0!important;margin:0!important;box-sizing:border-box!important;
}
.tv-library media-grid .media-grid-item playback-control-button {
  position:absolute!important;overflow:hidden!important;
}
.tv-library media-grid .media-grid-item>.footer>playback-control-button {
  top:auto!important;left:auto!important;right:8px!important;bottom:8px!important;
  width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;
  display:block!important;
}
.tv-library media-grid .media-grid-item playback-control-button playing-indicator {display:none!important;}
.tv-library media-grid .media-grid-item playback-control-button button mat-icon,
.tv-library media-grid .media-grid-item playback-control-button button .mat-icon {
  position:static!important;margin:0!important;padding:0!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  width:20px!important;height:20px!important;font-size:20px!important;line-height:20px!important;
}
.tv-library media-grid .media-grid-item playback-control-button button mat-icon svg,
.tv-library media-grid .media-grid-item playback-control-button button .mat-icon svg {
  width:20px!important;height:20px!important;display:block!important;margin:0!important;
}
@media(max-width:768px) {
  .tv-library media-grid .media-grid-item>.footer>playback-control-button {
    width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;
    right:5px!important;bottom:5px!important;
  }
  .tv-library media-grid .media-grid-item playback-control-button button mat-icon,
  .tv-library media-grid .media-grid-item playback-control-button button .mat-icon,
  .tv-library media-grid .media-grid-item playback-control-button button mat-icon svg {
    width:17px!important;height:17px!important;font-size:17px!important;line-height:17px!important;
  }
}

/* Play/Pause state repair 2026-10-30: native buttons, one visible at a time.
   data-tv-playing is updated from actual user clicks and audio playback events. */
.tv-library media-grid .media-grid-item playback-control-button[data-tv-playing="0"] .play-button,
.tv-library media-grid .media-grid-item playback-control-button[data-tv-playing="1"] .pause-button {
 display:flex!important;visibility:visible!important;opacity:1!important;
 position:absolute!important;inset:0!important;margin:0!important;padding:0!important;
 width:100%!important;height:100%!important;align-items:center!important;justify-content:center!important;
}
.tv-library media-grid .media-grid-item playback-control-button[data-tv-playing="0"] .pause-button,
.tv-library media-grid .media-grid-item playback-control-button[data-tv-playing="1"] .play-button {
 display:none!important;visibility:hidden!important;opacity:0!important;
}
