/* ========================================================================== 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-story-links { background: var(–lhc-white); } .s-story-links .sl-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-story-links .sl-grid { display: grid; gap: 0; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); column-gap: var(–lhc-space-lg); } .s-story-links .sl-item { display: flex; gap: var(–lhc-space-sm); align-items: flex-start; text-decoration: none; padding: var(–lhc-space-sm) 0; border-top: 1px solid var(–lhc-border-light); transition: var(–lhc-transition); } .s-story-links .sl-item[href=””] { display: none; } .s-story-links:not(:has(.sl-item:not([href=””]))) { display: none; } .s-story-links .sl-ico { color: var(–lhc-gold); flex: 0 0 auto; line-height: 0; margin-top: 3px; } .s-story-links .sl-ico svg { width: 24px; height: 24px; } .s-story-links .sl-body { display: block; } .s-story-links .sl-title { display: block; font-size: var(–lhc-body); font-weight: 600; color: var(–lhc-navy); line-height: 1.3; } .s-story-links .sl-item:hover .sl-title { color: var(–lhc-teal); } .s-story-links .sl-arrow { color: var(–lhc-gold); font-weight: 700; } .s-story-links .sl-teaser { display: block; font-size: var(–lhc-small); color: var(–lhc-text); line-height: 1.45; margin-top: 3px; } .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
The name breaks because wpautop inserts a newline into an empty space
.) */ .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: Life Sciences & Pharmaceuticals
Thermo Fisher Scientific:
Making quality visible
How Thermo Fisher Scientific uses Smartsheet to create up-to-date dashboards and roadmaps for its entire Quality Division, enabling it to make informed decisions more quickly.
Thermo Fisher Scientific, presented by Florian Zbinden
Learn more about the Smartsheet PMO story
The challenge
When quality data disappears into silos
Thermo Fisher Scientific is a global leader in the life sciences sector. The Quality Division needed up-to-date project roadmaps and charts, but struggled with outdated data and manual reporting processes.
Outdated roadmaps: Project roadmaps and charts were rarely up to date because manual updates were time-consuming and prone to errors.
Lack of clarity: Dashboards were confusing and difficult to understand, which made it difficult to make informed decisions in the area of quality.
Slow deployment: Setting up new solutions for quality projects took too long, and there was a lack of flexible templates.
The solution
Up-to-date dashboards for every meeting
Florian Zbinden, Quality Systems Project Manager, uses Smartsheet in every meeting. Flexible templates enable rapid deployment of new solutions.
Real-time dashboards
Thanks to Smartsheet dashboards, the Quality Division always has up-to-date data—in every meeting, for every decision. Manual chart updates are a thing of the past.
Flexible templates
Thanks to pre-built templates, new quality projects can be set up in no time, with a consistent structure and immediate dashboard integration.
Clear data presentation
The fast-paced market doesn't wait for IT tickets. Business units have been empowered to build their own workflows independently, from budget approval to resource planning.
Measurable quality, informed decisions
We use Smartsheet in every single meeting we have, so our dashboards are always up to date, and everything is always crystal clear and well presented.
Talk to us about this solution
Nico Röpnack
Founder & Managing Director, Lighthouse Consultings
Answers for decision-makers
What Decision-Makers Need to Know
The questions that quality and operations managers most frequently ask us before a project like the one at Thermo Fisher.
Do we already need to be using Smartsheet?
What do you use n8n and automation for?
How do you approach the topic of AI, and does it make sense for small and medium-sized businesses in the DACH region?
What are the regulations regarding data protection and the GDPR?
How long does a project take, and how much does it cost?
Next step
Make quality data visible—for your division as well .
Schedule an appointment right away—it’s free and there’s no obligation. We’ll discuss where your greatest opportunities lie and how we can help you capitalize on them.
/* ========================================================================== 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.” } } ] }