/*
 * base.css  --  Grundlagen
 *
 * Elementregeln, keine Bauteile. Alles was hier steht, gilt fuer die ganze
 * Seite und benutzt ausschliesslich Variablen aus tokens.css und colors.css.
 *
 * Document & Code @copyright by SteckDesign
 * Changes by third parties are not permitted.
 */

/* Entschieden am 04.09.2026: border-box bleibt. guladev setzt box-sizing
   NIRGENDS -- seine normalize.css wird nicht einmal eingebunden, es gilt also
   der Browser-Standard content-box. Gemessen an der Startseite: die Breiten
   sind in beiden gleich, die Hoehen nicht. Beim Umzug eines Site-Themes ist
   das die Stelle, an der eine gegen content-box gerechnete site.css
   auffaellt. */
*, *::before, *::after { box-sizing: border-box; }

/* Kantenglaettung. Stand in guladev seit jeher im Kopf der style.css
   (html { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing:
   grayscale }) und ist beim Neubau untergegangen -- nicht als Entscheidung,
   sondern uebersehen. Gefunden am 08.09.2026 beim Umzug von steckweb2026,
   als die alten Regeln Deklaration fuer Deklaration gegen den berechneten
   Stil gehalten wurden.

   WARUM ES KEINE MESSUNG VORHER FAND: die Angabe aendert nur, wie der
   Rasterizer die Kanten fuellt. Schriftmetrik, Breiten, Hoehen und damit
   jeder Pixelvergleich und jede getComputedStyle-Zahl bleiben gleich -- auf
   dem Bildschirm ist der Text sichtbar fetter. Das gilt fuer JEDE Site, die
   bisher auf gula5 umgestellt wurde. */
