/*! sgp-kategorieseite.css — die Kachel der Kategorieseiten.
 *  [CC-9] 06.09.2026
 *
 *  WOZU: Der Betreiber am 06.09.: „die Kategorieseiten optisch auf den stand
 *  der detailseite bringen." Dieses Blatt traegt die Gestaltung; das Raster
 *  kommt aus `sgp-bs-raster.css` (Bootstraps Raster ohne das schwere Theme,
 *  von CC-8/CC-10 am 05.09. gebaut).
 *
 *  ⚠ BEIDE BLAETTER MUESSEN IN `outerNew.html` VERLINKT SEIN, und das ist
 *    CC-1s Datei. Solange das nicht steht, wirkt hier NICHTS -- die
 *    Kategorieseiten laden heute nur sgp-basis.css und sgp-menue.css.
 *    Gemessen, nicht vermutet.
 *
 *  ⚠ REIHENFOLGE: sgp-basis.css, dann sgp-bs-raster.css, dann DIESES Blatt.
 *    Steht es vor dem Raster, gewinnt bei gleicher Spezifitaet das Raster.
 *
 *  ⚠ ALLES UNTER `.sgp-ui`. Nicht aus Ordnungsliebe: `sgp-bs-raster.css` ist
 *    vollstaendig so gekapselt, und die Kachel traegt die Huelle deshalb
 *    ohnehin. Regeln ohne Huelle wuerden ausserdem auf JEDER outerNew-Seite
 *    mitwirken -- das sind 55 von 63.
 *
 *  DIE ZAHLEN STAMMEN VON DER DETAILSEITE, nicht aus dem Gefuehl:
 *      Kartengrund   #faf8ee     Rand #e6e1cd      (Hauswert, CC-1 bestaetigt)
 *      Rundung       .5rem
 *      Innenabstand  1rem
 *  Damit stehen Liste und Detail in derselben Sprache.
 */


/* ===========================================================================
   WAS HIER FEHLT, UND WARUM.  [CC-9] 11.09.2026
   Betreiber: „wenn sie nicht verwendet wird kann sie eigentlich weg."

   An dieser Stelle standen rund 170 Zeilen fuer eine Kachel, die NIRGENDS
   gerendert wird: `commerceArticleInListNeu.html`. Die Vorlage existiert,
   aber kein Code und keine Warengruppe verweist auf sie -- gemessen ueber
   den ganzen Baum und ueber die Vorlagenspalten der Warengruppen.

   GERENDERT WIRD DIE LISTE, die wie eine Kachel aussieht:
   `commerceArticleInList.html`, eingepackt in `.sgp-ui.sgp-kachel-innen`.
   Sie traegt acht Kachelklassen; die entfernte Vorlage trug elf. Ueberschnitten
   hat sich genau EINE (`sgp-kachel-formen`) -- deren Regel steht deshalb noch
   hier.

   ⚠ DIE WAHL ZWISCHEN LISTE UND KACHEL GIBT ES IM BESTAND SEHR WOHL:
   `articlesViewDefault` steht bei 296 Warengruppen auf „list" und bei 31 auf
   „tiled", und 281 erlauben die Kachelansicht. Die Kachelansicht rendert aber
   `commerceArticleInListTiled.html` -- und die traegt KEINE einzige
   `sgp-kachel-*`-Klasse. Die entfernten Regeln waren also auf beiden Wegen
   wirkungslos, nicht nur auf dem, den wir uns angesehen haben.

   ZURUECKHOLEN: die Regeln stehen vollstaendig in der Geschichte dieser
   Datei. Wer die neue Kachel aktiviert, holt sie mit einem `git show` zurueck
   -- und muss dann pruefen, ob die Groessen darin noch auf der Hausleiter
   liegen; sie sind vor dem Typografie-Durchgang entstanden.
   =========================================================================== */


/* --- 5. Die Lieferformen ---------------------------------------------

   Betreiber: „finde eine lösung mehr als 2 verfügbare varianten in der
   kachel zu zeigen (WW / CO / Hochstamm 60, Hochstamm 90 - wie heinz
   winkler)."

   Vorher konnte die Vorlage genau zwei -- die guenstigste und die teuerste.
   Bei vier Lieferformen fielen zwei weg, und welche, entschied der Preis.

   Name links, Preis rechts, eine Zeile je Form. Bei vier Formen sind das
   vier Zeilen zu je rund 20 px; das ist der Platz, den vorher der leere
   Bereich unter dem Kurztext eingenommen hat. */

