/* =================================================================
   UPBYTE® – VISUAL SYSTEM 2026
   Digital Infrastructure Lab · Industrial Authority

   Aesthetic: Digital System Lab / Industrie 4.0
   Color: Monochrome + controlled Cyan accent
   Motion: Mechanical, precise, algorithmic
   Grid: 12-col + 64px system grid
   ================================================================= */

/* -----------------------------------------------------------------
   1. DESIGN TOKENS
   ----------------------------------------------------------------- */

:root {
  /* Monochrome Foundation */
  --ubx-void: #08090C;
  --ubx-dark: #0F1115;
  --ubx-graphite: #161A22;
  --ubx-slate: #1E232D;
  --ubx-charcoal: #282E3A;
  --ubx-steel: #353C4A;

  /* Cool Neutrals */
  --ubx-cream: #F0F2F7;
  --ubx-silver: #D0D5E0;
  --ubx-muted: #9AA3B8;
  --ubx-dim: #6B7590;

  /* Controlled Accent */
  --ubx-cyan: #00C8F0;
  --ubx-cyan-70: rgba(0, 200, 240, 0.7);
  --ubx-cyan-40: rgba(0, 200, 240, 0.4);
  --ubx-cyan-15: rgba(0, 200, 240, 0.15);
  --ubx-cyan-06: rgba(0, 200, 240, 0.06);

  /* Functional */
  --ubx-success: #10B981;
  --ubx-warning: #F59E0B;
  --ubx-error: #EF4444;

  /* Text */
  --ubx-text: #F0F2F7;
  --ubx-text-secondary: rgba(240, 242, 247, 0.85);
  --ubx-text-muted: rgba(240, 242, 247, 0.55);
  --ubx-text-dim: rgba(240, 242, 247, 0.30);

  /* Borders */
  --ubx-border: rgba(240, 242, 247, 0.06);
  --ubx-border-mid: rgba(240, 242, 247, 0.10);
  --ubx-border-strong: rgba(240, 242, 247, 0.15);

  /* Surfaces */
  --ubx-surface: rgba(240, 242, 247, 0.02);
  --ubx-surface-hover: rgba(240, 242, 247, 0.05);
  --ubx-surface-active: rgba(0, 200, 240, 0.04);

  /* Typography */
  --ubx-font: "DM Sans", system-ui, -apple-system, sans-serif;
  --ubx-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;

  /* Spacing System (8px base) */
  --ubx-space-xs: 4px;
  --ubx-space-sm: 8px;
  --ubx-space-md: 16px;
  --ubx-space-lg: 24px;
  --ubx-space-xl: 32px;
  --ubx-space-2xl: 48px;
  --ubx-space-3xl: 64px;
  --ubx-space-4xl: 96px;
  --ubx-space-5xl: 128px;
  --ubx-section-y: 160px;

  /* Motion System – Mechanical, precise */
  --ubx-duration-fast: 200ms;
  --ubx-duration-mid: 400ms;
  --ubx-duration-slow: 700ms;
  --ubx-duration-draw: 1200ms;
  --ubx-ease-precise: cubic-bezier(0.25, 0.1, 0.25, 1);    /* near-linear, controlled */
  --ubx-ease-enter: cubic-bezier(0.0, 0.0, 0.2, 1);         /* decelerate in */
  --ubx-ease-exit: cubic-bezier(0.4, 0.0, 1, 1);            /* accelerate out */
  --ubx-ease-mechanical: cubic-bezier(0.4, 0.0, 0.6, 1);    /* machine-like */

  /* System Grid */
  --ubx-grid: 64px;
}

@media (max-width: 767.98px) {
  :root {
    --ubx-section-y: 80px;
    --ubx-grid: 48px;
  }
}


/* -----------------------------------------------------------------
   2. GLOBAL BASE
   ----------------------------------------------------------------- */

*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--ubx-font);
  font-size: 17.5px;
  line-height: 1.7;
  color: var(--ubx-text);
  background: var(--ubx-void);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
  margin: 0;
}

::selection {
  background: var(--ubx-cyan-15);
  color: var(--ubx-cream);
}

img, svg { max-width: 100%; height: auto; }

/* Kill legacy elements */
.page-loader, .ambient-layer, .flow-wrap, .interactive-network,
.hero-visual-break, .hero-status-micro, .proof-visual {
  display: none !important;
}


/* -----------------------------------------------------------------
   3. TYPOGRAPHIC HIERARCHY
   ----------------------------------------------------------------- */

