:root{--paper:#EEF1F5;--sheet:#fff;--ink:#1B2433;--ink2:#5A6578;--line:#D5DBE5;--mag:#C2185B;--teal:#0E7C86;--amber:#A15C00;--red:#B3261E}
*{box-sizing:border-box}body{margin:0;font-family:'IBM Plex Sans Thai','Noto Sans Thai',system-ui,sans-serif;background:var(--paper);color:var(--ink);line-height:1.55;font-size:14px}
a{color:var(--mag)}h1{font-size:20px;margin:0 0 4px}h2{font-size:16px;margin:0 0 12px}
.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.top{background:var(--ink);color:#fff}.stripes{height:8px;background:repeating-linear-gradient(-55deg,#fff 0 12px,var(--mag) 12px 24px)}
.bar{max-width:1200px;margin:0 auto;padding:10px 16px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between}
.logo{font-size:17px}.bar nav{display:flex;flex-wrap:wrap;gap:4px}.bar nav a{color:#C9D1DE;text-decoration:none;padding:6px 10px;border-radius:6px}
.bar nav a.on,.bar nav a:hover{background:#2A3547;color:#fff}
.wrap{max-width:1200px;margin:0 auto;padding:16px}
.card{background:var(--sheet);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:14px}.narrow{max-width:400px;width:100%}
label{display:block;font-weight:600;font-size:13px;margin-bottom:10px}
input,select,textarea{display:block;width:100%;margin-top:4px;font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:#fff}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--mag);box-shadow:0 0 0 3px #FCE4EE}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0 12px}
.btn{display:inline-block;font:inherit;font-weight:600;font-size:13px;padding:7px 12px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:6px;cursor:pointer;text-decoration:none}
.btn:hover{border-color:var(--ink2)}.btn.primary{background:var(--mag);border-color:var(--mag);color:#fff}.btn.danger{color:var(--red)}
.btn.wide{width:100%;text-align:center;padding:10px}.btn.sm{padding:4px 9px;font-size:12px}
.alert{padding:9px 12px;border-radius:6px;margin:0 0 12px}.alert.ok{background:#DDF2F3;color:#064B51}.alert.err{background:#FBE3E1;color:var(--red)}
.muted{color:var(--ink2)}.small{font-size:12px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.stats>*{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;text-decoration:none;color:var(--ink)}
.stats b{display:block;font-size:24px}.stats span{color:var(--ink2);font-size:12px}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.filters input{flex:1;min-width:200px;margin:0}.filters select{width:auto;margin:0}
.table{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:10px}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:12px;color:var(--ink2);background:#F7F8FA}table.compact td{padding:4px 6px;font-size:12px}
td.acts{white-space:nowrap}.empty{text-align:center;color:var(--ink2);padding:30px}
code{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;background:var(--paper);padding:2px 6px;border-radius:4px}.copy{cursor:pointer}
.mono{font-family:ui-monospace,Consolas,monospace}
.tag{font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--paper);color:var(--ink2)}
.tag.ok{background:#DDF2F3;color:var(--teal)}.tag.warn{background:#FFF1DC;color:var(--amber)}.tag.err{background:#FBE3E1;color:var(--red)}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.row .grow{flex:1;min-width:0}.device{padding:8px 0;border-top:1px solid var(--line)}
form.inline{display:inline}form.inline input[type=number]{display:inline-block;margin:0 4px 0 0;padding:6px}
@media(max-width:640px){.stats{grid-template-columns:1fr 1fr}}
