/* =============================================================================
   TreeDům s.r.o. — Global Styles
   Každá sekce (.td-*) je self-contained blok pro Elementor widgety.
   Žádná sekce nezávisí na rodičovském elementu.
   ============================================================================= */

/* ===== RESET & CUSTOM PROPERTIES ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    /* Brand — cool teal/slate (odlišení od for-best.cz warm gold palette) */
    --td-green-900: #0f2d2e;
    --td-green-800: #163d3e;
    --td-green-700: #1a5c52;
    --td-green-600: #228272;
    --td-green-500: #2ba48e;
    --td-green-400: #4fc4aa;
    --td-green-300: #7edbc4;
    --td-green-200: #b8ede0;
    --td-green-100: #e0f7f1;
    --td-green-50:  #f0fbf8;
    /* Wood accent — subtle, architectural */
    --td-warm-700: #5c4a3a;
    --td-warm-500: #8b7460;
    --td-warm-200: #d9cfc4;
    --td-warm-100: #ece7e0;
    --td-warm-50:  #f7f5f2;
    /* Slate neutrals — cooler than generic gray */
    --td-white: #ffffff;
    --td-gray-50:  #f7f9fa;
    --td-gray-100: #edf0f3;
    --td-gray-200: #dde2e8;
    --td-gray-300: #c8ced6;
    --td-gray-400: #8d97a5;
    --td-gray-500: #5e6a7a;
    --td-gray-600: #3e4d5e;
    --td-gray-700: #2b3a4a;
    --td-gray-800: #1a2535;
    /* Shadows */
    --td-shadow-sm: 0 1px 3px rgba(0,0,0,.06);
    --td-shadow-md: 0 4px 16px rgba(0,0,0,.08);
    --td-shadow-lg: 0 8px 32px rgba(0,0,0,.1);
    --td-shadow-xl: 0 16px 48px rgba(0,0,0,.12);
    /* Radius */
    --td-radius-sm: 8px;
    --td-radius-md: 12px;
    --td-radius-lg: 20px;
    --td-radius-xl: 28px;
    /* Transition */
    --td-ease: cubic-bezier(.4, 0, .2, 1);
}

html { scroll-behavior: smooth; font-size: 16px; }

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    color: var(--td-gray-800);
    line-height: 1.7;
    background: var(--td-white);
    overflow-x: hidden;
}

h1, h2, h3, h4 {
    font-family: 'DM Serif Display', Georgia, serif;
    line-height: 1.2;
    color: var(--td-green-900);
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; height: auto; display: block; }
ul { list-style: none; }

/* ===== REUSABLE ATOMS ===== */
/* Each can be used independently inside any Elementor widget */

.td-container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
}

.td-section-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: .8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--td-green-600);
    margin-bottom: 16px;
    font-family: 'Inter', sans-serif;
}
.td-section-label::before {
    content: '';
    width: 24px;
    height: 2px;
    background: var(--td-green-400);
    border-radius: 1px;
}

.td-section-title {
    font-size: clamp(2rem, 3.5vw, 2.8rem);
    margin-bottom: 20px;
    letter-spacing: -.01em;
}

.td-section-desc {
    font-size: 1.05rem;
    color: var(--td-gray-500);
    max-width: 600px;
    line-height: 1.8;
}

.td-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 16px 32px;
    font-family: 'Inter', sans-serif;
    font-size: .95rem;
    font-weight: 600;
    border-radius: var(--td-radius-xl);
    border: none;
    cursor: pointer;
    transition: all .25s var(--td-ease);
    text-decoration: none;
}
.td-btn-primary {
    background: var(--td-green-700);
    color: var(--td-white);
    box-shadow: 0 4px 16px rgba(45,96,71,.3);
}
.td-btn-primary:hover {
    background: var(--td-green-800);
    transform: translateY(-2px);
    box-shadow: 0 6px 24px rgba(45,96,71,.35);
}
.td-btn-outline {
    background: var(--td-white);
    color: var(--td-green-800);
    border: 2px solid var(--td-green-200);
}
.td-btn-outline:hover {
    border-color: var(--td-green-400);
    background: var(--td-green-50);
}
.td-btn-white {
    background: var(--td-white);
    color: var(--td-green-800);
    box-shadow: var(--td-shadow-md);
}
.td-btn-white:hover {
    transform: translateY(-2px);
    box-shadow: var(--td-shadow-lg);
}
.td-btn-sm {
    padding: 12px 24px;
    font-size: .88rem;
}
.td-btn-arrow::after {
    content: '→';
    transition: transform .2s;
}
.td-btn-arrow:hover::after {
    transform: translateX(4px);
}

