:root{
  --bg:#eef0f3; --panel:#fff; --line:#d6dbe2; --fg:#1b2230; --muted:#5d6878;
  --accent:#2c5a8c; --accent-soft:#e1eaf4;
  --ok:#1f7a52; --ok-bg:#dff1e8; --dps:#4a5568; --dps-bg:#e9ecf1; --warn:#9a5b0e; --warn-bg:#f6ead6; --err:#b23a2a; --err-bg:#f8e2de;
  --display:"Chakra Petch","IBM Plex Sans Thai",system-ui,sans-serif;
  --body:"IBM Plex Sans Thai",system-ui,sans-serif;
}
@media (prefers-color-scheme: dark){:root{
  --bg:#111620; --panel:#19202c; --line:#2c3545; --fg:#e4e8ef; --muted:#97a2b3;
  --accent:#7fb0e6; --accent-soft:#1f2e42;
  --ok:#6fd3a2; --ok-bg:#16352a; --dps:#b9c2d0; --dps-bg:#242c3a; --warn:#e7b46a; --warn-bg:#3a2b14; --err:#f08b7b; --err-bg:#3b1e1a;
  color-scheme:dark}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.55 var(--body)}
a{color:var(--accent)}
.wrap{max-width:1040px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
.top{background:var(--panel);border-bottom:1px solid var(--line)}
.top-in{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-block:12px;flex-wrap:wrap}
.brand{font:700 20px var(--display);color:var(--fg);text-decoration:none}
.brand span{color:var(--accent)}
.nav{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.main{padding-block:24px 48px;display:grid;gap:20px}
.foot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;padding-block:20px 32px;color:var(--muted);font-size:13px;border-top:1px solid var(--line)}
h1,h2,h3{font-family:var(--display);margin:0 0 8px;text-wrap:balance}
h1{font-size:26px} h2{font-size:18px} h3{font-size:15px;margin-top:16px}
p{margin:0 0 10px}
.muted{color:var(--muted)} .small{font-size:13px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px}
.narrow{max-width:520px}
.hero{padding-block:48px;max-width:640px}
.hero h1{font-size:36px}
.btn{display:inline-block;font:600 14px var(--body);background:var(--accent);color:var(--panel);border:1px solid var(--accent);border-radius:6px;padding:9px 16px;cursor:pointer;text-decoration:none}
.btn.small{padding:6px 12px;font-size:13px}
.btn-google{margin-block:8px}
.btn-danger{background:var(--err);border-color:var(--err)}
button.link{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;padding:0}
button.link.danger{color:var(--err)}
.inline{display:inline}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.flash{border-radius:6px;padding:10px 14px;background:var(--ok-bg);color:var(--ok)}
.flash-err{background:var(--err-bg);color:var(--err)}
.flash-warn{background:var(--warn-bg);color:var(--warn)}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;display:grid;gap:4px;text-decoration:none;color:var(--fg)}
.card:hover{border-color:var(--accent)}
.row{display:flex;gap:6px;flex-wrap:wrap}
.pill{font-size:12px;border-radius:999px;padding:1px 9px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}
.pill-trial{background:var(--warn-bg);color:var(--warn)}
.pill-locked,.pill-disabled{background:var(--err-bg);color:var(--err)}
.pill-free,.pill-paid{background:var(--ok-bg);color:var(--ok)}
.form{display:grid;gap:6px;max-width:460px;margin-top:8px}
.form label{font-weight:500;font-size:14px}
input,select{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:8px 10px;width:100%}
.check{display:flex;gap:8px;align-items:flex-start;font-weight:400!important}
.check input{width:auto;margin-top:4px}
.slug{display:flex;align-items:center;gap:4px}
.slug span{color:var(--muted);white-space:nowrap}
.row-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px;max-width:none;margin-top:16px}
.row-form input{flex:1;min-width:180px}
.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;max-width:none;align-items:end}
.head-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
.tabs{display:flex;gap:4px;flex-wrap:wrap}
.tabs a{padding:6px 12px;border-radius:6px;text-decoration:none;color:var(--muted)}
.tabs a.on{background:var(--accent-soft);color:var(--accent);font-weight:600}
.tbl{width:100%;border-collapse:collapse;font-size:14px;display:block;overflow-x:auto}
.tbl th{text-align:left;font-weight:500;color:var(--muted);font-size:13px;padding:6px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:8px 10px;border-top:1px solid var(--line)}
.copy{display:flex;gap:8px;margin:8px 0 4px}
.steps{margin:0;padding-left:20px;display:grid;gap:6px}
.steps li.done{color:var(--muted);text-decoration:line-through}
.danger-zone{border-color:var(--err)}
.prose{max-width:720px}
.prose h2{margin-top:16px}
code{background:var(--accent-soft);padding:1px 5px;border-radius:4px}
.lang{position:relative}
.lang summary{cursor:pointer;list-style:none;font-weight:600;font-size:13px;border:1px solid var(--line);border-radius:6px;padding:3px 9px}
.lang summary::-webkit-details-marker{display:none}
.lang-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px;display:grid;min-width:170px;z-index:5}
.lang-menu a{padding:6px 10px;border-radius:6px;text-decoration:none;color:var(--fg)}
.lang-menu a[aria-current]{background:var(--accent-soft);color:var(--accent)}
/* part 2 */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl td.num,.tbl th.num,.num{text-align:right;font-variant-numeric:tabular-nums}
.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.stale{color:var(--warn);font-weight:600}
a.pill{text-decoration:none}
.pill-on{background:var(--accent);color:var(--panel)}
.pill-free{background:var(--ok-bg);color:var(--ok)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle;background:var(--muted)}
.dot-online{background:var(--ok)} .dot-recent{background:var(--accent)} .dot-away{background:var(--warn)} .dot-gone{background:var(--err)}
tr.p-gone td{color:var(--muted)}
.members.only-on tbody tr:not(.p-online){display:none}
.dropzone{display:block;border:2px dashed var(--line);border-radius:8px;padding:28px 16px;text-align:center;color:var(--muted);cursor:pointer}
.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.warn-zone{border-color:var(--warn);background:var(--warn-bg)}
.charcard{display:grid;gap:2px;border:1px solid var(--accent);background:var(--accent-soft);border-radius:8px;padding:10px 14px}
.act-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;align-items:end;margin-top:10px}
.act-form label{display:grid;gap:4px;font-size:13px}
.act-form label.check{display:flex;align-items:center;gap:6px}
details.edit summary{cursor:pointer;color:var(--accent)}
details.edit[open]{min-width:min(640px,80vw)}
select[size]{width:100%}
[hidden]{display:none!important}
/* part 3 */
.btn.ghost{background:var(--panel);color:var(--fg);border-color:var(--line)}
.btn.ghost:hover{border-color:var(--accent)}
.btn:disabled{opacity:.6;cursor:wait}
button.pill{border:0;cursor:pointer;font:inherit;font-size:12px}
.plain{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:4px}
.wrap-gap{gap:10px;align-items:center;margin:10px 0}
.sess-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.sess{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px;display:grid;gap:10px;align-content:start}
.sess-live{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.sess-cancelled{opacity:.6}
.sess-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.sess-body{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center}
.sess-foot{display:flex;gap:8px;flex-wrap:wrap}
.phase-live{background:var(--accent);color:var(--panel)}
.phase-ended{background:var(--warn-bg);color:var(--warn)}
.phase-closed{background:var(--ok-bg);color:var(--ok)}
.phase-cancelled{background:var(--err-bg);color:var(--err)}
.att{font-weight:600}
.att-present{color:var(--ok)} .att-leave{color:var(--accent)} .att-gone{color:var(--warn)} .att-absent{color:var(--err)}
button.att-present{background:var(--ok-bg)} button.att-leave{background:var(--accent-soft)} button.att-gone{background:var(--warn-bg)} button.att-absent{background:var(--err-bg)}
button.pill.pill-on{background:var(--accent);color:var(--panel)}
.att-sel{width:auto;min-width:110px;padding:5px 8px;font-weight:600}
select.att-present{color:var(--ok)} select.att-leave{color:var(--accent)} select.att-gone{color:var(--warn)} select.att-absent{color:var(--err)}
tr.changed td{background:var(--accent-soft)}
.savebar{position:sticky;bottom:0;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;padding:10px 0;background:var(--bg);border-top:1px solid var(--line)}
.savebar input{max-width:360px}
.toolbar input[type=search]{max-width:240px}
.controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 6px}
.controls .check{align-items:center}
.controls .check input{margin-top:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.stat{background:var(--panel);padding:10px 12px}
.stat b{display:block;font:600 22px var(--display);font-variant-numeric:tabular-nums}
.stat span{font-size:12px;color:var(--muted)}
.band{display:grid;gap:10px;margin-top:16px}
.band-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line);padding-bottom:6px}
.band-head h3{margin:0}
.band-head select{width:auto;padding:4px 8px}
.parties{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.party{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.party-head{display:flex;justify-content:space-between;align-items:baseline;padding:7px 10px;border-bottom:1px solid var(--line)}
.party-head strong{font-family:var(--display)}
.party-head .avg{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.party.short .avg{color:var(--warn)}
.m,.list{display:grid}
.list{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden;max-height:460px;overflow-y:auto}
.slot{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:8px;width:100%;text-align:left;font:inherit;font-size:14px;
  color:var(--fg);background:none;border:0;border-top:1px dashed var(--line);padding:5px 10px;cursor:pointer;min-height:44px}
.m .slot:first-child,.list .slot:first-child{border-top:0}
.slot:hover{background:var(--accent-soft)}
.slot.sel{background:var(--accent);color:var(--panel)}
.slot.sel .c,.slot.sel .g{color:var(--panel)}
.slot.hit{box-shadow:inset 3px 0 0 var(--warn)}
.slot.empty{display:block;color:var(--muted);font-size:13px}
.chip{font-size:11px;font-weight:600;border-radius:4px;padding:1px 6px;min-width:42px;text-align:center}
.r-heal{color:var(--ok);background:var(--ok-bg)} .r-tank{color:var(--warn);background:var(--warn-bg)} .r-dps{color:var(--dps);background:var(--dps-bg)}
.who{min-width:0}
.who .n{display:block;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.who .c{display:block;font-size:12px;color:var(--muted)}
.g{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.sub-tag{font-size:11px;color:var(--accent);font-weight:600}
.slot.sel .sub-tag{color:var(--panel)}
.offmark{font-size:11px;color:var(--err);background:var(--err-bg);border-radius:4px;padding:0 5px}
.warnline{padding:6px 10px;font-size:12px;color:var(--err);border-top:1px solid var(--line)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;align-items:start}
.cols input[type=search]{max-width:200px;padding:5px 8px}
.selbar{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--accent);border-radius:8px;padding:8px 12px;margin-top:12px}
.selbar #selname{font-weight:600;flex:1 1 200px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:20px;background:var(--fg);color:var(--bg);padding:8px 14px;border-radius:6px;font-size:13px;z-index:9}
textarea{width:100%;min-height:140px;font:12px ui-monospace,monospace;background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:6px;margin-top:8px}
details.panel summary{cursor:pointer;font-weight:600}
.warnlist{margin:0;padding-left:18px;display:grid;gap:4px;font-size:14px}
.nextlist li{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}
@media (max-width:520px){.parties{grid-template-columns:1fr}.tabs a{padding:6px 8px}}
.toolbar>strong{flex:1 1 160px;text-align:center}
.mates{margin-top:4px}.mates li.me{font-weight:600;color:var(--accent)}
details.more{margin-top:12px}details.more>summary{cursor:pointer;color:var(--accent);margin-bottom:10px}
.ck{color:var(--ok);font-weight:700}.slot.sel .ck{color:var(--panel)}
.geartop{list-style:none;margin:0;padding:0;display:grid}
.geartop li{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:6px 4px;border-top:1px dashed var(--line)}
.geartop li:first-child{border-top:0}
.geartop .rk{font:600 16px var(--display);color:var(--muted);text-align:center}
.geartop li:nth-child(-n+3) .rk{color:var(--warn)}
.geartop li.me{background:var(--accent-soft);border-radius:6px}
.att-late,.att-early{color:var(--warn)}
button.att-late,button.att-early{background:var(--warn-bg)}
select.att-late,select.att-early{color:var(--warn)}
.slot.t-ck{background:#fde7cc}.slot.t-ok{background:var(--ok-bg)}.slot.t-bad{background:var(--err-bg)}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .slot.t-ck{background:#4a3313}}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center}
.sw{display:inline-block;width:14px;height:14px;border-radius:3px;border:1px solid var(--line);vertical-align:middle;margin-right:4px}
.sw.t-ck{background:#fde7cc}.sw.t-ok{background:var(--ok-bg)}.sw.t-bad{background:var(--err-bg)}
:root{--st-ck:#fde7cc;--st-half:#fff3bf;--st-gone:#ece3f7}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--st-ck:#4a3313;--st-half:#3f3a14;--st-gone:#2f2540}}
:root[data-theme="dark"]{--st-ck:#4a3313;--st-half:#3f3a14;--st-gone:#2f2540}
.slot.t-ck,.sw.t-ck{background:var(--st-ck)}
.slot.t-present,.sw.t-present{background:var(--ok-bg)}
.slot.t-late,.sw.t-late,.slot.t-early,.sw.t-early{background:var(--st-half)}
.slot.t-leave,.sw.t-leave{background:var(--accent-soft)}
.slot.t-gone,.sw.t-gone{background:var(--st-gone)}
.slot.t-absent,.sw.t-absent{background:var(--err-bg)}
.slot.sel{background:var(--accent)!important}
.slot.mine{box-shadow:inset 4px 0 0 var(--accent);font-weight:600}div.slot{cursor:default}
dialog.pop{border:1px solid var(--line);border-radius:10px;padding:14px;width:min(420px,94vw);background:var(--bg);color:var(--fg)}
dialog.pop::backdrop{background:rgba(0,0,0,.45)}
.pop-head{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.pop-head select{flex:1;padding:6px 8px}
#pp-close{font-size:18px;padding:0 4px}
/* หน้าสมาชิก: จอกว้าง (1280px+) อันดับ Gear อยู่ซ้ายมือ หน้าเว็บขยายให้กิจกรรมยังกว้างเท่าเดิม / จอแคบเป็นป๊อปอัป */
.mh-grid{display:grid;gap:18px;grid-template-columns:1fr;grid-template-areas:"main" "side";align-items:start}
.mh-main{grid-area:main;min-width:0}.mh-side{grid-area:side}
.mh-grid .mh-main>.band{margin-top:0}
@media (min-width:1280px){.mh-grid{grid-template-columns:300px minmax(0,1fr);grid-template-areas:"side main"}
  .mh-side .panel{position:sticky;top:12px}}

.gear-fab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:8;box-shadow:0 4px 14px rgba(0,0,0,.2)}
#gearPop .panel{border:0;padding:0;background:none;position:static}
.pop-head .grow{flex:1}
#gearPop .band-head h2{display:none}
#profPop .form{max-width:none}
.phase-pick{border:1px solid var(--line);border-radius:6px;padding:8px 12px;margin:0}.phase-pick legend{font-weight:600;padding:0 4px}
/* ===== ธีม Night Ops (ดีไซน์ใหม่) — โทนมืดตลอด สีหลักเก็บไว้ให้สถานะ ===== */
html:root:not([data-x]){
  --bg:#0C111B; --panel:#111827; --line:#1F2838; --fg:#E6EBF3; --muted:#8C99AE;
  --accent:#E9EEF6; --accent-soft:#1B2434; --link:#C9D4E5; --gold:#E8B04A;
  --ok:#8FDBB2; --ok-bg:#12261C; --dps:#AEB9CA; --dps-bg:#1B2434; --warn:#EBD58A; --warn-bg:#29240F; --err:#F2A19C; --err-bg:#2D1618;
  --blue:#9DC0F7; --blue-bg:#13213A; --st-ck:#2A1D13; --st-half:#29240F; --st-gone:#221A33;
  --display:"Kanit","IBM Plex Sans Thai",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  color-scheme:dark}
a{color:var(--link)} a:hover{color:#fff}
button.link{color:var(--link)}
h1,h2,h3{font-weight:600} h1{font-size:28px}
.top{background:#0F1522}
.brand{font-weight:600}.brand span{color:var(--gold)}
.panel,.card,.sess,.party,.list{border-radius:14px}
.btn{border-radius:10px;min-height:40px;padding:9px 16px}
.btn.small{min-height:34px;border-radius:8px}
.btn.ghost{background:#141B29;border-color:#2A3548}
.tabs a{padding:8px 14px;border-radius:8px;color:#9AA7BB}
.tabs a.on{background:#1B2434;color:#fff}
input,select,textarea{background:#0C111B;border-color:#2A3548;border-radius:8px}
.stats{gap:10px;background:none;border:0;border-radius:0;overflow:visible}
.stat{background:#121927;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.stat b,.num,.g,.party-head .avg{font-family:var(--mono)}
.stat b{font-weight:500}
.sess-live{border-color:#3B4C68;box-shadow:none;background:#131C2C}
.party{background:#0D1320;border-color:#1C2535}
.slot{border-top:1px solid #182131}
.att-leave{color:var(--blue)} button.att-leave{background:var(--blue-bg)} select.att-leave{color:var(--blue)}
.slot.t-leave,.sw.t-leave{background:var(--blue-bg)}
.slot.t-ck{box-shadow:inset 4px 0 0 #F08A3C}
.slot.t-present{box-shadow:inset 4px 0 0 #3FB97A}
.slot.t-late,.slot.t-early{box-shadow:inset 4px 0 0 #E5C04A}
.slot.t-leave{box-shadow:inset 4px 0 0 #4C8DF0}
.slot.t-gone{box-shadow:inset 4px 0 0 #A777E8}
.slot.t-absent{box-shadow:inset 4px 0 0 #E5534B}
.sw.t-ck{border-color:#F08A3C}.sw.t-present{border-color:#3FB97A}.sw.t-late,.sw.t-early{border-color:#E5C04A}
.sw.t-leave{border-color:#4C8DF0}.sw.t-gone{border-color:#A777E8}.sw.t-absent{border-color:#E5534B}
.slot.mine{outline:2px solid var(--accent);outline-offset:-2px}
.geartop li:nth-child(-n+3) .rk{color:var(--gold)}
.geartop .rk{font-family:var(--mono);font-weight:500}
.charcard{border-color:#3B4C68;background:#131C2C}
.dropzone:hover,.dropzone.over{border-color:#3B4C68;background:#131C2C;color:var(--fg)}
dialog.pop{border-radius:16px;background:var(--panel)}
.gear-fab{box-shadow:0 4px 14px rgba(0,0,0,.5)}
/* ผังทัพ: แบ่งซ้าย (รายชื่อ/สำรอง) ขวา (ผัง) บนจอกว้าง */
.lu-layout{display:grid;gap:18px;grid-template-columns:minmax(0,1fr);grid-template-areas:"board" "side"}
.lu-board{grid-area:board;min-width:0}.lu-side{grid-area:side;min-width:0}
.lu-side .band:first-child{margin-top:0}
@media (min-width:1100px){
  .lu-layout{grid-template-columns:300px minmax(0,1fr);grid-template-areas:"side board";
    width:min(1400px,calc(100vw - 64px));margin-left:calc(50% - min(700px,calc(50vw - 32px)))}
  .lu-side{position:sticky;top:12px;align-self:start;max-height:calc(100vh - 24px);overflow-y:auto;padding-right:4px}
  .lu-side .list{max-height:none}
  .lu-board>.band:first-child{margin-top:0}
}