h1, h2, h3, h4, h5, h6 {
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
  color: var(--ubx-text);
  margin: 0;
}

/* Display: Hero headline */
.ubx-t-display {
  font-size: clamp(2.8rem, 6.5vw, 5.4rem);
  font-weight: 800;
  letter-spacing: -0.045em;
  line-height: 1.02;
}

/* H1 equivalent */
.ubx-t-h1 {
  font-size: clamp(2.2rem, 5vw, 3.5rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1.08;
}

/* H2 */
.ubx-t-h2 {
  font-size: clamp(1.65rem, 3.3vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.15;
}

/* H3 */
.ubx-t-h3 {
  font-size: clamp(1.25rem, 2.2vw, 1.65rem);
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.25;
}

/* H4 */
.ubx-t-h4 {
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: -0.015em;
  line-height: 1.35;
}

/* Body sizes */
.ubx-t-body-lg {
  font-size: 1.15rem;
  line-height: 1.75;
  color: var(--ubx-text-secondary);
}

.ubx-t-body {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--ubx-text-secondary);
}

.ubx-t-body-sm {
  font-size: 0.9rem;
  line-height: 1.65;
  color: var(--ubx-text-secondary);
}

.ubx-t-caption {
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--ubx-text-muted);
}

/* Monospace accent */
.ubx-mono {
  font-family: var(--ubx-mono);
  font-size: 0.88em;
  letter-spacing: -0.01em;
  color: var(--ubx-cyan);
}

/* Section label */
.ubx-label {
  font-family: var(--ubx-mono);
  font-size: 0.72rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ubx-cyan);
  display: flex;
  align-items: center;
  gap: 12px;
}

.ubx-label::before {
  content: '';
  width: 24px;
  height: 1px;
  background: var(--ubx-cyan-40);
  flex-shrink: 0;
}

.ubx-label--dim { color: var(--ubx-text-muted); }
.ubx-label--dim::before { background: var(--ubx-text-dim); }


/* -----------------------------------------------------------------
   4. NAVIGATION
   ----------------------------------------------------------------- */

.site-header {
  background: rgba(8, 9, 12, 0.9) !important;
  backdrop-filter: blur(24px) saturate(1.6) !important;
  -webkit-backdrop-filter: blur(24px) saturate(1.6) !important;
  border-bottom: 1px solid var(--ubx-border) !important;
  z-index: 1000;
}

.site-header .navbar { padding: 12px 0; }

.navbar-nav-upbyte .nav-link {
  color: var(--ubx-silver) !important;
  font-weight: 500 !important;
  font-size: 0.85rem !important;
  letter-spacing: 0.03em;
  padding: 8px 14px !important;
  border-radius: 0 !important;
  transition: color var(--ubx-duration-fast) var(--ubx-ease-precise) !important;
}

.navbar-nav-upbyte .nav-link:hover,
.navbar-nav-upbyte .nav-link:focus {
  color: var(--ubx-cyan) !important;
  background: transparent !important;
}

.navbar-nav-upbyte .btn.btn-primary {
  background: transparent !important;
  border: 1px solid var(--ubx-cyan-40) !important;
  color: var(--ubx-cyan) !important;
  border-radius: 0 !important;
  padding: 8px 20px !important;
  font-family: var(--ubx-mono) !important;
  font-weight: 500 !important;
  font-size: 0.75rem !important;
  letter-spacing: 0.1em !important;
  text-transform: uppercase !important;
  box-shadow: none !important;
  transition: all var(--ubx-duration-mid) var(--ubx-ease-precise) !important;
}

.navbar-nav-upbyte .btn.btn-primary:hover {
  background: var(--ubx-cyan) !important;
  color: var(--ubx-void) !important;
  border-color: var(--ubx-cyan) !important;
}

.navbar-toggler {
  border: 1px solid var(--ubx-border-strong) !important;
  padding: 6px 10px !important;
  border-radius: 0 !important;
}

.navbar-toggler-icon { filter: invert(1); }

@media (max-width: 991.98px) {
  .navbar-collapse {
    background: var(--ubx-graphite);
    border: 1px solid var(--ubx-border);
    padding: 16px;
    margin-top: 12px;
  }
}


/* -----------------------------------------------------------------
   5. SECTION FRAMEWORK
   ----------------------------------------------------------------- */

.ubx-section {
  padding: var(--ubx-section-y) 0;
  position: relative;
}

