/* ============================================================
   book.css — หน้าตาของ "เนื้อหาหนังสือ" (หน้าอ่าน + สารบัญ + แบบประเมิน)
   ------------------------------------------------------------
   แยกจาก app.css เพราะหนังสือแต่ละเล่มเปลี่ยนธีมได้อิสระ
   เช่น เล่มทางการ / เล่มสดใส / เล่มอบอุ่น

   วิธีทำงาน
     1. ไฟล์นี้กำหนด "ค่าเริ่มต้น" ของทุกเล่มไว้ที่ :root
        (วางไว้ที่ :root เพื่อให้ themeEditor.js สแกนเจอและปรับสดได้)
     2. ธีมของแต่ละเล่มเก็บเป็น css ใน IndexedDB แล้ว EditorTheme
        ฉีดเข้ามาเป็น <style> โดยเขียนทับเฉพาะตัวแปรใน .book-scope
        เช่น  .book-scope{ --book-accent:#3B4C7A; --book-page-bg:#fff; }
     3. ทุกหน้าที่แสดงเนื้อหาหนังสือ ต้องครอบด้วย class .book-scope
        (book.html ครอบที่ <section class="reader book-scope">,
         bookEditor ครอบที่พื้นที่แก้ไขและ iframe พรีวิว)

   หมายเหตุ: สีประจำ "โหมด" ของแบบประเมิน (--rust/--amber/--teal/--indigo)
   ยังอยู่ใน app.css เพราะ js บางตัว (quizRender / resultCard) อ้างถึงโดยตรง
   ============================================================ */

:root{
  /* ---- พื้นและตัวอักษร ---- */
  --book-page-bg:      #EFE8D6;   /* พื้นหลังหน้าอ่านทั้งหน้า */
  --book-surface:      #F7F3E9;   /* กล่อง/การ์ดในเนื้อหา */
  --book-border:       #E4DAC2;
  --book-ink-strong:   #1B2333;   /* หัวเรื่อง / ตัวหนา */
  --book-ink:          #232E44;   /* เนื้อความ */
  --book-ink-mid:      #3A4763;
  --book-ink-soft:     #5C667C;   /* คำโปรย / คำอธิบาย */

  /* ---- กล่องพื้นเข้ม: แถบสารบัญ, การ์ดปลดล็อก, ปุ่มไปบทต่อไป ---- */
  --book-invert-bg:    #1B2333;
  --book-invert-text:  #F7F3E9;

  /* ---- สีเน้นของเล่ม ---- */
  --book-accent:       #C0904E;
  --book-accent-deep:  #9C6F35;
  --book-ok:           #3E7C55;
  --book-warn:         #B3472B;

  /* ---- ตัวอักษร ---- */
  --book-font:         'Sarabun', system-ui, sans-serif;
  --book-heading-font: var(--book-font);
  --book-font-mono:    'JetBrains Mono', ui-monospace, monospace;
  --book-text-size:    16px;
  --book-line-height:  1.95;

  /* ---- รูปทรง ---- */
  --book-radius-s:     6px;
  --book-radius-m:     12px;
  --book-radius-l:     20px;
  --book-shadow-card:  0 1px 2px rgba(27,35,51,.06), 0 8px 24px -12px rgba(27,35,51,.28);
  --book-shadow-pop:   0 20px 60px -20px rgba(27,35,51,.45);
  --book-toc-w:        296px;

  /* ★ ความกว้างคอลัมน์อ่านบนจอใหญ่
     ตั้งให้เท่ากับความกว้างของมือถือรุ่นที่คนใช้กันมากที่สุด (390-430px)
     เพื่อให้สิ่งที่เห็นบนเดสก์ท็อป = สิ่งที่คนส่วนใหญ่เห็นบนมือถือจริง
     อยากได้กว้างกว่านี้ เปลี่ยนค่าเดียวตรงนี้พอ */
  --book-read-w:       430px;

  /* ความสูงแถบบน ใช้คำนวณตำแหน่งสารบัญที่ปักไว้บนจอใหญ่ */
  --book-topbar-h:     60px;
}

