/* ============================================================================
   HomeBee + ImmoBee — gemeinsame Design-Basis
   ============================================================================
   Eine Schicht für beide Apps. Erst die Werte als Variablen, dann die
   Bausteine. Ein Thema aus themen/ überschreibt nur Variablen, niemals
   Bausteine — so bleibt die Form in jedem Thema gleich.

   Die Masse sind aus beiden Apps zusammengeführt, nicht aus einer übernommen:

     Baustein   ThomysHomeBee          ImmoBee                hier
     --------   --------------------   --------------------   --------------
     Knopf      r 10, p 8/12, 14px     —                      r 10, p 8/13
     Kachel     r 11, p 11/10, Rand 1  r 18, p 14/15, Rand 2  r 14, p 12/13, Rand 1
     Raster     min 130, Abstand 7     min 126, Abstand 12    min 128, Abstand 10
     Karte      r 12, p 10/12          r 10 bis 16, p 16/18   r 13, p 14
     Marke      r 10 (eckig gerundet)  r 999 (Pille)          r 999 (Pille)
     Kennzahl   —                      1.6rem, 700, tabular   1.5rem, 700, tabular

   Einbinden:
       <link rel="stylesheet" href="design/basis.css">
       <link rel="stylesheet" href="design/themen/alchemy.css">   (optional)
   Thema wählen:
       <body data-thema="alchemy">     — ohne Angabe gilt die neutrale Basis
   ============================================================================ */

:root {
  /* ---- Flächen, von hinten nach vorn. Bewusst neutrales Anthrazit ohne
          Farbstich, damit kein Thema schon in der Basis vorweggenommen wird. */
  --grund:        #121316;
  --flaeche:      #1a1c20;
  --flaeche-hoch: #23262c;
  --linie:        #2e3138;

  /* ---- Schrift ---- */
  --text:        #e9eaed;
  --text-leise:  #9096a0;

  /* ---- Akzente. Zurückhaltend; Themen dürfen laut werden. ---- */
  --akzent:      #5b8dbe;
  --akzent-2:    #7fa9d0;
  --gut:         #4ca97a;
  --warnung:     #c8913f;
  --fehler:      #c96a63;

  /* ---- Masse ---- */
  --r-karte:     13px;
  --r-kachel:    14px;
  --r-knopf:     10px;
  --luft:        14px;
  --raster-min:  128px;
  --raster-gap:  10px;
  --schrift:     15px/1.45 system-ui, Roboto, Arial, sans-serif;

  /* ---- Wirkung ---- */
  --schatten:    0 1px 3px rgba(0,0,0,.35);
  --glanz:       none;          /* Themen mit Leuchten setzen hier etwas ein */
}

/* ===================== Grundgerüst ===================== */

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }

body { margin: 0; background: var(--grund); color: var(--text); font: var(--schrift); }
a { color: var(--akzent); }

/* ===================== Kopfzeile ===================== */

.ha-kopf {
  position: sticky; top: 0; z-index: 10;
  display: flex; gap: .6em; align-items: center; flex-wrap: wrap;
  padding: .6em .9em;
  background: var(--flaeche);
  border-bottom: 1px solid var(--linie);
}
.ha-kopf .titel  { font-weight: 600; }
.ha-kopf .rechts { margin-left: auto; display: flex; gap: .5em; }

/* ===================== Karte ===================== */

.ha-karte {
  background: var(--flaeche);
  border: 1px solid var(--linie);
  border-radius: var(--r-karte);
  padding: var(--luft);
  box-shadow: var(--schatten);
}
.ha-karte + .ha-karte { margin-top: var(--luft); }
.ha-karte > h2, .ha-karte > .karte-titel {
  margin: 0 0 .6em; font-size: 15px; font-weight: 600;
}

/* ===================== Kachel ===================== */
/* Klickbare Fläche für Szenen, Räume, Kennzahlen. Als <button> oder <div>. */

.ha-kachel {
  display: flex; flex-direction: column; gap: 4px;
  min-height: 64px;
  padding: 12px 13px;
  background: var(--flaeche-hoch);
  border: 1px solid var(--linie);
  border-radius: var(--r-kachel);
  color: var(--text);
  font: inherit; text-align: left;
}
button.ha-kachel { cursor: pointer; }
button.ha-kachel:hover { border-color: var(--akzent); }
.ha-kachel.aktiv, .ha-kachel[aria-pressed="true"] {
  border-color: var(--akzent);
  box-shadow: var(--glanz);
}
.ha-kachel .kachel-name  { font-weight: 600; }
.ha-kachel .kachel-label { color: var(--text-leise); font-size: 12px; }
.ha-kachel .kachel-wert  {
  font-size: 1.5rem; font-weight: 700; line-height: 1.1;
  font-variant-numeric: tabular-nums;   /* Zahlen springen beim Aktualisieren nicht */
}

/* ===================== Raster ===================== */

.ha-raster {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--raster-min), 1fr));
  gap: var(--raster-gap);
}
.ha-raster.weit { --raster-min: 226px; --raster-gap: 14px; }

/* ===================== Knopf ===================== */

.ha-knopf {
  padding: 8px 13px;
  border: 1px solid var(--linie);
  border-radius: var(--r-knopf);
  background: var(--flaeche-hoch);
  color: var(--text);
  font: inherit; font-size: 14px;
  cursor: pointer;
}
.ha-knopf:hover { border-color: var(--akzent); }
.ha-knopf.haupt, .ha-knopf.aktiv {
  background: var(--akzent); border-color: var(--akzent);
  color: var(--grund); font-weight: 700;
}
.ha-knopf.leise { background: transparent; color: var(--text-leise); }
.ha-knopf:disabled { opacity: .45; cursor: default; }

/* ===================== Marke ===================== */
/* Kleine Auszeichnung an einem Wert: „bezahlt", „offen", „RGB". Pille. */

.ha-marke {
  display: inline-block;
  padding: 3px 11px;
  border-radius: 999px;
  border: 1px solid var(--linie);
  background: var(--flaeche-hoch);
  color: var(--text-leise);
  font-size: .78rem; font-weight: 600;
}
.ha-marke.gut     { color: var(--gut);     border-color: var(--gut);     background: transparent; }
.ha-marke.warnung { color: var(--warnung); border-color: var(--warnung); background: transparent; }
.ha-marke.fehler  { color: var(--fehler);  border-color: var(--fehler);  background: transparent; }

/* ===================== Status ===================== */

.ha-punkt {
  display: inline-block; width: 9px; height: 9px;
  border-radius: 50%; background: var(--text-leise); vertical-align: middle;
}
.ha-punkt.an      { background: var(--gut);     box-shadow: var(--glanz); }
.ha-punkt.warnung { background: var(--warnung); }
.ha-punkt.fehler  { background: var(--fehler);  }

.ha-zeile {
  display: flex; justify-content: space-between; gap: var(--luft);
  padding: 8px 0; border-bottom: 1px solid var(--linie);
}
.ha-zeile:last-child { border-bottom: 0; }
.ha-zeile .schluessel { color: var(--text-leise); }
.ha-zeile .wert { font-variant-numeric: tabular-nums; }

/* ===================== Schmale Bildschirme ===================== */

@media (max-width: 480px) {
  :root { --raster-min: 108px; --luft: 11px; }
  .ha-kopf { padding: .5em .7em; }
  .ha-kachel .kachel-wert { font-size: 1.3rem; }
}
