:root{--primary:#022247;--secondary:#064a8b;--soft:#a4b3d3;--accent:#c3a138;--bg:#f5f7fb;--sidebar:260px}
html,body{min-height:100%;background:var(--bg);font-family:"Tahoma","Noto Sans Thai",Arial,sans-serif;color:#233044}
a{color:var(--secondary)}
.btn,.card,.form-control,.custom-select{border-radius:.35rem!important}
.btn-primary{background:var(--secondary)!important}.btn-darkblue{background:var(--primary);color:#fff}.btn-darkblue:hover{color:#fff;background:#031c38}
.bg-brand{background:linear-gradient(135deg,var(--primary),var(--secondary))!important}
.text-accent{color:var(--accent)!important}.border-accent{border-color:var(--accent)!important}
.navbar-brand{font-weight:700}.public-hero{background:linear-gradient(135deg,#022247 0%,#064a8b 100%);color:#fff;padding:3rem 0}
.project-card{border:0;box-shadow:0 8px 30px rgba(2,34,71,.08);height:100%}.project-card .card-header{background:#fff;border-bottom:3px solid var(--accent)}
.form-control,.custom-select{height:45px;padding:.55rem .75rem}.form-control:focus,.custom-select:focus{border-color:var(--secondary);box-shadow:0 0 0 .2rem rgba(6,74,139,.12)}
textarea.form-control{height:auto}.input-group>.form-control{min-width:0}
.admin-shell{min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sidebar);background:var(--primary);z-index:1030;transition:.2s;overflow-y:auto}.sidebar.collapsed{width:74px}.sidebar .brand{height:64px;display:flex;align-items:center;padding:0 18px;color:#fff;font-weight:700;border-bottom:1px solid rgba(255,255,255,.12)}.sidebar .brand i{font-size:1.3rem;width:30px}.sidebar a.menu{display:flex;align-items:center;color:#dce6f1;padding:12px 18px;text-decoration:none;border-left:3px solid transparent}.sidebar a.menu i{width:30px}.sidebar a.menu:hover,.sidebar a.menu.active{background:rgba(255,255,255,.08);border-left-color:var(--accent);color:#fff}.sidebar.collapsed .menu-label,.sidebar.collapsed .brand-label{display:none}.main-wrap{margin-left:var(--sidebar);min-height:100vh;transition:.2s;display:flex;flex-direction:column}.main-wrap.collapsed{margin-left:74px}.topbar{height:64px;background:#fff;border-bottom:1px solid #e5eaf0;display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:1020}.content{padding:20px;flex:1}.admin-footer{padding:14px 20px;background:#fff;border-top:1px solid #e7ebf0;color:#6b7280}.kpi-card{border:0;box-shadow:0 5px 20px rgba(2,34,71,.08)}.kpi-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#edf4fb;color:var(--secondary);border-radius:.5rem;font-size:1.2rem}.table thead th{background:#f1f5f9;color:#334155;white-space:nowrap}.badge-open{background:#e8f5e9;color:#24732c}.badge-close{background:#ffebee;color:#b71c1c}.id-mask{font-family:Consolas,monospace}.login-page{min-height:100vh;background:linear-gradient(135deg,#022247,#064a8b);display:flex;align-items:center;justify-content:center;padding:20px}.login-card{max-width:430px;width:100%;border:0;box-shadow:0 20px 60px rgba(0,0,0,.25)}
@media(max-width:991.98px){.sidebar{transform:translateX(-100%);width:260px}.sidebar.mobile-open{transform:translateX(0)}.main-wrap,.main-wrap.collapsed{margin-left:0}.sidebar.collapsed{width:260px}.sidebar.collapsed .menu-label,.sidebar.collapsed .brand-label{display:inline}.content{padding:14px}.public-hero{padding:2rem 0}.table-responsive{font-size:.92rem}}

/* Login: กำหนด layout หลักไว้ในไฟล์ระบบเอง เพื่อไม่ให้หน้าแตกแม้ CDN โหลดช้า */
.login-page{box-sizing:border-box}
.login-page *{box-sizing:border-box}
.login-card{margin:0 auto;background:#fff;border-radius:.5rem!important;overflow:hidden}
.login-card .card-body{width:100%}
.login-card .form-group{margin-bottom:1rem}
.login-card label{display:block;margin-bottom:.45rem;font-weight:600;color:#334155}
.login-card .form-control{display:block;width:100%;font-size:1rem;background:#fff;border:1px solid #ced4da}
.login-card .btn-block{display:block;width:100%}
@media(max-width:575.98px){.login-page{padding:14px}.login-card{max-width:100%}.login-card .card-body{padding:1.5rem!important}}

/* CRUD modal + SweetAlert2 */
.modal-content{border-radius:.45rem!important;overflow:hidden}.modal-header.bg-brand{border-bottom:0}.modal-header .close{opacity:.9;text-shadow:none}.modal-header .close:hover{opacity:1}.modal-footer{border-top:1px solid #e8edf3}.modal .form-group label{font-weight:600;color:#334155;margin-bottom:.4rem}.modal textarea.form-control{min-height:120px;resize:vertical}.modal .invalid-feedback{font-size:.82rem}.swal2-popup{border-radius:.55rem!important}.swal2-title{color:#1f2937!important;font-size:1.45rem!important}.swal2-confirm,.swal2-cancel{border-radius:.35rem!important;box-shadow:none!important}.swal2-actions{gap:.35rem}.swal2-html-container{line-height:1.65!important}
@media(max-width:575.98px){.modal-dialog{margin:.5rem}.modal-body{padding:1rem!important}.modal-footer{padding:.75rem}.swal2-popup{width:92%!important}}

/* Project status: force a clear solid color above MDBootstrap badge rules */
.status-badge{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:2px;padding:.42rem .66rem!important;border-radius:.25rem!important;font-size:.78rem!important;font-weight:600!important;line-height:1!important;box-shadow:none!important;text-transform:none!important;white-space:nowrap!important}
.status-badge.status-open{background-color:#28a745!important;color:#fff!important;border:1px solid #218838!important}
.status-badge.status-closed{background-color:#dc3545!important;color:#fff!important;border:1px solid #c82333!important}
.status-badge i{color:inherit!important;font-size:.85rem!important;line-height:1!important}

/* Registration source badges */
.source-badge{display:inline-flex!important;align-items:center!important;padding:.4rem .62rem!important;border-radius:.25rem!important;font-size:.77rem!important;font-weight:600!important;line-height:1!important;box-shadow:none!important;text-transform:none!important;white-space:nowrap!important}
.source-badge.source-api{background:#28a745!important;color:#fff!important;border:1px solid #218838!important}
.source-badge.source-mixed{background:#064a8b!important;color:#fff!important;border:1px solid #053d73!important}
.source-badge.source-manual{background:#c3a138!important;color:#fff!important;border:1px solid #a98a2f!important}
.source-badge i{color:inherit!important}

/* User management */
.user-role-badge,.user-status-badge{display:inline-flex!important;align-items:center!important;padding:.38rem .58rem!important;border-radius:.25rem!important;font-size:.76rem!important;font-weight:600!important;line-height:1!important;box-shadow:none!important;text-transform:none!important;white-space:nowrap!important}
.user-role-badge.role-admin{background:#022247!important;color:#fff!important;border:1px solid #011a37!important}
.user-role-badge.role-staff{background:#a4b3d3!important;color:#17324f!important;border:1px solid #8fa0c5!important}
.user-status-badge.status-active{background:#28a745!important;color:#fff!important;border:1px solid #218838!important}
.user-status-badge.status-inactive{background:#dc3545!important;color:#fff!important;border:1px solid #c82333!important}
