/* =============================================================================
   H4XX0R TH3M3 - 1337 0V3RL4Y
   ============================================================================= */

/* --- Fonts --- */
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500;600;700&family=Share+Tech+Mono&display=swap');

/* --- CSS Variables --- */
:root {
  --hacker-bg: #0a0a0a;
  --hacker-bg-secondary: #0d1117;
  --hacker-green: #00ff41;
  --hacker-green-dim: #00cc33;
  --hacker-green-glow: rgba(0, 255, 65, 0.4);
  --hacker-cyan: #00e5ff;
  --hacker-red: #ff0033;
  --hacker-yellow: #ffcc00;
  --hacker-text: #b0ffb0;
  --hacker-text-dim: #4a7a4a;
  --hacker-border: #1a3a1a;
  --hacker-panel: rgba(0, 20, 0, 0.85);
  --hacker-font: 'Fira Code', 'Share Tech Mono', 'Courier New', monospace;
}

/* --- Scanline overlay --- */
body::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 9999;
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.04) 0px,
    rgba(0, 0, 0, 0.04) 1px,
    transparent 1px,
    transparent 4px
  );
}


@keyframes flicker {
  0%   { opacity: 0.27861; }
  5%   { opacity: 0.34769; }
  10%  { opacity: 0.23604; }
  15%  { opacity: 0.90626; }
  20%  { opacity: 0.18128; }
  25%  { opacity: 0.83891; }
  30%  { opacity: 0.65583; }
  35%  { opacity: 0.67807; }
  40%  { opacity: 0.26559; }
  45%  { opacity: 0.84693; }
  50%  { opacity: 0.96019; }
  55%  { opacity: 0.08594; }
  60%  { opacity: 0.20313; }
  65%  { opacity: 0.71988; }
  70%  { opacity: 0.53455; }
  75%  { opacity: 0.37288; }
  80%  { opacity: 0.71428; }
  85%  { opacity: 0.70419; }
  90%  { opacity: 0.73460; }
  95%  { opacity: 0.50862; }
  100% { opacity: 0.51; }
}

/* --- Base --- */
html, body {
  background-color: var(--hacker-bg) !important;
  background-image: none !important;
  color: var(--hacker-text) !important;
  font-family: var(--hacker-font) !important;
}

/* --- Preloader --- */
.preloader {
  background-color: var(--hacker-bg) !important;
}

.preloader-spinner {
  border-color: var(--hacker-green) !important;
  border-top-color: transparent !important;
}

/* --- Header / Sidebar --- */
.header,
#site_header,
.header-content {
  background: linear-gradient(
    180deg,
    rgba(5, 30, 10, 0.98) 0%,
    rgba(2, 18, 5, 0.99) 100%
  ) !important;
  border-right: 1px solid rgba(0, 255, 65, 0.25) !important;
  box-shadow:
    2px 0 20px rgba(0, 255, 65, 0.08),
    inset -1px 0 0 rgba(0, 255, 65, 0.1) !important;
  backdrop-filter: blur(10px) !important;
}

/* Decorative top accent line on sidebar */
.header-content::before {
  content: "" !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: 2px !important;
  background: linear-gradient(90deg, transparent, var(--hacker-green), var(--hacker-cyan), transparent) !important;
  opacity: 0.8 !important;
}

.site-title {
  font-family: var(--hacker-font) !important;
  color: var(--hacker-green) !important;
  text-shadow:
    0 0 7px rgba(0, 255, 65, 0.6),
    0 0 20px rgba(0, 255, 65, 0.3),
    0 0 40px rgba(0, 255, 65, 0.1) !important;
  letter-spacing: 2px !important;
}

.site-title span {
  color: var(--hacker-cyan) !important;
  text-shadow:
    0 0 7px rgba(0, 229, 255, 0.6),
    0 0 20px rgba(0, 229, 255, 0.3) !important;
}

