/* ========================================================================== LHC Web Framework – shared stylesheet (single source of truth) Tokens derived from 2_MARKETING/WordPress-Infrastructure/LHC_DESIGN_TOKENS.md ————————————————————————– EVERYTHING is scoped under .lhc-fw so this can be pasted into a live Elementor page (elementor-template mode) without leaking styles into the theme. Sections add their own rules scoped under .s-. Headings are fluid (clamp) so they never overflow at 390px. Min font-size is 14px: the lint gate forbids 10-12px. ========================================================================== */ .lhc-fw { /* — Colors — */ –lhc-navy: #0C2E4E; –lhc-gold: #C5A572; /* canonical brand gold (CLAUDE.md). Elementor-live alt: #C5A065 */ –lhc-gold-deep: #C5A065; /* the value Elementor currently renders, for exact-match cases */ –lhc-green: #88AFA0; –lhc-teal: #005678; –lhc-dark: #011724; –lhc-dark-blue: #1C2441; –lhc-light-blue: #B7D9F7; –lhc-gray: #8F989D; –lhc-white: #FFFFFF; –lhc-bg-light: #F5F5F5; –lhc-bg-soft: #F8F8F8; –lhc-border: #E1E1E1; –lhc-border-light: #DDDDDD; –lhc-text: #0C2E4E; –lhc-text-dark: #0A0A0A; –lhc-gray-muted: #6B7280; –lhc-navy-deep: #0A2540; /* dark-band treatment, matched exactly to /claude-training/ hero (clean navy gradient, no glow) */ –lhc-navy-gradient: linear-gradient(170deg, #0C2E4E 0%, #071B30 60%, #050F1A 100%); /* — Fonts — */ –lhc-font-primary: Verdana, Geneva, sans-serif; –lhc-font-secondary: Inter, -apple-system, BlinkMacSystemFont, sans-serif; –lhc-font-display: “Playfair Display”, Georgia, “Times New Roman”, serif; /* — Fluid type scale (mobile-first via clamp: min, preferred, max) — */ –lhc-h1: clamp(28px, 6vw, 49px); –lhc-h2: clamp(24px, 5vw, 39px); –lhc-h2-svc: clamp(22px, 4vw, 28px); –lhc-h3: clamp(18px, 3.2vw, 22px); –lhc-body: clamp(16px, 2.2vw, 20px); –lhc-small: 16px; –lhc-label: 14px; /* hard floor; never go below 14 */ /* — Spacing (matches Elementor scale) — */ –lhc-space-xs: 15px; –lhc-space-sm: 20px; –lhc-space-md: 30px; –lhc-space-lg: 40px; –lhc-space-xl: 50px; –lhc-space-2xl: 60px; –lhc-section-y: clamp(40px, 8vw, 80px); /* vertical rhythm between sections */ –lhc-gutter: clamp(20px, 5vw, 60px); /* horizontal page padding */ –lhc-maxw: 1140px; /* — Radius / shadow / motion — */ –lhc-radius-btn: 10px; –lhc-radius-img: 10px; –lhc-radius-card: 12px; –lhc-radius-pill: 999px; –lhc-shadow-card: rgba(12, 46, 78, 0.1) 0px 4px 20px 0px; –lhc-shadow-subtle: rgba(0, 0, 0, 0.08) 0px 1.25px 5px 0px; –lhc-transition: 0.3s ease; font-family: var(–lhc-font-primary); color: var(–lhc-text); line-height: 1.5; /* long German compounds (Prozessautomatisierung, Ressourcenmanagement) must break instead of forcing a grid track wider than a 320px phone. Inherited by all children. */ overflow-wrap: break-word; hyphens: auto; } /* — contained reset (scoped, cannot touch the host page) — */ .lhc-fw *, .lhc-fw *::before, .lhc-fw *::after { box-sizing: border-box; } /* grids never blow out: a 1fr track may shrink below its min-content */ .lhc-fw .s-grid, .lhc-fw [class*=”-grid”] { min-width: 0; } .lhc-fw .s-grid > *, .lhc-fw [class*=”-grid”] > * { min-width: 0; } .lhc-fw img, .lhc-fw svg, .lhc-fw video { max-width: 100%; height: auto; display: block; } .lhc-fw a { color: inherit; } /* design language (ref: /claude-training/): serif display headings, italic emphasis, Inter for H3 */ .lhc-fw h1, .lhc-fw h2 { font-family: var(–lhc-font-display); font-weight: 700; letter-spacing: -0.015em; } .lhc-fw h1 em, .lhc-fw h2 em { font-style: italic; } .lhc-fw h3 { font-family: var(–lhc-font-secondary); } /* — layout primitives every section reuses — */ .lhc-fw .s-wrap { width: 100%; max-width: var(–lhc-maxw); margin: 0 auto; padding-inline: var(–lhc-gutter); } .lhc-fw .s-section { padding-block: var(–lhc-section-y); } .lhc-fw .s-section–dark { background: var(–lhc-navy); color: var(–lhc-white); } .lhc-fw .s-section–soft { background: var(–lhc-bg-soft); } /* — typographic helpers — */ .lhc-fw .s-eyebrow { font-size: var(–lhc-label); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(–lhc-gold); margin: 0 0 var(–lhc-space-sm); } .lhc-fw .s-h2 { font-size: var(–lhc-h2); font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(–lhc-navy); margin: 0 0 var(–lhc-space-sm); } .lhc-fw .s-section–dark .s-h2 { color: var(–lhc-white); } .lhc-fw .s-h2 em { font-style: normal; color: var(–lhc-gold); } .lhc-fw .s-lead { font-size: var(–lhc-body); line-height: 1.6; margin: 0 0 var(–lhc-space-md); max-width: 65ch; } .lhc-fw .s-divider-gold { border: none; border-top: 1.6px solid var(–lhc-gold); width: 60px; margin: var(–lhc-space-lg) 0; } /* — buttons (shared) — */ .lhc-fw .lhc-btn-primary, .lhc-fw .lhc-btn-cta { display: inline-block; font-family: var(–lhc-font-primary); font-size: var(–lhc-small); font-weight: 600; text-transform: uppercase; letter-spacing: 0.02em; text-decoration: none; padding: 15px 30px; border-radius: var(–lhc-radius-btn); cursor: pointer; transition: background-color var(–lhc-transition), transform 0.2s ease; border: 0.8px solid rgba(0,0,0,0.07); } .lhc-fw .lhc-btn-primary { background: var(–lhc-navy); color: var(–lhc-white); } .lhc-fw .lhc-btn-primary:hover { background: var(–lhc-teal); transform: translateY(-1px); } .lhc-fw .lhc-btn-cta { background: var(–lhc-gold); color: var(–lhc-white); border: none; } .lhc-fw .lhc-btn-cta:hover { transform: translateY(-1px); } /* — reveal: visible by default so iframe/no-JS never hides content (pitfall #3) — */ .lhc-fw .rv { opacity: 1; } /* — mobile hardening: real rules, and presence is asserted by the lint gate — */ @media (max-width: 640px) { .lhc-fw .s-lead { max-width: 100%; } .lhc-fw .lhc-btn-primary, .lhc-fw .lhc-btn-cta { display: block; text-align: center; } .lhc-fw .s-grid { grid-template-columns: 1fr !important; } } @media (prefers-reduced-motion: reduce) { .lhc-fw * { transition: none !important; animation: none !important; } } /* —- section-scoped —- */ .s-hero { background: var(–lhc-navy-gradient); background-color: var(–lhc-navy); color: var(–lhc-white); } .s-hero .hero-inner { max-width: 52rem; } .s-hero .hero-eyebrow { font-size: var(–lhc-label); font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(–lhc-gold); margin: 0 0 var(–lhc-space-md); } .s-hero h1 { font-size: var(–lhc-h1); font-weight: 700; line-height: 1.08; letter-spacing: -0.02em; color: var(–lhc-white); margin: 0 0 var(–lhc-space-md); } .s-hero h1 em { font-style: italic; color: var(–lhc-gold); } .s-hero .hero-sub { font-size: var(–lhc-body); line-height: 1.6; color: rgba(255,255,255,0.78); max-width: 58ch; margin: 0 0 var(–lhc-space-lg); } .s-hero .hero-stats { display: flex; flex-wrap: wrap; gap: var(–lhc-space-md) var(–lhc-space-2xl); margin: 0 0 var(–lhc-space-lg); } .s-hero .hero-stat:has(.hero-stat-num:empty) { display: none; } .s-hero .hero-stat { display: flex; flex-direction: column; } .s-hero .hero-stat-num { font-family: var(–lhc-font-display); font-size: clamp(30px, 5vw, 44px); font-weight: 700; color: var(–lhc-white); line-height: 1.05; } .s-hero .hero-stat-label { font-size: var(–lhc-label); color: rgba(255,255,255,0.6); text-transform: uppercase; letter-spacing: 0.06em; margin-top: 6px; } .s-hero .hero-actions { display: flex; flex-wrap: wrap; gap: var(–lhc-space-sm); align-items: center; } .s-video { background: var(–lhc-white); } .s-video:has(.v-frame:empty) { display: none; } .s-video .v-head { text-align: center; max-width: 760px; margin: 0 auto var(–lhc-space-md); } .s-video .v-heading { font-size: var(–lhc-h2); font-weight: 700; color: var(–lhc-navy); line-height: 1.15; margin: var(–lhc-space-xs) 0 0; } .s-video .v-heading:empty { display: none; } .s-video .v-frame { position: relative; width: 100%; max-width: 940px; margin: 0 auto; aspect-ratio: 16 / 9; border-radius: var(–lhc-radius-card); overflow: hidden; box-shadow: var(–lhc-shadow-card); background: var(–lhc-navy); } .s-video .v-frame iframe, .s-video .v-frame video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; } .s-problem-solution .ps-group { margin: 0 0 var(–lhc-space-2xl); } .s-problem-solution .ps-group:last-child { margin-bottom: 0; } .s-problem-solution .ps-label { font-size: var(–lhc-label); font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(–lhc-navy); margin: 0 0 var(–lhc-space-sm); } .s-problem-solution .ps-heading { font-size: var(–lhc-h2); font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; color: var(–lhc-navy); margin: 0 0 var(–lhc-space-sm); max-width: 24ch; } .s-problem-solution .ps-lead { font-size: var(–lhc-body); line-height: 1.6; color: var(–lhc-text); margin: 0 0 var(–lhc-space-md); max-width: 65ch; } .s-problem-solution .ps-heading:empty, .s-problem-solution .ps-lead:empty { display: none; } .s-problem-solution .ps-grid { display: grid; gap: var(–lhc-space-sm); grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); } /* Group A: numbered challenge cards */ .s-problem-solution .ps-challenge { display: flex; gap: var(–lhc-space-sm); align-items: flex-start; border: 0.8px solid var(–lhc-border); border-radius: 6px; padding: 16px; background: var(–lhc-white); } .s-problem-solution .ps-num { font-size: var(–lhc-h3); font-weight: 700; color: var(–lhc-gold); line-height: 1.2; flex-shrink: 0; } .s-problem-solution .ps-challenge p { font-size: var(–lhc-body); line-height: 1.55; color: var(–lhc-text); margin: 0; } .s-problem-solution .ps-challenge p strong { color: var(–lhc-navy); font-weight: 700; } /* Group B: feature cards */ .s-problem-solution .ps-feature { display: flex; flex-direction: column; border: 0.8px solid var(–lhc-border-light); border-radius: var(–lhc-radius-img); padding: var(–lhc-space-md); background: var(–lhc-white); } .s-problem-solution .ps-feature h3 { font-size: var(–lhc-h3); font-weight: 600; line-height: 1.25; color: var(–lhc-navy); margin: 0; } .s-problem-solution .ps-feature-divider { border: none; border-top: 0.8px solid var(–lhc-border-light); margin: var(–lhc-space-xs) 0; } .s-problem-solution .ps-feature p { font-size: var(–lhc-body); line-height: 1.6; color: var(–lhc-text); margin: 0; } .s-problem-solution .ps-feature-link { align-self: flex-start; margin-top: var(–lhc-space-sm); font-size: var(–lhc-small); font-weight: 600; color: var(–lhc-gold); text-decoration: none; } .s-problem-solution .ps-feature-link[href=””] { display: none; } .s-problem-solution .ps-feature-link::after { content: ” \2192″; } .s-proof-stat-band { background: var(–lhc-white); } .s-proof-stat-band .psb-head { text-align: center; max-width: 760px; margin: 0 auto var(–lhc-space-lg); } .s-proof-stat-band .psb-heading { font-size: var(–lhc-h2); font-weight: 700; color: var(–lhc-navy); line-height: 1.15; margin: var(–lhc-space-xs) 0 0; } .s-proof-stat-band .psb-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(–lhc-space-md); } .s-proof-stat-band .stat-card { background: var(–lhc-bg-light); border-radius: var(–lhc-radius-card); padding: var(–lhc-space-md); text-align: center; box-shadow: var(–lhc-shadow-subtle); } .s-proof-stat-band .stat-value { display: block; font-size: clamp(34px, 7vw, 52px); font-weight: 700; color: var(–lhc-navy); line-height: 1.05; } .s-proof-stat-band .stat-label { display: block; margin-top: var(–lhc-space-xs); font-size: var(–lhc-small); color: var(–lhc-text-dark); line-height: 1.35; } /* source-or-omit: an empty stat slot hides its card (never inherits FEW defaults). Keyed on the data-count attribute (survives wpautop; :empty on text does not). */ .s-proof-stat-band .stat-card:has(.stat-value[data-count=””]) { display: none; } /* if NO stat has a real value, hide the whole band (heading included). */ .s-proof-stat-band:not(:has(.stat-value:not([data-count=””]))) { display: none; } @media (max-width: 640px) { .s-proof-stat-band .psb-grid { grid-template-columns: 1fr; } } .s-quote { background: var(–lhc-bg-light); } .s-quote .quote-card { max-width: 70ch; margin: 0 auto; text-align: center; } .s-quote .quote-mark { font-size: var(–lhc-h2); font-weight: 700; line-height: 1; color: var(–lhc-gold); margin: 0 0 var(–lhc-space-sm); } .s-quote .quote-text { font-size: clamp(var(–lhc-body), 1.2vw + 1rem, var(–lhc-h3)); line-height: 1.5; font-weight: 500; color: var(–lhc-text-dark); margin: 0 0 var(–lhc-space-lg); } .s-quote .quote-footer { display: flex; flex-wrap: wrap; gap: var(–lhc-space-sm); align-items: center; justify-content: center; } .s-quote .quote-avatar { width: 56px; height: 56px; flex: 0 0 56px; border-radius: var(–lhc-radius-pill); border: 2px solid var(–lhc-gold); object-fit: cover; } .s-quote .quote-byline { font-size: var(–lhc-small); line-height: 1.4; text-align: left; } .s-quote .quote-name { font-weight: 700; color: var(–lhc-text-dark); } .s-quote .quote-role { color: var(–lhc-gray); } @media (max-width: 640px) { .s-quote .quote-footer { flex-direction: column; } .s-quote .quote-byline { text-align: center; } } .s-team { background: var(–lhc-bg-soft); } .s-team .t-head { text-align: center; max-width: 680px; margin: 0 auto var(–lhc-space-lg); } .s-team .t-heading { font-size: var(–lhc-h2); font-weight: 700; color: var(–lhc-navy); line-height: 1.15; margin: var(–lhc-space-xs) 0 0; } .s-team .t-grid { display: grid; gap: var(–lhc-space-lg); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); justify-content: center; max-width: 760px; margin: 0 auto; } .s-team .t-person { text-align: center; } /* wpautop-proof: a real person always has an avatar or initial . (:empty on the
name breaks because wpautop injects a newline into empty
.) */ .s-team .t-person:not(:has(.t-avatar > img, .t-avatar > span)) { display: none; } .s-team .t-avatar { width: 116px; height: 116px; border-radius: var(–lhc-radius-pill); overflow: hidden; margin: 0 auto var(–lhc-space-sm); background: var(–lhc-navy); display: flex; align-items: center; justify-content: center; border: 3px solid var(–lhc-gold); } .s-team .t-avatar img { width: 100%; height: 100%; object-fit: cover; } .s-team .t-avatar span { color: var(–lhc-gold); font-family: var(–lhc-font-display); font-size: 46px; font-weight: 700; line-height: 1; } .s-team .t-name { font-family: var(–lhc-font-secondary); font-size: var(–lhc-h3); font-weight: 600; color: var(–lhc-navy); margin: 0; } .s-team .t-role { font-size: var(–lhc-small); color: var(–lhc-gray-muted); margin: 4px 0 0; } .s-faq .faq-head { margin: 0 0 var(–lhc-space-lg); max-width: 60ch; } .s-faq .faq-list { max-width: 820px; } .s-faq .faq-item { border-bottom: 1px solid var(–lhc-border); } .s-faq .faq-item:first-child { border-top: 1px solid var(–lhc-border); } .s-faq .faq-q { font-size: var(–lhc-h3); font-weight: 600; line-height: 1.35; color: var(–lhc-navy); padding: var(–lhc-space-sm) 0; cursor: pointer; list-style: none; display: flex; align-items: flex-start; justify-content: space-between; gap: var(–lhc-space-sm); } .s-faq .faq-q::-webkit-details-marker { display: none; } .s-faq .faq-q::after { content: “+”; font-size: var(–lhc-h3); font-weight: 400; line-height: 1; color: var(–lhc-gold); flex-shrink: 0; transition: var(–lhc-transition); } .s-faq .faq-item[open] .faq-q::after { content: “-“; } .s-faq .faq-a { font-size: var(–lhc-small); line-height: 1.6; color: var(–lhc-text); padding: 0 0 var(–lhc-space-sm); max-width: 62ch; } .s-faq .faq-a strong { color: var(–lhc-navy); font-weight: 600; } .s-cross-link { background: var(–lhc-bg-soft); } .s-cross-link .cl-eyebrow { font-size: var(–lhc-label); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(–lhc-gold); margin: 0 0 var(–lhc-space-md); } .s-cross-link .cl-grid { display: grid; gap: var(–lhc-space-md); grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); } .s-cross-link .cl-card { display: block; text-decoration: none; border: 0.8px solid var(–lhc-border-light); border-radius: var(–lhc-radius-card); padding: var(–lhc-space-md); background: var(–lhc-white); transition: var(–lhc-transition); height: 100%; } .s-cross-link .cl-card:hover { transform: translateY(-2px); box-shadow: var(–lhc-shadow-card); } .s-cross-link .cl-icon { display: block; color: var(–lhc-gold); margin: 0 0 var(–lhc-space-sm); line-height: 0; } .s-cross-link .cl-icon svg { width: 30px; height: 30px; } .s-cross-link .cl-label { display: block; font-size: var(–lhc-label); font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(–lhc-teal); margin: 0 0 var(–lhc-space-xs); } .s-cross-link .cl-title { display: block; font-size: var(–lhc-h3); font-weight: 600; line-height: 1.25; color: var(–lhc-navy); margin: 0 0 var(–lhc-space-xs); } .s-cross-link .cl-teaser { display: block; font-size: var(–lhc-body); line-height: 1.55; color: var(–lhc-text); margin: 0; } @media (max-width: 640px) { .s-cross-link .cl-grid { grid-template-columns: 1fr; } } .s-cta-band { background: var(–lhc-navy-gradient); background-color: var(–lhc-navy); color: var(–lhc-white); text-align: center; } .s-cta-band .cta-inner { max-width: 50ch; margin: 0 auto; padding: var(–lhc-section-y) 0; } .s-cta-band .cta-eyebrow { font-size: var(–lhc-label); font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(–lhc-gold); margin: 0 0 var(–lhc-space-sm); } .s-cta-band h2 { font-size: var(–lhc-h2); font-weight: 700; line-height: 1.15; letter-spacing: -0.01em; color: var(–lhc-white); margin: 0 0 var(–lhc-space-sm); } .s-cta-band h2 em { font-style: normal; color: var(–lhc-gold); } .s-cta-band .cta-sub { font-size: var(–lhc-body); line-height: 1.6; color: rgba(255,255,255,0.82); margin: 0 auto var(–lhc-space-lg); max-width: 50ch; } .s-cta-band .cta-actions { display: flex; justify-content: center; }
Case Study: Maschinenbau & Krantechnik
Palfinger: 450+ Projekte,
eine Plattform, volle Kontrolle
Wie der weltweit führende Hersteller von Kran- und Hebelösungen mit Smartsheet verstreute Spreadsheets durch ein zentrales Projektmanagement-System ersetzte, und dabei Stunden pro Woche einspart.
Palfinger: Smartsheet im Einsatz
Die Herausforderung
Wenn Projekte in Spreadsheets verschwinden
Palfinger mit 12.000+ Mitarbeitern und 30 Produktionsstandorten weltweit verwaltete Projekte in isolierten, unverbundenen Spreadsheets. Ohne zentrale Sicht war die Steuerung von Hunderten Projekten kaum möglich.
Verstreute Daten: Projekte wurden in einfachen, voneinander getrennten Spreadsheets verwaltet, ohne zentrale Datenbank oder einheitliche Struktur.
Manuelle Updates: Änderungen an der Projektstruktur mussten einzeln in jedem der 100+ Projekte vorgenommen werden, ein enormer Zeitaufwand.
Fehlende Transparenz: Das Management hatte keinen Überblick über den tatsächlichen Ressourceneinsatz und Projektfortschritt über alle Standorte hinweg.
Die Lösung
Von verstreuten Tabellen zur zentralen Steuerung
Nadir Doudou, Head of PMO Global Operations, begann als erster Nutzer und baute mit dem PMO-Template ein Standard-Toolset auf. In 3 Monaten wurden 50+ Projekte migriert, heute sind es über 500.
Control Center für Bulk-Management
Mit Smartsheet Control Center kann Palfinger Änderungen und neue Projekte in Bulk erstellen und verwalten. Das spart ca. 2 Stunden pro Woche allein beim Projekt-Setup.
Dynamic View für Datenschutz
Mit Dynamic View teilt Palfinger gezielt nur die relevanten Informationen mit den richtigen Personen, ohne Zugang zu vollständigen Spreadsheets geben zu müssen.
No-Code Automatisierung
Teams bauen eigene Lösungen wie Ticketing-Systeme und Dashboards, ohne IT-Support oder teure Custom-Programmierung.
Volle Transparenz, weniger Aufwand
We have full transparency into every project, and we can see at a glance how much time and effort is going into each activity.
Sprechen Sie mit uns über diese Lösung
Nico Röpnack
Founder & Managing Director, Lighthouse Consultings
Antworten für Entscheider
Was Entscheider wissen sollten
Die Fragen, die uns Operations-Verantwortliche vor einem Projekt wie bei Palfinger am häufigsten stellen.
Müssen wir Smartsheet schon im Einsatz haben?
Wofür setzt ihr n8n und Automatisierung ein?
Wie geht ihr beim Thema KI vor, und ist das im DACH-Mittelstand sinnvoll?
Wie ist das mit Datenschutz und DSGVO geregelt?
Wie lange dauert ein Projekt und was kostet es?
Verwandte Lösungen
Nächster Schritt
Volle Projekttransparenz, auch für Ihr Unternehmen.
Was Palfinger geschafft hat, ist auch für Ihr Unternehmen möglich. Lassen Sie uns besprechen, wo Ihre größten Hebel liegen.
/* ========================================================================== LHC Web Framework – shared runtime (single source of truth) – iframe auto-resize (tool/T2 side), production pattern from feedback_iframe_autoresize_wp_pitfalls.md: debounce + delta-threshold, NO `&&` (WP entity-encodes it), no MutationObserver loop. – counters that COUNT UP but never show 0 if JS fails (the final number is already in the HTML; we only animate it). Replaces the fragile Elementor counter widget that froze at 0 on FEW. – reveal that is visible by default (pitfall #3: never hide content in iframe). ========================================================================== */ (function () { “use strict”; var inIframe = false; try { inIframe = window.self !== window.top; } catch (e) { inIframe = true; } /* —- reveal: ensure everything is visible (belt-and-suspenders) —- */ function reveal() { var els = document.querySelectorAll(“.lhc-fw .rv”); for (var i = 0; i 1) { p = 1; } var eased = 1 – Math.pow(1 – p, 3); var val = (target * eased).toFixed(decimals); el.textContent = prefix + val + suffix; if (p just run them */ for (var i = 0; i < nodes.length; i++) { animateCounter(nodes[i]); } return; } var io = new IntersectionObserver(function (entries) { for (var j = 0; j < entries.length; j++) { if (entries[j].isIntersecting) { animateCounter(entries[j].target); io.unobserve(entries[j].target); } } }, { threshold: 0.4 }); for (var k = 0; k < nodes.length; k++) { io.observe(nodes[k]); } } else { for (var m = 0; m < nodes.length; m++) { animateCounter(nodes[m]); } } } /* —- iframe auto-resize: broadcast height to the parent WP page —- */ var _lastH = 0, _t = null; function broadcastHeight() { if (inIframe === false) { return; } if (_t) { return; } _t = setTimeout(function () { _t = null; var h = document.body.scrollHeight; if (Math.abs(h – _lastH) < 30) { return; } _lastH = h; window.parent.postMessage({ type: "lhc-tool-resize", height: h }, "*"); }, 200); } function wireResize() { if (inIframe === false) { return; } window.addEventListener("load", broadcastHeight); window.addEventListener("resize", broadcastHeight); document.addEventListener("click", broadcastHeight, true); var imgs = document.querySelectorAll(".lhc-fw img"); for (var i = 0; i < imgs.length; i++) { imgs[i].addEventListener("load", broadcastHeight); } setTimeout(broadcastHeight, 600); setTimeout(broadcastHeight, 1600); } function init() { reveal(); initCounters(); wireResize(); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", init); } else { init(); } })(); { “@context”: “https://schema.org”, “@type”: “FAQPage”, “mainEntity”: [ { “@type”: “Question”, “name”: “Müssen wir Smartsheet schon im Einsatz haben?”, “acceptedAnswer”: { “@type”: “Answer”, “text”: “Nein. Wir bauen sowohl auf bestehenden Smartsheet-Umgebungen auf als auch komplett neu. Wenn Sie heute mit Excel-Pivots oder verteilten Tabellen arbeiten, übernehmen wir die Datenstruktur und überführen sie sauber in eine Smartsheet-Lösung, die Ihr Team danach selbst pflegen kann.” } }, { “@type”: “Question”, “name”: “Wofür setzt ihr n8n und Automatisierung ein?”, “acceptedAnswer”: { “@type”: “Answer”, “text”: “n8n verbindet die Systeme, zwischen denen heute manuell kopiert wird, etwa Smartsheet, HubSpot, E-Mail und ERP. Wiederkehrende Schritte wie Status-Updates, Benachrichtigungen oder Reports laufen dann automatisch im Hintergrund, statt jemanden täglich Zeit zu kosten.” } }, { “@type”: “Question”, “name”: “Wie geht ihr beim Thema KI vor, und ist das im DACH-Mittelstand sinnvoll?”, “acceptedAnswer”: { “@type”: “Answer”, “text”: “Wir setzen KI gezielt dort ein, wo sie einen messbaren Vorteil bringt, etwa bei Klassifizierung, Vorhersagen oder Entscheidungsunterstützung, und nicht als Selbstzweck. Bei FEW Automotive haben wir so manuelle Auswertungen ersetzt, die vorher Tage gekostet haben. Jede Lösung bleibt nachvollziehbar und für Ihr Team beherrschbar.” } }, { “@type”: “Question”, “name”: “Wie ist das mit Datenschutz und DSGVO geregelt?”, “acceptedAnswer”: { “@type”: “Answer”, “text”: “Datenschutz ist Teil jedes Projekts, nicht ein nachgelagerter Punkt. Wir klären zu Beginn, welche Daten verarbeitet werden und wo sie liegen, schließen bei Bedarf einen Auftragsverarbeitungsvertrag und bevorzugen Komponenten mit Verarbeitung in der EU. Sensible Daten werden nur dort eingesetzt, wo es rechtlich und vertraglich sauber abgesichert ist.” } }, { “@type”: “Question”, “name”: “Wie lange dauert ein Projekt und was kostet es?”, “acceptedAnswer”: { “@type”: “Answer”, “text”: “Ein erster nutzbarer Stand entsteht meist innerhalb weniger Wochen, viele Projekte starten mit einem klar umrissenen Pilot. Der Investitionsrahmen hängt von Umfang und Integrationstiefe ab. In einem kurzen Erstgespräch schätzen wir Aufwand und Nutzen für Ihren konkreten Fall ein, bevor Sie sich festlegen.” } } ] }