/* ============================================================
   单合直播 · 巨型菜单版播放页（2026-10-22，2026-11-01 接入全站外壳）
   版心固定 960，播放器下面只有「静音 / 全屏 / 点击换台」一行，
   点开在 960 范围内展开巨型菜单（推荐 / 央视 / 卫视 / 各省）。
   live-extra.css 里那套播放器内部样式继续沿用，这里的 --皮肤-* 变量
   就是喂给它用的。
   ============================================================ */

/* ---------- ① 皮肤：深色默认，html.浅色 整套换 ---------- */
:root {
    --底色: #0f1a14;
    --面: #16251d;
    --面2: #1e3228;
    --面3: #263e31;
    --边框: rgba(255, 255, 255, .10);
    --边框强: rgba(255, 255, 255, .20);
    --文字: #e7efe9;
    --次: #94a79b;
    --主: #5fd39a;
    --主字: #072215;
    --主罩: rgba(95, 211, 154, .12);
    --阴影: 0 26px 70px rgba(0, 0, 0, .55);
    --圆: 14px;
    --版心: 960px;

    /* 单列模式的「整体块」宽度：顶栏 / 播放器共用一个宽度。
       第三个值是按视口高度反算——矮屏时播放器自动缩窄，保证一屏看完。
       122 = 28 顶栏 + 48 控制条 + 46 底部留白（换台栏已于 2026-11-01 移除）。 */
    --整体宽: min(960px, calc(100vw - 24px), calc((100vh - 122px) * 16 / 9));

    /* 喂给 live-extra.css（播放器 / 音门 / 断流层）的旧变量名 */
    --皮肤-页面底色: var(--底色);
    --皮肤-手机底色: var(--底色);
    --皮肤-卡片底色: var(--面);
    --皮肤-深色块底色: var(--面);
    --皮肤-深色块文字: var(--文字);
    --皮肤-卡片边框: var(--边框);
    --皮肤-分隔线: var(--边框);
    --皮肤-链接文字: var(--文字);
    --皮肤-备注文字: var(--次);
    --皮肤-分类悬停: var(--面2);
    --皮肤-分类选中: var(--面3);
    --皮肤-内容宽: var(--版心);
}

html.浅色 {
    --底色: #6e7b6c;
    --面: #fffdf7;
    --面2: #f6f1e4;
    --面3: #eae3d1;
    --边框: rgba(27, 42, 34, .13);
    --边框强: rgba(27, 42, 34, .24);
    --文字: #1a2a22;
    --次: #6d7d72;
    --主: #1f7a4d;
    --主字: #ffffff;
    --主罩: rgba(31, 122, 77, .10);
    --阴影: 0 26px 70px rgba(70, 60, 40, .22);
}

/* 手机上 100vh 会把地址栏算进去，能用 dvh 就用 dvh */
@supports (height: 100dvh) {
    :root {
        --整体宽: min(960px, calc(100vw - 24px), calc((100dvh - 193px) * 16 / 9));
    }
}

/* ---------- ② 基础 ---------- */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html,
body {
    background: var(--底色);
}

body {
    min-height: 100vh;
    overflow-x: hidden;   /* 两侧圆形按钮伸出播放器外面，别让它带出横向滚动条 */
    color: var(--文字);
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB",
        "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    transition: background .18s;
}

[hidden] {
    display: none !important;
}

button {
    font-family: inherit;
}

/* 左列 = 播放器：一个整体块。
   单列模式下它自己居中；左右 / 上下模式由各自的媒体查询改宽度。 */
