﻿/* =========================================================================
 * 檔案名稱：star.css
 * 系統版本：V0.18 (完全解壓縮、教科書等級註解版 - 第一部分)
 * 作者宣告：五元網站包租公-Tiger老師 (台灣老站神)
 * 系統說明：十二星座運勢 - 五維星盤 (Cyber-Wuxia 科技論運武俠風) 核心樣式表
 * ========================================================================= */

/* =========================================================================
 * 【模組 1：核心陣法 CSS 變數區 (CSS Variables)】
 * 教科書說明：
 * 這裡使用 `:root` 偽類來定義全域變數 (Custom Properties)。
 * 變數名稱必須以兩個減號 `--` 開頭。
 * 這樣做的好處是：當我們需要切換網站主題時，只需要改變變數的值，
 * 整個網站使用了這些變數的顏色就會瞬間全部跟著改變，不需要去逐一修改每一個 class。
 * ========================================================================= */
:root {
   /* 定義網站的最底層背景色 (極深的藍黑色，營造宇宙深淵感) */
   --bg-main: #050a10;           

   /* 定義網站的主要科技色 (Cyan 青色，常用於線條、一般文字) */
   --primary: #00ffff;           

   /* * 為什麼要特別獨立出 RGB 格式的變數？
    * 因為標準的 HEX 色碼 (#00ffff) 無法直接使用 CSS 的 rgba() 函數來設定透明度。
    * 我們把 0, 255, 255 存起來，後面就能寫成 rgba(var(--primary-rgb), 0.5) 來實現半透明青色！
    */
   --primary-rgb: 0, 255, 255;   

   /* 定義網站的強調色 (Gold 金色，用於重要標題、第一名、星星等) */
   --accent: #ffd700;            

   /* 強調色的 RGB 格式，同樣是為了後續做半透明發光陰影使用 */
   --accent-rgb: 255, 215, 0;    
}

/* * [主題切換邏輯]
 * 教科書說明：
 * 當 HTML 的 <body> 標籤被加上 `data-theme="pink"` 屬性時，
 * 這裡的設定就會「覆寫 (Override)」上面 :root 的變數。
 * 這是現代前端實作「多色系/日夜間模式」最主流、效能最好的作法。
 */
body[data-theme="pink"] {
   --bg-main: #2d0a1a;              /* 改為深紫紅色底 */
   --primary: #ff69b4;              /* 主要色改為桃花粉 */
   --primary-rgb: 255, 105, 180;    
   --accent: #ffffff;               /* 強調色改為純白，搭配粉色較亮眼 */
   --accent-rgb: 255, 255, 255;
}

body[data-theme="gold"] {
   --bg-main: #1a1500;
   --primary: #ffd700;              /* 主要色直接改為金色 */
   --primary-rgb: 255, 215, 0;
   --accent: #ffffff;
   --accent-rgb: 255, 255, 255;
}

body[data-theme="purple"] {
   --bg-main: #0a0510;
   --primary: #8a2be2;              /* 藍紫色 */
   --primary-rgb: 138, 43, 226;
   --accent: #00ffff;               /* 在紫色主題中，用青色當作強調色產生強烈對比 */
   --accent-rgb: 0, 255, 255;
}

body[data-theme="red"] {
   --bg-main: #1a0505;
   --primary: #ff3333;              /* 修羅紅 */
   --primary-rgb: 255, 51, 51;
   --accent: #ffd700;               /* 紅色配金色，標準武俠霸氣配色 */
   --accent-rgb: 255, 215, 0;
}

/* =========================================================================
 * 【模組 2：全域與版面基礎設定 (Global Resets & Body)】
 * ========================================================================= */

/* * 萬用選擇器 (*) 設定 
 * 教科書說明：
 * `box-sizing: border-box;` 是一句神級代碼。
 * 預設情況下，如果你給元素寬度 100px，又給了 padding 10px，元素總寬會變成 120px (撐破版面)。
 * 加上這行後，padding 和 border 的厚度會往內扣，元素總寬永遠維持你設定的 100px，排版絕不跑版！
 */
* {
   box-sizing: border-box;
}

body {
   /* 移除瀏覽器預設的白邊 (margin) 與內縮 (padding) */
   margin: 0;                                 
   padding: 0;                                

   /* 呼叫我們在上面定義的變數，作為網頁底色 */
   background-color: var(--bg-main);          

   /* * [科技感網格背景原理]
    * 教科書說明：
    * 我們不使用圖片當背景，而是使用兩層 `linear-gradient` (線性漸層) 來畫線！
    * 第一層：畫橫線。0 到 1px 是半透明青色，1px 到結尾是透明。
    * 第二層：畫直線 (90deg 旋轉)。同樣 0 到 1px 是半透明青色。
    */
   background-image: linear-gradient(rgba(var(--primary-rgb), 0.05) 1px, transparent 1px),
                     linear-gradient(90deg, rgba(var(--primary-rgb), 0.05) 1px, transparent 1px);
   
   /* * 配合上面的漸層，強制每 30px x 30px 重複一次圖案。
    * 這樣就會交織出完美的 30x30 方格網。
    */
   background-size: 30px 30px;                

   /* 全網頁預設字體顏色 */
   color: var(--primary);                     

   /* 設定優先字體，保證 Windows 看正黑體，Mac 看蘋方體 */
   font-family: "Microsoft JhengHei", "PingFang TC", sans-serif; 

   /* * 過渡動畫 (Transition)
    * 當 `background-color` 或 `color` 發生改變時 (例如按了換色按鈕)，
    * 不要瞬間變色，而是花 0.5 秒 (0.5s) 平滑漸變，`ease` 代表動畫速率由慢到快再變慢。
    */
   transition: background-color 0.5s ease, color 0.5s ease;      
}

.main-container {
   /* 限制網頁最大寬度為 1000px，防止在超大螢幕上內容太過發散 */
   max-width: 1000px;
   
   /* `margin: 40px auto;` 的 `auto` 魔法：讓這個區塊在畫面中水平置中！ */
   margin: 40px auto;
   
   /* 左右保留 20px 內縮，這樣在手機螢幕上，內容才不會貼死螢幕邊緣 */
   padding: 0 20px;
}

/* =========================================================================
 * 【模組 3：玻璃擬態組件 (Glassmorphism Components)】
 * 教科書說明：
 * Glassmorphism (毛玻璃) 是現代 UI 最流行的風格。
 * 它的核心公式：半透明背景色 + 背景模糊濾鏡 (backdrop-filter) + 淡淡的邊框。
 * ========================================================================= */
.glass-panel {
   /* 使用 rgba 帶入變數並設定 60% (0.6) 不透明度 */
   background: rgba(var(--bg-main), 0.6);        
   
   /* * 毛玻璃的靈魂指令！
    * 把這個元素「背後」的東西模糊化 10px。注意：背景必須是半透明的才看得到效果。
    */
   backdrop-filter: blur(10px);                  
   
   /* 1px 的實線邊框，顏色吃主題變數 */
   border: 1px solid var(--primary);             
   
   /* * 盒子陰影 (box-shadow) 語法：
    * 水平偏移(0) 垂直偏移(0) 模糊半徑(15px) 顏色。
    * 這裡創造出元素向外發光的霓虹效果。
    */
   box-shadow: 0 0 15px rgba(var(--primary-rgb), 0.3); 
   
   /* 圓角收邊 */
   border-radius: 8px;                           
   
   /* 區塊與區塊之間保持 25px 的下推距離 */
   margin-bottom: 25px;                          
   
   /* 區塊內部的文字/內容距離邊框 25px */
   padding: 25px;                                
   
   /* 主題換色時，邊框與發光陰影也要平滑過渡 */
   transition: border-color 0.5s ease, box-shadow 0.5s ease; 
}

/* =========================================================================
 * 【模組 4：排版與標題 (Typography & Headings)】
 * ========================================================================= */