html {
	-webkit-text-size-adjust: 100%;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body {
	margin: 0;
	font-family: var( --body-font );
	font-weight: var( --bodyweight );
	font-size: var( --fontsize );
	line-height: var( --lineheight );
	color: var( --sitefgcolor );
	background-color: var( --sitebgcolor );
}

/*
 * TRENNLINIEN. Ohne diese vier Zeilen zeichnet der Browser seinen eigenen
 * Standard: border-style INSET auf allen vier Seiten. Bei einem <hr>, das
 * ueber .hrwidth6 sechs Pixel hoch wird, ergibt das keine Linie, sondern ein
 * graues, abgeschraegtes Parallelogramm -- die Schattierung von "inset"
 * faerbt zwei Seiten dunkler und macht aus dem Rechteck einen Trapez.
 *
 * Gemessen am 05.09.2026 auf mktaylor26 (/sermons/, Balken ueber "Sermons by
 * Year"): guladev ein sauberer weisser Strich 83x6, gula5 ein schraeges
 * graues Feld. Die Klassenregeln (.hrborder, .hrwhite, .hrwidth6) waren
 * vorhanden und richtig -- es fehlte allein die Grundregel darunter.
 *
 * Das Zusammenspiel: "border: 0" nimmt allen vier Seiten den Stil, die
 * zweite Zeile gibt ihn NUR OBEN zurueck (Breite 0). Erst danach darf
 * .hrwidth* eine Breite setzen, ohne dass links, rechts und unten
 * mitzeichnen.
 *
 * GEFUNDEN HAT DAS KEINE MESSUNG, sondern der Blick auf den Bildschirm.
 * Im HTML steht dasselbe <hr>, die Kennzahlen sind gleich, das Log ist leer,
 * und selbst getComputedStyle meldet nur "border-style: inset" -- was
 * plausibel aussieht, wenn man nicht weiss, wie es aussehen soll.
 */
hr {
	margin-top: 0rem;
	margin-bottom: 0rem;
	border: 0;
	border-top: 0px solid transparent;
}

/* Bilder nie breiter als ihr Kasten. Ohne das sprengt ein einziges grosses
   Bild das Raster und erzeugt seitliches Scrollen auf dem Handy. */
img, video, svg { max-width: 100%; height: auto; }

/*
 * Links. Die gepunktete Unterstreichung ist Absicht und stand in guladevs
 * style.css -- dort allerdings als Widerspruch: erst "text-decoration: none",
 * dann in derselben Regel text-decoration-line/-style/-thickness, die es
 * wieder anschalten. Hier steht nur das Ergebnis.
 *
 * gula5 hatte nur das "none". Aufgefallen ist es beim Durchklicken in Brave:
 * der Link "mehr >" unter einem Blogauszug war unterstrichen, in gula5 nicht.
 * Im Markup ist davon nichts zu sehen.
 *
 * Der Uebergang gehoert dazu: ohne ihn springt die Farbe beim Ueberfahren.
 */
a, a:visited {
	color: var( --site_link_color );
	text-decoration-line: underline;
	text-decoration-style: dotted;
	text-decoration-thickness: 1px;
	text-underline-offset: calc( var( --size-1 ) * 0.3 );
	transition: all .2s ease-in-out;
}
a:hover   { color: var( --site_linkhover_color ); }

/* Markierter Text. Stand in guladev in style.css -- und style.css traegt in
   gula5 nur noch den Theme-Kopf, darum war die Regel beim Neubau ersatzlos
   weg. Aufgefallen ist es nicht am Aussehen, sondern am Widerspruch: die
   Optionsseite bietet unter "Markierter Text" ein Feld auf
   --selection_color an, und keine einzige Regel las die Variable. Das Feld
   sah aus, als tue es etwas. */
::-moz-selection { background-color: var( --selection_color ); color: rgba( var(--white), 1 ); }
::selection      { background-color: var( --selection_color ); color: rgba( var(--white), 1 ); }

/*
 * Ueberschriften. Beim Neubau war hier nur EINE Regel fuer h1..h6 mit
 * line-height 1.2 -- ohne Farbe, ohne Groessenstaffel und ohne die
 * .h1..h6-Zwillinge. Die Folge war nicht "etwas anders", sondern: die
 * Groessen kamen aus dem Browser-Standardblatt, und die Klassen taten gar
 * nichts. Gemessen auf devwp5 gegen devwp26:
 *     h2  19,41 px statt 20,71 · h3 15,14 statt 18,76 · h4 12,94 statt 16,18
 *     h5  10,74 statt 14,62 · h6 8,67 statt 12,94 · alle weiss statt
 *     --title_color · .h1 bis .h6 durchweg 12,94 px, also wirkungslos
 * h1 stimmte zufaellig -- 2em Browser-Vorgabe traf genau die Theme-Groesse.
 * Genau daran ist zu sehen, warum ein Vergleich am HTML nicht reicht: das
 * Markup war identisch.
 *
 * Die Staffel ist die aus guladev, unveraendert, damit ein Site-Theme gegen
 * beide laufen kann.
 */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
	color: var( --title_color );
	font-family: var( --title-font );
	font-style: var( --font-normal );
	font-weight: var( --titleweight );
	margin: 0;
	padding: 0;
}
h1, .h1 { font-size: calc( var( --size-1 ) * 2 );    line-height: calc( var( --size-1 ) * 2.2 );  margin-bottom: calc( var( --size-1 ) * 0.45 ); letter-spacing:  0.05rem;  }
h2, .h2 { font-size: calc( var( --size-1 ) * 1.6 );  line-height: calc( var( --size-1 ) * 1.8 );  margin-bottom: calc( var( --size-1 ) * 0.4 );  letter-spacing: -0.05rem;  }
h3, .h3 { font-size: calc( var( --size-1 ) * 1.45 ); line-height: calc( var( --size-1 ) * 1.65 ); margin-bottom: calc( var( --size-1 ) * 0.4 );  letter-spacing: -0.05rem;  }
h4, .h4 { font-size: calc( var( --size-1 ) * 1.25 ); line-height: calc( var( --size-1 ) * 1.45 ); margin-bottom: calc( var( --size-1 ) * 0.3 );  letter-spacing: -0.025rem; }
h5, .h5 { font-size: calc( var( --size-1 ) * 1.13 ); line-height: calc( var( --size-1 ) * 1.33 ); margin-bottom: calc( var( --size-1 ) * 0.25 ); letter-spacing: -0.025rem; }
h6, .h6 { font-size: calc( var( --size-1 ) * 1 );    line-height: calc( var( --size-1 ) * 1.2 );  margin-bottom: calc( var( --size-1 ) * 0.15 ); letter-spacing: -0.025rem; }


/* Absatz. Der Abstand ist 0,65 Stufen, nicht eine ganze -- gemessen an
   guladev. Und die Silbentrennung gehoert dazu: ohne sie brechen lange
   deutsche Woerter die Spalte. -moz-, -ms- und -o-hyphens sind weggelassen
   (ein -o-hyphens hat es nie gegeben), -webkit- bleibt fuer Safari. */
p {
	margin: 0 0 calc( var( --size-1 ) * 0.65 );
	padding: 0;
	-webkit-hyphens: auto;
	hyphens: auto;
}

