/* Smartphone layout
 *
 * The desktop design remains the source of truth. These rules only improve
 * hierarchy, touch ergonomics and overflow handling on narrow viewports.
 * They intentionally do not hide or rewrite editorial content.
 */

@media (max-width: 720px) {
  :root {
    --nv-mobile-primary: #1474b8;
    --nv-mobile-secondary: #2b3094;
    --nv-mobile-success: #16a34a;
    --nv-mobile-warning: #d97706;
    --nv-mobile-danger: #dc2626;
    --nv-mobile-surface: #fff;
    --nv-mobile-text: #0e0e12;
    --nv-mobile-muted: #5c5c66;
    --nv-mobile-primary-ink: #1474b8;
    --nv-mobile-secondary-ink: #1474b8;
    --nv-mobile-gutter: 24px;
    --nv-mobile-section: 64px;
    --nv-mobile-card-gap: 16px;
    --nv-mobile-radius: 8px;
  }

  html {
    scroll-padding-top: 72px;
  }

  body {
    min-width: 320px;
    color: var(--nv-mobile-text);
    font-family: 'Chakra Petch', system-ui, sans-serif;
    font-size: 16px;
    line-height: 1.6;
    overflow-x: clip;
  }

  section[id] {
    scroll-margin-top: 72px;
  }

  img,
  svg,
  video,
  canvas,
  image-slot,
  robot-3d {
    max-width: 100%;
  }

  main h1,
  main h2,
  main h3,
  main p,
  main a,
  footer a {
    overflow-wrap: break-word;
  }

  main h1 {
    color: var(--nv-mobile-text) !important;
    font-family: 'Chakra Petch', system-ui, sans-serif !important;
    font-size: 32px !important;
    line-height: 1.04 !important;
    letter-spacing: -0.02em !important;
  }

  main h2 {
    font-family: 'Chakra Petch', system-ui, sans-serif !important;
    font-size: 24px !important;
    line-height: 1.08 !important;
  }

  main h3 {
    font-family: 'Chakra Petch', system-ui, sans-serif !important;
    font-size: 20px !important;
  }

  /* A stable 8/16/24/32 rhythm keeps the long single-page layout scannable. */
  main [data-screen-label] {
    padding-top: var(--nv-mobile-section) !important;
    padding-bottom: var(--nv-mobile-section) !important;
  }

  main [data-screen-label^="Hero"] {
    padding-top: 40px !important;
    padding-bottom: 56px !important;
  }

  main [data-screen-label="Kontakt-CTA"] {
    padding-top: 32px !important;
    padding-bottom: 56px !important;
  }

  main [data-screen-label] > div[style*="max-width:1280px"],
  footer > div[style*="max-width:1280px"] {
    padding-right: var(--nv-mobile-gutter) !important;
    padding-left: var(--nv-mobile-gutter) !important;
  }

  /* Header and navigation: thumb-sized controls and a compact first row. */
  header > div {
    height: 64px !important;
    padding-right: 16px !important;
    padding-left: 16px !important;
    gap: 12px !important;
  }

  header a[aria-label="NUVITEC Startseite"] {
    gap: 8px !important;
  }

  header a[aria-label="NUVITEC Startseite"] svg {
    width: 36px;
    height: auto;
  }

  header a[aria-label="NUVITEC Startseite"] img {
    width: 70px !important;
  }

  [data-burger] {
    display: flex !important;
    width: 44px !important;
    height: 44px !important;
    flex: 0 0 44px;
    border-radius: 8px !important;
    background: var(--nv-mobile-surface) !important;
    touch-action: manipulation;
  }

  [data-menu-panel] > div:first-child {
    min-height: 64px;
    padding: 8px 16px !important;
  }

  [data-menu-panel] > div:first-child button {
    width: 44px !important;
    height: 44px !important;
    border-radius: 8px !important;
  }

  [data-menu-grid] {
    grid-template-columns: 1fr !important;
    gap: 32px !important;
    align-content: start !important;
    padding: 12px var(--nv-mobile-gutter) 32px !important;
  }

  [data-menu-col] a {
    display: flex !important;
    align-items: center;
    min-height: 44px;
    padding: 12px 0 !important;
    font-size: 16px !important;
  }

  [data-menu-panel] > div:last-child {
    align-items: stretch !important;
    padding: 24px var(--nv-mobile-gutter) calc(24px + env(safe-area-inset-bottom)) !important;
  }

  [data-menu-actions] {
    width: 100%;
    flex-direction: column;
    gap: 12px !important;
  }

  [data-menu-actions] a {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 48px;
    padding: 12px 16px !important;
    text-align: center;
  }

  /* Primary hero: text first, calm two-column statistics, compact robot. */
  [data-hero-grid] {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 32px !important;
  }

  [data-hero-text] > span:first-child {
    max-width: 100%;
    padding: 8px 12px !important;
    border-color: color-mix(in srgb, var(--nv-mobile-primary) 45%, transparent) !important;
    background: color-mix(in srgb, var(--nv-mobile-primary) 12%, transparent) !important;
    color: var(--nv-mobile-primary-ink) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 12px !important;
    line-height: 1.4;
  }

  [data-hero-text] h1 {
    margin-top: 24px !important;
  }

  [data-hero-text] > p {
    margin-top: 16px !important;
    color: var(--nv-mobile-muted) !important;
    font-size: 16px !important;
    line-height: 1.65 !important;
  }

  [data-hero-stats] {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 24px 16px !important;
    margin-top: 24px !important;
    padding-bottom: 24px !important;
  }

  [data-hero-stats] > div > div:first-child {
    font-size: 32px !important;
  }

  [data-hero-actions] {
    display: grid !important;
    grid-template-columns: 1fr;
    gap: 12px !important;
    margin-top: 24px !important;
  }

  [data-hero-actions] a {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 50px;
    padding: 12px 16px !important;
    text-align: center;
  }

  [data-hero-visual] {
    width: min(78vw, 300px) !important;
    max-width: 300px !important;
  }

  [data-hero-visual] [style*="aspect-ratio:4/5"] {
    top: -12px !important;
  }

  /* The desktop orbit becomes a clear touch list instead of tiny moving nodes. */
  [data-orbital] {
    height: auto !important;
    overflow: visible !important;
    border-radius: 0 !important;
  }

  [data-orbital] > span,
  [data-orbital] > [data-orbit-core] {
    display: none !important;
  }

  [data-orbit-hint] {
    position: static !important;
    display: block !important;
    margin-top: 16px;
    color: var(--nv-mobile-muted) !important;
    font-family: 'JetBrains Mono', monospace !important;
    font-size: 12px !important;
  }

  [data-orbit-stage] {
    position: static !important;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
    width: 100% !important;
    height: auto !important;
  }

  [data-orbit-node] {
    position: static !important;
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr);
    align-items: start !important;
    min-width: 0;
    min-height: 96px;
    padding: 16px !important;
    gap: 12px !important;
    transform: none !important;
    opacity: 1 !important;
    z-index: auto !important;
    border: 1px solid color-mix(in srgb, var(--nv-mobile-primary) 28%, transparent);
    border-radius: var(--nv-mobile-radius);
    background: var(--nv-mobile-surface);
    box-shadow: 0 16px 38px -34px rgba(14, 14, 18, 0.5);
    touch-action: manipulation;
  }

  [data-orbit-node] > span:first-child {
    width: 44px !important;
    height: 44px !important;
    flex: 0 0 44px;
    transform: none !important;
    border: 1px solid var(--nv-mobile-primary) !important;
    background: var(--nv-mobile-text) !important;
  }

  [data-orbit-node] > span:first-child > span {
    font-size: 24px !important;
  }

  [data-orbit-node] > span:nth-child(2) {
    display: none !important;
  }

  [data-orbit-node] > span:nth-child(3) {
    position: static !important;
    display: block !important;
    width: auto !important;
    padding: 0 !important;
    transform: none !important;
    opacity: 1 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: none !important;
    backdrop-filter: none !important;
    color: var(--nv-mobile-muted) !important;
    text-align: left !important;
    pointer-events: none;
  }

  [data-orbit-node] > span:nth-child(3) > span:first-child {
    margin-bottom: 4px !important;
    color: var(--nv-mobile-text) !important;
    font-family: 'Chakra Petch', system-ui, sans-serif !important;
    font-size: 16px !important;
  }

  [data-orbit-node] > span:nth-child(3) > span:nth-child(2) {
    color: var(--nv-mobile-muted) !important;
    font-size: 14px !important;
    line-height: 1.45 !important;
  }

  [data-orbit-node] > span:nth-child(3) > span:last-child {
    margin-top: 8px !important;
    color: var(--nv-mobile-primary-ink) !important;
  }

  /* All structural grids collapse before columns become cramped. */
  [data-benefit-grid],
  [data-steps-grid],
  [data-usecase-grid],
  [data-trust-grid],
  [data-stats-grid],
  [data-footer-grid],
  [data-dash-grid],
  [data-two-col],
  [data-infra-cards],
  [data-infra-tiles],
  [data-monitoring-box],
  [data-cloud-grid],
  [data-bots-grid],
  [data-e2e-grid],
  [data-fokus-grid],
  [data-kernfelder-grid],
  [data-warumki-grid],
  [data-refs-grid],
  [data-sicher-grid],
  [data-notfall-grid],
  [data-benefits-grid],
  [data-history-grid],
  [data-team-head],
  [data-team-grid],
  [data-jobs-grid],
  [data-news-grid],
  [data-termin-grid] {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: var(--nv-mobile-card-gap) !important;
  }

  [data-dash-cell],
  [data-dash-wide] {
    grid-column: 1 / -1 !important;
  }

  [data-history-intro] {
    position: static !important;
  }

  [data-values-grid] > div {
    grid-template-columns: 48px minmax(0, 1fr) !important;
    align-items: start !important;
  }

  [data-values-grid] > div > p {
    grid-column: 1 / -1 !important;
  }

  /* Marquees become user-controlled, snap-scrolling card rails on touch. */
  [data-svc-section] div:has(> [data-svc-track]) {
    overflow: visible !important;
    -webkit-mask: none !important;
    mask: none !important;
  }

  [data-svc-track] {
    width: 100% !important;
    max-width: 100%;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: inline mandatory;
    scroll-padding-inline: var(--nv-mobile-gutter);
    animation: none !important;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  [data-svc-track]::-webkit-scrollbar {
    display: none;
  }

  [data-svc-track] > [data-svc] {
    width: min(82vw, 300px) !important;
    scroll-snap-align: start;
  }

  /* Testimonials use the full card width without clipped side previews. */
  [data-testi-stage] {
    height: 420px !important;
    border-radius: var(--nv-mobile-radius) !important;
  }

  [data-testi-stage] > div {
    width: 100% !important;
    height: 100% !important;
    padding: 24px !important;
    border-radius: var(--nv-mobile-radius) !important;
  }

  [data-section="testimonials"] > div:first-child {
    align-items: flex-start !important;
    margin-bottom: 24px !important;
  }

  [data-section="testimonials"] > div:first-child button {
    width: 48px !important;
    height: 48px !important;
  }

  /* Long diagrams remain legible instead of being scaled to unreadable text. */
  [data-timeline] {
    margin-right: calc(var(--nv-mobile-gutter) * -1);
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    padding-right: var(--nv-mobile-gutter);
    padding-bottom: 8px;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }

  [data-timeline]::-webkit-scrollbar {
    display: none;
  }

  [data-timeline] svg {
    width: 720px !important;
    max-width: none;
  }

  /* Forms must not trigger iOS zoom and controls remain comfortably tappable. */
  input,
  textarea,
  select,
  button {
    font-family: 'Chakra Petch', system-ui, sans-serif !important;
    font-size: 16px !important;
  }

  input:not([type="checkbox"]):not([type="radio"]),
  select,
  form button {
    min-height: 48px;
  }

  [data-booking-form] {
    grid-template-columns: 1fr !important;
  }

  [data-booking-form] [data-span2] {
    grid-column: 1 / -1 !important;
  }

  [data-booking-form] button[type="submit"] {
    width: 100%;
    justify-content: center;
  }

  /* Fixed desktop dialogs turn into scrollable bottom sheets. */
  main [style*="position:fixed"][style*="z-index:90"] {
    align-items: flex-end !important;
    padding: 0 !important;
  }

  main [style*="position:fixed"][style*="z-index:90"] > div {
    max-height: 90svh;
    overflow-y: auto;
    border-radius: 8px 8px 0 0 !important;
    padding: 32px var(--nv-mobile-gutter) calc(32px + env(safe-area-inset-bottom)) !important;
  }

  /* Pill CTAs fit their container and never leave a sliver off-screen. */
  main a[style*="border-radius:999px"] {
    max-width: 100%;
    min-height: 48px;
    justify-content: center;
    text-align: center;
  }

  footer {
    padding: 64px 0 calc(32px + env(safe-area-inset-bottom)) !important;
  }

  [data-footer-grid] {
    gap: 32px !important;
  }

  footer a[aria-label] {
    width: 44px !important;
    height: 44px !important;
  }

  footer > div > div:last-child {
    align-items: flex-start !important;
  }

  footer > div > div:last-child > div {
    gap: 16px 24px !important;
  }
}