.header-title-area {
   /* * 啟用 Flexbox 彈性排版，這是目前網頁排版最強大的工具。
    * flex-direction: column; 讓裡面的元素從上到下「垂直」排列 (預設是水平)。
    */
   display: flex;
   flex-direction: column;
   
   /* align-items: center; 在垂直排列模式下，這會讓內容「水平置中」 */
   align-items: center;
   
   /* justify-content: center; 讓內容「垂直置中」 */
   justify-content: center;
   margin-bottom: 20px;
}

/* 針對 h1, h2, h3 標籤，以及 class 為 gold-text 的元素同時套用樣式 */
h1, h2, h3, .gold-text {
   color: var(--accent);

   /* * 文字陰影 (text-shadow) 語法與 box-shadow 類似。
    * 這裡用強調色的 60% 不透明度，創造出立體發光字的感覺。
    */
   text-shadow: 0 0 10px rgba(var(--accent-rgb), 0.6); 
   text-align: center;
   margin-top: 0;
   margin-bottom: 5px;
   transition: color 0.5s ease, text-shadow 0.5s ease; 
}

.header-subtitle {
   color: var(--primary);
   font-weight: bold;
   /* 1em 等於父元素字體大小的 1 倍 (也就是維持原大) */
   font-size: 1em;
   text-align: center;
}

.header-subtitle span {
   /* span 標籤內的字稍微縮小為 0.8 倍 */
   font-size: 0.8em; 
}

/* =========================================================================
 * 【模組 5：導覽列與選單 (Navigation & Menus)】
 * ========================================================================= */

/* --- [A. 獨立右上角整合選單模組] --- */
.top-right-nav {
   /* * 固定定位 (Fixed Positioning)
    * 讓這個選單永遠黏在視窗的右上角，不管使用者怎麼往下捲動網頁都不會消失。
    */
   position: fixed;
   top: 15px;
   right: 15px;
   
   /* z-index 設到極大值，保證它永遠蓋在所有內容的「最上層」，不會被蓋住 */
   z-index: 99999;
}

.menu-toggle-btn {
   /* 黑底色帶 80% 不透明度 */
   background-color: rgba(0, 0, 0, 0.8);
   border: 1px solid var(--primary);
   color: var(--accent);
   padding: 10px 20px;
   font-size: 16px;
   font-weight: bold;
   
   /* 把游標變成「手指」圖案，提示使用者這是可以點擊的按鈕 */
   cursor: pointer;
   border-radius: 6px;
   transition: all 0.3s ease;
   text-shadow: 0 0 5px rgba(var(--accent-rgb), 0.5);
   
   /* * inline-flex: 讓按鈕本身像文字一樣可並排，但內部內容可以使用 Flexbox 排版。
    * 這裡用來讓「漢堡圖示 ☰」和「十大命理陣法文字」完美對齊。
    */
   display: inline-flex;
   align-items: center;
   justify-content: center;
   
   /* 防止按鈕因為畫面太窄而導致裡面的文字換行 */
   white-space: nowrap; 
}

/* 滑鼠懸停 (Hover) 時的按鈕變化 */
.menu-toggle-btn:hover {
   background-color: rgba(var(--primary-rgb), 0.1);
   box-shadow: 0 0 15px rgba(var(--primary-rgb), 0.5);
   color: var(--primary);
   text-shadow: 0 0 8px rgba(var(--primary-rgb), 0.8);
}

.menu-icon {
   display: inline-block;
}

.menu-text {
   display: inline-block;
   /* 電腦版預設為展開狀態，給予 150px 的最大寬度 */
   max-width: 150px; 
   opacity: 1;
   
   /* overflow: hidden; 超出範圍的內容直接隱藏，這是做寬度伸縮動畫的關鍵！ */
   overflow: hidden; 
   
   /* 綁定寬度、透明度與邊距的滑動轉場動畫 */
   transition: max-width 0.35s ease, opacity 0.3s ease, margin-left 0.35s ease;
   margin-left: 8px;
}

/* [下拉選單列表區塊 - 收合狀態] */
.dropdown-list {
   /* visibility: hidden 比 display: none 好，因為它保留了 DOM 的動畫運算空間 */
   visibility: hidden;    
   
   /* * [黑客級動畫技巧]
    * 我們無法對 height: auto 做動畫。
    * 因此我們把 max-height 設為 0，當要展開時再把 max-height 設為一個夠大的數值，
    * 這樣就能達成「平滑向下展開」的視覺效果！
    */
   max-height: 0;         
   opacity: 0;
   
   /* 絕對定位，將選單掛附在父元素 (nav) 的下方 */
   position: absolute;
   top: calc(100% + 10px); /* 往下推移 100% 的按鈕高度，再多加 10px 間距 */
   right: 0;               /* 靠右對齊按鈕 */
   width: 260px;
   
   /* 收合動畫過程中隱藏卷軸，避免畫面抖動破圖 */
   overflow-y: hidden;    
   
   /* 移除 `<ul>` 標籤預設的圓點與邊距 */
   list-style-type: none;
   margin: 0;
   padding: 0;
   
   background-color: var(--bg-main); 
   border: 1px solid var(--primary);
   box-shadow: 0 5px 20px rgba(0, 0, 0, 0.9), 0 0 15px rgba(var(--primary-rgb), 0.5);
   border-radius: 8px;
   
   /* 收合時：替 visibility 加上 0.5s 的退場延遲，讓 max-height 得以從容地「慢慢往上收回去」才消失 */
   transition: max-height 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), opacity 2.5s ease, visibility 0s 0.5s;
}

/* [下拉選單列表區塊 - 展開狀態 (配合 JS 掛上 .show 類別)] */
.dropdown-list.show {
   visibility: visible;
   
   /* 設定一個精準的最大高度(足以容納10個選項)，觸發 CSS 平滑展開動畫 */
   max-height: 520px;     
   opacity: 1;
   
   /* 展開完成後允許內容垂直捲動 (如果選單太長) */
   overflow-y: auto;      
   transition: max-height 0.4s cubic-bezier(0.25, 0.8, 0.25, 1), opacity 2.5s ease, visibility 0s 0.4s;
}

/* 客製化 Webkit (Chrome/Edge/Safari) 瀏覽器的捲軸外觀 */
.dropdown-list::-webkit-scrollbar {
   width: 6px; /* 捲軸變細 */
}
.dropdown-list::-webkit-scrollbar-thumb {
   background-color: var(--primary);
   border-radius: 3px;
}

.dropdown-list li {
   /* 選單項目之間的虛線分隔線 */
   border-bottom: 1px dashed rgba(var(--primary-rgb), 0.3);
}

.dropdown-list li:last-child {
   /* 選單最後一項不需要底線 */
   border-bottom: none;
}

.dropdown-list a {
   display: block; /* 讓超連結變成區塊，可點擊範圍填滿整列 */
   padding: 12px 16px;
   text-decoration: none; /* 移除超連結預設的底線 */
   color: var(--accent);
   font-size: 15px;
   transition: all 0.2s ease;
}

.dropdown-list a:hover {
   background-color: rgba(var(--primary-rgb), 0.15);
   color: var(--primary);
   
   /* 滑鼠移入時，文字往右推進 6px (22px - 16px) 的動態效果 */
   padding-left: 22px; 
   text-shadow: 0 0 5px rgba(var(--primary-rgb), 0.6);
}

/* --- [B. 左側懸浮色系選單] --- */
.floating-menu {
   position: fixed;
   
   /* top: 40% 搭配 translateY(-50%) 是完美的「垂直絕對置中」技巧 */
   top: 40%;
   left: 15px;
   transform: translateY(-50%);
   
   display: flex;
   flex-direction: column;
   gap: 10px; /* 按鈕之間的間距 */
   z-index: 1000;
}

