/* =========================================================================
   candy_bracket.css  ·  Sweet Broadcast  v3   (2026-09-13)
   设计概念：统一深色转播台（2026-09-13 全站统一深底，取消浅色分区）
   - 舞台（淘汰赛对战树）：深墨底 + 背景图槽 + 毛玻璃层，赛事视觉重心
   - 页面主体：与舞台同色系的深底版式（面板 #211320 + 发丝线），杂志式分节
   - 色彩纪律：1 个品牌强调色（余烬红）+ 4 个语义色（胜者组/败者组/总决赛/顺位）
   -------------------------------------------------------------------------
   ★★ 淘汰赛舞台背景图槽位（用户自备图）★★
   把图片放到：  uploads/bracket_stage.jpg
   建议尺寸：    2560 × 1280（16:8），横构图，主体居中偏右，四周留暗、不要有文字
   不想用图？把下面 --stage-img 改成 none，兜底光效会自动接管，无需其它改动。
   -------------------------------------------------------------------------
   ★ 公告栏可选底纹：把 --board-img 改成 url('../uploads/notice_board.jpg')
   ------------------------------------------------------------------------- */
:root{
    /* ---- 品牌强调色（只用于交互与强调，不承载状态语义）---- */
    --ember:#ff5c78;
    --ember-deep:#c22a4e;     /* 实心色块/渐变的深端，不作为深底上的文字色 */
    --ember-ink:#ff8ba0;      /* 深底上的品牌强调文字 */
    --ember-soft:rgba(255,92,120,.16);

    /* ---- 语义色（含义保持不变，为深底整体提亮）---- */
    --win:#5cb8ea;        /* 胜者组 */
    --win-soft:rgba(92,184,234,.16);
    --lose:#ff5f6d;       /* 败者组 */
    --lose-soft:rgba(255,95,109,.16);
    --champ:#f0b429;      /* 总决赛 / 冠军 */
    --champ-soft:rgba(240,180,41,.16);
    --seed:#a98cf5;       /* 第四顺位 */
    --seed-soft:rgba(169,140,245,.16);

    /* ---- 中性（暖调深底，避免死灰）---- */
    --ink-900:#fff3f0;
    --ink-800:#ecd7d5;
    --ink-700:#d3b8bb;
    --ink-600:#b1939a;
    --ink-500:#8b6f78;
    --paper-0:#211320;
    --paper-1:#281823;
    --paper-2:#331e2c;
    --line:rgba(255,238,243,.10);
    --line-2:rgba(255,238,243,.20);

    /* ---- 舞台 ---- */
    --stage-img:none; /* 原为 url('../uploads/bracket_stage.jpg')，文件缺失会在控制台刷 404；放图时改回 url('../uploads/bracket_stage.jpg') */
    --stage-base:#180c12;
    --stage-ink:#ffeef3;
    --board-img:none;

    /* ---- 字体：3 族（衬线标题 / 无衬线正文 / 窄体数字标签）---- */
    --f-display:'Noto Serif SC','Songti SC',serif;
    --f-body:'Noto Sans SC','Microsoft YaHei',sans-serif;
    --f-num:'Barlow Condensed','Noto Sans SC',sans-serif;

    /* ---- 尺度 ---- */
    --r-xs:4px; --r-sm:8px; --r-md:14px; --r-lg:20px; --r-xl:28px; --r-pill:999px;
    --sh-1:0 1px 2px rgba(0,0,0,.30), 0 6px 16px rgba(0,0,0,.26);
    --sh-2:0 4px 12px rgba(0,0,0,.34), 0 18px 40px rgba(0,0,0,.40);
    --sh-3:0 30px 70px rgba(0,0,0,.62);
    --ease:cubic-bezier(.23,1,.32,1);

    /* ---- 兼容旧变量名（includes 内联引用）---- */
    --pink-theme:var(--ember);
    --gold-theme:var(--champ);
    --blue-theme:var(--win);
    --red-team:var(--lose);
    --blue-team:var(--win);
    --gold:var(--champ);
}


/* ========================= 基础 ========================= */
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
    margin:0;
    padding:0;
    width:100%;
    overflow-x:hidden;
    font-family:var(--f-body);
    color:var(--ink-800);
    -webkit-font-smoothing:antialiased;
    /* 壁纸 + 深色纱（纱压暗壁纸，保证整页统一在转播台深底上） */
    background-color:#120710;
    /* 原第二层为 url('../uploads/sct.png')，文件缺失会在控制台刷 404；放图时在该行补回 url('../uploads/sct.png') */
    background-image:
        linear-gradient(180deg, rgba(18,7,15,.90) 0%, rgba(18,7,15,.82) 42%, rgba(14,5,11,.93) 100%);
    background-size:auto;
    background-position:center top;
    background-repeat:no-repeat;
    background-attachment:scroll;
}
a{text-decoration:none;color:inherit;}
button{font-family:inherit;}
::selection{background:var(--ember);color:#fff;}
body::-webkit-scrollbar{width:12px;}
body::-webkit-scrollbar-track{background:var(--paper-2);}
body::-webkit-scrollbar-thumb{background:rgba(255,238,243,.20);border:3px solid transparent;border-radius:var(--r-pill);}
:focus-visible{outline:2px solid var(--ember);outline-offset:3px;}

/* ========================= 画布 ========================= */
#outer-container{position:relative;width:100%;overflow:hidden;}
#scale-wrapper{
    /* 内容带宽度 --cw：随视口在 1900→2100px 间连续变化（2026-09-15 多分辨率整改）
       1080P(1920) 收窄到 1900 → 缩放比由 0.838 提升到 ~0.97，正文视觉字号 10.5px → 12.1px
       2K 及以上维持原 2100 版心与观感；所有版心宽度与对战树坐标均由此变量派生，缩放比连续不跳档
       ⚠ 必须用 vw 而非 %：CSS 变量被子元素继承时，百分比会按"该元素自己的父容器"重新解析，
         造成版心逐层缩水 44px（header 2056 / 舞台 2012…）；vw 与包含块无关，全页同一取值 */
    --cw:clamp(1900px, 100vw - 44px, 2100px);
    position:absolute;top:0;left:50%;
    margin-left:calc(var(--cw) / -2);
    width:var(--cw);
    display:flex;flex-direction:column;align-items:center;
    padding:24px 0 56px;
    transform-origin:top center;
}

/* ========================= 赛季选择器 ========================= */
.season-selector{
    align-self:flex-start;
    margin:0 0 14px 50px;
    position:relative;
    z-index:40;
}
.season-btn{
    font-family:var(--f-num);
    font-size:16px;letter-spacing:.14em;text-transform:uppercase;
    color:var(--ink-900);
    background:var(--paper-0);
    border:1px solid var(--line-2);
    border-radius:var(--r-pill);
    padding:8px 20px;
    box-shadow:none;
    transition:background .22s var(--ease), color .22s var(--ease), border-color .22s var(--ease);
}
.season-btn:hover,.season-btn:focus{background:var(--ink-900);color:var(--paper-0);border-color:var(--ink-900);}
.season-btn::after{margin-left:10px;}
.season-menu{
    border:1px solid var(--line-2);
    border-radius:var(--r-md);
    background:var(--paper-0);
    box-shadow:var(--sh-2);
    padding:8px;
    min-width:220px;
}
.season-menu .dropdown-item{
    border-radius:var(--r-sm);
    font-size:14px;
    color:var(--ink-800);
    padding:9px 14px;
}
.season-menu .dropdown-item:hover{background:var(--paper-2);color:var(--ink-900);}

/* ========================= 报头（编辑式版式） ========================= */
.header{
    position:relative;
    width:var(--cw);
    margin-bottom:14px;
    padding:30px 46px 30px;
    display:flex;align-items:flex-end;justify-content:space-between;gap:48px;
    text-align:left;
    background:var(--paper-0);
    border:1px solid var(--line);
    border-radius:var(--r-md);
    box-shadow:var(--sh-2);
    overflow:hidden;
}
/* 顶部色条：故意做成 38% 处断开的双段，避开"居中渐变"的模板感 */
.header::before{
    content:'';position:absolute;top:0;left:0;right:0;height:3px;
    background:linear-gradient(90deg,
        var(--ember) 0%, var(--ember) 37%,
        rgba(255,92,120,.20) 37%, rgba(255,92,120,.20) 100%);
}
/* 版心底线：只走 62% 宽度 */
.header::after{
    content:'';position:absolute;left:46px;right:46px;bottom:0;height:1px;
    background:linear-gradient(90deg,var(--line-2),transparent 62%);
}
.mast-brand{min-width:0;}
.header-badge{
    display:block;
    font-family:var(--f-num);
    font-size:11.5px;font-weight:600;
    letter-spacing:.34em;
    color:var(--ember-ink);
    text-transform:uppercase;
    margin-bottom:12px;
}
.header h1{
    margin:0;
    font-family:var(--f-display);
    font-size:58px;font-weight:900;
    letter-spacing:.04em;
    line-height:1.08;
    color:var(--ink-900);
}
#txtSub{
    margin-top:12px;
    font-family:var(--f-num);
    font-size:12.5px;font-weight:500;
    letter-spacing:.4em;
    text-transform:uppercase;
    color:var(--ink-500);
}
/* 右侧赛事读数：三格，靠发丝线分隔 */
.mast-meta{
    display:flex;align-items:flex-end;flex:none;
    padding-bottom:4px;
}
.meta-cell{
    padding:0 26px;
    border-left:1px solid var(--line);
    text-align:left;
}
.meta-cell:first-child{padding-left:0;border-left:0;}
.meta-cell:last-child{padding-right:0;}
.meta-cell em{
    display:block;
    font-family:var(--f-num);font-style:normal;
    font-size:10.5px;letter-spacing:.3em;
    color:var(--ember-ink);
    text-transform:uppercase;
}
.meta-cell b{
    display:block;margin-top:9px;
    font-size:13.5px;font-weight:700;
    letter-spacing:.02em;
    color:var(--ink-800);
    white-space:nowrap;
}
@media (max-width:1580px){
    .mast-meta{display:none;}
}