/* ===== REAL & PLACEHOLDER IMAGES ===== */
.td-real-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    border-radius: inherit;
}
.td-img-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 12px;
    font-size: .85rem;
    color: var(--td-gray-400);
    text-align: center;
    padding: 40px;
}
.td-img-placeholder--green {
    background: linear-gradient(135deg, var(--td-green-100) 0%, var(--td-green-200) 100%);
}
.td-img-placeholder--warm {
    background: linear-gradient(135deg, var(--td-green-100) 0%, var(--td-warm-200) 100%);
}
.td-img-placeholder svg {
    opacity: .5;
}

/* ===== SCROLL ANIMATIONS ===== */
.td-fade-up {
    opacity: 0;
    transform: translateY(30px);
    transition: all .6s var(--td-ease);
}
.td-fade-up.visible {
    opacity: 1;
    transform: translateY(0);
}
.td-fade-up-delay-1 { transition-delay: .1s; }
.td-fade-up-delay-2 { transition-delay: .2s; }
.td-fade-up-delay-3 { transition-delay: .3s; }

/* ========================================================================
   WIDGET: NAVIGATION (.td-nav)
   Self-contained sticky navigation
   ======================================================================== */
.td-nav {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    background: rgba(255,255,255,.92);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-bottom: 1px solid rgba(0,0,0,.05);
    transition: box-shadow .3s;
}
.td-nav.scrolled { box-shadow: var(--td-shadow-md); }

.td-nav__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: 72px;
}

.td-nav__logo {
    display: flex;
    align-items: center;
    gap: 12px;
    font-family: 'DM Serif Display', serif;
    font-weight: 700;
    font-size: 1.4rem;
    color: var(--td-green-800);
    text-decoration: none;
}
.td-nav__logo svg { flex-shrink: 0; }
.td-nav__logo span { color: var(--td-green-500); }

.td-nav__links {
    display: flex;
    align-items: center;
    gap: 4px;
}
.td-nav__link {
    padding: 8px 16px;
    font-size: .9rem;
    font-weight: 500;
    color: var(--td-gray-600);
    border-radius: var(--td-radius-sm);
    transition: all .2s;
    text-decoration: none;
}
.td-nav__link:hover,
.td-nav__link--active {
    color: var(--td-green-700);
    background: var(--td-green-50);
}
.td-nav__link--cta {
    background: var(--td-green-700);
    color: var(--td-white) !important;
    padding: 10px 24px;
    border-radius: var(--td-radius-xl);
    margin-left: 8px;
}
.td-nav__link--cta:hover {
    background: var(--td-green-800) !important;
}

/* Dropdown */
.td-nav__dropdown {
    position: relative;
}
.td-nav__dropdown-menu {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 240px;
    background: var(--td-white);
    border-radius: var(--td-radius-md);
    box-shadow: var(--td-shadow-lg);
    border: 1px solid var(--td-gray-100);
    padding: 8px;
    opacity: 0;
    visibility: hidden;
    transform: translateY(8px);
    transition: all .2s var(--td-ease);
    z-index: 100;
}
.td-nav__dropdown:hover .td-nav__dropdown-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.td-nav__dropdown-item {
    display: block;
    padding: 10px 16px;
    font-size: .88rem;
    color: var(--td-gray-600);
    border-radius: var(--td-radius-sm);
    transition: all .15s;
    text-decoration: none;
}
.td-nav__dropdown-item:hover {
    background: var(--td-green-50);
    color: var(--td-green-700);
}

/* Hamburger */
.td-nav__hamburger {
    display: none;
    flex-direction: column;
    gap: 5px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 8px;
}
.td-nav__hamburger span {
    display: block;
    width: 24px;
    height: 2px;
    background: var(--td-gray-700);
    border-radius: 2px;
    transition: all .3s;
}