/* ============================================================
   3. READER SHELL
   ============================================================ */
.reader{display:block}
.lib.is-hidden{display:none}
/* ★ ฐานของไฟล์นี้คือ "มือถือ" ทั้งหมด (mobile first)
   จอใหญ่ค่อยไปเขียนทับใน @media (min-width:861px) ท้ายไฟล์
   เขียนแบบนี้เพราะคนอ่านหนังสือส่วนใหญ่อ่านบนมือถือ
   โค้ดเส้นทางหลักจึงควรเป็นของมือถือ ไม่ใช่ข้อยกเว้น */
.reader-layout{display:block; min-height:calc(100vh - var(--book-topbar-h)); background:transparent}

/* ------------------------------------------------------------
   .book-scope = กล่องเนื้อหาหนังสือ และเป็น "หน้ากระดาษ" ของเล่ม
   ธีมของเล่มที่เขียนว่า body{ ... } จะถูกแปลงมาอยู่ตรงนี้
   จึงเปลี่ยนพื้น สี ขนาดตัวอักษรของทั้งเล่มได้จากที่เดียว
   ------------------------------------------------------------ */
.book-scope{
  background:var(--book-page-bg);
  color:var(--book-ink);
  font-family:var(--book-font);
  font-size:var(--book-text-size);
  line-height:var(--book-line-height);
}

.toc-backdrop{display:none; position:fixed; inset:0; background:color-mix(in srgb, var(--book-ink-strong) 55%, transparent); z-index:45}
.toc-backdrop.is-open{display:block}

/* สารบัญบนมือถือ = ลิ้นชักที่เลื่อนออกมาจากขอบซ้าย
   ซ่อนไว้นอกจอด้วย translateX(-100%) แล้วเลื่อนเข้ามาเมื่อได้คลาส is-open
   ใช้ transform ไม่ใช่ left เพราะ transform ไม่ทำให้ layout คำนวณใหม่ ลื่นกว่ามาก */
.toc-panel{
  position:fixed; left:0; top:0; bottom:0; z-index:46;
  width:min(var(--book-toc-w), 86vw);
  background:var(--book-invert-bg); color:var(--book-invert-text);
  padding:16px 16px calc(32px + env(safe-area-inset-bottom));
  overflow-y:auto; overscroll-behavior:contain;
  transform:translateX(-100%); transition:transform .25s ease;
  box-shadow:var(--book-shadow-pop);
}
.toc-panel.is-open{transform:translateX(0)}

/* จอเล็กบางเครื่องปิดอนิเมชันไว้ ให้เคารพการตั้งค่านั้น */
@media (prefers-reduced-motion:reduce){
  .toc-panel{transition:none}
}
.toc-book-title{font-size:17px; font-weight:700; line-height:1.4; margin:0 0 3px}
.toc-book-sub{font-size:12.5px; color:color-mix(in srgb, var(--book-invert-text) 55%, transparent); margin:0 0 20px; font-style:normal}
.toc-section-label{font-family:var(--book-font-mono); font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:color-mix(in srgb, var(--book-invert-text) 40%, transparent); margin:22px 4px 10px}
.toc-list{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px}
.toc-item{
  display:flex; align-items:center; gap:10px;
  width:100%; text-align:left; background:color-mix(in srgb, var(--book-invert-text) 4%, transparent); color:var(--book-invert-text);
  border:1px solid color-mix(in srgb, var(--book-invert-text) 7%, transparent); border-left:3px solid var(--accent,transparent);
  border-radius:0 var(--book-radius-s) var(--book-radius-s) 0;
  padding:10px 12px; cursor:pointer; font-size:13.5px; line-height:1.4;
  position:relative;
  text-decoration: none;
}
.toc-item:hover{background:color-mix(in srgb, var(--book-invert-text) 8%, transparent)}
.toc-item.is-active{background:var(--book-surface); color:var(--book-ink-strong); border-left-color:var(--accent,var(--book-accent))}
.toc-item .idx{font-family:var(--book-font-mono); font-size:10.5px; opacity:.55; flex-shrink:0; width:16px}
.toc-item .lbl{flex:1}
.toc-item .lock-ic{width:13px;height:13px; opacity:.55; flex-shrink:0}
.toc-item.is-active .lock-ic{opacity:.4}
/* ปุ่มปิดลิ้นชัก โผล่เฉพาะบนมือถือ (จอใหญ่สารบัญปักอยู่แล้ว ไม่ต้องปิด) */
.toc-close{
  display:flex; margin-left:auto; width:30px; height:30px;
  align-items:center; justify-content:center;
  background:color-mix(in srgb, var(--book-invert-text) 6%, transparent);
  border:1px solid color-mix(in srgb, var(--book-invert-text) 16%, transparent);
  border-radius:8px; color:var(--book-invert-text); cursor:pointer;
}
.toc-top-row{display:flex; align-items:center; margin-bottom:6px}

