/* =========================================================
   はじめてのタイの歴史 — Learning App
   ========================================================= */

/* ---------- Tokens ---------- */
:root{
  --bg:          #f6f3ec;
  --bg-soft:     #efeae0;
  --surface:     #fffdf8;
  --surface-2:   #f9f5ec;
  --line:        #e0d8c8;
  --line-soft:   #ece5d7;
  --ink:         #241f18;
  --ink-2:       #5b5245;
  --ink-3:       #8b8171;

  --gold:        #b08327;
  --gold-soft:   #f3e7c8;
  --teal:        #0f6b63;
  --teal-soft:   #d9ece9;
  --crimson:     #a32b2b;
  --crimson-soft:#f7e0dd;
  --indigo:      #3c4d8c;
  --indigo-soft: #e0e5f6;
  --plum:        #7a3b70;
  --plum-soft:   #f2e2ef;

  --accent:      var(--teal);
  --accent-ink:  #ffffff;

  --r-s: 8px;  --r-m: 12px;  --r-l: 18px;  --r-xl: 26px;
  --sh-1: 0 1px 2px rgba(40,30,10,.06), 0 2px 8px rgba(40,30,10,.05);
  --sh-2: 0 4px 12px rgba(40,30,10,.08), 0 12px 32px rgba(40,30,10,.07);
  --sh-3: 0 20px 60px rgba(40,30,10,.18);

  --sb-w: 268px;
  --maxw: 860px;

  --f-sans: "Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic UI","Yu Gothic",
            "Noto Sans JP","Meiryo",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-serif:"Hiragino Mincho ProN","Yu Mincho","YuMincho","Noto Serif JP",serif;
  --f-disp: "Shippori Mincho","Hiragino Mincho ProN","Yu Mincho","YuMincho",serif;
  --f-thai: "Thonburi","Leelawadee UI","Noto Sans Thai","Tahoma",sans-serif;
}

html[data-theme="dark"]{
  --bg:          #14161a;
  --bg-soft:     #191c21;
  --surface:     #1d2027;
  --surface-2:   #22262e;
  --line:        #333943;
  --line-soft:   #2a2f38;
  --ink:         #ece7dd;
  --ink-2:       #b3ab9d;
  --ink-3:       #837c70;

  --gold:        #e0b451;
  --gold-soft:   #3a3018;
  --teal:        #4fbdae;
  --teal-soft:   #14332f;
  --crimson:     #e07f77;
  --crimson-soft:#3a201d;
  --indigo:      #8ea3e8;
  --indigo-soft: #1f2540;
  --plum:        #cf9ac6;
  --plum-soft:   #33203010;
  --plum-soft:   #33202f;

  --accent:      var(--teal);
  --accent-ink:  #10231f;

  --sh-1: 0 1px 2px rgba(0,0,0,.3), 0 2px 8px rgba(0,0,0,.22);
  --sh-2: 0 4px 14px rgba(0,0,0,.35), 0 14px 36px rgba(0,0,0,.3);
  --sh-3: 0 24px 70px rgba(0,0,0,.6);
}

*{box-sizing:border-box}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:6px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{
  font-family:var(--f-sans);
  background:var(--bg); color:var(--ink);
  line-height:1.85; font-size:16px;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased;
}
img,svg{max-width:100%}
button{font:inherit;color:inherit}
a{color:var(--teal);text-underline-offset:3px}
::selection{background:var(--gold-soft);color:var(--ink)}
html[data-theme="dark"] ::selection{background:#4a3c19;color:#fff}

/* scrollbars */
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:var(--line);border-radius:99px;border:3px solid transparent;background-clip:content-box}
*::-webkit-scrollbar-track{background:transparent}

/* =========================================================
   LAYOUT
   ========================================================= */
#app{display:flex;min-height:100vh}

#sidebar{
  width:var(--sb-w); flex:0 0 var(--sb-w);
  background:var(--surface); border-right:1px solid var(--line);
  display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;overflow-y:auto;z-index:60;
}
.sb-head{display:flex;align-items:center;gap:8px;padding:18px 16px 12px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);flex:1;min-width:0}
.brand-mark{width:32px;height:32px;flex:none;display:grid;place-items:center;border-radius:9px;
  background:linear-gradient(150deg,var(--gold),#8c6417);box-shadow:var(--sh-1)}
.brand-mark svg{width:20px;height:20px;fill:#fff}
.brand-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.brand-txt b{font-size:15px;letter-spacing:.02em}
.brand-txt small{font-family:var(--f-thai);font-size:11px;color:var(--ink-3)}

.sb-progress{display:flex;align-items:center;gap:11px;margin:2px 12px 14px;padding:11px 12px;
  background:var(--surface-2);border:1px solid var(--line-soft);border-radius:var(--r-m)}
.ring-wrap{position:relative;width:44px;height:44px;flex:none;display:grid;place-items:center}
.ring{position:absolute;inset:0;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:4;stroke-linecap:round}
.ring-bg{stroke:var(--line)}
.ring-fg{stroke:var(--gold);stroke-dasharray:119.4;stroke-dashoffset:119.4;transition:stroke-dashoffset .6s cubic-bezier(.4,0,.2,1)}
#ringPct{font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}
.sb-progress-txt{min-width:0;line-height:1.4}
.sb-progress-txt b{display:block;font-size:12px}
.sb-progress-txt span{display:block;font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.sb-nav{flex:1;padding:0 10px 8px}
.sb-cap{margin:14px 8px 5px;font-size:10.5px;font-weight:800;letter-spacing:.14em;color:var(--ink-3)}
.sb-nav a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;
  text-decoration:none;color:var(--ink-2);font-size:13.5px;font-weight:600;transition:.14s}
.sb-nav a i{font-style:normal;font-size:15px;width:20px;text-align:center;filter:grayscale(.25)}
.sb-nav a:hover{background:var(--bg-soft);color:var(--ink)}
.sb-nav a.on{background:var(--teal);color:#fff;box-shadow:var(--sh-1)}
html[data-theme="dark"] .sb-nav a.on{color:var(--accent-ink)}
.sb-nav a.on i{filter:none}

.sb-foot{padding:10px;border-top:1px solid var(--line-soft);display:flex;flex-direction:column;gap:5px}
.ghost-btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:0;background:transparent;
  border-radius:8px;font-size:12.5px;color:var(--ink-2);cursor:pointer;text-align:left}
.ghost-btn:hover{background:var(--bg-soft);color:var(--ink)}
.ghost-btn.danger:hover{background:var(--crimson-soft);color:var(--crimson)}

#main{flex:1;min-width:0;display:flex;flex-direction:column}

#topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;
  padding:10px 20px;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:saturate(1.6) blur(12px);border-bottom:1px solid var(--line-soft)}
.icon-btn{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;border-radius:9px;
  display:grid;place-items:center;cursor:pointer;flex:none;font-size:14px}
.icon-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round}
.icon-btn:hover{background:var(--bg-soft)}
.search-trigger{flex:1;max-width:430px;display:flex;align-items:center;gap:9px;padding:8px 12px;
  border:1px solid var(--line);background:var(--surface);border-radius:99px;color:var(--ink-3);
  font-size:13px;cursor:pointer;text-align:left}
.search-trigger:hover{border-color:var(--gold);color:var(--ink-2)}
.search-trigger svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;flex:none}
.search-trigger span{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.search-trigger kbd{font-family:var(--f-sans);font-size:10px;border:1px solid var(--line);border-radius:5px;
  padding:1px 6px;background:var(--bg-soft)}
.tb-right{margin-left:auto}
.tb-cta{display:inline-block;padding:7px 15px;border-radius:99px;background:var(--gold);color:#fff;
  font-size:12.5px;font-weight:700;text-decoration:none;box-shadow:var(--sh-1);white-space:nowrap}
.tb-cta:hover{filter:brightness(1.07)}

#view{flex:1;padding:26px 20px 70px;outline:none}
.wrap{max-width:var(--maxw);margin:0 auto}
.wrap-wide{max-width:1120px;margin:0 auto}

#foot{border-top:1px solid var(--line-soft);padding:20px;background:var(--bg-soft)}
#foot p{max-width:var(--maxw);margin:0 auto;font-size:11.5px;color:var(--ink-3);line-height:1.75}

#sbScrim{display:none}
.only-mobile{display:none!important}

@media (max-width:940px){
  :root{--sb-w:280px}
  .only-mobile{display:grid!important}
  #sidebar{position:fixed;left:0;top:0;transform:translateX(-102%);transition:transform .26s cubic-bezier(.4,0,.2,1);box-shadow:var(--sh-3)}
  body.sb-on #sidebar{transform:none}
  #sbScrim{display:block;position:fixed;inset:0;background:rgba(20,15,5,.45);opacity:0;pointer-events:none;
    transition:opacity .26s;z-index:55}
  body.sb-on #sbScrim{opacity:1;pointer-events:auto}
  #view{padding:20px 15px 60px}
  #topbar{padding:9px 14px}
  .search-trigger kbd{display:none}
  .tb-cta{display:none}
}

