/* Reset and Base Styles */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    /* Color Palette */
    --primary-purple: #8B7EC8;
    --secondary-yellow: #FFD93D;
    --accent-pink: #FFB6C1;
    --accent-orange: #FFA07A;
    --accent-red: #FF6B6B;
    --soft-white: #FEFEFE;
    --light-gray: #F8F9FA;
    --medium-gray: #E9ECEF;
    --dark-gray: #495057;
    --text-dark: #2D3436;
    
    /* Gradients */
    --bg-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    --hero-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
    --card-gradient: linear-gradient(145deg, #ffffff 0%, #f8f9fa 100%);
    
    /* Typography */
    --font-en: 'Comic Neue', cursive;
    --font-zh: 'Noto Sans SC', sans-serif;
    
    /* Spacing */
    --container-max-width: 1200px;
    --section-padding: 80px 0;
    --card-padding: 2rem;
    
    /* Border Radius */
    --border-radius-sm: 8px;
    --border-radius-md: 16px;
    --border-radius-lg: 24px;
    --border-radius-xl: 32px;
    
    /* Shadows */
    --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.1);
    --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.15);
    --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.2);
    
    /* Transitions */
    --transition-fast: 0.2s ease;
    --transition-normal: 0.3s ease;
    --transition-slow: 0.5s ease;
}

/* Language-specific font families */
html[data-lang="en"] {
    font-family: var(--font-en);
}

html[data-lang="zh"] {
    font-family: var(--font-zh);
}

body {
    font-family: var(--font-zh);
    line-height: 1.6;
    color: var(--text-dark);
    background: var(--bg-gradient);
    min-height: 100vh;
    overflow-x: hidden;
}

/* Container */
.container {
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 1rem;
}

/* Header */
.header {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(10px);
    z-index: 1000;
    padding: 1rem 0;
    box-shadow: var(--shadow-sm);
    transition: var(--transition-normal);
}

.nav-wrapper {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
}

.logo-img {
    height: 50px;
    width: 50px;
    border-radius: 50%;
    object-fit: cover;
    transition: var(--transition-normal);
}

.logo-img:hover {
    transform: scale(1.1) rotate(5deg);
}

.nav-list {
    display: flex;
    list-style: none;
    gap: 2rem;
    margin: 0;
}

.nav-list a {
    text-decoration: none;
    color: var(--text-dark);
    font-weight: 500;
    padding: 0.5rem 1rem;
    border-radius: var(--border-radius-sm);
    transition: var(--transition-normal);
    position: relative;
}

.nav-list a:hover {
    background: var(--primary-purple);
    color: white;
    transform: translateY(-2px);
}

.controls {
    display: flex;
    gap: 0.5rem;
}

.lang-toggle,
.audio-toggle {
    background: var(--primary-purple);
    color: white;
    border: none;
    padding: 0.5rem 1rem;
    border-radius: var(--border-radius-sm);
    cursor: pointer;
    font-weight: 500;
    transition: var(--transition-normal);
    min-width: 50px;
}

.lang-toggle:hover,
.audio-toggle:hover {
    background: var(--secondary-yellow);
    color: var(--text-dark);
    transform: scale(1.05);
}

/* Language Toggle States */
html[data-lang="en"] .lang-zh,
html[data-lang="zh"] .lang-en {
    display: inline;
}

html[data-lang="en"] .lang-en,
html[data-lang="zh"] .lang-zh {
    display: none;
}

/* Audio Toggle States */
.audio-off {
    display: none;
}

.audio-toggle.muted .audio-on {
    display: none;
}

.audio-toggle.muted .audio-off {
    display: inline;
}

/* Hero Section */
.hero {
    padding: 120px 0 80px;
    background: var(--hero-gradient);
    color: white;
    position: relative;
    overflow: hidden;
}

.hero::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><defs><pattern id="stars" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse"><circle cx="10" cy="10" r="1" fill="rgba(255,255,255,0.3)"/></pattern></defs><rect width="100" height="100" fill="url(%23stars)"/></svg>');
    opacity: 0.3;
    animation: twinkle 3s ease-in-out infinite alternate;
}

@keyframes twinkle {
    0% { opacity: 0.3; }
    100% { opacity: 0.6; }
}

