:root{--navy:#172b43;--navy-deep:#102239;--ink:#21334a;--muted:#778293;--line:#e8ebef;--surface:#f5f6f8;--teal:#16836e;--sidebar-width:252px;--bs-primary:#203e5e;--bs-body-font-family:'Noto Sans Thai','Noto Sans Lao','Noto Sans SC','Leelawadee UI','Lao Sangam MN','PingFang SC','Microsoft YaHei',Tahoma,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--surface);color:var(--ink);font-size:14px;line-height:1.65}a{text-decoration:none;color:inherit}button,input,select,textarea{font:inherit}h1{font-size:24px;font-weight:650;letter-spacing:-.6px;line-height:1.4;margin:0 0 8px}h2{font-size:17px;font-weight:650;margin:0}p{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:700;color:#82909f;text-transform:uppercase;margin-bottom:12px}.brand{display:flex;align-items:center;gap:11px;color:#fff;font-size:15px;font-weight:700;letter-spacing:1px;white-space:nowrap}.brand-symbol{display:grid;place-items:center;width:34px;height:38px;border:1px solid #8194a9;border-radius:11px 11px 11px 3px;font-size:22px;color:#e9f2fb}.brand-light{font-size:10px;font-weight:400;letter-spacing:1.2px}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-width);background:var(--navy-deep);color:#a7b6c8;padding:29px 18px 76px;overflow:auto;z-index:1040;transition:transform .2s,width .2s}.sidebar .brand{margin:0 9px 35px}.sidebar-caption{font-size:10px;letter-spacing:1.3px;text-transform:uppercase;color:#8799ae;margin:22px 14px 9px}.nav-item{display:flex;align-items:center;gap:12px;min-height:40px;padding:9px 14px;font-size:13px;border-radius:8px;margin:3px 0;color:#bcc8d6;transition:background .15s}.nav-item:hover{background:#ffffff09;color:#fff}.nav-item.current{background:#ffffff12;color:white;box-shadow:inset 3px 0 #82b7b0}.nav-icon{font-size:19px}.nav-dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.55;flex-shrink:0}.sidebar-bottom{display:flex;align-items:center;gap:8px;border-top:1px solid #ffffff14;padding:20px 12px;margin-top:25px;font-size:11px}.sidebar-bottom small{margin-left:auto;color:#889db5}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#369680;flex-shrink:0}.app-main{margin-left:var(--sidebar-width);min-height:100vh;display:flex;flex-direction:column;transition:margin .2s}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;gap:20px}.topbar-left,.topbar-right{display:flex;align-items:center;gap:18px}.topbar-title{font-size:12px;color:var(--muted);border-right:1px solid var(--line);padding-right:20px}.menu-toggle,.logout-button{border:0;background:transparent;color:#67768a;padding:10px;line-height:1;border-radius:6px}.menu-toggle:hover,.logout-button:hover{background:var(--surface)}.inline-form{margin:0}.topbar .form-select{border:0;background-color:#f6f7f9;font-size:12px;min-height:38px;padding:7px 30px 7px 12px}.branch-select{max-width:195px}.language-select{max-width:106px}.profile{display:flex;align-items:center;gap:9px;border-left:1px solid var(--line);padding-left:20px}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:#3a5573;background:#edf1f6;font-weight:600}.profile strong,.profile small{display:block}.profile strong{font-size:12px;font-weight:600;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile small{font-size:9px;color:var(--muted);letter-spacing:.6px}.page-content{padding:35px 36px 45px;flex:1;max-width:1720px;width:100%;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.page-heading p{font-size:13px;margin-bottom:0}.heading-actions{display:flex;gap:10px;flex-shrink:0}.btn{border-radius:8px;min-height:42px;padding:10px 18px;font-size:13px;font-weight:550;display:inline-flex;justify-content:center;align-items:center;gap:9px;white-space:nowrap}.btn-primary{background:var(--navy);border-color:var(--navy);box-shadow:0 3px 5px #14283f10}.btn-primary:hover,.btn-primary:focus{background:#28445f;border-color:#28445f}.btn-light{background:white;border:1px solid #dfe4ea;color:#596779}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;box-shadow:0 3px 12px #20354b02;overflow:hidden}.filter-bar{padding:21px 23px;display:flex;gap:12px;align-items:center;border-bottom:1px solid var(--line);flex-wrap:wrap}.filter-bar .form-select{width:auto;max-width:230px}.search-field{flex:1;min-width:180px;max-width:420px}.form-control,.form-select{border:1px solid #e0e5eb;border-radius:8px;min-height:44px;font-size:13px;color:var(--ink);background-color:#fff;padding:10px 13px}.form-select{padding-right:34px}.form-control:focus,.form-select:focus{border-color:#8298ab;box-shadow:0 0 0 3px #3255750d}.record-count{font-size:12px;color:var(--muted);margin-left:auto}.table{margin:0;font-size:12px;--bs-table-hover-bg:#f8fafc}.table thead th{background:#fafbfc;border-bottom:1px solid var(--line);font-size:11px;color:#8290a1;font-weight:550;padding:15px 20px;white-space:nowrap}.table td{padding:17px 20px;vertical-align:middle;border-color:#eff1f4;max-width:250px;overflow-wrap:anywhere}.table tbody tr:hover td{background:#fafcfd}.table-action{display:inline-block;color:#486480;padding:5px 8px;font-size:11px;border:1px solid #edf0f3;border-radius:5px;margin-left:5px;background:white}.table-action:hover{color:var(--navy);border-color:#a5b2c0}.numeric{font-variant-numeric:tabular-nums}.status{display:inline-flex;align-items:center;gap:5px;border-radius:5px;padding:3px 9px;font-size:10px;font-weight:500;white-space:nowrap}.status:before{content:'';display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor}.status.active{background:#edf7f2;color:#388569}.status.inactive{background:#eff1f4;color:#788696}.pagination-bar{padding:19px 23px;display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted)}.pagination-bar nav{display:flex;gap:8px}.pagination-bar .btn{font-size:11px;min-height:35px;padding:6px 12px}.empty-state{padding:65px 25px;text-align:center}.empty-icon{font-size:35px;line-height:1;margin-bottom:18px;color:#9baabc}.empty-state h2{font-size:15px;margin-bottom:10px}.empty-state p{font-size:12px}.edit-form,.detail-panel{padding:27px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:24px;font-size:11px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 26px}.field label{display:block;margin-bottom:7px;font-size:13px;font-weight:500;color:#56687d}.required{color:#b05f54}.field.wide{grid-column:1/-1}.field small{display:block;font-size:11px;color:var(--muted);margin-top:6px}.field-error{font-size:11px;color:#b04848;margin-top:4px}.form-actions{border-top:1px solid var(--line);margin-top:30px;padding-top:22px;display:flex;justify-content:flex-end;gap:12px}.detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px 30px}.detail-grid dt{font-size:11px;font-weight:400;color:var(--muted);margin-bottom:6px}.detail-grid dd{font-size:14px;overflow-wrap:anywhere}.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.permission-option{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:12px;font-size:12px}.permission-option small{display:block;color:var(--muted);font-size:10px}.form-check-input:checked{background-color:var(--navy);border-color:var(--navy)}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:19px;margin-bottom:24px}.kpi-card{border:1px solid var(--line);background:white;border-radius:15px;padding:23px;transition:transform .15s,box-shadow .15s}.kpi-card:hover{transform:translateY(-2px);box-shadow:0 6px 20px #172b4308}.kpi-top{display:flex;justify-content:space-between;font-size:12px;color:#748295}.kpi-arrow{font-size:17px;color:#8a9bac}.kpi-card strong{display:block;font-size:36px;font-weight:550;letter-spacing:-1px;line-height:1.7}.kpi-card small{display:flex;gap:6px;align-items:center;font-size:10px;color:#8b97a5}.phase-badge{display:flex;align-items:center;gap:12px;font-size:11px;border:1px solid #e1e6ed;background:#fff;padding:7px 9px 7px 14px;border-radius:7px;color:#748497}.phase-badge span{display:grid;place-items:center;width:25px;height:25px;background:#f0f4f8;border-radius:5px;color:#49647e}.phase-notice{display:flex;gap:13px;align-items:center;border:1px solid #e3e8ed;background:#edf1f5;padding:16px 21px;border-radius:10px;margin-bottom:28px}.notice-icon{display:grid;place-items:center;border:1px solid #91a1b1;width:17px;height:17px;border-radius:50%;font-size:11px;flex-shrink:0;color:#637991}.phase-notice p{margin:0;font-size:12px;color:#6b7d91}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:25px}.dashboard-grid>.panel{padding:25px}.quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.quick-link{display:flex;align-items:center;justify-content:space-between;border:1px solid #edf0f3;border-radius:9px;padding:15px 17px;gap:15px}.quick-link:hover{background:#f9fafc;border-color:#c5d2df}.quick-link small{display:block;font-size:9px;color:#8c9aab;margin-bottom:4px}.quick-link strong{font-size:12px;font-weight:550}.quick-link>span:last-child{color:#8b9aad}.activity-list{list-style:none;padding:0;margin:0}.activity-list li{display:flex;gap:14px;padding:0 0 25px;position:relative}.activity-list li:not(:last-child):before{content:'';position:absolute;left:4px;top:16px;bottom:3px;width:1px;background:#e8edf1}.activity-dot{width:9px;height:9px;border:2px solid #a4b6c7;border-radius:50%;margin-top:7px;flex-shrink:0}.activity-list strong,.activity-list span,.activity-list small{display:block}.activity-list strong{font-size:12px;font-weight:550}.activity-list div>span{font-size:11px;color:#8996a5}.activity-list small{font-size:10px;color:#a5adb9;margin-top:6px}.app-footer{padding:15px 36px 22px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;color:#99a5b3}.sidebar-backdrop{display:none}.sidebar-collapsed .sidebar{transform:translateX(-100%)}.sidebar-collapsed .app-main{margin-left:0}.auth-layout{min-height:100vh;display:grid;grid-template-columns:45% 55%;background:#fafbfc}.auth-story{background:var(--navy-deep);color:#fff;min-height:100vh;padding:50px 60px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.auth-story h1{font-size:40px;line-height:1.4;max-width:440px;letter-spacing:-1px;margin-bottom:22px}.auth-story p{color:#9bb0c7;font-size:15px;max-width:340px}.auth-story .eyebrow{color:#7592b2}.auth-story small{color:#718ca9;font-size:10px;letter-spacing:1px}.auth-content{position:relative;padding:95px 55px 60px;display:flex;flex-direction:column;align-items:center;justify-content:center}.auth-language{position:absolute;right:38px;top:27px;display:flex;gap:6px}.language-link{border:0;background:transparent;color:#8b97a6;font-size:12px;padding:6px 10px;border-radius:6px}.language-link.selected{background:#e9eef4;color:#344d67}.auth-card{max-width:390px;width:100%}.auth-card h1{font-size:28px;letter-spacing:-.5px}.auth-card>p{margin-bottom:32px;font-size:13px}.auth-card .field{margin-bottom:23px}.auth-card .btn{min-height:48px;margin-top:12px}.setup-card{max-width:510px}.setup-card .field{margin-bottom:0}.auth-art{display:flex;align-items:flex-end;gap:20px;height:200px;margin-top:35px;transform:rotate(-8deg);opacity:.7}.auth-art div{height:130px;width:85px;border:1px solid #58718a;border-radius:32px 32px 12px 12px;background:linear-gradient(110deg,#ffffff07,transparent);position:relative}.auth-art div:before{content:'';width:25px;height:17px;border:1px solid #58718a;position:absolute;top:-18px;left:29px;border-radius:5px 5px 0 0}.auth-art div:nth-child(2){height:170px;width:100px;border-color:#7a94ae}.auth-art div:nth-child(2):before{left:37px}.auth-art div:nth-child(3){height:100px;width:68px}.auth-art div:nth-child(3):before{left:21px}.alert{font-size:13px;border-radius:8px}.dt-column-order{display:none}.dt-container .dt-layout-row{margin:0}button:focus-visible,a:focus-visible{outline:3px solid #73a2ce;outline-offset:3px}
.rate-date-filter{max-width:180px}.sidebar nav{padding-bottom:6px}
