/* assets/css/inline.css
   Extracted styles from index.html + small utility classes to replace inline styles.
   Keep this file human-readable; minify during your production build if desired.
*/

/* --- Extracted dropdown styles (from inline <style> in index.html) --- */
.dropdown-menu {
  min-width: 180px;
  max-width: 250px;
}

@media (max-width: 991px) {
  .navbar-nav .dropdown-menu {
    position: static !important;
    transform: none !important;
    border: none;
    box-shadow: none;
    padding-left: 1rem;
  }
}

@media (min-width: 992px) {
  .dropdown-menu-end {
    right: 0;
    left: auto;
  }
}

/* --- Small utility classes to replace common inline styles --- */
.logo-icon {
  width: 220px;
  height: auto;
}

/* Increase header logo for larger screens but keep responsive */
.header .logo-icon {
  max-height: 84px; /* increased from previous max */
  width: auto;
}

@media (max-width: 991px) {
  .header .logo-icon { max-height: 64px; }
}

.section-intro--lead {
  font-size: 1.15rem;
  line-height: 1.9;
  color: #2d3748;
  font-weight: 500;
}

.icon-box--small {
  width: 50px;
  height: 50px;
  flex-shrink: 0;
}

.btn-gradient {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  border: none;
  padding: 12px 28px;
  color: #fff;
}

.card-transition {
  transition: transform 0.3s ease;
}

.organizer-logo--max {
  max-height: 72px;
}

.org-logo-filter {
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.15));
}

.rounded-10 {
  border-radius: 10px;
}

/* Override: ensure hero carousel background images are fully visible */
/* Using a specific selector to beat theme.css .hero-block rules */
.hero-block .hero-carousel .carousel-item,
.hero-carousel .carousel-item-1,
.hero-carousel .carousel-item-2,
.hero-carousel .carousel-item-3 {
  background-position: center center !important;
  background-repeat: no-repeat !important;
  background-size: cover !important; /* fill the area edge-to-edge (may crop) */
  width: 100% !important;
  /* Keep the carousel the same height as the hero block so the image has space to show */
  min-height: 480px !important;
}

/* On very tall screens prefer a slightly larger hero area */
@media (min-height: 900px) {
  .hero-block .hero-carousel .carousel-item {
    min-height: 620px !important;
  }
}

/* Small screens: reduce min-height so content doesn't push too far down */
@media (max-width: 575px) {
  .hero-block .hero-carousel .carousel-item {
    min-height: 360px !important;
  }
}

/* Sponsors logos layout - normalize sizes and alignment */
.logos {
  display: flex; /* container uses flex to allow gap spacing to work reliably */
  flex-wrap: wrap;
  gap: 1.5rem;
  align-items: stretch;
  justify-content: center;
}

.logo-item {
  /* Keep the existing grid classes (col-*) while ensuring consistent internal layout */
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem 0.5rem;
  box-sizing: border-box;
  min-height: 90px; /* ensures short logos don't shrink the row */
}

.logo-item img {
  max-height: 64px; /* primary constraint for height uniformity */
  max-width: 100%;
  width: auto;
  height: auto;
  object-fit: contain; /* preserve aspect ratio without cropping */
  display: block;
  margin: 0 auto;
  transition: transform 0.15s ease, opacity 0.15s ease;
}

/* Slightly larger logos on medium+ screens */
@media (min-width: 768px) {
  .logo-item {
    min-height: 110px;
    padding: 0.9rem 0.75rem;
  }
  .logo-item img {
    max-height: 80px;
  }
}

@media (min-width: 1200px) {
  .logo-item {
    min-height: 120px;
  }
  .logo-item img {
    max-height: 92px;
  }
}

/* Optional subtle hover effect to indicate interactivity */
.logo-item:hover img {
  transform: translateY(-3px);
}

/* Attendees section styles */
#attendees-section { padding: 2.5rem 0; }
.attendees-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1rem;
  align-items: start;
}
.attendee {
  background: #fff;
  padding: 1rem;
  box-sizing: border-box;
  text-align: left;
}
.attendee-avatar {
  width: 100%;
  height: 160px;
  object-fit: cover;
  display: block;
  border-radius: 8px;
}
@media (max-width: 575px) {
  .attendee-avatar { height: 140px; }
}
.attendee h5 { font-size: 1.05rem; margin-bottom: 0.25rem; }
.attendee .small { font-size: 0.85rem; }

/* small utility: center loader */
#attendees-loader { color: #6b7280; }