.ubx-s-void { background: var(--ubx-void); }
.ubx-s-dark { background: var(--ubx-dark); }
.ubx-s-graphite { background: var(--ubx-graphite); }

.ubx-s-border { border-top: 1px solid var(--ubx-border); }

.ubx-narrow { max-width: 640px; margin: 0 auto; }
.ubx-medium { max-width: 920px; margin: 0 auto; }
.ubx-wide { max-width: 1120px; margin: 0 auto; }


/* -----------------------------------------------------------------
   6. SCROLL REVEAL – Mechanical, no bounce
   ----------------------------------------------------------------- */

.ubx-reveal {
  opacity: 0;
  transform: translateY(32px);
  transition:
    opacity var(--ubx-duration-slow) var(--ubx-ease-enter),
    transform var(--ubx-duration-slow) var(--ubx-ease-mechanical);
}

.ubx-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.ubx-reveal-d1 { transition-delay: 100ms; }
.ubx-reveal-d2 { transition-delay: 200ms; }
.ubx-reveal-d3 { transition-delay: 300ms; }
.ubx-reveal-d4 { transition-delay: 400ms; }
.ubx-reveal-d5 { transition-delay: 500ms; }

/* Grid snap animation */
.ubx-snap {
  opacity: 0;
  transform: translate(8px, 8px);
  transition:
    opacity var(--ubx-duration-mid) var(--ubx-ease-enter),
    transform var(--ubx-duration-mid) var(--ubx-ease-mechanical);
}

.ubx-snap.is-visible {
  opacity: 1;
  transform: translate(0, 0);
}


/* -----------------------------------------------------------------
   7. SYSTEM GRID BACKGROUND
   ----------------------------------------------------------------- */

.ubx-grid-bg {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(226,230,238,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(226,230,238,0.025) 1px, transparent 1px);
  background-size: var(--ubx-grid) var(--ubx-grid);
  pointer-events: none;
  z-index: 0;
}

/* Grid with intersection dots */
.ubx-grid-dots {
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(226,230,238,0.06) 1px, transparent 1px);
  background-size: var(--ubx-grid) var(--ubx-grid);
  pointer-events: none;
  z-index: 0;
}


/* -----------------------------------------------------------------
   8. HERO – Generative Network
   ----------------------------------------------------------------- */

.ubx-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--ubx-void);
}

.ubx-hero-canvas {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}

.ubx-hero-canvas canvas {
  width: 100%;
  height: 100%;
  display: block;
}

/* Static fallback when Canvas unavailable or reduced-motion/low-end */
.ubx-hero-fallback {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(0,200,240,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,200,240,0.025) 1px, transparent 1px);
  background-size: var(--ubx-grid) var(--ubx-grid);
}

.ubx-hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(8,9,12,0.35) 0%, rgba(8,9,12,0) 35%, rgba(8,9,12,0.85) 100%),
    linear-gradient(90deg, rgba(8,9,12,0.88) 0%, rgba(8,9,12,0.15) 70%);
  pointer-events: none;
}

.ubx-hero-content {
  position: relative;
  z-index: 2;
  padding: 180px 0 120px;
}

.ubx-hero h1 { color: var(--ubx-cream); }

.ubx-hero h1 .ubx-accent-word { color: var(--ubx-cyan); }

.ubx-hero-sub {
  font-size: clamp(1.12rem, 2vw, 1.32rem);
  color: var(--ubx-text-secondary);
  line-height: 1.75;
  max-width: 520px;
  margin-bottom: var(--ubx-space-2xl);
}

/* Hero metrics */
.ubx-hero-metrics {
  display: flex;
  gap: var(--ubx-space-2xl);
  flex-wrap: wrap;
  margin-top: var(--ubx-space-4xl);
  padding-top: var(--ubx-space-xl);
  border-top: 1px solid var(--ubx-border-mid);
}

.ubx-hero-metric {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ubx-hero-metric-label {
  font-family: var(--ubx-mono);
  font-size: 0.65rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ubx-text-muted);
}

.ubx-hero-metric-value {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ubx-cream);
}

/* Status pulse */
.ubx-status {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--ubx-mono);
  font-size: 0.72rem;
  color: var(--ubx-success);
  letter-spacing: 0.04em;
}

.ubx-status::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--ubx-success);
  animation: ubx-pulse 2.5s var(--ubx-ease-precise) infinite;
}

@keyframes ubx-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}


