/* ============================================================
 * 电脑版样式（≥768px）
 * ------------------------------------------------------------
 * 本文件是全站「电脑版」设备差异样式的唯一入口，
 * 由 inc/device_css.php 以 media="screen and (min-width: 768px)" 全站加载。
 *
 * 修改约定（务必遵守）：
 *  1. 改电脑版表现 → 只改本文件；改手机版表现 → 只改 mobile.css；
 *     两版共用的公共样式 → assets/css/app.css 或组件自身的基础样式。
 *  2. 页面级规则必须加页面作用域前缀（body.page-xxx），避免串页。
 *  3. 详细约定见 docs/frontend-device-split.md
 * ============================================================ */

/* ---- 全站音乐播放器（灵动岛）：电脑端位置 ---- */
#musicPlayer{
    --mp-top: 12px;    /* 距顶部距离，越大越靠下 */
    --mp-right: 14px;  /* 距右侧距离，越大越靠左 */
}

/* ---- 电脑端展开面板：上移对齐，使头部专辑封面圆心与折叠态封面圆心重合 ----
   ★ 改「电脑版」展开面板大小：改下面 width 的 320px；
     面板高度由内容决定（歌词区高度在 inc/music.php 基础样式 .mp-lyrics{height:96px}） */
#musicPlayer .music-panel{ top:-14px; right:-14px; width:320px; }

/* ============================================================
 * 电脑版：内容区宽度与多列布局
 * ------------------------------------------------------------
 * 背景：各页面在自带的内联 <style> 里定义 .container 宽度（640–1080px），
 * 内联样式位于 <head> 之后，同级特异性下会覆盖本文件；因此这里统一加
 * body.page-xxx 前缀提高特异性（约定允许，见 docs/frontend-device-split.md
 * 第二节第 5 条），不使用 !important。
 * 页面 <body> 类名一律为下划线式，如 page-food_detail。
 * ============================================================ */

/* ---- 1) 浏览/列表类页面：≥1024px 放宽内容区，让页内 auto-fill 网格多排一列 ---- */
@media (min-width: 1024px) {
    body.page-food .container,
    body.page-events .container,
    body.page-listings .container,
    body.page-music .container      { max-width: 1120px; }

    body.page-hero .container       { max-width: 1200px; }

    body.page-about .container,
    body.page-chat .container,
    body.page-chat_room .container,
    body.page-court .container,
    body.page-discipline .container { max-width: 1040px; }

    body.page-credits .container,
    body.page-year_review .container,
    body.page-food_detail .container,
    body.page-events_detail .container,
    body.page-hero_detail .container{ max-width: 960px; }
}

/* ---- 2) 超宽屏（≥1440px）：再放宽一档，避免两侧留白过大 ---- */
@media (min-width: 1440px) {
    body.page-food .container,
    body.page-events .container,
    body.page-listings .container,
    body.page-music .container      { max-width: 1260px; }

    body.page-hero .container       { max-width: 1320px; }

    body.page-about .container,
    body.page-chat .container,
    body.page-chat_room .container,
    body.page-court .container,
    body.page-discipline .container { max-width: 1140px; }
}

/* ---- 3) 首页信息流：保持「一行一列 + 窄栏居中」 ----
   2026-09-12 按站长要求回退：V4 曾在此引入 ≥1024px 双列 / ≥1600px 三列并加宽容器，
   导致桌面端首页由「一行一列」变为「一行三列」。如需恢复多列，取消下面整段注释即可。 */
/*
@media (min-width: 1024px) {
    body.page-index header .max-w-4xl,
    body.page-index main.max-w-4xl  { max-width: 78rem; }

    body.page-index #postsContainer.space-y-6 {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 1.5rem;
        align-items: start;
    }
    body.page-index #postsContainer.space-y-6 > * + * { margin-top: 0; }
}

@media (min-width: 1600px) {
    body.page-index header .max-w-4xl,
    body.page-index main.max-w-4xl  { max-width: 94rem; }

    body.page-index #postsContainer.space-y-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
*/

/* ---- 4) 帖子详情 / 个人中心：≥1280px 适度加宽（正文阅读宽度不宜过宽） ---- */
@media (min-width: 1280px) {
    body.page-detail header .max-w-4xl,
    body.page-detail main.max-w-4xl   { max-width: 64rem; }

    body.page-profile header .max-w-4xl,
    body.page-profile main.max-w-4xl  { max-width: 68rem; }
}

/* ---- 5) 指针设备（鼠标）悬停反馈；触屏不触发 ---- */
@media (hover: hover) and (pointer: fine) {
    body.page-index #postsContainer .post-card {
        transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    body.page-index #postsContainer .post-card:hover {
        transform: translateY(-3px);
        box-shadow: 0 12px 30px rgba(var(--primary-rgb, 179, 157, 219), 0.30);
    }
}
@media (prefers-reduced-motion: reduce) {
    body.page-index #postsContainer .post-card { transition: none; }
    body.page-index #postsContainer .post-card:hover { transform: none; }
}

/* ============================================================
 * 校草/校花评比：电脑版（≥768px）
 * ------------------------------------------------------------
 * 页面 <body> 类名：page-contest（评比主页）/ page-contest_entry（投稿页）。
 * 两版共用的组件基础样式在 inc/contest_style.php（随页面内联加载），
 * 本文件只放「电脑版差异」，手机版差异在 mobile.css。
 * ============================================================ */

@media (min-width: 768px) {
    /* 内容区放宽：评比主页容纳多列候选人网格 */
    body.page-contest .container       { max-width: 1000px; }
    body.page-contest_entry .container { max-width: 820px; }

    /* 候选人由手机版 2 列放宽到 3 列 */
    body.page-contest .ct-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }

    /* 大屏下标题与承诺书阅读区同步放大 */
    body.page-contest .ct-title           { font-size: 1.6rem; }
    body.page-contest .ct-terms-box       { max-height: 320px; }
    body.page-contest_entry .ct-terms-box { max-height: 340px; }

    /* 头部横向排布（手机版为上下堆叠） */
    body.page-contest .ct-head { flex-direction: row; align-items: flex-start; }
    body.page-contest .ct-head-actions { align-self: auto; }
    body.page-contest .ct-submit-btn { display: inline-block; text-align: left; }

    /* 简介滚动区高度（电脑版）：卡片更宽 → 多显示一行 */
    body.page-contest .ct-bio { height: 68px; }
}

@media (min-width: 1024px) {
    body.page-contest .container { max-width: 1120px; }
    body.page-contest .ct-grid   { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* 指针设备（鼠标）：悬停反馈；触屏不触发 */
@media (hover: hover) and (pointer: fine) {
    body.page-contest .ct-card {
        transition: transform 0.2s ease, box-shadow 0.2s ease;
    }
    body.page-contest .ct-card:hover {
        transform: translateY(-3px);
        box-shadow: 0 12px 30px rgba(var(--primary-rgb, 102, 187, 106), 0.22);
    }
    body.page-contest .ct-submit-btn:not(.disabled):hover { opacity: 0.9; }
    body.page-contest .ct-vote-btn:not(:disabled):hover   { opacity: 0.9; }
    body.page-contest .ct-tab:not(.active):hover,
    body.page-contest .ct-filter:not(.active):hover       { background: #f8fafc; }
}
@media (prefers-reduced-motion: reduce) {
    body.page-contest .ct-card,
    body.page-contest .ct-card:hover { transition: none; transform: none; }
}
