/* Serie „Statik" · Modul „Allgemeine Kraftsysteme und Gleichgewicht des
   starren Körpers" — lokale Ergänzungen.

   Zeichenkonvention der Serie: eingeprägte Lasten orange · Reaktions- und
   Stabkräfte teal · Momente purple · Resultierende rose · Geometrie neutral.

   Achtung Spezifität (Style Guide §4.6a): Farbregeln auf <p>/<span>/<a>
   hängen unter dem Modul-Container `.sk`, sonst schlägt sie die globale
   Regel `body.neutral0color-onbackground p, … span`. */

/* Szenen-Kanalfarben (linke Kante der aktiven Scroll-Schritte) */
.sk .scrolly-step[data-scene="system"] { --scrolly-edge: var(--textcolor-80contrast); }
.sk .scrolly-step[data-scene="freischnitt"] { --scrolly-edge: rgb(var(--chart-teal-rgb)); }
.sk .scrolly-step[data-scene="kraftpaar"] { --scrolly-edge: rgb(var(--chart-purple-rgb)); }
.sk .scrolly-step[data-scene="moment"] { --scrolly-edge: rgb(var(--chart-purple-rgb)); }
.sk .scrolly-step[data-scene="resultierende"] { --scrolly-edge: rgb(var(--chart-rose-rgb)); }
.sk .scrolly-step[data-scene="gleichgewicht"] { --scrolly-edge: rgb(var(--chart-rose-rgb)); }
.sk .scrolly-step[data-scene="raum"] { --scrolly-edge: rgb(var(--chart-purple-rgb)); }

/* Readout-Farben nach Kanal */
.sk .scrolly-cell[data-c="g"] .scrolly-cell__v { color: rgb(var(--chart-orange-rgb)); }
.sk .scrolly-cell[data-c="m"] .scrolly-cell__v { color: rgb(var(--chart-purple-rgb)); }
.sk .scrolly-cell[data-c="s"] .scrolly-cell__v,
.sk .scrolly-cell[data-c="a"] .scrolly-cell__v { color: rgb(var(--chart-teal-rgb)); }

/* Bühnen-Wrapper: Das Freikörperbild liegt als SVG deckungsgleich über
   dem Canvas — ein Bild statt zweier (Muster des Pilotmoduls). */
.sk .sk-stage-wrap { position: relative; }

/* Breite Fenster: Die Bühne ist höhenbegrenzt und sticky, beide Panels
   teilen sich ihre Höhe über Flex-Anteile — KEINE festen Canvas-Höhen
   (im Piloten ergaben die bei 1440x760 einen 3-px-Plan). Der Lageplan
   bekommt mehr, weil er das Tragwerk samt Maßketten trägt. */
@media (min-width: 901px) {
    .sk .scrolly-panel--circuit { flex: 1.3 1 0; }
    .sk .scrolly-panel--chart { flex: 1 1 0; min-height: 170px; }
    /* Der Wrapper ersetzt den Canvas als Flex-Kind — sonst bliebe unter
       der Zeichnung ein toter Kasten stehen. */
    .sk .sk-stage-wrap { display: flex; flex: 1 1 0; min-height: 0; }
    .sk .sk-stage-wrap > canvas { flex: 1 1 0; min-height: 0; }
    /* Niedrige Fenster: Regler nebeneinander — das schafft der Bühne
       rund 60 px. */
    @media (max-height: 880px) {
        .sk .scrolly-controls { grid-template-columns: repeat(3, 1fr); }
    }
    /* Kippschwelle dieses Moduls: 760 px (base/statik.css). Der
       Wandschwenkkran ist breit und gewinnt gestapelt an Größe — bis
       800 px Fensterhöhe bleiben beide Panels über 185 px. Darunter
       teilen die Anteile die BREITE; der Kräfteplan trägt Krafteck UND
       Momentenbilanz und braucht deshalb fast so viel davon wie der
       Lageplan mit seinen Maßketten. */
    @media (max-height: 760px) {
        .sk .scrolly-panel--circuit { flex: 1.1 1 0; }
        .sk .scrolly-panel--chart { flex: 1 1 0; }
        /* Kein min-height im Nebeneinander-Fall: Die Panelhöhe IST die
           Bühnenhöhe; ein Mindestwert sprengt sie und `overflow: hidden`
           schneidet unten ab (gemessen im Balkenmodul bei 960×620). */
        .sk .scrolly-panel--circuit,
        .sk .scrolly-panel--chart { min-height: 0; }
    }
}