/* -----------------------------------------------------------------
   9. BUTTONS – Angular, Industrial
   ----------------------------------------------------------------- */

.ubx-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 15px 32px;
  font-family: var(--ubx-mono);
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  border: none;
  cursor: pointer;
  transition: all var(--ubx-duration-mid) var(--ubx-ease-precise);
  border-radius: 0;
  position: relative;
}

.ubx-btn--primary {
  background: var(--ubx-cyan);
  color: var(--ubx-void);
}

.ubx-btn--primary:hover {
  background: #00dcff;
  color: var(--ubx-void);
  box-shadow: 0 0 40px rgba(0,200,240,0.2);
}

.ubx-btn--outline {
  background: transparent;
  color: var(--ubx-cream);
  border: 1px solid var(--ubx-border-strong);
}

.ubx-btn--outline:hover {
  border-color: var(--ubx-cyan-40);
  color: var(--ubx-cyan);
}

.ubx-btn--ghost {
  background: transparent;
  color: var(--ubx-cyan);
  padding: 8px 0;
}

.ubx-btn-arrow {
  display: inline-block;
  transition: transform var(--ubx-duration-fast) var(--ubx-ease-mechanical);
  font-weight: 400;
}

.ubx-btn:hover .ubx-btn-arrow {
  transform: translateX(4px);
}


/* -----------------------------------------------------------------
   10. SECTION 2: COMPLEXITY PROBLEM
       Grid breaks apart, then re-orders on scroll
   ----------------------------------------------------------------- */

.ubx-complexity {
  position: relative;
  overflow: hidden;
}

.ubx-complexity-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--ubx-border);
}

.ubx-complexity-item {
  background: var(--ubx-dark);
  padding: 36px 32px;
  position: relative;
  transition:
    transform var(--ubx-duration-slow) var(--ubx-ease-mechanical),
    opacity var(--ubx-duration-slow) var(--ubx-ease-enter);
}

/* Disconnected state (initial) */
.ubx-complexity-item.is-broken {
  transform: translate(
    calc((var(--ubx-break-x, 0)) * 1px),
    calc((var(--ubx-break-y, 0)) * 1px)
  ) rotate(calc((var(--ubx-break-r, 0)) * 1deg));
  opacity: 0.4;
}

/* Reconnected state */
.ubx-complexity-item.is-ordered {
  transform: translate(0, 0) rotate(0deg);
  opacity: 1;
}

.ubx-complexity-item::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 0;
  height: 1px;
  background: var(--ubx-cyan);
  transition: width var(--ubx-duration-draw) var(--ubx-ease-mechanical);
}

.ubx-complexity-item.is-ordered::before {
  width: 100%;
}

.ubx-complexity-icon {
  width: 24px;
  height: 24px;
  color: var(--ubx-cyan-40);
  margin-bottom: var(--ubx-space-md);
}

.ubx-complexity-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ubx-cream);
  letter-spacing: -0.01em;
  line-height: 1.3;
  margin: 0 0 10px;
}

.ubx-complexity-text {
  font-size: 0.88rem;
  color: var(--ubx-text-secondary);
  line-height: 1.65;
  margin: 0;
}

@media (max-width: 991.98px) {
  .ubx-complexity-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 575.98px) {
  .ubx-complexity-grid { grid-template-columns: 1fr; }
}


/* -----------------------------------------------------------------
   11. SECTION 3: SYSTEM ARCHITECTURE
       Interactive layer-by-layer visualization
   ----------------------------------------------------------------- */

.ubx-arch {
  position: relative;
}

.ubx-arch-visual {
  position: relative;
  border: 1px solid var(--ubx-border);
  overflow: hidden;
  background: var(--ubx-dark);
  margin-top: var(--ubx-space-2xl);
}

.ubx-arch-canvas {
  width: 100%;
  display: block;
}

/* Layer modules below canvas */
.ubx-arch-layers {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--ubx-border);
}

.ubx-arch-layer {
  background: var(--ubx-dark);
  padding: 24px 20px;
  cursor: default;
  position: relative;
  transition:
    background var(--ubx-duration-fast) var(--ubx-ease-precise);
}

.ubx-arch-layer:hover,
.ubx-arch-layer.is-active {
  background: var(--ubx-graphite);
}

.ubx-arch-layer.is-active::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--ubx-cyan);
}

.ubx-arch-layer-icon {
  width: 28px;
  height: 28px;
  color: var(--ubx-dim);
  margin-bottom: 10px;
  transition: color var(--ubx-duration-fast) var(--ubx-ease-precise);
}