.hero-content {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4rem;
    align-items: center;
    position: relative;
    z-index: 1;
}

.hero-title {
    font-size: 3.5rem;
    font-weight: 700;
    margin-bottom: 1.5rem;
    text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
    animation: fadeInUp 1s ease-out;
}

.hero-subtitle {
    font-size: 1.25rem;
    margin-bottom: 2rem;
    opacity: 0.9;
    animation: fadeInUp 1s ease-out 0.2s both;
}

.hero-buttons {
    display: flex;
    gap: 1rem;
    animation: fadeInUp 1s ease-out 0.4s both;
}

.hero-character {
    width: 100%;
    max-width: 400px;
    height: auto;
    border-radius: var(--border-radius-xl);
    box-shadow: var(--shadow-lg);
    animation: float 3s ease-in-out infinite;
}

@keyframes float {
    0%, 100% { transform: translateY(0px); }
    50% { transform: translateY(-20px); }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Buttons */
.btn {
    display: inline-block;
    padding: 1rem 2rem;
    border: none;
    border-radius: var(--border-radius-md);
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: var(--transition-normal);
    font-size: 1rem;
    position: relative;
    overflow: hidden;
}

.btn::before {
    content: '';
    position: absolute;
    top: 0;
    left: -100%;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
    transition: var(--transition-slow);
}

.btn:hover::before {
    left: 100%;
}

.btn-primary {
    background: var(--secondary-yellow);
    color: var(--text-dark);
    box-shadow: var(--shadow-md);
}

.btn-primary:hover {
    background: #FFE55C;
    transform: translateY(-3px);
    box-shadow: var(--shadow-lg);
}

.btn-secondary {
    background: transparent;
    color: white;
    border: 2px solid white;
}

.btn-secondary:hover {
    background: white;
    color: var(--text-dark);
    transform: translateY(-3px);
}

.btn-outline {
    background: transparent;
    color: var(--primary-purple);
    border: 2px solid var(--primary-purple);
}

.btn-outline:hover {
    background: var(--primary-purple);
    color: white;
    transform: translateY(-2px);
}

.btn-large {
    padding: 1.5rem 3rem;
    font-size: 1.25rem;
}

/* Sections */
section {
    padding: var(--section-padding);
}

.section-title {
    text-align: center;
    font-size: 2.5rem;
    font-weight: 700;
    margin-bottom: 3rem;
    color: var(--text-dark);
    position: relative;
}

.section-title::after {
    content: '';
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    width: 80px;
    height: 4px;
    background: var(--secondary-yellow);
    border-radius: 2px;
}

/* Characters Section */
.characters {
    background: var(--soft-white);
}

.characters-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 2rem;
}

.character-card {
    background: var(--card-gradient);
    border-radius: var(--border-radius-lg);
    padding: var(--card-padding);
    text-align: center;
    box-shadow: var(--shadow-md);
    transition: var(--transition-normal);
    position: relative;
    overflow: hidden;
}

.character-card::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, var(--primary-purple) 0%, transparent 70%);
    opacity: 0;
    transition: var(--transition-slow);
    z-index: 0;
}

.character-card:hover::before {
    opacity: 0.1;
}

.character-card:hover {
    transform: translateY(-10px);
    box-shadow: var(--shadow-lg);
}

.character-image {
    position: relative;
    z-index: 1;
    margin-bottom: 1.5rem;
}

.character-image img {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--secondary-yellow);
    transition: var(--transition-normal);
}

.character-card:hover .character-image img {
    transform: scale(1.1);
    border-color: var(--primary-purple);
}

.character-info {
    position: relative;
    z-index: 1;
}

.character-name {
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 1rem;
    color: var(--primary-purple);
}

.character-description {
    margin-bottom: 1rem;
    line-height: 1.6;
}

.character-catchphrase {
    font-style: italic;
    color: var(--accent-orange);
    font-weight: 600;
}

/* Books Section */
.books {
    background: var(--light-gray);
}

.books-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    gap: 3rem;
}

.book-card {
    background: white;
    border-radius: var(--border-radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
    transition: var(--transition-normal);
}

.book-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-lg);
}

.book-cover {
    height: 300px;
    overflow: hidden;
    position: relative;
}

