@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-thai-400-normal-C2DaJlKK.woff2)format("woff2"),url(/assets/sarabun-thai-400-normal-CH-UbWgg.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2)format("woff2"),url(/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2)format("woff2"),url(/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-400-normal-URPBxl-K.woff2)format("woff2"),url(/assets/sarabun-latin-400-normal-DmguIS-7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2)format("woff2"),url(/assets/sarabun-thai-600-normal-DWKeTe6a.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2)format("woff2"),url(/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2)format("woff2"),url(/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-600-normal-DMD3TROr.woff2)format("woff2"),url(/assets/sarabun-latin-600-normal-9FonlkKx.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-thai-700-normal-CbuDipM3.woff2)format("woff2"),url(/assets/sarabun-thai-700-normal-CP2-p8e-.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-vietnamese-700-normal-DrMy3BMX.woff2)format("woff2"),url(/assets/sarabun-vietnamese-700-normal-lN6N8XBT.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-ext-700-normal-CnQtP196.woff2)format("woff2"),url(/assets/sarabun-latin-ext-700-normal-ykw7DJpk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-700-normal-DQKyWxHq.woff2)format("woff2"),url(/assets/sarabun-latin-700-normal-DUuqj4Ju.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--brand:#1f2fc9;--brand-dark:#1622a0;--brand-soft:#e8ebff;--accent:#38d4e0;--bg:#f4f6fb;--surface:#fff;--text:#1b1f2a;--muted:#5f6677;--line:#dde1ea;--danger:#c62828;--danger-soft:#fdecec;--warn:#9a6200;--warn-soft:#fff4dc;--ok:#2e7d32;--ok-soft:#e7f5e8;--radius:12px;--shadow:0 1px 2px #141e3c0f, 0 2px 8px #141e3c0d;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:Sarabun,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}h1,h2,h3{margin:0 0 .5rem;line-height:1.3}h1{font-size:1.35rem}h2{font-size:1.1rem}h3{font-size:1rem}p{margin:0 0 .75rem}a{color:var(--brand)}.topbar{z-index:20;background:var(--brand);color:#fff;padding:env(safe-area-inset-top) 0 0;position:sticky;top:0}.topbar-inner{align-items:center;gap:.75rem;max-width:1100px;min-height:52px;margin:0 auto;padding:.6rem 1rem;display:flex;position:relative}.topbar a{color:#fff;text-decoration:none}.brand{white-space:nowrap;align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;display:flex}.brand img{background:#fff;border-radius:7px;width:30px;height:30px}.topnav{flex-wrap:wrap;gap:.25rem;margin-left:1rem;display:flex}.topnav a{opacity:.9;border-radius:8px;padding:.35rem .7rem;font-size:.95rem}.topnav a.active,.topnav a:hover{opacity:1;background:#ffffff29}.spacer{flex:1}.menu-button{color:#fff;font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #ffffff73;border-radius:8px;max-width:45vw;padding:.35rem .7rem;overflow:hidden}.menu{background:var(--surface);color:var(--text);border-radius:var(--radius);min-width:220px;position:absolute;top:calc(100% + 4px);right:1rem;overflow:hidden;box-shadow:0 8px 24px #141e3c2e}.menu a,.menu button{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:0;padding:.75rem 1rem;text-decoration:none;display:block}.menu a:hover,.menu button:hover{background:var(--brand-soft)}.menu .menu-head{border-bottom:1px solid var(--line);color:var(--muted);padding:.75rem 1rem;font-size:.9rem}.page{max-width:1100px;padding:1rem 1rem calc(2rem + env(safe-area-inset-bottom));margin:0 auto}.page.narrow{max-width:720px}.page-head{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.page-head h1{flex:1;min-width:12rem;margin:0}@media (width<=760px){.topnav{display:none}}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem;padding:1rem}.card>:last-child{margin-bottom:0}.muted{color:var(--muted)}.small{font-size:.875rem}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.empty{text-align:center;color:var(--muted);padding:2rem 1rem}.field{margin-bottom:1rem}.field>label,.field>.label{margin-bottom:.35rem;font-weight:600;display:block}.field .hint{color:var(--muted);margin-top:.25rem;font-size:.85rem}.required:after{content:" *";color:var(--danger)}input[type=text],input[type=password],input[type=search],select{width:100%;font:inherit;color:var(--text);border:1px solid var(--line);background:#fff;border-radius:10px;min-height:44px;padding:.65rem .75rem;font-size:16px}input:focus,select:focus{outline:2px solid var(--brand);outline-offset:-1px;border-color:var(--brand)}input:read-only{background:#f4f5f8}.checkbox{cursor:pointer;align-items:center;gap:.6rem;min-height:44px;display:flex}.checkbox input{width:22px;height:22px;accent-color:var(--brand);flex-shrink:0}.btn{font:inherit;cursor:pointer;white-space:nowrap;background:var(--brand);color:#fff;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;min-height:44px;padding:.6rem 1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--brand-dark)}.btn:disabled{opacity:.55;cursor:default}.btn.secondary{color:var(--brand);border-color:var(--line);background:#fff}.btn.secondary:hover{background:var(--brand-soft)}.btn.danger{color:var(--danger);background:#fff;border-color:#f0c4c4}.btn.danger:hover{background:var(--danger-soft)}.btn.small{min-height:36px;padding:.3rem .7rem;font-size:.9rem}.btn.block{width:100%}.btn.big{min-height:56px;font-size:1.1rem}.link-button{font:inherit;color:var(--brand);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.dialog-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.alert{background:var(--brand-soft);border-radius:10px;margin-bottom:1rem;padding:.75rem 1rem}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.badge{white-space:nowrap;color:var(--muted);background:#eef0f4;border-radius:999px;padding:.1rem .55rem;font-size:.8rem;font-weight:600;display:inline-block}.badge.admin{background:var(--brand-soft);color:var(--brand)}.badge.deleted{background:var(--danger-soft);color:var(--danger)}.table-wrap{-webkit-overflow-scrolling:touch;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}table.table{border-collapse:collapse;width:100%;font-size:.95rem}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:.55rem .6rem}.table th{color:var(--muted);white-space:nowrap;background:#f8f9fc;font-size:.85rem;font-weight:600}.table tr.dim td{color:var(--muted)}.table select{min-width:8.5rem;min-height:36px;padding:.3rem .5rem}.table .check{width:2.5rem}.table .check input{width:20px;height:20px;accent-color:var(--brand)}.table .actions{white-space:nowrap;text-align:right}.filters{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));align-items:end;gap:.5rem .75rem;margin-bottom:1rem;display:grid}.filters .field{margin-bottom:0}.bulk-bar{z-index:10;background:var(--brand-soft);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.6rem .75rem;display:flex;position:sticky;top:60px}.bulk-bar select{width:auto;min-height:38px;padding:.3rem .5rem}.dialog-backdrop{z-index:40;background:#0f142873;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);width:100%;max-width:560px;max-height:92vh;padding:1.25rem 1rem calc(1rem + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;overflow-y:auto}@media (width>=640px){.dialog-backdrop{align-items:center}.dialog{border-radius:16px}}.access-grid{grid-template-columns:auto 1fr;align-items:center;gap:.5rem .75rem;display:grid}.access-grid label{font-weight:600}.secret{letter-spacing:.05em;-webkit-user-select:all;user-select:all;overflow-wrap:anywhere;background:#f4f5f8;border-radius:10px;padding:.6rem .9rem;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:1.25rem}.login{max-width:400px;padding:calc(2rem + env(safe-area-inset-top)) 1rem 2rem;margin:0 auto}.login-logo{width:88px;height:88px;box-shadow:var(--shadow);border-radius:20px;margin:0 auto .75rem;display:block}.spinner{color:var(--muted);justify-content:center;padding:3rem 1rem;display:flex}.password-field{position:relative}.password-field input{padding-right:3rem}.password-field button{width:3rem;height:100%;color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:flex;position:absolute;top:0;right:0}.app-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;display:grid}.app-tile{text-align:left;font:inherit;color:var(--text);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;border:1px solid #0000;flex-direction:column;gap:.35rem;min-height:140px;padding:1.1rem 1rem;text-decoration:none;display:flex}.app-tile:hover,.app-tile:focus-visible{border-color:var(--brand);outline:none}.app-tile:disabled{opacity:.6;cursor:progress}.app-tile .app-icon{background:var(--brand-soft);width:44px;height:44px;color:var(--brand);border-radius:12px;justify-content:center;align-items:center;margin-bottom:.25rem;display:flex}.app-tile .app-name{font-size:1.15rem;font-weight:700}.app-tile .app-description{color:var(--muted);flex:1;font-size:.9rem}.app-tile.admin-tile .app-icon{background:var(--warn-soft);color:var(--warn)}
