.toast-slide-enter-active[data-v-539f48a5]{transition:all .25s ease}.toast-slide-leave-active[data-v-539f48a5]{transition:all .2s ease}.toast-slide-enter-from[data-v-539f48a5],.toast-slide-leave-to[data-v-539f48a5]{opacity:0;transform:translate(20px)}:root{--primary: #0088CC;--primary-dark: #006699;--primary-darker: #004466;--primary-light: #33AADD;--primary-bg: #E8F5FF;--primary-bg2: #C8E8F8;--white: #FFFFFF;--bg: #F0F4F8;--bg2: #E8EEF4;--border: #D0DCE8;--border2: #B8CCE0;--text: #1A2F42;--text-sub: #4A6580;--text-light: #7A9AB2;--success: #10B981;--warning: #F59E0B;--danger: #EF4444;--info: #3B82F6;--sidebar-w: 260px;--header-h: 64px;--radius: 10px;--radius-sm: 6px;--radius-lg: 16px;--shadow: 0 2px 8px rgba(0,136,204,.1);--shadow-md: 0 4px 16px rgba(0,136,204,.14);--shadow-lg: 0 8px 32px rgba(0,136,204,.18);--transition: .2s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{font-family:Kanit,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-dark)}img{max-width:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--primary-light)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:var(--radius-sm);border:none;cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:500;transition:all var(--transition);white-space:nowrap}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:var(--white)}.btn-primary:hover{background:var(--primary-dark);box-shadow:var(--shadow-md)}.btn-outline{background:transparent;color:var(--primary);border:1.5px solid var(--primary)}.btn-outline:hover{background:var(--primary-bg)}.btn-danger{background:var(--danger);color:var(--white)}.btn-danger:hover{background:#dc2626}.btn-ghost{background:transparent;color:var(--text-sub);border:1.5px solid var(--border)}.btn-ghost:hover{background:var(--bg2);border-color:var(--border2)}.btn-sm{padding:5px 12px;font-size:.82rem}.btn-icon{padding:7px;border-radius:var(--radius-sm)}.form-group{margin-bottom:18px}.form-label{display:block;font-size:.88rem;font-weight:500;color:var(--text-sub);margin-bottom:6px}.form-label span{color:var(--danger);margin-left:2px}.form-control{width:100%;padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:.9rem;color:var(--text);background:var(--white);transition:border-color var(--transition),box-shadow var(--transition);outline:none}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px #0088cc1f}.form-control::placeholder{color:var(--text-light)}select.form-control{cursor:pointer}textarea.form-control{resize:vertical;min-height:100px}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border)}.card-header{padding:18px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:12px}.card-title{font-size:1rem;font-weight:600;color:var(--text)}.card-body{padding:24px}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:.88rem}.table th{background:var(--primary-bg);color:var(--primary-dark);font-weight:600;padding:12px 14px;text-align:left;border-bottom:2px solid var(--primary-bg2);white-space:nowrap}.table td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--primary-bg)}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:20px;font-size:.78rem;font-weight:500}.badge-primary{background:var(--primary-bg);color:var(--primary-dark)}.badge-success{background:#d1fae5;color:#065f46}.badge-warning{background:#fef3c7;color:#92400e}.badge-danger{background:#fee2e2;color:#991b1b}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.page-title{font-size:1.4rem;font-weight:700;color:var(--text)}.page-title small{display:block;font-size:.82rem;font-weight:400;color:var(--text-sub);margin-top:2px}.search-bar{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}.search-input-wrap{position:relative;flex:1;min-width:220px}.search-input-wrap .icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text-light);font-size:1rem}.search-input-wrap input{padding-left:34px}.empty-state{text-align:center;padding:60px 20px;color:var(--text-light)}.empty-state svg{width:56px;height:56px;margin-bottom:16px;opacity:.4}.empty-state p{font-size:.95rem}.spinner{width:36px;height:36px;border:3px solid var(--primary-bg2);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;margin:40px auto}@keyframes spin{to{transform:rotate(360deg)}}.pagination{display:flex;align-items:center;gap:6px;justify-content:center;padding:16px 0 4px;flex-wrap:wrap}.page-btn{min-width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--white);color:var(--text-sub);font-size:.88rem;cursor:pointer;transition:all var(--transition);padding:0 8px}.page-btn:hover{border-color:var(--primary);color:var(--primary)}.page-btn.active{background:var(--primary);border-color:var(--primary);color:var(--white);font-weight:600}.page-btn:disabled{opacity:.4;cursor:not-allowed}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a1e3273;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal{background:var(--white);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;animation:modalIn .22s ease}.modal-lg{max-width:780px}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{padding:20px 24px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-header h3{font-size:1.05rem;font-weight:600}.modal-close{width:32px;height:32px;border-radius:6px;border:none;background:var(--bg);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:var(--text-sub);transition:background var(--transition)}.modal-close:hover{background:var(--bg2)}.modal-body{padding:24px;overflow-y:auto;flex:1}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:10px}.toast-container{position:fixed;top:20px;right:20px;z-index:2000;display:flex;flex-direction:column;gap:10px;pointer-events:none}.toast{padding:12px 18px;border-radius:var(--radius-sm);box-shadow:var(--shadow-md);font-size:.9rem;font-weight:500;display:flex;align-items:center;gap:10px;pointer-events:all;animation:toastIn .25s ease;max-width:360px}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.toast-success{background:#065f46;color:#fff}.toast-error{background:#991b1b;color:#fff}.toast-info{background:var(--primary-dark);color:#fff}.stat-card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);padding:22px 24px;display:flex;align-items:center;gap:18px}.stat-icon{width:52px;height:52px;border-radius:var(--radius);background:var(--primary-bg);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.stat-num{font-size:1.8rem;font-weight:700;color:var(--primary);line-height:1}.stat-label{font-size:.84rem;color:var(--text-sub);margin-top:4px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}@media (max-width: 900px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}.img-preview{width:72px;height:72px;border-radius:var(--radius-sm);object-fit:cover;border:2px solid var(--border)}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}
