﻿@charset "utf-8";
/* =========================================================================
   Fsale 快賣 官網 2026 — 樣式基礎
   設計稿：https://claude.ai/artifact/BxhnriDuPHD17bYj9ysRux（版本 A）

   這份完全獨立於舊的 BasicCssSet.css / Animate.css / Faq.css，
   兩套在改版期間並存：舊頁繼續吃舊的，新頁只吃這一份。
   舊檔要等所有新頁上線後才能移除。

   色彩取自標章（images/logo-fsale.png），只有兩個色相：
     品牌藍 #1E75B6  結構與唯一強調（標題、正文、主按鈕、關鍵詞、價格）
     品牌黃 #F3C323  只當底色與色塊（標籤底、裝飾）。白底上只有 1.66:1，不可以當文字顏色。
   例外：LINE 綠 #06C755 只用在 LINE 相關按鈕。外部品牌色用原色才認得出。
   ========================================================================= */

/* ---------- Tokens ---------- */
:root{
  --ink:#18374e;
  --ink-deep:#112636;
  --ink-soft:#1e4866;
  --accent:#1e75b6;
  --accent-light:#5aa3d8;

  --text:#18374e;
  --text-2:#4a6680;
  --text-3:#5a7490;
  --text-on-dark:#ccdcea;
  --text-on-dark-2:#93aec6;

  --paper:#ffffff;
  --band:#eef6fc;
  --tint:#f6fafd;

  --line:#d5e6f3;
  --line-soft:#e8f1f9;
  --line-dash:#b9d4e8;
  --line-dark:#2f5a79;

  --line-green:#06c755;

  /* 品牌黃。白底上只有 1.66:1，只能當底色或色塊，不可以拿來當文字顏色。 */
  --mark:#f3c323;
  --mark-soft:#fdf6e3;

  --r-sm:10px;
  --r-md:16px;
  --r-lg:22px;
  --r-pill:999px;

  --shadow-card:0 2px 4px rgba(24,55,78,.04), 0 10px 24px -10px rgba(24,55,78,.16);
  --shadow-soft:0 2px 4px rgba(24,55,78,.03), 0 8px 20px -10px rgba(24,55,78,.12);
  --shadow-accent:0 4px 10px rgba(24,55,78,.06), 0 22px 48px -18px rgba(30,117,182,.34);

  --wrap:1200px;
  --wrap-pad:40px;
  --section-y:76px;
  --section-y-end:80px;

  --font:"Noto Sans TC", system-ui, -apple-system, "Segoe UI", sans-serif;
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--paper);
  color:var(--text);
  font-family:var(--font);
  font-weight:400;
  font-size:17px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--ink);text-decoration:none}
a:hover{color:var(--ink-deep);text-decoration:underline}
h1,h2,h3,h4{margin:0;font-weight:900;letter-spacing:-.01em;line-height:1.35}
p,ul,ol{margin:0}
ul,ol{padding-left:1.25em}
strong{font-weight:700;color:var(--ink)}
hr{border:0;border-top:1px solid var(--line);margin:0}

/* 鍵盤焦點一定看得見。設計稿裡所有可點目標高度 >= 44px。 */
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--ink);color:#fff;padding:12px 20px;border-radius:0 0 var(--r-sm) 0;
}
.skip-link:focus{left:0}

/* ---------- Layout ---------- */
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--wrap-pad)}
.wrap-narrow{max-width:940px;margin:0 auto;padding:0 var(--wrap-pad)}
.wrap-text{max-width:820px;margin:0 auto;padding:0 var(--wrap-pad)}

