:root{
  --azul-escuro:#0f3460;
  --azul-hover:#0a2647;
  --azul-claro:#e8f0fe;
  --azul-acento:#1a6bc4;
  --bg:#f4f6f9;
  --texto:#1f2430;
  --texto-suave:#6b7280;
  --borda:#e6e8ec;
  --sucesso:#1f9d55;
  --sucesso-bg:#eafaf0;
  --erro:#d64545;
  --erro-bg:#fdecec;
  --radius:12px;
  --radius-sm:8px;
  --sombra:0 1px 3px rgba(15,23,42,.06);
  --sombra-hover:0 8px 24px rgba(15,23,42,.10);
}

*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Segoe UI',system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--texto);min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}

/* ========= LOGIN ========= */
.login-body{display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,#16335c 0,#0d1b2e 60%,#070d17 100%);padding:20px}
.login-box{background:#fff;padding:48px 40px;border-radius:18px;box-shadow:0 20px 60px rgba(0,0,0,.35);text-align:center;max-width:380px;width:100%}
.login-icon{font-size:48px;margin-bottom:14px;display:inline-flex;align-items:center;justify-content:center;width:80px;height:80px;background:var(--azul-claro);border-radius:50%}
.login-box h1{font-size:21px;margin-bottom:6px;color:var(--azul-escuro);font-weight:800;letter-spacing:-.01em}
.login-sub{color:var(--texto-suave);margin-bottom:26px;font-size:14px;line-height:1.5}
.login-box input{width:100%;padding:13px 16px;margin:6px 0;border:1.5px solid var(--borda);border-radius:10px;font-size:14px;transition:.15s;background:#fafbfc}
.login-box input:focus{border-color:var(--azul-escuro);outline:none;box-shadow:0 0 0 4px rgba(15,52,96,.10);background:#fff}
.login-box button{width:100%;padding:13px;margin-top:14px;background:var(--azul-escuro);color:#fff;border:none;border-radius:10px;font-size:15px;cursor:pointer;font-weight:700;transition:.15s;letter-spacing:.01em}
.login-box button:hover{background:var(--azul-hover);transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,52,96,.3)}
.login-box button:active{transform:translateY(0)}

/* ========= ALERTAS ========= */
.alert{padding:11px 16px;border-radius:var(--radius-sm);margin-bottom:14px;font-size:14px;border:1px solid transparent;display:flex;align-items:center;gap:8px}
.alert-error{background:var(--erro-bg);color:var(--erro);border-color:#f8d4d4}
.alert-success{background:var(--sucesso-bg);color:var(--sucesso);border-color:#c8f0d9}

/* ========= TOPO ========= */
.topo{background:#fff;border-bottom:1px solid var(--borda);padding:0 20px;position:sticky;top:0;z-index:100;backdrop-filter:blur(8px)}
.topo-inner{max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:56px}
.logo{display:flex;align-items:center;gap:10px}
.logo-icone{font-size:24px;color:var(--azul-escuro);font-weight:700}
.logo-texto{font-size:16px;font-weight:800;color:var(--texto);letter-spacing:-.01em}
.topo-right{display:flex;align-items:center;gap:8px;font-size:13px}
.user-badge{color:var(--texto-suave);padding:6px 12px;background:var(--bg);border-radius:8px;font-size:12px;font-weight:600}
.btn-topo{padding:7px 14px;border-radius:8px;text-decoration:none;font-size:13px;background:var(--bg);color:var(--texto);font-weight:600;transition:.15s;border:1px solid transparent}
.btn-topo:hover{background:#e9ecf1;border-color:var(--borda)}
.btn-topo-primary{background:var(--azul-escuro);color:#fff}
.btn-topo-primary:hover{background:var(--azul-hover)}
.btn-topo-sair{background:var(--erro-bg);color:var(--erro)}
.btn-topo-sair:hover{background:#fbdada}

/* ========= LAYOUT ========= */
.app-layout{display:flex;max-width:1400px;margin:0 auto;padding:20px;gap:18px;flex:1;min-height:calc(100vh - 56px)}
.main-content{flex:1;min-width:0}

/* ========= SIDEBAR ========= */
.sidebar{width:250px;flex-shrink:0;background:#fff;border-radius:var(--radius);box-shadow:var(--sombra);border:1px solid var(--borda);overflow:hidden;align-self:flex-start;position:sticky;top:76px;max-height:calc(100vh - 96px);display:flex;flex-direction:column}
.sidebar-title{padding:13px 16px;font-weight:700;font-size:12px;color:var(--texto-suave);border-bottom:1px solid var(--borda);background:#fafbfc;flex-shrink:0;text-transform:uppercase;letter-spacing:.06em}
.arvore{overflow-y:auto;flex:1;padding:6px}
.arvore-item{display:flex;align-items:center;gap:6px;padding:8px 10px;font-size:13px;cursor:pointer;transition:.12s;user-select:none;border-radius:var(--radius-sm)}
.arvore-item:hover{background:var(--bg)}
.arvore-item.ativo,.arvore-item.ativo:hover{background:var(--azul-claro);color:var(--azul-escuro);font-weight:700}
.arvore-icone{font-size:14px;flex-shrink:0}
.arvore-nome{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.arvore-toggle{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;font-size:8px;color:#aaa;cursor:pointer;flex-shrink:0;transition:.15s;user-select:none}
.arvore-toggle:hover{color:var(--texto)}
.arvore-toggle-empty{visibility:hidden}
.arvore-filhos{overflow:hidden}

/* ========= BREADCRUMB ========= */
.breadcrumb{display:flex;align-items:center;gap:4px;padding:0 0 14px 0;font-size:14px;flex-wrap:wrap}
.bc-link{color:var(--texto-suave);text-decoration:none;padding:5px 9px;border-radius:var(--radius-sm);transition:.12s;font-weight:500}
.bc-link:hover{background:#e9ecf1;color:var(--texto)}
.bc-atual{color:var(--azul-escuro);font-weight:700}
.bc-sep{color:#cbd0d8;font-size:16px;padding:0 2px}
.bc-info{margin-left:auto;font-size:12px;color:var(--texto-suave);font-weight:600;background:#fff;padding:5px 10px;border-radius:var(--radius-sm);border:1px solid var(--borda)}

/* ========= BUSCA ========= */
.barra-busca{display:flex;gap:8px;margin-bottom:18px}
.barra-busca input{flex:1;padding:11px 16px;border:1.5px solid var(--borda);border-radius:var(--radius-sm);font-size:14px;transition:.15s;background:#fff}
.barra-busca input:focus{border-color:var(--azul-escuro);outline:none;box-shadow:0 0 0 4px rgba(15,52,96,.08)}
.barra-busca button{padding:11px 18px;background:var(--azul-escuro);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:16px;transition:.15s}
.barra-busca button:hover{background:var(--azul-hover)}

/* ========= FILE GRID ========= */
.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.file-card{background:#fff;border-radius:var(--radius);box-shadow:var(--sombra);overflow:hidden;transition:.18s;position:relative;border:1px solid var(--borda)}
.file-card:hover{box-shadow:var(--sombra-hover);border-color:#d4dae3;transform:translateY(-2px)}
.file-preview{height:104px;display:flex;align-items:center;justify-content:center;font-size:42px;background:linear-gradient(180deg,#fafbfc,#f1f3f6);border-bottom:1px solid var(--borda);position:relative}
.file-preview::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--cat-cor,var(--azul-acento))}
.file-info{padding:11px 13px}
.file-nome{font-size:13px;font-weight:700;color:var(--texto);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px}
.file-meta{display:flex;gap:9px;font-size:11px;color:var(--texto-suave);align-items:center}
.file-meta span{display:flex;align-items:center;gap:3px}
.file-hover{position:absolute;top:8px;right:8px;display:flex;gap:5px;opacity:0;transition:.15s;transform:translateY(-4px)}
.file-card:hover .file-hover{opacity:1;transform:translateY(0)}
.file-action{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.95);border-radius:var(--radius-sm);text-decoration:none;font-size:14px;color:var(--texto-suave);box-shadow:0 2px 6px rgba(0,0,0,.12);backdrop-filter:blur(4px);transition:.12s}
.file-action:hover{background:#fff;color:var(--azul-escuro);transform:scale(1.06)}

/* ========= EMPTY STATE ========= */
.empty-state{text-align:center;padding:70px 20px;color:var(--texto-suave)}
.empty-icon{font-size:56px;margin-bottom:14px;opacity:.6}
.empty-state p{font-size:15px;margin-bottom:18px;font-weight:500}
.btn-upload{display:inline-block;padding:11px 26px;background:var(--azul-escuro);color:#fff;border-radius:var(--radius-sm);text-decoration:none;font-weight:700;font-size:14px;transition:.15s}
.btn-upload:hover{background:var(--azul-hover);transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,52,96,.25)}

/* ========= UPLOAD ========= */
.upload-form label{display:block;font-size:13px;font-weight:700;margin:16px 0 6px;color:#3a4150}
.upload-form input,.upload-form textarea,.upload-form select{width:100%;padding:11px 13px;border:1.5px solid var(--borda);border-radius:var(--radius-sm);font-size:14px;transition:.15s;background:#fff}
.upload-form input:focus,.upload-form textarea:focus,.upload-form select:focus{border-color:var(--azul-escuro);outline:none;box-shadow:0 0 0 4px rgba(15,52,96,.08)}
.upload-form textarea{resize:vertical}
.upload-form button{padding:13px 30px;background:var(--azul-escuro);color:#fff;border:none;border-radius:var(--radius-sm);font-size:15px;cursor:pointer;font-weight:700;margin-top:18px;transition:.15s}
.upload-form button:hover{background:var(--azul-hover);transform:translateY(-1px);box-shadow:0 4px 12px rgba(15,52,96,.25)}
.upload-form button:disabled{background:#aab0bb;cursor:not-allowed;transform:none;box-shadow:none}

/* ========= PROGRESS ========= */
.progress-bar{width:100%;height:22px;background:#eaecf0;border-radius:12px;overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--azul-escuro),var(--azul-acento));border-radius:12px;transition:width .3s ease}

/* ========= ADMIN ========= */
.admin-section{background:#fff;border-radius:var(--radius);padding:22px;margin-bottom:18px;box-shadow:var(--sombra);border:1px solid var(--borda)}
.admin-section h3{margin-bottom:14px;font-size:15px;color:var(--texto);font-weight:700}
.tabela{width:100%;border-collapse:collapse;font-size:14px}
.tabela th,.tabela td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--borda)}
.tabela th{font-weight:700;color:var(--texto-suave);font-size:11px;text-transform:uppercase;letter-spacing:.05em;background:#fafbfc}
.tabela tr:last-child td{border-bottom:none}
.tabela tr:hover td{background:#fafbfc}
.acoes{display:flex;gap:6px;flex-wrap:wrap}
.btn-xs{padding:5px 11px;border-radius:var(--radius-sm);border:1px solid var(--borda);background:#fff;cursor:pointer;font-size:12px;transition:.12s;font-weight:600;color:var(--texto)}
.btn-xs:hover{background:var(--bg);border-color:#d4dae3}
.btn-danger{color:var(--erro);border-color:#f8d4d4}
.btn-danger:hover{background:var(--erro-bg);border-color:#f3b8b8}
.form-inline{display:flex;gap:8px;flex-wrap:wrap}
.form-inline input{flex:1;min-width:120px;padding:9px 12px;border:1.5px solid var(--borda);border-radius:var(--radius-sm);font-size:13px;transition:.15s}
.form-inline input:focus{border-color:var(--azul-escuro);outline:none}
.form-inline .btn{padding:9px 18px;background:var(--azul-escuro);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:700;font-size:13px;transition:.15s}
.form-inline .btn:hover{background:var(--azul-hover)}
.btn{padding:9px 18px;background:var(--azul-escuro);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:700;font-size:13px;transition:.15s}
.btn:hover{background:var(--azul-hover)}

/* ========= CONTEXT MENU ========= */
.ctx-menu{display:none;position:fixed;z-index:9999;background:#fff;border:1px solid var(--borda);border-radius:var(--radius);box-shadow:0 12px 32px rgba(15,23,42,.18);padding:6px;min-width:190px;font-size:13px}
.ctx-item{padding:9px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;color:var(--texto);transition:.1s;border-radius:var(--radius-sm);font-weight:500}
.ctx-item:hover{background:var(--bg)}
.ctx-divider{height:1px;background:var(--borda);margin:5px 4px}

/* ========= MODAL ========= */
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(15,23,42,.45);z-index:9998;backdrop-filter:blur(2px)}
.modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;box-shadow:0 24px 64px rgba(0,0,0,.3);z-index:9999;width:380px;max-width:90%}
.modal-title{padding:20px 22px 0;font-size:16px;font-weight:800}
.modal-body{padding:14px 22px}
.modal-desc{font-size:13px;color:var(--texto-suave);margin-bottom:8px}
.modal-body input{width:100%;padding:11px 13px;border:1.5px solid var(--borda);border-radius:var(--radius-sm);font-size:14px;transition:.15s}
.modal-body input:focus{border-color:var(--azul-escuro);outline:none;box-shadow:0 0 0 4px rgba(15,52,96,.08)}
.modal-rodape{padding:12px 22px 20px;display:flex;gap:8px;justify-content:flex-end}
.btn-modal{padding:9px 18px;border-radius:var(--radius-sm);border:1px solid var(--borda);background:#fff;cursor:pointer;font-size:13px;font-weight:600;transition:.12s}
.btn-modal:hover{background:var(--bg)}
.btn-modal-primary{background:var(--azul-escuro);color:#fff;border-color:var(--azul-escuro)}
.btn-modal-primary:hover{background:var(--azul-hover)}

/* ========= RESPONSIVE ========= */
@media(max-width:768px){
.app-layout{flex-direction:column;padding:14px;gap:14px}
.sidebar{width:100%;position:static;max-height:none}
.file-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.topo-right{gap:4px;flex-wrap:wrap;justify-content:flex-end}
.btn-topo{font-size:12px;padding:6px 10px}
.user-badge{display:none}
.admin-section{padding:16px}
}
