/* Fallback-Layout (falls Tailwind-CDN/Config verzögert) */
.max-w-container-max {
    max-width: 1440px;
}

.px-margin-mobile {
    padding-left: 16px;
    padding-right: 16px;
}

@media (min-width: 768px) {
    .md\:px-margin-desktop {
        padding-left: 40px;
        padding-right: 40px;
    }
}

body {
    font-family: Inter, system-ui, -apple-system, sans-serif;
    background-color: #f9f9f9;
    color: #1a1c1c;
}

/* Glasige Topbar über Hero */
.landing-topbar {
    background: rgba(255, 255, 255, 0.14);
    backdrop-filter: blur(20px) saturate(1.4);
    -webkit-backdrop-filter: blur(20px) saturate(1.4);
    border-bottom: 1px solid rgba(255, 255, 255, 0.28);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22);
}

.landing-brand {
    overflow: visible;
}

.landing-brand-text,
.landing-nav-link {
    color: rgba(255, 255, 255, 0.95);
    text-shadow: 0 1px 10px rgba(0, 0, 0, 0.28);
}

.landing-nav-link--active {
    color: #fff;
    border-color: #ff6b00 !important;
}

/* Nach dem Hero: Topbar wird opak, Text wechselt auf dunkel —
   sonst steht weisse Schrift auf hellen Sektionen */
.landing-topbar.is-scrolled {
    background: rgba(249, 249, 249, 0.86);
    border-bottom-color: rgba(26, 28, 28, 0.08);
    box-shadow: 0 1px 12px rgba(26, 28, 28, 0.06);
}

.landing-topbar.is-scrolled .landing-brand-text,
.landing-topbar.is-scrolled .landing-nav-link,
.landing-topbar.is-scrolled #landing-nav-toggle {
    color: #1a1c1c;
    text-shadow: none;
}

.landing-topbar.is-scrolled .landing-nav-link--active {
    color: #a04100;
}

.landing-nav-mobile {
    background: rgba(255, 255, 255, 0.16);
    backdrop-filter: blur(20px) saturate(1.35);
    -webkit-backdrop-filter: blur(20px) saturate(1.35);
}

.landing-nav-mobile a {
    color: rgba(255, 255, 255, 0.95);
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.25);
}

#landing-nav-toggle {
    color: rgba(255, 255, 255, 0.95);
}

.vera-signet {
    display: block;
    flex-shrink: 0;
    object-fit: contain;
    object-position: center;
    max-width: none;
}

.vera-signet--nav {
    height: 2.75rem;
    width: auto;
}

.vera-signet--footer {
    height: 2.5rem;
    width: auto;
}

.vera-signet-app {
    object-fit: contain;
    width: 100%;
    height: 100%;
}

/* Ampel-Badges der Produkt-Tabelle */
.lv-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 4px;
    font-family: 'JetBrains Mono', monospace;
    font-size: 11px;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
.lv-badge--gruen  { background: rgba(30, 142, 62, 0.12);  color: #1e8e3e; }
.lv-badge--gelb   { background: rgba(181, 129, 5, 0.14);  color: #b58105; }
.lv-badge--orange { background: rgba(232, 113, 10, 0.12); color: #e8710a; }
.lv-badge--rot    { background: rgba(217, 48, 37, 0.10);  color: #d93025; }

.blueprint-dots {
    background-image: radial-gradient(#ff6b001a 1px, transparent 1px);
    background-size: 32px 32px;
}

/* Sichtbar bis JS Reveal aktiviert — verhindert leere Seite */
.reveal {
    opacity: 1;
    transform: none;
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
        transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

html.js-ready .reveal:not(.active) {
    opacity: 0;
    transform: translateY(30px);
}

.reveal.active {
    opacity: 1;
    transform: translateY(0);
}

/* Zebra auf dunklem Panel: dezente helle Tönung statt Hellgrau-Block */
.zebra-row:nth-child(even) {
    background-color: rgba(255, 255, 255, 0.04);
}

.landing-hero-bg {
    object-position: 50% 42%;
    opacity: 0.38;
}

.mountain-gradient {
    background: linear-gradient(
        to bottom,
        rgba(249, 249, 249, 0) 0%,
        rgba(249, 249, 249, 0.04) 45%,
        rgba(249, 249, 249, 0.14) 78%,
        rgba(249, 249, 249, 0.28) 100%
    );
}

#scroll-path {
    filter: drop-shadow(0 0 8px rgba(255, 107, 0, 0.35));
    stroke-dasharray: 10000;
    stroke-dashoffset: 10000;
    opacity: 0.55;
}

.svg-container {
    pointer-events: none;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    overflow: hidden;
}

/* Journey-Linie nur auf grossen Screens: auf Mobile wird der Pfad
   durch preserveAspectRatio="none" gestaucht und schneidet durch Inhalte */
@media (max-width: 1023px) {
    .svg-container {
        display: none;
    }
}

.vertical-text {
    writing-mode: vertical-rl;
}

@keyframes spin-slow {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

.animate-spin-slow {
    animation: spin-slow 8s linear infinite;
}

.landing-nav-mobile {
    transform: translateY(-8px);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease, transform 0.25s ease;
}

.landing-nav-mobile.is-open {
    transform: translateY(0);
    opacity: 1;
    pointer-events: auto;
}

@media (prefers-reduced-motion: reduce) {
    html.js-ready .reveal:not(.active),
    .reveal {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .animate-bounce,
    .animate-spin-slow,
    .animate-pulse {
        animation: none !important;
    }

    #scroll-path {
        filter: none;
    }
}
