/* ============================================================
   KSV Design-Route D — "Prüfbuch"
   Beschlossene Art-Direction (Runde 2): Grundgeruest Route B
   (Papier/Ink, Journallinien, rote Marginalspalte, nummerierte
   Kapitel, Grotesk + Georgia-Randnotizen, GEPRUEFT-Stempel),
   dazu Thermobon aus Route A (Perforation, Mono, Druck-Animation,
   jetzt mit Geraetebild) und dosierte Amber-Digit-Einsaetze aus C
   (kleine LED-Chips auf hellem Grund, keine Dark-Panels).
   Gescoped unter .ksv-route-d. Kein Tailwind, keine externen Loads.
   Kontraste (WCAG AA, errechnet, im Task-Report belegt):
     Ink #1B1B1F auf Papier #F4F1E8      = 15,20:1
     Soft #54524B auf Papier             =  6,92:1
     Orange-Text #9C3F00 auf Papier      =  5,95:1
     Stempel #C24E00 auf Papier (UI)     =  4,24:1 (>= 3:1, nie Fliesstext)
     Ink auf Bon-Weiss #FFFFFF           = 17,17:1
     Amber #FFB300 auf LED-Dark #101318  = 10,37:1
     LED-Dim #9AA3AD auf LED-Dark        =  7,28:1
   Animationen ausschliesslich transform/opacity, reduced-motion-guarded.
   Keine linear-gradients. Journallinien als lokales SVG-Pattern.
   ============================================================ */

.ksv-route-d {
    --rd-paper: #F4F1E8;
    --rd-ink: #1B1B1F;
    --rd-soft: #54524B;
    --rd-orange: #C24E00;
    --rd-orange-text: #9C3F00;
    --rd-rule: #C0392B;
    --rd-led-dark: #101318;
    --rd-amber: #FFB300;
    --rd-led-dim: #9AA3AD;
    --rd-grotesk: 'Helvetica Neue', Helvetica, Arial, 'Segoe UI', sans-serif;
    --rd-serif: Georgia, 'Iowan Old Style', 'Times New Roman', serif;
    --rd-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', Menlo, Consolas, monospace;
    background: var(--rd-paper);
    color: var(--rd-ink);
    font-family: var(--rd-grotesk);
    font-variant-numeric: tabular-nums;
    line-height: 1.6;
}

.ksv-route-d .rd-wrap {
    position: relative;
    max-width: 72rem;
    margin-inline: auto;
    padding-inline: clamp(1.25rem, 4vw, 3rem);
}

/* Rote Marginalspalte des Pruefbuchs (Doppellinie, alle Sektionen) */
.ksv-route-d .rd-wrap::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: clamp(.4rem, 1.6vw, 1.4rem);
    width: 5px;
    border-left: 1px solid rgba(192, 57, 43, .55);
    border-right: 1px solid rgba(192, 57, 43, .55);
    pointer-events: none;
}

.ksv-route-d a { color: inherit; text-decoration: none; }
.ksv-route-d .rd-num { font-variant-numeric: tabular-nums; }

.ksv-route-d .rd-visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

/* ============ Typo-Staffel ============ */
/* Display: massive Grotesk-Versalien */
.ksv-route-d .rd-h1 {
    font-size: clamp(2.7rem, 7.5vw, 5.2rem);
    font-weight: 800;
    line-height: .98;
    letter-spacing: -.025em;
    text-transform: uppercase;
    margin: .8rem 0 1.1rem;
}

/* Sektion */
.ksv-route-d .rd-h2 {
    font-size: clamp(1.5rem, 3.2vw, 2.2rem);
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -.015em;
    text-transform: uppercase;
    margin: 0;
}

/* Randnotiz: Georgia, kursiv */
.ksv-route-d .rd-annot {
    font-family: var(--rd-serif);
    font-style: italic;
    font-size: 1.02rem;
    color: var(--rd-soft);
    max-width: 52ch;
    margin: .5rem 0 0;
}

/* Folio / Meta */
.ksv-route-d .rd-folio {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    font-size: .74rem;
    font-weight: 700;
    letter-spacing: .22em;
    text-transform: uppercase;
    color: var(--rd-soft);
    border-bottom: 2px solid var(--rd-ink);
    padding-bottom: .6rem;
}

/* ============ Stempel (Trust-Mark, durchgaengig) ============ */
.ksv-route-d .rd-stempel {
    display: inline-block;
    border: 2px solid var(--rd-orange);
    color: var(--rd-orange);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .16em;
    text-transform: uppercase;
    text-align: center;
    line-height: 1.55;
    padding: .5rem .8rem;
    transform: rotate(-4deg);
}

