html,body {
    height: 100%;
    width: 100%;

    padding: 0px;
    margin: 0px;
    border: 0px;

    /* background: #888888; */
    background: linear-gradient(145deg, #0f1722 0%, #0a0f17 100%);
}

body {
    background: linear-gradient(145deg, #0f1722 0%, #0a0f17 100%);
    overflow: hidden;         /* 防止滚动条，保证全屏沉浸 */

    min-height: 100vh;

}

/* 更全面的全屏容器样式 */
.container {
  width: 100vw;    /* 视口宽度 */
  height: 100vh;   /* 视口高度 */
  padding: 0;
  margin: 0;
  border: none;
  overflow: hidden;
  box-sizing: border-box; /* 确保尺寸计算包含边框和内边距 */
  position: relative;     /* 便于内部元素定位 */
}

/* Left box - 贴在左侧，垂直居中 */
.promo-box-left {
    position: absolute;
    left: 1px;
    top: 50%;
    transform: translateY(-50%);
    /* background: #4caf50; */
    background: radial-gradient(circle at 30% 10%, #1e2a3a, #0f1820);
    box-shadow: 0 25px 45px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.08);

    width: 250px;
    max-width: 250px;
    overflow: hidden;

    padding: 20px 10px;
    border-radius: 0 12px 12px 0;  /* 右侧圆角 */
    color: white;
    font-weight: bold;
}

/* Right box - 贴在右侧，垂直居中 */
.promo-box-right {
    position: absolute;
    right: 1px;
    top: 50%;
    transform: translateY(-50%);
    /* background: #ff5722; */
    background: radial-gradient(circle at 10% 30%, #1e2a3a, #0f1820);
    box-shadow: 0 25px 45px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.08);

    width: 250px;
    max-width: 250px;
    overflow: hidden;

    padding: 20px 10px;
    border-radius: 12px 0 0 12px;  /* 左侧圆角 */
    color: white;
    font-weight: bold;
}

/* 内容区域 */
.promo-box-inner {
    /* padding: 20px 16px 24px 16px; */
    display: flex;
    flex-direction: column;
    gap: 18px;
}

/* 游戏标题区 + 图标 */
.game-header {
    text-align: center;
    position: relative;
}

.game-icon {
    background: linear-gradient(135deg, #ffb347, #ff7e05);
    width: 64px;
    height: 64px;
    border-radius: 24px;
    margin: 0 auto 12px auto;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 10px 20px rgba(0, 0, 0, 0.3), inset 0 1px 2px rgba(255,255,200,0.5);
    font-size: 2.8rem;
}

.game-title {
    font-size: 1.75rem;
    font-weight: 800;
    letter-spacing: 1px;
    background: linear-gradient(135deg, #FFE6B0, #FFB347);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    text-shadow: 0 1px 2px rgba(0,0,0,0.2);
    margin-bottom: 4px;
}

.game-sub {
    font-size: 0.65rem;
    color: #bdd4e2;
    background: rgba(0,0,0,0.4);
    display: inline-block;
    padding: 4px 12px;
    border-radius: 40px;
    backdrop-filter: blur(2px);
    font-weight: 500;
}

/* 评分徽章行 */
.rating-badge {
    display: flex;
    justify-content: center;
    gap: 12px;
    background: rgba(0, 0, 0, 0.35);
    backdrop-filter: blur(4px);
    border-radius: 60px;
    padding: 8px 12px;
    margin-top: 4px;
}

.star-rating {
    display: flex;
    gap: 4px;
    align-items: center;
}

.stars {
    color: #FFC107;
    font-size: 0.8rem;
    letter-spacing: 2px;
}

.rating-value {
    font-weight: bold;
    color: #f5e7c8;
    font-size: 0.7rem;
}

/* 特色标签 */
.feature-tags {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
}

.tag {
    background: rgba(255, 215, 150, 0.12);
    backdrop-filter: blur(2px);
    border: 0.5px solid rgba(255, 190, 80, 0.4);
    padding: 4px 12px;
    border-radius: 30px;
    font-size: 0.6rem;
    font-weight: 500;
    color: #ffdd99;
}

/* 介绍文案 */
.description {
    background: rgba(10, 20, 15, 0.6);
    backdrop-filter: blur(8px);
    border-radius: 24px;
    padding: 12px 14px;
    text-align: center;
    border: 1px solid rgba(230, 200, 120, 0.3);
}

.desc-text {
    font-size: 0.7rem;
    line-height: 1.45;
    color: #eef3e2;
    margin-bottom: 8px;
}

.feature-highlight {
    display: flex;
    justify-content: space-between;
    margin-top: 8px;
    gap: 8px;
}

.feature-item {
    flex: 1;
    background: rgba(0,0,0,0.4);
    border-radius: 20px;
    padding: 6px 2px;
    text-align: center;
}

.feature-icon {
    font-size: 1rem;
    display: block;
}

.feature-label {
    font-size: 0.55rem;
    color: #dac27c;
    font-weight: 500;
}






/* 主视觉卡片 (模拟游戏截图) */
.visual-showcase {
    background: linear-gradient(145deg, #2a3a2a, #1a2a1a);
    border-radius: 28px;
    padding: 12px 8px;
    border: 1px solid rgba(210, 180, 110, 0.5);
    box-shadow: inset 0 1px 3px rgba(0,0,0,0.5), 0 8px 18px rgba(0,0,0,0.3);
}

.screenshot-mock {
    background: #1a241ccc;
    border-radius: 20px;
    padding: 8px;
}

.cards-preview {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-bottom: 10px;
    flex-wrap: wrap;
}

.mini-card {
    background: linear-gradient(145deg, #f9efcf, #ecdca8);
    width: 70px;
    border-radius: 14px;
    padding: 8px 4px 6px;
    text-align: center;
    box-shadow: 0 6px 0 #876e42;
    transform: rotate(-2deg) perspective(300px);
    transition: all 0.2s;
}

.mini-card:nth-child(2) {
    transform: rotate(3deg) translateY(-2px);
}

.mini-card-emoji {
    font-size: 1.8rem;
}

.mini-card-name {
    font-size: 0.6rem;
    font-weight: bold;
    color: #4a3219;
    margin: 4px 0 2px;
}

.mini-card-stats {
    font-size: 0.55rem;
    display: flex;
    justify-content: center;
    gap: 8px;
    font-weight: 800;
}

.mock-battle {
    background: #0b1a1b;
    border-radius: 36px;
    padding: 6px 8px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 6px;
}

.hp-bubble {
    background: #2c1e1a;
    padding: 4px 10px;
    border-radius: 30px;
    font-size: 0.6rem;
    font-weight: bold;
    color: #ff9f7a;
}

.vs-icon {
    font-size: 0.7rem;
    font-weight: bold;
    background: #c9852b;
    padding: 2px 10px;
    border-radius: 20px;
    color: #1f1b12;
}

/* 主要卖点卡片区 */
.features {
    padding: 8px 16px 12px 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.feature-item {
    background: rgba(255, 248, 225, 0.08);
    backdrop-filter: blur(2px);
    border-radius: 24px;
    padding: 10px 14px;
    display: flex;
    align-items: center;
    gap: 12px;
    border: 1px solid rgba(255, 215, 150, 0.3);
    transition: all 0.2s;
}

.feature-icon {
    font-size: 28px;
    min-width: 40px;
    text-align: center;
}

.feature-text h4 {
    font-size: 0.8rem;
    font-weight: 700;
    color: #ffdd99;
}

.feature-text p {
    font-size: 0.6rem;
    color: #c4d4e8;
    margin-top: 2px;
    line-height: 1.3;
}

/* ========= 轮播图区域 (传说卡牌预览) ========= */
.carousel-container {
    margin: 8px 12px 4px 12px;
    background: linear-gradient(145deg, #0c151d, #091016);
    border-radius: 28px;
    padding: 12px 10px 14px 10px;
    border: 1px solid #ffcf7a40;
    box-shadow: inset 0 1px 2px rgba(0,0,0,0.3), 0 6px 12px rgba(0,0,0,0.2);
}

.carousel-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 12px;
    padding: 0 6px;
}

.carousel-header span {
    font-size: 0.7rem;
    font-weight: 700;
    color: #ffdfaa;
    letter-spacing: 1px;
    background: rgba(0,0,0,0.4);
    padding: 2px 10px;
    border-radius: 30px;
}

.carousel-header small {
    font-size: 0.55rem;
    color: #9bb9d4;
}

/* 轮播核心 */
.carousel {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cards-slider {
    overflow: hidden;
    border-radius: 24px;
    width: 100%;
    touch-action: pan-y pinch-zoom;
}

.slides-wrapper {
    display: flex;
    transition: transform 0.35s cubic-bezier(0.2, 0.9, 0.4, 1.1);
    will-change: transform;
}

/* 单个轮播项 */
.carousel-slide {
    flex: 0 0 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 4px 0;
}


/* ========== Player 区域固定比例 640 : 960 (宽:高) ==========
   需求: 中间 Player 保持 640 * 960 的比例 (宽度640，高度960，即 aspect-ratio: 640 / 960 = 2/3 ≈ 0.6667)
   并且尽可能占满页面的高，可留白左右。布局思路：基于高度优先原则，使用 aspect-ratio 锁定比例，
   同时让播放器高度尽可能占满父容器高度，宽度自适应，且最大宽度不超过视口宽度减去左右安全空间，
   保证不会溢出，且完美居中。

   设计核心：
   播放器外层 .player-wrapper 使用绝对定位铺满全屏 + flex 居中。
   内部 .player-inner 设定:
       height: 100%;               // 优先占满父容器高度（尽可能高）
       width: auto;                // 宽度根据比例自动计算
       aspect-ratio: 640 / 960;   // 强制执行 640:960 比例 (宽:高)
       max-width: 100%;           // 防止宽度超出屏幕，造成水平滚动条
       当高度100%时，宽度自动 = 高度 * (640/960)。如果计算出的宽度超出父容器宽度(max-width:100%生效)，
       则宽度被限制为100%，高度会按比例收缩，保持比例完整。
       在宽屏或普通屏幕下，只要视口宽高比 > 640/960，高度始终占满100%；而视口比例小于比例时宽度受限，
       高度不满，但此时左右留白更多。但这是保证「尽可能占满高度」与「比例不变」的最佳实现，
       完全符合需求描述。
       此外针对竖屏需求（手机竖屏或高窗口），大多场合高度占满，左右留白优雅。
*/
.player-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;   /* 父容器不拦截事件，让实际播放器区域可交互 */
    z-index: 5;
}

/* 播放器核心模块：比例锁定 640x960，背景精美，内容可自定义，圆角阴影 */
.player-inner {
    background: radial-gradient(circle at 30% 20%, #1e3c4c, #0a1c28);
    /* border-radius: 32px; */
    box-shadow: 0 30px 45px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.15);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: #ffffff;
    font-weight: bold;
    text-align: center;
    backdrop-filter: blur(3px);
    transition: all 0.2s ease;
    /* 关键比例: 640(宽) / 960(高) = 2/3  */
    aspect-ratio: 640 / 960;
    /* 高度尽可能占满父容器（实现“尽可能占满页面的高”）*/
    height: 100%;
    width: auto;
    max-width: 100%;
    /* 内部内边距保证内容不紧贴边缘，且不影响比例 */
    padding: 1.5rem;
    box-sizing: border-box;
    /* 柔和边缘发光 */
    /* border: 1px solid rgba(255,255,200,0.2); */
}

/* 播放器内容区装饰动效，提升品质 */
.player-inner:hover {
    box-shadow: 0 35px 55px rgba(0, 0, 0, 0.6), 0 0 0 2px rgba(255,215,0,0.3);
    transition: box-shadow 0.3s;
}

.player-inner h2 {
    font-size: clamp(1.4rem, 6vw, 2.4rem);
    margin: 0.5rem 0 0.25rem;
    font-weight: 700;
    background: linear-gradient(135deg, #FFF, #FFE5B4);
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
    letter-spacing: 2px;
}

.player-inner .ratio-badge {
    font-size: clamp(0.75rem, 3.5vw, 1rem);
    background: rgba(0,0,0,0.5);
    padding: 0.3rem 0.8rem;
    border-radius: 40px;
    margin-top: 0.7rem;
    backdrop-filter: blur(4px);
    font-family: monospace;
    font-weight: normal;
}

.player-inner p {
    font-size: clamp(0.8rem, 3.2vw, 1rem);
    opacity: 0.9;
    margin-top: 0.5rem;
}

/* 右下角添加一个精致小标识表明比例 */
.player-inner .note {
    font-size: 0.7rem;
    margin-top: 1rem;
    opacity: 0.7;
}

/* 响应式布局：在大屏幕下左右盒子显得更精致，小屏幕调整边距避免遮挡视线，但播放器始终完整可见。
   由于左右盒子采用 pointer-events: none，不影响点击，但为避免遮挡内容太严重，媒体查询微调内边距。
   但仍保证绝对定位元素偏移不影响核心比例区。
*/
@media (max-width: 768px) {
    .player-inner {
        border-radius: 28px;
        padding: 1rem;
    }
}

@media (max-width: 550px) {
    .player-inner h2 {
        font-size: 1.2rem;
    }
}

/* 极窄高度设备下，播放器内容缩放得当，字体不溢出 */
@media (max-height: 600px) {
    .player-inner {
        padding: 0.8rem;
    }
    .player-inner h2 {
        font-size: 1rem;
        margin: 0;
    }
    .ratio-badge {
        padding: 0.2rem 0.6rem;
        font-size: 0.65rem;
        margin-top: 0.3rem;
    }
    .player-inner p {
        font-size: 0.65rem;
    }
    .note {
        font-size: 0.6rem;
        margin-top: 0.3rem;
    }
}


/* 底部小字 */
.footer-note {
    text-align: center;
    font-size: 0.7rem;
    color: #6e7f8c;
    border-top: 0.5px solid rgba(255,255,200,0.15);
    padding-top: 10px;
    margin-top: 4px;
}

/* 当屏幕宽度小于 1200px 时，隐藏（display: none;） play_code 元素 */
@media screen and ( max-width: 1200px) {
    .promo-box-left {
        display: none;
    }

    .promo-box-right {
        display: none;
    }
}