/* --- Navigation --- */
.site-main-menu li a {
  font-family: var(--hacker-font) !important;
  color: #a0c8b0 !important;
  text-transform: uppercase !important;
  letter-spacing: 2px !important;
  font-size: 12px !important;
  font-weight: 500 !important;
  padding: 8px 14px !important;
  margin: 0 3px !important;
  transition: all 0.3s ease !important;
  position: relative !important;
  opacity: 1 !important;
  border: 1px solid transparent !important;
  border-bottom: none !important;
}

.site-main-menu li a:after {
  display: none !important;
}

.site-main-menu li a:hover {
  color: var(--hacker-green) !important;
  background-color: rgba(0, 255, 65, 0.06) !important;
  border-color: rgba(0, 255, 65, 0.3) !important;
  text-shadow: 0 0 6px rgba(0, 255, 65, 0.4) !important;
  box-shadow: 0 0 10px rgba(0, 255, 65, 0.08), inset 0 0 10px rgba(0, 255, 65, 0.03) !important;
}

.site-main-menu li.active a,
.site-main-menu li a.active {
  color: #ffffff !important;
  background-color: rgba(0, 255, 65, 0.1) !important;
  border-color: var(--hacker-green) !important;
  text-shadow: 0 0 8px rgba(0, 255, 65, 0.7) !important;
  box-shadow:
    0 0 12px rgba(0, 255, 65, 0.15),
    inset 0 0 12px rgba(0, 255, 65, 0.05) !important;
  animation: nav-pulse 2s ease-in-out infinite !important;
}

@keyframes nav-pulse {
  0%, 100% { box-shadow: 0 0 12px rgba(0, 255, 65, 0.15), inset 0 0 12px rgba(0, 255, 65, 0.05); }
  50% { box-shadow: 0 0 18px rgba(0, 255, 65, 0.25), inset 0 0 15px rgba(0, 255, 65, 0.08); }
}

/* --- Mobile Header --- */
.mobile-header {
  background: linear-gradient(
    90deg,
    rgba(5, 30, 10, 0.98) 0%,
    rgba(2, 18, 5, 0.99) 100%
  ) !important;
  border-bottom: 1px solid rgba(0, 255, 65, 0.3) !important;
  box-shadow: 0 2px 20px rgba(0, 255, 65, 0.1) !important;
}

.mobile-site-title {
  font-family: var(--hacker-font) !important;
  color: var(--hacker-green) !important;
  text-shadow: 0 0 10px rgba(0, 255, 65, 0.5) !important;
  letter-spacing: 2px !important;
}

.menu-toggle i {
  color: var(--hacker-green) !important;
  text-shadow: 0 0 5px rgba(0, 255, 65, 0.5) !important;
}

/* --- Main Content Area --- */
.page,
#main,
.site-main,
.pt-page,
.section-inner,
.pt-page .section-inner,
.page-content,
.custom-page-content,
.custom-page-content .page-content,
.start-page-content .page-content {
  background-color: var(--hacker-bg) !important;
}

/* --- Kill all remaining white backgrounds --- */
.custom-page-content .block,
.custom-page-content .page-content .row,
.custom-page-content .page-content .block,
#contact-form,
#flag-form,
.form-group,
.help-block,
.messages,
.controls,
.contact-info-block,
.download-resume,
.block-title {
  background-color: transparent !important;
}

.form-group .help-block {
  background-color: var(--hacker-red) !important;
  color: var(--hacker-bg) !important;
  font-family: var(--hacker-font) !important;
}

.form-group-with-icon.form-group-focus i {
  color: var(--hacker-green) !important;
}

/* --- Page Headers --- */
.page-header {
  border-bottom: 1px solid rgba(0, 255, 65, 0.2) !important;
}