.read-pane{
  min-width:0; display:flex; justify-content:center;
  padding:0 16px calc(100px + env(safe-area-inset-bottom));
}
.read-article{width:100%; padding-top:28px; animation:fadeUp .35s ease}
@keyframes fadeUp{from{opacity:0; transform:translateY(8px)} to{opacity:1; transform:translateY(0)}}

.read-kicker{display:flex; align-items:center; gap:10px; margin-bottom:14px}
.read-kicker .eyebrow{color:var(--accent,var(--book-accent-deep))}
.book-scope .read-kicker .badge-free{font-family:var(--book-font-mono); font-size:10px; letter-spacing:.08em; color:var(--book-ok); border:1px solid rgba(62,124,85,.4); background:rgba(62,124,85,.1); padding:2px 8px; border-radius:999px}
.read-h1{font-family:var(--book-heading-font); font-size:clamp(26px,4.4vw,36px); line-height:1.3; font-weight:700; margin:0 0 16px; color:var(--book-ink-strong)}
.read-h1 .accentbar{display:block; width:44px; height:4px; border-radius:2px; background:var(--accent,var(--book-accent)); margin-bottom:16px}
.read-dek{font-size:15.5px; color:var(--book-ink-soft); line-height:1.8; margin:0 0 30px}

.read-body{ }   /* สี/ขนาด/ระยะบรรทัด สืบทอดมาจาก .book-scope ด้านบน */
.read-body h2{font-family:var(--book-heading-font); font-size:21px; font-weight:700; margin:40px 0 14px; color:var(--book-ink-strong); padding-top:6px}
.read-body h3{font-family:var(--book-heading-font); font-size:17.5px; font-weight:700; margin:26px 0 10px; color:var(--accent,var(--book-accent-deep))}
.read-body p{margin:0 0 16px}
.read-body ul{margin:0 0 18px; padding-left:0; list-style:none}
.read-body ul li{position:relative; padding-left:38px; margin-bottom:9px}
.read-body ul li::before{content:"▪️"; position:absolute; left:16px; color:var(--accent,var(--book-accent)); font-weight:700}
.read-body strong{color:var(--book-ink-strong); font-weight:700}
.read-quote{
  margin:26px 0; padding:16px 20px; background:var(--book-surface);
  border-left:3px solid var(--accent,var(--book-accent)); border-radius:0 var(--book-radius-s) var(--book-radius-s) 0;
  font-weight:600; color:var(--book-ink-strong); font-size:16px;
}
.read-divider{border:none; border-top:1px solid var(--book-accent-deep); margin:38px 0}
.book-scope .read-article .read-cta{
  margin:34px 0; padding:18px 20px; border-radius:var(--book-radius-m);
  background:var(--book-invert-bg); color:var(--book-invert-text);
  display:flex; align-items:center; gap:14px; cursor:pointer; border:none; width:100%; text-align:left;
  text-decoration: none;
}
.book-scope .read-article .read-cta .ic{width:34px;height:34px; border-radius:8px; background:var(--book-accent); flex-shrink:0; display:flex; align-items:center; justify-content:center}
.book-scope .read-article .read-cta .ic svg{width:17px;height:17px; color:var(--book-ink-strong)}
.book-scope .read-article .read-cta .tx b{display:block; font-size:14px; font-weight:700}
.book-scope .read-article .read-cta .tx span{display:block; font-size:12px; color:color-mix(in srgb, var(--book-invert-text) 60%, transparent); margin-top:2px}
.read-nextbook{margin-top:60px; padding-top:26px; display:flex; gap:10px; flex-wrap:wrap}
.book-scope .read-article .btn-primary,
.book-scope .read-article .btn-ghost{
  font-family:var(--book-font); font-size:13.5px; font-weight:700; border-radius:999px; cursor:pointer; padding:11px 20px;
  border:1px solid transparent; display:inline-flex; align-items:center; gap:7px;
}
.book-scope .read-article .btn-primary{background:var(--book-invert-bg); color:var(--book-invert-text)}
.book-scope .read-article .btn-ghost{background:transparent; color:var(--book-ink-strong); border-color:var(--book-border)}