.左列 {
    width: var(--整体宽);
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* ---------- ④ 主体：播放器 ---------- */
.主体 {
    padding: 0 0 46px;   /* 播放器顶到最上面，和顶栏之间不留缝 */
}

/* ---------- ④-2 频道条：左边频道信息，右边手机扫码（只在电脑单列模式出现） ---------- */
.频道条 {
    display: block;
    margin-top: 14px;
    padding: 12px 16px;
    border: 1px solid var(--边框);
    border-radius: 8px;
    background: var(--面2);   /* 米色卡片底，和白底的二维码盒区分开，也不至于在米色页面里发白 */
}

.频道条-行 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.频道条-左 {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 14px;
}

.频道条-文 {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.频道条-标 {
    height: 74px;   /* 台标 300×180：比三行文字略高一点，视觉自然 */
    width: auto;
    max-width: 140px;
    object-fit: contain;
    flex: none;
    box-sizing: border-box;
    background: #fff;          /* 白色小底板：米色卡上任何台标都看得清 */
    border: 1px solid var(--边框);
    border-radius: 6px;
    padding: 5px 9px;
}

.频道条-标.白标 {
    background: #293730;       /* CCTV 白色字标：深绿底衬托（同分类页卡片） */
    border-color: #293730;
}

.频道条-名 {
    font-size: 20px;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--文字);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.频道条-址 {
    font-size: 13px;
    color: var(--次要);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.频道条-址:hover {
    color: var(--选中);
    text-decoration: underline;
}

.频道条-源 {
    font-size: 12.5px;
    color: var(--次要);
}

.频道条-源 span {
    color: var(--选中);
    font-weight: 600;
}

.频道条-分类 {
    font-size: 12.5px;
    color: var(--次要);
}

.频道条-分类 a {
    color: var(--选中);
    font-weight: 600;
    text-decoration: none;
}

.频道条-分类 a:hover {
    text-decoration: underline;
}

.频道条-右 {
    flex: none;
    display: flex;
    align-items: center;
    gap: 14px;
}

.频道条-码 {
    width: 114px;
    height: 114px;
    padding: 5px;
    background: #fff;
    border-radius: 6px;
    flex: none;
}

.频道条-码 img,
.频道条-码 canvas {
    display: block;
    width: 100%;
    height: 100%;
}

.频道条-提示 {
    font-size: 12.5px;
    line-height: 1.9;
    color: var(--次要);
}

/* ---------- 频道条下方：本分类全部频道（名字 + 网址，可直接复制） ---------- */
.频道条-列表 {
    margin-top: 12px;
    padding: 12px 16px 14px;
    border: 1px solid var(--边框);
    border-radius: 8px;
    background: var(--面2);   /* 和频道条同款的独立卡片：两个块各归各 */
}

.列表头 {
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--正文);
    border-bottom: 2px solid var(--选中);
    padding-bottom: 8px;
    margin-bottom: 10px;
}

.列表组题 {
    font-weight: 700;
    color: var(--正文);
    font-size: 14px;
    margin: 14px 0 4px;
}

.列表组题:first-child { margin-top: 0; }

.列表组题 i {
    font-style: normal;
    font-weight: 400;
    color: var(--次要);
    font-size: 12px;
}

.播放卡 {
    position: relative;
    border-radius: 5px;
    background: #000;
    /* 注意：这里不能 overflow:hidden —— 两侧的圆形按钮挂在它外面，
       会被一起裁掉。圆角改由 #playerBox 自己裁。 */
}

#playerBox {
    overflow: hidden;
    border-radius: 5px;
}

/* 播放器自带的加载动画换成我们自己的 #加载层：它那层在 manifest 解析完
   （MANIFEST_PARSED）就消失了，比画面早太多，看着像“没加载就黑屏”。
   这里只收掉它的内容，display 状态仍旧留给播放器自己管。 */
#player .zwp_loadingicon {
    background: transparent !important;
}

#player .zwp_loadingicon .zwp__overlay-loading {
    display: none !important;
}

/* ---------- 加载层：台名一行，「转圈 + 正在加载」一行 ---------- */
#加载层 {
    position: absolute;
    inset: 0 0 48px 0;   /* 只盖画面，不压下面 48px 的控制条 */
    z-index: 1050;
    display: none;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 15px;
    background: rgba(8, 11, 15, .58);
    pointer-events: none;   /* 点击穿透，别拦播放器自己的手势 */
}