@media (max-width: 420px) {
  :root {
    --nv-mobile-gutter: 16px;
    --nv-mobile-section: 56px;
  }

  [data-orbit-node] {
    padding: 16px !important;
  }

  [data-hero-visual] {
    width: min(82vw, 280px) !important;
  }

  [data-news-row] {
    grid-template-columns: 88px minmax(0, 1fr) !important;
    gap: 16px !important;
  }

  [data-testi-stage] {
    height: 440px !important;
  }
}

@media (hover: none) and (pointer: coarse) {
  a,
  button,
  summary,
  [role="button"] {
    touch-action: manipulation;
    -webkit-tap-highlight-color: rgba(20, 116, 184, 0.14);
  }

  [style-hover] {
    transform: none !important;
  }
}

/* The local simulator has a desktop pointer but should use the same interaction
 * behavior as a coarse touchscreen. The attribute is injected only inside the
 * same-origin preview iframe; it never appears on the production page. */
html[data-mobile-simulator] a,
html[data-mobile-simulator] button,
html[data-mobile-simulator] summary,
html[data-mobile-simulator] [role="button"] {
  touch-action: manipulation;
  -webkit-tap-highlight-color: rgba(20, 116, 184, 0.14);
}

html[data-mobile-simulator] [style-hover] {
  transform: none !important;
}