/* ============================================================
   4. PAYWALL / LOCK
   ============================================================ */
.lock-wrap{position:relative}
.lock-wrap.is-locked .lock-fade{
  max-height:290px; overflow:hidden; position:relative;
}
.lock-wrap.is-locked .lock-fade::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:160px;
  background:linear-gradient(to bottom, transparent, var(--book-page-bg) 92%);
}
.lock-card{
  margin-top:-40px; position:relative; z-index:2;
  background:var(--book-invert-bg); color:var(--book-invert-text); border-radius:var(--book-radius-l);
  padding:30px 26px; text-align:center; box-shadow:var(--book-shadow-pop);
}
.lock-card .lock-ring{
  width:52px;height:52px;border-radius:50%; margin:0 auto 16px;
  background:linear-gradient(150deg,var(--book-accent),var(--book-accent-deep));
  display:flex; align-items:center; justify-content:center;
}
.lock-card .lock-ring svg{width:22px;height:22px; color:var(--book-ink-strong)}
.book-scope .lock-card h3{font-size:19px; margin:0 0 8px; font-weight:700}
.book-scope .lock-card p{font-size:13.5px; color:color-mix(in srgb, var(--book-invert-text) 65%, transparent); margin:0 0 22px; line-height:1.7}
.lock-plans{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-bottom:14px}
.lock-plan{
  background:color-mix(in srgb, var(--book-invert-text) 5%, transparent); border:1px solid color-mix(in srgb, var(--book-invert-text) 16%, transparent);
  border-radius:var(--book-radius-m); padding:14px 18px; min-width:130px; cursor:pointer; text-align:center;
}
.lock-plan.is-picked{border-color:var(--book-accent); background:rgba(192,144,78,.14)}
.book-scope .lock-plan .p-name{font-size:12px; font-family:var(--book-font-mono); letter-spacing:.05em; color:var(--book-accent); text-transform:uppercase}
.lock-plan .p-price{font-size:17px; font-weight:700; margin-top:4px}
.lock-plan .p-note{font-size:11px; color:color-mix(in srgb, var(--book-invert-text) 50%, transparent); margin-top:2px}
.book-scope .read-article .lock-btn{
  width:100%; background:var(--book-accent); color:var(--book-ink-strong); border:none; border-radius:999px;
  padding:13px 18px; font-weight:700; font-size:14px; cursor:pointer; font-family:var(--book-font);
}
.book-scope .read-article .lock-fine{font-size:11px; color:color-mix(in srgb, var(--book-invert-text) 40%, transparent); margin-top:12px}
.lock-inline-note{display:flex; align-items:center; gap:6px; justify-content:center; font-size:11.5px; color:color-mix(in srgb, var(--book-invert-text) 55%, transparent); margin-top:10px}

/* ============================================================
   5. QUIZ / ASSESSMENT
   ============================================================ */
