@charset "UTF-8";:root{--anh-navy-900: #0b1f3a;--anh-navy-800: #12294a;--anh-navy-700: #1b3a63;--anh-navy-600: #24507f;--anh-blue-500: #2f6fb5;--anh-blue-100: #e8f0fa;--anh-green-700: #0f6b4f;--anh-green-600: #14855f;--anh-green-500: #1aa273;--anh-green-100: #e6f6ef;--anh-gold-500: #d9a326;--anh-red-600: #b3261e;--anh-red-100: #fdecea;--anh-amber-600: #9a6700;--anh-amber-100: #fff4e0;--surface: #f4f6fa;--surface-card: #ffffff;--border: #d8dfe9;--text: #16202e;--text-muted: #5a6a80;--radius: 10px;--radius-sm: 6px;--shadow-sm: 0 1px 2px rgba(11, 31, 58, .08);--shadow-md: 0 4px 16px rgba(11, 31, 58, .1);--shadow-lg: 0 12px 32px rgba(11, 31, 58, .16);--font: "Segoe UI", "Helvetica Neue", Roboto, system-ui, -apple-system, sans-serif;--mono: "SFMono-Regular", ui-monospace, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);font-size:15px;line-height:1.5;color:var(--text);background:var(--surface);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0 0 .5rem;font-weight:650;letter-spacing:-.01em}h1{font-size:1.5rem}h2{font-size:1.2rem}h3{font-size:1.02rem}p{margin:0 0 .75rem}a{color:var(--anh-blue-500)}code,.mono{font-family:var(--mono);font-size:.86em;background:#0b1f3a0f;padding:.1rem .35rem;border-radius:4px;word-break:break-all}label{display:block;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:.3rem}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=number],input[type=search],input[type=date],input[type=datetime-local],input[type=month],input[type=time],input[type=tel],input[type=url],select,textarea{box-sizing:border-box;width:100%;height:2.5rem;padding:.55rem .75rem;font:inherit;line-height:1.25;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color .15s,box-shadow .15s}textarea{height:auto;min-height:5rem}select{appearance:none;-webkit-appearance:none;padding-right:2rem;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%2364748b' stroke-width='1.6' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;background-size:.65rem .45rem}select[multiple]{height:auto;padding-right:.75rem;background-image:none}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--anh-blue-500);box-shadow:0 0 0 3px #2f6fb529}input:disabled,select:disabled{background:#eef1f6;color:var(--text-muted)}.field{margin-bottom:1rem}.field .hint{margin-top:.3rem;font-size:.78rem;color:var(--text-muted)}.checkbox{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.checkbox input{width:auto}.checkbox label{margin:0;text-transform:none;letter-spacing:0;font-size:.9rem;font-weight:500;color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.6rem 1.1rem;font:inherit;font-weight:600;line-height:1.2;color:#fff;background:var(--anh-navy-700);border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,transform .05s,box-shadow .15s}.btn:hover:not(:disabled){background:var(--anh-navy-600)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--anh-blue-500)}.btn-primary:hover:not(:disabled){background:#24507f}.btn-success{background:var(--anh-green-600)}.btn-success:hover:not(:disabled){background:var(--anh-green-700)}.btn-ghost{color:var(--anh-navy-700);background:transparent;border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--anh-blue-100)}.btn-danger{background:var(--anh-red-600)}.btn-sm{padding:.35rem .7rem;font-size:.82rem}.btn-block{width:100%}.btn-row{display:flex;flex-wrap:wrap;gap:.5rem}.card{background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.25rem}.card+.card{margin-top:1rem}.card-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}.card-title{font-size:1.05rem;font-weight:650;margin:0}.card-subtitle{margin:.15rem 0 0;font-size:.85rem;color:var(--text-muted)}table{width:100%;border-collapse:collapse;font-size:.9rem}thead th{text-align:left;padding:.6rem .7rem;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);border-bottom:2px solid var(--border);white-space:nowrap}tbody td{padding:.6rem .7rem;border-bottom:1px solid #eef1f6;vertical-align:middle}tbody tr:hover{background:#f8fafd}.table-wrap{overflow-x:auto}.empty-state{padding:2rem 1rem;text-align:center;color:var(--text-muted)}.badge{display:inline-block;padding:.15rem .5rem;font-size:.74rem;font-weight:650;border-radius:999px;border:1px solid transparent;white-space:nowrap}.badge-role{background:var(--anh-blue-100);color:var(--anh-navy-700);border-color:#c5daf1}.badge-group{background:var(--anh-green-100);color:var(--anh-green-700);border-color:#bfe6d5}.badge-ok{background:var(--anh-green-100);color:var(--anh-green-700)}.badge-off{background:#eceff4;color:var(--text-muted)}.badge-warn{background:var(--anh-amber-100);color:var(--anh-amber-600)}.badge-danger{background:var(--anh-red-100);color:var(--anh-red-600)}.alert{display:flex;gap:.75rem;padding:.85rem 1rem;border-radius:var(--radius-sm);border:1px solid;font-size:.9rem;margin-bottom:1rem}.alert-error{background:var(--anh-red-100);border-color:#f2c4c0;color:#7a1a14}.alert-info{background:var(--anh-blue-100);border-color:#c5daf1;color:var(--anh-navy-700)}.alert-success{background:var(--anh-green-100);border-color:#bfe6d5;color:var(--anh-green-700)}.alert-warning{background:var(--anh-amber-100);border-color:#f0d9a8;color:var(--anh-amber-600)}.alert strong{display:block;margin-bottom:.15rem}.alert .code-line{margin-top:.4rem;font-size:.78rem;opacity:.85}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.row{display:flex;gap:.75rem;flex-wrap:wrap;align-items:flex-end}.spacer{flex:1 1 auto}.muted{color:var(--text-muted)}.small{font-size:.82rem}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-block{padding:2rem;text-align:center;color:var(--text-muted)}
