diff --git a/frontend/src/components/TopicDetail.vue b/frontend/src/components/TopicDetail.vue index 370ac8b..8bbbf54 100644 --- a/frontend/src/components/TopicDetail.vue +++ b/frontend/src/components/TopicDetail.vue @@ -398,21 +398,42 @@ function extractContext() { column-gap: 1.25rem; align-items: start; } - .guide-content:not(.onepager) .section-card:has(.bp-panel) > h3 { grid-column: 1; grid-row: 1; } + .guide-content:not(.onepager) .section-card:has(.bp-panel) > h3 { grid-column: 1 / -1; grid-row: 1; } .guide-content:not(.onepager) .section-card:has(.bp-panel) > .section-body { grid-column: 1; grid-row: 2; } .guide-content:not(.onepager) .section-card:has(.bp-panel) :deep(.bp) { display: contents; } .guide-content:not(.onepager) .section-card:has(.bp-panel) :deep(.bp-toggles) { grid-column: 1; grid-row: 3; } .guide-content:not(.onepager) .section-card:has(.bp-panel) :deep(.bp-panel) { grid-column: 2; - grid-row: 1 / 4; + grid-row: 2 / 4; margin-top: 0; - align-self: stretch; + align-self: start; min-height: 14rem; max-height: calc(100dvh - 8rem); overflow-y: auto; } } +/* Breit (≥1400px Inhaltsbreite): die offene Karte bricht aus dem 880px-Lesecontainer + aus und verdoppelt sich — Text behält ~seine Breite (800px), Panel kommt rechts dazu. + cqw misst die echte guide-scroll-Breite (container-type) → schrumpft mit der + ElementsSidebar; min(...) deckelt unter overflow-x:hidden, nichts wird abgeschnitten. + Darunter (1024–1400) bleibt die 1fr/1fr-Halbierung von oben. */ +@container (min-width: 1400px) { + .guide-scroll:has(.bp-panel) .guide-content:not(.onepager) { + max-width: min(1760px, 96cqw); + } + /* Geschlossene Karten behalten Lesebreite, zentriert in der breiten Spalte. */ + .guide-content:not(.onepager):has(.bp-panel) .section-card:not(:has(.bp-panel)) { + max-width: 880px; + margin-inline: auto; + } + /* Offene Karte: Lesespalte fix ~800px, Panel füllt den Rest. */ + .guide-content:not(.onepager) .section-card:has(.bp-panel) { + grid-template-columns: minmax(0, 800px) minmax(0, 1fr); + column-gap: 2.5rem; + } +} + /* OnePager: festes 3×3-Raster über volle Breite und Höhe. Kein Lese-Zoom (bricht 100%-Höhen) — stattdessen sind die Schriften unten 1.2× skaliert. */ .guide-content.onepager {