.quiz-intro{background:var(--book-surface); border-radius:var(--book-radius-m); padding:18px 20px; margin-bottom:28px; border:1px solid var(--book-border)}
.quiz-intro p{margin:0 0 8px; font-size:14px; color:var(--book-ink-soft); line-height:1.8}
.quiz-intro p:last-child{margin-bottom:0}
.quiz-progress-wrap{
  position:sticky; top:60px; z-index:10; background:var(--book-page-bg);
  padding:12px 0 16px; margin-bottom:8px;
}
.quiz-progress-bar{height:6px; border-radius:999px; background:var(--book-border); overflow:hidden}
.quiz-progress-fill{height:100%; background:var(--book-accent); border-radius:999px; width:0%; transition:width .25s ease}
.quiz-progress-txt{font-family:var(--book-font-mono); font-size:11px; color:var(--book-ink-soft); margin-top:6px; display:flex; justify-content:space-between}

.quiz-card{background:var(--book-surface); border:1px solid var(--book-border); border-radius:var(--book-radius-m); padding:20px; margin-bottom:16px}
.quiz-card.is-balanced{border-color:var(--book-ok)}
.quiz-card .q-head{display:flex; gap:10px; align-items:baseline; margin-bottom:14px}
.quiz-card .q-num{font-family:var(--book-font-mono); font-weight:700; color:var(--book-accent); font-size:13px}
.quiz-card .q-title{font-size:15.5px; font-weight:700; color:var(--book-ink-strong); line-height:1.5}
.quiz-opt{display:flex; align-items:center; gap:12px; padding:9px 0}
.quiz-opt + .quiz-opt{border-top:1px dashed var(--book-border)}
.quiz-opt .o-text{margin-left:12px; flex:1; font-size:13.5px; color:var(--book-ink); line-height:1.6}
.quiz-opt .o-input{
  width:56px; text-align:center; font-family:var(--book-font-mono); font-weight:700; font-size:14px;
  border:1px solid var(--book-border); border-radius:var(--book-radius-s); padding:7px 4px; background:#fff; color:var(--book-ink-strong);
}
.quiz-opt .o-input:focus{border-color:var(--book-accent-deep)}
.quiz-sum{
  display:flex; justify-content:flex-end; align-items:center; gap:8px; margin-top:12px; padding-top:12px;
  border-top:1px solid var(--book-border); font-family:var(--book-font-mono); font-size:12px; color:var(--book-ink-soft);
}
.quiz-sum b{font-size:14px; color:var(--book-warn)}
.quiz-card.is-balanced .quiz-sum b{color:var(--book-ok)}

.quiz-cta{position:sticky; bottom:14px; z-index:10; display:flex; justify-content:center; margin-top:20px}
.quiz-cta button{box-shadow:var(--book-shadow-pop); font-size:14.5px; padding:14px 30px}
.quiz-cta button:disabled{opacity:.4; cursor:not-allowed}

.quiz-result{background:var(--book-invert-bg); color:var(--book-invert-text); border-radius:var(--book-radius-l); padding:28px 24px; margin-top:10px}
.quiz-result h3{font-size:19px; margin:0 0 6px}
.quiz-result .sub{font-size:13px; color:color-mix(in srgb, var(--book-invert-text) 60%, transparent); margin:0 0 26px; line-height:1.7}
.quiz-bars{display:flex; gap:16px; align-items:flex-end; height:150px; margin-bottom:8px}
.quiz-bar-col{flex:1; display:flex; flex-direction:column; align-items:center; gap:8px; height:100%; justify-content:flex-end}
.quiz-bar-col .bar{width:100%; max-width:52px; border-radius:6px 6px 0 0; transition:height .5s cubic-bezier(.2,.8,.2,1)}
.quiz-bar-col .val{font-family:var(--book-font-mono); font-weight:700; font-size:14px}
.quiz-bar-col .tag{font-family:var(--book-font-mono); font-size:11px; color:color-mix(in srgb, var(--book-invert-text) 55%, transparent)}
.quiz-result-note{
  display:flex; gap:12px; align-items:flex-start; margin-top:22px; padding:16px;
  background:color-mix(in srgb, var(--book-invert-text) 5%, transparent); border:1px solid color-mix(in srgb, var(--book-invert-text) 14%, transparent); border-radius:var(--book-radius-m);
}
.quiz-result-note svg{width:18px;height:18px; flex-shrink:0; margin-top:1px; color:var(--book-accent)}
.quiz-result-note p{margin:0; font-size:13px; line-height:1.75; color:color-mix(in srgb, var(--book-invert-text) 75%, transparent)}
.quiz-result-note button{margin-top:10px}

