/* style.css */

/* 1. CSS Variables
-------------------------------------------------- */
:root {
    /* Analogous Color Scheme */
    --color-primary-main: hsl(201, 70%, 50%); /* Blue: #2980b9 */
    --color-primary-light: hsl(201, 70%, 60%);
    --color-primary-dark: hsl(201, 70%, 40%);

    --color-secondary-main: hsl(171, 100%, 41%); /* Turquoise/Teal (Bulma Primary): #00d1b2 */
    --color-secondary-light: hsl(171, 100%, 51%);
    --color-secondary-dark: hsl(171, 100%, 31%);

    --color-tertiary-main: hsl(141, 55%, 50%); /* Green: #2ecc71 / #36c25b */
    --color-tertiary-light: hsl(141, 55%, 60%);
    --color-tertiary-dark: hsl(141, 55%, 40%);

    /* Text Colors */
    --color-text-dark: #2c3e50;       /* Very Dark Blue/Grey */
    --color-text-medium: #555e68;    /* Medium Grey */
    --color-text-light: #ffffff;
    --color-text-on-primary: #ffffff;
    --color-text-muted: #7f8c8d;      /* Grey for less important text */

    /* Background Colors */
    --color-background-body: #ffffff;
    --color-background-section-light: #ecf0f1; /* Light Grey */
    --color-background-section-dark: #212529;   /* For Footer */
    --color-card-background: #ffffff;

    /* Borders and Shadows */
    --color-border: #bdc3c7;
    --color-shadow-main: rgba(44, 62, 80, 0.1);
    --color-shadow-strong: rgba(44, 62, 80, 0.2);

    /* Fonts */
    --font-heading: 'Manrope', sans-serif;
    --font-body: 'Rubik', sans-serif;

    /* Spacing & Sizing */
    --spacing-unit: 8px;
    --header-height: 70px; /* Adjust if Bulma navbar height is different */

    /* Border Radius (Biomorphic hints) */
    --border-radius-small: 4px;
    --border-radius-medium: 8px;
    --border-radius-large: 16px;
    --border-radius-xlarge: 30px; /* For more pronounced curves */
    --border-radius-biomorphic: 30% 70% 70% 30% / 30% 30% 70% 70%;
}

/* 2. Base & Typography
-------------------------------------------------- */
body {
    font-family: var(--font-body);
    color: var(--color-text-dark);
    background-color: var(--color-background-body);
    line-height: 1.7;
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden; /* Prevent horizontal scroll from animations */
}

h1, h2, h3, h4, h5, h6,
.title, .subtitle {
    font-family: var(--font-heading);
    color: var(--color-text-dark);
    font-weight: 700;
}

.title {
    color: var(--color-text-dark); /* Ensure high contrast */
    text-shadow: none; /* Override if Bulma adds one */
}

.subtitle {
    color: var(--color-text-medium);
}

p {
    margin-bottom: calc(var(--spacing-unit) * 2);
    color: var(--color-text-medium);
}

a {
    color: var(--color-primary-main);
    transition: color 0.3s ease, transform 0.2s ease;
}

a:hover {
    color: var(--color-primary-dark);
    transform: translateY(-1px);
}

.section {
    padding: calc(var(--spacing-unit) * 6) calc(var(--spacing-unit) * 3); /* 48px 24px */
}

.container {
    max-width: 1140px; /* Or use Bulma's default up to 1344px for .is-fluid */
    margin: 0 auto;
}

.has-background-light {
    background-color: var(--color-background-section-light) !important;
}

.has-text-white, .has-text-white a {
    color: var(--color-text-light) !important;
}
.has-text-white a:hover {
    color: var(--color-secondary-light) !important;
}

.section-title {
    margin-bottom: calc(var(--spacing-unit) * 5) !important; /* 40px */
    font-weight: 800;
    color: var(--color-text-dark); /* Ensure high contrast for section titles */
}