.custom-page-content .page-header,
.custom-page-content .page-header.color-1,
.custom-page-content .page-header.color-2,
.custom-page-content .page-header.color-3,
.custom-page-content .page-header.color-4 {
  background-color: rgba(0, 20, 5, 0.95) !important;
  background-image: none !important;
  border: 1px solid rgba(0, 255, 65, 0.15) !important;
  border-bottom: 2px solid rgba(0, 255, 65, 0.3) !important;
  position: relative !important;
  overflow: hidden !important;
  margin-top: 40px !important;
}

.custom-page-content .page-header::before {
  content: "// ----------" !important;
  position: absolute !important;
  top: 12px !important;
  left: 20px !important;
  font-family: var(--hacker-font) !important;
  font-size: 10px !important;
  color: rgba(0, 255, 65, 0.2) !important;
  letter-spacing: 2px !important;
}

.custom-page-content .page-header::after {
  content: "" !important;
  position: absolute !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: 1px !important;
  background: linear-gradient(90deg, transparent, var(--hacker-green), var(--hacker-cyan), var(--hacker-green), transparent) !important;
  opacity: 0.5 !important;
}

.page-header h2,
.custom-page-content .page-header h2,
.custom-page-content .page-header.color-1 h2,
.custom-page-content .page-header.color-2 h2,
.custom-page-content .page-header.color-3 h2,
.custom-page-content .page-header.color-4 h2 {
  font-family: var(--hacker-font) !important;
  color: var(--hacker-green) !important;
  text-shadow:
    0 0 7px rgba(0, 255, 65, 0.6),
    0 0 20px rgba(0, 255, 65, 0.25) !important;
  letter-spacing: 5px !important;
  text-transform: uppercase !important;
  font-size: 28px !important;
  position: relative !important;
}

/* --- Headings --- */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--hacker-font) !important;
  color: var(--hacker-green) !important;
}

h1 {
  text-shadow: 0 0 15px var(--hacker-green-glow), 0 0 30px rgba(0, 255, 65, 0.2) !important;
}

.small-text {
  color: var(--hacker-cyan) !important;
}

/* --- Text Rotation / Subtitle --- */
.sp-subtitle {
  font-family: var(--hacker-font) !important;
  color: var(--hacker-cyan) !important;
  text-shadow: 0 0 8px rgba(0, 229, 255, 0.4) !important;
  letter-spacing: 2px !important;
}

/* --- Paragraphs & General Text --- */
p, li, span, div {
  color: var(--hacker-text) !important;
}

a {
  color: var(--hacker-cyan) !important;
  text-decoration: none !important;
  transition: all 0.3s ease !important;
}

a:hover {
  color: var(--hacker-green) !important;
  text-shadow: 0 0 8px var(--hacker-green-glow) !important;
}

/* --- Block Titles --- */
.block-title h3 {
  color: var(--hacker-green) !important;
  border-bottom: 1px solid var(--hacker-border) !important;
  letter-spacing: 2px !important;
}

.block-title h3 span {
  color: var(--hacker-cyan) !important;
}

/* --- Info List --- */
.info-list li .title {
  color: var(--hacker-text-dim) !important;
  font-family: var(--hacker-font) !important;
  text-transform: uppercase !important;
  letter-spacing: 1px !important;
  font-size: 11px !important;
}

.info-list li .value {
  color: var(--hacker-green) !important;
  font-family: var(--hacker-font) !important;
}

.info-list li .value a {
  color: var(--hacker-cyan) !important;
}

/* --- Timeline --- */
.timeline {
  border-left-color: rgba(0, 255, 65, 0.3) !important;
}

.timeline-item {
  background-color: rgba(0, 20, 5, 0.8) !important;
  border: 1px solid rgba(0, 255, 65, 0.12) !important;
  border-left: 2px solid var(--hacker-green) !important;
  box-shadow: none !important;
  position: relative !important;
}

.timeline-item:hover {
  background-color: rgba(0, 30, 8, 0.9) !important;
  border-color: rgba(0, 255, 65, 0.25) !important;
  box-shadow: 0 0 12px rgba(0, 255, 65, 0.06) !important;
}

