:root {
  /*Colours*/
  color-scheme: dark;
  --text-color: #D1D8ED;
  --footer-color: #6E7294;
  --brand-color: #FFC25C;
  --med-bg: #252D4D;
  --dark-bg: #202436;
  --extra-dark-bg: #171829;
  --card-bg: #BECAED0F;
  --card-bg-subtle: #242b42;
  --hover-card-bg: #3b4469;
  --subtle-card-header: #BECAED26;
  --subtle-card-active: #BECAED40;
  
  /* Fonts */
  --hero-font: 'Quicksand', sans-serif;
  --general-font: 'Manrope', sans-serif;

  /*Font Sizing */
  --font-xs: clamp(0.85rem, 0.5vw + 0.6rem, 0.95rem);  /* small labels / captions */
  --font-sm: clamp(1rem, 0.6vw + 0.7rem, 1.1rem);      /* body */
  --font-md: clamp(1.15rem, 0.8vw + 0.8rem, 1.3rem);   /* leads */
  --font-lg: clamp(1.2rem, 1vw + 0.8rem, 1.4rem);      /* section titles*/
  --font-xl: clamp(2.2rem, 2.6vw + 1rem, 3rem);        /* page titles */
  --font-hero: clamp(2.8rem, 4vw + 1rem, 4rem);        /* hero title */


  /* Spacing */
  --section-padding: 100px 30px;
  --media-padding: 0px 30px;

  /* Shadows */
  --card-shadow: 0px 0px 5px -1px rgba(27, 28, 29, 0.5);
}

/* ===============================
   BASE STYLES
================================ */
html, body {
  filter: none !important;
  background-color: var(--dark-bg);
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  padding-top: 80px;
  font-family: var(--general-font);
  font-size: var(--font-sm);
  background-color: var(--dark-bg);
  color: var(--text-color);
}

html {
  scroll-behavior: smooth;
}

/* Utility: Horizontal section padding */

section {
  padding: var(--section-padding);
}
/* Mobile overrides */
@media (max-width: 600px) {
  section {
    --section-padding: 60px 20px;
  }
}

.container {
  max-width: 1120px;
  margin: 0 auto;
}

/* Links */

a {
  color: inherit;        
  text-decoration: none; 
}

a:visited {
  color: inherit;        
}

a:hover {
  color: inherit;        
}

a.btn-hero {
  color: var(--brand-color);
}

/* ===============================
   TYPOGRAPHY
================================ */

.hero-title {
  font-family: var(--hero-font);
  font-weight: 700;
  font-size: var(--font-hero);
}

.hero-subtitle {
  font-size: var(--font-lg);
  letter-spacing: 0.04rem;
  font-weight: 500;
  margin: 25px 0 45px;
}

.page-title {
  font-family: var(--hero-font);
  font-size: var(--font-xl);
  font-weight: 700;
  margin-bottom: 2rem;
}

.section-title {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 20px;
  font-size: var(--font-lg);
  text-transform: uppercase;
  letter-spacing: 0.3em;
  font-weight: 400;
  margin-bottom: 3rem;
  position: relative;
}

.section-title::before,
.section-title::after {
  content: "";
  flex: 1;
  height: 1px;
  background-color: var(--text-color);
}

.section-title.no-line {
  display: block;
  text-align: left;
  margin-bottom: 2rem;
}

/* Small screens: remove lines & reduce font size */
@media (max-width: 600px) {
  .section-title {
    display: block;
    text-align: center;
    margin-bottom: 10px;
  }

  .section-title::before,
  .section-title::after {
    display: none;
  }

  .section-title.no-line {
  margin-bottom: 10px;
}
}

.section-intro {
  font-size: var(--font-md);
  text-align: center;
  line-height: 1.5;
  letter-spacing: 0.02em;
  font-weight: 300;
  margin-bottom: 3rem;
}

.section-intro.left {
  text-align: left;
}

@media (max-width: 600px) {
  .section-intro {
    margin-bottom: 30px;
  }
}

.page-intro {
  font-size: var(--font-md);
  font-weight: 500;
  line-height: 1.5;
  letter-spacing: 0.02em;
}

.card-heading{
  font-size: var(--font-sm);
  line-height: 1.3;
  letter-spacing: 0.02em;
  font-weight: 500;
  margin-bottom: 6px;
}

.card-heading.no-margin {
  margin-bottom: 0;
}

.body-text {
  font-size: var(--font-sm);
  font-weight: 300;
  line-height: 1.5;
  letter-spacing: 0.01em;
}

.caption {
  font-size: var(--font-xs);
  margin-bottom: 0;
}

p {
  margin-bottom: 2rem;
}

.final-para {
  margin-bottom: 0;
}

/* Text Utilities */
.text-yellow {
  color: var(--brand-color);
}
/* Default (desktop) */
.mobile-text,
.show-on-mobile {
  display: none;
}

/* Mobile override */
@media (max-width: 600px) {
  .desktop-text {
    display: none;
  }
  .mobile-text,
  .show-on-mobile {
    display: block;
  }
}


/* ===============================
   NAVBAR
================================ */
.navbar {
  width: 100%;
  background: linear-gradient(to right, #394162, #5c6ca9);
  box-shadow: var(--card-shadow);
  transition: transform 0.3s ease;
}

.navbar.fixed {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1000;
}

.navbar .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 80px;
  padding: 0 30px;
}

