:root{font-family:Tahoma,Noto Sans Thai,Arial,sans-serif;color:#121826;background:#f1f6fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f1f6fb}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}input,select,textarea{width:100%;border:1px solid #dbe5f0;border-radius:8px;background:#fff;color:#172033;padding:10px 12px;outline:none;min-height:42px}textarea{min-height:88px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:#2374e1;box-shadow:0 0 0 3px #2374e11f}.thai-date-input.invalid{border-color:#bd3028;box-shadow:0 0 0 3px #bd30281f}.thai-date-field{position:relative;width:100%}.thai-date-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.thai-date-trigger{min-height:42px;border:1px solid #d6e6ff;border-radius:8px;background:#eaf2ff;color:#2374e1;padding:0 12px;font-weight:700}.thai-calendar{position:absolute;top:calc(100% + 8px);right:0;z-index:30;width:312px;max-width:min(312px,calc(100vw - 32px));border:1px solid #dbe5f0;border-radius:8px;background:#fff;box-shadow:0 20px 45px #1f2d3d29;padding:12px}.thai-calendar-head,.thai-calendar-week,.thai-calendar-grid,.thai-calendar-actions{display:grid}.thai-calendar-head{grid-template-columns:38px minmax(0,1fr) 38px;align-items:center;gap:8px;margin-bottom:10px;text-align:center}.calendar-nav,.calendar-day,.calendar-text-button{border:1px solid transparent;border-radius:8px;background:#fff;color:#172033;font-weight:700}.calendar-nav{min-height:34px;border-color:#dbe5f0;font-size:22px}.thai-calendar-week,.thai-calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.thai-calendar-week{margin-bottom:6px;color:#68798e;font-size:12px;font-weight:700;text-align:center}.thai-calendar-week span{min-height:24px;display:grid;place-items:center}.calendar-day{aspect-ratio:1;min-height:36px}.calendar-day:hover,.calendar-nav:hover,.calendar-text-button:hover{background:#eaf2ff;color:#2374e1}.calendar-day.muted{color:#a4b0bf}.calendar-day.today{border-color:#59c49a}.calendar-day.selected{background:#2374e1;color:#fff}.calendar-day.selected:hover{background:#155fc0;color:#fff}.thai-calendar-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.calendar-text-button{min-height:36px;border-color:#dbe5f0;color:#2374e1}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:#12182673}.modal-panel{width:min(1080px,100%);max-height:min(760px,calc(100vh - 48px));display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #dbe5f0;border-radius:8px;background:#fff;box-shadow:0 24px 60px #1218263d}.case-list-modal{width:min(1240px,100%)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid #e9eff6}.modal-head p{margin-bottom:0;color:#66768b}.modal-body{min-height:0;overflow:auto}.modal-body>.muted{padding:18px}.modal-table{min-width:920px}.case-list-modal .modal-table{min-width:1080px}label span{display:block;margin-bottom:6px;color:#123a6f;font-size:13px;font-weight:700}.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(520px,100%);background:#fff;border:1px solid #dfe8f2;border-radius:8px;box-shadow:0 20px 50px #1f2d3d14;overflow:hidden}.login-card label,.login-card .muted,.login-card .error-text{margin:0 20px 18px}.login-head{display:flex;align-items:center;gap:14px;padding:22px 20px;border-bottom:1px solid #e8eef6}.login-head strong,.brand strong{display:block;font-size:20px;line-height:1.25}.login-head small,.brand small{display:block;color:#708198;margin-top:2px}.brand-mark{width:38px;height:38px;flex:0 0 38px;border-radius:8px;background:linear-gradient(135deg,#2479ea,#59c49a)}.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:18px 20px;border-top:1px solid #e8eef6}.primary-button,.soft-button,.ghost-button,.dark-button,.icon-button,.link-button{display:inline-flex;align-items:center;justify-content:center;min-height:38px;border:1px solid transparent;border-radius:8px;padding:8px 14px;font-weight:700;white-space:nowrap}.primary-button{color:#fff;background:#2374e1}.primary-button:hover{background:#155fc0}.soft-button{color:#2374e1;background:#eaf2ff;border-color:#d6e6ff}.ghost-button,.icon-button{color:#172033;background:#fff;border-color:#dbe5f0}.dark-button{color:#fff;background:#172033}.link-button{background:transparent;color:#6b7587;padding-inline:8px}.compact{min-height:34px;padding:6px 12px}.muted{color:#68798e;font-size:13px}.error-text{color:#bd3028}.success-text{color:#087947}.app-shell{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid #dfe8f2;padding:14px}.brand{display:flex;gap:12px;align-items:center;height:52px;margin-bottom:18px}.nav-list{display:grid;gap:6px}.nav-list a{min-height:42px;display:flex;align-items:center;border-radius:8px;color:#172033;padding:8px 14px;font-weight:700}.nav-list a.child{min-height:38px;padding-left:28px;font-size:14px}.nav-list a.active{background:#e7f0ff;border:1px solid #cfe0fb;color:#2374e1}.nav-heading{margin-top:8px;padding:8px 14px 2px;color:#68798e;font-size:12px;font-weight:700}.main-panel{min-width:0}.topbar{min-height:54px;display:flex;justify-content:flex-end;align-items:center;gap:18px;padding:10px 18px;background:#fff;border-bottom:1px solid #dfe8f2}.user-chip{border-radius:999px;background:#eaf2ff;border:1px solid #d6e6ff;color:#2374e1;padding:6px 14px;font-weight:700}.page{padding:24px 28px 40px}.page-heading{margin-bottom:18px}.page-heading.with-action,.panel-head,.pagination,.section-title,.case-summary-row,.report-controls{display:flex;align-items:center;justify-content:space-between;gap:14px}h1,h2,p{margin-top:0}h1{margin-bottom:4px;font-size:28px}h2{margin-bottom:0;font-size:17px}.page-heading p{margin-bottom:0;color:#66768b}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}.metric-card,.panel,.form-section{background:#fff;border:1px solid #dfe8f2;border-radius:8px;box-shadow:0 16px 35px #1f2d3d0d}.metric-card{padding:18px}.metric-card span,.metric-card small{display:block;color:#64758b}.metric-card strong{display:block;font-size:34px;margin:6px 0}.panel{padding:0;overflow:hidden}.panel-head{padding:16px 18px;border-bottom:1px solid #e9eff6}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:14px 18px;border-bottom:1px solid #edf2f7;text-align:left;vertical-align:middle}.data-table th{color:#65768b;background:#f8fbff;font-size:13px;font-weight:700}.data-table .sequence-cell{width:72px;color:#64748b;font-weight:700;white-space:nowrap}.data-table .number-cell{color:#0f172a;font-weight:700;text-align:right;white-space:nowrap}.data-table tr:last-child td{border-bottom:0}.data-table tr.row-highlight td{background:#fff7d6;transition:background .2s ease}.compact-table th,.compact-table td{padding:12px}.status-pill{display:inline-flex;min-height:28px;align-items:center;border-radius:999px;background:#eaf2ff;color:#2374e1;padding:4px 12px;font-size:13px;font-weight:700}.status-pill.done{background:#e5f7ed;color:#087947}.row-actions,.inline-actions{display:inline-flex;align-items:center;gap:8px}.inline-actions.wide{width:min(520px,100%)}.attachment-panel{margin-top:10px;display:grid;gap:8px}.attachment-uploader label{max-width:420px}.attachment-uploader input{min-height:34px;padding:6px 9px;font-size:13px}.attachment-list{display:grid;gap:4px}.attachment-list h3{margin:0;font-size:13px;color:#172033}.attachment-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,300px) auto;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid #edf2f7;font-size:13px}.attachment-row>div:first-child{min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.attachment-row strong{min-width:0;overflow-wrap:anywhere;font-size:13px;line-height:1.25}.attachment-row small{color:#68798e;white-space:nowrap;font-size:12px}.attachment-row label{display:grid;grid-template-columns:auto minmax(140px,1fr);align-items:center;gap:8px}.attachment-row label span{font-size:12px;color:#68798e}.attachment-row input{min-height:30px;padding:5px 8px;font-size:13px}.attachment-row .inline-actions{justify-content:flex-end;flex-wrap:nowrap;gap:5px}.attachment-icon-button{width:30px;height:30px;display:inline-grid;place-items:center;border:1px solid #d8e5f3;border-radius:6px;background:#f8fbff;color:#24507d;cursor:pointer;font-size:15px;line-height:1;padding:0;transition:background .15s ease,border-color .15s ease,color .15s ease}.attachment-icon-button:hover{background:#e9f3ff;border-color:#b8d4f0;color:#123d67}.attachment-icon-button.danger{color:#9f2b2b;border-color:#efd3d3;background:snow;font-size:18px}.attachment-icon-button.danger:hover{background:#ffecec;border-color:#e3b4b4;color:#7f1d1d}.filter-layout{display:grid;grid-template-columns:minmax(180px,42%) minmax(280px,58%);align-items:center;padding:18px;margin-bottom:0;border-bottom:0;overflow:visible}.filter-controls{display:grid;grid-template-columns:1fr;gap:10px}.date-range-filter{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.pagination{padding:14px 18px;color:#607187}.page-size-select{width:auto;min-width:120px}.case-summary-row{margin-bottom:10px}.summary-chip{background:#fff;border:1px solid #dfe8f2;border-radius:999px;padding:9px 16px;font-weight:700}.summary-input-chip{display:inline-flex;align-items:center;gap:8px;min-height:42px}.summary-input-chip input{width:180px;min-height:28px;padding:2px 4px;border:0;background:transparent;font:inherit;font-weight:700;color:#0f172a}.summary-input-chip input:focus{box-shadow:none}.stacked-form{display:grid;gap:10px}.form-section{padding:16px;overflow:visible}.section-title{margin-bottom:14px}.form-grid{display:grid;gap:12px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.form-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.person-autocomplete{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;margin-bottom:12px}.autocomplete-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:25;width:min(680px,100%);max-height:320px;overflow:auto;border:1px solid #dbe5f0;border-radius:8px;background:#fff;box-shadow:0 18px 40px #1f2d3d24;padding:6px}.autocomplete-item{display:grid;width:100%;gap:4px;padding:10px 12px;border:0;border-radius:6px;background:transparent;color:#172033;text-align:left}.autocomplete-item:hover,.autocomplete-item:focus{background:#edf5ff}.autocomplete-item span{color:#64758b;font-size:13px}.autocomplete-state{margin:0;padding:10px 12px}.tiny-toggle{width:24px;height:24px;display:inline-grid;place-items:center;border-radius:999px;background:#dcf7e8;color:#1b8d58;font-weight:700}.inline-form{display:grid;grid-template-columns:1.1fr .7fr repeat(3,1fr) auto;gap:10px;padding:16px 18px;border-bottom:1px solid #e9eff6}.lookup-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.lookup-form{display:grid;grid-template-columns:90px 1fr;gap:10px;padding:14px 12px;border-bottom:1px solid #e9eff6}.lookup-page-form{display:grid;grid-template-columns:160px minmax(0,1fr) auto;gap:12px;align-items:end;padding:16px 18px;border-bottom:1px solid #e9eff6}.lookup-message{margin:0;padding:12px 18px 0}.user-form-panel{margin-bottom:14px}.user-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:16px 18px}.checkbox-row{display:inline-flex;align-items:center;gap:8px;min-height:42px}.checkbox-row input{width:18px;min-height:18px;flex:0 0 18px}.role-picker{display:grid;gap:6px;align-content:start}.role-picker>span{color:#4c5f76;font-weight:700}.user-form-actions{grid-column:1 / -1;padding:0;border-top:0}.report-panel{padding:14px}.report-controls{justify-content:flex-start;margin-bottom:14px}.report-controls select{max-width:360px}.report-preview{width:min(980px,100%);background:#fff}.report-preview img{display:block;width:100%;height:auto;border:1px solid #dfe8f2}.print-shell{min-height:100vh;background:#f1f6fb;color:#111;padding:18px}.print-actions{display:flex;justify-content:flex-end;gap:10px;max-width:1120px;margin:0 auto 12px}.print-paper{margin:0 auto;background:#fff;color:#111;box-shadow:0 12px 35px #1f2d3d1f;font-family:TH Sarabun New,Sarabun,Arial,sans-serif;font-size:14px}.portrait-paper{page:portrait-page;width:210mm;min-height:297mm;padding:18mm 22mm}.compact-detail-paper{padding:13mm 15mm;font-size:14px}.landscape-paper{page:landscape-page;width:297mm;min-height:210mm;padding:16mm 14mm}.print-paper h1{margin:0 0 28mm;text-align:center;font-size:24px;font-weight:700}.print-paper h2{margin:0 0 10mm;font-size:24px;font-weight:700}.compact-detail-paper h1{margin-bottom:5mm;font-size:16px}.compact-detail-paper h2{margin-bottom:3mm;font-size:16px}.compact-detail-paper h3,.compact-detail-paper strong{font-size:16px}.compact-detail-paper span,.compact-detail-paper .print-note-box{font-size:14px}.compact-detail-paper .print-dash-line{margin-bottom:5mm;border-top-width:1px}.print-section{margin-bottom:5mm}.print-section h3{margin:0 0 2mm;font-weight:700}.print-info-grid{display:grid;gap:2mm 4mm}.print-info-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.print-info-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.print-info-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.print-info-grid>div{display:grid;gap:1mm;min-height:11mm;padding:2mm 2.5mm;border:1px solid #777}.print-info-grid .span-two{grid-column:span 2}.print-note-box{min-height:18mm;padding:2.5mm;border:1px solid #777;white-space:pre-wrap}.discipline-detail-paper{position:relative;padding:12mm 13mm;font-size:14px;line-height:1.35}.discipline-detail-paper h1{margin:0 0 2mm;padding-bottom:2mm;border-bottom:2px solid #111;text-align:center;font-size:14px}.discipline-detail-paper strong,.discipline-bar,.discipline-detail-paper span,.discipline-detail-paper dd,.discipline-mini-grid{font-size:14px}.discipline-top{display:grid;grid-template-columns:minmax(0,1fr) 70mm;gap:8mm;margin-top:3mm}.discipline-left,.discipline-right{display:grid;gap:2mm}.discipline-left>div,.discipline-right>div,.discipline-person>div,.discipline-position>div,.discipline-mini-grid>div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4mm;align-items:baseline}.discipline-right>div{grid-template-columns:34mm minmax(0,1fr)}.discipline-person{display:grid;grid-template-columns:36mm 1fr 1fr;gap:8mm;margin-top:4mm}.discipline-position{display:grid;grid-template-columns:60mm minmax(0,1fr) 38mm 30mm;gap:4mm;margin-top:3mm}.discipline-position>div{gap:3mm}.discipline-bar{margin-top:4mm;padding:1.5mm 2mm;background:#5f6368;color:#fff;text-align:center;font-weight:700}.discipline-lines{display:grid;grid-template-columns:42mm minmax(0,1fr);gap:2.2mm 4mm;margin:3mm 0 0}.discipline-lines dt{font-size:14px;font-weight:700}.discipline-lines dd{min-height:5.5mm;margin:0;white-space:pre-wrap}.discipline-rows{display:grid;gap:1.5mm;margin-top:3mm}.discipline-row{display:grid;grid-template-columns:43mm minmax(0,1fr);gap:4mm;align-items:start}.discipline-row strong{line-height:1.25;overflow-wrap:anywhere}.discipline-row span{min-width:0;min-height:5mm;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.discipline-mini-grid{display:grid;grid-template-columns:minmax(32mm,1.35fr) minmax(22mm,.75fr) minmax(34mm,1.15fr) minmax(22mm,.75fr) minmax(22mm,.75fr);gap:3mm;margin-top:3mm}.discipline-mini-grid>div{display:grid;grid-template-columns:minmax(0,auto) minmax(0,1fr);gap:2mm;align-items:start;min-width:0}.discipline-mini-grid strong,.discipline-mini-grid span{min-width:0;overflow-wrap:anywhere;line-height:1.25}.discipline-mini-list{display:grid;gap:1.5mm;margin-top:3mm}.discipline-mini-list>div{display:grid;grid-template-columns:55mm minmax(0,1fr);gap:4mm;align-items:start}.discipline-mini-list strong,.discipline-mini-list span{min-width:0;line-height:1.3;overflow-wrap:anywhere}.discipline-action-lines{grid-template-columns:55mm minmax(0,1fr)}.discipline-footer{position:absolute;right:16mm;bottom:14mm;font-size:14px}.print-dash-line{border-top:2px dashed #111;margin-bottom:12mm}.detail-code-row,.person-print-row{display:grid;gap:14mm;margin-bottom:10mm;font-size:23px}.detail-code-row{grid-template-columns:minmax(0,1fr) 120px minmax(0,1fr)}.detail-code-row>div:last-child{grid-column:3}.person-print-row{grid-template-columns:1fr 1.2fr 1.2fr 1.5fr}.print-detail-list{display:grid;gap:8mm;margin:0;font-size:23px}.print-detail-list dt{font-weight:700}.print-detail-list dd{min-height:12mm;margin:0;white-space:pre-wrap}.print-list-page .print-paper h1{margin-bottom:6mm;font-size:16px}.print-list-page .print-paper h2{margin-bottom:2mm;font-size:16px}.compact-list-paper{padding:10mm 9mm}.print-register-page .print-paper h1{margin-bottom:8mm;font-size:16px}.register-paper{padding:13mm 11mm}.print-case-table{width:100%;border-collapse:collapse;font-size:14px}.print-case-table th,.print-case-table td{padding:5px 6px;border-bottom:1px solid #555;text-align:left;vertical-align:top}.print-case-table th{font-weight:700}.print-case-table th:first-child,.print-case-table td:first-child{text-align:center;width:38px}.print-filter-row td{border-top:1px solid #555;border-bottom:0;font-size:14px}.print-compact-list-table{table-layout:fixed;font-size:14px;line-height:1.3}.print-compact-list-table th{font-size:16px;line-height:1.2}.print-compact-list-table td{font-size:14px}.print-compact-list-table th,.print-compact-list-table td{padding:3px 4px;word-break:break-word}.print-compact-list-table .print-filter-row td{font-size:14px;padding:4px}.print-compact-list-table th:nth-child(1),.print-compact-list-table td:nth-child(1){width:10mm}.print-compact-list-table th:nth-child(2),.print-compact-list-table td:nth-child(2){width:34mm}.print-compact-list-table th:nth-child(3),.print-compact-list-table td:nth-child(3){width:22mm}.print-compact-list-table th:nth-child(4),.print-compact-list-table td:nth-child(4){width:68mm}.print-compact-list-table th:nth-child(5),.print-compact-list-table td:nth-child(5){width:24mm}.print-compact-list-table th:nth-child(6),.print-compact-list-table td:nth-child(6){width:10mm}.print-compact-list-table th:nth-child(7),.print-compact-list-table td:nth-child(7){width:34mm}.print-compact-list-table th:nth-child(8),.print-compact-list-table td:nth-child(8){width:20mm}.print-compact-list-table th:nth-child(9),.print-compact-list-table td:nth-child(9){width:22mm}.print-register-table{table-layout:fixed;font-size:10.5px;line-height:1.35}.print-register-table th,.print-register-table td{padding:4px;word-break:break-word}.print-register-table th:nth-child(1),.print-register-table td:nth-child(1){width:8mm}.print-register-table th:nth-child(2),.print-register-table td:nth-child(2){width:32mm}.print-register-table th:nth-child(3),.print-register-table td:nth-child(3){width:18mm}.print-register-table th:nth-child(4),.print-register-table td:nth-child(4){width:24mm}.print-register-table th:nth-child(5),.print-register-table td:nth-child(5){width:10mm}.print-register-table th:nth-child(6),.print-register-table td:nth-child(6){width:44mm}.print-register-table th:nth-child(7),.print-register-table td:nth-child(7){width:18mm}.print-register-table th:nth-child(8),.print-register-table td:nth-child(8){width:9mm}.print-register-table th:nth-child(9),.print-register-table td:nth-child(9){width:24mm}.print-register-table th:nth-child(10),.print-register-table td:nth-child(10){width:17mm}.print-register-table th:nth-child(11),.print-register-table td:nth-child(11){width:18mm}@page{size:A4 portrait;margin:0}@page portrait-page{size:A4 portrait;margin:0}@page landscape-page{size:A4 landscape;margin:0}.portrait-paper{page:portrait-page}.landscape-paper{page:landscape-page}@media print{body{background:#fff}.print-actions{display:none}.print-shell{min-height:auto;padding:0;background:#fff}.print-paper{width:auto;min-height:auto;margin:0;box-shadow:none}.portrait-paper{padding:18mm 22mm}.landscape-paper{padding:16mm 14mm}}@media(max-width:1100px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.metric-grid,.lookup-grid{grid-template-columns:1fr}.form-grid.four,.form-grid.three,.inline-form,.lookup-page-form,.user-form{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:static;height:auto;border-right:0;border-bottom:1px solid #dfe8f2}.nav-list{grid-template-columns:repeat(2,minmax(0,1fr))}.page{padding:18px 14px 28px}.page-heading.with-action,.panel-head,.pagination,.section-title,.case-summary-row,.report-controls{align-items:stretch;flex-direction:column}.metric-grid,.date-range-filter,.form-grid.two,.form-grid.three,.form-grid.four,.filter-layout,.inline-form,.lookup-form,.attachment-row,.lookup-page-form,.user-form{grid-template-columns:1fr}.data-table{min-width:720px}.panel{overflow-x:auto}.filter-layout,.form-section{overflow:visible}.inline-actions,.row-actions{flex-wrap:wrap}.attachment-row .inline-actions{justify-content:flex-start}.attachment-row label{grid-template-columns:1fr}}