/* =========================================================
   TYPOGRAPHY / PRIMITIVES
   ========================================================= */
h1,h2,h3,h4{line-height:1.42;margin:0;font-weight:800;letter-spacing:.01em}
.page-h{margin-bottom:22px}
.page-h .eyebrow{font-size:11.5px;font-weight:800;letter-spacing:.16em;color:var(--gold);margin:0 0 6px}
.page-h h1{font-family:var(--f-disp);font-size:clamp(24px,4.2vw,34px);letter-spacing:.03em;text-wrap:balance}
.page-h .lede{margin:9px 0 0;color:var(--ink-2);font-size:14.5px;line-height:1.85}

.thai{font-family:var(--f-thai)}
.tnum{font-variant-numeric:tabular-nums}

.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);box-shadow:var(--sh-1)}
.pad{padding:20px}
.hr{height:1px;background:var(--line-soft);border:0;margin:26px 0}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:99px;
  border:1px solid transparent;background:var(--teal);color:#fff;font-size:14px;font-weight:700;cursor:pointer;
  text-decoration:none;box-shadow:var(--sh-1);transition:.15s}
html[data-theme="dark"] .btn{color:var(--accent-ink)}
.btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.btn:active{transform:none}
.btn.sec{background:var(--surface);color:var(--ink);border-color:var(--line)}
.btn.sec:hover{background:var(--bg-soft);filter:none}
.btn.gold{background:var(--gold);color:#fff}
.btn.sm{padding:7px 14px;font-size:12.5px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;filter:none}

.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:99px;font-size:11.5px;
  font-weight:700;background:var(--bg-soft);color:var(--ink-2);border:1px solid var(--line-soft);white-space:nowrap}
.chip.gold{background:var(--gold-soft);color:var(--gold);border-color:transparent}
.chip.teal{background:var(--teal-soft);color:var(--teal);border-color:transparent}
.chip.crimson{background:var(--crimson-soft);color:var(--crimson);border-color:transparent}
.chip.indigo{background:var(--indigo-soft);color:var(--indigo);border-color:transparent}
.chip.plum{background:var(--plum-soft);color:var(--plum);border-color:transparent}

.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}
.g3{grid-template-columns:repeat(auto-fill,minmax(215px,1fr))}
.g4{grid-template-columns:repeat(auto-fill,minmax(165px,1fr))}
.row{display:flex;flex-wrap:wrap;gap:9px;align-items:center}

.empty{padding:44px 20px;text-align:center;color:var(--ink-3);font-size:14px}

/* =========================================================
   HOME
   ========================================================= */
.hero{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:34px 30px;
  background:linear-gradient(135deg,#0f6b63 0%,#12564f 45%,#173f3f 100%);color:#fff;box-shadow:var(--sh-2)}
.hero::after{content:"";position:absolute;right:-70px;top:-70px;width:330px;height:330px;
  background:radial-gradient(circle,rgba(224,180,81,.32),transparent 66%)}
.hero-thai{position:absolute;right:20px;bottom:-24px;font-family:var(--f-thai);font-size:104px;
  color:rgba(255,255,255,.07);line-height:1;pointer-events:none;user-select:none}
.hero h1{position:relative;font-family:var(--f-disp);font-weight:800;font-size:clamp(27px,5.2vw,42px);
  margin:0 0 12px;letter-spacing:.03em;line-height:1.3;text-wrap:balance}
.hero p{position:relative;margin:0;max-width:52ch;color:rgba(255,255,255,.86);font-size:14.5px;line-height:1.85}
.hero-badges{position:relative;display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}
.hero-badges span{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.2);
  padding:4px 11px;border-radius:99px;font-size:11.5px;font-weight:700}
.hero-cta{position:relative;display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.hero-cta .btn{background:var(--gold);color:#fff;border:0}
.hero-cta .btn.ghost{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);color:#fff;box-shadow:none}

.sec-h{display:flex;align-items:baseline;gap:11px;margin:34px 0 13px}
.sec-h h2{font-size:18px}
.sec-h .more{margin-left:auto;font-size:12.5px;color:var(--teal);text-decoration:none;font-weight:700;white-space:nowrap}
.sec-h .note{font-size:12px;color:var(--ink-3)}

.resume{display:flex;gap:15px;align-items:center;padding:17px 19px;border-radius:var(--r-l);
  background:linear-gradient(120deg,var(--gold-soft),var(--surface));border:1px solid var(--line);box-shadow:var(--sh-1)}
.resume .rz-n{width:44px;height:44px;flex:none;border-radius:12px;display:grid;place-items:center;
  background:var(--gold);color:#fff;font-weight:800;font-size:17px;box-shadow:var(--sh-1)}
.resume .rz-t{flex:1;min-width:0;line-height:1.5}
.resume .rz-t b{display:block;font-size:15px}
.resume .rz-t span{font-size:12.5px;color:var(--ink-2)}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(126px,1fr));gap:11px}
.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 15px;text-align:left}
.stat b{display:block;font-size:25px;font-weight:800;line-height:1.2;font-variant-numeric:tabular-nums}
.stat span{font-size:11.5px;color:var(--ink-3);font-weight:700}
.stat.gold b{color:var(--gold)} .stat.teal b{color:var(--teal)}
.stat.indigo b{color:var(--indigo)} .stat.crimson b{color:var(--crimson)}

/* Chapter cards */
.ch-list{display:grid;gap:11px}
.ch-card{display:flex;gap:14px;align-items:flex-start;padding:15px 17px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-m);text-decoration:none;color:inherit;
  box-shadow:var(--sh-1);transition:.16s;position:relative;overflow:hidden}