#加载层.show {
    display: flex;
}

.加载台名 {
    max-width: 84%;
    font-size: 20px;
    font-weight: 500;
    line-height: 1.3;
    letter-spacing: 1.5px;
    color: #fff;
    text-align: center;
    text-shadow: 0 1px 4px rgba(0, 0, 0, .7);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.加载行 {
    display: flex;
    align-items: center;
    gap: 9px;
}

.加载圈 {
    width: 17px;
    height: 17px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, .22);
    border-top-color: #6ec89a;
    animation: 圈转 .8s linear infinite;
    flex: none;
}

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

.加载字,
.加载秒 {
    font-size: 14px;
    line-height: 1;
    letter-spacing: .5px;
    color: rgba(255, 255, 255, .74);
    white-space: nowrap;
}

/* 秒表：只在「正在加载」时出现，重试提示等文案下没有内容。
   数字用等宽（tabular-nums），1→9 秒之间行宽不变，转圈不会左右晃。 */
.加载秒 {
    font-variant-numeric: tabular-nums;
}

.加载秒:empty {
    display: none;
}

/* ---------- 播放器两侧的圆形按钮（只在电脑单列大屏出现，2026-11-01 恢复旧版） ---------- */
.侧按钮 {
    display: none;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 100;
    width: 80px;
    height: 80px;
    align-items: center;
    justify-content: center;
    border: 1px solid currentColor;
    border-radius: 50%;
    background: var(--主罩);
    color: var(--主);
    font-family: inherit;
    font-size: 28px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 1px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background .16s, color .16s;
}

/* 左边按钮贴在卡左侧 8px 外，右边按钮贴在右侧 8px 外 */
.侧左 {
    right: calc(100% + 8px);
}

.侧右 {
    left: calc(100% + 8px);
}

.侧按钮:hover {
    background: var(--主);
    color: var(--主字);
}

.侧按钮:active {
    transform: translateY(-50%) scale(.96);
}

html.浅色 .侧按钮 {
    background: #4e6f58;
    color: #fff;
}

html.浅色 .侧按钮:hover {
    background: #3d5a46;
    color: #fff;
}

/* 已静音：底色压深一档，文字换成「取消」 */
.侧按钮.已静音 {
    background: var(--主);
    color: var(--主字);
}

html.浅色 .侧按钮.已静音 {
    background: #2b4234;
    color: #fff;
}

/* 只有电脑单列大屏才露出来；窗口窄到装不下就整块收掉，不露半截。
   临界 = 960 播放器 + 两边各 (8+80) + 两边各 12 边距 = 1160 */
@media (orientation: landscape) and (min-height: 700px) and (min-width: 1160px) {
    .侧按钮 {
        display: flex;
    }
}

/* 33 个同级分类：宽度够就居中排一行，不够自动换行（不横向滚动） */
/* 抓图的相机图标上方有个凸起，盒子居中了但视觉重心偏上，
   文字单独提 1px 才和图标平齐（信息 / 全屏实测是齐的，不用动） */
#player .zwp-controlbar .zwp-snapshotBtn::after {
    transform: translateY(-1px);
}

/* ============================================================
   ⑥ 常驻选台板（两竖列：左分类 / 右列表）
   竖屏时在播放器下面，横屏或矮屏时在播放器右边。
   电脑单列模式整块隐藏（换台走播放器悬停面板 + 频道条）。
   ============================================================ */
.选台板 {
    display: none;
    min-height: 0;
    background: var(--面);
    border: 1px solid var(--边框);
    border-radius: 5px;
    overflow: hidden;
}

/* 左列：分类整列上下居中。
   用上下两个弹性占位块而不是 justify-content:center —— 后者在 Safari 上
   一旦内容比容器高，顶部会被裁掉且滚不上去；占位块会自动缩到 0。 */