/* Attendees preview compact styles */
.attendee-preview {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0.5rem;
}
.attendee-avatar-preview {
  width: 88px;
  height: 88px;
  object-fit: cover;
  display: block;
  border-radius: 50%;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.06);
}
.attendee-more {
  width: 88px;
  height: 88px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.2rem;
}
@media (max-width: 575px) {
  .attendee-avatar-preview, .attendee-more { width: 72px; height: 72px; }
}

.attendee-preview-name {
  font-size: 0.95rem;
  margin-bottom: 0.15rem;
}
.attendee-preview-meta {
  font-size: 0.82rem;
  color: #6b7280; /* muted */
}

/* make preview grid show items in a single row on large screens */
#attendees-section .attendees-grid {
  align-items: center;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
}

@media (max-width: 767px) {
  #attendees-section .attendees-grid { grid-auto-flow: row; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
}

/* Ensure modal body grid uses the same grid behavior */
#attendees-modal .attendees-grid { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }

/* Make header/navbar opaque (non-transparent) and add subtle separation */
.header, .header.fixed-top, .header.transparent, .header.fixed-top.transparent {
  background-color: #ffffff !important; /* solid white header */
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06) !important;
  border-bottom: 1px solid rgba(0,0,0,0.05) !important;
  transition: background-color 150ms ease, box-shadow 150ms ease;
  z-index: 1030; /* keep header above content */
}

/* Ensure nav links are readable on the white background */
.header .main-nav .nav-link {
  color: #1a202c !important;
}
/* Ensure toggler icon or any icon text remains visible */
.header .main-nav .navbar-toggler-icon,
.header .main-nav .navbar-toggler {
  color: #1a202c !important;
  border-color: rgba(26,32,44,0.08) !important;
}

/* Tweak toggler icon visibility for Bootstrap that uses background-image */
.header .navbar-toggler-icon {
  background-image: none !important; /* prefer default icon styling; if theme provides an image, this keeps it visible */
}

/* Space for fixed header on standalone pages (ensures page headings aren't hidden under .header.fixed-top) */
.page-with-fixed-header {
  /* generous default to accommodate larger header logo + safe gap */
  padding-top: 110px !important;
}
/* slightly smaller offsets for tablet and mobile */
@media (max-width: 991px) {
  .page-with-fixed-header {
    padding-top: 100px !important;
  }
}
@media (max-width: 575px) {
  .page-with-fixed-header {
    padding-top: 88px !important;
  }
}
/* Ensure headings inside these pages leave space when navigated to via anchors */
.page-with-fixed-header h1,
.page-with-fixed-header h2,
.page-with-fixed-header h3 {
  scroll-margin-top: 120px; /* makes in-page anchors land below the fixed header */
}

/* ===== Professional typography and visual polish (Cyber event theme) ===== */
:root {
  --brand-primary: #667eea;
  --brand-accent: #764ba2;
  --brand-dark: #0f1724;
  --glass-bg: rgba(6, 12, 24, 0.55);
  --glass-border: rgba(255,255,255,0.06);
}

/* Typography */
body {
  font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !important;
  color: var(--brand-dark) !important;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, .h1, h2, .h2, h3, .h3, h4, .h4 {
  font-family: 'Montserrat', 'Inter', sans-serif !important;
  color: var(--brand-dark) !important;
  letter-spacing: -0.5px;
}

/* Hero: glass panel for the text, subtle cyber background overlay */
.hero-block {
  position: relative;
  overflow: hidden;
  /* Ensure hero area is tall enough for a strong visual presence */
  min-height: 560px;
  display: flex;
  align-items: center;
}

.hero-block::after {
  /* subtle cyber grid overlay (no external asset) */
  content: '';
  position: absolute;
  inset: 0;
  background-image: linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px), linear-gradient(180deg, rgba(255,255,255,0.02) 1px, transparent 1px);
  background-size: 46px 46px, 46px 46px;
  opacity: 0.18;
  pointer-events: none;
  mix-blend-mode: overlay;
  z-index: 5;
}

.hero-text-block {
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  padding: 2rem 2.25rem;
  border-radius: 12px;
  box-shadow: 0 12px 40px rgba(3,7,18,0.45);
  color: #fff !important;
  max-width: 760px !important; /* slightly wider for longer headings */
}

.hero-text-block h1.hero-heading,
.hero-text-block .hero-heading.h1 {
  font-size: clamp(2.25rem, 6vw, 4.25rem) !important;
  line-height: 1.02 !important;
  margin-bottom: 0.35rem !important;
  font-weight: 800 !important;
  color: #fff !important;
  text-shadow: none !important;
}