.ch-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--era-c,var(--gold));opacity:.85}
.ch-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--era-c,var(--gold))}
.ch-n{width:38px;height:38px;flex:none;border-radius:10px;display:grid;place-items:center;font-weight:800;
  font-size:15px;background:var(--era-bg,var(--gold-soft));color:var(--era-c,var(--gold));font-variant-numeric:tabular-nums}
.ch-b{flex:1;min-width:0}
.ch-b h3{font-size:15.5px;margin:0 0 3px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ch-b .ch-era{display:block;font-size:11.5px;color:var(--ink-3);font-weight:700;font-variant-numeric:tabular-nums}
.ch-b p{margin:5px 0 0;font-size:12.5px;color:var(--ink-2);line-height:1.7;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ch-done{position:absolute;right:13px;top:13px;font-size:15px}
.ch-bar{display:block;height:3px;border-radius:9px;background:var(--line-soft);margin-top:9px;overflow:hidden}
.ch-bar i{display:block;height:100%;background:var(--era-c,var(--gold));border-radius:9px;transition:width .5s}

/* =========================================================
   CHAPTER READER
   ========================================================= */
.reader{max-width:var(--maxw);margin:0 auto}
.rd-head{padding:26px 0 20px;border-bottom:2px solid var(--era-c,var(--gold));margin-bottom:26px}
.rd-head .kicker{display:flex;align-items:center;gap:9px;font-size:11.5px;font-weight:800;
  letter-spacing:.13em;color:var(--era-c,var(--gold));margin-bottom:8px}
.rd-head h1{font-family:var(--f-disp);font-size:clamp(25px,4.6vw,35px);letter-spacing:.03em;line-height:1.38;text-wrap:balance}
.rd-head .sub{margin:8px 0 0;color:var(--ink-2);font-size:14px;font-variant-numeric:tabular-nums}

.keypoints{background:linear-gradient(135deg,var(--era-bg,var(--gold-soft)),var(--surface));
  border:1px solid var(--line);border-radius:var(--r-l);padding:19px 21px;margin:0 0 30px}
.keypoints h4{font-size:12px;letter-spacing:.13em;color:var(--era-c,var(--gold));margin:0 0 11px}
.keypoints ol{margin:0;padding:0;list-style:none;counter-reset:kp}
.keypoints li{counter-increment:kp;display:flex;gap:11px;padding:7px 0;font-size:14.5px;line-height:1.75}
.keypoints li::before{content:counter(kp);flex:none;width:22px;height:22px;border-radius:50%;margin-top:4px;
  background:var(--era-c,var(--gold));color:#fff;display:grid;place-items:center;font-size:11.5px;font-weight:800}

.sec{margin:0 0 12px;scroll-margin-top:76px}
.sec > h2{font-family:var(--f-disp);font-size:21px;letter-spacing:.02em;margin:38px 0 14px;padding-left:13px;border-left:4px solid var(--era-c,var(--gold));line-height:1.5}
.sec > h2:first-child{margin-top:0}
.rd h3{font-size:16.5px;margin:26px 0 10px;color:var(--ink)}
.rd p{margin:0 0 15px;font-size:15.5px;line-height:1.95;letter-spacing:.005em}
.rd p .em{background:linear-gradient(transparent 62%,var(--gold-soft) 62%);font-weight:700;padding:0 1px}
html[data-theme="dark"] .rd p .em{background:linear-gradient(transparent 62%,#4a3c19 62%)}
.rd strong{font-weight:800}
.rd ul.bul{margin:0 0 16px;padding-left:0;list-style:none}
.rd ul.bul li{position:relative;padding:5px 0 5px 21px;font-size:15px;line-height:1.85}
.rd ul.bul li::before{content:"";position:absolute;left:4px;top:15px;width:6px;height:6px;border-radius:50%;background:var(--era-c,var(--gold))}
.rd ol.num{margin:0 0 16px;padding-left:22px}
.rd ol.num li{padding:4px 0;font-size:15px;line-height:1.85}

/* tables */
.tbl-wrap{overflow-x:auto;margin:0 0 20px;border:1px solid var(--line);border-radius:var(--r-m);
  background:var(--surface);box-shadow:var(--sh-1);-webkit-overflow-scrolling:touch}
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px;min-width:440px}
table.tbl caption{caption-side:top;text-align:left;padding:12px 15px 0;font-size:12.5px;font-weight:800;color:var(--ink-2)}
table.tbl th,table.tbl td{padding:10px 14px;text-align:left;vertical-align:top;line-height:1.7;border-bottom:1px solid var(--line-soft)}
table.tbl thead th{background:var(--surface-2);font-weight:800;font-size:12.5px;color:var(--ink-2);
  position:sticky;top:0;white-space:nowrap}
table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl tbody tr:hover{background:var(--bg-soft)}
table.tbl td:first-child{font-weight:700;white-space:nowrap}
table.tbl.free td:first-child{white-space:normal}

/* timeline block */
.tl{margin:0 0 22px;position:relative;padding-left:8px}
.tl::before{content:"";position:absolute;left:60px;top:8px;bottom:8px;width:2px;background:var(--line)}
.tl-i{display:flex;gap:16px;padding:6px 0;position:relative}
.tl-y{width:54px;flex:none;text-align:right;font-weight:800;font-size:12.5px;color:var(--era-c,var(--gold));
  font-variant-numeric:tabular-nums;padding-top:3px;line-height:1.5}
.tl-d{flex:1;min-width:0;padding-left:16px;position:relative}
.tl-d::before{content:"";position:absolute;left:-5px;top:9px;width:10px;height:10px;border-radius:50%;
  background:var(--surface);border:2.5px solid var(--era-c,var(--gold))}
.tl-d b{display:block;font-size:14.5px;line-height:1.6}
.tl-d span{display:block;font-size:12.5px;color:var(--ink-2);line-height:1.7}

/* callouts */
.co{border-radius:var(--r-m);padding:15px 18px;margin:0 0 20px;border:1px solid;position:relative}
.co h4{font-size:13px;margin:0 0 8px;display:flex;align-items:center;gap:7px;letter-spacing:.02em}
.co p{margin:0 0 9px;font-size:14px;line-height:1.85}
.co p:last-child{margin-bottom:0}
.co ul.bul li{font-size:14px}
.co-warn{background:var(--crimson-soft);border-color:color-mix(in srgb,var(--crimson) 26%,transparent)}
.co-warn h4{color:var(--crimson)}
.co-term{background:var(--indigo-soft);border-color:color-mix(in srgb,var(--indigo) 24%,transparent)}
.co-term h4{color:var(--indigo)}
.co-col{background:var(--plum-soft);border-color:color-mix(in srgb,var(--plum) 24%,transparent)}
.co-col h4{color:var(--plum)}
.co-visit{background:var(--teal-soft);border-color:color-mix(in srgb,var(--teal) 26%,transparent)}
.co-visit h4{color:var(--teal)}
.co-quote{background:var(--surface-2);border-color:var(--line);border-left:4px solid var(--gold)}
.co-quote h4{color:var(--gold)}
.co-quote p{font-family:var(--f-disp);font-size:15.5px;line-height:2.05;letter-spacing:.02em}

/* term definition list */
.dl{margin:0}
.dl dt{font-weight:800;font-size:14px;margin:11px 0 2px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.dl dt:first-child{margin-top:0}
.dl dt .th{font-family:var(--f-thai);font-size:13px;font-weight:600;color:var(--ink-3)}
.dl dd{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.8}

/* compare 2-col */
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--line);border-radius:var(--r-m);
  overflow:hidden;margin:0 0 20px;background:var(--surface);box-shadow:var(--sh-1)}
.cmp-h{padding:12px 15px;font-weight:800;font-size:14px;text-align:center;color:#fff}
.cmp-h.a{background:var(--teal)} .cmp-h.b{background:var(--indigo)}
html[data-theme="dark"] .cmp-h{color:var(--accent-ink)}
.cmp-l{grid-column:1/-1;padding:7px 15px;background:var(--surface-2);font-size:11.5px;font-weight:800;
  color:var(--ink-3);letter-spacing:.06em;border-top:1px solid var(--line-soft)}
.cmp-c{padding:11px 15px;font-size:13.5px;line-height:1.75;border-top:1px solid var(--line-soft)}
.cmp-c:first-of-type{border-right:1px solid var(--line-soft)}
.cmp-c.a{border-right:1px solid var(--line-soft)}
.cmp-note{grid-column:1/-1;padding:9px 15px;font-size:11.5px;color:var(--ink-3);background:var(--surface-2);
  border-top:1px solid var(--line-soft);line-height:1.7}

/* figure / diagram */
.fig{margin:0 0 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  padding:17px;box-shadow:var(--sh-1);overflow:hidden}
.fig .fig-in{overflow-x:auto}
.fig svg{display:block;margin:0 auto;max-width:100%;height:auto}
.fig figcaption{margin-top:12px;font-size:12px;color:var(--ink-3);line-height:1.75;text-align:left;
  padding-top:10px;border-top:1px dashed var(--line)}
.fig-t{font-size:12.5px;font-weight:800;color:var(--ink-2);margin:0 0 12px;letter-spacing:.04em}

/* flow / chain diagram (HTML based) */
.flow{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;margin:0 0 20px}
.flow-i{flex:1 1 150px;min-width:132px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  padding:12px 13px;box-shadow:var(--sh-1);position:relative}
.flow-i b{display:block;font-size:13px;margin-bottom:3px;color:var(--era-c,var(--gold))}
.flow-i span{font-size:12px;color:var(--ink-2);line-height:1.65}
.flow-arrow{align-self:center;color:var(--ink-3);font-size:15px;flex:none}

/* pyramid (sakdina) */
.pyr{margin:0 0 20px;display:flex;flex-direction:column;gap:5px;align-items:center}
.pyr-r{width:100%;display:flex;align-items:center;gap:12px;padding:11px 16px;border-radius:9px;color:#fff;
  box-shadow:var(--sh-1)}
.pyr-r b{font-size:14px;flex:none}
.pyr-r span{font-size:12px;opacity:.92;line-height:1.6}
.pyr-r .num{margin-left:auto;font-weight:800;font-size:14px;font-variant-numeric:tabular-nums;flex:none}

/* stat bars */
.bars{margin:0 0 20px;display:flex;flex-direction:column;gap:9px}
.bar-r{display:flex;align-items:center;gap:11px;font-size:13px}
.bar-r .lb{width:104px;flex:none;color:var(--ink-2);font-weight:700;text-align:right;font-size:12.5px}
.bar-r .tr{flex:1;height:19px;background:var(--bg-soft);border-radius:6px;overflow:hidden;border:1px solid var(--line-soft)}
.bar-r .tr i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--gold));border-radius:5px}
.bar-r .vl{width:88px;flex:none;font-weight:800;font-variant-numeric:tabular-nums;font-size:12.5px}

/* chapter footer: summary + quiz */
.sumbox{background:linear-gradient(135deg,var(--teal-soft),var(--surface));border:1px solid var(--line);
  border-radius:var(--r-l);padding:20px 22px;margin:34px 0 0}
.sumbox h3{font-size:15px;margin:0 0 12px;color:var(--teal);letter-spacing:.05em}
.sumbox ul{margin:0;padding:0;list-style:none}
.sumbox li{position:relative;padding:7px 0 7px 26px;font-size:14.5px;line-height:1.8}
.sumbox li::before{content:"✓";position:absolute;left:2px;top:7px;color:var(--teal);font-weight:800}

.quizbox{margin:26px 0 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  padding:22px;box-shadow:var(--sh-1)}
.quizbox > h3{font-size:16px;margin:0 0 4px}
.quizbox > .qb-sub{font-size:12.5px;color:var(--ink-3);margin:0 0 16px}
.qi{border-top:1px solid var(--line-soft);padding:15px 0}
.qi:first-of-type{border-top:0;padding-top:0}
.qi .qq{display:flex;gap:10px;font-size:14.5px;line-height:1.8;font-weight:700}
.qi .qq b{color:var(--era-c,var(--gold));flex:none}
.qi .qa{margin:10px 0 0 26px;font-size:14px;color:var(--ink-2);background:var(--surface-2);
  border-left:3px solid var(--teal);border-radius:0 8px 8px 0;padding:11px 14px;line-height:1.8;display:none}
.qi.open .qa{display:block;animation:fadeUp .24s}
.qi .qbtn{margin:9px 0 0 26px;padding:5px 13px;border-radius:99px;border:1px solid var(--line);
  background:var(--bg-soft);font-size:12px;cursor:pointer;font-weight:700;color:var(--ink-2)}
.qi .qbtn:hover{border-color:var(--teal);color:var(--teal)}

@keyframes fadeUp{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

.rd-nav{display:flex;gap:10px;margin:34px 0 0;flex-wrap:wrap}
.rd-nav a{flex:1;min-width:180px;display:flex;flex-direction:column;gap:2px;padding:14px 17px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-m);text-decoration:none;color:inherit;box-shadow:var(--sh-1);transition:.15s}
.rd-nav a:hover{transform:translateY(-2px);box-shadow:var(--sh-2);border-color:var(--gold)}
.rd-nav a small{font-size:11px;color:var(--ink-3);font-weight:700;letter-spacing:.08em}
.rd-nav a b{font-size:14px;line-height:1.5}
.rd-nav a.nx{text-align:right}

.done-cta{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin:26px 0 0;padding:17px 20px;
  border-radius:var(--r-l);background:var(--surface-2);border:1px dashed var(--line)}
.done-cta p{margin:0;flex:1;min-width:170px;font-size:13.5px;color:var(--ink-2)}

/* progress bar at top while reading */
#readbar{position:fixed;left:0;top:0;height:3px;background:var(--gold);width:0;z-index:70;transition:width .1s linear}

/* TOC floating */
.toc{position:sticky;top:66px;align-self:start;width:214px;flex:none;font-size:12.5px;
  max-height:calc(100vh - 96px);overflow-y:auto;padding-left:22px;border-left:1px solid var(--line-soft)}
.toc b{display:block;font-size:10.5px;letter-spacing:.14em;color:var(--ink-3);margin-bottom:9px}
.toc a{display:block;padding:5px 0;color:var(--ink-3);text-decoration:none;line-height:1.55;
  border-left:2px solid transparent;padding-left:9px;margin-left:-11px;transition:.14s}
.toc a:hover{color:var(--ink)}
.toc a.on{color:var(--era-c,var(--gold));border-left-color:var(--era-c,var(--gold));font-weight:700}
.rd-layout{display:flex;gap:34px;align-items:flex-start;max-width:1140px;margin:0 auto}
.rd-layout .reader{flex:1;min-width:0;max-width:var(--maxw)}
@media (max-width:1180px){ .toc{display:none} }

/* =========================================================
   TIMELINE PAGE
   ========================================================= */
.tlx-ctl{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:18px;position:sticky;top:58px;z-index:20;
  padding:10px 0;background:var(--bg)}
.tgl{padding:6px 13px;border-radius:99px;border:1px solid var(--line);background:var(--surface);
  font-size:12px;font-weight:700;cursor:pointer;color:var(--ink-2);transition:.14s;white-space:nowrap}
.tgl:hover{border-color:var(--gold)}
.tgl.on{background:var(--teal);border-color:var(--teal);color:#fff}
html[data-theme="dark"] .tgl.on{color:var(--accent-ink)}

.tlx{position:relative;padding-left:0}
.era-band{display:flex;align-items:center;gap:10px;margin:30px 0 12px;padding:9px 16px;border-radius:var(--r-m);
  background:var(--era-bg);color:var(--era-c);font-weight:800;font-size:14px;border:1px solid transparent;
  position:sticky;top:112px;z-index:15;box-shadow:var(--sh-1)}
.era-band small{margin-left:auto;font-weight:700;font-size:11.5px;opacity:.85;font-variant-numeric:tabular-nums}

.ev{display:flex;gap:0;position:relative;padding:0 0 0 0}
.ev-y{width:74px;flex:none;text-align:right;padding:12px 14px 12px 0;font-weight:800;font-size:14px;
  color:var(--ink-3);font-variant-numeric:tabular-nums;line-height:1.5}
.ev-line{width:2px;flex:none;background:var(--line);position:relative}
.ev-dot{position:absolute;left:50%;top:19px;transform:translateX(-50%);width:11px;height:11px;border-radius:50%;
  background:var(--surface);border:2.5px solid var(--era-c,var(--gold));z-index:2}
.ev.big .ev-dot{width:15px;height:15px;background:var(--era-c,var(--gold));box-shadow:0 0 0 4px color-mix(in srgb,var(--era-c,var(--gold)) 20%,transparent)}
.ev-b{flex:1;min-width:0;padding:10px 0 10px 20px}
.ev-c{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:12px 16px;
  box-shadow:var(--sh-1);transition:.15s;cursor:default}
.ev.big .ev-c{border-color:color-mix(in srgb,var(--era-c,var(--gold)) 45%,var(--line))}
.ev-c:hover{transform:translateX(2px);box-shadow:var(--sh-2)}
.ev-c h4{font-size:14.5px;margin:0 0 4px;line-height:1.55}
.ev-c p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.75}
.ev-c .ev-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.ev-c .ev-meta a{font-size:11px;text-decoration:none}
.jp-note{display:inline-flex;align-items:center;gap:5px;margin-top:8px;font-size:11.5px;color:var(--ink-3);
  background:var(--bg-soft);padding:3px 9px;border-radius:6px;border:1px solid var(--line-soft)}
@media(max-width:640px){ .ev-y{width:52px;font-size:12.5px;padding-right:9px} .ev-b{padding-left:13px} }

/* =========================================================
   MAP PAGE
   ========================================================= */
.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}
@media(max-width:900px){ .map-layout{grid-template-columns:1fr} }
.map-stage{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:14px;
  box-shadow:var(--sh-1);position:relative}