.floating-menu a {
   display: block;
   width: 45px;
   height: 45px;
   
   /* line-height 等於 height，就能讓單行文字垂直置中 */
   line-height: 45px;
   text-align: center;
   background: rgba(var(--primary-rgb), 0.1);
   border-radius: 50%; /* 把方形變成完美的正圓形 */
   text-decoration: none;
   font-weight: bold;
   transition: all 0.3s ease;
   border: 1px solid var(--primary);
}

/* 特定色系按鈕控制：這裡利用 HTML 行內寫入的 `--btn-color` 變數來控制各自的專屬色彩 */
.theme-selector {
   /* !important 用於強制覆寫其他可能的樣式，確保按鈕顏色生效 */
   color: var(--btn-color) !important;
   border-color: var(--btn-color) !important;
   font-size: 0.85em;
}

/* 按鈕選中 (.active) 與懸停 (:hover) 狀態 */
.theme-selector:hover, .theme-selector.active {
   /* 背景填滿對應主題色 */
   background-color: var(--btn-color) !important;
   
   /* 強制轉為深淵黑，提升高對比度的閱讀性 */
   color: #050a10 !important; 
   box-shadow: 0 0 15px var(--btn-color);
}


/* =========================================================================
 * 【模組 6：表單控制組件 (Form Controls)】
 * 教科書說明：
 * 這裡處理使用者輸入生日、性別、血型的區域。
 * 大量運用 Flexbox 來確保在不同螢幕尺寸下，表單都能自動對齊與換行。
 * ========================================================================= */

/* [表單水平排列總容器] */
.form-group {
   display: flex;
   flex-direction: row;
   justify-content: center;
   align-items: center;
   
   /* * flex-wrap: wrap; (重要！)
    * 允許內容在寬度不夠時「自動換行」，這是響應式網頁 (RWD) 最基礎也最實用的設定。
    */
   flex-wrap: wrap;
   gap: 35px; /* 控制每個輸入區塊之間的間距 */
   margin-top: 15px;
}

/* [單一輸入區塊 (包含標籤與下拉選單)] */
.input-block {
   display: flex;
   flex-direction: column; /* 讓標籤(Label)在上方，選單(Select)在下方 */
   align-items: center;
}

/* [表單標題標籤] */
.input-label {
   /* align-self: flex-start; 強制這個文字靠左對齊，不受父元素的置中影響 */
   align-self: flex-start;
   margin-bottom: 8px;
   color: var(--primary);
}

/* [下拉選單的容器] */
.input-controls {
   display: flex;
   flex-direction: row;
   justify-content: center;
   gap: 10px;
   width: 100%;
}

/* * [下拉選單 select 樣式美化]
 * 教科書說明：
 * 瀏覽器預設的 select 樣式非常醜。我們要自己加上背景色、邊框與圓角。
 */
select {
   background-color: var(--bg-main);
   border: 1px solid var(--primary);
   color: var(--primary);
   padding: 8px 12px;
   border-radius: 4px;
   
   /* outline: none; 移除點擊時瀏覽器預設的粗黑外框 */
   outline: none;
   
   /* font-family: inherit; 強制繼承 body 的字體，避免部分瀏覽器用預設明體 */
   font-family: inherit;
}

/* 下拉選單展開後的選項樣式 */
select option {
   background-color: var(--bg-main);
   color: var(--primary);
}

/* 當使用者點擊(聚焦)選單時，產生發光效果 */
select:focus {
   box-shadow: 0 0 10px var(--primary); 
}

/* [自動推算提示字] */
.auto-fetch-info {
   display: block;
   text-align: center;
   margin-top: 25px;
   font-size: 0.9em;
   color: var(--accent);
   letter-spacing: 1px; /* 增加字元間距，提升閱讀質感 */
}

/* * [啟動陣法大按鈕]
 * 教科書說明：
 * Call to Action (CTA) 按鈕必須是全場最吸睛的元素。
 */
#btn-calculate {
   background: var(--primary);
   color: var(--bg-main); /* 為了反差，文字使用底層的深色 */
   padding: 10px 30px;
   border: none;
   border-radius: 5px;
   font-weight: bold;
   cursor: pointer;
   font-size: 1.1em;
   box-shadow: 0 0 10px var(--primary); /* 預設就有光暈 */
   transition: all 0.3s;
   margin-top: 20px;
}

/* 按鈕懸停特效：轉換為金色，並加強光暈，產生強烈互動感 */
#btn-calculate:hover {
   background: var(--accent);
   box-shadow: 0 0 20px var(--accent); 
}

/* =========================================================================
 * 【模組 7：標籤頁與內容展示區 (Tabs & Showcases)】
 * 教科書說明：
 * 這是實作「不換頁切換內容 (Tab)」的 CSS 核心架構。
 * ========================================================================= */

/* [算算結果的星座大圖騰區塊] */
.zodiac-showcase {
   text-align: center;
   margin-bottom: 30px;
   padding-bottom: 25px;
   border-bottom: 1px dashed rgba(var(--primary-rgb), 0.4);
   
   /* 綁定呼吸燈動畫 (動畫定義在模組 9) */
   animation: pulse-glow 2.5s infinite alternate; 
   
   /* * will-change: transform, opacity; (進階效能優化)
    * 提前告訴瀏覽器這個元素即將發生動畫，讓瀏覽器開啟 GPU 硬體加速，避免掉幀卡頓。
    */
   will-change: transform, opacity;
}

/* [分頁按鈕列容器] */
.tab-header {
   display: flex;
   justify-content: space-between;
   border-bottom: 2px solid var(--primary);
   margin-bottom: 20px;
}

/* [單一分頁按鈕] */
.tab-btn {
   flex: 1; /* 讓所有按鈕平均分配寬度 */
   padding: 12px;
   text-align: center;
   cursor: pointer;
   border: none;
   background: transparent;
   color: var(--primary);
   font-size: 1.1em;
   font-weight: bold;
   transition: 0.3s;
}

/* [使用中/懸停的分頁按鈕狀態] */
.tab-btn:hover, .tab-btn.active {
   background: rgba(var(--primary-rgb), 0.15);
   color: var(--accent);
   text-shadow: 0 0 8px var(--accent);
   
   /* 只切上面左右兩個圓角，下面貼齊底線，營造「活頁夾」的視覺效果 */
   border-top-left-radius: 8px;
   border-top-right-radius: 8px;
}

/* [分頁內容區] 預設全部隱藏 (display: none) */
.tab-content {
   display: none;
   min-height: 250px;
   padding: 20px;
   border: 1px dashed rgba(var(--primary-rgb), 0.5);
   border-radius: 8px;
}

/* [啟用的分頁內容] 透過 JS 加上 .active 類別，將其顯示出來 */
.tab-content.active {
   display: block;
}

/* [圖卡下載擷取範圍] html2canvas 工具會將這個區塊截圖 */
.fortune-capture-box {
   padding: 15px;
   background: rgba(var(--primary-rgb), 0.05);
   border: 1px dashed rgba(var(--primary-rgb), 0.4);
   border-radius: 8px;
}

/* * 🎯 [V0.17 新增] 未啟動陣法前的華麗提示文字
 * 教科書說明：這用來引導使用者點擊按鈕，結合了虛線邊框與呼吸燈。
 */
.pre-activation-notice {
   text-align: center;
   color: var(--accent);
   font-size: 1.1em;
   font-weight: bold;
   margin-bottom: 25px;
   padding: 15px;
   background: rgba(var(--accent-rgb), 0.1);
   border: 1px dashed var(--accent);
   border-radius: 8px;
   box-shadow: 0 0 15px rgba(var(--accent-rgb), 0.2);
   animation: pulse-glow 2s infinite alternate;
   letter-spacing: 1px;
}

/* =========================================================================
 * 【模組 8：四大運勢卡片與數據呈現 (Stats & Data Visuals)】
 * 教科書說明：
 * 這裡展示了如何排版複雜的數據，包含狀態方塊 (Stat Box) 與能量進度條。
 * ========================================================================= */