.选台-分类 {
    flex: none;
    width: 128px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px 6px;
    background: var(--面2);
    border-right: 1px solid var(--边框);
    overflow-y: auto;
    overscroll-behavior: contain;
}

.选台-分类::before,
.选台-分类::after {
    content: "";
    flex: 1 1 auto;
    min-height: 0;
}

.选台-tab {
    flex: none;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 5px;
    padding: 9px 7px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: var(--文字);
    font-size: 12.5px;
    line-height: 1.15;
    letter-spacing: 0;
    text-align: left;
    white-space: nowrap;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background .14s, color .14s;
}

.选台-tab:hover {
    background: var(--面3);
}

.选台-tab.active {
    background: var(--主);
    color: var(--主字);
}

.选台-tab名 {
    overflow: hidden;
    text-overflow: ellipsis;
}

.选台-tab数 {
    flex: none;
    font-size: 10.5px;
    color: var(--次);
    letter-spacing: 0;
    font-variant-numeric: tabular-nums;
}

.选台-tab.active .选台-tab数 {
    color: inherit;
    opacity: .7;
}

/* 右列：每个分类一个滚动容器，切分类只切 hidden，滚动位置各自留着。
   容器用绝对定位铺满，不用 height:100% —— iOS Safari 在 flex item 里解析
   百分比高度不稳，会出现"最后几行滚不出来"。 */
.选台-列表 {
    flex: 1 1 auto;
    min-width: 0;
    position: relative;
}