/* Mobile menu */
.td-mobile-menu {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 999;
    background: rgba(0,0,0,.4);
    backdrop-filter: blur(4px);
    opacity: 0;
    visibility: hidden;
    transition: all .3s;
}
.td-mobile-menu.open { opacity: 1; visibility: visible; }
.td-mobile-menu__panel {
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
    height: 100%;
    background: var(--td-white);
    padding: 80px 32px 32px;
    transform: translateX(100%);
    transition: transform .35s var(--td-ease);
    overflow-y: auto;
}
.td-mobile-menu.open .td-mobile-menu__panel { transform: translateX(0); }
.td-mobile-menu__close {
    position: absolute;
    top: 20px;
    right: 20px;
    width: 40px;
    height: 40px;
    border: none;
    background: var(--td-gray-100);
    border-radius: 50%;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    color: var(--td-gray-600);
}
.td-mobile-menu__link {
    display: block;
    padding: 14px 0;
    font-size: 1.05rem;
    font-weight: 500;
    color: var(--td-gray-700);
    border-bottom: 1px solid var(--td-gray-100);
    text-decoration: none;
}
.td-mobile-menu__link--cta {
    border-bottom: none;
    margin-top: 16px;
    background: var(--td-green-700);
    color: var(--td-white);
    text-align: center;
    border-radius: var(--td-radius-xl);
    padding: 14px 24px;
}

/* ========================================================================
   WIDGET: HERO (.td-hero)
   ======================================================================== */
.td-hero {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    overflow: hidden;
    padding: 140px 0 100px;
}
.td-hero__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(165deg, rgba(15,45,46,.82) 0%, rgba(22,61,62,.65) 50%, rgba(26,92,82,.5) 100%);
    z-index: 1;
}

.td-hero__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    position: relative;
    z-index: 2;
}

.td-hero__content {
    max-width: 680px;
}

.td-hero__badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    background: rgba(255,255,255,.12);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(255,255,255,.2);
    border-radius: var(--td-radius-xl);
    font-size: .8rem;
    font-weight: 500;
    color: var(--td-green-200);
    margin-bottom: 24px;
    font-family: 'Inter', sans-serif;
}
.td-hero__badge::before {
    content: '';
    width: 8px;
    height: 8px;
    background: var(--td-green-400);
    border-radius: 50%;
}

.td-hero__title {
    font-size: clamp(2.5rem, 5vw, 3.8rem);
    margin-bottom: 24px;
    letter-spacing: -.02em;
    color: var(--td-white);
}
.td-hero__title em {
    font-style: normal;
    color: var(--td-green-300);
    position: relative;
}
.td-hero__title em::after {
    content: '';
    position: absolute;
    bottom: 4px;
    left: 0;
    right: 0;
    height: 8px;
    background: rgba(126,219,196,.3);
    border-radius: 4px;
    z-index: -1;
}

.td-hero__text {
    font-size: 1.15rem;
    color: rgba(255,255,255,.8);
    margin-bottom: 36px;
    max-width: 560px;
    line-height: 1.8;
}

.td-hero__actions {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.td-btn-outline--light {
    border-color: rgba(255,255,255,.25) !important;
    color: var(--td-white) !important;
    background: transparent !important;
}
.td-btn-outline--light:hover {
    background: rgba(255,255,255,.1) !important;
    border-color: rgba(255,255,255,.4) !important;
}

.td-hero__float {
    display: inline-flex;
    margin-top: 36px;
    background: rgba(255,255,255,.12);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255,255,255,.15);
    padding: 20px 24px;
    border-radius: var(--td-radius-md);
    display: flex;
    align-items: center;
    gap: 16px;
    z-index: 2;
}
.td-hero__float-icon {
    width: 48px;
    height: 48px;
    background: rgba(255,255,255,.1);
    border-radius: var(--td-radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--td-green-300);
}
.td-hero__float .num {
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--td-white);
    line-height: 1;
}
.td-hero__float .label {
    font-size: .8rem;
    color: rgba(255,255,255,.6);
}

/* ========================================================================
   WIDGET: PAGE HERO (.td-page-hero)
   Smaller hero for subpages
   ======================================================================== */
.td-page-hero {
    padding: 140px 0 80px;
    background: linear-gradient(165deg, var(--td-green-50) 0%, var(--td-warm-50) 100%);
    text-align: center;
    position: relative;
    overflow: hidden;
}
.td-page-hero::before {
    content: '';
    position: absolute;
    top: -40%;
    right: -20%;
    width: 600px;
    height: 600px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(74,158,116,.06) 0%, transparent 70%);
    pointer-events: none;
}
.td-page-hero__inner {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 24px;
    position: relative;
    z-index: 2;
}
.td-page-hero__breadcrumb {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: .85rem;
    color: var(--td-gray-400);
    margin-bottom: 20px;
    font-family: 'Inter', sans-serif;
}
.td-page-hero__breadcrumb a {
    color: var(--td-green-600);
    text-decoration: none;
}
.td-page-hero__breadcrumb a:hover { color: var(--td-green-500); }
.td-page-hero__title {
    font-size: clamp(2.2rem, 4vw, 3.2rem);
    margin-bottom: 20px;
}
.td-page-hero__desc {
    font-size: 1.1rem;
    color: var(--td-gray-500);
    max-width: 560px;
    margin: 0 auto;
    line-height: 1.8;
}