/* --- [A. 狀態方塊 Stat Box (如：一維星辰、二維陰陽)] --- */
.stat-box {
   border: 1px solid var(--primary);
   border-radius: 8px;
   padding: 20px 10px;
   text-align: center;
   background: rgba(0, 0, 0, 0.6);
   box-shadow: 0 0 10px rgba(var(--primary-rgb), 0.3);
}
.stat-label { font-size: 0.9em; color: rgba(var(--primary-rgb), 0.7); }
.stat-val { font-size: 1.4em; color: var(--accent); font-weight: bold; margin-top: 8px; text-shadow: 0 0 8px var(--accent); }
.stat-desc { font-size: 0.9em; color: rgba(var(--primary-rgb), 0.8); margin-top: 8px; }

/* 危險/警示狀態 (如：流年不利時的紅色警示) 覆寫原本的顏色 */
.stat-box.danger { border-color: #ff3333; box-shadow: 0 0 15px rgba(255, 51, 51, 0.5); }
.stat-box.danger .stat-label { color: #ff9999; }
.stat-box.danger .stat-val { color: #ff3333; text-shadow: 0 0 8px #ff3333; }
.stat-box.danger .stat-desc { font-size: 0.85em; }

/* 專屬尊號顯示，霸氣發光字體 */
.cyber-title {
   font-size: 1.6em;
   color: var(--accent);
   font-weight: bold;
   text-shadow: 0 0 15px var(--accent);
   margin-top: 8px;
}

/* --- [B. 能量雷達與進度條] --- */
.energy-container {
   display: flex;
   flex-direction: row;
   flex-wrap: wrap;
   gap: 30px;
   align-items: center;
   justify-content: center;
   margin-bottom: 15px;
}

/* SVG 雷達圖容器 */
.energy-radar { flex: 1; min-width: 220px; display: flex; justify-content: center; }

/* 右側進度條總容器 */
.energy-bars { flex: 1; min-width: 250px; }

/* 單一行進度條佈局 */
.energy-row { display: flex; align-items: center; margin-bottom: 12px; }
.energy-label { width: 80px; color: rgba(var(--primary-rgb), 0.8); font-size: 0.9em; }

/* * [進度條底層 (黑色空槽)]
 * position: relative; 為了讓裡面的填滿層能夠相對於它延伸。
 * overflow: hidden; 確保填滿層的顏色不會超過圓角。
 */
.energy-bar-bg {
   flex: 1;
   height: 12px;
   background: rgba(0, 0, 0, 0.6);
   border: 1px solid rgba(var(--primary-rgb), 0.3);
   border-radius: 6px;
   overflow: hidden;
   position: relative;
}

/* * [進度條填滿動畫]
 * 教科書說明：
 * 預設 width 為 0%。當 JS 計算出數值後，會動態把 width 變成例如 85%。
 * 搭配 transition: width 1.2s... 就會產生像遊戲一樣的「血條集氣動畫」。
 */
.energy-fill {
   height: 100%;
   background: linear-gradient(90deg, var(--primary), var(--accent));
   box-shadow: 0 0 10px rgba(var(--accent-rgb), 0.6);
   width: 0%;
   /* cubic-bezier 是一條自訂的貝茲曲線，讓動畫有「回彈/衝刺」的物理感 */
   transition: width 1.2s cubic-bezier(0.34, 1.56, 0.64, 1);
   will-change: width;
}

/* 右側數字百分比顯示 */
.energy-val { width: 50px; text-align: right; color: var(--accent); font-weight: bold; font-size: 0.9em; }

/* --- [C. 四大指數網格卡片 (整體/愛情/事業/財富)] --- */

/* * [CSS Grid 神級排版]
 * 教科書說明：
 * `grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));`
 * 這是完全不需要寫 Media Query (媒體查詢) 就能達成 RWD 響應式的終極寫法！
 * 意思是：每個卡片最少 280px 寬，當螢幕空間夠大時，盡可能塞滿同行 (1fr)；
 * 空間不夠時，自動折到下一行。
 */
.fortune-index-grid {
   display: grid;
   grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
   gap: 15px;
   margin-bottom: 25px;
}

.index-card {
   background: rgba(0, 0, 0, 0.5);
   border: 1px solid rgba(var(--primary-rgb), 0.3);
   border-radius: 8px;
   padding: 15px;
   transition: 0.3s;
}

/* 懸停時卡片微升起特效 */
.index-card:hover {
   border-color: var(--accent);
   box-shadow: 0 0 15px rgba(var(--accent-rgb), 0.2);
   transform: translateY(-3px); /* 往上浮動 3px */
}

.index-header {
   display: flex;
   justify-content: space-between;
   align-items: center;
   border-bottom: 1px dashed rgba(var(--primary-rgb), 0.3);
   padding-bottom: 8px;
   margin-bottom: 10px;
}

.index-title { font-weight: bold; color: var(--primary); font-size: 1.1em; }
.index-stars { color: var(--accent); text-shadow: 0 0 5px rgba(var(--accent-rgb), 0.8); letter-spacing: 2px; font-size: 1.2em; }

/* 四大運勢指數下方說明文字 (V0.14版優化大小) */
.index-desc {
   color: #e0f7fa;
   font-size: 1.0em; 
   line-height: 1.6;
   margin-top: 8px;
}

/* --- [D. 風水提示網格 (此系統保留備用)] --- */
.fengshui-grid {
   display: grid;
   /* 強制分成三等分 */
   grid-template-columns: repeat(3, 1fr);
   gap: 15px;
   margin-bottom: 25px;
}
.fengshui-card { background: rgba(0, 0, 0, 0.5); border: 1px solid rgba(var(--primary-rgb), 0.3); border-radius: 8px; padding: 15px 10px; text-align: center; transition: 0.3s; }
.fengshui-card:hover { transform: translateY(-3px); box-shadow: 0 0 15px rgba(var(--primary-rgb), 0.4); border-color: var(--primary); }
.fs-title { color: rgba(var(--primary-rgb), 0.7); font-size: 0.85em; margin-bottom: 8px; }
.fs-val { color: var(--accent); font-size: 1.15em; font-weight: bold; text-shadow: 0 0 5px var(--accent); }


/* =========================================================================
 * 【模組 9：動畫與特效專區 (Animations & Visual Effects)】
 * 教科書說明：
 * 利用 @keyframes 定義動畫的關鍵影格，讓網頁元素產生動態視覺效果。
 * CSS 動畫比 JS 動畫效能更好，因為它能直接呼叫顯示卡的 GPU 來運算。
 * ========================================================================= */

/* * [全域共用：呼吸燈發光閃爍特效]
 * 定義一個名為 pulse-glow 的動畫。
 * 0% 時透明度 0.8，稍微縮小 (scale 0.99)。
 * 100% 時完全不透明，稍微放大 (scale 1.01)。
 * 配合 alternate (交替播放)，就能產生像心跳或呼吸一樣的效果。
 */
@keyframes pulse-glow {
   0% { opacity: 0.8; transform: scale(0.99); }
   100% { opacity: 1; transform: scale(1.01); }
}

/* [圓環旋轉：順時針 360 度] */
@keyframes spin {
   100% { transform: rotate(360deg); }
}

/* [圓環旋轉：逆時針 360 度] */
@keyframes spin-reverse {
   100% { transform: rotate(-360deg); }
}

/* * [圖騰法陣的絕對定位堆疊技巧]
 * 教科書說明：
 * 外層容器 .quantum-totem 必須設定 `position: relative;` (相對定位)，
 * 這樣裡面的子元素設定 `position: absolute;` (絕對定位) 時，
 * 才會以這個容器為基準點來重疊在一起，而不會跑出版面。
 */
.quantum-totem {
   width: 90px;
   height: 90px;
   position: relative; 
   display: flex;
   align-items: center;
   justify-content: center;
   /* margin: 0 auto; 讓法陣在父容器中水平置中 */
   margin: 0 auto 35px auto; 
}

/* 最外層法陣 (順時針，12秒轉一圈，linear 代表等速不停頓) */
.totem-ring-1 {
   position: absolute; 
   width: 100%; height: 100%;
   border: 2px dashed var(--primary); /* 虛線邊框 */
   border-radius: 8px;
   animation: spin 12s linear infinite;
   box-shadow: 0 0 10px rgba(var(--primary-rgb), 0.3);
   will-change: transform;
}

/* 中間層法陣 (逆時針，8秒轉一圈，較小一點 75%) */
.totem-ring-2 {
   position: absolute; 
   width: 75%; height: 75%;
   border: 2px solid var(--accent); /* 實線邊框 */
   border-radius: 6px;
   animation: spin-reverse 8s linear infinite;
   box-shadow: 0 0 10px rgba(var(--accent-rgb), 0.3);
   will-change: transform;
}

/* 最內層法陣 (順時針，6秒轉一圈，最小 50%) */
.totem-ring-3 {
   position: absolute; 
   width: 50%; height: 50%;
   border: 1px dotted #ff3333; /* 點狀邊框 */
   border-radius: 4px;
   animation: spin 6s linear infinite;
   box-shadow: 0 0 8px rgba(255, 51, 51, 0.4);
   will-change: transform;
}

/* 法陣核心 (顯示星座符號) */
.totem-core {
   font-size: 2.5em;
   color: #fff;
   text-shadow: 0 0 15px #fff, 0 0 8px var(--primary);
   font-weight: normal;
   /* z-index: 2 確保核心文字永遠蓋在三個旋轉圓環的上方 */
   z-index: 2; 
}

/* =========================================================================
 * 【模組 10：警示框與大師解盤介面 (Alerts & Master Advice)】
 * ========================================================================= */

/* [五行共鳴警示框基礎樣式] */
.elemental-alert {
   margin: 20px 0;
   padding: 12px 15px;
   border-radius: 6px;
   font-weight: bold;
   font-size: 1.05em;
   text-align: center;
   animation: pulse-glow 2s infinite alternate; 
}

/* 針對 JS 算出的不同五行結果，套用不同的顏色狀態 */
.elemental-alert.sync-perfect {
   background: rgba(0, 255, 0, 0.1); border: 1px solid #00ff00; color: #00ff00; box-shadow: 0 0 10px rgba(0, 255, 0, 0.3);
}
.elemental-alert.sync-warning {
   background: rgba(255, 51, 51, 0.1); border: 1px solid #ff3333; color: #ff3333; box-shadow: 0 0 10px rgba(255, 51, 51, 0.3);
}
.elemental-alert.sync-normal {
   background: rgba(var(--primary-rgb), 0.1); border: 1px solid var(--primary); color: var(--primary); box-shadow: 0 0 10px rgba(var(--primary-rgb), 0.3);
}

/* [量子密鑰區塊：存放 Hash 防偽碼的地方] */
.quantum-key-box {
   margin-top: 25px; padding: 15px;
   background: rgba(0, 0, 0, 0.8); border: 1px dashed var(--accent); border-radius: 6px;
   display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 15px;
   box-shadow: 0 0 15px rgba(var(--accent-rgb), 0.1);
}
/* word-break: break-all; 確保很長的英數密鑰不會撐破容器，會自動強制斷行 */
.q-key-text { font-family: monospace; color: var(--primary); font-size: 1.1em; word-break: break-all; }
.q-copy-btn { background: transparent; color: var(--accent); border: 1px solid var(--accent); padding: 6px 15px; border-radius: 4px; cursor: pointer; font-weight: bold; transition: 0.3s; flex-shrink: 0; }
.q-copy-btn:hover { background: var(--accent); color: #000; box-shadow: 0 0 10px var(--accent); }

/* [波長重置倒數計時器] */
.cyber-countdown {
   color: #ff3333; font-family: monospace; font-size: 0.9em; font-weight: bold; text-shadow: 0 0 8px #ff3333;
   margin-top: 12px; background: rgba(255, 51, 51, 0.1); padding: 4px; border-radius: 4px; border: 1px solid rgba(255, 51, 51, 0.4);
}

/* * [駭客終端機：宜忌事項區]
 * 教科書說明：
 * 利用 `::before` 偽元素，我們可以直接在 CSS 裡「畫」出一個小標籤，
 * 而不需要在 HTML 裡面多寫一個 <div>，這是非常進階且乾淨的寫法。
 */
.cyber-console {
   background: rgba(0, 0, 0, 0.8); border: 1px solid var(--primary); padding: 25px 15px 15px 15px;
   font-family: monospace; border-radius: 6px; margin-top: 30px;
   box-shadow: inset 0 0 15px rgba(var(--primary-rgb), 0.15); /* inset 代表內陰影 */
   position: relative; /* 作為 ::before 定位的基準點 */
}
.cyber-console::before {
   content: "天璣居士 // 綜合吉凶指示"; /* 標籤文字 */
   position: absolute;
   top: -12px; /* 往上提，蓋在邊框上 */
   left: 15px;
   background: var(--bg-main); /* 用底色把後面的邊框遮住 */
   padding: 0 10px;
   color: var(--primary);
   font-size: 0.75em;
}

.cmd-row { display: flex; align-items: center; padding: 10px 0; }
/* flex-shrink: 0; 確保圖示區塊即使在空間不夠時，也絕對不會被壓縮變形 */
.cmd-icon { width: 80px; flex-shrink: 0; font-weight: bold; font-size: 1.05em; }
.cmd-text { flex: 1; font-size: 0.9em; letter-spacing: 1px; line-height: 1.4; }
.cmd-divider { border-bottom: 1px dashed rgba(var(--primary-rgb), 0.3); }

/* * [V0.15 優化] 大師箴言提示框排版 
 * 左側加上一條粗粗的金色實線 (border-left: 4px solid var(--accent))，
 * 可以營造出類似引用 (Blockquote) 的強烈視覺感。
 */
.master-advice-box, .analysis-box {
   margin-top: 25px; padding: 20px;
   background: rgba(var(--accent-rgb), 0.05);
   border-left: 4px solid var(--accent);
   border-radius: 0 8px 8px 0; /* 左邊直角，右邊圓角 */
   box-shadow: inset 0 0 15px rgba(var(--accent-rgb), 0.1);
}
.master-advice-title, .analysis-title { font-size: 1.2em; color: #ffd700; font-weight: bold; margin-bottom: 15px; text-shadow: 0 0 8px rgba(255, 215, 0, 0.4); }

/* V0.15 要求：行距加寬，提升長文閱讀體驗 */
.master-advice-text, .analysis-content { font-size: 1.05em; line-height: 2.2; color: #e0f7fa; letter-spacing: 1px; }

/* =========================================================================
 * 【模組 11：月曆模組與滑桿 (Calendar UI & Sliders)】
 * ========================================================================= */

/* * [日曆背光外框]
 * radial-gradient：放射狀漸層，從中心 (0%) 往外到 70% 漸漸變透明，
 * 就像背後打了一盞聚光燈一樣。
 */
.date-highlight-box {
   text-align: center;
   /* clamp(最小, 理想, 最大)：神級 RWD 字體與間距寫法，會隨螢幕自動無段縮放 */
   padding: clamp(10px, 2vw, 20px);
   margin-bottom: 20px;
   background: radial-gradient(circle, rgba(var(--primary-rgb),0.08) 0%, rgba(0,0,0,0) 70%);
   border-radius: 10px;
}

/* 頂部導航按鈕 (上年度/回今日/下年度) */
.year-nav-box { display: flex; justify-content: center; align-items: center; gap: clamp(5px, 1.5vw, 15px); margin-bottom: 15px; flex-wrap: wrap; }
.year-btn { cursor: pointer; color: var(--primary); font-size: clamp(0.85rem, 1.5vw, 1rem); padding: 6px 15px; border: 1px solid var(--primary); border-radius: 4px; background: rgba(var(--primary-rgb), 0.05); transition: all 0.3s; white-space: nowrap; }
.year-btn:hover { background: rgba(var(--primary-rgb), 0.2); color: #fff; box-shadow: 0 0 10px rgba(var(--primary-rgb), 0.6); }

/* 日曆中央的主視覺數字與左右切換箭頭 */
.calendar-gregorian { font-size: clamp(1rem, 2vw, 1.2rem); color: #88ffcc; letter-spacing: 1px; margin-bottom: 15px; word-break: break-all; }
.calendar-d-container { display: flex; justify-content: center; align-items: center; gap: clamp(15px, 4vw, 40px); margin: 10px 0; flex-wrap: nowrap; }
.nav-btn-wrapper { cursor: pointer; transition: all 0.3s ease; display: flex; flex-direction: column; align-items: center; padding: 10px; flex-shrink: 0; }
.nav-btn-wrapper:hover { transform: scale(1.15); } /* 滑鼠移入按鈕放大 */
.nav-arrow { color: #88ffcc; font-size: clamp(2rem, 5vw, 3rem); text-shadow: 0 0 10px var(--primary); }
.nav-btn-wrapper:hover .nav-arrow { color: #ffffff; text-shadow: 0 0 20px var(--primary), 0 0 40px #0088ff; }
.nav-text { font-size: clamp(0.7rem, 1.5vw, 1rem); color: #88ffcc; margin-top: 5px; white-space: nowrap; }

/* 日曆主數字，字體極大化並加上多層陰影製造立體感 */
.calendar-d {
   font-size: clamp(4.5rem, 12vw, 8rem); font-weight: 900; color: #ffffff;
   text-shadow: 0 0 10px var(--primary), 0 0 20px var(--primary), 0 0 40px #0088ff;
   line-height: 1; font-family: 'Arial', sans-serif; text-align: center; white-space: nowrap;
}
.calendar-d.large-text { font-size: clamp(2.8rem, 8vw, 5rem); }
.calendar-lunar { font-size: clamp(1rem, 2vw, 1.2rem); color: var(--accent); letter-spacing: 1px; margin-top: 15px; text-shadow: 0 0 5px rgba(var(--accent-rgb), 0.5); }

/* * [橫向捲動日期滑桿]
 * 教科書說明：
 * overflow-x: auto; 讓內容超出時可以左右滑動。
 * 使用 ::-webkit-scrollbar 偽元素徹底改寫原生醜陋的卷軸樣式。
 */
.day-slider {
   display: flex; justify-content: flex-start; gap: 8px; margin-top: 25px;
   overflow-x: auto; /* 啟用橫向滾動 */
   padding-bottom: 8px; scrollbar-width: thin; scrollbar-color: #004d4d #02060a; width: 100%;
}
.day-slider::-webkit-scrollbar { height: 6px; } /* 捲軸高度(粗細) */
.day-slider::-webkit-scrollbar-track { background: #02060a; border-radius: 3px; } /* 捲軸軌道 */
.day-slider::-webkit-scrollbar-thumb { background: #004d4d; border-radius: 3px; } /* 捲軸拉桿 */

.slider-item {
   cursor: pointer; padding: 8px 6px; min-width: 55px; border: 1px solid rgba(var(--primary-rgb), 0.3);
   border-radius: 6px; text-align: center; background: rgba(10, 25, 47, 0.6); transition: all 0.3s;
   flex-shrink: 0; /* 嚴禁被擠壓變形 */
   display: flex; flex-direction: column; justify-content: center;
}
.slider-item:hover { border-color: var(--primary); background: rgba(var(--primary-rgb), 0.2); }
/* 目前選中的日期樣式 */
.slider-item.active { background: #004d4d; border-color: var(--accent); box-shadow: 0 0 8px rgba(var(--accent-rgb), 0.6); }
.slider-d { font-size: 1.15rem; font-weight: bold; color: #ffffff; }
.slider-w { font-size: 0.85rem; color: #88ffcc; margin-top: 3px; }
.slider-item.active .slider-d, .slider-item.active .slider-w { color: var(--accent); }

/* =========================================================================
 * 【模組 12：廣告聯播區塊 (Ad Carousel & Banners)】
 * ========================================================================= */

/* 文字連結廣告網格 */
.ad-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; }
.text-ad { display: flex; align-items: center; padding: 15px; background: rgba(var(--primary-rgb), 0.05); border: 1px solid rgba(var(--primary-rgb), 0.3); border-radius: 8px; color: var(--primary); text-decoration: none; transition: 0.3s; }
.text-ad:hover { background: rgba(var(--primary-rgb), 0.2); border-color: var(--primary); box-shadow: 0 0 10px rgba(var(--primary-rgb), 0.5); }
.red-icon { color: #ff3333; margin-right: 10px; font-size: 1.2em; text-shadow: 0 0 5px #ff3333; }

/* 廣告輪播總容器 */
.ad-carousel-wrapper { width: 100%; position: relative; border: 2px solid var(--accent); border-radius: 8px; overflow: hidden; background: #000; box-shadow: 0 0 15px rgba(var(--accent-rgb), 0.2); }

/* 輪播圖左右箭頭，運用絕對定位的 top: 50% 加上 translateY(-50%) 垂直置中 */
.ad-arrow { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0, 0, 0, 0.6); color: var(--primary); border: 1px solid var(--primary); border-radius: 50%; width: 40px; height: 40px; font-size: 18px; cursor: pointer; z-index: 10; display: flex; justify-content: center; align-items: center; transition: all 0.3s ease; backdrop-filter: blur(4px); }
.ad-arrow:hover { background: rgba(var(--primary-rgb), 0.4); color: var(--accent); border-color: var(--accent); box-shadow: 0 0 15px rgba(var(--primary-rgb), 0.8); }
.ad-arrow-prev { left: 10px; }
.ad-arrow-next { right: 10px; }

/* * [無 JS 輪播核心技巧：Scroll Snap]
 * 教科書說明：
 * `scroll-snap-type: x mandatory;` 能讓使用者用手指滑動時，圖片會自動「吸附」到邊緣。
 * 這是在行動裝置上最流暢的原生輪播體驗。
 */
.ad-slider-track {
   display: flex; overflow-x: auto;
   scroll-behavior: smooth; /* 點擊左右箭頭時，捲動會是平滑過渡的 */
   scroll-snap-type: x mandatory;
   scrollbar-width: none; /* 隱藏原生卷軸 */
   -webkit-overflow-scrolling: touch; /* 讓 iOS 滑動更順暢 */
}
.ad-slider-track::-webkit-scrollbar { display: none; }

/* 每張輪播圖維持 16:9 比例 */
.ad-slide {
   flex: 0 0 100%; /* 確保每張圖佔滿 100% 寬度 */
   scroll-snap-align: start; /* 吸附對齊點為起點 */
   position: relative; aspect-ratio: 16 / 9; overflow: hidden;
}
/* object-fit: cover; 讓圖片填滿容器不變形 */
.ad-slide img { width: 100%; height: 100%; object-fit: cover; opacity: 0.7; transition: opacity 0.5s ease, transform 0.5s ease; }
.ad-slide:hover img { opacity: 1; transform: scale(1.03); } /* 圖片懸停微微放大 */

/* 廣告圖內的標籤與按鈕 (絕對定位漂浮在圖上) */
.ad-slide-title { position: absolute; top: 15px; left: 15px; background: rgba(0, 0, 0, 0.7); color: var(--primary); padding: 6px 15px; border-radius: 4px; font-size: 1em; font-weight: bold; border: 1px solid var(--primary); z-index: 5; pointer-events: none; }
.ad-slide-link { position: absolute; bottom: 15px; right: 15px; background: rgba(var(--accent-rgb), 0.9); color: #050a10; padding: 8px 20px; border-radius: 4px; font-weight: bold; text-decoration: none; z-index: 5; border: 1px solid var(--accent); transition: all 0.3s ease; box-shadow: 0 0 10px rgba(var(--accent-rgb), 0.5); }
.ad-slide-link:hover { background: #fff; box-shadow: 0 0 20px var(--accent); transform: scale(1.05); }

/* 底部小圓點指示器 */
.ad-dots-container { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: 15px; }
.ad-dot { width: 8px; height: 8px; border-radius: 50%; background-color: rgba(var(--primary-rgb), 0.3); border: 1px solid var(--primary); cursor: pointer; transition: all 0.3s ease; }
.ad-dot.active { background-color: var(--accent); border-color: var(--accent); box-shadow: 0 0 8px rgba(var(--accent-rgb), 0.8); transform: scale(1.3); }

/* =========================================================================
 * 【模組 13：下載按鈕與頁尾宣告 (Download CTA & Footer)】
 * 教科書說明：
 * 這裡處理使用者與系統互動後的最終出口 (Call to Action)，
 * 以及版權資訊與隱藏 SEO 關鍵字的排版。
 * ========================================================================= */

/* [一鍵下載圖卡按鈕] */
.btn-download-card {
   background: transparent; 
   color: var(--accent); 
   border: 1px dashed var(--accent); /* 虛線邊框，增加設計感 */
   padding: 12px 25px; 
   font-size: 1.1em; 
   font-weight: bold; 
   border-radius: 5px;
   cursor: pointer; 
   transition: all 0.3s; 
   box-shadow: 0 0 10px rgba(var(--accent-rgb), 0.2); 
   width: 100%; 
   /* 限制最大寬度，在電腦版不會變無限長，在手機版則能自動縮放 */
   max-width: 350px; 
}
/* 懸停時，背景填滿金色，文字反黑，光暈放大 */
.btn-download-card:hover { 
   background: var(--accent); color: #050a10; box-shadow: 0 0 20px var(--accent); 
}

/* [圖卡底部的防偽浮水印] (只有下載下來的圖片才看得清楚) */
.capture-watermark { 
   text-align: center; font-size: 0.85em; color: rgba(var(--primary-rgb), 0.5); 
   margin-top: 20px; padding-top: 15px; border-top: 1px dashed rgba(var(--primary-rgb), 0.2); letter-spacing: 1px; 
}

/* * [作者資訊外框容器]
 * 教科書說明：
 * 左右加上粗金邊 (border-left/right: 4px solid var(--accent))，
 * 是一種非常經典的「證書」或「權威聲明」的 UI 設計手法。
 */
.cyber-footer-info { 
   margin: 50px auto 20px auto; padding: 25px 30px; max-width: 800px; 
   background: rgba(10, 15, 20, 0.8); border: 1px solid var(--primary); 
   border-left: 4px solid var(--accent); border-right: 4px solid var(--accent); 
   border-radius: 8px; box-shadow: 0 0 15px rgba(var(--primary-rgb), 0.2); 
   text-align: left; line-height: 1.8; 
}
.cyber-footer-info h3 { color: var(--accent); text-align: center; margin-top: 0; margin-bottom: 15px; text-shadow: 0 0 8px rgba(var(--accent-rgb), 0.6); border-bottom: 1px dashed rgba(var(--primary-rgb), 0.4); padding-bottom: 12px; }
.cyber-footer-info p { margin: 8px 0; color: #e6e6e6; font-size: 1.05em; }
.cyber-footer-info strong { color: var(--primary); letter-spacing: 1px; }

/* [版權宣告區] */
.cyber-footer-copyright { margin-top: 15px; padding-top: 15px; border-top: 1px dashed rgba(var(--primary-rgb), 0.4); text-align: center; font-size: 0.9em; color: rgba(255, 255, 255, 0.5); }

/* * [頁尾計數器]
 * 利用 Flexbox 將四個計數器 (今日/本週/本月/總計) 完美並排。
 * gap: 40px; 確保它們之間有足夠的呼吸空間。
 */
footer { text-align: center; margin-top: 50px; padding: 30px 20px; border-top: 1px solid rgba(var(--primary-rgb), 0.3); background: rgba(5, 10, 16, 0.8); }
.counter-group { display: flex; justify-content: center; gap: 40px; margin-bottom: 25px; flex-wrap: wrap; }
.counter-item { color: var(--primary); font-size: 1.1em; }
.counter-item span { display: block; font-size: 1.2em; color: var(--accent); font-weight: bold; margin-top: 5px; text-shadow: 0 0 5px rgba(var(--accent-rgb), 0.5); }

/* =========================================================================
 * 【模組 14：陣法排行榜 (Leaderboard - 千人千面專屬區塊)】
 * 教科書說明：
 * 這是 V0.17 之後非常重要的版面，展示三大類別 (運勢/財運/愛情) 的前三名。
 * ========================================================================= */

/* [排行榜總容器] 帶有內發光 (inset box-shadow) 營造凹陷的螢幕質感 */
.leaderboard-wrapper { margin-top: 30px; padding: 20px; background: rgba(var(--primary-rgb), 0.03); border: 1px solid rgba(var(--primary-rgb), 0.3); border-radius: 8px; box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.5); }
.leaderboard-main-title { text-align: center; font-size: 1.3em; color: var(--accent); font-weight: bold; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px dashed rgba(var(--accent-rgb), 0.4); text-shadow: 0 0 10px rgba(var(--accent-rgb), 0.6); letter-spacing: 2px; }

/* 使用 CSS Grid 將排行榜分為三欄 (3 columns) */
.leaderboard-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }

/* 單一分類區塊的懸停浮動效果 */
.leaderboard-category { background: rgba(0, 0, 0, 0.4); border-radius: 6px; padding: 15px; border-top: 2px solid var(--primary); transition: transform 0.3s ease; }
.leaderboard-category:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(var(--primary-rgb), 0.2); }
.category-title { font-size: 1.1em; color: #fff; text-align: center; margin-bottom: 15px; font-weight: bold; text-shadow: 0 0 5px var(--primary); }

/* 名次列表容器 */
.rank-list { display: flex; flex-direction: column; gap: 12px; }

/* * [單一榜單項目] 
 * 預設 border-left 是 transparent (透明)，
 * 稍後會依據名次 (1, 2, 3) 覆寫左邊框的顏色。
 */
.rank-item { display: flex; align-items: center; background: rgba(var(--primary-rgb), 0.05); border-radius: 6px; padding: 10px; border-left: 3px solid transparent; transition: background 0.3s; }
.rank-item:hover { background: rgba(var(--primary-rgb), 0.15); }

/* * [排名徽章 (1, 2, 3名) 底座]
 * flex-shrink: 0; 保證徽章絕對是正圓形，不會被旁邊的文字擠壓成橢圓。
 */
.rank-medal { width: 28px; height: 28px; flex-shrink: 0; display: flex; justify-content: center; align-items: center; border-radius: 50%; font-weight: bold; font-size: 0.9em; color: #050a10; margin-right: 12px; box-shadow: 0 0 5px rgba(255, 255, 255, 0.5); }

/* 🎯 利用 CSS linear-gradient (線性漸層) 畫出金、銀、銅牌的質感 */
.rank-1 { border-left-color: #ffd700; }
.rank-1 .rank-medal { background: linear-gradient(135deg, #fff200, #ffb900); } /* 第1名：曜金 */

.rank-2 { border-left-color: #00ffff; }
.rank-2 .rank-medal { background: linear-gradient(135deg, #a8ff78, #78ffd6); } /* 第2名：秘銀青 */

.rank-3 { border-left-color: #ff9966; }
.rank-3 .rank-medal { background: linear-gradient(135deg, #ffb347, #ffcc33); } /* 第3名：古銅橘 */

.rank-info { display: flex; flex-direction: column; gap: 4px; }
.rank-zodiac { color: var(--accent); font-weight: bold; font-size: 1.05em; letter-spacing: 1px; }
.rank-desc { color: #e0f7fa; font-size: 0.85em; line-height: 1.4; opacity: 0.9; }

/* =========================================================================
 * 【模組 15：社群分享與互動按鈕 (Action Buttons & Modal - V0.16 新增)】
 * 教科書說明：
 * 負責頁尾四個按鈕的自適應排版，以及 QRCode 彈窗的毛玻璃遮罩。
 * ========================================================================= */

/* [頁尾按鈕容器] Flexbox 排版，支援自動換行 */
.footer-action-buttons { 
   display: flex; flex-wrap: wrap; justify-content: center; gap: 15px; 
   margin: 20px 0; padding-top: 20px; border-top: 1px dashed rgba(var(--primary-rgb), 0.4); 
}

/* * [互動按鈕本體] 
 * flex: 1 1 auto; 讓按鈕能根據內容與螢幕寬度彈性伸放。
 * max-width: 200px; 限制最大寬度，在電腦版上四顆按鈕能整齊並排。
 */
.cyber-action-btn { 
   display: inline-flex; align-items: center; justify-content: center; 
   background: rgba(var(--bg-main), 0.8); color: var(--primary); 
   border: 1px solid var(--primary); padding: 10px 20px; border-radius: 6px; 
   text-decoration: none; font-weight: bold; font-size: 0.95em; cursor: pointer; 
   transition: all 0.3s ease; box-shadow: 0 0 10px rgba(var(--primary-rgb), 0.2); 
   flex: 1 1 auto; max-width: 200px; text-align: center; 
}
.cyber-action-btn:hover { background: rgba(var(--primary-rgb), 0.2); color: var(--accent); border-color: var(--accent); box-shadow: 0 0 15px rgba(var(--accent-rgb), 0.6); transform: translateY(-2px); }

/* * [隱藏式 QRCode 彈窗遮罩 (Modal)] 
 * position: fixed; 配合 top/left 0 且 width/height 100%，
 * 會產生一個蓋住整個螢幕的黑色半透明遮罩。
 */
.qr-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.85); z-index: 100000; display: flex; justify-content: center; align-items: center; backdrop-filter: blur(5px); }

/* [QRCode 彈窗主體] 套用呼吸燈動畫 */
.qr-modal-content { position: relative; background: rgba(var(--bg-main), 0.95); border: 2px solid var(--accent); padding: 30px; border-radius: 12px; text-align: center; box-shadow: 0 0 30px rgba(var(--accent-rgb), 0.5); max-width: 90%; animation: pulse-glow 2s infinite alternate; }

/* [彈窗關閉按鈕 "X"] */
.qr-close-btn { position: absolute; top: 5px; right: 15px; color: var(--primary); font-size: 32px; font-weight: bold; cursor: pointer; transition: color 0.3s; }
.qr-close-btn:hover { color: #ff3333; text-shadow: 0 0 10px #ff3333; }
.qr-modal-content img { max-width: 200px; width: 100%; border: 2px solid var(--primary); border-radius: 8px; margin-top: 15px; }

/* =========================================================================
 * 【模組 16：響應式佈局 (Mobile RWD Media Queries)】
 * 教科書說明：
 * 利用 @media 偵測螢幕寬度。當螢幕寬度小於設定值時，觸發特定的 CSS 覆寫，
 * 達到「一套代碼，適應手機、平板、電腦」的完美 RWD 效果。
 * ========================================================================= */

/* --- [平板尺寸 (螢幕寬度小於等於 820px)] --- */
@media (max-width: 820px) {
   /* 選單動畫：手機/平板選單起始隱藏文字，只留漢堡圖示 */
   .menu-text { max-width: 0; opacity: 0; margin-left: 0; }
   
   /* 當 JS 加入 expanded 類別時，文字滑順拉出 */
   .menu-toggle-btn.expanded .menu-text { max-width: 150px; opacity: 1; margin-left: 8px; }
   
   .dropdown-list a { padding: 12px 10px; font-size: 14.5px; }
   .dropdown-list a:hover { padding-left: 18px; }
   .top-right-nav { top: 10px; right: 10px; }
   .menu-toggle-btn { padding: 8px 15px; font-size: 14px; }
   
   /* 為了適應小螢幕，下拉選單寬度稍微縮減，並設定 max-width 防止超出螢幕 */
   .dropdown-list { width: 240px; max-width: calc(100vw - 20px); }
   
   /* 排行榜的三欄在平板上會太擠，強制改為 1 欄直排 (1fr) */
   .leaderboard-grid { grid-template-columns: 1fr; }
}

/* --- [手機尺寸 (螢幕寬度小於等於 600px)] --- */
@media (max-width: 600px) {
   /* 縮小主標題字體與外留白，節省手機螢幕空間 */
   .header-title-area h1 { font-size: 1.6em; }
   .main-container { padding: 0 10px; }
   .glass-panel { padding: 15px; }
   
   /* * [表單改為雙欄 Grid 排版]
    * 教科書說明：這招非常猛！
    * 手機上把表單從 Flex 改成 Grid (1fr 1fr 雙欄)。
    * grid-column: 1 / 3 代表「生日區塊」橫跨兩欄 (佔滿整行)。
    * 性別佔左欄，血型佔右欄。完美利用手機空間！
    */
   .form-group { display: grid; grid-template-columns: 1fr 1fr; padding: 20px 15px; gap: 15px; }
   #block-dob { grid-column: 1 / 3; align-items: flex-start; }
   #block-gender { grid-column: 1 / 2; align-items: flex-start; }
   #block-blood { grid-column: 2 / 3; align-items: flex-start; }
   .input-controls { justify-content: space-between; gap: 5px; }
   
   /* 生日的 年/月/日 下拉選單各佔約三分之一寬度 */
   #dob-container select { width: 32%; padding: 8px 5px; }
   
   /* 左側懸浮換色選單縮小，防誤觸 */
   .floating-menu { left: 5px; gap: 10px; }
   .floating-menu a { width: 35px; height: 35px; line-height: 35px; font-size: 0.85em; }
   
   /* 分頁按鈕允許換行，字體縮小 */
   .tab-header { flex-wrap: wrap; }
   .tab-btn { font-size: 0.8em; padding: 10px 1px; }
   .tab-content { padding: 10px 0; border: none; }
   .fortune-capture-box { padding: 10px 5px; border: none; background: transparent; }
   
   /* 雷達圖與進度條改為上下垂直堆疊 */
   .energy-container { flex-direction: column; gap: 15px; }
   
   /* 廣告輪播圖與按鈕微調縮小 */
   .ad-slide-title { font-size: 0.85em; padding: 4px 10px; }
   .ad-slide-link { font-size: 0.85em; padding: 6px 15px; }
   .ad-arrow { width: 30px; height: 30px; font-size: 14px; }
   .ad-dot { width: 6px; height: 6px; }
   .ad-section { padding: 0; border: none; background: transparent; box-shadow: none; }
   
   /* 網格改雙欄或單欄 */
   .fengshui-grid { grid-template-columns: repeat(2, 1fr); }
   .fortune-index-grid { grid-template-columns: 1fr; }
   .counter-group { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
   
   .cyber-footer-info { padding: 20px 15px; font-size: 0.95em; }
   .cyber-footer-info h3 { font-size: 1.2em; }
   footer { text-align: left; }
   
   .leaderboard-wrapper { padding: 10px; margin-top: 20px; }
   .leaderboard-main-title { font-size: 1.1em; }
   .category-title { font-size: 1em; }

   /* * 🎯 [V0.16 修改重點] 手機版的四大社群按鈕
    * flex-direction: column; 將原本並排的按鈕變成垂直堆疊。
    * align-items: stretch; 強制按鈕寬度拉伸至與父容器同寬。
    * 這樣在手機上就會變成四顆大大的橫條按鈕，超級好點！
    */
   .footer-action-buttons {
      flex-direction: column;
      align-items: stretch;
   }
   .cyber-action-btn {
      max-width: 100%;
      width: 100%;
   }
}