@charset "utf-8";

/* ==========================================================================
   https://meyerweb.com/eric/tools/css/reset/  v2.0 | 20110126 | public domain
   依 cleanup_guidelines.md 步驟 1，reset 合併於本檔最上方。
   註：未沿用 reset.css 尾端標為「BW reset」的那段（html{font-size:62.5%} 與
   body{font:62.5% ...}）——那是 Bookwalker 源檔配套的，本頁從零做，
   若加入會把基準字級壓成 10px，與設計稿的 px 標示不符。
   ========================================================================== */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0; padding: 0; border: 0;
  font-size: 100%; font: inherit; vertical-align: baseline;
}
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section { display: block; }
body { line-height: 1; }
ol, ul { list-style: none; }
blockquote, q { quotes: none; }
blockquote:before, blockquote:after,
q:before, q:after { content: ""; content: none; }
table { border-collapse: collapse; border-spacing: 0; }
img { max-width: 100%; height: auto; }
a { color: inherit; outline: none; }
.headerNav { z-index: 11 !important; }

/* ==========================================================================
   活動 1882 — 單筆結帳滿 10 點贈 1 點
   色值取自 Figma 設計稿；字體取自設計稿的 H3 / P 定義。
   ========================================================================== */
:root {
  --ev-orange: #F88328;   /* 書名、強調 */
  --ev-green: #6EA933;    /* 作者、區塊標籤 */
  --ev-yellow: #FCC44E;   /* pill 邊框 */
  --ev-yellow-bg: #FEF8E9;/* pill 底 */
  --ev-green-line: #AACF9E; /* 活動資訊外框 */
  --ev-paper: #FAF9F3;    /* 區塊底 */
  --ev-text: #393939;
  --ev-text-mute: #707070;

  --ev-font-title: "Zen Maru Gothic", "Huninn", "Noto Sans TC", "微軟正黑體", sans-serif;
  --ev-font-body: "Huninn", "Noto Sans TC", "微軟正黑體", sans-serif;

  --ev-max: 1050px;       /* 設計稿 desktop 內容寬 */
}

html { scroll-behavior: smooth; }

body {
  font-family: var(--ev-font-body);
  color: var(--ev-text);
  background: #fff;
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
}

.ev { overflow-x: hidden; }

/* border-box 限定在 .ev 子樹；header（.evh）自己也宣告了一份，兩邊互不干涉 */
.ev, .ev *, .ev *::before, .ev *::after { box-sizing: border-box; }

/* 錨點目標要讓開 sticky header（mobile 54 / desktop 61）*/
#books, #info, #notes { scroll-margin-top: 70px; }
@media (min-width: 1024px) {
  #books, #info, #notes { scroll-margin-top: 81px; }
}

/* header 配色沿用樣板預設（設計稿的黃／磚紅），此處僅記錄可覆蓋的變數：
   .evh { --evh-bg: #FFE958; --evh-fg: #DA5125; --evh-social-bg: #FFF59E; } */

/* ---------- KV ---------- */
.ev-kv img {
  display: block;
  width: 100%;
  height: auto;
}

/* ---------- 區塊標題（手寫字切圖） ---------- */
.ev-h2 {
  margin: 0 auto;
  padding: 0 16px;
  text-align: center;
}
.ev-h2 img {
  display: inline-block;
  height: auto;
  max-width: 100%;
}
/* 三個標題在設計稿各有自己的寬度，用統一的 max-height 換算會對不上
   （活動資訊只有 250、設計稿是 293）。改成直接給寬度，max-width:100% 負責 mobile 防溢出。 */
.ev-books .ev-h2 img { width: 341px; }   /* 設計稿 mobile 341×113；desktop 見下方 */
.ev-info  .ev-h2 img { width: 293px; }   /* 設計稿 293×135，兩個斷點同尺寸 */
.ev-notes .ev-h2 img { width: 350px; }   /* 設計稿 350×140，兩個斷點同尺寸 */

