/* ============================================================
   templates.css — DIE ZENTRALE VORLAGENDATEI

   ┌──────────────────────────────────────────────────────────┐
   │  HIER stehen alle Bausteine, die auf MEHR ALS EINER      │
   │  Seite vorkommen. Wer einen Knopf, ein Badge, eine       │
   │  Pille, eine Karte oder eine Listenzeile braucht,        │
   │  nimmt sie von hier — und ändert sie auch nur hier.      │
   └──────────────────────────────────────────────────────────┘

   Geladen von: index.html · about/index.html · styleguide/index.html
   (404.html ist bewusst eigenständig und trägt ihre paar Zeilen selbst,
   weil sie von jeder falschen Adresse aus ausgeliefert wird und relative
   Pfade dort ins Leere zeigen.)

   WAS WOHIN GEHÖRT
     styles/base.css        Tokens: Farben, Schriften, Achsen, Grundlagen
     styles/site.css        das Aussehen DIESER Website (Raster, Sektionen)
     styles/templates.css   ← diese Datei: die geteilten Bausteine
     styles/brutal-light.css  die alternative Palette («Brutalist Light»)
     home/ about/ work/ components/…   nur noch Seiten- bzw. Komponenten-
                            spezifisches, keine Bausteine mehr

   SIE SETZT NUR TOKENS EIN, nie feste Farben oder Schriftnamen
   (`var(--ink)`, `var(--mono-font)`, `var(--axis-ui)` …). Dadurch läuft
   dieselbe Vorlage in der cremefarbenen Palette der Website UND in der
   hellen «Brutalist Light»-Palette des Styleguides.

   AUFBAU
     1  Schriftrollen — welches Element trägt welche der zwei Schriften
     2  Knöpfe (Rahmen bei Hover) + die eine laute Ausnahme
     3  Badges · Pills · Tags
     4  Karten · Listenzeilen · Trenner
   ============================================================ */


