/* =========================================
   1. RESET
========================================= */

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

html {
    scroll-behavior: smooth;
    scroll-padding-top: 96px;
}

body {
    font-family:
        Inter,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        Roboto,
        Arial,
        sans-serif;

    background: #ffffff;
    color: #17201c;
    line-height: 1.6;

    overflow-x: hidden;
}

img {
    max-width: 100%;
    display: block;
}

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

button,
a {
    -webkit-tap-highlight-color: transparent;
}

button {
    font: inherit;
}

:focus-visible {
    outline: 3px solid #0d5335;
    outline-offset: 4px;
}


/* =========================================
   2. VARIABLES
========================================= */

:root {

    --primary: #16734a;
    --primary-dark: #0d5335;
    --primary-light: #eaf5ef;

    --accent: #e2a52b;

    --dark: #17201c;
    --dark-2: #25302b;

    --text: #303936;
    --muted: #69736e;

    --border: #dfe5e1;

    --surface: #f5f7f5;
    --white: #ffffff;

    --container: 1180px;

    --radius-small: 8px;
    --radius-medium: 14px;
    --radius-large: 22px;

    --shadow:
        0 12px 40px rgba(23, 32, 28, 0.08);
}


/* =========================================
   3. GLOBAL
========================================= */

.container {
    width: min(
        calc(100% - 40px),
        var(--container)
    );

    margin-inline: auto;
}

.section {
    padding: 80px 0;
}

.section-muted {
    background: var(--surface);
}

.section-dark {
    background: var(--dark);
    color: var(--white);
}

.eyebrow {
    color: var(--primary);
    font-size: 0.75rem;
    font-weight: 800;
    letter-spacing: 0.14em;
    margin-bottom: 14px;
}

.section-dark .eyebrow,
.section-heading-light .eyebrow {
    color: #7bc79f;
}

.section-heading {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 40px;
    margin-bottom: 50px;
}

.section-heading h2 {
    max-width: 650px;
    font-size: clamp(2rem, 4vw, 3.5rem);
    line-height: 1.08;
    letter-spacing: -0.04em;
}

.section-description {
    max-width: 400px;
    color: var(--muted);
}

.section-heading-light .section-description {
    color: #b6c0ba;
}


/* =========================================
   4. BUTTONS
========================================= */

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-height: 50px;
    padding: 0 24px;

    border-radius: 8px;

    font-size: 0.9rem;
    font-weight: 700;

    border: 1px solid transparent;

    transition:
        transform 180ms ease,
        background 180ms ease,
        border-color 180ms ease,
        color 180ms ease;
}

.button:hover {
    transform: translateY(-2px);
}

.button-primary {
    background: var(--primary);
    color: var(--white);
}

.button-primary:hover {
    background: var(--primary-dark);
}

.button-secondary {
    background: var(--white);
    border-color: var(--border);
    color: var(--dark);
}

.button-secondary:hover {
    border-color: var(--primary);
    color: var(--primary);
}

.button-light {
    background: var(--white);
    color: var(--primary-dark);
}

.button-outline-light {
    border-color: rgba(255,255,255,0.4);
    color: var(--white);
}

.button-outline-light:hover {
    border-color: var(--white);
}


/* =========================================
   5. HEADER
========================================= */

.site-header {
    position: sticky;
    top: 0;
    z-index: 100;

    background: rgba(255, 255, 255, 0.96);
    border-bottom: 1px solid var(--border);

    backdrop-filter: blur(12px);
}

.header-inner {
    min-height: 76px;
    gap: 16px;

    display: flex;
    align-items: center;
    justify-content: space-between;
}

.logo {
    font-size: 1.3rem;
    font-weight: 900;
    letter-spacing: -0.04em;
}

.logo span {
    color: var(--primary);
}

.main-navigation {
    display: flex;
    align-items: center;
    gap: 30px;
}

.main-navigation a {
    position: relative;

    font-size: 0.9rem;
    font-weight: 600;

    color: var(--text);
}

.main-navigation a::after {
    content: "";

    position: absolute;
    left: 0;
    bottom: -7px;

    width: 0;
    height: 2px;

    background: var(--primary);

    transition: width 180ms ease;
}

.main-navigation a:hover::after {
    width: 100%;
}

.menu-toggle {
    display: none;

    width: 44px;
    height: 44px;

    border: 0;
    background: transparent;

    cursor: pointer;
}

.menu-toggle span {
    display: block;

    width: 24px;
    height: 2px;

    margin: 5px auto;

    background: var(--dark);
}


/* =========================================
   6. HERO
========================================= */

