/* MATV TV Admin · sidebar layout, light / dark (navy and gold like the TV screens) */
:root {
  --bg:#eef2f8; --card:#fff; --ink:#14213d; --muted:#5b6b86; --line:#d9e1ee; --field:#fbfcfe; --soft:#eef2f8;
  --accent:#1e6fd9; --gold:#c8902a; --ok:#2e7d32; --warn:#b26a00; --bad:#c62828;
  --side:#0b1838; --side2:#14306b; --sideink:#dbe6ff; --sidemuted:#8ea3cc; --sideon:#1e6fd9;
  --shadow:0 1px 3px rgba(10,20,50,.08);
}
:root[data-theme="dark"] {
  --bg:#0a1226; --card:#111c38; --ink:#e6ecfa; --muted:#93a4c6; --line:#22335c; --field:#0d1730; --soft:#18264a;
  --accent:#3d8bff; --gold:#f2c14e; --ok:#5fd27a; --warn:#f2b04e; --bad:#ff7a7a;
  --side:#060d1f; --side2:#0d1a3a; --sideink:#dbe6ff; --sidemuted:#7f92ba; --sideon:#2e6fe0;
  --shadow:0 1px 3px rgba(0,0,0,.4);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg:#0a1226; --card:#111c38; --ink:#e6ecfa; --muted:#93a4c6; --line:#22335c; --field:#0d1730; --soft:#18264a;
    --accent:#3d8bff; --gold:#f2c14e; --ok:#5fd27a; --warn:#f2b04e; --bad:#ff7a7a;
    --side:#060d1f; --side2:#0d1a3a; --sideink:#dbe6ff; --sidemuted:#7f92ba; --sideon:#2e6fe0;
    --shadow:0 1px 3px rgba(0,0,0,.4);
  }
}
* { box-sizing:border-box; }
html, body { background:var(--bg); }
body { margin:0; color:var(--ink); font:15px/1.5 "Sarabun","Noto Sans Thai",system-ui,sans-serif; }

/* ---------- frame ---------- */
.side { position:fixed; left:0; top:0; bottom:0; width:248px; background:linear-gradient(180deg,var(--side),var(--side2)); color:var(--sideink);
  display:flex; flex-direction:column; z-index:50; overflow-y:auto; }
