/*
 * fils.studio -- helles Agentur-Design.
 *
 * Grundhaltung: viel Weissraum, grosse Typografie mit engem Zeichenabstand,
 * Farbe nur als Akzent (Mint -> Lavendel). Karten sind weiss auf Off-White
 * mit einer sehr feinen Kontur statt harter Schatten.
 *
 * Corporate Design: Mint #76E7D2, Lavendel #A77DF5, Anthrazit #1B1D2D,
 * Off-White #FAFBFD.
 */

:root {
    --fs-mint: #76e7d2;
    --fs-lavender: #a77df5;
    --fs-ink: #1b1d2d;
    --fs-paper: #fafbfd;
    --fs-line: rgba(27, 29, 45, 0.1);
    --fs-muted: rgba(27, 29, 45, 0.55);
    --fs-gradient: linear-gradient(100deg, var(--fs-mint), var(--fs-lavender));

    /* Zwei Federn statt linearer/eingebauter Eases ueberall: "smooth" fuer
       groessere Zustandswechsel (Karten, Knoepfe) ohne Ueberschwingen,
       "snappy" fuer kleine, verspielte Wechsel (Ziffern-Tick), die bewusst
       ein kleines Nachfedern zeigen duerfen. */
    --fs-ease-smooth: cubic-bezier(0.16, 1, 0.3, 1);
    --fs-ease-snappy: cubic-bezier(0.34, 1.56, 0.64, 1);
}

body.fils-studio {
    font-family: "Inter", "Segoe UI", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    line-height: 1.6;
}

.fils-studio h1,
.fils-studio h2,
.fils-studio h3 {
    letter-spacing: -0.03em;
    line-height: 1.12;
}

/* --- Navigation --------------------------------------------------------- */

.fils-studio .site-nav {
    background: rgba(250, 251, 253, 0.82);
    backdrop-filter: saturate(180%) blur(14px);
    border-bottom: 1px solid var(--fs-line);
}

.fils-studio .site-nav__inner {
    max-width: 1120px;
    padding: 1rem 1.5rem;
}

.fils-studio .site-nav__brand {
    font-size: 1.2rem;
}

.fils-studio .site-nav__links {
    gap: 1.9rem;
}

.fils-studio .site-nav__link {
    font-size: 0.9rem;
    font-weight: 500;
    opacity: 0.7;
    border-bottom: none !important;
    transition: opacity 0.15s ease;
}

.fils-studio .site-nav__link:hover,
.fils-studio .site-nav__link--active {
    opacity: 1;
}

/* Der letzte Menuepunkt ist in diesem Design die Handlungsaufforderung --
   dadurch braucht die Navigation kein Sonderfeld im Admin: wer den Punkt
   ganz nach hinten sortiert, bekommt automatisch den Button-Look. */