/* ========================= 导航 ========================= */
.main-nav{
    display:flex;align-items:center;gap:6px;
    width:var(--cw);
    padding:7px;
    background:var(--paper-0);
    border:1px solid var(--line);
    border-radius:var(--r-pill);
    box-shadow:var(--sh-1);
    margin-bottom:12px;
}
.nav-btn{
    flex:1;
    text-align:center;
    padding:12px 10px;
    border-radius:var(--r-pill);
    font-size:15px;font-weight:700;
    color:var(--ink-700);
    background:transparent;
    border:1px solid transparent;
    cursor:pointer;
    transition:background .22s var(--ease), color .22s var(--ease);
}
.nav-btn:hover{background:var(--ink-900);color:var(--paper-0);}
.nav-btn:active{transform:translateY(1px);}
.sp-btn{color:var(--ember-ink);}

/* ========================= 供货商跑马灯 ========================= */
.vip-ghost-wrap{
    width:var(--cw);height:44px;
    display:flex;align-items:center;
    overflow:hidden;
    background:var(--paper-1);
    border:1px dashed var(--line-2);
    border-radius:var(--r-pill);
    margin-bottom:14px;
    cursor:pointer;
}
.vip-ghost{
    display:inline-flex;align-items:center;gap:14px;
    white-space:nowrap;
    font-size:14px;font-weight:700;letter-spacing:.06em;
    color:var(--ink-700);
    padding-left:100%;
    animation:ghostFloat 34s linear infinite;
}
.vip-ghost-wrap:hover .vip-ghost{animation-play-state:paused;}
.vip-ghost::before{
    content:'SPONSOR';
    font-family:var(--f-num);font-size:10px;letter-spacing:.3em;
    color:var(--ember-ink);
    background:var(--ember-soft);
    border-radius:var(--r-xs);
    padding:3px 7px;
}
@keyframes ghostFloat{0%{transform:translateX(0);}100%{transform:translateX(-100%);}}

/* ========================= 瑞士轮跳转 ========================= */
.swiss-redirect-btn{
    position:relative;
    display:flex;flex-direction:column;justify-content:center;
    width:var(--cw);height:86px;
    padding:0 52px;
    margin-bottom:26px;
    border-radius:var(--r-md);
    background:linear-gradient(105deg,#4b0f26 0%,#a81b3c 46%,var(--ember) 100%);
    border:1px solid rgba(255,255,255,.14);
    box-shadow:var(--sh-2);
    overflow:hidden;
    transition:box-shadow .3s var(--ease), transform .3s var(--ease);
}
.swiss-redirect-btn::before{
    content:'';position:absolute;inset:0;
    background:repeating-linear-gradient(115deg,rgba(255,255,255,.05) 0 2px,transparent 2px 22px);
    opacity:.7;
}
.swiss-redirect-btn::after{
    content:'»';
    position:absolute;right:52px;top:50%;
    transform:translateY(-50%);
    font-size:46px;line-height:1;font-weight:300;
    color:rgba(255,255,255,.42);
    transition:transform .3s var(--ease),color .3s var(--ease);
}
.swiss-redirect-btn:hover{transform:translateY(-2px);box-shadow:0 22px 44px rgba(0,0,0,.45);}
.swiss-redirect-btn:hover::after{transform:translateY(-50%) translateX(8px);color:#fff;}
.swiss-btn-text{
    position:relative;
    font-family:var(--f-display);
    font-size:30px;font-weight:900;letter-spacing:.08em;
    color:#fff;
}
.swiss-btn-sub{
    position:relative;
    margin-top:7px;
    font-family:var(--f-num);
    font-size:11px;font-weight:500;letter-spacing:.34em;
    text-transform:uppercase;
    color:rgba(255,255,255,.48);
}

/* =========================================================================
   淘汰赛舞台
   ========================================================================= */
.bracket-container{
    position:relative;
    isolation:isolate;
    overflow:hidden;
    width:var(--cw);height:1050px;
    border-radius:var(--r-xl);
    /* 背景图槽 → 兜底光效叠在图片上方；图片缺失时下面几层自动接管 */
    background-color:var(--stage-base);
    background-image:
        radial-gradient(820px 520px at 86% 26%, rgba(214,57,87,.26), transparent 68%),
        radial-gradient(680px 460px at 10% 82%, rgba(15,111,168,.20), transparent 70%),
        radial-gradient(560px 380px at 52% 100%, rgba(184,121,26,.16), transparent 72%),
        repeating-linear-gradient(90deg, rgba(255,255,255,.045) 0 1px, transparent 1px 84px),
        repeating-linear-gradient(0deg, rgba(255,255,255,.035) 0 1px, transparent 1px 84px),
        linear-gradient(158deg,#2a1120 0%,#1b0d14 54%,#120810 100%),
        var(--stage-img);
    background-size:auto, auto, auto, auto, auto, auto, cover;
    background-position:center, center, center, center, center, center, center;
    background-repeat:no-repeat, no-repeat, no-repeat, repeat, repeat, no-repeat, no-repeat;
    box-shadow:
        0 34px 80px rgba(0,0,0,.55),
        inset 0 0 0 1px rgba(255,255,255,.07),
        inset 0 0 160px rgba(0,0,0,.5);
}
/* 毛玻璃层：把背景图/壁纸磨成柔光底，卡片浮在其上 */
.stage-glass{
    position:absolute;inset:0;z-index:0;
    backdrop-filter:blur(9px) saturate(122%);
    -webkit-backdrop-filter:blur(9px) saturate(122%);
    background:
        /* 1 树区聚光压暗：保证连线与刻度可读 */
        radial-gradient(74% 64% at 40% 58%, rgba(16,7,12,.46), rgba(16,7,12,.16) 62%, rgba(16,7,12,0) 100%),
        /* 2 暗角：让背景图在四边收得住，不在边缘发灰 */
        radial-gradient(92% 104% at 50% 50%, rgba(16,7,12,0) 32%, rgba(16,7,12,.5) 100%),
        /* 3 上下压边：标题带与页脚带 */
        linear-gradient(180deg, rgba(16,7,12,.52) 0%, rgba(16,7,12,.2) 26%, rgba(16,7,12,.2) 74%, rgba(16,7,12,.58) 100%);
}
/* 细颗粒质感，去掉"屏幕打光"式的假光晕 */
.stage-glass::after{
    content:'';position:absolute;inset:0;opacity:.07;mix-blend-mode:overlay;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---- 舞台装饰层 ---- */
.stage-decor{position:absolute;inset:0;z-index:1;pointer-events:none;}

.decor-hint{
    position:absolute;left:calc(var(--cw) * 360 / 2100);top:300px;
    font-size:12px;letter-spacing:.16em;
    color:rgba(255,255,255,.36);
}
.decor-gf{position:absolute;right:calc(var(--cw) * 36 / 2100);top:104px;width:calc(var(--cw) * 560 / 2100);text-align:right;}
.decor-gf b{
    display:block;
    font-family:var(--f-num);
    font-size:44px;font-weight:700;line-height:.9;letter-spacing:.06em;
    color:transparent;
    -webkit-text-stroke:1.2px rgba(255,214,150,.3);
}
.decor-gf i{
    display:block;margin-top:10px;
    font-family:var(--f-display);font-style:normal;
    font-size:22px;font-weight:700;letter-spacing:.5em;
    color:rgba(255,255,255,.5);
}
.decor-gf em{
    display:block;margin-top:16px;padding-top:14px;
    border-top:1px solid rgba(255,255,255,.12);
    font-style:normal;font-size:12.5px;letter-spacing:.18em;
    color:rgba(255,255,255,.36);
}
.decor-podium{
    position:absolute;right:calc(var(--cw) * 36 / 2100);bottom:60px;
    width:calc(var(--cw) * 560 / 2100);height:300px;
    display:flex;flex-direction:column;align-items:center;justify-content:flex-end;
    gap:10px;
    background:radial-gradient(58% 78% at 50% 100%, rgba(255,214,150,.20), transparent 72%);
}
.decor-podium::after{
    content:'';width:76%;height:1px;
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent);
}
.decor-podium em{
    font-family:var(--f-num);font-style:normal;
    font-size:13px;letter-spacing:.4em;text-transform:uppercase;
    color:rgba(255,214,150,.55);
}
.decor-podium i{
    font-family:var(--f-display);font-style:normal;
    font-size:15px;letter-spacing:.3em;
    color:rgba(255,255,255,.3);
}

/* ---- 列导轨：标示对战树每一列读法 ---- */
.stage-guides{position:absolute;inset:0;z-index:1;pointer-events:none;}
/* 横向坐标轴：把「轮次标签」与下方各列用一条读数轴线串起来 */
.stage-guides::before{
    content:'';position:absolute;left:calc(var(--cw) * 296 / 2100);right:calc(var(--cw) * 92 / 2100);top:117px;height:1px;
    background:linear-gradient(90deg,rgba(255,255,255,.02),rgba(255,255,255,.22) 14%,rgba(255,255,255,.22) 86%,rgba(255,255,255,.02));
}
/* 每列轴点 + 顶端亮化，形成"刻度"读感 */
.stage-guides i::before{
    content:'';position:absolute;left:50%;top:0;
    width:6px;height:6px;
    transform:translate(-50%,-50%) rotate(45deg);
    background:rgba(255,255,255,.34);
    box-shadow:0 0 0 3px rgba(255,255,255,.05);
}
.stage-guides i::after{
    content:'';position:absolute;left:0;top:0;width:1px;height:30px;
    background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,0));
}
.stage-guides i{
    position:absolute;left:var(--x);top:118px;bottom:56px;width:1px;
    background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.06) 30%,rgba(255,255,255,.03) 100%);
}
.stage-guides i em{
    position:absolute;top:-16px;left:0;
    transform:translateX(-50%);
    white-space:nowrap;
    font-family:var(--f-num);font-style:normal;
    font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;
    color:rgba(255,255,255,.48);
    text-shadow:0 1px 6px rgba(8,3,6,.85);
}
.stage-guides i:first-child em{transform:none;left:10px;}
.stage-guides i:last-child em{transform:none;left:auto;right:0;}
/* 导轨列坐标随内容带 --cw 联动（覆盖 PHP 内联 --x，保持与卡片列对齐） */
.stage-guides i:nth-child(1){--x:calc(var(--cw) * 360 / 2100)!important;}
.stage-guides i:nth-child(2){--x:calc(var(--cw) * 640 / 2100)!important;}
.stage-guides i:nth-child(3){--x:calc(var(--cw) * 920 / 2100)!important;}
.stage-guides i:nth-child(4){--x:calc(var(--cw) * 1200 / 2100)!important;}
.stage-guides i:nth-child(5){--x:calc(var(--cw) * 1480 / 2100)!important;}
.stage-guides i:nth-child(6){--x:calc(var(--cw) * 1800 / 2100)!important;}

