/* style.css */
/* ============================================================
   TRANSLOG — Modern Logistics Website
   ============================================================ */
:root {
    --navy: #0B1D3A;
    --navy-light: #132B50;
    --blue: #1565C0;
    --blue-light: #42A5F5;
    --gold: #E8A317;
    --gold-light: #F5C842;
    --white: #FFFFFF;
    --gray-50: #F8F9FC;
    --gray-100: #EEF1F6;
    --gray-200: #D8DDE6;
    --gray-300: #B0B8C9;
    --gray-400: #8892A6;
    --gray-500: #5F6980;
    --gray-600: #3D4663;
    --gray-700: #2A3250;
    --red: #E53935;
    --green: #43A047;
    --orange: #EF6C00;
    --font: 'DM Sans', -apple-system, sans-serif;
    --mono: 'Space Mono', monospace;
    --shadow-sm: 0 1px 3px rgba(11,29,58,0.08);
    --shadow-md: 0 4px 16px rgba(11,29,58,0.10);
    --shadow-lg: 0 12px 40px rgba(11,29,58,0.14);
    --shadow-xl: 0 20px 60px rgba(11,29,58,0.18);
    --radius: 8px;
    --radius-lg: 16px;
    --transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body { font-family: var(--font); color: var(--gray-700); background: var(--white); line-height: 1.7; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
a { color: var(--blue); text-decoration: none; transition: var(--transition); }
a:hover { color: var(--gold); }
img { max-width: 100%; height: auto; display: block; }
ul, ol { list-style: none; }
.container { max-width: 1200px; margin: 0 auto; padding: 0 24px; }
.container-narrow { max-width: 800px; margin: 0 auto; padding: 0 24px; }

h1, h2, h3, h4, h5, h6 { font-family: var(--font); color: var(--navy); line-height: 1.2; font-weight: 700; }
h1 { font-size: clamp(2rem, 5vw, 3.2rem); letter-spacing: -0.03em; }
h2 { font-size: clamp(1.6rem, 4vw, 2.4rem); letter-spacing: -0.02em; }
h3 { font-size: clamp(1.2rem, 3vw, 1.6rem); }
p { margin-bottom: 1em; }

/* === BUTTONS === */
.btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 32px; font-family: var(--font); font-size: 0.95rem; font-weight: 600; border: none; border-radius: var(--radius); cursor: pointer; transition: var(--transition); letter-spacing: 0.02em; }
.btn-primary { background: var(--gold); color: var(--navy); }
.btn-primary:hover { background: var(--gold-light); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(232,163,23,0.3); color: var(--navy); }
.btn-secondary { background: transparent; color: var(--white); border: 2px solid rgba(255,255,255,0.3); }
.btn-secondary:hover { border-color: var(--gold); color: var(--gold); }
.btn-outline { background: transparent; color: var(--navy); border: 2px solid var(--navy); }
.btn-outline:hover { background: var(--navy); color: var(--white); }
.btn-sm { padding: 10px 20px; font-size: 0.85rem; }
.btn-block { width: 100%; justify-content: center; }

/* === TOP BAR === */
.top-bar { background: var(--navy); padding: 8px 0; font-size: 0.82rem; color: var(--gray-300); }
.top-bar .container { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; }
.top-bar a { color: var(--gray-300); display: inline-flex; align-items: center; gap: 6px; }
.top-bar a:hover { color: var(--gold); }
.top-bar-left { display: flex; gap: 24px; align-items: center; }
.top-bar-right { display: flex; gap: 12px; align-items: center; }
.tb-icon { font-size: 0.9rem; }

/* === FLAG LANGUAGE SWITCHER === */
.lang-switcher { display: flex; gap: 6px; align-items: center; }
.lang-flag {
    display: flex; align-items: center; gap: 5px;
    padding: 4px 10px; border-radius: 4px;
    font-size: 0.75rem; font-weight: 700;
    color: var(--gray-300); text-transform: uppercase;
    transition: var(--transition);
    border: 1px solid transparent;
}
.lang-flag img {
    width: 24px; height: 18px;
    border-radius: 2px;
    object-fit: cover;
    box-shadow: 0 1px 2px rgba(0,0,0,0.2);
}
.lang-flag:hover { background: rgba(255,255,255,0.08); color: var(--white); border-color: rgba(255,255,255,0.15); }
.lang-flag.active { background: rgba(232,163,23,0.15); color: var(--gold); border-color: rgba(232,163,23,0.3); }

/* === HEADER === */
.site-header { background: var(--white); box-shadow: var(--shadow-md); position: sticky; top: 0; z-index: 1000; }
.header-inner { display: flex; align-items: center; justify-content: space-between; padding: 0 24px; max-width: 1200px; margin: 0 auto; height: 72px; }
.logo { display: flex; align-items: center; gap: 4px; font-size: 1.5rem; font-weight: 700; color: var(--navy); letter-spacing: -0.02em; }
.logo span { color: var(--gold); }
.logo:hover { color: var(--navy); }

.main-nav { display: flex; gap: 2px; }
.main-nav a { padding: 8px 14px; font-size: 0.88rem; font-weight: 500; color: var(--gray-600); border-radius: var(--radius); position: relative; }
.main-nav a:hover, .main-nav a.active { color: #fff; background: #E8A317; }
.main-nav a.active::after { content: ''; position: absolute; bottom: 0; left: 14px; right: 14px; height: 2px; background: #fff; border-radius: 2px; }

/* === Submenus (desktop dropdown, mobile expandable) === */
.main-nav .nav-item.has-submenu { position: relative; }
.main-nav .nav-parent { display: inline-flex; align-items: center; gap: 4px; padding: 8px 14px; font-size: 0.88rem; font-weight: 500; color: var(--gray-600); border-radius: var(--radius); position: relative; cursor: pointer; }
.main-nav .nav-parent:hover, .main-nav .nav-parent.active { color: #fff; background: #E8A317; }
.main-nav .nav-parent.active::after { content: ''; position: absolute; bottom: 0; left: 14px; right: 14px; height: 2px; background: #fff; border-radius: 2px; }
.submenu-caret { font-size: 0.7rem; line-height: 1; transition: transform 0.2s; }
.main-nav .nav-item.has-submenu:hover .submenu-caret,
.main-nav .nav-item.has-submenu[aria-expanded="true"] .submenu-caret { transform: rotate(180deg); }

.submenu { list-style: none; margin: 0; padding: 6px 0; position: absolute; top: 100%; left: 0; min-width: 220px; background: var(--white); border: 1px solid var(--gray-100); border-radius: var(--radius); box-shadow: 0 8px 24px rgba(15,23,42,0.12); opacity: 0; visibility: hidden; transform: translateY(4px); transition: opacity 0.15s, transform 0.15s, visibility 0s linear 0.15s; z-index: 100; }
.main-nav .nav-item.has-submenu:hover > .submenu,
.main-nav .nav-item.has-submenu:focus-within > .submenu,
.main-nav .nav-item.has-submenu.open > .submenu { opacity: 1; visibility: visible; transform: translateY(0); transition: opacity 0.15s, transform 0.15s, visibility 0s; }

.submenu li { margin: 0; }
.submenu a { display: block; padding: 9px 16px; font-size: 0.86rem; font-weight: 500; color: var(--gray-600); border-radius: 0; }
.submenu a:hover, .submenu a.active { color: #fff; background: #E8A317; }
.submenu a.active::after { display: none; }

.hamburger { display: none; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: 8px; z-index: 1001; }
.hamburger span { display: block; width: 24px; height: 2px; background: var(--navy); border-radius: 2px; transition: var(--transition); }
.hamburger.active span:nth-child(1) { transform: rotate(45deg) translateY(7px); }
.hamburger.active span:nth-child(2) { opacity: 0; }
.hamburger.active span:nth-child(3) { transform: rotate(-45deg) translateY(-7px); }

@media (max-width: 992px) {
    .hamburger { display: flex; }
    .main-nav { display: none; position: absolute; top: 72px; left: 0; right: 0; background: var(--white); flex-direction: column; padding: 16px; box-shadow: var(--shadow-lg); gap: 2px; }
    .main-nav.open { display: flex; }
    .main-nav a { padding: 12px 16px; }

    /* Submenu: inline accordion, not a popover */
    .main-nav .nav-item.has-submenu { width: 100%; }
    .main-nav .nav-parent { width: 100%; padding: 12px 16px; justify-content: space-between; }
    .submenu { position: static; opacity: 1; visibility: visible; transform: none; transition: none; box-shadow: none; border: 0; padding: 0 0 6px 12px; min-width: 0; max-height: 0; overflow: hidden; }
    .main-nav .nav-item.has-submenu.open > .submenu { max-height: 600px; }
    .main-nav .nav-item.has-submenu:hover > .submenu { /* no hover-open on mobile */ max-height: 0; }
    .main-nav .nav-item.has-submenu.open:hover > .submenu { max-height: 600px; }
    .submenu a { padding: 10px 16px; }
}

/* === HERO === */
.hero { background: linear-gradient(135deg, var(--navy) 0%, var(--navy-light) 50%, var(--blue) 100%); padding: 100px 0 120px; position: relative; overflow: hidden; }
.hero::before { content: ''; position: absolute; top: -50%; right: -20%; width: 800px; height: 800px; background: radial-gradient(circle, rgba(232,163,23,0.08) 0%, transparent 70%); border-radius: 50%; }
.hero::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 80px; background: linear-gradient(to top right, var(--white) 49%, transparent 51%); }
.hero-content { position: relative; z-index: 2; max-width: 700px; }
.hero h1 { color: var(--white); margin-bottom: 20px; font-size: clamp(2.2rem, 5vw, 3.5rem); }
.hero h1 em { font-style: normal; color: var(--gold); }
.hero p { color: var(--gray-200); font-size: 1.15rem; margin-bottom: 36px; max-width: 540px; }
.hero-buttons { display: flex; gap: 16px; flex-wrap: wrap; }

.hero-tracking { margin-top: 48px; background: rgba(255,255,255,0.08); backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.12); border-radius: var(--radius-lg); padding: 28px; max-width: 560px; }
.hero-tracking h3 { color: var(--white); margin-bottom: 14px; font-size: 1.05rem; }
.tracking-form { display: flex; gap: 8px; }
.tracking-form input { flex: 1; padding: 14px 18px; border: 2px solid rgba(255,255,255,0.15); border-radius: var(--radius); background: rgba(255,255,255,0.06); color: var(--white); font-family: var(--mono); font-size: 0.95rem; transition: var(--transition); }
.tracking-form input::placeholder { color: rgba(255,255,255,0.4); }
.tracking-form input:focus { outline: none; border-color: var(--gold); background: rgba(255,255,255,0.1); }
.tracking-form button { white-space: nowrap; }

/* === SECTIONS === */
.section { padding: 80px 0; }
.section-alt { background: var(--gray-50); }
.section-dark { background: var(--navy); color: var(--gray-200); }
.section-dark h2, .section-dark h3 { color: var(--white); }
.section-header { text-align: center; margin-bottom: 56px; }
.section-header h2 { margin-bottom: 12px; }
.section-header p { color: var(--gray-400); font-size: 1.1rem; max-width: 600px; margin: 0 auto; }
.section-header .accent-line { display: block; width: 60px; height: 3px; background: var(--gold); border-radius: 2px; margin: 20px auto 0; }

/* Stats */
.stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 24px; margin-top: -60px; position: relative; z-index: 5; }
.stat-card { background: var(--white); border-radius: var(--radius-lg); padding: 32px 24px; text-align: center; box-shadow: var(--shadow-lg); transition: var(--transition); }
.stat-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-xl); }
.stat-number { font-size: 2.4rem; font-weight: 700; color: var(--navy); font-family: var(--mono); line-height: 1; }
.stat-number span { color: var(--gold); }
.stat-label { margin-top: 8px; font-size: 0.88rem; color: var(--gray-400); font-weight: 500; }

/* Feature Cards */
.features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.feature-card { background: var(--white); border-radius: var(--radius-lg); padding: 36px 28px; transition: var(--transition); border: 1px solid var(--gray-100); position: relative; overflow: hidden; }
.feature-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--gold); transform: scaleX(0); transition: var(--transition); }
.feature-card:hover { box-shadow: var(--shadow-md); transform: translateY(-4px); }
.feature-card:hover::before { transform: scaleX(1); }
.feature-icon { width: 56px; height: 56px; background: linear-gradient(135deg, var(--navy), var(--blue)); border-radius: var(--radius); display: flex; align-items: center; justify-content: center; margin-bottom: 20px; font-size: 1.5rem; color: var(--white); }
.feature-card h3 { margin-bottom: 10px; font-size: 1.1rem; }
.feature-card p { color: var(--gray-400); font-size: 0.92rem; margin: 0; }
.feature-btn { display: inline-flex; align-items: center; gap: 6px; margin-top: 18px; padding: 10px 22px; background: linear-gradient(135deg, var(--navy), var(--blue)); color: var(--white); font-size: 0.88rem; font-weight: 600; border-radius: 8px; text-decoration: none; transition: var(--transition); letter-spacing: 0.02em; }
.feature-btn:hover { background: linear-gradient(135deg, var(--blue), var(--navy)); transform: translateY(-2px); box-shadow: 0 4px 14px rgba(21, 101, 192, 0.35); }

/* Solutions */
.solutions-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
.solution-card { background: var(--white); border-radius: var(--radius-lg); overflow: hidden; transition: var(--transition); border: 1px solid var(--gray-100); }
.solution-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.solution-body { padding: 28px; }
.solution-icon { font-size: 2.5rem; margin-bottom: 16px; }
.solution-card h3 { margin-bottom: 8px; }
.solution-card p { color: var(--gray-400); font-size: 0.92rem; margin: 0; }

/* Fleet */
.fleet-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
.fleet-card { background: var(--white); border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--gray-100); transition: var(--transition); }
.fleet-card:hover { box-shadow: var(--shadow-md); }
.fleet-image { height: 180px; background: linear-gradient(135deg, var(--gray-100), var(--gray-200)); display: flex; align-items: center; justify-content: center; font-size: 3rem; color: var(--gray-300); }
.fleet-image img { width: 100%; height: 100%; object-fit: cover; }
.fleet-body { padding: 24px; }
.fleet-body h3 { margin-bottom: 8px; }
.fleet-capacity { display: inline-block; padding: 3px 12px; background: var(--gold); color: var(--navy); border-radius: 20px; font-size: 0.75rem; font-weight: 700; margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.03em; }
.fleet-features { margin-top: 12px; }
.fleet-features li { padding: 4px 0 4px 20px; font-size: 0.88rem; color: var(--gray-500); position: relative; }
.fleet-features li::before { content: '✓'; position: absolute; left: 0; color: var(--green); font-weight: 700; }

/* FAQ */
.faq-list { max-width: 800px; margin: 0 auto; }
.faq-item { border: 1px solid var(--gray-100); border-radius: var(--radius-lg); margin-bottom: 10px; overflow: hidden; transition: var(--transition); }
.faq-item:hover { border-color: var(--gray-200); }
.faq-question { display: flex; justify-content: space-between; align-items: center; padding: 20px 24px; cursor: pointer; font-weight: 600; color: var(--navy); background: none; border: none; width: 100%; text-align: left; font-family: var(--font); font-size: 1rem; transition: var(--transition); }
.faq-question:hover { background: var(--gray-50); }
.faq-question .icon { width: 28px; height: 28px; background: var(--gray-100); border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: var(--transition); flex-shrink: 0; font-size: 0.85rem; }
.faq-item.open .faq-question .icon { background: var(--gold); color: var(--navy); transform: rotate(45deg); }
.faq-answer { max-height: 0; overflow: hidden; transition: max-height 0.35s ease; }
.faq-answer-inner { padding: 0 24px 20px; color: var(--gray-500); line-height: 1.8; }
.faq-item.open .faq-answer { max-height: 500px; }

/* References */
.references-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; }
.reference-card { background: var(--white); border-radius: var(--radius-lg); padding: 32px; border: 1px solid var(--gray-100); position: relative; }
.reference-card::before { content: '\201C'; font-size: 4rem; color: var(--gold); opacity: 0.3; position: absolute; top: 8px; left: 24px; line-height: 1; font-family: serif; }
.reference-card blockquote { font-style: italic; color: var(--gray-500); margin-bottom: 16px; padding-top: 20px; }
.reference-meta { font-weight: 600; color: var(--navy); }
.reference-meta span { display: block; font-weight: 400; font-size: 0.85rem; color: var(--gray-400); }

/* Tracking Results */
.tracking-result { background: var(--white); border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); overflow: hidden; max-width: 800px; margin: 0 auto; }
.tracking-header { background: linear-gradient(135deg, var(--navy), var(--blue)); padding: 28px 32px; color: var(--white); }
.tracking-header h3 { color: var(--white); margin-bottom: 8px; }
.tracking-number-display { font-family: var(--mono); font-size: 1.3rem; font-weight: 700; color: var(--gold); }
.tracking-status-badge { display: inline-flex; align-items: center; gap: 8px; padding: 6px 18px; border-radius: 30px; font-weight: 600; font-size: 0.85rem; margin-top: 12px; }
.status-pending { background: rgba(239,108,0,0.15); color: var(--orange); }
.status-picked_up, .status-in_transit { background: rgba(21,101,192,0.15); color: var(--blue); }
.status-out_for_delivery { background: rgba(67,160,71,0.15); color: var(--green); }
.status-delivered { background: rgba(67,160,71,0.2); color: var(--green); }
.status-returned, .status-on_hold, .status-cancelled { background: rgba(229,57,53,0.15); color: var(--red); }

.tracking-details { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding: 24px 32px; background: var(--gray-50); }
.tracking-detail-box h4 { font-size: 0.75rem; text-transform: uppercase; color: var(--gray-400); letter-spacing: 0.06em; margin-bottom: 4px; }
.tracking-detail-box p { margin: 0; font-weight: 500; }

.tracking-timeline { padding: 28px 32px; }
.tracking-timeline h3 { margin-bottom: 20px; }
.timeline { position: relative; padding-left: 32px; }
.timeline::before { content: ''; position: absolute; left: 11px; top: 0; bottom: 0; width: 2px; background: var(--gray-200); }
.timeline-item { position: relative; padding-bottom: 24px; }
.timeline-item:last-child { padding-bottom: 0; }
.timeline-dot { position: absolute; left: -32px; top: 4px; width: 24px; height: 24px; background: var(--gray-200); border-radius: 50%; border: 3px solid var(--white); }
.timeline-item:first-child .timeline-dot { background: var(--gold); }
.timeline-item-time { font-family: var(--mono); font-size: 0.78rem; color: var(--gray-400); }
.timeline-item-title { font-weight: 600; color: var(--navy); margin: 4px 0 2px; }
.timeline-item-location { font-size: 0.88rem; color: var(--gray-400); }

/* === FORMS === */
.form-group { margin-bottom: 20px; }
.form-group label { display: block; font-weight: 600; color: var(--navy); margin-bottom: 6px; font-size: 0.9rem; }
.form-group label .required { color: var(--red); margin-left: 2px; }
.form-control { width: 100%; padding: 14px 16px; border: 2px solid var(--gray-200); border-radius: var(--radius); font-family: var(--font); font-size: 0.95rem; color: var(--gray-700); transition: var(--transition); background: var(--white); }
.form-control:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(21,101,192,0.1); }
textarea.form-control { min-height: 120px; resize: vertical; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 600px) { .form-row { grid-template-columns: 1fr; } }
.form-check { display: flex; align-items: center; gap: 10px; }
.form-check input { width: 18px; height: 18px; cursor: pointer; }
.form-check label { margin: 0; cursor: pointer; }

.alert { padding: 16px 20px; border-radius: var(--radius); margin-bottom: 20px; font-size: 0.92rem; font-weight: 500; }
.alert-success { background: rgba(67,160,71,0.1); color: var(--green); border: 1px solid rgba(67,160,71,0.2); }
.alert-error { background: rgba(229,57,53,0.1); color: var(--red); border: 1px solid rgba(229,57,53,0.2); }

/* === FOOTER === */
.site-footer { background: var(--navy); color: var(--gray-300); padding: 64px 0 0; }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; }
@media (max-width: 768px) { .footer-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .footer-grid { grid-template-columns: 1fr; } }
.footer-brand h3 { color: var(--white); margin-bottom: 12px; font-size: 1.3rem; }
.footer-brand h3 span { color: var(--gold); }
.footer-brand p { font-size: 0.9rem; line-height: 1.7; }
.footer-address { margin-top: 12px; font-size: 0.85rem; opacity: 0.7; }
.footer-col h4 { color: var(--white); font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.1em; margin-bottom: 16px; }
.footer-col a { display: block; padding: 4px 0; color: var(--gray-300); font-size: 0.9rem; }
.footer-col a:hover { color: var(--gold); padding-left: 4px; }
.footer-contact li { padding: 4px 0; font-size: 0.9rem; }
.footer-contact a { display: inline; padding: 0; }
.footer-bottom { margin-top: 48px; padding: 20px 0; border-top: 1px solid rgba(255,255,255,0.08); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; font-size: 0.82rem; }
.footer-links { display: flex; gap: 16px; }
.footer-links a, .footer-bottom a { color: var(--gray-400); }
.footer-links a:hover, .footer-bottom a:hover { color: var(--gold); }

/* === PAGE HERO === */
.page-hero { background: linear-gradient(135deg, var(--navy), var(--blue)); padding: 56px 0; position: relative; }
.page-hero::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 40px; background: linear-gradient(to top right, var(--white) 49%, transparent 51%); }
.page-hero h1 { color: var(--white); }
.page-hero p { color: var(--gray-200); }
.page-content { padding: 48px 0 80px; min-height: 40vh; }
.page-content h1, .page-content h2, .page-content h3 { margin-bottom: 16px; }
.page-content p { margin-bottom: 16px; }
.page-content ul, .page-content ol { margin-bottom: 16px; padding-left: 24px; }
.page-content li { margin-bottom: 8px; list-style: disc; }

/* Cookie Banner */
.cookie-banner { position: fixed; bottom: 0; left: 0; right: 0; background: var(--navy); color: var(--gray-200); padding: 16px 24px; z-index: 9999; display: none; }
.cookie-banner.show { display: block; }
.cookie-banner .container { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.cookie-banner p { margin: 0; font-size: 0.88rem; }
.cookie-banner a { color: var(--gold); }

/* Animations */
@keyframes fadeInUp { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }
.fade-in { animation: fadeInUp 0.6s ease forwards; }
.fade-delay-1 { animation-delay: 0.1s; opacity: 0; }
.fade-delay-2 { animation-delay: 0.2s; opacity: 0; }
.fade-delay-3 { animation-delay: 0.3s; opacity: 0; }

.text-center { text-align: center; }
.text-gold { color: var(--gold); }
.mt-20 { margin-top: 20px; }
.mt-40 { margin-top: 40px; }
.hidden { display: none !important; }

/* Responsive tracking form */
@media (max-width: 600px) {
    .tracking-form { flex-direction: column; }
    .tracking-details { grid-template-columns: 1fr; }
    .hero { padding: 60px 0 80px; }
    .stats-grid { grid-template-columns: 1fr 1fr; margin-top: -40px; }
}
/* ============================================================
   V3 UPGRADE — Add this to the END of your css/style.css
   ============================================================ */

/* === HERO SLIDESHOW === */
.hero-slideshow {
    position: relative;
    min-height: 600px;
    overflow: hidden;
}
@media (max-width: 768px) { .hero-slideshow { min-height: 500px; } }

.hero-slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 1s ease;
    z-index: 1;
}
.hero-slide.active { opacity: 1; z-index: 2; }

.hero-slide-bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
.hero-slide-video {
    position: absolute;
    inset: 0;
    overflow: hidden;
}
.hero-slide-video video,
.hero-slide-video iframe {
    position: absolute;
    top: 50%; left: 50%;
    min-width: 100%; min-height: 100%;
    width: auto; height: auto;
    transform: translate(-50%, -50%);
    object-fit: cover;
}
.hero-slide-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(11,29,58,0.85) 0%, rgba(19,43,80,0.6) 50%, rgba(21,101,192,0.4) 100%);
    z-index: 1;
}
.hero-slide-content {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    min-height: 600px;
    padding: 60px 0 90px;
}
@media (max-width: 768px) { .hero-slide-content { min-height: 500px; padding: 40px 0 80px; } }

.hero-slide-content h1 {
    color: var(--white);
    font-size: clamp(2rem, 5vw, 3.5rem);
    margin-bottom: 20px;
    max-width: 700px;
    animation: fadeInUp 0.8s ease forwards;
}
.hero-slide-content h1 em { font-style: normal; color: var(--gold); }
.hero-slide-content p {
    color: var(--gray-200);
    font-size: 1.15rem;
    margin-bottom: 32px;
    max-width: 540px;
    animation: fadeInUp 0.8s ease 0.15s forwards;
    opacity: 0;
}
.hero-slide-content .hero-buttons {
    animation: fadeInUp 0.8s ease 0.3s forwards;
    opacity: 0;
}

/* Slideshow navigation */
.hero-nav {
    position: absolute;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    gap: 10px;
    padding: 8px 14px;
    background: rgba(0, 0, 0, 0.25);
    backdrop-filter: blur(8px);
    border-radius: 999px;
    z-index: 10;
}
.hero-dot {
    width: 12px; height: 12px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.5);
    background: transparent;
    cursor: pointer;
    transition: var(--transition);
    padding: 0;
}
.hero-dot.active, .hero-dot:hover {
    background: var(--gold);
    border-color: var(--gold);
    transform: scale(1.2);
}
.hero-arrow {
    position: absolute;
    top: 45%;
    transform: translateY(-50%);
    z-index: 10;
    background: rgba(255,255,255,0.1);
    backdrop-filter: blur(8px);
    border: 1px solid rgba(255,255,255,0.15);
    color: var(--white);
    font-size: 2rem;
    width: 48px; height: 48px;
    border-radius: 50%;
    cursor: pointer;
    transition: var(--transition);
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
.hero-arrow:hover { background: rgba(255,255,255,0.2); border-color: var(--gold); color: var(--gold); }
.hero-prev { left: 24px; }
.hero-next { right: 24px; }
@media (max-width: 768px) {
    .hero-arrow { width: 36px; height: 36px; font-size: 1.4rem; }
    .hero-prev { left: 12px; }
    .hero-next { right: 12px; }
}

/* Tracking overlay on hero */
.hero-tracking-overlay {
    position: absolute;
    bottom: 0;
    left: 0; right: 0;
    z-index: 15;
    transform: translateY(50%);
}
.hero-tracking {
    background: var(--white);
    border-radius: var(--radius-lg);
    padding: 24px 28px;
    box-shadow: var(--shadow-xl);
    max-width: 580px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.hero-tracking h3 {
    color: var(--navy);
    font-size: 1rem;
    margin: 0;
}
.hero-tracking .tracking-form input {
    border: 2px solid var(--gray-200);
    background: var(--white);
    color: var(--navy);
}
.hero-tracking .tracking-form input::placeholder { color: var(--gray-400); }
.hero-tracking .tracking-form input:focus { border-color: var(--blue); }

/* === TRACK & TRACE NAVIGATION BUTTON === */
.nav-track-btn {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    padding: 8px 20px !important;
    background: var(--gold) !important;
    color: var(--navy) !important;
    border-radius: 30px !important;
    font-weight: 700 !important;
    font-size: 0.85rem !important;
    letter-spacing: 0.02em;
    transition: var(--transition);
    box-shadow: 0 2px 8px rgba(232,163,23,0.25);
    white-space: nowrap;
}
.nav-track-btn:hover {
    background: var(--gold-light) !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 16px rgba(232,163,23,0.35);
    color: var(--navy) !important;
}
.nav-track-btn.active {
    background: var(--navy) !important;
    color: var(--gold) !important;
}
.track-icon {
    font-size: 1rem;
    animation: pulse-track 2s infinite;
}
@keyframes pulse-track {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.15); }
}

