 * {
     margin: 0;
     padding: 0;
     box-sizing: border-box;
 }

 html,
 body {
     overflow: hidden;
     font-family: system-ui, sans-serif;
     background: #1a1a1a;
     height: 100vh;
 }

 .nettv {
     display: flex;
     width: 100vw;
     height: 100vh;
     position: relative;
 }

 .left {
     flex: 1;
     height: 100%;
     background: #000;
     min-width: 0;
     overflow: hidden;
 }

 .left iframe {
     width: 100%;
     height: 100%;
     border: none;
     display: block;
     scrollbar-width: none;
     -ms-overflow-style: none;
 }

 .left iframe::-webkit-scrollbar {
     display: none;
 }

 .right {
     flex: 0 0 0;
     width: 0;
     height: 100%;
     background: #2e2e2e;
     position: relative;
     overflow: hidden;
     transition: flex 0.35s ease, width 0.35s ease;
 }

 .right.open {
     flex: 0 0 300px;
     width: 300px;
 }

 .right iframe {
     width: 100%;
     height: 100%;
     border: none;
     display: block;
     background: #2e2e2e;
 }

 .right-trigger {
     position: absolute;
     top: 0;
     left: -12px;
     width: 14px;
     height: 100%;
     z-index: 20;
     cursor: pointer;
     background: rgba(255, 255, 255, 0.02);
     display: flex;
     align-items: center;
     justify-content: center;
     transition: background 0.2s;
 }

 .right-trigger:hover {
     background: rgba(255, 255, 255, 0.08);
 }

 .right-trigger .bar {
     width: 4px;
     height: 48px;
     background: rgba(255, 255, 255, 0.15);
     border-radius: 4px;
     transition: height 0.25s, background 0.25s;
 }

 .right-trigger:hover .bar {
     height: 64px;
     background: rgba(255, 255, 255, 0.35);
 }

 .right.open~.right-trigger .bar {
     opacity: 0.3;
 }

 .right-trigger {
     position: absolute;
     top: 0;
     left: calc(100% - 14px);
 }

 .loading-overlay {
     position: absolute;
     top: 0;
     left: 0;
     width: 100%;
     height: 100%;
     background: rgba(46, 46, 46, 0.95);
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: center;
     color: #e0e0e0;
     z-index: 10;
     transition: opacity 0.4s ease;
     pointer-events: none;
 }

 .loading-overlay.hidden {
     opacity: 0;
     pointer-events: none;
 }

 .spinner {
     width: 48px;
     height: 48px;
     border: 4px solid rgba(255, 255, 255, 0.1);
     border-top-color: #4CAF50;
     border-radius: 50%;
     animation: spin 0.8s linear infinite;
     margin-bottom: 16px;
 }

 @keyframes spin {
     to {
         transform: rotate(360deg);
     }
 }

 .loading-text {
     font-size: 14px;
     letter-spacing: 1px;
     opacity: 0.8;
 }

 #mobile-warning {
     position: fixed;
     top: 0;
     left: 0;
     right: 0;
     bottom: 0;
     z-index: 9999;
     background: rgba(0, 0, 0, 0.92);
     display: none;
     flex-direction: column;
     align-items: center;
     justify-content: center;
     color: #fff;
     text-align: center;
     padding: 30px;
     font-size: 18px;
     line-height: 1.6;
     backdrop-filter: blur(10px);
     -webkit-backdrop-filter: blur(10px);
 }

 #mobile-warning .icon {
     font-size: 56px;
     margin-bottom: 20px;
 }

 #mobile-warning .title {
     font-size: 20px;
     font-weight: 600;
     margin-bottom: 12px;
 }

 #mobile-warning .desc {
     font-size: 15px;
     opacity: 0.5;
     max-width: 320px;
 }

 #mobile-warning.show {
     display: flex;
 }

 @media (max-width: 500px) {
     .left {
         flex: 0 0 55%;
         width: 100%;
     }

     .right.open {
         flex: 0 0 0;
     }
 }

 .right iframe::-webkit-scrollbar {
     width: 4px;
 }

 .right iframe::-webkit-scrollbar-thumb {
     background: rgba(255, 255, 255, 0.2);
     border-radius: 4px;
 }

 body {
     font-family: system-ui, -apple-system, sans-serif;
     height: 100vh;
     overflow: hidden;
     background: #2e2e2e;
 }

 /* ===== iframe 容器（全屏） ===== */
 .iframe-wrapper {
     position: fixed;
     top: 0;
     right: 0;
     bottom: 0;
     left: 0;
     z-index: 1;
     background: #2e2e2e;
 }

 .iframe-wrapper iframe {
     width: 100%;
     height: 100%;
     border: none;
     display: block;
 }

 .left-panel {
     position: fixed;
     top: 0;
     left: 0;
     bottom: 0;
     width: 100%;
     z-index: 1000;
     background: #2e2e2e;
     color: #e0e0e0;
     box-shadow: 2px 0 12px rgba(0, 0, 0, 0.3);
     transition: transform 0.3s ease;
     display: flex;
     flex-direction: column;
     padding: 10px 12px;
     overflow: hidden;
 }

 .left-panel.open {
     transform: translateX(0);
 }

 .left-header {
     display: flex;
     justify-content: space-between;
     align-items: center;
     padding-bottom: 10px;
     border-bottom: 1px solid rgba(255, 255, 255, 0.08);
     flex-shrink: 0;
 }

 .left-header .title {
     font-size: 16px;
     font-weight: 600;
     color: #fff;
 }

 .left-header .title i {
     margin: 0px 10px 0 0px;
 }

 .left-header .refresh-btn {
     background: transparent;
     border: none;
     color: rgba(255, 255, 255, 0.5);
     cursor: pointer;
     padding: 4px;
     border-radius: 4px;
     display: flex;
     align-items: center;
     justify-content: center;
     transition: background 0.2s, color 0.2s;
     width: 28px;
     height: 28px;
     font-size: 20px;
 }

 .left-header .refresh-btn:hover {
     background: rgba(255, 255, 255, 0.1);
     color: #fff;
 }

 .left-search {
     padding: 10px 0;
     flex-shrink: 0;
 }

 .left-search input {
     width: 100%;
     padding: 6px 10px;
     border: 1px solid rgba(255, 255, 255, 0.15);
     border-radius: 6px;
     background: rgba(255, 255, 255, 0.07);
     color: #e0e0e0;
     font-size: 13px;
     outline: none;
     transition: border-color 0.2s, background 0.2s;
 }

 .left-search input::placeholder {
     color: rgba(255, 255, 255, 0.3);
 }

 .left-search input:focus {
     border-color: #4CAF50;
     background: rgba(255, 255, 255, 0.1);
 }

 .category-list {
     flex: 1;
     overflow-y: auto;
     margin: 0 -12px;
     padding: 0 12px;
 }

 .category-list::-webkit-scrollbar {
     width: 4px;
 }

 .category-list::-webkit-scrollbar-thumb {
     background: rgba(255, 255, 255, 0.2);
     border-radius: 4px;
 }

 .category {
     border-bottom: 1px solid rgba(255, 255, 255, 0.05);
 }

 .category-title {
     padding: 10px 0;
     font-size: 14px;
     font-weight: 500;
     color: #c8c8d4;
     cursor: pointer;
     display: flex;
     align-items: center;
     gap: 8px;
     transition: color 0.2s;
     user-select: none;
 }

 .category-title:hover {
     color: #fff;
 }

 .category-title .toggle-icon {
     display: inline-flex;
     align-items: center;
     justify-content: center;
     width: 18px;
     height: 18px;
     flex-shrink: 0;
 }

 .category-title .toggle-icon svg {
     width: 100%;
     height: 100%;
     fill: none;
     stroke: currentColor;
     stroke-width: 2;
     stroke-linecap: round;
     stroke-linejoin: round;
 }

 .category-content {
     display: none;
     flex-direction: column;
     padding-bottom: 6px;
 }

 .category-content.open {
     display: flex;
 }

 .sub-item {
     padding: 8px 5px 8px 5px;
     font-size: 14px;
     color: #b0b0c0;
     cursor: pointer;
     border-bottom: 1px solid #393737;
     transition: background 0.15s, color 0.15s;
 }

 .sub-item:hover {
     background: rgba(255, 255, 255, 0.06);
     color: #fff;
 }

 .sub-item.active {
     color: #4CAF50;
     font-weight: 500;
 }

 .sub-item i {
     margin: 0px 10px 0 0px;
     display: inline‑block;
     vertical-align: middle;
 }

 .category.hidden-category {
     display: none;
 }

 @media (max-width: 298px) {
     .typename {
         display: none;
     }
 }

 .player-wrapper {
     position: fixed;
     top: 0;
     left: 0;
     right: 0;
     bottom: 0;
     z-index: 1;
     background: #0a0a0f;
 }

 .player-wrapper iframe {
     width: 100%;
     height: 100%;
     border: none;
     display: block;
 }

 .current-channel {
     position: fixed;
     top: 20px;
     right: 20px;
     z-index: 10;
     color: rgba(255, 255, 255, 0.85);
     font-size: 14px;
     font-weight: 600;
     text-shadow: 0 2px 12px rgba(0, 0, 0, 0.8);
     pointer-events: none;
     display: flex;
     align-items: center;
     gap: 10px;
     background: rgba(0, 0, 0, 0.3);
     padding: 5px 12px 5px 10px;
     border-radius: 8px;
     backdrop-filter: blur(6px);
     border: 1px solid rgba(255, 255, 255, 0.06);
     transition: opacity 0.3s;
 }

 .current-channel .dot {
     width: 8px;
     height: 8px;
     border-radius: 50%;
     background: #F44336;
     display: inline-block;
     animation: pulse-dot 2s ease-in-out infinite;
     flex-shrink: 0;
 }

 @keyframes pulse-dot {

     0%,
     100% {
         opacity: 1;
         transform: scale(1);
     }

     50% {
         opacity: 0.4;
         transform: scale(0.85);
     }
 }

 .current-channel .channel-name {
     white-space: nowrap;
 }

 .current-channel .channel-badge {
    font-size: 11px;
    background: #F44336;
    color: #f5d8d5c4;
    padding: 1px 10px;
    border-radius: 12px;
    border: 1px solid #F44336;
    font-weight: 400;
    letter-spacing: 0.3px;
 }

 .bottom-nav {
     position: fixed;
     bottom: 0;
     left: 0;
     right: 0;
     z-index: 100;
     display: flex;
     flex-direction: column;
     align-items: center;
     pointer-events: none;
 }

 .trigger-bar {
     width: 100%;
     height: 10px;
     background: rgba(255, 255, 255, 0.02);
     backdrop-filter: blur(12px);
     -webkit-backdrop-filter: blur(12px);
     border-top: 1px solid rgba(255, 255, 255, 0.06);
     cursor: pointer;
     display: flex;
     align-items: center;
     justify-content: center;
     gap: 8px;
     color: rgba(255, 255, 255, 0.5);
     font-size: 13px;
     letter-spacing: 0.5px;
     transition: background 0.25s, color 0.25s;
     pointer-events: auto;
     position: relative;
     flex-shrink: 0;
 }

 .trigger-bar:hover {
     background: rgb(0 0 0 / 0%);
     color: rgba(255, 255, 255, 0.8);
 }

 .trigger-bar .bar-line {
     flex: 1;
     max-width: 100px;
     height: 3px;
     background: rgba(255, 255, 255, 0.1);
     border-radius: 2px;
     margin: 0 12px;
 }

 .trigger-bar .arrow-indicator {
     display: flex;
     align-items: center;
     justify-content: center;
     font-size: 12px;
     color: rgba(255, 255, 255, 0.3);
     transition: transform 0.3s ease;
 }

 .trigger-bar .arrow-indicator.up {
     transform: rotate(0deg);
 }

 .trigger-bar .arrow-indicator.down {
     transform: rotate(180deg);
 }

 .nav-overlay {
     width: 100%;
     max-height: 0;
     overflow: hidden;
     background: rgb(0 0 0 / 12%);
     backdrop-filter: blur(18px);
     -webkit-backdrop-filter: blur(18px);
     border-top: 1px solid rgba(255, 255, 255, 0.06);
     transition: max-height 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94),
         opacity 0.3s ease;
     opacity: 0;
     pointer-events: none;
     display: flex;
     flex-direction: column;
     flex-shrink: 0;
     box-shadow: 0 -8px 40px rgba(0, 0, 0, 0.6);
 }

 .nav-overlay.open {
     max-height: 30vh;
     opacity: 1;
     pointer-events: auto;
 }

 .nav-content {
     display: flex;
     align-items: stretch;
     height: 100%;
     min-height: 0;
     padding: 6px 16px 6px 16px;
     gap: 20px;
     overflow: hidden;
 }

 .nav-content .left-logo {
     flex-shrink: 0;
     display: flex;
     align-items: center;
 }

 .nav-content .left-logo img {
     height: 100%;
     max-height: 80px;
     width: auto;
     object-fit: contain;
     filter: drop-shadow(0 0 8px rgba(76, 175, 80, 0.15));
     border-radius: 5px;
     background: #fff;
 }

 .nav-content .left-logo .brand-text {
     font-size: 20px;
     font-weight: 600;
     color: rgba(255, 255, 255, 0.3);
     letter-spacing: 1px;
     white-space: nowrap;
 }

 .nav-content .middle {
     flex: 1;
     display: flex;
     flex-direction: column;
     justify-content: center;
     gap: 15px;
     min-width: 0;
 }

 .nav-content .middle .channel-row {
     display: flex;
     align-items: center;
 }

 .nav-content .middle .channel-row .current-name {
     color: #fff;
     font-weight: 600;
     font-size: 16px;
     white-space: nowrap;
 }

 .nav-content .middle .category-row {
     display: flex;
     align-items: center;
     gap: 6px;
     overflow-x: auto;
     scrollbar-width: none;
     -ms-overflow-style: none;
     flex-wrap: nowrap;
 }

 .nav-content .middle .category-row::-webkit-scrollbar {
     display: none;
 }

 .category-tab {
     display: flex;
     align-items: center;
     gap: 6px;
     padding: 3px 14px 3px 10px;
     font-size: 13px;
     font-weight: 500;
     color: rgba(255, 255, 255, 0.5);
     cursor: pointer;
     border-radius: 20px;
     transition: background 0.2s, color 0.2s;
     white-space: nowrap;
     background: rgba(255, 255, 255, 0.03);
     border: 1px solid transparent;
     flex-shrink: 0;
 }

 .category-tab .cat-icon {
     font-size: 13px;
     opacity: 0.5;
     transition: opacity 0.2s;
 }

 .category-tab:hover {
     color: rgba(255, 255, 255, 0.8);
     background: rgba(255, 255, 255, 0.06);
 }

 .category-tab:hover .cat-icon {
     opacity: 0.9;
 }

 .category-tab.active {
     color: #4CAF50;
     background: rgba(76, 175, 80, 0.12);
     border-color: rgba(76, 175, 80, 0.15);
 }

 .category-tab.active .cat-icon {
     opacity: 1;
     color: #4CAF50;
 }

 .category-tab a {
     color: inherit;
     text-decoration: none;
     display: flex;
     align-items: center;
     gap: 6px;
 }

 .category-tab a:hover {
     color: inherit;
 }

 .category-tab .fa fa-slack {
     font-size: 14px;
     opacity: 0.6;
 }

 .category-tab.active .fa fa-slack {
     opacity: 1;
     color: #4CAF50;
 }

 .nav-content .right-actions {
     flex-shrink: 0;
     display: flex;
     align-items: center;
     justify-content: center;
     width: 40px;
 }

 .nav-content .right-actions button {
     background: rgba(255, 255, 255, 0.04);
     border: none;
     color: rgba(255, 255, 255, 0.45);
     width: 36px;
     height: 36px;
     border-radius: 6px;
     cursor: pointer;
     display: flex;
     align-items: center;
     justify-content: center;
     font-size: 20px;
     transition: background 0.2s, color 0.2s;
 }

 .nav-content .right-actions button:hover {
     background: rgba(255, 255, 255, 0.1);
     color: #fff;
 }

 @media (max-width: 780px) {
     .current-channel {
         top: 14px;
         right: 14px;
         font-size: 13px;
         padding: 4px 10px 4px 8px;
     }

     .current-channel .dot {
         width: 6px;
         height: 6px;
     }

     .current-channel .channel-badge {
         font-size: 10px;
         padding: 0 8px;
     }

     .nav-overlay.open {
         max-height: 25vh;
     }

     .nav-content {
         padding: 5px 10px 5px 10px;
         gap: 8px;
     }

     .nav-content .left-logo img {
         max-height: 48px;
     }

     .nav-content .middle .channel-row .current-name {
         font-size: 14px;
     }

     .nav-content .middle {
         gap: 5px;
     }

     .category-tab {
         font-size: 12px;
         padding: 2px 10px 2px 8px;
     }

     .category-tab .cat-icon {
         font-size: 12px;
     }

     .nav-content .right-actions button {
         width: 32px;
         height: 32px;
         font-size: 18px;
     }

     .trigger-bar {
         height: 12px;
     }

     .trigger-bar .bar-line {
         max-width: 80px;
     }
 }

 @media (max-width: 480px) {
     .nav-overlay.open {
         max-height: 22vh;
     }

     .nav-content {
         flex-wrap: nowrap;
         padding: 4px 6px 6px 6px;
         gap: 6px;
     }

     .nav-content .left-logo img {
         max-height: 36px;
     }

     .nav-content .middle .channel-row .current-name {
         font-size: 13px;
     }

     .category-tab {
         font-size: 11px;
         padding: 2px 8px 2px 6px;
     }

     .category-tab .cat-icon {
         font-size: 11px;
     }

     .nav-content .right-actions button {
         width: 28px;
         height: 28px;
         font-size: 16px;
     }

     .current-channel {
         font-size: 12px;
         padding: 3px 8px 3px 6px;
         top: 10px;
         right: 10px;
     }

     .current-channel .channel-badge {
         display: none;
     }
 }

 .hidden {
     display: none !important;
 }