/* ========================================================================
   WIDGET: ABOUT SECTION (.td-about)
   ======================================================================== */
.td-about {
    padding: 100px 0;
    background: var(--td-white);
}
.td-about__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 80px;
    align-items: center;
}
.td-about__img {
    border-radius: var(--td-radius-lg);
    overflow: hidden;
    aspect-ratio: 3/4;
    position: relative;
}
.td-about__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.td-about__img-accent {
    position: absolute;
    top: -12px;
    right: -12px;
    width: 120px;
    height: 120px;
    border: 3px solid var(--td-green-300);
    border-radius: var(--td-radius-md);
    z-index: -1;
}
.td-about__text p {
    margin-bottom: 20px;
    color: var(--td-gray-600);
    font-size: 1.05rem;
}

.td-about__highlights {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 36px;
}
.td-about__highlight {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}
.td-about__highlight-icon {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    background: var(--td-green-100);
    border-radius: var(--td-radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--td-green-600);
}
.td-about__highlight strong {
    display: block;
    font-size: .9rem;
    color: var(--td-green-900);
    margin-bottom: 2px;
    font-family: 'Inter', sans-serif;
}
.td-about__highlight span {
    font-size: .82rem;
    color: var(--td-gray-500);
}

/* ========================================================================
   WIDGET: STATS BAR (.td-stats)
   ======================================================================== */
.td-stats {
    background: var(--td-green-900);
    padding: 60px 0;
}
.td-stats__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 32px;
    text-align: center;
}
.td-stats__item { padding: 24px; }
.td-stats__num {
    font-family: 'DM Serif Display', serif;
    font-size: 3rem;
    font-weight: 700;
    color: var(--td-green-300);
    line-height: 1;
    margin-bottom: 8px;
}
.td-stats__label {
    font-size: .85rem;
    color: rgba(255,255,255,.6);
    text-transform: uppercase;
    letter-spacing: .06em;
    font-family: 'Inter', sans-serif;
}
.td-stats__divider {
    width: 32px;
    height: 2px;
    background: var(--td-green-600);
    margin: 12px auto 0;
    border-radius: 1px;
}

/* ========================================================================
   WIDGET: SERVICES GRID (.td-services)
   ======================================================================== */
.td-services {
    padding: 100px 0;
    background: var(--td-gray-50);
}
.td-services__header {
    text-align: center;
    margin-bottom: 60px;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 24px;
}
.td-services__header .td-section-desc { margin: 0 auto; }

.td-services__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}

.td-service-card {
    background: var(--td-white);
    border-radius: var(--td-radius-md);
    padding: 36px 32px;
    border: 1px solid var(--td-gray-100);
    transition: all .3s var(--td-ease);
    position: relative;
    overflow: hidden;
    text-decoration: none;
    display: block;
}
.td-service-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: linear-gradient(90deg, var(--td-green-400), var(--td-green-600));
    opacity: 0;
    transition: opacity .3s;
}
.td-service-card:hover {
    border-color: var(--td-green-200);
    box-shadow: var(--td-shadow-md);
    transform: translateY(-4px);
}
.td-service-card:hover::before { opacity: 1; }