.section{padding:var(--section-y) 0 var(--section-y-end)}
.section-tight{padding:48px 0 52px}
.section--band{background:var(--band)}
.section--ink{background:var(--ink-deep);color:#fff}
.section--texture{
  background:
    repeating-linear-gradient(135deg, rgba(24,55,78,.05) 0, rgba(24,55,78,.05) 1px, transparent 1px, transparent 9px)
    var(--band);
}
.section--ink h1,.section--ink h2,.section--ink h3{color:#fff}
.section--ink p{color:var(--text-on-dark)}

/* 同色區塊相鄰時補一條線，不然會黏成一片 */
.section--band + .section--band{border-top:1px solid var(--line)}

/* ---------- Typography ---------- */
.t-h1{font-size:60px;line-height:1.22;letter-spacing:-.02em}
.t-h2{font-size:40px;line-height:1.35}
.t-h3{font-size:30px;line-height:1.38}
.t-card{font-size:21px;line-height:1.45;font-weight:700}
.t-lead{font-size:19px;line-height:1.85;color:var(--text-2)}
.t-body{font-size:17px;line-height:1.85;color:var(--text-2)}
.t-small{font-size:14px;color:var(--text-2)}
.t-note{font-size:15px;line-height:1.85;color:var(--text-3)}

.eyebrow{
  font-size:14px;font-weight:700;letter-spacing:.08em;color:var(--accent);
  margin:0 0 20px;
}
.accent{color:var(--accent)}
.num{font-variant-numeric:tabular-nums}

/* 區塊標題下的赭色短線 */
.rule-accent{height:3px;width:56px;background:var(--accent);margin:8px 0 28px}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:58px;padding:0 32px;
  font-size:17px;font-weight:700;line-height:1;
  border:1.5px solid transparent;border-radius:var(--r-pill);
  cursor:pointer;text-decoration:none;
  transition:background-color .15s ease,color .15s ease,border-color .15s ease;
}
.btn:hover{text-decoration:none}
.btn-sm{height:46px;padding:0 22px;font-size:15px}
.btn-lg{height:62px;font-size:18px;width:100%}

.btn-ink{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn-ink:hover{background:var(--ink-deep);color:#fff;border-color:var(--ink-deep)}

.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}
.btn-accent:hover{background:#19629a;color:#fff;border-color:#19629a}

.btn-outline{background:var(--paper);color:var(--ink);border-color:var(--ink)}
.btn-outline:hover{background:var(--band);color:var(--ink)}

.btn-on-dark{background:#fff;color:var(--ink);border-color:#fff}
.btn-on-dark:hover{background:var(--band);color:var(--ink)}
.btn-ghost-dark{background:transparent;color:#fff;border-color:#8c92a6}
.btn-ghost-dark:hover{background:rgba(255,255,255,.08);color:#fff}

/* LINE 綠配深色字：白字在這個綠上只有 2.3:1，深字 5.7:1 */
.btn-line{background:var(--line-green);color:var(--ink-deep);border-color:var(--line-green)}
.btn-line:hover{background:#05b64d;color:var(--ink-deep);border-color:#05b64d}

.lnk-quiet{font-size:15px;font-weight:500;color:var(--ink)}
.lnk-more{font-size:15px;font-weight:700;color:var(--accent)}

/* ---------- Cards ---------- */
.card{
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  box-shadow:var(--shadow-card);
  overflow:hidden;
}
.card-body{padding:26px}
.card-flush{padding:0 0 24px}         /* 圖貼齊卡片上緣時用 */
.card-flush > *:not(.card-media){padding-left:26px;padding-right:26px}
.card-media{position:relative;overflow:hidden;background:var(--paper)}
.card-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.card-media--16x9{aspect-ratio:16/9}
/* 方形圖位。首頁六大功能用這個——原圖就是 760×760，方框不會裁到東西。
   （原本還有一條 --wide 的固定 200px，只有 /features 的卡片在用；
     那一頁改成一列一個區塊之後就沒人用了，已經移除。） */
.card-media--square{aspect-ratio:1/1}

.card-accent{border:2px solid var(--accent);box-shadow:var(--shadow-accent)}

.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);padding:30px 34px 32px}
.panel--band{background:var(--band);border:0}
.panel--accent{border-left:4px solid var(--accent)}
.panel--ink{background:var(--ink);color:#fff;border:0;border-radius:var(--r-lg);padding:56px 48px 60px}

.badge{
  display:inline-flex;align-items:center;height:26px;padding:0 12px;
  background:var(--accent);color:#fff;font-size:13px;font-weight:700;border-radius:var(--r-pill);
}
.tag{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;
  background:var(--band);color:var(--text-2);font-size:12px;font-weight:700;border-radius:2px;
}

/* ---------- Grid ---------- */
.grid{display:grid;gap:28px}
.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.row{display:flex;flex-wrap:wrap;gap:28px}
.row-center{align-items:center}
.row--reverse{flex-direction:row-reverse}   /* 左右交錯列：手機時圖仍在上 */

/* ---------- 定義列表式的細線清單 ---------- */
.hair-list > *{padding:16px 0;border-top:1px solid var(--line-soft)}
.hair-list > *:last-child{border-bottom:1px solid var(--line-soft)}

/* ---------- Q&A ---------- */
.qa{padding:22px 0;border-top:1px solid var(--line)}
.qa:last-child{border-bottom:1px solid var(--line)}
.qa-row{display:flex;gap:12px}
.qa-mark{flex:0 0 30px;font-weight:900}
.qa-q .qa-mark{font-size:20px;line-height:1.5;color:var(--accent)}
.qa-a{margin-top:8px}
.qa-a .qa-mark{font-size:17px;line-height:1.85;color:var(--text-3)}
.qa h3{margin:0;font-size:21px;line-height:1.5;font-weight:700}
.qa p{margin:0;font-size:17px;line-height:1.85;color:var(--text-2)}

/* =========================================================================
   表單
   文案規則：欄位說明寫在 label 下方，不用 placeholder
   （placeholder 一打字就消失，正是客人最需要它的時候）
   ========================================================================= */
.form-card{
  background:var(--paper);border:1px solid var(--line);
  border-radius:6px;padding:36px 36px 38px;box-shadow:var(--shadow-card);
}
.field{margin:0 0 24px}
.field > label{display:block;margin:0 0 6px;font-size:16px;font-weight:700;color:var(--ink)}
.field-hint{margin:0 0 10px;font-size:14px;line-height:1.7;color:var(--text-3)}

.field input[type=text],
.field input[type=tel],
.field input[type=email],
.field input[type=number],
.field input[type=search],
.field select,
.field textarea{
  width:100%;height:52px;padding:0 14px;
  font-family:inherit;font-size:16px;color:var(--ink);
  background:var(--paper);border:1px solid var(--line-dash);border-radius:var(--r-sm);
}
.field textarea{height:132px;padding:12px 14px;line-height:1.7}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--ink)}

/* 錯誤：訊息寫在欄位下面，不跳視窗，而且要講怎麼修 */
.field.has-error input,
.field.has-error select,
.field.has-error textarea{border-color:var(--accent)}
.field-error{
  display:flex;gap:8px;align-items:flex-start;
  margin:8px 0 0;font-size:14px;line-height:1.7;color:var(--accent);
}
.field-error svg{flex:0 0 auto;margin-top:3px}

.check-row{display:flex;gap:12px;align-items:flex-start;cursor:pointer}
.check-row input{width:22px;height:22px;flex:0 0 auto;margin-top:2px}
.check-row span{font-size:17px;line-height:1.75}

/* 驗證碼 */
.captcha-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.captcha-row input{flex:1 1 200px;min-width:0}
.captcha-img{flex:0 0 auto;width:120px;height:44px;border:1px solid var(--line-dash);border-radius:var(--r-sm)}
.captcha-reload{
  flex:0 0 auto;height:52px;padding:0 16px;
  background:var(--paper);color:var(--ink);font-size:15px;font-weight:700;
  border:1px solid var(--line-dash);border-radius:var(--r-sm);cursor:pointer;
}
/* 蜜罐：移出畫面而不是 display:none。
   部分機器人會跳過 display:none 的欄位，但不會判斷位移。 */
.fg-trap{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden}

/* ---------- Header ---------- */
.site-header{background:var(--paper);border-bottom:1px solid var(--line)}
.header-inner{height:76px;display:flex;align-items:center;gap:32px}
/* 標章是圖片（images/logo-fsale.png，395x56）。整組鎖定已經含了
   「快賣開店・經營簡單」，所以頁首不再另外放一行小字。
   窄螢幕換成只有字標的版本——整組縮到 24px 高的話下面那行會糊掉。 */
.brand{display:flex;align-items:center;flex:0 0 auto}
.brand:hover{text-decoration:none}
.brand img{display:block;width:auto;height:34px}
.brand .brand-mark{display:none}

/* 1024-1150：桌機選單還在，但整組鎖定會把導覽擠爆，換成字標。 */
@media (max-width:1150px){
  .brand .brand-full{display:none}
  .brand .brand-mark{display:block;height:32px}
}

/* 1023 以下選單收成漢堡，空間回來了，整組鎖定放得下。 */
@media (max-width:1023px){
  .brand .brand-full{display:block;height:32px}
  .brand .brand-mark{display:none}
}

/* 420 以下整組縮到 24px 高的話，下面那行字會糊掉，改回字標。 */
@media (max-width:420px){
  .brand .brand-full{display:none}
  .brand .brand-mark{display:block;height:28px}
}
.nav-main{display:flex;flex-wrap:wrap;align-items:center;gap:26px;margin-left:8px;font-size:15px;font-weight:500}
.nav-main a{color:var(--ink)}
.nav-main a.is-active{border-bottom:2px solid var(--accent);padding-bottom:2px}
.header-cta{margin-left:auto;display:flex;align-items:center;gap:18px}
.nav-toggle{display:none}
.nav-mobile{display:none}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink-deep);color:var(--text-on-dark);padding:60px 0 44px}
.footer-cols{display:flex;flex-wrap:wrap;gap:40px}
.footer-cols > *{flex:1 1 150px;min-width:0}
.footer-brand{flex:1 1 260px}
.footer-logo{margin:0 0 14px}
/* 頁尾是深底，藍色字標在上面只有 2.5:1，所以用反白版（藍換成白，黃保留）。 */
.footer-logo img{display:block;width:auto;height:30px;max-width:100%}
.site-footer p{font-size:14px;line-height:1.8}
.footer-head{margin:0 0 14px;font-size:14px;font-weight:700;color:#fff}
.footer-cols nav{display:flex;flex-direction:column;gap:9px;font-size:14px}
.site-footer a{color:var(--text-on-dark)}
.site-footer a:hover{color:#fff}
.footer-bottom{margin-top:36px;padding-top:22px;border-top:1px solid var(--line-dark)}
.footer-bottom p{font-size:13px;color:var(--text-on-dark-2)}

/* =========================================================================
   斷點
   三欄 >= 1024 ／ 兩欄 768–1023 ／ 單欄 < 768
   ========================================================================= */
@media (max-width:1023px){
  .grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nav-main,.header-cta{display:none}
  .nav-toggle{
    display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
    margin-left:auto;width:44px;height:44px;padding:0;
    background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;
  }
  .nav-toggle span{width:18px;height:2px;background:var(--ink-deep)}
  .nav-mobile{display:none;flex-direction:column;gap:0;border-top:1px solid var(--line);background:var(--paper)}
  .nav-mobile.is-open{display:flex}
  .nav-mobile a{padding:16px var(--wrap-pad);border-bottom:1px solid var(--line-soft);font-size:16px;font-weight:500}
  .nav-mobile .btn{margin:16px var(--wrap-pad) 20px;border-bottom:0}
}

@media (max-width:767px){
  :root{
    --wrap-pad:20px;
    --section-y:48px;
    --section-y-end:50px;
  }
  body{font-size:16px}
  .t-h1{font-size:36px;line-height:1.28}
  .t-h2{font-size:28px}
  .t-h3{font-size:24px}
  .t-lead{font-size:17px}
  .grid,.grid-2,.grid-3{grid-template-columns:1fr;gap:20px}
  .row{gap:24px}
  /* 交錯列在手機一律圖在上：row-reverse + wrap 的自然結果，不需要 media query，
     這裡只把方向還原給少數用 grid 排的版位 */
  .panel--ink{padding:36px 24px 40px}
  .form-card{padding:26px 22px 28px}
  .btn{width:100%}
  .btn-sm{width:auto}
}

@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}

/* =========================================================================
   第 1 階段：轉換頁元件
   設計稿 Trial / Apply / Contact / Thanks 四張圖板用到的東西。
   圖板是行內樣式（Design canvas 的限制），這裡把它們收成類別。
   ========================================================================= */

/* ---------- 置中英雄區（/trial /thanks） ---------- */
.hero-center{padding:64px 0 40px;text-align:center}
.hero-center .wrap-text{max-width:760px}
.hero-center h1{font-size:48px;line-height:1.28;letter-spacing:-.02em}
.hero-center p{margin:22px 0 0;font-size:19px;line-height:1.85;color:var(--text-2)}

.hero-left{padding:60px 0 36px}
.hero-left h1{font-size:46px;line-height:1.28;letter-spacing:-.02em}
.hero-left p{margin:20px 0 0;font-size:19px;line-height:1.85;color:var(--text-2)}

/* ---------- 勾選要點清單 ---------- */
.ticks{margin:0 0 28px;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px}
.ticks li{display:flex;gap:12px;align-items:flex-start;font-size:17px;line-height:1.75;color:var(--ink)}
.ticks svg{flex:0 0 auto;margin-top:4px}

/* ---------- 表單區段（/apply 的五組） ---------- */
.fset{margin:0;padding:30px 0;border:0;border-bottom:1px solid var(--line-soft)}
.fset:last-of-type{border-bottom:0}
.fset > legend{padding:0;margin:0 0 22px;font-size:22px;font-weight:900;color:var(--ink)}
.fset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 24px}

/* ---------- 單選卡 ---------- */
.picks{display:flex;flex-wrap:wrap;gap:14px}
.pick{
  flex:1 1 240px;min-width:0;
  display:flex;gap:14px;align-items:flex-start;
  padding:18px 20px;
  background:var(--paper);
  border:1px solid var(--line);border-radius:4px;cursor:pointer;
}
.pick input{width:20px;height:20px;flex:0 0 auto;margin:3px 0 0;padding:0}
.pick b{display:block;font-size:18px;font-weight:700;color:var(--ink)}
.pick span{display:block;margin-top:4px;font-size:16px;color:var(--text-2)}
.pick.is-on{border:1.5px solid var(--ink)}
.pick.is-on-accent{border:2px solid var(--accent)}
.pick.is-on-accent b{color:var(--accent)}

/* 網址選項是細線列而不是卡片 */
.pick-rows{display:flex;flex-direction:column}
.pick-row{
  display:flex;flex-wrap:wrap;gap:14px;align-items:center;
  padding:16px 0;border-top:1px solid var(--line-soft);cursor:pointer;
}
.pick-row:last-child{border-bottom:1px solid var(--line-soft)}
.pick-row input[type=radio]{width:20px;height:20px;flex:0 0 auto;padding:0}
.pick-row b{flex:1 1 180px;min-width:0;font-size:17px;font-weight:700;color:var(--ink)}
.pick-row span{flex:2 1 240px;min-width:0;font-size:15px;color:var(--text-2)}
.pick-row em{flex:0 0 120px;font-size:15px;font-weight:700;font-style:normal;color:var(--ink);text-align:right}
.pick-row em.fee{color:var(--accent)}
/* 選了「自有網址／代購」才要填的那一欄 */
.pick-extra{padding:0 0 16px 34px}
.pick-extra input{max-width:420px}

/* ---------- 虛線提示框 ---------- */
.notice{
  margin:16px 0 0;padding:14px 18px;
  background:var(--tint);border:1px dashed var(--line-dash);border-radius:var(--r-sm);
  font-size:15px;line-height:1.8;color:var(--text-3);
}
.notice-ink{
  background:var(--paper);border:1px solid var(--line-dash);
  border-left:4px solid var(--ink);border-radius:var(--r-md);
  padding:22px 26px;margin:24px 0 0;
}

/* ---------- 金額框 ---------- */
.amount{padding:24px 26px;background:var(--band);border-left:4px solid var(--accent);border-radius:var(--r-sm)}
.amount-row{display:flex;flex-wrap:wrap;gap:16px;align-items:baseline;justify-content:space-between}
.amount-row b{font-size:18px;font-weight:700;color:var(--ink)}
.amount-row strong{font-size:34px;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums}
.amount p{margin:8px 0 0;font-size:15px;color:var(--text-2)}
.amount-line{display:flex;justify-content:space-between;gap:16px;margin:0 0 6px;font-size:15px;color:var(--text-2)}

/* ---------- STEP 三欄 ---------- */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.step{border-top:3px solid var(--line);padding:22px 0 0}
.step:first-child{border-top-color:var(--accent)}
.step-no{margin:0 0 10px;font-size:14px;font-weight:700;letter-spacing:.08em;color:var(--text-3)}
.step:first-child .step-no{color:var(--accent)}
.step h3{margin:0 0 10px;font-size:21px;line-height:1.45;font-weight:700}
.step p{margin:0;font-size:16px;line-height:1.8;color:var(--text-2)}

/* ---------- LINE 橫條 ---------- */
.line-bar{
  margin:24px 0 0;background:var(--paper);border:1px solid var(--line);border-radius:6px;
  padding:26px 30px;display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between;
}
.line-bar h2{margin:0 0 6px;font-size:19px;font-weight:700}
.line-bar p{margin:0;font-size:15px;line-height:1.8;color:var(--text-2)}

/* ---------- 聯絡頁側欄 ---------- */
.aside-ink{background:var(--ink);color:#fff;border-radius:6px;padding:30px 30px 32px}
.aside-ink h2{margin:0 0 8px;font-size:21px;font-weight:700;color:#fff}
.aside-ink p{margin:0 0 20px;font-size:15px;line-height:1.8;color:var(--text-on-dark)}
.aside-ink .btn{width:100%;height:54px}
.facts > div{padding:14px 0;border-top:1px solid var(--line-soft)}
.facts > div:last-child{border-bottom:1px solid var(--line-soft)}
.facts dt{margin:0 0 2px;font-size:13px;color:var(--text-3)}
.facts dd{margin:0;font-size:17px;font-weight:700;line-height:1.7;color:var(--ink)}
.facts dd.plain{font-size:16px;font-weight:400}

/* ---------- 成功頁 ---------- */
.thanks{padding:88px 0 80px;text-align:center}
.thanks .wrap-text{max-width:720px}
.thanks-mark{
  width:72px;height:72px;margin:0 auto 28px;border-radius:50%;
  background:var(--accent);display:flex;align-items:center;justify-content:center;
}
.thanks-mark--fail{background:var(--text-3)}
.thanks h1{font-size:44px;line-height:1.3;letter-spacing:-.02em}
.thanks > .wrap-text > p{margin:24px 0 0;font-size:19px;line-height:1.9;color:var(--text-2)}
.thanks-actions{margin:40px 0 0;display:flex;flex-wrap:wrap;gap:14px;justify-content:center}
.thanks-summary{
  margin:40px 0 0;text-align:left;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  padding:26px 30px 28px;box-shadow:var(--shadow-card);
}
.thanks-summary h2{margin:0 0 16px;font-size:19px;font-weight:700}

/* ---------- 表單錯誤總結（送出失敗時置頂） ---------- */
.form-alert{
  margin:0 0 24px;padding:18px 22px;
  background:#e9f3fc;border:1px solid var(--accent);border-left:4px solid var(--accent);
  border-radius:var(--r-sm);
}
.form-alert p{margin:0 0 8px;font-size:17px;font-weight:700;color:var(--accent)}
.form-alert ul{margin:0;padding-left:1.3em;font-size:16px;line-height:1.8;color:var(--ink)}
.form-alert ul:empty{display:none}

@media (max-width:1023px){
  .steps{grid-template-columns:1fr}
}
@media (max-width:767px){
  .hero-center{padding:44px 0 28px}
  .hero-center h1{font-size:32px}
  .hero-left{padding:40px 0 24px}
  .hero-left h1{font-size:32px}
  .hero-center p,.hero-left p{font-size:17px}
  .fset-grid{grid-template-columns:1fr}
  .thanks{padding:56px 0 56px}
  .thanks h1{font-size:30px}
  .thanks > .wrap-text > p{font-size:17px}
  .amount-row strong{font-size:28px}
  .pick-row em{flex:1 1 100%;text-align:left}
  .aside-ink{padding:24px 22px 26px}
}

/* =========================================================================
   第 2 階段：內容頁元件
   ========================================================================= */

/* ---------- 麵包屑 ---------- */
.crumb{margin:0 0 20px;font-size:14px;color:var(--text-3)}
.crumb a{color:var(--text-3)}

/* ---------- 法律文件 ---------- */
.doc-head{padding:60px 0 36px}
.doc-head h1{font-size:42px;line-height:1.3;letter-spacing:-.01em}
.doc-date{margin:20px 0 0;font-size:16px;color:var(--text-2)}
.doc-date b{color:var(--accent);font-weight:700}
.doc-intro{
  margin:28px 0 36px;padding:24px 28px;
  background:var(--band);border-radius:4px;
  font-size:16px;line-height:1.95;color:var(--ink);
}

/* 條次：每一條一個細線分隔的區塊 */
.clause{padding:24px 0;border-top:1px solid var(--line)}
.clause:last-child{border-bottom:1px solid var(--line)}
.clause h2{margin:0 0 10px;font-size:18px;font-weight:700;color:var(--accent)}
.clause p{margin:0;font-size:16px;line-height:1.95;color:var(--ink)}

/* 隱私權政策的分節，層級比條次大一階 */
.sec{padding:28px 0;border-top:1px solid var(--line)}
.sec:last-child{border-bottom:1px solid var(--line)}
.sec > h2{margin:0 0 16px;font-size:24px;line-height:1.4;font-weight:900;color:var(--ink)}
.sec p{margin:0;font-size:16px;line-height:1.95;color:var(--ink)}
.sec p + p{margin-top:14px}
.sec ul{margin:0 0 16px;padding-left:22px;display:flex;flex-direction:column;gap:8px;font-size:16px;line-height:1.85}

/* ---------- 說明用表格（用 flex 排，手機才疊得好看）---------- */
.dtable{border:1px solid var(--line);border-radius:4px;overflow:hidden}
.dtable .dt-head{display:flex;flex-wrap:wrap;background:var(--tint);border-bottom:1px solid var(--line)}
.dtable .dt-head span{padding:12px 18px;font-size:14px;font-weight:700;color:var(--text-2)}
.dtable .dt-row{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--line-soft)}
.dtable .dt-row:last-child{border-bottom:0}
.dtable .dt-row span{padding:14px 18px;font-size:15px;line-height:1.8;color:var(--text-2)}
.dtable .dt-row span:first-child{font-weight:700;color:var(--ink)}
.dt-c1{flex:1 1 170px;min-width:0}
.dt-c2{flex:2 1 320px;min-width:0}
.dt-c3{flex:1.2 1 200px;min-width:0}

/* ---------- 期間／地區／對象／方式 之類的定義列 ---------- */
.kv{display:flex;flex-direction:column}
.kv > div{display:flex;flex-wrap:wrap;gap:16px;padding:12px 0;border-top:1px solid var(--line-soft)}
.kv > div:last-child{border-bottom:1px solid var(--line-soft)}
.kv dt{flex:0 0 72px;font-size:16px;font-weight:700;color:var(--ink)}
.kv dd{flex:1 1 320px;min-width:0;margin:0;font-size:16px;line-height:1.85;color:var(--text-2)}

/* ---------- 草稿警示條 ---------- */
.banner-draft{background:var(--accent);color:#fff;padding:18px 0}
.banner-draft p{margin:0;font-size:16px;line-height:1.8;font-weight:700}

@media (max-width:767px){
  .doc-head{padding:40px 0 24px}
  .doc-head h1{font-size:28px}
  .doc-intro{padding:18px 20px}
  .sec > h2{font-size:21px}
  .dtable .dt-head{display:none}
  .dtable .dt-row{flex-direction:column}
  .dtable .dt-row span{padding:10px 16px}
  .dtable .dt-row span:first-child{padding-bottom:0}
  .kv dt{flex:1 1 100%}
}

/* ---------- 編號段落（關於我們的 01–04）---------- */
.numbered{padding:72px 0 0}
.numbered .wrap-narrow{max-width:940px}
.numbered h2{margin:0 0 24px;font-size:36px;line-height:1.38}
.numbered p{margin:0 0 20px;font-size:18px;line-height:1.95;color:var(--text-2)}
.numbered p:last-child{margin-bottom:0}

/* ---------- 引言 ---------- */
.quote{margin:0;padding:30px 34px;background:var(--band);border-left:4px solid var(--accent);border-radius:var(--r-sm)}
.quote p:first-child{margin:0 0 18px;font-size:21px;line-height:1.85;font-weight:700;color:var(--ink)}
.quote p{margin:0 0 14px;font-size:17px;line-height:1.9;color:var(--text-2)}
.quote p:last-child{margin:0;font-weight:700;color:var(--ink)}

/* ---------- 橫向三格資訊條 ---------- */
.strip{display:flex;flex-wrap:wrap;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}
.strip > *{flex:1 1 200px;min-width:0;margin:0;padding:20px 24px;font-size:16px;color:var(--ink);border-right:1px solid var(--line)}
.strip > *:last-child{border-right:0}
.strip b{font-weight:700}

/* ---------- 置中的深色 CTA ---------- */
.cta-ink{background:var(--ink);color:#fff;border-radius:var(--r-lg);padding:60px 48px 64px;text-align:center}
.cta-ink h2{margin:0 auto;max-width:20em;font-size:38px;line-height:1.34;letter-spacing:-.01em;color:#fff}
.cta-ink > p{margin:20px auto 0;max-width:32em;font-size:18px;line-height:1.9;color:var(--text-on-dark)}
.cta-ink .thanks-actions{margin-top:36px}

/* ---------- 滿版比例圖 ---------- */
.media-wide{position:relative;aspect-ratio:2/1;border-radius:var(--r-md);overflow:hidden;background:var(--tint)}
.media-wide img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

@media (max-width:767px){
  .numbered{padding:48px 0 0}
  .numbered h2{font-size:26px}
  .numbered p{font-size:17px}
  .quote{padding:22px 24px}
  .quote p:first-child{font-size:18px}
  .cta-ink{padding:36px 24px 40px}
  .cta-ink h2{font-size:26px}
  .cta-ink > p{font-size:17px}
  .strip > *{flex:1 1 100%;border-right:0;border-bottom:1px solid var(--line)}
  .strip > *:last-child{border-bottom:0}
}

/* ---------- FAQ 分類導覽 ---------- */
.faq-nav{display:flex;flex-wrap:wrap;gap:10px;margin:32px 0 0}
.faq-nav a{
  display:inline-flex;align-items:center;height:42px;padding:0 18px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);
  font-size:15px;font-weight:500;color:var(--ink);
}
.faq-nav a:hover{background:var(--band);text-decoration:none}

/* 分類標題要留出錨點跳轉的空間，不然標題會被頁首蓋住 */
.faq-group{padding:60px 0 0;scroll-margin-top:24px}
.faq-group > .wrap-text{max-width:860px}
.faq-group h2{margin:0;font-size:30px;line-height:1.38}
.faq-group:last-of-type{padding-bottom:16px}

@media (max-width:767px){
  .faq-group{padding:40px 0 0}
  .faq-group h2{font-size:23px}
  .faq-nav a{height:38px;padding:0 14px;font-size:14px}
}

/* =========================================================================
   方案與價格
   三張卡刻意都不挂「推薦」標籤、外框與按鈕完全一致——
   既然功能一樣，該選哪一個取決於商品數，不是我們說了算。
   ========================================================================= */
.plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;align-items:start}
.plan{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  padding:30px 30px 32px;box-shadow:var(--shadow-card);
}
.plan-eyebrow{margin:0 0 8px;font-size:14px;font-weight:700;color:var(--text-3)}
.plan h2{margin:0 0 22px;font-size:28px}
.plan-per{margin:0;font-size:14px;color:var(--text-3)}
.plan-price{margin:2px 0 0;font-size:46px;line-height:1.1;font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums}
.plan-price span{font-size:19px;font-weight:700}
.plan-cycle{margin:8px 0 0;font-size:15px;color:var(--text-2)}
.plan-specs{margin:22px 0 24px;display:flex;flex-direction:column}
.plan-specs > div{display:flex;gap:16px;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line-soft)}
.plan-specs > div:last-child{border-bottom:1px solid var(--line-soft)}
.plan-specs dt{font-size:15px;color:var(--text-2)}
.plan-specs dd{margin:0;font-size:15px;font-weight:700;color:var(--ink);text-align:right}
.plan-specs dd.same{color:var(--accent)}
.plan .btn{width:100%;height:54px;font-size:16px}

/* ---------- 兩個問題就能決定 ---------- */
/* 方案差異三項，所以是三張卡。窄螢幕排成一欄，
   不然 22px 的問句會被擠成每行兩三個字。 */
.decide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
@media (max-width:895px){
  .decide{grid-template-columns:1fr}
}
.decide-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);padding:28px 30px 30px}
.decide-card h3{margin:0 0 18px;font-size:22px;line-height:1.45}
.decide-card > div{display:flex;gap:16px;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line-soft)}
.decide-card > div:last-child{border-bottom:1px solid var(--line-soft)}
.decide-card > div span:first-child{font-size:16px;color:var(--text-2)}
.decide-card > div span:last-child{font-size:16px;font-weight:700;color:var(--ink)}

