// ========================================================================== // Header Layout Styles // Professional Resume Builder - Header/Navigation // ========================================================================== // Main navigation .main-navbar { background: var(--color-white); box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.06), 0 1px 2px -1px rgba(0, 0, 0, 0.06); padding: 0.5rem 0; position: sticky; top: 0; z-index: 1030; transition: all 0.3s ease; &.scrolled { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .navbar-brand { font-weight: 700; font-size: 1.5rem; color: var(--brand-primary); text-decoration: none; display: flex; align-items: center; transition: all 0.2s ease; &:hover { color: var(--brand-primary-dark); transform: scale(1.02); } .brand-icon { width: 2.5rem; height: 2.5rem; border-radius: var(--border-radius-md); background: var(--brand-gradient); color: var(--color-white); display: flex; align-items: center; justify-content: center; margin-right: 0.75rem; font-size: 1.25rem; box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3); } } .navbar-nav { .nav-link { font-weight: 500; color: var(--color-gray-700); padding: 0.625rem 1rem; border-radius: var(--border-radius-md); transition: all 0.2s ease; position: relative; &:hover { color: var(--brand-primary); background-color: rgba(102, 126, 234, 0.1); } &.active { color: var(--brand-primary); font-weight: 600; &::after { content: ''; position: absolute; bottom: -0.5rem; left: 50%; transform: translateX(-50%); width: 20px; height: 2px; background: var(--brand-primary); border-radius: var(--border-radius-full); } } i { margin-right: 0.5rem; font-size: 1rem; } } } .navbar-toggler { border: none; padding: 0.375rem 0.5rem; border-radius: var(--border-radius-md); transition: all 0.2s ease; &:focus { box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.1); } &:hover { background-color: rgba(102, 126, 234, 0.1); } .navbar-toggler-icon { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28102, 126, 234, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } } } // User dropdown .user-dropdown { .dropdown-toggle { border: none; background: transparent; padding: 0.375rem; border-radius: var(--border-radius-full); transition: all 0.2s ease; display: flex; align-items: center; &:hover { background-color: rgba(102, 126, 234, 0.1); } &::after { display: none; } .user-avatar { width: 2.5rem; height: 2.5rem; border-radius: 50%; border: 2px solid var(--color-white); box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); object-fit: cover; margin-right: 0.5rem; } .user-info { text-align: left; .user-name { font-size: 0.875rem; font-weight: 600; color: var(--color-dark); line-height: 1.2; margin: 0; } .user-role { font-size: 0.75rem; color: var(--color-gray-600); line-height: 1.2; margin: 0; } } .dropdown-arrow { margin-left: 0.5rem; color: var(--color-gray-400); transition: transform 0.2s ease; } &[aria-expanded="true"] { .dropdown-arrow { transform: rotate(180deg); } } } .dropdown-menu { border: none; border-radius: var(--border-radius-lg); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); padding: 0.5rem; min-width: 200px; margin-top: 0.5rem; .dropdown-item { border-radius: var(--border-radius-md); padding: 0.625rem 1rem; font-weight: 400; color: var(--color-gray-700); transition: all 0.2s ease; display: flex; align-items: center; &:hover { background-color: var(--color-gray-50); color: var(--color-dark); } &:active { background-color: var(--color-gray-100); } i { margin-right: 0.75rem; width: 1rem; color: var(--color-gray-500); } &.text-danger { color: var(--brand-danger); &:hover { background-color: rgba(239, 68, 68, 0.1); color: var(--brand-danger); } i { color: var(--brand-danger); } } } .dropdown-divider { border-color: var(--color-gray-100); margin: 0.5rem 0; } } } // Notification badge .notification-badge { position: relative; .badge { position: absolute; top: -0.375rem; right: -0.375rem; background: var(--brand-danger); color: var(--color-white); font-size: 0.625rem; padding: 0.25rem 0.375rem; border-radius: var(--border-radius-full); font-weight: 600; min-width: 1.125rem; height: 1.125rem; display: flex; align-items: center; justify-content: center; border: 2px solid var(--color-white); } } // Search bar in header .header-search { position: relative; max-width: 400px; margin: 0 auto; .search-input { width: 100%; padding: 0.625rem 1rem 0.625rem 2.75rem; border: 2px solid var(--color-gray-200); border-radius: var(--border-radius-full); background: var(--color-white); transition: all 0.2s ease; font-size: 0.9rem; &:focus { border-color: var(--brand-primary); box-shadow: 0 0 0 0.2rem rgba(102, 126, 234, 0.1); outline: none; } &::placeholder { color: var(--color-gray-500); } } .search-icon { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: var(--color-gray-400); z-index: 3; } .search-results { position: absolute; top: calc(100% + 0.5rem); left: 0; right: 0; background: var(--color-white); border-radius: var(--border-radius-lg); box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); max-height: 300px; overflow-y: auto; z-index: 1050; display: none; &.show { display: block; } .search-item { padding: 0.75rem 1rem; border-bottom: 1px solid var(--color-gray-100); cursor: pointer; transition: background-color 0.2s ease; &:hover { background-color: var(--color-gray-50); } &:last-child { border-bottom: none; } .item-title { font-weight: 500; color: var(--color-dark); margin-bottom: 0.25rem; } .item-description { font-size: 0.875rem; color: var(--color-gray-600); } } } } // Breadcrumb .custom-breadcrumb { background: transparent; padding: 0; margin-bottom: var(--spacing-lg); .breadcrumb { background: transparent; padding: 0; margin: 0; .breadcrumb-item { font-size: 0.875rem; color: var(--color-gray-600); &.active { color: var(--color-gray-800); font-weight: 500; } a { color: var(--brand-primary); text-decoration: none; transition: color 0.2s ease; &:hover { color: var(--brand-primary-dark); text-decoration: underline; } } &::before { color: var(--color-gray-400); } i { margin-right: 0.25rem; } } } } // Mobile navigation @include media-breakpoint-down(lg) { .main-navbar { .navbar-collapse { margin-top: 1rem; padding: 1rem; background: var(--color-white); border-radius: var(--border-radius-lg); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); .navbar-nav { .nav-link { padding: 0.875rem 1rem; margin-bottom: 0.25rem; &.active::after { display: none; } &.active { background-color: rgba(102, 126, 234, 0.1); } } } } .navbar-brand { .brand-icon { width: 2rem; height: 2rem; font-size: 1rem; } } } .user-dropdown { margin-top: var(--spacing-md); padding-top: var(--spacing-md); border-top: 1px solid var(--color-gray-100); .dropdown-toggle { width: 100%; justify-content: space-between; padding: 0.75rem 1rem; background-color: var(--color-gray-50); border-radius: var(--border-radius-md); .user-info { text-align: left; } } .dropdown-menu { position: static; box-shadow: none; border: none; background: transparent; padding: 0; margin-top: 0.5rem; .dropdown-item { background: var(--color-white); margin-bottom: 0.25rem; border-radius: var(--border-radius-md); &:hover { background-color: var(--color-gray-50); } } } } .header-search { margin: var(--spacing-md) 0; .search-input { font-size: 1rem; padding: 0.75rem 1rem 0.75rem 3rem; } .search-icon { left: 1.125rem; } } } // Header animations @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } .navbar-collapse.collapsing, .navbar-collapse.show { animation: slideDown 0.3s ease-out; } // Sticky header behavior .header-hidden { transform: translateY(-100%); transition: transform 0.3s ease-in-out; } .header-visible { transform: translateY(0); transition: transform 0.3s ease-in-out; }