.map-stage svg{width:100%;height:auto;display:block;touch-action:manipulation}
.map-region{cursor:pointer;transition:.2s}
.map-region:hover{filter:brightness(1.08)}
.map-pin{cursor:pointer}
.map-pin circle{transition:.2s}
.map-pin:hover circle{r:8}
.map-pin text{font-size:9px;font-weight:700;pointer-events:none}
.map-side{position:sticky;top:66px}
.map-info{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:19px;box-shadow:var(--sh-1);min-height:220px}
.map-info h3{font-size:17px;margin:0 0 3px}
.map-info .mi-sub{font-size:12px;color:var(--ink-3);margin:0 0 12px;font-family:var(--f-thai)}
.map-info p{font-size:13.5px;line-height:1.85;margin:0 0 10px;color:var(--ink-2)}
.map-legend{display:flex;flex-wrap:wrap;gap:9px;margin-top:12px;font-size:11.5px}
.map-legend span{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2)}
.map-legend i{width:11px;height:11px;border-radius:3px;display:inline-block}

/* =========================================================
   PEOPLE
   ========================================================= */
.pp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:14px}
.pp{position:relative;height:216px;perspective:1000px;cursor:pointer;background:none;border:0;padding:0;text-align:left}
.pp-in{display:block;position:relative;width:100%;height:100%;transition:transform .55s cubic-bezier(.4,0,.2,1);transform-style:preserve-3d}
.pp.flip .pp-in{transform:rotateY(180deg)}
.pp-f,.pp-bk{position:absolute;inset:0;backface-visibility:hidden;border-radius:var(--r-l);padding:16px;
  border:1px solid var(--line);box-shadow:var(--sh-1);display:flex;flex-direction:column;overflow:hidden}