.ubx-arch-layer.is-active .ubx-arch-layer-icon,
.ubx-arch-layer:hover .ubx-arch-layer-icon {
  color: var(--ubx-cyan);
}

.ubx-arch-layer-name {
  font-family: var(--ubx-mono);
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--ubx-cream);
  margin-bottom: 3px;
}

.ubx-arch-layer-desc {
  font-size: 0.72rem;
  color: var(--ubx-text-muted);
  margin: 0;
}

/* Hover tooltip for technical depth */
.ubx-arch-layer-detail {
  position: absolute;
  bottom: 100%;
  left: 0;
  right: 0;
  background: var(--ubx-slate);
  border: 1px solid var(--ubx-border-strong);
  padding: 16px 20px;
  font-size: 0.82rem;
  color: var(--ubx-text-secondary);
  line-height: 1.55;
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition:
    opacity var(--ubx-duration-fast) var(--ubx-ease-enter),
    transform var(--ubx-duration-fast) var(--ubx-ease-mechanical);
  z-index: 10;
}

.ubx-arch-layer:hover .ubx-arch-layer-detail {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

@media (max-width: 767.98px) {
  .ubx-arch-layers { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 575.98px) {
  .ubx-arch-layers { grid-template-columns: 1fr; }
}


/* -----------------------------------------------------------------
   12. SECTION 4: VORGEHEN – Horizontal Architecture Band
       Lines draw themselves on scroll
   ----------------------------------------------------------------- */

.ubx-process {
  position: relative;
  overflow: hidden;
}

.ubx-process-band {
  display: flex;
  align-items: flex-start;
  position: relative;
  padding: var(--ubx-space-3xl) 0;
}

/* Connecting line */
.ubx-process-line {
  position: absolute;
  top: 40px;
  left: 0;
  right: 0;
  height: 1px;
  background: var(--ubx-border-mid);
}

.ubx-process-line-fill {
  height: 100%;
  width: 0;
  background: var(--ubx-cyan-40);
  transition: width var(--ubx-duration-draw) var(--ubx-ease-mechanical);
}

.ubx-process-band.is-drawing .ubx-process-line-fill {
  width: 100%;
}

.ubx-process-step {
  flex: 1;
  text-align: center;
  position: relative;
  z-index: 1;
  padding: 0 12px;
}

.ubx-process-node {
  width: 48px;
  height: 48px;
  border: 1px solid var(--ubx-border-strong);
  background: var(--ubx-dark);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 20px;
  font-family: var(--ubx-mono);
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--ubx-dim);
  transition: all var(--ubx-duration-mid) var(--ubx-ease-mechanical);
}

.ubx-process-step.is-active .ubx-process-node {
  border-color: var(--ubx-cyan-40);
  color: var(--ubx-cyan);
  background: var(--ubx-surface-active);
}

.ubx-process-step-title {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--ubx-cream);
  margin-bottom: 8px;
}

.ubx-process-step-desc {
  font-size: 0.85rem;
  color: var(--ubx-text-secondary);
  line-height: 1.6;
}

@media (max-width: 767.98px) {
  .ubx-process-band {
    flex-direction: column;
    gap: var(--ubx-space-xl);
    padding: var(--ubx-space-xl) 0;
  }
  .ubx-process-line { display: none; }
  .ubx-process-step {
    display: flex;
    gap: var(--ubx-space-md);
    text-align: left;
    padding: 0;
  }
  .ubx-process-node {
    min-width: 48px;
    margin: 0;
  }
  .ubx-process-step > div { flex: 1; }
}


/* -----------------------------------------------------------------
   13. SECTION 5: LEISTUNGSBEREICHE
       Keine Cards. Große Typografie + Diagramm-Skizze.
   ----------------------------------------------------------------- */

.ubx-services-list {
  margin-top: var(--ubx-space-3xl);
}

.ubx-service-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--ubx-space-3xl);
  padding: var(--ubx-space-2xl) 0;
  border-bottom: 1px solid var(--ubx-border);
  align-items: center;
}

.ubx-service-row:last-child {
  border-bottom: none;
}

.ubx-service-num {
  font-family: var(--ubx-mono);
  font-size: 0.65rem;
  color: var(--ubx-cyan-40);
  letter-spacing: 0.1em;
  margin-bottom: 12px;
}