.td-service-card__icon {
    width: 56px;
    height: 56px;
    background: var(--td-green-50);
    border-radius: var(--td-radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 20px;
    color: var(--td-green-600);
    transition: all .3s;
}
.td-service-card:hover .td-service-card__icon {
    background: var(--td-green-100);
}
.td-service-card h3 {
    font-family: 'Inter', sans-serif;
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 10px;
    color: var(--td-green-900);
}
.td-service-card p {
    font-size: .9rem;
    color: var(--td-gray-500);
    line-height: 1.7;
}

/* Featured service card (fullservice) */
.td-service-card--featured {
    grid-column: span 3;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    padding: 48px;
    background: linear-gradient(135deg, var(--td-green-900) 0%, var(--td-green-800) 100%);
    border: none;
    color: var(--td-white);
}
.td-service-card--featured::before { display: none; }
.td-service-card--featured h3 {
    color: var(--td-white);
    font-family: 'DM Serif Display', serif;
    font-size: 1.8rem;
    margin-bottom: 16px;
}
.td-service-card--featured p {
    color: rgba(255,255,255,.7);
    font-size: 1rem;
}
.td-service-card--featured .td-service-card__icon {
    background: rgba(255,255,255,.1);
    color: var(--td-green-300);
}

.td-fs-steps {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
}
.td-fs-step {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: rgba(255,255,255,.06);
    border-radius: var(--td-radius-sm);
    border: 1px solid rgba(255,255,255,.08);
}
.td-fs-step__num {
    width: 32px;
    height: 32px;
    background: var(--td-green-600);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .8rem;
    font-weight: 700;
    color: var(--td-white);
    flex-shrink: 0;
    font-family: 'Inter', sans-serif;
}
.td-fs-step__label {
    font-size: .88rem;
    font-weight: 500;
    color: rgba(255,255,255,.9);
}

/* ========================================================================
   WIDGET: SERVICE DETAIL (.td-service-detail)
   Full section for individual service page content
   ======================================================================== */
.td-service-detail {
    padding: 80px 0;
    background: var(--td-white);
}
.td-service-detail:nth-child(even) {
    background: var(--td-gray-50);
}
.td-service-detail__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: center;
}
.td-service-detail--reverse .td-service-detail__inner {
    direction: rtl;
}
.td-service-detail--reverse .td-service-detail__inner > * {
    direction: ltr;
}
.td-service-detail__img {
    border-radius: var(--td-radius-lg);
    overflow: hidden;
    aspect-ratio: 4/3;
}
.td-service-detail__img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.td-service-detail__content h2 {
    font-size: 2rem;
    margin-bottom: 20px;
}
.td-service-detail__content p {
    color: var(--td-gray-600);
    font-size: 1.05rem;
    margin-bottom: 16px;
    line-height: 1.8;
}
.td-service-detail__list {
    margin: 24px 0;
}
.td-service-detail__list li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px 0;
    color: var(--td-gray-600);
    font-size: .95rem;
}
.td-service-detail__list li::before {
    content: '';
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    border-radius: 50%;
    background: var(--td-green-100);
    margin-top: 2px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%233a7d5c' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20,6 9,17 4,12'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 12px;
}

/* ========================================================================
   WIDGET: TESTIMONIALS (.td-testimonials)
   ======================================================================== */
.td-testimonials {
    padding: 100px 0;
    background: var(--td-white);
}
.td-testimonials__header {
    text-align: center;
    margin-bottom: 60px;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 24px;
}
.td-testimonials__header .td-section-desc { margin: 0 auto; }

.td-testimonials__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 28px;
}

.td-testimonial {
    background: var(--td-warm-50);
    border-radius: var(--td-radius-md);
    padding: 36px;
    border: 1px solid var(--td-warm-200);
    position: relative;
}
.td-testimonial::before {
    content: '\201E';
    font-family: 'DM Serif Display', serif;
    font-size: 4rem;
    color: var(--td-green-300);
    line-height: 1;
    position: absolute;
    top: 20px;
    right: 28px;
    opacity: .5;
}
.td-testimonial__stars {
    display: flex;
    gap: 3px;
    margin-bottom: 16px;
    color: #f59e0b;
}
.td-testimonial blockquote {
    font-size: .92rem;
    color: var(--td-gray-600);
    line-height: 1.8;
    margin-bottom: 24px;
    font-style: italic;
}
.td-testimonial__author {
    display: flex;
    align-items: center;
    gap: 12px;
}
.td-testimonial__avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--td-green-200);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: .85rem;
    color: var(--td-green-800);
    font-family: 'Inter', sans-serif;
}
.td-testimonial__author strong {
    display: block;
    font-size: .88rem;
    color: var(--td-green-900);
    font-family: 'Inter', sans-serif;
}
.td-testimonial__author span {
    font-size: .78rem;
    color: var(--td-gray-400);
}

/* ========================================================================
   WIDGET: PROJECT GALLERY (.td-gallery)
   ======================================================================== */