/* 3. Header / Navigation
-------------------------------------------------- */
.header.sticky-header {
    position: fixed; /* Or sticky if preferred */
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1030;
    background-color: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: 0 2px 10px var(--color-shadow-main);
    height: var(--header-height);
    transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

body.scrolled .header.sticky-header {
    background-color: rgba(255, 255, 255, 0.98);
    box-shadow: 0 4px 15px var(--color-shadow-strong);
}

.navbar {
    min-height: var(--header-height);
}

.navbar-item.logo-text {
    font-family: var(--font-heading);
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--color-primary-main);
}
.navbar-item.logo-text strong {
    color: var(--color-secondary-main);
}

.navbar-item, .navbar-link {
    font-family: var(--font-body);
    font-weight: 500;
    color: var(--color-text-medium);
    transition: color 0.3s ease;
}

.navbar-item:hover, .navbar-link:hover,
.navbar-item.is-active {
    color: var(--color-primary-main) !important;
    background-color: transparent !important;
}

.navbar-burger {
    color: var(--color-primary-main);
    height: var(--header-height); /* Match header height */
    width: var(--header-height); /* Make it square */
}
.navbar-burger:hover {
    background-color: rgba(0,0,0,0.05);
}
.navbar-burger span {
    background-color: var(--color-primary-main);
    height: 2px;
}

/* Adjust body padding for fixed header */
body {
    padding-top: var(--header-height);
}


/* 4. Footer
-------------------------------------------------- */
.footer {
    background-color: var(--color-background-section-dark);
    color: var(--color-text-muted);
    padding: calc(var(--spacing-unit) * 6) calc(var(--spacing-unit) * 2) calc(var(--spacing-unit) * 3);
}

.footer .title {
    color: var(--color-text-light);
    font-weight: 700;
}

.footer p, .footer li {
    color: var(--color-text-muted);
    font-size: 0.95rem;
}

.footer a {
    color: var(--color-secondary-light);
    transition: color 0.3s ease;
}

.footer a:hover {
    color: var(--color-text-light);
}

.footer hr {
    background-color: rgba(255, 255, 255, 0.1);
}

.footer .social-links a {
    margin-right: var(--spacing-unit);
    font-size: 1.1rem; /* Adjust if using text links for social media */
}
.footer .social-links a:last-child {
    margin-right: 0;
}

#currentYear {
    font-weight: 500;
}

/* 5. Global Components (Buttons, Forms, Cards generic)
-------------------------------------------------- */
/* Buttons */
.button {
    font-family: var(--font-heading);
    font-weight: 700;
    border-radius: var(--border-radius-medium);
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
    letter-spacing: 0.5px;
    padding: calc(var(--spacing-unit) * 1.5) calc(var(--spacing-unit) * 3);
    box-shadow: 0 2px 5px var(--color-shadow-main);
}

.button:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 10px var(--color-shadow-strong);
}
.button:active {
    transform: translateY(0);
    box-shadow: 0 2px 5px var(--color-shadow-main);
}

.button.is-primary {
    background-color: var(--color-primary-main);
    border-color: transparent;
    color: var(--color-text-on-primary);
}
.button.is-primary:hover {
    background-color: var(--color-primary-dark);
    border-color: transparent;
    color: var(--color-text-on-primary);
}

.button.is-secondary {
    background-color: var(--color-secondary-main);
    border-color: transparent;
    color: var(--color-text-on-primary);
}
.button.is-secondary:hover {
    background-color: var(--color-secondary-dark);
    border-color: transparent;
    color: var(--color-text-on-primary);
}

.button.is-large {
    font-size: 1.25rem;
    padding: calc(var(--spacing-unit) * 2) calc(var(--spacing-unit) * 4);
}

/* Forms - Modern Inputs */
.input, .textarea, .select select {
    border-radius: var(--border-radius-medium);
    border-color: var(--color-border);
    box-shadow: none;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
    font-family: var(--font-body);
}
.input:focus, .textarea:focus, .select select:focus,
.input.is-focused, .textarea.is-focused, .select select.is-focused,
.input:active, .textarea:active, .select select:active,
.input.is-active, .textarea.is-active, .select select.is-active {
    border-color: var(--color-primary-main);
    box-shadow: 0 0 0 0.125em rgba(var(--color-primary-main), 0.25);
}
.label {
    font-family: var(--font-heading);
    color: var(--color-text-dark);
    font-weight: 600;
}

