/**
 * 全站响应式：手机 / 平板 / 桌面
 * 断点：576 手机大 | 768 平板 | 1024 桌面 | 1280 宽屏
 */

/* —— 基础 —— */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
body {
  overflow-x: hidden;
}

/* 手机端：禁止按住拖动整页、橡皮筋回弹、横向滑移 */
@media (max-width: 767px) {
  html {
    overscroll-behavior: none;
    overflow-x: hidden;
    width: 100%;
  }
  body {
    overscroll-behavior: none;
    overflow-x: hidden;
    touch-action: pan-y;
    width: 100%;
    max-width: 100%;
    position: relative;
  }
  .site-header,
  .mobile-bottom-nav,
  .breadcrumb-bar {
    touch-action: manipulation;
  }
  img,
  video,
  svg,
  a.logo {
    -webkit-user-drag: none;
    user-drag: none;
    -webkit-touch-callout: none;
  }
  .article-body,
  .article-body p,
  .article-body li,
  .comments-item,
  input,
  textarea {
    -webkit-user-select: text;
    user-select: text;
    -webkit-touch-callout: default;
  }
  .live-table-wrap,
  .hs-table-wrap,
  .article-page .pick-data,
  .ai-pick-table-wrap,
  .pick-analysis,
  .admin-table-wrap {
    touch-action: pan-x pan-y;
  }
}
img,
video,
svg {
  max-width: 100%;
  height: auto;
}
.site-main {
  min-height: calc(100vh - 48px - 120px);
}

