/* ════════════════════════════════════════════════════════════════
   LEISTUNGEN · WEBDESIGN — Hero & Section-Animationen
   Konzepte: 12 (Responsive), 14 (Code-Compile), 15 (Wireframe-Morph)
   ════════════════════════════════════════════════════════════════ */

/* ─── Visual-Wrapper (= demo-visual aus hero-strategie) ─── */
.lw-visual {
    position: relative;
    aspect-ratio: 1;
    width: 100%;
    max-width: 520px;
    margin: 0 auto;
}
.lw-visual svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* Hero-Variante: SVG füllt komplett den ld-split-hero-frame */
.ld-split-hero-frame .lw-visual {
    max-width: none;
}

/* Section-Grid für die 2 neuen Argument-Sections (Text + Visual) */
.lw-arg-section {
    padding: 5rem 1.5rem;
    border-top: 1px solid var(--border);
}
.lw-arg-inner {
    max-width: var(--content-max, 1280px);
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 4rem;
    align-items: center;
}
@media (max-width: 900px) {
    .lw-arg-inner { grid-template-columns: 1fr; gap: 2.5rem; }
}
.lw-arg-text .section-label { font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.32em; text-transform: uppercase; color: var(--t3); margin: 0 0 1rem; }
.lw-arg-text h2 { font-family: var(--font-display, var(--font-serif)); font-size: clamp(1.8rem, 3.2vw, 2.6rem); line-height: 1.1; margin: 0 0 1rem; color: var(--t1); }
.lw-arg-text h2 em { color: var(--accent); font-style: italic; }
.lw-arg-text .lead { color: var(--accent); font-style: italic; font-size: 1.05rem; line-height: 1.45; margin: 0 0 0.8rem; }
.lw-arg-text p { color: var(--t2); font-size: 0.98rem; line-height: 1.6; margin: 0 0 1rem; }
.lw-arg-text .lw-pakete-bezug { margin-top: 1.5rem; padding: 0.9rem 1.1rem; border-left: 3px solid var(--accent); background: rgba(127,127,127,0.06); border-radius: 0 4px 4px 0; }
.lw-arg-text .lw-pakete-bezug-lbl { display: block; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.15em; text-transform: uppercase; color: var(--accent); margin-bottom: 0.3rem; }
.lw-arg-text .lw-pakete-bezug-list { font-family: var(--font-mono); font-size: 0.78rem; color: var(--t2); line-height: 1.5; }

/* ═══════════════════════════════════════════════════════════════════════
   TIMELINE-PHASE-ANIMATIONEN (Phase 01 / 03 / 04)
   ═══════════════════════════════════════════════════════════════════════ */

/* ─── Phase 01: Briefing → Sitemap-Tree ─── */
.vis-briefing .briefing-bubble { opacity: 0; animation: vp-bubble 10s ease-in-out infinite; transform-origin: bottom left; transform-box: fill-box; }
.vis-briefing .briefing-tail { opacity: 0; animation: vp-bubble 10s ease-in-out infinite; }
@keyframes vp-bubble {
    0%, 5%   { opacity: 0; transform: scale(0.8); }
    10%      { opacity: 1; transform: scale(1); }
    90%      { opacity: 1; }
    100%     { opacity: 0; }
}
.vis-briefing .briefing-arrow { stroke-dasharray: 80; stroke-dashoffset: 80; animation: vp-draw 10s ease-in-out infinite; animation-delay: 1.5s; }
.vis-briefing .briefing-arrowhead { opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; animation-delay: 2.5s; }
@keyframes vp-draw { 0%, 15%{stroke-dashoffset:80} 30%{stroke-dashoffset:0} 95%{stroke-dashoffset:0} 100%{stroke-dashoffset:80} }
@keyframes vp-fade-in { 0%, 20%{opacity:0} 30%{opacity:1} 95%{opacity:1} 100%{opacity:0} }

.vis-briefing .sitemap-root { opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; animation-delay: 2.8s; }
.vis-briefing .tree-line { stroke-dasharray: 60; stroke-dashoffset: 60; animation: vp-draw-line 10s ease-in-out infinite; }
.vis-briefing .tl-1 { animation-delay: 3.4s; }
.vis-briefing .tl-2 { animation-delay: 3.7s; }
.vis-briefing .tl-3 { animation-delay: 4.0s; }
@keyframes vp-draw-line { 0%, 30%{stroke-dashoffset:60} 40%{stroke-dashoffset:0} 95%{stroke-dashoffset:0} 100%{stroke-dashoffset:60} }