.fils-studio .site-nav__links > .site-nav__item:last-child > .site-nav__link {
    background: var(--fs-ink);
    color: var(--fs-paper) !important;
    padding: 0.6rem 1.15rem;
    border-radius: 999px;
    opacity: 1;
    font-weight: 600;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.fils-studio .site-nav__links > .site-nav__item:last-child > .site-nav__link:hover {
    transform: translateY(-1px);
    box-shadow: 0 10px 22px rgba(27, 29, 45, 0.2);
}

/* Der Pill-Button braucht keinen Unterstrich als "aktiv"-Kennzeichnung --
   der wuerde unter der abgerundeten Form seltsam wirken. Stattdessen ein
   Rahmen in derselben dunklen Farbe wie der Button selbst, der die Pille
   sichtbar umschliesst. */
.fils-studio .site-nav__links > .site-nav__item:last-child > .site-nav__link--active::after {
    content: none;
}

.fils-studio .site-nav__links > .site-nav__item:last-child > .site-nav__link--active {
    box-shadow: 0 0 0 2px var(--fs-ink), 0 0 0 4px var(--fs-paper);
}

/* --- Abschnitts-Rhythmus ------------------------------------------------ */

.fils-studio main > .widget,
.fils-studio main > .wl-widget-frame > .widget {
    /* var(--wl-section-spacing) kommt aus Design > Feinschliff -- der
       clamp() bleibt als Grenze, damit "luftig" auf kleinen Bildschirmen
       nicht ausufert. */
    padding-top: clamp(2.5rem, var(--wl-section-spacing, 4rem), 6.5rem);
    padding-bottom: clamp(2.5rem, var(--wl-section-spacing, 4rem), 6.5rem);
}

.fils-studio .widget-hero-studio { padding-top: clamp(3rem, 8vw, 6.5rem); }
.fils-studio .widget-columns { padding-top: 0; padding-bottom: 0; }

/* --- Karten ------------------------------------------------------------- */

.fils-studio .service-card,
.fils-studio .trust-bar:not(.trust-bar--connected),
.fils-studio .team-card {
    background: #fff;
    border: 1px solid var(--fs-line);
    border-radius: var(--wl-radius, 1rem);
    box-shadow: 0 1px 2px rgba(27, 29, 45, 0.04);
}

.fils-studio .service-card:hover {
    box-shadow: 0 18px 40px rgba(27, 29, 45, 0.1);
}

/* --- Farbe als Akzent --------------------------------------------------- */

.fils-studio .project-grid__link,
.fils-studio .service-card__link {
    color: var(--fs-ink);
}

.fils-studio .process-step__number,
.fils-studio .cta-banner--gradient {
    background: var(--fs-gradient);
}

.fils-studio .hero-studio__highlight {
    background: var(--fs-gradient);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

/* --- Footer ------------------------------------------------------------- */

.fils-studio .site-footer--style-dark {
    background: var(--fs-ink);
    color: var(--fs-paper);
    border-top: none;
}

.fils-studio .site-footer--style-dark a {
    color: var(--fs-paper);
    opacity: 0.7;
}

.fils-studio .site-footer--style-dark a:hover { opacity: 1; }

.fils-studio .wl-credit-bar {
    background: var(--fs-ink);
    color: rgba(250, 251, 253, 0.6);
    border-top: 1px solid rgba(250, 251, 253, 0.12);
}

.fils-studio .wl-credit-bar a { color: rgba(250, 251, 253, 0.85); }

/* --- Zurueck-nach-oben: nutzt den geteilten Verlaufs-Stil aus
   shared-chrome.css unveraendert, kein eigener Override mehr noetig. --- */

/* Der Mint-Lavendel-Verlauf im Footer ist die Hausfarbe von fils.studio und
   bleibt deshalb HIER, im eigenen Design -- nicht in der gemeinsamen
   shared-chrome.css, wo ihn jede Kundenwebsite mitbekommen würde. */
.fils-studio .site-footer--style-accent {
    background: linear-gradient(135deg, #e3f8f3, #f1eafd);
    border-top: 1px solid rgba(118, 231, 210, 0.45);
}

/* =========================================================================
   Bewegung: Apple-Federn + Kowalski-Feinschliff.
   Alles hier ist reine Zusatzschicht ueber den bestehenden Klassen -- ohne
   diesen Abschnitt (oder ohne "fs-js" auf <html>, siehe layout.php) bleibt
   jede Seite exakt so lesbar und benutzbar wie vorher. Siehe js/motion.js
   fuer den JS-Teil (Ziffern-Tick, Balken-Einwachsen, Mausneigung).
   ========================================================================= */

/* --- Knoepfe/Links: Federn statt linearer Eases, plus Druck-Zustand -------
   Kowalski-Grundsatz: ein Bedienelement soll sich beim Antippen/Klicken
   kurz "eindrücken" -- ohne das wirkt ein Knopf wie ein Bild von einem
   Knopf, nicht wie etwas, das wirklich reagiert. */
.fils-studio .countdown__link,
.fils-studio .website-check__submit,
.fils-studio .site-nav__links > .site-nav__item:last-child > .site-nav__link,
.fils-studio .wl-back-to-top {
    transition: transform 0.45s var(--fs-ease-smooth), box-shadow 0.45s var(--fs-ease-smooth), opacity 0.2s ease;
}

.fils-studio .countdown__link:active,
.fils-studio .website-check__submit:active,
.fils-studio .site-nav__links > .site-nav__item:last-child > .site-nav__link:active {
    transform: scale(0.96);
    transition-duration: 0.15s;
}

@media (hover: hover) {
    .fils-studio .countdown__link:hover,
    .fils-studio .website-check__submit:hover {
        transform: translateY(-2px);
        box-shadow: 0 14px 30px rgba(27, 29, 45, 0.18);
        opacity: 1;
    }
}

/* --- Countdown als "Buehne": Aurora-Hintergrund statt leerer Flaeche ------
   Die Startseite zeigt zurzeit NUR diesen Countdown (Stand 17.10.2026,
   "coming soon") -- er trägt also die ganze erste Wirkung der Seite und
   bekommt deshalb denselben Buehnen-Charakter wie ein Hero-Bereich, obwohl
   er technisch nur ein normales Widget ist. "isolation: isolate" haelt den
   Verlauf zuverlaessig HINTER dem Inhalt, ohne dass jedes Kind im Widget
   selbst einen z-index braucht. */
.fils-studio .widget-countdown {
    position: relative;
    isolation: isolate;
}

.fils-studio .widget-countdown::before {
    content: "";
    position: absolute;
    inset: -6rem -4rem auto -4rem;
    height: 28rem;
    z-index: -1;
    background:
        radial-gradient(42rem 22rem at 18% 15%, color-mix(in srgb, var(--fs-mint) 38%, transparent), transparent 60%),
        radial-gradient(38rem 26rem at 85% 25%, color-mix(in srgb, var(--fs-lavender) 34%, transparent), transparent 60%);
    opacity: 0.8;
    pointer-events: none;
}

/* Das langsame Wandern laeuft NUR mit "fs-js" (= Bewegung erlaubt) --
   ohne JS oder bei abgeschalteter Systembewegung steht der Verlauf einfach
   still, was fuer sich genommen schon die gewuenschte Wirkung hat. */
html.fs-js .fils-studio .widget-countdown::before {
    animation: fs-aurora-drift 22s ease-in-out infinite alternate;
}

@keyframes fs-aurora-drift {
    0% { transform: translate3d(0, 0, 0) scale(1); }
    100% { transform: translate3d(-2%, 2%, 0) scale(1.06); }
}

/* --- Countdown-Kaestchen als Glas statt flacher weisser Flaechen ---------- */
.fils-studio .countdown__box {
    background: color-mix(in srgb, #fff 80%, transparent);
    backdrop-filter: saturate(160%) blur(10px);
    box-shadow: 0 1px 1px rgba(27, 29, 45, 0.04), 0 18px 40px -16px rgba(27, 29, 45, 0.16);
    transition: transform 0.5s var(--fs-ease-smooth), box-shadow 0.5s var(--fs-ease-smooth);
}

@media (hover: hover) {
    .fils-studio .countdown__box:hover {
        transform: translateY(-3px);
        box-shadow: 0 1px 1px rgba(27, 29, 45, 0.06), 0 24px 48px -16px rgba(27, 29, 45, 0.22);
    }
}

/* Ziffern-Tick: js/motion.js setzt "fs-tick" bei jeder ECHTEN Wertaenderung
   neu (nicht jede Sekunde blind) -- die Ziffer federt dabei kurz von unten
   ein, aehnlich einer Flip-Uhr, ohne eine eigene Uhr-Logik nachzubauen. */
.fils-studio .countdown__value {
    display: inline-block;
}

html.fs-js .fils-studio .countdown__value.fs-tick {
    animation: fs-digit-tick 0.4s var(--fs-ease-snappy);
}

@keyframes fs-digit-tick {
    0% { transform: translateY(-30%); opacity: 0; }
    100% { transform: translateY(0); opacity: 1; }
}

/* --- Website-Check: Karten, Balken und Eingabe mit demselben Feinschliff -- */
.fils-studio .website-check__card {
    background: #fff;
    transition: transform 0.45s var(--fs-ease-smooth), box-shadow 0.45s var(--fs-ease-smooth);
}

@media (hover: hover) {
    .fils-studio .website-check__card:hover {
        transform: translateY(-4px);
        box-shadow: 0 20px 44px -18px rgba(27, 29, 45, 0.2);
    }
}

/* Breite waechst beim Sichtbarwerden ein (js/motion.js setzt sie erst auf
   0%, dann auf den gepflegten Zielwert zurueck) -- ohne JS steht hier
   einfach sofort der korrekte Endwert, die Transition selbst aendert am
   Ergebnis nichts. */
.fils-studio .website-check__bar-fill {
    transition: width 1s var(--fs-ease-smooth);
}

.fils-studio .website-check__url-input {
    transition: border-color 0.25s ease, box-shadow 0.25s ease;
}

.fils-studio .website-check__url-input:focus {
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--fs-lavender) 18%, transparent);
}

.fils-studio .website-check__teaser-row {
    background: color-mix(in srgb, #fff 90%, transparent);
    transition: transform 0.3s var(--fs-ease-smooth);
}

/* --- Sicherheitsnetz: alles oben ist Zusatz, nie Voraussetzung -----------
   Greift zusaetzlich zum "fs-js"-Gate in layout.php (das JS gar nicht erst
   startet) -- falls jemand per Systemeinstellung erst NACH dem Laden auf
   reduzierte Bewegung wechselt, friert sonst eine laufende Animation nicht
   sofort ein. */
@media (prefers-reduced-motion: reduce) {
    .fils-studio .widget-countdown::before { animation: none !important; }
    .fils-studio .countdown__value.fs-tick { animation: none !important; }
    .fils-studio .countdown__box,
    .fils-studio .website-check__card,
    .fils-studio .website-check__bar-fill,
    .fils-studio .countdown__link,
    .fils-studio .website-check__submit,
    .fils-studio .wl-back-to-top {
        transition: none !important;
    }
}