.hero {
    padding: 60px 0 70px;

    background:
        linear-gradient(
            180deg,
            #f5f8f6 0%,
            #ffffff 100%
        );
}

.hero-grid {
    min-height: 480px;

    display: grid;

    grid-template-columns:
        minmax(0, 0.9fr)
        minmax(0, 1.1fr);

    align-items: center;

    gap: 55px;
}

.hero-content h1 {
    max-width: 700px;

    font-size: clamp(2.1rem, 4vw, 3.1rem);

    line-height: 1.12;

    letter-spacing: -0.035em;
    overflow-wrap: anywhere;
}

.hero-line { display: block; }

.hero-text {
    max-width: 570px;

    margin: 28px 0 34px;

    font-size: 1.08rem;

    color: var(--muted);
}

    .hero-actions {
    display: flex;

    flex-wrap: wrap;

    gap: 12px;
}

.hero-visual {
    position: relative;

    width: 100%;

    display: flex;

    justify-content: center;
}

.hero-image {
    width: 100%;

    max-width: 720px;

    aspect-ratio: 16 / 9;

    overflow: hidden;

    border-radius: var(--radius-large);

    background: #f3f4f2;
}

.hero-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
}

.hero-badge {
    position: absolute;

    right: 16px;
    bottom: 16px;

    display: flex;

    flex-direction: column;

    padding: 12px 16px;

    background: var(--white);

    border-radius: var(--radius-medium);

    box-shadow: var(--shadow);
}

.hero-badge strong {
    color: var(--primary);

    font-size: 1.4rem;
}

.hero-badge span {
    color: var(--muted);

    font-size: 0.8rem;
}
/* =========================================
   7. ABOUT
========================================= */

.about-grid {
    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}

.about-card {
    padding: 30px 24px;
    border-right: 1px solid var(--border);
}

.about-card:last-child {
    border-right: 0;
}

.about-number {
    display: block;

    margin-bottom: 45px;

    color: var(--primary);
    font-size: 0.75rem;
    font-weight: 800;
}

.about-card h3 {
    margin-bottom: 10px;

    font-size: 1.1rem;
}

.about-card p {
    color: var(--muted);
    font-size: 0.9rem;
}


/* =========================================
   8. CATEGORIES
========================================= */

.category-grid {
    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap: 18px;
}

.category-card {
    background: var(--white);

    border: 1px solid var(--border);
    border-radius: var(--radius-medium);

    overflow: hidden;

    transition:
        transform 180ms ease,
        box-shadow 180ms ease;
}

.category-card:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow);
}

.category-image {
    aspect-ratio: 1.5 / 1;
    overflow: hidden;
    background: var(--surface);
}

.category-image img,
.product-image img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.category-content {
    padding: 24px;
}

.category-number {
    margin-bottom: 25px;

    color: var(--primary);
    font-size: 0.75rem;
    font-weight: 800;
}

.category-content h3 {
    margin-bottom: 10px;

    font-size: 1.25rem;
}

.category-content p {
    margin-bottom: 20px;

    color: var(--muted);
    font-size: 0.9rem;
}

.text-link {
    color: var(--primary);
    font-size: 0.85rem;
    font-weight: 800;
}


/* =========================================
   9. PRODUCTS
========================================= */

.product-grid {
    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 24px;
}

.product-card {
    border: 1px solid var(--border);
    border-radius: var(--radius-medium);

    overflow: hidden;

    background: var(--white);

    transition:
        transform 180ms ease,
        box-shadow 180ms ease;
}

.product-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow);
}

.product-image {
    aspect-ratio: 1.25 / 1;
    overflow: hidden;
    background: var(--surface);
}

.product-info {
    padding: 24px;
}