.quiz-bar-opt { margin-bottom: 14px; }
.quiz-bar-opt .o-text { display:block; font-size: 14px; margin-bottom: 6px; }
.quiz-bar-track {
    position: relative;
    height: 34px;
    border-radius: 10px;
    background: rgba(0,0,0,.06);
    overflow: hidden;
    touch-action: pan-y; /* ปล่อยให้เลื่อนหน้าจอแนวตั้งผ่านได้ตามปกติ */
    cursor: pointer;
}

.quiz-bar-track.is-active {
    outline: 2px solid var(--accent, #6366f1);
    outline-offset: 2px;
}

.quiz-bar-fill {
    position: absolute;
    top: 0; left: 0; bottom: 0;
    background: var(--accent, #6c5ce7);
    border-radius: 10px;
    width: 25%;
    transition: width .08s linear;
    pointer-events: none;
}
.quiz-bar-range {
    position: absolute;
    top: 0; left: 0;
    width: 100%; height: 100%;
    margin: 0;
    opacity: 0;
    cursor: grab;
    -webkit-appearance: none;
    appearance: none;
}

/* thumb ต้องมีขนาดเล็ก ไม่ใช่เต็มความกว้าง ไม่งั้น browser คำนวณตำแหน่งลากผิด แล้วบาร์จะกระโดดไปสุดทางเสมอ */
.quiz-bar-range::-webkit-slider-runnable-track { -webkit-appearance: none; background: transparent; }
.quiz-bar-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px; height: 34px;
    background: transparent;
}
.quiz-bar-range::-moz-range-track { background: transparent; border: none; }
.quiz-bar-range::-moz-range-thumb { width: 24px; height: 34px; border: none; background: transparent; }
.quiz-card.is-touched { opacity: 1; }

/* ก่อนผู้ใช้ลากบาร์ */
.quiz-bar-fill.is-pristine{
    background:#b8b8b8 !important;
}



/* ============================================================
   RESPONSIVE — เฉพาะส่วนเนื้อหาหนังสือ
   ============================================================ */
/* ------------------------------------------------------------
   จอใหญ่ — เขียนทับฐานของมือถือ
   1. สารบัญเลิกเป็นลิ้นชัก กลับมาปักค้างไว้ข้างซ้ายตลอด
   2. คอลัมน์อ่านถูกบีบให้เท่าความกว้างมือถือ (--book-read-w)
      สิ่งที่เห็นบนเดสก์ท็อปจึงเท่ากับสิ่งที่คนส่วนใหญ่เห็นบนมือถือ
      และเมื่อเปิด inspect แล้วจอแคบลงต่ำกว่า 861px
      หน้าจะสลับไปโหมดมือถือให้เองอัตโนมัติ
   ------------------------------------------------------------ */
@media (min-width:861px){

  /* ★ วางสารบัญกับคอลัมน์อ่านเป็น "ก้อนเดียว" แล้วจัดก้อนนั้นให้อยู่กลางจอ
     ของเดิมจัดกลางเฉพาะคอลัมน์อ่านในพื้นที่ที่เหลือหลังหักสารบัญ
     ทำให้ทั้งหน้าดูเบี้ยวไปทางขวาบนจอกว้าง
     ความกว้างของก้อน = สารบัญ + คอลัมน์อ่าน + ระยะขอบสองข้าง */
  /* พื้นรอบนอกเข้มกว่าหน้ากระดาษนิดหน่อย ให้ "ตัวเล่ม" ดูลอยขึ้นมาเป็นชิ้นเดียว
     ไม่ใช่สารบัญสีเข้มลอยเท้งเต้งอยู่กลางพื้นว่าง
     สีคำนวณจากสีของธีมเอง ธีมเปลี่ยนเมื่อไหร่ พื้นรอบนอกเปลี่ยนตาม */
  .reader.book-scope{
    background:color-mix(in srgb, var(--book-ink-strong) 8%, var(--book-page-bg));
  }

  .reader-layout{
    display:flex;
    max-width:calc(var(--book-toc-w) + var(--book-read-w) + 140px);
    margin:0 auto;
    background:var(--book-page-bg);
    box-shadow:var(--book-shadow-card);
    border-radius:var(--book-radius-m);
  }

  /* มุมโค้งของสารบัญต้องรับกับมุมของตัวเล่ม
     (ใช้ border-radius ไม่ใช้ overflow:hidden เพราะจะทำให้ sticky ไม่ทำงาน) */
  .toc-panel{border-radius:var(--book-radius-m) 0 0 var(--book-radius-m)}

  .toc-panel{
    position:sticky; top:var(--book-topbar-h); bottom:auto; z-index:1;
    width:var(--book-toc-w); flex-shrink:0;
    height:calc(100vh - var(--book-topbar-h));
    padding:22px 16px 32px;
    transform:none; transition:none; box-shadow:none;
  }

  /* บนจอใหญ่ไม่มีลิ้นชักให้ปิด ปุ่มพวกนี้จึงไม่ต้องมี */
  .toc-close,
  .toc-top-row{display:none}
  .toc-backdrop.is-open{display:none}

  .read-pane{flex:1; padding:0 34px 120px}

  /* เส้นคั่นบาง ๆ ระหว่างสารบัญกับเนื้อหา ช่วยให้ก้อนที่จัดกลางดูเป็นชิ้นเดียว */
  .toc-panel{border-right:1px solid color-mix(in srgb, var(--book-invert-text) 10%, transparent)}

  /* ★ หัวใจของข้อนี้ — คอลัมน์อ่านกว้างเท่ามือถือ */
  .read-pane .read-article{max-width:var(--book-read-w); padding-top:40px}
}

/* จอเล็กมาก ๆ บีบของที่ยังกินที่อยู่ให้เล็กลงอีกนิด */
@media (max-width:480px){
  .lock-plans{flex-direction:column}
  .quiz-bars{height:120px}
  .quiz-opt .o-text{font-size:13px}
  .read-pane{padding-left:14px; padding-right:14px}
}

/* ============================================================
   ปรับเล็กน้อยสำหรับหน้าอ่านที่วาดด้วย js/bookReader.js
   ============================================================ */
/* ปุ่มปลดล็อกใช้ <a> จึงต้องบังคับให้เป็นบล็อกและไม่มีเส้นใต้ */
.book-scope .read-article a.lock-btn{display:block; text-align:center; text-decoration:none; line-height:1.4}

/* กล่องไอคอนของปุ่ม "ต่อไป" ใส่ได้ทั้ง svg และตัวอักษร */
.book-scope .read-article .read-cta .ic{color:var(--book-ink-strong); font-size:16px; font-weight:700}


/* ป้ายเตือนตอนอ่านบทที่ยังล็อกอยู่ในมุมเจ้าของ (js/previewMode.js)
   เขียนเป็น .book-scope .read-article เพื่อให้ชนะธีมของเล่ม เหมือนกฎอื่นในไฟล์นี้ */
.book-scope .read-article .read-owner-note{
  display:flex; align-items:center; gap:8px;
  margin:0 0 18px; padding:10px 14px;
  border-radius:var(--book-radius-s);
  background:color-mix(in srgb, var(--book-warn, #C4551F) 12%, transparent);
  border-left:3px solid var(--book-warn, #C4551F);
  font-size:12.5px; line-height:1.65; color:var(--book-ink-soft);
}