/*
 * Listen. Beim Neubau ganz vergessen -- gula5 liess die Browser-Vorgaben
 * stehen. Gemessen gegen guladev: ul padding-left 40px statt 0,
 * margin-bottom 14,26px statt 0, list-style disc statt der eigenen Punkte.
 * Aufgefallen ist es erst beim Vergleich der berechneten Werte; im HTML
 * steht ja beidesmal nur <ul>.
 *
 * Zwei Dinge aus guladev NICHT uebernommen, beide gemessen wirkungsfrei:
 *   - "ul li" und "ul li::before" stehen dort ein zweites Mal in
 *     @media (min-width: 768px), mit WORTGLEICHEN Angaben. Eine Wiederholung
 *     desselben Werts aendert nichts.
 *   - -moz-hyphens, -ms-hyphens und -o-hyphens. Ein "-o-hyphens" hat es nie
 *     gegeben, die anderen zwei sind seit Jahren unnoetig. -webkit-hyphens
 *     bleibt, das braucht Safari bis heute.
 */
ul { margin: 0; padding: 0; list-style: none; text-align: left; }
ol { margin: 0; padding: 0; text-align: left; }

/* Eine Liste direkt nach einem Absatz rueckt hoch -- der Absatz bringt seinen
   eigenen Abstand schon mit. */
p ~ ul, p ~ ol { margin-top: calc( var( --size-1 ) * -0.65 ); }

ul li, ol li {
	padding-left: 0;
	margin-bottom: calc( var( --size-1 ) * 0.2 );
	-webkit-hyphens: auto;
	hyphens: auto;
}
ul li { margin-left: calc( var( --size-1 ) * 0.8 ); }
ol li { margin-left: calc( var( --size-1 ) * 2 ); }

/* Der eigene Aufzaehlungspunkt: ein Kreis in der Titelfarbe, mit negativem
   linken Abstand in den Freiraum gezogen, den list-style:none hinterlaesst. */
ul li::before {
	background-color: var( --title_color );
	border-radius: 50%;
	content: "";
	display: inline-block;
	height: 8px;
	width: 8px;
	margin-right: 10px;
	margin-bottom: 2px;
	margin-left: -1.05rem;
}

.small ul li { margin-left: calc( var( --size-1 ) * 0.8 ); }
.small ol li { margin-left: calc( var( --size-1 ) * 1.5 ); }

/* Sichtbarer Fokus. Der Browser-Standard verschwindet auf farbigen Flaechen,
   und Tastaturbedienung ist dann Raten. */
:focus-visible { outline: 2px solid var( --site_linkhover_color ); outline-offset: 2px; }

/* Nur fuer Screenreader -- WordPress erwartet diese Klasse (Suchformular,
   Kommentare, "Zum Inhalt springen"). */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip-path: inset( 50% );
	white-space: nowrap;
}


/* =================================================================
   WordPress-Kernklassen
   Was der Editor ausgibt: alignleft/right/center, wp-caption,
   Galerie, sticky. Uebernommen aus guladev, ohne stillgelegte Regeln.
   ================================================================= */

.alignnone {
	margin:5px 20px 20px 0;
}
.aligncenter,
div.aligncenter {
	display:block;
	margin:5px auto 5px auto;
}
.alignright {
	float:right;
	margin:5px 0 10px 20px;
}
.alignleft {
	float:left;
	margin:5px 20px 10px 0;
}
a img.alignright {
	float:right;
	margin:5px 0 20px 20px;
}
a img.alignnone {
	margin:5px 20px 20px 0;
}
a img.alignleft {
	float:left;
	margin:5px 20px 20px 0;
}
a img.aligncenter {
	display:block;
	margin-left:auto;
	margin-right:auto;
}
.wp-caption {
	background:#FFF;
	border:1px solid #F0F0F0;
	max-width:96%;
	padding:5px 3px 10px;
	text-align:center;
}
.wp-caption.alignnone {
	margin:5px 20px 20px 0;
}
.wp-caption.alignleft {
	margin:5px 20px 20px 0;
}
.wp-caption.alignright {
	margin:5px 0 20px 20px;
}
.wp-caption img {
	border:0 none;
	height:auto;
	margin:0;
	max-width:98.5%;
	padding:0;
	width:auto;
}
.wp-caption .wp-caption-text,
.gallery-caption {
	font-size:11px;
	line-height:17px;
	margin:0;
	padding:0 4px 5px;
}
/*
.sticky {
}
.bypostauthor {

}
*/