/* Schmale Fenster: Die Bühne steht oben und scrollt mit. Hier sind feste
   Höhen richtig (Blueprint-Mobilregel) — mit Flex-Anteilen kollabieren
   beide Panels auf wenige Pixel und die Zeichnung wird unlesbar
   (Browser-Befund 2026-08-13 bei 420 px). */
@media (max-width: 900px) {
    .sk .sk-stage-wrap { display: block; }
    .sk .sk-stage-wrap > canvas { height: clamp(250px, 56vw, 360px); }
    .sk .scrolly-panel--chart canvas { height: clamp(200px, 44vw, 300px); }
}

.sk .sk-fkb-overlay {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
    /* Das Overlay liegt DECKUNGSGLEICH über dem Canvas. Ohne diese Zeile
       fängt es jeden Klick ab — die anklickbaren Bezugspunkte A · C ·
       Laufkatze in Kapitel 04 reagierten dadurch überhaupt nicht
       (Befund 2026-08-14). Wie im Pilotmodul: durchlässig, bis der
       Baukasten selbst dran ist. */
    pointer-events: none;
    touch-action: none;
}

.sk .sk-fkb-overlay.is-aktiv {
    pointer-events: auto;
}
/* Nach bestandener Prüfung bleibt das gezeichnete Freikörperbild stehen —
   auch mit Druckannahme für die Strebe. Gesperrt wird nur die Bedienung
   (Serienregel aus dem Pilotmodul). */
.sk .sk-fkb-overlay.is-fertig { pointer-events: none; }
.sk .sk-fkb-overlay.is-fertig .fkb__slot,
.sk .sk-fkb-overlay.is-fertig .fkb__hit { display: none; }
.sk #skFkb.is-fertig .fkb__palette,
.sk #skFkb.is-fertig .fkb__check,
.sk #skFkb.is-fertig .fkb__reverse { opacity: .45; pointer-events: none; }
/* Beschriftungen der Pfeile lesbar über dem Lageplan */
.sk .sk-fkb-overlay .fkb__arrow-label {
    paint-order: stroke; stroke: var(--neutrals-0, #fff); stroke-width: 3px;
}

/* Der Baukasten auf der Bühne bringt keinen eigenen Rahmen mit */
.sk .fkb--eingebettet .fkb__svg { display: none; }

/* Bezugspunkt-Wahl: anklickbare Punkte im Lageplan */
.sk .sk-bezug-hinweis {
    margin: var(--spacing-xs) 0 0;
    font-size: 0.85rem;
    color: var(--textcolor-80contrast);
}

/* Aufgaben- und Konzept-SVGs der Übungsseite */
.sk .sk-svg-koerper { stroke: var(--textcolor-fullcontrast); stroke-width: 2.4; fill: none; }
.sk .sk-svg-hilf { stroke: var(--neutrals-100); stroke-width: 1; stroke-dasharray: 3 3; }
.sk .sk-svg-mass { stroke: var(--neutrals-100); stroke-width: 1.2; }
.sk .sk-svg-bogen { stroke: var(--neutrals-100); stroke-width: 1.4; fill: none; }
.sk .sk-svg-text { font-size: 13px; font-style: italic; fill: var(--textcolor-80contrast); }
.sk .sk-svg-nr {
    font-size: 12px;
    font-style: italic;
    fill: var(--textcolor-80contrast);
    opacity: 0.75;
}