/* ---- 赛制读数块（填在左中空区，右侧仅走一条发丝线） ---- */
.decor-rules{
    position:absolute;left:calc(var(--cw) * 360 / 2100);top:150px;width:calc(var(--cw) * 470 / 2100);z-index:1;
    padding-left:18px;
    border-left:2px solid rgba(214,57,87,.5);
}
.decor-rules b{
    display:block;margin-bottom:11px;
    font-family:var(--f-display);font-size:13px;font-weight:700;
    letter-spacing:.24em;
    color:rgba(255,255,255,.52);
}
.decor-rules ul{margin:0;padding:0;list-style:none;}
.decor-rules li{
    position:relative;
    padding-left:18px;
    font-size:13.5px;line-height:1.85;
    letter-spacing:.02em;
    color:rgba(255,255,255,.66);
}
.decor-rules li::before{
    content:'';position:absolute;left:2px;top:9px;
    width:4px;height:4px;border-radius:50%;
    background:rgba(214,57,87,.85);
}

/* ---- 舞台标题条 ---- */
.stage-head{
    position:absolute;left:calc(var(--cw) * 250 / 2100);right:calc(var(--cw) * 250 / 2100);top:12px;z-index:30;
    display:flex;flex-direction:column;align-items:center;gap:7px;
    padding-bottom:9px;
    border-bottom:1px solid rgba(255,255,255,.1);
    pointer-events:none;
}
.stage-head h2{
    display:flex;flex-direction:column;align-items:center;gap:7px;
    margin:0;
    font-family:var(--f-display);
    font-size:24px;font-weight:900;letter-spacing:.16em;
    color:var(--stage-ink);
}
.stage-head h2 small{
    font-family:var(--f-num);font-size:10.5px;font-weight:500;
    letter-spacing:.44em;text-transform:uppercase;
    color:rgba(255,255,255,.38);
}
/* 速览卡：条目走双列，压掉整块高度，避免右列比左列长出一截 */
.rule-group.is-scan .rule-list{display:grid;grid-template-columns:1fr 1fr;gap:9px 30px;}
/* ---- 舞台页脚说明 ---- */
.stage-foot{
    position:absolute;left:calc(var(--cw) * 360 / 2100);right:calc(var(--cw) * 36 / 2100);bottom:20px;z-index:30;
    display:flex;align-items:center;justify-content:space-between;
    padding-top:14px;
    border-top:1px solid rgba(255,255,255,.08);
    font-size:12px;letter-spacing:.14em;
    color:rgba(255,255,255,.34);
}
.stage-foot span:last-child{
    font-family:var(--f-num);text-transform:uppercase;letter-spacing:.3em;
}