/* —— 导航：≤1023 抽屉菜单，≥1024 横排 —— */
@media (max-width: 1023px) {
  .site-header {
    position: sticky;
  }
  .header-inner {
    position: relative;
    flex-wrap: nowrap;
    gap: 8px;
    height: 48px;
  }
  .header-brand {
    min-width: 0;
    max-width: calc(100% - 52px);
    flex: 1 1 auto;
  }
  .logo {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .logo--text {
    font-size: clamp(0.86rem, 3.6vw, 1rem);
    letter-spacing: 0;
  }
  .logo img {
    max-height: 34px;
    width: auto;
  }
  .main-nav {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    margin-left: 0;
    flex-direction: column;
    align-items: stretch;
    padding: 8px 12px 16px;
    background: #ffffff;
    border-top: 1px solid #e5e7eb;
    box-shadow: 0 10px 24px rgba(17, 24, 39, 0.16);
    max-height: min(70vh, calc(100dvh - 48px));
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    z-index: 200;
  }
  .main-nav.open {
    display: flex;
  }
  .main-nav a {
    margin-left: 0;
    padding: 12px 8px;
    font-size: 0.95rem;
    border-bottom: 1px solid #f1f5f9;
    color: #374151;
    font-weight: 600;
  }
  .main-nav a:last-child {
    border-bottom: none;
  }
  .nav-toggle {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 44px;
    min-height: 44px;
  }
  body.nav-open {
    overflow: hidden;
  }
  body.nav-open::before {
    content: '';
    position: fixed;
    inset: 48px 0 0;
    background: rgba(17, 24, 39, 0.35);
    z-index: 99;
  }
}

@media (min-width: 1024px) {
  .header-inner {
    height: 58px;
  }
  .main-nav {
    display: flex !important;
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 0;
  }
  .main-nav a {
    margin-left: 8px;
    font-size: 0.8rem;
    white-space: nowrap;
  }
  .nav-toggle {
    display: none !important;
  }
}

@media (min-width: 1280px) {
  .main-nav a {
    margin-left: 10px;
    font-size: 0.82rem;
  }
}

/* —— 容器与排版 —— */
@media (max-width: 575px) {
  .container {
    padding-left: 10px;
    padding-right: 10px;
  }
  .section-title {
    font-size: 0.95rem;
  }
  h1.section-title {
    font-size: 1.05rem;
  }
  .main-nav a {
    flex-basis: calc((100% - 12px) / 3);
    min-width: calc((100% - 12px) / 3);
    font-size: 0.78rem;
  }
  .admin-kpi-grid {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 576px) and (max-width: 767px) {
  .container {
    padding-left: 14px;
    padding-right: 14px;
  }
}

/* —— 全站移动端兜底（内容/后台/会员） —— */
@media (max-width: 767px) {
  * {
    box-sizing: border-box;
  }
  .site-header {
    position: static;
    top: auto;
    margin-bottom: 1cm;
  }
  html {
    font-size: 15px;
  }
  body {
    line-height: 1.6;
  }
  .container {
    width: 100%;
    max-width: none;
  }
  .section-title,
  .page-h1 {
    line-height: 1.35;
  }
  .header-inner {
    flex-wrap: wrap;
    height: auto;
    min-height: 48px;
    padding-top: 4px;
    padding-bottom: 4px;
  }
  .header-brand {
    max-width: 100%;
    flex: 1 1 100%;
  }
  .nav-toggle {
    display: none !important;
  }
  .main-nav {
    display: flex !important;
    position: static;
    margin-left: 0;
    width: 100%;
    flex: 1 1 100%;
    flex-direction: row;
    align-items: stretch;
    justify-content: flex-start;
    gap: 6px;
    padding: 0;
    border-top: 0;
    box-shadow: none;
    background: transparent;
    overflow: visible;
    white-space: normal;
    flex-wrap: wrap;
    max-height: none;
  }
  .main-nav a {
    flex: 0 0 calc((100% - 18px) / 4);
    min-width: calc((100% - 18px) / 4);
    margin-left: 0;
    margin-right: 0;
    padding: 7px 6px;
    font-size: 0.8rem;
    border-bottom: 0;
    border-radius: 8px;
    background: #f8fafc;
    text-align: center;
    line-height: 1.2;
  }
  .main-nav .nav-item--mobile-extra {
    display: none;
  }
  .main-nav a.is-active {
    color: #d71920;
    background: #fff1f1;
    box-shadow: inset 0 0 0 1px #ffd7d7;
    font-weight: 700;
  }
  .main-nav::-webkit-scrollbar {
    display: none;
  }
  body.nav-open::before {
    display: none;
  }
  .portal-grid,
  .match-page .match-grid,
  .season-ad-grid,
  .recent-form-grid,
  .sport-hub-cards,
  .sitemap-links {
    grid-template-columns: 1fr !important;
  }
  .transfer-roster li {
    grid-template-columns: 46px minmax(0, 1fr);
    padding: 10px;
  }
  .transfer-roster .tr-meta {
    flex-wrap: wrap;
    gap: 4px 8px;
  }
  .member-auth-page {
    padding: 14px 0 24px;
  }
  .member-auth-card,
  .member-area-header,
  .member-my-comments,
  .ad-admin-card,
  .article-card,
  .topic-section,
  .transfer-league-block,
  .internal-hub,
  .internal-related,
  .col-side section,
  .home-standings {
    padding: 14px;
    border-radius: 10px;
  }
  .ad-admin-page {
    padding: 12px 0 24px;
  }
  .ad-admin-actions {
    flex-direction: column;
    align-items: stretch;
  }
  .ad-admin-actions .btn,
  .ad-admin-actions button,
  .ad-admin-actions a.btn {
    width: 100%;
    text-align: center;
  }
  .admin-kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .admin-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .admin-table {
    min-width: 680px;
  }
  .ad-admin-edit-table {
    min-width: 920px;
  }
  .ad-admin-thumb {
    width: 72px;
    height: 48px;
  }
  .admin-rich-editor {
    min-height: 260px;
  }
  .article-page .article-body table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    white-space: nowrap;
  }
  .article-page .article-body pre {
    white-space: pre-wrap;
    word-break: break-word;
  }
  .article-page .article-head h1 {
    font-size: 1.18rem;
    line-height: 1.4;
  }
  .article-body {
    font-size: 0.95rem;
  }
  .article-body p {
    margin-bottom: 0.72rem;
  }
  .article-body h2 {
    font-size: 1.06rem;
  }
  .article-body h3 {
    font-size: 0.98rem;
  }
  .article-page iframe {
    max-width: 100%;
  }
  input[type='text'],
  input[type='tel'],
  input[type='password'],
  input[type='url'],
  select,
  textarea,
  .btn,
  button {
    min-height: 42px;
    font-size: 0.94rem;
  }
  .member-form input[type='text'],
  .member-form input[type='tel'],
  .member-form input[type='password'],
  .ad-admin-form input[type='text'],
  .ad-admin-form input[type='url'],
  .admin-select,
  .admin-textarea {
    padding: 10px 11px;
  }
  .comments-item,
  .member-comment-list li {
    padding: 11px 0;
  }
  .mobile-bottom-nav {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9999;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 0;
    border-top: 1px solid #e5e7eb;
    background: #ffffff;
    box-shadow: 0 -2px 10px rgba(15, 23, 42, 0.08);
    padding-bottom: env(safe-area-inset-bottom);
  }
  .mobile-bottom-nav__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 56px;
    padding: 4px 3px;
    text-align: center;
    font-size: 0.7rem;
    line-height: 1.25;
    color: #334155;
    text-decoration: none;
    border-right: 1px solid #f1f5f9;
    gap: 2px;
  }
  .mobile-bottom-nav__icon {
    display: block;
    font-size: 1.05rem;
    line-height: 1;
    filter: grayscale(100%);
    opacity: 0.8;
  }
  .mobile-bottom-nav__label {
    display: block;
    font-size: 0.66rem;
    line-height: 1.15;
    white-space: nowrap;
    transform: scale(0.96);
    transform-origin: center;
  }
  .mobile-bottom-nav__item:last-child {
    border-right: 0;
  }
  .mobile-bottom-nav__item.is-active {
    color: #2563eb;
    font-weight: 700;
    background: #f0f7ff;
  }
  .mobile-bottom-nav__item.is-active .mobile-bottom-nav__icon {
    filter: none;
    opacity: 1;
  }
  .site-main {
    padding-top: 1cm;
    padding-bottom: calc(68px + env(safe-area-inset-bottom));
  }
  .site-footer {
    margin-bottom: calc(68px + env(safe-area-inset-bottom));
  }
  .breadcrumb-bar {
    margin-top: 0;
  }
  .footer-disclaimer {
    font-size: 0.66rem;
    line-height: 1.55;
  }
  .finished-date-tabs {
    gap: 6px;
    margin-bottom: 10px;
  }
  .finished-date-tab {
    min-width: calc((100% - 30px) / 4);
    flex: 1 1 calc((100% - 30px) / 4);
    padding: 7px 6px;
  }
  .finished-date-tab__label {
    font-size: 0.78rem;
  }
  .finished-date-tab__count {
    font-size: 0.68rem;
  }
}