.td-gallery {
    padding: 80px 0;
    background: var(--td-gray-50);
}
.td-gallery__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}
.td-gallery__item {
    border-radius: var(--td-radius-md);
    overflow: hidden;
    aspect-ratio: 4/3;
    position: relative;
    cursor: pointer;
}
.td-gallery__item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .4s var(--td-ease);
}
.td-gallery__item:hover img {
    transform: scale(1.05);
}
.td-gallery__overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(26,58,42,.8) 0%, transparent 60%);
    display: flex;
    align-items: flex-end;
    padding: 24px;
    opacity: 0;
    transition: opacity .3s;
}
.td-gallery__item:hover .td-gallery__overlay { opacity: 1; }
.td-gallery__overlay h4 {
    color: var(--td-white);
    font-size: 1rem;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
}
.td-gallery__overlay p {
    color: rgba(255,255,255,.7);
    font-size: .82rem;
    margin-top: 4px;
}
/* Large first item */
.td-gallery__item--large {
    grid-column: span 2;
    grid-row: span 2;
}

/* ========================================================================
   WIDGET: CTA BANNER (.td-cta)
   ======================================================================== */
.td-cta {
    padding: 80px 0;
    background: linear-gradient(135deg, var(--td-green-800) 0%, var(--td-green-900) 100%);
    text-align: center;
    position: relative;
    overflow: hidden;
}
.td-cta::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -30%;
    width: 600px;
    height: 600px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(107,184,145,.1) 0%, transparent 70%);
    pointer-events: none;
}
.td-cta__inner {
    max-width: 700px;
    margin: 0 auto;
    padding: 0 24px;
    position: relative;
    z-index: 2;
}
.td-cta__title {
    font-size: clamp(1.8rem, 3vw, 2.6rem);
    color: var(--td-white);
    margin-bottom: 20px;
}
.td-cta__desc {
    font-size: 1.1rem;
    color: rgba(255,255,255,.65);
    margin-bottom: 36px;
    line-height: 1.8;
}
.td-cta__actions {
    display: flex;
    gap: 16px;
    justify-content: center;
    flex-wrap: wrap;
}

/* ========================================================================
   WIDGET: CONTACT SECTION (.td-contact)
   ======================================================================== */
.td-contact {
    padding: 100px 0;
    background: var(--td-green-50);
}
.td-contact__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 60px;
    align-items: start;
}
.td-contact__info .td-section-desc { margin-bottom: 40px; }

.td-contact__items {
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.td-contact__item {
    display: flex;
    align-items: flex-start;
    gap: 16px;
}
.td-contact__icon {
    width: 48px;
    height: 48px;
    background: var(--td-green-100);
    border-radius: var(--td-radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--td-green-600);
    flex-shrink: 0;
}
.td-contact__item strong {
    display: block;
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--td-gray-400);
    margin-bottom: 4px;
    font-family: 'Inter', sans-serif;
}
.td-contact__item p {
    font-size: 1rem;
    color: var(--td-gray-700);
    font-weight: 500;
}
.td-contact__item a {
    color: var(--td-green-700);
    font-weight: 600;
    text-decoration: none;
}
.td-contact__item a:hover { color: var(--td-green-500); }

/* Map placeholder */
.td-contact__map {
    margin-top: 36px;
    border-radius: var(--td-radius-md);
    overflow: hidden;
    aspect-ratio: 16/9;
    background: var(--td-gray-100);
}
.td-contact__map iframe {
    width: 100%;
    height: 100%;
    border: 0;
}

/* Form */
.td-contact__form-wrap {
    background: var(--td-white);
    border-radius: var(--td-radius-lg);
    padding: 44px;
    box-shadow: var(--td-shadow-lg);
}
.td-contact__form-wrap h3 {
    font-size: 1.4rem;
    margin-bottom: 8px;
}
.td-contact__form-wrap > p {
    font-size: .9rem;
    color: var(--td-gray-500);
    margin-bottom: 28px;
}
.td-form-group {
    margin-bottom: 20px;
}
.td-form-group label {
    display: block;
    font-size: .82rem;
    font-weight: 600;
    color: var(--td-gray-600);
    margin-bottom: 6px;
    font-family: 'Inter', sans-serif;
}
.td-form-group input,
.td-form-group textarea,
.td-form-group select {
    width: 100%;
    padding: 12px 16px;
    font-family: 'Inter', sans-serif;
    font-size: .92rem;
    border: 1.5px solid var(--td-gray-200);
    border-radius: var(--td-radius-sm);
    background: var(--td-gray-50);
    color: var(--td-gray-800);
    transition: all .2s;
    outline: none;
}
.td-form-group input:focus,
.td-form-group textarea:focus,
.td-form-group select:focus {
    border-color: var(--td-green-400);
    background: var(--td-white);
    box-shadow: 0 0 0 3px rgba(74,158,116,.1);
}
.td-form-group textarea {
    resize: vertical;
    min-height: 120px;
}
.td-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
.td-form-submit {
    width: 100%;
    padding: 16px;
    background: var(--td-green-700);
    color: var(--td-white);
    border: none;
    border-radius: var(--td-radius-xl);
    font-family: 'Inter', sans-serif;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all .25s;
}
.td-form-submit:hover {
    background: var(--td-green-800);
    box-shadow: 0 4px 16px rgba(45,96,71,.3);
}