.hero-text-block .hero-meta {
  color: rgba(255,255,255,0.95) !important;
  font-size: 1.1rem !important;
  margin-bottom: 0.6rem !important;
}

.hero-text-block .hero-intro {
  color: rgba(255,255,255,0.92) !important;
  font-size: 1.25rem !important;
  margin-bottom: 1rem !important;
}

/* CTA button: pill shape, soft gradient, subtle elevation */
.hero-text-block .hero-cta .btn {
  background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent)) !important;
  border: none !important;
  padding: 12px 28px !important;
  border-radius: 999px !important;
  font-weight: 700 !important;
  color: #fff !important;
  box-shadow: 0 8px 28px rgba(102, 126, 234, 0.18) !important;
  transition: transform 220ms ease, box-shadow 220ms ease, opacity 160ms ease !important;
}
.hero-text-block .hero-cta .btn:hover,
.hero-text-block .hero-cta .btn:focus {
  transform: translateY(-3px) scale(1.02) !important;
  box-shadow: 0 18px 40px rgba(102,126,234,0.2) !important;
  opacity: 0.98 !important;
}

/* Center hero content vertically and style credibility row */
.hero-block .container {
  z-index: 20; /* sit above overlay */
  display: flex;
  align-items: center; /* vertical centering */
  height: 100%;
}

/* Ensure hero-text-block centers inside the container */
.hero-text-block {
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
  transform: translateZ(0);
}

/* Credibility row: shield icon and organizer logos */
.hero-cred {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
}

.hero-shield {
  font-size: 1.4rem;
  color: rgba(255,255,255,0.95);
  background: rgba(255,255,255,0.06);
  padding: 8px;
  border-radius: 8px;
  width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 18px rgba(3,7,18,0.45);
}

.hero-organizers {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.hero-organizer-logo {
  height: 48px; /* increased so organizer icons in hero are more visible */
  width: auto;
  display: block;
  filter: brightness(1.05) contrast(1.02);
  opacity: 1;
  border-radius: 6px;
  background: rgba(255,255,255,0.02);
  padding: 4px 6px;
  box-shadow: 0 6px 18px rgba(3,7,18,0.25);
}

@media (max-width: 767px) {
  .hero-block .container { align-items: center; padding-top: 18px; padding-bottom: 18px; }
  .hero-cred { gap: 0.5rem; }
  .hero-organizer-logo { height: 40px; padding: 3px 4px; }
}

/* Hero credibility text styling (replaces logos */
.hero-cred-label {
  display: inline-block;
  font-size: 0.78rem;
  color: rgba(255,255,255,0.75);
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-right: 0.6rem;
}
.hero-cred-names {
  display: inline-block;
  font-size: 0.95rem;
  color: rgba(255,255,255,0.95);
  font-weight: 600;
}

/* Compact organizer logos for hero (replaces long organizer names) */
.hero-cred-logos {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  margin-left: 0.5rem; /* space after label */
}
.hero-cred-logos img {
  height: 36px; /* slightly larger so logos are readable */
  width: auto;
  display: inline-block;
  vertical-align: middle;
  filter: brightness(1) saturate(0.02) contrast(1.05);
  opacity: 0.95;
}
@media (min-width: 992px) {
  .hero-cred-logos img { height: 44px; }
}
@media (max-width: 575px) {
  .hero-cred-label { display: block; margin-bottom: 0.35rem; }
  .hero-cred-logos { margin-left: 0; }
}

/* Improve section headings */
.section-heading {
  font-size: 1.9rem !important;
  color: var(--brand-dark) !important;
  letter-spacing: -0.6px;
}

.section-intro,
.section-intro--lead {
  color: #415060 !important;
}

/* Cards: refined shadows, softened corners */
.card {
  border-radius: 12px !important;
  box-shadow: 0 8px 28px rgba(15,23,42,0.06) !important;
  overflow: visible !important;
}
.card .card-header, .card .card-body {
  border-radius: 12px !important;
}

/* Organizer logos: clean, with subtle drop shadow */
.organizer-logo {
  filter: none !important;
  max-height: 96px !important; /* increased so organizer logos appear larger */
}

/* Sponsors logos: neutralize harsh contrast */
.logo-item img {
  filter: grayscale(0.06) contrast(0.98) brightness(1.02);
  transition: transform 160ms ease, filter 160ms ease;
  /* larger default constraint so sponsor logos are more visible */
  max-height: 80px; /* base */
}
.logo-item img:hover {
  transform: translateY(-4px) scale(1.02);
  filter: grayscale(0) contrast(1) brightness(1.03);
}

/* Responsive increases for sponsor logos */
@media (min-width: 768px) {
  .logo-item img { max-height: 100px; }
}
@media (min-width: 1200px) {
  .logo-item img { max-height: 120px; }
}

/* Buttons across site: consistent primary look */
.btn-primary {
  background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent)) !important;
  border: none !important;
  color: #fff !important;
  box-shadow: 0 10px 30px rgba(102,126,234,0.12) !important;
}
.btn-primary:hover, .btn-primary:focus {
  transform: translateY(-2px) !important;
  box-shadow: 0 18px 46px rgba(102,126,234,0.16) !important;
}

