/* =========================================================
   办赛服务模块 · 轻量化科技风
   ========================================================= */

.host-page{--h-blue:#0066FF;--h-cyan:#00D4FF;--h-pink:#FF2D78;--h-gold:#FFB800;--h-bg:#FFFFFF;--h-bg2:#F5F7FB;--h-line:#E8ECF2;--h-ink:#111827;--h-ink2:#4B5563;--h-muted:#6B7280}

/* 办赛服务 HUB —— 三模块入口（与首页 matrix-card 同源） */
.hub-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.hub-card{
  display:block;background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:30px 26px;
  box-shadow:0 4px 16px rgba(0,32,128,.06);transition:all .25s var(--ease);text-decoration:none;color:inherit;
}
.hub-card:hover{transform:translateY(-6px);box-shadow:0 16px 40px rgba(0,32,128,.12);border-color:var(--h-blue)}
.hub-card .hc-no{font-size:12px;font-weight:700;letter-spacing:1.5px;color:var(--h-muted);margin-bottom:14px}
.hub-card .hc-ic{width:56px;height:56px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:28px;margin-bottom:16px;background:#F0F7FF}
.hub-card:nth-child(2) .hc-ic{background:#E6FAFF}
.hub-card:nth-child(3) .hc-ic{background:#FFF0F5}
.hub-card .hc-title{font-size:20px;font-weight:700;color:var(--h-ink);margin-bottom:10px}
.hub-card .hc-desc{font-size:14px;color:var(--h-muted);line-height:1.7;margin-bottom:20px;min-height:84px}
.hub-card .hc-go{display:inline-flex;align-items:center;gap:6px;font-weight:700;color:var(--h-blue);font-size:14px;transition:gap .2s}
.hub-card:hover .hc-go{gap:10px}

/* HUB 区块标题 + 内容卡 */
.host-sec{max-width:1200px;margin:0 auto;padding:0 24px 40px}
.host-sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.host-sec-head h2{font-size:24px;font-weight:800;color:var(--h-ink);display:inline-flex;align-items:center;gap:10px}
.host-sec-head h2::before{content:"";width:8px;height:28px;border-radius:4px;background:linear-gradient(180deg,var(--h-blue),var(--h-cyan))}
.host-sec-head .more{font-weight:700;color:var(--h-blue);font-size:14px}
.host-sec-head .more:hover{text-decoration:underline}
.console-block{background:#fff;border:1px solid var(--h-line);border-radius:14px;padding:18px 22px;box-shadow:0 4px 16px rgba(0,32,128,.05);margin-bottom:12px}
.ev-status{display:inline-flex;align-items:center;height:26px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:700}
.ev-status.live{background:#E6FFFA;color:#00A8A8}
.ev-status.soon{background:#E6FAFF;color:#0099AA}
.ev-status.done{background:var(--bg-2);color:var(--h-muted)}
.ev-review{display:inline-flex;align-items:center;height:26px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:700;background:#FFF4E6;color:var(--orange)}

.hub-boards{max-width:1200px;margin:0 auto;padding:40px 24px}
.hub-boards-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:40px}
.hub-board{
  background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:28px;box-shadow:0 4px 16px rgba(0,32,128,.06);transition:all .25s;
}
.hub-board:hover{transform:translateY(-6px);box-shadow:0 12px 32px rgba(0,32,128,.1);border-color:#D6E4FF}
.hub-board .hb-icon{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:16px;background:#F0F7FF}
.hub-board:nth-child(2) .hb-icon{background:#E6FAFF}
.hub-board:nth-child(3) .hb-icon{background:#FFF0F5}
.hub-board h3{font-size:18px;font-weight:700;color:var(--h-ink);margin-bottom:8px}
.hub-board p{font-size:14px;color:var(--h-muted);line-height:1.7;margin-bottom:18px;min-height:72px}

.hub-section-title{font-size:22px;font-weight:700;color:var(--h-ink);margin-bottom:20px;display:flex;align-items:center;gap:10px}
.hub-section-title::before{content:"";width:6px;height:22px;border-radius:3px;background:linear-gradient(180deg,var(--h-blue),var(--h-cyan))}

/* 约战大厅 */
.match-hall .mh-hero{background:linear-gradient(135deg,#F0F7FF,#fff);padding:50px 0;text-align:center;border-bottom:1px solid var(--h-line)}
.match-hall .mh-hero h1{font-size:34px;font-weight:800;color:var(--h-ink);margin-bottom:10px}
.match-hall .mh-hero p{color:var(--h-ink2);font-size:15px;margin-bottom:24px}
.match-hall .filters{
  max-width:1200px;margin:0 auto;padding:24px;display:flex;gap:12px;flex-wrap:wrap;align-items:center;
}
.match-hall .filters select,.match-hall .filters input{
  height:40px;padding:0 14px;border:1px solid var(--h-line);border-radius:8px;background:#fff;color:var(--h-ink);font-size:13px;
}
.match-list{max-width:1200px;margin:0 auto;padding:0 24px 40px;display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.match-card{
  background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:22px;box-shadow:0 4px 16px rgba(0,32,128,.05);transition:all .2s;
}
.match-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,32,128,.1)}
.match-card .mc-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
.match-card h4{font-size:17px;font-weight:700;color:var(--h-ink);margin:0}
.match-card .mc-meta{font-size:13px;color:var(--h-muted);margin-bottom:10px}
.match-card .mc-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.match-card .mc-tags span{height:24px;padding:0 10px;border-radius:999px;background:#F5F7FB;color:var(--h-ink2);font-size:12px;display:flex;align-items:center}

/* 知识库 */
.kb-page{display:grid;grid-template-columns:240px 1fr;gap:24px;max-width:1200px;margin:0 auto;padding:28px 24px}
.kb-sidebar{background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:20px;box-shadow:0 4px 16px rgba(0,32,128,.05);height:fit-content}
.kb-sidebar h4{font-size:15px;font-weight:700;color:var(--h-ink);margin-bottom:14px}
.kb-sidebar a{display:block;padding:10px 12px;border-radius:8px;color:var(--h-ink2);font-size:14px;margin-bottom:4px;transition:all .15s}
.kb-sidebar a:hover,.kb-sidebar a.active{background:#F0F7FF;color:var(--h-blue)}
.kb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.kb-card{background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:22px;box-shadow:0 4px 16px rgba(0,32,128,.05);transition:all .2s}
.kb-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,32,128,.1)}
.kb-card .kb-icon{width:44px;height:44px;border-radius:12px;background:#F0F7FF;display:flex;align-items:center;justify-content:center;font-size:22px;margin-bottom:14px}
.kb-card h4{font-size:16px;font-weight:700;color:var(--h-ink);margin-bottom:8px}
.kb-card p{font-size:13px;color:var(--h-muted);line-height:1.6;margin-bottom:14px}

/* 控制台 · B端浅色 */
.console-wrap{display:grid;grid-template-columns:220px 1fr;gap:24px;max-width:1200px;margin:0 auto;padding:28px 24px}
.console-side{background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:16px;box-shadow:0 4px 16px rgba(0,32,128,.05);height:fit-content}
.console-side a{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:10px;color:var(--h-ink2);font-weight:600;font-size:14px;margin-bottom:4px}
.console-side a:hover{background:#F5F7FB;color:var(--h-blue)}
.console-side a.active{background:#F0F7FF;color:var(--h-blue)}
.console-main{background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:28px;box-shadow:0 4px 16px rgba(0,32,128,.05);min-height:500px}
.console-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}
.console-kpi .kpi-card{background:linear-gradient(135deg,#F0F7FF,#fff);border:1px solid var(--h-line);border-radius:14px;padding:18px;text-align:center}
.console-kpi .kpi-card .num{font-size:28px;font-weight:800;color:var(--h-blue)}
.console-kpi .kpi-card .lbl{font-size:13px;color:var(--h-muted);margin-top:4px}

/* 公开赛事页 */
.event-page .event-hero{
  background:linear-gradient(135deg,#F0F7FF,#E6FAFF);padding:50px 0;border-bottom:1px solid var(--h-line);
}
.event-page .event-hero .container{max-width:1200px;margin:0 auto;padding:0 24px}
.event-page .event-hero h1{font-size:34px;font-weight:800;color:var(--h-ink);margin-bottom:12px}
.event-page .event-meta{display:flex;gap:16px;flex-wrap:wrap;color:var(--h-ink2);font-size:14px}
.event-page .event-body{max-width:1200px;margin:0 auto;padding:28px 24px;display:grid;grid-template-columns:1fr 320px;gap:24px}
.event-page .event-main{background:#fff;border:1px solid var(--h-line);border-radius:16px;padding:28px;box-shadow:0 4px 16px rgba(0,32,128,.05)}
.event-page .event-side{display:flex;flex-direction:column;gap:16px}

/* 平台能力数据背书带（办赛服务特性 · 专业/可信赖/能力感） */
.host-cap{background:linear-gradient(135deg,var(--blue),var(--blue-d));padding:50px 0;color:#fff}
.host-cap .container{max-width:var(--container);margin:0 auto;padding:0 24px}
.host-cap-inner{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;text-align:center}
.hc-stat .hc-num{font-size:42px;font-weight:900;line-height:1;letter-spacing:-1.5px}
.hc-stat .hc-num span{font-size:22px;font-weight:800;margin-left:2px}
.hc-stat .hc-lbl{font-size:14px;margin-top:12px;opacity:.88}
.host-cap-note{text-align:center;margin-top:24px;font-size:14px;opacity:.92}

/* ====== 办赛后台 · 控制台子样式 ====== */
.console-side .cs-title{font-size:15px;font-weight:800;color:var(--h-ink);padding:4px 14px 12px}
.console-side button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:none;background:transparent;padding:11px 14px;border-radius:10px;color:var(--h-ink2);font-weight:600;font-size:14px;margin-bottom:4px;cursor:pointer;transition:all .15s;font-family:inherit}
.console-side button:hover{background:#F5F7FB;color:var(--h-blue)}
.console-side button.active{background:#F0F7FF;color:var(--h-blue);box-shadow:inset 3px 0 0 var(--h-blue)}
.console-side .cs-link{color:var(--h-ink2);font-weight:600}
.console-side .cs-divider{height:1px;background:var(--h-line);margin:12px 6px}
.console-side .cs-foot{margin-top:14px;padding:12px 14px;font-size:12px;color:var(--h-muted);line-height:1.7;border-top:1px dashed var(--h-line)}
.console-side .cs-foot a{color:var(--h-blue)}
.role-badge{display:inline-block;margin-top:4px;padding:2px 8px;border-radius:999px;background:#E6FFED;color:var(--green);font-size:11px;font-weight:700}
.role-locked{display:inline-block;margin-top:4px;padding:2px 8px;border-radius:999px;background:#FFF4E6;color:var(--orange);font-size:11px;font-weight:700}
.cc-head{margin-bottom:20px;padding-bottom:14px;border-bottom:1px solid var(--h-line);display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.cc-head h2{font-size:22px;font-weight:800;color:var(--h-ink)}
.cc-head .cc-sub{font-size:13px;color:var(--h-muted);margin-top:4px}
.event-selector{min-width:200px;max-width:280px;border:1px solid var(--h-line);border-radius:10px;padding:8px 12px;font-size:13px;font-weight:600;color:var(--h-ink);background:#fff;cursor:pointer}
.role-notice{background:#FFF4E6;border:1px solid #FFE0B0;border-radius:12px;padding:16px 18px;font-size:14px;line-height:1.8;color:#8a5a00;margin-bottom:16px}
.role-notice a{color:var(--h-blue)}
.role-notice b{color:#8a3b00}
/* 办赛控制台权限受限卡片（去演示账号 + 登录/认证引导） */
.role-restrict{display:flex;align-items:flex-start;gap:14px;background:#FFF4E6;border:1px solid #FFE0B0;border-radius:14px;padding:18px 20px;margin-bottom:16px}
.role-restrict .rr-icon{flex:0 0 auto;font-size:22px;line-height:1.3}
.role-restrict .rr-body{flex:1;min-width:0}
.role-restrict .rr-title{display:block;font-size:15px;font-weight:800;color:#8a3b00;margin-bottom:5px}
.role-restrict .rr-desc{margin:0;font-size:13.5px;line-height:1.7;color:#8a5a00}
.role-restrict .rr-desc b{color:#8a3b00}
.role-restrict .rr-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
.cvt{width:100%;border-collapse:collapse;font-size:13px}
.cvt th{text-align:left;color:var(--h-muted);font-weight:600;padding:10px 12px;border-bottom:2px solid var(--h-line);background:var(--h-bg2)}
.cvt td{padding:12px;border-bottom:1px solid var(--h-line);color:var(--h-ink2)}
.cvt tr:hover td{background:#FAFCFF}

/* ====== 约战大厅 · 筛选与卡片 ====== */
.match-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.match-toolbar .tabs{margin-right:auto}
.match-filters{display:flex;gap:14px;flex-wrap:wrap;background:#fff;border:1px solid var(--h-line);border-radius:14px;padding:16px 18px;box-shadow:0 4px 16px rgba(0,32,128,.05);margin-bottom:24px}
.match-filters .mf{display:flex;flex-direction:column;gap:6px;min-width:180px;flex:1}
.match-filters .mf label{font-size:12px;font-weight:700;color:var(--h-muted)}
.match-filters .mf select{height:40px;padding:0 12px;border:1px solid var(--h-line);border-radius:9px;background:#fff;color:var(--h-ink);font-size:13px;font-family:inherit}
.match-filters .mf select:focus{outline:none;border-color:var(--h-blue);box-shadow:0 0 0 3px rgba(0,102,255,.12)}
.match-list{max-width:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,1fr);gap:20px}

.match-card{
  display:flex;background:#fff;border:1px solid var(--h-line);border-radius:18px;overflow:hidden;
  box-shadow:0 4px 18px rgba(0,32,128,.06);transition:all .25s var(--ease, ease);cursor:pointer;
}
.match-card:hover{
  transform:translateY(-5px);box-shadow:0 18px 40px rgba(0,32,128,.12);border-color:#D6E4FF;
}
.match-card .mc-status-bar{width:5px;flex-shrink:0;transition:width .2s}
.match-card:hover .mc-status-bar{width:7px}
.match-card.status-open .mc-status-bar{background:var(--h-blue)!important}
.match-card.status-matched .mc-status-bar{background:var(--h-green,#00B42A)!important}
.match-card.status-expired .mc-status-bar{background:var(--h-muted)!important}

.match-card .mc-body{padding:20px 22px 18px;flex:1;min-width:0;display:flex;flex-direction:column}

.match-card .mc-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}
.match-card .mc-title-wrap{min-width:0}
.match-card .mc-team{font-size:18px;font-weight:900;color:var(--h-ink);line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-card .mc-school{font-size:12px;color:var(--h-muted);margin-top:5px;display:flex;align-items:center;gap:4px}
.match-card .mc-pin{opacity:.7}

.match-card .mc-badge{height:24px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:800;display:inline-flex;align-items:center;flex-shrink:0}
.match-card .mc-badge.tag-recruit{background:#E6F4FF;color:#0066FF}
.match-card .mc-badge.tag-done{background:#E6FFED;color:#00A150}
.match-card .mc-badge.tag-expired{background:#F3F4F6;color:#6B7280}

.match-card .mc-game{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.match-card .mc-game-ico{width:34px;height:34px;border-radius:10px;background:#F0F7FF;display:flex;align-items:center;justify-content:center;font-size:18px}
.match-card .mc-game-name{font-size:15px;font-weight:800;color:var(--h-ink)}
.match-card .mc-format{height:22px;padding:0 9px;border-radius:999px;background:#F5F7FB;color:var(--h-ink2);font-size:12px;font-weight:700;display:inline-flex;align-items:center;margin-left:4px}

.match-card .mc-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px;margin-bottom:14px}
.match-card .mc-info{background:#FAFBFD;border:1px solid var(--h-line);border-radius:10px;padding:10px 12px;transition:background .2s}
.match-card:hover .mc-info{background:#F5F9FF}
.match-card .mc-info-label{font-size:11px;color:var(--h-muted);margin-bottom:3px;font-weight:700;letter-spacing:.3px}
.match-card .mc-info-val{font-size:13px;font-weight:700;color:var(--h-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-card .mc-info-val.expired{color:var(--h-muted);text-decoration:line-through}

.match-card .mc-note{background:#FFFDF5;border:1px solid #FFF0C2;border-radius:10px;padding:10px 12px;margin-bottom:14px;font-size:13px;color:#6B5B2E;line-height:1.55;display:flex;gap:8px;align-items:flex-start}
.match-card .mc-note-label{height:20px;padding:0 7px;border-radius:5px;background:#FFF4CC;color:#B48A00;font-size:11px;font-weight:800;flex-shrink:0}

.match-card .mc-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:14px;border-top:1px dashed var(--h-line)}
.match-card .mc-contact{display:flex;flex-direction:column;gap:2px;min-width:0}
.match-card .mc-contact-label{font-size:11px;color:var(--h-muted);font-weight:700}
.match-card .mc-contact-val{font-size:13px;font-weight:800;color:var(--h-ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.match-card .mc-contact-mask{display:inline-flex;align-items:center;width:fit-content;padding:2px 8px;border-radius:999px;background:#F0F2F5;color:var(--h-muted);font-size:11px;font-weight:700}

.match-card .mc-actions{display:flex;align-items:center;gap:14px;flex-shrink:0}
.match-card .mc-stat{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:700;color:var(--h-muted)}
.match-card .mc-icon-eye,.match-card .mc-icon-star{width:14px;height:14px;display:inline-block;background:currentColor;mask-size:contain;mask-repeat:no-repeat;mask-position:center;-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center}
.match-card .mc-icon-eye{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
.match-card .mc-icon-star{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/%3E%3C/svg%3E")}
.match-card .mc-go{font-size:13px;font-weight:800;color:var(--h-blue);display:inline-flex;align-items:center;transition:gap .2s;gap:2px}
.match-card:hover .mc-go{gap:6px}

.mini-tag{height:24px;padding:0 10px;border-radius:999px;background:#F5F7FB;color:var(--h-ink2);font-size:12px;display:inline-flex;align-items:center;font-weight:600}
.badge.tag-recruit{background:#E6FAFF;color:#0099AA}
.badge.tag-done{background:#E6FFED;color:var(--green)}
.badge.tag-expired{background:var(--bg-2);color:var(--h-muted)}

@media (max-width:900px){
  .match-list{grid-template-columns:1fr}
  .match-card .mc-info-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .match-card .mc-body{padding:16px}
  .match-card .mc-header{flex-direction:column;gap:8px}
  .match-card .mc-foot{flex-direction:column;align-items:flex-start;gap:10px}
  .match-card .mc-info-grid{grid-template-columns:1fr}
}

/* ====== 赛事控制台升级：队伍 / 赛果 / 通知 / 看板 ====== */
.tt-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}
.tt-stat{background:var(--h-bg2);border:1px solid var(--h-line);border-radius:12px;padding:14px;text-align:center}
.tt-stat b{font-size:22px;font-weight:900;color:var(--h-ink);display:block;line-height:1.1}
.tt-stat span{font-size:12px;color:var(--h-muted);margin-top:4px;display:block}
.tt-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.tt-card{background:#fff;border:1px solid var(--h-line);border-radius:14px;padding:16px;box-shadow:0 4px 16px rgba(0,32,128,.05);transition:all .2s}
.tt-card:hover{transform:translateY(-3px);box-shadow:0 12px 28px rgba(0,32,128,.1);border-color:#D6E4FF}
.tt-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}
.tt-name{font-size:16px;font-weight:800;color:var(--h-ink)}
.tt-meta{font-size:12px;color:var(--h-muted);margin-bottom:10px}
.tt-members{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;min-height:28px}
.tt-chip{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,#E6F0FF,#F0F7FF);color:var(--h-blue);font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center}
.tt-chip.cap{background:linear-gradient(135deg,#FFF0C2,#FFE08A);color:#8a5a00}
.tt-actions{display:flex;flex-wrap:wrap;gap:6px}
.btn.danger{color:#D14343;border-color:#F3C9C9}
.btn.danger:hover{background:#FFF2F2}
.mt{margin-top:10px}

.ttm-list{display:flex;flex-direction:column;gap:6px}
.ttm-row{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--h-bg2);border:1px solid var(--h-line);border-radius:8px;padding:7px 10px;font-size:13px}
.ttm-name{font-weight:600;color:var(--h-ink)}
.ttm-name.cap{color:var(--h-blue)}

.mr-submit{background:var(--h-bg2);border:1px solid var(--h-line);border-radius:12px;padding:14px;margin-bottom:16px}
.mr-list{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.mr-card{background:#fff;border:1px solid var(--h-line);border-radius:12px;padding:14px;box-shadow:0 4px 16px rgba(0,32,128,.05)}
.mr-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}
.mr-key{font-size:13px;font-weight:800;color:var(--h-ink)}
.mr-teams{font-size:13px;color:var(--h-ink2);margin-bottom:8px}
.mr-teams b{color:var(--h-pink,#FF2D78)}
.mr-thumbs{display:flex;flex-wrap:wrap;gap:6px}
.mr-thumb{width:60px;height:60px;border-radius:8px;overflow:hidden;border:1px solid var(--h-line);display:inline-block}
.mr-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.mr-remark{font-size:12px;color:var(--h-muted);margin-top:6px;background:#FFFDF5;border:1px solid #FFF0C2;border-radius:8px;padding:6px 8px}

.ntf-log{display:flex;flex-direction:column;gap:6px}
.ntf-log-row{display:flex;flex-direction:column;gap:3px;background:var(--h-bg2,#f5f7fb);border:1px solid var(--h-line,#e6ebf2);border-radius:8px;padding:9px 12px;font-size:13px;color:var(--h-ink,#1f2d4d)}
.ntf-lr-head{display:flex;align-items:center;gap:8px}
.ntf-type{flex:0 0 auto;font-size:11px;font-weight:700;color:#fff;background:var(--blue,#0066FF);border-radius:6px;padding:2px 8px;white-space:nowrap}
.ntf-lr-title{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntf-lr-sub{font-size:12px;line-height:1.4}

.bar-chart{display:flex;flex-direction:column;gap:12px}
.bar-row{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--h-ink2)}
.bar-label{width:64px;flex-shrink:0;font-weight:600;color:var(--h-ink)}
.bar-track{flex:1;height:14px;background:var(--h-bg2);border-radius:999px;overflow:hidden}
.bar-fill{height:100%;border-radius:999px;transition:width .4s;min-width:4px}
.bar-fill.green{background:linear-gradient(90deg,#00B42A,#52E36A)}
.bar-fill.blue{background:linear-gradient(90deg,#0066FF,#00D4FF)}
.bar-fill.red{background:linear-gradient(90deg,#FF2D78,#FF6B9D)}
.dash-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}
.dash-stat{background:var(--h-bg2,#f5f7fb);border:1px solid var(--h-line,#e6ebf2);border-radius:12px;padding:12px 8px;text-align:center}
.dash-stat b{display:block;font-size:22px;font-weight:800;color:var(--h-ink,#1f2d4d);line-height:1.15}
.dash-stat span{font-size:12px;color:var(--h-muted,#8a94a6)}
.dash-stat.warn b{color:var(--h-pink,#FF2D78)}
.bar-row b{width:90px;text-align:right;flex-shrink:0;font-weight:700;color:var(--h-ink)}

@media (max-width:760px){
  .tt-stats{grid-template-columns:repeat(2,1fr)}
  .tt-grid,.mr-list{grid-template-columns:1fr}
}

/* ====== 知识库 · 侧栏与卡片 ====== */
.kb-side-h{font-size:13px;font-weight:800;color:var(--h-muted);letter-spacing:.5px;margin-bottom:10px;padding:0 12px}
.kb-sidebar a.kb-side-item{display:flex;align-items:center;gap:8px}
.kb-sidebar a.kb-side-item.active{background:#F0F7FF;color:var(--h-blue);font-weight:700}
.kb-main{min-height:400px}
.kb-card .kb-cat{display:inline-block;font-size:11px;font-weight:700;color:var(--h-blue);background:#F0F7FF;padding:3px 10px;border-radius:999px;margin-bottom:12px}
.kb-card .kb-title{font-size:16px;font-weight:700;color:var(--h-ink);margin-bottom:8px;line-height:1.4}
.kb-card .kb-sum{font-size:13px;color:var(--h-muted);line-height:1.6;margin-bottom:14px;min-height:42px}
.kb-card .kb-foot{display:flex;justify-content:flex-start;align-items:center;gap:16px;font-size:12px;color:var(--h-muted);border-top:1px solid var(--h-line);padding-top:12px}
.kb-card .kb-type{font-weight:700;color:var(--h-pink)}
.kb-card .kb-fav{font-weight:700;color:#E5484D}
.kb-card .kb-top{display:flex;justify-content:flex-start;align-items:center;margin-bottom:12px}
.kb-card .kb-src{font-size:11px;font-weight:700;padding:3px 10px;border-radius:999px;border:1px solid transparent}
.kb-src.src-seed{color:#0a7d4f;background:#E7F7EF}
.kb-src.src-admin{color:var(--h-blue);background:#EAF2FF}
.kb-src.src-member{color:#B45309;background:#FEF3E2}
.kb-card .kb-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.kb-card .kb-actions .btn{margin:0}
.kb-side-tip{margin-top:16px;padding:12px 14px;font-size:12px;line-height:1.6;color:var(--h-muted);background:#F8FAFF;border:1px dashed var(--h-line);border-radius:12px}

/* 上传资料弹窗：说明 / 网盘兜底 / 上传进度条（modal 位于 body 级，使用全局 :root 令牌） */
.kb-upload-note{font-size:12.5px;line-height:1.7;color:var(--ink-2);background:var(--blue-light);border:1px solid var(--line);border-radius:12px;padding:11px 14px;margin-bottom:14px}
.kb-upload-note b{color:var(--blue)}
.kb-netdisk{margin-top:2px}
.kb-progress{height:6px;border-radius:999px;background:var(--bg-2);overflow:hidden;margin-top:12px}
.kb-progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--cyan));transition:width .2s var(--ease)}
.kb-progress-text{font-size:11px;color:var(--muted);margin-top:5px;text-align:center}

/* 资料库 · 页面须知说明卡（使用全局 :root 令牌，避免 --h-* 作用域坑） */
.kb-page-note{margin:22px 0 6px;padding:16px 18px;border-radius:14px;background:var(--blue-light);border:1px solid var(--line)}
.kb-page-note .kb-note-h{font-size:14px;font-weight:800;color:var(--blue);margin-bottom:8px}
.kb-page-note .kb-note-list{margin:0;padding-left:18px;font-size:13px;line-height:1.85;color:var(--ink-2)}
.kb-page-note .kb-note-list li{margin-bottom:5px}
.kb-page-note .kb-note-list b{color:var(--blue)}

/* 资料库 · 双板块（会员共享 / 付费专享） */
.kb-chips{display:flex;flex-wrap:wrap;margin-bottom:18px}
.kb-chip{display:inline-flex;align-items:center;padding:7px 14px;border-radius:999px;background:#fff;border:1px solid var(--h-line);color:var(--h-ink2);font-size:13px;font-weight:600;margin:0 8px 10px 0;transition:all .15s}
.kb-chip:hover{background:#F0F7FF;color:var(--h-blue)}
.kb-chip.active{background:var(--h-blue);border-color:var(--h-blue);color:#fff}
.kb-tier{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:800;padding:3px 10px;border-radius:999px;white-space:nowrap}
.kb-tier.free{color:#0a7d4f;background:#E7F7EF}
.kb-tier.paid{color:#B45309;background:#FFF3E0;box-shadow:inset 0 0 0 1px #FCD9A8}
.kb-card.paid{border-color:#FFE0B0;background:linear-gradient(180deg,#FFFDF8,#fff)}
.kb-card.paid:hover{box-shadow:0 12px 28px rgba(180,83,9,.12)}
.kb-card-split{font-size:11px;font-weight:700;color:#B45309;background:#FFF3E0;border-radius:8px;padding:5px 10px;margin-bottom:12px}
.kb-split-note{font-size:13px;line-height:1.7;color:#0a7d4f;background:#E7F7EF;border:1px solid #BFE9D4;border-radius:10px;padding:10px 14px;margin:14px 0}
.kb-split-note.warn{color:#B45309;background:#FFF3E0;border-color:#FCD9A8}
.kb-earn-tbl{width:100%;border-collapse:collapse;font-size:13px;margin-top:10px}
.kb-earn-tbl th{text-align:left;color:var(--h-muted);font-weight:600;padding:8px 10px;border-bottom:2px solid var(--h-line);background:var(--h-bg2)}
.kb-earn-tbl td{padding:9px 10px;border-bottom:1px solid var(--h-line);color:var(--h-ink2)}
.kb-earn-tbl tr:hover td{background:#FAFCFF}

/* ====== 办赛控制台 · 页面配置 / 通知 / 数据看板 ====== */
.cfg-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.cfg-wide{grid-column:1 / -1}
.cfg-preview{aspect-ratio:16/6;background:var(--h-bg2);border:1px dashed var(--h-line);border-radius:12px;overflow:hidden;display:flex;align-items:center;justify-content:center;min-height:120px;margin-bottom:12px}
.cfg-preview.banner-prev{aspect-ratio:16/9}
.cfg-preview-img{width:100%;height:100%;object-fit:cover}
.cfg-preview-img.qr{width:auto;height:auto;max-width:140px;max-height:140px;object-fit:contain}
.cfg-empty{font-size:13px;color:var(--h-muted);text-align:center;padding:20px}
.cfg-file{font-size:13px;color:var(--h-ink2)}
.cfg-share{display:flex;gap:10px;align-items:center}
.cfg-share input{flex:1;border:1px solid var(--h-line);border-radius:8px;padding:8px 10px;font-size:13px;background:#F8FAFF;color:var(--h-ink)}

.dash-funnel{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:10px 0}
.df-step{min-width:90px;text-align:center;padding:14px 10px;background:#F5F7FB;border-radius:12px}
.df-step b{display:block;font-size:22px;font-weight:800;color:var(--h-blue);margin-bottom:2px}
.df-step span{font-size:12px;color:var(--h-muted);font-weight:600}
.df-arrow{font-size:22px;color:var(--h-blue);font-weight:800}
.dash-info{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.dash-info div{background:#F8FAFF;border-radius:10px;padding:12px 14px}
.dash-info span{display:block;font-size:12px;color:var(--h-muted);margin-bottom:4px}
.dash-info b{font-size:15px;font-weight:700;color:var(--h-ink)}
.kpi-unit{font-size:12px;color:var(--h-muted);margin-left:2px;font-weight:500}

@media(max-width:900px){
  .hub-cards,.hub-boards-grid,.match-list,.kb-grid,.cfg-grid{grid-template-columns:repeat(2,1fr)}
  .console-wrap,.kb-page,.event-page .event-body{grid-template-columns:1fr}
  .console-kpi{grid-template-columns:repeat(2,1fr)}
  .host-cap-inner{grid-template-columns:repeat(2,1fr);gap:20px}
  .match-filters .mf{min-width:140px}
  .dash-info{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .hub-cards,.hub-boards-grid,.match-list,.kb-grid,.console-kpi,.cfg-grid,.dash-info{grid-template-columns:1fr}
  .host-cap-inner{grid-template-columns:repeat(2,1fr)}
  .match-filters{flex-direction:column}
  .match-filters .mf{min-width:auto}
  .match-toolbar .tabs{width:100%;overflow-x:auto}
  .cc-head{flex-direction:column;gap:10px}
  .event-selector{max-width:100%;width:100%}
  .dash-funnel{gap:8px}
  .df-step{min-width:70px;padding:10px 8px}
  .df-step b{font-size:18px}
}

/* 跨校约战大厅 · 约战文明条约 */
.match-treaty{background:#F5F7FB !important}
.treaty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}
.treaty-card{background:#fff;border:1px solid var(--h-line);border-radius:14px;padding:22px 22px 20px;box-shadow:0 4px 16px rgba(0,32,128,.05);transition:all .22s;position:relative;overflow:hidden}
.treaty-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--h-blue),var(--h-cyan))}
.treaty-card:hover{transform:translateY(-5px);box-shadow:0 14px 34px rgba(0,32,128,.12);border-color:var(--h-blue)}
.tt-no{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,var(--h-blue),var(--h-cyan));color:#fff;font-size:16px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.tt-ic{font-size:28px;line-height:1;margin-bottom:10px}
.tt-t{font-size:17px;font-weight:800;color:var(--h-ink);margin-bottom:8px}
.treaty-card p{font-size:14px;color:var(--h-muted);line-height:1.7;margin:0}
@media(max-width:900px){
  .treaty-grid{grid-template-columns:repeat(2,1fr)}
}

/* =========================================================
   办赛控制台 · 顶级视觉与交互升级（拳头产品凸显）
   说明：event-console 页面未被 .host-page 包裹，故在此本地
   定义 --h-* 令牌，确保本升级与既有控制台样式均能正确取色。
   ========================================================= */
.ec-hero,
.content-section.ec-console{
  --h-blue:#0066FF;--h-cyan:#00D4FF;--h-pink:#FF2D78;--h-gold:#FFB800;
  --h-bg:#FFFFFF;--h-bg2:#F5F7FB;--h-line:#E8ECF2;
  --h-ink:#111827;--h-ink2:#4B5563;--h-muted:#6B7280;
}

/* 页面底色：浅蓝流光 + 柔光 */
.content-section.ec-console{
  position:relative;
  background:
    radial-gradient(820px 360px at 10% -4%, rgba(0,102,255,.07), transparent 60%),
    radial-gradient(760px 340px at 94% 0%, rgba(0,212,255,.08), transparent 60%),
    linear-gradient(180deg,#F5F9FF 0%, #FFFFFF 46%);
  overflow-x:clip;
}

/* Hero 专属底色（与控制台连贯） */
.ec-hero{
  position:relative;
  background:linear-gradient(180deg,#EFF5FF 0%, #F6FAFF 58%, #FFFFFF 100%);
}
.ec-hero .ph-left{animation:ecRise .6s var(--ease) both}
.ec-hero .ph-visual{animation:ecRise .7s var(--ease) .05s both}
.ec-hero .ph-block{box-shadow:0 30px 70px rgba(0,102,255,.28)}
.ec-hero .ph-float.f1{box-shadow:0 14px 30px rgba(0,102,255,.18)}
.ec-hero .ph-float.f2{box-shadow:0 12px 26px rgba(0,212,255,.2)}
.ec-hero .ph-float.f3{box-shadow:0 12px 26px rgba(255,45,120,.22)}

/* —— Hero 视觉块：game-icons 图标（无底框，仅图标本体）+ 动态效果 —— */
/* 中央主图标：仅图标，柔光投影，缓慢呼吸浮动 */
.ec-hero .ph-visual{height:440px}   /* 容纳 2× 中央图标 */
.ec-hero .ph-block{
  width:260px;height:260px;
  overflow:visible;
  background:none!important;border:none!important;border-radius:0!important;box-shadow:none!important;
  transform:none;
  animation:ecBlockPulse 4.6s var(--ease) infinite;
  transition:transform .35s var(--ease);
}
.ec-hero .ph-block::before{display:none}
.ec-hero .ph-block img{
  width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 18px 34px rgba(0,102,255,.2));
  pointer-events:none;user-select:none;
}
.ec-hero .ph-float{
  background:none!important;border:none!important;box-shadow:none!important;overflow:visible;
  animation:ecFloat 3.4s ease-in-out infinite;
  transition:transform .35s var(--ease);
}
.ec-hero .ph-float img{
  width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 10px 18px rgba(0,102,255,.14));
  pointer-events:none;user-select:none;
}
/* 2× 浮动图标：贴中央四角，做成簇状交叠 */
.ec-hero .ph-float.f1{width:180px;height:180px;top:0;right:0;animation-delay:0s}
.ec-hero .ph-float.f2{width:156px;height:156px;bottom:0;right:0;animation-delay:.8s}
.ec-hero .ph-float.f3{width:144px;height:144px;bottom:0;left:0;animation-delay:1.6s}
/* hover：暂停浮动 + 放大 + 轻微旋转 */
.ec-hero .ph-block:hover{animation-play-state:paused;transform:translateY(-6px) scale(1.04) rotate(4deg)}
.ec-hero .ph-float:hover{animation-play-state:paused;transform:translateY(-16px) scale(1.1) rotate(-12deg)}

@keyframes ecFloat{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-14px)}
}
@keyframes ecBlockPulse{
  0%,100%{transform:translateY(0) scale(1)}
  50%{transform:translateY(-10px) scale(1.04)}
}
/* 无障碍：尊重减少动态偏好 */
@media (prefers-reduced-motion:reduce){
  .ec-hero .ph-block,
  .ec-hero .ph-float,
  .mh-hero .ph-block,
  .mh-hero .ph-float,
  .kb-hero .ph-block,
  .kb-hero .ph-float{animation:none!important}
}

/* —— 办赛工具与资料库 Hero：同款 game-icons 图标（无底框）+ 动态效果 —— */
.kb-hero .ph-visual{height:440px}
.kb-hero .ph-block{
  width:260px;height:260px;
  overflow:visible;
  background:none!important;border:none!important;border-radius:0!important;box-shadow:none!important;
  transform:none;
  animation:ecBlockPulse 4.6s var(--ease) infinite;
  transition:transform .35s var(--ease);
}
.kb-hero .ph-block::before{display:none}
.kb-hero .ph-block img{
  width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 18px 34px rgba(0,102,255,.2));
  pointer-events:none;user-select:none;
}
.kb-hero .ph-float{
  background:none!important;border:none!important;box-shadow:none!important;overflow:visible;
  animation:ecFloat 3.4s ease-in-out infinite;
  transition:transform .35s var(--ease);
}
.kb-hero .ph-float img{
  width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 10px 18px rgba(0,102,255,.14));
  pointer-events:none;user-select:none;
}
/* 2× 浮动图标：贴中央四角，做成簇状交叠 */
.kb-hero .ph-float.f1{width:180px;height:180px;top:0;right:0;animation-delay:0s}
.kb-hero .ph-float.f2{width:156px;height:156px;bottom:0;right:0;animation-delay:.8s}
.kb-hero .ph-float.f3{width:144px;height:144px;bottom:0;left:0;animation-delay:1.6s}
.kb-hero .ph-block:hover{animation-play-state:paused;transform:translateY(-6px) scale(1.04) rotate(4deg)}
.kb-hero .ph-float:hover{animation-play-state:paused;transform:translateY(-16px) scale(1.1) rotate(-12deg)}

/* —— 约战大厅 Hero：同款 game-icons 图标（无底框）+ 动态效果 —— */
.mh-hero .ph-visual{height:440px}
.mh-hero .ph-block{
  width:260px;height:260px;
  overflow:visible;
  background:none!important;border:none!important;border-radius:0!important;box-shadow:none!important;
  transform:none;
  animation:ecBlockPulse 4.6s var(--ease) infinite;
  transition:transform .35s var(--ease);
}
.mh-hero .ph-block::before{display:none}
.mh-hero .ph-block img{
  width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 18px 34px rgba(0,102,255,.2));
  pointer-events:none;user-select:none;
}
.mh-hero .ph-float{
  background:none!important;border:none!important;box-shadow:none!important;overflow:visible;
  animation:ecFloat 3.4s ease-in-out infinite;
  transition:transform .35s var(--ease);
}
.mh-hero .ph-float img{
  width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 10px 18px rgba(0,102,255,.14));
  pointer-events:none;user-select:none;
}
/* 2× 浮动图标：贴中央四角，做成簇状交叠 */
.mh-hero .ph-float.f1{width:180px;height:180px;top:0;right:0;animation-delay:0s}
.mh-hero .ph-float.f2{width:156px;height:156px;bottom:0;right:0;animation-delay:.8s}
.mh-hero .ph-float.f3{width:144px;height:144px;bottom:0;left:0;animation-delay:1.6s}
.mh-hero .ph-block:hover{animation-play-state:paused;transform:translateY(-6px) scale(1.04) rotate(4deg)}
.mh-hero .ph-float:hover{animation-play-state:paused;transform:translateY(-16px) scale(1.1) rotate(-12deg)}

/* 移动端：2× 尺寸回收，避免溢出 */
@media(max-width:900px){
  .ec-hero .ph-visual,.mh-hero .ph-visual,.kb-hero .ph-visual{height:280px}
  .ec-hero .ph-block,.mh-hero .ph-block,.kb-hero .ph-block{width:220px;height:220px}
  .ec-hero .ph-float.f1,.mh-hero .ph-float.f1,.kb-hero .ph-float.f1{width:96px;height:96px}
  .ec-hero .ph-float.f2,.mh-hero .ph-float.f2,.kb-hero .ph-float.f2{width:84px;height:84px}
  .ec-hero .ph-float.f3,.mh-hero .ph-float.f3,.kb-hero .ph-float.f3{width:78px;height:78px}
}

/* Hero 数据：玻璃态卡片 */
.ec-hero .ph-stats{gap:14px;margin-top:4px}
.ec-hero .ph-stat{
  background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid var(--h-line);border-radius:14px;
  padding:12px 18px;min-width:98px;
  box-shadow:0 6px 18px rgba(0,32,128,.06);
}
.ec-hero .ph-stat .num{
  font-size:26px;font-weight:800;line-height:1;
  background:linear-gradient(135deg,var(--h-blue),var(--h-cyan));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.ec-hero .ph-stat .lbl{font-size:12px;color:var(--h-muted);margin-top:6px}
.ec-hero .ph-tag{background:rgba(255,255,255,.72);border-color:rgba(0,102,255,.2);color:var(--h-ink2)}

/* 磁吸 CTA */
.ec-magnetic{transition:transform .25s var(--ease),box-shadow .25s var(--ease);will-change:transform}
.ec-magnetic:hover{box-shadow:0 16px 38px rgba(0,102,255,.34)}
.ec-hero .ph-actions .btn-primary.ec-magnetic{box-shadow:0 12px 28px rgba(0,102,255,.3)}

/* =========================================================
   办赛服务大厅（#/tournaments）· 真实底图 Hero
   底图已在图片内烘焙为 #DEEAFC 并做边缘羽化
   ========================================================= */
.tour-hero{
  position:relative;overflow:hidden;
  background:#DEEAFC url('../images/tournaments-hero-bg.png?v=20260827') no-repeat 60% center / contain;
  min-height:580px;
  padding:72px 0 132px;  /* 底部留出 132px 给 hero-stats-bar */
}
.tour-hero .ph-inner{grid-template-columns:1.1fr .9fr}
.tour-hero .ph-left{position:relative;z-index:1}
.tour-hero .ph-visual{display:none}
/* 大厅改用真实底图插画，隐藏默认 emoji 视觉块；原 ph-block/ph-float/ph-stats 样式此处不再生效 */

/* 办赛服务底部毛玻璃数据横条：复用 .hero-stats-bar，叠在底图上保证深色数字可读 */
.tour-hero .hero-stats-bar{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  display:flex;gap:42px;flex-wrap:wrap;justify-content:center;align-items:center;
  padding:20px 24px;
  background:rgba(255,255,255,.22);
  -webkit-backdrop-filter:blur(18px) saturate(170%);
  backdrop-filter:blur(18px) saturate(170%);
  border-top:1px solid rgba(255,255,255,.5);
  box-shadow:0 -8px 30px rgba(15,27,45,.06);
}
.tour-hero .ph-tag{background:rgba(255,255,255,.72);border-color:rgba(0,102,255,.2);color:var(--ink-2)}
@media(max-width:900px){
  .tour-hero .ph-inner{grid-template-columns:1fr}
  .tour-hero .hero-stats-bar{gap:18px;padding:14px 16px}
  .tour-hero .hero-stats-bar .num{font-size:22px}
  .tour-hero .hero-stats-bar .lbl{font-size:11px}
}

/* 侧栏：步进器 + 旗舰标识 */
.ec-console .console-side{
  position:relative;overflow:hidden;
  padding:18px 16px 20px;border-radius:18px;
  border-color:#E2EAF6;box-shadow:0 12px 32px rgba(0,32,128,.08);
}
.ec-console .console-side::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--h-blue),var(--h-cyan),var(--h-pink));
}
.ec-console .cs-title{display:flex;align-items:center;gap:8px;font-size:16px;padding:6px 12px 14px}
.ec-flag{
  font-size:11px;font-weight:800;color:#fff;letter-spacing:.5px;
  background:linear-gradient(135deg,var(--h-gold),#FF9A3D);
  padding:3px 9px;border-radius:999px;box-shadow:0 4px 12px rgba(255,184,0,.35);
}
.ec-steps-label{font-size:11px;font-weight:800;letter-spacing:1.5px;color:var(--h-muted);padding:4px 12px 10px}
.ec-steps{display:flex;flex-direction:column}
.ec-console .ec-step{
  position:relative;display:flex;align-items:center;gap:12px;
  padding:10px 12px;border-radius:12px;margin-bottom:4px;transition:all .2s var(--ease);
}
.ec-console .ec-step:not(:last-child)::after{
  content:"";position:absolute;left:25px;top:40px;bottom:-2px;width:2px;
  background:linear-gradient(180deg,var(--h-line),rgba(232,236,242,.15));
}
.ec-console .ec-step .ec-step-idx{
  width:26px;height:26px;flex:0 0 26px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:800;background:#fff;
  border:1.5px solid var(--h-line);color:var(--h-muted);z-index:1;transition:all .2s var(--ease);
}
.ec-console .ec-step .ec-step-ico{font-size:18px;filter:grayscale(.15)}
.ec-console .ec-step .ec-step-label{font-size:14px;font-weight:600;color:var(--h-ink2);transition:color .2s}
.ec-console .ec-step:hover{background:#F5F7FB}
.ec-console .ec-step:hover .ec-step-idx{border-color:var(--h-blue);color:var(--h-blue)}
.ec-console .ec-step.active{
  background:linear-gradient(135deg,rgba(0,102,255,.1),rgba(0,212,255,.08));
  box-shadow:0 6px 18px rgba(0,102,255,.12);
}
.ec-console .ec-step.active .ec-step-idx{
  background:linear-gradient(135deg,var(--h-blue),var(--h-cyan));
  border-color:transparent;color:#fff;box-shadow:0 4px 12px rgba(0,102,255,.4);
}
.ec-console .ec-step.active .ec-step-label{color:var(--h-blue);font-weight:800}
.ec-console .ec-step.active .ec-step-ico{filter:none}

/* 步进条外层容器：桌面端无盒（display:contents），移动端变「← 滚动行 →」 */
.ec-steps-bar{display:contents}
.ec-step-arrow{display:none}

/* 主面板：玻璃 + 大圆角 */
.ec-console .console-main{
  border-radius:20px;border-color:#E2EAF6;
  box-shadow:0 14px 40px rgba(0,32,128,.08);padding:30px 32px;
}
.ec-console .cc-head{
  border-bottom:1px solid var(--h-line);padding-bottom:16px;margin-bottom:22px;
  animation:ecRise .5s var(--ease) both;
}
.ec-console .cc-head h2{font-size:24px;position:relative;display:inline-block}
.ec-console .cc-head h2::after{
  content:"";position:absolute;left:0;bottom:-9px;width:44px;height:4px;border-radius:2px;
  background:linear-gradient(90deg,var(--h-blue),var(--h-cyan));
}
.ec-console .cc-head .cc-sub{margin-top:12px}

/* 内容卡：玻璃 + 浮起 */
.ec-console .console-block{
  background:rgba(255,255,255,.92);
  border:1px solid var(--h-line);border-radius:16px;
  box-shadow:0 8px 24px rgba(0,32,128,.06);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s;
  animation:ecRise .5s var(--ease) both;
}
.ec-console .console-block:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(0,32,128,.1);border-color:#D6E4FF}

/* 看板 KPI：玻璃 + 浮起 */
.ec-console .console-kpi .kpi-card{
  background:linear-gradient(135deg,rgba(240,247,255,.9),rgba(255,255,255,.95));
  border:1px solid var(--h-line);border-radius:16px;
  box-shadow:0 8px 22px rgba(0,32,128,.06);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease);
  animation:ecRise .5s var(--ease) both;
}
.ec-console .console-kpi .kpi-card:hover{transform:translateY(-4px);box-shadow:0 16px 38px rgba(0,102,255,.14)}
.ec-console .console-kpi .kpi-card .num{
  background:linear-gradient(135deg,var(--h-blue),var(--h-cyan));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}

/* 入场动画 */
@keyframes ecRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}

/* =========================================================
   页面配置（config）版式统一 + 顶级审美
   目标：与「创建 / 选手管理 / 比赛管理 / 数据看板」等步骤
   保持同一套玻璃卡片节奏（同一 .console-main 宽度），
   仅把板块内的复杂编辑器做精致内聚，不破坏外框对齐。
   ========================================================= */

/* 板块标题：直接给底卡分色（板块一/二/三/基础 用浅底色+同色左条区分），去掉编号徽标，导航栏/内容不变 */
.ec-console .cfg-section-head{
  position:relative;
  display:flex; flex-direction:column; gap:6px;
  padding:16px 20px 16px 22px;
  background:var(--sec-bg,#eef4ff);
  border:1px solid var(--sec-bd,#cfe0ff);
  border-left:6px solid var(--sec,#0066FF);
  border-radius:14px;
  margin:16px 0 14px;
  box-shadow:0 6px 18px rgba(15,27,45,.06);
  animation:ecRise .5s var(--ease) both;
}
.ec-console .cfg-section-head h2{ font-size:18px; margin:0; color:var(--h-ink,#111827); letter-spacing:.2px; }
.ec-console .cfg-section-head .muted{ margin:0; }
/* 分色：板块一=科技蓝 板块二=青蓝 板块三=电竞粉 基础信息=暖金（底卡浅色 + 左条同色） */
.ec-console .cfg-sec-1{ --sec:#0066FF; --sec-bg:#eef4ff; --sec-bd:#cfe0ff; }
.ec-console .cfg-sec-2{ --sec:#00A6C8; --sec-bg:#e7f7fb; --sec-bd:#c2ebf2; }
.ec-console .cfg-sec-3{ --sec:#FF2D78; --sec-bg:#fff0f5; --sec-bd:#ffd2e1; }
.ec-console .cfg-sec-base{ --sec:#FFB800; --sec-bg:#fff8e6; --sec-bd:#ffe6b0; }

/* 板块零：自动同步信息（赛事基础信息概览）—— 精致定义列表，呼应卡片内结构 */
.ec-console .cfg-section-intro{ margin:0 0 12px; display:grid; grid-template-columns:1fr 1fr; column-gap:28px; }
.ec-console .cfg-section-intro .intro-row{
  display:flex; gap:14px; padding:9px 4px; border-bottom:1px dashed var(--h-line,#eef2f8); font-size:13.5px;
}
.ec-console .cfg-section-intro .intro-row:last-child{ border-bottom:none; }
.ec-console .cfg-section-intro .ir-k{ flex:none; width:84px; color:var(--h-ink2,#6B7280); font-weight:600; }
.ec-console .cfg-section-intro .ir-v{ color:var(--h-ink,#111827); font-weight:600; word-break:break-word; }

/* 板块一：头图 / 板块三：二维码 / 分享卡 —— 与卡片同宽同圆角同玻璃，去掉 cfg-wide 的“撑满”观感 */
.ec-console .cfg-wide{
  margin-left:0; margin-right:0;
  background:rgba(255,255,255,.92);
  border:1px solid var(--h-line,#e3e8f0);
  border-radius:16px;
  box-shadow:0 8px 24px rgba(0,32,128,.06);
  animation:ecRise .5s var(--ease) both;
}
.ec-console .cfg-wide:hover{ transform:translateY(-3px); box-shadow:0 16px 40px rgba(0,32,128,.1); border-color:#D6E4FF; }

/* 板块二：拖拽式页面编辑器 —— 三栏改为更能对齐主面板的配比，且用 minmax(0,1fr) 防溢出 */
.ec-console .pb-builder .pb-layout{
  display:grid; grid-template-columns:200px minmax(0,1fr) 220px; gap:16px; align-items:start;
}
.ec-console .pb-palette{ box-shadow:0 6px 18px rgba(0,32,128,.05); }
.ec-console .pb-main{ box-shadow:0 6px 18px rgba(0,32,128,.05); }
.ec-console .pb-preview-wrap{ box-shadow:0 8px 22px rgba(0,0,0,.18); }

/* 板块三：分享卡固定内容（可编辑覆盖）网格 —— 统一内聚 */
.ec-console .cfg-sync-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.ec-console .cfg-sync-item{
  background:#f7faff; border:1px solid var(--h-line,#e3e8f0); border-radius:12px; padding:14px 16px;
  transition:.2s;
}
.ec-console .cfg-sync-item:hover{ border-color:#D6E4FF; box-shadow:0 6px 16px rgba(0,32,128,.06); }
.ec-console .cfg-sync-item b{ display:block; font-size:13.5px; color:var(--h-blue,#0066FF); margin-bottom:8px; }
.ec-console .cfg-sync-item .row-3{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; }
.ec-console .cfg-sync-item .cbtn{
  width:100%; border:1px solid var(--h-line,#e3e8f0); border-radius:10px; padding:9px 11px;
  font-size:13px; color:var(--h-ink,#111827); background:#fff; transition:.15s;
}
.ec-console .cfg-sync-item .cbtn:focus{ outline:none; border-color:var(--h-blue,#0066FF); box-shadow:0 0 0 3px rgba(0,102,255,.12); }
.ec-console .cfg-sync-item textarea.cbtn{ resize:vertical; line-height:1.5; }

/* 板块三：二维码双区 —— 与主面板卡片同圆角同玻璃 */
.ec-console .qr-two-grid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:6px; }
.ec-console .qr-cell{
  border:1px solid var(--h-line,#e3e8f0); border-radius:14px; padding:16px;
  background:rgba(255,255,255,.6); transition:.2s;
}
.ec-console .qr-cell:hover{ border-color:#D6E4FF; box-shadow:0 8px 20px rgba(0,32,128,.06); }
.ec-console .qr-cell-h{ font-weight:700; font-size:14px; margin-bottom:12px; color:var(--h-ink2,#4B5563); }

/* 板块三：分享卡模板选择 —— 卡片化、与主面板质感一致 */
.ec-console .tpl-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:12px; }
.ec-console .tpl-card{
  display:flex; flex-direction:column; align-items:center; gap:8px; padding:14px 10px;
  border:1px solid var(--h-line,#e3e8f0); border-radius:14px; background:#fff; cursor:pointer; transition:.18s;
}
.ec-console .tpl-card:hover{ transform:translateY(-2px); border-color:#D6E4FF; box-shadow:0 8px 18px rgba(0,32,128,.08); }
.ec-console .tpl-card.active{ border-color:var(--h-blue,#0066FF); background:rgba(0,102,255,.06); box-shadow:0 8px 18px rgba(0,102,255,.12); }
.ec-console .tpl-swatch{ width:100%; height:34px; border-radius:9px; border:1px solid rgba(0,0,0,.06); }
.ec-console .tpl-label{ font-size:12.5px; font-weight:600; color:var(--h-ink,#111827); }

/* 分享卡模板改版：版式 / 模块 / 自定义主色（全局可用，分享弹窗也复用） */
.cfg-sub{ font-size:13px; font-weight:700; color:var(--ink-2,#111827); margin:14px 0 8px; }
.layout-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.layout-card{ display:flex; flex-direction:column; gap:6px; padding:10px; border:1px solid var(--line,#e3e8f0); border-radius:12px; background:#fff; cursor:pointer; text-align:left; transition:.18s; }
.layout-card:hover{ transform:translateY(-2px); border-color:#D6E4FF; box-shadow:0 8px 18px rgba(0,32,128,.08); }
.layout-card.active{ border-color:var(--blue,#0066FF); background:rgba(0,102,255,.06); box-shadow:0 8px 18px rgba(0,102,255,.12); }
.layout-thumb{ display:block; height:92px; border-radius:8px; background:linear-gradient(#1E3A8A 0 42%, #0B1437 42% 100%); border:1px solid rgba(255,255,255,.08); position:relative; overflow:hidden; }
.layout-thumb::after{ content:''; position:absolute; right:10px; bottom:10px; width:18px; height:18px; background:#FFB800; border-radius:4px; }
.layout-thumb-cards{ background:linear-gradient(#1E3A8A 0 28%, #0B1437 28% 100%); }
.layout-thumb-minimal{ background:linear-gradient(#1E3A8A 0 16%, #0B1437 16% 100%); }
.layout-name{ font-size:13px; font-weight:700; color:var(--ink-2,#111827); }
.layout-desc{ font-size:11.5px; color:var(--muted,#6b7280); }
.tpl-grid.tpl-grid-3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.mod-toggles{ display:flex; flex-wrap:wrap; gap:10px 18px; }
.mod-chk{ display:flex; align-items:center; gap:6px; font-size:13px; color:var(--ink-2,#111827); cursor:pointer; }
.mod-chk input{ width:16px; height:16px; accent-color:var(--blue,#0066FF); }
.accent-row{ display:flex; align-items:center; gap:10px; }
.accent-row input[type=color]{ width:46px; height:34px; border:1px solid var(--line,#e3e8f0); border-radius:8px; background:#fff; padding:2px; cursor:pointer; }
/* 分享卡 · 页面主题风格三选一 */
.theme-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.theme-card{ display:flex; flex-direction:column; gap:6px; padding:10px; border:1px solid var(--line,#e3e8f0); border-radius:12px; background:#fff; cursor:pointer; text-align:left; transition:.18s; }
.theme-card:hover{ transform:translateY(-2px); border-color:#D6E4FF; box-shadow:0 8px 18px rgba(0,32,128,.08); }
.theme-card.active{ border-color:var(--blue,#0066FF); background:rgba(0,102,255,.06); box-shadow:0 8px 18px rgba(0,102,255,.12); }
.theme-thumb{ height:54px; border-radius:10px; display:block; margin-bottom:8px; position:relative; overflow:hidden; }
.theme-thumb-glow{ background:radial-gradient(circle at 28% 30%, rgba(0,212,255,.55), transparent 60%), radial-gradient(circle at 78% 72%, rgba(0,102,255,.5), transparent 55%), #0b1437; }
.theme-thumb-geo{ background:repeating-linear-gradient(45deg, rgba(255,255,255,.10) 0 2px, transparent 2px 20px), repeating-linear-gradient(-45deg, rgba(0,212,255,.16) 0 2px, transparent 2px 20px), #0b1437; }
.theme-thumb-doodle{ background:radial-gradient(circle at 24% 34%, rgba(255,45,120,.45), transparent 52%), radial-gradient(circle at 80% 70%, rgba(22,199,132,.45), transparent 52%), #0b1437; }
.theme-name{ font-weight:700; font-size:14px; color:var(--ink-2,#111827); }
.theme-desc{ font-size:12px; color:var(--muted,#6B7280); }

/* 分享链接 + 二维码合并区 —— 与主面板卡片同质感 */
.ec-console .cfg-share-merged{ display:grid; grid-template-columns:minmax(0,1fr) auto; gap:20px; align-items:center; }
.ec-console .cfg-share-link label{ display:block; font-size:12.5px; color:var(--h-muted,#6B7280); margin-bottom:8px; }
.ec-console .cfg-share{ display:flex; gap:8px; }
.ec-console .cfg-share input{
  flex:1; min-width:0; border:1px solid var(--h-line,#e3e8f0); border-radius:10px; padding:9px 12px;
  font-size:13px; color:var(--h-ink,#111827); background:#f7faff;
}
.ec-console .cfg-share-qr{ text-align:center; }
.ec-console .cfg-share-qr .social-qr-img{
  width:150px; height:150px; border-radius:12px; border:1px solid var(--h-line,#e3e8f0);
  box-shadow:0 6px 18px rgba(0,32,128,.08);
}

/* 主面板标准内边距统一（所有步骤共用，确保宽度/留白一致） */
.ec-console .console-main{ padding:30px 32px; }

/* 响应式：保持与其他步骤一致的收拢逻辑 */
@media(max-width:900px){
  .ec-console .cfg-sync-grid,
  .ec-console .qr-two-grid{ grid-template-columns:1fr; }
  .ec-console .pb-builder .pb-layout{ grid-template-columns:1fr; }
  .ec-console .cfg-share-merged{ grid-template-columns:1fr; }
  .ec-console .cfg-sync-item .row-3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ec-console .cfg-section-head{ padding:14px 16px 12px; }
}

/* 响应式微调 */
@media(max-width:900px){
  .console-wrap{padding:16px 14px;gap:14px;grid-template-columns:1fr}
  .ec-console .console-main{padding:18px 14px;overflow-x:clip}
  .ec-console .console-main > *{min-width:0}
  .ec-console .row-2{grid-template-columns:1fr;gap:12px 0}
  .ec-console .console-block{padding:14px}
  .ec-console .ec-step .ec-step-label{font-size:13px}

  /* ★ 移动端：侧栏六步导航 → 吸顶横向滚动步进条（scroll-snap + 自动居中当前步 + 步骤上下文） */
  .ec-console .console-side{
    position:sticky;top:64px;z-index:25;
    padding:10px 10px 12px;border-radius:14px;
    background:rgba(255,255,255,.92);
    -webkit-backdrop-filter:blur(12px) saturate(160%);backdrop-filter:blur(12px) saturate(160%);
    border-color:#E2EAF6;
    box-shadow:0 10px 26px rgba(0,32,128,.12);
  }
  /* 标题/分隔/页脚在移动端隐藏，仅保留步进条 */
  .ec-console .cs-title,
  .ec-console .cs-divider,
  .ec-console .cs-foot{display:none}
  /* 当前步骤上下文：第 N 步 / 共 6 步（JS 注入当前步名） */
  .ec-console .ec-steps-label{
    display:block;padding:2px 6px 9px;
    font-size:12px;font-weight:800;letter-spacing:.4px;color:var(--h-blue);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  /* 创建向导的步骤条在移动端取消吸顶，避免与六步导航「双吸顶」重叠 */
  /* 3 步向导：移动端改为吸顶于「六步导航」正下方（恢复悬浮，不再与六步导航重合）；
     步骤块加 scroll-margin，点击步骤时自动停在六步导航 + 向导之下，不被遮挡 */
  .ec-console .steps-bar{
    position:sticky;top:166px;z-index:20;
    background:rgba(255,255,255,.96);
    -webkit-backdrop-filter:blur(10px) saturate(160%);backdrop-filter:blur(10px) saturate(160%);
    border:1px solid #E2EAF6;border-radius:14px;
    box-shadow:0 10px 26px rgba(0,32,128,.12);
    padding:8px 10px;margin:0 0 14px;
  }
  .ec-console .console-block[data-step]{scroll-margin-top:226px}
  /* 移动端：← 步进行 → 三栏布局，箭头常显、中间行可横滑 */
  .ec-console .ec-steps-bar{
    display:flex;align-items:center;gap:6px;
  }
  .ec-console .ec-step-arrow{
    display:flex;flex:0 0 auto;align-items:center;justify-content:center;
    width:34px;height:44px;border-radius:999px;
    border:1px solid var(--h-line);background:#fff;color:var(--h-blue);
    font-size:22px;line-height:1;font-weight:800;cursor:pointer;
    box-shadow:0 3px 10px rgba(0,32,128,.08);user-select:none;
    transition:transform .12s var(--ease),background .2s;
  }
  .ec-console .ec-step-arrow:not(:disabled):active{transform:scale(.9);background:rgba(0,102,255,.12)}
  .ec-console .ec-step-arrow:disabled{opacity:.3;cursor:default;box-shadow:none}
  .ec-console .ec-steps{
    flex:1 1 auto;min-width:0;
    flex-direction:row;gap:8px;
    overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;padding-bottom:2px;
    scroll-snap-type:x mandatory;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent);
    mask-image:linear-gradient(90deg,transparent,#000 16px,#000 calc(100% - 16px),transparent);
    scroll-behavior:smooth;
  }
  .ec-console .ec-steps.ec-nofade{-webkit-mask-image:none;mask-image:none}
  .ec-console .ec-steps::-webkit-scrollbar{display:none}
  .ec-console .ec-step{
    flex:0 0 auto;margin-bottom:0;padding:10px 15px;min-height:44px;
    border:1px solid var(--h-line);background:#fff;border-radius:999px;
    scroll-snap-align:center;
  }
  .ec-console .ec-step .ec-step-idx{display:none}
  .ec-console .ec-step:not(:last-child)::after{display:none}
  .ec-console .ec-step .ec-step-ico{font-size:17px;filter:grayscale(.15)}
  .ec-console .ec-step .ec-step-label{font-size:13px;white-space:nowrap}
  .ec-console .ec-step.active{
    background:linear-gradient(135deg,var(--h-blue),var(--h-cyan));
    border-color:transparent;box-shadow:0 6px 16px rgba(0,102,255,.3);
  }
  .ec-console .ec-step.active .ec-step-label{color:#fff;font-weight:800}
  .ec-console .ec-step.active .ec-step-ico{filter:none}

  /* 数据表格横向滚动，避免撑破小屏 */
  .ec-console table{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* 修正 Hero 第二个按钮内联 margin-left 在满宽时造成的 10px 横向溢出 */
  .ec-hero .ph-actions .btn{margin-left:0 !important}

  /* ============ 移动端 · 办赛控制台四步细化（create / config / players / matches） ============ */
  /* 创建向导：三步条改为均分一行，避免第三步被挤到下一行 / 不可见 */
  .ec-console .steps-bar .st{flex:1 1 0;min-width:0;padding:8px 4px;font-size:12px}
  /* 创建向导：报名须知条目换行，输入框独占一行，避免拖拽柄 / 序号 / 三个按钮把输入框挤没 */
  .ec-console .note-item{flex-wrap:wrap;align-items:flex-start}
  .ec-console .note-input{flex:1 1 100%;min-width:0}
  .ec-console .note-item .btn{flex:0 0 auto}
  /* 分段控件允许换行，字号/内边距收窄，避免三选项在窄屏互相挤压 */
  .ec-console .seg{flex-wrap:wrap}
  .ec-console .seg label{flex:1 1 auto;min-width:0;padding:8px 4px;font-size:12px}
  /* 对阵树 / 对阵预览：不再强设 480px，round 宽度自适应，单场自动占满，多轮才横向滑动 */
  .ec-console .bracket-zoom{max-width:100%;box-sizing:border-box}
  .ec-console .bracket-scroll{width:100%;max-width:100%;box-sizing:border-box}
  .ec-console .bracket-scroll .bracket{min-width:0}
  .ec-console .bracket .round{min-width:0;flex:0 0 auto;max-width:100%}
  .ec-console .bracket .match{min-width:0;width:100%;box-sizing:border-box}
  /* 选手管理：选手信息卡片改为单列展开，键值上下堆叠，中文不再被 break-all 切碎 */
  .ec-console .pp-grid{grid-template-columns:1fr}
  .ec-console .pp-cell{flex-wrap:wrap;gap:2px 6px}
  .ec-console .pp-k{flex:0 0 100%}
  .ec-console .pp-v{flex:1;min-width:0;word-break:break-word;overflow-wrap:anywhere}
  .ec-console .pp-row{flex-wrap:wrap;align-items:flex-start}
  .ec-console .pp-row .btn{flex:1 1 100%;margin-top:8px}
  .ec-console .pp-stats{flex-wrap:wrap}
  .ec-console .pp-stat{min-width:0}
  .ec-console .tt-stats{gap:10px}
  .ec-console .mini-input{max-width:100%}
  /* 带内联 min-width 的输入框（如游戏数据接入 webhook）强制可收缩，防止窄屏溢出 */
  .ec-console .mini-input[style*="min-width"]{min-width:0 !important}
  .ec-console #gaWebhook{min-width:0 !important;max-width:100%}
  /* 页面配置：自动同步信息键值上下堆叠，避免键名把值挤没 */
  .ec-console .cfg-section-intro .intro-row{flex-wrap:wrap;gap:4px 10px}
  .ec-console .cfg-section-intro .ir-k{flex:0 0 100%;margin-bottom:2px}
  .ec-console .cfg-section-intro .ir-v{flex:1 1 100%}
  .ec-console .cfg-section-intro{grid-template-columns:1fr;column-gap:0}
  /* 页面配置：拖拽式编辑器预览 / 各子块最小宽度归零，确保不超出屏幕 */
  .ec-console .pb-preview,
  .ec-console .pb-main,
  .ec-console .pb-preview-wrap{min-width:0;max-width:100%;box-sizing:border-box}
  .ec-console .pb-preview{overflow:hidden}
  .ec-console .cfg-share{flex-wrap:wrap}
  .ec-console .cfg-share-qr .social-qr-img{max-width:100%;height:auto}
  /* 页面配置：分享卡固定内容输入框强制可收缩，避免 1fr 1fr 网格被输入框默认尺寸撑破导致横向溢出 */
  .ec-console .cfg-sync-item .cbtn{min-width:0}
  .ec-console .cfg-share input{min-width:0}
  /* 页面配置：内联 .flex / .share-btns 按钮组换行，避免多按钮在窄屏被挤掉 / 撑破 */
  .ec-console .flex{display:flex;flex-wrap:wrap;gap:8px}
  .ec-console .share-btns{display:flex;flex-wrap:wrap;gap:8px}
  /* 赛事选择下拉在标题下方占满宽度，避免长赛事名把标题行撑破 */
  .ec-console .event-selector{width:100%;max-width:100%;box-sizing:border-box}
  /* 保险：内容区所有直接子元素均可收缩，杜绝任何残余横向溢出 */
  .ec-console .console-block > *{min-width:0}
  .ec-console .console-block{overflow-x:clip}
}

/* 页面配置：≤600px 进一步收紧，彻底杜绝挤压与横向溢出 */
@media(max-width:600px){
  .ec-console .cfg-sync-item .row-3{grid-template-columns:1fr}
  .ec-console .layout-grid,
  .ec-console .theme-grid,
  .ec-console .tpl-grid.tpl-grid-3{grid-template-columns:1fr}
  .ec-console .layout-thumb{height:72px}
  .ec-console .mod-toggles{flex-direction:column;align-items:flex-start;gap:10px}
  .ec-console .accent-row{flex-wrap:wrap;gap:10px}
  .ec-console .accent-row input[type=color]{width:42px;height:32px}
  .ec-console .qr-actions{flex-wrap:wrap}
  .ec-console .qr-actions .btn,
  .ec-console .qr-upload{flex:1 1 calc(50% - 4px);text-align:center}
  .ec-console .cfg-share{gap:8px}
  .ec-console .cfg-share .btn{flex:1 1 100%}
  .ec-console .share-btns .btn{flex:1 1 calc(50% - 4px)}
  .ec-console .cfg-share-merged{gap:14px}
  .ec-console .cfg-share-qr .social-qr-img{width:140px;height:140px}
  .ec-console .cfg-section-intro .intro-row{padding:10px 0}
}

@media (prefers-reduced-motion: reduce){
  .ec-hero .ph-left,.ec-hero .ph-visual,.ec-console .cc-head,
  .ec-console .console-block,.ec-console .console-kpi .kpi-card{animation:none}
  .ec-magnetic{transition:none}
}

/* =========================================================
   约战大厅 · 对标办赛控制台的顶级视觉与交互升级
   说明：match-hall 页面未被 .host-page 包裹，故在此本地
   定义 --h-* 令牌，修复 .match-card 状态条此前令牌缺失导致的
   取色降级；并把浅蓝流光 / 玻璃态 / 旗舰凸显 / 磁吸 等
   视觉语言与 event-console 拉齐。
   ========================================================= */
.mh-hero,
.content-section.mh-lobby{
  --h-blue:#0066FF;--h-cyan:#00D4FF;--h-pink:#FF2D78;--h-gold:#FFB800;
  --h-bg:#FFFFFF;--h-bg2:#F5F7FB;--h-line:#E8ECF2;
  --h-ink:#111827;--h-ink2:#4B5563;--h-muted:#6B7280;
  --h-green:#00B42A;
}

/* 页面底色：浅蓝流光 + 柔光（与控制台连贯） */
.content-section.mh-lobby{
  position:relative;
  background:
    radial-gradient(820px 360px at 8% -4%, rgba(0,102,255,.06), transparent 60%),
    radial-gradient(760px 340px at 95% 0%, rgba(0,212,255,.07), transparent 60%),
    linear-gradient(180deg,#F5F9FF 0%, #FFFFFF 52%);
  overflow:hidden;
}

/* Hero 专属底色 */
.mh-hero{
  position:relative;
  background:linear-gradient(180deg,#EFF5FF 0%, #F6FAFF 58%, #FFFFFF 100%);
}
.mh-hero .ph-left{animation:ecRise .6s var(--ease) both}
.mh-hero .ph-visual{animation:ecRise .7s var(--ease) .05s both}
/* 图标无底框：取消原卡片光晕（柔光改由 img 的 drop-shadow 提供） */

/* Hero 数据：玻璃态卡片（复用 ec 数值渐变） */
.mh-hero .ph-stats{gap:14px;margin-top:4px}
.mh-hero .ph-stat{
  background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border:1px solid var(--h-line);border-radius:14px;
  padding:12px 18px;min-width:98px;
  box-shadow:0 6px 18px rgba(0,32,128,.06);
}
.mh-hero .ph-stat .num{
  font-size:26px;font-weight:800;line-height:1;
  background:linear-gradient(135deg,var(--h-blue),var(--h-cyan));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.mh-hero .ph-stat .lbl{font-size:12px;color:var(--h-muted);margin-top:6px}
.mh-hero .ph-tag{background:rgba(255,255,255,.72);border-color:rgba(0,102,255,.2);color:var(--h-ink2)}

/* 磁吸 CTA（对标控制台一键创建赛事） */
.mh-magnetic{transition:transform .25s var(--ease),box-shadow .25s var(--ease);will-change:transform}
.mh-magnetic:hover{box-shadow:0 16px 38px rgba(0,102,255,.34)}
.mh-hero .ph-actions .btn-primary.mh-magnetic{box-shadow:0 12px 28px rgba(0,102,255,.3)}

/* 旗舰徽标（凸显拳头板块） */
.mh-flag{
  font-size:11px;font-weight:800;color:#fff;letter-spacing:.5px;vertical-align:middle;
  background:linear-gradient(135deg,var(--h-gold),#FF9A3D);
  padding:3px 10px;border-radius:999px;margin-left:10px;
  box-shadow:0 4px 12px rgba(255,184,0,.35);
}

/* 区块标题：渐变下划线（对标控制台 cc-head） */
.mh-lobby .section-head{animation:ecRise .5s var(--ease) both}
.mh-lobby .section-head h2{position:relative;display:inline-block;font-size:24px}
.mh-lobby .section-head h2::after{
  content:"";position:absolute;left:0;bottom:-9px;width:46px;height:4px;border-radius:2px;
  background:linear-gradient(90deg,var(--h-blue),var(--h-cyan));
}

/* 工具栏 + 筛选器：玻璃态 + 浮起 */
.mh-lobby .match-toolbar,
.mh-lobby .match-filters{
  background:rgba(255,255,255,.86);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  border:1px solid var(--h-line);
  box-shadow:0 8px 24px rgba(0,32,128,.06);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s;
}
.mh-lobby .match-toolbar:hover,
.mh-lobby .match-filters:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(0,32,128,.1);border-color:#DBE6FA}

/* 约战卡片：玻璃态 + 强浮起（修复令牌降级 + 提升质感） */
.mh-lobby .match-card{
  background:rgba(255,255,255,.92);
  border:1px solid var(--h-line);border-radius:18px;
  box-shadow:0 8px 24px rgba(0,32,128,.06);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s;
  animation:ecRise .5s var(--ease) both;
}
.mh-lobby .match-card:hover{
  transform:translateY(-6px);box-shadow:0 18px 44px rgba(0,32,128,.14);border-color:#D6E4FF;
}
.mh-lobby .match-card .mc-info{background:#FAFBFD}
.mh-lobby .match-card:hover .mc-info{background:#F2F7FF}

/* 条约卡：玻璃态浮起增强 */
.mh-lobby .treaty-card{
  background:rgba(255,255,255,.94);
}

/* 入场动画复用 ecRise（已在 ec 升级块定义） */

/* 响应式微调 */
@media(max-width:900px){
  .mh-lobby .match-card{border-radius:16px}
  .mh-flag{font-size:10px;margin-left:6px;padding:2px 8px}
}
@media (prefers-reduced-motion: reduce){
  .mh-hero .ph-left,.mh-hero .ph-visual,.mh-lobby .section-head,
  .mh-lobby .match-card{animation:none}
  .mh-magnetic{transition:none}
}
@media(max-width:600px){
  .treaty-grid{grid-template-columns:1fr}
}

/* ===== 后台独立登录（工具风·克制·与会员前端隔离） ===== */
.admin-login-wrap{display:flex;min-height:100vh;align-items:center;justify-content:center;background:#F5F7FB}
.admin-login-card{width:340px;background:#fff;border:1px solid #E8ECF2;border-radius:14px;padding:32px 28px;box-shadow:0 8px 30px rgba(16,32,72,.08)}
.admin-login-brand{font-size:20px;font-weight:800;color:#111827;margin-bottom:6px}
.admin-login-sub{font-size:13px;color:#6B7280;margin-bottom:24px}
.admin-login-form label{display:block;font-size:13px;color:#4B5563;margin:14px 0 6px}
.admin-login-form .field{width:100%;height:40px;padding:0 12px;border:1px solid #E8ECF2;border-radius:8px;font-size:14px;background:#fff;box-sizing:border-box}
.admin-login-form .field:focus{outline:none;border-color:#0066FF;box-shadow:0 0 0 3px rgba(0,102,255,.12)}
.admin-login-err{display:none;margin-top:14px;padding:10px 12px;background:#FFF0F0;border:1px solid #FFD0D0;border-radius:8px;color:#D92020;font-size:13px}
.admin-login-foot{margin-top:18px;font-size:12px;color:#9CA3AF;text-align:center}
.admin-topnav{background:#fff;border-bottom:1px solid #E8ECF2;box-shadow:0 1px 3px rgba(16,32,72,.04)}
.admin-brand{font-size:16px;font-weight:800;color:#111827}
#adminShell .admin-bar{display:flex;align-items:center;justify-content:space-between;max-width:1300px;margin:0 auto;padding:14px 24px;border-bottom:1px solid #E8ECF2;background:#fff}
#adminShell .admin-who{font-size:14px;font-weight:600;color:#111827}

/* ===== RBAC 角色权限管理（工具风·克制） ===== */
.rbac-layout{display:grid;grid-template-columns:220px 1fr;gap:18px}
.rbac-side{background:#F8FAFC;border:1px solid #E8ECF2;border-radius:10px;padding:14px}
.rbac-side-h{font-size:12px;font-weight:700;color:#6B7280;margin-bottom:10px;letter-spacing:.04em}
.rbac-role{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border:1px solid transparent;border-radius:8px;font-size:14px;cursor:pointer;color:#1F2937;margin-bottom:4px}
.rbac-role:hover{background:#fff}
.rbac-role.active{background:#fff;border-color:#0066FF;color:#0066FF;font-weight:600}
.rbac-role.sys .rbac-role-name::after{content:""}
.rbac-role-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-tag{font-size:10px;background:#EEF2FF;color:#3758F0;border-radius:4px;padding:1px 5px}
.rbac-del{border:none;background:transparent;color:#9CA3AF;cursor:pointer;font-size:12px;line-height:1}
.rbac-del:hover{color:#D92020}
.rbac-new{margin-top:8px;width:100%;padding:7px;border:1px dashed #C7D2E6;border-radius:8px;background:#fff;color:#0066FF;font-size:13px;cursor:pointer}
.rbac-new:hover{border-color:#0066FF;background:#F5F9FF}
.rbac-side-note{font-size:11px;margin-top:12px;line-height:1.5}
.rbac-main-h{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.rbac-main-h .rbac-cur{font-size:16px;font-weight:700;color:#111827}
.rbac-main-h .btn{margin-left:auto}
.rbac-main-h .btn-outline{margin-left:0;margin-right:8px}
.rbac-sys-tip{font-size:12px;background:#FFF7ED;border:1px solid #FFE2C2;color:#B45309;border-radius:8px;padding:8px 10px;margin-bottom:12px}
.rbac-group{margin-bottom:14px}
.rbac-group-h{font-size:13px;font-weight:700;color:#374151;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid #EEF1F6}
.rbac-perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px}
.rbac-perm{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #E8ECF2;border-radius:8px;background:#fff;cursor:pointer;font-size:13px;color:#1F2937}
.rbac-perm:hover{border-color:#C7D2E6}
.rbac-perm.on{border-color:#0066FF;background:#F5F9FF}
.rbac-perm input{accent-color:#0066FF}
.rbac-perm-name{flex:1}
.rbac-perm-key{font-size:10px;color:#9CA3AF}
.btn-ghost{background:transparent;border:1px solid #D5DEEA;color:#374151;border-radius:8px;padding:5px 10px;font-size:12px;cursor:pointer;font-weight:600}
.btn-ghost:hover{border-color:#0066FF;color:#0066FF}
.rbac-ur-list{display:flex;flex-direction:column;gap:6px}
.rbac-ur{display:flex;gap:10px;align-items:center;font-size:13px}
.rbac-ur .muted{font-size:12px}

/* ===== 办赛工具与资料库（#/kb）· 顶级视觉升级（对标 event-console / 约战大厅） ===== */
/* 本地重定义 --h-* 令牌：kb 页未被 .host-page 包裹，原样式此前在令牌缺失下降级 */
.kb-hero, .kb-lobby{
  --h-blue:#0066FF; --h-cyan:#00D4FF; --h-pink:#FF2D78; --h-gold:#FFB800;
  --h-green:#00B42A; --h-line:rgba(0,40,120,.1); --h-ink:#0E1726; --h-ink2:#3A4A5C;
  --h-muted:#6B7A8C; --h-bg2:#F6F9FF;
}
/* Hero：浅蓝流光底色 + 玻璃态数据卡 */
.kb-hero.page-hero{
  background:radial-gradient(900px 420px at 82% -8%,rgba(0,102,255,.1),transparent 60%),
             radial-gradient(700px 380px at 6% 108%,rgba(0,212,255,.12),transparent 60%),
             linear-gradient(135deg,#EDF5FF 0%,#F5FBFF 45%,#FFFFFF 100%);
  padding:84px 0 92px;
}
.kb-hero .ph-stats{display:flex;gap:16px;flex-wrap:wrap}
.kb-hero .ph-stat{
  min-width:120px;padding:16px 20px;border-radius:16px;
  background:rgba(255,255,255,.72);border:1px solid rgba(255,255,255,.9);
  box-shadow:0 8px 24px rgba(0,102,255,.08),0 1px 2px rgba(0,0,0,.04);
  backdrop-filter:blur(12px);
}
.kb-hero .ph-stat .num{font-size:28px;font-weight:900;background:linear-gradient(120deg,#0066FF,#00D4FF);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1;letter-spacing:-.5px}
.kb-hero .ph-stat .lbl{font-size:13px;color:var(--h-muted);margin-top:8px;font-weight:600}
.kb-magnetic{will-change:transform;transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s}
/* 列表区：玻璃态 + 旗舰凸显 + 入场动画 */
.kb-lobby{
  background:radial-gradient(820px 360px at 88% -6%,rgba(0,102,255,.06),transparent 62%),
             radial-gradient(680px 340px at 2% 102%,rgba(0,212,255,.08),transparent 60%);
  padding-bottom:64px;
  margin-top:-8px;
}
.kb-lobby .kb-sidebar{
  background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.9);
  box-shadow:0 10px 30px rgba(0,102,255,.08),0 1px 2px rgba(0,0,0,.04);
  backdrop-filter:blur(14px);
}
.kb-lobby .kb-side-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kb-flag{
  display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:800;
  color:#8A5B00;background:linear-gradient(135deg,#FFEBB0,#FFD36B);
  padding:3px 10px;border-radius:999px;box-shadow:0 3px 10px rgba(255,179,0,.32);white-space:nowrap;
}
.kb-lobby .kb-chips .kb-chip{
  background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.9);
  box-shadow:0 4px 12px rgba(0,102,255,.06);backdrop-filter:blur(8px);
}
.kb-lobby .kb-chips .kb-chip:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(0,102,255,.12);color:var(--h-blue)}
.kb-lobby .kb-card{
  background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.9);
  box-shadow:0 10px 30px rgba(0,102,255,.08),0 1px 2px rgba(0,0,0,.04);
  backdrop-filter:blur(12px);
  transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s;
}
.kb-lobby .kb-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,102,255,.16),0 2px 4px rgba(0,0,0,.05)}
.kb-lobby .kb-card .kb-top .kb-tier{box-shadow:0 2px 8px rgba(0,0,0,.05)}
.kb-lobby .kb-card.paid{background:linear-gradient(180deg,#FFFDF6,#fff);border-color:#FFE0B0}
.kb-lobby .kb-card.paid:hover{box-shadow:0 18px 40px rgba(180,83,9,.14)}
.kb-lobby .kb-sidebar a.kb-side-item.active{background:linear-gradient(120deg,#EAF2FF,#E6FAFF);color:var(--h-blue);font-weight:700}
.kb-lobby .kb-sidebar{animation:kbRise .6s cubic-bezier(.16,1,.3,1) both}
.kb-lobby .kb-chip{animation:kbRise .5s cubic-bezier(.16,1,.3,1) both}
.kb-lobby .kb-card{animation:kbRise .5s cubic-bezier(.16,1,.3,1) both}
.kb-lobby .kb-card:nth-child(2){animation-delay:.05s}
.kb-lobby .kb-card:nth-child(3){animation-delay:.1s}
.kb-lobby .kb-card:nth-child(4){animation-delay:.15s}
.kb-lobby .kb-card:nth-child(5){animation-delay:.2s}
.kb-lobby .kb-card:nth-child(6){animation-delay:.25s}
.kb-lobby .kb-card:nth-child(7){animation-delay:.3s}
.kb-lobby .kb-card:nth-child(8){animation-delay:.35s}
@keyframes kbRise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion: reduce){
  .kb-hero .ph-left,.kb-hero .ph-visual,.kb-lobby .kb-sidebar,.kb-lobby .kb-chip,.kb-lobby .kb-card{animation:none}
  .kb-magnetic{transition:none}
}
@media(max-width:900px){
  .kb-hero.page-hero{padding:52px 0 60px}
  .kb-lobby .kb-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:600px){
  .kb-lobby .kb-grid{grid-template-columns:1fr}
}


/* ===== 办赛控制台 · 页面配置板块重构（H5 / 分享卡） ===== */
.cfg-section-head{ grid-column:1 / -1; margin:6px 0 2px; padding-top:8px; border-top:1px dashed var(--h-line,#e3e8f0); }
.cfg-section-head:first-child{ border-top:none; padding-top:0; }
.cfg-section-head h2{ font-size:17px; margin:0 0 4px; color:var(--h-ink,#111827); }
.cfg-section-head .muted{ font-size:12.5px; line-height:1.6; }
.cfg-sync{ background:#F5F7FB; border:1px solid var(--h-line,#e3e8f0); border-radius:10px; padding:12px 14px; font-size:13.5px; color:var(--h-ink2,#4B5563); line-height:1.6; }
.cfg-sync-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.cfg-sync-item{ background:#F5F7FB; border:1px solid var(--h-line,#e3e8f0); border-radius:10px; padding:12px 14px; }
.cfg-sync-item b{ display:block; font-size:13px; color:var(--h-blue,#0066FF); margin-bottom:4px; }
.cfg-sync-item div{ font-size:13px; color:var(--h-ink2,#4B5563); line-height:1.5; }
.cfg-sync.intro-grid{ display:grid; grid-template-columns:1fr 1fr; gap:6px 18px; }
.intro-row{ display:flex; gap:10px; font-size:13px; padding:3px 0; border-bottom:1px dashed rgba(0,0,0,.05); }
.intro-row .ir-k{ flex:0 0 84px; color:var(--h-blue,#0066FF); font-weight:600; }
.intro-row .ir-v{ flex:1; color:var(--h-ink,#111827); word-break:break-word; }
.poster-preview{ min-height:8px; }
.poster-preview img{ max-width:240px; border-radius:12px; box-shadow:0 10px 30px rgba(0,0,0,.25); }
.pp-stats{ display:flex; gap:10px; margin:8px 0 4px; }
.pp-stat{ flex:1; background:#F5F7FB; border:1px solid var(--h-line,#e3e8f0); border-radius:10px; padding:10px 12px; text-align:center; }
.pp-stat b{ display:block; font-size:20px; color:var(--h-ink,#111827); }
.pp-stat span{ font-size:12px; color:var(--h-ink2,#4B5563); }
.pp-stat.banned b{ color:#E5484D; }
.pp-list{ display:flex; flex-direction:column; gap:8px; }
.pp-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; background:#F5F7FB; border:1px solid var(--h-line,#e3e8f0); border-radius:10px; padding:8px 12px; }
.pp-row.pp-banned{ opacity:.62; background:#fff5f5; border-color:#ffd5d5; }
.pp-info{ flex:1; min-width:0; }
.pp-head{ display:flex; align-items:center; flex-wrap:wrap; gap:6px; font-size:15px; margin-bottom:8px; }
.pp-head .muted{ font-size:12px; font-weight:500; }
.pp-grid{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:6px 14px; }
.pp-cell{ display:flex; gap:6px; font-size:12.5px; line-height:1.45; }
.pp-k{ color:var(--h-ink2,#6B7280); flex:none; }
.pp-v{ color:var(--h-ink,#111827); font-weight:600; word-break:break-all; }
.pp-meta{ display:block; margin-top:6px; font-size:11.5px; color:var(--h-ink2,#9AA3B2); }
@media (max-width:640px){
  .pp-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .pp-row{ align-items:flex-start; }
}

.pp-info{ font-size:13.5px; }
.pp-info .muted{ margin-left:6px; font-size:12px; }
.pp-reason{ font-size:12px; color:#E5484D; margin-top:2px; }
.cfg-share-merged{ display:grid; grid-template-columns:1fr auto; gap:18px; align-items:center; }
.cfg-share-link label{ display:block; font-size:12px; color:var(--h-muted,#6B7280); margin-bottom:6px; }
.cfg-share-link .cfg-share{ margin-bottom:10px; }
.cfg-share-qr{ text-align:center; }
.cfg-share-qr .social-qr-img{ width:140px; height:140px; border-radius:12px; border:1px solid var(--h-line,#e3e8f0); }
.social-qr-h{ font-size:12px; color:var(--h-muted,#6B7280); margin-bottom:8px; }
.pbp-signup-fixed{ position:sticky; bottom:6px; margin-top:10px; }
.pbp-signup-fixed .pbp-signup-btn{ display:block; text-align:center; text-decoration:none; background:linear-gradient(120deg,#FF2D78,#FFB800); color:#fff; font-weight:800; padding:12px; border-radius:24px; box-shadow:0 8px 20px rgba(255,45,120,.3); }
@media(max-width:600px){ .cfg-share-merged{ grid-template-columns:1fr; } .cfg-sync-grid{ grid-template-columns:1fr; } }

/* 板块三 · 报名二维码双区（H5 报名入口 / 微信群·微信，均 1:1） */
.qr-two-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:4px}
.qr-cell{border:1px solid var(--line);border-radius:14px;padding:14px;background:rgba(255,255,255,.55)}
.qr-cell-h{font-weight:700;font-size:14px;margin-bottom:10px;color:var(--ink-2)}
.qr-square{position:relative;display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1/1;background:#F5F7FB;border:1.5px dashed var(--line,#D8E0EE);border-radius:14px;overflow:hidden;margin-bottom:10px;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.qr-square:hover{border-color:var(--blue,#0066FF);background:#fff;box-shadow:0 4px 16px rgba(0,102,255,.10)}
.qr-square img{max-width:78%;max-height:78%;width:auto;height:auto;object-fit:contain;border-radius:12px;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.06)}
.qr-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:18px;color:var(--muted,#7A8AA0);pointer-events:none}
.qr-empty-ico{color:var(--blue,#0066FF)}
.qr-empty-t{font-weight:700;font-size:14px;color:var(--ink-2,#1F2A44)}
.qr-empty-s{font-size:12px;line-height:1.55}
.qr-actions{display:flex;gap:8px;flex-wrap:wrap}
.qr-upload{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
/* 移动端交互优化：即时响应、去除双击缩放、加大点按热区 */
.btn,.qr-square,.qr-upload{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.cfg-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
@media(max-width:600px){
  .qr-two-grid{grid-template-columns:1fr}
  .qr-cell{padding:14px 14px 12px}
  .qr-actions{margin-top:2px}
  .qr-actions .btn{flex:1 1 auto;min-height:44px;justify-content:center}
  .qr-empty-s{font-size:13px}
  .cfg-actions .btn{flex:1 1 auto;min-height:42px;justify-content:center}
}

/* 内容区局部重绘的加载态 */
.ec-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:54px 16px;color:#5b6b85;font-weight:600;font-size:14px}
.ec-loading .spinner{width:18px;height:18px;border:2px solid #E2EAF6;border-top-color:#0066FF;border-radius:50%;animation:ecspin .7s linear infinite}
@keyframes ecspin{to{transform:rotate(360deg)}}
/* 创建赛事内部分步向导：明确标注为「子向导」，避免与顶部六步导航视觉重合 */
.create-wizard{margin-bottom:16px}
.cw-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px;font-size:12.5px;font-weight:800;letter-spacing:.3px;color:#0066FF}
.cw-head .cw-sub{font-weight:500;color:#5b6b85;letter-spacing:0;font-size:12px}
/* 创建向导步骤条：桌面端吸顶悬浮，作为六步导航之下的「子向导」
   （六步导航在左侧栏，故不重合）；步骤块加 scroll-margin，点击步骤不被遮挡 */
.ec-console .steps-bar{
  position:sticky;top:74px;z-index:15;
  background:rgba(255,255,255,.96);
  -webkit-backdrop-filter:blur(10px) saturate(160%);backdrop-filter:blur(10px) saturate(160%);
  border:1px solid #E2EAF6;border-radius:14px;
  box-shadow:0 10px 26px rgba(0,32,128,.12);
  padding:8px 12px;margin:0 0 16px;
}
.ec-console .console-block[data-step]{scroll-margin-top:150px}