.book-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: var(--transition-slow);
}

.book-card:hover .book-cover img {
    transform: scale(1.05);
}

.book-cover.placeholder {
    background: var(--primary-purple);
    display: flex;
    align-items: center;
    justify-content: center;
}

.placeholder-content {
    color: white;
    font-size: 1.5rem;
    font-weight: 700;
    text-align: center;
}

.book-info {
    padding: var(--card-padding);
}

.book-title {
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: 1rem;
    color: var(--primary-purple);
}

.book-description {
    margin-bottom: 1.5rem;
    line-height: 1.6;
}

.book-buttons {
    display: flex;
    gap: 1rem;
}

/* Play Section */
.play {
    background: var(--soft-white);
}

.play-content {
    max-width: 800px;
    margin: 0 auto;
}

.game-panel {
    background: var(--card-gradient);
    border-radius: var(--border-radius-lg);
    padding: 3rem;
    text-align: center;
    box-shadow: var(--shadow-md);
    margin-bottom: 2rem;
}

.game-placeholder {
    margin-bottom: 2rem;
}

.game-icon {
    font-size: 4rem;
    margin-bottom: 1rem;
    animation: bounce 2s infinite;
}

@keyframes bounce {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(-10px); }
    60% { transform: translateY(-5px); }
}

.game-placeholder h3 {
    font-size: 1.8rem;
    margin-bottom: 1rem;
    color: var(--primary-purple);
}

.game-controls {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
}

.audio-instructions {
    background: var(--accent-pink);
    border-radius: var(--border-radius-md);
    padding: 1.5rem;
    color: var(--text-dark);
}

.instruction-card h4 {
    margin-bottom: 0.5rem;
    color: var(--primary-purple);
}

/* About Section */
.about {
    background: var(--light-gray);
}

.about-content {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 3rem;
    align-items: center;
}

.about-text p {
    font-size: 1.1rem;
    margin-bottom: 1.5rem;
    line-height: 1.7;
}

.contact-info {
    margin-top: 2rem;
}

.about-logo {
    width: 100%;
    max-width: 300px;
    height: auto;
    border-radius: var(--border-radius-lg);
    box-shadow: var(--shadow-md);
}

/* Feedback Section */
.feedback {
    background: var(--soft-white);
}

.feedback-content {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 3rem;
    align-items: center;
}

.feedback-text p {
    font-size: 1.1rem;
    margin-bottom: 1.5rem;
    line-height: 1.7;
}

/* Footer */
.footer {
    background: var(--text-dark);
    color: white;
    padding: 2rem 0;
}

.footer-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
}

.footer-logo-img {
    height: 40px;
    width: 40px;
    border-radius: 50%;
    object-fit: cover;
}

.footer-links {
    display: flex;
    gap: 2rem;
}

.footer-links a {
    color: white;
    text-decoration: none;
    transition: var(--transition-normal);
}

.footer-links a:hover {
    color: var(--secondary-yellow);
}

/* Responsive Design */
@media (max-width: 768px) {
  .nav-wrapper {
    display: flex;
    flex-direction: row;          /* ✅ 改成 row */
    align-items: center;
    justify-content: space-between;
    gap: 8px;
  }
    
    .nav-list {
        flex-wrap: wrap;
        justify-content: center;
        gap: 1rem;
    }
    
    .hero-content {
        grid-template-columns: 1fr;
        text-align: center;
        gap: 2rem;
    }
    
    .hero-title {
        font-size: 2.5rem;
    }
    
    .hero-buttons {
        justify-content: center;
        flex-wrap: wrap;
    }
    
    .characters-grid {
        grid-template-columns: 1fr;
    }
    
    .books-grid {
        grid-template-columns: 1fr;
    }
    
    .about-content {
        grid-template-columns: 1fr;
        text-align: center;
    }
    
    .footer-content {
        flex-direction: column;
        text-align: center;
    }
    
    .game-controls {
        flex-direction: column;
        align-items: center;
    }
    
    .book-buttons {
        flex-direction: column;
    }
}