/* ========================================================================
   WIDGET: TIMELINE (.td-timeline)
   ======================================================================== */
.td-timeline {
    padding: 80px 0;
    background: var(--td-white);
}
.td-timeline__inner {
    max-width: 800px;
    margin: 0 auto;
    padding: 0 24px;
    position: relative;
}
.td-timeline__inner::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--td-green-200);
    transform: translateX(-50%);
}
.td-timeline__item {
    display: flex;
    gap: 40px;
    margin-bottom: 48px;
    position: relative;
}
.td-timeline__item:nth-child(odd) { flex-direction: row-reverse; text-align: right; }
.td-timeline__dot {
    position: absolute;
    left: 50%;
    top: 8px;
    width: 16px;
    height: 16px;
    background: var(--td-green-500);
    border: 3px solid var(--td-white);
    border-radius: 50%;
    transform: translateX(-50%);
    box-shadow: 0 0 0 3px var(--td-green-200);
    z-index: 2;
}
.td-timeline__content {
    width: calc(50% - 40px);
}
.td-timeline__year {
    font-family: 'DM Serif Display', serif;
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--td-green-700);
    margin-bottom: 4px;
}
.td-timeline__content h4 {
    font-family: 'Inter', sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--td-green-900);
    margin-bottom: 8px;
}
.td-timeline__content p {
    font-size: .9rem;
    color: var(--td-gray-500);
    line-height: 1.7;
}

/* ========================================================================
   WIDGET: VALUES GRID (.td-values)
   ======================================================================== */
.td-values {
    padding: 80px 0;
    background: var(--td-gray-50);
}
.td-values__header {
    text-align: center;
    margin-bottom: 60px;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 24px;
}
.td-values__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
}
.td-value-card {
    text-align: center;
    padding: 48px 32px;
    background: var(--td-white);
    border-radius: var(--td-radius-md);
    border: 1px solid var(--td-gray-100);
    transition: all .3s var(--td-ease);
}
.td-value-card:hover {
    box-shadow: var(--td-shadow-md);
    transform: translateY(-4px);
}
.td-value-card__icon {
    width: 64px;
    height: 64px;
    background: var(--td-green-50);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 20px;
    color: var(--td-green-600);
}
.td-value-card h3 {
    font-family: 'Inter', sans-serif;
    font-size: 1.1rem;
    font-weight: 600;
    margin-bottom: 12px;
    color: var(--td-green-900);
}
.td-value-card p {
    font-size: .9rem;
    color: var(--td-gray-500);
    line-height: 1.7;
}

/* ========================================================================
   WIDGET: PROCESS STEPS (.td-process)
   ======================================================================== */
.td-process {
    padding: 80px 0;
    background: var(--td-white);
}
.td-process__header {
    text-align: center;
    margin-bottom: 60px;
    max-width: 1200px;
    margin-left: auto;
    margin-right: auto;
    padding: 0 24px;
}
.td-process__grid {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
}
.td-process__step {
    text-align: center;
    padding: 32px 24px;
    position: relative;
}
.td-process__step-num {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--td-green-100);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'DM Serif Display', serif;
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--td-green-700);
    margin: 0 auto 16px;
}
.td-process__step h4 {
    font-family: 'Inter', sans-serif;
    font-size: 1rem;
    font-weight: 600;
    color: var(--td-green-900);
    margin-bottom: 8px;
}
.td-process__step p {
    font-size: .85rem;
    color: var(--td-gray-500);
    line-height: 1.7;
}
/* Connector line between steps */
.td-process__step:not(:last-child)::after {
    content: '';
    position: absolute;
    top: 56px;
    right: -12px;
    width: 24px;
    height: 2px;
    background: var(--td-green-200);
}

/* ========================================================================
   WIDGET: FOOTER (.td-footer)
   ======================================================================== */