/* ---------- 推薦作品 ---------- */
.ev-books { padding: 40px 0 0; }

.ev-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px 0;
  max-width: var(--ev-max);
  margin: 0 auto;
  padding: 40px 12px 0;
}

.ev-book {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px 8px 24px;
  text-align: center;
}

/* 書封：雲朵彩帶襯底（images/book-deco.png）+ 書封帶陰影。

   設計稿是書封 112×160、雲朵 273（書封完整落在雲朵內）。**這裡刻意不照設計稿**：
   rakak 2026-08-26 決定書封放大到 260 高，並且明確說「比雲朵大也不會怎樣」——
   所以現在書封上下各戳出雲朵約 22px，雲朵退成襯在中段的光暈。要改回設計稿的
   包覆關係，條件是雲朵寬 > 書封寬 × 2.14（雲朵比例 1.5、書封 0.7）。

   雲朵改用 % 綁在書封上（175% / 125%），所以要調大小只動 <a> 的 width/height 一處。
   ⚠️ height:125% 是虛的：雲朵圖比例 1.5，contain 之下實際畫出來是 322×215，
   高度只要夠大不裁到就行，真正決定大小的是寬度那個 175%。

   ⚠️ 高度要**固定**、寬度要 auto：封面原圖一律 400 高但寬度 262～283，
   只給寬度的話高度會隨各書比例差出 9px，同一排的作者就對不齊。
   而且 width 給死（或 max-width 卡住）會把書封橫向壓扁——各書壓縮量還不一樣
   （實測 1.8%～7.1%），排在一起看得出來。所以 <a> 的寬度要留到最寬的那本
   （0.708 × 260 ≈ 184）都不會被 max-width 夾到。 */
.ev-book > a {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  position: relative;
  width: 184px;      /* 只是容器：夠寬讓最寬的書封不被 max-width 夾扁，實際圖寬 174～183 */
  height: 260px;     /* 這個才是真正的尺寸來源，雲朵與書封都跟著它 */
  margin: 0 auto 12px;
}
/* 雲朵要比書封寬一倍多，所以不能用 <a> 的 background——background 畫不出
   元素的邊界，整張雲朵會被 <a> 裁掉，只剩書封後面那一條。
   改用絕對定位的 ::before 置中（BG.png 比例 1.5）。 */
.ev-book > a::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: 175%;
  height: 125%;           /* 見上：contain 之下實畫 322×215，寬度才是有效值 */
  transform: translate(-50%, -50%);
  background: url("../images/book-deco.png") center / contain no-repeat;
  pointer-events: none;
}
.ev-book > a img {
  display: block;
  position: relative;   /* 疊在雲朵之上，不用負 z-index（怕被祖先的 stacking context 吃掉） */
  z-index: 1;
  width: auto;          /* 高度吃滿、寬度自適應 → 每本等高，作者才齊平 */
  height: 100%;
  max-width: 100%;
  box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.25); /* 設計稿「作品陰影」 */
  transition: transform 0.25s ease;
}
.ev-book > a:hover img { transform: scale(1.04) rotate(-1.5deg); }

.ev-book h4 {
  font-family: var(--ev-font-title);
  font-weight: 700;
  font-size: 20px;
  letter-spacing: 3px;
  line-height: 1.4;
  color: var(--ev-orange);
  /* 最多兩行，超過截字（rakak 2026-08-26）。正式書單 20 本裡有 10 本會換行、
     最長 3 行，不截的話卡片高度差到 76px。
     line-clamp 至今仍要 -webkit- 前綴＋display:-webkit-box 才會生效，
     標準版 line-clamp 先放著等瀏覽器跟上。 */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-clamp: 2;
  overflow: hidden;
}
/* ⚠️ 作者列 2026-08-26 起不顯示（rakak 決定）。樣式留著，之後要恢復直接把
   <p class="ev-author"> 加回 markup 即可。
   margin-top: auto 是重點：grid 一排會拉成等高，把作者壓到卡片底部，同一排的
   作者底線就自動對齊，不必替書名預留固定行數。書名現在會截成兩行，但作者本身
   也可能換行（#8 五個作者 2 行、#17 十一個作者 3 行），靠預留行數是對不齊的。 */
