/* base.css — 基础层：CSS 变量、reset、字体、根字号、deck/slide 引擎、章节过渡页。
   加载顺序：base → components → slides → ui → responsive → ppt-frame → tpl-* → layout-fit。 */

  * { margin: 0; padding: 0; box-sizing: border-box; }
  :root {
    /* 北大红 PPT 模板 theme2 */
    --pku-red: #7e181c;
    --pku-red-dark: #5f1215;
    --pku-red-light: #dc4a4f;
    --pku-red-soft: #fdf5f5;
    --pku-gold: #c9a227;
    --primary: #7e181c;
    --primary-light: #dc4a4f;
    --primary-dark: #5f1215;
    --secondary: #dc4a4f;
    --accent: #7e181c;
    --success: #7e181c;
    --danger: #dc2626;
    --deyu-gold: #c9a227;
    --bg: #ffffff;
    --bg-card: #ffffff;
    --text: #1a1a1a;
    --text-secondary: #64748b;
    --border: #e8e0e0;
    --shadow: 0 1px 2px rgba(15,23,42,0.04), 0 4px 16px -4px rgba(126,24,28,0.1);
    --shadow-lg: 0 10px 30px -10px rgba(126,24,28,0.2);
    --slide-pad-x: clamp(16px, 2.5vw, 48px);
    --slide-pad-y: clamp(12px, 2vh, 32px);
    --content-max: min(1800px, 98vw);
    /* 外层灰边（与目录/内容页一致，全课件统一） */
    --ppt-slide-outer-y: clamp(20px, 3vh, 36px);
    --ppt-slide-outer-x: clamp(28px, 3.5vw, 48px);
    --ppt-slide-bg: #ececec;
    --ppt-frame-pad-x: clamp(24px, 3vw, 40px);
    --ppt-frame-pad-y-top: clamp(20px, 2.8vh, 32px);
    --ppt-frame-pad-y-bottom: clamp(16px, 2vh, 24px);
  }
  html {
    font-size: clamp(24px, calc(1.55vmin + 0.78vw), 35px);
  }
  html, body { height: 100%; overflow: hidden; }
  body {
    font-family: 'Microsoft YaHei', '微软雅黑', 'PingFang SC', 'Noto Sans SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    background: var(--bg); color: var(--text); line-height: 1.65;
    -webkit-font-smoothing: antialiased;
  }

  /* 幻灯片容器 */
  .deck { position: relative; width: 100vw; height: 100vh; overflow: hidden; }
  .slide {
    position: absolute; inset: 0; z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    padding: var(--slide-pad-y) var(--slide-pad-x);
    opacity: 0; visibility: hidden; pointer-events: none;
    transform: scale(0.98) translateY(12px);
    transition: opacity 0.38s ease, transform 0.38s ease, visibility 0.38s;
    background:
      radial-gradient(ellipse 60% 40% at 8% 2%, rgba(140,21,21,0.06), transparent 55%),
      radial-gradient(ellipse 55% 40% at 95% 98%, rgba(140,21,21,0.04), transparent 55%),
      var(--bg);
  }
  .slide.active {
    opacity: 1; visibility: visible; pointer-events: auto;
    transform: scale(1) translateY(0); z-index: 10;
  }
  .slide:not(.slide-cover)::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0; height: 3px;
    background: linear-gradient(90deg, var(--pku-red-dark), var(--pku-red));
    z-index: 2;
  }
  .slide-inner {
    flex: 1;
    width: 100%;
    max-width: var(--content-max);
    margin: 0 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
    gap: clamp(10px, 1.6vh, 22px);
    overflow-y: auto; overflow-x: hidden;
    scrollbar-width: thin;
    transform-origin: center center;
    will-change: transform;
  }
  .slide-inner::-webkit-scrollbar { width: 6px; }
  .slide-inner::-webkit-scrollbar-thumb { background: rgba(140,21,21,0.35); border-radius: 3px; }

  /* 章节过渡页 */
  .slide-chapter {
    text-align: center;
    background: linear-gradient(135deg, #fff 0%, var(--pku-red-soft) 45%, #fff5f5 100%) !important;
  }
  .slide-chapter .slide-inner {
    align-items: center;
    justify-content: center;
    text-align: center;
  }
  .slide-chapter .chapter-num {
    font-size: clamp(4em, 14vh, 7em); font-weight: 900; line-height: 1;
    color: transparent; -webkit-text-stroke: 2px var(--pku-red); opacity: 0.22;
  }
  .slide-chapter h2 { font-size: clamp(2em, 5vw, 3.4em); font-weight: 800; margin-top: -20px; color: var(--pku-red-dark); }
  .slide-chapter p { font-size: clamp(1em, 2vh, 1.45em); color: var(--text-secondary); margin-top: 14px; }