.ubx-service-name {
  font-size: clamp(1.4rem, 2.8vw, 2rem);
  font-weight: 700;
  color: var(--ubx-cream);
  letter-spacing: -0.025em;
  margin: 0 0 12px;
  line-height: 1.15;
}

.ubx-service-desc {
  font-size: 0.95rem;
  color: var(--ubx-text-secondary);
  line-height: 1.7;
  max-width: 480px;
}

/* Modular diagram sketch area */
.ubx-service-diagram {
  height: 160px;
  border: 1px solid var(--ubx-border);
  background: var(--ubx-surface);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  overflow: hidden;
}

.ubx-service-diagram canvas {
  width: 100%;
  height: 100%;
}

@media (max-width: 767.98px) {
  .ubx-service-row {
    grid-template-columns: 1fr;
    gap: var(--ubx-space-lg);
    padding: var(--ubx-space-xl) 0;
  }
  .ubx-service-diagram {
    height: 120px;
  }
  .ubx-service-name {
    font-size: 1.35rem;
  }
}


/* -----------------------------------------------------------------
   14. SECTION 6: CASE STUDIES
       Problem → System → Ergebnis
   ----------------------------------------------------------------- */

.ubx-cases {
  margin-top: var(--ubx-space-3xl);
}

.ubx-case {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--ubx-border);
  margin-bottom: var(--ubx-space-xl);
}

.ubx-case:last-child { margin-bottom: 0; }

.ubx-case-info {
  background: var(--ubx-dark);
  padding: var(--ubx-space-2xl) var(--ubx-space-xl);
}

.ubx-case-visual {
  background: var(--ubx-graphite);
  padding: var(--ubx-space-xl);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--ubx-space-md);
}

.ubx-case-company {
  font-family: var(--ubx-mono);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ubx-cyan-70);
  margin-bottom: 12px;
}

.ubx-case-title {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--ubx-cream);
  letter-spacing: -0.02em;
  line-height: 1.3;
  margin: 0 0 14px;
}

.ubx-case-desc {
  font-size: 0.9rem;
  color: var(--ubx-text-secondary);
  line-height: 1.65;
  margin-bottom: 18px;
}

.ubx-case-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.ubx-case-tag {
  font-family: var(--ubx-mono);
  font-size: 0.65rem;
  color: var(--ubx-text-muted);
  padding: 5px 12px;
  border: 1px solid var(--ubx-border);
  letter-spacing: 0.02em;
}

/* KPI highlights in visual panel */
.ubx-case-kpi {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 12px 16px;
  border: 1px solid var(--ubx-border);
  background: var(--ubx-surface);
}

.ubx-case-kpi-value {
  font-family: var(--ubx-mono);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--ubx-cyan);
}

.ubx-case-kpi-label {
  font-size: 0.78rem;
  color: var(--ubx-text-muted);
}

/* Layer comparison */
.ubx-case-layers {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.ubx-case-layer {
  height: 6px;
  background: var(--ubx-border-mid);
  position: relative;
  overflow: hidden;
}

.ubx-case-layer-fill {
  height: 100%;
  background: var(--ubx-cyan-40);
  width: 0;
  transition: width var(--ubx-duration-draw) var(--ubx-ease-mechanical);
}

.ubx-case.is-visible .ubx-case-layer-fill {
  width: var(--fill, 60%);
}

@media (max-width: 767.98px) {
  .ubx-case {
    grid-template-columns: 1fr;
  }
  .ubx-case-info {
    padding: var(--ubx-space-xl) var(--ubx-space-lg);
  }
  .ubx-case-visual {
    padding: var(--ubx-space-lg);
  }
}


/* -----------------------------------------------------------------
   15. SECTION 7: CTA – Extremely reduced
   ----------------------------------------------------------------- */

.ubx-cta-section {
  text-align: center;
  padding: var(--ubx-space-5xl) 0;
  position: relative;
}

.ubx-cta-section h2 {
  margin-bottom: var(--ubx-space-xl);
}

.ubx-cta-section .ubx-btn {
  margin-top: var(--ubx-space-lg);
}


/* -----------------------------------------------------------------
   16. FAQ
   ----------------------------------------------------------------- */

.ubx-faq-item {
  border-bottom: 1px solid var(--ubx-border);
}

.ubx-faq-item summary {
  padding: 24px 0;
  font-weight: 600;
  font-size: 1rem;
  color: var(--ubx-cream);
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  transition: color var(--ubx-duration-fast) var(--ubx-ease-precise);
}

.ubx-faq-item summary:hover { color: var(--ubx-cyan); }

.ubx-faq-item summary::-webkit-details-marker { display: none; }

.ubx-faq-item summary::after {
  content: '+';
  font-family: var(--ubx-mono);
  font-size: 1.1rem;
  font-weight: 300;
  color: var(--ubx-dim);
  transition:
    transform var(--ubx-duration-mid) var(--ubx-ease-mechanical),
    color var(--ubx-duration-fast) var(--ubx-ease-precise);
  flex-shrink: 0;
}

.ubx-faq-item[open] summary::after {
  transform: rotate(45deg);
  color: var(--ubx-cyan);
}

.ubx-faq-answer {
  padding: 0 0 24px;
  font-size: 0.92rem;
  color: var(--ubx-text-secondary);
  line-height: 1.7;
  max-width: 640px;
}


/* -----------------------------------------------------------------
   17. CONTACT
   ----------------------------------------------------------------- */

.ubx-contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--ubx-space-4xl);
}