/* ---------- 完整比較表 ---------- */
.cmp{border-top:1px solid var(--line)}
.cmp:last-of-type{border-bottom:1px solid var(--line)}
.cmp > summary{
  cursor:pointer;list-style:none;padding:20px 0;
  font-size:19px;font-weight:700;color:var(--ink);
}
.cmp > summary::-webkit-details-marker{display:none}
.cmp > summary::marker{content:""}
.cmp-body{padding:0 0 18px}
.cmp-row{display:flex;flex-wrap:wrap;align-items:baseline;padding:11px 14px;border-top:1px solid var(--line-soft)}
.cmp-row.is-head{border-top:0;background:var(--tint);font-weight:700}
.cmp-row.is-diff{background:#fdf6e3}
.cmp-row .c-l{flex:2 1 300px;min-width:0;font-size:15px;line-height:1.7;color:var(--ink)}
.cmp-row .c-v{flex:1 1 130px;min-width:0;font-size:15px;color:var(--text-2);text-align:right}
.cmp-row.is-diff .c-v{font-weight:700;color:var(--accent)}
.cmp-row.is-head .c-v{color:var(--text-2)}

/* ---------- 信任列（純文字一行）---------- */
.trust-line{display:flex;flex-wrap:wrap;gap:12px 32px;justify-content:center}
.trust-line span{font-size:15px;font-weight:500;color:var(--text-2)}

@media (max-width:1023px){
  .plans{grid-template-columns:1fr}
}
@media (max-width:767px){
  .decide{grid-template-columns:1fr}
  .plan{padding:24px 22px 26px}
  .plan-price{font-size:38px}
  .cmp > summary{font-size:17px;padding:16px 0}
  .cmp-row{padding:10px 12px}
  /* 三個方案：手機一列塞不下四欄，改成「方案名 — 值」逐行排，
     不然三個「有」疊在一起看不出哪個是哪個方案的。 */
  .cmp-row.is-head{display:none}
  .cmp-row .c-l{flex:1 1 100%;font-weight:700;color:var(--ink);margin:0 0 6px}
  .cmp-row .c-v{flex:1 1 100%;display:flex;gap:12px;justify-content:space-between;padding:3px 0;text-align:right}
  .cmp-row .c-v::before{content:attr(data-h);color:var(--text-3);font-weight:500;text-align:left}
}

/* =========================================================================
   功能子頁
   左右交錯列：row-reverse + wrap 在手機會自然變成「圖在上」，
   不需要 media query。
   ========================================================================= */
.feat-row{display:flex;flex-wrap:wrap;gap:56px;align-items:center}
.feat-row--alt{flex-direction:row-reverse}
.feat-text{flex:1.15 1 400px;min-width:0}
.feat-text h2{margin:0 0 20px;font-size:32px;line-height:1.4}
.feat-text p{margin:0 0 18px;font-size:17px;line-height:1.9;color:var(--text-2)}
.feat-text p:last-child{margin-bottom:0}
.feat-text p.boxed{
  padding:16px 20px;background:var(--paper);
  border-left:3px solid var(--accent);border-radius:var(--r-sm);
  color:var(--ink);
}
.feat-shot{flex:1 1 380px;min-width:0;position:relative;aspect-ratio:4/3;border-radius:var(--r-md);overflow:hidden;background:var(--paper)}
.feat-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feat-main-shot{position:relative;aspect-ratio:16/7;border-radius:var(--r-md);overflow:hidden;background:var(--tint)}
.feat-main-shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* 哪個方案有 */
.spec{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid var(--line-soft)}
.spec:last-of-type{border-bottom:1px solid var(--line-soft)}
.spec .s-l{flex:1 1 auto;min-width:0;font-size:16px;color:var(--ink)}
/* 三個方案，所以是三欄。欄寬從 96px 收到 86px、間距從 16px 收到 12px，
   不然「商品上架件數」這種標籤在 460px 的面板裡會被擠到換行。 */
.spec .s-b,.spec .s-a,.spec .s-p{flex:0 0 86px;font-size:15px;font-weight:700;text-align:right}
.spec .s-b{color:var(--ink)}
.spec .s-a,.spec .s-p{color:var(--accent)}

/* 其他功能：三欄的細線清單 */
.sixnav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 28px}
.sixnav a{padding:16px 0;border-top:1px solid var(--line);font-size:16px;font-weight:700;color:var(--ink)}
.sixnav a:last-child{color:var(--accent)}