/* Fix stats section margin for new hero layout */
.hero-slideshow + .section { padding-top: 100px; }
.hero-slideshow + .section .stats-grid { margin-top: 0; }
/* ============================================================
   V3.1 PATCH — Replace old hero-tracking CSS
   Paste this at the VERY END of your css/style.css
   ============================================================ */

/* === HERO: Two-column layout (text + tracking box) === */
.hero-inner {
    display: flex;
    align-items: flex-start;
    gap: 32px;
    padding-top: 40px;
}
.hero-text {
    flex: 1;
    min-width: 0;
}
.hero-text h1 {
    color: #fff;
    font-size: clamp(1.9rem, 4vw, 2.9rem);
    line-height: 1.15;
    margin-bottom: 18px;
    animation: fadeInUp 0.8s ease forwards;
}
.hero-text h1 em { font-style: normal; color: var(--gold); }
.hero-text p {
    color: var(--gray-200);
    font-size: 1.1rem;
    margin-bottom: 28px;
    max-width: 520px;
    animation: fadeInUp 0.8s ease 0.15s forwards;
    opacity: 0;
}
.hero-text .hero-buttons {
    animation: fadeInUp 0.8s ease 0.3s forwards;
    opacity: 0;
}

/* Track & Trace card ON the slideshow */
.hero-track-box {
    flex-shrink: 0;
    width: 300px;
    animation: fadeInUp 0.8s ease 0.4s forwards;
    opacity: 0;
}
.hero-track-card {
    background: rgba(255,255,255,0.95);
    backdrop-filter: blur(20px);
    border-radius: 16px;
    padding: 24px 22px;
    box-shadow: 0 16px 48px rgba(0,0,0,0.25);
    border: 1px solid rgba(255,255,255,0.3);
}
.hero-track-card h3 {
    color: var(--navy);
    font-size: 1.15rem;
    margin-bottom: 4px;
}
.hero-track-card > p {
    color: var(--gray-400);
    font-size: 0.85rem;
    margin-bottom: 16px;
}
.hero-track-card input {
    width: 100%;
    padding: 14px 16px;
    border: 2px solid var(--gray-200);
    border-radius: 8px;
    font-family: var(--mono);
    font-size: 0.92rem;
    color: var(--navy);
    background: var(--white);
    margin-bottom: 10px;
    transition: var(--transition);
}
.hero-track-card input::placeholder { color: var(--gray-300); }
.hero-track-card input:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(21,101,192,0.1); }
.hero-track-card .btn-block { width: 100%; justify-content: center; }

@media (max-width: 900px) {
    .hero-inner { flex-direction: column; gap: 32px; align-items: flex-start; }
    .hero-track-box { width: 100%; max-width: 400px; }
}
@media (max-width: 600px) {
    .hero-track-box { max-width: 100%; }
    .hero-track-card { padding: 20px 18px; }
}

/* Remove old hero-tracking-overlay (no longer used) */
.hero-tracking-overlay { display: none; }
.hero-tracking { display: none; }

/* Fix stats spacing */
.hero-slideshow + .section { padding-top: 80px; }
.hero-slideshow + .section .stats-grid { margin-top: 0; }
/* products.css */
/* ============================================================
   TransLog v2.5 — Products, Totals, Event Editing
   Replaces public/assets/css/products.css
   ============================================================ */

/* --- Section title helper --- */
.section-title {
    margin: 24px 0 12px;
    padding-bottom: 8px;
    border-bottom: 2px solid #f1f5f9;
    font-size: 1rem;
    color: #0B1D3A;
    letter-spacing: 0.01em;
}

/* =============== ADMIN: PRODUCT BUILDER =============== */
.products-section {
    margin-top: 32px;
    padding: 24px;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
}
.products-section-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    margin-bottom: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid #e2e8f0;
}
.products-title {
    margin: 0;
    font-size: 1.1rem;
    color: #0B1D3A;
}
.products-sub {
    margin: 4px 0 0;
    color: #64748b;
    font-size: 0.86rem;
}

.products-builder {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.products-empty {
    text-align: center;
    padding: 36px 16px;
    border: 2px dashed #cbd5e1;
    border-radius: 10px;
    background: #f8fafc;
    color: #64748b;
}
.products-empty-icon {
    font-size: 2.2rem;
    margin-bottom: 8px;
    opacity: 0.55;
}

.product-row {
    border: 1px solid #e2e8f0;
    border-left: 4px solid #3b82f6;
    border-radius: 10px;
    padding: 16px;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    transition: box-shadow 0.15s, border-color 0.15s;
}
.product-row:hover {
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
    border-left-color: #2563eb;
}
.product-row-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #f1f5f9;
}
.product-row-title {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    color: #0B1D3A;
    font-size: 0.95rem;
}
.product-row-icon { font-size: 1.1rem; }

.product-subtotal-badge {
    font-size: 0.82rem;
    color: #475569;
    padding: 4px 12px;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    border-radius: 20px;
    font-weight: 600;
    margin-left: auto;
    margin-right: 8px;
    white-space: nowrap;
}