.logo img {
  height: 35px;
}

/* Navigation Links */
.nav-links {
  list-style: none;
  display: flex;
  gap: 50px;
}

.nav-links a {
  text-decoration: none;
  font: 500 1rem 'Manrope', sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  transition: color 0.3s ease;
}

@media (hover: hover) {
  .nav-links a:hover {
    color: var(--brand-color);
  }
}

.nav-toggle {
  display: none;
  font-size: 24px;
  background: none;
  border: none;
  color: #fff;
  cursor: pointer;
}

/* Mobile Navigation */
@media (max-width: 768px) {
  .nav-toggle {
    display: block;
  }

  .nav-links {
    position: absolute;
    top: 80px;
    right: 5px;
    flex-direction: column;
    width: 160px;
    padding: 22px 20px;
    border-radius: 5px;
    background: linear-gradient(to right, #394162, #5c6ca9);
    box-shadow: var(--card-shadow);
    opacity: 0;
    transform: translateY(-10px);
    pointer-events: none;
    transition: all 0.3s ease;
    row-gap: 24px;
  }

  .nav-links.active {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }

  .logo img {
    height: 28px;
  }
}


/* ===============================
   FOOTER
================================ */
.footer {
  background-color: var(--extra-dark-bg);
  color: #6E7294;
  font-size: var(--font-xs);
  padding: 40px 30px 30px;
}

.footer-content {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.footer-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr; /* left / centre / right */
  align-items: center;
  width: 100%;
  gap: 20px;
}

.footer-logo {
  justify-self: start;
}

.footer-logo img {
  height: 20px;

}

.footer-logo a:hover img {
  filter: brightness(0) saturate(100%) invert(86%) sepia(9%) saturate(560%) hue-rotate(195deg) brightness(99%) contrast(91%);
}

.footer-nav {
  display: flex;
  justify-self: center;
  gap: 40px;
  list-style: none;
  padding: 0;
  margin: 0;
}

.footer-nav a {
  text-decoration: none;
  color: #6E7294;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  transition: color 0.3s ease;
}

.footer-nav a:hover {
  color: #D1D8ED;
}

.footer-icons {
  justify-self: end;
  display: flex;
  gap: 16px;
}

.footer-icons img {
  height: 24px;
}

.footer-icons a:hover img {
  filter: brightness(0) saturate(100%) invert(86%) sepia(9%) saturate(560%) hue-rotate(195deg) brightness(99%) contrast(91%);
}

.footer-divider {
  border: none;
  border-top: 1px solid #6E7294;
  opacity: 0.6;
  width: 100%;
  margin: 30px 0 20px;
}

.footer-bottom {
  text-align: center;
  font-size: 0.85rem;
  margin: 0;
}

/* Mobile layout */
@media (max-width: 768px) {
  .footer-row {
    display: flex;            /* override grid */
    flex-direction: column;   /* stack vertically */
    align-items: center;
    text-align: center;
  }

  .footer-nav {
    flex-wrap: wrap;
    justify-content: center;
    gap: 24px;
    margin: 0;
  }

  .footer-icons {
    justify-content: center;
    margin: 0;
  }

  .footer-bottom {
    margin-bottom: 40px;
  }
}



/* ===============================
   HERO (Homepage Only)
================================ */
.hero {
  background: linear-gradient(135deg, #2f3653, #6a7ac0);
  padding: 100px 0;
}

.hero-content {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: nowrap;
  gap: 32px;
}

@media (min-width: 1025px) {
  .hero-content {
    padding: 0 80px;
  }
}

.hero-text {
  flex: 1 1 50%;
  min-width: 300px;
}

.btn-hero {
  display: inline-block;
  font-weight: 600;
  text-transform: uppercase;
  font-size: var(--font-sm);
  letter-spacing: 0.2em;
  color: var(--brand-color);
  border: 2px solid var(--brand-color);
  padding: 10px 24px;
  border-radius: 5px;
  text-decoration: none;
  transition: background 0.3s, color 0.3s;
}

.btn-hero:hover {
  background: var(--brand-color);
  color: #16192A;
}

.hero-image {
  flex: 0 0 auto;
  display: flex;
  justify-content: flex-end;
  max-width: 280px;
}

.hero-image img {
  max-width: 240px;
  height: auto;
  border-radius: 16px;
}

/* Homepage Scroll Indicator */
.scroll-indicator {
  margin-top: 20px;
  text-align: center;
  color: var(--brand-color);
  font-size: var(--font-sm);
  letter-spacing: 0.15em;
  text-transform: uppercase;
  font-weight: 700;
}

.scroll-text {
  margin-bottom: 6px;
}

.chevron {
  width: 20px;
  height: 20px;
  border-left: 2px solid var(--brand-color);
  border-bottom: 2px solid var(--brand-color);
  transform: rotate(-45deg);
  margin: 0 auto;
}

.scroll-indicator,
.cta-mobile {
  display: none;
}

.cta-desktop {
  display: inline-block;
}

/* Homepage Hero: Mobile */
@media (max-width: 600px) {
  .hero {
    min-height: 100vh;
    padding: 20px 0;
    display: flex;
    align-items: flex-start;
  }

  .hero-content {
    margin-top: 2rem;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    text-align: center;
    height: 100%;
    gap: 20px;
  }

  .hero-subtitle { margin: 16px 0 0; }

  .hero-image { justify-content: center; }
  .hero-image img { max-width: 200px; }

  .cta-desktop { display: none; }
  .scroll-indicator, .cta-mobile { display: block; margin-top: 10px; }
}

/* Homepage Hero: Tablet */
@media (min-width: 601px) and (max-width: 1024px) {
  .hero {
    padding: 50px 0;
  }

  .hero-content {
    gap: 5px;
    padding: 0 40px;
  }

  
  .hero-image img { max-width: 240px; }
}

/* ===============================
   HERO (Inner Pages)
================================ */
.hero-inner {
  background: linear-gradient(135deg, #1c2135, #4a5690);
  color: var(--text-color);
  padding: 80px 0;
}

/* Prevent homepage hero height rule from affecting inner pages */
.hero.hero-inner {
  min-height: auto !important;
  height: auto !important;
}

.hero-inner .container {
  max-width: 1120px;
  margin: 0 auto;
  padding: 0 30px; 
}

.hero-inner .hero-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  text-align: left;
  gap: 1.5rem;
  max-width: 600px; 
  padding: 0;
}

/* Responsive refinement */
@media (max-width: 900px) {
  .hero-inner {
    padding: 60px 0;
  }
}

@media (max-width: 600px) {
  .hero-inner {
    padding: 40px 0;
  }

  .hero-inner .hero-content {
    max-width: 100%;
    margin: 0;
  }
}

/* ===============================
   ABOUT PAGE HERO (Grid Layout)
================================= */

.about-hero .hero-content {
  display: grid;
  grid-template-columns: 1fr 1fr; /* two equal columns */
  align-items: center;
  gap: 3rem;
  width: 100%;
  max-width: 1120px;
  margin: 0 auto;
}

.about-hero .hero-text,
.hero-inner .hero-text {
  justify-self: start;
  margin-left: 3rem;
}

.about-hero .hero-text {
  max-width: 540px;
}

.hero-inner .hero-text {
  max-width: 100%;
}

/* --- OVERRIDE homepage hero-image styles --- */
.about-hero .hero-image {
  display: flex;
  justify-content: center;
  align-items: center;
  max-width: none;      /* remove homepage width cap */
  flex: none;           /* stop flexbox constraints from shrinking it */
  width: 100%;
  height: 100%;
}

/* --- Make the image fill its grid cell --- */
.about-hero .hero-image img {
  width: 100%;
  height: auto;
  max-width: 100%;
  object-fit: contain;
  opacity: 0.60;
  transform: translateY(-10px);
}

/* --- Responsive Adjustments --- */
@media (max-width: 900px) {
  .about-hero .hero-content {
    grid-template-columns: 1fr;
  }

  .about-hero .hero-image {
    display: none; /* hide on tablet + mobile */
  }

  .about-hero .hero-text,
  .hero-inner .hero-text {
    max-width: 100%;
    text-align: left;
    margin-left: 0;
    margin-right: 15vw;
  }
}

@media (max-width: 600px) {
    .about-hero .hero-text,
    .hero-inner .hero-text {
    max-width: 100%;
    text-align: left;
    margin-left: 0;
    margin-right: auto;
  }
}




/* ===============================
   PROJECTS SECTION
================================ */
.projects-section {
  background-color: var(--dark-bg);
}

.projects-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30px;
}

@media (max-width: 600px) {
  .projects-grid {
    grid-template-columns: 1fr;
  }
}

.project-card {
  background-color: var(--card-bg);
  border-radius: 5px;
  display: flex;
  flex-direction: column;
  box-shadow: var(--card-shadow);
  overflow: hidden;
  transition: background-color 0.3s ease;
}

.project-thumb {
  position: relative;
  overflow: hidden;
}

.project-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
  display: block;
}