.modern-input, .modern-textarea {
    border-radius: var(--border-radius-large); /* More biomorphic */
    padding: calc(var(--spacing-unit)*1.5) calc(var(--spacing-unit)*2);
    font-size: 1rem;
}
.modern-textarea {
    min-height: 120px;
}

/* Switch (Bulma extension or custom) */
.switch[type="checkbox"] {
  outline: 0;
  user-select: none;
  display: inline-block;
  position: absolute;
  opacity: 0;
}
.switch[type="checkbox"] + label {
  position: relative;
  display: inline-block;
  cursor: pointer;
  height: calc(var(--spacing-unit) * 3); /* 24px */
  width: calc(var(--spacing-unit) * 6);  /* 48px */
  border-radius: calc(var(--spacing-unit) * 3);
  background: var(--color-border);
  transition: background-color 0.3s ease;
  vertical-align: middle;
}
.switch[type="checkbox"] + label::before {
  content: "";
  position: absolute;
  display: block;
  height: calc(var(--spacing-unit) * 2.5); /* 20px */
  width: calc(var(--spacing-unit) * 2.5); /* 20px */
  top: calc(var(--spacing-unit) * 0.25); /* 2px */
  left: calc(var(--spacing-unit) * 0.25); /* 2px */
  border-radius: 50%;
  background: white;
  box-shadow: 0 1px 3px rgba(0,0,0,0.2);
  transition: all 0.3s cubic-bezier(.175,.885,.32,1.275);
}
.switch[type="checkbox"]:checked + label {
  background: var(--color-primary-main);
}
.switch[type="checkbox"]:checked + label::before {
  transform: translateX(calc(var(--spacing-unit) * 3)); /* 24px */
}

/* Cards */
.card {
    background-color: var(--color-card-background);
    border-radius: var(--border-radius-large);
    box-shadow: 0 5px 15px var(--color-shadow-main);
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    overflow: hidden; /* Important for child border radius */
    display: flex;
    flex-direction: column;
    height: 100%; /* Make cards in a row equal height */
}
.card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 25px var(--color-shadow-strong);
}

.card .card-image.image-container { /* This is the specific div for image */
    height: 200px; /* Fixed height for image container */
    overflow: hidden;
    position: relative;
}
.card .card-image.image-container img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
}
.card:hover .card-image.image-container img {
    transform: scale(1.08);
}

.card .card-content {
    padding: calc(var(--spacing-unit) * 3); /* 24px */
    display: flex;
    flex-direction: column;
    flex-grow: 1; /* Allows content to fill card height */
    text-align: left; /* Default text align */
}
.card .card-content .title,
.card .card-content .subtitle {
    margin-bottom: calc(var(--spacing-unit) * 1.5);
}
.card .card-content .title.is-4 {
    font-size: 1.3rem;
    font-weight: 700;
}
.card .card-content .content {
    font-size: 0.95rem;
    line-height: 1.6;
    flex-grow: 1; /* Pushes actions to bottom if any */
}

.team-card .card-image.image-container {
    height: 250px; /* Or adjust as needed for portraits */
}
.team-card .card-content {
    text-align: center;
}

.resource-card .card-content .title a {
    color: var(--color-primary-main);
}
.resource-card .card-content .title a:hover {
    color: var(--color-primary-dark);
    text-decoration: underline;
}

/* 6. Section Specific Styles
-------------------------------------------------- */
/* Hero Section */
#hero {
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    position: relative;
    /* Ensure text has good contrast */
    /* linear-gradient for overlay is in inline style */
}
#hero .hero-body {
    padding-top: calc(var(--header-height) + 40px); /* Ensure content below fixed header */
    position: relative;
    z-index: 2;
}
#hero .title.is-1 {
    font-size: 3.5rem; /* Responsive font size might be needed */
    font-weight: 800;
    margin-bottom: calc(var(--spacing-unit) * 2);
    color: var(--color-text-light); /* Enforced white */
    text-shadow: 1px 1px 3px rgba(0,0,0,0.5); /* Enhance readability */
}
#hero .subtitle.is-4 {
    font-size: 1.4rem;
    margin-bottom: calc(var(--spacing-unit) * 4);
    color: var(--color-text-light); /* Enforced white */
    opacity: 0.9;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.3); /* Enhance readability */
}
#hero .hero-contact-info {
    margin-top: calc(var(--spacing-unit) * 3);
    font-size: 1.1rem;
    color: var(--color-text-light); /* Enforced white */
}
#hero .hero-contact-info p {
    color: var(--color-text-light); /* Enforced white */
}
#hero .hero-contact-info a {
    color: var(--color-text-light) !important; /* Enforced white */
    font-weight: 500;
}
#hero .hero-contact-info a:hover {
    color: var(--color-secondary-light) !important;
}