/* Footer and other small elements: muted */
.footer, .footer a, .footer p {
  /* make footer text fully white for better contrast */
  color: #ffffff !important;
}

/* Accessibility: ensure sufficient contrast for hero text */
.hero-text-block, .hero-text-block * {
  color: #fff !important;
}

/* Small screens: reduce hero padding & increase readability */
@media (max-width: 767px) {
  .hero-block { min-height: 420px; }
  .hero-text-block { padding: 1.25rem 1.1rem; }
  .hero-text-block h1.hero-heading { font-size: 2.1rem !important; }
  .hero-text-block .hero-intro { font-size: 1.05rem !important; }
}

/* Footer: force columns to align to top so headings line up */
.footer .row {
  align-items: flex-start; /* ensure left/center/right columns start at same vertical position */
}

/* Make footer columns behave as vertical stacks so their children align predictably */
.footer .col-md-4, .footer .col-12.col-md-4 {
  display: flex;
  flex-direction: column;
}

/* Ensure content inside each column starts at the top with consistent spacing */
.footer .footer-brand,
.footer .card,
.footer .footer-links {
  margin-top: 0;
}

/* Contact card: don't auto-center — keep it at the top of its column */
.footer .card {
  align-self: flex-start;
  /* keep visual style but tighten spacing slightly */
  margin-bottom: 0.5rem;
  /* override bootstrap paddings applied via classes (p-3 / p-md-4) for consistent footer alignment */
  padding: 1rem !important; /* modest padding restored for balance */
}

/* Ensure the card-body doesn't add extra vertical offset */
.footer .card .card-body { padding: 0 !important; }

/* Make direct children of footer columns start at top (remove accidental top margins) */
.footer .col-md-4 > * {
  margin-top: 0 !important;
}

/* Ensure footer-links sit at the top of their column and don't get pushed down */
.footer .footer-links {
  align-self: flex-start;
  margin-top: 0;
  padding-top: 0;
}

/* Ensure list items in quick links have consistent spacing */
.footer .footer-links ul li { margin-bottom: 0.5rem; }

/* Make footer logo more visible on dark/purple backgrounds:
   Use a white panel so PNGs with transparent areas show clearly. Add subtle border and refined shadow.
*/
.footer .footer-brand a img,
.footer .footer-brand .logo-icon {
  max-height: 56px;
  display: inline-block;
  background: #ffffff; /* white panel for contrast */
  padding: 6px 8px;
  border-radius: 8px;
  border: 1px solid rgba(0,0,0,0.06);
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.12);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

/* Reduce logo padding on very small screens to avoid overflow */
@media (max-width: 575px) {
  .footer .footer-brand a img,
  .footer .footer-brand .logo-icon { padding: 4px 6px; max-height: 48px; }
}

/* Make sure footer headings are consistent */
.footer h5, .footer h6 { margin-top: 0; }

/* Disable common animation utility classes (global override) */
.fade-in-up,
.fadeInUp,
.bounce-in,
.bounceIn,
.pulse-3d,
.pulse3D,
.float-animation,
.float-reverse-animation,
.rotate-3d,
.gradient-shift,
.gradientShift,
.shimmer-effect,
.rotateGlow {
  animation: none !important;
  transition: none !important;
}

/* Prevent JS-applied glow/box-shadow by forcing none at the CSS level */
.section {
  box-shadow: none !important;
}

/* Disable hero CTA hover shadows if present */
.hero-text-block .hero-cta .btn,
.hero-text-block .hero-cta .btn:hover {
  box-shadow: none !important;
  transform: none !important;
}

/* Safety: remove text-shadow on any headings inside hero or sections */
.hero-text-block h1,
.hero-text-block h2,
.hero-text-block h3,
.section-heading,
.section {
  text-shadow: none !important;
}