/* Default overlay – desktop only */
.project-thumb::before {
  content: "";
  position: absolute;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.25);
  opacity: 1;
  transition: opacity 0.4s ease;
  pointer-events: none;
  z-index: 1;
}

.project-info {
  padding: 30px;
  background-color: var(--card-bg-subtle);
  transition: background-color 0.3s ease;
}

.project-card:hover .project-info {
  background-color: var(--hover-card-bg);
}

/* Hover effects (desktop only) */
@media (hover: hover) and (pointer: fine) {
  .project-card:hover .project-thumb::before {
    opacity: 0;
  }
  .project-card:hover .project-thumb img {
    transform: scale(1.1);
  }
}

/* Touch devices – remove overlay & disable transform */
@media (hover: none), (pointer: coarse) {
  .project-thumb::before {
    display: none;
  }
}


/* About Me section on homepage */
.about-section {
  background-color: var(--med-bg);
  position: relative;
  overflow: hidden;
}

.about-section::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url('../assets/images/about_background.webp');
  background-size: cover;
  background-position: right 20%;
  background-repeat: no-repeat;
  opacity: 0.12;
  z-index: 0;
  pointer-events: none;
}

.about-section .container,
.about-section .about-wrapper {
  position: relative;
  z-index: 1;
}

.about-wrapper {
  position: relative;
  z-index: 1;
  display: flex;
  gap: 30px;
  align-items: center;
  justify-content: space-between;
  background-color: var(--card-bg);
  border-radius: 5px;
  box-shadow: var(--card-shadow);
  padding: 30px;
  height: 360px;
}

