/* App-spezifisches CSS. Bewusst nahezu leer: alles Visuelle liefert das Toolkit (hsl.css).
   KANON: keine eigenen Token-Overrides, keine freien Hex/Pixel fuer Farben/Abstaende/Radien —
   ausschliesslich die --hsl-*-Tokens verwenden (CANON Grundgesetz 3). Fehlt ein Baustein,
   NICHT hier nachbauen, sondern per GAP-Backlog melden (CANON Grundgesetz 5). */

/* Beispiel fuer legitime, rein app-lokale Kleinigkeit (Abstand ueber den Token gesetzt): */
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--gap);
  margin-bottom: var(--gap);
}

/* heusel.one Tab-Leiste + iframe-Host (GAP: css.git docs/gaps/2026-07-19-shell-tabstrip.md) */
.one-tabs{display:flex;gap:4px;padding:8px 14px 0;flex-wrap:wrap}
.one-tab{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:10px 10px 0 0;
  cursor:pointer;font-size:13px;opacity:.75;border:0;background:transparent;color:inherit}
.one-tab.on{opacity:1;background:color-mix(in srgb, currentColor 10%, transparent)}
.one-tab .one-tab-close{border:0;background:transparent;color:inherit;cursor:pointer;opacity:.6;padding:0 2px}
.one-tab .one-tab-close:hover{opacity:1}
.one-tab .one-tab-badge{font-size:10px;border-radius:99px;padding:1px 6px;
  background:color-mix(in srgb, currentColor 18%, transparent)}
.one-frames{flex:1;display:flex;min-height:0}
.one-frames iframe{flex:1;border:0;width:100%}
.one-frames iframe[hidden]{display:none}
.one-frame-error{margin:auto;text-align:center;display:flex;flex-direction:column;gap:10px}
.one-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