.ev-author {
  margin-top: auto;
  padding-top: 6px;
  font-size: 16px;
  letter-spacing: 1px;
  color: var(--ev-green);
}

/* ---------- 活動資訊 / 注意事項共用的圓角列 ---------- */
.ev-pill {
  display: block;
  padding: 12px 16px;
  border: 2px solid var(--ev-yellow);
  border-radius: 999px;
  background: var(--ev-yellow-bg);
  font-size: 15px;
  letter-spacing: 1px;
  line-height: 1.5;
  color: var(--ev-text);
}

/* ---------- 活動資訊 ---------- */
.ev-info { padding: 40px 0 0; }

/* 說明框左右的彩帶（設計稿「彩帶 1」114×316、「彩帶 2」100×316）。
   confetti.png 是一張四角彩帶，靠 background-position 取左半／右半。
   設計稿只有 desktop 有，故在 1024 以上才顯示。 */
.ev-info-wrap { position: relative; }
.ev-info-wrap::before,
.ev-info-wrap::after {
  content: "";
  display: none;
  position: absolute;
  top: 50%;
  width: 114px;
  height: 316px;
  transform: translateY(-50%);
  background-image: url("../images/confetti.png");
  background-repeat: no-repeat;
  background-size: auto 100%;   /* 高度填滿 316，露出圖左／右緣的那組彩帶 */
  pointer-events: none;
}
.ev-info-wrap::before { left: 0; background-position: left center; }
.ev-info-wrap::after { right: 0; width: 100px; background-position: right center; }

/* 外層寬 899 = 彩帶 114 + 說明欄位 685 + 彩帶 100（設計稿「活動資訊」frame 寬） */
.ev-info-wrap {
  max-width: 899px;
  margin: 20px auto 0;
  padding: 0 12px;
}

.ev-panel {
  max-width: 685px;              /* 設計稿說明欄位寬 */
  margin: 0 auto;
  padding: 20px;
  border: 2px solid var(--ev-green-line);
  border-radius: 16px;
  background: var(--ev-paper);
}

.ev-dl dt {
  font-family: var(--ev-font-title);
  font-weight: 700;
  font-size: 18px;
  letter-spacing: 3px;
  color: var(--ev-green);
  margin-bottom: 8px;
}
.ev-dl dd { margin-bottom: 20px; }
.ev-dl dd:last-child { margin-bottom: 0; }

/* ---------- 注意事項 ---------- */
.ev-notes { padding: 40px 0 0; }

.ev-notelist {
  max-width: 685px;
  margin: 40px auto 0;
  padding: 0 12px;
}
.ev-notelist li + li { margin-top: 12px; }

/* ---------- footer ---------- */
/* ⚠️ 這一區踩過三次，依序記著：
   1) footer-deco.png 的**上半 260/552（47%）是透明的**——波浪就是靠那片透明形成的。
      所以底色**絕對不能設在 .ev-footer 上**，那會從透明處透出來把波浪填平成一塊黃。
      底色只給文字區（見下面的 .ev-footer p）。
   2) 圖的黃色其實鋪到 y=520（實測 92% 黃），只有最底 1~2px 是透明邊。
      先前取樣取到 y=540 那條邊，誤判成「底部沒有黃、要補底色」。
   3) 「間隔 -10」是**文字區與裝飾帶**的關係，不是 footer 與上方內容：
      設計稿 footer 1（裝飾帶）y=0 高 281.5、footer（文字區）y=271.5 → 重疊 10px。
      一度做成整個 footer 上移，黃底把注意事項最後一條 pill 蓋掉。 */
