:root{--header-top:8px;--header-logo:34px;--header-card-pad:6px;--navy-900:#0b1f3a;--navy-800:#10294a;--navy-700:#16355e;--navy-600:#1d4276;--brand-1:#1d4ed8;--brand-2:#2563eb;--brand-3:#60a5fa;--brand-4:#bfdbfe;--brand-soft:#eff6ff;--emerald:#059669;--emerald-dark:#047857;--amber:#d97706;--rose:#e11d48;--sky:#0284c7;--indigo:#4338ca;--violet:#6d28d9;--pink:#db2777;--slate:#64748b;--ink:#0f172a;--ink-2:#334155;--ink-muted:#64748b;--line:#dbe2ea;--line-soft:#eef2f7;--bg:#f8fafc;--bg-card:#ffffff;--bg-head:#f7f9fc;--shadow-sm:0 1px 2px rgba(11,31,58,.06);--shadow-md:0 2px 6px rgba(11,31,58,.09);--shadow-lg:0 12px 32px rgba(11,31,58,.18);--shadow-glow:0 0 0 3px rgba(29,78,216,.14);--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:10px;--row-y:7px;--row-x:10px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-kanit),var(--font-sarabun),system-ui,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;max-width:100%;overflow-x:hidden}.body-text,.data-table,.text-sm,.text-xs,input,p,select,table,tbody,td,textarea,th{font-family:var(--font-sarabun),var(--font-kanit),system-ui,sans-serif}.btn,.font-display,.hero-title,.nav-page-title,.panel-title,.stat-value,button,h1,h2,h3,h4,h5,h6{font-family:var(--font-kanit),var(--font-sarabun),system-ui,sans-serif}a{color:var(--brand-1);text-decoration:none}a:hover{text-decoration:underline}.auth{height:100vh;height:100dvh;overflow:hidden;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:minmax(0,1fr);background:#fff;color:var(--ink)}.auth-visual{min-height:0;display:flex;flex-direction:column;background:#0b1f3a;color:#fff}.auth-shot{position:relative;flex:1 1 auto;min-height:120px;overflow:hidden}.auth-shot img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 52%}.auth-shot:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,31,58,0) 40%,rgba(11,31,58,.45) 68%,rgba(11,31,58,.88) 88%,#0b1f3a)}.auth-visual-body{position:relative;z-index:1;flex:none;width:min(100%,480px);margin-top:-28px;padding:0 clamp(22px,2.6vw,36px) clamp(22px,2.6vw,34px)}.auth-crest{display:grid;place-items:center;overflow:hidden;width:46px;height:46px;margin-bottom:12px;border-radius:14px;background:#fff;box-shadow:0 8px 20px rgba(2,8,23,.35)}.auth-crest img{width:100%;height:100%;object-fit:contain;padding:5px}.auth-visual h2{margin:0;color:#fff;font-size:clamp(22px,2.2vw,29px);font-weight:700;line-height:1.25;letter-spacing:-.01em}.auth-visual-body>p{margin:5px 0 0;color:var(--brand-3);font-family:var(--font-sarabun);font-size:13.5px;font-weight:600}.auth-points{list-style:none;margin:clamp(18px,2.6vh,28px) 0 0;padding:0;display:flex;flex-direction:column;gap:20px}.auth-points li{display:flex;align-items:flex-start;gap:12px;font-family:var(--font-sarabun)}.auth-points i{display:grid;place-items:center;flex:none;margin-top:1px;width:30px;height:30px;border-radius:10px;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.16);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;font-size:15px}.auth-points strong{display:block;color:#fff;font-size:13.5px;font-weight:600;line-height:1.45}.auth-points li>span:last-child{display:block;color:rgba(255,255,255,.72);font-size:12.5px;line-height:1.55}.auth-point-desc{display:flex;flex-wrap:wrap;column-gap:4px}.auth-point-desc .nb{white-space:nowrap}.auth-panel{position:relative;min-height:0;isolation:isolate;display:grid;place-items:center;overflow-x:clip;overflow-y:auto;padding:clamp(22px,3vw,44px);background:radial-gradient(closest-side circle at 50% 46%,rgba(207,228,252,.62),rgba(248,250,252,0) 78%),#f8fafc}.auth-form{position:relative;overflow:hidden;width:min(460px,100%);text-align:left;padding:clamp(28px,3.2vw,42px) clamp(26px,3.2vw,42px);z-index:1;border:1px solid rgba(226,232,240,.9);border-radius:28px;background:#fff;box-shadow:0 1px 2px rgba(15,23,42,.04),0 8px 20px rgba(15,23,42,.06),0 30px 64px rgba(15,23,42,.13),inset 0 1px 0 #fff;animation:authIn .5s cubic-bezier(.2,.9,.3,1.02) both}.auth-form:before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--brand-1),var(--brand-3) 65%,#7dd3fc)}@keyframes authIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.auth-mini{display:none;align-items:center;gap:10px;margin-bottom:22px}.auth-mini img{width:42px;height:42px;object-fit:contain;border-radius:13px;background:#fff;padding:4px;border:1px solid var(--line)}.auth-mini span{color:var(--ink-2);font-family:var(--font-sarabun);font-size:13px;font-weight:600}.auth-eyebrow{display:flex;align-items:center;gap:9px;color:var(--brand-1);font-size:12.5px;font-weight:700;letter-spacing:.08em}.auth-rule{flex:none;width:22px;height:2px;border-radius:2px;background:var(--brand-3)}.auth-panel h1{margin:11px 0 7px;color:var(--ink);font-size:clamp(27px,2.8vw,34px);font-weight:700;line-height:1.2;letter-spacing:-.015em}.auth-sub{margin:0 0 clamp(17px,2.4vh,22px);color:var(--ink);font-family:var(--font-sarabun);font-size:15.5px;font-weight:600;line-height:1.6;text-wrap:balance}.auth-submit{display:flex;align-items:center;justify-content:center;gap:12px;position:relative;overflow:hidden;width:100%;height:60px;border:0;border-radius:17px;background:linear-gradient(135deg,var(--brand-1),var(--brand-2) 55%,#3b82f6);color:#fff;font-family:var(--font-kanit);font-size:16px;font-weight:600;cursor:pointer;box-shadow:0 10px 24px rgba(29,78,216,.3),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.auth-submit:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.22) 50%,transparent 65%);transform:translateX(-120%);transition:transform .55s ease}.auth-submit:hover:not(:disabled):after{transform:translateX(120%)}.auth-submit .g-mark{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:9px;background:#fff}.auth-submit:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 16px 34px rgba(29,78,216,.4)}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{cursor:wait;opacity:.7}.auth-submit:focus-visible{outline:3px solid var(--brand-1);outline-offset:3px}.auth-note .nb{white-space:nowrap}.auth-note{display:flex;flex-direction:column;gap:3px;margin:18px 0 0;color:var(--ink-muted);font-family:var(--font-sarabun);font-size:13px;line-height:1.6}.auth-note a{color:var(--brand-1);font-weight:600;text-decoration:none}.auth-note a:hover{text-decoration:underline}.auth-alert{display:flex;align-items:flex-start;gap:9px;margin-bottom:18px;padding:11px 13px;border:1px solid #fecaca;border-radius:14px;background:#fef2f2;color:#991b1b;font-family:var(--font-sarabun);font-size:12.5px;line-height:1.6;text-align:left}.auth-alert i{margin-top:2px;color:var(--rose)}.auth-links{position:absolute;left:0;right:0;bottom:clamp(16px,3vh,26px);display:flex;flex-wrap:wrap;justify-content:center;gap:6px 17px;padding:0 20px;font-family:var(--font-sarabun);font-size:13px;font-weight:500}.auth-links a{position:relative;color:var(--navy-700);text-decoration:none}.auth-links .lbl-short{display:none}.auth-links a+a:before{content:"·";position:absolute;left:-9px;color:var(--ink-muted);opacity:.75}.auth-links a:hover{color:var(--brand-1);text-decoration:underline}.auth-visual-body>p.auth-credit{margin:16px 0 0;color:rgba(255,255,255,.6);font-family:var(--font-sarabun);font-size:11.5px;line-height:1.5}@media (max-width:860px){.auth{grid-template-columns:1fr;grid-template-rows:minmax(120px,1fr) auto;background:#fff}.auth-visual{padding:0}.auth-shot:after{background:linear-gradient(180deg,rgba(11,31,58,0) 55%,rgba(11,31,58,.35))}.auth-visual-body{display:none}.auth-mini,.auth-panel{display:flex}.auth-panel{position:relative;z-index:1;flex-direction:column;align-items:center;margin-top:-20px;padding:30px 22px;border-radius:22px 22px 0 0;background:#fff}.auth-submit{height:54px}.auth-links{position:static;margin-top:0;padding-top:20px;display:flex;flex-wrap:nowrap;justify-content:center;gap:12px;font-size:12.5px}.auth-links a{padding:0;text-align:center;white-space:nowrap}.auth-links .lbl-full,.auth-links a+a:before{display:none}.auth-links .lbl-short{display:inline}.auth-panel:after,.auth-panel:before{display:none}.auth-form{width:100%;padding:0;border:0;border-radius:0;background:none;box-shadow:none}.auth-form:before{display:none}.auth-mini{margin-bottom:8px}.auth-note{margin-top:20px}}@media (min-width:861px) and (max-height:640px){.auth-panel{padding:18px 22px}.auth-form{padding:26px 28px;border-radius:22px}.auth-eyebrow{font-size:11.5px}.auth-panel h1{font-size:27px;margin:7px 0 18px}.auth-submit{height:50px;font-size:15px;border-radius:14px}.auth-note{margin-top:15px;gap:2px;font-size:12px}.auth-links{bottom:10px;font-size:11.5px}.auth-visual{padding:18px 22px;gap:12px}.auth-visual h2{font-size:22px}.auth-crest{width:40px;height:40px;margin-bottom:9px;border-radius:12px}.auth-points{margin-top:12px;gap:8px}.auth-points strong{font-size:12.5px}.auth-points li>span:last-child{font-size:11.5px}.auth-visual-body>p.auth-credit{display:none}}@media (min-width:861px) and (max-height:520px){.auth-form{padding:20px 24px}.auth-panel h1{font-size:24px;margin:6px 0 14px}.auth-submit{height:46px}.auth-note{margin-top:12px;font-size:11.5px}.auth-point-desc{display:none}.auth-points{gap:7px}}@media (max-width:860px) and (max-height:720px){.auth{grid-template-rows:minmax(100px,1fr) auto}.auth-panel{padding-top:24px}.auth-mini{margin-bottom:16px}.auth-panel h1{margin:8px 0 20px}.auth-note{margin-top:18px}}@media (prefers-reduced-motion:reduce){.auth-form{animation:none}.auth-submit{transition:none}.auth-submit:hover:not(:disabled){transform:none}}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh;max-width:100vw}.sidebar{position:fixed;left:0;top:0;bottom:0;width:232px;z-index:50;background:var(--navy-900);color:#e6edf6;padding:var(--header-top) 10px;border-right:1px solid rgba(255,255,255,.07);overflow-y:auto;height:100vh;height:100dvh;max-height:100vh;max-height:100dvh;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:28px}.sb-power{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.sb-brand{gap:9px;padding:var(--header-card-pad);border-radius:var(--radius-md);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07)}.sb-brand,.sb-brand-logo{display:flex;align-items:center}.sb-brand-logo{width:var(--header-logo);height:var(--header-logo);flex:0 0 var(--header-logo);aspect-ratio:1/1;border-radius:var(--radius-sm);overflow:hidden;background:#fff;justify-content:center}.sb-brand-logo img{display:block;width:100%;height:100%;object-fit:contain;padding:2px}.sb-brand-text{display:flex;flex-direction:column;min-width:0;line-height:1.2}.sb-brand-title{font-size:12px;font-weight:700;line-height:1.2}.sb-brand-school,.sb-brand-title span{display:block;white-space:nowrap}.sb-brand-school{margin-top:1px;font-size:10px;opacity:.8}.sb-clock{display:flex;flex-direction:column;align-items:center;gap:1px;padding:6px 9px;border-radius:var(--radius-sm);text-align:center;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07)}.sb-clock-time{font-family:var(--font-kanit);font-size:16px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex:none;line-height:1.2}.sb-clock-date{font-size:11px;opacity:.82;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.sb-user{gap:8px;padding:7px 9px;border-radius:var(--radius-sm);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.07)}.sb-user,.sb-user-avatar{display:flex;align-items:center}.sb-user-avatar{width:28px;height:28px;border-radius:var(--radius-sm);background:var(--brand-2);justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0}.sb-user-info{flex:1 1;min-width:0}.sb-user-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-user-role{margin-top:2px}.role-chip{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:700;letter-spacing:.02em}.role-chip-admin{background:#fef3c7;color:#92400e}.role-chip-director{background:#ede9fe;color:#5b21b6}.role-chip-academic{background:#dbeafe;color:#1e40af}.role-chip-teacher{background:#d1fae5;color:#065f46}.sb-section{margin-top:12px}.sb-section-head{padding:0 8px 4px;font-size:10px;font-weight:700;letter-spacing:.1em;color:rgba(230,237,246,.66);text-transform:uppercase}.sb-link{display:flex;align-items:center;gap:8px;padding:6px 9px;margin-bottom:1px;border-radius:var(--radius-sm);color:rgba(232,240,250,.94);font-size:13px;font-weight:500;position:relative;transition:background .12s,color .12s}.sb-link:hover{background:rgba(255,255,255,.07);color:#fff;text-decoration:none}.sb-link i{font-size:14px;width:17px;text-align:center;flex:none}.sb-link.is-active{color:#fff;font-weight:600}.sb-link.is-active,.sb-link.is-active:hover{background:var(--brand-1)}.sb-link.is-logout{color:#ffbac6}.sb-link.is-logout:hover{background:rgba(225,29,72,.16);color:#fecdd3}.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:55}.sidebar-backdrop.show{display:block}@media (max-width:1024px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-260px;top:0;bottom:0;width:232px;z-index:60;transition:left .2s ease;bottom:auto}.sidebar.open{left:0}}.main-area{grid-column:2;display:flex;flex-direction:column;min-width:0;max-width:100%;overflow-x:hidden}@media (max-width:1024px){.main-area{grid-column:1}}.navbar{position:-webkit-sticky;position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;padding:calc(var(--header-top) + 1px + var(--header-card-pad)) 14px var(--header-card-pad);background:#fff;border-bottom:1px solid var(--line)}.nav-brand-logo{display:grid;place-items:center;width:var(--header-logo);height:var(--header-logo);flex:0 0 var(--header-logo);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.nav-brand-logo img{display:block;width:100%;height:100%;object-fit:contain;padding:2px}.nav-burger{display:none;background:none;border:0;cursor:pointer;width:32px;height:32px;border-radius:var(--radius-sm);font-size:19px;color:var(--navy-900)}.nav-burger:hover{background:var(--line-soft)}@media (max-width:1024px){.nav-burger{display:flex;align-items:center;justify-content:center}.navbar{padding-top:var(--header-top);padding-bottom:var(--header-top)}}.nav-page-icon{width:26px;height:26px;border-radius:var(--radius-sm);flex:none;background:var(--brand-soft);color:var(--brand-1);display:flex;align-items:center;justify-content:center;font-size:14px}.nav-page-text{display:flex;flex-direction:column;line-height:1.2;flex:1 1;min-width:0}.nav-page-title{font-size:14px;font-weight:700;color:var(--navy-900)}.nav-page-sub{font-size:11px;color:var(--ink-muted)}.nav-status-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--radius-sm);background:#ecfdf5;color:var(--emerald-dark);font-size:11px;font-weight:600}.nav-status-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--emerald);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@media (max-width:768px){.nav-page-sub,.nav-status-pill{display:none}}.nav-clock-pill,.top-role{padding:2px 8px;border-radius:var(--radius-sm);background:var(--line-soft);color:var(--navy-700);font-size:11px;font-weight:600}.nav-clock-pill{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:768px){.nav-clock-pill{display:none}}.page-wrap{flex:1 1;padding:14px 16px 24px;max-width:100%;min-width:0;overflow-x:hidden}@media (max-width:768px){.page-wrap{padding:12px 10px 24px}}.pagebar{position:relative;display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 0 11px;margin-bottom:12px}.pagebar:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--brand-1),var(--brand-3) 55%,rgba(125,211,252,.4))}.pagebar-text{min-width:0;flex:1 1}.pagebar-title{margin:0;font-size:17px;font-weight:700;line-height:1.25;color:var(--navy-900);letter-spacing:-.01em}.pagebar-sub{font-size:12px;color:var(--ink-muted);line-height:1.4;margin-top:1px}.pagebar-context{font-size:13px;font-weight:600;color:var(--navy-900);line-height:1.4}.pagebar-stats{display:flex;align-items:stretch;gap:0;flex-wrap:wrap}.stat{display:flex;align-items:baseline;gap:6px;padding:2px 14px;border-left:1px solid var(--line);text-decoration:none;color:inherit;white-space:nowrap}.stat:first-child{border-left:0;padding-left:0}a.stat:hover{text-decoration:none}a.stat:hover .stat-value{color:var(--brand-1)}.stat-value{font-family:var(--font-kanit);font-size:19px;font-weight:700;line-height:1.1;color:var(--navy-900);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-label{font-size:11px;color:var(--ink-muted)}.stat.is-emerald .stat-value{color:var(--emerald-dark)}.stat.is-amber .stat-value{color:#b45309}.stat.is-rose .stat-value{color:#be123c}.stat.is-sky .stat-value{color:var(--sky)}.stat.is-violet .stat-value{color:var(--violet)}@media (max-width:640px){.pagebar-stats{width:100%;gap:6px 20px}.stat{padding:0;border:0}.stat:first-child{padding-left:0}}.panel{background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px;margin-bottom:12px}.panel-head{gap:8px;margin-bottom:10px;flex-wrap:wrap}.panel-head,.panel-title{display:flex;align-items:center}.panel-title{font-size:13px;font-weight:700;color:var(--navy-900);gap:7px;flex:1 1}.panel-title:before{content:"";flex:none;width:3px;height:14px;border-radius:2px;background:linear-gradient(180deg,var(--brand-1),var(--brand-3))}.panel-title i{color:var(--brand-1)}.panel-sub{color:var(--ink-muted);font-size:12px;margin:-6px 0 10px}.panel-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:10px;gap:10px}.card-item{padding:12px}.card-item,.proj-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-md)}.proj-card{position:relative;border-left:3px solid var(--brand-1);padding:10px 12px;display:flex;flex-direction:column;gap:6px}.proj-card.s-draft{border-left-color:#94a3b8}.proj-card.s-active{border-top-color:var(--emerald)}.proj-card.s-closed{border-top-color:var(--amber)}.proj-card:hover{border-color:var(--brand-3);border-left-color:var(--brand-1)}.proj-card-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.proj-code{font-family:var(--font-mono,ui-monospace,monospace);font-size:11px;font-weight:700;color:var(--navy-700)}.proj-name{font-size:13px;font-weight:700;color:var(--ink);flex:1 1;line-height:1.3}.proj-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-muted);flex-wrap:wrap}.settings-layout{display:flex;flex-direction:column;gap:12px}.settings-save-button{align-self:flex-start}.settings-savebar{position:-webkit-sticky;position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding:10px 14px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 20px rgba(15,32,61,.12)}.settings-savebar-note{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}.settings-savebar.is-dirty{border-color:#fde68a;box-shadow:0 6px 20px rgba(180,83,9,.16)}.settings-savebar.is-dirty .settings-savebar-note{color:#92400e;font-weight:700}.field-label-inline{font-size:12px;font-weight:700;color:var(--ink-2);margin-bottom:6px}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;margin-bottom:10px;background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-md)}.toolbar-note{font-size:11px;color:var(--ink-muted);display:inline-flex;align-items:center;gap:4px}.toolbar-sep{width:1px;align-self:stretch;background:var(--line);margin:0 2px}.tb-search{position:relative;margin-left:auto;min-width:190px}.tb-search>i{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--ink-muted);pointer-events:none}.tb-search input{padding:5px 8px 5px 26px;font-size:12px;border-radius:var(--radius-sm)}@media (max-width:640px){.tb-search{margin-left:0;width:100%}}.badge{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border-radius:3px;font-size:11px;font-weight:700;letter-spacing:.01em;white-space:nowrap;line-height:1.5}.badge.b-draft{background:#f1f5f9;color:#475569}.badge.b-submitted{background:#dbeafe;color:#1e40af}.badge.b-academic_approved{background:#ede9fe;color:#5b21b6}.badge.b-approved{background:#d1fae5;color:#065f46}.badge.b-rejected{background:#fecaca;color:#991b1b}.badge.b-gold{background:#fef3c7;color:#92400e}.badge.green{background:#d1fae5;color:#065f46}.badge.amber{background:#fef3c7;color:#92400e}.badge.red{background:#fecaca;color:#991b1b}.badge.blue{background:#dbeafe;color:#1e40af}.badge.gray{background:#f1f5f9;color:#475569}.badge.gold{background:#fef3c7;color:#92400e}.data-table,table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;font-size:13px;line-height:1.45}.data-table thead,thead{background:var(--bg-head)}.data-table thead th,thead th{position:-webkit-sticky;position:sticky;top:0;z-index:2;padding:6px var(--row-x);text-align:left;font-family:var(--font-kanit);font-size:11px;font-weight:700;color:var(--navy-700);letter-spacing:.01em;white-space:nowrap;background:var(--bg-head);border-bottom:1px solid var(--line)}.data-table td,td{padding:var(--row-y) var(--row-x);font-size:13px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.data-table tbody tr:hover,tbody tr:hover{background:var(--brand-soft)}.data-table tbody tr:last-child td,tbody tr:last-child td{border-bottom:0}.data-table .num,.num{width:1%;text-align:right;color:var(--ink-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table .nowrap,.nowrap{white-space:nowrap}.note-clamp{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.78rem;line-height:1.45;max-width:260px;word-break:break-word}.linklike{display:inline;padding:0;margin-top:2px;border:0;background:none;color:var(--brand-1);font:inherit;font-size:.75rem;cursor:pointer;text-decoration:underline}.linklike:hover{color:var(--brand-2)}.actions,.data-table .actions{width:1%;text-align:right;white-space:nowrap}.data-table tbody .actions .btn{opacity:.72;transition:opacity .12s}.data-table tbody .actions .btn:focus-visible,.data-table tbody tr:hover .actions .btn{opacity:1}.center,.data-table .center{text-align:center}.data-table .mono,.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.table-wrap{overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 210px);max-height:calc(100dvh - 210px);border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;margin-bottom:12px}.topbar-spacer{flex:1 1}th.sortable{padding:0}th.sortable>button{display:flex;align-items:center;gap:5px;width:100%;padding:6px var(--row-x);border:0;background:transparent;font:inherit;color:inherit;text-align:left;cursor:pointer;white-space:nowrap}th.sortable>button:hover{background:var(--line-soft);color:var(--navy-900)}th.sortable>button>i{font-size:10px;opacity:.32}th.sortable.is-sorted{color:var(--brand-1)}th.sortable.is-sorted>button>i{opacity:1}.data-table .check-col,td.check-col,th.check-col{width:1%;padding-right:0;text-align:center}.row-check{width:15px;height:15px;margin:0;accent-color:var(--brand-1);cursor:pointer;vertical-align:middle}.data-table tbody tr.is-selected{background:var(--brand-soft)}.data-table tbody tr.is-selected:hover{background:#e0ecfe}.data-table tbody tr.is-busy{opacity:.55;pointer-events:none}.data-table tbody tr.is-pending td{background:#fffdf5}.selbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 10px;margin-bottom:10px;border:1px solid var(--brand-3);border-left:3px solid var(--brand-1);border-radius:var(--radius-md);background:var(--brand-soft)}.selbar-count{font-family:var(--font-kanit);font-size:13px;font-weight:700}.filechip,.selbar-count{color:var(--brand-1);margin-right:4px}.filechip{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;border-radius:3px;border:1px solid var(--brand-4);background:var(--brand-soft);font-size:11px;font-weight:600;white-space:nowrap;text-decoration:none}.filechip.is-pending{color:var(--amber);border-color:#fde68a;background:#fffbeb;cursor:default}a.filechip:hover{background:var(--brand-1);border-color:var(--brand-1);color:#fff;text-decoration:none}.filechip.is-missing{border-color:var(--line);background:var(--line-soft);color:var(--ink-muted);font-weight:400}.yearpick{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-muted);white-space:nowrap}.yearpick>i{font-size:13px}.yearpick select{width:auto;min-width:150px;padding:3px 7px;font-size:12px}.grade-counts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:10px 12px;gap:10px 12px}@media (max-width:1000px){.grade-counts{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:560px){.grade-counts{grid-template-columns:repeat(2,minmax(0,1fr))}}.grade-counts input{text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tprog{display:flex;align-items:center;gap:8px;min-width:190px}.tprog-track{position:relative;flex:1 1;height:9px;border-radius:999px;background:var(--line-soft);border:1px solid var(--line);overflow:hidden}.tprog-track>span{position:absolute;top:0;left:0;height:100%}.tprog-track .is-sent{background:linear-gradient(90deg,var(--sky),#38bdf8);opacity:.3}.tprog-track .is-approved{background:linear-gradient(90deg,var(--emerald-dark),var(--emerald))}.tprog-num{flex:0 0 auto;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table tbody tr.is-complete td{background:#f4fbf7}.subj-toggle{display:inline-block}.subj-toggle>summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#b45309;font-weight:600;padding:1px 2px;border-radius:var(--radius-sm)}.subj-toggle>summary::-webkit-details-marker{display:none}.subj-toggle>summary:hover{color:var(--brand-1);text-decoration:underline}.subj-toggle>summary i{font-size:10px;transition:transform .15s ease}.subj-toggle[open]>summary i{transform:rotate(90deg)}.subj-list{margin-top:7px;display:flex;flex-direction:column;gap:4px}.subj-line{display:flex;gap:7px;align-items:baseline;font-size:12px;line-height:1.5}.subj-grade{flex:0 0 auto;min-width:30px;font-weight:700;font-size:11px;color:var(--navy-700);background:var(--line-soft);border-radius:var(--radius-sm);padding:1px 6px;text-align:center}.subj-names{color:var(--ink-2)}.guide-banner{display:flex;align-items:center;gap:12px;margin-bottom:12px;padding:12px 16px;background:var(--brand-soft);color:var(--ink);text-decoration:none;border:1px solid var(--brand-4);border-top:3px solid var(--brand-2);border-radius:var(--radius-lg)}.guide-banner:hover{text-decoration:none;border-color:var(--brand-3);border-top-color:var(--brand-1);box-shadow:0 4px 14px rgba(15,23,42,.08)}.guide-banner>i:first-child{font-size:20px;color:var(--brand-1);flex:none}.guide-banner>i:last-child{margin-left:auto;color:var(--ink-muted);flex:none}.guide-banner-text{display:flex;flex-direction:column;line-height:1.4;min-width:0}.guide-banner-text strong{font-size:13px}.guide-banner-text span{font-size:12px;color:var(--ink-2)}.metric-grid{display:grid;grid-gap:10px;gap:10px;margin-bottom:12px;grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}.metric-card{display:flex;flex-direction:column;gap:3px;padding:13px 16px;background:#fff;color:inherit;text-decoration:none;border:1px solid var(--line);border-top:3px solid var(--brand-2);border-radius:var(--radius-lg)}a.metric-card:hover{text-decoration:none;border-color:var(--brand-3);border-left-color:var(--brand-1);box-shadow:0 4px 14px rgba(15,23,42,.08)}.metric-value{font-family:var(--font-kanit);font-size:30px;font-weight:700;line-height:1.05;color:var(--navy-900);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.metric-value .metric-unit{font-size:15px;font-weight:600;margin-left:4px}.metric-label{font-size:12px;color:var(--ink-muted);display:flex;align-items:center;gap:5px}.metric-label i{font-size:12px;opacity:.8}.metric-card.is-emerald{border-left-color:var(--emerald)}.metric-card.is-emerald .metric-value{color:var(--emerald-dark)}.metric-card.is-amber{border-left-color:var(--amber)}.metric-card.is-amber .metric-value{color:#b45309}.metric-card.is-rose{border-top-color:var(--rose)}.metric-card.is-rose .metric-value{color:#be123c}.metric-card.is-sky{border-top-color:var(--sky)}.metric-card.is-sky .metric-value{color:var(--sky)}.metric-card.is-violet{border-top-color:var(--violet)}.metric-card.is-violet .metric-value{color:var(--violet)}.metric-progress{margin-bottom:12px}.metric-progress-head{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;color:var(--ink-muted);margin-bottom:5px}.metric-progress-head b{color:var(--navy-900);font-size:13px}.metric-progress-track{height:10px;border-radius:999px;background:var(--line-soft);border:1px solid var(--line);overflow:hidden}.metric-progress-fill{height:100%;background:var(--emerald);transition:width .3s ease}@media (max-width:640px){.metric-grid{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.metric-value{font-size:25px}}.progress-rows{display:flex;flex-direction:column;gap:8px}.progress-row{display:flex;align-items:center;gap:10px}.progress-label{flex:0 0 110px;font-size:12px;color:var(--navy-700);font-weight:600}.progress-track{flex:1 1;height:14px;border-radius:3px;background:var(--line-soft);border:1px solid var(--line);overflow:hidden}.progress-fill{height:100%;transition:width .3s ease;background:linear-gradient(90deg,var(--brand-1),var(--brand-2))}.progress-fill.is-emerald{background:linear-gradient(90deg,var(--emerald-dark),var(--emerald))}.progress-fill.is-sky{background:linear-gradient(90deg,var(--sky),#38bdf8)}.progress-num{flex:0 0 auto;font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--ink-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.data-table tbody tr.is-excluded td{opacity:.5}.form-grid{display:flex;flex-wrap:wrap;gap:10px 12px;align-items:flex-start}.field{display:flex;flex-direction:column;gap:4px;min-width:0;margin-bottom:0;flex:1 1 210px}.field>label{font-size:12px;font-weight:600;color:var(--navy-700)}.field .req{color:var(--rose);margin-left:2px}.field input,.field select,.field textarea,input[type=date],input[type=email],input[type=number],input[type=text],select,textarea{width:100%;padding:6px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:13px;font-family:var(--font-sarabun);background:#fff;color:var(--ink);outline:none;transition:border-color .12s,box-shadow .12s;min-width:0;box-sizing:border-box}.field input:focus,.field select:focus,.field textarea:focus,input:focus,select:focus,textarea:focus{border-color:var(--brand-1);box-shadow:var(--shadow-glow)}input:disabled,select:disabled,textarea:disabled{background:var(--line-soft);color:var(--ink-muted);cursor:not-allowed}.field textarea,textarea{resize:vertical;min-height:60px}.field-hint,.hint{font-size:11px;color:var(--ink-muted);line-height:1.45}.field-full{flex:1 1 100%;width:100%;grid-column:1/-1}input[type=file]{width:100%;padding:8px;border:1px dashed var(--brand-3);border-radius:var(--radius-sm);font-size:13px;background:var(--brand-soft)}.radio-row{display:flex;gap:6px;flex-wrap:wrap}.radio-row label{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;background:#fff}.radio-row label:hover{border-color:var(--brand-1)}.radio-row input{width:15px;height:15px;flex-shrink:0;accent-color:var(--brand-1);margin:0}.check{display:inline-flex;align-items:flex-start;gap:6px;cursor:pointer;font-size:13px}.check input{accent-color:var(--brand-1);margin-top:3px}.check-row{display:flex;align-items:flex-start;gap:8px;cursor:pointer;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;transition:border-color .12s}.check-row:hover{border-color:var(--brand-1)}.check-row input[type=checkbox]{width:16px;height:16px;flex:none;margin:2px 0 0;accent-color:var(--brand-1)}.check-row .check-text{display:flex;flex-direction:column;gap:1px}.check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:5px;gap:5px}.check-grid .check-row{padding:6px 8px;font-size:12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:6px 11px;border-radius:var(--radius-sm);font-family:var(--font-kanit);font-weight:600;font-size:13px;line-height:1.35;border:1px solid var(--line);background:#fff;color:var(--navy-700);cursor:pointer;transition:background .12s,border-color .12s,color .12s;white-space:nowrap}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--line-soft);border-color:#c3cede;color:var(--navy-900)}.btn:active{background:var(--line)}.btn:focus-visible{outline:none;box-shadow:var(--shadow-glow);border-color:var(--brand-1)}.btn:disabled,.btn[disabled]{opacity:.5;cursor:not-allowed}.btn-primary,.btn.is-primary{background:linear-gradient(135deg,var(--brand-1),var(--brand-2));color:#fff;border-color:transparent;box-shadow:0 3px 8px rgba(29,78,216,.2)}.btn-primary:hover,.btn.is-primary:hover{background:linear-gradient(135deg,var(--navy-600),var(--brand-1));border-color:transparent;color:#fff;box-shadow:0 5px 12px rgba(29,78,216,.28)}.btn-success,.btn.is-success{background:var(--emerald-dark);color:#fff;border-color:var(--emerald-dark)}.btn-success:hover,.btn.is-success:hover{background:#065f46;border-color:#065f46;color:#fff}.btn-danger,.btn.is-danger{background:#fff;color:var(--rose);border-color:#f6c6cf}.btn-danger:hover,.btn.is-danger:hover{background:#fff1f2;border-color:var(--rose);color:var(--rose)}.btn.is-danger-solid{background:var(--rose);color:#fff;border-color:var(--rose)}.btn.is-danger-solid:hover{background:#be123c;border-color:#be123c;color:#fff}.btn-sm,.btn.is-sm{padding:3px 7px;font-size:12px}.btn.is-sm>i:only-child{font-size:13px}.btn.is-lg{padding:9px 18px;font-size:14px}.btn-block{width:100%}.btn-row{gap:6px;align-items:center}.btn-row,.status-bar{display:flex;flex-wrap:wrap}.status-bar{gap:4px;padding:7px 8px;margin-bottom:10px;background:var(--bg-card);border:1px solid var(--line);border-radius:var(--radius-md)}.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-sm);background:transparent;color:var(--ink-2);font-size:12px;cursor:pointer;border:1px solid transparent;transition:background .12s,border-color .12s}.chip,.chip:hover{text-decoration:none}.chip:hover{background:var(--line-soft)}.chip.is-active{background:var(--brand-soft);border-color:var(--brand-3);color:var(--brand-1);font-weight:700}.chip-count{display:inline-block;padding:0 5px;border-radius:var(--radius-sm);background:var(--line-soft);color:var(--ink-2);font-size:11px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chip.is-active .chip-count{background:var(--brand-1);color:#fff}.empty,.empty-state{text-align:center;padding:28px 16px;color:var(--ink-muted)}.empty-state>i,.empty>i{font-size:30px;opacity:.28;display:block;margin-bottom:8px}.empty-state h3{font-size:14px;color:var(--ink-2);margin:0 0 3px}.empty-state p{font-size:12px;margin:0 0 10px}.alert{border-radius:var(--radius-sm);padding:8px 10px;font-size:13px;display:flex;gap:7px;align-items:flex-start;margin-bottom:10px;border:1px solid transparent;border-left-width:3px;font-family:var(--font-sarabun);line-height:1.5}.alert i{font-size:15px;line-height:1.4;flex-shrink:0}.alert.ok{background:#ecfdf5;color:#065f46;border-color:#a7f3d0;border-left-color:var(--emerald)}.alert.warn{background:#fffbeb;color:#92400e;border-color:#fde68a;border-left-color:var(--amber)}.alert.error{background:#fef2f2;color:#991b1b;border-color:#fecaca;border-left-color:var(--rose)}.alert.info{background:var(--brand-soft);color:#1e3a8a;border-color:var(--brand-4);border-left-color:var(--brand-1)}.modal-host{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(11,31,58,.42);z-index:8000;padding:16px;animation:fadeIn .12s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);width:100%;max-width:460px;max-height:88vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:modalIn .12s ease-out}.modal-card.is-large{max-width:720px}@keyframes modalIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.md-header{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--bg-head);border-bottom:1px solid var(--line)}.md-title{flex:1 1;min-width:0;font-family:var(--font-kanit);font-size:14px;font-weight:700;color:var(--navy-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.md-close{width:24px;height:24px;flex:none;border-radius:var(--radius-sm);background:transparent;border:0;color:var(--ink-muted);cursor:pointer;font-size:17px;display:flex;align-items:center;justify-content:center}.md-close:hover{background:var(--line);color:var(--navy-900)}.md-body{padding:12px;overflow-y:auto;flex:1 1}.md-body .md-footer{margin:12px -12px -12px}.md-footer{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:9px 12px;border-top:1px solid var(--line);background:var(--bg-head)}.md-keys{margin-right:auto;font-size:11px;color:var(--ink-muted);font-family:var(--font-sarabun)}.md-keys kbd{display:inline-block;padding:0 4px;margin:0 1px;border:solid var(--line);border-width:1px 1px 2px;border-radius:3px;background:#fff;font-family:ui-monospace,Menlo,monospace;font-size:10px;color:var(--ink-2)}.toast{position:fixed;right:16px;bottom:16px;z-index:9600;display:flex;align-items:center;gap:8px;max-width:min(400px,calc(100vw - 32px));padding:9px 10px 9px 11px;border:1px solid #a7f3d0;border-left:3px solid var(--emerald);border-radius:var(--radius-md);background:#ecfdf5;color:#065f46;box-shadow:var(--shadow-md);font-family:var(--font-sarabun);font-size:13px;line-height:1.5;animation:toastIn .16s ease-out}.toast-close,.toast>i:first-child{font-size:15px;flex:none}.toast-close{width:20px;height:20px;margin-left:2px;display:grid;place-items:center;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;opacity:.6;cursor:pointer}.toast-close:hover{opacity:1;background:rgba(6,95,70,.1)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:540px){.toast{right:10px;left:10px;bottom:10px;max-width:none}}.dialog-host{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(11,31,58,.42);z-index:9500;animation:fadeIn .12s ease}.dialog-card{position:relative;width:min(420px,100%);border:1px solid var(--line);border-radius:var(--radius-lg);background:#fff;box-shadow:var(--shadow-lg);overflow:hidden;animation:modalIn .12s ease-out;--dialog-accent:var(--brand-1);--dialog-soft:var(--brand-soft);--dialog-text:#1e3a8a}.dialog-card.is-danger{--dialog-accent:var(--rose);--dialog-soft:#fef2f2;--dialog-text:#9f1239}.dialog-card.is-warning{--dialog-accent:var(--amber);--dialog-soft:#fffbeb;--dialog-text:#92400e}.dialog-card.is-primary{--dialog-accent:var(--brand-1);--dialog-soft:var(--brand-soft);--dialog-text:#1e3a8a}.dialog-card.is-success{--dialog-accent:var(--emerald-dark);--dialog-soft:#ecfdf5;--dialog-text:#047857}.dialog-head{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--bg-head);border-bottom:1px solid var(--line)}.dialog-icon{width:22px;height:22px;flex:none;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--dialog-soft);color:var(--dialog-accent);font-size:13px}.dialog-kicker{flex:1 1;font-family:var(--font-kanit);font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--dialog-text)}.dialog-body{padding:12px}.dialog-card h2{margin:0 0 5px;font-family:var(--font-kanit);font-size:14px;font-weight:700;line-height:1.45;color:var(--navy-900)}.dialog-message{margin:0;color:var(--ink-2);font-size:13px;line-height:1.6;white-space:pre-line}.dialog-detail,.dialog-message{font-family:var(--font-sarabun)}.dialog-detail{display:flex;gap:6px;align-items:flex-start;margin:10px 0 0;padding:7px 9px;border-radius:var(--radius-sm);border-left:3px solid var(--dialog-accent);background:var(--dialog-soft);color:var(--dialog-text);font-size:12px;line-height:1.55}.dialog-input-wrap{display:grid;grid-gap:4px;gap:4px;margin-top:10px;color:var(--navy-700);font-size:12px;font-weight:600}.dialog-input-wrap textarea{width:100%;padding:6px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;resize:vertical;font:13px/1.55 var(--font-sarabun);transition:border-color .12s,box-shadow .12s}.dialog-input-wrap textarea:focus{border-color:var(--dialog-accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--dialog-accent) 14%,transparent)}.dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;padding:9px 12px;border-top:1px solid var(--line);background:var(--bg-head)}.dialog-actions .btn{min-width:76px}.dialog-confirm{box-shadow:0 8px 18px color-mix(in srgb,var(--dialog-accent) 20%,transparent)}.dialog-cancel{background:#fff}@media (max-width:540px){.modal-host{padding:0;align-items:flex-end}.modal-card{max-width:100%;max-height:92vh;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.dialog-card{width:100%}}.app-footer{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:16px;margin:18px 24px 16px;padding:14px 20px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-sm);font-size:12px;color:var(--ink-2)}.app-footer:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--brand-1),var(--brand-3))}.af-copy{display:flex;align-items:center;gap:8px;padding-left:8px;flex-wrap:wrap}.af-year{background:linear-gradient(135deg,var(--brand-1),var(--brand-2));color:#fff;padding:3px 10px;border-radius:99px;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:11px}.af-dev{display:flex;align-items:center;gap:12px}.af-dev-text{font-size:inherit;line-height:1.3;text-align:right}@media (max-width:768px){.app-footer{margin:12px 12px 16px;flex-direction:column-reverse;align-items:center;text-align:center}}.muted,.text-muted{color:var(--ink-muted)}.soft{color:var(--ink-2)}.text-success{color:var(--emerald-dark)}.text-danger{color:var(--rose)}.text-warning{color:var(--amber)}.right{text-align:right}.center{text-align:center}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stack{flex-direction:column;gap:.35rem}.row,.stack{display:flex}.row{gap:.6rem;align-items:center;flex-wrap:wrap}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.flex-1{flex:1 1}.w-full{width:100%}.filename{font-size:.8125rem;word-break:break-all;display:inline-flex;align-items:center;gap:.35rem;color:var(--brand-1)}.divider{height:1px;background:var(--line);margin:1rem 0}.page-head{margin-bottom:1.1rem}.page-head h1{display:flex;align-items:center;gap:.55rem;font-weight:800}.page-head p{color:var(--ink-muted);margin:.3rem 0 0;font-size:.9rem;font-family:var(--font-sarabun)}.grid{display:grid;grid-gap:1rem;gap:1rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(165px,1fr))}.card{background:var(--bg-card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-sm);padding:1.1rem 1.2rem}.card+.card{margin-top:1rem}.card-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.9rem;flex-wrap:wrap}.card-head h2{flex:1 1;font-size:1.05rem;font-weight:700}.card-sub{color:var(--ink-muted);font-size:.8125rem;margin-top:-.5rem;margin-bottom:.9rem;font-family:var(--font-sarabun)}.public-document-page{position:relative;overflow-x:clip;min-height:100vh;min-height:100dvh;padding:28px 18px;background:radial-gradient(60% 40% at 50% 4%,rgba(207,228,252,.6),rgba(248,250,252,0) 72%),var(--bg)}.public-document-shell{width:min(960px,100%);margin:0 auto}.public-document-shell.is-narrow{width:min(620px,100%)}.public-document-shell.is-narrow .public-document-card{padding:clamp(26px,4vw,44px)}.public-document-header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:26px}.public-document-brand{display:flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none}.public-document-brand:hover{text-decoration:none}.public-document-mark{display:grid;place-items:center;overflow:hidden;width:40px;height:40px;flex:none;border-radius:12px;background:#fff;border:1px solid rgba(226,232,240,.9)}.public-document-mark img{width:100%;height:100%;object-fit:contain;padding:3px}.public-document-brand strong{display:block;font-size:15px;font-weight:700;color:var(--ink)}.public-document-brand small{display:block;margin-top:2px;font-size:12px;color:var(--ink-muted)}.public-document-login{padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--brand-1);font-size:13px;text-decoration:none;white-space:nowrap;box-shadow:0 1px 2px rgba(15,23,42,.05);transition:background .12s,border-color .12s,box-shadow .15s}.public-document-login:hover{background:var(--brand-soft);border-color:var(--brand-4);box-shadow:0 6px 16px rgba(29,78,216,.12);text-decoration:none}.public-document-card{position:relative;overflow:hidden;padding:clamp(28px,5vw,64px);border:1px solid rgba(226,232,240,.9);border-radius:28px;background:rgba(255,255,255,.96);box-shadow:0 1px 2px rgba(15,23,42,.04),0 8px 20px rgba(15,23,42,.06),0 30px 64px rgba(15,23,42,.13),inset 0 1px 0 #fff}.public-document-card:before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--brand-1),var(--brand-3) 65%,#7dd3fc)}.public-document-eyebrow{display:flex;align-items:center;gap:9px;color:var(--brand-1);font-size:13px;font-weight:700;letter-spacing:.08em}.doc-rule{flex:none;width:22px;height:2px;border-radius:2px;background:var(--brand-3)}.public-document-card h1{margin:10px 0 8px;color:var(--ink);font-size:clamp(28px,4.4vw,44px);font-weight:700;line-height:1.2}.public-document-updated{margin:0 0 34px;color:var(--ink-muted);font-size:13px}.public-document-content{font-family:var(--font-sarabun),sans-serif;color:var(--ink-2)}.public-document-content p{margin:0 0 14px;color:var(--ink);font-size:16px;line-height:1.8}.public-document-lead{font-size:18px!important;line-height:1.75!important}.public-document-content h2{margin:30px 0 8px;color:var(--ink);font-size:20px;font-weight:700}.public-document-content ol,.public-document-content ul{margin:0 0 16px;padding-left:25px}.public-document-content li{margin-bottom:5px;color:var(--ink-2);font-size:16px;line-height:1.8}.public-document-content section{scroll-margin-top:24px}.public-document-content .data-table{min-width:540px}.public-document-content .data-table td,.public-document-content .data-table th{white-space:normal;line-height:1.75}.public-document-content .field-hint{font-size:14px}.public-document-content .docs-workflow,.public-document-content .guide-steps{list-style:none;counter-reset:steps;padding:0;margin:0 0 16px}.public-document-content .docs-workflow>li,.public-document-content .guide-steps>li{counter-increment:steps;position:relative;margin:0;padding:0 0 22px 48px}.public-document-content .docs-workflow>li:before,.public-document-content .guide-steps>li:before{content:counter(steps);position:absolute;left:0;top:0;display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--brand-4);border-radius:50%;background:var(--brand-soft);color:var(--brand-1);font-size:14px;font-weight:700}.public-document-content .docs-workflow>li:last-child,.public-document-content .guide-steps>li:last-child{padding-bottom:0}.public-document-content .docs-workflow p,.public-document-content .guide-steps p{margin:2px 0 0;color:var(--ink-2);font-size:15px}.public-document-content .guide-list{margin:0 0 16px;padding-left:22px}.public-document-highlight{margin:26px 0 30px;padding:18px 22px;border:1px solid #e6eefb;border-left:4px solid var(--brand-3);border-radius:18px;background:linear-gradient(180deg,#f7fafe,#f1f6fd);font-size:16px;line-height:1.8}.public-document-highlight strong{display:block;color:var(--brand-1);font-size:16px;font-weight:700}.public-document-highlight.is-error{border-left-color:var(--rose);background:#fef2f2}.public-document-highlight.is-error strong{color:#991b1b}.public-document-highlight p{margin:0}.public-document-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:34px}.public-document-actions a.is-primary,.public-document-actions button.is-primary{border:0;cursor:pointer;font-family:inherit;line-height:1.5;padding:12px 22px;border-radius:14px;background:linear-gradient(135deg,var(--brand-1),var(--brand-2) 55%,#3b82f6);color:#fff;font-size:14.5px;font-weight:600;text-decoration:none;box-shadow:0 10px 24px rgba(29,78,216,.28),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}.public-document-actions a.is-primary:hover,.public-document-actions button.is-primary:hover{transform:translateY(-2px);filter:brightness(1.05);text-decoration:none;box-shadow:0 16px 32px rgba(29,78,216,.36),inset 0 1px 0 rgba(255,255,255,.28)}.public-document-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-top:22px;color:var(--ink-muted);font-size:13px}.public-document-footer nav{display:flex;flex-wrap:wrap;gap:17px}.public-document-footer nav a{position:relative}.public-document-footer nav a+a:before{content:"·";position:absolute;left:-10px;color:var(--ink-muted);opacity:.6}.public-document-footer nav a{color:var(--navy-700);font-weight:500}.public-document-footer a{color:var(--brand-1);text-decoration:none}.public-document-footer a:hover{text-decoration:underline}.docs-print{border:0;background:none;padding:11px 4px;color:var(--brand-1);font:inherit;font-size:14px;cursor:pointer}.docs-print:hover{text-decoration:underline}.docs-faq details{border-bottom:1px solid var(--line);padding:14px 0}.docs-faq summary{cursor:pointer;font-weight:600;color:var(--ink)}.docs-faq details>div{padding-top:10px}.public-document-card a:focus-visible,.public-document-card button:focus-visible,.public-document-card summary:focus-visible{outline:3px solid var(--brand-1);outline-offset:4px}@media (max-width:600px){.public-document-page{padding:20px 12px}.public-document-card{padding:26px 20px;border-radius:16px}}.is-spinning{display:inline-block;animation:nav-spin .7s linear infinite}@keyframes nav-spin{to{transform:rotate(1turn)}}.skeleton{background:linear-gradient(90deg,var(--line-soft) 0,#f1f5f9 50%,var(--line-soft) 100%);background-size:200% 100%;animation:skShimmer 1.6s ease-in-out infinite;border-radius:var(--radius-lg)}@keyframes skShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media print{.public-document-actions,.public-document-footer,.public-document-header{display:none}.public-document-page{padding:0;background:white}.public-document-shell{width:100%}.public-document-card{padding:0;border:0;box-shadow:none;background:#fff}.public-document-content h2{page-break-after:avoid;break-after:avoid}.public-document-content .table-wrap{overflow:visible}.public-document-content .data-table{min-width:0}}