.ubx-contact-methods {
  display: flex;
  flex-direction: column;
}

.ubx-contact-method {
  display: flex;
  align-items: center;
  gap: 20px;
  padding: 20px 0;
  border-bottom: 1px solid var(--ubx-border);
  text-decoration: none;
  color: var(--ubx-cream);
  transition: color var(--ubx-duration-fast) var(--ubx-ease-precise);
}

.ubx-contact-method:hover { color: var(--ubx-cyan); }

.ubx-contact-method-label {
  font-family: var(--ubx-mono);
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ubx-text-muted);
  min-width: 72px;
}

.ubx-contact-method-value {
  font-size: 0.95rem;
  font-weight: 500;
}

.ubx-form {
  border: 1px solid var(--ubx-border);
  padding: 36px;
  background: var(--ubx-dark);
}

.ubx-form .form-control {
  border-radius: 0 !important;
  border: 1px solid var(--ubx-border-strong) !important;
  padding: 14px 16px !important;
  font-size: 0.95rem !important;
  background: var(--ubx-graphite) !important;
  color: var(--ubx-cream) !important;
  transition: border-color var(--ubx-duration-fast) var(--ubx-ease-precise) !important;
}

.ubx-form .form-control::placeholder { color: var(--ubx-dim) !important; }

.ubx-form .form-control:focus {
  border-color: var(--ubx-cyan-40) !important;
  box-shadow: 0 0 0 1px var(--ubx-cyan-06) !important;
  outline: none !important;
}

.ubx-form .form-label {
  font-family: var(--ubx-mono) !important;
  font-size: 0.68rem !important;
  font-weight: 500 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.12em !important;
  color: var(--ubx-text-muted) !important;
  margin-bottom: 8px !important;
}

@media (max-width: 767.98px) {
  .ubx-contact-grid {
    grid-template-columns: 1fr;
    gap: var(--ubx-space-2xl);
  }
  .ubx-form { padding: 24px 20px; }
  .ubx-contact-method {
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    padding: 16px 0;
  }
  .ubx-contact-method-label { min-width: auto; }
}


/* -----------------------------------------------------------------
   18. FOOTER
   ----------------------------------------------------------------- */

.ubx-footer {
  background: var(--ubx-void);
  border-top: 1px solid var(--ubx-border);
  color: var(--ubx-text-muted);
  padding: var(--ubx-space-3xl) 0 var(--ubx-space-xl);
}

.ubx-footer a {
  color: var(--ubx-text-secondary);
  text-decoration: none;
  transition: color var(--ubx-duration-fast) var(--ubx-ease-precise);
}

.ubx-footer a:hover { color: var(--ubx-cyan); }

.ubx-footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: var(--ubx-space-2xl);
  margin-bottom: var(--ubx-space-3xl);
}

.ubx-footer-brand p {
  font-size: 0.88rem;
  line-height: 1.6;
  margin-top: 14px;
  max-width: 300px;
}

.ubx-footer-title {
  font-family: var(--ubx-mono);
  font-size: 0.65rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--ubx-dim);
  margin-bottom: 16px;
}

.ubx-footer-links {
  list-style: none;
  padding: 0;
  margin: 0;
}

.ubx-footer-links li { margin-bottom: 10px; }
.ubx-footer-links a { font-size: 0.88rem; }

.ubx-footer-bottom {
  padding-top: var(--ubx-space-xl);
  border-top: 1px solid var(--ubx-border);
  font-size: 0.75rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  color: var(--ubx-dim);
}