.about-text,
.about-image {
  flex: 1;
}

.about-cta .about-link {
  font-weight: 600;
  text-transform: uppercase;
  font-size: var(--font-sm);
  letter-spacing: 0.2em;
  color: var(--brand-color);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.about-image img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 8px;
}

/* --- Breakpoints --- */

/* Collapse layout to avoid squeezing between 900–1000px */
@media (max-width: 960px) {
  .about-wrapper {
    flex-direction: column;
    text-align: left;
    height: auto;
  }
  .about-image {
    display: none;
  }

  .about-text {
    margin-right: 15vw;
  }
}
@media (max-width: 600px) {
  .about-text {
    margin-right: auto;
  }
}

/*Testimonials Section on homepage*/
.testimonials-section {
  background-color: var(--dark-bg);
}

.testimonials-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 30px;
}

.testimonial-card {
  background-color: var(--card-bg);
  box-shadow: var(--card-shadow);
  border-radius: 5px;
  padding: 30px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.testimonial-project {
  margin-bottom: 1rem;
}

.testimonial-quote {
  font-style: italic;
  margin-bottom: 2rem;
  line-height: 1.5;
  font-size: var(--font-sm);
}

.testimonial-author {
  text-align: right;
  font-size: var(--font-xs);
  line-height: 1.4;
  margin-bottom: 0;
}




/* ===============================
   SKILLS SECTION
================================ */
.skills-section {
  background-color: var(--dark-bg);
  text-align: center;
}

.skills-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30px;
  max-width: 740px;
  margin: 0 auto 0;
}

.skill-card {
  background-color: var(--card-bg-subtle);
  padding: 30px;
  border-radius: 5px;
  box-shadow: var(--card-shadow);
  display: flex;
  flex-direction: column;
  align-items: center;
}

.skill-icon img {
  width: 80px;
  height: 80px;
  margin-bottom: 20px;
}

.skill-card h3 {
  margin-bottom: 15px;
}

.skill-card p {
  margin-bottom: 20px;
}

.skill-divider {
  width: 100%;
  height: 1px;
  background-color: #D1D8ED33;
  margin-bottom: 20px;
}

.app-icons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
}

.tooltip {
  position: relative;
  display: inline-block;
  cursor: default;
}

.tooltip img {
  width: 32px;
  height: 32px;
  opacity: 0.4;
  transition: transform 0.3s ease, opacity 0.3s ease;
}

.tooltip:hover img {
  transform: scale(1.2);
  opacity: 1;
}

/* Tooltip styling */
.tooltip::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: 120%;
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  background: var(--extra-dark-bg);
  font-size: var(--font-xs);
  padding: 4px 8px;
  border-radius: 6px;
  opacity: 0;
  white-space: nowrap;
  pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s ease;
  z-index: 10;
}

/* Tooltip arrow */
.tooltip::before {
  content: '';
  position: absolute;
  bottom: 110%;
  left: 50%;
  transform: translateX(-50%) translateY(4px);
  border: 6px solid transparent;
  border-top-color: var(--extra-dark-bg);
  opacity: 0;
  transition: opacity 0.25s ease, transform 0.25s ease;
  z-index: 9;
}

/* Show tooltip on hover */
.tooltip:hover::after,
.tooltip:hover::before {
  opacity: 1;
  transform: translateX(-50%) scale(1);
}

@media (max-width: 600px) {
  .skills-grid {
    grid-template-columns: 1fr;
    gap: 30px;
  }
}



/* ===============================
   PHILOSOPHY SECTION
================================ */
.philosophy-section {
  background-color: var(--med-bg);
  text-align: center;
}

.philosophy-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30px;
  margin-top: 50px;
}

.philosophy-card {
  background-color: var(--card-bg);
  border-radius: 5px;
  box-shadow: var(--card-shadow);
  text-align: left;
  overflow: hidden;
}

.philosophy-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 15px 20px;
  background: var(--subtle-card-header);
}

.philosophy-header img {
  width: 40px;
  height: 40px;
}

.philosophy-card p {
  padding: 20px;
  margin: 0;
}

@media (max-width: 768px) {
  .philosophy-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 600px) {
  .philosophy-section {
    display: none;
  }
}

/* ===============================
   BEYOND DESIGN SECTION
================================ */
.beyond-section {
  position: relative;
  background-color: var(--dark-bg);
  overflow: hidden;
}

@media (max-width: 600px) {
  .beyond-section {
    background-color: var(--med-bg);
  }
}

/* Background image layer */
.beyond-section::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: url('../assets/images/beyond_background.webp');
  background-size: cover;
  background-position: center right;
  background-repeat: no-repeat;
  opacity: 0.8; /* faint image hint */
  mix-blend-mode: soft-light; /* preserves blues instead of dulling them */
  z-index: 1;
}

@media (max-width: 1440px) {
  .beyond-section::after {
    background-position: center left;
  }
}

.beyond-section .container {
  position: relative;
  z-index: 2;
}

/* Bento rows */
.bento-row1,
.bento-row2 {
  display: flex;
  gap: 30px;
  margin-bottom: 30px;
  align-items: stretch;
  width: 100%;
}