/* —— 首页双栏 —— */
@media (min-width: 768px) and (max-width: 1023px) {
  .portal-grid {
    grid-template-columns: 1fr minmax(220px, 280px);
    gap: 14px;
  }
}

@media (min-width: 1280px) {
  .portal-grid {
    grid-template-columns: 1fr 320px;
  }
}

/* —— 资讯卡片（手机：上图下文，图片不溢出） —— */
@media (max-width: 767px) {
  .home-portal,
  .portal-grid,
  .col-main,
  .home-feed,
  .home-predictions {
    max-width: 100%;
    min-width: 0;
  }
  .home-feed .article-card,
  .home-predictions .article-card {
    overflow: hidden;
    max-width: 100%;
  }
  .article-card-link {
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    max-width: 100%;
    min-width: 0;
  }
  .article-card-text {
    width: 100%;
    min-width: 0;
  }
  .article-card h3,
  .article-card p {
    word-break: break-word;
    overflow-wrap: anywhere;
  }
  .article-thumb,
  .article-card--dense .article-thumb {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 9;
    max-height: none;
    object-fit: cover;
    object-position: center;
    flex-shrink: 1;
  }
  .article-card h3 {
    font-size: 0.92rem;
  }
}

@media (max-width: 575px) {
  .article-thumb {
    max-height: 220px;
  }
  .article-card--dense .article-thumb {
    max-height: 200px;
  }
  .article-page .article-head{
    padding:12px;
  }
  .article-page .article-head h1{
    font-size:1.2rem;
  }
  .article-page .article-meta-line{
    gap:8px;
    font-size:.78rem;
  }
}