.sgp-ui .sgp-kachel-formen {
    margin: .7rem 0 0;
    padding-top: .55rem;
    border-top: 1px solid #e6e1cd;
    margin-top: auto;
}

/* --- 5b. Der Warenkorbknopf in der Kachel -----------------------------

   ⚠ ER KAM UNGESTALTET DURCH.  [CC-9] 11.09.2026. Gemessen: 100 x 26 px,
   Schrift 9,6 px, weiss auf #e89c23 -- Kontrast 2,26:1, vierundzwanzigmal je
   Seite. Der Knopf stammt aus dem Bestandsformular (`price-range-item`), das
   in der Kachel steckt, und trug nur Foundations `.button.tiny`.

   ⚠ WARUM AUSGERECHNET HIER: Die Korrektur des Hauses steht in
   `sgp-ui-theme.css` (`.sgp-ui button.primary { background-color: #bd5900
   !important }`) -- und dieses Blatt wird auf der Kategorieseite GAR NICHT
   geladen. Nachgesehen im ausgelieferten Quelltext: sgp-basis, dieses Blatt,
   sgp-menue, zwei Fremdblaetter, sonst nichts. Die Kachel steht zwar in
   `.sgp-ui`, aber die Regel dazu fehlt auf dieser Seite.

   `!important` ist kein Geschmack, sondern die Antwort auf `button.primary
   { background-color: #e89c23 !important }` aus dem Bestand.

   9,6 px sind keine Schriftgroesse fuer einen Knopf, der etwas kauft. 14 px
   und 36 px Hoehe bringen ihn auf dieselbe Leiter wie der Rest der Kachel;
   am Finger sind es 44. */
.sgp-ui .sgp-kachel-korb .button,
.sgp-ui .sgp-kachel-korb button.primary {
    background-color: #bd5900 !important;
    border-color: #bd5900;
    color: #fff;
    font-size: .875rem;
    min-height: 2.25rem;
    padding: .45rem .9rem;
}

@media (max-width: 767px), (pointer: coarse) {
    .sgp-ui .sgp-kachel-korb .button,
    .sgp-ui .sgp-kachel-korb button.primary { min-height: 2.75rem; }
}




/* ===========================================================================
   DIE KRUMMEN GROESSEN DER LISTE.  [CC-9] 11.09.2026
   Betreiber: „bringe das css um müll den kein mensch mehr braucht, nutze
   lieber standard bootstrap-klassen statt eigene CSS regeln."

   ⚠ BOOTSTRAP GEHT HIER NICHT, und das ist keine Bequemlichkeit: in diesem
   Baum ist Bootstrap auf `.sgp-ui` GEKAPSELT. Keines der Elemente unten
   steht in einer solchen Huelle -- der Sortenname der Kachel, die
   Callout-Ueberschriften und die Abschnittsueberschriften gehoeren zur alten
   Liste. Eine Hilfsklasse wie `fs-5` waere dort eine Klasse ohne Regel.
   Gemessen, nicht vermutet: `.sgp-ui` trifft auf /clematis/ genau 24
   Elemente, und das sind die Kachelhuellen, nicht deren Inhalt.

   GEMESSEN ueber fuenf Breiten: 61 bis 63 krumme Elemente von rund 520,
   alle aus `em`-Ketten:

       18,75 px (24x)  der Sortenname in der Kachel
       18,72 px (26x)  Ueberschriften der Callout-Kacheln
       22,4  px  (7x)  Abschnittsueberschriften
        9,6  px  (1x)  ein Knopf im Callout

   Zur naechsten Sprosse: 18 / 18 / 22 / 12.
   =========================================================================== */

/* Der Sortenname der Kachel. Alles, was Bootstrap kann, steht jetzt als
   Hilfsklasse im Markup (`d-block fw-normal m-0`); hier bleiben die zwei
   Werte, die seine Leiter nicht kennt: 18 px liegt zwischen fs-5 (20) und
   fs-6 (16), und eine Zeilenhoehe 1,4 gibt es nicht. */