.bento-row2 {
  margin-bottom: 0;
}

/* Textbox styling (matches About Me box style) */
.bento-textbox {
  flex: 7;
  background-color: var(--card-bg);
  padding: 30px;
  border-radius: 5px;
  box-shadow: var(--card-shadow);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* Images with default overlay & tooltip */
.bento-image1,
.bento-image2,
.bento-image3 {
  cursor: default;
  position: relative;
  border-radius: 6px;
  overflow: hidden;
  background-color: var(--card-bg);
  box-shadow: var(--card-shadow);
}

.bento-image1 { flex: 3; }
.bento-image2 { flex: 3; }
.bento-image3 { flex: 7; }

.bento-image1 img,
.bento-image2 img,
.bento-image3 img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Dark overlay applied by default */
.bento-image1::before,
.bento-image2::before,
.bento-image3::before {
  content: "";
  position: absolute;
  inset: 0;
  background: rgba(23, 24, 41, 0.2); /* default dark overlay */
  opacity: 1;
  transition: opacity 0.3s ease;
  z-index: 1;
}

/* Overlay fades out on hover */
.bento-image1:hover::before,
.bento-image2:hover::before,
.bento-image3:hover::before {
  opacity: 0;
}

/* Tooltip captions */
.bento-image1::after,
.bento-image2::after,
.bento-image3::after {
  content: attr(data-caption);
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--extra-dark-bg);
  font-size: var(--font-xs);
  padding: 6px 10px;
  border-radius: 4px;
  opacity: 0;
  transition: opacity 0.3s ease, transform 0.3s ease;
  pointer-events: none;
  white-space: nowrap;
  z-index: 2;
}

.bento-image1:hover::after,
.bento-image2:hover::after,
.bento-image3:hover::after {
  opacity: 1;
  transform: translateX(-50%) translateY(-3px);
}

/* Mobile: only show text */
@media (max-width: 768px) {
  .bento-image1,
  .bento-image2,
  .bento-image3 { display: none; }
  .bento-textbox { flex: 0 0 100%; margin-bottom: 0; }
  .bento-row1,
  .bento-row2 { display: block; margin-bottom: 0; }
}

/* FAQ Section */
.faq-section {
  background-color: var(--med-bg);
}

.faqs {
  max-width: 700px;
  margin: 0 auto;
  height: 580px; /* Prevents layout shift */
  overflow: hidden;
}

@media (max-width: 600px) {
  .faqs {
    height: auto;
    overflow: visible;
  }
}

.faq-item {
  border-radius: 5px;
  margin-top: 20px;
  overflow: hidden;
  background-color: var(--card-bg);
  box-shadow: var(--card-shadow);
}

/* Remove top margin on the first FAQ item only */
.faq-item:first-child {
  margin-top: 0;
}

.faqs input {
  display: none;
}

.faqs label {
  font-size: var(--font-sm);
  font-weight: 500;
  line-height: 1.3;
  display: block;
  padding: 14px 48px 14px 30px;
  cursor: pointer;
  position: relative;
  background-color: var(--card-bg);
  transition: background 0.3s ease;
}

.faqs label:hover {
  background: var(--subtle-card-header);
}

.faqs label::after {
  content: "›";
  font-size: 1.4rem;
  position: absolute;
  right: 20px;
  top: 50%;
  transform: translateY(-50%);
  transition: transform 0.3s ease;
}

.faqs input:checked + label {
  background: var(--subtle-card-active);
}

.faqs input:checked + label::after {
  transform: translateY(-50%) rotate(90deg);
}

.faqs .content {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  padding: 0 30px;
  background-color: var(--card-bg);
  transition: max-height 0.4s ease, opacity 0.4s ease, padding 0.4s ease;
}

.faqs input:checked + label + .content {
  max-height: 200px;
  opacity: 1;
  padding: 15px 30px;
}

.faqs .content a {
  color: var(--brand-color);
  text-decoration: none;
  transition: color 0.3s ease;
}

.faqs .content a:hover {
  text-decoration: underline;
  text-underline-offset: 4px;
}

.faq-section .body-text {
  margin-bottom: 0;
}

/* Project Media Section */
.project-media-section {
  background-color: var(--dark-bg);
  padding: var(--media-padding);
}
.project-media-section .container img,
.project-media-section .container video {
  display: block;
  width: 100%;
}
@media (max-width: 600px) {
  .project-media-section {
    padding: 0;
  }
}

/* ===============================
   PORTFOLIO CONTENT
================================ */

/* Vimeo Video Wrapper */
.vimeo-wrapper {
  position: relative;
  padding-top: 56.25%;
  width: 100%;
  overflow: hidden;
}

.vimeo-wrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.vimeo-wrapper.loaded iframe {
  opacity: 1;
}

.video-placeholder {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 0.5s ease;
  z-index: 1;
}

.vimeo-wrapper.loaded .video-placeholder {
  opacity: 0;
  pointer-events: none;
}


/* Mobile: Square crop for Vimeo video */
@media (max-width: 600px) {
  .vimeo-wrapper {
    padding-top: 100%;
  }

  .vimeo-wrapper iframe {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 177.78%;
    height: 100%;
  }

  #edenvale-graphicwork-video {
  display: none;
}

}