/* —— 即时比分表格（横向滑动） —— */
.live-table-wrap {
  -webkit-overflow-scrolling: touch;
  overflow-x: auto;
  overscroll-behavior-x: contain;
}

@media (max-width: 767px) {
  .live-table {
    min-width: 580px;
    font-size: 12px;
  }
  .live-table th,
  .live-table td {
    padding: 8px 5px;
  }
  .live-table .col-league {
    width: 12%;
    font-size: 11px;
  }
  .live-table .col-odds {
    font-size: 10px;
  }
  .live-table .team-logo {
    width: 18px;
    height: 18px;
  }
  .live-table .score {
    font-size: 14px;
  }
  .live-page-head {
    flex-direction: column;
    align-items: stretch;
  }
  .btn-refresh-board {
    width: 100%;
    text-align: center;
  }
  .live-page .live-table-wrap::after {
    content: '← 左右滑动查看完整表格 →';
    display: block;
    text-align: center;
    font-size: 0.7rem;
    color: #adb5bd;
    padding: 6px 0 2px;
  }
}

@media (max-width: 380px) {
  .live-table {
    min-width: 520px;
  }
  .logo {
    max-width: 100%;
  }
  .logo--image img {
    max-height: 30px;
  }
}

/* —— Logo 精细分档（320 / 375 / 390 / 414） —— */
@media (max-width: 359px) {
  .header-inner {
    height: 46px;
  }
  .logo--text {
    font-size: 0.88rem;
  }
  .logo--image img {
    max-height: 28px;
  }
  .main-nav {
    max-height: min(70vh, calc(100dvh - 46px));
  }
  body.nav-open::before {
    inset: 46px 0 0;
  }
}

@media (min-width: 360px) and (max-width: 389px) {
  .header-inner {
    height: 48px;
  }
  .logo--text {
    font-size: 0.92rem;
  }
  .logo--image img {
    max-height: 30px;
  }
}

@media (min-width: 390px) and (max-width: 413px) {
  .header-inner {
    height: 50px;
  }
  .logo--text {
    font-size: 0.96rem;
  }
  .logo--image img {
    max-height: 32px;
  }
  .main-nav {
    max-height: min(70vh, calc(100dvh - 50px));
  }
  body.nav-open::before {
    inset: 50px 0 0;
  }
}

@media (min-width: 414px) and (max-width: 575px) {
  .header-inner {
    height: 52px;
  }
  .logo--text {
    font-size: 1rem;
  }
  .logo--image img {
    max-height: 34px;
  }
  .main-nav {
    max-height: min(70vh, calc(100dvh - 52px));
  }
  body.nav-open::before {
    inset: 52px 0 0;
  }
}

/* —— 比分牌 / 比赛页 —— */
@media (max-width: 575px) {
  .scoreboard {
    flex-direction: column;
    gap: 10px;
    padding: 12px;
  }
  .score-big {
    font-size: 1.65rem;
  }
  .match-page .match-grid {
    gap: 12px;
  }
  .stats-panel,
  .events-timeline,
  .lineups,
  .h2h,
  .ai-content,
  .match-odds-panel,
  .season-attack-defence,
  .recent-form {
    padding: 12px;
  }
}

@media (min-width: 768px) and (max-width: 899px) {
  .match-page .match-grid {
    grid-template-columns: 1fr;
  }
}