@media (max-width:1023px){
  .sixnav{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:767px){
  .feat-row{gap:28px}
  .feat-text h2{font-size:24px}
  .feat-text p{font-size:16px}
  .sixnav{grid-template-columns:1fr}
  .spec{flex-wrap:wrap}
  .spec .s-l{flex:1 1 100%}
  .spec .s-b,.spec .s-a,.spec .s-p{flex:1 1 30%;text-align:left}
}

/* =========================================================================
   學習資源
   ========================================================================= */
.search-row{display:flex;flex-wrap:wrap;gap:12px}
.search-row input{flex:1 1 320px;min-width:0;height:60px;font-size:17px;padding:0 18px}
.search-row .btn{flex:0 0 auto;height:60px;padding:0 32px;font-size:17px;width:auto}

.hub{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.hub-card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  padding:32px 34px 34px;display:flex;flex-direction:column;gap:16px;
  box-shadow:var(--shadow-card);
}
.hub-card h2{margin:0;font-size:26px;line-height:1.4}
.hub-card > p{margin:0;font-size:17px;line-height:1.85;color:var(--text-2)}
.hub-list{flex:1 1 auto;display:flex;flex-direction:column;padding-top:4px}
.hub-list a,.hub-list span{padding:12px 0;border-top:1px solid var(--line-soft);font-size:15px;color:var(--text-2)}
.hub-list > :last-child{border-bottom:1px solid var(--line-soft)}
.hub-card .btn{align-self:flex-start;height:52px;font-size:16px;width:auto}
.hub-card--accent{border:2px solid var(--accent);box-shadow:var(--shadow-accent)}
.hub-card--accent h2{color:var(--accent)}

/* ---------- 更新紀錄 ---------- */
.log-row{display:flex;flex-wrap:wrap;gap:24px;align-items:baseline;padding:24px 0;border-top:1px solid var(--line)}
.log-row:first-of-type{border-top:2px solid var(--ink)}
.log-row:last-of-type{border-bottom:1px solid var(--line)}
.log-date{flex:0 0 120px;font-size:16px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.log-row>.badge,.log-row>.badge-soft{flex:0 0 auto}
.log-row>.log-body{flex:1 1 360px;min-width:0}
.log-row>.log-body>p{margin:0;font-size:17px;line-height:1.85;color:var(--text-2)}

/* 更新紀錄的「看詳細」。原生 <details>，沒有 JavaScript——關掉 JS
   或爬蟲進來都讀得到內容，而且不用自己管開合狀態。
   大半的紀錄只有一句話，所以後台沒填內容時整個 <details> 不輸出。
   內容本體用 .prose，排版吃樣式表現成的那一套。 */
.log-more{margin:10px 0 0}
.log-more>summary{
  display:inline-flex;align-items:center;gap:7px;width:auto;
  font-size:15px;font-weight:700;color:var(--accent);cursor:pointer;list-style:none;
}
.log-more>summary::-webkit-details-marker{display:none}
.log-more>summary::marker{content:""}
.log-more>summary::after{
  content:"";width:7px;height:7px;margin-top:-4px;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg);transition:transform .15s ease;
}
.log-more[open]>summary::after{transform:rotate(-135deg);margin-top:2px}
.log-more>summary:hover{text-decoration:underline}
.log-more>summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}
.log-more>.prose{
  margin:14px 0 2px;padding:18px 22px;
  background:var(--tint);border-radius:var(--r-md);border-left:3px solid var(--line);
}
.log-more>.prose>:first-child{margin-top:0}
.log-more>.prose>:last-child{margin-bottom:0}
.badge-soft{
  display:inline-flex;align-items:center;flex:0 0 auto;height:26px;padding:0 12px;
  background:var(--band);color:var(--text-2);font-size:13px;font-weight:700;border-radius:var(--r-pill);
}

/* ---------- 列表／搜尋結果 ---------- */
.res-list{display:flex;flex-direction:column}
.res-item{padding:22px 0;border-top:1px solid var(--line)}
.res-item:last-child{border-bottom:1px solid var(--line)}
.res-item h3{margin:0 0 6px;font-size:20px;line-height:1.5;font-weight:700}
.res-item p{margin:0;font-size:16px;line-height:1.8;color:var(--text-2)}
.res-meta{margin:0 0 8px;font-size:13px;color:var(--text-3)}
.empty-note{
  margin:0;padding:24px 28px;background:var(--band);border-radius:var(--r-md);
  font-size:17px;line-height:1.85;color:var(--text-2);
}

@media (max-width:1023px){
  .hub{grid-template-columns:1fr}
}
@media (max-width:767px){
  .hub-card{padding:24px 22px 26px}
  .hub-card h2{font-size:22px}
  .log-row{gap:10px 16px;padding:18px 0}
  .log-date{flex:0 0 auto}
  .log-row>.log-body{flex:1 1 100%}
  .log-more>.prose{padding:16px 18px}
  .search-row input,.search-row .btn{height:52px;font-size:16px}
  .search-row .btn{width:100%}
}

/* =========================================================================
   新手開店指南（七步）
   ========================================================================= */
.steps7{display:flex;flex-direction:column}
.step7{display:flex;flex-wrap:wrap;gap:32px;padding:32px 0;border-top:1px solid var(--line)}
.step7:first-child{border-top:2px solid var(--ink)}
.step7:last-child{border-bottom:1px solid var(--line)}
.step7-no{flex:0 0 64px;margin:0;font-size:34px;line-height:1.1;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums}
.step7-main{flex:1 1 420px;min-width:0}
.step7-main h2{margin:0 0 10px;font-size:26px;line-height:1.45;font-weight:700}
.step7-main p{margin:0 0 14px;font-size:17px;line-height:1.85;color:var(--text-2)}

/* 「這一步最常卡在哪裡」。沒有內容時整個方框不輸出，
   不會在線上頁面出現「待收集」。 */
.pitfall{
  flex:1 1 280px;min-width:0;
  padding:16px 20px;background:var(--band);
  border-left:3px solid var(--accent);border-radius:var(--r-sm);
}
.pitfall dt{margin:0 0 6px;font-size:13px;font-weight:700;color:var(--accent)}
.pitfall dd{margin:0;font-size:15px;line-height:1.8;color:var(--ink)}

/* =========================================================================
   操作手冊分類
   ========================================================================= */
.cats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.cat-card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  padding:24px 26px 26px;display:flex;flex-direction:column;gap:8px;
  box-shadow:var(--shadow-card);
}
.cat-card:hover{text-decoration:none;border-color:var(--ink)}
.cat-card b{font-size:20px;font-weight:700;color:var(--ink)}
.cat-card span{font-size:14px;line-height:1.7;color:var(--text-3)}

/* =========================================================================
   文章頁
   內文是後台編輯器產生的 HTML，所以這裡要把常見標籤都給個樣式，
   否則客服貼什麼進來就長什麼樣。
   ========================================================================= */
.prose{font-size:17px;line-height:1.95;color:var(--ink)}
.prose > :first-child{margin-top:0}
.prose p{margin:0 0 20px}
.prose h2{margin:40px 0 14px;font-size:27px;line-height:1.4}
.prose h3{margin:32px 0 12px;font-size:21px;line-height:1.45;font-weight:700}
.prose h4{margin:26px 0 10px;font-size:18px;font-weight:700}
.prose ul,.prose ol{margin:0 0 20px;padding-left:1.6em}
.prose li{margin:0 0 8px}
.prose a{color:var(--accent);font-weight:500;text-decoration:underline}
.prose img{max-width:100%;height:auto;margin:8px 0 20px;border:1px solid var(--line);border-radius:4px}
.prose blockquote{
  margin:0 0 20px;padding:16px 22px;background:var(--band);
  border-left:3px solid var(--accent);border-radius:var(--r-sm);
}
.prose blockquote p:last-child{margin:0}
.prose table{width:100%;border-collapse:collapse;margin:0 0 20px;font-size:16px}
.prose th,.prose td{padding:10px 14px;border:1px solid var(--line);text-align:left;vertical-align:top}
.prose th{background:var(--tint);font-weight:700}
.prose hr{margin:32px 0}
.prose code{
  padding:2px 6px;background:var(--band);border-radius:2px;
  font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.92em;
}
.prose pre{margin:0 0 20px;padding:16px 18px;background:var(--band);border-radius:var(--r-sm);overflow-x:auto}
.prose pre code{padding:0;background:none}
/* 後台可能貼進固定寬度的表格或圖，不要把版面撐破 */
.prose{overflow-wrap:break-word}

/* 上一篇／下一篇 */
.art-nav{display:flex;flex-wrap:wrap;gap:20px;margin:48px 0 0;padding:24px 0 0;border-top:1px solid var(--line)}
.art-nav a{flex:1 1 260px;min-width:0}
.art-nav small{display:block;margin:0 0 4px;font-size:13px;color:var(--text-3)}
.art-nav b{font-size:16px;font-weight:700;line-height:1.6}
.art-nav .next{text-align:right}

/* 側欄：同分類其他文章 */
.aside-list{display:flex;flex-direction:column}
.aside-list a,.aside-list span{padding:12px 0;border-top:1px solid var(--line-soft);font-size:15px;line-height:1.7;color:var(--text-2)}
.aside-list > :last-child{border-bottom:1px solid var(--line-soft)}
.aside-list a.is-current{color:var(--accent);font-weight:700}

@media (max-width:1023px){
  .cats{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:767px){
  .cats{grid-template-columns:1fr}
  .step7{gap:16px;padding:24px 0}
  .step7-no{flex:0 0 100%;font-size:26px}
  .step7-main h2{font-size:21px}
  .prose{font-size:16px}
  .prose h2{font-size:22px;margin-top:32px}
  .prose h3{font-size:19px}
  .art-nav .next{text-align:left}
}

/* =========================================================================
   首頁
   ========================================================================= */

/* ---------- HERO ----------
   設計稿上使用者手動把這一區訂成固定像素（容器 1247、區塊高 570、
   H1 寬 620）。固定寬高在手機上會爆版，所以那些數值只在 1240px 以上
   生效——設計稿是在桌機尺寸畫的，就讓它在桌機尺寸完全一致，
   小螢幕則照一般的流動版面走。 */
.hero-home{background:var(--paper);padding:56px 0 48px}
.hero-home .wrap{display:flex;flex-wrap:wrap;gap:40px;align-items:center}
.hero-home-text{flex:1 1 480px;min-width:0}
.hero-home-text h1{font-size:44px;line-height:1.22;letter-spacing:-.02em}
.hero-home-text > p{margin:28px 0 0;font-size:19px;line-height:1.8;color:var(--text-2);max-width:30em}
.hero-home-actions{margin:38px 0 0;display:flex;flex-wrap:wrap;gap:14px}

.hero-home-media{
  flex:1 1 520px;min-width:0;position:relative;overflow:hidden;
  aspect-ratio:16/10;border-radius:var(--r-md);
}
.hero-home-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:46% 50%}
/* 白色漸層把圖的左緣帶進白底，文字那一側才不會被照片搶掉。
   手機時兩欄變上下排，漸層會壓在圖上很醜，所以收起來。 */
.hero-home-scrim{display:none}