.ksv-route-d .rd-stempel em {
    display: block;
    font-style: normal;
    font-weight: 700;
    font-size: .58rem;
    letter-spacing: .12em;
}

.ksv-route-d .rd-stempel-hero {
    position: absolute;
    right: clamp(1rem, 6vw, 4rem);
    top: 1.2rem;
    transform: rotate(6deg);
}

.ksv-route-d .rd-stempel-inline {
    transform: rotate(-2deg);
    font-size: .6rem;
    padding: .35rem .6rem;
}

/* ============ (1) Hero ============ */
.ksv-route-d .rd-hero { padding: clamp(2.5rem, 6vw, 4.5rem) 0 clamp(2rem, 4vw, 3rem); }
.ksv-route-d .rd-head { position: relative; }

.ksv-route-d .rd-spread {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(1rem, 3vw, 2rem);
    margin-top: clamp(1.6rem, 4vw, 2.6rem);
}

/* Kapitel-Tueren: Journal-Seiten mit Linienpattern */
.ksv-route-d .rd-page {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    background:
        url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='34'><rect y='33' width='8' height='1' fill='%231B1B1F' fill-opacity='0.10'/></svg>")
        repeat #FBF9F3;
    border: 1px solid rgba(27, 27, 31, .28);
    box-shadow: 6px 6px 0 rgba(27, 27, 31, .16);
    padding: 1.4rem 1.5rem 1.5rem;
    transition: transform .25s ease, box-shadow .25s ease;
}

.ksv-route-d .rd-page:hover,
.ksv-route-d .rd-page:focus-visible {
    transform: translate(-2px, -2px);
    box-shadow: 9px 9px 0 rgba(27, 27, 31, .2);
}

.ksv-route-d .rd-page:focus-visible { outline: 3px solid var(--rd-orange); outline-offset: 3px; }

.ksv-route-d .rd-page-no {
    position: absolute;
    right: .9rem;
    top: .4rem;
    font-size: clamp(2.6rem, 6vw, 4rem);
    font-weight: 800;
    letter-spacing: -.03em;
    color: rgba(27, 27, 31, .1);
    line-height: 1;
}

.ksv-route-d .rd-page-kicker {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--rd-orange-text);
}

.ksv-route-d .rd-page-icon svg { width: 40px; height: 40px; }
.ksv-route-d .rd-page-title { font-size: 1.35rem; font-weight: 800; letter-spacing: -.01em; }
.ksv-route-d .rd-page-copy { color: var(--rd-soft); font-size: .95rem; max-width: 34ch; }
.ksv-route-d .rd-page-cta { margin-top: auto; padding-top: .6rem; font-weight: 700; font-size: .9rem; text-transform: uppercase; letter-spacing: .08em; }

/* ============ Sektionslinien / Kapitel-Nummern ============ */
.ksv-route-d .rd-section { padding: clamp(2.2rem, 5vw, 3.6rem) 0; }
.ksv-route-d .rd-cta-section { padding-bottom: clamp(3rem, 7vw, 5rem); }

.ksv-route-d .rd-secline {
    position: relative;
    border-top: 2px solid var(--rd-ink);
    padding-top: .9rem;
    margin-bottom: clamp(1.4rem, 3vw, 2.2rem);
    padding-right: clamp(4rem, 9vw, 7rem);
}

.ksv-route-d .rd-secno {
    position: absolute;
    right: 0;
    top: .3rem;
    font-size: clamp(2.6rem, 6vw, 4.2rem);
    font-weight: 800;
    letter-spacing: -.03em;
    line-height: 1;
    color: rgba(27, 27, 31, .12);
}

/* ============ (2) Pruefblatt: Logo + Hardware ============ */
.ksv-route-d .rd-blatt {
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
    gap: clamp(1.2rem, 3vw, 2.4rem);
    background: #FBF9F3;
    border: 1px solid rgba(27, 27, 31, .28);
    box-shadow: 6px 6px 0 rgba(27, 27, 31, .16);
    padding: clamp(1.2rem, 3vw, 2rem);
}

.ksv-route-d .rd-blatt-head {
    display: flex;
    align-items: flex-start;
    gap: 1.1rem;
    border-bottom: 1px solid rgba(27, 27, 31, .2);
    padding-bottom: 1rem;
}

