/*
  Jarviz — stylesheet central
  Extraído de frontend_router.py + chat_page.html
*/

/* Layout */
.app{display:flex;min-height:100vh}
.sidebar{width:240px;background:#0d1117;border-right:1px solid #1e2a3a;padding:20px;position:fixed;height:100vh;overflow-y:auto;z-index:100;display:flex;flex-direction:column}
.main{margin-left:240px;flex:1;min-height:100vh}
.topbar{background:#0d1117;border-bottom:1px solid #1e2a3a;padding:12px 32px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50;backdrop-filter:blur(8px)}
.content{padding:32px;max-width:1200px}
/* Sidebar */
.sb-logo{font-size:20px;font-weight:800;color:#f0f6fc;margin-bottom:24px;display:flex;align-items:center;gap:10px}
.sb-logo span{color:#58a6ff}
.sb-section{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#484f58;margin:20px 0 8px 8px}
.sb-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;color:#8b949e;font-size:14px;transition:all .15s;margin:2px 0}
.sb-item:hover{background:#1e2a3a;color:#e6edf3}
.sb-item.active{background:#1f6feb20;color:#58a6ff;font-weight:600}
.sb-item .badge{margin-left:auto;font-size:10px;padding:1px 6px;border-radius:6px;font-weight:600}
.badge-admin{background:#1f6feb20;color:#58a6ff}
.badge-user{background:#d2992220;color:#d29922}
.sb-footer{margin-top:auto;padding-top:20px;border-top:1px solid #1e2a3a;font-size:12px;color:#484f58}
/* Topbar */
.tb-title{font-size:16px;font-weight:600}
.tb-user{display:flex;align-items:center;gap:8px;font-size:13px;color:#8b949e}
.tb-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.dot-g{background:#3fb950}
.dot-y{background:#d29922}
.dot-r{background:#f85149}
/* Buttons */
.btn{padding:8px 20px;border-radius:8px;font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:8px;text-decoration:none}
.btn-primary{background:#238636;color:#fff}.btn-primary:hover{background:#2ea043}
.btn-secondary{background:#1e2a3a;color:#e6edf3}.btn-secondary:hover{background:#30363d}
.btn-ghost{background:transparent;color:#8b949e;border:1px solid #30363d}.btn-ghost:hover{background:#1e2a3a;color:#e6edf3}
.btn-sm{padding:6px 14px;font-size:12px}
.btn-lg{padding:12px 32px;font-size:16px}
.btn-danger{background:#da3633;color:#fff}.btn-danger:hover{background:#f85149}
/* Cards */
.card{background:#0d1117;border:1px solid #1e2a3a;border-radius:12px;padding:24px;margin-bottom:16px;transition:border-color .2s}
.card:hover{border-color:#30363d}
.card-glow{border-color:#1f6feb40;box-shadow:0 0 20px #1f6eb08}
.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.card-title{font-size:14px;font-weight:600;color:#e6edf3}
/* Grids */
.grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:16px}
/* Stats */
.stat{text-align:center;padding:20px}
.stat-icon{font-size:32px;margin-bottom:8px}
.stat-label{font-size:12px;color:#8b949e;margin-bottom:4px}
.stat-value{font-size:24px;font-weight:700;margin-bottom:2px}
.stat-sub{font-size:11px;color:#484f58}
/* Tables */
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{text-align:left;padding:10px 12px;color:#8b949e;font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #1e2a3a}
.table td{padding:10px 12px;border-bottom:1px solid #1e2a3a}
.table tr:hover td{background:#161b22}
/* Tags */
.tag{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:10px;font-size:11px;font-weight:600}
.tag-g{background:#3fb95020;color:#3fb950}
.tag-y{background:#d2992220;color:#d29922}
.tag-r{background:#f8514920;color:#f85149}
.tag-b{background:#1f6feb20;color:#58a6ff}
/* Progress */
.progress{width:100%;height:8px;background:#1e2a3a;border-radius:4px;overflow:hidden}
.progress-bar{height:100%;border-radius:4px;transition:width .5s ease}
/* Forms */
.input{width:100%;padding:10px 14px;border-radius:8px;border:1px solid #30363d;background:#0d1117;color:#e6edf3;font-size:14px;outline:none;transition:border-color .15s}
.input:focus{border-color:#58a6ff;box-shadow:0 0 0 3px #1f6feb20}
/* Hero */
.hero{background:linear-gradient(135deg,#0d1117 0%,#161b22 50%,#0d1117 100%);padding:80px 0;text-align:center;border-bottom:1px solid #1e2a3a;margin:-32px -32px 32px;padding:80px 32px}
.hero h1{font-size:48px;font-weight:800;background:linear-gradient(135deg,#e6edf3,#58a6ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:16px}
.hero p{font-size:18px;color:#8b949e;max-width:600px;margin:0 auto 32px}
/* Toast */
#toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast{padding:12px 20px;border-radius:8px;font-size:13px;font-weight:600;animation:fadeIn .3s;cursor:pointer;max-width:400px}
.toast.success{background:#238636;color:#fff}
.toast.error{background:#da3633;color:#fff}
.toast.info{background:#1f6feb;color:#fff}
/* Spinner */
.spinner{display:inline-block;width:16px;height:16px;border:2px solid #30363d;border-top-color:#58a6ff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes fadeIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.animate{animation:slideUp .4s ease-out}
/* Responsive */
@media(max-width:768px){
  .sidebar{width:100%;height:auto;position:relative}
  .main{margin-left:0}
  .grid-2{grid-template-columns:1fr}
  .hero h1{font-size:32px}
  .hero{padding:40px 16px}
  .content{padding:16px}
}
/* Vault */
.vault-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.vault-item{background:#0d1117;border:1px solid #1e2a3a;border-radius:10px;padding:16px;text-align:center;transition:all .2s;cursor:pointer}
.vault-item:hover{border-color:#58a6ff;transform:translateY(-2px);box-shadow:0 4px 12px #1f6eb20}
.vault-icon{font-size:32px;margin-bottom:8px}
.vault-name{font-size:12px;color:#8b949e;word-break:break-all}
.vault-count{font-size:10px;color:#484f58;margin-top:4px}
/* Quick actions */
.qa-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.qa-btn{background:#0d1117;border:1px solid #1e2a3a;border-radius:8px;padding:12px;text-align:center;cursor:pointer;transition:all .15s;font-size:12px;color:#8b949e}
.qa-btn:hover{border-color:#58a6ff;color:#e6edf3;background:#161b22}
.qa-icon{font-size:20px;margin-bottom:4px}
/* Empty state */
.empty{text-align:center;padding:40px;color:#484f58}
.empty-icon{font-size:48px;margin-bottom:12px}
/* Tooltip */
.tip{position:relative;cursor:help;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#1f6feb20;color:#58a6ff;font-size:11px;font-weight:700;margin-left:4px;transition:all .15s;vertical-align:middle}
.tip:hover{background:#1f6feb40;color:#79c0ff}
.tip .tip-text{visibility:hidden;opacity:0;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:#1e2a3a;color:#e6edf3;padding:6px 10px;border-radius:6px;font-size:11px;font-weight:400;white-space:nowrap;z-index:999;pointer-events:none;transition:all .15s;box-shadow:0 4px 12px #00000040;border:1px solid #30363d}
.tip:hover .tip-text{visibility:visible;opacity:1}
.tip .tip-arrow{display:none}

/* Chat ext */
#chat-box{height:50vh;overflow-y:auto;padding:16px;background:#0d1117;border:1px solid #1e2a3a;border-radius:12px;margin-bottom:16px;display:flex;flex-direction:column;gap:12px}
.chat-msg{max-width:80%;padding:12px 16px;border-radius:12px;font-size:13px;line-height:1.6;animation:fadeIn .2s}
.chat-user{background:#1f6feb20;color:#e6edf3;align-self:flex-end;border-bottom-right-radius:4px}
.chat-bot{background:#1e2a3a;color:#e6edf3;align-self:flex-start;border-bottom-left-radius:4px}
.chat-input-row{display:flex;gap:8px}
.chat-input-row .input{flex:1}

/* Vault search */
.vault-search{width:100%;margin-bottom:16px}