.sgp-ui .sgp-liste-name-text,
#content a.article-name {
    font-size: 1.125rem;
    line-height: 1.4;
}

/* ⚠ AUCH DIE H3 IM REDAKTIONSTEXT. Meine erste Fassung nannte nur die
   Callout-Kacheln und die Abschnittskoepfe; eine Ueberschrift mitten im
   Redaktionstext („Achtung beim Clematis-Kauf") blieb bei 18,72 -- dem
   1.17em des Bestands. Gemessen bei 1440, eine einzige Stelle, und genau
   deshalb faellt sie im Blatt nicht auf. */
/* ⚠ `.main-content` STEHT HIER, WEIL ES SEIN `.column` VERLOREN HAT.
   [CC-1] 12.09.2026

   Die Huelle trug bis heute `<div class="main-content column small-12
   medium-larger-9">`. Damit war `.main-content` selbst ein `.column`, und
   `#content .column h3` traf ueber diesen Vorfahren JEDE h3 der
   Kategorieseite. Seit der Umstellung auf `col-12 col-lg-9` ist die Klasse
   weg -- und die Regel waere still gestorben, und zwar NICHT dort, wo
   geaendert wurde.

   Gemessen VOR dem Umbau, `#content .column h3` gegen „hat noch einen
   anderen .column-Vorfahren":

       /rosen/         18 haengen NUR an main-content,  0 anderswo
       /clematis/      28 haengen NUR an main-content,  3 anderswo
       /erde-duenger/   4 haengen NUR an main-content,  0 anderswo

   Fuenfzig Ueberschriften waeren auf 1,17em zurueckgefallen.

   ⚠ DER ERSATZ REICHT GENAU SO WEIT, nachgezaehlt: `#content .column h3`
   und `#content .main-content h3` trafen vor dem Umbau dieselbe Menge
   (18 gegen 18, 28 gegen 28). Weiter zu greifen waere derselbe Fehler wie
   zu fehlen.

   `#content .column h3` BLEIBT stehen: auf /clematis/ haengen drei
   Ueberschriften an einem anderen `.column` (`div.large-12.column`), das
   nicht angefasst wurde. */
#content a.callout h3,
#content .section-heading h3,
#content .column-1 h3,
#content .main-content h3,
#content .column h3 {
    font-size: 1.125rem;
}

/* `.main-content > h2` trifft heute NICHTS -- aber vor dem Umbau haette
   `#content .column > h2` eine h2 getroffen, die direktes Kind von
   `.main-content` ist. Die Zeile haelt die Reichweite, die die Regel hatte,
   nicht die, die sie zufaellig nutzte. */
#content .hero-text h2,
#content .column-1 > h2,
#content .row > h2,
#content .main-content > h2,
#content .column > h2 {
    font-size: 1.375rem;
}

#content .callout a.button {
    font-size: .75rem;
}

/* ── Platz fuer das Heldenbild ────────────────────────────────────────────
 *
 * Das Bild oben auf der Kategorieseite trug keine Masse. Der Browser kennt
 * vor dem Laden also kein Seitenverhaeltnis, reserviert keinen Platz -- und
 * wenn das Bild ankommt, wandert alles darunter nach unten. Gemessen auf
 * /rosen/, 1280 px, gedrosselt:
 *
 *     0,162 bei 1275 ms
 *       div.sgp-row ur sans      y 315 -> 764   hoch 436 -> 136
 *       span.image-caption       y 282 -> 731
 *
 * 449 px nach unten, CLS der Seite 0,164 bei einer Schwelle von 0,1. Bei
 * 375 px faellt es nicht auf, weil das Bild dort schmaler und flacher ist.
 *
 * ⚠ DIE ATTRIBUTE GEWINNEN, WENN SIE DA SIND. `sgpHeroMasse.php` setzt
 * `width`/`height` aus der Bilddatei -- aber nur dort, wo die Datei auch
 * liegt. Auf `sgpdev` gibt es das ganze Bildverzeichnis nicht, jedes
 * Teaserbild kommt per 302 von Live. Eine Reparatur, die nur aus PHP
 * bestuende, waere auf dem Entwicklungsstand nicht nachmessbar -- und was
 * man nicht nachmessen kann, hat man nicht behoben.
 *
 * Deshalb hier der Rueckfall, und ausdruecklich nur fuer den Fall OHNE
 * Attribut: `:not([width])`. Liegt die Datei, gilt ihr echtes Verhaeltnis;
 * liegt sie nicht, gilt das Hausmass der Teaserbilder. Gemessen an
 * bg-rosen.jpg und bg-clematis.jpg, beide 1200x660.
 *
 * `object-fit: cover` ist die Versicherung gegen ein Teaserbild mit anderem
 * Verhaeltnis: es wird dann beschnitten, nicht verzerrt. */