.选台组 {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 6px;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

/* 列表不满一屏时上下居中（推荐 12 条、央视 18 条这类短列表）；
   数据多到超出高度时两个占位块自动缩到 0，照常从第一个开始排、正常滚动。
   和全屏换台面板的列表、分类列同一个做法（避开 Safari justify-content
   裁顶的问题） */
.选台组::before,
.选台组::after {
    content: "";
    flex: 1 1 auto;
    min-height: 0;
}

.选台组::-webkit-scrollbar {
    width: 8px;
}

.选台组::-webkit-scrollbar-thumb {
    background: var(--面3);
    border-radius: 8px;
    border: 2px solid var(--面);
}

/* 一行一个台：编号 + 台名，纯文字（100 多个地方台没有台标，
   混着显示会一半有一半没有，索性都不放） */
.台行 {
    flex: none;
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 11px 9px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: var(--文字);
    font-size: 14px;
    line-height: 1.2;
    text-align: left;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background .12s;
}

.台行:hover {
    background: var(--面3);
}

.台号 {
    flex: none;
    width: 20px;
    font-size: 11.5px;
    color: var(--次);
    letter-spacing: 0;
    font-variant-numeric: tabular-nums;
}

.台名 {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.台行.现在 {
    background: var(--主罩);
}

.台行.现在 .台名 {
    color: var(--主);
    font-weight: 500;
}

.台行.现在 .台号 {
    color: var(--主);
}

/* 选台板的台标（推荐/央视/卫视 三组挂，特色频道不放）：
   行高不变，图标撑满行内高度（有标行上下内边距 11 → 5） */
.选台板 .台行.有标 {
    gap: 8px;
    padding-top: 5px;
    padding-bottom: 5px;
}

.选台板 .台行 .台标 {
    width: 50px;
    height: 30px;
    object-fit: contain;
    flex: none;
    pointer-events: none;
    -webkit-user-drag: none;
}

/* 白标衬底只留左右，别把行高撑起来 */
html.浅色 .选台板 .台标.白标 {
    padding: 0 2px;
    border-radius: 3px;
}

/* 选台板的子组标题（央视/直连源/代理源）：横跨一整行，纯标题，不可点不可选 */
.省题 {
    flex: none;
    margin: 8px 0 3px;
    padding: 0 9px 5px;
    border-bottom: 1px solid var(--边框);
    color: var(--次);
    font-size: 12px;
    letter-spacing: 1.5px;
}

.省题:first-child {
    margin-top: 0;
}

/* 浅色主题：跟巨型菜单同一套米色系 */
html.浅色 .选台板 {
    background: #cfc6b0;
}

html.浅色 .选台-分类 {
    background: #e8e0cc;
}

html.浅色 .选台-tab:hover {
    background: #dcd0b6;
}

html.浅色 .选台-tab.active {
    background: #4e6f58;
    color: #fff;
}

html.浅色 .选台-tab.active .选台-tab数 {
    color: #fff;
    opacity: .72;
}

html.浅色 .台行:hover {
    background: #e8e0cc;
}

html.浅色 .选台组::-webkit-scrollbar-thumb {
    background: #b3a78c;
    border-color: #cfc6b0;
}

/* ---------- ⑦ 窄屏 ---------- */
@media screen and (max-width: 768px) {
    .频道条 { display: none; }   /* 频道条只在电脑单列出现 */

    .主体 {
        padding: 0 0 34px;
    }


}

/* 播放器自带的「点击开启声音」小胶囊，和我们画面中间的音门重复，收掉 */
#player .zwp-unmute-capsule {
    display: none !important;
}

/* ============================================================
   ⑨ 三套布局
   默认（横屏 + 视口够高）：单列，顶栏 + 播放器（悬停浮现换台面板）
   横屏 + 视口矮：      左「顶栏 + 播放器」整体块 + 右选台板
   竖屏（高 > 宽）：     上播放器 + 下选台板（紧贴，不留间距）
   ============================================================ */

/* ---- 左右：宽多高少（矮屏电脑、手机横屏） ---- */
@media (orientation: landscape) and (max-height: 699px) {
    .频道条 { display: none; }   /* 频道条只在电脑单列出现 */

    :root {
        /* 左列（顶栏 + 播放器）共用的宽度，顶栏和播放器必须取同一个值 */
        --左列宽: min(58vw, calc((100vh - 96px) * 16 / 9));
    }

    body {
        height: 100vh;
        height: 100dvh;
        /* iOS Safari 的地址栏是浮在内容上的，dvh 取的是“没被工具栏占掉”的全高，
           面板底部会被工具栏盖住、最后几行滚不出来。svh 是工具栏展开时的可见高度。 */
        height: 100svh;
        overflow: hidden;
        display: flex;
        flex-direction: column;
    }

    .布局 {
        flex: 1 1 auto;
        min-height: 0;
        display: flex;
        align-items: stretch;
        justify-content: center;   /* 播放器 + 选台板作为一组整体居中：
                                      面板顶到 max-width 后，剩余宽度平分成左右对称留白 */
        gap: 12px;
        padding: 0 max(12px, env(safe-area-inset-right, 0px)) max(12px, env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
    }

    /* 左列 = 顶栏 + 播放器，两段同宽、上下紧贴 → 一个整体块。
       右边剩下的宽度全给选台板。 */
    .布局 > .左列 {
        flex: 0 0 auto;
        width: var(--左列宽);
        margin: 0;
        min-height: 0;
    }

    .左列 > .主体 {
        margin: 0;
        padding: 0;
    }

    /* 播放器窄了以后控制条塞不下「分辨率 · 码率」和中间那条广告，二选一留广告 */
    #player .zwp-live-meta {
        display: none;
    }

    #player .zwp-ad-full {
        display: none;
    }

    #player .zwp-ad-short {
        display: inline;
    }

    #player .zwp-ad-slot {
        font-size: 13px;
        padding: 4px 10px;
    }

    /* 控制条精简（用户要求）：只留 暂停/直播中/广告/静音/全屏。
       时间、抓图收掉（信息按钮已在配置里关掉；分辨率·码率上面已经隐藏）；
       窗口拉高脱离矮屏后自动恢复 */
    #player .zwp__currenttime-container {
        display: none !important;
    }

    #player .zwp-snapshotButton {
        display: none !important;
    }

    .选台板 {
        display: flex;
        flex: 1 1 auto;
        max-width: 440px;   /* 列表不再无限拉宽；窄窗口剩余不足 440 时照旧填满 */
        min-width: 0;
    }

    .加载台名 {
        font-size: 16px;
        letter-spacing: 1px;
    }

    .加载字,
    .加载秒 {
        font-size: 12.5px;
    }

    .加载圈 {
        width: 15px;
        height: 15px;
    }

    #加载层 {
        gap: 11px;
    }
}

