/* Kategorie aus dem Baukasten, Ergänzung für JTL (Schnitt S2 Kategorie-Port, 03.10.2026). Von Hand, kein Export.
   Lädt layout/header.tpl nach nb-kategorie.css auf Kategorie und Suche ($nbKategorie).

   Lage der breiten Trade-in-Karte ohne Skript (Task kategorie-port-ohne-skript). snippets/nb-kat-raster.tpl schreibt die
   Reihenfolge der Vier-Spalten-Fassung: Trade-in an Platz 1, elf Karten, breite Karte, Rest. Im Baukasten rückt das
   Verhalten die breite Karte nach drei vollen Reihen (kat-filter, rasterSetzen: nr = spalten * 3 - Spanne der
   Trade-in-Karte). Wo die Trade-in-Karte zwei Spalten nimmt (768 bis 1295 px, nb-kategorie.css), stehen davor weniger
   Karten, hier per order:
   - 1100 bis 1295 px, vier Spalten: nach der zehnten Karte, also nach dem elften Kind.
   - 768 bis 1099 px, drei Spalten: nach der siebten Karte, also nach dem achten Kind.
   Ab 1296 px stimmt die Reihenfolge im HTML, am Handy ist die breite Karte aus (nb-kategorie.css).
   Keine Werte aus dem Brand-Repo, nur Reihenfolge. */
@media (min-width: 1100px) and (max-width: 1295px) {
  .nb-kr__raster > * { order: 2; }
  .nb-kr__raster > :nth-child(-n+11) { order: 0; }
  .nb-kr__raster > .nb-kr__slot--breit { order: 1; }
}
@media (min-width: 768px) and (max-width: 1099px) {
  .nb-kr__raster > * { order: 2; }
  .nb-kr__raster > :nth-child(-n+8) { order: 0; }
  .nb-kr__raster > .nb-kr__slot--breit { order: 1; }
}

/* Schnitt S3 (03.10.2026): Filter ohne Skript. Pillen, Sortieren und Fenster brauchen das Skript. Ohne hält die Leiste
   ihren Platz unsichtbar, darauf liegt aus noscript (snippets/nb-kat-filter.tpl) die Zeile „Alle Filter“ als details in
   derselben weißen Karte. Aufgeklappt liegt das Formular als Fläche über dem Raster, nichts darunter wandert
   (tools/pruefung/sprung-messen.js misst genau diesen Stand). Die Leiste klebt dann nicht.
   Werte nur als Token, dieselben wie .nb-kf__karte, .nb-kf__finnen und .nb-kf__ffuss im Export. */
@media (scripting: none) {
  .nb-kf__leiste { visibility: hidden; }
  .nb-s-kat-filter { position: relative; }
  .nb-kf { position: relative; }
}
.nb-kf__ohne { position: absolute; inset: 0 0 auto 0; border-radius: var(--nb-radius-card); background: var(--nb-surface-page); box-shadow: var(--nb-sh-ruht); }
.nb-kf__ohne[open] { box-shadow: var(--nb-sh-hoch); }
.nb-kf__ohnekopf { display: flex; align-items: center; gap: var(--nb-space-2xs); padding: var(--nb-space-2xs); cursor: pointer; list-style: none; transition: scale var(--nb-motion-druck) var(--nb-motion-kurve); }
.nb-kf__ohnekopf:active { transition: scale var(--nb-motion-druck) var(--nb-motion-kurve); scale: var(--nb-motion-druck-scale-breit); }
.nb-kf__ohnekopf::-webkit-details-marker { display: none; }
.nb-kf__ohnekopf > svg { width: 20px; height: 20px; margin: 0 var(--nb-space-xs) 0 auto; transition: transform var(--nb-motion-transform) var(--nb-motion-kurve-bewegung); }
.nb-kf__ohne[open] > .nb-kf__ohnekopf > svg { transform: rotate(180deg); }
/* Zu heißt display: none, nicht nur verborgen. Chromium gibt Inhalten zugeklappter details sonst Maße (sprung-messen.js) */
.nb-kf__ohne:not([open]) > .nb-kf__ohneinnen { display: none; }
.nb-kf__ohneinnen { max-height: 70vh; overflow: auto; padding: 0 var(--nb-space-s) var(--nb-space-s); overscroll-behavior: contain; }
.nb-kf__ohne .nb-kf__ffuss { padding-inline: 0; }
.nb-kf__ohnesort { display: flex; flex-wrap: wrap; gap: var(--nb-space-2xs) var(--nb-space-s); margin: 0; padding: var(--nb-space-s) 0 0; border-top: 1px solid var(--nb-border-hairline); list-style: none; font-size: var(--nb-t-body-02); }
.nb-kf__ohnesort a { color: var(--nb-text-body); }
.nb-kf__ohnesort a[aria-current] { color: var(--nb-text-heading); font-weight: var(--nb-weight-semibold); }

/* Meldung ohne Netz über dem Raster (Ladezustand, Daniel 24.09.2026). Weiße Karte, nichts steht frei (Daniel 02.10.2026) */
.nb-kr__meldung { margin: 0 0 var(--nb-space-m); padding: var(--nb-space-s); border-radius: var(--nb-radius-card); background: var(--nb-surface-page); box-shadow: var(--nb-sh-ruht); font-size: var(--nb-t-body-01); color: var(--nb-text-heading); }
.nb-kr__meldung[hidden] { display: none; }

/* Schnitt S4 (04.10.2026): Bewertungen ohne Skript. Die ersten fünf und die Erklärung stehen im HTML, nachladen kann
   nur das Skript (nb-kategorie.js holt /nb-bewertungen). Ohne Skript ist der Knopf unsichtbar, hält aber seinen Platz,
   sonst springt alles darunter um 60 px, sobald das Skript da ist (sprung-messen.js 04.10.2026). Zähler und Balken bleiben */
@media (scripting: none) {
  [data-nb-bw-mehrknopf] { visibility: hidden; }
}

/* Schnitt S5 (04.10.2026): Keine Treffer mit gesetzten Filtern zeigt wie im Baukasten (markup-keine-treffer.html) die
   Statuszeile mit „0 Geräte“ und den Chips über der Figur. Im Baukasten steht die Figur nach dem leeren Raster (Grid,
   eigener Kontext), ihr Abstand addiert sich zum Abstand der Statuszeile: 24 plus 32 px. Hier folgt sie der Statuszeile
   direkt, die Abstände fielen zu 32 px zusammen. Gemessen 04.10.2026, Baukasten 56 px bei 1440 px. */
[data-nb-figur="seite"] .nb-kf__status ~ .nb-kr__figurblock { margin-top: calc(var(--nb-space-m) + var(--nb-space-l)); }

/* Rabattpreis (04.10.2026): Satz zum Streichpreis unter dem Raster, nur mit Rabatt auf der Seite (snippets/nb-kat-raster.tpl).
   Werte wie .nb-kr__fussnote im Baukasten (sektionen/raster/sektion.css:110), dort in der gewählten Fassung ohne Fußnote
   und deshalb nicht im Export */
.nb-kr__fussnote { margin: var(--nb-space-s) 0 0; font-size: var(--nb-t-body-02); line-height: 1.45; color: var(--nb-text-muted); }