.brand { font-size:19px; padding:18px 18px 10px; color:#fff; } .brand b { color:var(--gold); }
.brand.big { font-size:26px; text-align:center; color:var(--ink); padding:28px 0 8px; } .brand.big b { color:var(--accent); }
.side nav { display:flex; flex-direction:column; padding:4px 10px; gap:2px; flex:1; }
.side .grp { font-size:11px; letter-spacing:.06em; color:var(--sidemuted); margin:14px 10px 4px; text-transform:uppercase; }
.side nav a { display:flex; gap:10px; align-items:center; color:var(--sideink); text-decoration:none; padding:8px 10px; border-radius:10px; font-size:14.5px; }
.side nav a i { font-style:normal; width:22px; text-align:center; }
.side nav a:hover { background:rgba(255,255,255,.08); }
.side nav a.on { background:var(--sideon); color:#fff; }
.side .who { padding:12px 18px 16px; font-size:13px; color:var(--sideink); border-top:1px solid rgba(255,255,255,.08); }
.side .who small { color:var(--sidemuted); }
/* the settings categories of hotel / TV pages, in the sidebar */
#secnav .cats { position:static; display:flex; flex-direction:column; gap:1px; margin:6px 0 0; padding:6px 0 6px 12px; background:none; border-left:2px solid rgba(255,255,255,.12); }
#secnav .cats::before { content:"ตั้งค่าหน้าจอทีวี"; font-size:11px; letter-spacing:.06em; color:var(--sidemuted); margin:6px 6px 4px; }
#secnav .cats a { background:none; color:var(--sideink); border-radius:8px; padding:6px 10px; font-size:13.5px; white-space:normal; }
#secnav .cats a:hover { background:rgba(255,255,255,.08); }
#secnav .cats a.on { background:rgba(242,193,78,.18); color:#ffe2a0; }
.wrap { margin-left:248px; min-height:100vh; }
.top { position:sticky; top:0; z-index:40; display:flex; align-items:center; gap:10px; padding:10px 22px; background:var(--card); border-bottom:1px solid var(--line); }
.top .title { font-size:19px; font-weight:600; flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.top button { margin:0; padding:7px 12px; background:var(--soft); color:var(--ink); }
.top .menu { display:none; }
main { max-width:1180px; margin:0 auto; padding:18px 22px 40px; }
.shade { display:none; }
body.plain main.login { max-width:440px; padding-top:40px; }
@media (max-width: 900px) {
  .side { transform:translateX(-100%); transition:transform .2s; box-shadow:4px 0 20px rgba(0,0,0,.3); }
  body.open .side { transform:none; }
  body.open .shade { display:block; position:fixed; inset:0; background:rgba(0,0,0,.4); z-index:45; }
  .wrap { margin-left:0; }
  .top .menu { display:block; }
  main { padding:14px 14px 40px; }
}

/* ---------- content ---------- */
h1 { font-size:22px; margin:6px 0 14px; } h2 { font-size:17px; margin:0 0 10px; } h3 { font-size:15px; margin:18px 0 6px; }
.card { background:var(--card); border-radius:14px; padding:16px; margin:0 0 16px; box-shadow:var(--shadow); overflow-x:auto; border:1px solid var(--line); }
.narrow { max-width:520px; }
.grid2 { display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:16px; }
label { display:block; color:var(--muted); font-size:13px; margin:10px 0 4px; }
label.check { display:flex; gap:8px; align-items:center; color:var(--ink); font-size:15px; }
input, select, textarea { width:100%; font:inherit; padding:9px 11px; border:1px solid var(--line); border-radius:9px; background:var(--field); color:var(--ink); }
input[type=checkbox], input[type=radio] { width:20px; height:20px; flex:none; padding:0; accent-color:var(--accent); }
input[type=range] { padding:0; border:0; background:none; accent-color:var(--accent); }
input[type=file] { border:0; padding:6px 0; background:none; width:auto; }
.row { display:flex; gap:10px; flex-wrap:wrap; } .row > div { flex:1; min-width:140px; }
button { font:inherit; border:0; border-radius:9px; padding:9px 14px; background:var(--soft); color:var(--ink); cursor:pointer; margin-top:10px; }
button.primary { background:var(--accent); color:#fff; } button.danger { color:var(--bad); }
.btns { display:flex; flex-wrap:wrap; gap:8px; } .btns button { margin-top:6px; }
form.inline { display:flex; gap:6px; flex-wrap:wrap; } form.inline input, form.inline select { width:150px; } form.inline button { margin:0; }
table { width:100%; border-collapse:collapse; } th, td { text-align:left; padding:8px 6px; border-bottom:1px solid var(--line); vertical-align:top; }
th { color:var(--muted); font-weight:500; font-size:13px; }
table.kv th { width:120px; }
a { color:var(--accent); }
.muted { color:var(--muted); } .small { font-size:12.5px; } .bad { color:var(--bad); }
.badge { display:inline-block; padding:2px 9px; border-radius:20px; font-size:13px; background:var(--soft); white-space:nowrap; }
.badge.active { background:rgba(46,125,50,.14); color:var(--ok); } .badge.trial { background:rgba(178,106,0,.14); color:var(--warn); }
.badge.expired, .badge.suspended { background:rgba(198,40,40,.13); color:var(--bad); }

/* dashboard cards */
.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px; margin-bottom:18px; }
.stat { position:relative; background:var(--card); border:1px solid var(--line); border-radius:16px; padding:16px 16px 14px; text-decoration:none; color:var(--ink); box-shadow:var(--shadow); overflow:hidden; transition:transform .12s; }
.stat:hover { transform:translateY(-2px); }
.stat b { display:block; font-size:30px; line-height:1.15; }
.stat span { color:var(--muted); font-size:13.5px; }
.stat i { position:absolute; right:14px; top:14px; font-style:normal; font-size:22px; width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; background:var(--soft); }
.stat.ok b { color:var(--ok); } .stat.warn b { color:var(--warn); } .stat.bad b { color:var(--bad); } .stat.gold b { color:var(--gold); }
.stat.c1 i { background:rgba(30,111,217,.15); } .stat.c2 i { background:rgba(46,125,50,.15); } .stat.c3 i { background:rgba(198,40,40,.13); }
.stat.c4 i { background:rgba(178,106,0,.15); } .stat.c5 i { background:rgba(142,36,170,.14); } .stat.c6 i { background:rgba(0,137,123,.15); }
.bar { height:6px; border-radius:6px; background:var(--soft); overflow:hidden; margin-top:6px; } .bar > div { height:100%; background:var(--accent); }

.filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; } .filters > * { width:auto; flex:1; min-width:150px; } .filters button { margin:0; flex:none; }
.flash { background:var(--ink); color:var(--card); padding:10px 14px; border-radius:10px; margin-bottom:12px; }
.media { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:10px; margin-bottom:12px; }
.mitem { border:1px solid var(--line); border-radius:10px; overflow:hidden; background:#000; }
.mitem img, .mitem .vid { width:100%; aspect-ratio:16/9; object-fit:cover; display:block; }
.mitem .vid { color:#fff; display:flex; align-items:center; justify-content:center; font-size:12px; padding:6px; background:#223; word-break:break-all; }
.mbar { display:flex; align-items:center; background:var(--card); font-size:12px; padding:0 4px; }
.mbar span { flex:1; color:var(--muted); } .mbar button { margin:0; padding:4px 8px; background:none; }
code { background:var(--soft); padding:2px 6px; border-radius:6px; }
.langs { display:flex; gap:18px; flex-wrap:wrap; }
.tabs { display:flex; gap:6px; margin:16px 0 4px; border-bottom:1px solid var(--line); }
.tab, .ptab { border:0; background:none; padding:8px 14px; border-radius:8px 8px 0 0; cursor:pointer; color:var(--muted); font:inherit; margin:0; }
.tab.on, .ptab.on { background:var(--accent); color:#fff; }
.qrbox { border:1px solid var(--line); border-radius:10px; padding:8px; margin:6px 0; }
.qrbox .row { margin-top:6px; }
.banners { display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:10px; }
.bn { display:block; border:2px solid var(--line); border-radius:10px; overflow:hidden; cursor:pointer; margin:0; color:var(--ink); }
.bn input { display:none; }
.bn img { display:block; width:100%; aspect-ratio:16/9; object-fit:cover; }
.bn span { display:block; padding:4px 8px; font-size:13px; }
.bn span.none { aspect-ratio:16/9; display:flex; align-items:center; justify-content:center; background:var(--soft); }
.bn:has(input:checked) { border-color:var(--accent); box-shadow:0 0 0 2px var(--accent); }
.mstate { font-size:12px; padding:2px 6px; }
.ok { color:var(--ok); } .warn { color:var(--warn); }
.tablewrap { max-height:420px; overflow:auto; border:1px solid var(--line); border-radius:10px; }
.apptable td, .apptable th { padding:6px 10px; }
.apptable tr.on { background:rgba(30,111,217,.08); }
.apptable input.ord { width:64px; padding:5px 8px; }
.logoprev img, .logoprev .vid { max-width:100%; max-height:140px; border-radius:8px; display:block; background:var(--soft); }
.icoprev img { width:48px; height:48px; object-fit:contain; background:#33415a; border-radius:8px; padding:4px; }
.icoprev .vid { font-size:11px; }
.mitem img { object-fit:contain !important; background:#111; }
.files td, .files th { padding:5px 8px; }
.pager { display:flex; justify-content:space-between; align-items:center; margin:14px 0 6px; gap:8px; }
body.haspager { padding-bottom:76px; }
body.haspager .pager { position:fixed; left:248px; right:0; bottom:0; margin:0; z-index:30; background:var(--card); border-top:1px solid var(--line); box-shadow:0 -2px 10px rgba(0,0,0,.08); padding:10px max(16px, calc((100vw - 248px - 1140px) / 2)); }
@media (max-width: 900px) { body.haspager .pager { left:0; padding:10px 12px; } }
.pager .primary { flex:0 1 auto; }
.pager button { white-space:nowrap; margin:0; }
.pager span { text-align:center; color:var(--muted); font-size:13px; }
.pager .primary.dirty { background:var(--warn); border-color:var(--warn); }
.stepnav { display:flex; flex-wrap:wrap; gap:6px; margin:4px 0 10px; }
.stepnav a { border:1px solid var(--line); border-radius:8px; padding:3px 10px; font-size:13px; text-decoration:none; color:var(--muted); }
.stepnav a.on { border-color:var(--accent); color:var(--accent); font-weight:600; }
h4.sub { margin:6px 0 4px; font-size:16px; }
.cfstep .tablewrap { max-height:calc(100vh - 360px); min-height:180px; }
.cats a.on { background:var(--accent); color:#fff; }
.cats { display:flex; flex-wrap:wrap; gap:6px; margin:4px 0 12px; position:sticky; top:56px; z-index:3; background:var(--card); padding:6px 0; }
.cats a { background:var(--soft); border-radius:16px; padding:5px 11px; font-size:14px; text-decoration:none; color:inherit; white-space:nowrap; }
.clr { display:flex; gap:8px; align-items:center; }
.clr input[type=color] { width:52px; height:38px; padding:2px; flex:none; }
.clr .check { margin:0; }
h3[id] { scroll-margin-top:70px; }
.cfpanel > h3[id]:first-child { font-size:18px; margin-top:4px; }
.pill { display:inline-block; padding:2px 10px; border-radius:20px; background:var(--soft); font-size:12.5px; }
@media (max-width: 560px) {
  .stats { grid-template-columns:1fr 1fr; gap:10px; }
  .stat { padding:12px 12px 10px; }
  .stat b { font-size:24px; }
  .stat span { font-size:12.5px; }
  .stat i { width:34px; height:34px; font-size:17px; right:10px; top:10px; }
}
/* page sections (device / hotel page): their own group in the sidebar */
#secnav .cats[data-label]::before { content:attr(data-label); }
#secnav .pgnav { margin-bottom:6px; }
.logrow { font-size:13px; padding:5px 0; border-bottom:1px solid var(--line); }
.logrow:last-child { border-bottom:0; }
a.btn { display:inline-block; padding:8px 14px; border-radius:10px; background:var(--soft); color:var(--ink); text-decoration:none; font-size:14px; }
.grid2 > .card, .grid2 > form.card { align-self:start; }