.hero-shape-divider {
    position: absolute;
    bottom: -1px; /* Overlap slightly to prevent gaps */
    left: 0;
    width: 100%;
    overflow: hidden;
    line-height: 0;
    z-index: 1;
}
.hero-shape-divider svg {
    position: relative;
    display: block;
    width: calc(100% + 1.3px);
    height: 80px; /* Adjust as needed */
}
.hero-shape-divider .shape-fill {
    fill: var(--color-background-section-light); /* Color of the section below hero */
}

/* Mission Section */
#mission .content p {
    font-size: 1.1rem;
    line-height: 1.8;
}

/* Biomorphic Images */
.biomorphic-image {
    border-radius: var(--border-radius-biomorphic);
    object-fit: cover;
    box-shadow: 0 10px 30px var(--color-shadow-strong);
    max-width: 100%;
    height: auto;
}
#mission .biomorphic-image {
    max-width: 400px;
}
#innovation .biomorphic-image {
    max-width: 500px;
}

/* Innovation Section */
#innovation .field label {
    font-size: 1rem;
    color: var(--color-text-medium);
    margin-left: var(--spacing-unit);
    cursor: pointer;
}
#innovation ul {
    list-style: disc;
    margin-left: calc(var(--spacing-unit) * 3);
    color: var(--color-text-medium);
}
#innovation ul li {
    margin-bottom: var(--spacing-unit);
}

/* Clientele & Partners Section */
#clientele img, #partners img {
    max-height: 60px; /* Adjust logo sizes */
    width: auto;
    filter: grayscale(80%);
    opacity: 0.7;
    transition: filter 0.3s ease, opacity 0.3s ease;
}
#clientele img:hover, #partners img:hover {
    filter: grayscale(0%);
    opacity: 1;
}

/* Contact Section */
#contact .contact-details-box {
    background-color: var(--color-background-section-light);
    padding: calc(var(--spacing-unit) * 3);
    border-radius: var(--border-radius-large);
    box-shadow: 0 5px 15px var(--color-shadow-main);
}
#contact .contact-details-box p {
    margin-bottom: var(--spacing-unit);
    color: var(--color-text-medium);
}
#contact .contact-details-box strong {
    color: var(--color-text-dark);
}
#contact .contact-details-box a {
    color: var(--color-primary-main);
}
#contact .contact-details-box a:hover {
    text-decoration: underline;
}
#contact figure img {
    border-radius: var(--border-radius-medium);
}

/* 7. Page Specific Styles
-------------------------------------------------- */
/* Success Page */
.success-page-container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    min-height: calc(100vh - var(--header-height)); /* Account for header */
    text-align: center;
    padding: calc(var(--spacing-unit) * 3);
    background-color: var(--color-background-body);
}
.success-page-container .icon {
    font-size: 5rem;
    color: var(--color-tertiary-main);
    margin-bottom: calc(var(--spacing-unit) * 3);
}
.success-page-container .title {
    color: var(--color-text-dark);
    margin-bottom: var(--spacing-unit);
}
.success-page-container .subtitle {
    color: var(--color-text-medium);
    margin-bottom: calc(var(--spacing-unit) * 3);
}