/* ---- 顺位选马竖排（毛玻璃小面板）---- */
.draft-vertical-column{
    position:absolute;left:calc(var(--cw) * 34 / 2100);top:96px;z-index:20;
    display:flex;flex-direction:column;gap:10px;
    width:calc(var(--cw) * 250 / 2100);height:auto;
}
.draft-block{
    position:relative;
    padding:12px 14px 14px;
    border-radius:var(--r-md);
    background:
        linear-gradient(158deg,rgba(255,255,255,.115) 0%,rgba(255,255,255,.055) 46%,rgba(255,255,255,.035) 100%);
    border:1px solid rgba(255,255,255,.12);
    border-left:3px solid var(--tone,var(--ember));
    box-shadow:inset 0 1px 0 rgba(255,255,255,.1);
    backdrop-filter:blur(9px);
    -webkit-backdrop-filter:blur(9px);
    transition:background .24s var(--ease),border-color .24s var(--ease);
}
.draft-block:hover{background:rgba(255,255,255,.11);}
.draft-label{
    display:flex;align-items:center;gap:8px;
    font-size:12.5px;font-weight:700;line-height:1.45;
    letter-spacing:.02em;
    color:rgba(255,255,255,.82);
    margin-bottom:9px;
}
/* 顺位徽标：写死在四个队块上，编号即顺位 01-04；右侧补 TEAM/OPP 标签 */
.draft-s1-team .draft-label::before{content:'01';}
.draft-s2-team .draft-label::before{content:'02';}
.draft-s3-team .draft-label::before{content:'03';}
.draft-s4-team .draft-label::before{content:'04';}
.draft-label::before{
    flex:none;
    font-family:var(--f-num);font-size:11px;font-weight:700;
    letter-spacing:.06em;
    color:var(--tone,var(--ember));
    background:rgba(255,255,255,.07);
    border:1px solid rgba(255,255,255,.14);
    border-radius:var(--r-xs);
    padding:1px 5px;
    min-width:24px;text-align:center;
}
.draft-label::after{
    content:'TEAM';
    margin-left:auto;flex:none;
    font-family:var(--f-num);font-size:9.5px;font-weight:600;
    letter-spacing:.24em;
    color:rgba(255,255,255,.3);
}
.draft-block[class*="-opp"] .draft-label::after{content:'OPPONENT';}
.draft-block[class*="-opp"] .draft-label::before{color:rgba(255,255,255,.42);}
.draft-block select,
.draft-select{
    width:100%;height:34px;
    padding:0 10px;
    font-family:var(--f-body);font-size:13px;
    color:#fff;
    background:rgba(10,4,8,.62);
    border:1px solid rgba(255,255,255,.16);
    border-radius:var(--r-sm);
    outline:none;
    cursor:pointer;
    appearance:none;
    background-image:
        linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,0) 46%),
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='rgba(255,255,255,.5)' stroke-width='1.4' stroke-linecap='round'/></svg>");
    background-repeat:no-repeat,no-repeat;
    background-position:0 0,right 11px center;
    padding-right:30px;
    transition:border-color .22s var(--ease),background-color .22s var(--ease);
}
.draft-block select:hover,.draft-select:hover{border-color:rgba(255,255,255,.34);}
.draft-block select:focus,.draft-select:focus{border-color:var(--ember);background:rgba(10,4,8,.8);}
.draft-block select option,.draft-select option{background:#2a1420;color:#fff;}
.draft-select.text-center{text-align:center;}
.draft-select:disabled,.draft-select option:disabled{color:rgba(255,255,255,.4);}
/* 顺位语义色（保持原有顺序含义） */
.draft-s1-team{--tone:#f0b429;}
.draft-s2-team{--tone:#3aa6dd;}
.draft-s3-team{--tone:#e2375a;}
.draft-s4-team{--tone:#8f6ae0;}
.draft-s1-opp,.draft-s2-opp,.draft-s3-opp,.draft-s4-opp{
    border-left-style:dashed;background:rgba(255,255,255,.05);
}
.draft-s1-opp{--tone:#f0b429;}
.draft-s2-opp{--tone:#3aa6dd;}
.draft-s3-opp{--tone:#e2375a;}
.draft-s4-opp{--tone:#8f6ae0;}
/* 顺位面板底部赛制说明 */
.draft-note{
    margin-top:2px;
    padding:14px;
    border-radius:var(--r-md);
    border:1px solid rgba(255,255,255,.1);
    background:rgba(0,0,0,.22);
}
.draft-note b{
    display:block;margin-bottom:8px;
    font-family:var(--f-num);font-size:11px;font-weight:600;
    letter-spacing:.3em;text-transform:uppercase;
    color:rgba(255,255,255,.5);
}
.draft-note p{
    margin:0;
    font-size:12px;line-height:1.75;
    color:rgba(255,255,255,.6);
}

/* ===================== 选马卡槽内直接勾选晋级（✅ 按钮，不新增区块） ===================== */
.draft-win-slot{
    display:inline-block;
    margin:0 0 0 8px;
    vertical-align:middle;
    min-height:24px;
}
.draft-win-slot:empty{display:none;}
/* ✅ 按钮与下拉框同一行：flex 弹性布局，select 弹性收缩、按钮固定不换行，任何屏宽都同行 */
.draft-block{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:8px;
}
.draft-label{
    flex:1 1 100%;
}
.draft-block select{
    flex:1 1 auto;
    min-width:0;
    width:auto;
    display:inline-block;
    vertical-align:middle;
}
.draft-win-slot{
    flex:0 0 auto;
    margin:0;
    vertical-align:middle;
    min-height:24px;
}
.draft-win-btn{
    display:inline-flex;align-items:center;gap:4px;
    padding:3px 12px;
    border-radius:999px;
    border:1px solid rgba(255,255,255,.22);
    background:rgba(255,255,255,.08);
    color:rgba(255,255,255,.85);
    font-size:12px;font-weight:600;line-height:1.5;
    cursor:pointer;
    transition:all .2s var(--ease);
}
.draft-win-btn:hover{
    background:var(--ember);border-color:var(--ember);
    color:#fff;transform:translateY(-1px);
}
.draft-win-btn.is-win{
    background:var(--win,#27ae60);
    border-color:transparent;
    color:#fff;
}
.draft-win-mark{
    color:var(--win,#27ae60);
    font-size:12px;font-weight:700;
}
.draft-win-lock{
    color:rgba(255,255,255,.35);
    font-size:12px;
}

/* ---- 连线 ---- */
.svg-layer{
    position:absolute;top:0;left:0;z-index:2;
    width:var(--cw);height:1050px;
    pointer-events:none;
}
.svg-layer path{
    fill:none;
    stroke:rgba(255,178,200,.52);
    stroke-width:2.5;
    stroke-linejoin:round;
    stroke-linecap:round;
    filter:drop-shadow(0 0 3px rgba(214,57,87,.38));
}
/* ========================= 对阵卡 ========================= */
.match-card{
    position:absolute;z-index:10;
    width:230px;height:110px;
    padding:6px 12px 6px 15px;
    display:flex;flex-direction:column;justify-content:center;
    background:var(--paper-0);
    border:1px solid rgba(255,238,243,.16);
    border-radius:var(--r-sm);
    box-shadow:0 10px 22px rgba(0,0,0,.42), inset 0 -1px 0 rgba(255,238,243,.05);
    transition:transform .26s var(--ease),box-shadow .26s var(--ease);
}
.match-card::before{
    content:'';position:absolute;left:0;top:0;bottom:0;width:4px;
    border-radius:var(--r-sm) 0 0 var(--r-sm);
    background:var(--tone,var(--ember));
}
.match-card:hover{transform:translateY(-3px);box-shadow:0 20px 38px rgba(8,3,6,.5);}
.match-card.loser-bracket{--tone:var(--lose);}
.match-card.winner-bracket{--tone:var(--win);}
.match-card.grand-final-card{--tone:var(--champ);}
.match-card.champion-card{
    --tone:#e8a417;
    width:260px;height:145px;
    background:linear-gradient(180deg,rgba(240,180,41,.16) 0%,rgba(240,180,41,.05) 100%);
    border:2px solid rgba(232,164,23,.65);
    box-shadow:
        0 0 0 6px rgba(255,214,140,.10),
        0 20px 44px rgba(8,3,6,.5);
}
.match-label{
    position:absolute;left:50%;top:-24px;
    transform:translateX(-50%);
    width:100%;
    text-align:center;
    white-space:nowrap;
    font-family:var(--f-num);
    font-size:12.5px;font-weight:600;
    letter-spacing:.16em;text-transform:uppercase;
    color:rgba(255,255,255,.9);
    text-shadow:0 1px 4px rgba(8,2,6,.75);
}
.loser-bracket .match-label{color:#ffb0c3;}
.winner-bracket .match-label{color:#9ed6f2;}
/* 标题行：轮次标签 + 直播（摄像头）入口（直播入口已从底部按钮行移到此处） */
.match-head{
    position:absolute;left:50%;top:-29px;
    transform:translateX(-50%);
    width:100%;
    display:flex;align-items:center;justify-content:center;
    gap:5px;
}
/* 标题行内标签改为常规流布局，使直播按钮紧贴标签（含 BO1/BO3 角标）右侧 */
.match-head .match-label{
    position:static;left:auto;top:auto;
    transform:none;width:auto;
}
/* 标题行含 24px 高按钮，整体上移 5px，保持标题文字与卡片原有的间距 */
.grand-final-card .match-head{top:-37px;}
/* 直播入口在标题行内收紧尺寸，并去掉底部行使用的右外边距 */
.match-head .live-btn-small{
    flex:none;margin:0;
    width:24px;height:20px;
}
.grand-final-card .match-label{
    top:-32px;
    font-family:var(--f-display);
    font-size:15px;font-weight:900;
    letter-spacing:.22em;
    color:#ffd79a;
}
.champion-card .match-label{
    top:-88px;
    font-family:var(--f-num);
    font-size:11.5px;font-weight:500;
    letter-spacing:.36em;
    color:rgba(255,255,255,.4);
}
.trophy-icon{
    position:absolute;left:50%;top:-52px;
    transform:translateX(-50%);
    padding:6px 13px 6px 16px;
    font-family:var(--f-num);
    font-size:11.5px;font-weight:700;line-height:1;letter-spacing:.34em;
    text-transform:uppercase;
    color:#ffe0ad;
    background:linear-gradient(180deg, rgba(232,164,23,.26), rgba(232,164,23,.07));
    border:1px solid rgba(232,164,23,.6);
    border-radius:var(--r-pill);
    box-shadow:0 8px 20px rgba(8,3,6,.45), inset 0 1px 0 rgba(255,255,255,.22);
    animation:trophyFloat 3.6s var(--ease) infinite;
}
@keyframes trophyFloat{
    0%,100%{transform:translateX(-50%) translateY(0);}
    50%{transform:translateX(-50%) translateY(-6px);}
}

/* 队位 */
.team-row{
    display:flex;align-items:center;justify-content:space-between;
    gap:8px;
    height:36px;
    padding:0 6px;
    border-radius:var(--r-xs);
    font-size:14px;
    color:var(--ink-800);
    transition:background .2s var(--ease);
}
.team-row + .team-row{border-top:1px solid rgba(255,238,243,.1);}
.team-row span{
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.team-row b{
    font-family:var(--f-num);font-size:17px;font-weight:600;
    color:var(--ink-900);
    padding-left:6px;
}
.team-row:hover{background:var(--paper-2);}
.team-row.winner,.team-row.is-winner{
    background:var(--tone-soft,var(--win-soft));
    font-weight:900;
    color:var(--ink-900);
    box-shadow:inset 3px 0 0 var(--tone,var(--win));
}
.team-row.loser,.team-row.is-loser{color:var(--ink-500);text-decoration:line-through;text-decoration-color:rgba(255,238,243,.3);}
.match-card .vs-tag{
    font-family:var(--f-num);font-size:11px;letter-spacing:.3em;
    text-align:center;color:var(--ink-500);
}
.match-footer{
    position:absolute;left:0;right:0;top:100%;
    display:flex;align-items:center;justify-content:space-between;
    gap:8px;
    padding:8px 4px 0;
}
/* 时间框吃掉剩余宽度，保证「比赛详情」按钮始终单行显示 */
.match-footer .match-time{flex:1 1 auto;min-width:0;}
/* 卡片底部时间占位文字偏暗，调亮一档 */
.match-footer .match-time input::placeholder{color:var(--ink-700);}
.match-time{
    font-family:var(--f-num);font-size:12px;letter-spacing:.1em;
    color:rgba(255,255,255,.45);
}
.match-btn{
    font-size:12px;font-weight:700;
    color:var(--ink-900);
    background:rgba(255,238,243,.14);
    border:1px solid rgba(255,238,243,.26);
    border-radius:var(--r-pill);
    padding:5px 13px;
    cursor:pointer;
    transition:background .2s var(--ease),color .2s var(--ease);
}
.match-btn:hover{background:var(--ember);color:#fff;}

/* =========================================================================
   流式分区
   ========================================================================= */
.bottom-flow-container{
    width:var(--cw);
    display:flex;flex-direction:column;
    padding-bottom:20px;
}
.bottom-flow-container{counter-reset:sec;}
.groups-area{margin-top:6px;}
.info-board-area{margin-top:54px;}
.roster-area{margin-top:58px;}
.rules-area{margin-top:58px;}
.site-footer{margin-top:66px;}

.section-title{
    display:flex;align-items:center;gap:18px;
    margin:0 0 24px;
    text-align:left;
    font-family:var(--f-display);
    font-size:24px;font-weight:900;letter-spacing:.06em;
    color:var(--ink-800);
}
.section-title{counter-increment:sec;}
.section-title::before{
    content:counter(sec,decimal-leading-zero);
    flex:none;
    font-family:var(--f-num);
    font-size:28px;font-weight:700;line-height:.86;
    letter-spacing:.02em;
    color:var(--ember);
}
.section-title::after{
    content:'';flex:1;height:1px;
    background:linear-gradient(90deg,var(--line-2),transparent);
}

/* 管理动作栏（仅管理员可见） */
.global-action-bar{
    display:flex;flex-wrap:wrap;gap:12px;
    margin-bottom:22px;
}
.btn-giant-add{
    flex:1 1 320px;
    height:58px;
    border:0;border-radius:var(--r-md);
    font-size:16px;font-weight:900;letter-spacing:.04em;
    cursor:pointer;
    box-shadow:var(--sh-1);
    transition:transform .22s var(--ease),box-shadow .22s var(--ease);
}
.btn-giant-add:hover{transform:translateY(-2px);box-shadow:var(--sh-2);}
.btn-giant-add:active{transform:translateY(0);}
.global-action-bar .btn-giant-add[onclick="openAddMatchModal()"]{display:none!important;}

/* 小组赛区（当前版本隐藏，仅保留结构） */
.group-tables-wrap{display:none!important;}
.group-box{
    background:var(--paper-0);
    border:1px solid var(--line);
    border-radius:var(--r-lg);
    padding:24px;
    margin-bottom:24px;
    box-shadow:var(--sh-1);
}

/* ========================= 公告栏 ========================= */
.info-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:0;
    background-color:var(--paper-0);
    background-image:var(--board-img);
    background-size:cover;
    background-position:center;
    border:1px solid var(--line);
    border-radius:var(--r-lg);
    box-shadow:var(--sh-2);
    overflow:hidden;
}
.info-card{
    position:relative;
    padding:26px 30px 26px;
    background:transparent;
    border:0;
    border-top:1px solid var(--line);
    border-right:1px solid var(--line);
    font-size:15px;line-height:1.85;
    color:var(--ink-700);
    backdrop-filter:none;
    transition:background .26s var(--ease);
}
.info-card:nth-child(2n){border-right:0;}
.info-card:nth-child(-n+2){border-top:0;}
.info-card:hover{background:var(--paper-1);}
.info-card::before{
    content:'';position:absolute;left:0;top:0;width:3px;height:0;
    background:var(--ember);
    transition:height .3s var(--ease);
}
.info-card:hover::before{height:100%;}
.info-card b{
    display:block;
    margin-bottom:14px;
    font-family:var(--f-display);
    font-size:19px;font-weight:900;letter-spacing:.04em;
    color:var(--ink-900);
}
.info-card ul{margin:0;padding-left:22px;}
.info-card li{margin-bottom:7px;}
.info-card li:last-child{margin-bottom:0;}
.info-card.red-top::before{background:var(--lose);}
.info-card.gold-top::before{background:var(--champ);}
.info-card.red-top b{color:var(--lose);}
.info-card.gold-top b{color:var(--champ);}

/* ========================= 大名单 ========================= */
.roster-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(430px,1fr));
    gap:20px;
}
.team-box{
    background:var(--paper-0);
    border:1px solid var(--line);
    border-radius:var(--r-md);
    box-shadow:var(--sh-1);
    overflow:hidden;
    transition:transform .26s var(--ease),box-shadow .26s var(--ease);
}
.team-box:hover{transform:translateY(-3px);box-shadow:var(--sh-2);}
.team-head{
    display:flex;align-items:center;justify-content:space-between;
    gap:12px;
    padding:18px 22px;
    background:linear-gradient(180deg,var(--paper-1),var(--paper-0));
    border-bottom:1px solid var(--line);
    font-family:var(--f-display);
    font-size:20px;font-weight:900;letter-spacing:.04em;
    color:var(--ink-900);
}
.team-budget{
    font-family:var(--f-num);font-size:13px;font-weight:600;
    letter-spacing:.14em;
    color:var(--champ);
    background:var(--champ-soft);
    border-radius:var(--r-pill);
    padding:5px 13px;
}
.player-row{
    display:flex;align-items:center;justify-content:space-between;
    gap:10px;
    padding:9px 22px;
    border-bottom:1px solid rgba(255,238,243,.07);
    font-size:14.5px;
    transition:background .2s var(--ease);
}
.player-row:nth-child(odd){background:rgba(255,238,243,.022);}
.player-row:last-child{border-bottom:0;}
.player-row:hover{background:var(--paper-1);}
.player-name{font-weight:700;color:var(--ink-800);}
.player-price{
    font-family:var(--f-num);font-size:15px;font-weight:600;
    color:var(--ink-600);letter-spacing:.06em;
}
.draft-tag{
    display:inline-block;margin-left:10px;
    font-size:11px;font-weight:700;letter-spacing:.08em;
    color:var(--ember-ink);
    background:var(--ember-soft);
    border-radius:var(--r-xs);
    padding:2px 7px;
    vertical-align:middle;
}

/* ========================= 细则：分组卡片（双栏） ========================= */
.rules-box{
    counter-reset:rule;
    display:grid;
    grid-template-columns:1fr 1fr;
    column-gap:22px;
    align-items:start;
    padding:0;
    background:none;
    border:0;
    box-shadow:none;
    font-size:15px;line-height:1.9;
    color:var(--ink-700);
}
.rules-col{display:flex;flex-direction:column;gap:22px;min-width:0;}
.rule-group{
    position:relative;
    break-inside:avoid;
    -webkit-column-break-inside:avoid;
    margin:0;
    padding:26px 30px 24px 32px;
    background:var(--paper-0);
    border:1px solid var(--line);
    border-radius:var(--r-lg);
    box-shadow:var(--sh-1);
    transition:transform .26s var(--ease),box-shadow .26s var(--ease);
}
.rule-group:hover{transform:translateY(-2px);box-shadow:var(--sh-2);}
.rule-group::before{
    content:'';position:absolute;left:0;top:26px;width:3px;height:32px;
    border-radius:0 3px 3px 0;
    background:var(--ember);
}
.rule-title{
    counter-increment:rule;
    display:flex;align-items:center;gap:12px;
    margin:0 0 16px;padding:0 0 13px;
    border-bottom:1px solid var(--line);
    font-family:var(--f-display);
    font-size:20px;font-weight:900;letter-spacing:.05em;
    color:var(--ink-900);
}
.rule-title::before{
    content:counter(rule,decimal-leading-zero);
    flex:none;
    font-family:var(--f-num);
    font-size:12px;font-weight:700;line-height:1;
    letter-spacing:.06em;
    color:var(--ember-ink);
    background:var(--ember-soft);
    border-radius:var(--r-xs);
    padding:5px 7px;
}
.rule-list{list-style:none;margin:0;padding:0;}
.rule-item{
    position:relative;
    margin:0 0 11px;
    padding-left:18px;
}
.rule-item:last-child{margin-bottom:0;}
.rule-item::before{
    content:'';position:absolute;left:2px;top:.68em;
    width:6px;height:6px;border-radius:2px;
    background:var(--line-2);
}
.rule-item.is-note{
    padding:11px 14px 11px 30px;
    background:var(--paper-1);
    border-radius:var(--r-sm);
    color:var(--ink-600);
}
.rule-item.is-note::before{left:14px;top:.95em;background:rgba(255,238,243,.35);}
.rule-item.is-danger{
    padding:11px 14px 11px 30px;
    background:rgba(255,92,120,.10);
    border-left:3px solid var(--lose);
    border-radius:0 var(--r-sm) var(--r-sm) 0;
}
.rule-item.is-danger::before{left:14px;top:.95em;background:var(--lose);}
.rule-item.is-gold{
    padding:11px 14px 11px 30px;
    background:rgba(240,180,41,.09);
    border-left:3px solid var(--champ);
    border-radius:0 var(--r-sm) var(--r-sm) 0;
}
.rule-item.is-gold::before{left:14px;top:.95em;background:var(--champ);}
.rules-box b{color:var(--ink-900);}
.rules-box .text-danger{color:var(--lose)!important;font-weight:700;}
.rules-box .text-gold{color:var(--champ)!important;font-weight:700;}
.highlight-text{color:#3fd39f;font-weight:700;}
.danger-text{color:var(--lose);font-weight:700;}
.text-muted{color:var(--ink-500)!important;}

/* ========================= 表（小组赛，隐藏态也保持可用） ========================= */
.tbl-base{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;}
.tbl-base th{
    padding:10px 12px;
    font-family:var(--f-num);font-size:12px;font-weight:600;
    letter-spacing:.18em;text-transform:uppercase;
    color:var(--ink-600);
    background:var(--paper-1);
    border-bottom:1px solid var(--line-2);
}
.tbl-base td{padding:11px 12px;border-bottom:1px solid rgba(255,238,243,.07);}
.tbl-base tbody tr:hover{background:var(--paper-1);}
.tbl-main{background:var(--paper-0);border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line);}
.tbl-tie td{color:var(--ink-500);font-style:italic;}
.sub-header{
    font-family:var(--f-num);font-size:11px;letter-spacing:.24em;text-transform:uppercase;
    color:var(--ink-500);
}
.elimination-zone{background:rgba(255,92,120,.08);}
.col-w-name,.col-w-stat,.col-w-rank,.col-w-action{width:1%;white-space:nowrap;}
.rank-badge{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:24px;height:24px;
    border-radius:var(--r-xs);
    font-family:var(--f-num);font-size:13px;font-weight:600;
    color:var(--ink-600);background:var(--paper-2);
}
.rank-1{background:rgba(240,180,41,.20);color:#f6c667;}
.rank-2{background:rgba(255,238,243,.12);color:#cfe0ee;}
.rank-3{background:rgba(200,124,72,.20);color:#e8a97c;}
.mj-badge{
    font-family:var(--f-num);font-size:11px;font-weight:600;
    letter-spacing:.16em;
    color:var(--win);background:var(--win-soft);
    border-radius:var(--r-xs);padding:3px 8px;
}
.tier-bg-0{background:linear-gradient(90deg,rgba(184,121,26,.10),transparent);}
.tier-bg-1{background:linear-gradient(90deg,rgba(15,111,168,.09),transparent);}
.tier-bg-2{background:linear-gradient(90deg,rgba(214,57,87,.09),transparent);}

/* ========================= 通用控件 ========================= */
.btn-action{
    padding:9px 18px;
    font-size:14px;font-weight:700;
    color:var(--ink-900);
    background:var(--paper-1);
    border:1px solid var(--line-2);
    border-radius:var(--r-sm);
    cursor:pointer;
    transition:transform .2s var(--ease),box-shadow .2s var(--ease),filter .2s var(--ease);
}
.btn-action:hover{transform:translateY(-1px);box-shadow:var(--sh-1);filter:brightness(1.04);}
.btn-action:active{transform:translateY(0);}
.btn-action-sm{padding:5px 11px;font-size:12px;}
.candy-input,.admin-input,.form-control{
    padding:9px 12px;
    font-family:var(--f-body);font-size:14px;
    color:var(--ink-900);
    background:var(--paper-0);
    border:1px solid var(--line-2);
    border-radius:var(--r-sm);
    outline:none;
    transition:border-color .2s var(--ease),box-shadow .2s var(--ease);
}
.candy-input:focus,.admin-input:focus,.form-control:focus{
    border-color:var(--ember);
    box-shadow:0 0 0 3px rgba(255,92,120,.22);
}
.form-group{margin-bottom:16px;}
.form-group label{
    display:block;margin-bottom:7px;
    font-size:13px;font-weight:700;letter-spacing:.04em;
    color:var(--ink-700);
}

/* ========================= 弹窗 ========================= */
.modal-overlay{
    position:fixed;inset:0;z-index:10000;
    display:none;align-items:center;justify-content:center;
    padding:40px;
    background:rgba(24,8,16,.62);
    backdrop-filter:blur(6px);
    -webkit-backdrop-filter:blur(6px);
}
.modal-content{
    position:relative;
    width:100%;max-width:620px;max-height:86vh;
    overflow-y:auto;
    padding:36px 40px;
    background:var(--paper-0);
    border:1px solid var(--line);
    border-radius:var(--r-lg);
    box-shadow:var(--sh-3);
}
.modal-content h3{
    margin-top:0;
    font-family:var(--f-display)!important;
    font-weight:900;letter-spacing:.04em;
    color:var(--ink-900)!important;
    border-bottom:1px solid var(--line)!important;
    padding-bottom:16px;
}
.modal-close{
    position:absolute;right:18px;top:14px;
    width:34px;height:34px;
    display:flex;align-items:center;justify-content:center;
    font-size:22px;line-height:1;
    color:var(--ink-600);
    background:transparent;
    border:0;border-radius:50%;
    cursor:pointer;
    transition:background .2s var(--ease),color .2s var(--ease);
}
.modal-close:hover{background:var(--paper-2);color:var(--ink-900);}
#imageViewerModal .modal-content{background:transparent;border:0;box-shadow:none;padding:0;}
#viewerImg{
    max-width:86vw;max-height:84vh;
    border-radius:var(--r-md);
    box-shadow:var(--sh-3);
}
.vip-hero{
    padding:20px 24px;
    margin-bottom:22px;
    text-align:center;
    background:linear-gradient(180deg,rgba(240,180,41,.12),rgba(240,180,41,.04));
    border:1px solid rgba(232,164,23,.4);
    border-radius:var(--r-md);
}
.name-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;}
.name-tag{
    padding:7px 16px;
    font-size:14px;font-weight:700;
    color:var(--ink-800);
    background:var(--paper-1);
    border:1px solid var(--line);
    border-radius:var(--r-pill);
}

/* 对局详情行 */
.detail-row{
    display:flex;align-items:center;gap:14px;
    padding:12px 14px;
    border-bottom:1px solid rgba(255,238,243,.08);
}
.detail-row:hover{background:var(--paper-1);}
.detail-img-preview{
    font-family:var(--f-num);font-size:12px;letter-spacing:.1em;
    color:var(--champ);cursor:pointer;
}
.detail-btn-action,.detail-btn-del,.detail-btn-small{
    padding:5px 11px;
    font-size:12px;font-weight:700;
    border-radius:var(--r-sm);
    border:1px solid var(--line-2);
    background:var(--paper-0);
    cursor:pointer;
    transition:background .2s var(--ease),color .2s var(--ease);
}
/* 小按钮原未设文字色，深色底上会继承浏览器默认黑字（黑压黑几乎不可读）→ 统一亮字；带内联 color 的实例不受影响 */
.detail-btn-small{color:var(--ink-900);white-space:nowrap;flex:none;}
.detail-btn-del:hover{background:var(--lose);color:#fff;border-color:var(--lose);}

/* ========================= 管理员层 / 回顶 ========================= */
.admin-float{
    position:fixed;right:22px;top:22px;z-index:9998;
    display:flex;align-items:center;gap:8px;
    padding:8px 10px;
    background:rgba(24,8,16,.72);
    border:1px solid rgba(255,255,255,.14);
    border-radius:var(--r-pill);
    box-shadow:var(--sh-2);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
}
.admin-float .admin-input{
    width:120px;height:32px;padding:0 10px;font-size:12.5px;
    color:#fff;
    background:rgba(255,255,255,.09);
    border-color:rgba(255,255,255,.16);
}
.admin-float .admin-input::placeholder{color:rgba(255,255,255,.45);}
.admin-float .btn-action{
    height:32px;padding:0 14px;font-size:12.5px;
    color:#fff;background:var(--ember);border-color:transparent;
}
.back-to-top{
    position:fixed;right:22px;bottom:24px;z-index:9999;
    display:none;align-items:center;justify-content:center;
    height:46px;padding:0 22px;
    font-size:14px;font-weight:700;
    color:#fff;
    background:linear-gradient(120deg,var(--ember),var(--ember-deep));
    border:1px solid rgba(255,255,255,.14);
    border-radius:var(--r-pill);
    box-shadow:var(--sh-2);
    cursor:pointer;
    transition:background .22s var(--ease),transform .22s var(--ease);
}
.back-to-top:hover{filter:brightness(1.08);transform:translateY(-2px);}

/* ---- 背景音乐开关（固定右下，位于“回到顶部”上方；未检测到 candy_bracket.mp3 时隐藏）---- */
.bgm-toggle{
    position:fixed;right:22px;bottom:84px;z-index:9999;
    display:flex;align-items:center;justify-content:center;
    height:38px;padding:0 18px;
    font-size:12.5px;font-weight:700;letter-spacing:.08em;
    color:rgba(255,238,243,.9);
    background:rgba(28,15,24,.88);
    border:1px solid rgba(255,255,255,.16);
    border-radius:var(--r-pill);
    box-shadow:var(--sh-2);
    cursor:pointer;
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    transition:border-color .22s var(--ease),color .22s var(--ease),opacity .22s var(--ease);
}
.bgm-toggle[hidden]{display:none;}
.bgm-toggle:hover{color:#fff;border-color:rgba(255,95,109,.55);}
.bgm-toggle.is-off{opacity:.6;}

/* ========================= 页脚 ========================= */
.site-footer{margin-top:20px;}
.footer-line{
    width:100%;height:1px;
    background:linear-gradient(90deg,transparent,var(--line-2) 20%,var(--line-2) 80%,transparent);
}
.footer-content{
    display:flex;align-items:center;justify-content:space-between;gap:24px;
    padding:24px 8px;
}
.footer-text{
    font-family:var(--f-num);
    font-size:12.5px;font-weight:500;
    letter-spacing:.2em;text-transform:uppercase;
    color:var(--ink-500);
}
.footer-text span{color:var(--ember-ink);}
.footer-beian a{
    font-size:12.5px;letter-spacing:.06em;
    color:var(--ink-600);
    border-bottom:1px solid var(--line-2);
    padding-bottom:2px;
    transition:color .2s var(--ease),border-color .2s var(--ease);
}
.footer-beian a:hover{color:var(--ember-ink);border-color:var(--ember-ink);}

/* =========================================================================
   对战树绝对坐标（沿用原几何，勿改：SVG 连线依赖 offsetLeft/offsetTop）
   ========================================================================= */
[data-id="lb_r1_1"]{left:calc(var(--cw) * 360 / 2100);top:500px;}
[data-id="lb_r1_2"]{left:calc(var(--cw) * 360 / 2100);top:800px;}
[data-id="lb_r2_1"]{left:calc(var(--cw) * 640 / 2100);top:500px;}
[data-id="lb_r2_2"]{left:calc(var(--cw) * 640 / 2100);top:800px;}
[data-id="wb_r1_1"]{left:calc(var(--cw) * 920 / 2100);top:100px;}
[data-id="wb_r1_2"]{left:calc(var(--cw) * 920 / 2100);top:320px;}
[data-id="lb_semi"]{left:calc(var(--cw) * 920 / 2100);top:650px;}
[data-id="wb_final"]{left:calc(var(--cw) * 1200 / 2100);top:200px;}
[data-id="lb_final"]{left:calc(var(--cw) * 1200 / 2100);top:650px;}
[data-id="grand_final"]{left:calc(var(--cw) * 1480 / 2100);top:425px;width:260px;height:120px;}
[data-id="champion"]{left:calc(var(--cw) * 1800 / 2100);top:415px;}

/* =========================================================================
   对战树·轮次赛制标识（与「淘汰赛日程安排」公告栏 Bo 口径一致）
   Bo3：胜者组第一轮 / 胜者组决赛 / 败者组半决赛 / 败者组决赛 / 总决赛
   Bo1：败者组第一轮 / 败者组第二轮
   ========================================================================= */
.match-card .match-label::after{
    display:inline-block;
    margin-left:7px;
    padding:1px 5px;
    font-family:var(--f-num);font-style:normal;
    font-size:9.5px;font-weight:700;line-height:1.35;letter-spacing:.08em;
    vertical-align:1px;
    border-radius:var(--r-xs);
}
.match-card[data-id="wb_r1_1"] .match-label::after,
.match-card[data-id="wb_r1_2"] .match-label::after,
.match-card[data-id="wb_final"] .match-label::after,
.match-card[data-id="lb_semi"] .match-label::after,
.match-card[data-id="lb_final"] .match-label::after,
.match-card[data-id="grand_final"] .match-label::after{
    content:'BO3';
    color:#ffc9d6;
    background:rgba(255,92,120,.16);
    border:1px solid rgba(255,92,120,.46);
}
.match-card[data-id="lb_r1_1"] .match-label::after,
.match-card[data-id="lb_r1_2"] .match-label::after,
.match-card[data-id="lb_r2_1"] .match-label::after,
.match-card[data-id="lb_r2_2"] .match-label::after{
    content:'BO1';
    color:rgba(255,238,243,.80);
    background:rgba(255,238,243,.06);
    border:1px solid rgba(255,238,243,.22);
}

/* ========================= 卡片内元素（JS 动态生成） ========================= */
.team-name{
    flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
    font-weight:700;font-size:14px;color:var(--ink-800);
}
.team-row.winner .team-name{color:var(--ink-900);}
.admin-select{
    width:100%;height:26px;
    font-family:var(--f-body);font-size:13px;font-weight:600;
    color:var(--ink-900);background:var(--paper-1);
    border:1px solid var(--line-2);border-radius:var(--r-xs);
    outline:none;
}
.admin-select:focus{border-color:var(--ember);}
.btn-advance{
    flex:none;width:22px;height:22px;margin-left:8px;
    display:flex;align-items:center;justify-content:center;
    font-size:12px;font-weight:700;line-height:1;
    color:#fff;background:var(--ember);
    border-radius:50%;cursor:pointer;
    transition:transform .2s var(--ease),background .2s var(--ease);
}
.btn-advance:hover{transform:scale(1.14);background:var(--ember-deep);}
.match-time{display:flex;align-items:center;}
.match-time input{
    width:100%;height:28px;padding:0 10px;
    font-family:var(--f-num);font-size:12.5px;letter-spacing:.06em;
    color:var(--ink-800);
    background:rgba(255,255,255,.10);
    border:1px solid rgba(255,238,243,.16);
    border-radius:var(--r-pill);
    outline:none;text-align:center;
}
.match-time input:focus{border-color:var(--ember);}
.match-time input:disabled{opacity:.7;cursor:default;}
.match-time input::placeholder{color:var(--ink-500);}
.champion-card .team-row{
    height:70px;justify-content:center;
    font-family:var(--f-display);font-size:24px;font-weight:900;
    letter-spacing:.08em;
    background:rgba(232,164,23,.10);
    border-top:1px solid rgba(232,164,23,.28);
}
.champion-card .team-row:hover{background:rgba(232,164,23,.16);}

/* ========================= 小组件（去 emoji 后的替代标记） ========================= */
.cap-chip{
    display:inline-flex;align-items:center;justify-content:center;
    width:16px;height:16px;margin-right:7px;
    font-family:var(--f-num);
    font-size:10px;font-weight:700;line-height:1;letter-spacing:.04em;
    color:#fff;
    background:linear-gradient(180deg,var(--ember),var(--ember-deep));
    border-radius:4px;
    vertical-align:middle;
}
.edit-hint{
    display:inline-block;margin-left:7px;
    padding:1px 5px;
    font-family:var(--f-body);font-style:normal;
    font-size:10px;letter-spacing:.06em;
    color:var(--ink-500);
    border:1px dashed rgba(255,238,243,.28);
    border-radius:4px;
    vertical-align:middle;
}
.win-mark{
    flex:none;
    padding:2px 6px;
    font-family:var(--f-body);
    font-size:10px;font-weight:700;letter-spacing:.06em;
    color:#f6c667;
    background:rgba(240,180,41,.20);
    border-radius:4px;
}
.detail-empty{
    padding:30px;
    text-align:center;
    font-size:13.5px;letter-spacing:.04em;
    color:var(--ink-500);
}

/* ========================= 管理员动作按钮配色 ========================= */
.btn-giant-add.ga-rose{background:linear-gradient(120deg,var(--ember) 0%,#a81b3c 100%);color:#fff;}
.btn-giant-add.ga-gold{background:linear-gradient(120deg,#e3a92c 0%,#bd7d12 100%);color:#3a2205;}
.btn-giant-add.ga-jade{background:linear-gradient(120deg,#1c8f6a 0%,#0f6b4e 100%);color:#fff;}
.btn-giant-add.ga-rose:hover,.btn-giant-add.ga-gold:hover,.btn-giant-add.ga-jade:hover{filter:brightness(1.06);}

/* ========================= 公告卡标题（h4 才是真实标签） ========================= */
.info-card{--tick:var(--ember);}
.info-card.red-top{--tick:var(--lose);}
.info-card.gold-top{--tick:var(--champ);}
.info-card h4{
    display:flex;align-items:center;gap:10px;
    margin:0 0 16px;
    padding-bottom:10px;
    font-family:var(--f-display);
    font-size:17px;font-weight:800;letter-spacing:.06em;
    color:var(--ink-900);
    border-bottom:1px solid var(--line);
}
.info-card h4::before{
    content:'';flex:none;width:9px;height:9px;border-radius:2px;
    background:var(--tick);
}
.info-card p{
    display:flex;align-items:baseline;justify-content:space-between;gap:14px;
    margin:0 0 7px;
    padding-bottom:7px;
    border-bottom:1px dashed rgba(255,238,243,.1);
}
.info-card p:last-child{margin-bottom:0;padding-bottom:0;border-bottom:0;}
.info-card p .highlight-text{
    margin-left:auto;flex:none;
    background:rgba(63,211,159,.15);
    border-radius:var(--r-xs);
    padding:2px 9px;
    font-family:var(--f-num);font-size:14px;font-weight:700;
    letter-spacing:.04em;
}
.info-card p .danger-text{
    margin-left:auto;flex:none;
    background:rgba(255,92,120,.15);
    border-radius:var(--r-xs);
    padding:2px 9px;
    font-family:var(--f-num);font-size:13.5px;
}
.info-card p.danger-text{
    display:block;
    margin:14px 0 0;padding:10px 13px;
    background:rgba(255,92,120,.12);
    border-left:3px solid var(--lose);
    border-radius:var(--r-sm);
    border-bottom:0;
}
.info-card p.highlight-text{
    display:block;
    margin:14px 0 0;padding:11px 14px;
    background:rgba(63,211,159,.12);
    border-left:3px solid #3fd39f;
    border-radius:var(--r-sm);
}

/* ============ 公告栏·赛程条目：紧凑多列网格（瑞士轮 / 淘汰赛） ============ */
.info-card .sched-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:8px 12px;
    margin:0 0 10px;
}
/* 带 Bo 标注的网格：行内是「轮次+Bo+日期」三件套，列宽加大，避免轮次名被省略号截断 */
.info-card .sched-grid.has-bo{
    grid-template-columns:repeat(auto-fit,minmax(272px,1fr));
}
.info-card .sched-item{
    display:flex;align-items:center;justify-content:space-between;gap:4px;
    min-width:0;
    padding:5px 6px;
    background:rgba(255,255,255,.035);
    border:1px solid var(--line);
    border-radius:var(--r-xs);
    transition:background .22s var(--ease),border-color .22s var(--ease);
}
.info-card .sched-item:hover{background:rgba(255,255,255,.07);border-color:var(--line-2);}
.info-card .sched-item b{
    display:inline-block;
    margin:0;
    flex:0 1 auto;min-width:0;
    font-family:var(--f-display);
    font-size:12.5px;font-weight:800;letter-spacing:.02em;line-height:1.4;
    color:var(--ink-900);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.info-card .sched-item .highlight-text{
    margin-left:0;flex:none;
    background:rgba(63,211,159,.15);
    border-radius:var(--r-xs);
    padding:2px 7px;
    font-family:var(--f-num);
    font-size:12px;font-weight:700;letter-spacing:.02em;line-height:1.4;
    white-space:nowrap;
}
/* 赛程条目·赛制标注：Bo1 / Bo3（淘汰赛为混排赛制，逐条标注） */
.info-card .sched-item i.bo{
    display:inline-block;flex:none;
    margin:0 auto 0 0;
    padding:0 4px;
    font-family:var(--f-num);font-style:normal;
    font-size:10px;font-weight:700;line-height:1.45;letter-spacing:.02em;
    color:rgba(255,238,243,.78);
    background:rgba(255,238,243,.05);
    border:1px solid rgba(255,238,243,.2);
    border-radius:var(--r-xs);
    white-space:nowrap;
}
.info-card .sched-item i.bo.bo3{
    color:#ffc9d6;
    background:rgba(255,92,120,.13);
    border-color:rgba(255,92,120,.42);
}
/* 总决赛日：金色 --champ 强调 */
.info-card .sched-item.champ{border-color:rgba(240,180,41,.35);background:rgba(240,180,41,.07);}
.info-card .sched-item.champ:hover{background:rgba(240,180,41,.12);border-color:rgba(240,180,41,.55);}
.info-card .sched-item.champ b{color:var(--champ);}
.info-card .sched-item.champ .highlight-text{color:var(--champ);background:var(--champ-soft);}
/* 说明：版心为固定 2100px 流式容器（卡片内容宽约 988px），auto-fit + minmax(200px)
   在此宽度下稳定落为 4 列，无需视图层媒体查询，避免整体缩放（#scale-wrapper）下
   媒体查询按视口宽度误触发导致列数抖动。 */

.info-card ul{list-style:none;margin:0;padding:0;}
.info-card li{
    position:relative;
    margin:0 0 6px;padding-left:16px;
}
.info-card li:last-child{margin-bottom:0;}
.info-card li::before{
    content:'';position:absolute;left:0;top:.62em;
    width:6px;height:6px;border-radius:2px;background:rgba(255,92,120,.50);
}
.info-card b{color:var(--ink-900);}

/* ========================= 弹窗补充 ========================= */
.modal-subtitle{
    margin:0 0 14px;
    text-align:center;
    font-family:var(--f-display);
    font-size:15px;font-weight:800;letter-spacing:.14em;
    color:var(--ink-700);
}
.btn-action.btn-block{width:100%;padding:12px;font-size:16px;margin-top:10px;justify-content:center;}
.admin-on{
    font-family:var(--f-num);
    font-size:12.5px;letter-spacing:.18em;
    color:#3fbf92;
}
/* ========================= 无障碍 / 动效 ========================= */
@media (prefers-reduced-motion:reduce){
    *,*::before,*::after{
        animation-duration:.001ms!important;
        animation-iteration-count:1!important;
        transition-duration:.001ms!important;
    }
    /* 2026-09-15 修复：原在此禁用 #scale-wrapper 的 transform，会让开启「减少动效」的用户
       整版缩放失效、2100px 版心直接溢出破版；整版缩放属于布局而非动效，不应被该偏好关闭 */
}

/* ========================= 深色表单/选项兜底（全站深底统一） ========================= */
select option{background:#241320;color:#fff3f0;}
input::placeholder,textarea::placeholder{color:var(--ink-500);opacity:1;}


/* =========================================================================
   队伍成员悬停面板 · team_roster_pop.js
   悬停【淘汰赛卡片队名 / 小组表战队名 / 瑞士轮队伍名】时弹出该队大名单
   全部取用本页既有 token（深底 / 余烬红 / 米金发丝线 / 语义色），不引入新配色
   ========================================================================= */
.trp{
    position:fixed;left:0;top:0;z-index:8000;
    width:272px;
    display:flex;flex-direction:column;
    max-height:min(72vh,470px);
    border-radius:var(--r-md);
    background:linear-gradient(180deg, rgba(40,23,36,.97) 0%, rgba(24,13,22,.98) 58%, rgba(17,9,15,.99) 100%);
    border:1px solid var(--line-2);
    box-shadow:var(--sh-2), 0 0 0 1px rgba(255,92,120,.10);
    color:var(--ink-700);
    font-family:var(--f-body);
    transform-origin:top left;
    opacity:0;visibility:hidden;
    transition:opacity .16s var(--ease), visibility .16s var(--ease);
    pointer-events:auto;
}
.trp.is-on{opacity:1;visibility:visible;}
.trp::before{
    content:'';position:absolute;inset:5px;border-radius:calc(var(--r-md) - 4px);
    border:1px solid var(--brass-line, rgba(232,200,138,.13));
    pointer-events:none;
}
.trp-top{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:12px 15px 9px;
}
.trp-kicker{
    font-family:var(--f-num);font-size:10px;font-weight:600;
    letter-spacing:.24em;text-transform:uppercase;
    color:var(--ink-500);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.trp-budget{
    flex:none;
    font-family:var(--f-num);font-size:11.5px;font-weight:600;letter-spacing:.10em;
    color:var(--champ);background:var(--champ-soft);
    border:1px solid var(--champ-line, rgba(240,180,41,.34));
    border-radius:var(--r-pill);padding:2px 9px;
}
.trp-name{
    padding:0 15px 11px;
    font-family:var(--f-display);font-size:17px;font-weight:900;line-height:1.25;letter-spacing:.02em;
    color:var(--ink-900);
    border-bottom:1px solid var(--line);
}
.trp-body{overflow:auto;padding:4px 0 5px;max-height:min(52vh,340px);}
.trp-row{display:flex;align-items:center;gap:9px;padding:6px 15px;font-size:13px;}
.trp-row:nth-child(odd){background:rgba(255,238,243,.022);}
.trp-tier{
    flex:none;display:inline-flex;align-items:center;justify-content:center;
    min-width:24px;height:18px;padding:0 5px;
    font-family:var(--f-num);font-size:11px;font-weight:600;letter-spacing:.08em;
    border-radius:var(--r-xs);
    color:var(--ink-600);background:rgba(255,238,243,.06);
}
/* 档位配色纪律：仅顶级 S 用冠军金、A 用品牌余烬红做强调，其余走中性灰阶，
   避免抢占「胜者组蓝 / 败者组红 / 顺位紫」的语义色含义 */
.trp-tier[data-tier="S"]{color:#f6c667;background:rgba(240,180,41,.18);}
.trp-tier[data-tier="A"]{color:var(--ember-ink);background:var(--ember-soft);}
.trp-tier[data-tier="B"]{color:var(--ink-700);background:rgba(255,238,243,.07);}
.trp-tier[data-tier="C"]{color:var(--ink-600);background:rgba(255,238,243,.05);}
.trp-tier[data-tier="D"]{color:var(--ink-500);background:rgba(255,238,243,.04);}
.trp-pname{
    flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:7px;
    font-weight:700;color:var(--ink-800);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.trp-cap{
    flex:none;display:inline-flex;align-items:center;justify-content:center;
    width:16px;height:16px;
    font-family:var(--f-num);font-size:10px;font-weight:700;font-style:normal;line-height:1;letter-spacing:.04em;
    color:#fff;background:linear-gradient(180deg,var(--ember),var(--ember-deep));
    border-radius:4px;
}
.trp-draft{
    flex:none;
    font-size:11px;font-weight:700;letter-spacing:.08em;
    color:var(--ember-ink);background:var(--ember-soft);
    border-radius:var(--r-xs);padding:2px 7px;
}
.trp-price{
    flex:none;
    font-family:var(--f-num);font-size:13px;font-weight:600;letter-spacing:.06em;
    color:var(--ink-600);
}
.trp-empty{padding:15px 15px 17px;font-size:12.5px;line-height:1.6;color:var(--ink-500);text-align:center;}
.trp-foot{
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:8px 15px 10px;
    border-top:1px solid var(--line);
    font-family:var(--f-num);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
    color:var(--ink-500);
}
/* 已命中大名单的队伍：只给一个轻量悬停提示，不改动既有视觉 */
.trp-has{cursor:help;}
.trp-has .sb-name{cursor:help;}
@media (max-width:600px){.trp{width:232px;}}

/* ==================== 赛事直播（直播员 / 陪伴员 / 直播间 + 饭票结算） ==================== */
.live-btn-small{
  display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:24px; padding:0; margin-right:6px; border-radius:var(--r-xs);
  background:rgba(255,238,243,.06); color:var(--ink-600);
  border:1px solid var(--line-2); cursor:pointer; transition:all .18s var(--ease);
}
.live-btn-small:hover{background:rgba(255,238,243,.12); color:var(--ink-900);}
.live-btn-small.is-live{
  color:#ff5c78; background:rgba(255,92,120,.14); border-color:rgba(255,92,120,.50);
  box-shadow:0 0 0 1px rgba(255,92,120,.16), 0 0 12px rgba(255,92,120,.26);
}
.live-btn-small.is-live:hover{background:rgba(255,92,120,.22); color:#ff8ba0;}
.live-btn-small.is-live .live-rec-dot{animation:liveCamPulse 1.15s ease-in-out infinite; transform-origin:center;}
@keyframes liveCamPulse{0%,100%{opacity:1;}50%{opacity:.22;}}

.live-head{display:flex; align-items:center; gap:8px; margin:14px 0 10px; text-align:left;}
.live-led{width:9px; height:9px; border-radius:50%; background:var(--ink-500); box-shadow:0 0 0 3px rgba(255,238,243,.05);}
.live-led.on{background:#ff5c78; box-shadow:0 0 0 3px rgba(255,92,120,.18); animation:liveCamPulse 1.2s ease-in-out infinite;}
.live-head-title{font-weight:800; color:var(--ink-900); font-size:13px;}
.live-tag{margin-left:auto; font-size:11.5px; font-weight:700; padding:2px 9px; border-radius:var(--r-pill);
  background:rgba(255,92,120,.14); color:#ff8ba0; border:1px solid rgba(255,92,120,.40);}
.live-tag.dim{background:rgba(255,238,243,.05); color:var(--ink-600); border-color:var(--line);}

.live-form{display:flex; flex-direction:column; gap:4px; text-align:left;}
.live-form label{font-size:11.5px; font-weight:700; color:var(--ink-600); margin-top:7px;}
.live-hint{font-size:11px; color:var(--ink-500); line-height:1.55; margin:2px 0 2px;}
.live-settle{margin-top:15px; padding-top:13px; border-top:1px dashed var(--line-2);}
.live-settle-title{font-weight:800; color:var(--champ); font-size:12.5px; margin-bottom:5px;}
.live-settled{margin-top:9px; padding:9px 12px; border-radius:var(--r-sm); text-align:center;
  font-size:12px; font-weight:700; background:var(--win-soft); border:1px solid rgba(92,184,234,.34); color:var(--ink-800);}

.live-view{text-align:left;}
.live-row{display:flex; align-items:center; justify-content:space-between; padding:10px 2px; border-bottom:1px dashed var(--line);}
.live-row span{color:var(--ink-600); font-size:12.5px;}
.live-row b{color:var(--ink-900); font-size:14.5px;}
.live-enter{display:block; margin-top:14px; padding:11px; text-align:center; border-radius:var(--r-sm);
  font-size:13px; font-weight:800; text-decoration:none;
  background:linear-gradient(180deg, rgba(255,92,120,.22), rgba(255,92,120,.12));
  border:1px solid rgba(255,92,120,.48); color:#ffb3c1; transition:all .18s var(--ease);}
.live-enter:hover{background:rgba(255,92,120,.28); color:#fff3f0;}
.live-enter.is-disabled{background:rgba(255,238,243,.04); border-color:var(--line); color:var(--ink-500);
  font-weight:600; cursor:not-allowed;}