.td-footer {
    background: var(--td-green-900);
    color: rgba(255,255,255,.5);
    padding: 60px 0 32px;
}
.td-footer__inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 24px;
    display: grid;
    grid-template-columns: 2fr 1fr 1fr 1fr;
    gap: 40px;
    margin-bottom: 48px;
}
.td-footer__brand {
    padding-right: 40px;
}
.td-footer__logo {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: 'DM Serif Display', serif;
    font-weight: 700;
    font-size: 1.3rem;
    color: rgba(255,255,255,.8);
    margin-bottom: 16px;
    text-decoration: none;
}
.td-footer__logo span { color: var(--td-green-400); }
.td-footer__brand p {
    font-size: .9rem;
    color: rgba(255,255,255,.4);
    line-height: 1.7;
}
.td-footer__col h4 {
    font-family: 'Inter', sans-serif;
    font-size: .85rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: rgba(255,255,255,.6);
    margin-bottom: 20px;
}
.td-footer__col a {
    display: block;
    padding: 6px 0;
    font-size: .9rem;
    color: rgba(255,255,255,.4);
    transition: color .2s;
    text-decoration: none;
}
.td-footer__col a:hover { color: var(--td-green-300); }

.td-footer__bottom {
    max-width: 1200px;
    margin: 0 auto;
    padding: 24px 24px 0;
    border-top: 1px solid rgba(255,255,255,.08);
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: .8rem;
}
.td-footer__social {
    display: flex;
    gap: 12px;
}
.td-footer__social a {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255,255,255,.06);
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,.4);
    transition: all .2s;
    text-decoration: none;
}
.td-footer__social a:hover {
    background: var(--td-green-600);
    color: var(--td-white);
}

/* ========================================================================
   RESPONSIVE
   ======================================================================== */
@media (max-width: 1024px) {
    .td-hero__float { bottom: 20px; right: 20px; }
    .td-about__grid { grid-template-columns: 1fr; gap: 40px; }
    .td-about__img { max-height: 400px; aspect-ratio: 16/9; }
    .td-services__grid { grid-template-columns: repeat(2, 1fr); }
    .td-service-card--featured {
        grid-column: span 2;
        grid-template-columns: 1fr;
        gap: 32px;
    }
    .td-testimonials__grid { grid-template-columns: 1fr; max-width: 560px; margin-left: auto; margin-right: auto; }
    .td-contact__grid { grid-template-columns: 1fr; }
    .td-service-detail__inner { grid-template-columns: 1fr; gap: 40px; }
    .td-service-detail--reverse .td-service-detail__inner { direction: ltr; }
    .td-gallery__grid { grid-template-columns: repeat(2, 1fr); }
    .td-gallery__item--large { grid-column: span 2; grid-row: span 1; }
    .td-footer__inner { grid-template-columns: 1fr 1fr; }
    .td-process__grid { grid-template-columns: repeat(2, 1fr); }
    .td-process__step:not(:last-child)::after { display: none; }
    .td-values__grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
    .td-hero { padding: 120px 0 80px; min-height: 80vh; }
    .td-hero__title { font-size: 2.2rem; }
    .td-hero__float { position: static; margin-top: 40px; display: inline-flex; }
    .td-nav__links { display: none; }
    .td-nav__hamburger { display: flex; }
    .td-mobile-menu { display: block; }
    .td-stats__grid { grid-template-columns: repeat(2, 1fr); gap: 16px; }
    .td-stats__num { font-size: 2.2rem; }
    .td-services__grid { grid-template-columns: 1fr; }
    .td-service-card--featured {
        grid-column: span 1;
        padding: 32px;
    }
    .td-fs-steps { grid-template-columns: 1fr; }
    .td-form-row { grid-template-columns: 1fr; }
    .td-about__highlights { grid-template-columns: 1fr; }
    .td-footer__inner { grid-template-columns: 1fr; gap: 32px; }
    .td-footer__bottom { flex-direction: column; gap: 16px; text-align: center; }
    .td-gallery__grid { grid-template-columns: 1fr; }
    .td-gallery__item--large { grid-column: span 1; }
    .td-timeline__inner::before { left: 20px; }
    .td-timeline__item,
    .td-timeline__item:nth-child(odd) { flex-direction: column; text-align: left; padding-left: 52px; }
    .td-timeline__dot { left: 20px; }
    .td-timeline__content { width: 100%; }
    .td-process__grid { grid-template-columns: 1fr; }
    .td-values__grid { grid-template-columns: 1fr; }
    .td-page-hero { padding: 110px 0 60px; }
}