.ubx-footer-bottom a { color: var(--ubx-dim); }
.ubx-footer-bottom a:hover { color: var(--ubx-cyan); }

@media (max-width: 767.98px) {
  .ubx-footer-grid { grid-template-columns: 1fr 1fr; gap: var(--ubx-space-xl); }
  .ubx-footer-bottom { flex-direction: column; gap: 10px; text-align: center; }
}
@media (max-width: 575.98px) {
  .ubx-footer-grid { grid-template-columns: 1fr; }
}


/* -----------------------------------------------------------------
   19. UTILITY
   ----------------------------------------------------------------- */

.ubx-mb-0 { margin-bottom: 0; }
.ubx-mb-8 { margin-bottom: 8px; }
.ubx-mb-16 { margin-bottom: 16px; }
.ubx-mb-24 { margin-bottom: 24px; }
.ubx-mb-32 { margin-bottom: 32px; }
.ubx-mb-48 { margin-bottom: 48px; }
.ubx-mb-64 { margin-bottom: 64px; }

.ubx-text-center { text-align: center; }
.ubx-text-accent { color: var(--ubx-cyan); }

.skip-to-content {
  position: absolute;
  left: -9999px;
  top: 16px;
  z-index: 9999;
  padding: 12px 24px;
  background: var(--ubx-cyan);
  color: var(--ubx-void);
  font-weight: 600;
  font-size: 0.82rem;
  text-decoration: none;
}
.skip-to-content:focus { left: 16px; }


/* -----------------------------------------------------------------
   20. COMPREHENSIVE MOBILE
   ----------------------------------------------------------------- */

@media (max-width: 767.98px) {
  .site-header .navbar { padding: 10px 0; }

  .navbar-brand .ubx-logo-white {
    width: 120px !important;
    height: 24px !important;
  }

  .ubx-hero { min-height: auto; }

  .ubx-hero-content { padding: 100px 0 56px; }

  .ubx-hero-overlay {
    background:
      linear-gradient(180deg, rgba(8,9,12,0.5) 0%, rgba(8,9,12,0.1) 35%, rgba(8,9,12,0.9) 100%),
      linear-gradient(90deg, rgba(8,9,12,0.9) 0%, rgba(8,9,12,0.3) 100%);
  }

  .ubx-t-display { font-size: 2.2rem; line-height: 1.08; }
  .ubx-t-h2 { font-size: 1.5rem; }
  .ubx-t-h3 { font-size: 1.2rem; }

  .ubx-hero-sub { font-size: 1.05rem; margin-bottom: 28px; }

  .ubx-hero .ubx-btn {
    width: 100%;
    justify-content: center;
    padding: 13px 20px;
  }

  .ubx-hero-metrics {
    gap: 16px;
    margin-top: 32px;
    padding-top: 20px;
  }

  .ubx-hero-metric-value { font-size: 0.88rem; }
  .ubx-hero-metric-label { font-size: 0.6rem; }

  .ubx-section { padding: 56px 0; }
  .ubx-label { font-size: 0.65rem; }

  .ubx-arch-canvas { height: 240px !important; }

  .ubx-cta-section { padding: var(--ubx-space-3xl) 0; }
  .ubx-cta-section h2 { font-size: 1.45rem; }

  .ubx-faq-item summary { padding: 20px 0; font-size: 0.92rem; }
  .ubx-faq-answer { font-size: 0.85rem; }

  .ubx-footer { padding: 40px 0 24px; }
}

@media (max-width: 374.98px) {
  .ubx-t-display { font-size: 1.85rem; }
  .ubx-hero-content { padding: 80px 0 40px; }
  .ubx-hero-metrics { flex-direction: column; gap: 10px; }
  .ubx-hero-metric {
    flex-direction: row;
    justify-content: space-between;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--ubx-border);
  }
}


/* -----------------------------------------------------------------
   21. REDUCED MOTION
   ----------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .ubx-reveal, .ubx-snap { opacity: 1; transform: none; }
}


/* -----------------------------------------------------------------
   22. PRINT
   ----------------------------------------------------------------- */

@media print {
  body { background: #fff !important; color: #000 !important; }
  .ubx-hero { min-height: auto !important; background: #fff !important; color: #000 !important; }
  .ubx-hero-canvas, .ubx-hero-overlay, .site-header, .ubx-footer,
  .ubx-arch-visual, .ubx-grid-bg, .ubx-grid-dots { display: none !important; }
}
