:root{--bg-900: #0b0f19;--bg-800: #111726;--bg-700: #171f31;--bg-600: #1f2940;--bg-500: #2a3552;--accent: #6d72f6;--accent-strong: #5b5ff0;--accent-soft: rgba(109, 114, 246, .14);--accent-ring: rgba(109, 114, 246, .28);--success: #22c55e;--success-soft: rgba(34, 197, 94, .13);--warning: #f5a524;--warning-soft: rgba(245, 165, 36, .13);--danger: #f05252;--danger-soft: rgba(240, 82, 82, .13);--info: #3b9eff;--info-soft: rgba(59, 158, 255, .13);--text-100: #eef2f8;--text-200: #c6cedb;--text-300: #95a0b4;--text-400: #6b768c;--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .13);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--shadow-md: 0 8px 30px rgba(0, 0, 0, .35);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .5);--sidebar-w: 256px;--font: "Inter", system-ui, -apple-system, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font);background:var(--bg-900);color:var(--text-100);min-height:100vh;line-height:1.55;font-size:15px}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--mono);font-size:.85em}::selection{background:var(--accent-ring)}.input,input:not([type=checkbox]):not([type=radio]),textarea,select{width:100%;background:var(--bg-900);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:10px 14px;color:var(--text-100);font-family:inherit;font-size:.9375rem;transition:border-color .15s,box-shadow .15s;outline:none}textarea{resize:vertical;min-height:96px;line-height:1.5}select{cursor:pointer}input:focus,textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}input::placeholder,textarea::placeholder{color:var(--text-400)}input:disabled{opacity:.6}label,.label{display:block;font-size:.8125rem;font-weight:600;color:var(--text-200);margin-bottom:6px}.field{margin-bottom:18px}.field:last-child{margin-bottom:0}.hint{display:block;font-size:.8rem;color:var(--text-400);margin-top:6px}.field-error{display:block;font-size:.8rem;color:var(--danger);margin-top:6px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.input-group{position:relative}.input-group>input:not([type=checkbox]){padding-left:38px}.input-group>.input-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-400);pointer-events:none}.input-group>.input-action{position:absolute;right:6px;top:50%;transform:translateY(-50%)}.input-group.has-action>input:not([type=checkbox]){padding-right:44px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:var(--radius-sm);font-family:inherit;font-size:.875rem;font-weight:600;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,color .15s,transform .1s;white-space:nowrap;color:var(--text-100);background:transparent;text-decoration:none!important}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-strong)}.btn-secondary{background:var(--bg-600);border-color:var(--border)}.btn-secondary:hover:not(:disabled){background:var(--bg-500);border-color:var(--border-strong)}.btn-ghost{color:var(--text-300)}.btn-ghost:hover:not(:disabled){background:var(--bg-700);color:var(--text-100)}.btn-danger{background:var(--danger-soft);color:var(--danger);border-color:#f0525240}.btn-danger:hover:not(:disabled){background:#f0525238}.btn-success{background:var(--success-soft);color:var(--success);border-color:#22c55e40}.btn-success:hover:not(:disabled){background:#22c55e38}.btn-sm{padding:6px 11px;font-size:.8125rem}.btn-lg{padding:12px 20px;font-size:.9375rem}.btn-block{width:100%}.btn-icon{padding:7px}.card{background:var(--bg-800);border:1px solid var(--border);border-radius:var(--radius-lg)}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px 0}.card-title{font-size:1rem;font-weight:650;color:var(--text-100);display:flex;align-items:center;gap:10px}.card-desc{font-size:.8125rem;color:var(--text-400);margin-top:4px}.card-body{padding:20px 24px}.card-footer{padding:14px 24px;border-top:1px solid var(--border);display:flex;gap:10px;align-items:center;justify-content:flex-end;flex-wrap:wrap}.card-flush .card-body{padding:0}.card-icon{width:34px;height:34px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);flex-shrink:0}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.no-dot:before{display:none}.badge-success{background:var(--success-soft);color:var(--success)}.badge-warning{background:var(--warning-soft);color:var(--warning)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-accent{background:var(--accent-soft);color:var(--accent)}.badge-neutral{background:var(--bg-600);color:var(--text-300)}.alert{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius-sm);font-size:.875rem;border:1px solid}.alert>svg{flex-shrink:0;margin-top:2px}.alert-error{background:var(--danger-soft);border-color:#f0525240;color:#fca5a5}.alert-success{background:var(--success-soft);border-color:#22c55e40;color:#86efac}.alert-warning{background:var(--warning-soft);border-color:#f5a52440;color:#fcd34d}.alert-info{background:var(--info-soft);border-color:#3b9eff40;color:#93c5fd}.alert+.alert,.alert-spaced{margin-bottom:16px}.table-wrap{overflow-x:auto}.table-wrap>table{min-width:640px}table{width:100%;border-collapse:collapse;font-size:.875rem}th{text-align:left;padding:11px 16px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-400);background:var(--bg-700);border-bottom:1px solid var(--border);white-space:nowrap}th:first-child{padding-left:24px}th:last-child{padding-right:24px}td{padding:13px 16px;border-bottom:1px solid var(--border);color:var(--text-200);vertical-align:middle}td:first-child{padding-left:24px}td:last-child{padding-right:24px}tr:last-child td{border-bottom:none}tbody tr{transition:background .1s}tbody tr:hover td{background:#ffffff05}tr.clickable{cursor:pointer}.td-strong{color:var(--text-100);font-weight:600}.td-muted{color:var(--text-400);font-size:.8125rem}.td-right{text-align:right}.app{min-height:100vh}.sidebar{width:var(--sidebar-w);background:var(--bg-800);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;z-index:200;transition:transform .2s ease}.brand{display:flex;align-items:center;gap:10px;padding:20px 20px 18px}.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#6d72f6,#9b6cf6);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 6px 18px #6d72f659;flex-shrink:0}.brand-name{font-weight:750;font-size:1rem;letter-spacing:-.01em}.brand-sub{font-size:.72rem;color:var(--text-400)}.nav{flex:1;overflow-y:auto;padding:8px 12px}.nav-section{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-400);padding:14px 10px 6px}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--text-300);font-size:.875rem;font-weight:500;transition:background .12s,color .12s;margin-bottom:2px}.nav-link:hover{background:var(--bg-700);color:var(--text-100);text-decoration:none}.nav-link.active{background:var(--accent-soft);color:#c7c9ff}.nav-link.active svg{color:var(--accent)}.sidebar-footer{padding:12px;border-top:1px solid var(--border)}.user-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-bottom:4px}.avatar{width:32px;height:32px;border-radius:50%;background:var(--bg-600);color:var(--text-200);display:flex;align-items:center;justify-content:center;font-size:.8125rem;font-weight:700;text-transform:uppercase;flex-shrink:0}.user-chip-name{font-size:.85rem;font-weight:600;color:var(--text-100);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chip-role{font-size:.72rem;color:var(--text-400)}.nav-link.logout{width:100%;background:none;border:none;cursor:pointer;font-family:inherit}.topbar,.sidebar-backdrop{display:none}.main{margin-left:var(--sidebar-w);min-height:100vh}.main-inner{max-width:1120px;margin:0 auto;padding:32px 32px 64px;animation:fadeIn .25s ease-out both}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-title{font-size:1.5rem;font-weight:750;letter-spacing:-.02em}.page-subtitle{font-size:.875rem;color:var(--text-400);margin-top:4px}.page-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.back-link{display:inline-flex;align-items:center;gap:6px;font-size:.8125rem;color:var(--text-300);margin-bottom:10px}.back-link:hover{color:var(--text-100);text-decoration:none}.stack{display:flex;flex-direction:column;gap:20px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.grid-main-side{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:20px;align-items:start}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--text-400)}.text-sm{font-size:.8125rem}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.stat-card{background:var(--bg-800);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px}.stat-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.stat-label{font-size:.8125rem;color:var(--text-300);font-weight:500}.stat-icon{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center}.stat-icon.accent{background:var(--accent-soft);color:var(--accent)}.stat-icon.green{background:var(--success-soft);color:var(--success)}.stat-icon.orange{background:var(--warning-soft);color:var(--warning)}.stat-icon.blue{background:var(--info-soft);color:var(--info)}.stat-icon.red{background:var(--danger-soft);color:var(--danger)}.stat-value{font-size:1.6rem;font-weight:750;letter-spacing:-.02em;line-height:1.1}.stat-hint{font-size:.75rem;color:var(--text-400);margin-top:6px}.copy-field{display:flex;align-items:center;gap:8px;background:var(--bg-900);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:6px 6px 6px 14px}.copy-field-value{flex:1;min-width:0;font-family:var(--mono);font-size:.8125rem;color:var(--text-200);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl{display:grid;grid-template-columns:max-content 1fr;gap:10px 20px;font-size:.875rem}.dl dt{color:var(--text-400)}.dl dd{color:var(--text-100);min-width:0;overflow-wrap:anywhere}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot.active{background:var(--success);box-shadow:0 0 0 4px var(--success-soft)}.status-dot.inactive{background:var(--text-400)}.status-dot.error{background:var(--danger);box-shadow:0 0 0 4px var(--danger-soft)}.bot-hero{display:flex;align-items:center;gap:16px;padding:20px 24px;flex-wrap:wrap}.bot-avatar{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#2aa3ef,#1d84d6);display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.bot-hero-actions{display:flex;gap:10px;flex-wrap:wrap}.bot-hero-name{font-weight:700;font-size:1.05rem}.bot-hero-meta{font-size:.8125rem;color:var(--text-400);display:flex;align-items:center;gap:8px;margin-top:2px}.checklist{list-style:none;display:flex;flex-direction:column;gap:4px}.checklist li{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-sm);font-size:.875rem;color:var(--text-200)}.checklist li a{display:contents;color:inherit}.checklist li:hover{background:var(--bg-700)}.check-circle{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--border-strong);display:flex;align-items:center;justify-content:center;flex-shrink:0}.checklist li.done .check-circle{background:var(--success);border-color:var(--success);color:#062b14}.checklist li.done span.label-text{color:var(--text-400);text-decoration:line-through}.toolbar{display:flex;gap:12px;padding:16px 24px;border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center}.toolbar .input-group{flex:1;min-width:200px}.toolbar select{width:200px}.segmented{display:inline-flex;background:var(--bg-900);border:1px solid var(--border);border-radius:10px;padding:3px;gap:2px}.segmented button{background:none;border:none;color:var(--text-300);font:inherit;font-size:.8125rem;font-weight:600;padding:6px 12px;border-radius:7px;cursor:pointer}.segmented button.active{background:var(--bg-600);color:var(--text-100)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;border-top:1px solid var(--border);font-size:.8125rem;color:var(--text-400);flex-wrap:wrap}.pagination-pages{display:flex;gap:4px}.page-btn{min-width:32px;height:32px;padding:0 8px;border-radius:var(--radius-sm);background:transparent;border:1px solid var(--border);color:var(--text-200);font:inherit;font-size:.8125rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.page-btn:hover:not(:disabled){background:var(--bg-700)}.page-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.page-btn:disabled{opacity:.4;cursor:not-allowed}.empty{text-align:center;padding:48px 24px;color:var(--text-400)}.empty-icon{width:48px;height:48px;border-radius:14px;margin:0 auto 14px;background:var(--bg-700);color:var(--text-300);display:flex;align-items:center;justify-content:center}.empty-title{color:var(--text-100);font-weight:600;margin-bottom:4px}.empty-desc{font-size:.875rem;max-width:380px;margin:0 auto}.empty .btn{margin-top:18px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;background:#03060cb3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeInPlain .15s ease-out}.modal{width:100%;max-width:460px;background:var(--bg-800);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:popIn .18s ease-out}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 24px 0}.modal-title{font-size:1.05rem;font-weight:700}.modal-desc{font-size:.8125rem;color:var(--text-400);margin-top:4px}.modal-body{padding:18px 24px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:0 24px 20px}.toasts{position:fixed;right:20px;bottom:20px;z-index:600;display:flex;flex-direction:column;gap:10px;max-width:min(380px,calc(100vw - 40px))}.toast{display:flex;gap:10px;align-items:flex-start;background:var(--bg-700);border:1px solid var(--border-strong);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:12px 14px;font-size:.875rem;box-shadow:var(--shadow-md);animation:slideUp .2s ease-out}.toast.success{border-left-color:var(--success)}.toast.success>svg{color:var(--success)}.toast.error{border-left-color:var(--danger)}.toast.error>svg{color:var(--danger)}.toast>svg{flex-shrink:0;margin-top:1px}.tg-preview{background:#0e1621 radial-gradient(circle at 20% 20%,rgba(43,82,120,.25),transparent 60%);border-radius:var(--radius-md);padding:20px 16px;min-height:260px;border:1px solid var(--border)}.tg-bubble{max-width:320px;background:#182533;border-radius:12px 12px 12px 4px;overflow:hidden;box-shadow:0 2px 6px #0000004d}.tg-bubble img{display:block;width:100%;max-height:180px;object-fit:cover;background:#0f1a24}.tg-text{padding:8px 12px 10px;font-size:.875rem;white-space:pre-wrap;overflow-wrap:anywhere;color:#e9eef4}.tg-buttons{display:flex;flex-direction:column;gap:4px;margin-top:4px;max-width:320px}.tg-btn{background:#182533d9;color:#e9eef4;text-align:center;font-size:.8125rem;font-weight:500;padding:8px;border-radius:8px}.auth-page{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.auth-aside{position:relative;overflow:hidden;background:linear-gradient(160deg,#141a33,#0b0f19 70%);border-right:1px solid var(--border);padding:48px;display:flex;flex-direction:column;justify-content:space-between}.auth-aside:before{content:"";position:absolute;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,rgba(109,114,246,.22),transparent 65%);top:-160px;right:-160px;pointer-events:none}.auth-aside h2{font-size:2rem;font-weight:800;letter-spacing:-.03em;line-height:1.2;max-width:420px;position:relative}.auth-aside p{color:var(--text-300);margin-top:12px;max-width:400px;position:relative}.auth-features{list-style:none;display:flex;flex-direction:column;gap:14px;position:relative;margin-top:32px}.auth-features li{display:flex;gap:12px;align-items:flex-start;color:var(--text-200);font-size:.9rem}.auth-features li svg{color:var(--accent);flex-shrink:0;margin-top:2px}.auth-main{display:flex;align-items:center;justify-content:center;padding:32px 24px}.auth-card{width:100%;max-width:400px;animation:fadeIn .3s ease-out both}.auth-card h1{font-size:1.6rem;font-weight:750;letter-spacing:-.02em}.auth-card .auth-sub{color:var(--text-400);font-size:.9rem;margin:6px 0 28px}.auth-foot{text-align:center;margin-top:24px;font-size:.875rem;color:var(--text-400)}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.25);border-top-color:currentColor;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}.spinner-lg{width:32px;height:32px;border-width:3px;color:var(--accent)}.loading-block{display:flex;align-items:center;justify-content:center;padding:64px}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center}.skeleton{background:linear-gradient(90deg,var(--bg-700) 25%,var(--bg-600) 50%,var(--bg-700) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite;border-radius:var(--radius-sm)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes fadeInPlain{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:1080px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-main-side{grid-template-columns:1fr}}@media(max-width:900px){.auth-page{grid-template-columns:1fr}.auth-aside{display:none}}@media(max-width:820px){.sidebar{transform:translate(-100%);box-shadow:var(--shadow-lg)}.app.nav-open .sidebar{transform:none}.app.nav-open .sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:150;background:#03060c99}.topbar{display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:100;padding:10px 16px;background:#0b0f19d9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.main{margin-left:0}.main-inner{padding:20px 16px 48px}.grid-2,.field-row{grid-template-columns:1fr}.card-header{padding:16px 16px 0}.card-body{padding:16px}.card-footer,.toolbar,.pagination{padding-left:16px;padding-right:16px}th:first-child,td:first-child{padding-left:16px}th:last-child,td:last-child{padding-right:16px}.toolbar select{width:100%}.bot-hero{padding:16px}.bot-hero-actions{width:100%}.bot-hero-actions>*{flex:1}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{padding:14px}.stat-value{font-size:1.25rem}.page-title{font-size:1.3rem}}.tg-file{display:flex;align-items:center;gap:10px;padding:10px 12px 2px}.tg-file-icon{width:40px;height:40px;border-radius:50%;background:#3a8ee6;color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.tg-file-name{font-size:.8125rem;font-weight:600;color:#e9eef4;overflow-wrap:anywhere}.tg-file-size{font-size:.75rem;color:#7d8b99}