/* 手机上 100vh 会把地址栏算进去，能用 dvh 就用 dvh */
@supports (height: 100dvh) {
    @media (orientation: landscape) and (max-height: 699px) {
        :root {
            --左列宽: min(58vw, calc((100dvh - 96px) * 16 / 9));
        }
    }
}

@supports (height: 100svh) {
    @media (orientation: landscape) and (max-height: 699px) {
        :root {
            --左列宽: min(58vw, calc((100svh - 96px) * 16 / 9));
        }
    }
}

/* ---- 上下：高多宽少（手机竖屏、竖着的窗口） ---- */
@media (orientation: portrait) {
    .频道条 { display: none; }   /* 频道条只在电脑单列出现 */

    body {
        height: 100vh;
        height: 100dvh;
        /* iOS Safari 的地址栏是浮在内容上的，dvh 取的是“没被工具栏占掉”的全高，
           面板底部会被工具栏盖住、最后几行滚不出来。svh 是工具栏展开时的可见高度。 */
        height: 100svh;
        overflow: hidden;
        display: flex;
        flex-direction: column;
    }

    .布局 {
        flex: 1 1 auto;
        min-height: 0;
        display: flex;
        flex-direction: column;
        padding: 0 max(12px, env(safe-area-inset-right, 0px)) max(12px, env(safe-area-inset-bottom, 0px)) max(12px, env(safe-area-inset-left, 0px));
    }

    /* 上面一整块 = 顶栏 + 播放器（同宽），下面紧贴选台板 */
    .布局 > .左列 {
        flex: none;
        width: 100%;
        margin: 0;
        min-height: 0;
    }

    .左列 > .主体 {
        margin: 0;
        padding: 0;
    }

    /* 播放器下面留 8px，面板高度吃掉剩下的所有空间 */
    .选台板 {
        display: flex;
        flex: 1 1 auto;
        min-height: 0;
        margin-top: 8px;
        border-radius: 5px;
    }

    .选台-分类 {
        width: 120px;
    }

    .选台-tab {
        font-size: 12.5px;
        padding: 8px 6px;
    }

    .台行 {
        font-size: 13.5px;
        padding: 10px 8px;
    }

    .选台板 .台行.有标 {
        padding-top: 6px;
        padding-bottom: 6px;
    }

    .选台板 .台行 .台标 {
        width: 40px;
        height: 24px;
    }

    .加载台名 {
        font-size: 17px;
        letter-spacing: 1px;
    }

    .加载字,
    .加载秒 {
        font-size: 13px;
    }

    .加载圈 {
        width: 15px;
        height: 15px;
    }

    #加载层 {
        gap: 12px;
    }
}

/* ---- 横屏特窄（老手机横过来，如 568×320）：两竖都得收窄 ---- */
@media (orientation: landscape) and (max-height: 699px) and (max-width: 760px) {
    .频道条 { display: none; }   /* 频道条只在电脑单列出现 */

    .选台-分类 {
        width: 104px;
    }

    .选台-tab {
        font-size: 11.5px;
        padding: 8px 5px;
        gap: 3px;
    }

    .台行 {
        font-size: 13px;
        padding: 9px 7px;
    }

    .台号 {
        width: 18px;
        font-size: 11px;
    }

    /* 特窄横屏空间太小：台标不显，保台名可读 */
    .选台板 .台行 .台标 {
        display: none;
    }
}