.sgp-row.hero .column-1 .image-wrap img {
    width: 100%;
    height: auto;
}

.sgp-row.hero .column-1 .image-wrap img:not([width]) {
    aspect-ratio: 1200 / 660;
    object-fit: cover;
}

/* ── Der Steckbrief in der Kachel ─────────────────────────────────────────
 *
 * Die Angaben unter dem Bild kamen als `<dl>` mit Bootstrap-Spalten:
 *
 *     <dt class="col-4">Wuchshoehe</dt>   <dd class="col-8">ca. 200 cm</dd>
 *     <dt class="col-12 col-lg-3">Bluetezeit</dt>
 *                                         <dd class="col-12 col-lg-9">…</dd>
 *
 * ⚠ `col-lg-*` MISST DAS FENSTER, NICHT DIE KACHEL. Die Kachel ist zwischen
 * 221 und 273 px breit -- bei JEDER Fensterbreite. Die lg-Stufe greift also
 * nie in dem Sinn, in dem sie gemeint war: `col-12` gilt immer, Bluetezeit
 * steht immer auf einer eigenen Zeile, und ihr Wert stand dort rechtsbuendig
 * allein. Drei saubere Paare und eine vierte Zeile, die aussah wie ein
 * Versehen. Dieselbe Falle wie bei den Kachelbreiten der Artikelseite.
 *
 * Dazu ein zweites, unsichtbares Problem: `Bluetengroesse` braucht 92 px,
 * `col-4` gibt bei 229 px Kachelbreite 76. Das Wort lief 16 px in den Wert
 * hinein -- `overflow` steht auf `visible`, es wurde also nicht abgeschnitten,
 * sondern ueberlagert. Auf dem Schirm faellt das kaum auf, im Messwert schon.
 *
 * Beides loest dieselbe Umstellung: ein Raster aus zwei Spalten, die linke so
 * breit wie ihr laengstes Wort. Die `col-*`-Breiten werden dafuer
 * ueberschrieben; das Markup bleibt, wie es ist.
 *
 * ⚠ UND DIE HOEHE MUSS MIT. Bisher waren alle Kacheln gleich hoch -- aber aus
 * Zufall: Bluetezeit nahm IMMER zwei Zeilen, egal wie kurz der Text war. Mit
 * dem Raster nimmt eine kurze Bluetezeit eine Zeile, und die Kachel wurde
 * kuerzer als ihre Nachbarn: Fusskante 1746 / 1736 / 1736 statt dreimal
 * gleich. `height: 100%` laesst die Kachel die Zeilenhoehe fuellen, `mt-auto`
 * am Fuss haelt den Knopf unten. Gemessen sind danach alle drei gleich -- und
 * auf der Rosenliste, die gar keinen Steckbrief hat, verschwindet dabei eine
 * schon vorher vorhandene Unwucht von 4 px. */
.sgp-kachel-innen {
    height: 100%;
}

.sgp-kachel-innen .sgp-steckbrief {
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: .5rem;
    row-gap: .1rem;
    align-items: baseline;
}

.sgp-kachel-innen .sgp-steckbrief > dt,
.sgp-kachel-innen .sgp-steckbrief > dd {
    width: auto;
    max-width: none;
    flex: none;
    margin: 0;
    padding-left: 0;
    padding-right: 0;
}

.sgp-kachel-innen .sgp-steckbrief > dd {
    text-align: right;
}