/* Logos: feste Box, nie verzerren */
.ksv-route-d .rd-logo-box {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 120px;
    height: 44px;
    background: #fff;
    border: 1px solid rgba(27, 27, 31, .16);
    padding: .3rem .5rem;
}

.ksv-route-d .rd-logo-box-lg { width: 168px; height: 62px; flex: none; }

.ksv-route-d .rd-logo {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.ksv-route-d .rd-logo-word { font-weight: 800; letter-spacing: .02em; }

.ksv-route-d .rd-blatt-label {
    font-size: .7rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--rd-soft);
    margin: 0;
}

.ksv-route-d .rd-blatt-name { font-size: clamp(1.4rem, 2.6vw, 1.9rem); font-weight: 800; margin: .1rem 0 0; letter-spacing: -.01em; }
.ksv-route-d .rd-blatt-type { font-family: var(--rd-serif); font-style: italic; color: var(--rd-soft); margin: .1rem 0 0; }
.ksv-route-d .rd-blatt-head .rd-stempel { margin-left: auto; flex: none; }

/* Messwert-Zeile mit dosiertem LED-Einsatz (aus Route C, hell gerahmt) */
.ksv-route-d .rd-messwert {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin: 1.1rem 0 .4rem;
}

.ksv-route-d .rd-messwert-label {
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--rd-soft);
}

.ksv-route-d .rd-messwert-val { font-weight: 800; font-size: 1.15rem; }

.ksv-route-d .rd-led {
    display: inline-flex;
    align-items: baseline;
    gap: .5rem;
    background: var(--rd-led-dark);
    border: 1px solid rgba(27, 27, 31, .55);
    box-shadow: inset 0 0 0 3px rgba(255, 179, 0, .08);
    padding: .35rem .75rem .45rem;
}

.ksv-route-d .rd-led-digits {
    font-family: var(--rd-mono);
    font-size: 1.5rem;
    font-weight: 700;
    letter-spacing: .06em;
    color: var(--rd-amber);
    line-height: 1;
}

.ksv-route-d .rd-led-unit {
    font-family: var(--rd-mono);
    font-size: .68rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--rd-led-dim);
}

/* Buchungszeilen mit Punktfuehrung */
.ksv-route-d .rd-postings { margin-top: .6rem; }

.ksv-route-d .rd-posting {
    display: flex;
    align-items: baseline;
    gap: .7rem;
    padding: .5rem 0;
    border-bottom: 1px solid rgba(27, 27, 31, .12);
}

.ksv-route-d .rd-posting-label { font-weight: 700; font-size: .95rem; flex: none; }

.ksv-route-d .rd-leader {
    flex: 1;
    border-bottom: 2px dotted rgba(27, 27, 31, .3);
    transform: translateY(-4px);
}

.ksv-route-d .rd-posting-val {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-weight: 700;
    font-size: .95rem;
    text-align: right;
}

.ksv-route-d .rd-glyph { width: 16px; height: 16px; flex: none; }
.ksv-route-d .rd-state-yes { color: var(--rd-ink); }
.ksv-route-d .rd-state-no { color: var(--rd-orange-text); }
.ksv-route-d .rd-state-na { color: var(--rd-soft); }

.ksv-route-d .rd-blatt-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-top: 1.2rem;
}

.ksv-route-d .rd-blatt-annot { margin: 0; }
.ksv-route-d .rd-blatt-ctas { display: flex; gap: .7rem; flex-wrap: wrap; }

/* Anlage: Produktfoto im Beweisstueck-Rahmen */
.ksv-route-d .rd-anlage {
    margin: 0;
    align-self: stretch;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    background: #fff;
    border: 1px solid rgba(27, 27, 31, .2);
    padding: 1rem 1rem .8rem;
}

.ksv-route-d .rd-anlage-img {
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 340px;
    object-fit: contain;
    margin-inline: auto;
    display: block;
}

.ksv-route-d .rd-anlage-cap {
    margin-top: .8rem;
    font-size: .88rem;
    border-top: 1px dotted rgba(27, 27, 31, .3);
    padding-top: .6rem;
}

/* ============ Buttons ============ */
.ksv-route-d .rd-btn {
    display: inline-block;
    background: var(--rd-ink);
    color: var(--rd-paper);
    font-weight: 700;
    font-size: .9rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    padding: .7rem 1.3rem;
    border: 2px solid var(--rd-ink);
    transition: transform .2s ease;
}