.timeline-item::before {
  background-color: var(--hacker-green) !important;
  box-shadow: 0 0 8px var(--hacker-green-glow) !important;
}

.timeline-item::after {
  border-color: rgba(0, 255, 65, 0.3) !important;
  background-color: var(--hacker-bg) !important;
}

.timeline-item h4.item-title {
  color: var(--hacker-green) !important;
  font-family: var(--hacker-font) !important;
}

.timeline-item .item-period {
  color: var(--hacker-green-dim) !important;
  font-family: var(--hacker-font) !important;
}

.timeline-item .item-small {
  color: #7a9a7a !important;
}

.timeline-item .item-description {
  color: var(--hacker-text) !important;
}

/* --- Skill Bars --- */
.skill-container {
  background-color: var(--hacker-bg-secondary) !important;
  border: 1px solid var(--hacker-border) !important;
  border-radius: 0 !important;
}

.skill-container [class^="skill-percentage"] {
  background: linear-gradient(90deg, var(--hacker-green-dim), var(--hacker-green)) !important;
  box-shadow: 0 0 10px var(--hacker-green-glow), inset 0 0 5px rgba(0, 255, 65, 0.3) !important;
  border-radius: 0 !important;
}

.skills-info h4 {
  color: var(--hacker-text) !important;
  font-family: var(--hacker-font) !important;
  letter-spacing: 1px !important;
  font-size: 12px !important;
  text-transform: uppercase !important;
}

/* --- Buttons --- */
.btn,
.btn-secondary,
.button,
.btn-send,
input[type="submit"] {
  font-family: var(--hacker-font) !important;
  background-color: transparent !important;
  color: var(--hacker-green) !important;
  border: 1px solid var(--hacker-green) !important;
  border-radius: 0 !important;
  text-transform: uppercase !important;
  letter-spacing: 3px !important;
  font-size: 11px !important;
  transition: all 0.3s ease !important;
  text-shadow: 0 0 5px var(--hacker-green-glow) !important;
}

.btn:hover,
.btn-secondary:hover,
.button:hover,
.btn-send:hover,
input[type="submit"]:hover {
  background-color: var(--hacker-green) !important;
  color: var(--hacker-bg) !important;
  box-shadow: 0 0 20px var(--hacker-green-glow), 0 0 40px rgba(0, 255, 65, 0.2) !important;
  text-shadow: none !important;
}

/* --- Form Inputs --- */
.form-control {
  font-family: var(--hacker-font) !important;
  background-color: var(--hacker-bg-secondary) !important;
  color: var(--hacker-green) !important;
  border: none !important;
  border-bottom: 1px solid var(--hacker-border) !important;
  border-radius: 0 !important;
}

.form-control:focus {
  border-bottom-color: var(--hacker-green) !important;
  box-shadow: 0 1px 0 0 var(--hacker-green) !important;
}

.form-control-border {
  background-color: var(--hacker-green) !important;
}

.form-group-with-icon i {
  color: var(--hacker-green) !important;
  background-color: rgba(0, 20, 5, 0.8) !important;
  border-bottom: 1px solid rgba(0, 255, 65, 0.2) !important;
}

.contact-info-block .ci-icon {
  background-color: rgba(0, 255, 65, 0.08) !important;
  border: 1px solid rgba(0, 255, 65, 0.3) !important;
}

.contact-info-block .ci-icon i,
.contact-info-block i {
  color: var(--hacker-green) !important;
  background-color: transparent !important;
  border: none !important;
}

.form-group-with-icon label {
  color: var(--hacker-text-dim) !important;
  font-family: var(--hacker-font) !important;
}

/* --- Social Links --- */
.social-links a {
  color: var(--hacker-text-dim) !important;
  border: 1px solid var(--hacker-border) !important;
  transition: all 0.3s ease !important;
}