/* Overlay for mobile to trigger fullscreen */
.video-overlay {
  display: none;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: transparent;
  cursor: pointer;
  z-index: 2;
}

@media (max-width: 600px) {
  .video-overlay {
    display: block;
  }
}


/* Outer slider container */
.simple-image-slider {
  position: relative;
  width: 100%;
  margin: 0 auto;
  background: linear-gradient(to bottom, #141721, #353b50); /* Outer gradient */
  padding: 40px 20px; /* Space around the inner container */
  box-sizing: border-box;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Inner container with curved corners and shadow */
.slider-inner {
  position: relative;
  width: 100%;
  max-width: 960px; /* Matches your content width */
  min-height: 596px;
  border-radius: 20px;
  overflow: hidden;
  background: linear-gradient(to bottom, #1E1C2F, #07150D); /* Purple-green tones */
  box-shadow: var(--card-shadow);
}

/* All images stacked inside inner container */
.slider-inner img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: auto;
  opacity: 0;
  transition: opacity 1s ease-in-out;
}

/* Active image fades in */
.slider-inner img.active {
  opacity: 1;
}

/* Maintain height ratio of the slider */
.slider-inner::before {
  content: '';
  display: block;
  padding-top: 56.25%; /* 16:9 ratio; adjust if needed */
}

/* Hidden by default; shown on mobile */
.mobilemock-block { 
  display: none;
  background: linear-gradient(to bottom, #141721, #353b50);
  padding: 30px 20px;
  margin: 0;
}

.mobilemock-inner {
  position: relative;
  border-radius: 15px; 
  overflow: hidden; 
  box-shadow: 0 12px 24px rgba(0,0,0,.35); 
  margin: 0 auto;
}

/* Mobile behaviour */
@media (max-width: 768px) {
  .simple-image-slider { display: none; }
  .mobilemock-block { display: block; }
}

@media (min-width: 481px) and (max-width: 768px) {
  .mobilemock-inner {
    max-width: 420px;   /* match your image’s native width */
    margin: 24px auto;  /* centre it */
  }

  .mobilemock-inner img {
    width: 100%;
    height: auto;
  }
}

#edenvale-image-1 {
  background: linear-gradient(180deg, #DCEAF5 0%, #95AECC 100%);
}


/* Project Navigation Section */
.project-navigation-section {
  background-color: var(--dark-bg);
  padding: 50px 30px; /* Padding above and below the link, consistent with section padding */
  text-align: right; /* Align to right for desktop */
}

/* Mobile adjustments for the project navigation section */
@media (max-width: 600px) {
  .project-navigation-section {
    padding: 40px 30px; /* Reduce vertical padding on mobile, maintain 30px horizontal */
    text-align: center; /* Center navigation on mobile */
  }
}

.next-cta {
  margin-bottom: 0;
}

.next-cta .next-link {
  font-weight: 600;
  text-transform: uppercase;
  font-size: var(--font-sm);
  letter-spacing: 0.2em;
  color: var(--brand-color);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* ===============================
    CONTACT PAGE
================================ */
/* Fix for browser autocomplete styles */
.contact-form input:-webkit-autofill,
.contact-form input:-webkit-autofill:hover,
.contact-form input:-webkit-autofill:focus,
.contact-form textarea:-webkit-autofill,
.contact-form textarea:-webkit-autofill:hover,
.contact-form textarea:-webkit-autofill:focus,
.contact-form select:-webkit-autofill,
.contact-form select:-webkit-autofill:hover,
.contact-form select:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--dark-bg);
    -webkit-box-shadow: 0 0 0 30em var(--text-color) inset;
    background-color: var(--text-color) !important;
    transition: background-color 5000s ease-in-out 0s;
}

/* Sticky Footer for Contact Page */
.contact-page {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.contact-section {
    background: linear-gradient(135deg, #1c2135, #4a5690);
    padding: 30px;
    flex: 1 0 auto;
    /* Use flexbox to center the content horizontally */
    display: flex;
    justify-content: center;
    align-items: center;
}

/* The contact-form-wrapper now holds all styling */
.contact-form-wrapper {
    background-color: var(--card-bg);
    box-shadow: var(--card-shadow);
    border-radius: 5px;
    width: 100%;
    max-width: 500px;
    padding: 40px 30px;
}

.contact-title {
    font-family: var(--hero-font);
    font-weight: 700;
    font-size: clamp(2rem, 1.8vw + 1rem, 2.6rem);
    background: linear-gradient(to top, #93A3D1, #FFFFFF);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    margin-bottom: 2rem;
}

/* Form Styles */
.contact-form .form-group {
    margin-bottom: 20px;
}

.contact-form label {
    display: block;
    margin-bottom: 12px;
    margin-top: 30px;
    font-weight: 600;
    line-height: 1.3;
}

.required {
    color: var(--brand-color);
    font-weight: 400;
}

.contact-form input,
.contact-form textarea {
    width: 100%;
    padding: 8px;
    border: 2px solid transparent;
    border-radius: 5px;
    background-color: var(--text-color);
    color: var(--dark-bg);
    font-family: var(--general-font);
    font-size: 1rem;
    transition: border-color 0.3s ease, background-color 0.3s ease;
}

/* Corrected focus styling for inputs and textareas. No hover effect. */
.contact-form input:focus,
.contact-form textarea:focus {
    outline: none;
    border-color: var(--brand-color);
    border-width: 2px;
}

.contact-form textarea {
    resize: vertical;
}



/* ===============================
    Choices.js Custom Styles
================================ */

/* Overall container and placeholder */
.choices {
    width: 100%;
    position: relative;
    font-family: var(--general-font);
    font-size: 1rem;
}

.choices .choices__inner {
    width: 100%;
    padding: 8px;
    border: 2px solid transparent;
    border-radius: 5px;
    background-color: var(--text-color);
    color: var(--dark-bg);
    font-size: 1rem;
    line-height: 1.3rem;
    box-sizing: border-box;
    min-height: auto;
    transition: border-color 0.3s ease, background-color 0.3s ease;
}

.choices .choices__list--single {
  padding: 0;
  margin: 0;
}

/* Placeholder styling */
.choices .choices__inner .choices__placeholder {
    font-size: 1rem;
}

/* Remove default blue border from choices.js */
.choices .choices__inner:focus {
    border-color: var(--text-color);
}

/* Focus and Hover styles for the dropdown itself (the button) */
.choices.is-focused .choices__inner,
.choices .choices__inner:hover {
    outline: none;
    border-color: var(--brand-color);
    border-width: 2px;
}

.choices .choices__list--dropdown {
    width: 100%;
    border-radius: 5px;
    background-color: var(--text-color);
    color: var(--dark-bg);
    margin-top: 5px;
    z-index: 100;
}

/* Dropdown list items (options) */
.choices .choices__list--dropdown .choices__item {
    padding: 8px;
    color: var(--dark-bg);
    font-size: 1rem;
}

/* Hover style for list items */
.choices .choices__list--dropdown .choices__item.is-highlighted {
    background-color: var(--brand-color);
    color: var(--extra-dark-bg);
}


.submit-btn {
    /* Base style matching your site's CTAs */
    width: auto;
    padding: 10px 24px;
    border: 2px solid var(--brand-color);
    background: none;
    color: var(--brand-color);
    font-family: var(--general-font);
    cursor: pointer;
    text-align: center;
    font-weight: 600;
    text-transform: uppercase;
    font-size: var(--font-sm);
    letter-spacing: 0.2em;
    border-radius: 5px;
    transition: background 0.3s, color 0.3s;
    
    /* Ensure the button is left-aligned by default */
    display: inline-block;
}

.submit-btn:hover {
    background: var(--brand-color);
    color: var(--extra-dark-bg);
}

/* New CSS for the status message and loading spinner */
.submit-btn.is-loading {
    position: relative;
    color: transparent; /* Hide text */
    pointer-events: none; /* Disable clicks */
}

.submit-btn.is-loading::after {
    content: '';
    position: absolute;
    width: 16px;
    height: 16px;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    margin: auto;
    border: 3px solid transparent;
    border-top-color: var(--extra-dark-bg);
    border-radius: 50%;
    animation: button-loading-spinner 1s ease infinite;
}

@keyframes button-loading-spinner {
    from {
        transform: rotate(0turn);
    }
    to {
        transform: rotate(1turn);
    }
}

/* The success message container */
#contact-form-message {
    display: none; /* Hidden by default */
    justify-content: center;
    align-items: center;
    flex-direction: column;
    min-height: 400px; /* Gives it height to fill the space where the form was */
    text-align: center;
    color: var(--text-color);
    padding: 2rem;
}

/* This is the new, crucial rule that makes the message visible */
#contact-form-message.is-visible {
    display: flex;
}

#contact-form-message p {
    font-size: var(--font-sm);
}

/* Responsive style */
@media (max-width: 600px) {
    .submit-btn {
      width: 100%;
      margin-left: 0;
    }
}

.confirm-divider {
  border: none;
  border-top: 1px solid #6E7294;
  opacity: 0.6;
  width: 100%;
  margin: 20px 0;
}

.explore-text {
  font-size: var(--font-sm);
  margin-bottom: 20px;
  color: var(--text-color);
}

.confirm-socials {
  display: flex;
  gap: 16px;
  justify-content: center;
}

.confirm-socials img {
  height: 30px;
}

.confirm-socials a:hover img {
  filter: brightness(0) saturate(100%) invert(86%) sepia(9%) saturate(560%) hue-rotate(195deg) brightness(99%) contrast(91%);
}


@media (max-width: 600px) {
  .contact-section {
    background: linear-gradient(135deg, #1c2135, #4a5690);
    padding: 20px;
    flex: 1 0 auto;
  }
  .contact-form-wrapper {
    padding: 30px 20px;
  }
}

/* ===============================
   FORM VALIDATION
================================ */

/* Invalid input borders */
input.invalid,
textarea.invalid {
  border: 2px solid #ff6b6b !important;
  outline: none;
}

/* Error message text */
.error-message {
  color: #ff6b6b;
  font-size: 0.9rem;
  margin-top: 6px;
  font-weight: 500;
}

/* Choices.js invalid border */
.choices.invalid .choices__inner {
  border: 2px solid #ff6b6b !important;
}

/* Remove extra space below the Choices.js dropdown */
.choices {
  margin-bottom: 0 !important;
}

.choices__inner {
  margin-bottom: 0 !important;
}

/* Tighten the space between dropdown and error message */
.reason-error {
  margin-top: 4px !important;
}

/* ===============================
   Anchor Scroll Offset Fix
================================= */

/* Applies to any section that can be linked via #anchor */
[id] {
  scroll-margin-top: 0px; 
}

/* Tweak for smaller screens (navbar remains sticky) */
@media (max-width: 768px) {
  [id] {
    scroll-margin-top: 80px;
  }
}

/* ===============================
   SCROLL INDICATOR + CHEVRON (MOBILE)
================================= */

/* Base: start hidden, no bounce */
.scroll-indicator .chevron {
  opacity: 0;
  transform: translateY(10px) rotate(-45deg);
  animation: none;
  transition: opacity 0.6s ease, transform 0.6s ease;
}

body.animate-hero .scroll-indicator .chevron {
  opacity: 1;
  transform: translateY(0) rotate(-45deg);
}

/* Scroll indicator itself fades up with the hero */
body.animate-hero .scroll-indicator {
  animation: fadeUp 1s cubic-bezier(0.25, 0.1, 0.25, 1) forwards;
  animation-delay: 0.3s;
}

/* Chevron only bounces *after* hero animation settles */
body.animate-hero .scroll-indicator.settled .chevron {
  opacity: 1;
  animation: chevronBounce 1.6s ease-in-out infinite;
}

/* Bounce keyframes — already exists, but keep here for clarity */
@keyframes chevronBounce {
  0%, 100% {
    transform: translateY(0) rotate(-45deg);
  }
  50% {
    transform: translateY(6px) rotate(-45deg);
  }
}

/* ===============================
   FADE + SCALE-IN ON SCROLL
================================ */

/* For single elements that fade and scale in */
.fade-scale {
  opacity: 0;
  transform: scale(0.85);
  transition:
    opacity 0.8s cubic-bezier(0.25, 0.1, 0.25, 1),
    transform 0.8s cubic-bezier(0.25, 0.1, 0.25, 1);
  will-change: opacity, transform;
  pointer-events: none; /* prevent blocking interactions while invisible */
}
.fade-scale.visible {
  opacity: 1;
  transform: scale(1);
  pointer-events: auto; /* restore clickability once visible */
}

/* For grouped elements that stagger in (e.g. cards) */
.fade-stagger > * {
  opacity: 0;
  transform: scale(0.85);
  transition:
    opacity 0.8s cubic-bezier(0.25, 0.1, 0.25, 1),
    transform 0.8s cubic-bezier(0.25, 0.1, 0.25, 1);
  will-change: opacity, transform;
}
.fade-stagger.visible > * {
  opacity: 1;
  transform: scale(1);
}
.fade-stagger.visible > *:nth-child(1) { transition-delay: 0.15s; }
.fade-stagger.visible > *:nth-child(2) { transition-delay: 0.25s; }
.fade-stagger.visible > *:nth-child(3) { transition-delay: 0.35s; }
.fade-stagger.visible > *:nth-child(4) { transition-delay: 0.45s; }
.fade-stagger.visible > *:nth-child(5) { transition-delay: 0.55s; }
.fade-stagger.visible > *:nth-child(6) { transition-delay: 0.65s; }

@media (prefers-reduced-motion: reduce) {
  .fade-scale,
  .fade-stagger > * {
    transition: none;
  }
}

/* ===============================
   SIMPLE FADE-IN ON SCROLL
================================ */

/* Base state */
.fade-in {
  opacity: 0;
  transition: opacity 0.9s cubic-bezier(0.25, 0.1, 0.25, 1);
  will-change: opacity;
}

/* When visible */
.fade-in.visible {
  opacity: 1;
}

/* ===============================
   FADE-UP ANIMATION
================================= */
.fade-up {
  opacity: 0;
  transform: translateY(25px);
  transition: opacity 1s ease, transform 1s ease;
  will-change: opacity, transform;
}

.fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Keep fade-in hidden before JS marks the page ready */
body:not(.ready) .fade-in {
  opacity: 0 !important;
  transition: none !important;
}

/* Keep scale-based items hidden but preserve their initial transform state */
body:not(.ready) .fade-scale,
body:not(.ready) .fade-stagger > * {
  opacity: 0 !important;
  transition: none !important;
}

/* Keep fade-up hidden, but don't reset its translate so it can animate smoothly */
body:not(.ready) .fade-up {
  opacity: 0 !important;
  transition: none !important;
}

/* Prevent sections below first fade element from flashing on navigation */
body:not(.ready) .project-navigation-section,
body:not(.ready) #footer-placeholder {
  opacity: 0 !important;
  transition: none !important;
}

/* ===============================
   MICRO-ANIMATIONS
   (Light, motion effects)
================================ */

/* Arrow nudge on hover (for About & Next Project links) */
.about-link svg,
.next-link svg {
  transition: transform 0.3s ease;
}

.about-link:hover svg,
.next-link:hover svg {
  transform: translateX(4px);
}

/* Variant: external link (for "View Prototype") */
.next-link.external svg {
  transition: transform 0.3s ease;
  transform-origin: bottom left;
}

.next-link.external:hover svg {
  transform: scale(1.15);
}

/* ---------- SAFETY: Respect reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
    transition: none !important;
  }
}












