/* --- Global Styles & Variables --- */ :root { --primary-color: #00CFE8; /* 사이언 블루 */ --secondary-color: #FF00A8; /* 네온 핑크 */ --dark-bg: #0a0f18; /* 더 어두운 네이비/블랙 */ --dark-bg-lighter: #101625; --card-bg: #161d31; /* 카드 배경 - 가독성 위해 약간 밝게 조정 */ --text-light: #f8f9fa; /* 밝은 텍스트 색상 (거의 흰색) */ --text-dark: #333; --font-orbitron: 'Orbitron', sans-serif; --font-roboto: 'Roboto', sans-serif; --gradient-primary: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color) 100%); --gradient-button: linear-gradient(90deg, #560bad 0%, #f72585 100%); --gradient-hero: linear-gradient(135deg, #0f0c29 0%, #302b63 50%, #24243e 100%); } body { font-family: var(--font-roboto); background-color: var(--dark-bg); color: var(--text-light); /* 밝은 텍스트 색상 적용 */ line-height: 1.7; overflow-x: hidden; /* 가로 스크롤 방지 */ } h1, h2, h3, h4, h5, h6 { font-family: var(--font-orbitron); font-weight: 700; color: var(--primary-color); } .section-title { font-size: 2.5rem; margin-bottom: 1rem; color: var(--text-light); /* 섹션 제목 기본 색상도 밝게 */ } .section-title .highlight { color: var(--primary-color); text-shadow: 0 0 10px var(--primary-color); } /* --- Navbar --- */ .navbar { background-color: rgba(16, 22, 37, 0.8); /* --dark-bg-lighter with transparency */ backdrop-filter: blur(10px); transition: background-color 0.3s ease-in-out; padding-top: 1rem; padding-bottom: 1rem; } .navbar.scrolled { background-color: var(--dark-bg-lighter); box-shadow: 0 2px 10px rgba(0,0,0,0.3); } .navbar-brand { font-family: var(--font-orbitron); font-size: 1.8rem; color: var(--primary-color) !important; text-shadow: 0 0 5px var(--primary-color); } .navbar-brand i { vertical-align: middle; } .nav-link { color: var(--text-light) !important; /* 네비게이션 링크 색상 밝게 */ font-weight: 400; margin-left: 15px; transition: color 0.3s ease, text-shadow 0.3s ease; } .nav-link:hover, .nav-link.active { color: var(--primary-color) !important; text-shadow: 0 0 8px var(--primary-color); } .navbar-toggler { border-color: rgba(0, 207, 232, 0.5); } .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(0, 207, 232, 0.8)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); } /* --- Hero Section --- */ .hero-section { min-height: 100vh; background: var(--gradient-hero); position: relative; color: white; overflow: hidden; /* For particles.js */ } .hero-section .overlay { /* Optional: if particles are too bright */ position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.1); /* Slight darkening */ z-index: 0; } .hero-section .container { z-index: 1; /* Ensure content is above overlay and particles */ } .hero-title { font-size: 3rem; /* Responsive font size */ font-weight: 700; text-shadow: 0 0 15px rgba(0, 207, 232, 0.7), 0 0 25px rgba(0, 207, 232, 0.5); letter-spacing: 1px; } .hero-title .char { /* For text animation */ display: inline-block; opacity: 0; transform: translateY(20px); animation: char-appear 0.5s forwards; } @keyframes char-appear { to { opacity: 1; transform: translateY(0); } } .hero-subtitle { font-size: 1.3rem; color: var(--text-light); /* 서브타이틀 색상 밝게 */ max-width: 700px; margin-left: auto; margin-right: auto; } .cta-hero-button { background: var(--gradient-button); border: none; padding: 15px 35px; font-size: 1.2rem; font-weight: bold; border-radius: 50px; color: white; transition: transform 0.3s ease, box-shadow 0.3s ease; box-shadow: 0 0 20px rgba(247, 37, 133, 0.5); /* --secondary-color shadow */ } .cta-hero-button:hover { transform: translateY(-5px) scale(1.05); box-shadow: 0 10px 30px rgba(247, 37, 133, 0.7); color: white; } #particles-js { position: absolute; width: 100%; height: 100%; top: 0; left: 0; z-index: 0; /* Behind hero content */ } /* --- Features Section --- */ .features-section { background-color: var(--dark-bg-lighter); padding-top: 80px; padding-bottom: 80px; } /* 설명 텍스트 스타일 - 밝기 강조 */ .features-section .text-muted, .application-form-section .text-muted { color: var(--text-light) !important; /* 설명 텍스트 색상 밝게, 강제 적용 */ opacity: 1 !important; /* 불투명도를 1로 설정하여 더 밝게 만듭니다, 강제 적용 */ font-size: 1rem; font-weight: normal; /* 기본 굵기 명시 */ } .feature-card { background-color: var(--card-bg); padding: 30px; border-radius: 15px; text-align: center; transition: transform 0.3s ease, box-shadow 0.3s ease; border: 1px solid rgba(0, 207, 232, 0.2); height: 100%; } .feature-card:hover { transform: translateY(-10px); box-shadow: 0 10px 30px rgba(0, 207, 232, 0.2); } .feature-icon { font-size: 3rem; margin-bottom: 20px; display: inline-block; background: var(--gradient-primary); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; } .feature-title { font-size: 1.5rem; margin-bottom: 10px; color: var(--text-light); /* 특징 제목 색상 밝게 */ } .feature-card p { color: var(--text-light); /* 특징 설명 색상 밝게 */ opacity: 0.9; /* 이 부분은 그대로 0.9 유지 */ font-size: 1rem; } /* --- Application Form Section --- */ .application-form-section { background-color: var(--dark-bg); padding-top: 80px; padding-bottom: 80px; } #botApplicationForm { background-color: var(--card-bg); border: 1px solid rgba(0, 207, 232, 0.2); box-shadow: 0 0 30px rgba(0,0,0,0.3); } .form-control { background-color: var(--dark-bg-lighter); color: var(--text-light); /* 입력 필드 텍스트 색상 밝게 */ border: 1px solid rgba(0, 207, 232, 0.3); padding: 0.9rem 0.75rem; } /* Select 필드 스타일 */ .form-select { background-color: var(--dark-bg-lighter); color: var(--text-light); /* 입력 필드 텍스트 색상 밝게 */ border: 1px solid rgba(0, 207, 232, 0.3); padding: 0.9rem 2.25rem 0.9rem 0.75rem; /* 화살표 공간 확보 */ background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); /* 밝은 화살표 아이콘 */ -webkit-appearance: none; -moz-appearance: none; appearance: none; } .form-control:focus, .form-select:focus { background-color: var(--dark-bg-lighter); color: var(--text-light); border-color: var(--primary-color); box-shadow: 0 0 0 0.25rem rgba(0, 207, 232, 0.3); } .form-control::placeholder { color: rgba(224, 224, 224, 0.5); /* 플레이스홀더 색상 밝게 */ } /* option 색상 */ .form-select option { background-color: var(--dark-bg); /* 옵션 배경색 */ color: var(--text-light); /* 옵션 글자색 */ } .form-floating > label { color: rgba(224, 224, 224, 0.7); /* 플로팅 레이블 색상 밝게 */ } .form-floating > .form-control:focus ~ label, .form-floating > .form-control:not(:placeholder-shown) ~ label, .form-floating > .form-select:focus ~ label, .form-floating > .form-select:not(:placeholder-shown) ~ label { color: var(--primary-color); /* 포커스/입력 시 레이블 색상 강조 */ } /* 일반 라벨 스타일 (select 등에 사용) */ .form-label { color: var(--text-light); /* 라벨 색상 밝게 */ margin-bottom: 0.5rem; display: block; /* 블록 레벨 요소로 만들어 마진 적용 용이 */ } .form-check-input { background-color: var(--dark-bg-lighter); border-color: rgba(0, 207, 232, 0.5); } .form-check-input:checked { background-color: var(--primary-color); border-color: var(--primary-color); } .form-check-label { color: var(--text-light); /* 체크박스 레이블 색상 밝게 */ } .form-check-label a { color: var(--primary-color); /* 개인정보 링크 색상 강조 */ text-decoration: none; } .form-check-label a:hover { text-decoration: underline; } .cta-form-button { background: var(--gradient-button); border: none; padding: 12px 30px; font-size: 1.1rem; font-weight: bold; border-radius: 8px; color: white; transition: transform 0.2s ease, box-shadow 0.2s ease; } .cta-form-button:hover { transform: scale(1.02); box-shadow: 0 5px 15px rgba(247, 37, 133, 0.4); color: white; } #form-message { font-weight: bold; } #form-message.alert-success { color: #198754; /* Bootstrap success color */ background-color: rgba(25, 135, 84, 0.2); /* Semi-transparent background */ border-color: rgba(25, 135, 84, 0.3); } #form-message.alert-danger { color: #dc3545; /* Bootstrap danger color */ background-color: rgba(220, 53, 69, 0.2); /* Semi-transparent background */ border-color: rgba(220, 53, 69, 0.3); } /* --- Modal --- */ .modal-content { background-color: var(--card-bg); color: var(--text-light); /* 모달 텍스트 색상 밝게 */ border: 1px solid rgba(0, 207, 232, 0.3); } .modal-header { border-bottom: 1px solid rgba(0, 207, 232, 0.2); } .modal-header .modal-title { color: var(--primary-color); /* 모달 제목 색상 강조 */ } .modal-body p { color: var(--text-light); /* 모달 본문 텍스트 색상 밝게 */ } .modal-body strong { color: var(--primary-color); /* 모달 강조 텍스트 색상 */ } .btn-close { /* Bootstrap 5 btn-close uses background-image filter */ filter: invert(1) grayscale(100%) brightness(200%); /* 아이콘 밝게 */ } .btn-close:focus { box-shadow: 0 0 0 0.25rem rgba(0, 207, 232, 0.3); } /* --- Footer --- */ .footer-section { background-color: var(--dark-bg-lighter); color: rgba(248, 249, 250, 0.7); /* 텍스트 색상 밝게, 불투명도 조정 */ } .footer-section p { margin-bottom: 0.5rem; } .footer-section .social-icon { color: rgba(248, 249, 250, 0.7); /* 소셜 아이콘 색상 밝게, 불투명도 조정 */ font-size: 1.5rem; margin: 0 10px; transition: color 0.3s ease, transform 0.3s ease; } .footer-section .social-icon:hover { color: var(--primary-color); transform: scale(1.2); } /* --- AOS Animations --- */ [data-aos] { transition-property: transform, opacity; } /* --- Responsive Adjustments --- */ @media (max-width: 991.98px) { .hero-title { font-size: 2.5rem; } .hero-subtitle { font-size: 1.1rem; } .navbar-nav { background-color: var(--dark-bg-lighter); border-radius: 8px; padding: 10px; margin-top: 10px; } .nav-link { margin-left: 0; padding: 8px 10px; } } @media (max-width: 767.98px) { .hero-title { font-size: 2rem; } .hero-subtitle { font-size: 1rem; } .section-title { font-size: 2rem; } .feature-card { padding: 20px; } #botApplicationForm { padding: 20px !important; } .cta-hero-button { padding: 12px 25px; font-size: 1.1rem; } }