.pp-f{background:var(--surface);padding-bottom:30px}
.pp-f::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--era-c,var(--gold))}
.pp-av{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-size:22px;
  background:var(--era-bg,var(--gold-soft));margin-bottom:10px;flex:none}
.pp-f h4{font-size:15px;margin:0 0 3px;line-height:1.45}
.pp-f .pp-role{font-size:11.5px;color:var(--ink-3);font-weight:700;margin-bottom:auto}
.pp-f .pp-yr{font-size:11.5px;color:var(--era-c,var(--gold));font-weight:800;font-variant-numeric:tabular-nums}
.pp-f .pp-hint{position:absolute;right:14px;bottom:10px;font-size:10px;color:var(--ink-3);opacity:.7}
.pp-bk{transform:rotateY(180deg);background:var(--era-c,var(--gold));color:#fff;justify-content:center}
.pp-bk h4{font-size:13.5px;margin:0 0 8px;opacity:.85;font-weight:700}
.pp-bk p{margin:0;font-size:13.5px;line-height:1.75}
.pp-bk .pp-ch{display:block;margin-top:10px;font-size:11px;opacity:.8;font-weight:700}

/* =========================================================
   TERMS
   ========================================================= */
.tm-list{display:grid;gap:10px}
.tm{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 17px;box-shadow:var(--sh-1)}
.tm-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:5px}
.tm-h b{font-size:15.5px}
.tm-h .th{font-family:var(--f-thai);font-size:14px;color:var(--teal)}
.tm-h .kn{font-size:11.5px;color:var(--ink-3)}
.tm p{margin:0;font-size:13.5px;color:var(--ink-2);line-height:1.8}
.tm .tm-ch{margin-top:7px;font-size:11px}
.alpha-jump{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:16px}
.alpha-jump button{width:32px;height:30px;border-radius:7px;border:1px solid var(--line);background:var(--surface);
  font-size:12px;font-weight:700;cursor:pointer;color:var(--ink-2)}
.alpha-jump button:hover{border-color:var(--gold);color:var(--gold)}
.alpha-jump button.on{background:var(--teal);color:#fff;border-color:var(--teal)}

/* =========================================================
   FLASHCARDS
   ========================================================= */
.fc-stage{max-width:600px;margin:0 auto}
.fc-meter{display:flex;align-items:center;gap:12px;margin-bottom:16px;font-size:12px;color:var(--ink-3);font-weight:700}
.fc-meter .tr{flex:1;height:7px;background:var(--bg-soft);border-radius:9px;overflow:hidden;border:1px solid var(--line-soft)}
.fc-meter .tr i{display:block;height:100%;background:var(--gold);transition:width .35s}
.fc-card{position:relative;min-height:270px;perspective:1400px;margin-bottom:20px}
.fc-in{position:relative;width:100%;min-height:270px;transition:transform .5s cubic-bezier(.4,0,.2,1);transform-style:preserve-3d}
.fc-card.flip .fc-in{transform:rotateY(180deg)}
.fc-a,.fc-b{position:absolute;inset:0;backface-visibility:hidden;border-radius:var(--r-xl);padding:34px 30px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  border:1px solid var(--line);box-shadow:var(--sh-2)}
.fc-a{background:var(--surface)}
.fc-b{transform:rotateY(180deg);background:linear-gradient(140deg,var(--teal),#0c4f49);color:#fff;border-color:transparent}
.fc-num{position:absolute;left:22px;top:18px;font-size:11.5px;font-weight:800;color:var(--ink-3);letter-spacing:.1em}
.fc-b .fc-num{color:rgba(255,255,255,.6)}
.fc-a p{font-size:19px;line-height:1.75;margin:0;font-weight:700;max-width:26ch}
.fc-b p{font-family:var(--f-disp);font-size:24px;line-height:1.7;margin:0;font-weight:800;max-width:24ch;letter-spacing:.02em}
.fc-tap{position:absolute;bottom:16px;font-size:11.5px;color:var(--ink-3)}
.fc-b .fc-tap{color:rgba(255,255,255,.65)}
.fc-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.fc-actions .btn{min-width:132px}
.btn.bad{background:var(--crimson)} .btn.good{background:var(--teal)}
.fc-stats{display:flex;gap:16px;justify-content:center;margin-top:18px;font-size:12.5px;color:var(--ink-3);font-weight:700}
.fc-stats b{font-variant-numeric:tabular-nums}

/* =========================================================
   EXAM
   ========================================================= */
.ex-q{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:20px 22px;
  margin-bottom:14px;box-shadow:var(--sh-1)}
.ex-q .exq-h{display:flex;gap:10px;font-size:15px;font-weight:700;line-height:1.8;margin-bottom:13px}
.ex-q .exq-h b{flex:none;width:26px;height:26px;border-radius:7px;background:var(--gold-soft);color:var(--gold);
  display:grid;place-items:center;font-size:12.5px;margin-top:3px}
.opt{display:flex;align-items:flex-start;gap:11px;padding:11px 14px;border:1px solid var(--line);border-radius:10px;
  margin-bottom:8px;cursor:pointer;font-size:14px;transition:.14s;background:var(--surface);line-height:1.7}
.opt:hover{border-color:var(--teal);background:var(--teal-soft)}
.opt input{margin-top:5px;flex:none;accent-color:var(--teal)}
.opt.sel{border-color:var(--teal);background:var(--teal-soft)}
div.opt{pointer-events:none}
.opt.ok{border-color:var(--teal);background:var(--teal-soft)}
.opt.ng{border-color:var(--crimson);background:var(--crimson-soft)}
.opt .mk{margin-left:auto;font-weight:800;flex:none}
.ex-write textarea{width:100%;min-height:88px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
  background:var(--surface-2);color:var(--ink);font:inherit;font-size:14px;line-height:1.8;resize:vertical}
.ex-write textarea:focus{outline:2px solid var(--teal);outline-offset:1px}
.model-a{margin-top:12px;padding:13px 16px;border-radius:10px;background:var(--surface-2);border-left:3px solid var(--gold);
  font-size:13.5px;line-height:1.85;color:var(--ink-2)}
.model-a b{display:block;font-size:11.5px;color:var(--gold);letter-spacing:.1em;margin-bottom:6px}
.self-grade{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px;align-items:center}
.self-grade span{font-size:12px;color:var(--ink-3);font-weight:700}
.sg-btn{padding:5px 13px;border-radius:99px;border:1px solid var(--line);background:var(--surface);
  font-size:12px;cursor:pointer;font-weight:700}
.sg-btn.on{background:var(--teal);border-color:var(--teal);color:#fff}
.ex-result{text-align:center;padding:34px 24px;border-radius:var(--r-xl);
  background:linear-gradient(140deg,var(--teal-soft),var(--surface));border:1px solid var(--line);margin-bottom:20px}
.ex-score{font-family:var(--f-disp);font-size:58px;font-weight:800;line-height:1;color:var(--teal);font-variant-numeric:tabular-nums}
.ex-score small{font-size:19px;color:var(--ink-3);font-weight:700}
.ex-rank{font-size:16px;font-weight:800;margin-top:12px}
.ex-msg{font-size:13.5px;color:var(--ink-2);margin-top:8px;line-height:1.85}
.ex-bar{position:sticky;bottom:0;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px);
  border-top:1px solid var(--line);padding:12px 0;display:flex;gap:11px;align-items:center;flex-wrap:wrap;z-index:25;margin-top:20px}
.ex-bar .prog{font-size:12.5px;color:var(--ink-3);font-weight:700;font-variant-numeric:tabular-nums}

/* =========================================================
   MYTHS
   ========================================================= */
.myth{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:19px 21px;
  margin-bottom:13px;box-shadow:var(--sh-1)}
.myth .m-q{font-size:15.5px;font-weight:700;line-height:1.8;margin:0 0 13px;display:flex;gap:11px}
.myth .m-q i{font-style:normal;flex:none;width:24px;height:24px;border-radius:6px;background:var(--gold-soft);
  color:var(--gold);display:grid;place-items:center;font-size:12px;font-weight:800;margin-top:3px}
.myth-btns{display:flex;gap:9px;flex-wrap:wrap}
.myth-btns button{padding:8px 20px;border-radius:99px;border:1px solid var(--line);background:var(--surface);
  font-size:13.5px;font-weight:700;cursor:pointer}
.myth-btns button:hover{border-color:var(--teal)}
.myth-btns button.picked{background:var(--teal);color:#fff;border-color:var(--teal)}
.myth-a{margin-top:14px;padding:14px 17px;border-radius:10px;background:var(--surface-2);
  border-left:3px solid var(--crimson);font-size:14px;line-height:1.85;display:none}
.myth.open .myth-a{display:block;animation:fadeUp .24s}
.myth-a .verdict{display:inline-block;font-weight:800;color:var(--crimson);margin-bottom:6px;font-size:12.5px;letter-spacing:.05em}

/* =========================================================
   PLAN
   ========================================================= */
.day{display:flex;gap:16px;margin-bottom:12px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-l);padding:17px 19px;box-shadow:var(--sh-1);position:relative;overflow:hidden}
.day.done{border-color:var(--teal)}
.day.done::after{content:"完了";position:absolute;right:0;top:0;background:var(--teal);color:#fff;
  font-size:10.5px;font-weight:800;padding:3px 12px;border-radius:0 0 0 10px;letter-spacing:.08em}
html[data-theme="dark"] .day.done::after{color:var(--accent-ink)}
.day-n{width:50px;flex:none;text-align:center}
.day-n b{display:block;font-size:23px;font-weight:800;line-height:1;color:var(--gold);font-variant-numeric:tabular-nums}
.day-n span{font-size:10.5px;color:var(--ink-3);font-weight:700}
.day-b{flex:1;min-width:0}
.day-b h3{font-size:15.5px;margin:0 0 5px}
.day-b .goal{font-size:13px;color:var(--ink-2);margin:0 0 11px;line-height:1.75}
.day-b .goal b{color:var(--ink)}
.day-links{display:flex;flex-wrap:wrap;gap:7px}
.day-links a{font-size:12px;padding:4px 11px;border-radius:99px;background:var(--bg-soft);border:1px solid var(--line-soft);
  text-decoration:none;color:var(--ink-2);font-weight:700;transition:.14s}
.day-links a:hover{background:var(--gold-soft);color:var(--gold);border-color:transparent}
.day-links a.fin{background:var(--teal-soft);color:var(--teal);border-color:transparent}

/* =========================================================
   TOOLS / CONVERTER
   ========================================================= */
.conv{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:end;margin-bottom:14px}
@media(max-width:560px){.conv{grid-template-columns:1fr;gap:10px}}
.conv label{display:block;font-size:12px;font-weight:800;color:var(--ink-3);margin-bottom:6px;letter-spacing:.06em}
.conv input{width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);
  color:var(--ink);font:inherit;font-size:23px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}
.conv input:focus{outline:2px solid var(--teal);outline-offset:1px}
.conv .eq{font-size:22px;color:var(--ink-3);padding-bottom:14px;text-align:center}
.conv-note{font-size:12.5px;color:var(--ink-3);line-height:1.8}
.yr-facts{margin-top:16px;padding-top:16px;border-top:1px dashed var(--line)}
.yr-facts h4{font-size:12.5px;color:var(--gold);margin:0 0 9px;letter-spacing:.08em}
.yr-fact{display:flex;gap:11px;padding:6px 0;font-size:13.5px;line-height:1.7}
.yr-fact b{flex:none;color:var(--teal);font-variant-numeric:tabular-nums;width:58px}

/* mnemonic cards */
.mn{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:11px}
.mn-c{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 16px;box-shadow:var(--sh-1)}
.mn-c .y{font-size:20px;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums;line-height:1.2}
.mn-c .e{font-size:13px;font-weight:700;margin:2px 0 7px}
.mn-c .g{font-size:12.5px;color:var(--ink-2);line-height:1.75;background:var(--surface-2);padding:8px 11px;border-radius:8px}

/* =========================================================
   SEARCH MODAL
   ========================================================= */
.modal[hidden]{display:none!important}
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:start center;padding:9vh 16px 16px;
  background:rgba(20,15,5,.5);backdrop-filter:blur(3px);animation:fadeIn .16s}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal-card{width:100%;max-width:640px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-l);box-shadow:var(--sh-3);overflow:hidden;animation:pop .2s cubic-bezier(.4,0,.2,1)}