@media (max-width: 480px) {
    .container {
        padding: 0 0.5rem;
    }
    
    .hero {
        padding: 100px 0 60px;
    }
    
    .hero-title {
        font-size: 2rem;
    }
    
    .section-title {
        font-size: 2rem;
    }
    
    .character-card,
    .game-panel {
        padding: 1.5rem;
    }
    
    .btn {
        padding: 0.8rem 1.5rem;
        font-size: 0.9rem;
    }
    
    .btn-large {
        padding: 1.2rem 2rem;
        font-size: 1rem;
    }
}

/* Smooth scrolling */
html {
    scroll-behavior: smooth;
}

/* Focus styles for accessibility */
button:focus,
a:focus {
    outline: 2px solid var(--secondary-yellow);
    outline-offset: 2px;
}

/* Print styles */
@media print {
    .header,
    .footer,
    .controls {
        display: none;
    }
    
    body {
        background: white;
        color: black;
    }
    
    .hero {
        background: none;
        color: black;
    }
}


/* ===== Language-aware font stacks ===== */
:root{
  --font-zh: "Noto Sans SC","PingFang SC","Microsoft YaHei","Heiti SC","Source Han Sans SC","Helvetica Neue",Arial,sans-serif;
  --font-en: "Comic Neue","Inter","Helvetica Neue",Arial,sans-serif;
}
html, body{ font-family: var(--font-en); font-weight: 400; }

/* 中文正文不加粗，仅标题加粗 */
html[data-lang="zh"] body{ font-family: var(--font-zh); font-weight: 400; }
html[data-lang="zh"] h1,
html[data-lang="zh"] h2,
html[data-lang="zh"] h3,
html[data-lang="zh"] .hero-title,
html[data-lang="zh"] .section-title,
html[data-lang="zh"] .book-title,
html[data-lang="zh"] .character-name{
  font-family: var(--font-zh);
  font-weight: 700;
}
html[data-lang="en"] .hero-title,
html[data-lang="en"] .section-title,
html[data-lang="en"] .book-title,
html[data-lang="en"] .character-name{
  font-family: var(--font-en);
  font-weight: 700;
}
/* 防止回退到 cursive/serif 变楷体 */
h1,h2,h3,p,a,button,li,span{ font-family: inherit !important; font-weight: inherit; }

/* ===== Mobile header tweaks with hamburger menu ===== */
/* Hamburger menu button */
.hamburger {
  display: none;
  flex-direction: column;
  cursor: pointer;
  padding: 4px;
  background: none;
  border: none;
  z-index: 1001;
}

.hamburger span {
  width: 20px;
  height: 2px;
  background: var(--text-dark);
  margin: 2px 0;
  transition: var(--transition-normal);
  border-radius: 1px;
}

.hamburger.active span:nth-child(1) {
  transform: rotate(45deg) translate(5px, 5px);
}

.hamburger.active span:nth-child(2) {
  opacity: 0;
}

.hamburger.active span:nth-child(3) {
  transform: rotate(-45deg) translate(7px, -6px);
}

@media (max-width: 768px){
  .header{ padding: 8px 0; }
  .nav-wrapper{ 
    display: flex; 
    align-items: center; 
    justify-content: space-between; 
    gap: 8px; 
    position: relative;
  }
  .logo-img{ height: 32px; width: 32px; }
  
	/* Hide legacy mobile-nav only */
	/* （已删除 .nav.mobile-nav 的样式与 display:none；避免与 #siteNav 冲突） */
  
  /* Hide desktop navigation
  .nav { display: none; } */
  
  /* Show hamburger menu */
  .hamburger { display: flex; }
  
  /* —— 旧的 .nav.mobile-nav overlay 整段已删除 —— */
  
  .controls{ 
    display: flex; 
    gap: 8px; 
    z-index: 1001;
    position: relative;
  }
  .controls .lang-toggle, 
  .controls .audio-toggle{ 
    padding: 6px 8px; 
    font-size: 12px; 
    min-width: 40px;
  }
  .hero{ padding-top: 70px; }
}

/* ===== Footer social (icon + text) ===== */
.social-links{
  display:flex; flex-wrap:wrap; gap:16px; align-items:center;
  font-size:14px; color:#eaeaea;
}
.social-item{
  display:inline-flex; align-items:center; gap:8px;
}
.social-item svg{
  width:18px; height:18px; display:block;
  fill:currentColor; stroke:currentColor; stroke-width:0;
}