/* Keep attendees loader text centered (preserve existing intent) */
#attendees-loader { text-align: center; }

/* ===== Flying badge popup (appears on home page load) ===== */
#badge-fly {
  display: none; /* controlled via JS */
  position: fixed;
  right: 20px;
  bottom: 28px;
  z-index: 2000;
  min-width: 320px;
  max-width: 420px;
  background: linear-gradient(180deg, rgba(255,255,255,0.98), #ffffff);
  border-radius: 14px;
  box-shadow: 0 18px 50px rgba(3,7,18,0.25);
  border: 1px solid rgba(10,20,40,0.06);
  overflow: visible;
  align-items: center;
  justify-content: center;
  padding: 10px;
  animation: badge-fly-in 600ms cubic-bezier(.2,.9,.2,1) both;
  -webkit-font-smoothing: antialiased;
}

#badge-fly[aria-hidden="true"] {
  opacity: 0;
  transform: translateY(18px) scale(0.98);
}

@keyframes badge-fly-in {
  from {
    opacity: 0;
    transform: translateY(24px) translateX(16px) scale(0.96);
  }
  60% {
    transform: translateY(-8px) translateX(0) scale(1.02);
  }
  to {
    opacity: 1;
    transform: translateY(0) translateX(0) scale(1);
  }
}

.badge-fly-content {
  display: flex;
  gap: 12px;
  align-items: center;
  padding: 8px 10px;
}

.badge-fly-icon {
  width: 48px;
  height: 48px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--brand-primary), var(--brand-accent));
  color: #fff;
  font-size: 20px;
  flex-shrink: 0;
}

.badge-fly-text { flex: 1; min-width: 0; }
.badge-fly-title { font-weight: 700; color: #0f1724; font-size: 1rem; }
.badge-fly-sub { font-size: 0.85rem; color: #475569; }

.badge-fly-cta { margin-left: 8px; }
.badge-fly-link { text-decoration: none; color: inherit; display: block; }

/* Close button */
.badge-fly-close {
  position: absolute;
  top: -8px;
  right: -8px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: none;
  background: #ffffff;
  box-shadow: 0 6px 18px rgba(3,7,18,0.12);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  color: #475569;
}
.badge-fly-close:focus { outline: 3px solid rgba(102,126,234,0.18); }

/* Small screens: make it less intrusive */
@media (max-width: 575px) {
  #badge-fly { right: 12px; left: 12px; bottom: 16px; min-width: auto; max-width: calc(100% - 24px); }
  .badge-fly-content { gap: 10px; }
  .badge-fly-icon { width: 44px; height: 44px; }
  .badge-fly-title { font-size: 0.95rem; }
}

/* Visually-hidden helper for a11y should we need it */
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); border: 0; }

@media (max-width: 991px) {
  /* Keep the header solid white on mobile (user requested) and preserve the desktop white header look */
  .header, .header.fixed-top, .header.transparent, .header.fixed-top.transparent {
    background-color: #ffffff !important;
    box-shadow: 0 2px 12px rgba(15, 23, 42, 0.06) !important;
    border-bottom: 1px solid rgba(0,0,0,0.05) !important;
  }

  /* Nav links should remain the dark color used on desktop for readability */
  .header .main-nav .nav-link {
    color: #1a202c !important;
  }

  /* Collapsed mobile menu: match header (white) and add subtle elevation so it sits above hero images */
  .navbar-collapse.collapse {
    background: #ffffff; /* white panel */
    padding: 0.5rem 1rem;
    margin-top: 0.5rem;
    border-radius: 6px;
    box-shadow: 0 8px 20px rgba(15,23,42,0.06);
  }

  /* Dropdowns inside the mobile menu should match the white panel */
  .navbar-nav .dropdown-menu {
    background: #ffffff !important;
    box-shadow: 0 8px 20px rgba(15,23,42,0.06) !important;
    padding-left: 0 !important;
  }

  /* Make the toggler and its icon dark so it's visible on the white header */
  .header .main-nav .navbar-toggler,
  .header .main-nav .navbar-toggler-icon {
    color: #1a202c !important;
    border-color: rgba(26,32,44,0.08) !important;
  }

  /* Use the SVG which follows currentColor (defined on .header) so the icon adapts to the toggler color */
  .navbar-toggler-icon,
  .header .navbar-toggler-icon {
    background-image: var(--bs-navbar-toggler-icon-bg) !important;
    filter: none !important;
  }
}
