:root { /* Color Palette */ --primary: #9810FA; --primary-dark: #5900b3; --primary-light: #B85FFF; --success: #9810FA; --success-dark: #77008F; --danger: #FF3B30; --dark: #1A1F2E; --light: #F8F9FA; --gray: #666; --gray-light: #E9ECEF; --white: #FFFFFF; /* Custom Colors */ --dark-color: #1A1F2E; --white-color: white; --first-color: #9810FA; --color-background: white; --body-color: white; --Light-gray: #F3F4F6; --btn-color: white; --text-color: #1A1F2E; --text-muted: #666; --border-color: #ddd; --bg-color: white; --hover-color: #5900b3; --navbar-color: #9810FA; --input-color: rgba(255, 255, 255, 0.2); /* Typography */ --body-font: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --h1-font-size: 1.5rem; --h2-font-size: 1rem; --normal-font-size: 1rem; --small-font-size: 0.875rem; --side-panel-width: 270px; /* Spacing & Sizing */ --border-radius: 16px; --border-radius-sm: 8px; --shadow: 0 4px 12px rgba(0, 0, 0, 0.1); --shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.08); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15); --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } [data-theme="dark"] { /* Dark Mode Overrides */ --white-color: #E9EAEC; --first-color: #ff6600; --color-background: #1A1F2E; --body-color: #272D40; --Light-gray: #272D40; --btn-color: #E9EAEC; --text-color: #E9EAEC; --text-muted: #aaa; --border-color: #444; --bg-color: #272D40; --hover-color: #e65c00; --navbar-color: rgba(0, 0, 0, 0.6); --input-color: rgba(255,255,255,0.3); /* Additional Dark Mode */ --dark: #E9EAEC; --light: #272D40; --gray: #aaa; --gray-light: #444; --white: #272D40; --shadow: 0 4px 12px rgba(0, 0, 0, 0.3); --shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.2); --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.4); } /* Dark Mode Styles */ [data-theme="dark"] .vip-card { background: linear-gradient(135deg, #D63384 0%, #A02060 50%, #6B1A3D 100%); box-shadow: 0 8px 24px rgba(214, 51, 132, 0.4), 0 4px 12px rgba(0, 0, 0, 0.3); border: 2px solid rgba(255, 255, 255, 0.15); } [data-theme="dark"] .vip-card::before { background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, transparent 70%); } [data-theme="dark"] .job-card { background: var(--bg-color); border-color: var(--border-color); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); } [data-theme="dark"] .job-card:hover { border-color: var(--first-color); box-shadow: 0 4px 16px rgba(255, 102, 0, 0.2); } [data-theme="dark"] .offcanvas { background: var(--bg-color); box-shadow: -4px 0 24px rgba(0, 0, 0, 0.4); } [data-theme="dark"] .offcanvas-header { background: linear-gradient(135deg, rgba(39, 45, 64, 0.95) 0%, rgba(26, 31, 46, 0.95) 100%); border-bottom-color: var(--border-color); } [data-theme="dark"] .offcanvas-body { background: var(--body-color); } [data-theme="dark"] .offcanvas-footer { background: linear-gradient(135deg, rgba(39, 45, 64, 0.95) 0%, rgba(26, 31, 46, 0.95) 100%); border-top-color: var(--border-color); } [data-theme="dark"] .form-control, [data-theme="dark"] .form-select { background: var(--bg-color); border-color: var(--border-color); color: var(--text-color); } [data-theme="dark"] .form-control:focus, [data-theme="dark"] .form-select:focus { border-color: var(--first-color); box-shadow: 0 0 0 4px rgba(255, 102, 0, 0.1), 0 2px 8px rgba(255, 102, 0, 0.15); } [data-theme="dark"] .list-unstyled li:hover { background: rgba(255, 102, 0, 0.1); } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: var(--body-font); background: linear-gradient(135deg, #F8F9FA 0%, #E9ECEF 100%); background-attachment: fixed; transition: margin-left 0.3s ease; width: 100%; max-width: 100vw; overflow-x: hidden; margin: 0 auto; min-height: 100vh; } [data-theme="dark"] body { background: linear-gradient(135deg, #1A1F2E 0%, #272D40 100%); background-attachment: fixed; } .navbar { position: fixed; top: 0; left: 0; right: 0; width: 100%; max-width: 100vw; z-index: 5; flex-direction: column; align-items: center; background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-bottom: 1px solid rgba(0, 0, 0, 0.2); border-radius: 0 0 0.75rem 0.75rem; transition: transform 0.3s ease; transform: translateY(0); box-sizing: border-box; } .navbar.navbar-hidden { transform: translateY(-100%); } .navbar-left { padding-top: 0.6rem; display: flex; align-items: center; } .filter-toggle { padding: 0.5rem 1rem; border: none; border: 1px solid transparent; border-radius: 999px; font-size: 1rem; background-color: var(--input-color); color: var(--white-color); margin-right: 0.5rem; position: relative; } .filter-toggle:hover { border-color: var(--first-color); box-shadow: 0 0 8px rgba(255,255,255,0.4); background-color: rgba(255,255,255,0.3); } .filter-badge { position: absolute; top: -6px; right: -6px; background-color: #FF3B30; color: white; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 0.7rem; font-weight: bold; border: 2px solid var(--white-color); box-shadow: 0 2px 4px rgba(0,0,0,0.2); } .search-container { padding: 0 0.75rem; position: relative; width: 100%; max-width: 600px; } .searchInput { width: 100%; padding: 0.5rem 1rem 0.5rem 2.5rem; border: 1px solid transparent; border-radius: 999px; font-size: 1rem; background-color: var(--input-color); color: var(--white-color); outline: none; transition: border-color 0.3s ease, box-shadow 0.3s ease; } .searchInput::placeholder { color: rgba(255,255,255,0.7); font-style: italic; } .searchInput:focus { border-color: var(--first-color); box-shadow: 0 0 8px rgba(255,255,255,0.4); background-color: rgba(255,255,255,0.3); } .search-icon { padding: 0.75rem; position: absolute; left: 0.75rem; top: 50%; transform: translateY(-50%); color: var(--white-color); font-size: var(--normal-font-size); pointer-events: none; } .searchInput:focus + .search-icon { color: var(--first-color); } .category-container { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; scrollbar-color: var(--first-color) transparent; padding: 1rem; } .category-buttons { display: flex; gap: 0.5rem; white-space: nowrap; min-width: max-content; } .category-btn { position: relative; font-size: 13px; font-weight: 700; color: var(--white-color); margin-right: 14px; background: none; border: none; cursor: pointer; text-transform: capitalize; transition: color 0.3s ease; } .category-btn:hover { color: var(--white-color); } .category-btn::after { content: ""; position: absolute; bottom: -4px; left: 50%; transform: translateX(-50%) scaleX(0); transform-origin: center; width: 100%; height: 3px; background: var(--white-color); border-radius: 3px; transition: transform 0.3s ease; } .category-btn.active { color: var(--white-color); } .category-btn.active::after { transform: translateX(-50%) scaleX(1); } /* Form Controls - Modern Design */ .form-control, .form-select { border: 2px solid var(--gray-light); border-radius: var(--border-radius-sm); padding: 0.75rem 1rem; font-size: 0.95rem; transition: var(--transition); background: var(--white); color: var(--text-color); font-family: var(--body-font); } .form-control:focus, .form-select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 4px rgba(152, 16, 250, 0.1), 0 2px 8px rgba(152, 16, 250, 0.15); transform: translateY(-1px); background: var(--white); } .form-control:hover, .form-select:hover { border-color: var(--primary-light); } .form-control::placeholder { color: var(--text-muted); opacity: 0.7; } .form-control-sm { padding: 0.5rem 0.75rem; font-size: 0.875rem; } /* Buttons */ .btn { border: none; border-radius: var(--border-radius-sm); padding: 0.6rem 1.2rem; font-weight: 500; transition: var(--transition); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; text-decoration: none; font-size: 0.95rem; } .btn:hover { transform: translateY(-2px); box-shadow: var(--shadow); } .btn:active { transform: translateY(0); } .btn-primary { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); color: var(--white); } .btn-primary:hover { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 100%); box-shadow: 0 6px 12px rgba(152, 16, 250, 0.3); } .btn-outline-primary { border: 2px solid var(--primary); color: var(--primary); background: transparent; } .btn-outline-primary:hover { background: var(--primary); color: var(--white); } .btn-success { border: 2px solid var(--primary); background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); color: var(--white); } .btn-success:hover { background: linear-gradient(135deg, var(--primary-dark) 0%, var(--primary) 100%); } .btn-outline-success { border: 2px solid var(--success); color: var(--success); background: transparent; } .btn-outline-success:hover { background: var(--success); color: var(--white); } .btn-secondary { background: var(--gray); color: var(--white); border: 2px solid var(--gray); } .btn-secondary:hover { background: var(--dark); border-color: var(--dark); color: var(--white); } .btn-outline-secondary { border: 2px solid var(--gray); color: var(--gray); background: transparent; } .btn-outline-secondary:hover { background: var(--gray); color: var(--white); } .btn-sm { padding: 0.4rem 0.8rem; font-size: 0.80rem; } .btn-link { color: var(--primary); text-decoration: none; background: none; border: none; padding: 0; } .btn-link:hover { text-decoration: underline; } .btn-light { background: var(--white); color: var(--dark); border: 2px solid var(--gray-light); } .btn-light:hover { background: var(--gray-light); color: var(--dark); } .btn-light.active { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); color: var(--white); border-color: var(--primary); } /* Category Pills */ .category-pills { display: flex; gap: 0.5rem; flex-wrap: nowrap; overflow-x: auto; padding: 0.5rem 0; scrollbar-width: none; -ms-overflow-style: none; } .category-pills::-webkit-scrollbar { display: none; } .category-pill { padding: 0.5rem 1rem; border: 2px solid var(--gray-light); border-radius: 20px; background: var(--white); color: var(--dark); font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: var(--transition); white-space: nowrap; flex-shrink: 0; } .category-pill:hover { border-color: var(--primary); color: var(--primary); transform: translateY(-2px); } .category-pill.active { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); border-color: var(--primary); color: var(--white); box-shadow: var(--shadow); } /* VIP Card Horizontal Container */ .vip-horizontal-container { position: relative; overflow: hidden; border-radius: var(--border-radius); margin-bottom: 1rem; } .vip-horizontal-scroll { display: flex; flex-direction: row; gap: 0; overflow-x: auto; overflow-y: hidden; padding: 0; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; scrollbar-width: none; -ms-overflow-style: none; scroll-snap-type: x mandatory; } .vip-horizontal-scroll::-webkit-scrollbar { display: none; } .vip-card-item { flex: 0 0 100%; min-width: 100%; max-width: 100%; scroll-snap-align: start; scroll-snap-stop: always; padding: 0 0.5rem; } .vip-card-item:first-child { padding-left: 0.5rem; } .vip-card-item:last-child { padding-right: 0.5rem; } /* VIP Card - Modern Design */ .vip-card { background: linear-gradient(135deg, #FF6B9D 0%, #C44569 50%, #8B2E5C 100%); border-radius: var(--border-radius); color: var(--white); box-shadow: 0 8px 24px rgba(255, 107, 157, 0.3), 0 4px 12px rgba(0, 0, 0, 0.15); min-height: 120px; width: 100%; padding: 1.25rem !important; position: relative; overflow: hidden; transition: var(--transition); border: 2px solid rgba(255, 255, 255, 0.1); align-items: flex-start !important; } .vip-card::before { content: ''; position: absolute; top: -50%; right: -50%; width: 200%; height: 200%; background: radial-gradient(circle, rgba(255, 255, 255, 0.1) 0%, transparent 70%); animation: shimmer 3s ease-in-out infinite; } @keyframes shimmer { 0%, 100% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(-20%, -20%) rotate(180deg); } } .vip-card:active { transform: scale(0.98); box-shadow: 0 4px 12px rgba(255, 107, 157, 0.2); } .vip-card .small-muted { color: rgba(255, 255, 255, 0.85) !important; font-size: 0.8rem; margin-top: 0.25rem; display: flex; align-items: center; gap: 0.5rem; } .vip-badge { display: inline-flex; align-items: center; gap: 0.375rem; background: rgba(255, 255, 255, 0.25); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); padding: 0.375rem 0.875rem; border-radius: 20px; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; border: 1.5px solid rgba(255, 255, 255, 0.4); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); margin-bottom: 0.75rem; } .vip-badge::before { content: '✨'; font-size: 0.75rem; animation: sparkle 2s ease-in-out infinite; } @keyframes sparkle { 0%, 100% { transform: scale(1) rotate(0deg); opacity: 1; } 50% { transform: scale(1.2) rotate(180deg); opacity: 0.8; } } .vip-card .fw-bold { font-size: 1.1rem; font-weight: 700; line-height: 1.3; margin-bottom: 0.5rem; text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .vip-card .fw-semibold { font-size: 1rem; font-weight: 600; text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); background: rgba(255, 255, 255, 0.15); padding: 0.5rem 0.75rem; border-radius: 12px; backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.2); } /* VIP Card Layout Improvements */ .vip-card { align-items: flex-start !important; } .vip-card > div:first-child { flex: 1; min-width: 0; padding-right: 1rem; } .vip-card > div:last-child { position: absolute; top: 1.25rem; right: 1.25rem; flex-shrink: 0; display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-start; } /* Job Cards - Modern Design */ .job-card { background: white; border-radius: 15px; padding: 20px; border-inline: 2px solid #6B46C1; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); transition: transform 0.3s, box-shadow 0.3s; cursor: pointer; position: relative; overflow: hidden; } .job-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); border: 2px solid #6B46C1; } .job-card:hover::before { opacity: 1; } .job-card:active { transform: translateY(0); box-shadow: var(--shadow-sm); } .job-card .fw-bold { font-size: 1.1rem; font-weight: 700; color: #6B46C1; margin-bottom: 0.5rem; line-height: 1.3; } .job-card .small-muted { display: flex; align-items: center; gap: 0.5rem; font-size: 0.85rem; color: var(--text-muted); margin-bottom: 0.75rem; } .job-card .small-muted i { color: #6B46C1; } .job-card .text-truncate-2 { color: var(--text-color); line-height: 1.5; margin-bottom: 1rem; } .job-card .btn { border-radius: 10px; font-weight: 500; transition: var(--transition); } .job-card .btn-success { box-shadow: 0 2px 8px rgba(152, 16, 250, 0.2); } .job-card .btn-success:hover { box-shadow: 0 4px 12px rgba(152, 16, 250, 0.3); } .job-card .btn-light { border-radius: 10px; } .job-card .btn-light.active { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); color: var(--white); border-color: var(--primary); } /* Carousel */ .carousel { position: relative; border-radius: var(--border-radius); overflow: hidden; } .carousel-inner { border-radius: var(--border-radius); } /* Offcanvas - Modern Design */ .offcanvas { position: fixed; top: 0; right: -100%; width: 100%; max-width: 500px; height: 100%; background: var(--white); box-shadow: -4px 0 24px rgba(0, 0, 0, 0.15); z-index: 1000; transition: var(--transition); display: flex; flex-direction: column; backdrop-filter: blur(10px); } .offcanvas.show { right: 0; } .offcanvas-backdrop { display: none; } .offcanvas-header { padding: 1.5rem 1.5rem 1.25rem; border-bottom: 1px solid var(--gray-light); display: flex; justify-content: space-between; align-items: center; background: linear-gradient(135deg, rgba(248, 249, 250, 0.95) 0%, rgba(233, 236, 239, 0.95) 100%); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 10; } .offcanvas-title { font-weight: 700; font-size: 1.35rem; color: var(--dark); background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .offcanvas-body { flex: 1; overflow-y: auto; padding: 1.5rem; background: var(--light); scrollbar-width: thin; scrollbar-color: var(--primary-light) transparent; } .offcanvas-body::-webkit-scrollbar { width: 6px; } .offcanvas-body::-webkit-scrollbar-track { background: transparent; } .offcanvas-body::-webkit-scrollbar-thumb { background: var(--primary-light); border-radius: 10px; } .offcanvas-body::-webkit-scrollbar-thumb:hover { background: var(--primary); } .offcanvas-footer { padding: 1.25rem 1.5rem; border-top: 1px solid var(--gray-light); display: flex; gap: 0.75rem; justify-content: flex-end; background: linear-gradient(135deg, rgba(248, 249, 250, 0.95) 0%, rgba(233, 236, 239, 0.95) 100%); backdrop-filter: blur(10px); position: sticky; bottom: 0; z-index: 10; } /* Bottom Navigation */ .bottom-nav { position: fixed; bottom: 0; left: 0; right: 0; width: 100%; max-width: 100vw; background-color: var(--color-background); border-top: 1px solid rgba(242, 162, 12, 0.2); z-index: 5; box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.1); box-sizing: border-box; overflow-x: hidden; } .bottom-nav .container-fluid { padding: 0; } .bottom-nav .row { margin: 0; width: 100%; } .bottom-nav-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.375rem; border: none; background: transparent; color: #A6A09B; cursor: pointer; transition: all 0.3s ease; font-size: 0.75rem; font-weight: 500; width: 100%; min-height: 60px; touch-action: manipulation; -webkit-tap-highlight-color: transparent; outline: none; } .bottom-nav-btn:active { transform: scale(0.95); } .bottom-nav-btn:hover, .bottom-nav-btn:focus { color: var(--first-color); } .bottom-nav-btn.active { color: var(--first-color); } .bottom-nav-btn.active i { transform: scale(1.1); } .bottom-nav-btn i { font-size: 1.5rem; transition: transform 0.3s ease; } .bottom-nav-btn span { font-size: 0.75rem; line-height: 1; } /* Legacy nav-btn styles for compatibility */ .nav-btn { background: none; border: none; flex-direction: column; align-items: center; gap: 2px; color: #A6A09B; cursor: pointer; transition: color 0.3s ease; outline: none; position: relative; } .nav-btn:hover, .nav-btn:focus { color: var(--first-color); } .nav-btn.active { color: var(--first-color); } .nav-icon { font-size: 1.25rem; } /* Utilities */ .container { width: 100%; padding-top: 7rem; padding-bottom: 7rem; padding-left: 0.75rem; padding-right: 0.75rem; box-sizing: border-box; max-width: 1200px; margin: 0 auto; } .container-fluid { width: 100%; max-width: 100%; padding: 0 1rem; box-sizing: border-box; margin: 0 auto; } .d-flex { display: flex; } .flex-column { flex-direction: column; } .flex-grow-1 { flex-grow: 1; } .flex-fill { flex: 1 1 auto; } .justify-content-between { justify-content: space-between; } .justify-content-end { justify-content: flex-end; } .align-items-center { align-items: center; } .align-items-start { align-items: flex-start; } .text-center { text-align: center; } .text-end { text-align: end; } .text-truncate-2 { display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; } .gap-2 { gap: 0.5rem; } .g-0 { gap: 0; } .g-2 { gap: 0.5rem; } .g-3 { gap: 1rem; } .mb-0 { margin-bottom: 0; } .mb-1 { margin-bottom: 0.25rem; } .mb-2 { margin-bottom: 0.5rem; } .mb-3 { margin-bottom: 1rem; } .mt-1 { margin-top: 0.25rem; } .mt-2 { margin-top: 0.5rem; } .mt-3 { margin-top: 1rem; } .mt-4 { margin-top: 1.5rem; } .mt-5 { margin-top: 3rem; } .me-1 { margin-right: 0.25rem; } .me-2 { margin-right: 0.5rem; } .ms-1 { margin-left: 0.25rem; } .p-0 { padding: 0; } .p-2 { padding: 0.5rem; } .p-3 { padding: 1rem; } .h-100 { height: 100%; } .w-100 { width: 100%; } .row { display: flex; flex-wrap: wrap; margin: 0 -0.5rem; } .col { flex: 1; padding: 0 0.5rem; } .col-6 { flex: 0 0 50%; max-width: 50%; padding: 0 0.5rem; } .col-12 { flex: 0 0 100%; max-width: 100%; padding: 0 0.5rem; } .fw-bold { font-weight: 700; } .fw-semibold { font-weight: 600; } .small { font-size: 0.875rem; } .small-muted { font-size: 0.8rem; color: var(--gray); } .text-muted { color: var(--gray); } .list-unstyled { list-style: none; padding: 0; } .list-unstyled li { padding: 0.75rem 0; border-bottom: 1px solid var(--gray-light); transition: var(--transition); } .list-unstyled li:hover { background: rgba(152, 16, 250, 0.05); margin: 0 -1rem; padding-left: 1rem; padding-right: 1rem; border-radius: var(--border-radius-sm); } .list-unstyled li:last-child { border-bottom: none; } .list-unstyled li strong { color: var(--primary); display: inline-block; min-width: 120px; font-weight: 600; } /* Form Elements */ .form-label { font-weight: 500; color: var(--dark); margin-bottom: 0.5rem; display: block; font-size: 0.875rem; } .form-control, .form-select { width: 100%; } textarea.form-control { resize: vertical; min-height: 80px; } .form-check { display: flex; align-items: center; gap: 0.5rem; } .form-check-input { width: 20px; height: 20px; cursor: pointer; } .form-check-label { cursor: pointer; user-select: none; } .form-switch .form-check-input { width: 40px; height: 20px; border-radius: 20px; appearance: none; background: var(--gray-light); position: relative; transition: var(--transition); } .form-switch .form-check-input:checked { background: var(--primary); } .form-switch .form-check-input::after { content: ''; position: absolute; width: 16px; height: 16px; border-radius: 50%; background: var(--white); top: 2px; left: 2px; transition: var(--transition); } .form-switch .form-check-input:checked::after { left: 22px; } /* Tabs */ .nav-tabs { border-bottom: 2px solid var(--gray-light); display: flex; gap: 0; } .nav-item { flex: 1; } .nav-link { display: block; padding: 0.75rem 1rem; text-align: center; color: var(--gray); text-decoration: none; border: none; background: transparent; border-bottom: 2px solid transparent; cursor: pointer; transition: var(--transition); font-weight: 500; } .nav-link:hover { color: var(--primary); background: var(--light); } .nav-link.active { color: var(--primary); border-bottom-color: var(--primary); background: transparent; } .tab-content { margin-top: 1rem; } .tab-pane { display: none; } .tab-pane.active { display: block; animation: fadeIn 0.3s ease; } /* Skeleton Loading */ .skeleton { background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%); background-size: 200% 100%; animation: loading 1.5s ease-in-out infinite; border-radius: var(--border-radius-sm); } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Focus States */ button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }