:root{
  --bg1:#e7edef;--bg2:#f9fbfb;--bg3:#e1e8eb;--card:rgba(255,255,255,.82);--card2:#f6f9f9;--edge:#ffffff;
  --ink:#1F3237;--muted:#56696E;--line:rgba(40,70,76,.14);--brand:#3E7F22;--brand2:#5FA33A;--brandSoft:#E6F2DD;
  --bio:#0E9F6E;--laser:#E5484D;--shadow:0 18px 44px rgba(32,60,66,.12);--chip:#EEF3F2;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg1:#12191b;--bg2:#1a2427;--bg3:#111719;--card:rgba(30,40,43,.86);--card2:#222e31;--edge:#2c3a3e;
  --ink:#E6EEEC;--muted:#A3B5B3;--line:rgba(200,220,220,.14);--brand:#6FBF45;--brand2:#86CF5E;--brandSoft:#203522;--chip:#243034;--shadow:0 18px 44px rgba(0,0,0,.35);}}
:root[data-theme="dark"]{--bg1:#12191b;--bg2:#1a2427;--bg3:#111719;--card:rgba(30,40,43,.86);--card2:#222e31;--edge:#2c3a3e;--ink:#E6EEEC;--muted:#A3B5B3;--line:rgba(200,220,220,.14);--brand:#6FBF45;--brand2:#86CF5E;--brandSoft:#203522;--chip:#243034;--shadow:0 18px 44px rgba(0,0,0,.35);}
*{box-sizing:border-box}
html,body{margin:0}
body{min-height:100vh;color:var(--ink);font:16px/1.6 "Noto Sans Thai",Sarabun,Tahoma,sans-serif;background:linear-gradient(145deg,var(--bg1),var(--bg2) 52%,var(--bg3)) fixed}
body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.5;background-image:linear-gradient(rgba(255,255,255,.55) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.55) 1px,transparent 1px);background-size:40px 40px}
button,select,input{font:inherit;color:inherit}
.wrap{position:relative;max-width:1180px;margin:0 auto;padding:12px 16px 120px}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 14px;border-radius:18px;background:var(--card);border:1px solid var(--edge);box-shadow:var(--shadow);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700}
.brand i{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#17333a;color:#fff;font-style:normal;font-size:13px}
.brand small{display:block;font-weight:400;font-size:12px;color:var(--muted)}
.tabs{display:flex;gap:6px;background:var(--chip);padding:4px;border-radius:999px}
.tabs button{border:0;background:transparent;padding:8px 16px;border-radius:999px;cursor:pointer;min-height:40px}
.tabs button[aria-selected="true"]{background:var(--brand);color:#fff;font-weight:700}
.card{background:var(--card);border:1px solid var(--edge);border-radius:22px;box-shadow:var(--shadow);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.card,.top{background:var(--card2)}}
.head{margin-top:12px;padding:16px 18px}
.chip{display:inline-block;font-size:13px;font-weight:700;color:var(--brand);background:var(--brandSoft);padding:2px 12px;border-radius:999px}
.head h1{margin:6px 0 2px;font-size:clamp(22px,3.4vw,30px);line-height:1.3}
.head .row{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;flex-wrap:wrap}
.count{font-weight:700;color:var(--muted)}
.scenes{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.scenes button{border:1px solid var(--line);background:var(--card2);border-radius:999px;padding:6px 12px;min-height:38px;cursor:pointer;font-size:14px}
.scenes button.cur{border-color:var(--brand);background:var(--brandSoft);color:var(--brand);font-weight:700}
.grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:12px;margin-top:12px}
.stage{position:relative;padding:10px;overflow:hidden}
.canvas{position:relative;border-radius:16px;background:#FBFAF5;border:1px solid #dfe6e4;overflow:hidden;min-height:120px}
.canvas svg{display:block;width:100%;height:auto}
.cam{position:relative;transform-origin:0 0;will-change:transform}
.ztag{position:absolute;left:12px;top:12px;z-index:2;display:none;padding:6px 14px;border-radius:12px;background:rgba(255,255,255,.95);color:#1F3237;font-weight:700;font-size:17px;box-shadow:0 4px 14px rgba(0,0,0,.15);border-left:5px solid var(--bio)}
.canvas.zoomed .ztag:not(:empty){display:block}
.canvas.zoomed .cam .lbl{display:none}
.pinlbl{position:absolute;padding:3px 10px;border-radius:10px;background:rgba(255,255,255,.94);color:#1F3237;font-size:15px;font-weight:700;line-height:1.3;box-shadow:0 2px 8px rgba(0,0,0,.15);pointer-events:none;white-space:nowrap;transform-origin:0 0;transform:scale(var(--inv,1)) translate(0,-50%)}
.pinlbl.right{transform:scale(var(--inv,1)) translate(-100%,-50%)}
.pinlbl small{display:block;font-weight:400;font-size:12px;color:#56696E}
.pinlbl.cur{outline:2px solid var(--bio)}
.canvas .tg.photo .ring{opacity:0}
.canvas .tg.photo.focus{filter:none}
.canvas .tg.photo.focus .ring{opacity:1}
.nav-arrow{position:absolute;bottom:20px;width:44px;height:44px;border-radius:50%;border:1px solid #dfe6e4;background:rgba(255,255,255,.92);color:#1F3237;cursor:pointer;font-size:20px;box-shadow:0 4px 12px rgba(0,0,0,.12)}
.nav-arrow.prev{left:16px}.nav-arrow.next{right:16px}
.nav-arrow[disabled]{opacity:.3;cursor:default}
.laser{position:absolute;width:0;height:0;pointer-events:none;opacity:0;left:0;top:0;z-index:5;transition:opacity .25s}
.laser.on{opacity:1}
.laser i{position:absolute;display:block;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:radial-gradient(circle,#ffffff 0 25%,#ff3b45 55%,#e5484d 100%);box-shadow:0 0 0 3px rgba(255,59,69,.45),0 0 18px 6px rgba(229,72,77,.95);pointer-events:none;animation:none}

.cc{position:absolute;left:20px;right:20px;bottom:18px;padding:8px 12px;border-radius:12px;background:rgba(18,30,33,.82);color:#fff;font-size:15px;line-height:1.5;display:none}
.side{padding:16px;display:flex;flex-direction:column;gap:12px}
.say{padding:14px;border-radius:16px;background:var(--card2);border:1px solid var(--line)}
.say b{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.say p{margin:6px 0 0;font-size:17px;min-height:3.2em}
.pts h3{margin:0 0 6px;font-size:15px}
.pts ol{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.pts li button{width:100%;text-align:left;border:1px solid var(--line);background:var(--card2);border-radius:12px;padding:8px 10px;cursor:pointer;min-height:42px;opacity:.45}
.pts li button.seen{opacity:1}
.pts li button.cur{border-color:var(--bio);box-shadow:0 0 0 2px rgba(14,159,110,.18);font-weight:700}
.player{position:fixed;left:50%;transform:translateX(-50%);bottom:10px;width:min(1148px,calc(100% - 20px));padding:10px 14px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;z-index:5}
.who{display:flex;align-items:center;gap:10px;min-width:0}
.avatar{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--brandSoft);color:var(--brand);flex:none}
.who small{display:block;color:var(--muted);font-size:12px}
.seek{display:flex;align-items:center;gap:10px}
.seek input{flex:1;accent-color:var(--brand);min-height:30px}
.time{font-variant-numeric:tabular-nums;font-size:13px;color:var(--muted);white-space:nowrap}
.ctrl{display:flex;align-items:center;gap:6px}
.ctrl button,.ctrl select{border:1px solid var(--line);background:var(--card2);border-radius:999px;min-width:42px;height:42px;cursor:pointer;padding:0 10px}
.ctrl .play{width:52px;height:52px;border:0;background:var(--brand);color:#fff;font-size:20px}
.ctrl button[aria-pressed="true"]{border-color:var(--brand);color:var(--brand);font-weight:700}
/* ----- SVG states ----- */
.canvas .lbl{opacity:0}
.canvas .lline.lbl.on{opacity:.55}.canvas .lline.lbl.cur{opacity:1}
.canvas .lbl.on{opacity:1}
.canvas .lbl.cur text{fill:var(--bio)}
.canvas .rv{opacity:.2}
.canvas .rv.seen{opacity:1}
.canvas .tg.focus{filter:drop-shadow(0 0 5px rgba(14,159,110,.95)) drop-shadow(0 0 2px rgba(14,159,110,.95))}
@media (prefers-reduced-motion:no-preference){
  .cam{transition:transform .75s cubic-bezier(.3,.7,.2,1)}
  .canvas .lbl,.canvas .rv{transition:opacity .35s}
  .laser{transition:left .45s ease,top .45s ease,opacity .25s}
  .laser.on{animation:pulse 1.4s infinite}
  @keyframes pulse{50%{box-shadow:0 0 0 9px rgba(229,72,77,.12),0 0 22px rgba(229,72,77,.9)}}
}
/* ----- quiz ----- */
.quiz{margin-top:12px;padding:18px}
.qnav{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.qnav button{min-width:40px;min-height:40px;border-radius:10px;border:1px solid var(--line);background:var(--card2);cursor:pointer}
.qnav button.cur{border-color:var(--brand);font-weight:700}
.qnav button.ok{background:#E3F5EA;color:#0E6B45}.qnav button.bad{background:#FBE7E6;color:#9B2C25}
.qstem{font-size:18px;font-weight:700;margin:4px 0 10px;white-space:pre-line}
.qfig{display:block;width:100%;max-width:720px;border-radius:14px;border:1px solid #dfe6e4;background:#FBFAF5;margin-bottom:10px}
.opts{display:grid;gap:8px}
.opt{display:flex;gap:10px;align-items:center;text-align:left;min-height:48px;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;background:var(--card2);cursor:pointer}
.opt[aria-pressed="true"]{border-color:#5B6E8C;box-shadow:0 0 0 2px rgba(91,110,140,.18)}
.opt.correct{border-color:#0E7A55;background:#E3F5EA;color:#0B4F37}.opt.wrong{border-color:#B42318;background:#FBE7E6;color:#7A1A12}
.qrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.btn{min-height:44px;padding:8px 18px;border-radius:999px;border:0;background:var(--brand);color:#fff;font-weight:700;cursor:pointer}
.btn.ghost{background:var(--card2);color:var(--ink);border:1px solid var(--line);font-weight:600}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.fb{margin-top:12px;padding:12px 14px;border-radius:14px}
.fb.ok{background:#E3F5EA;color:#0B4F37}.fb.bad{background:#FBE7E6;color:#7A1A12}
.fb p{margin:6px 0 0;font-weight:400}
.note{font-size:12px;color:var(--muted);margin-top:14px}
@media (max-width:860px){
  .pinlbl:not(.cur){display:none}
  .canvas svg .lbl:not(.cur){display:none}
  .canvas .ztag:not(:empty){display:block;font-size:15px}
  .canvas .lline:not(.cur){display:none}
  .pinlbl{font-size:14px}
  .grid{grid-template-columns:1fr}
  .player{grid-template-columns:1fr;gap:6px;padding:8px 10px}
  .who{display:none}
  .ctrl{justify-content:space-between}
  .ctrl button,.ctrl select{min-width:40px;height:40px;padding:0 8px}
  .cc.show{display:block;position:static;margin-top:8px;background:var(--card2);color:var(--ink);border:1px solid var(--line)}
  .nav-arrow{bottom:auto;top:calc(50% - 19px)}
  .say{display:none}
  .wrap{padding-bottom:150px}
  .nav-arrow{width:38px;height:38px;font-size:17px}
  .nav-arrow.prev{left:12px}.nav-arrow.next{right:12px}
}
.fxpick{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px}
.fxpick select{border:1px solid var(--line);background:var(--card2);border-radius:999px;padding:4px 10px;min-height:36px}
.canvas .spot-shade{pointer-events:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ปุ่มขยาย/ย่อภาพฝั่งซ้าย (16 ต.ค.) */
.stage-full{position:absolute;right:18px;top:18px;z-index:6;min-height:40px;padding:6px 14px;border-radius:12px;border:1px solid #dfe6e4;background:rgba(255,255,255,.95);color:#1F3237;cursor:pointer;font-size:15px;font-weight:700;box-shadow:0 4px 12px rgba(0,0,0,.14)}
.stage-full:focus-visible{outline:3px solid var(--bio)}
body.stage-expanded{overflow:hidden}
body.stage-expanded .stage{position:fixed;left:8px;right:8px;top:8px;bottom:92px;z-index:20;margin:0;background:#fff;display:flex;align-items:center;justify-content:center}
body.stage-expanded .stage .canvas{flex:0 0 auto}
body.stage-expanded .player{z-index:40}
body.stage-expanded .nav-arrow{bottom:16px}