/* Icon-only buttons */
.btn-icon {
    width: 32px; height: 32px;
    border: 1px solid #e2e8f0;
    background: #fff;
    border-radius: 7px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.9rem;
    color: #475569;
    transition: all 0.15s;
    padding: 0;
    line-height: 1;
}
.btn-icon:hover { background: #f1f5f9; transform: translateY(-1px); }
.btn-icon-danger {
    color: #dc2626;
    border-color: #fecaca;
    background: #fef2f2;
}
.btn-icon-danger:hover {
    background: #dc2626; color: #fff; border-color: #dc2626;
}
.btn-icon-sm { width: 26px; height: 26px; font-size: 0.78rem; }

.product-row .form-group.col-sm   { max-width: 110px; }
.product-row .form-group.col-wide { flex: 2; }

/* Accessories */
.accessories-block {
    margin-top: 14px;
    padding: 14px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}
.accessories-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 10px;
}
.accessories-label {
    color: #475569;
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.accessories-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.accessory-row {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-left: 3px solid #94a3b8;
    border-radius: 8px;
    padding: 10px 12px;
    transition: border-left-color 0.15s;
}
.accessory-row:hover { border-left-color: #64748b; }
.accessory-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
.accessory-badge {
    font-size: 0.7rem;
    font-weight: 600;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.accessory-row .form-group label {
    font-size: 0.78rem;
    color: #64748b;
}

/* Grand total in admin form */
.products-grand-total {
    margin-top: 20px;
    padding: 18px 24px;
    background: linear-gradient(135deg, #0B1D3A 0%, #1e3a8a 100%);
    color: #fff;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    box-shadow: 0 4px 14px rgba(11, 29, 58, 0.15);
}
.grand-total-label {
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 700;
    opacity: 0.85;
}
.grand-total-amounts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.grand-total-chip {
    display: inline-block;
    padding: 8px 16px;
    background: rgba(255, 255, 255, 0.12);
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 24px;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    backdrop-filter: blur(8px);
}

/* =============== ADMIN: TRACKING EVENTS TABLE =============== */
.events-table tr:hover td { background: #f8fafc; }
.events-table .btn-xs { margin-right: 4px; }

.event-edit-row td {
    background: #fef3c7 !important;  /* highlight the row being edited */
    padding: 16px !important;
}
.event-edit-form {
    padding: 4px;
}
.event-edit-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 12px;
    margin-bottom: 12px;
}
.event-edit-grid .form-group { margin: 0; }
.event-edit-grid label {
    font-size: 0.78rem;
    font-weight: 600;
    color: #78350f;
    margin-bottom: 4px;
}
.event-edit-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    padding-top: 8px;
    border-top: 1px dashed #fbbf24;
}

@media (max-width: 900px) {
    .event-edit-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 500px) {
    .event-edit-grid { grid-template-columns: 1fr; }
}

/* =============== PUBLIC: TRACKING PRODUCTS =============== */
.tracking-products {
    margin-top: 32px;
    padding: 28px;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}
.tracking-products-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 20px;
    padding-bottom: 14px;
    border-bottom: 1px solid #f1f5f9;
}
.tracking-products-head h3 {
    margin: 0;
    font-size: 1.25rem;
    color: #0B1D3A;
}
.products-count-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 26px;
    height: 26px;
    padding: 0 10px;
    background: linear-gradient(135deg, #3b82f6, #2563eb);
    color: #fff;
    font-size: 0.78rem;
    font-weight: 700;
    border-radius: 13px;
    box-shadow: 0 2px 6px rgba(59, 130, 246, 0.3);
}

.products-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* Public product card */
.product-card {
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    background: #ffffff;
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s, transform 0.15s;
}
.product-card:hover {
    border-color: #cbd5e1;
    box-shadow: 0 6px 18px rgba(15, 23, 42, 0.06);
    transform: translateY(-1px);
}
.product-card-head {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 16px;
    padding: 18px 20px;
}
.product-card-icon {
    width: 46px; height: 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #dbeafe 0%, #eff6ff 100%);
    border-radius: 11px;
    font-size: 1.35rem;
    flex-shrink: 0;
}
.product-card-body { min-width: 0; }
.product-card-name {
    font-weight: 600;
    font-size: 1.05rem;
    color: #0B1D3A;
    line-height: 1.3;
    word-break: break-word;
}
.product-card-sku {
    margin-top: 4px;
    color: #64748b;
    font-size: 0.82rem;
}
.product-card-sku span {
    font-family: monospace, 'Space Mono', monospace;
    color: #0B1D3A;
    font-weight: 500;
    background: #f1f5f9;
    padding: 2px 8px;
    border-radius: 4px;
    margin-left: 2px;
}
.product-card-numbers {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    flex-shrink: 0;
}
.qty-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    background: #f1f5f9;
    border-radius: 20px;
    font-size: 0.8rem;
    color: #334155;
}
.qty-chip-label {
    font-size: 0.72rem;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
.qty-chip-value { font-weight: 600; }
.price-chip {
    padding: 6px 14px;
    background: linear-gradient(135deg, #0B1D3A 0%, #1e3a8a 100%);
    color: #fff;
    border-radius: 20px;
    font-weight: 600;
    font-size: 0.88rem;
    white-space: nowrap;
    letter-spacing: 0.01em;
    box-shadow: 0 2px 6px rgba(11, 29, 58, 0.2);
}

/* Accessories on public page */
.product-accessories {
    border-top: 1px dashed #cbd5e1;
    background: #f8fafc;
    padding: 14px 20px 16px;
}
.product-accessories-label {
    font-size: 0.74rem;
    color: #64748b;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-bottom: 8px;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.acc-label-icon { color: #94a3b8; font-weight: normal; }
.acc-count { font-weight: 500; color: #94a3b8; text-transform: none; letter-spacing: 0; }

.product-accessories ul { list-style: none; margin: 0; padding: 0; }
.product-accessories li {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid #eef2f7;
    font-size: 0.9rem;
}
.product-accessories li:last-child { border-bottom: 0; }
.acc-main {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 10px;
    min-width: 0;
}
.acc-name { font-weight: 500; color: #0B1D3A; }
.acc-sku {
    font-size: 0.78rem;
    color: #64748b;
    font-family: monospace, 'Space Mono', monospace;
}
.acc-right {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 0.84rem;
    flex-shrink: 0;
}
.acc-qty {
    color: #475569;
    padding: 3px 9px;
    background: #e2e8f0;
    border-radius: 10px;
    font-weight: 600;
    font-size: 0.78rem;
}
.acc-price { color: #0B1D3A; font-weight: 600; }

/* Per-product subtotal row on public page */
.product-subtotal {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 20px;
    background: #f1f5f9;
    border-top: 1px solid #e2e8f0;
    gap: 10px;
    flex-wrap: wrap;
}
.product-subtotal-label {
    font-size: 0.76rem;
    font-weight: 700;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}
.product-subtotal-amounts {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.product-subtotal-chip {
    padding: 4px 12px;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 18px;
    font-weight: 600;
    color: #0B1D3A;
    font-size: 0.88rem;
}

/* Grand total on public page */
.tracking-grand-total {
    margin-top: 18px;
    padding: 20px 28px;
    background: linear-gradient(135deg, #0B1D3A 0%, #1e3a8a 100%);
    color: #fff;
    border-radius: 14px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    box-shadow: 0 6px 20px rgba(11, 29, 58, 0.18);
}
.tracking-grand-total .grand-total-label {
    font-size: 0.88rem;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-weight: 700;
}
.tracking-grand-total .grand-total-amounts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}
.tracking-grand-total .grand-total-chip {
    display: inline-block;
    padding: 10px 18px;
    background: rgba(255, 255, 255, 0.14);
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 24px;
    font-size: 1.15rem;
    font-weight: 700;
}

/* Mobile */
@media (max-width: 640px) {
    .product-card-head { grid-template-columns: auto 1fr; }
    .product-card-numbers {
        grid-column: 1 / -1;
        flex-direction: row;
        justify-content: flex-start;
        align-items: center;
    }
    .product-accessories li {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }
    .acc-right { align-self: flex-end; }
    .tracking-grand-total { flex-direction: column; align-items: flex-start; }
}

/* ============================================================
   v2.6 — Testimonials section + admin
   ============================================================ */

/* Section eyebrow text */
.section-eyebrow {
    display: block;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: #3b82f6;
    text-transform: uppercase;
    margin-bottom: 10px;
}

/* Public section background */
.testimonials-section {
    background: linear-gradient(180deg, #f8fafc 0%, #eff6ff 100%);
    padding: 64px 0 72px;
    overflow: hidden;
}
.testimonials-section .section-header { text-align: center; }
.testimonials-section .section-header h2 {
    font-size: 2.4rem;
    color: #0B1D3A;
    margin: 0;
    font-weight: 700;
}
.testimonials-section .section-header p {
    margin-top: 20px;
    color: #64748b;
    font-size: 1rem;
}
.testimonials-section .accent-line {
    display: inline-block;
    width: 60px;
    height: 3px;
    background: linear-gradient(90deg, #3b82f6, #2563eb);
    border-radius: 2px;
    margin-top: 14px;
}

/* Marquee container — full width, masks edges */
.testimonials-marquee {
    position: relative;
    margin-top: 48px;
    overflow: hidden;
    padding: 12px 0 24px;
    /* Fade edges so cards don't pop abruptly */
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 60px, #000 calc(100% - 60px), transparent 100%);
            mask-image: linear-gradient(to right, transparent 0, #000 60px, #000 calc(100% - 60px), transparent 100%);
}

/* Animated track — holds 2x the cards for seamless loop */
.tm-track {
    display: flex;
    gap: 24px;
    width: max-content;
    animation: tm-scroll var(--tm-speed, 40s) linear infinite;
    will-change: transform;
}
.testimonials-marquee:hover .tm-track {
    animation-play-state: paused;   /* pause on hover */
}
@keyframes tm-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }   /* move half (= one set, since we render twice) */
}

/* Respect reduced-motion */
@media (prefers-reduced-motion: reduce) {
    .tm-track { animation: none; }
    .testimonials-marquee {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }
}

/* Individual card */
.tm-card {
    flex: 0 0 360px;
    max-width: 360px;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    padding: 22px 22px 20px;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.04);
    transition: transform 0.2s, box-shadow 0.2s;
    position: relative;
}
.tm-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
}
.tm-card-head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
    position: relative;
}
.tm-avatar {
    width: 44px; height: 44px;
    border-radius: 50%;
    background: #3b82f6;
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.9rem;
    flex-shrink: 0;
    letter-spacing: 0.02em;
    box-shadow: 0 2px 6px rgba(0,0,0,0.1);
}
.tm-who { flex: 1; min-width: 0; }
.tm-name {
    font-weight: 700;
    color: #0B1D3A;
    font-size: 0.98rem;
    line-height: 1.2;
}
.tm-country {
    font-size: 0.82rem;
    color: #64748b;
    margin-top: 2px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.tm-flag {
    display: inline-block;
    border-radius: 2px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.12);
    vertical-align: middle;
}
.tm-quote-mark {
    position: absolute;
    right: 0;
    top: -6px;
    font-family: Georgia, serif;
    font-size: 3.4rem;
    line-height: 1;
    color: #dbeafe;
    font-weight: 700;
    pointer-events: none;
}

.tm-stars {
    display: flex;
    gap: 2px;
    margin-bottom: 12px;
    font-size: 1.05rem;
}
.tm-stars .star-on  { color: #f59e0b; }
.tm-stars .star-off { color: #e2e8f0; }

.tm-quote {
    margin: 0;
    color: #475569;
    font-style: italic;
    font-size: 0.92rem;
    line-height: 1.55;
}
.tm-quote::before { content: '"'; }
.tm-quote::after  { content: '"'; }

/* Mobile */
@media (max-width: 640px) {
    .testimonials-section { padding: 48px 0 56px; }
    .testimonials-section .section-header h2 { font-size: 1.8rem; }
    .tm-card { flex-basis: 280px; padding: 18px; }
    .tm-quote-mark { font-size: 2.6rem; }
}

/* ============================================================
   ADMIN — testimonials list + editor
   ============================================================ */
.avatar-thumb {
    width: 38px; height: 38px;
    border-radius: 50%;
    background: #3b82f6;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: 0.03em;
}
.country-code-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 8px;
    background: #e2e8f0;
    color: #475569;
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: 10px;
    letter-spacing: 0.05em;
}
.star-rating-inline {
    color: #f59e0b;
    letter-spacing: 0.05em;
    font-size: 1rem;
}

.lang-code-chip {
    display: inline-block;
    padding: 2px 9px;
    background: #3b82f6;
    color: #fff;
    border-radius: 11px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    margin-right: 8px;
}

.testimonial-translations .form-group label {
    display: flex;
    align-items: center;
    margin-bottom: 6px;
}

.lang-block {
    margin-bottom: 18px;
    padding: 16px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
}
.lang-block-head {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    color: #475569;
    font-weight: 600;
    font-size: 0.95rem;
}
/* footer.css */
/* ============================================================
   TransLog v2.7 — Footer + CTA Banner
   Drop at: public/assets/css/footer.css
   Loaded after style.css and products.css
   ============================================================ */

/* Reset old footer if it was present */
.site-footer { display: none; }

/* ============================================================
   CTA BANNER
   ============================================================ */
.footer-cta {
    padding: 72px 24px;
    color: #fff;
    text-align: center;
    position: relative;
}
.footer-cta-inner {
    max-width: 800px;
    margin: 0 auto;
}
.footer-cta-title {
    font-size: 2.4rem;
    font-weight: 700;
    margin: 0 0 16px;
    letter-spacing: -0.01em;
    line-height: 1.2;
    color: #fff;
}
.footer-cta-sub {
    font-size: 1rem;
    margin: 0 0 32px;
    opacity: 0.85;
    line-height: 1.5;
}
.footer-cta-buttons {
    display: flex;
    gap: 14px;
    justify-content: center;
    flex-wrap: wrap;
}
.footer-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 14px 28px;
    border-radius: 8px;
    font-weight: 600;
    font-size: 0.96rem;
    text-decoration: none;
    transition: transform 0.15s, box-shadow 0.15s, background 0.15s;
    border: 2px solid transparent;
    white-space: nowrap;
}
.footer-cta-btn-primary {
    background: #fff;
    color: #1e3a8a;
    box-shadow: 0 4px 14px rgba(0,0,0,0.15);
}
.footer-cta-btn-primary:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(0,0,0,0.22);
    background: #f8fafc;
}
.footer-cta-btn-outline {
    background: transparent;
    color: #fff;
    border-color: rgba(255,255,255,0.7);
}
.footer-cta-btn-outline:hover {
    background: rgba(255,255,255,0.12);
    border-color: #fff;
    transform: translateY(-2px);
}
.cta-arrow {
    transition: transform 0.2s;
    display: inline-block;
}
.footer-cta-btn-primary:hover .cta-arrow {
    transform: translateX(4px);
}

@media (max-width: 640px) {
    .footer-cta { padding: 48px 16px; }
    .footer-cta-title { font-size: 1.7rem; }
    .footer-cta-buttons { flex-direction: column; align-items: stretch; }
    .footer-cta-btn { justify-content: center; }
}

/* ============================================================
   FOOTER (v2)
   ============================================================ */
.site-footer-v2 {
    padding: 56px 0 24px;
}
.site-footer-v2 .container {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 24px;
}
.footer-grid-v2 {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1.4fr;
    gap: 48px;
    align-items: flex-start;
}
@media (max-width: 960px) {
    .footer-grid-v2 { grid-template-columns: 1fr 1fr; gap: 36px 32px; }
}
@media (max-width: 540px) {
    .footer-grid-v2 { grid-template-columns: 1fr; gap: 32px; }
}

/* Brand block */
.footer-brand-v2 { }
.footer-brand-head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
}
.footer-logo {
    height: 38px;
    width: auto;
    border-radius: 8px;
}
.footer-logo-fallback {
    width: 40px; height: 40px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2rem;
    flex-shrink: 0;
}
.footer-brand-text { line-height: 1.25; }
.footer-brand-name {
    font-size: 1.05rem;
    font-weight: 700;
    color: #fff;
}
.footer-brand-sub {
    font-size: 0.78rem;
    font-weight: 600;
    margin-top: 2px;
}
.footer-address-v2 {
    font-size: 0.88rem;
    line-height: 1.6;
}

/* Columns */
.footer-col-v2 { }
.footer-col-title {
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
    margin: 0 0 18px;
    letter-spacing: 0.01em;
}
.footer-col-v2 a {
    display: block;
    padding: 6px 0;
    text-decoration: none;
    font-size: 0.92rem;
    transition: opacity 0.15s, color 0.15s, padding-left 0.15s;
    opacity: 0.82;
}
.footer-col-v2 a:hover {
    opacity: 1;
    padding-left: 4px;
}

/* Contact list */
.footer-contact-v2 {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.footer-contact-v2 li {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    font-size: 0.9rem;
    line-height: 1.4;
}
.footer-contact-v2 a {
    text-decoration: none;
    transition: opacity 0.15s;
}
.footer-contact-v2 a:hover { opacity: 0.85; }
.footer-icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-top: 1px;
}

/* Bottom bar */
.footer-bottom-v2 {
    margin-top: 40px;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,0.07);
    font-size: 0.85rem;
    text-align: center;
}

/* ============================================================
   ADMIN — CTA gradient preview
   ============================================================ */
.cta-preview-swatch {
    width: 100%;
    height: 42px;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
    background: linear-gradient(135deg, #0B2F7B 0%, #0B1D3A 100%);
}
/* process.css */
/* ============================================================
   TransLog v2.9 — Process Steps timeline
   Drop at: public/assets/css/process.css
   ============================================================ */

.process-section {
    background:
        radial-gradient(circle at 1px 1px, rgba(59, 130, 246, 0.06) 1px, transparent 0) 0 0 / 18px 18px,
        linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    padding: 80px 0;
}
.process-header {
    text-align: center;
    margin-bottom: 56px;
}
.process-eyebrow {
    display: inline-block;
    color: #f59e0b;
    font-size: 0.84rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    margin-bottom: 12px;
    text-transform: uppercase;
}
.process-title {
    margin: 0;
    font-size: 2.2rem;
    color: #0B1D3A;
    font-weight: 700;
}

/* Timeline grid: each step is a column. Connector lines are drawn via
   pseudo-elements so they automatically stretch between circles. */
.process-timeline {
    display: grid;
    gap: 24px;
    grid-template-columns: repeat(var(--cols, 5), 1fr);
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 8px;
}
/* set --cols based on data-count up to 5 */
.process-timeline[data-count="1"] { --cols: 1; }
.process-timeline[data-count="2"] { --cols: 2; }
.process-timeline[data-count="3"] { --cols: 3; }
.process-timeline[data-count="4"] { --cols: 4; }
.process-timeline[data-count="5"] { --cols: 5; }
.process-timeline[data-count="6"] { --cols: 6; }

.process-step {
    text-align: center;
    position: relative;
    padding-top: 16px;
}

/* The circle itself */
.process-circle {
    position: relative;
    width: 110px; height: 110px;
    margin: 0 auto 18px;
    background: #ffffff;
    border-radius: 50%;
    border: 2px dashed #cbd5e1;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #1e3a8a;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.04);
    transition: background 0.4s, border-color 0.4s, transform 0.4s, box-shadow 0.4s;
    z-index: 2;
}
.process-circle .process-icon {
    width: 50px; height: 50px;
    transition: transform 0.5s, color 0.4s;
    transform-style: preserve-3d;
}
.process-circle .process-icon svg {
    width: 100%; height: 100%;
    display: block;
}

/* Step number badge */
.process-step-num {
    position: absolute;
    top: -2px; right: -4px;
    width: 32px; height: 32px;
    background: #1e3a8a;
    color: #fff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.78rem;
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(30, 58, 138, 0.35);
    transition: background 0.4s, transform 0.3s;
    z-index: 3;
}

/* Title + description */
.process-step-title {
    font-size: 1.05rem;
    color: #0B1D3A;
    font-weight: 700;
    margin: 0 0 10px;
    line-height: 1.3;
}
.process-step-desc {
    font-size: 0.85rem;
    color: #64748b;
    line-height: 1.55;
    margin: 0;
    padding: 0 8px;
}

/* ============================================================
   DOTTED CONNECTOR between circles
   - drawn between circle and the next one using a pseudo-element
   - hidden on the last step
   ============================================================ */
.process-step:not(:last-child) .process-circle::after {
    content: "";
    position: absolute;
    top: 50%;
    left: calc(100% + 6px);
    width: calc(100vw / var(--cols, 5) - 116px);  /* approx column gap */
    max-width: 220px;
    height: 30px;
    transform: translateY(-30%);
    background-image: radial-gradient(circle, #94a3b8 1.5px, transparent 1.5px);
    background-size: 10px 10px;
    background-repeat: repeat-x;
    background-position: 0 50%;
    z-index: 1;
    pointer-events: none;
    opacity: 0.7;
}

/* ============================================================
   HOVER — circle "fills" with brand blue, icon flips to white
   ============================================================ */
.process-step:hover .process-circle,
.process-step.is-active .process-circle {
    background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
    border: 2px solid #1e3a8a;
    border-style: solid;
    color: #ffffff;
    transform: translateY(-4px) scale(1.04);
    box-shadow: 0 12px 28px rgba(30, 58, 138, 0.32);
}
.process-step:hover .process-icon,
.process-step.is-active .process-icon {
    /* small spin/flip on hover for nice feedback */
    transform: rotateY(360deg);
    color: #ffffff;
}
.process-step:hover .process-step-num,
.process-step.is-active .process-step-num {
    background: #f59e0b;
    color: #0B1D3A;
    transform: scale(1.05);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1100px) {
    .process-timeline { grid-template-columns: repeat(3, 1fr); }
    .process-timeline[data-count="4"] { grid-template-columns: repeat(2, 1fr); }
    /* hide horizontal connector on wrapped layout */
    .process-step .process-circle::after { display: none; }
}
@media (max-width: 720px) {
    .process-timeline { grid-template-columns: repeat(2, 1fr); }
    .process-title { font-size: 1.6rem; }
    .process-section { padding: 56px 0; }
}
@media (max-width: 480px) {
    .process-timeline { grid-template-columns: 1fr; gap: 36px; }
    .process-circle { width: 96px; height: 96px; }
    .process-circle .process-icon { width: 42px; height: 42px; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .process-step:hover .process-icon { transform: none; }
    .process-step:hover .process-circle { transform: none; }
}

/* ============================================================
   ADMIN — order badge in the steps list
   ============================================================ */
.step-order-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px; height: 36px;
    background: #1e3a8a;
    color: #fff;
    border-radius: 50%;
    font-weight: 700;
    font-size: 0.82rem;
}
/* about.css */
/* ============================================================
   TransLog v2.11 — WYSIWYG editor + About section
   Drop at: public/assets/css/about.css
   ============================================================ */

/* =========================
   WYSIWYG EDITOR (admin only)
   ========================= */
.wy-wrapper {
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    background: #fff;
    overflow: visible;
    position: relative;
}
.wy-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 8px;
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
    border-radius: 8px 8px 0 0;
    position: sticky;
    top: 0;
    z-index: 4;
}
.wy-btn {
    min-width: 34px;
    height: 32px;
    padding: 0 8px;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 5px;
    cursor: pointer;
    color: #334155;
    font-size: 0.86rem;
    font-weight: 500;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: all 0.12s;
    line-height: 1;
}
.wy-btn:hover {
    background: #eff6ff;
    border-color: #93c5fd;
    color: #1e3a8a;
}
.wy-btn:active { transform: scale(0.96); }
.wy-btn b, .wy-btn i, .wy-btn u, .wy-btn s { font-size: 0.92rem; }
.wy-sep {
    width: 1px;
    background: #cbd5e1;
    margin: 2px 4px;
    align-self: stretch;
}
.wy-area {
    min-height: 240px;
    padding: 16px 18px;
    outline: none;
    font-size: 0.95rem;
    line-height: 1.6;
    color: #0f172a;
    background: #fff;
    border-radius: 0 0 8px 8px;
    /* Round 34 fix: contain horizontal overflow inside the editor.
       Long single-line shortcodes (e.g. [contact-form] with 17 attrs)
       used to force horizontal page scroll. Now they wrap visually
       inside the editor without changing the underlying data. The
       overflow-wrap rules ensure even unbroken strings (URLs,
       quoted attribute values) wrap at any character if needed. */
    overflow-x: hidden;
    overflow-y: auto;
    overflow-wrap: anywhere;
    word-break: normal;
}
.wy-area::after {       /* clearfix for floats */
    content: '';
    display: table;
    clear: both;
}
.wy-area:focus { background: #fefefe; }
.wy-area p { margin: 0 0 12px; }
.wy-area p:last-child { margin-bottom: 0; }
.wy-area h2 { font-size: 1.5rem; margin: 16px 0 8px; color: #0B1D3A; font-weight: 700; }
.wy-area h3 { font-size: 1.2rem; margin: 14px 0 6px; color: #0B1D3A; font-weight: 600; }
.wy-area ul, .wy-area ol { margin: 0 0 12px 20px; padding-left: 20px; }
.wy-area li { margin-bottom: 4px; }
.wy-area a { color: #2563eb; text-decoration: underline; }
.wy-area img { max-width: 100%; height: auto; border-radius: 8px; cursor: pointer; transition: outline 0.15s; }
.wy-area img.wy-img-selected { outline: 3px solid #3b82f6; outline-offset: 2px; }
.wy-area blockquote {
    margin: 10px 0;
    padding: 8px 14px;
    border-left: 3px solid #cbd5e1;
    color: #475569;
    background: #f8fafc;
}
.wy-textarea {
    width: 100%;
    min-height: 240px;
    padding: 16px 18px;
    border: 0;
    outline: none;
    font-family: 'SFMono-Regular', Consolas, monospace;
    font-size: 0.85rem;
    resize: vertical;
    background: #fff;
    color: #0f172a;
}

/* Font-size dropdown */
.wy-size-menu {
    position: absolute;
    top: 48px;
    left: 0;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 6px;
    box-shadow: 0 8px 20px rgba(0,0,0,0.12);
    z-index: 10;
    padding: 4px;
    display: flex;
    flex-direction: column;
    min-width: 140px;
}
.wy-size-menu button {
    padding: 8px 12px;
    background: transparent;
    border: 0;
    text-align: left;
    cursor: pointer;
    border-radius: 4px;
    color: #0f172a;
}
.wy-size-menu button:hover { background: #eff6ff; }

/* =========================
   PUBLIC — ABOUT section
   ========================= */
.about-section {
    padding: 72px 0;
    background: #fff;
}
.about-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    align-items: center;
    max-width: 1200px;
    margin: 0 auto;
}
.about-grid.image-right .about-visual { order: 2; }
.about-grid.image-right .about-content { order: 1; }

.about-visual {
    position: relative;
}
.about-image-frame {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 8px 28px rgba(15, 23, 42, 0.12);
    height: 620px;
    background: #e2e8f0;
}
.about-image-frame img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.about-image-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #94a3b8;
    background:
        repeating-linear-gradient(45deg, #e2e8f0 0 10px, #f1f5f9 10px 20px);
    font-size: 0.9rem;
}

.about-badge {
    position: absolute;
    left: 30px;
    bottom: 40px;
    padding: 22px 28px;
    color: #fff;
    display: inline-flex;
    align-items: center;
    gap: 18px;
    box-shadow: 0 10px 28px rgba(0,0,0,0.18);
    border-radius: 4px;
    /* angle effect optional — keep straight like screenshot */
    min-width: 200px;
}
.about-badge-number {
    font-size: 2.8rem;
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.01em;
}
.about-badge-text {
    font-size: 1rem;
    font-weight: 500;
    opacity: 0.95;
    line-height: 1.2;
}

.about-content { }
.about-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #f59e0b;
    font-size: 0.84rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    margin-bottom: 14px;
    text-transform: uppercase;
}
.about-eyebrow-icon {
    color: #3b82f6;
    font-size: 1.1rem;
}
.about-title {
    margin: 0 0 20px;
    font-size: 2.2rem;
    color: #0B1D3A;
    font-weight: 700;
    line-height: 1.15;
}
.about-body {
    color: #475569;
    font-size: 0.98rem;
    line-height: 1.7;
}
.about-body p { margin: 0 0 14px; }
.about-body p:last-child { margin-bottom: 0; }
.about-body h2 {
    font-size: 1.4rem;
    margin: 18px 0 8px;
    color: #0B1D3A;
}
.about-body h3 {
    font-size: 1.15rem;
    margin: 16px 0 6px;
    color: #0B1D3A;
}
.about-body ul, .about-body ol {
    margin: 0 0 14px 0;
    padding-left: 22px;
}
.about-body li { margin-bottom: 6px; }
.about-body a {
    color: #2563eb;
    text-decoration: underline;
}
.about-body strong { color: #0B1D3A; }
.about-body blockquote {
    margin: 14px 0;
    padding: 10px 16px;
    border-left: 3px solid #3b82f6;
    background: #f8fafc;
    color: #334155;
}

/* Responsive */
@media (max-width: 900px) {
    .about-grid { grid-template-columns: 1fr; gap: 36px; }
    .about-grid.image-right .about-visual,
    .about-grid.image-right .about-content { order: 0; }
    .about-title { font-size: 1.7rem; }
    .about-badge { left: 16px; bottom: 16px; padding: 16px 20px; }
    .about-badge-number { font-size: 2rem; }
}

/* =========================
   Admin — image preview
   ========================= */
.about-image-preview {
    display: inline-block;
    margin-top: 8px;
    max-width: 260px;
    max-height: 160px;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
    object-fit: cover;
}
/* sections.css */
/* ============================================================
   TransLog v2.12 — Content Block + Image Gallery Slider
   Drop at: public/assets/css/sections.css
   ============================================================ */

/* =========================================================
   CONTENT BLOCK  (centered text section like "Fuhrpark")
   ========================================================= */
.cblock-section {
    padding: 88px 0 72px;
    background: #fff;
    position: relative;
}
.cblock-inner {
    max-width: 1080px;
    margin: 0 auto;
    padding: 0 24px;
    text-align: center;
}
.cblock-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #f59e0b;
    font-size: 0.84rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    margin-bottom: 20px;
    text-transform: uppercase;
}
.cblock-eyebrow-icon {
    color: #3b82f6;
    font-size: 1.15rem;
}
.cblock-title {
    margin: 0 0 28px;
    font-size: 2.6rem;
    color: #0B1D3A;
    font-weight: 800;
    letter-spacing: -0.015em;
    line-height: 1.15;
}
.cblock-body {
    color: #475569;
    font-size: 1rem;
    line-height: 1.75;
    text-align: center;
    max-width: 900px;
    margin: 0 auto;
}
.cblock-body p        { margin: 0 0 14px; }
.cblock-body p:last-child { margin-bottom: 0; }
.cblock-body h2       { font-size: 1.5rem; margin: 22px 0 10px; color: #0B1D3A; font-weight: 700; }
.cblock-body h3       { font-size: 1.2rem; margin: 18px 0 8px;  color: #0B1D3A; font-weight: 600; }
.cblock-body ul,
.cblock-body ol       { text-align: left; max-width: 640px; margin: 0 auto 14px; padding-left: 22px; }
.cblock-body li       { margin-bottom: 6px; }
.cblock-body a        { color: #2563eb; text-decoration: underline; }
.cblock-body strong   { color: #0B1D3A; }
.cblock-body blockquote {
    margin: 16px auto;
    padding: 10px 18px;
    border-left: 3px solid #3b82f6;
    background: #f8fafc;
    color: #334155;
    max-width: 680px;
    text-align: left;
}

@media (max-width: 720px) {
    .cblock-section { padding: 56px 0 48px; }
    .cblock-title   { font-size: 1.65rem; }
    .cblock-body    { font-size: 0.95rem; }
}

/* =========================================================
   GALLERY SLIDER  (horizontal 3-image row)
   ========================================================= */
.gallery-section {
    padding: 72px 0 88px;
    background: linear-gradient(180deg, #f8fafc 0%, #eff6ff 100%);
}
.gallery-section .container {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 24px;
}
.gallery-head {
    text-align: center;
    margin-bottom: 40px;
}
.gallery-eyebrow {
    display: inline-block;
    color: #f59e0b;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    margin-bottom: 10px;
    text-transform: uppercase;
}
.gallery-title {
    margin: 0;
    font-size: 2.2rem;
    color: #0B1D3A;
    font-weight: 700;
    line-height: 1.2;
}

/* Track / viewport */
.gallery-viewport {
    position: relative;
    overflow: hidden;
    border-radius: 14px;
}
.gallery-track {
    display: flex;
    gap: 20px;
    transition: transform 0.55s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: transform;
}
/* each slide is 1/3 of the viewport; on tablet 1/2; on mobile full width */
.gallery-slide {
    flex: 0 0 calc((100% - 40px) / 3);  /* 3 visible, 2 gaps */
    min-width: 0;
}
@media (max-width: 1000px) {
    .gallery-slide { flex: 0 0 calc((100% - 20px) / 2); }   /* 2 visible */
    .gallery-track { gap: 20px; }
}
@media (max-width: 640px) {
    .gallery-slide { flex: 0 0 100%; }                      /* 1 visible */
    .gallery-track { gap: 16px; }
}

.gallery-card img {
    /* Overridden by v2.13 rule below — kept for fallback */
}

/* Overlay card (styled below in v2.13 section as sibling of card) */

/* Arrows */
.gallery-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 48px; height: 48px;
    border-radius: 50%;
    background: #fff;
    border: 1px solid #e2e8f0;
    color: #0B1D3A;
    font-size: 1.4rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0,0,0,0.12);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 3;
    transition: all 0.2s;
    line-height: 1;
}
.gallery-arrow:hover:not(:disabled) {
    background: #3b82f6;
    color: #fff;
    border-color: #3b82f6;
    transform: translateY(-50%) scale(1.06);
}
.gallery-arrow:disabled {
    opacity: 0.4;
    cursor: default;
}
.gallery-arrow-prev { left: -12px; }
.gallery-arrow-next { right: -12px; }
@media (max-width: 640px) {
    .gallery-arrow-prev { left: 8px; }
    .gallery-arrow-next { right: 8px; }
    .gallery-arrow      { width: 40px; height: 40px; }
}

/* Dots */
.gallery-dots {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 22px;
}
.gallery-dot {
    width: 9px; height: 9px;
    border-radius: 50%;
    background: #cbd5e1;
    border: 0;
    padding: 0;
    cursor: pointer;
    transition: all 0.2s;
}
.gallery-dot:hover { background: #94a3b8; }
.gallery-dot.is-active {
    background: #3b82f6;
    transform: scale(1.3);
}

/* =========================================================
   ADMIN — gallery list thumbnail
   ========================================================= */
.gallery-thumb {
    width: 80px;
    height: 56px;
    object-fit: cover;
    border-radius: 6px;
    border: 1px solid #e2e8f0;
}
/* ============================================================
   TransLog v2.13 additions — appended to sections.css
   ============================================================ */

/* =========================================================
   CONTENT BLOCK with image (two-column layout)
   ========================================================= */
.cblock-section.cblock-with-image .cblock-inner {
    max-width: 1200px;
}
.cblock-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    align-items: center;
}
.cblock-grid.image-right .cblock-visual  { order: 2; }
.cblock-grid.image-right .cblock-text    { order: 1; }

.cblock-visual { position: relative; }
.cblock-image {
    width: 100%;
    height: 100%;
    max-height: 480px;
    object-fit: cover;
    border-radius: 12px;
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.12);
    display: block;
    aspect-ratio: 4/3;
}

/* Left-aligned versions (when there's an image) */
.cblock-text { text-align: left; }
.cblock-eyebrow-left {
    justify-content: flex-start;
}
.cblock-title-left {
    text-align: left;
    font-size: 2.2rem;
}
.cblock-body-left {
    text-align: left;
    max-width: none;
    margin: 0;
}
.cblock-body-left ul,
.cblock-body-left ol {
    margin: 0 0 14px 0;
}
.cblock-body-left blockquote {
    margin: 16px 0;
    max-width: none;
}

@media (max-width: 900px) {
    .cblock-grid { grid-template-columns: 1fr; gap: 32px; }
    .cblock-grid.image-right .cblock-visual,
    .cblock-grid.image-right .cblock-text { order: 0; }
    .cblock-title-left { font-size: 1.55rem; }
    .cblock-image { max-height: 320px; }
}

/* =========================================================
   GALLERY — improved overlay (v2.13)
   ========================================================= */

/* Image wrapper so overlay can sit OUTSIDE the card's hover-scale */
.gallery-image-wrap {
    width: 100%;
    height: 100%;
    overflow: hidden;
    border-radius: 14px;
}
.gallery-image-wrap img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s;
}
.gallery-card:hover .gallery-image-wrap img {
    transform: scale(1.06);
}

/* The slide is positioned relative so overlay can be absolute to it */
.gallery-slide {
    position: relative;
}

.gallery-overlay-text { flex: 1; min-width: 0; }
.gallery-overlay-eyebrow {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: #f59e0b;
    margin-bottom: 4px;
    letter-spacing: 0.04em;
}
.gallery-overlay-title {
    font-size: 1rem;
    font-weight: 700;
    color: #0B1D3A;
    line-height: 1.25;
    word-break: break-word;
}

/* Overlay — now positioned relative to slide, not card, so button is clickable */
.gallery-slide .gallery-overlay {
    position: absolute;
    left: 20px;
    right: 20px;
    bottom: 20px;
    background: #fff;
    border-radius: 10px;
    padding: 14px 16px;
    display: flex;
    align-items: center;
    gap: 14px;
    box-shadow: 0 10px 28px rgba(0,0,0,0.22);
    z-index: 2;  /* above image */
    transition: transform 0.3s, box-shadow 0.3s;
    pointer-events: auto;
}
.gallery-slide:hover .gallery-overlay {
    transform: translateY(-3px);
    box-shadow: 0 14px 32px rgba(0,0,0,0.28);
}

/* Ensure the card link fills only the image area, not the overlay */
.gallery-card {
    position: relative;
    display: block;
    aspect-ratio: 4/3;
    border-radius: 14px;
    overflow: hidden;
    background: #e2e8f0;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.08);
    text-decoration: none;
    color: inherit;
    transition: transform 0.3s, box-shadow 0.3s;
}
.gallery-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 14px 32px rgba(15, 23, 42, 0.14);
}

/* Override old rule where img was direct child */
.gallery-card > img {
    display: none;  /* prevent double image if old HTML is cached */
}

.gallery-overlay-arrow {
    flex-shrink: 0;
    width: 44px; height: 44px;
    border-radius: 50%;
    background: #f59e0b;
    color: #fff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.15rem;
    text-decoration: none;
    transition: transform 0.25s, background 0.25s, box-shadow 0.25s;
    box-shadow: 0 2px 8px rgba(245, 158, 11, 0.35);
    cursor: pointer;
}
.gallery-overlay-arrow:hover {
    transform: rotate(-45deg) scale(1.1);
    box-shadow: 0 4px 14px rgba(245, 158, 11, 0.5);
    filter: brightness(1.08);
}
.gallery-overlay-arrow-static {
    cursor: default;
}
.gallery-overlay-arrow-static:hover {
    transform: none;
    filter: none;
}

@media (max-width: 640px) {
    .gallery-slide .gallery-overlay { left: 12px; right: 12px; bottom: 12px; padding: 12px 14px; }
    .gallery-overlay-title { font-size: 0.92rem; }
    .gallery-overlay-arrow { width: 38px; height: 38px; font-size: 1rem; }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Service Cards    [service-cards columns="N"]
   Reusable image-cards-with-overlay pattern. 1/2/3/4 columns,
   collapsing to 1 column on mobile.
   ════════════════════════════════════════════════════════════════ */
.module-service-cards {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
    margin: 32px 0;
}
.module-service-cards.module-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.module-service-cards.module-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.module-service-cards.module-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.module-card {
    position: relative;
    display: block;
    min-height: 320px;
    border-radius: 16px;
    overflow: hidden;
    background-color: #1f2937;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    color: #fff;
    text-decoration: none;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    isolation: isolate;
}
a.module-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);
}

.module-card-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(
        to top,
        rgba(0, 0, 0, 0.85) 0%,
        rgba(0, 0, 0, 0.55) 35%,
        rgba(0, 0, 0, 0.10) 70%,
        rgba(0, 0, 0, 0)    100%
    );
    pointer-events: none;
}

.module-card-body {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 28px;
    z-index: 2;
}
.module-card-title {
    color: #fff;
    font-size: 1.45rem;
    font-weight: 700;
    line-height: 1.2;
    margin: 0 0 10px;
}
.module-card-text {
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.95rem;
    line-height: 1.5;
    margin: 0 0 14px;
}
.module-card-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: #E8A317;            /* site gold */
    font-weight: 600;
    font-size: 0.95rem;
    transition: gap 0.2s ease;
}
a.module-card:hover .module-card-link {
    gap: 12px;                 /* arrow slides forward on card hover */
}
.module-card-arrow {
    display: inline-block;
    transition: transform 0.2s ease;
}

/* When [card] has no image, give it a subtle navy-to-gold gradient
   so it doesn't render as a plain dark rectangle. */
.module-card:not([style*="background-image"]) {
    background: linear-gradient(135deg, #0F172A 0%, #1E293B 60%, #E8A317 200%);
}

/* Tighter padding for 3- and 4-up so titles still read well */
.module-cols-3 .module-card,
.module-cols-4 .module-card { min-height: 260px; }
.module-cols-3 .module-card-body,
.module-cols-4 .module-card-body { padding: 22px; }
.module-cols-3 .module-card-title,
.module-cols-4 .module-card-title { font-size: 1.2rem; }
.module-cols-3 .module-card-text,
.module-cols-4 .module-card-text { font-size: 0.88rem; }

/* Single-column variant: wider, more cinematic */
.module-cols-1 .module-card { min-height: 380px; }
.module-cols-1 .module-card-body { padding: 36px; }
.module-cols-1 .module-card-title { font-size: 1.8rem; }

/* Responsive: collapse to single column below 760px no matter what */
@media (max-width: 760px) {
    .module-service-cards.module-cols-2,
    .module-service-cards.module-cols-3,
    .module-service-cards.module-cols-4 {
        grid-template-columns: 1fr;
    }
    .module-card { min-height: 280px; }
    .module-card-body { padding: 22px; }
    .module-card-title { font-size: 1.25rem; }
    .module-card-text { font-size: 0.9rem; }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Reviews / Testimonials   [reviews layout="grid|marquee"]
   Reuses the homepage .tm-card / .tm-avatar / .tm-stars classes
   from products.css, so the cards look identical to the homepage.
   This block adds only the wrapper + grid-layout pieces.
   ════════════════════════════════════════════════════════════════ */
.module-reviews {
    margin: 40px 0;
}

/* Optional section header (eyebrow + title + accent line) */
.module-reviews-header {
    text-align: center;
    margin-bottom: 32px;
}
.module-reviews-eyebrow {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #E8A317;
    margin-bottom: 10px;
}
.module-reviews-title {
    font-size: 1.9rem;
    font-weight: 700;
    color: #0B1D3A;
    margin: 0 0 0;
    line-height: 1.2;
}
.module-reviews-accent {
    display: block;
    width: 56px;
    height: 3px;
    margin: 14px auto 0;
    background: linear-gradient(90deg, #E8A317, #f59e0b);
    border-radius: 2px;
}

/* Grid layout — static cards in N columns */
.module-reviews-grid .module-reviews-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 22px;
}
.module-reviews-grid.module-cols-2 .module-reviews-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.module-reviews-grid.module-cols-3 .module-reviews-list { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* In grid mode the .tm-card width should fill the grid cell, not its
   homepage flex-basis of 360px. */
.module-reviews-grid .tm-card {
    flex: none;
    max-width: none;
    width: 100%;
}

/* Responsive: collapse to single column on small screens */
@media (max-width: 760px) {
    .module-reviews-grid.module-cols-2 .module-reviews-list,
    .module-reviews-grid.module-cols-3 .module-reviews-list {
        grid-template-columns: 1fr;
    }
    .module-reviews-title { font-size: 1.5rem; }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: FAQ   [faq mode="single|multi"]
   The .faq-item / .faq-question / .faq-answer classes already exist
   in style.css from the dedicated FAQ page. This block only adds
   the optional eyebrow + title section header above the list.
   ════════════════════════════════════════════════════════════════ */
.module-faq {
    margin: 40px 0;
}
.module-faq-header {
    text-align: center;
    margin-bottom: 28px;
}
.module-faq-eyebrow {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #E8A317;
    margin-bottom: 10px;
}
.module-faq-title {
    font-size: 1.9rem;
    font-weight: 700;
    color: #0B1D3A;
    margin: 0;
    line-height: 1.2;
}
.module-faq-accent {
    display: block;
    width: 56px;
    height: 3px;
    margin: 14px auto 0;
    background: linear-gradient(90deg, #E8A317, #f59e0b);
    border-radius: 2px;
}

/* The existing .faq-list rule has max-width: 800px; margin: 0 auto.
   Inside a module that's already centered in a .container, that
   still works fine — the list will be centered up to 800px wide. */

@media (max-width: 760px) {
    .module-faq-title { font-size: 1.5rem; }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: FAQ — MODERN STYLE   [faq style="modern"]
   Big editorial layout. Numbered items, huge display title,
   triangle indicator, hairline separators, light blue-gray bg.
   ════════════════════════════════════════════════════════════════ */
.module-faq-modern {
    /* Break out of the page container's padding so the section
       background stretches edge-to-edge — but cap its inner content
       width so the layout still feels like a designed canvas. */
    background: #eef2f6;
    margin-left:  calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: 96px 24px;
}
.module-faq-modern-inner {
    max-width: 1200px;
    margin: 0 auto;
}

/* ── Header ── */
.module-faq-modern-header {
    max-width: 880px;
    margin: 0 auto 64px;
    padding: 0 16px;
    /* Sit roughly where the screenshot has the title — left-aligned,
       offset from page-left, with empty space on the left. */
    padding-left: clamp(16px, 28%, 280px);
}
.module-faq-modern-eyebrow {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #1d4ed8;        /* the blue used in the screenshot */
    margin-bottom: 16px;
}
.module-faq-modern-title {
    font-size: clamp(2.2rem, 5.4vw, 4.2rem);
    font-weight: 800;
    color: #0B1D3A;
    line-height: 1.05;
    letter-spacing: -0.02em;
    margin: 0;
}

/* ── Item rows ── */
.module-faq-modern .faq-list {
    /* Override the classic .faq-list max-width so the modern layout
       can use the full width of its inner container. */
    max-width: none;
    margin: 0;
    padding: 0 16px;
}

.module-faq-modern .faq-item {
    /* Strip the classic card chrome — modern is hairline-only. */
    border: 0;
    border-top: 1px solid #c7d0db;
    border-radius: 0;
    margin: 0;
    overflow: hidden;
    transition: background-color 0.25s ease;
}
.module-faq-modern .faq-item:last-child {
    border-bottom: 1px solid #c7d0db;
}
.module-faq-modern .faq-item:hover {
    background: rgba(255, 255, 255, 0.4);
}

/* The clickable question row — three columns: number, question, triangle */
.module-faq-modern .faq-question {
    display: grid;
    grid-template-columns: clamp(80px, 12%, 140px) 1fr auto;
    align-items: center;
    gap: clamp(20px, 4vw, 60px);
    width: 100%;
    padding: 28px 8px 28px 0;
    background: transparent;
    border: 0;
    text-align: left;
    cursor: pointer;
    font-family: inherit;
    color: #0B1D3A;
    transition: padding 0.25s ease;
}
/* Override classic .faq-question hover bg (gray-50) — modern uses
   the row-level hover effect instead. */
.module-faq-modern .faq-question:hover {
    background: transparent;
}

.faq-modern-num {
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    font-weight: 600;
    color: #6b7e95;
    letter-spacing: -0.01em;
    line-height: 1;
    /* Right-align numbers so digit columns stack evenly. */
    text-align: left;
    padding-left: clamp(8px, 4%, 60px);
}

.faq-modern-q {
    font-size: clamp(1.05rem, 1.7vw, 1.55rem);
    font-weight: 600;
    color: #0B1D3A;
    line-height: 1.3;
    letter-spacing: -0.005em;
}

.faq-modern-tri {
    /* CSS-drawn triangle: ▶ when closed, ▼ when open. */
    display: inline-block;
    width: 0; height: 0;
    border-left: 9px solid #0B1D3A;
    border-top: 6px solid transparent;
    border-bottom: 6px solid transparent;
    transition: transform 0.3s ease;
    flex-shrink: 0;
    margin-right: clamp(8px, 2%, 32px);
}
.module-faq-modern .faq-item.open .faq-modern-tri {
    transform: rotate(90deg);
}

/* The expanding answer panel */
.module-faq-modern .faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease;
}
.module-faq-modern .faq-item.open .faq-answer {
    /* Generous cap — modern style invites longer answers. */
    max-height: 1200px;
}
.module-faq-modern .faq-answer-inner {
    /* Indent answer to align with the question column (skipping the
       number column on the left). */
    padding: 0 clamp(20px, 6%, 80px) 36px;
    margin-left: clamp(80px, 12%, 140px);
    color: #4a5b73;
    font-size: clamp(0.95rem, 1.05vw, 1.05rem);
    line-height: 1.75;
    max-width: 760px;
}
.module-faq-modern .faq-answer-inner strong {
    color: #0B1D3A;
    font-weight: 700;
}

/* ── Mobile / tablet ── */
@media (max-width: 760px) {
    .module-faq-modern {
        padding: 56px 16px;
    }
    .module-faq-modern-header {
        margin-bottom: 40px;
        padding-left: 0;
    }
    .module-faq-modern .faq-list {
        padding: 0;
    }
    .module-faq-modern .faq-question {
        grid-template-columns: 48px 1fr auto;
        gap: 14px;
        padding: 20px 4px 20px 0;
    }
    .faq-modern-num {
        padding-left: 0;
        font-size: 1.2rem;
    }
    .faq-modern-q {
        font-size: 1rem;
    }
    .faq-modern-tri {
        border-left-width: 7px;
        border-top-width: 5px;
        border-bottom-width: 5px;
        margin-right: 4px;
    }
    .module-faq-modern .faq-answer-inner {
        padding: 0 4px 24px;
        margin-left: 62px;
        font-size: 0.95rem;
        line-height: 1.6;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Tabs   [tabs] / [tab]
   Bold uppercase tab labels with a gold underline under the active
   one. Matches the Branchenlösungen / Fuhrpark reference design.
   ════════════════════════════════════════════════════════════════ */
.module-tabs {
    margin: 32px 0;
}

/* Optional italic-orange heading above the tabs */
.module-tabs-title {
    color: #E8A317;
    font-style: italic;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 700;
    margin: 0 0 18px;
    letter-spacing: -0.005em;
}

/* Button strip — the tabs themselves */
.module-tabs-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    border-bottom: 1px solid #e2e8f0;
    margin-bottom: 28px;
    /* Allow horizontal scroll on tight screens rather than wrapping —
       matches the look in the screenshots. */
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
/* Hide the scrollbar in webkit browsers — keep just the scroll behaviour */
.module-tabs-nav::-webkit-scrollbar { display: none; }
.module-tabs-nav { scrollbar-width: none; }

.module-tabs-btn {
    flex-shrink: 0;
    background: transparent;
    border: 0;
    border-bottom: 3px solid transparent;
    padding: 14px 22px;
    margin-bottom: -1px;            /* overlap the nav's bottom border */
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #E8A317;                 /* inactive: gold (matches reference) */
    cursor: pointer;
    transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
    white-space: nowrap;
}
.module-tabs-btn:hover {
    background: rgba(232, 163, 23, 0.06);
}
.module-tabs-btn.is-active {
    color: #0B1D3A;                 /* active: dark navy */
    border-bottom-color: #E8A317;   /* gold underline */
}
.module-tabs-btn:focus-visible {
    outline: 2px solid #E8A317;
    outline-offset: -2px;
}

/* Panel area */
.module-tabs-panels {
    position: relative;
}
.module-tabs-panel {
    /* Smooth-ish entrance — fade only (no layout shift) */
    animation: tabFadeIn 0.25s ease;
}
.module-tabs-panel[hidden] {
    display: none !important;       /* the [hidden] attribute should already do this; belt + braces */
}
@keyframes tabFadeIn {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* When a tab body contains another module (service-cards, reviews,
   etc.), reset the top margin so it nests cleanly inside the panel. */
.module-tabs-panel > .module-service-cards:first-child,
.module-tabs-panel > .module-reviews:first-child,
.module-tabs-panel > .module-faq:first-child,
.module-tabs-panel > p:first-child,
.module-tabs-panel > h2:first-child,
.module-tabs-panel > h3:first-child {
    margin-top: 0;
}

/* Mobile / narrow screens */
@media (max-width: 640px) {
    .module-tabs-btn {
        padding: 12px 16px;
        font-size: 0.78rem;
    }
    .module-tabs-nav {
        margin-bottom: 22px;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: FAQ — BOXED STYLE   [faq style="boxed"]
   Light-gray rounded boxes per item. Gold/orange question text when
   open, dark navy when closed. Triangle indicator on the right.
   Designed to look great on its own AND nested inside [tabs].
   ════════════════════════════════════════════════════════════════ */
.module-faq-boxed {
    margin: 32px 0;
}

/* Override the classic .faq-item card chrome — boxed uses a filled
   gray background instead of an outlined card. */
.module-faq-boxed .faq-item {
    background: #f3f4f6;
    border: 0;                  /* kill the classic 1px border */
    border-radius: 8px;
    margin-bottom: 14px;
    overflow: hidden;
    transition: background 0.2s ease;
}
.module-faq-boxed .faq-item:hover {
    background: #ebeef2;
    border: 0;                  /* defensive — override classic hover border */
}
.module-faq-boxed .faq-item.open {
    background: #f3f4f6;        /* same as closed — the gold text is the cue */
}

/* The clickable question row */
.module-faq-boxed .faq-question {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    width: 100%;
    padding: 22px 26px;
    background: transparent;
    border: 0;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    /* Override classic hover bg — boxed handles hover at the item level */
    transition: padding 0.2s ease;
}
.module-faq-boxed .faq-question:hover {
    background: transparent;
}

/* Closed: dark navy bold. Open: gold. */
.faq-boxed-q {
    font-weight: 700;
    font-size: 1rem;
    line-height: 1.4;
    color: #0B1D3A;
    transition: color 0.2s ease;
    flex: 1;
    min-width: 0;
}
.module-faq-boxed .faq-item.open .faq-boxed-q {
    color: #E8A317;             /* gold/orange — matches reference */
}

/* Triangle indicator (CSS-drawn, no SVG dependency) */
.faq-boxed-tri {
    flex-shrink: 0;
    width: 0;
    height: 0;
    border-left: 8px solid #0B1D3A;
    border-top: 5.5px solid transparent;
    border-bottom: 5.5px solid transparent;
    transition: transform 0.3s ease, border-left-color 0.2s ease;
}
.module-faq-boxed .faq-item.open .faq-boxed-tri {
    transform: rotate(90deg);
    border-left-color: #E8A317; /* gold when open */
}

/* The expanding answer panel — the .faq-answer max-height transition
   from style.css already handles open/close animation. */
.module-faq-boxed .faq-item.open .faq-answer {
    max-height: 1500px;         /* generous cap for long answers */
}

/* Inner answer content: divider line above + muted gray text below */
.module-faq-boxed .faq-answer-inner {
    padding: 0 26px 24px;
    color: #4a5b73;
    font-size: 0.95rem;
    line-height: 1.75;
    /* Subtle divider between question and answer when open */
    border-top: 1px solid rgba(11, 29, 58, 0.08);
    margin-top: 4px;
    padding-top: 18px;
}
.module-faq-boxed .faq-answer-inner strong {
    color: #0B1D3A;
    font-weight: 700;
}

/* When boxed FAQ is nested inside a tabs panel, tighten the top
   margin so it sits flush with the tab divider line. */
.module-tabs-panel > .module-faq-boxed:first-child {
    margin-top: 0;
}

/* Mobile */
@media (max-width: 640px) {
    .module-faq-boxed .faq-question {
        padding: 18px 18px;
    }
    .module-faq-boxed .faq-answer-inner {
        padding: 16px 18px 20px;
        font-size: 0.92rem;
    }
    .faq-boxed-q { font-size: 0.95rem; }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Media + Text   [media-text]
   Six layout variants for combining text with one or more images.
   Designed to drop into any [tab] panel or stand alone on a page.
   All layouts collapse to a single column on mobile.
   ════════════════════════════════════════════════════════════════ */

.module-mediatext {
    margin: 24px 0;
    display: grid;
    gap: 32px;
    align-items: start;
}

/* The italic-orange heading — same family as .module-tabs-title */
.module-mediatext-heading {
    color: #E8A317;
    font-style: italic;
    font-size: clamp(1.4rem, 2.8vw, 2rem);
    font-weight: 700;
    margin: 0 0 14px;
    letter-spacing: -0.005em;
    line-height: 1.15;
}

/* Free-form text body — paragraphs of muted gray */
.module-mediatext-body {
    color: #4a5b73;
    font-size: 0.95rem;
    line-height: 1.75;
}
.module-mediatext-body p {
    margin: 0 0 14px;
}
.module-mediatext-body p:last-child {
    margin-bottom: 0;
}
.module-mediatext-body strong {
    color: #0B1D3A;
    font-weight: 700;
}
.module-mediatext-body a {
    color: #E8A317;
    text-decoration: none;
}
.module-mediatext-body a:hover {
    text-decoration: underline;
}

/* The image gallery container — its display mode varies by layout */
.module-mediatext-gallery {
    display: grid;
    gap: 10px;
}
.module-mediatext-img {
    overflow: hidden;
    border-radius: 4px;
    background: #f1f5f9;
    aspect-ratio: 4 / 3;
}
.module-mediatext-img img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.4s ease;
}
.module-mediatext-img:hover img {
    transform: scale(1.04);
}

/* ── Layout 1: image-left ─────────────────────────
   One large image on the LEFT, text on the right. */
.module-mediatext-image-left {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.module-mediatext-image-left .module-mediatext-gallery {
    grid-template-columns: 1fr;
}
.module-mediatext-image-left .module-mediatext-img {
    aspect-ratio: 16 / 11;   /* slightly taller for hero feel */
}

/* ── Layout 2: image-right ────────────────────────
   Mirror of layout 1 — text on left, image on right.
   HTML order is gallery, text — we flip via `order`. */
.module-mediatext-image-right {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}
.module-mediatext-image-right .module-mediatext-gallery {
    grid-template-columns: 1fr;
    order: 2;
}
.module-mediatext-image-right .module-mediatext-text {
    order: 1;
}
.module-mediatext-image-right .module-mediatext-img {
    aspect-ratio: 16 / 11;
}

/* ── Layout 3: text-then-gallery ──────────────────
   Text full-width on top, then a row of images below.
   Good for "Oldtimer-Transporte" style pages. */
.module-mediatext-text-then-gallery {
    grid-template-columns: 1fr;
    gap: 24px;
}
.module-mediatext-text-then-gallery .module-mediatext-gallery {
    grid-template-columns: repeat(4, 1fr);
}

/* ── Layout 4: gallery-left ───────────────────────
   Single column of small thumbnails on the left, text on the right.
   Matches the FlexCover/LowBed reference (small column of thumbs). */
.module-mediatext-gallery-left {
    grid-template-columns: 100px minmax(0, 1fr);
    gap: 24px;
}
.module-mediatext-gallery-left .module-mediatext-gallery {
    grid-template-columns: 1fr;
    gap: 6px;
}
.module-mediatext-gallery-left .module-mediatext-img {
    aspect-ratio: 4 / 3;
}

/* ── Layout 5: gallery-2col-left ──────────────────
   2-column grid of small thumbnails on the left, text on the right.
   Matches the Landmaschinen reference. */
.module-mediatext-gallery-2col-left {
    grid-template-columns: minmax(180px, 30%) minmax(0, 1fr);
    gap: 24px;
}
.module-mediatext-gallery-2col-left .module-mediatext-gallery {
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
}

/* ── Layout 6: gallery-2col-right ─────────────────
   Mirror of layout 5 — text on left, 2-col thumbs on right. */
.module-mediatext-gallery-2col-right {
    grid-template-columns: minmax(0, 1fr) minmax(180px, 30%);
    gap: 24px;
}
.module-mediatext-gallery-2col-right .module-mediatext-gallery {
    grid-template-columns: repeat(2, 1fr);
    gap: 6px;
    order: 2;
}
.module-mediatext-gallery-2col-right .module-mediatext-text {
    order: 1;
}

/* When media-text is the FIRST thing inside a tab panel, kill the
   top margin so it sits flush with the tab divider line. */
.module-tabs-panel > .module-mediatext:first-child {
    margin-top: 0;
}

/* Responsive: collapse all 2-column layouts to a single stack on
   narrow screens. The HTML stays in the same order; the gallery
   appears above the text in stacked layouts (which reads naturally
   on mobile — see the image first, then the description). */
@media (max-width: 760px) {
    .module-mediatext-image-left,
    .module-mediatext-image-right,
    .module-mediatext-gallery-left,
    .module-mediatext-gallery-2col-left,
    .module-mediatext-gallery-2col-right {
        grid-template-columns: 1fr;
        gap: 18px;
    }
    /* Reset order overrides on mobile so HTML order wins */
    .module-mediatext-image-right .module-mediatext-gallery,
    .module-mediatext-image-right .module-mediatext-text,
    .module-mediatext-gallery-2col-right .module-mediatext-gallery,
    .module-mediatext-gallery-2col-right .module-mediatext-text {
        order: initial;
    }
    /* Compress the inline thumbnail layouts to a wider grid */
    .module-mediatext-gallery-left .module-mediatext-gallery,
    .module-mediatext-gallery-2col-left .module-mediatext-gallery,
    .module-mediatext-gallery-2col-right .module-mediatext-gallery {
        grid-template-columns: repeat(3, 1fr);
    }
    .module-mediatext-text-then-gallery .module-mediatext-gallery {
        grid-template-columns: repeat(2, 1fr);
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Track & Trace   [track-trace]
   Reusable shipment-tracking lookup form. 4 style variants.
   ════════════════════════════════════════════════════════════════ */

.module-tracktrace {
    margin: 24px 0;
    --tt-gold: #E8A317;
    --tt-blue: #0B1D3A;
    --tt-grey: #475569;
    --tt-bg-light: #f8fafc;
}

/* Form is shared across all variants */
.module-tracktrace-form {
    display: flex;
    gap: 8px;
    width: 100%;
}

/* Inputs reset (we want our own styling, not the global form-control) */
.module-tracktrace-input {
    flex: 1;
    min-width: 0;
    padding: 12px 16px;
    border: 2px solid #cbd5e1;
    border-radius: 6px;
    font-size: 0.95rem;
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
    color: var(--tt-blue);
    background: #fff;
    box-sizing: border-box;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
    -webkit-appearance: none;
    appearance: none;
    line-height: 1.4;
}
.module-tracktrace-input::placeholder {
    color: #94a3b8;
    font-family: inherit;
}
.module-tracktrace-input:hover {
    border-color: #94a3b8;
}
.module-tracktrace-input:focus {
    outline: 0;
    border-color: var(--tt-gold);
    box-shadow: 0 0 0 3px rgba(232, 163, 23, 0.18);
    background: #fffdf7;
}

/* Button is shared across variants too */
.module-tracktrace-btn {
    flex-shrink: 0;
    padding: 12px 22px;
    background: var(--tt-gold);
    color: var(--tt-blue);
    border: 2px solid var(--tt-gold);
    border-radius: 6px;
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.15s ease, transform 0.05s ease, box-shadow 0.15s ease;
    white-space: nowrap;
    line-height: 1.4;
}
.module-tracktrace-btn:hover {
    background: #d4940a;
    border-color: #d4940a;
    box-shadow: 0 4px 12px rgba(232, 163, 23, 0.25);
}
.module-tracktrace-btn:active {
    transform: translateY(1px);
}
.module-tracktrace-btn:focus-visible {
    outline: 2px solid var(--tt-blue);
    outline-offset: 2px;
}

/* Headings — used by hero/card */
.module-tracktrace-heading {
    color: var(--tt-blue);
    font-size: clamp(1.6rem, 3.4vw, 2.4rem);
    font-weight: 700;
    margin: 0 0 6px;
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.module-tracktrace-subheading {
    color: var(--tt-grey);
    font-size: 0.95rem;
    margin: 0 0 22px;
    line-height: 1.5;
}
.module-tracktrace-icon {
    font-size: 2.6rem;
    line-height: 1;
    margin-bottom: 10px;
}

/* ── Style 1: hero ─────────────────────────────────────
   Big centred card, padded white background, large form. */
.module-tracktrace-hero {
    background: linear-gradient(180deg, #ffffff 0%, var(--tt-bg-light) 100%);
    border-radius: 12px;
    padding: 56px 24px;
    text-align: center;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.module-tracktrace-hero .module-tracktrace-inner {
    max-width: 620px;
    margin: 0 auto;
}
.module-tracktrace-hero .module-tracktrace-form {
    margin-top: 8px;
}
.module-tracktrace-hero .module-tracktrace-input {
    padding: 14px 18px;
    font-size: 1rem;
}
.module-tracktrace-hero .module-tracktrace-btn {
    padding: 14px 28px;
    font-size: 1rem;
}

/* ── Style 2: card ─────────────────────────────────────
   White bordered card with subtle shadow, header row left-aligned. */
.module-tracktrace-card {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 28px;
    box-shadow: 0 2px 6px rgba(15, 23, 42, 0.04);
    max-width: 720px;
}
.module-tracktrace-card-head {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 20px;
}
.module-tracktrace-card-head .module-tracktrace-icon {
    font-size: 2rem;
    margin-bottom: 0;
    flex-shrink: 0;
}
.module-tracktrace-card .module-tracktrace-heading {
    font-size: 1.5rem;
    margin-bottom: 2px;
}
.module-tracktrace-card .module-tracktrace-subheading {
    margin-bottom: 0;
    font-size: 0.88rem;
}

/* ── Style 3: compact ──────────────────────────────────
   Slim single-row bar — input + button. Fits inside a section. */
.module-tracktrace-compact {
    margin: 16px 0;
}
.module-tracktrace-compact .module-tracktrace-input {
    padding: 10px 14px;
    font-size: 0.9rem;
}
.module-tracktrace-compact .module-tracktrace-btn {
    padding: 10px 18px;
    font-size: 0.9rem;
}

/* ── Style 4: minimal ──────────────────────────────────
   Borderless inline form — input has only a bottom border, button
   is link-styled. For embedding in tight UI like a footer column. */
.module-tracktrace-minimal {
    margin: 12px 0;
}
.module-tracktrace-minimal .module-tracktrace-form {
    align-items: stretch;
    gap: 0;
    border-bottom: 1px solid #cbd5e1;
    padding-bottom: 2px;
    transition: border-color 0.18s ease;
}
.module-tracktrace-minimal .module-tracktrace-form:focus-within {
    border-bottom-color: var(--tt-gold);
}
.module-tracktrace-minimal .module-tracktrace-input {
    border: 0;
    padding: 8px 0;
    background: transparent;
    border-radius: 0;
    font-family: inherit;
    font-size: 0.92rem;
}
.module-tracktrace-minimal .module-tracktrace-input:focus {
    box-shadow: none;
    background: transparent;
    outline: 0;
}
.module-tracktrace-minimal .module-tracktrace-btn {
    background: transparent;
    border: 0;
    color: var(--tt-gold);
    padding: 8px 4px 8px 14px;
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.module-tracktrace-minimal .module-tracktrace-btn:hover {
    background: transparent;
    box-shadow: none;
    color: #d4940a;
}

/* ── Mobile: collapse hero/card forms to vertical stacks ──── */
@media (max-width: 560px) {
    .module-tracktrace-form {
        flex-direction: column;
        gap: 8px;
    }
    .module-tracktrace-btn {
        width: 100%;
    }
    .module-tracktrace-hero {
        padding: 40px 18px;
    }
    .module-tracktrace-card {
        padding: 22px 18px;
    }
    .module-tracktrace-card-head {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    .module-tracktrace-minimal .module-tracktrace-form {
        flex-direction: row;   /* keep minimal style horizontal even on mobile */
    }
}

/* ── Existing tracking page form fix (overrides the broken
       .tracking-form rules in style.css that gave it white-on-white
       text when used outside the dark hero section). ───────────── */
.page-content .tracking-form {
    display: flex;
    gap: 8px;
}
.page-content .tracking-form input.form-control {
    flex: 1;
    padding: 13px 18px;
    border: 2px solid #cbd5e1;
    border-radius: 6px;
    color: #0B1D3A;
    background: #ffffff;
    font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
    font-size: 0.95rem;
    transition: border-color 0.18s ease, box-shadow 0.18s ease;
}
.page-content .tracking-form input.form-control::placeholder {
    color: #94a3b8;
}
.page-content .tracking-form input.form-control:focus {
    outline: 0;
    border-color: #E8A317;
    background: #fffdf7;
    box-shadow: 0 0 0 3px rgba(232, 163, 23, 0.18);
}
.page-content .tracking-form .btn-primary {
    flex-shrink: 0;
    padding: 13px 24px;
    background: #E8A317;
    color: #0B1D3A;
    border: 2px solid #E8A317;
    border-radius: 6px;
    font-weight: 600;
    cursor: pointer;
    font-size: 0.95rem;
    white-space: nowrap;
    transition: background 0.15s ease, box-shadow 0.15s ease;
}
.page-content .tracking-form .btn-primary:hover {
    background: #d4940a;
    border-color: #d4940a;
    box-shadow: 0 4px 12px rgba(232, 163, 23, 0.25);
}
@media (max-width: 560px) {
    .page-content .tracking-form { flex-direction: column; }
    .page-content .tracking-form .btn-primary { width: 100%; }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Feature Cards   [feature-cards]
   Side-by-side cards with coloured icon + title + checkmark items.
   Matches the "Auto-Schutz / Maschinen-Schutz" home-page reference.
   ════════════════════════════════════════════════════════════════ */

.module-feature-cards {
    margin: 32px 0;
    --feat-blue: #0B1D3A;
    --feat-grey: #475569;
    --feat-grey-light: #64748b;
    --feat-bg-light: #f8fafc;
    --feat-check-green: #16a34a;
}

.module-feature-header {
    text-align: center;
    margin-bottom: 28px;
}
.module-feature-eyebrow {
    color: #E8A317;
    font-size: 0.78rem;
    font-weight: 600;
    font-style: italic;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 8px;
}
.module-feature-heading {
    color: var(--feat-blue);
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 700;
    font-style: italic;
    margin: 0;
    letter-spacing: -0.01em;
    line-height: 1.15;
}

.module-feature-grid {
    display: grid;
    gap: 24px;
    align-items: start;
}
.module-feature-cards-cols-1 .module-feature-grid { grid-template-columns: minmax(0, 720px); justify-content: center; }
.module-feature-cards-cols-2 .module-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.module-feature-cards-cols-3 .module-feature-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.module-feature-card {
    background: var(--feat-bg-light);
    border: 1px solid #e2e8f0;
    border-radius: 14px;
    padding: 28px 28px 24px;
    transition: box-shadow .2s ease, transform .2s ease;
}
.module-feature-card:hover {
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.06);
    transform: translateY(-2px);
}

.module-feature-head {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 18px;
}
.module-feature-icon-box {
    width: 44px;
    height: 44px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    flex-shrink: 0;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
}
.module-feature-icon-box svg {
    width: 24px;
    height: 24px;
    stroke: #fff;
}
.module-feature-icon-emoji {
    font-size: 22px;
    line-height: 1;
}
.module-feature-card-title {
    color: var(--feat-blue);
    font-size: 1.35rem;
    font-weight: 700;
    margin: 0;
    line-height: 1.2;
}

.module-feature-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.module-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.04);
}
.module-feature-item:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}
.module-feature-check {
    flex-shrink: 0;
    color: var(--feat-check-green);
    margin-top: 2px;
    display: inline-flex;
}
.module-feature-check svg {
    width: 18px;
    height: 18px;
}
.module-feature-item-body {
    flex: 1;
    min-width: 0;
}
.module-feature-item-title {
    color: var(--feat-blue);
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.4;
    margin-bottom: 2px;
}
.module-feature-item-desc {
    color: var(--feat-grey);
    font-size: 0.88rem;
    line-height: 1.55;
}

/* Mobile: collapse multi-column to single column */
@media (max-width: 760px) {
    .module-feature-cards-cols-2 .module-feature-grid,
    .module-feature-cards-cols-3 .module-feature-grid {
        grid-template-columns: 1fr;
    }
    .module-feature-card {
        padding: 22px;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Carousel   [carousel]
   Horizontal swipeable carousel — image cards or testimonials.
   CSS scroll-snap for native swipe; light JS for buttons + dots.
   ════════════════════════════════════════════════════════════════ */

.module-carousel {
    margin: 40px 0;
    --car-gap: 18px;
    --car-blue: #0B1D3A;
    --car-grey: #475569;
    --car-gold: #E8A317;
    /* Round 34: defensive — even if a child element somehow exceeds
       its bounds (e.g. an oversized image, a nav button positioned
       outside), the section itself never causes horizontal page
       scroll. overflow-x:clip is preferred over hidden because it
       doesn't establish a new scroll container (so position:sticky
       on parent still works). */
    overflow-x: clip;
}

.module-carousel-header {
    text-align: center;
    margin-bottom: 28px;
}
.module-carousel-eyebrow {
    color: var(--car-gold);
    font-size: 0.78rem;
    font-weight: 600;
    font-style: italic;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 8px;
}
.module-carousel-heading {
    color: var(--car-blue);
    font-size: clamp(1.6rem, 3.4vw, 2.4rem);
    font-weight: 700;
    font-style: italic;
    margin: 0;
    letter-spacing: -0.01em;
    line-height: 1.15;
}

/* The viewport wraps the track and the prev/next buttons. */
.module-carousel-viewport {
    position: relative;
}

/* The track is the scroll container. */
.module-carousel-track {
    display: flex;
    gap: var(--car-gap);
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;        /* Firefox */
    -ms-overflow-style: none;     /* IE */
    padding: 4px 4px 12px;        /* room for focus ring */
    -webkit-overflow-scrolling: touch;
}
.module-carousel-track::-webkit-scrollbar {
    display: none;                /* Chrome/Safari */
}

.module-carousel-slide {
    flex-shrink: 0;
    /* width formula: (100% - gap × (visible-1)) / visible */
    width: calc((100% - var(--car-gap) * (var(--carousel-visible, 3) - 1)) / var(--carousel-visible, 3));
    scroll-snap-align: start;
}

/* ── IMAGE STYLE ─────────────────────────────────── */
.module-carousel-slide-image .module-carousel-slide-inner {
    position: relative;
    aspect-ratio: 4 / 3;
    border-radius: 12px;
    overflow: hidden;
    background: #f1f5f9;
}
/* Round 41: slide-inner is now an <a> when the slide has a link. Reset
   anchor styling so the card looks identical to the non-linked version. */
a.module-carousel-slide-inner,
a.module-carousel-slide-link {
    display: block;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}
a.module-carousel-slide-inner:hover,
a.module-carousel-slide-link:hover {
    text-decoration: none;
}
.module-carousel-slide-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.module-carousel-slide-image:hover img {
    transform: scale(1.04);
}
.module-carousel-img-placeholder {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3rem;
    background: #e2e8f0;
    color: #94a3b8;
}

.module-carousel-caption {
    position: absolute;
    left: 18px;
    right: 70px;
    bottom: 18px;
    background: #fff;
    padding: 14px 18px;
    border-radius: 8px;
    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15);
    pointer-events: none;
}
.module-carousel-caption-label {
    color: var(--car-gold);
    font-size: 0.78rem;
    font-style: italic;
    font-weight: 500;
    margin-bottom: 2px;
}
.module-carousel-caption-title {
    color: var(--car-blue);
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.2;
}

.module-carousel-arrow {
    position: absolute;
    bottom: 18px;
    right: 18px;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--car-gold);
    color: var(--car-blue);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: background .15s ease, transform .15s ease;
    box-shadow: 0 4px 12px rgba(232, 163, 23, 0.35);
}
.module-carousel-arrow:hover {
    background: #d4940a;
    transform: scale(1.06);
}
/* Round 41: when the entire slide is wrapped in <a>, the arrow is just
   a decorative <span>. Trigger its hover effect from the parent card so
   the visual feedback still works. */
a.module-carousel-slide-link:hover .module-carousel-arrow,
a.module-carousel-slide-link:focus .module-carousel-arrow {
    background: #d4940a;
    transform: scale(1.06);
}
.module-carousel-arrow svg {
    width: 22px;
    height: 22px;
}

/* ── TESTIMONIAL STYLE ────────────────────────────── */
.module-carousel-slide-testimonial .module-carousel-slide-inner {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 32px 28px 26px;
    height: 100%;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 18px;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
.module-carousel-quote-mark {
    color: var(--car-gold);
    opacity: 0.4;
    height: 32px;
}
.module-carousel-quote-mark svg {
    width: 32px;
    height: 32px;
}
.module-carousel-quote {
    flex: 1;
    color: var(--car-grey);
    font-size: 0.96rem;
    line-height: 1.6;
    font-style: italic;
}
.module-carousel-attribution {
    display: flex;
    align-items: center;
    gap: 12px;
    border-top: 1px solid #e2e8f0;
    padding-top: 16px;
    margin-top: auto;
}
.module-carousel-avatar {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    object-fit: cover;
    flex-shrink: 0;
}
.module-carousel-author {
    font-weight: 700;
    color: var(--car-blue);
    font-size: 0.92rem;
}
.module-carousel-role {
    color: var(--car-grey);
    font-size: 0.82rem;
    margin-top: 1px;
}

/* ── PREV/NEXT NAV BUTTONS ────────────────────────── */
.module-carousel-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: #fff;
    border: 1px solid #e2e8f0;
    color: var(--car-blue);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
    transition: background .15s ease, border-color .15s ease, box-shadow .15s ease;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.module-carousel-nav:hover:not(:disabled) {
    background: var(--car-gold);
    border-color: var(--car-gold);
    color: var(--car-blue);
}
.module-carousel-nav:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}
.module-carousel-nav svg {
    width: 20px;
    height: 20px;
}
/* Round 34: keep buttons INSIDE the viewport so they don't hang off
   the .container's left/right edges (which clip with body{overflow-x:hidden}).
   8px inset means there's a small gap between the button and the
   first/last slide — clean look without wasting horizontal space. */
.module-carousel-prev { left: 8px; }
.module-carousel-prev svg {
    transform: rotate(180deg);
}
.module-carousel-next { right: 8px; }

/* ── DOTS ────────────────────────────────────────── */
.module-carousel-dots {
    display: flex;
    justify-content: center;
    gap: 6px;
    margin-top: 20px;
}
.module-carousel-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #cbd5e1;
    border: 0;
    padding: 0;
    cursor: pointer;
    transition: background .15s ease, width .15s ease;
}
.module-carousel-dot:hover {
    background: #94a3b8;
}
.module-carousel-dot.is-active {
    background: var(--car-gold);
    width: 22px;
    border-radius: 4px;
}

/* ── MOBILE ──────────────────────────────────────── */
@media (max-width: 900px) {
    .module-carousel-visible-3,
    .module-carousel-visible-4 {
        --carousel-visible: 2;
    }
    .module-carousel-prev { left: 4px; }
    .module-carousel-next { right: 4px; }
}
@media (max-width: 600px) {
    .module-carousel-visible-2,
    .module-carousel-visible-3,
    .module-carousel-visible-4 {
        --carousel-visible: 1;
    }
    .module-carousel-caption {
        right: 70px;
        padding: 10px 14px;
    }
    .module-carousel-caption-title {
        font-size: 0.95rem;
    }
    .module-carousel-arrow {
        width: 42px;
        height: 42px;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Hero Slideshow   [hero-slideshow]
   When the slideshow is dropped on a regular page (inside
   .page-content > .container), it needs to BREAK OUT of the
   container's max-width and span the full viewport — same look as
   on the home page where it's rendered above .page-content.
   ════════════════════════════════════════════════════════════════ */

/* Full-bleed: pull edges out to the viewport. The 50% - 50vw trick
   works because .container is centered (margin: 0 auto), so the
   element's left/right edges line up with the viewport edges. */
.page-content > .container > .hero-slideshow,
.page-content .container > .hero-slideshow,
.page-content .hero-slideshow {
    width: 100vw;
    max-width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    /* Body has overflow-x: hidden so the 100vw doesn't introduce
       a horizontal scrollbar even on systems with visible scrollbars. */
}

/* When the slideshow is the FIRST element on the page-content, it
   should sit flush against the navigation — no gap from the
   .page-content top padding (which is 48px in style.css).
   We use multiple selectors to be defensive against:
     - Stray empty <p></p> tags that might come before the section
     - The shortcode parser leaving whitespace text nodes
     - Variations in how the WYSIWYG saves content
   The :first-of-type selector is more lenient than :first-child —
   it only checks for the first element of a given type, ignoring
   surrounding whitespace and empty siblings. */
.page-content > .container > .hero-slideshow:first-child,
.page-content .container > .hero-slideshow:first-child,
.page-content > .container > .hero-slideshow:first-of-type,
.page-content .container > .hero-slideshow:first-of-type {
    margin-top: -48px;   /* cancels the .page-content top padding */
}
@media (max-width: 768px) {
    .page-content > .container > .hero-slideshow:first-child,
    .page-content .container > .hero-slideshow:first-child,
    .page-content > .container > .hero-slideshow:first-of-type,
    .page-content .container > .hero-slideshow:first-of-type {
        margin-top: -32px;   /* mobile has tighter padding */
    }
}

/* If the slideshow is the LAST element, push the bottom margin out
   the same amount so following sections don't have a doubled gap. */
.page-content > .container > .hero-slideshow:last-child,
.page-content .container > .hero-slideshow:last-child {
    margin-bottom: -80px;   /* cancels the .page-content bottom padding */
}

/* Height variants — let editors choose how tall the hero is.
   The base .hero-slideshow rule from style.css sets min-height: 600px;
   we ADD variants here without redefining it. */
.hero-slideshow.hero-slideshow-full {
    min-height: 100vh;
}
.hero-slideshow.hero-slideshow-short {
    min-height: 360px;
}
.hero-slideshow.hero-slideshow-short .hero-slide-content .hero-text h1 {
    font-size: clamp(1.5rem, 3vw, 2.4rem);
}

/* Module variant marker — when the slideshow is rendered VIA the
   module on a non-home page, give following sections a small top
   margin (the home page adds this via different CSS rules). */
.page-content .hero-slideshow + * {
    margin-top: 48px;
}


/* ════════════════════════════════════════════════════════════════
   HEADER REDESIGN — clean, modern, breathable
   ════════════════════════════════════════════════════════════════
   The original header used flex with space-between, which caused
   the logo to push menu items into wrapping when the logo was
   wide (e.g. branded logos like MUTOTO TRANSPORT).
   
   This redesign:
   - Constrains the logo image (max-height + max-width, object-fit)
   - Switches to a 3-column grid: [logo] [menu, centered] [CTA]
     so the logo and CTA are pinned to edges and the menu has
     the entire middle space to breathe
   - Forces nav items to a single line (white-space: nowrap)
   - Replaces tight padding with generous spacing
   - Cleans up the active state (gold underline + colour change,
     no more pill that competes with Track & Trace)
   - Adds a subtle hover affordance
   ════════════════════════════════════════════════════════════════ */

/* ── LOGO ──────────────────────────────────────────── */
/* Constrain whatever logo image admins upload — never let it
   blow out the header. */
.site-header .logo {
    flex-shrink: 0;
    max-height: 56px;
    line-height: 1;
}
.site-header .logo img {
    max-height: 50px;
    max-width: 200px;
    width: auto;
    height: auto;
    object-fit: contain;
    display: block;
}
/* Text-fallback logo (when no image is uploaded) */
.site-header .logo:not(:has(img)) {
    font-size: 1.55rem;
    font-weight: 800;
    letter-spacing: -0.02em;
}

/* ── HEADER CONTAINER ──────────────────────────────── */
/* Bump from 72px to 80px to give the bigger logo room.
   Use a flex layout instead of grid so the nav itself can
   distribute its children:
     [logo] [---------- main-nav ----------] [hamburger]
   Inside .main-nav, regular menu items flow left-to-right,
   and .nav-track-btn gets margin-left: auto to be pushed to
   the right edge. */
.site-header .header-inner {
    height: 80px;
    display: flex;
    align-items: center;
    gap: 32px;
    padding: 0 24px;
    max-width: 1280px;
    margin: 0 auto;
}

/* ── NAV (the middle, takes all available space) ───── */
.site-header .main-nav {
    display: flex !important;
    align-items: center;
    flex: 1;                  /* take up all space between logo and hamburger */
    gap: 4px;
    flex-wrap: nowrap;
    overflow: visible;
}
/* Push the Track & Trace button to the right edge of the nav,
   so the visual layout becomes:
     [logo]  [Startseite … Kontakt]  ←gap→  [Track & Trace] */
.site-header .main-nav .nav-track-btn {
    margin-left: auto;
}

/* Standard menu link — clean, no pill background */
.site-header .main-nav a:not(.nav-track-btn) {
    padding: 10px 14px !important;
    font-size: 0.92rem !important;
    font-weight: 500 !important;
    color: var(--gray-700, #475569) !important;
    background: transparent !important;
    border-radius: 4px;
    white-space: nowrap;
    line-height: 1.2;
    position: relative;
    border-bottom: 2px solid transparent;
    transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
}
.site-header .main-nav a:not(.nav-track-btn):hover {
    color: var(--navy, #0B1D3A) !important;
    background: rgba(232, 163, 23, 0.06) !important;
    border-bottom-color: rgba(232, 163, 23, 0.4);
}
.site-header .main-nav a:not(.nav-track-btn).active {
    color: var(--gold, #E8A317) !important;
    background: transparent !important;
    border-bottom-color: var(--gold, #E8A317);
    font-weight: 600 !important;
}
/* Kill the old ::after underline — the border-bottom replaces it */
.site-header .main-nav a:not(.nav-track-btn).active::after {
    display: none !important;
}

/* ── TRACK & TRACE BUTTON (the right column) ───────── */
/* Make it cleaner and less aggressive — drop the pulsing icon
   animation, soften the shadow, slightly less padding */
.site-header .nav-track-btn {
    padding: 10px 18px !important;
    border-radius: 6px !important;     /* less pill, more button */
    font-size: 0.9rem !important;
    font-weight: 700 !important;
    box-shadow: 0 1px 3px rgba(232, 163, 23, 0.25) !important;
    flex-shrink: 0;
}
.site-header .nav-track-btn:hover {
    transform: none !important;          /* no jump */
    box-shadow: 0 2px 6px rgba(232, 163, 23, 0.35) !important;
}
/* Calm down the pulsing emoji — it's distracting */
.site-header .nav-track-btn .track-icon {
    animation: none !important;
    font-size: 0.95rem !important;
}

/* ── HAMBURGER (mobile) ────────────────────────────── */
/* Make sure it sits in the right column on mobile. */
.site-header .hamburger {
    display: none;
}

/* ── RESPONSIVE BREAKPOINTS ────────────────────────── */
/* On medium screens, tighten the spacing before going mobile */
@media (max-width: 1100px) {
    .site-header .header-inner {
        gap: 16px;
        padding: 0 16px;
    }
    .site-header .main-nav {
        gap: 2px;
    }
    .site-header .main-nav a:not(.nav-track-btn) {
        padding: 10px 10px !important;
        font-size: 0.85rem !important;
    }
}

/* Hide the desktop menu and switch to hamburger on mobile.
   The original style.css already handles this at 768px, but we
   need to override our flex first. */
@media (max-width: 900px) {
    .site-header .header-inner {
        height: 70px;
        gap: 0;
        justify-content: space-between;
    }
    .site-header .main-nav {
        display: none !important;
        position: absolute;
        top: 70px;
        left: 0;
        right: 0;
        background: #fff;
        flex-direction: column !important;
        align-items: stretch !important;
        padding: 12px 16px;
        gap: 2px;
        box-shadow: 0 8px 24px rgba(0,0,0,0.08);
        border-top: 1px solid #f1f5f9;
        z-index: 1001;
        flex: 0 0 auto;
    }
    .site-header .main-nav.open {
        display: flex !important;
    }
    .site-header .main-nav a:not(.nav-track-btn) {
        padding: 12px 16px !important;
        border-bottom: 1px solid #f1f5f9 !important;
        border-radius: 0;
    }
    .site-header .main-nav a:not(.nav-track-btn):last-child {
        border-bottom: 0 !important;
    }
    .site-header .main-nav a:not(.nav-track-btn).active {
        background: rgba(232, 163, 23, 0.08) !important;
        border-bottom-color: #f1f5f9 !important;
    }
    /* Track & Trace inside the dropdown menu */
    .site-header .main-nav .nav-track-btn {
        margin: 8px 0 0 0 !important;
        text-align: center;
        justify-content: center;
    }
    .site-header .hamburger {
        display: flex !important;
        flex-direction: column;
        gap: 4px;
        background: transparent;
        border: 0;
        padding: 8px;
        cursor: pointer;
    }
    .site-header .hamburger span {
        width: 22px;
        height: 2px;
        background: var(--navy, #0B1D3A);
        border-radius: 1px;
        transition: transform 0.2s ease, opacity 0.2s ease;
    }
}

@media (max-width: 480px) {
    .site-header .logo {
        max-height: 44px;
    }
    .site-header .logo img {
        max-height: 38px;
        max-width: 130px;
    }
}


/* ════════════════════════════════════════════════════════════════
   PAGE PADDING — flush layout when there's no title strip
   ════════════════════════════════════════════════════════════════
   The default style.css sets:
       .page-content { padding: 48px 0 80px; }
   That's correct when there's a .page-hero strip above (the dark
   blue title bar) — gives breathing room.
   
   But when the admin unchecks "Show page title strip" on a page
   (typically because the page starts with a [hero-slideshow] or
   another big visual), the 48px top padding becomes an awkward
   white gap.
   
   The header.php template adds class="no-page-title" to <body>
   when show_title=0. We use that to zero the top padding so
   the first module sits flush against the navigation — same
   look as the home page.
   ════════════════════════════════════════════════════════════════ */

body.no-page-title .page-content {
    padding-top: 0 !important;
}

/* Modern browsers also support :has() — same effect achieved by
   detecting that the page content starts with a hero slideshow.
   This is a belt-and-suspenders fallback in case the body class
   wasn't applied for any reason. */
@supports selector(:has(*)) {
    .page-content:has(> .container > .hero-slideshow:first-child),
    .page-content:has(> .container > .hero-slideshow:first-of-type) {
        padding-top: 0;
    }
}

/* When body.no-page-title is set, the .page-content top padding is
   already zero (rule above). The hero-slideshow's negative top
   margin would then pull it ABOVE the navigation, which we don't
   want. Cancel the negative margin in this case. */
body.no-page-title .page-content > .container > .hero-slideshow:first-child,
body.no-page-title .page-content .container > .hero-slideshow:first-child,
body.no-page-title .page-content > .container > .hero-slideshow:first-of-type,
body.no-page-title .page-content .container > .hero-slideshow:first-of-type {
    margin-top: 0;
}
@media (max-width: 768px) {
    body.no-page-title .page-content > .container > .hero-slideshow:first-child,
    body.no-page-title .page-content .container > .hero-slideshow:first-child,
    body.no-page-title .page-content > .container > .hero-slideshow:first-of-type,
    body.no-page-title .page-content .container > .hero-slideshow:first-of-type {
        margin-top: 0;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: About Section   [about-section]
   "Über uns / Warum uns wählen" layout — image on one side,
   structured content on the other (eyebrow, intro, sub-heading,
   bold-labelled points list, outro).
   ════════════════════════════════════════════════════════════════ */

.module-about-section {
    margin: 64px 0;
    --about-blue: #0B1D3A;
    --about-grey: #475569;
    --about-grey-light: #64748b;
    --about-gold: #E8A317;
}

.module-about-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 56px;
    align-items: center;
}

.module-about-image {
    position: relative;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 8px 32px rgba(15, 23, 42, 0.10);
    aspect-ratio: 4 / 5;
    background: #f1f5f9;
}
.module-about-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.module-about-content {
    line-height: 1.65;
}

.module-about-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--about-gold);
    font-size: 0.86rem;
    font-weight: 700;
    font-style: italic;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 16px;
}
.module-about-eyebrow-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
}
.module-about-eyebrow-icon svg {
    width: 18px;
    height: 18px;
}

/* Intro/outro are now richtext containers — they wrap the
   sanitized HTML emitted by the contenteditable editor. The
   styling targets the inner <p>, <strong>, <em>, <a>, <ul>, <ol>
   so admin-typed B/I/links/lists render with our typography. */
.module-about-intro {
    color: var(--about-grey);
    font-size: 0.98rem;
    font-style: italic;
    line-height: 1.65;
}
.module-about-intro p {
    margin: 0 0 16px;
}
.module-about-intro p:last-child {
    margin-bottom: 0;
}
.module-about-intro strong,
.module-about-intro b {
    font-style: normal;
    font-weight: 700;
    color: var(--about-blue);
}
.module-about-intro em,
.module-about-intro i {
    font-style: italic;
}
.module-about-intro a {
    color: var(--about-gold);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.module-about-intro a:hover {
    color: var(--about-blue);
}
.module-about-intro ul,
.module-about-intro ol {
    margin: 8px 0 16px;
    padding-left: 22px;
}
.module-about-intro li {
    margin-bottom: 4px;
}

.module-about-subheading {
    color: var(--about-blue);
    font-size: 1.4rem;
    font-weight: 700;
    font-style: italic;
    margin: 24px 0 14px;
    line-height: 1.2;
}

.module-about-points {
    list-style: none;
    padding: 0 0 0 22px;
    margin: 0 0 24px;
}
.module-about-point {
    color: var(--about-grey);
    font-size: 0.95rem;
    line-height: 1.6;
    margin-bottom: 10px;
    font-style: italic;
}
.module-about-point-label {
    color: var(--about-blue);
    font-weight: 700;
    font-style: normal;
}
/* The desc is richtext now — strip the <p> wrapper margins so
   it stays inline alongside the bold label. */
.module-about-point-desc p {
    display: inline;
    margin: 0;
}
.module-about-point-desc strong,
.module-about-point-desc b {
    font-style: normal;
    font-weight: 700;
    color: var(--about-blue);
}
.module-about-point-desc a {
    color: var(--about-gold);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.module-about-point-desc a:hover {
    color: var(--about-blue);
}

.module-about-outro {
    color: var(--about-grey);
    font-size: 0.96rem;
    font-style: italic;
    line-height: 1.65;
    margin: 16px 0 0;
}
.module-about-outro p {
    margin: 0 0 14px;
}
.module-about-outro p:last-child {
    margin-bottom: 0;
}
.module-about-outro strong,
.module-about-outro b {
    font-style: normal;
    font-weight: 700;
    color: var(--about-blue);
}
.module-about-outro em,
.module-about-outro i {
    font-style: italic;
}
.module-about-outro a {
    color: var(--about-gold);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.module-about-outro a:hover {
    color: var(--about-blue);
}
.module-about-outro ul,
.module-about-outro ol {
    margin: 8px 0 14px;
    padding-left: 22px;
}

/* Image-right variant: just swap visual order via grid ordering */
.module-about-image-right .module-about-grid {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
}

/* Mobile: stack vertically, image on top */
@media (max-width: 900px) {
    .module-about-grid,
    .module-about-image-right .module-about-grid {
        grid-template-columns: 1fr;
        gap: 32px;
    }
    .module-about-image {
        aspect-ratio: 16 / 10;
        max-width: 600px;
        margin: 0 auto;
    }
    .module-about-section {
        margin: 40px 0;
    }
}


/* ════════════════════════════════════════════════════════════════
   ROUND 31 — bulletproof slideshow gap fix
   ════════════════════════════════════════════════════════════════
   Problem: even after round 30's body.no-page-title approach, a
   ~20-30px white gap remained when [hero-slideshow] was used on
   regular pages. Cause: the body class is only added when the
   show_title COLUMN exists in the DB AND the admin set it to 0.
   On installs where the auto-migration didn't run yet, OR where
   the admin didn't set show_title=0, the body class isn't
   present so the round-30 rules don't apply.

   Solution: use :has() to detect "the page-content's first child
   contains a hero-slideshow" and zero the top padding REGARDLESS
   of body class or DB state. For older browsers without :has(),
   fall back to a more aggressive negative margin on the slideshow
   itself (which works as long as overflow doesn't clip it).
   ════════════════════════════════════════════════════════════════ */

/* Modern browsers (~95% as of 2026): :has() detects a slideshow
   inside .page-content's container and zeros the gap directly.
   This works regardless of the body class, regardless of whether
   the show_title column even exists in the database. */
@supports selector(:has(*)) {
    .page-content:has(> .container > .hero-slideshow:first-child),
    .page-content:has(> .container > .hero-slideshow:first-of-type) {
        padding-top: 0;
    }
    /* Cancel the negative margin too (round 25 added it to "eat"
       the page-content padding that's now zero). */
    .page-content:has(> .container > .hero-slideshow:first-child) > .container > .hero-slideshow:first-child,
    .page-content:has(> .container > .hero-slideshow:first-of-type) > .container > .hero-slideshow:first-of-type {
        margin-top: 0;
    }
}

/* Fallback for browsers without :has() — keep the round-25 approach
   (negative margin on the slideshow). This is already in place from
   round 25 / 29 / 30, so we just leave it untouched here. The :has()
   block above takes precedence in modern browsers. */

/* Bonus: the same treatment for [process-steps] and [about-section]
   when they're the first thing on a page with no title strip. */
@supports selector(:has(*)) {
    .page-content:has(> .container > .module-process-steps:first-child),
    .page-content:has(> .container > .process-section:first-child),
    .page-content:has(> .container > .module-about-section:first-child) {
        padding-top: 0;
    }
}


/* ════════════════════════════════════════════════════════════════
   ROUND 31 — sticky WYSIWYG toolbar
   ════════════════════════════════════════════════════════════════
   When editing long pages with many modules, the user shouldn't
   lose access to the formatting toolbar when they scroll down.
   position:sticky pins the toolbar to the top of the viewport
   while the wrapper is in view.

   We use top:0 with high z-index. The wy-wrapper (parent) is
   position:relative so sticky resolves correctly within it.
   ════════════════════════════════════════════════════════════════ */
.wy-toolbar {
    position: sticky !important;
    top: 0;
    z-index: 100;
    background: var(--wy-toolbar-bg, #f8fafc);
    /* Subtle shadow when stuck so it's visually distinct from
       the content scrolling behind it. */
    box-shadow: 0 1px 3px rgba(0,0,0,0.08);
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Industry Solutions   [industry-solutions]
   "Branchenlösungen" pattern — header strip with eyebrow / italic
   heading / subtitle / gold rule, then a row of cards. Each card
   has a big serif italic NUMBER at the top by default, with the
   option to override per-card to an icon or uploaded image.
   ════════════════════════════════════════════════════════════════ */

.module-industry-solutions {
    --isol-navy: #0B1D3A;
    --isol-gold: #E8A317;
    --isol-grey: #64748b;
    --isol-grey-light: #94a3b8;
    --isol-card-border: #e2e8f0;
    padding: 64px 0;
    background: #fff;
}

/* Header strip — shared visual language with services-grid */
.module-isol-header {
    text-align: center;
    margin-bottom: 40px;
}
.module-isol-eyebrow {
    display: inline-block;
    color: var(--isol-gold);
    font-size: 0.84rem;
    font-weight: 700;
    font-style: italic;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}
.module-isol-heading {
    color: var(--isol-navy);
    font-size: 2rem;
    font-weight: 800;
    font-style: italic;
    margin: 0 0 8px;
    line-height: 1.2;
}
.module-isol-subtitle {
    color: var(--isol-grey-light);
    font-size: 1rem;
    font-style: italic;
    margin: 0 0 18px;
    line-height: 1.5;
}
.module-isol-rule {
    width: 56px;
    height: 3px;
    background: var(--isol-gold);
    border-radius: 2px;
    margin: 0 auto;
}

/* Cards grid */
.module-isol-grid {
    display: grid;
    gap: 18px;
}
.module-isol-cols-2 .module-isol-grid { grid-template-columns: repeat(2, 1fr); }
.module-isol-cols-3 .module-isol-grid { grid-template-columns: repeat(3, 1fr); }
.module-isol-cols-4 .module-isol-grid { grid-template-columns: repeat(4, 1fr); }
.module-isol-cols-5 .module-isol-grid { grid-template-columns: repeat(5, 1fr); }

.module-isol-card {
    background: #fff;
    border: 1px solid var(--isol-card-border);
    border-radius: 12px;
    padding: 28px 22px;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
    display: flex;
    flex-direction: column;
    /* Long descriptions in some cards shouldn't push other cards
       to be taller — but we DO want all cards in a row to have the
       same height, so use stretch on the grid. */
    height: 100%;
    text-decoration: none;
    color: inherit;
}
.module-isol-card-link {
    cursor: pointer;
}
.module-isol-card-link:hover {
    border-color: var(--isol-navy);
    box-shadow: 0 8px 24px rgba(11, 29, 58, 0.10);
    transform: translateY(-2px);
}

/* Top-of-card visual — number / icon / image, all positioned the
   same way (top, ~ same vertical real-estate). */
.module-isol-card-visual {
    margin-bottom: 18px;
    line-height: 1;
    display: flex;
    align-items: flex-start;
    min-height: 56px;       /* keeps cards aligned regardless of mode */
}

/* Number mode — big serif italic */
.module-isol-visual-number {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-style: italic;
    font-weight: 400;
    font-size: 3rem;
    color: var(--isol-navy);
    letter-spacing: -0.02em;
}

/* Icon mode — gold colour to make the icon pop visually */
.module-isol-visual-icon {
    color: var(--isol-navy);
}
.module-isol-visual-icon svg {
    width: 36px;
    height: 36px;
}

/* Image mode — capped size so layouts don't break */
.module-isol-visual-image {
    width: 56px;
    height: 56px;
    border-radius: 8px;
    overflow: hidden;
    background: #f1f5f9;
}
.module-isol-visual-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.module-isol-card-title {
    color: var(--isol-navy);
    font-size: 1.05rem;
    font-weight: 700;
    font-style: italic;
    margin: 0 0 12px;
    line-height: 1.3;
}

.module-isol-card-desc {
    color: var(--isol-grey);
    font-size: 0.86rem;
    font-style: italic;
    line-height: 1.6;
    flex: 1;     /* take remaining space so cards stretch evenly */
}
.module-isol-card-desc p {
    margin: 0 0 10px;
}
.module-isol-card-desc p:last-child {
    margin-bottom: 0;
}
.module-isol-card-desc strong,
.module-isol-card-desc b {
    color: var(--isol-navy);
    font-style: normal;
    font-weight: 700;
}
.module-isol-card-desc a {
    color: var(--isol-gold);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.module-isol-card-desc a:hover {
    color: var(--isol-navy);
}
.module-isol-card-desc ul,
.module-isol-card-desc ol {
    margin: 6px 0;
    padding-left: 20px;
}

/* Responsive */
@media (max-width: 1100px) {
    .module-isol-cols-4 .module-isol-grid,
    .module-isol-cols-5 .module-isol-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 700px) {
    .module-isol-cols-2 .module-isol-grid,
    .module-isol-cols-3 .module-isol-grid,
    .module-isol-cols-4 .module-isol-grid,
    .module-isol-cols-5 .module-isol-grid {
        grid-template-columns: 1fr;
    }
    .module-industry-solutions {
        padding: 48px 0;
    }
    .module-isol-heading {
        font-size: 1.6rem;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Services Grid   [services-grid]
   "Unsere Leistungen" pattern — header strip + grid of cards. Each
   card has a navy-gradient square at the top-left containing a
   gold icon, then bold italic title + italic description below.
   ════════════════════════════════════════════════════════════════ */

.module-services-grid {
    --svc-navy: #0B1D3A;
    --svc-navy-2: #1e3a8a;
    --svc-gold: #E8A317;
    --svc-grey: #64748b;
    --svc-grey-light: #94a3b8;
    --svc-card-border: #e2e8f0;
    padding: 64px 0;
    background: #f8fafc;
}

/* Header strip — same shape as industry-solutions */
.module-svc-header {
    text-align: center;
    margin-bottom: 40px;
}
.module-svc-eyebrow {
    display: inline-block;
    color: var(--svc-gold);
    font-size: 0.84rem;
    font-weight: 700;
    font-style: italic;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}
.module-svc-heading {
    color: var(--svc-navy);
    font-size: 2rem;
    font-weight: 800;
    font-style: italic;
    margin: 0 0 8px;
    line-height: 1.2;
}
.module-svc-subtitle {
    color: var(--svc-grey-light);
    font-size: 1rem;
    font-style: italic;
    margin: 0 0 18px;
    line-height: 1.5;
}
.module-svc-rule {
    width: 56px;
    height: 3px;
    background: var(--svc-gold);
    border-radius: 2px;
    margin: 0 auto;
}

/* Cards grid */
.module-svc-grid {
    display: grid;
    gap: 22px;
}
.module-svc-cols-2 .module-svc-grid { grid-template-columns: repeat(2, 1fr); }
.module-svc-cols-3 .module-svc-grid { grid-template-columns: repeat(3, 1fr); }
.module-svc-cols-4 .module-svc-grid { grid-template-columns: repeat(4, 1fr); }

.module-svc-card {
    background: #fff;
    border: 1px solid var(--svc-card-border);
    border-radius: 12px;
    padding: 26px 24px;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
    display: flex;
    flex-direction: column;
    height: 100%;
    text-decoration: none;
    color: inherit;
}
.module-svc-card-link {
    cursor: pointer;
}
.module-svc-card-link:hover {
    border-color: var(--svc-navy);
    box-shadow: 0 8px 24px rgba(11, 29, 58, 0.10);
    transform: translateY(-2px);
}

/* Icon box — navy gradient square with gold icon inside.
   This is the visual hallmark of the services-grid module. */
.module-svc-icon-box {
    width: 48px;
    height: 48px;
    background: linear-gradient(135deg, var(--svc-navy) 0%, var(--svc-navy-2) 100%);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 18px;
    color: var(--svc-gold);   /* sets currentColor for SVG icon strokes */
    box-shadow: 0 2px 8px rgba(11, 29, 58, 0.15);
    flex-shrink: 0;
}
.module-svc-icon-box svg {
    width: 24px;
    height: 24px;
    color: var(--svc-gold);
    stroke: currentColor;
}
.module-svc-icon-emoji {
    font-size: 1.4rem;
    line-height: 1;
}
.module-svc-icon-empty {
    background: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%);
    box-shadow: none;
}

.module-svc-title {
    color: var(--svc-navy);
    font-size: 1.05rem;
    font-weight: 700;
    font-style: italic;
    margin: 0 0 8px;
    line-height: 1.3;
}

.module-svc-desc {
    color: var(--svc-grey);
    font-size: 0.88rem;
    font-style: italic;
    line-height: 1.55;
    flex: 1;
}
.module-svc-desc p {
    margin: 0 0 8px;
}
.module-svc-desc p:last-child {
    margin-bottom: 0;
}
.module-svc-desc strong,
.module-svc-desc b {
    color: var(--svc-navy);
    font-style: normal;
    font-weight: 700;
}
.module-svc-desc a {
    color: var(--svc-gold);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.module-svc-desc a:hover {
    color: var(--svc-navy);
}
.module-svc-desc ul,
.module-svc-desc ol {
    margin: 6px 0;
    padding-left: 20px;
}

/* Responsive */
@media (max-width: 1000px) {
    .module-svc-cols-4 .module-svc-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 700px) {
    .module-svc-cols-2 .module-svc-grid,
    .module-svc-cols-3 .module-svc-grid,
    .module-svc-cols-4 .module-svc-grid {
        grid-template-columns: 1fr;
    }
    .module-services-grid {
        padding: 48px 0;
    }
    .module-svc-heading {
        font-size: 1.6rem;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Contact Form   [contact-form]
   Four selectable layout styles sharing a common set of input,
   alert, and button rules. The .module-cf-style-* class on the
   <section> picks the layout-specific tweaks.
   ════════════════════════════════════════════════════════════════ */

.module-contact-form {
    --cf-navy: #0B1D3A;
    --cf-navy-2: #1e3a8a;
    --cf-blue: #1565c0;
    --cf-gold: #E8A317;
    --cf-grey: #475569;
    --cf-grey-light: #94a3b8;
    --cf-bg-light: #f8fafc;
    --cf-border: #cbd5e1;
    padding: 56px 0;
}

/* ── Section header (eyebrow + heading + subtitle + optional rule) ── */
.module-cf-header {
    text-align: center;
    margin-bottom: 32px;
}
.module-cf-eyebrow {
    display: inline-block;
    color: var(--cf-gold);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}
.module-cf-heading {
    color: var(--cf-navy);
    font-size: 1.8rem;
    font-weight: 800;
    font-style: italic;
    margin: 0 0 8px;
    line-height: 1.2;
}
.module-cf-subtitle {
    color: var(--cf-grey-light);
    font-size: 0.95rem;
    margin: 0 0 14px;
    line-height: 1.5;
}
.module-cf-rule {
    width: 50px;
    height: 3px;
    background: var(--cf-gold);
    border-radius: 2px;
    margin: 0 auto;
}

/* ── Generic form inputs (light theme) ── */
.module-cf-form {
    margin: 0;
}
.module-cf-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 14px;
}
.module-cf-row-full {
    grid-template-columns: 1fr;
}
.module-cf-row-extras {
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
}
.module-cf-field {
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.module-cf-field label {
    font-size: 0.86rem;
    font-weight: 600;
    color: var(--cf-navy);
    margin-bottom: 6px;
    line-height: 1.2;
}
.module-cf-req {
    color: #ef4444;
    margin-left: 1px;
}
.module-cf-input {
    padding: 10px 12px;
    border: 1px solid var(--cf-border);
    border-radius: 6px;
    font-size: 0.92rem;
    font-family: inherit;
    color: var(--cf-navy);
    background: #fff;
    width: 100%;
    box-sizing: border-box;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.module-cf-input:focus {
    outline: 0;
    border-color: var(--cf-gold);
    box-shadow: 0 0 0 3px rgba(232, 163, 23, 0.15);
}
.module-cf-input::placeholder {
    color: var(--cf-grey-light);
}
textarea.module-cf-input {
    resize: vertical;
    min-height: 120px;
    line-height: 1.5;
}

/* ── Submit buttons ── */
.module-cf-btn {
    border: 0;
    cursor: pointer;
    font-family: inherit;
    font-weight: 700;
    font-size: 0.92rem;
    transition: transform .12s ease, box-shadow .15s ease, background .15s ease;
}
.module-cf-btn-gold {
    background: var(--cf-gold);
    color: var(--cf-navy);
    padding: 12px 28px;
    border-radius: 6px;
    width: 100%;
    margin-top: 8px;
}
.module-cf-btn-gold:hover {
    background: #f3b850;
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(232, 163, 23, 0.25);
}
.module-cf-btn-navy {
    background: var(--cf-navy);
    color: #fff;
    padding: 12px 28px;
    border-radius: 6px;
    width: 100%;
    margin-top: 8px;
}
.module-cf-btn-navy:hover {
    background: #142a52;
    transform: translateY(-1px);
}
/* White pill button (image-form style) */
.module-cf-btn-pill {
    background: #fff;
    color: var(--cf-navy);
    padding: 11px 22px;
    border-radius: 999px;
    margin-top: 6px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}
.module-cf-btn-pill:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(255,255,255,0.25);
}
.module-cf-btn-arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: var(--cf-navy);
    color: #fff;
    border-radius: 50%;
    font-size: 0.72rem;
    line-height: 1;
}

/* ── Alert banners ── */
.module-cf-alert {
    padding: 12px 16px;
    border-radius: 6px;
    margin-bottom: 14px;
    font-size: 0.92rem;
    display: flex;
    align-items: flex-start;
    gap: 10px;
    line-height: 1.45;
}
.module-cf-alert-icon {
    flex-shrink: 0;
    font-weight: 700;
}
.module-cf-alert-ok {
    background: #f0fdf4;
    color: #14532d;
    border: 1px solid #86efac;
}
.module-cf-alert-err {
    background: #fef2f2;
    color: #7f1d1d;
    border: 1px solid #fca5a5;
}

/* ════════════════════════════════════════════════════════════════
   STYLE 1: split-info (form left, info card right)
   ════════════════════════════════════════════════════════════════ */
.module-cf-grid-split {
    display: grid;
    grid-template-columns: 1fr 0.85fr;
    gap: 56px;
    align-items: start;
    max-width: 1100px;
    margin: 0 auto;
}
.module-cf-info {
    color: var(--cf-grey);
    line-height: 1.5;
}
.module-cf-info-title {
    color: var(--cf-navy);
    font-size: 1.25rem;
    font-weight: 700;
    margin: 0 0 16px;
}
.module-cf-info-company {
    color: var(--cf-navy);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: 0.95rem;
    margin-bottom: 8px;
}
.module-cf-info-address {
    color: var(--cf-grey);
    font-size: 0.92rem;
    line-height: 1.5;
    margin-bottom: 18px;
}
.module-cf-info-line {
    color: var(--cf-grey);
    font-size: 0.92rem;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.module-cf-info-line a {
    color: var(--cf-navy);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.module-cf-info-line a:hover {
    color: var(--cf-gold);
}
.module-cf-info-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    font-size: 1rem;
    line-height: 1;
}
.module-cf-icon-phone { color: #dc2626; }
.module-cf-icon-fax   { color: var(--cf-navy); }
.module-cf-icon-mail  { color: var(--cf-navy); }

.module-cf-info-hours {
    margin-top: 24px;
    padding: 18px 22px;
    background: var(--cf-bg-light);
    border-radius: 8px;
}
.module-cf-info-hours-title {
    color: var(--cf-navy);
    font-weight: 700;
    font-size: 0.98rem;
    margin-bottom: 10px;
}
.module-cf-info-hours-line {
    color: var(--cf-grey);
    font-size: 0.92rem;
    margin-bottom: 6px;
    line-height: 1.5;
}
.module-cf-info-hours-line:last-child {
    margin-bottom: 0;
}

/* ════════════════════════════════════════════════════════════════
   STYLE 2: image-form (image left, dark form panel right)
   ════════════════════════════════════════════════════════════════ */
.module-cf-style-image-form {
    background: var(--cf-bg-light);
    padding: 64px 0;
}
.module-cf-grid-image {
    display: grid;
    grid-template-columns: 1fr 1.1fr;
    gap: 24px;
    align-items: stretch;
    max-width: 1200px;
    margin: 0 auto;
}
.module-cf-image {
    border-radius: 12px;
    overflow: hidden;
    background: #e2e8f0;
    min-height: 480px;
}
.module-cf-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.module-cf-image-empty {
    background: linear-gradient(135deg, #cbd5e1 0%, #94a3b8 100%);
}
.module-cf-panel {
    background: var(--cf-navy-2);
    color: #fff;
    border-radius: 12px;
    padding: 48px 44px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.module-cf-panel-eyebrow {
    color: rgba(255,255,255,0.85);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}
.module-cf-panel-heading {
    color: #fff;
    font-size: 2.4rem;
    font-weight: 800;
    margin: 0 0 24px;
    line-height: 1.05;
}
.module-cf-panel-subtitle {
    color: rgba(255,255,255,0.85);
    margin: 0 0 18px;
    font-size: 0.96rem;
    line-height: 1.5;
}

/* Dark-theme inputs (translucent on navy panel) */
.module-cf-form-dark .module-cf-field label {
    color: rgba(255,255,255,0.92);
    font-size: 0.78rem;
}
.module-cf-input-dark {
    background: transparent;
    border: 1px solid rgba(255,255,255,0.35);
    color: #fff;
    border-radius: 999px;
    padding: 12px 18px;
}
.module-cf-input-dark::placeholder {
    color: rgba(255,255,255,0.5);
}
.module-cf-input-dark:focus {
    border-color: #fff;
    box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
}
textarea.module-cf-input-dark {
    border-radius: 16px;
    min-height: 100px;
}

/* ════════════════════════════════════════════════════════════════
   STYLE 3: centered (single centered card)
   ════════════════════════════════════════════════════════════════ */
.module-cf-style-centered {
    background: var(--cf-bg-light);
}
.module-cf-centered-wrap {
    display: flex;
    justify-content: center;
}
.module-cf-centered-card {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    padding: 36px 40px;
    width: 100%;
    max-width: 540px;
    box-shadow: 0 4px 16px rgba(15, 23, 42, 0.05);
}

/* ════════════════════════════════════════════════════════════════
   STYLE 4: compact-cta (inline single-row form)
   ════════════════════════════════════════════════════════════════ */
.module-cf-style-compact-cta {
    padding: 32px 0;
}
.module-cf-form-compact {
    background: var(--cf-navy);
    color: #fff;
    border-radius: 12px;
    padding: 24px 32px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 20px;
    align-items: end;
}
.module-cf-compact-intro {
    flex-shrink: 0;
    align-self: end;
    padding-bottom: 4px;
}
.module-cf-compact-eyebrow {
    color: var(--cf-gold);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    margin-bottom: 4px;
}
.module-cf-compact-heading {
    color: #fff;
    font-size: 1.3rem;
    font-weight: 700;
    margin: 0 0 4px;
    line-height: 1.2;
}
.module-cf-compact-subtitle {
    color: rgba(255,255,255,0.75);
    font-size: 0.82rem;
    margin: 0;
    line-height: 1.4;
}
.module-cf-compact-fields {
    display: grid;
    grid-template-columns: 1fr 1fr 2fr;
    gap: 14px;
    align-items: end;
}
.module-cf-form-compact .module-cf-field label {
    color: rgba(255,255,255,0.72);
    font-size: 0.74rem;
    margin-bottom: 4px;
}
.module-cf-input-translucent {
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    color: #fff;
    padding: 10px 14px;
    font-size: 0.86rem;
}
.module-cf-input-translucent::placeholder {
    color: rgba(255,255,255,0.5);
}
.module-cf-input-translucent:focus {
    border-color: var(--cf-gold);
    background: rgba(255,255,255,0.15);
}
.module-cf-btn-compact {
    align-self: end;
    padding: 11px 20px;
    height: auto;
    white-space: nowrap;
}

/* ════════════════════════════════════════════════════════════════
   RESPONSIVE breakpoints for all 4 styles
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    /* split-info: stack form on top, info below */
    .module-cf-grid-split {
        grid-template-columns: 1fr;
        gap: 40px;
    }
    /* image-form: stack image on top, panel below */
    .module-cf-grid-image {
        grid-template-columns: 1fr;
    }
    .module-cf-image {
        aspect-ratio: 16 / 10;
        min-height: 0;
    }
    .module-cf-panel {
        padding: 36px 28px;
    }
    .module-cf-panel-heading {
        font-size: 1.8rem;
    }
    /* compact-cta: stack everything */
    .module-cf-form-compact {
        grid-template-columns: 1fr;
        gap: 16px;
        padding: 24px;
    }
    .module-cf-compact-fields {
        grid-template-columns: 1fr;
    }
}
@media (max-width: 600px) {
    /* Inputs in 2-col rows stack to 1 col */
    .module-cf-row {
        grid-template-columns: 1fr;
        gap: 14px;
    }
    .module-cf-heading {
        font-size: 1.5rem;
    }
    .module-cf-centered-card {
        padding: 24px 20px;
    }
    .module-cf-panel-heading {
        font-size: 1.5rem;
    }
}


/* ════════════════════════════════════════════════════════════════
   MODULE: Text / HTML  (round 39)   [text-html]
   Free-form rich text block — eyebrow + heading + sanitized body.
   Width can be "normal" (full container) or "narrow" (max 720px,
   centered for easier reading). Alignment can be left, center,
   justify.
   ════════════════════════════════════════════════════════════════ */
.module-text-html {
    margin: 56px 0;
    --th-blue: #0B1D3A;
    --th-grey: #475569;
    --th-gold: #E8A317;
}
.module-text-html-header {
    text-align: center;
    margin-bottom: 32px;
}
.module-text-html-eyebrow {
    color: var(--th-gold);
    font-size: 0.78rem;
    font-weight: 600;
    font-style: italic;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 8px;
}
.module-text-html-heading {
    color: var(--th-blue);
    font-size: clamp(1.6rem, 3.4vw, 2.4rem);
    font-weight: 700;
    font-style: italic;
    margin: 0;
    letter-spacing: -0.01em;
    line-height: 1.15;
}
.module-text-html-body {
    color: var(--th-grey);
    font-size: 1rem;
    line-height: 1.7;
}
.module-text-html-body p { margin: 0 0 16px; }
.module-text-html-body p:last-child { margin-bottom: 0; }
.module-text-html-body strong { color: var(--th-blue); font-weight: 700; }
.module-text-html-body em { font-style: italic; }
.module-text-html-body a {
    color: var(--th-gold);
    text-decoration: underline;
    text-underline-offset: 2px;
    transition: color .15s ease;
}
.module-text-html-body a:hover { color: var(--th-blue); }
.module-text-html-body h3 {
    color: var(--th-blue);
    font-size: 1.4rem;
    font-weight: 700;
    margin: 28px 0 12px;
    line-height: 1.25;
}
.module-text-html-body h4 {
    color: var(--th-blue);
    font-size: 1.15rem;
    font-weight: 700;
    margin: 24px 0 10px;
    line-height: 1.3;
}
.module-text-html-body ul,
.module-text-html-body ol {
    margin: 0 0 16px;
    padding-left: 28px;
}
.module-text-html-body ul { list-style: disc; }
.module-text-html-body ol { list-style: decimal; }
.module-text-html-body li {
    margin-bottom: 6px;
    line-height: 1.6;
}

/* Width variants */
.module-text-html.module-th-width-narrow .module-text-html-body,
.module-text-html.module-th-width-narrow .module-text-html-header {
    max-width: 720px;
    margin-left: auto;
    margin-right: auto;
}

/* Alignment variants */
.module-text-html.module-th-align-center .module-text-html-body { text-align: center; }
.module-text-html.module-th-align-justify .module-text-html-body { text-align: justify; }
/* default left needs no rule */

@media (max-width: 600px) {
    .module-text-html { margin: 36px 0; }
    .module-text-html-header { margin-bottom: 20px; }
}
/* faq-tabs-pro.css */
/* ════════════════════════════════════════════════════════════════════════
   MODULE: Tabs / FAQ Tabs — PRO redesign   (round 62)
   ════════════════════════════════════════════════════════════════════════
   Replaces the legacy .module-tabs-nav / .module-tabs-btn styling from
   sections.css with a more modern, polished version.

   This file is loaded AFTER sections.css so its rules override.

   Two main improvements:

   1) Desktop — modern look
      • Inactive tabs: muted gray (was gold — gold everywhere felt loud)
      • Active tab:    navy text + thicker gold underline + subtle lift
      • Hover state:   text fades to navy + ghost underline previews active
      • Smooth animated underline using ::after pseudo-element

   2) Mobile — single horizontal scroll row (was: 6 tabs wrapping into
      3+ chaotic rows)
      • flex-wrap: nowrap forces single row
      • overflow-x: auto + scroll-snap for natural touch swipe
      • Edge gradient fades on the right hint that more tabs exist
      • Active tab gets scroll-margin so it doesn't end at the edge
      • Tap targets stay 44px tall for accessibility

   Compatible with both [tabs] and [faq-tabs] modules — both reuse the
   same `.module-tabs-nav` / `.module-tabs-btn` markup.
   ════════════════════════════════════════════════════════════════════════ */


/* ── Wrapper to host the gradient edge fades on mobile ──
   Achieved by making the nav itself the scroll container and
   adding ::before / ::after via the parent module section.
   We do this by wrapping the nav with a positioned parent. */

/* Reset the legacy mobile rule that wrapped tabs onto multiple rows */
.module-tabs-nav,
.module-faq-tabs .module-tabs-nav {
    flex-wrap: nowrap !important;          /* Single row, ALWAYS */
    overflow-x: auto !important;
    overflow-y: hidden;
    scroll-snap-type: x proximity;          /* Soft snap — feels natural */
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    border-bottom: 1px solid #e5e7eb;
    margin-bottom: 32px;
    padding: 0;
    gap: 4px;                                /* small gap between pills */
    /* Padding-bottom holds the underline so the focus ring doesn't
       clip against the bottom border. */
    padding-bottom: 0;
    position: relative;
}
.module-tabs-nav::-webkit-scrollbar {
    display: none;
}

/* The button itself — a cleaner, more polished look */
.module-tabs-btn {
    flex-shrink: 0;
    background: transparent;
    border: 0;
    border-radius: 8px 8px 0 0;
    padding: 14px 20px 13px;
    margin-bottom: -1px;                     /* overlap nav border */
    font-family: inherit;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #94a3b8;                          /* muted gray for inactive */
    cursor: pointer;
    transition: color 0.18s ease, background 0.18s ease;
    white-space: nowrap;
    position: relative;
    scroll-snap-align: start;
    scroll-margin-left: 12px;                /* leave breathing room when snapped */
}

/* Animated underline — a pseudo-element so we can transition it */
.module-tabs-btn::after {
    content: '';
    position: absolute;
    left: 14px;
    right: 14px;
    bottom: -1px;                            /* sit on the nav border */
    height: 3px;
    background: var(--gold, #E8A317);
    border-radius: 2px 2px 0 0;
    transform: scaleX(0);
    transform-origin: center;
    transition: transform 0.22s cubic-bezier(0.4, 0, 0.2, 1);
}

.module-tabs-btn:hover {
    color: #475569;                          /* nudge toward navy on hover */
    background: rgba(232, 163, 23, 0.04);
}
.module-tabs-btn:hover::after {
    transform: scaleX(0.4);                  /* tease the underline */
    background: rgba(232, 163, 23, 0.4);
}

.module-tabs-btn.is-active {
    color: var(--navy, #0B1D3A);             /* clear active text */
    background: rgba(232, 163, 23, 0.06);    /* subtle gold tint */
}
.module-tabs-btn.is-active::after {
    transform: scaleX(1);                    /* full underline */
    background: var(--gold, #E8A317);
    height: 3px;
}

.module-tabs-btn:focus-visible {
    outline: 2px solid var(--gold, #E8A317);
    outline-offset: 2px;
    border-radius: 8px 8px 0 0;
}


/* ── Edge gradient hints — only shown on mobile/narrow screens ──
   We want a subtle "there's more" cue on the right when tabs scroll.
   We attach it to the nav's parent (typically .module-tabs or
   .module-faq-tabs) using a ::before/::after overlay.

   Using ::after on the nav itself is tricky because it's the scroll
   container — the pseudo would scroll with the content. Instead,
   wrap-style cue: linear-gradient masks via background. */

@media (max-width: 768px) {
    .module-tabs-nav {
        margin: 0 -16px 24px;                /* extend to viewport edges */
        padding: 0 16px;
        /* A right-edge gradient fade hint that more tabs exist.
           Background-attachment local keeps the gradient from
           scrolling with the content. */
        background:
            linear-gradient(to right, transparent calc(100% - 28px), rgba(255, 255, 255, 0.95) 100%) right top / 100% 100% no-repeat local,
            transparent;
    }
    .module-tabs-btn {
        padding: 12px 14px 11px;
        font-size: 0.74rem;
        letter-spacing: 0.06em;
        min-height: 44px;                    /* iOS HIG min tap target */
    }
    .module-tabs-btn::after {
        left: 10px;
        right: 10px;
        height: 3px;
    }
}

/* Very narrow phones — even tighter */
@media (max-width: 380px) {
    .module-tabs-btn {
        padding: 12px 12px 11px;
        font-size: 0.72rem;
    }
}


/* ════════════════════════════════════════════════════════════════════════
   FAQ ITEMS — small polish to match the new tab look
   ════════════════════════════════════════════════════════════════════════
   The .module-faq-boxed items inside each tab panel get a slightly
   softer card shadow + smoother accordion animation. */

.module-faq-boxed .module-faq-item {
    transition: box-shadow 0.18s ease, background 0.18s ease;
}
.module-faq-boxed .module-faq-item:hover {
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}
.module-faq-boxed .module-faq-item.is-open {
    box-shadow: 0 4px 14px rgba(232, 163, 23, 0.12);
}

/* Smoother accordion open/close — only animates the answer height */
.module-faq-boxed .module-faq-item .module-faq-a {
    transition: max-height 0.28s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.18s ease;
}


/* ════════════════════════════════════════════════════════════════════════
   FAQ heading "Häufige gestellte Fragen" — nicer treatment on mobile
   ════════════════════════════════════════════════════════════════════════ */

@media (max-width: 720px) {
    .module-tabs-title,
    .module-faq-tabs .module-tabs-title {
        font-size: 1.6rem !important;
        line-height: 1.2 !important;
        margin-bottom: 1.5rem !important;
    }
}
/* value-cards.css */
/* ════════════════════════════════════════════════════════════════════════
   MODULE: Value Cards   [value-cards]
   ════════════════════════════════════════════════════════════════════════
   Edge-to-edge row of color-alternating cards with centered icon, title,
   and description. The section breaks out of any wrapping container so
   it spans the full viewport width.

   Drop-in CSS — no dependency on sections.css. Tokens fall back to
   sensible defaults if --navy / --gold aren't defined.
   ════════════════════════════════════════════════════════════════════════ */

.module-value-cards {
    --vc-cream: #f5efe6;
    --vc-beige: #f5f0e6;
    --vc-navy:  #0B1D3A;
    --vc-red:   #E5594D;
    --vc-gold:  #E8A317;
    --vc-text-dark:  #0B1D3A;
    --vc-text-mid:   #475569;
    --vc-text-light: #ffffff;
    --vc-text-light-muted: rgba(255, 255, 255, 0.85);

    /* Break out of any wrapping container — full viewport width */
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    margin-top: 0;
    margin-bottom: 0;
    box-sizing: border-box;
    overflow: hidden;   /* clip any decoration bleeding past the edge */
}

/* Optional header above the row of cards */
.module-vc-header {
    text-align: center;
    padding: 56px 24px 28px;
    max-width: 980px;
    margin: 0 auto;
}
.module-vc-eyebrow {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--vc-gold);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    margin-bottom: 10px;
}
.module-vc-heading {
    font-size: clamp(1.6rem, 3.2vw, 2.4rem);
    font-weight: 700;
    color: var(--vc-text-dark);
    margin: 0 0 12px;
    line-height: 1.2;
}
.module-vc-subtitle {
    color: var(--vc-text-mid);
    font-size: 1.05rem;
    line-height: 1.6;
    margin: 0;
}

/* ── Grid ─────────────────────────────────────────────────────────────── */
/* ROUND 59 — DEFENSIVE FIX for desktop layout collapse:
   On some sites, the grid was rendering as block-stacked (cards
   one-on-top-of-another) instead of in a row. The cause was either
   a parent CSS rule somewhere overriding `display: grid`, or a
   browser-cached old stylesheet. To make sure this NEVER happens
   again, we:
     1. Use higher specificity (.module-value-cards > .module-vc-grid)
        instead of the bare class — beats any rule with shorter
        selectors that might be loaded later.
     2. Use !important on the layout properties (display + columns)
        so even an inline style or a third-party plugin can't
        override them.
     3. Add a fallback flexbox layout that kicks in if the browser
        somehow refuses to apply grid. */
.module-value-cards > .module-vc-grid,
.module-vc-grid {
    display: grid !important;
    grid-template-columns: repeat(var(--vc-cols, 4), 1fr) !important;
    width: 100%;
    box-sizing: border-box;
}

/* Specificity-boosted selectors so the column count beats any later
   loaded CSS. Both class orderings work because we use the parent
   class as well. */
.module-value-cards.module-vc-cols-2 > .module-vc-grid,
.module-vc-cols-2 .module-vc-grid              { --vc-cols: 2; }
.module-value-cards.module-vc-cols-3 > .module-vc-grid,
.module-vc-cols-3 .module-vc-grid              { --vc-cols: 3; }
.module-value-cards.module-vc-cols-4 > .module-vc-grid,
.module-vc-cols-4 .module-vc-grid              { --vc-cols: 4; }
.module-value-cards.module-vc-cols-5 > .module-vc-grid,
.module-vc-cols-5 .module-vc-grid              { --vc-cols: 5; }

/* Defensive: if grid totally fails to apply (very old browser,
   broken CSS layer, etc.), fall back to flexbox so cards still
   line up horizontally instead of stacking. The @supports rule
   is only honored when grid IS supported, so this acts as a
   no-grid fallback for ancient browsers. */
@supports not (display: grid) {
    .module-vc-grid {
        display: flex !important;
        flex-wrap: wrap;
    }
    .module-vc-grid > .module-vc-card {
        flex: 1 1 calc(100% / var(--vc-cols, 4));
        min-width: 0;
    }
}

/* Gap variants */
.module-vc-gap-edge   .module-vc-grid { gap: 0; }
.module-vc-gap-tight  .module-vc-grid { gap: 4px;  background: #f1f5f9; padding: 4px;  }
.module-vc-gap-normal .module-vc-grid { gap: 16px; padding: 0 24px; }
.module-vc-gap-wide   .module-vc-grid { gap: 32px; padding: 0 32px; }

/* Each card MUST be a grid item taking exactly one column. Defensive
   rule: in case any descendant CSS sets `grid-column: 1/-1` on cards,
   we explicitly say each card takes one column. */
.module-vc-grid > .module-vc-card {
    grid-column: span 1;
    min-width: 0;        /* prevent grid blowout from long words */
}

/* ── Card ─────────────────────────────────────────────────────────────── */
.module-vc-card {
    padding: 56px 32px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 18px;
    color: var(--vc-text-dark);
    transition: transform .25s ease, box-shadow .25s ease;
    position: relative;
    overflow: hidden;
}
/* Linkified card */
a.module-vc-card-link {
    text-decoration: none;
    color: inherit;
}
a.module-vc-card-link:hover { transform: translateY(-2px); }

/* ── Icon ─────────────────────────────────────────────────────────────── */
.module-vc-icon {
    color: var(--vc-gold);
    width: 48px;
    height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.module-vc-icon svg {
    width: 100%;
    height: 100%;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.module-vc-icon-emoji {
    font-size: 2.2rem;
    line-height: 1;
    color: var(--vc-gold);
}

/* ── Title + description ─────────────────────────────────────────────── */
.module-vc-card-title {
    font-size: 1.15rem;
    font-weight: 700;
    margin: 0;
    line-height: 1.3;
    color: inherit;   /* dark on light cards, white on dark cards */
}
.module-vc-card-desc {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--vc-text-mid);
    max-width: 360px;
    margin: 0 auto;
}
.module-vc-card-desc p { margin: 0 0 10px; }
.module-vc-card-desc p:last-child { margin: 0; }
.module-vc-card-desc a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* ── Background variants ─────────────────────────────────────────────── */
.module-vc-bg-cream  { background: var(--vc-cream); color: var(--vc-text-dark); }
.module-vc-bg-beige  { background: var(--vc-beige); color: var(--vc-text-dark); }
.module-vc-bg-navy   { background: var(--vc-navy);  color: var(--vc-text-light); }
.module-vc-bg-red    { background: var(--vc-red);   color: var(--vc-text-light); }
.module-vc-bg-gold   { background: var(--vc-gold);  color: var(--vc-text-dark);  }
.module-vc-bg-white  { background: #ffffff;         color: var(--vc-text-dark);  }
.module-vc-bg-light  { background: #f8fafc;         color: var(--vc-text-dark);  }
.module-vc-bg-gray   { background: #64748b;         color: var(--vc-text-light); }
.module-vc-bg-green  { background: #43A047;         color: var(--vc-text-light); }
.module-vc-bg-blue   { background: #1565C0;         color: var(--vc-text-light); }

/* ── Round 53: AUTO-CONTRAST helper classes ────────────────────────────
   Applied alongside the card's bg class. The PHP renderer measures
   the background's perceived brightness and adds either:
      .module-vc-is-dark   (text becomes white)
      .module-vc-is-light  (text stays dark)
   This is what makes CUSTOM HEX backgrounds get the right text
   color even when there's no per-color CSS class for them.
   The rules below DON'T fire when the user has set an explicit
   text-color via inline style — that wins because of CSS specificity
   (inline style beats class). */
.module-vc-is-dark              { color: #ffffff; }
.module-vc-is-dark .module-vc-card-title { color: #ffffff; }
.module-vc-is-dark .module-vc-card-desc  { color: rgba(255, 255, 255, 0.85); }

.module-vc-is-light             { color: var(--vc-text-dark); }
.module-vc-is-light .module-vc-card-title { color: var(--vc-text-dark); }
.module-vc-is-light .module-vc-card-desc  { color: var(--vc-text-mid); }

/* On dark cards (whether named-class or auto-contrast), description
   text uses the muted-light variant for readability. */
.module-vc-bg-navy  .module-vc-card-desc,
.module-vc-bg-red   .module-vc-card-desc,
.module-vc-bg-gray  .module-vc-card-desc,
.module-vc-bg-green .module-vc-card-desc,
.module-vc-bg-blue  .module-vc-card-desc {
    color: var(--vc-text-light-muted);
}

/* When the card has an explicit inline `color:` style (text_color
   override), the inline rule already wins — but for the description
   block (which reassigns its own color), we make sure it inherits
   from the card. CSS specificity: inline style > class, but `inherit`
   propagates from the inline-styled parent down to the desc. */
.module-vc-card[style*="color"] .module-vc-card-title,
.module-vc-card[style*="color"] .module-vc-card-desc {
    color: inherit;
}

/* On dark cards, the title is white (override .card-title color: inherit
   doesn't need an override — inherit from the card's color above which
   is already white on those backgrounds — kept here for clarity). */

/* Hover effect — subtle lift on linked cards */
a.module-vc-card-link:hover .module-vc-icon {
    transform: scale(1.06);
    transition: transform .25s ease;
}

/* ── Responsive collapse ─────────────────────────────────────────────── */
/* Tablet: collapse 4-col / 5-col → 2-col.
   These selectors match the high-specificity ones at the top of this
   file so they reliably override the desktop column count. */
@media (max-width: 960px) {
    .module-value-cards.module-vc-cols-4 > .module-vc-grid,
    .module-vc-cols-4 .module-vc-grid,
    .module-value-cards.module-vc-cols-5 > .module-vc-grid,
    .module-vc-cols-5 .module-vc-grid {
        --vc-cols: 2;
    }
    .module-value-cards.module-vc-cols-3 > .module-vc-grid,
    .module-vc-cols-3 .module-vc-grid {
        --vc-cols: 2;
    }
    .module-vc-card { padding: 44px 24px; }
}

/* Phone: stack to single column */
@media (max-width: 600px) {
    .module-value-cards.module-vc-cols-2 > .module-vc-grid,
    .module-vc-cols-2 .module-vc-grid,
    .module-value-cards.module-vc-cols-3 > .module-vc-grid,
    .module-vc-cols-3 .module-vc-grid,
    .module-value-cards.module-vc-cols-4 > .module-vc-grid,
    .module-vc-cols-4 .module-vc-grid,
    .module-value-cards.module-vc-cols-5 > .module-vc-grid,
    .module-vc-cols-5 .module-vc-grid {
        --vc-cols: 1;
    }
    .module-vc-card { padding: 36px 20px; gap: 14px; }
    .module-vc-icon { width: 40px; height: 40px; }
    .module-vc-card-title { font-size: 1.05rem; }
    .module-vc-card-desc  { font-size: 0.9rem; }
    .module-vc-header { padding: 36px 20px 20px; }
}
/* transport-order.css */
/* ════════════════════════════════════════════════════════════════════════
   MODULE: Transport Order Form   [transport-order]
   ════════════════════════════════════════════════════════════════════════
   Multi-section transport order form with light cyan background, two-
   column field layout, dark navy heading, red eyebrow, teal submit button.
   ════════════════════════════════════════════════════════════════════════ */

.module-transport-order {
    --to-cyan:        #dff1fb;     /* page background — light cyan */
    --to-navy:        #0B1D3A;     /* heading + labels */
    --to-red:         #E5594D;     /* eyebrow + required asterisks */
    --to-teal:        #1AAD9B;     /* submit button */
    --to-teal-hover:  #169888;
    --to-text-mid:    #475569;
    --to-text-muted:  #64748b;
    --to-input-bg:    #ffffff;
    --to-input-border: #cdd9e1;
    --to-input-focus:  #1AAD9B;
    --to-section-rule: #b5cad6;

    /* Break out of any wrapping container — full viewport width */
    width: 100vw;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    padding: 64px 24px;
    box-sizing: border-box;
}

.module-to-container {
    max-width: 760px;
    margin: 0 auto;
}

/* ── Header ─────────────────────────────────────────────────────────── */
.module-to-header {
    text-align: center;
    margin-bottom: 28px;
}
.module-to-eyebrow {
    color: var(--to-red);
    font-style: italic;
    font-weight: 600;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    margin-bottom: 8px;
}
.module-to-heading {
    color: var(--to-navy);
    font-weight: 700;
    font-size: clamp(1.5rem, 3vw, 2rem);
    line-height: 1.25;
    margin: 0 0 8px;
}
.module-to-subtitle {
    color: var(--to-text-mid);
    font-size: 1rem;
    margin: 8px 0 0;
}

/* ── Banner (success / error after submit) ──────────────────────────── */
.module-to-banner {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 14px 18px;
    border-radius: 8px;
    font-size: 0.95rem;
    margin: 20px 0 24px;
    line-height: 1.5;
}
.module-to-banner-ok {
    background: #d1fae5;
    color: #065f46;
    border: 1px solid #6ee7b7;
}
.module-to-banner-err {
    background: #fee2e2;
    color: #991b1b;
    border: 1px solid #fca5a5;
}
.module-to-banner svg { flex-shrink: 0; margin-top: 2px; }

/* ── Form base ──────────────────────────────────────────────────────── */
.module-to-form {
    width: 100%;
}

.module-to-section-label {
    color: var(--to-navy);
    font-weight: 700;
    font-size: 1.02rem;
    margin: 24px 0 12px;
    padding-top: 16px;
    border-top: 1px solid var(--to-section-rule);
    letter-spacing: 0.01em;
}
.module-to-section-label:first-of-type {
    margin-top: 8px;
}

/* Two-column row that collapses to single on mobile */
.module-to-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-bottom: 12px;
}

/* Each field — label + input/textarea */
.module-to-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 12px;
}
.module-to-field-full {
    grid-column: 1 / -1;
    margin-bottom: 14px;
}
.module-to-field label {
    color: var(--to-text-muted);
    font-size: 0.78rem;
    font-weight: 500;
    line-height: 1.3;
}
.module-to-field label .req {
    color: var(--to-red);
    font-weight: 700;
}

.module-to-field input,
.module-to-field textarea {
    background: var(--to-input-bg);
    border: 1px solid var(--to-input-border);
    border-radius: 6px;
    padding: 10px 12px;
    font-size: 0.95rem;
    color: var(--to-navy);
    font-family: inherit;
    transition: border-color .15s ease, box-shadow .15s ease;
    width: 100%;
    box-sizing: border-box;
}
.module-to-field textarea {
    resize: vertical;
    min-height: 120px;
    line-height: 1.55;
}
.module-to-field input::placeholder,
.module-to-field textarea::placeholder {
    color: #b0bdc8;
}
.module-to-field input:focus,
.module-to-field textarea:focus {
    outline: 0;
    border-color: var(--to-input-focus);
    box-shadow: 0 0 0 3px rgba(26, 173, 155, 0.18);
}

/* Honeypot — hidden from real users, visible to bots */
.module-to-honeypot {
    position: absolute;
    left: -9999px;
    top: -9999px;
    height: 0;
    width: 0;
    overflow: hidden;
}

/* ── Submit button ──────────────────────────────────────────────────── */
.module-to-actions {
    margin-top: 18px;
    display: flex;
    justify-content: flex-start;
}
.module-to-submit {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: var(--to-teal);
    color: #ffffff;
    border: 0;
    border-radius: 6px;
    padding: 12px 22px;
    font-size: 0.92rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    transition: background .15s ease, transform .12s ease;
    box-shadow: 0 1px 2px rgba(0,0,0,0.06);
    letter-spacing: 0.02em;
}
.module-to-submit:hover {
    background: var(--to-teal-hover);
}
.module-to-submit:active {
    transform: translateY(1px);
}
.module-to-submit-tick {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    background: rgba(255, 255, 255, 0.22);
    border-radius: 4px;
    color: #fff;
}

/* ── Responsive ─────────────────────────────────────────────────────── */
@media (max-width: 600px) {
    .module-transport-order {
        padding: 40px 16px;
    }
    .module-to-row {
        grid-template-columns: 1fr;
        gap: 0;
    }
    .module-to-heading {
        font-size: 1.35rem;
    }
}
/* mobile-polish.css */
/* ════════════════════════════════════════════════════════════════════════
   TransLog — Mobile Polish v2   (round 55)
   ────────────────────────────────────────────────────────────────────────
   Loaded AFTER style.css and sections.css. All rules wrapped in media
   queries — desktop is unaffected.

   Replaces round 54's mobile-polish.css with a SAFER carousel approach:
     • v1 used a CSS grid hack on .module-carousel-viewport — that
       broke slide rendering on some viewports (image disappeared,
       leaving only nav buttons + dots floating in white space).
     • v2 keeps the original `position: absolute` for prev/next and
       just hides them on phones (swipe + dots are enough).

   Also new in v2:
     • Mobile language switcher next to the hamburger button (matches
       the user's screenshot mockup with the red arrow pointing there).
     • Top-bar language pill is hidden on phones — it now lives in
       the header bar itself, where it actually fits.

   Three areas covered:
     1) Carousel — phone + tablet polish (without breaking the track)
     2) Top contact bar — clean wrapping, lang switcher moved
     3) Mobile slide-out menu — animations + dim backdrop
   ════════════════════════════════════════════════════════════════════════ */


/* ════════════════════════════════════════════════════════════════
   1) CAROUSEL — phones (≤ 640px) — PRO mobile redesign (round 57)
   ════════════════════════════════════════════════════════════════
   Previous attempt didn't beat the inline `--carousel-visible: 3`
   that Carousel.php writes onto the <section>. Inline custom
   properties beat regular CSS rules, so we need `!important`.

   Design goals (Apple App Store / Instagram-style mobile carousel):
     • ONE main card centered on screen, ~88% of viewport width
     • A small PEEK of the next card on the right (visual hint to swipe)
     • Image keeps its 4:3 ratio, full-width inside the card
     • Caption sits IN the bottom-left of the image, transparent gradient
       background for readability — does NOT overlap the gold arrow
     • Gold "go" arrow in the top-right corner (only when the slide
       has a link), out of caption's way
     • Prev/next nav buttons hidden on phones (swipe + dots are enough)
     • Bigger gold dots with smooth transitions
   ════════════════════════════════════════════════════════════════ */

@media (max-width: 640px) {
    /* ── Force 1 visible slide. !important is REQUIRED because
       Carousel.php writes `style="--carousel-visible: 3"` directly
       on the <section>, and inline custom properties win over
       regular CSS rules. !important on the rule beats inline styles. ── */
    .module-carousel,
    .module-carousel-visible-1,
    .module-carousel-visible-2,
    .module-carousel-visible-3,
    .module-carousel-visible-4 {
        --carousel-visible: 1 !important;
        --car-gap: 14px !important;
    }

    /* Slim down the carousel header for phones */
    .module-carousel-header {
        margin-bottom: 22px;
    }
    .module-carousel-eyebrow {
        font-size: 0.74rem;
        letter-spacing: 0.16em;
    }
    .module-carousel-heading {
        font-size: 1.5rem;
        line-height: 1.2;
        max-width: 100%;
        padding: 0 16px;
    }

    /* ── Track: small left padding, RIGHT padding shows the peek ── */
    .module-carousel-track {
        padding: 4px 36px 12px 16px;   /* 36px right reveals next-card peek */
        gap: 14px;
        scroll-padding-left: 16px;
    }

    /* ── Slide: take ~88% of the viewport so the next card peeks ──
       Override the calc()-based formula entirely with !important.
       100% would fill the whole track; ~88% leaves a 12% peek. */
    .module-carousel-slide {
        width: 88% !important;
        scroll-snap-align: start;
    }

    /* The slide inner box — proper rounding and shadow */
    .module-carousel-slide-image .module-carousel-slide-inner {
        aspect-ratio: 4 / 3;
        border-radius: 14px;
        box-shadow: 0 8px 24px rgba(15, 23, 42, 0.16),
                    0 2px 4px rgba(15, 23, 42, 0.08);
    }

    /* ── Caption: bottom-left strip with gradient background.
          NOT a separate white pill — the original design had it as
          a pill that floated above the image, but on a small mobile
          card that fights the gold arrow for the bottom corners.
          A subtle gradient overlay reads better. ── */
    .module-carousel-caption {
        left: 0;
        right: 0;
        bottom: 0;
        background: linear-gradient(to top,
                    rgba(11, 29, 58, 0.92) 0%,
                    rgba(11, 29, 58, 0.78) 60%,
                    rgba(11, 29, 58, 0) 100%);
        padding: 50px 18px 16px;       /* big top padding for the gradient fade */
        border-radius: 0 0 14px 14px;
        box-shadow: none;
        pointer-events: none;
    }
    .module-carousel-caption-label {
        color: #FFC966;                /* lighter gold against navy */
        font-size: 0.72rem;
        font-style: italic;
        font-weight: 600;
        letter-spacing: 0.04em;
        margin-bottom: 4px;
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
    }
    .module-carousel-caption-title {
        color: #ffffff;
        font-size: 1.05rem;
        font-weight: 700;
        line-height: 1.25;
        text-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
        /* Clamp very long titles to 2 lines */
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    /* ── Gold arrow in top-right corner (only when slide has a link) ── */
    .module-carousel-arrow {
        top: 14px;
        right: 14px;
        bottom: auto;
        left: auto;
        width: 44px;
        height: 44px;
        background: var(--car-gold, #E8A317);
        color: var(--car-blue, #0B1D3A);
        box-shadow: 0 4px 12px rgba(232, 163, 23, 0.45),
                    0 0 0 3px rgba(255, 255, 255, 0.55);
        z-index: 2;
    }
    .module-carousel-arrow svg {
        width: 20px;
        height: 20px;
    }

    /* ── Hide prev/next nav buttons — swipe handles navigation ── */
    .module-carousel-prev,
    .module-carousel-next {
        display: none !important;
    }

    /* ── Dots: bigger, more elegant ── */
    .module-carousel-dots {
        margin-top: 22px;
        gap: 8px;
    }
    .module-carousel-dot {
        width: 9px;
        height: 9px;
        background: #cbd5e1;
        transition: background 0.18s ease, width 0.22s ease;
    }
    .module-carousel-dot.is-active {
        background: var(--car-gold, #E8A317);
        width: 28px;
        border-radius: 5px;
    }
}

/* Very narrow phones (≤ 380px): keep the same design but tighter */
@media (max-width: 380px) {
    .module-carousel-track {
        padding: 4px 28px 12px 12px;
    }
    .module-carousel-slide {
        width: 90% !important;
    }
    .module-carousel-heading {
        font-size: 1.35rem;
    }
    .module-carousel-caption-title {
        font-size: 0.98rem;
    }
}

/* Tablet (641–900px): keep the desktop layout BUT pull arrows + caption
   inward slightly so they don't overlap the slide images on narrower
   viewports (the screenshot at 820px showed everything working — these
   tweaks just make the medium tablet width even cleaner). */
@media (min-width: 641px) and (max-width: 900px) {
    .module-carousel-prev { left: 6px; }
    .module-carousel-next { right: 6px; }
    .module-carousel-caption {
        left: 14px;
        right: 64px;
        padding: 11px 14px;
    }
    .module-carousel-caption-title {
        font-size: 0.95rem;
    }
    .module-carousel-arrow {
        width: 42px;
        height: 42px;
    }
}


/* ════════════════════════════════════════════════════════════════
   2) MOBILE LANGUAGE SWITCHER — moved into .header-inner
   ════════════════════════════════════════════════════════════════
   The header.php file (round-55 update) now has TWO copies of the
   flag/lang switcher:
     • Inside .top-bar-right.top-bar-right-desktop  → desktop only
     • Inside .header-inner > .lang-switcher-mobile → mobile only
   The CSS below handles which one is visible at each breakpoint.

   Round 56: the mobile copy now uses flagDropdownHTML() which
   renders a single-pill trigger + popup panel. Styled below.
   ════════════════════════════════════════════════════════════════ */

/* Default (desktop): hide the mobile copy entirely */
.lang-switcher-mobile {
    display: none;
}

/* ── Round 56: PRO Lang Dropdown ── */
/* Universal styles (works on any background; specifics for mobile
   header bar overrides are below in the @media block). */

.lang-dropdown {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.lang-dd-trigger {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 10px;
    border: 1px solid var(--gray-200, #e2e8f0);
    background: #fff;
    color: var(--gray-700, #334155);
    border-radius: 6px;
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
    line-height: 1;
}
.lang-dd-trigger:hover:not(:disabled) {
    background: var(--gray-50, #f8fafc);
    border-color: var(--gray-300, #cbd5e1);
}
.lang-dd-trigger:focus-visible {
    outline: 0;
    border-color: var(--gold, #E8A317);
    box-shadow: 0 0 0 3px rgba(232, 163, 23, 0.18);
}
.lang-dd-trigger:disabled {
    cursor: default;
    opacity: 0.85;
}
.lang-dd-trigger img {
    width: 20px;
    height: 14px;
    border-radius: 2px;
    object-fit: cover;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15);
    flex-shrink: 0;
}
.lang-dd-code {
    letter-spacing: 0.04em;
}
.lang-dd-caret {
    font-size: 0.7rem;
    line-height: 1;
    margin-left: 2px;
    opacity: 0.6;
    transition: transform 0.18s ease, opacity 0.15s ease;
}
.lang-dropdown.open .lang-dd-caret {
    transform: rotate(180deg);
    opacity: 1;
}
.lang-dropdown.open .lang-dd-trigger {
    border-color: var(--gold, #E8A317);
    background: rgba(232, 163, 23, 0.06);
    color: var(--navy, #0B1D3A);
}

/* The popup panel */
.lang-dd-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 200px;
    background: #fff;
    border: 1px solid var(--gray-200, #e2e8f0);
    border-radius: 10px;
    box-shadow: 0 12px 32px rgba(15, 23, 42, 0.18);
    padding: 6px;
    z-index: 1100;          /* above sticky header (1000) */
    /* Animation in */
    opacity: 0;
    transform: translateY(-4px) scale(0.98);
    transform-origin: top right;
    transition: opacity 0.18s ease, transform 0.18s ease;
    pointer-events: none;
}
.lang-dropdown.open .lang-dd-panel {
    opacity: 1;
    transform: translateY(0) scale(1);
    pointer-events: auto;
}
/* When `hidden` attribute is present (initial state), block layout */
.lang-dd-panel[hidden] {
    display: none;
}
.lang-dropdown.open .lang-dd-panel[hidden] {
    /* JS removes the hidden attr on open, but covering edge cases */
    display: block;
}
.lang-dd-panel-title {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--gray-500, #64748b);
    padding: 8px 10px 6px;
    margin-bottom: 2px;
    border-bottom: 1px solid #f1f5f9;
}

.lang-dd-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 6px;
    text-decoration: none;
    color: var(--gray-700, #334155);
    font-size: 0.86rem;
    transition: background 0.12s ease, color 0.12s ease;
}
.lang-dd-row:hover {
    background: var(--gray-50, #f8fafc);
    color: var(--navy, #0B1D3A);
}
.lang-dd-row.is-active {
    background: rgba(232, 163, 23, 0.10);
    color: var(--gold, #E8A317);
    font-weight: 600;
}
.lang-dd-row img {
    width: 22px;
    height: 16px;
    border-radius: 2px;
    object-fit: cover;
    flex-shrink: 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.lang-dd-row-name {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.lang-dd-row-code {
    font-family: ui-monospace, monospace;
    font-size: 0.72rem;
    color: var(--gray-400, #94a3b8);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.lang-dd-row.is-active .lang-dd-row-code {
    color: var(--gold, #E8A317);
}
.lang-dd-row-tick {
    color: var(--gold, #E8A317);
    font-weight: 700;
    margin-left: 4px;
}


@media (max-width: 720px) {
    /* Hide the top-bar copy on phones (it had bad wrapping behavior) */
    .top-bar-right-desktop {
        display: none;
    }

    /* Show the mobile copy in the white header bar, just before the
       hamburger.

       CRITICAL: `margin-left: auto` pushes this all the way to the
       right of the flex row, so it groups with the hamburger.
       Without this, justify-content: space-between on .header-inner
       would distribute logo / DE / ☰ evenly, leaving the DE pill
       stranded in the middle. */
    .lang-switcher-mobile {
        display: inline-flex;
        align-items: center;
        margin-left: auto;
        margin-right: 4px;
    }

    /* Mobile-specific tightening of the dropdown trigger */
    .lang-switcher-mobile .lang-dd-trigger {
        padding: 6px 8px;
        font-size: 0.74rem;
        gap: 5px;
    }
    .lang-switcher-mobile .lang-dd-trigger img {
        width: 18px;
        height: 13px;
    }

    /* Panel positioning on mobile — anchor under the trigger,
       align right edge so it doesn't overflow off-screen. */
    .lang-switcher-mobile .lang-dd-panel {
        right: -4px;          /* nudge so the panel hugs the screen edge */
        min-width: 180px;
        max-width: calc(100vw - 24px);
    }
}


/* ════════════════════════════════════════════════════════════════
   3) HEADER + TOP CONTACT BAR — phones (≤ 720px)
   ════════════════════════════════════════════════════════════════
   With the lang switcher now moved out of the top bar, the top bar
   is just phone + email. Keep them centered and tightly spaced.
   ════════════════════════════════════════════════════════════════ */

@media (max-width: 720px) {
    .top-bar {
        padding: 6px 0;
        font-size: 0.75rem;
    }
    .top-bar .container {
        padding-left: 14px;
        padding-right: 14px;
        gap: 6px 14px;
        justify-content: center;    /* center phone + email */
    }
    .top-bar-left {
        gap: 12px;
        flex-wrap: wrap;
        justify-content: center;
    }
    .top-bar-left a {
        font-size: 0.78rem;
    }

    /* Header bar — tighter, but make room for the new mobile lang pill */
    .header-inner {
        padding: 0 12px;
        height: 64px;
        gap: 8px;
    }
    .logo {
        font-size: 1.15rem;
        flex: 0 1 auto;
        min-width: 0;
        overflow: hidden;
    }
    .logo img {
        max-height: 36px;
        width: auto;
    }
    /* Hide logo sub-tagline on phones */
    .logo small,
    .logo .logo-tagline,
    .logo-sub,
    .logo .tagline {
        display: none;
    }

    /* Hamburger: meatier tap target */
    .hamburger {
        padding: 8px;
        margin-left: 0;
    }
    .hamburger span {
        width: 22px;
        transition: transform 0.22s ease, opacity 0.15s ease;
    }
}

/* Very narrow phones (≤ 380px): drop the email entirely. */
@media (max-width: 380px) {
    .top-bar-left a:nth-of-type(2),
    .top-bar-left .top-bar-email {
        display: none;
    }

    /* Even tighter dropdown trigger — keep only the flag image,
       drop the "DE"/"EN" code label so the pill doesn't crowd the
       hamburger. */
    .lang-switcher-mobile .lang-dd-trigger {
        padding: 5px 7px;
    }
    .lang-switcher-mobile .lang-dd-code {
        display: none;
    }
    .header-inner {
        padding: 0 10px;
    }
}


/* ════════════════════════════════════════════════════════════════
   4) MOBILE MENU — slide-down + backdrop + polished items
   ════════════════════════════════════════════════════════════════
   (Same as round 54 — this part wasn't broken, just kept here so
   the patch is self-contained.)
   ════════════════════════════════════════════════════════════════ */

@media (max-width: 992px) {
    /* Animated dropdown panel.
       CRITICAL: must stay `position: absolute` (matching the original
       style.css mobile rule) so the nav DOES NOT take space inside
       .header-inner's flex layout. Otherwise it pushes other items
       (logo, lang pill, hamburger) out of their proper positions.
       The animation comes from max-height + opacity, not from
       changing display. */
    .main-nav {
        position: absolute;
        top: 64px;              /* below the (mobile) sticky header */
        left: 0;
        right: 0;
        background: var(--white);
        max-height: 0;
        opacity: 0;
        overflow: hidden;
        padding: 0 16px;
        display: flex;
        flex-direction: column;
        gap: 2px;
        pointer-events: none;
        transition: max-height 0.28s ease, opacity 0.18s ease, padding 0.28s ease;
        border-top: 1px solid #f1f5f9;
        box-shadow: 0 12px 24px rgba(15, 23, 42, 0.08);
        z-index: 1000;
    }
    .main-nav.open {
        max-height: 80vh;
        opacity: 1;
        padding: 12px 16px 18px;
        overflow-y: auto;
        pointer-events: auto;
    }

    /* Backdrop — only when body has .nav-open class */
    body.nav-open::before {
        content: '';
        position: fixed;
        inset: 0;
        top: 64px;
        background: rgba(11, 29, 58, 0.35);
        z-index: 999;
        backdrop-filter: blur(2px);
        -webkit-backdrop-filter: blur(2px);
        animation: tl-nav-backdrop-fade 0.18s ease both;
        pointer-events: auto;
    }
    @keyframes tl-nav-backdrop-fade {
        from { opacity: 0; }
        to   { opacity: 1; }
    }

    /* Top-level items */
    .main-nav a,
    .main-nav .nav-parent {
        padding: 13px 14px;
        font-size: 0.95rem;
        font-weight: 500;
        border-radius: 8px;
        border-left: 3px solid transparent;
        transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
    }
    .main-nav a:hover,
    .main-nav .nav-parent:hover {
        background: #f8fafc;
        color: var(--navy);
        border-left-color: var(--gold);
    }
    .main-nav a.active,
    .main-nav .nav-parent.active {
        background: var(--gold);
        color: #fff;
        border-left-color: var(--gold);
    }
    .main-nav a.active::after,
    .main-nav .nav-parent.active::after {
        display: none;
    }

    /* Submenu */
    .main-nav .nav-item.has-submenu.open > .submenu {
        max-height: 600px;
        padding: 4px 0 8px 14px;
        margin: 2px 0 6px 14px;
        border-left: 2px solid #e2e8f0;
    }
    .submenu a {
        padding: 10px 14px;
        font-size: 0.86rem;
        color: var(--gray-500);
        border-left: 0;
    }
    .submenu a:hover {
        background: #f1f5f9;
        color: var(--navy);
    }
    .submenu a.active {
        background: rgba(232, 163, 23, 0.12);
        color: var(--gold);
    }

    /* Caret */
    .submenu-caret {
        font-size: 0.7rem;
        opacity: 0.6;
        margin-left: auto;
        transition: transform 0.2s ease, opacity 0.15s ease;
    }
    .main-nav .nav-item.has-submenu.open > .nav-parent .submenu-caret {
        transform: rotate(180deg);
        opacity: 1;
    }
}
/* tlmap.css */
/* ════════════════════════════════════════════════════════════════════════
   TransLog — Maps   (round 64)
   ────────────────────────────────────────────────────────────────────────
   Styles for tracking maps + business location maps using Leaflet.
   Site palette: --gold #E8A317  --navy #0B1D3A  --cream #f5efe6
   ════════════════════════════════════════════════════════════════════════ */

/* ── Map container (shared) ─────────────────────────────────────── */
.tlmap-tracking,
.tlmap-business {
    width: 100%;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.10), 0 2px 6px rgba(15, 23, 42, 0.06);
    background: #f1f5f9;
    position: relative;
    z-index: 0;          /* keep below sticky header */
}
.tlmap-tracking { min-height: 360px; }
.tlmap-business { min-height: 380px; }

/* Loading state */
.tlmap-loading {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: #f1f5f9;
    color: #475569;
    gap: 14px;
    z-index: 1;
}
.tlmap-loading-spinner {
    width: 36px;
    height: 36px;
    border: 3px solid #e2e8f0;
    border-top-color: #E8A317;
    border-radius: 50%;
    animation: tlmap-spin 0.8s linear infinite;
}
@keyframes tlmap-spin {
    to { transform: rotate(360deg); }
}
.tlmap-loading-text {
    font-size: 0.9rem;
    font-weight: 500;
}

/* Error state */
.tlmap-error {
    padding: 30px 24px;
    text-align: center;
    color: #b91c1c;
    background: #fef2f2;
    border-radius: 14px;
    font-size: 0.92rem;
}

/* Custom pins — kill the default Leaflet shadow on divIcons */
.tlmap-pin {
    background: none !important;
    border: none !important;
    filter: drop-shadow(0 4px 6px rgba(15, 23, 42, 0.25));
}
.tlmap-pin svg {
    display: block;
}

/* Logo pin (used on business maps when admin enables "show logo on pin") */
.tlmap-logo-pin {
    position: relative;
    width: 56px;
    height: 68px;
    pointer-events: auto;
}
.tlmap-logo-pin-circle {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid #E8A317;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 6px 14px rgba(15, 23, 42, 0.25);
    position: relative;
    z-index: 2;
}
.tlmap-logo-pin-circle img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 6px;
    box-sizing: border-box;
}
.tlmap-logo-pin-stem {
    position: absolute;
    left: 50%;
    bottom: 0;
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-top: 14px solid #E8A317;
    z-index: 1;
}

/* ── Popup card (Leaflet popup contents) ───────────────────────── */
.leaflet-popup-content-wrapper {
    border-radius: 10px !important;
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.18) !important;
}
.leaflet-popup-content {
    margin: 12px 16px !important;
    font-family: inherit;
    font-size: 0.88rem;
    line-height: 1.5;
}
.tlmap-popup-card {
    min-width: 220px;
}
.tlmap-popup-name {
    font-size: 1rem;
    font-weight: 700;
    color: #0B1D3A;
    margin-bottom: 8px;
    padding-bottom: 8px;
    border-bottom: 1px solid #f1f5f9;
}
.tlmap-popup-row {
    margin: 4px 0;
    color: #334155;
}
.tlmap-popup-row a {
    color: #0B1D3A;
    text-decoration: none;
}
.tlmap-popup-row a:hover {
    color: #E8A317;
    text-decoration: underline;
}
.tlmap-popup-directions {
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid #f1f5f9;
}
.tlmap-popup-directions a {
    color: #E8A317;
    font-weight: 600;
}

/* ── Tracking map specific — header strip above the map ─────── */
.tlmap-tracking-wrap {
    margin: 32px 0;
}
.tlmap-tracking-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    color: #0B1D3A;
}
.tlmap-tracking-header h3 {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
}
.tlmap-tracking-legend {
    display: flex;
    gap: 16px;
    margin-top: 10px;
    flex-wrap: wrap;
    font-size: 0.82rem;
    color: #475569;
}
.tlmap-tracking-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.tlmap-tracking-legend-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    flex-shrink: 0;
}
.tlmap-tracking-legend-dot.is-sender   { background: #E8A317; }
.tlmap-tracking-legend-dot.is-receiver { background: #0B1D3A; border: 2px solid #E8A317; }
.tlmap-tracking-legend-dot.is-event    { background: #fff; border: 2px solid #E8A317; }
.tlmap-tracking-legend-line {
    display: inline-block;
    width: 24px;
    height: 0;
    border-top: 2px dashed #E8A317;
}

/* ── Business map module wrapper — styling for the section ─── */
.module-business-map {
    padding: 60px 0;
}
.module-business-map-header {
    text-align: center;
    max-width: 720px;
    margin: 0 auto 32px;
    padding: 0 20px;
}
.module-business-map-eyebrow {
    color: #E8A317;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
    font-style: italic;
}
.module-business-map-heading {
    color: #0B1D3A;
    font-size: 2rem;
    font-weight: 800;
    margin: 0 0 12px;
    line-height: 1.2;
}
.module-business-map-subtitle {
    color: #475569;
    font-size: 1rem;
    line-height: 1.6;
    margin: 0;
}
.module-business-map-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* ── Mobile polish ───────────────────────────────────────────── */
@media (max-width: 720px) {
    .tlmap-tracking { min-height: 280px; }
    .tlmap-business { min-height: 320px; }
    .tlmap-tracking-wrap { margin: 24px 0; }
    .tlmap-tracking-legend { font-size: 0.78rem; gap: 12px; }
    .module-business-map { padding: 40px 0; }
    .module-business-map-heading { font-size: 1.5rem; }
}
/* tlmap-route.css */
/* ════════════════════════════════════════════════════════════════════════
   TransLog — Route Maps   (round 66)
   ────────────────────────────────────────────────────────────────────────
   Extends tlmap.css with the route + truck-pin + click-to-pick styles.
   ════════════════════════════════════════════════════════════════════════ */


/* ── Route map container ─────────────────────────────────────── */
.tlmap-route {
    width: 100%;
    min-height: 380px;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.10), 0 2px 6px rgba(15, 23, 42, 0.06);
    background: #f1f5f9;
    position: relative;
    z-index: 0;
}

/* ── Truck pin — animated pulse ──────────────────────────────── */
.tlmap-truck-pin {
    position: relative;
    width: 44px;
    height: 44px;
    pointer-events: auto;
}
.tlmap-truck-pin-inner {
    position: relative;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #fff;
    border: 3px solid #E8A317;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.25);
    z-index: 2;
}
.tlmap-truck-pin-pulse {
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    background: rgba(232, 163, 23, 0.4);
    animation: tlmap-truck-pulse 2s ease-out infinite;
    z-index: 1;
}
@keyframes tlmap-truck-pulse {
    0%   { transform: scale(0.85); opacity: 0.7; }
    70%  { transform: scale(1.55); opacity: 0;   }
    100% { transform: scale(1.55); opacity: 0;   }
}


/* ── Admin: click-to-pick map ─────────────────────────────────── */
.tlmap-pick {
    width: 100%;
    height: 320px;
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid #cbd5e1;
    background: #f1f5f9;
    cursor: crosshair;
}
.tlmap-pick-wrap {
    margin: 8px 0 16px;
}
.tlmap-pick-row {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.tlmap-pick-coords {
    flex: 1;
    min-width: 0;
    padding: 7px 10px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 6px;
    font-family: ui-monospace, monospace;
    font-size: 0.82rem;
    color: #0B1D3A;
}
.tlmap-pick-coords:empty::before {
    content: 'Klicken Sie auf die Karte, um eine Position auszuwählen';
    color: #94a3b8;
    font-style: italic;
    font-family: inherit;
}
.tlmap-pick-btn {
    padding: 7px 14px;
    border: 1px solid #cbd5e1;
    background: #fff;
    color: #0B1D3A;
    border-radius: 6px;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
    white-space: nowrap;
}
.tlmap-pick-btn:hover:not(:disabled) {
    background: #f8fafc;
    border-color: #94a3b8;
}
.tlmap-pick-btn:disabled {
    opacity: 0.6;
    cursor: wait;
}
.tlmap-pick-btn-clear {
    color: #b91c1c;
    border-color: #fca5a5;
}
.tlmap-pick-btn-clear:hover:not(:disabled) {
    background: #fef2f2;
    border-color: #ef4444;
}

/* The little title strip above each pick map */
.tlmap-pick-title {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 16px 0 8px;
    color: #0B1D3A;
    font-size: 0.95rem;
    font-weight: 700;
}
.tlmap-pick-title-color {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    flex-shrink: 0;
    border: 2px solid #fff;
    box-shadow: 0 0 0 1px #cbd5e1;
}
.tlmap-pick-title-color.is-sender   { background: #E8A317; }
.tlmap-pick-title-color.is-receiver { background: #0B1D3A; box-shadow: 0 0 0 2px #E8A317; }
.tlmap-pick-title-color.is-truck    { background: #fff; box-shadow: inset 0 0 0 3px #E8A317, 0 0 0 1px #cbd5e1; }


/* ── Section + heading on admin form ─────────────────────────── */
.tlmap-admin-section {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 24px;
    margin: 20px 0;
}
.tlmap-admin-section h3 {
    margin: 0 0 6px;
    font-size: 1.1rem;
    color: #0B1D3A;
}
.tlmap-admin-section p.tlmap-admin-help {
    margin: 0 0 16px;
    color: #64748b;
    font-size: 0.86rem;
    line-height: 1.55;
}

/* Admin: truck info card showing last update */
.tlmap-truck-info {
    display: flex;
    gap: 12px;
    align-items: center;
    padding: 12px 14px;
    background: #fef9e6;
    border-left: 4px solid #E8A317;
    border-radius: 6px;
    margin: 12px 0;
    font-size: 0.86rem;
}
.tlmap-truck-info-icon {
    font-size: 1.4rem;
    flex-shrink: 0;
}
.tlmap-truck-info strong {
    display: block;
    color: #0B1D3A;
    margin-bottom: 2px;
}
.tlmap-truck-info span {
    color: #64748b;
}

/* Sync-from-event button */
.tlmap-sync-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    background: #0B1D3A;
    color: #fff;
    border: 0;
    border-radius: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    margin-top: 8px;
}
.tlmap-sync-btn:hover { background: #1e3a5f; }
.tlmap-sync-btn:disabled { opacity: 0.5; cursor: wait; }


/* ── Public tracking — route info bar above the map ──────────── */
.tlmap-route-info {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
    padding: 14px 18px;
    background: #f8fafc;
    border-radius: 10px;
    margin-bottom: 14px;
    font-size: 0.9rem;
}
.tlmap-route-info-item {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.tlmap-route-info-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #64748b;
}
.tlmap-route-info-value {
    font-weight: 700;
    color: #0B1D3A;
}


/* ── Mobile polish ───────────────────────────────────────────── */
@media (max-width: 720px) {
    .tlmap-route { min-height: 300px; }
    .tlmap-pick  { height: 280px; }
    .tlmap-route-info {
        gap: 14px;
        padding: 10px 12px;
    }
    .tlmap-pick-row {
        flex-direction: column;
        align-items: stretch;
    }
    .tlmap-pick-coords {
        width: 100%;
    }
}


/* ════════════════════════════════════════════════════════════════════════
   Round 67 — auto-movement status panel (admin)
   ════════════════════════════════════════════════════════════════════════ */

.auto-status-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
    margin: 14px 0;
}
.auto-status-cell {
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 10px 12px;
}
.auto-status-label {
    display: block;
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #64748b;
    margin-bottom: 4px;
}
.auto-status-value {
    display: block;
    font-size: 0.92rem;
    font-weight: 600;
    color: #0B1D3A;
}
.auto-status-pill {
    display: inline-block;
    padding: 4px 10px;
    color: #fff;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

/* Progress bar */
.auto-progress-bar {
    width: 100%;
    height: 8px;
    background: #e2e8f0;
    border-radius: 4px;
    overflow: hidden;
    margin: 10px 0 16px;
}
.auto-progress-fill {
    height: 100%;
    background: linear-gradient(90deg, #E8A317 0%, #d4940a 100%);
    transition: width 0.3s ease;
}

/* Action button row */
.auto-action-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 14px;
}
.btn-auto {
    padding: 9px 16px;
    border: 0;
    border-radius: 6px;
    font-size: 0.86rem;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.15s ease, background 0.15s ease;
    white-space: nowrap;
}
.btn-auto:disabled { opacity: 0.5; cursor: wait; }
.btn-auto-start { background: #10b981; color: #fff; }
.btn-auto-start:hover:not(:disabled) { background: #059669; }
.btn-auto-tick  { background: #E8A317; color: #0B1D3A; }
.btn-auto-tick:hover:not(:disabled)  { background: #d4940a; }
.btn-auto-stop  { background: #6b7280; color: #fff; }
.btn-auto-stop:hover:not(:disabled)  { background: #4b5563; }
.btn-auto-reset { background: #fee2e2; color: #b91c1c; border: 1px solid #fca5a5; }
.btn-auto-reset:hover:not(:disabled) { background: #fecaca; }


/* ════════════════════════════════════════════════════════════════════════
   Round 66/67 admin-fix: persistent alert classes
   The admin layout has JS that auto-hides any .alert element after 5s.
   We use these classes for warnings that MUST stay visible (e.g. "Set
   coordinates first").
   ════════════════════════════════════════════════════════════════════════ */

.tlmap-persistent-alert {
    padding: 14px 18px;
    border-radius: 8px;
    margin: 12px 0;
    font-size: 0.92rem;
    line-height: 1.55;
}
.tlmap-persistent-alert strong { display: inline; }
.tlmap-persistent-alert a {
    color: inherit;
    text-decoration: underline;
    font-weight: 600;
}
.tlmap-alert-warning {
    background: #fef3c7;
    border-left: 4px solid #f59e0b;
    color: #78350f;
}
.tlmap-alert-info {
    background: #dbeafe;
    border-left: 4px solid #3b82f6;
    color: #1e3a8a;
}


/* ════════════════════════════════════════════════════════════════════════
   Round 68 — ETA card (public tracking page)
   ════════════════════════════════════════════════════════════════════════ */

.eta-card {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    border: 1px solid #fbbf24;
    border-left: 5px solid #E8A317;
    border-radius: 12px;
    padding: 18px 22px;
    margin: 16px 0 20px;
    box-shadow: 0 4px 12px rgba(232, 163, 23, 0.12);
}
.eta-card-icon {
    font-size: 2rem;
    flex-shrink: 0;
    line-height: 1;
    margin-top: 2px;
}
.eta-card-body {
    flex: 1;
    min-width: 0;
}
.eta-card-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #78350f;
    font-weight: 700;
    margin-bottom: 4px;
}
.eta-card-value {
    font-size: 1.4rem;
    font-weight: 800;
    color: #0B1D3A;
    line-height: 1.2;
}
.eta-card-rel {
    font-size: 0.95rem;
    color: #78350f;
    font-weight: 600;
    margin-top: 2px;
}
.eta-card-disclaimer {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 12px;
    padding: 10px 12px;
    background: rgba(255, 255, 255, 0.6);
    border-radius: 8px;
    font-size: 0.86rem;
    line-height: 1.5;
    color: #57370b;
}
.eta-card-disclaimer-icon {
    flex-shrink: 0;
    font-size: 1rem;
    margin-top: 1px;
}

@media (max-width: 720px) {
    .eta-card { padding: 14px 16px; gap: 12px; }
    .eta-card-icon { font-size: 1.6rem; }
    .eta-card-value { font-size: 1.15rem; }
    .eta-card-rel { font-size: 0.86rem; }
    .eta-card-disclaimer { font-size: 0.8rem; }
}