/* 数据表横向滚动 */
.table-scroll-wrap,
.ai-pick-table-wrap,
.article-page .pick-data,
.pick-h2h,
.pick-data {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 767px) {
  .live-table {
    width: 100%;
    min-width: 0;
    table-layout: fixed;
  }
  .live-table .col-odds,
  .live-table .col-watch {
    display: none;
  }
  .live-table th,
  .live-table td {
    padding: 6px 4px;
    vertical-align: middle;
  }
  .live-table .col-league {
    width: 18%;
    font-size: 0.72rem;
    word-break: break-word;
  }
  .live-table .col-time {
    width: 20%;
    font-size: 0.74rem;
  }
  .live-table .col-status {
    width: 16%;
    font-size: 0.75rem;
  }
  .live-table .col-home,
  .live-table .col-away {
    width: 20%;
  }
  .live-table .col-score {
    width: 14%;
    text-align: center;
  }
  .live-table .team-cell {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
  }
  .live-table .team-cell a {
    min-width: 0;
    font-size: 0.78rem;
    line-height: 1.25;
    word-break: break-word;
  }
  .live-table .team-logo {
    width: 16px;
    height: 16px;
    flex-shrink: 0;
  }
  .article-page .article-body table {
    display: block;
    width: max-content;
    max-width: 100%;
    min-width: 100%;
    overflow-x: auto;
    border-collapse: collapse;
    -webkit-overflow-scrolling: touch;
  }
  .article-page .article-body th,
  .article-page .article-body td {
    white-space: normal;
    word-break: break-word;
  }
  .data-table,
  .stats-table,
  .lineup-table,
  .odds-books-table,
  .ai-pick-table,
  .hs-table {
    font-size: 0.78rem;
  }
  .data-table th,
  .data-table td,
  .stats-table th,
  .stats-table td {
    padding: 6px 4px;
  }
}

/* —— 面包屑 —— */
@media (max-width: 767px) {
  .breadcrumb-bar {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
  }
  .breadcrumb {
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    line-height: 1.5;
  }
  .breadcrumb-quick {
    flex-wrap: wrap;
    gap: 6px;
  }
  .breadcrumb-quick a {
    font-size: 0.75rem;
    padding: 5px 10px;
  }
}

/* —— 世界杯倒计时 —— */
@media (max-width: 575px) {
  .wc-countdown {
    padding: 20px 12px;
  }
  .wc-countdown-title {
    font-size: 1.2rem;
  }
  .wc-countdown-grid {
    gap: 8px;
  }
  .wc-countdown-unit {
    min-width: 58px;
    padding: 8px 4px;
  }
  .wc-countdown-num {
    font-size: 1.45rem;
  }
}

/* —— 页脚 —— */
@media (max-width: 575px) {
  .footer-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .site-footer {
    padding: 20px 0;
    font-size: 0.75rem;
  }
  .footer-disclaimer {
    font-size: 0.68rem;
  }
}

