/*
Theme Name: VBaseUp
Theme URI: https://vbaseup.com/
Author: VBaseUp
Author URI: https://vbaseup.com/
Description: Custom WordPress theme converted from the VBaseUp static HTML website. Includes dedicated templates for Home, About, Services, Projects, Contact and FAQ.
Version: 1.0.1
Requires at least: 6.0
Tested up to: 6.8
Requires PHP: 7.4
Text Domain: vbaseup
*/


        /* BRAND FOUNDATION
           Heading: Manrope 700/800
           Body: Inter 400/600
           Text palette: deep green / ink / muted green-gray
           Accent green is reserved for labels, links and key metrics. */
        :root {
            --brand-emerald: #008F62;
            --brand-deep: #064E3B;
            --brand-ink: #17201C;
            --brand-muted: #52605A;
            --brand-soft: #D1FAE5;
            --brand-white: #FFFFFF;
        }

        /* BASE & TYPOGRAPHY */
        body {
            font-family: 'Inter', sans-serif;
            color: var(--brand-ink);
            background-color: var(--brand-white);
            font-size: 1rem;
            line-height: 1.65;
            -webkit-font-smoothing: antialiased;
            overflow-x: clip;
        }
        h1, h2, h3, h4, h5, h6 {
            font-family: 'Manrope', sans-serif;
            letter-spacing: -0.02em;
        }
        html {
            scroll-behavior: smooth;
        }

        /* BRAND TYPE SCALE */
        .brand-display,
        .brand-page-title,
        .brand-section-title,
        .brand-feature-title,
        .brand-card-title,
        .brand-faq-title {
            margin-top: 0;
            font-family: 'Manrope', sans-serif;
        }

        .brand-display {
            color: var(--brand-deep);
            font-size: clamp(2.25rem, 5.5vw, 3.75rem);
            font-weight: 800;
            line-height: 1.08;
            letter-spacing: -0.04em;
        }

        .brand-page-title {
            color: var(--brand-deep);
            font-size: clamp(1.75rem, 4.25vw, 2.75rem);
            font-weight: 800;
            line-height: 1.18;
            letter-spacing: -0.035em;
        }

        .brand-section-title {
            color: var(--brand-deep);
            font-size: clamp(1.5rem, 3.25vw, 2rem);
            font-weight: 800;
            line-height: 1.25;
            letter-spacing: -0.03em;
        }

        .brand-feature-title {
            color: var(--brand-ink);
            font-size: clamp(1.25rem, 2.5vw, 1.5rem);
            font-weight: 800;
            line-height: 1.32;
        }

        .brand-card-title {
            color: var(--brand-ink);
            font-size: 1.125rem;
            font-weight: 700;
            line-height: 1.35;
        }

        .brand-faq-title {
            color: var(--brand-ink);
            font-size: 1rem;
            font-weight: 700;
            line-height: 1.45;
            letter-spacing: -0.01em;
        }

        .brand-eyebrow,
        .brand-overline {
            display: inline-flex;
            color: var(--brand-emerald);
            font-family: 'Inter', sans-serif;
            font-size: 0.75rem;
            font-weight: 700;
            line-height: 1.4;
            letter-spacing: 0.13em;
            text-transform: uppercase;
        }

        .brand-overline {
            color: var(--brand-muted);
            letter-spacing: 0.1em;
        }

        .brand-list-label {
            display: block;
            color: var(--brand-ink);
            font-family: 'Inter', sans-serif;
            font-size: 0.75rem;
            font-weight: 700;
            line-height: 1.4;
            letter-spacing: 0.1em;
            text-transform: uppercase;
        }

        .brand-lead,
        .brand-body,
        .brand-caption,
        .brand-meta {
            font-family: 'Inter', sans-serif;
            font-weight: 400;
        }

        .brand-lead {
            color: var(--brand-muted);
            font-size: 1.125rem;
            line-height: 1.75;
        }

        .brand-body,
        .brand-body p {
            color: var(--brand-muted);
            font-size: 1rem;
            line-height: 1.75;
        }

        .brand-caption,
        .brand-meta {
            color: var(--brand-muted);
            font-size: 0.875rem;
            line-height: 1.6;
        }

        .brand-meta {
            font-weight: 600;
        }

        .brand-tag {
            color: var(--brand-ink);
            font-family: 'Inter', sans-serif;
            font-size: 0.75rem;
            font-weight: 600;
            line-height: 1.5;
        }

        .brand-form-title {
            color: var(--brand-ink);
            font-family: 'Manrope', sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1.5;
        }

        .brand-field-label {
            color: var(--brand-ink);
            font-family: 'Inter', sans-serif;
            font-size: 0.875rem;
            font-weight: 600;
            line-height: 1.5;
        }

        .brand-option {
            color: var(--brand-muted);
            font-family: 'Inter', sans-serif;
            font-size: 1rem;
            font-weight: 400;
            line-height: 1.6;
        }

        .group:hover .brand-option {
            color: var(--brand-ink);
        }

        .brand-button,
        .brand-text-link {
            font-family: 'Inter', sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1.5;
            letter-spacing: 0;
        }

        .brand-button--compact {
            font-size: 0.875rem;
        }

        .brand-text-link {
            color: var(--brand-emerald);
        }

        .brand-text-link:hover {
            color: var(--brand-deep);
        }

        .brand-nav-link,
        .brand-mobile-nav {
            color: var(--brand-muted);
            font-family: 'Inter', sans-serif;
            font-size: 0.875rem;
            font-weight: 700;
            line-height: 1.5;
        }

        .brand-mobile-nav {
            font-size: 1rem;
        }

        .brand-nav-link:hover,
        .brand-mobile-nav:hover,
        .brand-nav-link[aria-current="page"],
        .brand-mobile-nav[aria-current="page"] {
            color: var(--brand-emerald);
        }

        .group:hover .brand-faq-title {
            color: var(--brand-emerald);
        }

        .brand-list-item {
            color: var(--brand-ink);
            font-family: 'Inter', sans-serif;
            font-size: 0.875rem;
            font-weight: 400;
            line-height: 1.55;
        }

        .brand-list-item--muted {
            color: rgba(82, 96, 90, 0.62);
        }

        .brand-list-item.font-bold {
            font-weight: 700;
        }

        .brand-list-item--accent {
            color: var(--brand-emerald);
        }

        .brand-badge {
            color: var(--brand-white);
            font-family: 'Inter', sans-serif;
            font-size: 0.75rem;
            font-weight: 700;
            line-height: 1.4;
            letter-spacing: 0.1em;
            text-transform: uppercase;
        }

        .brand-metric {
            color: var(--brand-ink);
            font-family: 'Manrope', sans-serif;
            font-size: clamp(1.125rem, 3vw, 1.5rem);
            font-weight: 800;
            line-height: 1.2;
            letter-spacing: -0.025em;
        }

        .brand-metric--accent {
            color: var(--brand-emerald);
        }

        .brand-metric--negative {
            color: #DC2626;
        }

        .brand-metric-unit {
            color: var(--brand-muted);
            font-family: 'Inter', sans-serif;
            font-size: 0.75rem;
            font-weight: 400;
            line-height: 1.4;
        }

        .brand-step {
            color: var(--brand-white);
            font-family: 'Manrope', sans-serif;
            font-size: 1.125rem;
            font-weight: 800;
            line-height: 1;
        }

        .brand-mini-title {
            color: var(--brand-white);
            font-family: 'Inter', sans-serif;
            font-size: 1rem;
            font-weight: 700;
            line-height: 1.2;
        }

        .brand-price {
            color: var(--brand-ink);
            font-family: 'Manrope', sans-serif;
            font-size: 2rem;
            font-weight: 800;
            line-height: 1.2;
            letter-spacing: -0.03em;
        }

        .brand-stat {
            color: var(--brand-emerald);
            font-family: 'Manrope', sans-serif;
            font-size: clamp(1.75rem, 4vw, 2.25rem);
            font-weight: 800;
            line-height: 1.2;
            letter-spacing: -0.035em;
        }

        .brand-quote {
            color: var(--brand-emerald);
            font-family: 'Manrope', sans-serif;
            font-size: clamp(1.25rem, 3vw, 1.5rem);
            font-weight: 800;
            line-height: 1.45;
            letter-spacing: -0.02em;
        }

        .brand-body .brand-quote {
            color: var(--brand-emerald);
            font-family: 'Manrope', sans-serif;
            font-size: clamp(1.25rem, 3vw, 1.5rem);
            font-weight: 800;
            line-height: 1.45;
            letter-spacing: -0.02em;
        }

        .brand-body .brand-card-title {
            font-family: 'Manrope', sans-serif;
            font-size: 1.25rem;
            font-weight: 700;
            line-height: 1.35;
            letter-spacing: -0.02em;
        }

        .brand-body strong,
        .brand-lead strong {
            color: var(--brand-ink);
            font-weight: 700;
        }

        .brand-inverse .brand-section-title,
        .brand-inverse .brand-feature-title,
        .brand-inverse .brand-card-title {
            color: var(--brand-white);
        }

        .brand-inverse .brand-body,
        .brand-inverse .brand-body p,
        .brand-inverse .brand-lead,
        .brand-inverse .brand-caption {
            color: var(--brand-soft);
        }

        .brand-inverse .brand-body strong,
        .brand-inverse .brand-lead strong {
            color: var(--brand-white);
        }

        button,
        input,
        textarea,
        select {
            font: inherit;
        }

        a:focus-visible,
        button:focus-visible,
        input:focus-visible {
            outline: 3px solid rgba(0, 143, 98, 0.35);
            outline-offset: 3px;
        }

        /* CUSTOM SCROLLBAR */
        ::-webkit-scrollbar { width: 6px; }
        ::-webkit-scrollbar-track { background: #FFFFFF; }
        ::-webkit-scrollbar-thumb { background: #DDE5E1; border-radius: 4px; }
        ::-webkit-scrollbar-thumb:hover { background: #008F62; }

        /* COMPONENTS */
        .faq-content {
            transition: max-height 0.3s ease-out, opacity 0.3s ease-out;
            max-height: 0;
            opacity: 0;
            overflow: hidden;
            color: var(--brand-muted);
            font-size: 1rem;
            line-height: 1.75;
        }
        .faq-content p,
        .faq-content div {
            color: inherit;
            font-size: inherit;
            line-height: inherit;
        }
        .faq-item.active .faq-content {
            opacity: 1;
            margin-top: 1rem;
        }
        .faq-item.active .faq-icon {
            transform: rotate(180deg);
        }

        .input-validate:valid + .check-icon {
            opacity: 1;
            transform: scale(1);
        }

        /* ABOUT INTRO
           Mobile follows the HTML reading order: content first, portrait last. */
        .about-intro {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 3rem;
        }

        .about-intro__content,
        .about-intro__portrait {
            width: 100%;
            min-width: 0;
        }

        .about-intro__portrait {
            position: relative;
            max-width: 32rem;
            margin-inline: auto;
        }

        @media (min-width: 768px) {
            .about-intro {
                flex-direction: row;
            }

            .about-intro__portrait {
                order: 1;
                width: 41.666667%;
                max-width: none;
                margin-inline: 0;
            }

            .about-intro__content {
                order: 2;
                width: 58.333333%;
            }
        }

        @media (min-width: 1024px) {
            .about-intro {
                gap: 4rem;
            }
        }

        /* PROJECT CASE STUDIES
           Keep the mobile reading order in the HTML itself:
           project name -> image -> project details. */
        .project-case {
            display: grid;
            grid-template-columns: minmax(0, 1fr);
            grid-template-areas:
                "header"
                "media"
                "details";
            gap: 1.5rem;
            align-items: start;
        }

        .project-case__header {
            grid-area: header;
            min-width: 0;
        }

        .project-case__media {
            grid-area: media;
            min-width: 0;
        }

        .project-case__details {
            grid-area: details;
            min-width: 0;
        }

        @media (max-width: 767px) {
            .project-case {
                display: flex !important;
                flex-direction: column !important;
                gap: 1.5rem !important;
            }

            .project-case__header {
                order: 1 !important;
            }

            .project-case__media {
                order: 2 !important;
            }

            .project-case__details {
                order: 3 !important;
            }
        }

        @media (min-width: 768px) {
            .project-case {
                grid-template-columns: repeat(2, minmax(0, 1fr));
                grid-template-areas:
                    "media header"
                    "media details";
                column-gap: 4rem;
                row-gap: 0;
            }

            .project-case--reverse {
                grid-template-areas:
                    "header media"
                    "details media";
            }

            .project-case__header {
                padding-bottom: 1.5rem;
            }

            .project-case__media {
                align-self: center;
            }
        }

        /* UTILITIES & PATTERNS */
        .bg-pattern-green {
            background-image: radial-gradient(#008F62 1px, transparent 1px);
            background-size: 24px 24px;
            opacity: 0.05;
        }

        /* ANIMATIONS */
        @keyframes float {
            0% { transform: translateY(0px); }
            50% { transform: translateY(-10px); }
            100% { transform: translateY(0px); }
        }
        .animate-float { animation: float 6s ease-in-out infinite; }
        .animate-float-delayed { animation: float 6s ease-in-out 3s infinite; }

        @media (max-width: 767px) {
            .animate-float,
            .animate-float-delayed {
                animation: none;
            }
        }

        @media (prefers-reduced-motion: reduce) {
            html { scroll-behavior: auto; }

            *,
            *::before,
            *::after {
                scroll-behavior: auto !important;
                animation-duration: 0.01ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: 0.01ms !important;
            }
        }
    

/* WordPress integration */
.admin-bar .vbase-site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .vbase-site-header { top: 46px; } }
.custom-logo { height: 3rem; width: auto; object-fit: contain; }
@media (min-width: 1024px) { .custom-logo { height: 4rem; } }
.vbase-content-area img { max-width: 100%; height: auto; }
.alignwide { max-width: 80rem; margin-inline: auto; }
.alignfull { width: 100%; }