@media (min-width:1240px){
  .hero-home{padding:0}
  .hero-home .wrap{height:570px;gap:0;padding-right:0;padding-left:0;max-width:1247px}
  .hero-home-text h1{font-size:60px;max-width:620px}

  /* 首屏右側滿版（2026-10-15 使用者要求）
     .wrap 的最大寬度是 1247，視窗比這寬時右邊會剩一塊白。
     讓圖片往右溢出到視窗邊緣，那塊白就沒了。

     margin-right 的百分比是對「容器寬度」算的，也就是 .wrap 的一半；
     減掉視窗的一半，差額剛好等於右側留白，所以是負的那個值。
     視窗 1240 時兩者相等、margin 為 0，斷點前後不會跳。

     文字欄要改成固定 620px（原本是 flex:1 1 480px 會一起伸展）。
     不固定的話圖變寬、文字欄也跟著變寬，兩邊搶空間，比例會跑掉。

     vw 在多數瀏覽器含捲軸寬度，所以會多溢出大約 7px——
     .hero-home 本來就有 overflow:hidden（裝飾圓點需要），會裁掉，
     不會長出橫向捲軸。 */
  .hero-home-text{flex:0 0 620px}
  .hero-home-media{
    align-self:stretch;height:570px;aspect-ratio:auto;
    flex:1 1 auto;border-radius:0;
    margin-right:calc(50% - 50vw);
  }
  /* 圖框變寬很多，原本的 120% ＋ 左移 50px 是為了窄框做的，不再需要；
     交給 object-fit:cover 與 object-position 處理裁切。 */
  .hero-home-media img{width:100%;left:0}
  .hero-home-scrim{
    display:block;position:absolute;inset:0;left:-80px;
    background:linear-gradient(90deg,#fff 15%,rgba(255,255,255,.55) 25%,rgba(255,255,255,0) 35%);
  }
}

/* ---------- 信任列（五張卡） ---------- */
.trust-band{background:var(--band);padding:36px 0 38px}
.trust-cards{display:flex;flex-wrap:wrap;gap:16px}
.trust-cards > div{
  flex:1 1 166px;min-width:0;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  padding:20px 18px 18px;
}
.trust-cards svg{width:48px;height:48px;display:block}
.trust-cards p{margin:12px 0 0;font-size:16px;line-height:1.6;font-weight:700;color:var(--ink)}

/* ---------- 痛點三列（左右交錯） ---------- */
.pain-rows{display:flex;flex-direction:column;gap:56px}
.pain-row{display:flex;flex-wrap:wrap;gap:56px;align-items:center}
/* row-reverse + wrap 的自然結果：手機時圖仍然在上面，不需要 media query */
.pain-row--alt{flex-direction:row-reverse}
.pain-media{
  flex:.85 1 380px;min-width:0;aspect-ratio:16/9;
  border-radius:4px;overflow:hidden;position:relative;
}
.pain-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pain-text{flex:1.15 1 380px;min-width:0}
.pain-text > p:first-child{margin:0 0 8px;font-size:15px;font-weight:500;color:var(--accent)}
.pain-text h3{margin:0 0 16px;font-size:30px;line-height:1.38}
.pain-text > p:last-child{margin:0;font-size:17px;line-height:1.85;color:var(--text-2)}

/* 圖 60%、文 40%（2026-10-15 使用者要求。原本是 .85 : 1.15 的伸展比，
   量出來約 48 : 52，文字反而比圖寬一點）。

   不能直接把兩邊寫成 60% / 40%：這一列的換行是靠 flex-basis:380px 撐出來的
   —— 容器放不下 380+380+56 就自動折成上下排，手機版因此不必寫 media query。
   改成百分比的話兩邊永遠加起來剛好是 100%，就再也不會換行，手機會擠成兩欄。

   所以只在「本來就並排」的寬度以上覆寫。臨界點算得出來：
   容器寬 = 視窗 - 80（.wrap 左右各 40 的留白），容器 < 816 就會換行，
   也就是視窗 < 896。因此 896 以下完全不碰，手機與平板的行為一模一樣。

   扣掉的數字是 56px 間距照 6:4 分攤（33.6 / 22.4），這樣「圖比文」才會是
   剛好 60:40。平均各扣 28px 的話會變成 60.5:39.5——差 6px，但既然算得出來
   就寫準一點。兩邊加上間距仍然剛好等於 100%。 */
@media (min-width:896px){
  .pain-media{flex:0 1 calc(60% - 33.6px)}
  .pain-text {flex:0 1 calc(40% - 22.4px)}
}

/* ---------- 方案卡（首頁與 landing 版，中間那張抬高） ---------- */
.plan-featured{
  border:2px solid var(--accent);margin-top:-12px;padding-bottom:42px;
  position:relative;box-shadow:var(--shadow-accent);
}
.plan-badge{
  position:absolute;top:-13px;left:30px;
  height:26px;padding:0 12px;display:inline-flex;align-items:center;
  background:var(--accent);color:#fff;font-size:13px;font-weight:700;border-radius:var(--r-pill);
}
.plan-list{margin:22px 0 24px;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.plan-list li{display:flex;gap:10px;align-items:flex-start;font-size:16px;line-height:1.7;color:var(--text-2)}
.plan-list li::before{
  content:"";flex:0 0 auto;width:7px;height:7px;margin-top:9px;border-radius:50%;
  background:var(--line-dash);
}
.plan-featured .plan-list li::before{background:var(--accent)}

/* ---------- 客戶案例 ---------- */
.case-card{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  overflow:hidden;display:flex;flex-direction:column;
}
.case-media{aspect-ratio:16/9;overflow:hidden;position:relative;border-bottom:1px solid var(--line)}
.case-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0}
.case-body{padding:22px 24px 24px;display:flex;flex-direction:column;gap:10px;flex:1 1 auto}
.case-body h3{margin:0;font-size:21px;line-height:1.45;font-weight:700}
.case-body p{margin:0;flex:1 1 auto;font-size:16px;line-height:1.8;color:var(--text-2)}

/* 第六格不是卡片而是一顆大按鈕——點哪裡都會進案例頁 */
.case-all{
  background:var(--ink);color:#fff;border-radius:var(--r-md);
  padding:28px 30px 30px;display:flex;flex-direction:column;gap:10px;justify-content:center;
}
.case-all:hover{background:var(--ink-deep);text-decoration:none;color:#fff}
.case-all b{font-size:26px;line-height:1.4;font-weight:900;letter-spacing:-.01em}
.case-all span{font-size:16px;line-height:1.8;color:var(--text-on-dark)}
.case-all em{
  margin-top:4px;display:inline-flex;align-items:center;gap:8px;
  font-size:16px;font-weight:700;font-style:normal;
}

/* ---------- 底部 CTA（左圖滿版出血，右深色卡） ---------- */
.cta-split{background:var(--band);padding:0;overflow:hidden}
.cta-split .wrap{display:flex;flex-wrap:wrap;gap:28px;align-items:stretch}
.cta-split-media{
  flex:1 1 360px;min-width:0;min-height:320px;position:relative;overflow:hidden;
  background:var(--paper);
  /* 往左延伸到螢幕邊緣 */
  margin-left:calc(-1 * max(40px, (100vw - 1160px) / 2));
}
.cta-split-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cta-split-card{
  flex:1.25 1 460px;min-width:0;margin:80px 0 88px;
  background:var(--text-2);color:#fff;border-radius:var(--r-lg);
  padding:56px 44px 60px;display:flex;flex-direction:column;justify-content:center;
}
.cta-split-card h2{margin:0;font-size:38px;line-height:1.32;letter-spacing:-.01em;color:#fff}
.cta-split-card > p{margin:22px 0 0;font-size:17px;line-height:1.85;color:var(--text-on-dark)}
.cta-split-card .thanks-actions{margin:32px 0 0;justify-content:flex-start}
.cta-split-note{margin:20px 0 0;font-size:14px;color:#b9bdcb}

@media (max-width:767px){
  .hero-home{padding:36px 0 32px}
  .hero-home-text h1{font-size:32px}
  .hero-home-text > p{font-size:17px;margin-top:20px}
  .hero-home-actions{margin-top:26px}
  .trust-cards > div{flex:1 1 calc(50% - 8px);padding:16px 14px 14px}
  .trust-cards svg{width:36px;height:36px}
  .trust-cards p{font-size:15px}
  .pain-rows{gap:36px}
  .pain-row{gap:24px}
  .pain-text h3{font-size:24px}
  .case-all{padding:24px 22px 26px}
  .case-all b{font-size:22px}
  .cta-split-media{margin-left:0;min-height:220px;flex:1 1 100%}
  .cta-split-card{margin:0 0 40px;padding:32px 24px 36px}
  .cta-split-card h2{font-size:26px}
}

/* =========================================================================
   方案卡的 hover
   /pricing 與首頁共用同一個 .plan 元件，所以兩頁的三張卡會一起生效。

   三個刻意的限制：

     @media (hover:hover)
       只在真的有游標的裝置上套用。手機沒有 hover，但瀏覽器會在點擊後
       把 :hover 狀態「黏」在元素上，看起來像卡片卡住不會還原。

     transform 只動 6px
       卡片是「可以選的選項」，不是按鈕。動太多會讓人以為整張卡可以點，
       但真正能點的只有裡面那顆按鈕。

     邊框只換顏色不換寬度
       換寬度會讓卡片內容位移一兩個像素，整排卡看起來會抖。
   ========================================================================= */
@media (hover: hover) {

  .plan{
    transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  }
  .plan .plan-price,
  .plan .btn{
    transition:color .18s ease, background-color .18s ease, border-color .18s ease;
  }

  .plan:hover{
    transform:translateY(-6px);
    border-color:var(--ink);
    box-shadow:0 4px 10px rgba(24,55,78,.07), 0 24px 44px -16px rgba(24,55,78,.28);
  }
  /* 金額轉成強調色：視線本來就會先落在數字上 */
  .plan:hover .plan-price{color:var(--accent)}
  /* 整張卡 hover 時按鈕就先填滿，讓人知道該點哪裡 */
  .plan:hover .btn-outline{
    background:var(--ink);color:#fff;border-color:var(--ink);
  }

  /* 抬高的那張維持品牌藍系，不要被上面那條的 --ink 蓋掉。
     這條要排在 .plan:hover 後面，兩者權重相同由順序決定。 */
  .plan-featured:hover{
    border-color:#19629a;
    box-shadow:0 4px 12px rgba(24,55,78,.08), 0 28px 56px -18px rgba(30,117,182,.42);
  }
  .plan-featured:hover .plan-price{color:#19629a}
  .plan-featured:hover .btn-accent{background:#19629a;border-color:#19629a}

}

/* 使用者在系統裡關掉動態效果時，位移與過場都不要做，
   但顏色與陰影的變化留著——那是狀態提示，不是動畫。
   檔案前面那條 prefers-reduced-motion 只關掉 transition 與 animation，
   管不到 transform，所以這裡要再寫一次。 */
@media (prefers-reduced-motion: reduce) {
  .plan:hover{transform:none}
}

/* =========================================================================
   捲動淡入 ＋ 首屏視差裝飾
   2026-10-15 使用者要求，參考 freestore.com.tw 的效果。

   那個站用的是 WOW.js ＋ animate.css（約 80KB）。這個站目前一個 JS
   函式庫都沒載，為了淡入扛兩個函式庫不划算，所以用
   IntersectionObserver ＋ 這段 CSS 做，同樣的視覺、約 1KB。

   ─── 為什麼要 .js-rv 這個開關 ───
   隱藏只在 <html class="js-rv"> 之下生效，而那個 class 是 <head> 裡
   一行 script 加上去的。這樣：
     JS 被擋掉、壞掉、瀏覽器太舊  → class 不存在 → 內容照常顯示
     class 加在 head               → 第一次繪製前就生效，不會先閃一下內容
   「內容預設隱藏、等 JS 來顯示」是這類效果最常見的災難，
   所以預設值一定要是看得見。
   ========================================================================= */

.js-rv .rv{
  opacity:0;
  transform:translateY(16px);
  transition:opacity .55s ease, transform .55s ease;
}
.js-rv .rv.is-in{opacity:1;transform:none}

/* 整組依序出現。只要在容器上加 .rv-group，直接子元素就會錯開——
   卡片是程式產生的那幾區（功能、案例）因此不必改產生程式。 */
.js-rv .rv-group > *{
  opacity:0;
  transform:translateY(16px);
  transition:opacity .55s ease, transform .55s ease;
}
.js-rv .rv-group.is-in > *{opacity:1;transform:none}
.rv-group > *:nth-child(2){transition-delay:.08s}
.rv-group > *:nth-child(3){transition-delay:.16s}
.rv-group > *:nth-child(4){transition-delay:.24s}
.rv-group > *:nth-child(5){transition-delay:.32s}
.rv-group > *:nth-child(n+6){transition-delay:.4s}

/* -------------------------------------------------------------------------
   首屏的裝飾圓點
   純裝飾，所以 aria-hidden、pointer-events:none，鍵盤與螢幕報讀都碰不到。
   hero 加 overflow:hidden 是必要的：圓點超出邊界時不能讓頁面長出橫向捲軸。
   ------------------------------------------------------------------------- */
.hero-home{position:relative;overflow:hidden}
.hero-home .wrap{position:relative;z-index:1}

.hero-deco{position:absolute;inset:0;z-index:0;pointer-events:none}
.hero-deco span{position:absolute;display:block;border-radius:50%;will-change:transform}

.hero-deco span:nth-child(1){width:230px;height:230px;top:-80px;left:-90px;background:var(--band)}
.hero-deco span:nth-child(2){width:150px;height:150px;bottom:-60px;left:16%;background:var(--tint)}
.hero-deco span:nth-child(3){width:13px;height:13px;top:22%;left:41%;background:var(--accent);opacity:.45}
.hero-deco span:nth-child(4){width:9px;height:9px;top:62%;left:33%;background:var(--accent);opacity:.3}
.hero-deco span:nth-child(5){width:7px;height:7px;top:38%;left:7%;background:var(--ink);opacity:.18}

/* 手機版 hero 矮很多，大圓會壓到文字，只留兩個小點 */
@media (max-width:767px){
  .hero-deco span:nth-child(2),
  .hero-deco span:nth-child(3){display:none}
  .hero-deco span:nth-child(1){width:150px;height:150px;top:-60px;left:-70px}
}

/* -------------------------------------------------------------------------
   關掉動態效果時
   重點：不能只是「不要動」，而是要「直接顯示」。
   檔案前面那條 *{animation:none;transition:none} 管不到 opacity 的初始值，
   少了下面這兩行，關掉動態效果的使用者會看到一片空白。
   ------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .js-rv .rv,
  .js-rv .rv-group > *{opacity:1 !important;transform:none !important}
  .hero-deco{display:none}
}

/* =========================================================================
   深色底的方案區（2026-10-15 使用者要求）

   首頁的「三種方案，一種價格邏輯」改成 .section--ink。

   .section--ink 會把區塊裡所有 h1/h2/h3 轉白、所有 p 轉成淺色，
   但這一區裡面有白底的方案卡——白底配淺字等於看不見，
   所以要把卡片裡的字色寫回來。

   不是「沒設定就沒事」：.section--ink p 的特異性是 (0,1,1)，
   比 .plan-eyebrow、.plan-price 這種單一 class (0,1,0) 高，
   會把它們蓋掉。下面每一條都是兩個 class 以上，才搶得回來。
   ========================================================================= */

.section--ink .plan h2,
.section--ink .plan h3{color:var(--ink)}
.section--ink .plan-eyebrow,
.section--ink .plan-per{color:var(--text-3)}
.section--ink .plan-price{color:var(--ink)}
.section--ink .plan-cycle{color:var(--text-2)}

/* 直接落在深色底上的連結要夠亮。品牌藍 #1e75b6 在 #112636 上對比不足，
   換成淺一階的 accent-light。 */
.section--ink > .wrap > p > .lnk-more{color:var(--accent-light)}

/* 整區下方的寬按鈕（目前用在首頁「看我們的功能」）。
   寬度是所在容器的 60%——那個 <p> 撐滿 .wrap，所以桌機約 696px。

   只在 768 以上套用。.btn 在 767 以下本來就是 width:100%，
   這裡若不設斷點，附加在檔案後面的規則會蓋掉它，手機反而變窄。 */
@media (min-width:768px){
  .btn-wide{width:60%}
}

/* 操作手冊：步驟與交叉參照
   每一步有小標題、說明，可能再帶一張截圖。
   參考使用者指定的範例站（快工具操作手冊）的寫法。 */
/* 操作手冊的步驟清單。一個步驟佔滿整行，由上往下走。
   不要叫 .steps —— 那是 /trial 與 /renewed 的三欄步驟卡，
   display:grid 會讓這裡的步驟變成一列三個。 */
.prose ol.doc-steps{display:block;padding-left:0;list-style:none;counter-reset:docstep}
.prose ol.doc-steps > li{
  display:list-item;width:auto;margin:0 0 26px;list-style:none;
  position:relative;padding-left:44px;counter-increment:docstep;
}
/* 序號：赭紅圓底白字。line-height 要等於高度，數字才會垂直置中。 */
.prose ol.doc-steps > li::before{
  content:counter(docstep);
  position:absolute;left:0;top:2px;
  width:28px;height:28px;border-radius:50%;
  background:var(--accent);color:#fff;
  font-size:15px;font-weight:700;line-height:28px;text-align:center;
}
.prose ol.doc-steps > li > b{display:block;margin:0 0 4px;font-size:17px;color:var(--ink)}
.prose ol.doc-steps > li > p{margin:0 0 10px}

@media (max-width:767px){
  /* 手機上縮一點，不要讓序號吃掉太多行寬 */
  .prose ol.doc-steps > li{padding-left:36px}
  .prose ol.doc-steps > li::before{width:24px;height:24px;line-height:24px;font-size:14px}
}
.prose figure{margin:10px 0 0}
.prose figure img{margin:0}
.prose figcaption{margin:6px 0 0;font-size:14px;color:var(--text-3)}
/* 「要做 X 請改用 Y」的指路。灰一點，不要和正文搶。 */
.prose .xref{margin:0 0 8px;font-size:15px;color:var(--text-3)}

/* =========================================================================
   操作手冊 /docs：固定頁首 ＋ 分類膠囊 ＋ 文章卡片
   2026-10-19 使用者要求，參考 ftool.tw 的操作手冊版面。
   ========================================================================= */

/* 學習資源各列表頁共用的頁首（操作手冊、電商經營知識…）。
   原本叫 .docs-head，/blog 也要用之後名字會誤導，所以改成中性的名稱。

   「固定」拆成獨立的 --sticky：這一塊約 230px 高，捲動時會一直佔住
   畫面頂端。文章很多又有分類篩選的 /docs 值得；/blog 只有幾篇，
   固定住只是白白吃掉三分之一的畫面，所以不套。 */
.res-head{
  background:var(--paper);border-bottom:1px solid var(--line);
  padding:28px 0 24px;
}
.res-head--sticky{position:sticky;top:0;z-index:20}
.res-head .crumb{margin:0 0 10px}
/* 字重與字距原本是從 h1,h2,h3,h4 那條元素規則來的。
   這一行在 /docs 是 h1、在分類頁與文章頁是 p（一頁只留一個 h1，
   要讓給分類名稱或文章標題），換成 p 就只剩字級、變成一般字重，
   和列表頁對不起來。所以字重寫在這裡，用哪個標籤都一樣。 */
.res-head-title{margin:0;font-size:40px;line-height:1.26;font-weight:900;letter-spacing:-.02em;color:var(--ink)}
.res-head-lead{margin:14px 0 20px;max-width:42em;font-size:17px}
.res-head .search-row{margin:0}

/* 分類膠囊 */
.doc-pills{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 40px}
.doc-pills a{
  display:inline-flex;align-items:center;height:40px;padding:0 18px;
  background:var(--paper);border:1px solid var(--line);border-radius:999px;
  font-size:15px;color:var(--text-2);white-space:nowrap;
  transition:background-color .15s ease,color .15s ease,border-color .15s ease;
}
.doc-pills a:hover{text-decoration:none;border-color:var(--ink);color:var(--ink)}
.doc-pills a.is-on{background:var(--ink);border-color:var(--ink);color:#fff;font-weight:700}
.doc-pills a.is-on:hover{color:#fff}

/* 一組分類 */
.doc-group + .doc-group{margin-top:56px}
.doc-group-title{margin:0 0 10px;font-size:28px}
.doc-group-title a{color:var(--ink)}
.doc-group-intro{margin:0 0 24px;font-size:16px;line-height:1.85;color:var(--text-2)}

/* 文章卡片：兩欄 */
.doc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.doc-card{
  display:block;padding:20px 22px 22px;
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md);
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;
}
.doc-card b{display:block;margin:10px 0 6px;font-size:18px;line-height:1.5;color:var(--ink)}
.doc-sum{display:block;font-size:15px;line-height:1.8;color:var(--text-2)}
/* 編號。等寬數字，兩位分類＋兩位序號，例如 0103。 */
.doc-no{
  display:inline-flex;align-items:center;height:24px;padding:0 9px;
  background:var(--band);border-radius:var(--r-sm);
  font-size:13px;font-weight:700;color:var(--text-3);
  font-variant-numeric:tabular-nums;letter-spacing:.04em;
}
@media (hover:hover){
  .doc-card:hover{
    text-decoration:none;border-color:var(--ink);
    box-shadow:var(--shadow-card);transform:translateY(-2px);
  }
  .doc-card:hover .doc-no{background:var(--accent);color:#fff}
}
@media (prefers-reduced-motion:reduce){
  .doc-card:hover{transform:none}
}

@media (max-width:1023px){
  .doc-grid{grid-template-columns:1fr}
}
@media (max-width:767px){
  /* 手機上固定會吃掉太多畫面，改回一般區塊 */
  .res-head--sticky{position:static}
  .res-head{padding:24px 0 20px}
  .res-head-title{font-size:30px}
  .res-head-lead{font-size:16px;margin:12px 0 16px}
  .doc-pills{gap:8px;margin-bottom:28px}
  .doc-pills a{height:36px;padding:0 14px;font-size:14px}
  .doc-group-title{font-size:23px}
}

/* 操作手冊的文章頁：和列表頁同一種配置，沒有側欄。
   容器是全寬的 1160px，內文要收窄，不然一行會長到很難讀。 */
.doc-article{max-width:52em}
.doc-article-title{margin:0 0 14px;font-size:34px;line-height:1.3}
.doc-article-lead{margin:0 0 32px;font-size:18px;line-height:1.85;color:var(--text-2)}

/* 文章頁右側的分類膠囊。
   外觀和列表頁完全一樣（圓角、同高度、同字級），側排只改方向——
   上一版把它改成方角滿版的方塊，和列表頁對不起來。
   側排時每顆都撐滿側欄寬度——文字長短不一，各自縮放會參差不齊。
   最長的「金流／物流設定（0）」約 200px，側欄約 357px，不會折行。 */
.doc-pills--side{flex-direction:column;align-items:stretch;gap:10px;margin:0}

@media (max-width:767px){
  .doc-article-title{font-size:26px}
  .doc-article-lead{font-size:16px;margin-bottom:24px}
}


/* ------------------------------------------------------------------
   /features 的六個功能區塊
   原本是一列三張卡（.grid-3），改成一列一個、圖左文右。

   圖固定在左邊、不交錯：首頁的痛點區用 .pain-row--alt 左右交替，
   是因為那裡只有三列、交錯有節奏感；這裡六項是平行的清單，
   交錯反而會讓人以為分成了兩組。

   每一列本身就是一張白卡，用的是 .card 那一組值（白底、細框、圓角、
   陰影）。圖貼齊卡片左緣、不留間距，所以這裡沒有 gap，留白改由
   .feat-text 的 padding 給——和 .card-flush 讓圖貼齊上緣是同一個做法。

   寬度：只有 .feat-text 會長（flex-grow:1），圖固定在 340px 的基準寬，
   所以 1160 的容器裡大約是圖 3 成、文字 7 成。視窗窄到放不下
   340+420 就自動換行，圖落到文字上面，不需要另外寫 media query。

   圖用 align-self:stretch 撐滿整列高度（min-height 兜住文字很短的列），
   不用 aspect-ratio——一列一列高度不同時，固定比例反而會在卡片裡
   留下一條縫。

   某一列的圖檔不存在時整個 .feat-media 不輸出，剩下的 .feat-text
   會自己長到整張卡的寬度。
   ------------------------------------------------------------------ */
.feat-rows{display:flex;flex-direction:column;gap:28px}
.feat-row{
  display:flex;flex-wrap:wrap;align-items:center;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-md);
  box-shadow:var(--shadow-card);
  overflow:hidden;
}
.feat-media{
  flex:0 1 340px;min-width:0;align-self:stretch;min-height:260px;
  position:relative;overflow:hidden;background:var(--band);
}
.feat-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.feat-text{flex:1 1 420px;min-width:0;padding:34px 40px}
.feat-text h2{margin:0 0 14px;font-size:28px;line-height:1.38}
.feat-text .feat-lead{margin:0 0 14px;font-size:17px;line-height:1.85;color:var(--text-2)}
.feat-text .feat-bullets{margin:0;font-size:15px;line-height:1.85;color:var(--accent)}

@media (max-width:767px){
  .feat-rows{gap:20px}
  /* 換行之後圖是整列寬，拿掉撐高改成固定高度的橫幅，不然會太高 */
  .feat-media{flex-basis:100%;min-height:0;height:200px}
  .feat-text{padding:24px 22px 26px}
  .feat-text h2{font-size:23px}
  .feat-text .feat-lead{font-size:16px}
}

/* =========================================================================
   第 4 階段：三大客群到達頁（/start ／ /switch ／ /offline）
   設計稿：https://claude.ai/code/artifact/6c084dcd-babe-4700-bc52-cbbeaac5c5ec

   三頁各對一種客群，共用同一組元件：
     /start    第一次開店  柔和漸層 Hero ＋ 手機模型
     /switch   從別的平台搬過來  深色照片 Hero ＋ 年費試算
     /offline  有實體店、要專人帶  暖色漸層 Hero ＋ 裝飾相框

   ─── 和前面幾階段的關係 ───
   能用現成元件的地方都用現成的：方案卡 .plan、案例卡 .case-card、
   按鈕 .btn、深色 CTA .cta-ink、三欄時程 .steps、捲動淡入 .rv 都沒有重做。
   下面只收設計稿上這三頁才有、而且別頁沒有的東西。

   ─── 為什麼多三個色相 ───
   全站本來只有品牌藍與品牌黃兩個色相（檔頭有寫）。這三頁的「卡關 01/02/03」
   與「市集 vs 官網」是「三件並列、要一眼分得開」的版位，同一個品牌藍
   排三張分不出來，所以借了青、綠、紫。三個都只用在這三頁的卡片底色與
   圖示底，不進全站語彙；品牌藍仍然是唯一的強調色（價格、關鍵詞、主按鈕）。
   深淺也刻意錯開，不是只有色相不同——色盲的人靠明度也分得出來。
   ========================================================================= */

:root{
  --lp-blue:#0e7490;
  --lp-blue-bg:#e2f2f6;
  --lp-blue-ink:#0b5a70;
  --lp-green:#047857;
  --lp-green-bg:#eaf7f0;
  --lp-green-ink:#065f46;
  --lp-purple:#5b3fd1;
  --lp-purple-bg:#f3f0ff;
  --lp-accent-bg:#e9f3fc;
  --lp-accent-ink:#19629a;   /* 白底上 6.45:1，小字也過 */
}

/* ---------- Hero 外框（三種底，同一組排版） ---------- */
.lp-hero{position:relative;overflow:hidden;padding:72px 0 76px}
.lp-hero > .wrap{position:relative;z-index:1;display:flex;flex-wrap:wrap;align-items:center;gap:56px}
.lp-hero-text{flex:1 1 460px;min-width:0}
.lp-hero-media{flex:1 1 380px;min-width:0;position:relative}
.lp-hero h1{margin:18px 0 0;font-size:50px;line-height:1.24;letter-spacing:-.02em}
.lp-hero-lead{margin:20px 0 0;font-size:19px;line-height:1.85;color:var(--text-2)}
.lp-hero-actions{margin:30px 0 0;display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.lp-hero-note{margin:18px 0 0;font-size:14px;line-height:1.8;color:var(--text-3)}

.lp-hero--soft{background:linear-gradient(120deg,#eaf4fc 0%,#f6fafd 45%,#eef6fc 100%)}
.lp-hero--warm{background:linear-gradient(135deg,#fdf6e3 0%,#fffdf6 48%,#eaf4fc 100%)}

/* 深色 Hero：照片鋪底，上面壓一層由左而右變淡的遮罩。
   遮罩不是為了好看——左邊文字壓在照片上，不壓暗就讀不到。
   左緣 .95 時 #fff 的字對比 > 12:1。 */
.lp-hero--dark{background:var(--ink-deep)}
.lp-hero--dark h1{color:#fff}
.lp-hero--dark .lp-hero-lead{color:var(--text-on-dark)}
.lp-hero--dark .lp-hero-note{color:var(--text-on-dark-2)}
.lp-hero-photo{position:absolute;inset:0;z-index:0}
.lp-hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center 85%}
.lp-hero-scrim{
  position:absolute;inset:0;z-index:0;
  background:linear-gradient(90deg,rgba(46,49,61,.95) 0%,rgba(46,49,61,.88) 50%,rgba(46,49,61,.74) 100%);
}

/* Hero 的裝飾圓。class 沿用首頁那組 .hero-deco，母版的視差 JS 認的就是
   這個名字，不必再寫一份；尺寸與顏色在這裡依每一頁的底色覆寫。
   （JS 只抓第一個 .hero-deco，而一頁只有一個 Hero。） */
.lp-hero .hero-deco span:nth-child(1){width:380px;height:380px;top:-170px;left:-120px;background:#cfe4f6;opacity:.5}
.lp-hero .hero-deco span:nth-child(2){width:70px;height:70px;bottom:60px;left:38%;background:none;border:9px solid #8fc2e6;opacity:.75}
.lp-hero .hero-deco span:nth-child(3){width:18px;height:18px;top:110px;left:46%;background:#818cf8;opacity:.6}
.lp-hero .hero-deco span:nth-child(4){width:12px;height:12px;bottom:150px;left:6%;background:var(--accent);opacity:.5}
.lp-hero--warm .hero-deco span:nth-child(1){width:420px;height:420px;top:-160px;left:-140px;background:#cfe4f6;opacity:.55}
.lp-hero--warm .hero-deco span:nth-child(2){width:300px;height:300px;bottom:-120px;right:-60px;left:auto;background:#bdebcd;border:0;opacity:.6}
.lp-hero--warm .hero-deco span:nth-child(3){width:90px;height:90px;top:70px;right:46%;left:auto;background:none;border:10px solid #8fc2e6;opacity:.7}

/* ---------- 圓角標籤 ---------- */
.lp-pill{
  display:inline-flex;align-items:center;height:30px;padding:0 15px;
  background:var(--paper);border:1px solid var(--line);border-radius:999px;
  font-size:14px;color:var(--text-2);
}
.lp-pill--dark{background:transparent;border-color:var(--line-dark);color:var(--text-on-dark)}
.lp-pill--accent{background:var(--lp-accent-bg);border-color:transparent;color:var(--lp-accent-ink);font-weight:700}
.lp-pill--green{background:var(--lp-green-bg);border-color:transparent;color:var(--lp-green-ink);font-weight:700}

/* ---------- /start Hero 的手機模型 ---------- */
.lp-phone{
  position:relative;z-index:1;width:280px;max-width:100%;margin:0 auto;
  border:10px solid var(--ink-deep);border-radius:36px;
  background:var(--paper);overflow:hidden;transform:rotate(-3deg);
}
.lp-phone-head{padding:14px 16px;border-bottom:1px solid var(--line-soft);text-align:center;font-size:16px;font-weight:700;color:var(--ink)}
.lp-phone-grid{margin:0;padding:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lp-phone-grid figure{margin:0}
.lp-phone-grid img{width:100%;height:96px;border-radius:8px;object-fit:cover}
.lp-phone-grid figcaption{margin:6px 0 0;font-size:13px;color:var(--ink)}
.lp-phone-cart{margin:0 16px 20px;padding:10px;background:var(--accent);color:#fff;border-radius:8px;text-align:center;font-size:14px;font-weight:700}

/* 蓋在模型上的兩個小物。手機版會收掉，見檔尾斷點。 */
.lp-stamp{
  position:absolute;z-index:2;top:8px;right:0;
  width:112px;height:112px;border-radius:50%;
  background:var(--accent);color:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  line-height:1.15;transform:rotate(10deg);
  box-shadow:0 10px 24px rgba(30,117,182,.3);
}
.lp-stamp span{font-size:13px;font-weight:700}
.lp-stamp b{font-size:30px;font-weight:900}
.lp-float{
  position:absolute;z-index:2;left:0;bottom:24px;max-width:250px;
  background:var(--paper);border:1px solid var(--line);border-radius:12px;
  padding:14px 18px;transform:rotate(-2deg);box-shadow:var(--shadow-card);
}
.lp-float span{display:block;font-size:13px;color:var(--text-3)}
.lp-float b{display:block;font-size:15px;color:var(--ink)}
/* 模型後面的兩塊有機色塊 */
.lp-blob{position:absolute;z-index:0;top:50%;left:50%;pointer-events:none}
.lp-blob--a{width:400px;height:400px;background:#dceaf8;border-radius:46% 54% 58% 42% / 48% 40% 60% 52%;transform:translate(-50%,-50%) rotate(-12deg)}
.lp-blob--b{width:300px;height:300px;background:#c7e0f4;opacity:.8;border-radius:58% 42% 50% 50% / 45% 55% 45% 55%;transform:translate(-30%,-62%) rotate(18deg)}

/* ---------- /start 的「卡關」三卡 ---------- */
.lp-stuck{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.lp-stuck-card{background:var(--lp-accent-bg);border-radius:24px;padding:28px;display:flex;flex-direction:column;gap:20px}
.lp-stuck-card--b{background:var(--lp-blue-bg)}
.lp-stuck-card--c{background:var(--lp-green-bg)}
.lp-stuck-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.lp-stuck-icon{
  width:60px;height:60px;border-radius:18px;background:var(--accent);
  display:flex;align-items:center;justify-content:center;transform:rotate(-6deg);
}
.lp-stuck-card--b .lp-stuck-icon{background:var(--lp-blue);transform:rotate(5deg)}
.lp-stuck-card--c .lp-stuck-icon{background:var(--lp-green);transform:rotate(-4deg)}
.lp-stuck-no{
  display:inline-flex;align-items:center;height:26px;padding:0 12px;
  background:var(--paper);border-radius:999px;
  font-size:13px;font-weight:700;color:var(--lp-accent-ink);
}
.lp-stuck-card--b .lp-stuck-no{color:var(--lp-blue-ink)}
.lp-stuck-card--c .lp-stuck-no{color:var(--lp-green-ink)}
/* 客人的原話。下緣那條陰影是設計稿的「紙片」效果，不是模糊陰影。 */
.lp-stuck-quote{
  margin:0;padding:16px 20px;background:var(--paper);border-radius:16px;
  font-size:21px;font-weight:900;line-height:1.5;color:var(--ink);
  box-shadow:0 4px 0 #bfdcf2;
}
.lp-stuck-card--b .lp-stuck-quote{box-shadow:0 4px 0 #bfe0e9}
.lp-stuck-card--c .lp-stuck-quote{box-shadow:0 4px 0 #c3e8d3}
.lp-stuck-fix{margin:0;display:flex;gap:10px;align-items:flex-start;font-size:17px;font-weight:700;line-height:1.7;color:var(--ink)}
.lp-tick{
  flex:0 0 26px;height:26px;margin-top:2px;border-radius:50%;background:var(--accent);
  display:flex;align-items:center;justify-content:center;
}
.lp-stuck-card--b .lp-tick{background:var(--lp-blue)}
.lp-stuck-card--c .lp-tick{background:var(--lp-green)}

/* ---------- 圓號步驟 ---------- */
.lp-numsteps{display:flex;flex-direction:column;gap:24px}
.lp-numstep{display:flex;gap:16px;align-items:flex-start}
.lp-num{
  flex:0 0 44px;height:44px;border-radius:50%;background:var(--accent);color:#fff;
  font-size:20px;font-weight:900;display:flex;align-items:center;justify-content:center;
}
.lp-numstep h3{margin:0 0 2px;font-size:20px;line-height:1.5;font-weight:700}
.lp-numstep p{margin:0;font-size:16px;line-height:1.8;color:var(--text-2)}
/* 同樣的步驟，/switch 排成三張白卡 */
.lp-numcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.lp-numcard{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:28px;display:flex;flex-direction:column;gap:12px}
/* 直排的卡片裡，.lp-num 的 flex:0 0 44px 會被當成「高度 44px」，寬度則被
   align-items:stretch 拉滿整張卡，圓圈變成橢圓。直排時寬度要自己給。 */
.lp-numcard .lp-num{flex:0 0 auto;width:44px;align-self:flex-start}
.lp-numcard h3{margin:0;font-size:20px;line-height:1.5;font-weight:700}
.lp-numcard p{margin:0;font-size:16px;line-height:1.8;color:var(--text-2)}

/* ---------- 影片位（素材還沒拍，先留框） ---------- */
.lp-video{
  position:relative;aspect-ratio:16/9;border-radius:var(--r-md);
  background:var(--ink-deep);color:#fff;padding:24px;text-align:center;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
}
.lp-video p{margin:0;font-size:15px;line-height:1.8;color:var(--text-on-dark)}

/* ---------- 可展開的常見問題 ----------
   /faq 的 .qa 是全部攤開的問答，這裡是到達頁的收合版：
   一頁最後放五題，攤開會把 CTA 推到看不見的地方。 */
.faq-ac{background:var(--paper);border:1px solid var(--line);border-radius:12px}
.faq-ac + .faq-ac{margin-top:14px}
.faq-ac > summary{
  display:flex;gap:12px;align-items:flex-start;
  padding:18px 22px;cursor:pointer;list-style:none;
  font-size:17px;line-height:1.6;font-weight:700;color:var(--ink);
}
.faq-ac > summary::-webkit-details-marker{display:none}
.faq-ac > summary::marker{content:""}
.faq-ac > summary::after{
  content:"";flex:0 0 auto;margin:7px 0 0 auto;width:9px;height:9px;
  border-right:2px solid var(--text-3);border-bottom:2px solid var(--text-3);
  transform:rotate(45deg);
}
.faq-ac[open] > summary::after{transform:rotate(-135deg);margin-top:11px}
.faq-ac > div{padding:0 22px 20px}
.faq-ac p{margin:0;font-size:16px;line-height:1.85;color:var(--text-2)}
.faq-ac p + p{margin-top:12px}
/* 灰底區塊上的卡片不用框，白底自己就是界線 */
.section--band .faq-ac{border-color:transparent}

/* ---------- /switch Hero 的費用對照卡 ---------- */
.lp-feecard{position:relative;z-index:1;background:var(--paper);border-radius:14px;padding:26px 28px}
.lp-feecard > p:first-child{margin:0 0 12px;font-size:14px;color:var(--text-3)}
.lp-feerow{margin:0 0 8px;display:flex;justify-content:space-between;gap:16px;font-size:16px;color:var(--text-3);text-decoration:line-through}
.lp-feesum{
  margin:12px 0 0;padding-top:14px;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:baseline;
}
.lp-feesum b{font-size:16px;font-weight:700;color:var(--ink)}
.lp-feesum strong{font-size:26px;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums}

/* ---------- /switch 的年費試算 ----------
   三個欄位、一個結果。純前端算，沒有送出，所以不用 form。 */
.calc{display:flex;flex-wrap:wrap;gap:24px}
.calc-form{flex:1 1 380px;min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:30px 32px 32px}
.calc-form .field:last-of-type{margin-bottom:0}
.calc-form .notice{margin-top:20px}
.calc-out{
  flex:1 1 380px;min-width:0;
  background:var(--paper);border:2px solid var(--accent);border-radius:16px;
  padding:30px 32px 32px;box-shadow:var(--shadow-accent);
  display:flex;flex-direction:column;gap:14px;justify-content:center;
}
.calc-line{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:baseline}
.calc-line span{font-size:16px;color:var(--text-2)}
.calc-line b{font-size:26px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.calc-save{margin-top:2px;padding-top:16px;border-top:1px solid var(--line)}
.calc-save p{margin:0;font-size:16px;font-weight:700;color:var(--ink)}
.calc-save strong{display:block;margin:2px 0 0;font-size:46px;line-height:1.2;font-weight:900;color:var(--accent);font-variant-numeric:tabular-nums}
.calc-save .calc-none{font-size:16px;font-weight:400;line-height:1.85;color:var(--text-2)}
.calc-out .btn{margin-top:4px;width:100%}

/* ---------- /switch 的「市集 vs 官網」三卡 ---------- */
.vs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.vs-card{
  background:var(--lp-purple-bg);border-radius:28px;padding:32px 28px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:18px;
}
.vs-card--cust{background:#e4f3f7}
.vs-card--brand{background:#e9f3fc}
.vs-card img{width:150px;height:150px;object-fit:contain}
.vs-tag{
  display:inline-flex;align-items:center;height:32px;padding:0 20px;border-radius:999px;
  background:var(--lp-purple);color:#fff;font-size:16px;font-weight:900;letter-spacing:2px;
}
.vs-card--cust .vs-tag{background:var(--lp-blue)}
.vs-card--brand .vs-tag{background:var(--accent)}
.vs-old{margin:0;display:flex;gap:8px;align-items:center;font-size:16px;color:var(--text-3)}
.vs-old span{text-decoration:line-through}
.vs-new{
  margin:0;width:100%;padding:16px 18px;background:var(--paper);border-radius:16px;
  display:flex;gap:10px;align-items:center;justify-content:center;
  font-size:19px;font-weight:900;line-height:1.5;color:var(--ink);
  box-shadow:0 4px 0 #dcd3ff;
}
.vs-card--cust .vs-new{box-shadow:0 4px 0 #bfe0e9}
.vs-card--brand .vs-new{box-shadow:0 4px 0 #bfdcf2}
/* 勾的顏色跟著卡片。SVG 用 currentColor，色值寫在這裡。 */
.vs-new svg{color:var(--lp-purple)}
.vs-card--cust .vs-new svg{color:var(--lp-blue)}
.vs-card--brand .vs-new svg{color:var(--accent)}

/* ---------- /offline 的白卡清單 ---------- */
.lp-notes{display:flex;flex-direction:column;gap:18px}
.lp-note{
  background:var(--paper);border-radius:20px;padding:22px 24px;
  display:flex;gap:18px;align-items:flex-start;box-shadow:var(--shadow-card);
}
/* 第二張往內縮，三張才不會像一疊一樣齊。手機版還原，見檔尾斷點。 */
.lp-note--in{margin-left:32px}
.lp-note--in-right{margin-right:32px}
.lp-note-no{
  flex:0 0 52px;height:52px;border-radius:16px;background:var(--accent);color:#fff;
  font-size:20px;font-weight:900;display:flex;align-items:center;justify-content:center;
  transform:rotate(-6deg);
}
.lp-note--b .lp-note-no{background:var(--lp-blue);transform:rotate(5deg)}
.lp-note--c .lp-note-no{background:var(--lp-green);transform:rotate(-4deg)}
.lp-note-ico{
  flex:0 0 56px;height:56px;border-radius:50%;background:var(--lp-green-bg);
  display:flex;align-items:center;justify-content:center;
}
.lp-note--b .lp-note-ico{background:var(--lp-accent-bg)}
.lp-note--c .lp-note-ico{background:var(--lp-blue-bg)}
.lp-note h3{margin:0 0 4px;font-size:21px;line-height:1.5;font-weight:900}
.lp-note p{margin:0;font-size:17px;line-height:1.8;color:var(--text-2)}
.lp-note .tag{vertical-align:middle;background:var(--ink-deep);color:#fff}

/* ---------- /offline 的裝飾相框 ---------- */
.lp-frame{position:relative;flex:1 1 420px;min-width:0}
.lp-frame-pic{position:relative;z-index:1;border-radius:26px;overflow:hidden;aspect-ratio:1/1}
.lp-frame-pic img{width:100%;height:100%;object-fit:cover}
.lp-frame--tall .lp-frame-pic{aspect-ratio:4/5;border:6px solid var(--paper)}
.lp-frame-tile{position:absolute;z-index:0;border-radius:26px}
.lp-frame--peach .lp-frame-tile{top:-18px;left:-18px;width:62%;height:62%;background:#fbeec0}
.lp-frame--mint .lp-frame-tile{bottom:-18px;right:-18px;width:62%;height:62%;background:#bdebcd}
.lp-frame--tall .lp-frame-tile{top:18px;left:18px;right:-14px;bottom:-14px;width:auto;height:auto;background:var(--accent);opacity:.85;transform:rotate(3deg)}
/* 點點圓。repeating-radial-gradient 比排 36 個 span 省事，純裝飾。 */
.lp-frame-dots{
  position:absolute;z-index:0;width:120px;height:120px;border-radius:50%;
  background:repeating-radial-gradient(circle,#f3c323 0 3px,transparent 3px 14px);opacity:.8;
}
.lp-frame--peach .lp-frame-dots{bottom:-18px;right:-18px}
.lp-frame--mint .lp-frame-dots{top:-16px;left:-16px;width:110px;height:110px;background:repeating-radial-gradient(circle,#6ee7b7 0 3px,transparent 3px 14px);opacity:.9}
.lp-frame-chip{
  position:absolute;z-index:2;background:var(--paper);border-radius:16px;padding:12px 18px;
  display:flex;gap:10px;align-items:center;transform:rotate(-3deg);
  box-shadow:0 10px 28px rgba(24,55,78,.16);
}
.lp-frame-chip--out{left:-24px;bottom:36px}
.lp-frame-chip--in{left:24px;bottom:28px}
.lp-frame-chip b{display:block;font-size:15px;font-weight:700;color:var(--ink)}
.lp-frame-chip span{display:block;font-size:13px;color:var(--text-3)}
.lp-chip-dot{
  flex:0 0 36px;height:36px;border-radius:50%;background:var(--lp-green);
  display:flex;align-items:center;justify-content:center;
}
.lp-bubble{
  position:absolute;z-index:2;top:28px;right:24px;
  background:var(--ink-deep);color:#fff;border-radius:18px 18px 4px 18px;
  padding:12px 18px;font-size:17px;font-weight:700;transform:rotate(3deg);
  box-shadow:0 10px 24px rgba(35,38,58,.25);
}

/* ---------- 斷點 ---------- */
@media (max-width:1023px){
  .lp-stuck,.vs,.lp-numcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lp-hero h1{font-size:42px}
}

@media (max-width:767px){
  .lp-hero{padding:44px 0 48px}
  .lp-hero > .wrap{gap:36px}
  .lp-hero h1{font-size:32px}
  .lp-hero-lead{font-size:17px}
  .lp-stuck,.vs,.lp-numcards{grid-template-columns:1fr}
  .lp-stuck-card,.vs-card{padding:24px 22px;border-radius:20px}
  .lp-numcard{padding:24px 22px}
  .lp-feecard,.calc-form,.calc-out{padding:24px 22px 26px}
  .calc-save strong{font-size:34px}
  /* 浮在圖上的小物在窄螢幕會壓到內容：大的收掉，印章縮小留著——
     「交易 0 抽成」是這一頁的主訴求，不能不見。 */
  .lp-float,.lp-blob{display:none}
  .lp-stamp{width:88px;height:88px;top:-6px;right:-4px}
  .lp-stamp b{font-size:24px}
  .lp-stamp span{font-size:12px}
  /* 相框上的小卡與對話框改成跟在圖後面的一般區塊 */
  .lp-frame-chip,.lp-bubble{position:static;transform:none;margin:14px 0 0}
  .lp-frame-chip{box-shadow:var(--shadow-card)}
  .lp-bubble{display:inline-block;box-shadow:none}
  .lp-frame-dots{display:none}
  /* Hero 相框後面那塊赭色：桌機時刻意凸出框外 14px，手機上那 14px 會
     被 .lp-hero 的 overflow:hidden 裁成螢幕邊緣的一條橘線，所以收回來。 */
  .lp-frame--tall .lp-frame-tile{right:0;bottom:-10px;transform:rotate(2deg)}
  .lp-note{padding:20px 20px;border-radius:16px}
  .lp-note--in,.lp-note--in-right{margin-left:0;margin-right:0}
  .lp-note h3{font-size:19px}
  .lp-note p{font-size:16px}
}
