/* UVForge – uvforge.app. Abgeleitet aus docs/website-mockups/01-lichtlabor.html */
  :root {
    --ink: #0d0f14;
    --ink-2: #3b4150;
    --ink-3: #6b7282;
    --line: #e6e8ee;
    --paper: #ffffff;
    --mist: #f6f7fa;
    --violet: #7c3aed;
    --violet-2: #a855f7;
    --cyan: #06b6d4;
    --cyan-2: #22d3ee;
    --teal: #2bb5a0;
    --radius: 22px;
    --shadow-device: 0 60px 120px -40px rgba(40, 20, 90, .35), 0 30px 60px -30px rgba(10, 20, 40, .35);
    --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", "Inter", "Cantarell", "Noto Sans", Roboto, "Helvetica Neue", Arial, sans-serif;
    --mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", "DejaVu Sans Mono", Menlo, Consolas, monospace;
    --maxw: 1180px;
  }
  *, *::before, *::after { box-sizing: border-box; }
  html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
  body {
    margin: 0;
    font-family: var(--font);
    color: var(--ink);
    background: var(--paper);
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
  }
  img { display: block; max-width: 100%; }
  a { color: inherit; }
  .wrap { width: min(var(--maxw), 100% - 48px); margin-inline: auto; }

  /* ---------- Licht-Glow (folgt der Scrollposition) ---------- */
  .glow {
    position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
  }
  .glow span {
    position: absolute; width: 90vmax; height: 90vmax; border-radius: 50%;
    will-change: transform, opacity;
  }
  .glow .g-violet {
    left: -30vmax; top: -40vmax;
    background: radial-gradient(closest-side, rgba(168, 85, 247, .30), rgba(124, 58, 237, .12) 45%, rgba(124, 58, 237, 0) 72%);
  }
  .glow .g-cyan {
    right: -35vmax; top: -10vmax;
    background: radial-gradient(closest-side, rgba(34, 211, 238, .28), rgba(6, 182, 212, .10) 45%, rgba(6, 182, 212, 0) 72%);
  }
  .glow .g-pink {
    left: 20vw; top: 40vh; width: 60vmax; height: 60vmax;
    background: radial-gradient(closest-side, rgba(236, 72, 153, .10), rgba(236, 72, 153, 0) 70%);
  }
  main, header, footer { position: relative; z-index: 1; }

  /* ---------- Navigation ---------- */
  .nav {
    position: fixed; top: 0; left: 0; right: 0; z-index: 50;
    backdrop-filter: saturate(1.6) blur(18px);
    -webkit-backdrop-filter: saturate(1.6) blur(18px);
    background: rgba(255, 255, 255, .72);
    border-bottom: 1px solid rgba(13, 15, 20, .06);
  }
  .nav .wrap { display: flex; align-items: center; gap: 28px; height: 60px; }
  .brand { display: flex; align-items: center; gap: 10px; font-weight: 700; letter-spacing: -.01em; text-decoration: none; font-size: 17px; }
  .brand img { width: 28px; height: 28px; border-radius: 7px; }
  .nav nav { display: flex; gap: 24px; margin-left: auto; font-size: 14px; color: var(--ink-2); }
  .nav nav a { text-decoration: none; transition: color .2s; }
  .nav nav a:hover { color: var(--ink); }
  .nav .cta-small {
    font-size: 13px; font-weight: 600; text-decoration: none; padding: 7px 14px; border-radius: 999px;
    background: var(--ink); color: #fff;
  }

  /* ---------- Buttons ---------- */
  .btn {
    display: inline-flex; align-items: center; gap: 10px;
    padding: 14px 24px; border-radius: 999px; font-weight: 600; font-size: 16px; text-decoration: none;
    transition: transform .25s ease, box-shadow .25s ease, background .25s;
  }
  .btn-primary { background: var(--ink); color: #fff; box-shadow: 0 10px 30px -12px rgba(13, 15, 20, .5); }
  .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 16px 36px -14px rgba(124, 58, 237, .6); }
  .btn-ghost { color: var(--ink); background: rgba(255, 255, 255, .7); border: 1px solid var(--line); }
  .btn-ghost:hover { transform: translateY(-2px); background: #fff; }
  .btn svg { width: 18px; height: 18px; }

  /* ---------- Hero ---------- */
  .hero { position: relative; height: 260vh; }
  .hero-stage {
    position: sticky; top: 0; height: 100vh; overflow: hidden;
    perspective: 1700px; perspective-origin: 50% 30%;
  }
  .hero-copy {
    position: absolute; left: 0; right: 0; top: calc(60px + 9vh);
    text-align: center; z-index: 4; will-change: transform, opacity;
  }
  .eyebrow {
    display: inline-flex; align-items: center; gap: 8px;
    font-size: 13px; font-weight: 600; color: var(--violet);
    padding: 6px 14px 6px 8px; border-radius: 999px;
    background: rgba(124, 58, 237, .07); border: 1px solid rgba(124, 58, 237, .14);
  }
  .eyebrow i { width: 8px; height: 8px; border-radius: 50%; background: linear-gradient(135deg, var(--violet-2), var(--cyan-2)); box-shadow: 0 0 10px var(--violet-2); }
  .hero h1 {
    margin: 22px auto 0; max-width: 15ch;
    font-size: clamp(42px, 7.4vw, 96px); line-height: 1.0; letter-spacing: -.045em; font-weight: 700;
  }
  .hero h1 .uv {
    background: linear-gradient(100deg, var(--violet) 10%, var(--violet-2) 40%, var(--cyan) 75%, var(--cyan-2));
    -webkit-background-clip: text; background-clip: text; color: transparent;
  }
  .hero .lead {
    margin: 22px auto 0; max-width: 40em; font-size: clamp(17px, 1.6vw, 20px); color: var(--ink-2);
  }
  .hero .actions { margin-top: 30px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }

  .device-rig {
    position: absolute; left: 50%; top: 0; z-index: 3;
    width: min(1080px, 90vw, calc((100vh - 130px) * 1.5));
    transform-style: preserve-3d; transform-origin: 50% 100%;
    will-change: transform;
    margin-left: calc(min(1080px, 90vw, calc((100vh - 130px) * 1.5)) / -2);
  }
  .laptop-screen {
    position: relative; padding: 1.4% 1.4% 2.2%;
    background: linear-gradient(180deg, #1b1e25, #0e1015);
    border-radius: 18px 18px 6px 6px;
    box-shadow: var(--shadow-device), inset 0 0 0 1px rgba(255, 255, 255, .08);
  }
  .laptop-screen::before { /* Kamera */
    content: ""; position: absolute; top: .55%; left: 50%; width: 6px; height: 6px; margin-left: -3px;
    border-radius: 50%; background: #2a2f39; box-shadow: inset 0 0 0 1.5px #12151a;
  }
  .laptop-screen img { width: 100%; border-radius: 4px; aspect-ratio: 1910 / 1238; object-fit: cover; }
  .laptop-screen .sheen {
    position: absolute; inset: 1.4% 1.4% 2.2%; border-radius: 4px; pointer-events: none;
    background: linear-gradient(115deg, rgba(255, 255, 255, .12) 0%, rgba(255, 255, 255, 0) 32%);
    will-change: opacity;
  }
  .laptop-base {
    position: relative; height: 16px; margin: 0 -7%;
    background: linear-gradient(180deg, #e9ebf0 0%, #cfd3db 55%, #a9aeb8 100%);
    border-radius: 2px 2px 14px 14px;
    box-shadow: 0 30px 40px -20px rgba(20, 20, 40, .45);
  }
  .laptop-base::before {
    content: ""; position: absolute; top: 0; left: 50%; width: 15%; height: 6px; transform: translateX(-50%);
    background: #b8bcc5; border-radius: 0 0 10px 10px;
  }

  /* Schwebende Druckbeispiele */
  .floater { position: absolute; will-change: transform; }
  .layer-back { z-index: 1; }
  .layer-mid { z-index: 2; }
  .layer-front { z-index: 5; }

  .obj-coaster {
    width: 100%; aspect-ratio: 1; border-radius: 50%; position: relative;
    background:
      radial-gradient(circle at 30% 25%, rgba(255, 255, 255, .25), rgba(255, 255, 255, 0) 40%),
      repeating-radial-gradient(circle at 50% 50%, #c79a6b 0 2px, #b8875a 2px 5px, #c99f71 5px 7px);
    box-shadow: 0 30px 50px -18px rgba(70, 40, 20, .45), inset 0 -6px 12px rgba(80, 45, 20, .35), inset 0 3px 4px rgba(255, 255, 255, .35);
  }
  .obj-coaster img { position: absolute; inset: 9%; width: 82%; border-radius: 50%; filter: saturate(1.05); }
  .obj-coaster::after, .obj-phone::after, .obj-tile::after, .obj-sign::after {
    content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
    background: linear-gradient(125deg, rgba(255, 255, 255, .55) 0%, rgba(255, 255, 255, .0) 30%, rgba(255, 255, 255, 0) 62%, rgba(255, 255, 255, .25) 74%, rgba(255, 255, 255, 0) 86%);
    mix-blend-mode: screen;
  }
  .obj-phone {
    width: 100%; aspect-ratio: 0.49; border-radius: 22% / 11%; position: relative; overflow: hidden;
    background: #ece6dc;
    box-shadow: 0 34px 60px -20px rgba(20, 30, 40, .45), inset 0 0 0 2px rgba(255, 255, 255, .6), inset 0 -4px 8px rgba(0, 0, 0, .12);
  }
  .obj-phone img { position: absolute; left: -30%; top: 22%; width: 160%; max-width: none; }
  .obj-phone .cam {
    position: absolute; top: 4.5%; left: 7%; width: 40%; aspect-ratio: 1; border-radius: 26%;
    background: linear-gradient(145deg, #2a2d33, #121418);
    box-shadow: 0 4px 10px rgba(0, 0, 0, .35), inset 0 0 0 2px rgba(255, 255, 255, .08);
  }
  .obj-phone .cam::before, .obj-phone .cam::after {
    content: ""; position: absolute; width: 36%; aspect-ratio: 1; border-radius: 50%;
    background: radial-gradient(circle at 35% 35%, #4b5568, #07080a 60%); box-shadow: 0 0 0 2px #3a3f48;
  }
  .obj-phone .cam::before { top: 10%; left: 10%; }
  .obj-phone .cam::after { bottom: 10%; right: 10%; }
  .obj-tile {
    width: 100%; aspect-ratio: 1; border-radius: 8px; position: relative; padding: 5%;
    background: linear-gradient(145deg, #ffffff, #eef0f3);
    box-shadow: 0 34px 60px -24px rgba(20, 30, 40, .4), inset 0 0 0 1px rgba(0, 0, 0, .05), inset 0 -5px 0 rgba(0, 0, 0, .05);
  }
  .obj-tile img { width: 100%; border-radius: 4px; }
  .obj-sign {
    width: 100%; aspect-ratio: 2 / 1.08; border-radius: 10px; position: relative; padding: 6%;
    background:
      repeating-linear-gradient(92deg, rgba(110, 70, 35, .0) 0 9px, rgba(110, 70, 35, .12) 9px 10px, rgba(110, 70, 35, 0) 10px 23px),
      linear-gradient(180deg, #dcb88d, #c99c6b);
    box-shadow: 0 34px 60px -24px rgba(70, 40, 20, .45), inset 0 2px 0 rgba(255, 255, 255, .35), inset 0 -6px 10px rgba(80, 45, 20, .25);
  }
  .obj-sign img { width: 100%; border-radius: 6px; filter: drop-shadow(0 1px 0 rgba(255, 255, 255, .6)) drop-shadow(0 3px 2px rgba(60, 30, 10, .35)); }

  .hero-scroll-hint {
    position: absolute; bottom: 26px; left: 50%; transform: translateX(-50%); z-index: 6;
    font-size: 12px; color: var(--ink-3); letter-spacing: .08em; text-transform: uppercase;
    display: flex; flex-direction: column; align-items: center; gap: 8px;
  }
  .hero-scroll-hint i { width: 1px; height: 34px; background: linear-gradient(var(--ink-3), transparent); }

  /* ---------- Faktenleiste ---------- */
  .facts { padding: 40px 0 20px; }
  .facts ul {
    list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr);
    border-top: 1px solid var(--line); border-bottom: 1px solid var(--line);
  }
  .facts li { padding: 28px 24px; border-left: 1px solid var(--line); }
  .facts li:first-child { border-left: 0; padding-left: 0; }
  .facts b { display: block; font-size: 22px; letter-spacing: -.02em; }
  .facts span { font-size: 14px; color: var(--ink-3); }

  /* ---------- Sektionen allgemein ---------- */
  section.block { padding: 140px 0; }
  .kicker { font-size: 13px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--violet); }
  .h2 { font-size: clamp(34px, 4.6vw, 60px); line-height: 1.04; letter-spacing: -.035em; margin: 14px 0 0; font-weight: 700; }
  .sub { font-size: 19px; color: var(--ink-2); max-width: 36em; margin: 20px 0 0; }
  .center { text-align: center; }
  .center .sub { margin-inline: auto; }

  .reveal { opacity: 0; transform: translateY(32px); transition: opacity .9s cubic-bezier(.2, .7, .2, 1), transform .9s cubic-bezier(.2, .7, .2, 1); }
  .reveal.in { opacity: 1; transform: none; }
  .reveal.d1 { transition-delay: .08s; } .reveal.d2 { transition-delay: .16s; } .reveal.d3 { transition-delay: .24s; }

  /* ---------- Ablauf mit Sticky-Screenshot ---------- */
  .flow { padding-top: 120px; }
  .flow-grid { display: grid; grid-template-columns: 1.25fr .75fr; gap: 72px; margin-top: 70px; }
  .flow-sticky { position: sticky; top: 0; height: 100vh; display: flex; align-items: center; }
  .window {
    position: relative; width: 100%; border-radius: 14px; overflow: hidden;
    background: #14171c; box-shadow: var(--shadow-device), 0 0 0 1px rgba(13, 15, 20, .08);
  }
  .window-bar {
    height: 34px; display: flex; align-items: center; gap: 7px; padding: 0 14px;
    background: linear-gradient(180deg, #23272f, #1a1d23); border-bottom: 1px solid #0b0d10;
    font-size: 12px; color: #8b93a1;
  }
  .window-bar i { width: 11px; height: 11px; border-radius: 50%; background: #3a404a; }
  .window-bar span { margin-left: auto; margin-right: auto; padding-right: 40px; }
  .window-shots { position: relative; aspect-ratio: 1910 / 1238; }
  .window-shots img {
    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
    opacity: 0; transform: scale(1.025); transition: opacity .8s ease, transform 1.2s cubic-bezier(.2, .7, .2, 1);
  }
  .window-shots img.on { opacity: 1; transform: none; }
  .flow-tabs { position: absolute; left: 0; right: 0; bottom: -54px; display: flex; gap: 8px; justify-content: center; }
  .flow-tabs b {
    font-size: 13px; font-weight: 600; padding: 6px 14px; border-radius: 999px; color: var(--ink-3);
    background: #fff; border: 1px solid var(--line); transition: all .4s;
  }
  .flow-tabs b.on { color: #fff; background: var(--ink); border-color: var(--ink); }
  .flow-steps { padding: 0; }
  .step { min-height: 100vh; display: flex; flex-direction: column; justify-content: center; opacity: .25; transition: opacity .6s; }
  .step.on { opacity: 1; }
  .step .num {
    width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center; font-weight: 700; color: #fff;
    background: linear-gradient(135deg, var(--violet), var(--cyan)); box-shadow: 0 10px 24px -10px rgba(124, 58, 237, .7);
  }
  .step h3 { font-size: clamp(30px, 3.2vw, 42px); letter-spacing: -.03em; margin: 20px 0 0; line-height: 1.08; }
  .step p { font-size: 18px; color: var(--ink-2); margin: 16px 0 0; }
  .step ul { list-style: none; padding: 0; margin: 24px 0 0; display: grid; gap: 10px; }
  .step li { display: flex; gap: 12px; font-size: 15.5px; color: var(--ink-2); }
  .step li::before {
    content: ""; flex: none; width: 18px; height: 18px; margin-top: 3px; border-radius: 50%;
    background: radial-gradient(circle, #fff 0 3px, transparent 3.5px), linear-gradient(135deg, var(--violet-2), var(--cyan));
  }
  .step .inline-shot { display: none; }

  /* ---------- Mehr Funktionen ---------- */
  .features { background: linear-gradient(180deg, rgba(246, 247, 250, 0), var(--mist) 18%, var(--mist) 82%, rgba(246, 247, 250, 0)); }
  .cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 96px; }
  .card {
    background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 30px;
    transition: transform .4s cubic-bezier(.2, .7, .2, 1), box-shadow .4s;
  }
  .card:hover { transform: translateY(-4px); box-shadow: 0 24px 50px -30px rgba(40, 20, 90, .35); }
  .card .ico {
    width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center;
    background: linear-gradient(135deg, rgba(124, 58, 237, .1), rgba(6, 182, 212, .12)); color: var(--violet);
  }
  .card .ico svg { width: 22px; height: 22px; }
  .card h4 { margin: 18px 0 0; font-size: 19px; letter-spacing: -.015em; }
  .card p { margin: 8px 0 0; color: var(--ink-2); font-size: 15px; }
  code, .code { font-family: var(--mono); font-size: .9em; }
  .card code { background: var(--mist); padding: 1px 6px; border-radius: 6px; }

  /* ---------- Rotation: Papier wickelt sich zum Becher (gepinnt) ---------- */
  .rotary { position: relative; height: 380vh; }
  .rotary-pin { position: sticky; top: 0; height: 100vh; overflow: hidden; display: grid; grid-template-columns: 1.2fr .8fr; align-items: center; }
  .rotary-copy { padding-right: max(24px, calc((100vw - var(--maxw)) / 2)); padding-left: 24px; position: relative; z-index: 2; }
  .rotary-copy .sub { font-size: 18px; }
  .rot-steps { list-style: none; margin: 30px 0 0; padding: 0; display: grid; gap: 4px; max-width: 420px; }
  .rot-steps li { display: flex; gap: 14px; align-items: center; padding: 10px 14px; border-radius: 14px; color: var(--ink-3); font-size: 15px; transition: background .4s, color .4s; }
  .rot-steps li b { display: block; color: inherit; font-weight: 600; }
  .rot-steps li span.n { width: 28px; height: 28px; flex: none; border-radius: 9px; display: grid; place-items: center; font-size: 13px; font-weight: 700; background: var(--mist); color: var(--ink-3); transition: background .4s, color .4s; }
  .rot-steps li.on { background: #fff; color: var(--ink); box-shadow: 0 1px 0 var(--line), 0 18px 40px -26px rgba(40, 20, 90, .35); }
  .rot-steps li.on span.n { background: linear-gradient(135deg, var(--violet), var(--cyan)); color: #fff; }
  .rot-progress { margin-top: 18px; height: 3px; max-width: 420px; border-radius: 3px; background: var(--line); overflow: hidden; }
  .rot-progress i { display: block; height: 100%; width: 100%; transform-origin: left; transform: scaleX(0); background: linear-gradient(90deg, var(--violet), var(--cyan)); }
  .rot-facts { margin-top: 26px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; max-width: 420px; }
  .rot-facts div { background: #fff; border: 1px solid var(--line); border-radius: 16px; padding: 12px 14px; font-size: 14px; color: var(--ink-2); }
  .rot-facts b { display: block; color: var(--ink); font-size: 15px; }

  .mugscene { position: relative; height: 100%; display: grid; place-items: center; perspective: 1600px; perspective-origin: 50% 25%; }
  .mugscene::before { content: ""; position: absolute; width: min(70vh, 680px); aspect-ratio: 1; border-radius: 50%;
    background: radial-gradient(closest-side, rgba(168, 85, 247, .16), rgba(34, 211, 238, .10) 55%, transparent); filter: blur(10px); }
  .mugscale { transform-style: preserve-3d; transform: scale(var(--ms, 1)); }
  .mug { position: relative; width: 0; height: 220px; transform-style: preserve-3d; }
  .strip { position: absolute; top: 0; left: 0; height: 220px; transform-style: preserve-3d; will-change: transform; }
  .strip .f, .strip .b { position: absolute; inset: 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; }
  .strip .f { background-color: #fff; background-repeat: repeat-x; }
  .strip .f::after { content: ""; position: absolute; inset: 0; background: #1b1440; opacity: var(--sh, 0); }
  .strip .b { transform: rotateY(180deg); background: linear-gradient(#efecf9, #e1dcf3); }
  .strip.lock .f { background-image: repeating-linear-gradient(-45deg, rgba(168, 85, 247, .28) 0 6px, rgba(255, 255, 255, .95) 6px 13px) !important; }
  .mug-handle { position: absolute; left: -42px; top: 44px; width: 84px; height: 132px; border: 17px solid #f7f6fb; border-right: none;
    border-radius: 60px 0 0 60px; box-shadow: inset 3px 0 6px rgba(60, 40, 140, .18); opacity: 0; }
  .mugshadow { position: absolute; left: -200px; top: 200px; width: 400px; height: 90px; transform: rotateX(90deg) translateZ(-20px);
    background: radial-gradient(closest-side, rgba(50, 30, 120, .28), transparent); }
  .mlabel { position: absolute; top: -58px; font-size: 13px; font-weight: 600; color: var(--ink-2); white-space: nowrap; padding: 7px 13px;
    border-radius: 999px; background: rgba(255, 255, 255, .9); border: 1px solid var(--line); box-shadow: 0 10px 30px -16px rgba(40, 20, 90, .35); }
  .mlabel.c { left: 0; transform: translateX(-50%); }
  .mlabel.l { top: 236px; transform: translateX(-50%); }
  .mlabel .k { display: inline-block; width: 10px; height: 10px; margin-right: 6px; border-radius: 3px; vertical-align: -1px;
    background: repeating-linear-gradient(-45deg, rgba(168, 85, 247, .55) 0 2px, #fff 2px 4px); }
  @media (max-width: 980px) {
    .rotary-pin { grid-template-columns: 1fr; grid-template-rows: auto 1fr; align-content: start; }
    .rotary-copy { padding: 84px 24px 0; }
    .rotary-copy .sub, .rot-steps, .rot-progress, .rot-facts { display: none; }
  }
  @media (prefers-reduced-motion: reduce) {
    .rotary { height: auto; }
    .rotary-pin { position: relative; height: auto; min-height: 100vh; }
  }

  /* ---------- Galerie ---------- */
  .gallery { overflow: hidden; }
  .shelf {
    position: relative; margin-top: 80px; display: grid; grid-template-columns: repeat(12, 1fr); gap: 28px; align-items: end;
  }
  .piece { position: relative; will-change: transform; }
  .piece figure { margin: 0; }
  .piece figcaption { margin-top: 22px; }
  .piece figcaption b { display: block; font-size: 16px; letter-spacing: -.01em; }
  .piece figcaption span { font-size: 13.5px; color: var(--ink-3); }
  .piece .stage {
    position: relative; display: grid; place-items: center; border-radius: var(--radius);
    background: radial-gradient(120% 90% at 50% 0%, #fff 0%, #f2f3f7 70%); border: 1px solid var(--line);
    padding: 12% 10%; overflow: hidden;
  }
  .piece .stage::before {
    content: ""; position: absolute; left: 10%; right: 10%; bottom: 8%; height: 14%; border-radius: 50%;
    background: radial-gradient(closest-side, rgba(124, 58, 237, .16), rgba(6, 182, 212, 0));
  }
  .p1 { grid-column: span 4; } .p2 { grid-column: span 5; } .p3 { grid-column: span 3; }
  .p4 { grid-column: span 3; } .p5 { grid-column: span 5; } .p6 { grid-column: span 4; }
  .p1 .obj-coaster { width: 72%; }
  .p3 .obj-phone { width: 62%; }
  .p4 .obj-tile { width: 82%; }
  .p6 .obj-sign { width: 92%; }

  .obj-mug { position: relative; width: 70%; aspect-ratio: 1.25; }
  .obj-mug .body {
    position: absolute; left: 0; top: 0; width: 78%; height: 100%; border-radius: 6px 6px 18px 18px / 6px 6px 22px 22px; overflow: hidden;
    background: #fff;
    box-shadow: 0 30px 50px -22px rgba(20, 30, 40, .4);
  }
  .obj-mug .body img { position: absolute; left: -8%; top: 22%; width: 116%; max-width: none; }
  .obj-mug .body::after {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(90deg, rgba(0, 0, 0, .22) 0%, rgba(0, 0, 0, 0) 18%, rgba(255, 255, 255, .5) 30%, rgba(255, 255, 255, 0) 42%, rgba(0, 0, 0, 0) 70%, rgba(0, 0, 0, .28) 100%);
  }
  .obj-mug .body::before {
    content: ""; position: absolute; left: 0; right: 0; top: 0; height: 8%; z-index: 1;
    background: linear-gradient(180deg, #d9dce2, #fff); border-bottom: 1px solid rgba(0, 0, 0, .06);
  }
  .obj-mug .handle {
    position: absolute; right: 0; top: 20%; width: 34%; height: 54%; border-radius: 0 50% 50% 0;
    border: 11px solid #f2f3f5; border-left: 0;
    box-shadow: 6px 10px 20px -10px rgba(0, 0, 0, .35), inset -2px 0 4px rgba(0, 0, 0, .12);
  }

  .obj-pens { display: flex; gap: 14px; align-items: flex-end; transform: rotate(-18deg); }
  .obj-pens i {
    display: block; width: 18px; height: 210px; border-radius: 9px 9px 4px 4px; position: relative;
    box-shadow: 0 20px 26px -14px rgba(0, 0, 0, .4), inset -4px 0 6px rgba(0, 0, 0, .18), inset 3px 0 4px rgba(255, 255, 255, .5);
  }
  .obj-pens i::after { content: ""; position: absolute; left: 50%; bottom: -16px; width: 8px; height: 16px; margin-left: -4px; background: linear-gradient(#bfc4cc, #7d838d); clip-path: polygon(0 0, 100% 0, 60% 100%, 40% 100%); }
  .obj-pens i:nth-child(1) { background: linear-gradient(180deg, #ff7eb3, #ffb86b 60%, #ffe29a); }
  .obj-pens i:nth-child(2) { background: linear-gradient(180deg, #6c3cc7, #3f2a8c); height: 230px; }
  .obj-pens i:nth-child(3) { background: linear-gradient(180deg, #00c2ff, #8b5cf6 55%, #ff3d9a); }
  .obj-pens i:nth-child(4) { background: linear-gradient(180deg, #7cc4a4, #3e8a6f); height: 196px; }
  .obj-pens i:nth-child(5) { background: linear-gradient(180deg, #ffcf3f, #ff8a65); height: 220px; }

  .gallery-note { margin-top: 36px; font-size: 13.5px; color: var(--ink-3); text-align: center; }

  /* ---------- Download ---------- */
  .download { position: relative; }
  .dl-panel {
    position: relative; overflow: hidden; border-radius: 32px; padding: 72px;
    background: #0f1117; color: #e9ebf1;
    display: grid; grid-template-columns: 1.1fr .9fr; gap: 56px; align-items: center;
  }
  .dl-panel::before {
    content: ""; position: absolute; inset: -40%; pointer-events: none;
    background:
      radial-gradient(30% 30% at 25% 30%, rgba(168, 85, 247, .35), transparent 70%),
      radial-gradient(28% 28% at 80% 75%, rgba(34, 211, 238, .28), transparent 70%);
  }
  .dl-panel > * { position: relative; }
  .dl-panel .kicker { color: var(--cyan-2); }
  .dl-panel .h2 { color: #fff; }
  .dl-panel .sub { color: #aab1c0; }
  .dl-symbol { width: 120px; margin-bottom: 26px; filter: drop-shadow(0 10px 30px rgba(168, 85, 247, .5)); }
  .dl-list { display: grid; gap: 12px; }
  .dl-item {
    display: flex; align-items: center; gap: 16px; padding: 18px 20px; border-radius: 16px; text-decoration: none;
    background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .09);
    transition: background .25s, transform .25s;
  }
  .dl-item[aria-disabled="true"] { cursor: default; }
  .dl-item b { display: block; font-size: 16px; color: #fff; }
  .dl-item small { color: #8f97a8; font-size: 13px; }
  .dl-item .tag { margin-left: auto; font-size: 11.5px; font-weight: 600; padding: 4px 10px; border-radius: 999px; color: #c4b5fd; background: rgba(124, 58, 237, .2); white-space: nowrap; }
  .dl-item .tag.ok { color: #67e8f9; background: rgba(6, 182, 212, .16); }
  .dl-item svg { width: 26px; height: 26px; flex: none; color: #c4b5fd; }
  .term {
    margin-top: 18px; border-radius: 14px; padding: 18px 20px; font-family: var(--mono); font-size: 13.5px; line-height: 1.8;
    background: rgba(0, 0, 0, .35); border: 1px solid rgba(255, 255, 255, .08); color: #cfd5e1;
  }
  .term .p { color: var(--teal); user-select: none; }
  .term .c { color: #6f7889; }

  /* ---------- FAQ ---------- */
  .faq-grid { display: grid; grid-template-columns: .8fr 1.2fr; gap: 72px; }
  details { border-bottom: 1px solid var(--line); }
  details:first-of-type { border-top: 1px solid var(--line); }
  summary {
    list-style: none; cursor: pointer; padding: 24px 40px 24px 0; position: relative;
    font-size: 18px; font-weight: 600; letter-spacing: -.01em;
  }
  summary::-webkit-details-marker { display: none; }
  summary::after {
    content: ""; position: absolute; right: 6px; top: 50%; width: 12px; height: 12px; margin-top: -8px;
    border-right: 2px solid var(--ink-3); border-bottom: 2px solid var(--ink-3); transform: rotate(45deg);
    transition: transform .3s;
  }
  details[open] summary::after { transform: rotate(-135deg); margin-top: -2px; }
  details p { margin: 0 0 24px; color: var(--ink-2); font-size: 16px; max-width: 40em; }

  /* ---------- Footer ---------- */
  footer { border-top: 1px solid var(--line); padding: 56px 0 64px; background: #fff; }
  .foot { display: grid; grid-template-columns: 1fr auto; gap: 40px; align-items: start; }
  .foot .brand { font-size: 16px; }
  .foot nav { display: flex; gap: 22px; font-size: 14px; color: var(--ink-2); }
  .foot nav a { text-decoration: none; }
  .legal { margin-top: 30px; font-size: 13px; color: var(--ink-3); max-width: 62em; line-height: 1.6; }

  /* ---------- Responsiv ---------- */
  @media (max-width: 980px) {
    .nav nav { display: none; }
    .nav .cta-small { margin-left: auto; }
    .facts ul { grid-template-columns: repeat(2, 1fr); }
    .facts li:nth-child(3) { border-left: 0; padding-left: 0; }
    .facts li:nth-child(n+3) { border-top: 1px solid var(--line); }
    .flow-grid { grid-template-columns: 1fr; gap: 0; }
    .flow-sticky { display: none; }
    .step { min-height: auto; opacity: 1; padding: 56px 0; }
    .step .inline-shot { display: block; margin-top: 28px; }
    .step .inline-shot img { width: 100%; }
      .cards { grid-template-columns: 1fr 1fr; }
    .shelf { grid-template-columns: repeat(6, 1fr); }
    .p1, .p2, .p3, .p4, .p5, .p6 { grid-column: span 3; }
    .dl-panel { grid-template-columns: 1fr; padding: 44px 28px; }
    .faq-grid { grid-template-columns: 1fr; gap: 32px; }
    section.block { padding: 96px 0; }
  }
  @media (max-width: 640px) {
    .nav .cta-small { display: none; }
    .hero { height: 200vh; }
    .hero-copy { top: calc(60px + 5vh); padding: 0 20px; }
    .facts ul { grid-template-columns: 1fr; }
    .facts li { border-left: 0 !important; padding-left: 0 !important; border-top: 1px solid var(--line); }
    .facts li:first-child { border-top: 0; }
    .cards { grid-template-columns: 1fr; }
    .shelf { grid-template-columns: 1fr; }
    .p1, .p2, .p3, .p4, .p5, .p6 { grid-column: auto; }
    .foot { grid-template-columns: 1fr; }
    .hide-sm { display: none; }
  }

  /* ---------- Reduzierte Bewegung ---------- */
  @media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .hero { height: auto; }
    .hero-stage { position: relative; height: auto; overflow: visible; padding: calc(60px + 9vh) 0 80px; perspective: none; }
    .hero-copy { position: relative; top: 0; }
    .device-rig { position: relative; left: auto; margin: 56px auto 0; transform: none !important; }
    .floater, .hero-scroll-hint { display: none; }
    .reveal { opacity: 1; transform: none; transition: none; }
    .window-shots img { transition: none; transform: none; }
    .piece { transform: none !important; }
    .glow span { transform: none !important; }
  }

  /* ---------- Positionen (aus Inline-Stilen, wegen CSP style-src 'self') ---------- */
  .fl-1 { left: 6%; top: 58%; width: clamp(90px, 11vw, 170px); }
  .fl-2 { right: 7%; top: 64%; width: clamp(110px, 14vw, 220px); }
  .fl-3 { left: 2%; top: 74%; width: clamp(130px, 15vw, 230px); }
  .fl-4 { right: 4%; top: 80%; width: clamp(90px, 10vw, 150px); }
  .fl-5 { left: 18%; top: 96%; width: clamp(80px, 8vw, 130px); }
  .img-square { aspect-ratio: 1; object-fit: cover; }
  .flow-frame { position: relative; width: 100%; }
  .obj-phone img.img-phone-sunset { left: -5%; top: 30%; width: 110%; }
  section.block.faq { padding-top: 60px; }

  /* ---------- Unterseiten (Impressum, Datenschutz, 404) ---------- */
  .page { padding: 140px 0 100px; min-height: 70vh; }
  .prose { max-width: 760px; }
  .prose h1 { margin-bottom: 28px; }
  .prose h2 { font-size: 21px; letter-spacing: -.015em; margin: 36px 0 8px; }
  .prose p { color: var(--ink-2); margin: 0 0 12px; }
  .prose a:not(.btn) { color: var(--violet); }
  .prose code { background: var(--mist); padding: 1px 6px; border-radius: 6px; }
  .lead-small { font-size: 19px; }
  .note-small { font-size: 14px; color: var(--ink-3) !important; }
  .page-404 .btn { margin-top: 18px; }
  @media (max-width: 640px) {
    /* Handy: Druckbeispiele unter die Knöpfe schieben, damit nichts verdeckt wird */
    .fl-1 { top: 74%; } .fl-2 { top: 72%; } .fl-3 { top: 84%; } .fl-4 { top: 86%; }
  }