.social-links a:hover {
  color: var(--hacker-green) !important;
  border-color: var(--hacker-green) !important;
  box-shadow: 0 0 10px var(--hacker-green-glow) !important;
  text-shadow: 0 0 5px var(--hacker-green-glow) !important;
}

/* --- Contact Info --- */
.contact-info-block .ci-icon i {
  color: var(--hacker-green) !important;
}

.contact-info-block .ci-text h5 {
  color: var(--hacker-text) !important;
}

.contact-info-block .ci-text h5 a {
  color: var(--hacker-cyan) !important;
}

/* --- Photo / Avatar --- */
.photo img {
  border: 2px solid var(--hacker-green) !important;
  box-shadow: 0 0 20px var(--hacker-green-glow), 0 0 40px rgba(0, 255, 65, 0.15) !important;
  filter: saturate(0.3) brightness(0.9) contrast(1.1) !important;
  transition: all 0.5s ease !important;
}

.photo img:hover {
  filter: saturate(0.5) brightness(1) sepia(0.2) hue-rotate(80deg) !important;
  box-shadow: 0 0 30px var(--hacker-green-glow), 0 0 60px rgba(0, 255, 65, 0.25) !important;
}

/* --- Certifications --- */
.page-content.center img {
  border: none !important;
  box-shadow: none !important;
  filter: drop-shadow(0 0 8px rgba(0, 255, 65, 0.15)) !important;
  transition: all 0.3s ease !important;
}

.page-content.center img:hover {
  filter: drop-shadow(0 0 15px rgba(0, 255, 65, 0.4)) drop-shadow(0 0 30px rgba(0, 255, 65, 0.15)) !important;
}

/* CPTS logo - tight glow so outer text stays readable */
.page-content.center img[alt="Hack The Box CPTS"] {
  filter: drop-shadow(0 0 3px rgba(0, 255, 65, 0.2)) !important;
}

.page-content.center img[alt="Hack The Box CPTS"]:hover {
  filter: drop-shadow(0 0 5px rgba(0, 255, 65, 0.3)) !important;
}

/* --- Footer --- */
body > footer {
  background-color: var(--hacker-bg) !important;
  z-index: 100 !important;
  border-top: 1px solid rgba(0, 255, 65, 0.15) !important;
}

.copyrights {
  font-family: var(--hacker-font) !important;
  color: var(--hacker-text-dim) !important;
  letter-spacing: 1px !important;
  font-size: 11px !important;
}

/* --- Scrollbar --- */
::-webkit-scrollbar {
  width: 6px;
  background-color: var(--hacker-bg);
}

::-webkit-scrollbar-thumb {
  background-color: var(--hacker-green-dim);
  box-shadow: 0 0 5px var(--hacker-green-glow);
}

::-webkit-scrollbar-track {
  background-color: var(--hacker-bg-secondary);
}


/* --- Selection --- */
::selection {
  background-color: var(--hacker-green) !important;
  color: var(--hacker-bg) !important;
}

/* --- Glitch effect on main title --- */
@keyframes glitch {
  0% {
    text-shadow: 0.05em 0 0 rgba(255, 0, 0, 0.75),
                 -0.025em -0.05em 0 rgba(0, 255, 0, 0.75),
                 0.025em 0.05em 0 rgba(0, 0, 255, 0.75);
  }
  14% {
    text-shadow: 0.05em 0 0 rgba(255, 0, 0, 0.75),
                 -0.025em -0.05em 0 rgba(0, 255, 0, 0.75),
                 0.025em 0.05em 0 rgba(0, 0, 255, 0.75);
  }
  15% {
    text-shadow: -0.05em -0.025em 0 rgba(255, 0, 0, 0.75),
                 0.025em 0.025em 0 rgba(0, 255, 0, 0.75),
                 -0.05em -0.05em 0 rgba(0, 0, 255, 0.75);
  }
  49% {
    text-shadow: -0.05em -0.025em 0 rgba(255, 0, 0, 0.75),
                 0.025em 0.025em 0 rgba(0, 255, 0, 0.75),
                 -0.05em -0.05em 0 rgba(0, 0, 255, 0.75);
  }
  50% {
    text-shadow: 0.025em 0.05em 0 rgba(255, 0, 0, 0.75),
                 0.05em 0 0 rgba(0, 255, 0, 0.75),
                 0 -0.05em 0 rgba(0, 0, 255, 0.75);
  }
  99% {
    text-shadow: 0.025em 0.05em 0 rgba(255, 0, 0, 0.75),
                 0.05em 0 0 rgba(0, 255, 0, 0.75),
                 0 -0.05em 0 rgba(0, 0, 255, 0.75);
  }
  100% {
    text-shadow: -0.025em 0 0 rgba(255, 0, 0, 0.75),
                 -0.025em -0.025em 0 rgba(0, 255, 0, 0.75),
                 -0.025em -0.05em 0 rgba(0, 0, 255, 0.75);
  }
}