.ksv-route-d .rd-btn:hover,
.ksv-route-d .rd-btn:focus-visible { transform: translateY(-2px); }
.ksv-route-d .rd-btn:focus-visible { outline: 3px solid var(--rd-orange); outline-offset: 2px; }
.ksv-route-d .rd-btn-ghost { background: transparent; color: var(--rd-ink); }
.ksv-route-d .rd-btn-big { padding: .9rem 1.8rem; font-size: 1rem; }

/* ============ (3) Thermobon + Geraet ============ */
.ksv-route-d .rd-print-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr);
    gap: clamp(1.5rem, 4vw, 3rem);
    align-items: start;
}

.ksv-route-d .rd-print-copy p:first-child { margin-top: 0; max-width: 46ch; }

.ksv-route-d .rd-print-stage {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: clamp(.9rem, 2vw, 1.6rem);
    align-items: end;
}

.ksv-route-d .rd-geraet { margin: 0; text-align: center; }

.ksv-route-d .rd-geraet-img {
    width: auto;
    max-width: 100%;
    height: auto;
    max-height: 260px;
    object-fit: contain;
    display: block;
    margin-inline: auto;
    filter: drop-shadow(0 14px 10px rgba(27, 27, 31, .18));
}

.ksv-route-d .rd-geraet-cap {
    font-size: .85rem;
    margin-top: .7rem;
    border-top: 1px dotted rgba(27, 27, 31, .3);
    padding-top: .5rem;
}

/* Druckerschlitz + Bon (Mechanik aus Route A) */
.ksv-route-d .rd-printer-slot {
    position: relative;
    z-index: 2;
    height: 22px;
    background: var(--rd-ink);
    border-radius: 6px;
    box-shadow: 0 6px 14px -6px rgba(27, 27, 31, .6);
}

.ksv-route-d .rd-printer-slot span {
    position: absolute;
    left: 10%;
    right: 10%;
    top: 50%;
    height: 4px;
    transform: translateY(-50%);
    background: var(--rd-paper);
    border-radius: 2px;
}

.ksv-route-d .rd-bon-window { overflow: hidden; padding: 0 6%; }

.ksv-route-d .rd-bon {
    background: #fff;
    border-inline: 1px solid rgba(27, 27, 31, .16);
    padding: 1.3rem 1.2rem 1rem;
    font-family: var(--rd-mono);
    font-size: .88rem;
    /* Abrisskante unten: Saegezahn (kein Gradient) */
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 9px), 98% 100%, 96% calc(100% - 9px), 94% 100%, 92% calc(100% - 9px), 90% 100%, 88% calc(100% - 9px), 86% 100%, 84% calc(100% - 9px), 82% 100%, 80% calc(100% - 9px), 78% 100%, 76% calc(100% - 9px), 74% 100%, 72% calc(100% - 9px), 70% 100%, 68% calc(100% - 9px), 66% 100%, 64% calc(100% - 9px), 62% 100%, 60% calc(100% - 9px), 58% 100%, 56% calc(100% - 9px), 54% 100%, 52% calc(100% - 9px), 50% 100%, 48% calc(100% - 9px), 46% 100%, 44% calc(100% - 9px), 42% 100%, 40% calc(100% - 9px), 38% 100%, 36% calc(100% - 9px), 34% 100%, 32% calc(100% - 9px), 30% 100%, 28% calc(100% - 9px), 26% 100%, 24% calc(100% - 9px), 22% 100%, 20% calc(100% - 9px), 18% 100%, 16% calc(100% - 9px), 14% 100%, 12% calc(100% - 9px), 10% 100%, 8% calc(100% - 9px), 6% 100%, 4% calc(100% - 9px), 2% 100%, 0 calc(100% - 9px));
}

/* Druck-Animation: Bon faehrt aus dem Schlitz (nur transform) */
.kr-js .ksv-route-d [data-kr-print] .rd-bon {
    transform: translateY(-97%);
    transition: transform 2.4s cubic-bezier(.18, .8, .26, 1);
}

.kr-js .ksv-route-d [data-kr-print].kr-printed .rd-bon { transform: translateY(0); }

.ksv-route-d .rd-bon-brand {
    font-weight: 700;
    letter-spacing: .14em;
    text-align: center;
    margin: 0;
}

.ksv-route-d .rd-bon-meta {
    text-align: center;
    font-size: .7rem;
    letter-spacing: .1em;
    color: var(--rd-soft);
    margin: .3rem 0 .8rem;
    border-bottom: 1px dashed rgba(27, 27, 31, .35);
    padding-bottom: .7rem;
}

