.loading-overlay[data-v-4a8f163e]{background:var(--overlay-backdrop);z-index:300;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.loading-box[data-v-4a8f163e]{flex-direction:column;align-items:center;gap:14px;display:flex}.loading-spinner[data-v-4a8f163e]{border:3px solid var(--color-white-alpha);border-top-color:var(--color-white);border-radius:50%;width:36px;height:36px;animation:.8s linear infinite loading-spin-4a8f163e}.loading-text[data-v-4a8f163e]{color:var(--color-white);font-size:.9rem}@keyframes loading-spin-4a8f163e{to{transform:rotate(360deg)}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg);font-family:Kanit,Roboto,sans-serif}button,input,select,textarea{font-family:inherit}.app-loading{min-height:100vh;color:var(--color-dark-muted);background:var(--color-dark);justify-content:center;align-items:center;font-size:.9rem;display:flex}#app-layout{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--color-dark);width:260px;height:100vh;color:var(--color-dark-text);flex-direction:column;flex-shrink:0;gap:28px;padding:28px 20px;display:flex;overflow-y:auto}.logo{border-bottom:1px solid var(--color-dark);padding-bottom:20px}.logo-name{align-items:center;margin-bottom:6px;font-family:Kanit,sans-serif;font-size:1.15rem;font-weight:700;display:flex}.logo-dxt{color:var(--color-border)}.logo-s{color:var(--color-primary-strong)}.logo-mail{color:var(--color-primary-light)}.logo-version{color:var(--color-text-faint);background:var(--color-dark);border:1px solid var(--color-text-faint);letter-spacing:.04em;border-radius:20px;align-self:flex-start;margin-left:8px;padding:2px 7px;font-family:Roboto,sans-serif;font-size:.6rem;font-weight:500}.logo-tagline{color:var(--color-text-secondary);letter-spacing:.02em;font-size:.72rem;font-weight:300}.nav-links{flex-direction:column;flex:1;gap:2px;display:flex}.nav-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-secondary);margin-top:20px;margin-bottom:4px;padding:0 12px;font-size:.65rem;font-weight:600}.nav-links a{color:var(--color-text-faint);border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:.88rem;font-weight:400;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-links a i{text-align:center;flex-shrink:0;width:18px;font-size:1.1rem}.nav-links a:hover{background:var(--color-dark);color:var(--color-border-strong)}.nav-links a.router-link-active{background:var(--color-primary-ring);color:var(--color-primary);border-left:3px solid var(--color-primary);padding-left:9px}.nav-links a.router-link-active i{color:var(--color-primary)}.nav-footer{border-top:1px solid var(--color-dark);align-items:center;gap:10px;padding-top:20px;display:flex}.avatar{border:2px solid var(--color-dark);border-radius:50%;flex-shrink:0;width:34px;height:34px}.avatar-fallback{background:var(--color-text-body);color:var(--color-text-faint);letter-spacing:.02em;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:.85rem;font-weight:600;display:flex}.user-info{flex-direction:column;flex:1;min-width:0;display:flex}.user-email{color:var(--color-border-strong);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.user-role{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.04em;margin-top:1px;font-size:.65rem}.logout-btn{border:1px solid var(--color-text-body);color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:6px;flex-shrink:0;padding:5px 9px;font-size:.72rem;transition:all .15s}.logout-btn:hover{border-color:var(--color-danger);color:var(--color-danger);background:var(--color-dark)}.content{background:var(--color-bg);flex:1;padding:20px;overflow-y:auto}.content--flush{background:0 0;padding:0;overflow:hidden}.oa-dropdown{display:none!important}:root{--color-primary:#4fa8b7;--color-primary-hover:color-mix(in srgb, var(--color-primary) 85%, black);--color-primary-strong:color-mix(in srgb, var(--color-primary) 70%, black);--color-primary-light:color-mix(in srgb, var(--color-primary) 50%, white);--color-primary-soft:color-mix(in srgb, var(--color-primary) 10%, white);--color-primary-ring:color-mix(in srgb, var(--color-primary) 12%, transparent);--color-danger:#dc2626;--color-warning:#d97706;--color-success:#059669;--color-info:#1d4ed8;--color-accent:#6d28d9;--color-danger-strong:color-mix(in srgb, var(--color-danger) 75%, black);--color-danger-light:color-mix(in srgb, var(--color-danger) 35%, white);--color-danger-soft:color-mix(in srgb, var(--color-danger) 8%, white);--color-warning-strong:color-mix(in srgb, var(--color-warning) 65%, black);--color-warning-light:color-mix(in srgb, var(--color-warning) 35%, white);--color-warning-soft:color-mix(in srgb, var(--color-warning) 10%, white);--color-success-strong:color-mix(in srgb, var(--color-success) 70%, black);--color-success-light:color-mix(in srgb, var(--color-success) 35%, white);--color-success-soft:color-mix(in srgb, var(--color-success) 10%, white);--color-info-strong:color-mix(in srgb, var(--color-info) 80%, black);--color-info-light:color-mix(in srgb, var(--color-info) 30%, white);--color-info-soft:color-mix(in srgb, var(--color-info) 8%, white);--color-accent-strong:color-mix(in srgb, var(--color-accent) 80%, black);--color-accent-light:color-mix(in srgb, var(--color-accent) 30%, white);--color-accent-soft:color-mix(in srgb, var(--color-accent) 8%, white);--color-white:#fff;--color-bg:#f9fafb;--color-divider:#f3f4f6;--color-border:#e5e7eb;--color-border-strong:#d1d5db;--color-text-faint:#9ca3af;--color-text-muted:#6b7280;--color-text-secondary:#4b5563;--color-text-body:#374151;--color-text:#111827;--color-dark:#141824;--color-dark-surface:#313244;--color-dark-muted:#6c7086;--color-dark-text:#cdd6f4;--color-dark-accent:#89b4fa;--editor-bg:#0d1117;--editor-surface:#161b22;--editor-border:#30363d;--editor-text-muted:#8b949e;--editor-text:#c9d1d9;--editor-accent:#58a6ff;--editor-success:#3fb950;--editor-warning:#d29922;--editor-danger:#f85149;--editor-purple:#a371f7;--editor-accent-bg:color-mix(in srgb, var(--editor-accent) 22%, transparent);--editor-success-bg:color-mix(in srgb, var(--editor-success) 25%, transparent);--editor-warning-bg:color-mix(in srgb, var(--editor-warning) 25%, transparent);--editor-danger-bg:color-mix(in srgb, var(--editor-danger) 25%, transparent);--editor-purple-bg:color-mix(in srgb, var(--editor-purple) 25%, transparent);--overlay-backdrop:#00000073;--shadow-color:#00000026;--color-white-alpha:#ffffff40}.btn-primary{background:var(--color-primary-hover);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;align-items:center;gap:6px;padding:7px 16px;font-size:.85rem;font-weight:500;text-decoration:none;transition:background .15s;display:inline-flex}.btn-primary:hover{background:var(--color-primary-strong)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-cancel{border:1px solid var(--color-border);cursor:pointer;color:var(--color-text-body);background:#fff;border-radius:6px;padding:7px 16px;font-size:.85rem}.btn-cancel:hover:not(:disabled){background:var(--color-divider)}.btn-cancel:disabled{opacity:.5;cursor:not-allowed}.btn-delete{background:var(--color-danger);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:7px 16px;font-size:.85rem}.btn-delete:hover{background:var(--color-danger-strong)}.btn-save{background:var(--color-primary-hover);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:7px 16px;font-size:.85rem}.btn-save:hover:not(:disabled){background:var(--color-primary-strong)}.btn-save:disabled{opacity:.6;cursor:not-allowed}.btn-sm{cursor:pointer;border:1px solid var(--color-border);color:var(--color-text-body);background:#fff;border-radius:5px;padding:4px 11px;font-size:.78rem;text-decoration:none;transition:all .12s;display:inline-block}.btn-sm:hover:not(:disabled){background:var(--color-divider);border-color:var(--color-border-strong)}.btn-sm:disabled{opacity:.5;cursor:not-allowed}.btn-sm-danger{border-color:var(--color-danger-light);color:var(--color-danger)}.btn-sm-danger:hover{background:var(--color-danger-soft);border-color:var(--color-danger-light)}.modal-overlay{background:var(--overlay-backdrop);z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{min-width:320px;box-shadow:0 20px 60px var(--shadow-color);background:#fff;border-radius:10px;padding:28px}.modal h3{color:var(--color-text);margin-bottom:20px;font-size:1rem;font-weight:600}.modal>p{color:var(--color-text-body);margin-bottom:20px;font-size:.9rem;line-height:1.6}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.state-msg{text-align:center;color:var(--color-text-faint);padding:48px 0;font-size:.9rem}.state-msg.error{color:var(--color-danger)}.search-bar{display:flex}.search-input-wrap{background:#fff;border-radius:8px;align-items:center;gap:8px;padding:10px 12px;display:flex}.search-input-wrap:focus-within{border-color:var(--color-primary-light)}.search-icon{color:var(--color-text-faint);flex-shrink:0;font-size:1rem}.search-input{background:0 0;border:none;outline:none;flex:1;font-size:.875rem}.search-clear{cursor:pointer;color:var(--color-text-faint);background:0 0;border:none;padding:0;line-height:1}.search-clear:hover{color:var(--color-text-muted)}.table-wrap{border:1px solid var(--color-border);background:#fff;border-radius:8px;overflow:hidden}.table{border-collapse:collapse;width:100%;font-size:.875rem}.table th{background:var(--color-bg);text-align:left;border-bottom:1px solid var(--color-border);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;padding:10px 14px;font-size:.75rem;font-weight:600}.table td{border-bottom:1px solid var(--color-divider);vertical-align:middle;color:var(--color-text-body);padding:11px 14px}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:var(--color-bg)}.table .mono{color:var(--color-text-muted);font-family:monospace;font-size:.83rem}.table .actions{white-space:nowrap;width:1%}.table .actions-row{gap:5px;display:flex}.badge{border-radius:20px;padding:2px 9px;font-size:.72rem;font-weight:600;display:inline-block}.badge-active{background:var(--color-success-soft);color:var(--color-success-strong)}.badge-inactive{background:var(--color-divider);color:var(--color-text-faint)}.badge-debug{background:var(--color-warning-soft);color:var(--color-warning-strong)}.filter-bar{background:var(--color-white);border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;display:flex}.filter-group{align-items:center;gap:8px;display:flex}.filter-group+.filter-group{border-left:1px solid var(--color-border);padding-left:12px}.filter-label{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-faint);white-space:nowrap;font-size:.72rem;font-weight:700}.chips{flex-wrap:wrap;gap:5px;display:flex}.chip{cursor:pointer;border:1px solid var(--color-border-strong);color:var(--color-text-secondary);background:0 0;border-radius:6px;padding:3px 12px;font-size:.8rem;transition:all .15s}.chip:hover{opacity:.75}.chip.chip-active:not(.chip-danger):not(.chip-warning):not(.chip-success){background:var(--color-dark);color:var(--color-white);border-color:var(--color-dark)}.chip-danger{border-color:var(--color-danger);color:var(--color-danger)}.chip-warning{border-color:var(--color-warning);color:var(--color-warning)}.chip-success{border-color:var(--color-success);color:var(--color-success)}.chip-info{border-color:var(--color-info-strong);color:var(--color-info-strong)}.chip-danger.chip-active{background:var(--color-danger);color:var(--color-white)}.chip-warning.chip-active{background:var(--color-warning);color:var(--color-white)}.chip-success.chip-active{background:var(--color-success);color:var(--color-white)}.chip-info.chip-active{background:var(--color-info-strong);color:var(--color-white)}.filter-count{color:var(--color-text-faint);white-space:nowrap;margin-left:auto;font-size:.8rem}@media (width<=720px){.filter-bar{flex-direction:column;align-items:flex-start}.filter-group+.filter-group{border-left:none;border-top:1px solid var(--color-border);width:100%;padding-top:8px;padding-left:0}.filter-count{display:none}}.page-toolbar{align-items:center;gap:10px;margin-bottom:16px;display:flex}.form-fields{flex-direction:column;gap:14px;margin-bottom:16px;display:flex}.form-field{flex-direction:column;gap:5px;display:flex}.form-field label{color:var(--color-text-body);font-size:.82rem;font-weight:500}.form-field input,.form-field select,.form-field textarea{border:1px solid var(--color-border-strong);border-radius:6px;outline:none;padding:5px 10px;font-size:.875rem}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--color-primary-light)}.form-req{color:var(--color-danger)}.form-error{color:var(--color-danger);margin-bottom:12px;font-size:.82rem}.text-center{text-align:center}