/* ===== Book-card 内嵌 Figma 预览样式 ===== */
.preview-container{ display:none; margin-top:15px; }
.preview-frame{
  width:100%; height:450px; border:1px solid rgba(0,0,0,.1); border-radius:8px;
}



/* 确保头部与按钮层级最高 */
.header{ position:relative; z-index:1100; }
.hamburger, .controls{ position:relative; z-index:1102; }

/* 桌面 */
.nav { position:static; z-index:auto; }
.nav .nav-list { display:flex; gap:18px; align-items:center; }

/* 汉堡样式 */
.hamburger{ position: relative; z-index: 1200; }
.hamburger{ display:none; width:36px; height:28px; border:0; background:transparent; cursor:pointer; }
.hamburger span{ position:absolute; left:0; right:0; height:2px; background:currentColor; width:24px; margin:auto; transition:.25s; }
.hamburger span:nth-child(1){ top:6px; } .hamburger span:nth-child(2){ top:13px; } .hamburger span:nth-child(3){ top:20px; }
.hamburger.is-active span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.hamburger.is-active span:nth-child(2){ opacity:0; }
.hamburger.is-active span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }


/* =========================
   🔧 修改点 1（修复桌面“跑位”）：
   强制把 header 恢复为固定定位（覆盖上面 position:relative 的意外覆盖）
   ========================= */
.header{
  position: fixed !important;
  top: 0; left: 0; right: 0;
  z-index: 1000;
}

/* =========================
   🔧 修改点 2（精准限定移动端抽屉，仅作用于 #siteNav；
              并把头部横排 & 汉堡放右侧）
   ========================= */
:root{ --header-h: 64px; }   /* 头部高度自己改成实际值 */
body{ padding-top: var(--header-h); }
@media (max-width:768px){
  :root{ --header-h: 56px; } /* 如果移动端头部更紧凑，换成对应高度 */
  .hamburger{ display:flex !important; }
  /* 横排布局，避免汉堡落在中间 */
  .nav-wrapper{
    display:flex;
    flex-direction: row !important;
    align-items:center;
    justify-content: space-between;
    gap: 8px;
  }
  /* 顺序控制：logo(1) -> controls(2) -> hamburger(3) */
  .logo{ order:1; }
  .controls{ order:2; }
  .hamburger{ order:3; }

  /* 只针对 #siteNav 做抽屉，避免 .nav 通配误伤其它 */
  #siteNav{
    position: fixed;
    top: 0; right: 0;
    height: 100vh;
    width: min(320px, 80vw);
    background: #fff;
    box-shadow: -8px 0 24px rgba(0,0,0,.15);
    transform: translateX(100%) !important;
    transition: transform .28s ease;
    z-index: 1101;
    padding-top: 72px;
    pointer-events: none;   /* 关闭时不拦截点击 */
    display: block;         /* 防止被前面某些规则隐藏 */
  }
  #siteNav.open{
    transform: translateX(0) !important; 
    pointer-events: auto;   /* 打开后可点击 */
  }
  #siteNav .nav-list{
    display:flex; flex-direction:column;
    align-items:flex-start; gap:14px; padding:0 20px;
  }
  #siteNav .nav-list a{
    display:block; padding:10px 0; font-size:16px; color:#222;
  }

  /* 遮罩（层级 < 导航） */
  #navBackdrop{
    display: none;
    position: fixed; inset: 0;
    background: rgba(0,0,0,.45);
    z-index: 1100;
  }
  #navBackdrop.show{ display:block; }
}

/* ==== Fix: 确保层级顺序（移动端）====
   目标层级： #siteNav(1301) > .header(1300) > #navBackdrop(1200) > 页面
*/
@media (max-width: 768px){
  .header{ z-index: 1300 !important; }          /* header 整块压到遮罩之上 */
  #siteNav{
    z-index: 1301 !important;                    /* 抽屉在 header 之上 */
    transform: translateX(100%) !important;      /* 维持关闭位移 */
  }
  #siteNav.open{ transform: translateX(0) !important; }  /* 打开时滑出 */
  #navBackdrop{ z-index: 1200; }                 /* 遮罩在 header 之下 */
}
