/* ========== Variáveis CSS ========== */ :root { --primary-blue: #4a90e2; --primary-blue-light: #5da3f5; --primary-blue-lighter: #70b4ff; --dark-blue: #1a3a5c; --dark-blue-deep: #0d2640; --white: #ffffff; --transition: all 0.3s ease; } /* ========== Container Principal ========== */ .toggle-sidebar-wrapper { background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-blue-light) 100%); border-radius: 12px; padding: 8px; margin-bottom: 20px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4); border: 1px solid var(--primary-blue-lighter); } .container-title { display: flex; align-items: center; padding: 14px 20px; cursor: pointer; background-color: var(--primary-blue); border-radius: 8px; margin-bottom: 12px; transition: var(--transition); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); border: 1px solid var(--primary-blue-light); } .container-title:hover { background-color: var(--primary-blue-light); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); transform: translateY(-1px); } .container-title:hover .toggle-arrow { color: var(--dark-blue-deep) !important; transform: scale(1.1); } .toggle-title { color: var(--white) !important; font-weight: 700; font-size: 18px; margin: 0; flex-grow: 1; user-select: none; } .toggle-arrow { transition: var(--transition); color: var(--dark-blue) !important; } /* ========== Menu Lista ========== */ .sidebar-menu-list { list-style: none; padding: 0; margin: 0; animation: fadeIn 0.3s ease; } .sidebar-item { list-style: none; margin: 6px 0; border-radius: 6px; transition: all 0.2s ease; } /* ========== Links da Sidebar ========== */ .sidebar-link { display: flex; align-items: center; text-decoration: none; color: var(--white) !important; padding: 12px 20px; border-radius: 6px; transition: all 0.2s ease; font-size: 16px; width: 100%; text-align: left; border: none; background: none; cursor: pointer; position: relative; overflow: hidden; font-weight: 500; } .sidebar-link::before { content: ''; position: absolute; left: 0; top: 0; height: 100%; width: 3px; background-color: var(--dark-blue); transform: scaleY(0); transition: transform 0.2s ease; } .sidebar-link i { margin-right: 12px; font-size: 19px; transition: transform 0.2s ease; color: var(--dark-blue) !important; } .sidebar-link:hover { color: var(--white) !important; background-color: var(--primary-blue-light); padding-left: 25px; } .sidebar-link:hover::before { transform: scaleY(1); } .sidebar-link:hover i { transform: scale(1.1); color: var(--dark-blue-deep) !important; } .sidebar-link.active { color: var(--white) !important; background-color: #1e3a8a; font-weight: 600; box-shadow: 0 4px 12px rgba(30, 58, 138, 0.4); padding-left: 25px; } .sidebar-link.active::before { transform: scaleY(1); background-color: var(--primary-blue-lighter); } .sidebar-link.active i { color: var(--white) !important; } /* ========== Título da Sidebar ========== */ .sidebar-title { padding: 20px 20px 8px; font-size: 14px; color: var(--white) !important; text-transform: uppercase; font-weight: 700; letter-spacing: 1px; position: relative; } .sidebar-title::after { content: ''; position: absolute; bottom: 4px; left: 20px; right: 20px; height: 2px; background: linear-gradient(90deg, var(--white), transparent); } /* ========== Itens com Submenu ========== */ .sidebar-item.has-sub { border-radius: 6px 6px 0 0; overflow: hidden; background-color: rgba(74, 144, 226, 0.6); } .sidebar-item.has-sub.active { background-color: var(--primary-blue-light); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); } .sidebar-item.has-sub .sidebar-link { background-color: var(--primary-blue); color: var(--white) !important; } .sidebar-item.has-sub .sidebar-link::after { content: "\F282"; font-family: "bootstrap-icons"; font-weight: 900; margin-left: auto; transition: var(--transition); display: flex; align-items: center; font-size: 14px; color: var(--dark-blue) !important; } .sidebar-item.has-sub.active .sidebar-link::after, .sidebar-item.has-sub .sidebar-link:hover::after { color: var(--dark-blue-deep) !important; } .sidebar-item.has-sub.active .sidebar-link::after { transform: rotate(180deg); } .sidebar-item.has-sub .sidebar-link.submenu-active, .sidebar-item.has-sub.active .sidebar-link.submenu-active { color: var(--white) !important; } .sidebar-item.has-sub .sidebar-link.submenu-active i { color: var(--dark-blue) !important; } .sidebar-item.has-sub.active .sidebar-link.submenu-active { background-color: #1e3a8a; } .sidebar-item.has-sub.active .sidebar-link.submenu-active i { color: var(--white) !important; } /* ========== Submenu ========== */ .submenu { list-style: none; padding-left: 0; margin: 0; max-height: 0; overflow: hidden; transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1); background-color: rgba(74, 144, 226, 0.9); border-radius: 0 0 6px 6px; } .sidebar-item.has-sub.active .submenu { max-height: 800px; } .submenu-item { position: relative; } .submenu-item .sidebar-link { padding-left: 45px; font-size: 15px; color: var(--white) !important; background-color: transparent; font-weight: 500; } .submenu-item .sidebar-link::before { left: 30px; width: 2px; background-color: var(--dark-blue); } .submenu-item .sidebar-link:hover { background-color: var(--primary-blue-lighter); color: var(--white) !important; padding-left: 48px; } .submenu-item .sidebar-link:hover::before { background-color: var(--dark-blue-deep); } .submenu-item:last-child .sidebar-link { border-radius: 0 0 6px 6px; } .sidebar-item.has-sub.active .submenu-item:first-child .sidebar-link { border-radius: 0; } .sidebar-link.submenu-link.active::before { background-color: var(--primary-blue-lighter); } /* ========== Ícones e Indicadores ========== */ .external-icon { font-size: 12px; margin-left: 8px; opacity: 0.8; color: var(--dark-blue) !important; } .active-indicator { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); width: 8px; height: 8px; background-color: var(--primary-blue-lighter); border-radius: 50%; animation: pulse 2s infinite; box-shadow: 0 0 10px rgba(112, 180, 255, 0.6); } /* ========== Animações ========== */ @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0% { transform: translateY(-50%) scale(1); opacity: 1; } 50% { transform: translateY(-50%) scale(1.3); opacity: 0.8; } 100% { transform: translateY(-50%) scale(1); opacity: 1; } }