:root{--navy:#1E3A8A;--navy-hover:#172F6E;--ink:#0F1E3A;--muted:#55637F;--soft:#EAF1FF;--ground:#F3F6FB;--line:#DCE3EF;--line-strong:#C6D2E6;--on-navy-muted:#C7D4F2;--warn-bg:#FFF4E5;--warn-line:#E8B36A;--warn-ink:#7A4A00}*{box-sizing:border-box}body,html{margin:0}body{background:var(--ground);color:var(--ink);font-family:IBM Plex Sans Thai,system-ui,sans-serif;font-size:15px;line-height:1.5}a{color:var(--navy)}a:hover{color:var(--navy-hover)}h1{font-size:26px;font-weight:700}h1,h2{margin:0}h2{font-size:16px;font-weight:600}input,select{height:44px;width:100%;border:1px solid var(--line-strong);border-radius:10px;padding:0 12px;font:inherit;color:var(--ink);background:#fff}input[type=checkbox]{width:20px;height:20px;accent-color:var(--navy)}label.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500}label.check{display:flex;gap:10px;min-height:44px;font-size:14px}.btn,label.check{align-items:center}.btn{height:44px;padding:0 20px;border-radius:10px;border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:inherit;font-weight:500;cursor:pointer;display:inline-flex;justify-content:center;text-decoration:none;white-space:nowrap}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:600}.btn.primary:hover{background:var(--navy-hover);color:#fff}.btn.small{height:36px;padding:0 14px;font-size:14px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px}.muted{color:var(--muted)}.small{font-size:13px}.stack{flex-direction:column;gap:14px}.row,.stack{display:flex}.row{flex-wrap:wrap;gap:10px;align-items:center}.grid-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:14px;gap:14px}.full{grid-column:1/-1}.notice{background:var(--soft);border-radius:12px;padding:14px 16px;font-size:14px}.error{background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-ink);border-radius:12px;padding:12px 14px}.error,.kv{font-size:14px}.kv{display:grid;grid-template-columns:130px minmax(0,1fr);grid-gap:8px 14px;gap:8px 14px}.kv>:nth-child(odd){color:var(--muted)}.topbar{background:var(--navy);padding:14px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.topbar,.topbar a{color:#fff}.topbar a:hover{color:var(--on-navy-muted)}.logo{width:34px;height:34px;border-radius:9px;background:#fff;padding:3px}.page{width:100%;max-width:880px;margin:0 auto;padding:36px 16px 56px;display:flex;flex-direction:column;gap:20px}.admin{min-height:100vh;display:flex;flex-wrap:wrap}.admin nav{flex:1 1 220px;max-width:100%;background:var(--navy);color:#fff;padding:20px 14px;display:flex;flex-direction:column;gap:4px}.admin nav a{color:#fff;text-decoration:none;padding:10px 12px;border-radius:10px;font-size:14px;display:flex;justify-content:space-between}.admin nav .badge,.admin nav a.on{background:#fff;color:var(--navy);font-weight:600}.admin nav .badge{border-radius:10px;padding:0 8px;font-size:12px}.admin nav a.on .badge{background:var(--navy);color:#fff}.admin main{flex:999 1 560px;min-width:0;padding:28px 28px 48px;display:flex;flex-direction:column;gap:18px}.table-box{background:#fff;border:1px solid var(--line);border-radius:16px;overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:500;color:var(--muted);font-size:13px;padding:10px 12px;white-space:nowrap}td,th{border-bottom:1px solid var(--line)}td{padding:11px 12px;font-size:14px;vertical-align:top}tr:last-child td{border-bottom:0}tr.selected td{background:var(--soft)}td .sub{font-size:12px;color:var(--muted)}.nowrap,.tag{white-space:nowrap}.tag{display:inline-block;padding:1px 8px;border-radius:8px;background:var(--soft);border:1px solid var(--line-strong);font-size:12px;margin:0 4px 4px 0}.tag.warn{background:var(--warn-bg);border-color:var(--warn-line);color:var(--warn-ink)}.pills{display:flex;flex-wrap:wrap;gap:8px;font-size:14px}.pills a{padding:6px 14px;border-radius:20px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink)}.pills a.on{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:600}.timeline{display:grid;grid-template-columns:70px minmax(0,1fr);grid-gap:10px 16px;gap:10px 16px;font-size:14px}.timeline>:nth-child(odd){color:var(--muted)}