@keyframes pop{from{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}
.search-box{display:flex;align-items:center;gap:11px;padding:14px 16px;border-bottom:1px solid var(--line-soft)}
.search-box svg{width:19px;height:19px;fill:none;stroke:var(--ink-3);stroke-width:2;flex:none}
.search-box input{flex:1;border:0;background:transparent;color:var(--ink);font:inherit;font-size:16px;outline:none}
.search-results{max-height:min(58vh,480px);overflow-y:auto;padding:8px}
.sr{display:block;padding:11px 14px;border-radius:10px;text-decoration:none;color:inherit;cursor:pointer}
.sr:hover,.sr.cur{background:var(--bg-soft)}
.sr .sr-t{display:flex;align-items:center;gap:8px;font-size:14.5px;font-weight:700;line-height:1.5}
.sr .sr-t .tag{font-size:10px;font-weight:800;padding:1px 7px;border-radius:5px;background:var(--gold-soft);
  color:var(--gold);flex:none;letter-spacing:.05em}
.sr .sr-t .tag.p{background:var(--indigo-soft);color:var(--indigo)}
.sr .sr-t .tag.e{background:var(--teal-soft);color:var(--teal)}
.sr .sr-t .tag.c{background:var(--plum-soft);color:var(--plum)}
.sr .sr-t .tag.v{background:var(--crimson-soft);color:var(--crimson)}
.sr .sr-d{font-size:12px;color:var(--ink-3);margin-top:3px;line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sr mark{background:var(--gold-soft);color:inherit;border-radius:3px;padding:0 1px}
html[data-theme="dark"] .sr mark{background:#4a3c19}

/* toast */
.toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(10px);z-index:120;
  background:var(--ink);color:var(--bg);padding:11px 22px;border-radius:99px;font-size:13.5px;font-weight:700;
  box-shadow:var(--sh-3);opacity:0;transition:.25s;pointer-events:none;max-width:88vw;text-align:center}
.toast.on{opacity:1;transform:translateX(-50%)}

/* visit page */
.vs{display:flex;gap:14px;padding:15px 17px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-m);box-shadow:var(--sh-1);margin-bottom:11px}
.vs-ic{width:40px;height:40px;flex:none;border-radius:11px;display:grid;place-items:center;font-size:19px;background:var(--gold-soft)}
.vs-b{flex:1;min-width:0}
.vs-b h4{font-size:15px;margin:0 0 3px}
.vs-b p{margin:0;font-size:13px;color:var(--ink-2);line-height:1.75}
.vs-b .vs-ch{margin-top:7px}

/* compare page */
.cmp-pick{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:18px}

@media print{
  #sidebar,#topbar,#foot,.rd-nav,.done-cta,.toc{display:none!important}
  #view{padding:0}
  .card,.fig,.tbl-wrap{box-shadow:none}
}

/* =========================================================
   PWA インストール（App Store 風のバッジと手順）
   ========================================================= */
.inst-home{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  padding:18px 20px;box-shadow:var(--sh-1)}
.inst-home > p{margin:0 0 14px;font-size:13.5px;color:var(--ink-2);line-height:1.8}

.badges{display:flex;flex-wrap:wrap;gap:12px}
.badges.compact{gap:10px}
.badge{display:inline-flex;align-items:center;gap:13px;padding:11px 22px 11px 18px;border-radius:14px;
  background:#101418;color:#fff;border:1px solid #101418;text-decoration:none;cursor:pointer;
  box-shadow:var(--sh-1);transition:.16s;min-width:212px;font:inherit;text-align:left}
.badge:hover{transform:translateY(-2px);box-shadow:var(--sh-2);background:#1b2229;border-color:#1b2229}
.badge:active{transform:none}
html[data-theme="dark"] .badge{background:#f2efe8;color:#14161a;border-color:#f2efe8}
html[data-theme="dark"] .badge:hover{background:#fff;border-color:#fff}
.badges.compact .badge{min-width:190px;padding:9px 18px 9px 15px}

.badge-logo{flex:none;width:30px;height:30px;display:grid;place-items:center}
.badge-logo svg{width:100%;height:100%;fill:currentColor}
.badges.compact .badge-logo{width:26px;height:26px}
.badge.android .badge-logo{color:#3ddc84}
.badge.android .badge-logo .eye{fill:#101418}
html[data-theme="dark"] .badge.android .badge-logo .eye{fill:#f2efe8}
.badge.android .badge-logo svg rect,
.badge.android .badge-logo svg path{fill:#3ddc84}

.badge-txt{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.badge-txt small{font-size:10.5px;opacity:.72;letter-spacing:.04em;font-weight:600}
.badge-txt b{font-size:16px;font-weight:800;letter-spacing:.01em;white-space:nowrap}
.badges.compact .badge-txt b{font-size:15px}

.inst-done{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:99px;
  background:var(--teal-soft);color:var(--teal);font-size:13.5px;font-weight:800}

.inst-feat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);
  padding:15px 17px;box-shadow:var(--sh-1)}
.inst-feat span{font-size:21px;display:block;margin-bottom:6px}
.inst-feat b{display:block;font-size:14.5px;margin-bottom:4px}
.inst-feat p{margin:0;font-size:12.5px;color:var(--ink-2);line-height:1.75}

.inst-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);
  padding:20px 22px;margin-bottom:14px;box-shadow:var(--sh-1);scroll-margin-top:80px}
.inst-card.here{border-color:var(--teal);box-shadow:0 0 0 3px color-mix(in srgb,var(--teal) 14%,transparent),var(--sh-1)}
.inst-h{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.inst-h h2{font-size:17px;margin:0}
.inst-h .badge-logo{width:34px;height:34px;color:var(--ink)}
.inst-h .badge-logo.android{color:#2fae68}
.inst-h .badge-logo.android svg rect,.inst-h .badge-logo.android svg path{fill:#2fae68}
.inst-h .badge-logo.android svg .eye{fill:var(--surface)}
.inst-h .badge-logo.pc svg{fill:none;stroke:var(--ink);stroke-width:1.8}
.inst-h .chip{margin-top:4px}

.inst-steps{margin:0;padding:0;list-style:none;counter-reset:st}
.inst-steps li{counter-increment:st;position:relative;padding:9px 0 9px 38px;font-size:14.5px;line-height:1.75;
  border-top:1px solid var(--line-soft)}
.inst-steps li:first-child{border-top:0}
.inst-steps li::before{content:counter(st);position:absolute;left:0;top:11px;width:24px;height:24px;
  border-radius:50%;background:var(--gold-soft);color:var(--gold);display:grid;place-items:center;
  font-size:12px;font-weight:800}
.inst-steps li b{display:block;font-weight:700}
.inst-steps li span{display:block;font-size:12.5px;color:var(--ink-2);line-height:1.7;margin-top:2px}
.inst-note{margin:13px 0 0;font-size:12.5px;color:var(--ink-3);line-height:1.8;
  padding-top:12px;border-top:1px dashed var(--line)}

@media (max-width:520px){
  .badge{min-width:0;flex:1 1 100%}
}

/* スタンドアロン起動時のセーフエリア */
@media (display-mode:standalone),(display-mode:fullscreen){
  #topbar{padding-top:calc(10px + env(safe-area-inset-top))}
  #sidebar{padding-top:env(safe-area-inset-top)}
  #view{padding-bottom:calc(70px + env(safe-area-inset-bottom))}
  .ex-bar{padding-bottom:calc(12px + env(safe-area-inset-bottom))}
}

/* =========================================================
   大元サイト Bangkok Times への案内
   ========================================================= */
.bt-link{text-decoration:none}
.bt-link img{border-radius:4px;flex:none}

.bt-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:2px 13px;
  padding:13px 15px;border-radius:var(--r-m);text-decoration:none;color:inherit;
  background:var(--surface);border:1px solid var(--line);box-shadow:var(--sh-1);
  transition:border-color .15s,background .15s,transform .08s}
.bt-card:hover{border-color:var(--gold);background:var(--surface-2)}
.bt-card:active{transform:scale(.995)}
.bt-card .lg{border-radius:11px;flex:none;display:block}
.bt-card .tx{min-width:0}
.bt-card .tx b{display:block;font-size:14px;font-weight:800;color:var(--ink)}
.bt-card .tx small{display:block;color:var(--ink-3);font-size:11.5px;line-height:1.6}
.bt-card .go{color:var(--ink-3);font-size:15px}