.product-category {
    color: var(--primary);

    font-size: 0.72rem;
    font-weight: 800;

    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.product-info h3 {
    margin: 8px 0 4px;

    font-size: 1.2rem;
}

.product-brand {
    font-weight: 700;
}

.product-meta {
    margin-top: 5px;

    color: var(--muted);
    font-size: 0.85rem;
}

.product-button {
    width: 100%;

    min-height: 46px;

    margin-top: 22px;

    border: 1px solid var(--border);
    border-radius: 7px;

    background: var(--white);

    color: var(--primary);

    font-weight: 700;

    cursor: pointer;

    transition:
        background 180ms ease,
        color 180ms ease;
}

.product-button:hover {
    background: var(--primary);
    color: var(--white);
}


/* =========================================
   10. BRANDS
========================================= */

.brand-grid {
    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 14px;
}

.brand-name {
    min-height: 130px;

    display: grid;
    place-items: center;

    border: 1px solid #39443f;
    border-radius: var(--radius-medium);

    color: #9da9a2;

    font-size: 0.8rem;
    font-weight: 800;

    letter-spacing: 0.1em;

    transition:
        border-color 180ms ease,
        color 180ms ease;
}

/* =========================================
   11. PROCESS
========================================= */

.process-grid {
    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    border-top: 1px solid var(--border);
    border-bottom: 1px solid var(--border);
}

.process-step {
    padding: 30px 24px;

    border-right: 1px solid var(--border);
}

.process-step:last-child {
    border-right: 0;
}

.process-number {
    display: inline-block;

    margin-bottom: 50px;

    color: var(--primary);

    font-size: 0.75rem;
    font-weight: 900;
}

.process-step h3 {
    margin-bottom: 10px;

    font-size: 1.05rem;
}

.process-step p {
    color: var(--muted);
    font-size: 0.9rem;
}


/* =========================================
   12. CTA
========================================= */

.cta {
    padding-top: 0;
}

.cta-box {
    display: flex;

    align-items: center;
    justify-content: space-between;

    gap: 40px;

    padding: 60px;

    border-radius: var(--radius-large);

    background: var(--primary);

    color: var(--white);
}

.cta-box .eyebrow {
    color: #ffffff;
}

.cta-box h2 {
    max-width: 650px;

    margin-bottom: 15px;

    font-size: clamp(2rem, 4vw, 3.5rem);
    line-height: 1.05;

    letter-spacing: -0.04em;
}

.cta-box p {
    color: #d6e9de;
}

.cta-actions {
    display: flex;
    flex-wrap: wrap;

    gap: 10px;

    flex-shrink: 0;
}


/* =========================================
   13. CONTACTS
========================================= */

.contact-grid {
    display: grid;

    grid-template-columns:
        1fr 1fr;

    gap: 100px;
}

.contact-grid h2 {
    overflow-wrap: anywhere;
    max-width: 600px;

    font-size: clamp(2.5rem, 5vw, 4.5rem);

    line-height: 1;

    letter-spacing: -0.05em;
}

.contact-description {
    max-width: 500px;

    margin-top: 25px;

    color: var(--muted);
}

.contact-list {
    border-top: 1px solid var(--border);
}

.contact-item {
    display: flex;

    align-items: center;
    justify-content: space-between;

    gap: 20px;

    padding: 20px 0;

    border-bottom: 1px solid var(--border);
}

.contact-item span {
    color: var(--muted);
    font-size: 0.85rem;
}

.contact-item strong {
    font-size: 0.95rem;
    text-align: right;
}


/* =========================================
   14. FOOTER
========================================= */

.site-footer {
    padding: 65px 0 25px;

    background: var(--dark);
    color: var(--white);
}

.footer-grid {
    display: grid;

    grid-template-columns:
        2fr 1fr 1fr;

    gap: 60px;
}

.footer-logo {
    display: inline-block;

    margin-bottom: 15px;
}

.site-footer p {
    max-width: 300px;

    color: #9da8a2;
}

.site-footer h3 {
    margin-bottom: 15px;

    font-size: 0.9rem;
}

.footer-links {
    display: flex;
    flex-direction: column;

    gap: 8px;
}

.footer-links a {
    color: #aeb8b2;

    font-size: 0.85rem;

    transition: color 180ms ease;
}

.footer-links a:hover {
    color: var(--white);
}

.footer-bottom {
    display: flex;

    justify-content: space-between;

    gap: 20px;

    margin-top: 60px;
    padding-top: 20px;

    border-top: 1px solid #35403b;
}

.footer-bottom p {
    font-size: 0.75rem;
}


/* =========================================
   15. MODAL
========================================= */

.modal {
    position: fixed;

    inset: 0;

    z-index: 200;

    display: none;

    align-items: center;
    justify-content: center;

    padding: 20px;
}

.modal.is-open {
    display: flex;
}

.modal-overlay {
    position: absolute;

    inset: 0;

    background: rgba(10, 20, 15, 0.65);
}

.modal-content {
    position: relative;
    z-index: 1;

    width: min(100%, 540px);
    max-height: calc(100dvh - 40px);
    overflow-y: auto;

    padding: 40px;

    border-radius: var(--radius-medium);

    background: var(--white);

    box-shadow:
        0 30px 100px rgba(0,0,0,0.25);
}

.modal-content h2 {
    margin-bottom: 15px;

    font-size: 2rem;
    padding-right: 20px;
    overflow-wrap: anywhere;
}

.modal-content p {
    color: var(--muted);
}

.modal-close {
    position: absolute;

    top: 15px;
    right: 18px;

    width: 44px;
    height: 44px;

    border: 0;

    background: transparent;

    font-size: 1.8rem;

    cursor: pointer;
}

.modal-contact {
    margin-top: 25px;
}


/* =========================================
   16. TABLET
========================================= */

@media (max-width: 900px) {

    .section {
        padding: 70px 0;
    }

    .hero-grid {
        grid-template-columns: 1fr;

        min-height: auto;

        gap: 50px;
    }

    .hero-content h1 {
        max-width: 800px;
    }

    .hero-visual {
        max-width: 650px;
    }

    .about-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .about-card:nth-child(2) {
        border-right: 0;
    }

    .about-card:nth-child(-n + 2) {
        border-bottom: 1px solid var(--border);
    }

    .category-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .product-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .process-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .process-step:nth-child(2) {
        border-right: 0;
    }

    .process-step:nth-child(-n + 2) {
        border-bottom: 1px solid var(--border);
    }

    .contact-grid {
        gap: 50px;
    }

    .cta-box {
        flex-direction: column;
        align-items: flex-start;
    }

}


/* =========================================
   17. MOBILE NAVIGATION
========================================= */

@media (max-width: 700px) {

    .container {
        width: min(
            calc(100% - 30px),
            var(--container)
        );
    }

    .section {
        padding: 48px 0;
    }

    .hero {
        padding: 40px 0 48px;
    }

    .hero-content h1 {
        font-size: clamp(1.95rem, 6.8vw, 2.65rem);
    }

    .hero-text {
        font-size: 1rem;
    }

    .section-heading {
        flex-direction: column;
        align-items: flex-start;

        gap: 20px;

        margin-bottom: 35px;
    }

    .section-heading h2 {
        font-size: clamp(1.85rem, 6.5vw, 2.4rem);
    }

    .about-grid,
    .category-grid,
    .product-grid,
    .brand-grid,
    .process-grid,
    .contact-grid,
    .footer-grid {
        grid-template-columns: 1fr;
    }

    .about-card,
    .process-step {
        border-right: 0;
        border-bottom: 1px solid var(--border);
    }

    .about-card:last-child,
    .process-step:last-child {
        border-bottom: 0;
    }

    .about-number,
    .process-number {
        margin-bottom: 25px;
    }

    .cta-box {
        padding: 35px 25px;
    }

    .cta-actions {
        width: 100%;
    }

    .cta-actions .button {
        flex: 1;
    }

    .contact-grid h2 {
        font-size: clamp(1.9rem, 6.5vw, 2.25rem);
        line-height: 1.15;
    }

    .contact-item {
        align-items: flex-start;
        flex-direction: column;

        gap: 4px;
    }

    .contact-item strong {
        text-align: left;
    }

    .footer-grid {
        gap: 40px;
    }

    .footer-bottom {
        flex-direction: column;

        margin-top: 40px;
    }

}


/* =========================================
   18. SMALL PHONES
========================================= */

@media (max-width: 380px) {

    .hero-actions {
        flex-direction: column;
    }

    .hero-actions .button {
        width: 100%;
    }

    .cta-actions {
        flex-direction: column;
    }

    .cta-actions .button {
        width: 100%;
    }

}

/* Shared language control and catalog additions */
[hidden] { display: none !important; }
.contact-grid > *, .footer-grid > * { min-width: 0; }
.logo, .menu-toggle { flex-shrink: 0; }
.language-switcher {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    padding: 3px;
    border: 1px solid var(--border);
    border-radius: var(--radius-small);
    background: var(--surface);
}
.language-button {
    min-width: 40px;
    min-height: 44px;
    padding: 5px 7px;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: var(--muted);
    font-size: 0.72rem;
    font-weight: 700;
    cursor: pointer;
}
.language-button:hover { background: var(--primary-light); color: var(--primary-dark); }
.language-button.is-active { background: var(--primary); color: var(--white); }
.language-button:focus-visible, .filter-button:focus-visible {
    outline: 3px solid var(--primary-dark);
    outline-offset: 2px;
}
.catalog-actions { margin-top: 36px; text-align: center; }
.catalog-intro h1 {
    font-size: clamp(2.4rem, 5vw, 4.5rem);
    line-height: 1.08;
    letter-spacing: -0.04em;
    overflow-wrap: anywhere;
}
.catalog-intro .section-description { max-width: 720px; margin-top: 24px; }
.catalog-filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 32px; }
.filter-button {
    border: 1px solid var(--border);
    border-radius: var(--radius-small);
    padding: 10px 16px;
    min-height: 44px;
    max-width: 100%;
    background: var(--white);
    color: var(--text);
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
}
.filter-button:hover { background: var(--primary-light); border-color: var(--primary); }
.filter-button.is-active { background: var(--primary); color: var(--white); border-color: var(--primary); }
.catalog-empty { padding: 30px; background: var(--surface); border-radius: var(--radius-medium); }
.catalog-load-state { padding: 24px 0; }
.catalog-load-state[hidden], .catalog-retry[hidden] { display: none; }
.catalog-load-state p { margin-bottom: 16px; }
.modal-product-image { display: block; width: 100%; height: 220px; object-fit: contain; margin: 16px 0; }
.modal-product-image[hidden] { display: none; }
.modal-product-summary { margin-bottom: 16px; font-weight: 600; }
@media (min-width: 901px) and (max-width: 1100px) {
    .main-navigation { gap: 16px; }
    .cta-box { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 900px) {
    .header-inner { justify-content: flex-start; }
    .language-switcher { margin-left: auto; }
    .menu-toggle { display: block; order: 3; }
    .main-navigation {
        position: absolute;
        top: 100%; left: 0; right: 0;
        display: none;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        padding: 10px 15px 20px;
        background: var(--white);
        border-bottom: 1px solid var(--border);
        box-shadow: 0 15px 30px rgba(0,0,0,0.08);
    }
    .main-navigation.is-open { display: flex; }
    .main-navigation a { padding: 15px; border-bottom: 1px solid var(--border); }
    .main-navigation a:last-child { border-bottom: 0; }
    .main-navigation a::after { display: none; }
}
@media (max-width: 430px) {
    .header-inner { gap: 8px; }
    .language-button { min-width: 37px; padding-inline: 5px; }
    .modal-content { padding: 40px 24px 28px; }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { transition: none !important; }
}

/* Consistent cards and small accessibility improvements */
.product-card { display: flex; flex-direction: column; }
.product-info { display: flex; flex: 1; flex-direction: column; }
.product-info .product-button { margin-top: auto; }
.product-info > :has(+ .product-button) { margin-bottom: 22px; }
.category-card-link { display: flex; height: 100%; flex-direction: column; }
.category-content { display: flex; flex: 1; flex-direction: column; }
.category-content .text-link { margin-top: auto; }
.category-card:focus-within { border-color: var(--primary); }
.category-card-link:focus-visible { outline-offset: -4px; }
.main-navigation a[aria-current="page"] { color: var(--primary-dark); }
.main-navigation a[aria-current="page"]::after { width: 100%; }
.catalog-result-count { margin: -16px 0 24px; color: var(--muted); font-size: .9rem; }
.filter-label { display: block; font-size: .9rem; font-weight: 700; margin-bottom: 10px; }
.brand-filter-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: -8px 0 32px; }
.brand-filter-row .filter-label { margin: 0; }
#brand-filter { font: inherit; color: var(--text); background: var(--white); border: 1px solid var(--border); border-radius: var(--radius-small); min-height: 46px; padding: 8px 36px 8px 12px; width: 260px; max-width: 100%; }
#brand-filter:hover { border-color: var(--primary); }
.reset-filters { border: 0; background: transparent; min-height: 44px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 430px) {
    .brand-filter-row { align-items: stretch; }
    .brand-filter-row .filter-label { width: 100%; }
    #brand-filter { width: 100%; }
}
.contact-selection { margin-top: 24px; padding: 18px; border-left: 3px solid var(--primary); background: var(--surface); }
.clear-selection { border: 0; background: transparent; cursor: pointer; min-height: 44px; text-decoration: underline; text-underline-offset: 3px; }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link { position: fixed; top: 8px; left: 16px; z-index: 300; padding: 12px 18px; background: var(--white); color: var(--primary-dark); border: 2px solid var(--primary); transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }
.site-footer :focus-visible, .cta-box :focus-visible { outline-color: var(--white); }
#main-content:focus, #contacts:focus { outline: none; }
@media (max-width: 900px) {
    .hero-visual { flex-direction: column; gap: 12px; }
    .hero-badge { position: static; align-self: flex-start; flex-direction: row; align-items: center; gap: 12px; padding: 10px 14px; box-shadow: none; border: 1px solid var(--border); }
    .hero-badge strong { font-size: 1rem; }
    .main-navigation { max-height: calc(100dvh - 76px); overflow-y: auto; }
}
@media (max-width: 700px) {
    .hero-grid { gap: 32px; }
    .hero-text { margin: 22px 0 26px; }
    .catalog-intro { padding: 42px 0; }
    .catalog-intro h1 { font-size: clamp(2rem, 7vw, 2.7rem); }
}