.ev-footer {
  margin-top: 8px;
}
.ev-footer::before {
  content: "";
  display: block;
  height: 86px;
  background: url("../images/footer-deco.png") center bottom / cover no-repeat;
}
.ev-footer p {
  /* 文字區才是要黃底的那一塊：裝飾圖只到 281，文字區 86px 高只有上緣 10px
     疊在圖的黃色上，其餘會露白。色值取自設計稿實測 #FFE958（與 header 同色）。
     滿版寬會排成一行，所以限 808（設計稿 desktop 文字寬）——但底色要滿版，
     因此寬度限制交給內距、背景鋪在整條上。 */
  background: #FFE958;
  /* 往上疊 10px 貼住裝飾帶（設計稿 271.5 對 281.5）；position 讓它蓋在圖上面 */
  position: relative;
  margin: -10px 0 0;
  /* 設計稿文字區 96 高，拆開是 padding 上 16 ／ 文字 48（兩行 × 24）／ 下 32
     ——上下不對稱。用對稱的 16/16 加 line-height 26 會變成 84，少 12px。 */
  padding-top: 16px;
  padding-bottom: 32px;
  padding-left: max(12px, calc((100% - 808px) / 2));
  padding-right: max(12px, calc((100% - 808px) / 2));
  font-size: 12px;
  line-height: 24px;
  letter-spacing: 0.5px;
  text-align: center;
  color: var(--ev-text-mute);
}

/* ==========================================================================
   斷點：設計稿 390 / 744 / 1280
   ========================================================================== */
@media (min-width: 744px) {
  .ev-books { padding-top: 80px; }
  .ev-info { padding-top: 80px; }
  .ev-notes { padding-top: 80px; }
  .ev-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 12px 0;                /* 設計稿 tablet 排距 322 − 卡片 310 */
    padding-top: 40px;          /* 設計稿 173 − 標題 133 */
  }
  /* 2 欄之下，落單的最後一本跨欄居中（設計稿 tablet 的第 9 本 30:888 x=197 就是這個）。
     ⚠️ 寫成 :last-child:nth-child(odd) 而不是寫死 nth-child(9)——書單本數會換。
     現行書單 20 本是偶數，這條不會生效。 */
  .ev-book:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .ev-pill { font-size: 16px; letter-spacing: 2px; }
  .ev-panel { padding: 40px; }
  .ev-dl dt { font-size: 22px; letter-spacing: 4px; }
  .ev-footer::before { height: 164px; }
  .ev-footer p { font-size: 13px; }
}

@media (min-width: 1024px) {
  .ev-books { padding-top: 80px; }
  .ev-books .ev-h2 img { width: 401px; }   /* 設計稿 desktop 401×133 */
  /* padding 歸零，1050 ÷ 3 = 350，與設計稿卡片寬一致 */
  .ev-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 40px 0;                /* 設計稿 desktop 排距 350 − 卡片 310 */
    padding-left: 0;
    padding-right: 0;
  }
  /* 3 欄之下不需要 tablet 那條跨欄 */
  .ev-book:last-child:nth-child(odd) { grid-column: auto; }
  .ev-pill { font-size: 18px; letter-spacing: 3px; padding: 14px 24px; }
  .ev-dl dt { font-size: 24px; letter-spacing: 5px; }
  .ev-info-wrap::before,
  .ev-info-wrap::after { display: block; }
  .ev-footer::before { height: 281px; }
}

/* ==========================================================================
   「全套加入購物車」（設計稿 CART variant，node 17:591）2026-08-21 決定不做。
   理由：這頁的 mobile header 照設計稿只有 logo ＋ 漢堡，做不出跨斷點一致的
   加入回饋（數字／動畫只有桌機看得到，而主要流量在手機）。購物車入口改成
   只在 header 放一顆 icon ＋ 數量徽章，兩個斷點都有。
   按鈕的切圖 images/btn-cart.png 留著沒引用；結局判定那層抽到
   ~/papy/cart-add-outcome/（本機共用，這頁已不引用）。
   ========================================================================== */