.ksv-route-d .rd-bon-table { width: 100%; border-collapse: collapse; }
.ksv-route-d .rd-bon-table td { padding: .22rem 0; font-size: .84rem; }
.ksv-route-d .rd-bon-table td.rd-num { text-align: right; }

.ksv-route-d .rd-bon-sum {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    font-weight: 700;
    border-top: 2px solid var(--rd-ink);
    border-bottom: 2px double var(--rd-ink);
    padding: .5rem 0;
    margin: .7rem 0 .4rem;
}

.ksv-route-d .rd-bon-sum strong { font-size: 1.25rem; }

.ksv-route-d .rd-bon-eff {
    text-align: center;
    font-size: .74rem;
    letter-spacing: .08em;
    color: var(--rd-orange-text);
    margin: .2rem 0 .7rem;
}

.ksv-route-d .rd-barcode { width: 60%; height: 22px; margin: 0 auto .3rem; display: block; color: var(--rd-ink); }

/* ============ (4) Journal-Tabelle ============ */
.ksv-route-d .rd-journal {
    background: #FBF9F3;
    border: 1px solid rgba(27, 27, 31, .28);
    box-shadow: 6px 6px 0 rgba(27, 27, 31, .16);
    padding: clamp(1rem, 2.5vw, 1.6rem);
    overflow-x: auto;
}

.ksv-route-d .rd-table { width: 100%; border-collapse: collapse; min-width: 560px; }

.ksv-route-d .rd-table thead th {
    text-align: left;
    font-size: .8rem;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
    border-bottom: 2px solid var(--rd-ink);
    padding: .6rem .8rem;
}

.ksv-route-d .rd-table td,
.ksv-route-d .rd-table tbody th {
    padding: .65rem .8rem;
    border-bottom: 1px solid rgba(27, 27, 31, .14);
    font-size: .95rem;
    text-align: left;
    vertical-align: middle;
}

.ksv-route-d .rd-table tbody th { font-weight: 700; }

/* rote Journal-Spaltenlinien */
.ksv-route-d .rd-table td { border-left: 1px solid rgba(192, 57, 43, .35); }

.ksv-route-d .rd-table tbody tr:last-child td,
.ksv-route-d .rd-table tbody tr:last-child th {
    border-bottom: 3px double var(--rd-ink);
}

.ksv-route-d .rd-table td .rd-glyph { vertical-align: -2px; margin-right: .3rem; }

.ksv-route-d .rd-logo-row td { padding-block: .8rem; }

.ksv-route-d .rd-journal-foot {
    display: flex;
    align-items: center;
    gap: 1.1rem;
    flex-wrap: wrap;
    margin: 1rem 0 0;
}

.ksv-route-d .rd-journal-foot .rd-annot { margin: 0; }

/* ============ (5) Pruefvermerke ============ */
.ksv-route-d .rd-chips {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: .9rem;
    padding: 0;
    margin: 0;
}

.ksv-route-d .rd-chip {
    display: flex;
    flex-direction: column;
    gap: .3rem;
    background: #FBF9F3;
    border: 1px solid rgba(27, 27, 31, .25);
    border-top: 3px solid var(--rd-ink);
    padding: .9rem 1rem 1rem;
}

.ksv-route-d .rd-chip.is-geeignet { border-top-color: var(--rd-ink); }
.ksv-route-d .rd-chip.is-bedingt,
.ksv-route-d .rd-chip.is-ungeeignet { border-top-color: var(--rd-orange); }
.ksv-route-d .rd-chip.is-na { border-top-color: rgba(27, 27, 31, .3); }

.ksv-route-d .rd-chip-persona { font-weight: 800; font-size: 1rem; letter-spacing: -.01em; }