.btn{
  display: inline-flex;
  align-items: center;
  min-height: 44px;              /* Touch-Ziel */
  padding: 4px 0.5em;            /* reservierter Platz — verhindert den Sprung */
  border: 1px solid transparent; /* Rahmen immer da, nur unsichtbar */
  border-radius: 0;
  background: none;              /* ausdrücklich KEINE Hintergrundbox */
  color: var(--ink);
  font-family: var(--font-ui);
  font-variation-settings: var(--axis-ui);
  font-size: var(--t-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  background-image: none;        /* kein wachsender Link-Unterstrich */
  cursor: pointer;
  transition: color var(--t), font-variation-settings var(--t), border-color var(--t);
}

.btn:hover,
.btn:focus-visible{
  font-variation-settings: var(--axis-ui-bold);
  border-color: var(--blue);
}

/* Farbvarianten — der Rahmen nimmt die Akzentfarbe, der Text bleibt
   schwarz. Rot als Textfarbe käme auf dem hellen Grund nur auf 3.4:1. */
.btn--cta:hover,  .btn--cta:focus-visible{ border-color: var(--red); }

.btn--blue:hover, .btn--blue:focus-visible{ color: var(--blue); border-color: var(--blue); }

/* Der aktive/gedrückte Zustand darf sichtbar sein, ohne eine Box zu bauen */
.btn:active{ color: var(--blue); }

/* --- Ausnahme mit Absicht: der EINE harte Knopf ----------------------
   Die Rahmen-Geste ist leise. Wenn irgendwo ein Handlungsaufruf laut
   sein MUSS (Kontakt, «Projekt anfragen»), gibt es diese eine Variante
   mit Fläche und hartem, versetztem Schatten. Sie ist bewusst die
   Ausnahme — zwei laute Knöpfe nebeneinander heben sich gegenseitig auf.
   Schwarze Schrift auf Rot: 5.8:1 (weiss käme nur auf 3.6:1). */
.btn--box{
  padding: 12px 22px;
  border: var(--line-bold) solid var(--ink);
  background: var(--red);
  box-shadow: var(--shadow);
  transition: transform var(--t), box-shadow var(--t), background-color var(--t);
}
.btn--box:hover,
.btn--box:focus-visible{
  transform: translate(2px, 2px);
  box-shadow: var(--shadow-in);
  background: var(--yellow);
}
.btn--box:active{ transform: translate(4px, 4px); box-shadow: 0 0 0 var(--ink); }


/* ============================================================
   2b.  DIE KNÖPFE DER WEBSITE — im Ruhezustand ohne Fläche, nur Text
   ============================================================ */

.site-nav-link,
.work-filter-btn,
.case-btn,
.case-link{
  border: 1px solid transparent; /* Rahmen immer da, nur unsichtbar — reserviert den Platz */
  border-radius: 0;
  background: transparent;
  padding-inline: 0.5em;
  font-size: var(--btn-size);
  letter-spacing: var(--btn-tracking);
  color: var(--ink);
  transition: color 0.2s ease, font-variation-settings 0.2s ease, border-color 0.2s ease;
}

/* Hover/Fokus: Rechteck mit blauem Rahmen, innen ohne Fläche — kein [ ] mehr */
.site-nav-link:hover,      .site-nav-link:focus-visible,
.work-filter-btn:hover,    .work-filter-btn:focus-visible,
.case-btn:hover,           .case-btn:focus-visible,
.case-link:hover,          .case-link:focus-visible{ color: var(--blue); border-color: var(--blue); }

/* Der schwebende CTA behält seine Fläche (siehe nav.css) und bekommt darum
   weder den Hover-Rahmen noch einen durchsichtigen Grund — nur die grössere Schrift. */
.site-cta-btn{ font-size: var(--btn-size); letter-spacing: var(--btn-tracking); }

/* Ausgewählte Knöpfe: Rechteck in Blau hinter der Schrift, Farben vom
   Titel-Schild am Cursor der Galerie übernommen (User 2026-08-19: «bei
   ausgewählten button hinter font einen rechteck mit blauen farben,
   übernehme die farben von titelcursor. und die font ist weiss», dann
   «ebenso die hero knöpfe» — also auch «hier stehst du gerade» in der
   Kopfzeile, die während des Hero fest über der Seite steht) — siehe
   .gal-cursor-in in home/work.css: dieselbe Fläche, dieselbe Schrift, nur
   ohne dessen Versatz zum Zeiger. Alle übrigen Knöpfe bleiben rahmenlos. */
.site-nav-link[aria-current="page"],
.work-filter-btn[aria-pressed="true"]{
  padding: 7px 14px 6px;
  background: var(--blue);
  color: #fff;
  font-variation-settings: var(--btn-axis-active);
}

/* Der Zähler in den Filtern tritt zurück, damit die Rubrik führt */
.work-filter-count{ margin-left: 0.35em; opacity: 0.55; }


/* ============================================================
   3.  BADGES · PILLS · TAGS — alles in der Terminal-Schrift
   ============================================================ */

.badge{
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 10px;
  border: var(--line) solid var(--ink);
  background: var(--yellow);
  font-family: var(--font-ui);
  font-variation-settings: var(--axis-ui);
  font-size: var(--t-label);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.badge--blue{ background: var(--blue); color: #fff; }
.badge--red{ background: var(--red); color: var(--ink); }
.badge--plain{ background: transparent; }

/* Menü-Pillen: eine Reihe, der aktive Eintrag ist gefüllt */
.pills{
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pill{
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 16px;
  border: var(--line) solid var(--ink);
  background: transparent;
  color: var(--ink);
  font-family: var(--font-ui);
  font-variation-settings: var(--axis-ui);
  font-size: var(--t-label);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  text-decoration: none;
  background-image: none;
  cursor: pointer;
  transition: background-color var(--t), color var(--t), box-shadow var(--t);
}
.pill:hover,
.pill:focus-visible{ background: var(--yellow); box-shadow: var(--shadow-in); }
.pill[aria-current="true"],
.pill[aria-pressed="true"]{
  background: var(--ink);
  color: var(--surface);   /* nicht --bg: das war das Blau der alten Seite */
  font-variation-settings: var(--axis-ui-bold);
}

/* Zähler in einer Pille (z. B. «WORK 10») */
.pill-count{ margin-left: 8px; font-variant-numeric: tabular-nums; opacity: 0.7; }


/* ============================================================
   4.  KARTEN · ZEILEN · TRENNER
   ============================================================ */

.card{
  border: var(--line-bold) solid var(--ink);
  background: var(--bg-2);
  padding: clamp(16px, 2vw, 28px);
  transition: transform var(--t), box-shadow var(--t);
}
.card--lift:hover{ transform: translate(-3px, -3px); box-shadow: var(--shadow-lg); }

/* Listenzeile mit Hairline — das Grundmuster einer Übersicht */
.row{
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  gap: var(--gap);
  padding: 14px 0;
  border-bottom: var(--line) solid var(--ink);
  background-image: none;
  color: inherit;
  transition: padding-left var(--t), background-color var(--t);
}
.row:hover{ padding-left: 10px; background: var(--yellow); }

.hr{ height: 0; margin: 0; border: 0; border-top: var(--line) solid var(--ink); }