@media (min-width: 576px) and (max-width: 767px) {
  .footer-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* —— 列表 / 预测 / TAG —— */
@media (max-width: 575px) {
  .news-list-page .pagination {
    flex-wrap: wrap;
    gap: 8px;
    font-size: 0.85rem;
  }
  .sport-hub-cards {
    grid-template-columns: 1fr;
  }
  .sport-switch {
    gap: 6px;
  }
  .sport-pill {
    font-size: 0.8rem;
    padding: 5px 12px;
  }
  .transfer-list a {
    flex-wrap: wrap;
  }
  .transfer-list time {
    width: 100%;
    margin-top: 4px;
  }
  .goal-toast-stack {
    left: 12px;
    right: 12px;
    top: 52px;
    max-width: none;
  }
}

/* —— 文章详情 —— */
@media (max-width: 575px) {
  .article-page .article-lead {
    font-size: 0.95rem;
    padding-left: 10px;
  }
  .article-page .article-cover img {
    max-height: none;
    width: 100%;
    height: auto;
    object-fit: contain;
  }
  .article-body h2 {
    font-size: 1.05rem;
  }
  .pick-context-line {
    font-size: 0.92rem;
    padding: 10px 12px;
  }
}

/* —— 积分榜侧栏 —— */
@media (max-width: 767px) {
  .home-standings .hs-tabs {
    gap: 12px;
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
  }
  .home-standings .hs-tab {
    flex-shrink: 0;
  }
  .hs-leagues {
    overflow-x: auto;
    flex-wrap: nowrap;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
  }
  .hs-league {
    flex-shrink: 0;
  }
}

/* —— 手机比分卡片模式（强覆盖） —— */
@media (max-width: 767px) {
  .live-page .live-table-wrap {
    overflow: visible !important;
  }
  .live-page .live-table-wrap::after {
    display: none !important;
    content: none !important;
  }
  .live-page .live-table {
    width: 100% !important;
    min-width: 0 !important;
    border: 0;
    background: transparent;
  }
  .live-page .live-table thead {
    display: none;
  }
  .live-page .live-table tbody,
  .live-page .live-table tr {
    display: block;
    width: 100%;
  }
  .live-page .live-table tr.live-row {
    margin: 0 0 10px;
    padding: 8px 10px;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
  }
  .live-page .live-table td {
    display: grid !important;
    grid-template-columns: 62px 1fr;
    align-items: center;
    justify-content: stretch;
    width: 100% !important;
    min-height: 30px;
    padding: 4px 0;
    border: 0;
    text-align: center;
    gap: 8px;
    font-size: 0.95rem;
  }
  .live-page .live-table td::before {
    color: #64748b;
    font-size: 0.86rem;
    font-weight: 600;
    line-height: 1.2;
    text-align: left;
    width: 62px;
  }
  .live-page .live-table td:nth-child(1)::before { content: "赛事"; }
  .live-page .live-table td:nth-child(2)::before { content: "时间"; }
  .live-page .live-table td:nth-child(3)::before { content: "盘口"; }
  .live-page .live-table td:nth-child(4)::before { content: "状态"; }
  .live-page .live-table td:nth-child(5)::before { content: "主队"; }
  .live-page .live-table td:nth-child(6)::before { content: "比分"; }
  .live-page .live-table td:nth-child(7)::before { content: "客队"; }
  .live-page .live-table td:nth-child(8)::before { content: "直播"; }
  .live-page .live-table .col-odds,
  .live-page .live-table .col-watch {
    display: flex !important;
  }
  .live-page .live-table .team-cell {
    justify-content: center;
    gap: 6px;
    min-width: 0;
  }
  .live-page .live-table .team-cell a {
    font-size: 0.96rem;
    line-height: 1.25;
    word-break: break-word;
  }
  .live-page .live-table .team-logo {
    width: 18px;
    height: 18px;
  }
  .live-page .live-table .score {
    font-size: 1.2rem;
    font-weight: 700;
  }
  .live-page--basketball .live-table td {
    font-size: 1rem;
  }
  .live-page--basketball .live-table .score {
    font-size: 1.28rem;
  }
}

/* —— 触控友好 —— */
@media (pointer: coarse) {
  a,
  button,
  .chip,
  .hs-league,
  .hs-tab {
    -webkit-tap-highlight-color: transparent;
  }
}

/* —— 刘海屏安全区 —— */
@supports (padding: env(safe-area-inset-left)) {
  .site-header .container {
    padding-left: max(12px, env(safe-area-inset-left));
    padding-right: max(12px, env(safe-area-inset-right));
  }
  .site-footer .container {
    padding-bottom: env(safe-area-inset-bottom);
  }
  .goal-toast-stack {
    top: calc(52px + env(safe-area-inset-top));
  }
}

/* —— 横屏小屏 —— */
@media (max-height: 500px) and (orientation: landscape) and (max-width: 900px) {
  .main-nav.open {
    max-height: calc(100dvh - 48px);
  }
}

/* —— 打印 —— */
@media print {
  .site-header,
  .nav-toggle,
  .breadcrumb-quick,
  .btn-refresh-board,
  .goal-toast-stack {
    display: none !important;
  }
  .live-table-wrap {
    overflow: visible;
  }
  .live-table {
    min-width: 0;
    font-size: 10pt;
  }
}