.ksv-route-d .rd-chip-rating {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.ksv-route-d .rd-chip.is-bedingt .rd-chip-rating,
.ksv-route-d .rd-chip.is-ungeeignet .rd-chip-rating { color: var(--rd-orange-text); }
.ksv-route-d .rd-chip.is-na .rd-chip-rating { color: var(--rd-soft); }

.ksv-route-d .rd-chip-note {
    font-family: var(--rd-serif);
    font-style: italic;
    font-size: .9rem;
    color: var(--rd-soft);
}

/* ============ (6) CTA + NFC ============ */
.ksv-route-d .rd-cta {
    display: flex;
    align-items: center;
    gap: clamp(1.2rem, 3vw, 2.4rem);
    flex-wrap: wrap;
    background: #FBF9F3;
    border: 1px solid rgba(27, 27, 31, .28);
    box-shadow: 6px 6px 0 rgba(27, 27, 31, .16);
    padding: clamp(1.3rem, 3vw, 2.2rem);
}

.ksv-route-d .rd-cta-copy { max-width: 40ch; }
.ksv-route-d .rd-cta .rd-btn-big { margin-left: auto; }

.ksv-route-d .rd-nfc {
    position: relative;
    flex: none;
    width: 128px;
    height: 128px;
    border-radius: 50%;
    border: 2px solid var(--rd-ink);
    background: #fff;
    color: var(--rd-ink);
    font-family: inherit;
    cursor: pointer;
    display: grid;
    place-items: center;
    gap: .1rem;
    padding: 0;
}

.ksv-route-d .rd-nfc:focus-visible { outline: 3px solid var(--rd-orange); outline-offset: 3px; }
.ksv-route-d .rd-nfc-icon svg { width: 34px; height: 34px; }

.ksv-route-d .rd-nfc-text {
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.ksv-route-d .rd-nfc-stamp {
    position: absolute;
    inset: auto;
    border: 2px solid var(--rd-orange);
    color: var(--rd-orange);
    font-size: .8rem;
    font-weight: 800;
    letter-spacing: .18em;
    text-transform: uppercase;
    padding: .35rem .7rem;
    background: rgba(255, 255, 255, .92);
    opacity: 0;
    transform: rotate(-8deg) scale(1.6);
    pointer-events: none;
}

.ksv-route-d .rd-nfc.kr-approved .rd-nfc-idle,
.ksv-route-d .rd-nfc.kr-approved .rd-nfc-icon svg { opacity: .12; }

.ksv-route-d .rd-nfc.kr-approved .rd-nfc-stamp {
    opacity: 1;
    transform: rotate(-8deg) scale(1);
    transition: opacity .18s ease-out, transform .18s cubic-bezier(.2, 1.4, .4, 1);
}

.ksv-route-d .rd-nfc-rings i {
    position: absolute;
    inset: 0;
    border: 2px solid var(--rd-orange);
    border-radius: 50%;
    opacity: 0;
    transform: scale(1);
    pointer-events: none;
}

.ksv-route-d .rd-nfc.kr-tapping .rd-nfc-rings i { animation: rd-ring 1s ease-out forwards; }
.ksv-route-d .rd-nfc.kr-tapping .rd-nfc-rings i:nth-child(2) { animation-delay: .18s; }
.ksv-route-d .rd-nfc.kr-tapping .rd-nfc-rings i:nth-child(3) { animation-delay: .36s; }

@keyframes rd-ring {
    0% { opacity: .8; transform: scale(1); }
    100% { opacity: 0; transform: scale(1.65); }
}

/* ============ Scroll-Reveal ============ */
.kr-js .ksv-route-d [data-kr-reveal] {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity .6s ease, transform .6s ease;
}

.kr-js .ksv-route-d [data-kr-reveal].kr-in {
    opacity: 1;
    transform: none;
}

/* ============ Responsive ============ */
@media (max-width: 860px) {
    .ksv-route-d .rd-blatt { grid-template-columns: 1fr; }
    .ksv-route-d .rd-anlage-img { max-height: 260px; }
    .ksv-route-d .rd-print-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
    .ksv-route-d .rd-wrap::before { display: none; }
    .ksv-route-d .rd-spread { grid-template-columns: 1fr; }
    .ksv-route-d .rd-stempel-hero { position: static; display: inline-block; margin-top: .8rem; }
    .ksv-route-d .rd-print-stage { grid-template-columns: 1fr; }
    .ksv-route-d .rd-geraet { order: 2; }
    .ksv-route-d .rd-blatt-head { flex-wrap: wrap; }
    .ksv-route-d .rd-blatt-head .rd-stempel { margin-left: 0; }
    .ksv-route-d .rd-cta .rd-btn-big { margin-left: 0; }
}

/* ============ Reduced Motion ============ */
@media (prefers-reduced-motion: reduce) {
    .kr-js .ksv-route-d [data-kr-reveal] {
        opacity: 1;
        transform: none;
        transition: none;
    }
    .kr-js .ksv-route-d [data-kr-print] .rd-bon {
        transform: none;
        transition: none;
    }
    .ksv-route-d .rd-page,
    .ksv-route-d .rd-btn {
        transition: none;
    }
    .ksv-route-d .rd-nfc.kr-tapping .rd-nfc-rings i {
        animation: none;
    }
    .ksv-route-d .rd-nfc.kr-approved .rd-nfc-stamp {
        transition: none;
    }
}
