/* Sarabun: local fonts, SIL Open Font License; see assets/fonts/OFL.txt. */
@font-face{font-family:Sarabun;font-style:normal;font-weight:400;font-display:swap;src:url('assets/fonts/Sarabun-Regular.ttf') format('truetype')}
@font-face{font-family:Sarabun;font-style:normal;font-weight:600;font-display:swap;src:url('assets/fonts/Sarabun-SemiBold.ttf') format('truetype')}
@font-face{font-family:Sarabun;font-style:normal;font-weight:700;font-display:swap;src:url('assets/fonts/Sarabun-Bold.ttf') format('truetype')}
:root{--green:#11765b;--deep:#114739;--mint:#e6f4ee;--ink:#223a35;--muted:#75847f;--line:#e2eae6;--bg:#f5f8f6;--red:#b93d47}*{box-sizing:border-box}body{margin:0;font-family:"Leelawadee UI",Tahoma,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.65}h1,h2,h3,h4,p{margin-top:0}h1{font-size:30px;line-height:1.4;margin-bottom:8px}h2{font-size:23px;line-height:1.45}h3{font-size:17px;margin-bottom:12px}small,.small{font-size:12px}.muted{color:var(--muted)}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:bold;color:var(--green)}button,input,select,textarea{font:inherit}button,.button{cursor:pointer;border:1px solid var(--line);border-radius:9px;padding:9px 15px;background:white;color:var(--ink);text-decoration:none;display:inline-block;line-height:1.6}button:hover,.button:hover{filter:brightness(.97)}button:disabled{opacity:.55;cursor:wait}.primary{background:var(--green);color:white;border-color:var(--green)}.danger{color:var(--red);border-color:#f0cdd0}.ghost{background:transparent;border-color:transparent}.full{width:100%}input,select,textarea{width:100%;padding:10px 12px;border:1px solid #d9e3dd;border-radius:8px;background:white;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid #b3dace;border-color:var(--green)}textarea{min-height:85px;resize:vertical}label{display:block;margin-bottom:14px;font-size:13px;font-weight:600}label input,label select,label textarea{margin-top:5px}label.check{display:flex;gap:9px;align-items:center;font-weight:normal}input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--green)}.card{border:1px solid var(--line);border-radius:16px;background:white;padding:25px;box-shadow:0 2px 4px #11473903}.brand-mark{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:13px;background:var(--green);color:white;font-size:27px;font-weight:900;line-height:1}.brand{display:flex;align-items:center;gap:12px;font-size:20px;line-height:1.35}.brand small{display:block;font-size:10px;letter-spacing:0;color:var(--muted);margin-top:6px}.brand b{color:var(--green)}#sidebar{position:fixed;inset:0 auto 0 0;width:240px;background:white;border-right:1px solid var(--line);padding:30px 20px;display:flex;flex-direction:column;z-index:20}.nav-label{font-size:10px;color:var(--muted);margin:38px 12px 12px}.nav-item{display:flex;width:100%;align-items:center;gap:12px;border:0;border-radius:9px;background:white;text-align:left;padding:11px 14px;margin:4px 0;color:#62756e}.nav-item.active{color:var(--green);background:var(--mint);font-weight:bold}.nav-icon{width:23px;font-size:18px}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:20px 10px 0}.sidebar-foot small{display:block;color:var(--muted)}#workspace{margin-left:240px}.topbar{height:76px;background:#ffffffed;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 36px;position:sticky;top:0;z-index:10}.topright{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:12px}.online-dot{height:7px;width:7px;border-radius:100%;background:#39a174}#main{padding:32px 36px;max-width:1600px;margin:auto}.page-head{display:flex;gap:18px;align-items:center;justify-content:space-between;margin-bottom:25px}.page-head p{margin:7px 0 0}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.hero{background:var(--deep);color:white;display:flex;justify-content:space-between;gap:20px;padding:30px;border-radius:17px;margin-bottom:25px;overflow:hidden}.hero .eyebrow{color:#9bd3bb}.hero p{color:#bed5cc;margin-bottom:0}.hero-emblem{font-size:65px;opacity:.4;align-self:center;padding-right:15px}.grid{display:grid;gap:18px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.stat{padding:20px 22px}.stat .value{font-size:29px;font-weight:700;margin:6px 0 0;line-height:1.2}.stat p{font-size:12px;color:var(--muted);margin:0}.stat small{color:var(--green)}.section{margin-top:25px}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-head h3{margin:0}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:white}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{font-size:11px;color:var(--muted);background:#f9fbfa;position:sticky;top:0}th,td{padding:13px 17px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}.badge{display:inline-block;padding:3px 9px;border-radius:6px;font-size:11px;white-space:nowrap;background:var(--mint);color:var(--green)}.badge.gray{background:#edf0ee;color:#6c7972}.badge.warn{background:#fff3d9;color:#95681b}.badge.red{background:#fcebed;color:var(--red)}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px}.toolbar input{max-width:380px}.toolbar select{max-width:200px}.empty{padding:45px 20px;text-align:center;color:var(--muted)}.exam-card{position:relative}.exam-card .badge{margin-bottom:15px}.exam-card h3{font-size:20px;margin-bottom:6px}.exam-meta{display:flex;gap:14px;color:var(--muted);font-size:12px;margin:16px 0}.exam-card .actions{border-top:1px solid var(--line);padding-top:16px}.code{font-family:Consolas,monospace;font-weight:bold;letter-spacing:1px;background:#f1f6f3;border:1px dashed #c9dbd1;border-radius:7px;padding:5px 10px}.bar-row{display:grid;grid-template-columns:85px 1fr 30px;align-items:center;gap:10px;margin:12px 0;font-size:12px}.bar-track{height:10px;background:#eef3ef;border-radius:10px;overflow:hidden}.bar-fill{height:100%;background:#5aab86;border-radius:10px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:80px;padding:35px;background:radial-gradient(ellipse at 0% 0%,#deeee4,transparent 60%),var(--bg)}.login-intro{max-width:410px}.login-intro .brand-mark{width:60px;height:60px;font-size:38px;margin-bottom:25px}.login-intro h1{font-size:44px;color:var(--deep);line-height:1.4}.login-intro>p:not(.eyebrow){color:#71877b;font-size:16px}.intro-pills{display:flex;gap:10px;margin-top:25px}.intro-pills span{font-size:12px;border:1px solid #cddfd3;border-radius:20px;padding:6px 13px}.login-card{width:420px;padding:36px}.login-card h2{margin-bottom:8px}.login-card form{margin-top:25px}.setup{max-width:680px;width:100%;margin:20px auto}.setup>.brand-mark{margin-bottom:18px}.setup h3{margin-top:25px}.alert,.success{padding:12px 16px;border-radius:8px;background:#fcebed;color:var(--red);margin:15px 0}.success{background:var(--mint);color:var(--green)}.error-text{color:var(--red);margin:10px 0}#toast{position:fixed;bottom:25px;right:25px;max-width:420px;background:var(--deep);color:white;padding:13px 22px;border-radius:10px;box-shadow:0 8px 35px #173b3826;z-index:100;display:none}dialog{border:0;border-radius:17px;box-shadow:0 20px 100px #12382b40;padding:28px;max-width:840px;width:calc(100% - 32px);max-height:90vh;color:var(--ink)}dialog::backdrop{background:#18372d66;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-head h2{margin:0}.dialog-footer{display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:-28px;background:white;padding:15px 0;margin-top:18px;border-top:1px solid var(--line)}.q-picker{max-height:270px;overflow:auto;border:1px solid var(--line);padding:15px;border-radius:8px;margin-bottom:15px}.q-picker label{padding:8px 0;border-bottom:1px solid var(--line);margin:0}.mobile-only{display:none}.pagination{display:flex;gap:10px;align-items:center;justify-content:flex-end;padding:15px 0}.question{border:1px solid var(--line);padding:23px;background:white;border-radius:12px;margin-bottom:18px;break-inside:avoid}.question h3{white-space:pre-wrap}.choice{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--line);border-radius:10px;padding:13px;margin-bottom:10px;cursor:pointer;font-weight:normal}.choice:has(input:checked){border-color:var(--green);background:var(--mint)}.choice input{margin-top:6px}.exam-toolbar{display:flex;gap:15px;justify-content:space-between;align-items:center;background:white;padding:15px;border:1px solid var(--line);border-radius:12px;position:sticky;top:85px;z-index:9;margin-bottom:20px}.timer{font-family:Consolas,monospace;color:var(--green);font-size:26px;font-weight:bold}.timer.late{color:var(--red)}.q-nav{display:flex;flex-wrap:wrap;gap:6px;margin:15px 0}.q-nav button{min-width:37px;padding:6px}.q-nav .done{background:var(--mint);color:var(--green)}.q-nav .current{border:2px solid var(--green)}.exam-layout{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:24px}.exam-side{align-self:start;position:sticky;top:180px}.info-note{padding:14px;background:#f3f7f4;border-left:3px solid #7fac92;color:#5c7565;font-size:12px;margin:15px 0}.answer-line{border-bottom:1px dotted #a5b5ac;height:40px}.report-title{text-align:center;margin-bottom:25px}.report-title h2{margin:10px 0}.print-only{display:none}.log{font-size:12px;border-left:2px solid #e5bf72;padding:8px 15px;margin:8px 0;background:#fffaf0}.number{font-family:Consolas,monospace}.qr-box{text-align:center;padding:20px}.qr-box svg{width:200px;height:200px}.print-sheet .bubble{border:1px solid #899990;border-radius:50%;width:23px;height:23px;display:inline-flex;align-items:center;justify-content:center;margin-right:7px;font-size:10px}.break-after{break-after:page}.print-sheet{max-width:210mm;margin:auto;background:white;padding:20px}.exam-mode #sidebar{display:none}.exam-mode #workspace{margin-left:0}.exam-mode .topbar{display:none}.exam-mode .exam-toolbar{top:0}.exam-mode .exam-side{top:100px}progress{width:100%;height:8px;accent-color:var(--green)}details{margin:15px 0}summary{cursor:pointer;font-weight:bold}.prewrap{white-space:pre-wrap}.report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:20px}.report-grid div{padding:7px;border-bottom:1px solid var(--line)}
@media(max-width:1100px){.four{grid-template-columns:repeat(2,1fr)}.three{grid-template-columns:repeat(2,1fr)}#main{padding:25px}.topbar{padding:0 25px}.login-page{gap:35px}.login-intro h1{font-size:34px}.exam-layout{grid-template-columns:1fr}.exam-side{position:static}}
@media(max-width:760px){#sidebar{transform:translateX(-100%);transition:.2s}.nav-open #sidebar{transform:none;box-shadow:30px 0 100px #133b3d44}#workspace{margin:0}.mobile-only{display:inline-block}.topbar{height:65px;padding:0 15px}.topright>span{display:none}#main{padding:20px 15px}.page-head{align-items:flex-start;flex-direction:column}.page-head h1{font-size:25px}.two,.three{grid-template-columns:1fr}.four{gap:10px}.card{padding:18px}.stat .value{font-size:25px}.hero{padding:23px}.hero h2{font-size:21px}.hero-emblem{display:none}.login-page{padding:20px;flex-direction:column;gap:25px}.login-intro{width:100%;max-width:420px}.login-intro h1{font-size:30px}.login-intro h1 br{display:none}.login-intro>p:not(.eyebrow),.intro-pills{display:none}.login-intro .brand-mark{margin-bottom:10px}.login-card{width:100%;max-width:420px;padding:25px}.exam-toolbar{top:70px}.exam-toolbar .actions{gap:2px}.exam-toolbar button{padding:7px}.report-grid{grid-template-columns:1fr 1fr}th,td{padding:10px}.toolbar{flex-wrap:wrap}.toolbar select{max-width:none}}
@media print{@page{size:A4;margin:14mm}body{background:white;color:black;font-size:11pt}#sidebar,.topbar,.no-print,#toast,dialog,.exam-toolbar,.exam-side{display:none!important}#workspace{margin:0!important}#main{padding:0;max-width:none}.print-only{display:block}.card,.question,.table-wrap{border-color:#aaa;box-shadow:none;border-radius:0}table{font-size:10pt}thead{display:table-header-group}th{position:static;background:#eee;color:#222}tr{break-inside:avoid}.page-head{margin:0}.page-head .actions{display:none}.print-sheet{padding:0;max-width:none}.print-sheet .two{grid-template-columns:1fr 1fr}.question{padding:12px}.choice{border:0;padding:3px;margin:0}.badge{color:black;border:1px solid #999;background:white}a{color:black;text-decoration:none}.report-grid{grid-template-columns:repeat(3,1fr)}.section{margin-top:15px}h1{font-size:19pt}h2{font-size:16pt}h3{font-size:12pt}}

/* 1.1 Institutional identity and Thai typography. Keep the original artwork intact. */
.login-intro h1 br{display:block}
body{font-family:Sarabun,"Leelawadee UI",Tahoma,sans-serif;font-size:15px;line-height:1.75}
button,input,select,textarea{font-family:inherit}
h1,h2,h3,h4,b,strong{font-weight:700}
label{font-size:14px}table{font-size:14px}th{font-size:12.5px}.small,small{font-size:12.5px}.badge{font-size:12.5px}
.institution-logo{display:block;object-fit:contain;object-position:center;width:100%;height:auto;flex-shrink:0}
.institution-panel{background:white;border:1px solid var(--line);border-radius:13px;padding:18px 20px;margin-bottom:30px}
.login-intro{max-width:520px;width:min(520px,45vw)}
.login-logo{max-width:460px}
.login-intro h1{font-size:40px;line-height:1.45}
.login-intro>.eyebrow{letter-spacing:2.5px;margin-bottom:12px}
.login-card{flex-shrink:0}.login-page{gap:64px}
.topbar{height:88px;gap:18px;padding:0 28px}
.topbar-brand{display:flex;align-items:center;gap:24px;min-width:0;flex:1}
.topbar-logo{width:300px;max-width:100%;height:auto}
#breadcrumb{font-size:13px;color:var(--muted);border-left:1px solid var(--line);padding-left:22px;white-space:nowrap}
.topright{flex-shrink:0}.topright>span{display:none}
.system-brand{padding:3px 12px;font-size:25px;letter-spacing:.5px}
.system-brand small{font-size:12px;letter-spacing:0}
.sidebar-foot button{display:block;text-align:left;padding-left:0}
.setup-institution{max-width:440px;margin:0 auto 26px;padding:0 2px 20px;border-bottom:1px solid var(--line)}
.document-brand{max-width:128mm;margin:0 auto 7mm}
.exam-toolbar{top:98px}.exam-side{top:194px}
.exam-mode .exam-toolbar{top:0}.exam-mode .exam-side{top:100px}
@media(max-width:1200px){.topbar-logo{width:260px}.topbar-brand{gap:16px}#breadcrumb{padding-left:16px}.topbar{padding:0 22px}.login-page{gap:38px}.login-intro{max-width:460px}.login-intro h1{font-size:36px}}
@media(max-width:1000px){#breadcrumb{display:none}.topbar-logo{width:280px}.login-intro{width:min(450px,43vw)}.login-card{width:380px}}
@media(max-width:760px){.login-page{gap:24px;padding:22px 18px}.login-intro{width:100%;max-width:420px}.institution-panel{padding:16px;margin-bottom:20px}.login-intro h1{font-size:29px;margin-bottom:0}.login-logo{max-width:388px}.login-card{width:100%;max-width:420px}.topbar{height:78px;padding:0 14px;gap:8px}.topbar-brand{justify-content:center}.topbar-logo{width:min(300px,calc(100vw - 84px))}.topright{display:none}.system-brand{font-size:24px}.exam-toolbar{top:86px}.exam-mode .exam-toolbar{top:0}.setup-institution{margin-bottom:22px;padding-bottom:16px}th{font-size:12px}.badge{font-size:12px}}
@media print{body{font-family:Sarabun,Tahoma,sans-serif;font-size:11pt}.document-brand{display:block!important;break-inside:avoid}.print-logo{width:128mm;max-width:100%;height:auto}table{font-size:10pt}th{font-size:9pt}small,.small{font-size:9pt}.badge{font-size:9pt}h1{font-size:19pt}h2{font-size:16pt}h3{font-size:12pt}}