.vis-briefing .tree-child { opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; }
.vis-briefing .tc-1 { animation-delay: 4.2s; }
.vis-briefing .tc-2 { animation-delay: 4.5s; }
.vis-briefing .tc-3 { animation-delay: 4.8s; }

/* ─── Phase 03: Build & QA Terminal + Lighthouse-Score ─── */
.vis-build .term-frame { fill: #1d1f24; stroke: var(--t1); stroke-width: 0.4; stroke-opacity: 0.3; }
html[data-theme-pref="light"] .vis-build .term-frame { fill: #282c34; }
.vis-build .term-line { font-family: var(--font-mono); font-size: 9px; fill: #abb2bf; opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; }
.vis-build .term-prompt { fill: #c678dd; }
.vis-build .term-cmd { fill: #e5e5e5; }
.vis-build .term-step { fill: #d19a66; }
.vis-build .term-ok { fill: #98c379; font-weight: 700; }
.vis-build .term-size { fill: #61afef; }
.vis-build .tl1 { animation-delay: 0.3s; }
.vis-build .tl2 { animation-delay: 1.2s; }
.vis-build .tl3 { animation-delay: 1.8s; }
.vis-build .tl4 { animation-delay: 2.6s; }
.vis-build .tl5 { animation-delay: 3.2s; }
.vis-build .tl6 { animation-delay: 4.0s; }
.vis-build .tl7 { animation-delay: 4.6s; }
.vis-build .tl8 { animation-delay: 5.4s; }
.vis-build .lh-ring-bg { fill: none; stroke: rgba(127, 127, 127, 0.25); stroke-width: 3; }
.vis-build .lh-ring { fill: none; stroke: #3FB950; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 138; stroke-dashoffset: 138; transform: rotate(-90deg); transform-origin: center; transform-box: fill-box; opacity: 0; animation: vp-lh-build 10s ease-in-out infinite; }
@keyframes vp-lh-build {
    0%, 55%  { stroke-dashoffset: 138; opacity: 0; }
    65%      { opacity: 1; stroke-dashoffset: 138; }
    78%      { opacity: 1; stroke-dashoffset: 0; }
    95%      { opacity: 1; stroke-dashoffset: 0; }
    100%     { opacity: 0; }
}
.vis-build .lh-score { font-family: var(--font-mono); font-size: 14px; font-weight: 700; fill: #3FB950; text-anchor: middle; opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; animation-delay: 8s; }
.vis-build .lh-label { font-family: var(--font-mono); font-size: 6px; letter-spacing: 0.12em; fill: var(--t3); text-anchor: middle; opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; animation-delay: 8s; }

/* ─── Phase 04: DNS-Cutover + Users connect ─── */
.vis-launch .server-old { animation: vp-old-fade 10s ease-in-out infinite; transform-origin: center; transform-box: fill-box; }
@keyframes vp-old-fade {
    0%, 10%  { opacity: 1; filter: grayscale(0); }
    35%      { opacity: 1; filter: grayscale(1); }
    55%, 100%{ opacity: 0.3; filter: grayscale(1); }
}
.vis-launch .dns-arrow { stroke-dasharray: 180; stroke-dashoffset: 180; animation: vp-dns 10s ease-in-out infinite; animation-delay: 1s; }
@keyframes vp-dns { 0%, 10%{stroke-dashoffset:180} 40%{stroke-dashoffset:0} 95%{stroke-dashoffset:0} 100%{stroke-dashoffset:180} }
.vis-launch .server-new { opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; animation-delay: 3.5s; }
.vis-launch .lock-badge { opacity: 0; transform-origin: center; transform-box: fill-box; animation: vp-lock 10s ease-in-out infinite; animation-delay: 4.5s; }
@keyframes vp-lock { 0%, 40%{opacity:0;transform:scale(0.5)} 50%{opacity:1;transform:scale(1.2)} 60%, 95%{opacity:1;transform:scale(1)} 100%{opacity:0} }
.vis-launch .user-dot { opacity: 0; animation: vp-fade-in 10s ease-in-out infinite; }
.vis-launch .u1 { animation-delay: 5.5s; }
.vis-launch .u2 { animation-delay: 6.0s; }
.vis-launch .u3 { animation-delay: 6.5s; }
.vis-launch .u4 { animation-delay: 7.0s; }
.vis-launch .user-line { stroke-dasharray: 100; stroke-dashoffset: 100; animation: vp-user-line 10s ease-in-out infinite; }
.vis-launch .ul-1 { animation-delay: 5.5s; }
.vis-launch .ul-2 { animation-delay: 6.0s; }
.vis-launch .ul-3 { animation-delay: 6.5s; }
.vis-launch .ul-4 { animation-delay: 7.0s; }
@keyframes vp-user-line { 0%, 55%{stroke-dashoffset:100;opacity:0} 65%{stroke-dashoffset:100;opacity:1} 75%{stroke-dashoffset:0;opacity:1} 95%{stroke-dashoffset:0;opacity:1} 100%{stroke-dashoffset:0;opacity:0} }

/* Reduced-Motion */
@media (prefers-reduced-motion: reduce) {
    .vis-briefing *, .vis-build *, .vis-launch * { animation: none !important; }
    .vis-briefing .briefing-bubble, .vis-briefing .sitemap-root, .vis-briefing .tree-child,
    .vis-build .term-line, .vis-build .lh-score, .vis-build .lh-label,
    .vis-launch .server-new, .vis-launch .lock-badge, .vis-launch .user-dot { opacity: 1; }
    .vis-briefing .tree-line, .vis-build .lh-ring, .vis-launch .dns-arrow, .vis-launch .user-line { stroke-dashoffset: 0; }
}

/* ─── Phase-Visual innerhalb der Prozess-Timeline ─── */
.ld-prozess-phase-visual {
    margin: 1.5rem 0 0;
    max-width: 100%;
    padding: 0.5rem;
    background: var(--surface, rgba(255, 255, 255, 0.02));
    border: 1px solid var(--border, rgba(127, 127, 127, 0.15));
    border-radius: 6px;
}
.ld-prozess-phase-visual .lw-visual {
    max-width: none;
    aspect-ratio: 1;
}
.ld-prozess-phase-visual figcaption {
    margin-top: 0.5rem;
    font-family: var(--font-mono);
    font-size: 0.62rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--accent);
    text-align: center;
}

/* ─── Inception-Code-Visual (Figure-Wrapper im Live-Beweis) ─── */
.lw-inception-code {
    max-width: 920px;
    margin: 0 auto 3.5rem;
    text-align: center;
}
.lw-inception-code-cap {
    margin-bottom: 1.2rem;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.lw-inception-code-eye {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--accent);
}
.lw-inception-code-text {
    font-family: var(--font-serif);
    font-size: 0.95rem;
    font-style: italic;
    color: var(--t2);
}

/* ═══════════════════════════════════════════════════════════════════════
   KONZEPT 12 — Responsive Breakpoint-Demo (Desktop → Tablet → Mobile)
   ═══════════════════════════════════════════════════════════════════════ */
.vis-12 .vp-frame { fill: var(--surface, rgba(255,255,255,0.04)); stroke: var(--t1); stroke-width: 1.2; opacity: 0.85; }
html[data-theme-pref="light"] .vis-12 .vp-frame { fill: #fdfcfa; }
.vis-12 .vp-bezel { fill: var(--t1); opacity: 0.18; }
.vis-12 .vp-screen-bg { fill: rgba(127,127,127,0.06); }
.vis-12 .stage { opacity: 0; animation: v12-stage 12s ease-in-out infinite; transform-origin: center; }
.vis-12 .stage-desk { animation-delay: 0s; }
.vis-12 .stage-tab  { animation-delay: 4s; }
.vis-12 .stage-mob  { animation-delay: 8s; }
@keyframes v12-stage {
    0%, 2%   { opacity: 0; transform: translateY(8px); }
    6%       { opacity: 1; transform: translateY(0); }
    30%      { opacity: 1; transform: translateY(0); }
    33%, 100%{ opacity: 0; transform: translateY(-6px); }
}
.vis-12 .nav-link { fill: var(--t1); opacity: 0.55; }
.vis-12 .nav-burger-bar { fill: var(--t1); opacity: 0.7; }
.vis-12 .nav-cta { fill: var(--accent); }
.vis-12 .head-bar { fill: var(--t1); opacity: 0.85; }
.vis-12 .head-bar-2 { fill: var(--t1); opacity: 0.45; }
.vis-12 .img-block { fill: var(--accent); opacity: 0.85; }
.vis-12 .txt-line { fill: var(--t1); opacity: 0.35; }
.vis-12 .card-block { fill: var(--t2); opacity: 0.35; stroke: var(--t1); stroke-width: 0.4; stroke-opacity: 0.4; }
.vis-12 .card-accent { fill: var(--accent); opacity: 0.85; }
.vis-12 .vp-pill-bg { fill: var(--accent); }
.vis-12 .vp-pill-text { font-family: var(--font-mono); font-size: 9px; fill: #fff; font-weight: 700; letter-spacing: 0.12em; text-anchor: middle; }
.vis-12 .vp-pill-w   { font-family: var(--font-mono); font-size: 8px; fill: var(--t3); letter-spacing: 0.05em; text-anchor: middle; }

/* ═══════════════════════════════════════════════════════════════════════
   KONZEPT 14 — Code → Pixel Live-Compile (VS-Code-Editor + Preview)
   ═══════════════════════════════════════════════════════════════════════ */
.vis-14 .editor-frame { fill: #1d1f24; stroke: var(--t1); stroke-width: 0.4; stroke-opacity: 0.4; }
html[data-theme-pref="light"] .vis-14 .editor-frame { fill: #282c34; }
.vis-14 .preview-frame { fill: var(--surface, rgba(255,255,255,0.04)); stroke: var(--t1); stroke-width: 0.8; stroke-opacity: 0.4; }
html[data-theme-pref="light"] .vis-14 .preview-frame { fill: #fdfcfa; }
.vis-14 .editor-label, .vis-14 .preview-label { font-family: var(--font-mono); font-size: 6px; letter-spacing: 0.18em; fill: var(--t3); }
.vis-14 .editor-tab-active { fill: rgba(230,33,69,0.25); }
.vis-14 .editor-tab { fill: rgba(255,255,255,0.04); }
.vis-14 .tab-text { font-family: var(--font-mono); font-size: 5.5px; fill: #abb2bf; text-anchor: middle; }
.vis-14 .tab-text-active { fill: #fff; font-weight: 700; }
.vis-14 .gutter { fill: #5c6370; font-family: var(--font-mono); font-size: 6px; text-anchor: end; }

.vis-14 .code { font-family: var(--font-mono); font-size: 7px; opacity: 0; animation: v14-type 18s linear infinite; }
.vis-14 .c-tag      { fill: #e06c75; }
.vis-14 .c-attr     { fill: #d19a66; }
.vis-14 .c-val      { fill: #98c379; }
.vis-14 .c-text     { fill: #abb2bf; }
.vis-14 .c-prop     { fill: #56b6c2; }
.vis-14 .c-key      { fill: #c678dd; }
.vis-14 .c-num      { fill: #d19a66; }
.vis-14 .c-comment  { fill: #5c6370; font-style: italic; }
.vis-14 .c-punct    { fill: #abb2bf; }

.vis-14 .cl-1  { animation-delay: 0.3s; }
.vis-14 .cl-2  { animation-delay: 0.7s; }
.vis-14 .cl-3  { animation-delay: 1.1s; }
.vis-14 .cl-4  { animation-delay: 1.5s; }
.vis-14 .cl-5  { animation-delay: 1.9s; }
.vis-14 .cl-6  { animation-delay: 2.3s; }
.vis-14 .cl-7  { animation-delay: 2.7s; }
.vis-14 .cl-8  { animation-delay: 3.1s; }
.vis-14 .cl-9  { animation-delay: 3.6s; }
.vis-14 .cl-10 { animation-delay: 4.0s; }
.vis-14 .cl-11 { animation-delay: 4.4s; }
.vis-14 .cl-12 { animation-delay: 4.8s; }
.vis-14 .cl-13 { animation-delay: 5.4s; }
.vis-14 .cl-14 { animation-delay: 5.8s; }
.vis-14 .cl-15 { animation-delay: 6.2s; }
.vis-14 .cl-16 { animation-delay: 6.6s; }
.vis-14 .cl-17 { animation-delay: 7.0s; }
.vis-14 .cl-18 { animation-delay: 7.4s; }
.vis-14 .cl-19 { animation-delay: 7.8s; }
.vis-14 .cl-20 { animation-delay: 8.2s; }
.vis-14 .cl-21 { animation-delay: 8.6s; }
.vis-14 .cl-22 { animation-delay: 9.0s; }
.vis-14 .cl-23 { animation-delay: 9.4s; }
.vis-14 .cl-24 { animation-delay: 9.8s; }
.vis-14 .cl-25 { animation-delay: 10.2s; }
.vis-14 .cl-26 { animation-delay: 10.6s; }

@keyframes v14-type {
    0%, 1%   { opacity: 0; transform: translateX(-2px); }
    3%       { opacity: 1; transform: translateX(0); }
    94%      { opacity: 1; }
    100%     { opacity: 0; }
}

.vis-14 .code-scroll { animation: v14-scroll 18s linear infinite; transform-origin: top; }
@keyframes v14-scroll {
    0%, 35%   { transform: translateY(0); }
    55%       { transform: translateY(-32px); }
    65%, 100% { transform: translateY(-50px); }
}

.vis-14 .render { opacity: 0; animation: v14-render 18s linear infinite; }
.vis-14 .rd-1  { animation-delay: 1.4s; }
.vis-14 .rd-2  { animation-delay: 2.2s; }
.vis-14 .rd-3  { animation-delay: 4.0s; }
.vis-14 .rd-4  { animation-delay: 5.6s; }
.vis-14 .rd-5  { animation-delay: 6.8s; }
.vis-14 .rd-6  { animation-delay: 8.4s; }
.vis-14 .rd-7  { animation-delay: 9.8s; }
.vis-14 .rd-8  { animation-delay: 10.6s; }

@keyframes v14-render {
    0%, 5%   { opacity: 0; transform: translateY(3px); }
    10%      { opacity: 1; transform: translateY(0); }
    94%      { opacity: 1; }
    100%     { opacity: 0; }
}

.vis-14 .cursor-blink { fill: #e06c75; animation: v14-blink 0.8s steps(2) infinite; }
@keyframes v14-blink { 0%, 49%{opacity:1} 50%, 100%{opacity:0} }
.vis-14 .breadcrumb { font-family: var(--font-mono); font-size: 5.5px; fill: #5c6370; }
.vis-14 .breadcrumb-active { fill: #abb2bf; }

/* ═══════════════════════════════════════════════════════════════════════
   KONZEPT 15 — Wireframe → High-Fidelity Morph
   ═══════════════════════════════════════════════════════════════════════ */
.vis-15 .frame-bg { fill: var(--surface, rgba(255,255,255,0.04)); stroke: var(--t1); stroke-width: 0.8; opacity: 0.5; }
html[data-theme-pref="light"] .vis-15 .frame-bg { fill: #fdfcfa; }

.vis-15 .wf { stroke: var(--t1); stroke-width: 1; fill: none; stroke-dasharray: 4 4; opacity: 0.4; animation: v15-wf 9s ease-in-out infinite; }
.vis-15 .wf-x { stroke: var(--t1); stroke-width: 0.6; opacity: 0.3; animation: v15-wf 9s ease-in-out infinite; }
.vis-15 .wf-text { font-family: monospace; font-size: 7px; fill: var(--t3); opacity: 0.6; text-anchor: middle; animation: v15-wf 9s ease-in-out infinite; letter-spacing: 0.1em; }
@keyframes v15-wf {
    0%, 5%    { opacity: 0.5; }
    35%       { opacity: 0.5; }
    55%, 100% { opacity: 0; }
}

.vis-15 .hifi { opacity: 0; animation: v15-hifi 9s ease-in-out infinite; }
.vis-15 .hf-1 { animation-delay: 0.3s; } .vis-15 .hf-2 { animation-delay: 0.7s; }
.vis-15 .hf-3 { animation-delay: 1.1s; } .vis-15 .hf-4 { animation-delay: 1.5s; }
.vis-15 .hf-5 { animation-delay: 1.9s; }
@keyframes v15-hifi {
    0%, 35%   { opacity: 0; transform: scale(0.96); transform-origin: center; transform-box: fill-box; }
    55%       { opacity: 1; transform: scale(1); }
    90%       { opacity: 1; }
    100%      { opacity: 0; }
}
.vis-15 .stamp { opacity: 0; animation: v15-stamp 9s ease-in-out infinite; transform-origin: center; transform-box: fill-box; }
@keyframes v15-stamp {
    0%, 60%   { opacity: 0; transform: scale(0.7) rotate(-8deg); }
    68%       { opacity: 1; transform: scale(1.15) rotate(-2deg); }
    78%, 92%  { opacity: 0.95; transform: scale(1) rotate(0); }
    100%      { opacity: 0; }
}
.vis-15 .stamp-bg { fill: var(--accent); }
.vis-15 .stamp-text { font-family: var(--font-mono); font-size: 9px; fill: #fff; font-weight: 700; letter-spacing: 0.12em; text-anchor: middle; }

/* ═══════════════════════════════════════════════════════════════════════
   Reduced-Motion-Override
   ═══════════════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
    .vis-12 *, .vis-14 *, .vis-15 * {
        animation: none !important;
        transition: none !important;
    }
    /* Im reduced-motion-fallback: zeige Endzustand */
    .vis-12 .stage-desk { opacity: 1; }
    .vis-14 .code, .vis-14 .render { opacity: 1; }
    .vis-14 .code-scroll { transform: translateY(-25px); }
    .vis-15 .hifi { opacity: 1; }
    .vis-15 .stamp { opacity: 1; transform: scale(1); }
    .vis-15 .wf, .vis-15 .wf-x, .vis-15 .wf-text { opacity: 0; }
}