/* Privacy & Terms Pages */
.static-page-content {
    padding-top: calc(var(--header-height) + var(--spacing-unit) * 5); /* Extra top padding for static pages */
    padding-bottom: calc(var(--spacing-unit) * 5);
}
.static-page-content .container {
    max-width: 800px;
    background-color: var(--color-background-body);
    padding: calc(var(--spacing-unit) * 4);
    border-radius: var(--border-radius-medium);
    /* box-shadow: 0 5px 20px var(--color-shadow-main); Optional: if you want a boxed look */
}
.static-page-content h1.title {
    font-size: 2.5rem;
    margin-bottom: calc(var(--spacing-unit) * 3);
    text-align: center;
}
.static-page-content h2.title {
    font-size: 1.8rem;
    margin-top: calc(var(--spacing-unit) * 4);
    margin-bottom: calc(var(--spacing-unit) * 2);
}
.static-page-content p, .static-page-content li {
    color: var(--color-text-medium);
    line-height: 1.8;
}
.static-page-content ul {
    list-style: disc;
    margin-left: calc(var(--spacing-unit) * 3);
}

/* 8. Animations
-------------------------------------------------- */
/* Morphing Button Example (subtle) */
.morphing-button {
    position: relative;
    overflow: hidden; /* For pseudo-elements */
}
.morphing-button::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    background-color: rgba(255, 255, 255, 0.2);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    transition: width 0.4s ease, height 0.4s ease;
    z-index: 0;
}
.morphing-button:hover::before {
    width: 250%; /* Adjust to cover button */
    height: 250%;
}
.morphing-button > * { /* Ensure content is above ripple */
    position: relative;
    z-index: 1;
}

/* Text Animations (example, can be enhanced with Anime.js) */
.animated-text-fill {
    /* Example: to be animated by JS */
    opacity: 0;
    transform: translateY(20px);
}
.animated-text-opacity {
    opacity: 0;
    transform: translateY(10px);
}


/* 9. Utility Classes
-------------------------------------------------- */
.parallax-background {
    /* This would typically be controlled by JavaScript (e.g., GSAP ScrollTrigger)
       for true parallax. CSS-only 'background-attachment: fixed;' can sometimes work
       but has limitations with other positioned elements and performance. */
    background-attachment: fixed; /* Basic CSS parallax, use with caution */
}

.glassmorphic-element {
    background: rgba(255, 255, 255, 0.3); /* Semi-transparent background */
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px); /* For Safari */
    border-radius: var(--border-radius-large);
    border: 1px solid rgba(255, 255, 255, 0.18);
    box-shadow: 0 8px 32px 0 var(--color-shadow-main);
}

.read-more-link {
    font-family: var(--font-heading);
    font-weight: 600;
    color: var(--color-primary-main);
    text-decoration: none;
    display: inline-block;
    margin-top: var(--spacing-unit);
    transition: color 0.3s ease, transform 0.2s ease;
}
.read-more-link::after {
    content: ' →'; /* Arrow character */
    transition: transform 0.2s ease;
    display: inline-block;
}
.read-more-link:hover {
    color: var(--color-primary-dark);
}
.read-more-link:hover::after {
    transform: translateX(3px);
}


/* 10. Responsive Adjustments (Bulma handles most)
-------------------------------------------------- */
@media screen and (max-width: 1023px) { /* Bulma's tablet breakpoint */
    .navbar-menu {
        background-color: rgba(255, 255, 255, 0.98);
        box-shadow: 0 8px 16px rgba(10,10,10,.1);
        padding: 0.5rem 0;
        border-radius: 0 0 var(--border-radius-medium) var(--border-radius-medium);
    }
    .navbar-item {
        padding: 0.75rem 1rem;
    }
    #hero .title.is-1 {
        font-size: 2.5rem;
    }
    #hero .subtitle.is-4 {
        font-size: 1.2rem;
    }
    .section {
        padding: calc(var(--spacing-unit) * 4) var(--spacing-unit); /* 32px 8px */
    }
}

@media screen and (max-width: 768px) { /* Bulma's mobile breakpoint */
    #hero .title.is-1 {
        font-size: 2rem;
    }
    #hero .subtitle.is-4 {
        font-size: 1rem;
    }
    .columns.is-mobile {
        display: flex;
        flex-direction: column;
    }
    .columns.is-mobile > .column {
        width: 100% !important; /* Stack columns on mobile */
    }
     #contact .columns { /* Ensure contact form and details stack */
        flex-direction: column;
    }
    #contact .column.is-one-third {
        margin-top: calc(var(--spacing-unit) * 3);
    }
}