.title-block h1 {
  animation: glitch 500ms infinite !important;
}

/* --- Pulsing cursor after nav items --- */
.site-main-menu li a.active::after {
  content: "_" !important;
  animation: blink 1s step-end infinite !important;
  color: var(--hacker-green) !important;
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* --- Home Page Hero --- */
.start-page-content .page-header {
  background-color: var(--hacker-bg-secondary) !important;
  background-image: none !important;
  border: 1px solid rgba(0, 255, 65, 0.12) !important;
  border-bottom: 2px solid rgba(0, 255, 65, 0.25) !important;
  position: relative !important;
  overflow: hidden !important;
  margin-top: 40px !important;
}

.start-page-content .page-header::before {
  content: "" !important;
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(0, 255, 65, 0.03) 0%, transparent 60%),
    radial-gradient(ellipse at 80% 20%, rgba(0, 229, 255, 0.03) 0%, transparent 50%) !important;
  pointer-events: none !important;
}

.start-page-content .page-header::after {
  content: "" !important;
  position: absolute !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: 1px !important;
  background: linear-gradient(90deg, transparent, var(--hacker-green), var(--hacker-cyan), var(--hacker-green), transparent) !important;
  opacity: 0.6 !important;
}

.start-page-content .page-header .photo {
  border: 2px solid rgba(0, 255, 65, 0.4) !important;
  box-shadow: 0 0 20px rgba(0, 255, 65, 0.15), 0 0 40px rgba(0, 255, 65, 0.05) !important;
  background-color: var(--hacker-bg) !important;
}

.start-page-content .page-header .title-block h1 {
  color: var(--hacker-green) !important;
  text-shadow:
    0 0 7px rgba(0, 255, 65, 0.6),
    0 0 20px rgba(0, 255, 65, 0.25) !important;
}

.start-page-content .page-header .title-block .sp-subtitle {
  color: var(--hacker-cyan) !important;
  text-shadow: 0 0 8px rgba(0, 229, 255, 0.4) !important;
}

.start-page-content .social-links a {
  background-color: transparent !important;
  border: 1px solid rgba(0, 255, 65, 0.3) !important;
  color: var(--hacker-green) !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  transition: all 0.25s ease !important;
}

.start-page-content .social-links a:hover {
  border-color: var(--hacker-green) !important;
  box-shadow: 0 0 12px rgba(0, 255, 65, 0.3) !important;
  background-color: rgba(0, 255, 65, 0.05) !important;
}

.start-page-content .social-links a i {
  color: var(--hacker-green) !important;
}

/* --- Binary background removed, now handled via JS --- */

/* --- Custom Cursor --- */
html.hx-hide-cursor,
html.hx-hide-cursor *,
html.hx-hide-cursor *::before,
html.hx-hide-cursor *::after {
  cursor: none !important;
}

/* --- Recaptcha styling --- */
.g-recaptcha {
  filter: invert(0.9) hue-rotate(180deg) !important;
}
