body,form,figure{margin:0;padding:0}img{border:0}header,footer,nav,section,aside,article,figure,figcaption{display:block}body{font-size:100.01%}select,input,textarea{font-size:99%}#container,.inside{position:relative}#main,#left,#right{float:left;position:relative}#main{width:100%}#left{margin-left:-100%}#right{margin-right:-100%}#footer{clear:both}#main .inside{min-height:1px}.ce_gallery>ul,.content-gallery>ul{margin:0;padding:0;overflow:hidden;list-style:none}.ce_gallery>ul li,.content-gallery>ul li{float:left}.ce_gallery>ul li.col_first,.content-gallery>ul li.col_first{clear:left}.float_left,.media--left>figure{float:left}.float_right,.media--right>figure{float:right}.block{overflow:hidden}.media{display:flow-root}.clear,#clear{height:.1px;font-size:.1px;line-height:.1px;clear:both}.invisible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.custom{display:block}#container:after,.custom:after{content:"";display:table;clear:both}
@media (max-width:767px){#wrapper{margin:0;width:auto}#container{padding-left:0;padding-right:0}#main,#left,#right{float:none;width:auto}#left{right:0;margin-left:0}#right{margin-right:0}}img{max-width:100%;height:auto}.audio_container audio{max-width:100%}.video_container video{max-width:100%;height:auto}.aspect,.responsive{position:relative;height:0}.aspect iframe,.responsive iframe{position:absolute;top:0;left:0;width:100%;height:100%}.aspect--16\:9,.responsive.ratio-169{padding-bottom:56.25%}.aspect--16\:10,.responsive.ratio-1610{padding-bottom:62.5%}.aspect--21\:9,.responsive.ratio-219{padding-bottom:42.8571%}.aspect--4\:3,.responsive.ratio-43{padding-bottom:75%}.aspect--3\:2,.responsive.ratio-32{padding-bottom:66.6666%}.aspect--9\:16,.responsive.ratio-916{padding-bottom:177.7777%}.aspect--1\:1,.responsive.ratio-11{padding-bottom:100%}
/* ==========================================================================
   Burow IT — Website-Stylesheet
   Ein einzelnes Stylesheet, kein Build-Schritt, keine Abhängigkeiten.
   Es wirkt direkt auf Contaos Standardausgabe: body, die Layout-Bereiche
   (#header, #main, #footer, .inside) und die Inhaltsklassen (.ce_*, .mod_*,
   .widget, .pagination). Einbinden genuegt - es ist keine CSS-Klasse an der
   Seite oder am Artikel noetig.

   Die zusaetzlichen bi-Klassen gehoeren zu den fertigen Abschnitten aus
   inhalt/ (Hero, Zahlenband, Paketkarten). Wer die nicht nutzt, kann sie
   ignorieren - sie greifen nur, wo sie im HTML stehen.
   ========================================================================== */

/* --- Tokens -------------------------------------------------------------- */
:root {
  --bi-bg: #161826;
  --bi-surface: #232532;
  --bi-text: #e9e9ed;
  --bi-line: #2b2e3d;
  --bi-line-strong: #33364a;

  --bi-accent: #4a7fd6;
  --bi-accent-100: #dce8f9;
  --bi-accent-300: #9dbcec;
  --bi-accent-400: #6a99e0;
  --bi-accent-800: #1b3a6b;

  --bi-neutral-100: #f3f5fe;
  --bi-neutral-200: #e4e7f5;
  --bi-neutral-300: #cfd3e5;
  --bi-neutral-400: #b2b6ca;
  --bi-neutral-500: #9397ab;
  --bi-neutral-800: #3f424d;

  --bi-section: #14295c;
  --bi-section-glow: #1e3d85;
  --bi-section-text: #ccd8f0;

  --bi-font: "Inter", system-ui, sans-serif;
  --bi-radius: 8px;
  --bi-radius-sm: 4px;
  --bi-shell: 1180px;

  --bi-shadow-sm: 0 0 0 1px #3f424d;
  --bi-shadow-md: 0 0 0 1px #595d6c, 0 6px 18px rgba(0, 0, 0, 0.55);
}

/* --- Grundlagen ---------------------------------------------------------- */
html,
body,
body *,
body *::before,
body *::after { box-sizing: border-box; }

html {
  background: var(--bi-bg);
  -webkit-text-size-adjust: 100%;
}
body {
  background: var(--bi-bg);
  color: var(--bi-text);
  font-family: var(--bi-font);
  font-size: 16px;
  line-height: 1.65;
  margin: 0;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
h1,
h2,
h3 { font-family: var(--bi-font); font-weight: 500; margin: 0; }
p { margin: 0; }
a { color: var(--bi-accent); text-decoration: none; }
a:hover { color: var(--bi-accent-300); }
:focus-visible { outline: 2px solid var(--bi-accent); outline-offset: 2px; }
::selection { background: rgba(74, 127, 214, 0.3); }

.bi-shell {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 0 32px;
  width: 100%;
}

/* --- Buttons ------------------------------------------------------------- */
.bi-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-family: var(--bi-font);
  font-weight: 500;
  font-size: 14px;
  line-height: 1.2;
  color: var(--bi-text);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--bi-radius);
  padding: 5.6px 10px;
  cursor: pointer;
}
.bi-btn--primary { color: var(--bi-accent); border-color: var(--bi-accent); }
.bi-btn--primary:hover { background: rgba(74, 127, 214, 0.12); color: var(--bi-accent); }
.bi-btn--primary:active { background: rgba(74, 127, 214, 0.22); }
.bi-btn--secondary { border-color: rgba(233, 233, 237, 0.16); }
.bi-btn--secondary:hover { background: rgba(233, 233, 237, 0.07); color: var(--bi-text); }
.bi-btn--secondary:active { background: rgba(233, 233, 237, 0.14); }
.bi-btn--ghost { color: var(--bi-accent); }
.bi-btn--ghost:hover { background: rgba(74, 127, 214, 0.1); color: var(--bi-accent); }
.bi-btn--lg { font-size: 15px; padding: 12px 22px; }
.bi-btn--block { width: 100%; }

/* --- Karten, Tags, Linien ------------------------------------------------ */
.bi-card { background: var(--bi-surface); border-radius: var(--bi-radius); }
.bi-card--sm { box-shadow: var(--bi-shadow-sm); }
.bi-card--md { box-shadow: var(--bi-shadow-md); }

.bi-tag {
  display: inline-flex;
  align-items: center;
  font-size: 11px;
  letter-spacing: 0.02em;
  padding: 3px 10px;
  border-radius: 6px;
}
.bi-tag--accent { background: var(--bi-accent-800); color: var(--bi-accent-100); }
.bi-tag--neutral { background: var(--bi-neutral-800); color: var(--bi-neutral-100); }
.bi-tag--outline { border: 1px solid var(--bi-accent); color: var(--bi-accent); }
.bi-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }

/* Nocturne-Signatur: freistehende Linien laufen an den Enden aus. */
.bi-rule {
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--bi-line-strong) 48px,
    var(--bi-line-strong) calc(100% - 48px), transparent);
}
.bi-rule--solid { height: 1px; background: var(--bi-line-strong); }

.bi-lighten { mix-blend-mode: lighten; background-color: transparent; }

/* nur fuer Screenreader (entspricht Contaos .invisible) */
.bi-sr,
.invisible {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

/* --- Abschnittsköpfe ----------------------------------------------------- */
.bi-kicker { display: flex; align-items: center; gap: 14px; margin-bottom: 22px; }
.bi-kicker::before {
  content: "";
  display: block;
  width: 34px;
  height: 1px;
  background: var(--bi-accent);
  flex: none;
}
.bi-kicker span {
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bi-accent-300);
}
.bi-h2 {
  font-size: clamp(30px, 3.4vw, 46px);
  letter-spacing: -0.02em;
  line-height: 1.1;
  max-width: 24ch;
}
.bi-h2--big { font-size: clamp(34px, 4vw, 54px); letter-spacing: -0.025em; line-height: 1.05; }
.bi-lead {
  margin-top: 20px;
  font-size: 17px;
  line-height: 1.65;
  color: var(--bi-neutral-400);
  max-width: 58ch;
  text-wrap: pretty;
}
.bi-section { padding-top: 110px; }
.bi-section--services { padding: 120px 32px 40px; }

/* --- Kopfzeile ----------------------------------------------------------- */
.bi-header {
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(22, 24, 38, 0.82);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--bi-line);
}
.bi-header__inner {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 14px 32px;
  display: flex;
  align-items: center;
  gap: 32px;
}
.bi-brand { display: flex; align-items: center; gap: 10px; flex: none; }
.bi-brand img { width: 26px; height: 26px; }
.bi-brand__name { font-weight: 500; font-size: 17px; letter-spacing: 0.01em; color: var(--bi-text); }
.bi-brand__tag {
  font-size: 11px;
  color: var(--bi-neutral-500);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding-top: 3px;
}
.bi-nav {
  display: flex;
  gap: 26px;
  margin-left: auto;
  font-size: 14px;
  white-space: nowrap;
}
.bi-nav a { color: var(--bi-neutral-300); }
.bi-nav a:hover { color: var(--bi-text); }

/* --- Hero ---------------------------------------------------------------- */
.bi-hero {
  position: relative;
  min-height: 86vh;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.bi-hero__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.5;
}
.bi-hero__veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg, #161826 12%, rgba(22, 24, 38, 0.86) 46%, rgba(22, 24, 38, 0.35) 100%);
}
.bi-hero__glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(60% 70% at 8% 90%, rgba(74, 127, 214, 0.22), transparent 70%);
}
.bi-hero__inner {
  position: relative;
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 140px 32px 84px;
  width: 100%;
  display: grid;
  grid-template-columns: 1fr 400px;
  gap: 56px;
  align-items: center;
}
.bi-hero__title {
  font-size: clamp(40px, 5.6vw, 76px);
  line-height: 1.02;
  letter-spacing: -0.025em;
  max-width: 15ch;
  text-wrap: balance;
}
.bi-hero__lead {
  margin-top: 28px;
  font-size: 19px;
  line-height: 1.6;
  color: var(--bi-neutral-300);
  max-width: 52ch;
  text-wrap: pretty;
}
.bi-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 40px; }

/* --- Monitoring-Panel ---------------------------------------------------- */
.bi-mon {
  padding: 20px;
  border-radius: var(--bi-radius);
  background: rgba(35, 37, 50, 0.86);
  box-shadow: var(--bi-shadow-md);
  backdrop-filter: blur(6px);
  animation: bi-float 9s ease-in-out infinite;
}
/* Einzeln eingesetzt (Inhaltselement HTML), nicht im Hero. */
.bi-mon--solo { max-width: 420px; }
/* Als eigenes Element im Artikel fuellt das Panel seine Rasterspalte. */
.mod_article > .bi-mon { max-width: none; }

.bi-mon__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--bi-line-strong);
}
.bi-mon__dot { position: relative; width: 8px; height: 8px; flex: none; }
.bi-mon__dot i,
.bi-mon__dot b { position: absolute; inset: 0; border-radius: 50%; }
.bi-mon__dot i { background: var(--bi-accent); animation: bi-pulse 2.4s ease-in-out infinite; }
.bi-mon__dot b { border: 1px solid var(--bi-accent); animation: bi-ring 2.4s ease-out infinite; }
.bi-mon__label {
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bi-neutral-300);
}
.bi-mon__meta { margin-left: auto; font-size: 12px; color: var(--bi-neutral-500); }
.bi-mon__chart {
  position: relative;
  margin-top: 16px;
  overflow: hidden;
  border-radius: var(--bi-radius-sm);
}
.bi-mon__chart svg { display: block; width: 100%; height: 78px; }
.bi-mon__chart path {
  fill: none;
  stroke: var(--bi-accent);
  stroke-width: 1.6;
  stroke-linejoin: round;
  stroke-dasharray: 620;
  animation: bi-draw 7s ease-in-out infinite;
}
.bi-mon__chart line { stroke: var(--bi-line); stroke-width: 1; }
.bi-mon__scan {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 60px;
  background: linear-gradient(90deg, transparent, rgba(74, 127, 214, 0.16), transparent);
  animation: bi-scan 7s linear infinite;
}
.bi-mon__rows { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }
.bi-mon__row {
  display: grid;
  grid-template-columns: 96px 1fr 40px;
  gap: 10px;
  align-items: center;
  font-size: 12px;
  color: var(--bi-neutral-300);
}
.bi-mon__bar { height: 4px; border-radius: 2px; background: var(--bi-line); overflow: hidden; }
.bi-mon__bar i { display: block; height: 100%; background: var(--bi-accent-400); }
.bi-mon__row:nth-child(1) .bi-mon__bar i { animation: bi-load-b 6.5s ease-in-out infinite; }
.bi-mon__row:nth-child(2) .bi-mon__bar i { animation: bi-load-a 8s ease-in-out infinite; }
.bi-mon__row:nth-child(3) .bi-mon__bar i { animation: bi-load-c 9.5s ease-in-out infinite; }
.bi-mon__unit { text-align: right; color: var(--bi-neutral-500); }
.bi-mon__log {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--bi-line-strong);
  display: flex;
  flex-direction: column;
  gap: 9px;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.bi-mon__line {
  display: flex;
  gap: 10px;
  color: var(--bi-neutral-300);
  animation: bi-log 12s linear infinite;
}
.bi-mon__line:nth-child(2) { animation-delay: 4s; }
.bi-mon__line:nth-child(3) { animation-delay: 8s; }
.bi-mon__time { color: var(--bi-neutral-500); }
.bi-mon__alert {
  display: flex;
  gap: 10px;
  align-items: center;
  color: var(--bi-accent-300);
  animation: bi-alert 12s ease-in-out infinite;
}
.bi-mon__alert::before {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--bi-accent);
  flex: none;
}

@keyframes bi-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.35; transform: scale(0.82); } }
@keyframes bi-ring { 0% { opacity: 0.5; transform: scale(0.6); } 70%, 100% { opacity: 0; transform: scale(2.4); } }
@keyframes bi-draw { 0% { stroke-dashoffset: 620; } 55%, 100% { stroke-dashoffset: 0; } }
@keyframes bi-scan { 0% { transform: translateX(-8%); } 100% { transform: translateX(108%); } }
@keyframes bi-load-a { 0%, 100% { width: 34%; } 30% { width: 61%; } 65% { width: 44%; } }
@keyframes bi-load-b { 0%, 100% { width: 72%; } 40% { width: 52%; } 80% { width: 83%; } }
@keyframes bi-load-c { 0%, 100% { width: 21%; } 50% { width: 39%; } 85% { width: 27%; } }
@keyframes bi-log { 0% { opacity: 0; transform: translateY(6px); } 8%, 30% { opacity: 1; transform: none; } 42%, 100% { opacity: 0.18; transform: none; } }
@keyframes bi-alert { 0%, 44% { opacity: 0; transform: translateY(4px); } 52%, 86% { opacity: 1; transform: none; } 96%, 100% { opacity: 0; } }
@keyframes bi-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }

/* --- Zahlenband ---------------------------------------------------------- */
.bi-stats { background: var(--bi-section); position: relative; overflow: hidden; }
.bi-stats::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(70% 120% at 15% 0%, var(--bi-section-glow), transparent 70%);
}
.bi-stats__grid {
  position: relative;
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 56px 32px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px;
}
.bi-stat__num { font-weight: 500; font-size: 44px; line-height: 1; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.bi-stat__txt { margin-top: 10px; font-size: 14px; color: var(--bi-section-text); }

/* --- Pakete -------------------------------------------------------------- */
.bi-plans {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 48px;
}
.bi-plan { padding: 28px; display: flex; flex-direction: column; gap: 18px; }
.bi-plan__head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.bi-plan__head h3 { font-size: 22px; }
.bi-plan__hint {
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bi-neutral-500);
}
.bi-plan__desc { font-size: 15px; line-height: 1.65; color: var(--bi-neutral-400); }
.bi-plan__list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
  font-size: 15px;
  color: var(--bi-neutral-200);
}
.bi-plan__list li { display: flex; gap: 10px; }
.bi-plan__list li::before { content: "—"; color: var(--bi-accent); flex: none; }
.bi-plan .bi-btn { margin-top: auto; }

/* --- Leistungen ---------------------------------------------------------- */
.bi-rows {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 0 32px 40px;
  display: flex;
  flex-direction: column;
}
.bi-row {
  display: grid;
  grid-template-columns: 86px 1.05fr 0.95fr;
  gap: 40px;
  align-items: center;
  padding: 44px 0;
}
.bi-row__num { font-weight: 500; font-size: 15px; color: var(--bi-accent); letter-spacing: 0.1em; }
.bi-row__title { font-size: 27px; letter-spacing: -0.015em; }
.bi-row__text {
  margin-top: 14px;
  font-size: 16px;
  line-height: 1.7;
  color: var(--bi-neutral-400);
  text-wrap: pretty;
}
.bi-row__quote {
  margin-top: 18px;
  padding-left: 16px;
  border-left: 2px solid var(--bi-accent);
  font-size: 16px;
  line-height: 1.6;
  color: var(--bi-text);
  max-width: 46ch;
  text-wrap: pretty;
}
.bi-row__media {
  border-radius: var(--bi-radius);
  overflow: hidden;
  aspect-ratio: 16 / 10;
}
.bi-row__media img { width: 100%; height: 100%; object-fit: cover; }

/* --- Vergleichstabelle --------------------------------------------------- */
.bi-table { width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 44px; }
.bi-table th {
  text-align: left;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(233, 233, 237, 0.6);
  padding: 5.6px;
}
.bi-table td { padding: 5.6px; }
.bi-table th:first-child { width: 52%; }
.bi-table th.bi-is-us { color: var(--bi-text); }
.bi-table th.bi-is-them,
.bi-table td.bi-is-them { color: var(--bi-neutral-500); }
.bi-table thead tr {
  background: linear-gradient(90deg, transparent, rgba(233, 233, 237, 0.16) 48px,
    rgba(233, 233, 237, 0.16) calc(100% - 48px), transparent) no-repeat bottom / 100% 1px;
}
.bi-table tbody tr {
  background: linear-gradient(90deg, transparent, rgba(233, 233, 237, 0.08) 48px,
    rgba(233, 233, 237, 0.08) calc(100% - 48px), transparent) no-repeat bottom / 100% 1px;
}

/* --- Notdienst ----------------------------------------------------------- */
.bi-emergency {
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  align-items: stretch;
}
.bi-emergency__body {
  padding: 48px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  justify-content: center;
}
.bi-emergency__body h2 {
  font-size: clamp(26px, 2.6vw, 36px);
  letter-spacing: -0.02em;
  line-height: 1.15;
}
.bi-emergency__body p {
  font-size: 16px;
  line-height: 1.7;
  color: var(--bi-neutral-400);
  max-width: 46ch;
  text-wrap: pretty;
}
.bi-emergency__body .bi-tag { align-self: flex-start; }
.bi-facts { display: flex; flex-wrap: wrap; gap: 28px; margin-top: 10px; }
.bi-fact__label {
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bi-neutral-500);
}
.bi-fact__value { font-weight: 500; font-size: 22px; letter-spacing: -0.01em; }
.bi-emergency__media { min-height: 340px; }
.bi-emergency__media img { width: 100%; height: 100%; object-fit: cover; }

/* --- Kontakt ------------------------------------------------------------- */
.bi-contact {
  position: relative;
  margin-top: 110px;
  overflow: hidden;
  border-top: 1px solid var(--bi-line);
}
.bi-contact__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.28;
}
.bi-contact__veil {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, #161826 20%, rgba(22, 24, 38, 0.9) 55%, rgba(22, 24, 38, 0.6));
}
.bi-contact__inner {
  position: relative;
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 96px 32px;
  display: grid;
  grid-template-columns: 1fr 420px;
  gap: 64px;
  align-items: start;
}
.bi-contact__inner .bi-h2 { max-width: 20ch; }
.bi-contact__inner .bi-lead { color: var(--bi-neutral-300); max-width: 46ch; }
.bi-contact__meta { display: flex; flex-wrap: wrap; gap: 40px; margin-top: 44px; }
.bi-contact__meta .bi-fact__label { margin-bottom: 8px; }
.bi-contact__meta p { font-size: 15px; line-height: 1.7; color: var(--bi-neutral-200); }
.bi-contact__box { padding: 28px; display: flex; flex-direction: column; gap: 22px; }
.bi-contact__ways { display: flex; flex-direction: column; gap: 14px; font-size: 15px; line-height: 1.6; }
.bi-contact__ways .bi-fact__label { margin-bottom: 4px; }
.bi-contact__ways span { color: var(--bi-neutral-200); }
.bi-contact__note { font-size: 13px; line-height: 1.6; color: var(--bi-neutral-500); }

/* --- Fusszeile ----------------------------------------------------------- */
.bi-footer { border-top: 1px solid var(--bi-line); }
.bi-footer__inner {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 40px 32px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
}
.bi-footer__brand { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--bi-neutral-400); }
.bi-footer__brand img { width: 22px; height: 22px; }
.bi-footer__links { display: flex; gap: 22px; margin-left: auto; font-size: 14px; }
.bi-footer__links a { color: var(--bi-neutral-400); }
.bi-footer__links a:hover { color: var(--bi-text); }

/* --- Umbrueche ----------------------------------------------------------- */
@media (max-width: 1040px) {
  .bi-brand__tag { display: none; }
  .bi-stats__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 900px) {
  .bi-nav { display: none; }
  .bi-hero__inner { grid-template-columns: 1fr; padding-top: 120px; }
  .bi-mon { display: none; }
  .bi-plans { grid-template-columns: 1fr; }
  .bi-row { grid-template-columns: 40px 1fr; }
  .bi-row__media { grid-column: 2; }
  .bi-emergency,
  .bi-contact__inner { grid-template-columns: 1fr; }
  .bi-emergency__body { padding: 32px; }
  .bi-emergency__media { min-height: 240px; }
}
@media (max-width: 640px) {
  .bi-shell,
  .bi-header__inner,
  .bi-hero__inner,
  .bi-stats__grid,
  .bi-rows,
  .bi-contact__inner,
  .bi-footer__inner { padding-left: 20px; padding-right: 20px; }
  .bi-stats__grid { grid-template-columns: 1fr; }
  .bi-row { grid-template-columns: 1fr; gap: 20px; }
  .bi-row__media { grid-column: 1; }
  .bi-table { font-size: 13px; }
}
@media (prefers-reduced-motion: reduce) {
  .bi-mon,
  .bi-mon *,
  .bi-mon *::before { animation: none !important; }
}

/* ==========================================================================
   Contao-Standardklassen
   Gestaltet Contaos normale Ausgabe: Inhaltselemente (.ce_*), Frontend-Module
   (.mod_*), Navigation, Formulare, Tabellen, Bilder, Akkordeon, Downloads,
   Blaetterfunktion. Wer nur normale Inhaltselemente im Backend anlegt, erhaelt
   damit bereits das komplette Design - ohne HTML-Elemente, ohne bi-Klassen.

   Wichtig: Jede Regel hier ist auf eine Contao-Klasse gescopt (.ce_*, .mod_*,
   .widget, .pagination). Nackte Selektoren wie "p" wuerden sonst in
   die Abschnitte aus inhalt/ hineinwirken und deren Feinabstimmung ueber-
   schreiben. Beide Ebenen muessen nebeneinander funktionieren.
   ========================================================================== */

/* --- Grundlage: Seite, Wrapper, Bereiche -------------------------------- */
/* Die Wrapper-Regeln gelten nur, wenn im Bereich KEIN randloser Abschnitt
   aus inhalt/ liegt - sonst muesste dieser Abschnitt aus dem Container
   ausbrechen. Siehe Block "Contao-Integration" am Ende. */
#header:not(:has(.bi-header)),
#footer:not(:has(.bi-footer)) { background: rgba(35, 37, 50, 0.4); }
#header:not(:has(.bi-header)) { border-bottom: 1px solid var(--bi-line); }
#footer:not(:has(.bi-footer)) { border-top: 1px solid var(--bi-line); margin-top: 96px; }

#header:not(:has(.bi-header)) .inside,
#footer:not(:has(.bi-footer)) .inside {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 20px 32px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
}

#main:not(:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows)) .inside {
  max-width: none;
  margin: 0;
  padding: 72px 0;
}
#left .inside,
#right .inside {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 72px 32px;
}
/* Module neben dem Artikel (Breadcrumb, Suche) behalten die Innenbreite. */
#main .inside > *:not(.mod_article) {
  max-width: var(--bi-shell);
  margin-left: auto;
  margin-right: auto;
  padding-left: 32px;
  padding-right: 32px;
}

/* Der Artikel ist ein Raster: eine Inhaltsspur in Innenbreite, aussen zwei
   freie Spuren fuer randlose Abschnitte. Die Inhaltsspur ist in drei
   Kartenspalten geteilt, damit Paketkarten ohne Wrapper in einer Reihe
   stehen und gleich hoch werden. Kein vw, also auch kein Scrollbalken-
   Versatz. */
.mod_article {
  display: grid;
  column-gap: 20px;
  /* Der senkrechte Rhythmus liegt am Raster, nicht an den Elementen: ein
     margin-top je Element haengt vom Vorgaenger ab und verschiebt Spalten
     einer gemeinsamen Zeile gegeneinander. */
  row-gap: 40px;
  grid-template-columns:
    [full-start] minmax(12px, 1fr)
    [content-start] repeat(6, minmax(0, 169.33px)) [content-end]
    minmax(12px, 1fr) [full-end];
}
.mod_article > * { grid-column: content; min-width: 0; }

/* --- Breitenklassen ------------------------------------------------------
   Im Feld "CSS-ID/Klasse" des Elements eintragen. Mehrere Elemente
   nebeneinander ergeben sich von allein: passt das naechste Element in die
   restliche Zeile, rueckt es daneben. Gleiche Hoehe kommt vom Raster.

     w-1-2   Haelfte          w-1-3   Drittel
     w-2-3   zwei Drittel     w-1-6   Sechstel
     w-5-6   fuenf Sechstel   w-full  randlos ueber die ganze Breite

   Senkrechte Ausrichtung: v-center oder v-end am Element.
   ----------------------------------------------------------------------- */
.mod_article > .w-1-6 { grid-column: content-start / span 1; }
.mod_article > .w-1-3 { grid-column: content-start / span 2; }
.mod_article > .w-1-2 { grid-column: content-start / span 3; }
.mod_article > .w-2-3 { grid-column: content-start / span 4; }
.mod_article > .w-5-6 { grid-column: content-start / span 5; }
.mod_article > .w-full { grid-column: full; }
/* Folgt ein weiteres Element mit Breitenklasse, fliesst es in derselben
   Zeile weiter. Ohne diese Regel wuerde es wieder an der Inhaltskante
   beginnen und eine neue Zeile eroeffnen. */
.mod_article > :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) + :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) { grid-column-start: auto; }
.mod_article > .v-center { align-self: center; }
.mod_article > .v-end { align-self: end; }
/* Ebene 2 (fertige Abschnitte aus inhalt/) bringt ihr Layout selbst mit. */
.mod_article:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows) { display: block; }

/* --- Kopfzeile: Marke links, Navigation rechts -------------------------- */
#header {
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(22, 24, 38, 0.86);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--bi-line);
}
#header:not(:has(.bi-header)) .inside {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 32px;
  padding: 14px 32px;
}
/* Das Markenmodul steht zuerst, die Navigation wird nach rechts geschoben. */
#header .mod_navigation,
#header .mod_customnav,
#header .mod_changelanguage { margin-left: auto; }
#header .mod_navigation + .mod_changelanguage,
#header .mod_navigation + .mod_customnav { margin-left: 0; }

/* Marke (HTML-Modul im Kopfbereich) */
.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
}
/* Sobald eine helle Logofassung vorliegt, wird sie hier eingesetzt:
   <img src="files/burow/img/logo-hell.svg" class="brand__logo" alt="Burow IT">
   Die dunkle Fassung (#002a7f) erreicht auf dem Grund #161826 nur 1,4:1
   Kontrast und ist deshalb vorerst nicht eingebaut. */
.brand__logo { height: 26px; width: auto; display: block; flex: none; }
.brand__name {
  font-weight: 500;
  font-size: 17px;
  letter-spacing: 0.01em;
  color: var(--bi-text);
}
.brand__tag {
  font-size: 11px;
  color: var(--bi-neutral-500);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding-top: 3px;
}
a.brand:hover .brand__name { color: var(--bi-accent-300); }

@media (max-width: 720px) {
  #header:not(:has(.bi-header)) .inside { gap: 16px; padding: 12px 20px; }
  .brand__tag { display: none; }
  #header .mod_navigation ul { gap: 18px; }
  #header .mod_navigation a,
  #header .mod_navigation strong { font-size: 14px; }
}

/* Rhythmus zwischen Inhaltselementen */
/* Ueberschriften: mehr Luft darueber, weniger darunter. Sie sind immer
   volle Inhaltsbreite und teilen deshalb nie eine Zeile - hier sind
   Raender unbedenklich. */
.mod_article > .ce_headline { margin-top: 48px; margin-bottom: -16px; }
.mod_article > .ce_headline:first-child,
.mod_article > .ce_headline.first { margin-top: 0; }

/* --- Ueberschriften ------------------------------------------------------ */
.ce_headline,
.ce_text h1,
.ce_list h1,
.ce_accordion .accordion h1,
.ce_downloads h1,
.ce_table h1,
.ce_form h1,
.mod_search h1,
.layout_short h1,
.layout_full h1,
.ce_text h2,
.ce_list h2,
.ce_accordion .accordion h2,
.ce_downloads h2,
.ce_table h2,
.ce_form h2,
.mod_search h2,
.layout_short h2,
.layout_full h2,
.ce_text h3,
.ce_list h3,
.ce_accordion .accordion h3,
.ce_downloads h3,
.ce_table h3,
.ce_form h3,
.mod_search h3,
.layout_short h3,
.layout_full h3,
.ce_text h4,
.ce_list h4,
.ce_accordion .accordion h4,
.ce_downloads h4,
.ce_table h4,
.ce_form h4,
.mod_search h4,
.layout_short h4,
.layout_full h4,
.ce_text h5,
.ce_list h5,
.ce_accordion .accordion h5,
.ce_downloads h5,
.ce_table h5,
.ce_form h5,
.mod_search h5,
.layout_short h5,
.layout_full h5,
.ce_text h6,
.ce_list h6,
.ce_accordion .accordion h6,
.ce_downloads h6,
.ce_table h6,
.ce_form h6,
.mod_search h6,
.layout_short h6,
.layout_full h6 {
  font-family: var(--bi-font);
  font-weight: 500;
  color: var(--bi-text);
  letter-spacing: -0.02em;
  line-height: 1.12;
  margin: 0 0 16px;
  text-wrap: balance;
}

h1.ce_headline,
.ce_text h1 { font-size: clamp(38px, 5vw, 64px); line-height: 1.04; letter-spacing: -0.025em; max-width: 18ch; }
h2.ce_headline,
.ce_text h2 { font-size: clamp(28px, 3.4vw, 44px); max-width: 24ch; }
h3.ce_headline,
.ce_text h3 { font-size: 26px; letter-spacing: -0.015em; }
h4.ce_headline,
.ce_text h4 { font-size: 20px; letter-spacing: -0.01em; }
h5.ce_headline,
.ce_text h5 { font-size: 17px; }
h6.ce_headline,
.ce_text h6 {
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bi-accent-300);
  font-weight: 400;
}

/* Nocturne-Signatur: kurzer Akzentstrich vor dem Ueberschriften-Element. */
.ce_headline::before {
  content: "";
  display: block;
  width: 34px;
  height: 1px;
  background: var(--bi-accent);
  margin-bottom: 20px;
}

/* --- Fliesstext ---------------------------------------------------------- */
.ce_text p,
.ce_list p,
.ce_accordion .accordion p,
.ce_downloads p,
.ce_table p,
.ce_form p,
.mod_search p,
.layout_short p,
.layout_full p {
  margin: 0 0 16px;
  max-width: 68ch;
  color: var(--bi-neutral-300);
  line-height: 1.65;
  text-wrap: pretty;
}
.ce_text p:last-child,
.ce_list p:last-child,
.ce_accordion .accordion p:last-child,
.ce_downloads p:last-child,
.ce_table p:last-child,
.ce_form p:last-child,
.mod_search p:last-child,
.layout_short p:last-child,
.layout_full p:last-child { margin-bottom: 0; }
.ce_text > p:first-of-type { font-size: 17px; color: var(--bi-neutral-200); }

.ce_text strong,
.ce_list strong,
.ce_accordion .accordion strong,
.ce_downloads strong,
.ce_table strong,
.ce_form strong,
.mod_search strong,
.layout_short strong,
.layout_full strong,
.ce_text b,
.ce_list b,
.ce_accordion .accordion b,
.ce_downloads b,
.ce_table b,
.ce_form b,
.mod_search b,
.layout_short b,
.layout_full b { font-weight: 500; color: var(--bi-text); }
.ce_text small,
.ce_list small,
.ce_accordion .accordion small,
.ce_downloads small,
.ce_table small,
.ce_form small,
.mod_search small,
.layout_short small,
.layout_full small { font-size: 13px; color: var(--bi-neutral-500); }
.ce_text code,
.ce_list code,
.ce_accordion .accordion code,
.ce_downloads code,
.ce_table code,
.ce_form code,
.mod_search code,
.layout_short code,
.layout_full code {
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 0.9em;
  background: var(--bi-surface);
  border-radius: var(--bi-radius-sm);
  padding: 2px 6px;
}
.ce_hr hr,
.ce_text hr {
  border: 0;
  height: 1px;
  margin: 48px 0;
  background: linear-gradient(90deg, transparent, var(--bi-line-strong) 48px,
    var(--bi-line-strong) calc(100% - 48px), transparent);
}
.ce_text blockquote,
.ce_quote blockquote {
  margin: 0;
  padding-left: 20px;
  border-left: 2px solid var(--bi-accent);
  font-size: 19px;
  line-height: 1.55;
  color: var(--bi-text);
  max-width: 52ch;
}
.ce_text blockquote p,
.ce_quote blockquote p { color: inherit; font-size: inherit; max-width: none; }

.ce_text a,
.ce_list a,
.mod_search a { color: var(--bi-accent); border-bottom: 1px solid rgba(74, 127, 214, 0.4); }
.ce_text a:hover,
.ce_list a:hover,
.mod_search a:hover { color: var(--bi-accent-300); border-bottom-color: var(--bi-accent-300); }

/* --- Listen (.ce_list, Listen im Text) ---------------------------------- */
.ce_text ul,
.ce_text ol,
.ce_list ul,
.ce_list ol {
  margin: 0 0 16px;
  padding: 0;
  list-style: none;
  max-width: 68ch;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ce_text li,
.ce_list li {
  display: flex;
  gap: 12px;
  color: var(--bi-neutral-200);
  line-height: 1.6;
}
.ce_text ul > li::before,
.ce_list ul > li::before {
  content: "—";
  color: var(--bi-accent);
  flex: none;
}
.ce_list ol { counter-reset: bi-li; }
.ce_list ol > li { counter-increment: bi-li; }
.ce_list ol > li::before {
  content: counter(bi-li, decimal-leading-zero);
  color: var(--bi-accent);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.1em;
  flex: none;
  min-width: 2.4em;
}

/* --- Bilder (.ce_image, .ce_gallery) ----------------------------------- */
.ce_image figure,
.ce_gallery figure { margin: 0; }
.ce_image img,
.ce_gallery img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--bi-radius);
}
/* Nocturne: Fotos werden in den Grund eingeblendet. */
.ce_image .image_container,
.ce_gallery .image_container { mix-blend-mode: lighten; background-color: transparent; }
.ce_image figcaption,
.ce_image .caption,
.ce_gallery figcaption {
  margin-top: 12px;
  font-size: 13px;
  color: var(--bi-neutral-500);
  max-width: 60ch;
}
.ce_image.float_left { float: left; margin: 0 32px 24px 0; max-width: 46%; }
.ce_image.float_right { float: right; margin: 0 0 24px 32px; max-width: 46%; }

.ce_gallery ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 20px;
}
.ce_gallery ul.cols_2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ce_gallery ul.cols_3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ce_gallery ul.cols_4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.ce_gallery ul.cols_6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.ce_gallery li::before { content: none; }

/* --- Hyperlink-Element und Buttons ------------------------------------- */
.ce_hyperlink a,
a.hyperlink_txt,
.ce_form .submit,
.ce_form button,
.ce_form input[type="submit"],
.mod_search button,
.mod_search input[type="submit"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--bi-font);
  font-weight: 500;
  font-size: 15px;
  line-height: 1.2;
  color: var(--bi-accent);
  background: transparent;
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 12px 22px;
  cursor: pointer;
  width: auto;
}
.ce_hyperlink a:hover,
.ce_form .submit:hover,
.ce_form button:hover,
.mod_search button:hover { background: rgba(74, 127, 214, 0.12); color: var(--bi-accent); }
.ce_hyperlink a:active,
.ce_form .submit:active,
.ce_form button:active { background: rgba(74, 127, 214, 0.22); }

/* --- Tabelle (.ce_table) ------------------------------------------------ */
.ce_table table { width: 100%; border-collapse: collapse; font-size: 15px; }
.ce_table th {
  text-align: left;
  font-weight: 400;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(233, 233, 237, 0.6);
  padding: 12px 8px;
  background: linear-gradient(90deg, transparent, rgba(233, 233, 237, 0.16) 48px,
    rgba(233, 233, 237, 0.16) calc(100% - 48px), transparent) no-repeat bottom / 100% 1px;
}
.ce_table td {
  padding: 12px 8px;
  color: var(--bi-neutral-200);
  background: linear-gradient(90deg, transparent, rgba(233, 233, 237, 0.08) 48px,
    rgba(233, 233, 237, 0.08) calc(100% - 48px), transparent) no-repeat bottom / 100% 1px;
}
.ce_table caption {
  text-align: left;
  font-size: 13px;
  color: var(--bi-neutral-500);
  padding-bottom: 12px;
}

/* --- Akkordeon (.ce_accordion) ----------------------------------------- */
.ce_accordion { border-bottom: 1px solid var(--bi-line-strong); }
.ce_accordion .toggler {
  cursor: pointer;
  padding: 20px 40px 20px 0;
  position: relative;
  font-size: 19px;
  font-weight: 500;
  color: var(--bi-text);
}
.ce_accordion .toggler::after {
  content: "+";
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--bi-accent);
  font-size: 22px;
  line-height: 1;
}
.ce_accordion .toggler.active::after { content: "–"; }
.ce_accordion .toggler:hover { color: var(--bi-accent-300); }
.ce_accordion .accordion { padding: 0 0 24px; }

/* --- Downloads --------------------------------------------------------- */
.ce_downloads ul,
.ce_download ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ce_downloads li { display: block; }
.ce_downloads li::before { content: none; }
.ce_downloads a,
.ce_download a {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bi-surface);
  box-shadow: var(--bi-shadow-sm);
  border-radius: var(--bi-radius);
  color: var(--bi-text);
  border: 0;
}
.ce_downloads a:hover { box-shadow: var(--bi-shadow-md); color: var(--bi-text); }
.ce_downloads .size { color: var(--bi-neutral-500); font-size: 13px; }

/* --- Formulare (.ce_form, Widgets) ------------------------------------- */
.ce_form,
.mod_search .formbody {
  background: var(--bi-surface);
  box-shadow: var(--bi-shadow-sm);
  border-radius: var(--bi-radius);
  padding: 28px;
  max-width: 560px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.widget { display: flex; flex-direction: column; gap: 6px; }
.widget label {
  font-size: 13px;
  color: var(--bi-neutral-400);
  letter-spacing: 0.02em;
}
.widget label .mandatory { color: var(--bi-accent); }
.widget .text,
.widget .textarea,
.widget .select,
.widget input[type="text"],
.widget input[type="email"],
.widget input[type="tel"],
.widget input[type="url"],
.widget input[type="number"],
.widget input[type="password"],
.widget input[type="search"],
.widget textarea,
.widget select {
  font-family: var(--bi-font);
  font-size: 15px;
  color: var(--bi-text);
  background: var(--bi-bg);
  border: 1px solid var(--bi-line-strong);
  border-radius: var(--bi-radius);
  padding: 10px 12px;
  width: 100%;
}
.widget textarea { min-height: 120px; resize: vertical; }
.widget .text:hover,
.widget textarea:hover,
.widget select:hover { border-color: var(--bi-neutral-500); }
.widget ::placeholder { color: var(--bi-neutral-500); }
.widget-radio .radio_container,
.widget-checkbox .checkbox_container {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.radio_container label,
.checkbox_container label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  color: var(--bi-neutral-200);
}
.widget input[type="radio"],
.widget input[type="checkbox"] { accent-color: var(--bi-accent); width: auto; }
.widget .error,
.ce_form p.error { color: var(--bi-accent-300); font-size: 13px; }
.ce_form .confirmation {
  color: var(--bi-accent-300);
  border-left: 2px solid var(--bi-accent);
  padding-left: 16px;
}
.ce_form .submit_container { margin-top: 4px; }

/* --- Navigation (.mod_navigation, .mod_customnav) ---------------------- */
.mod_navigation ul,
.mod_customnav ul,
.mod_breadcrumb ul,
.mod_changelanguage ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 26px;
  align-items: center;
}
.mod_navigation li::before,
.mod_customnav li::before,
.mod_breadcrumb li::before,
.mod_changelanguage li::before { content: none; }
.mod_navigation a,
.mod_navigation strong,
.mod_customnav a,
.mod_customnav strong {
  font-size: 15px;
  font-weight: 400;
  color: var(--bi-neutral-300);
  padding: 4px 0;
  border-bottom: 1px solid transparent;
}
.mod_navigation a:hover,
.mod_customnav a:hover { color: var(--bi-text); }
.mod_navigation a.trail,
.mod_navigation strong.active,
.mod_customnav strong.active {
  color: var(--bi-text);
  border-bottom-color: var(--bi-accent);
}
.mod_navigation ul.level_2 {
  gap: 14px;
  flex-direction: column;
  align-items: flex-start;
  padding: 12px 0 0;
}
.mod_navigation ul.level_2 a { font-size: 14px; }

/* --- Breadcrumb, Sprachwechsler, Blaetterfunktion --------------------- */
.mod_breadcrumb { font-size: 13px; color: var(--bi-neutral-500); }
.mod_breadcrumb ul { gap: 10px; }
.mod_breadcrumb li + li::before {
  content: "/";
  color: var(--bi-neutral-500);
  margin-right: 10px;
}
.mod_breadcrumb a { color: var(--bi-neutral-400); border: 0; }
.mod_breadcrumb .active { color: var(--bi-neutral-200); }

.mod_changelanguage a { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; }
.mod_changelanguage img { width: 16px; height: auto; display: inline-block; vertical-align: -2px; }

.pagination { margin-top: 40px; font-size: 14px; }
.pagination p { color: var(--bi-neutral-500); margin: 0 0 12px; }
.pagination ul { display: flex; gap: 8px; list-style: none; margin: 0; padding: 0; }
.pagination li::before { content: none; }
.pagination a,
.pagination .current {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  border-radius: var(--bi-radius-sm);
  border: 1px solid var(--bi-line-strong);
  color: var(--bi-neutral-300);
}
.pagination a:hover { border-color: var(--bi-accent); color: var(--bi-accent); }
.pagination .current { border-color: var(--bi-accent); color: var(--bi-accent); }

/* --- Suche und Listen-Module ------------------------------------------ */
.mod_search .header { color: var(--bi-neutral-500); font-size: 14px; margin: 24px 0; }
.mod_search .value { color: var(--bi-text); }
.mod_search .even,
.mod_search .odd { padding: 24px 0; border-bottom: 1px solid var(--bi-line); }
.mod_search .url,
.mod_search .relevance { font-size: 13px; color: var(--bi-neutral-500); }
.highlight { background: rgba(74, 127, 214, 0.22); color: var(--bi-text); }

.layout_short,
.layout_latest,
.layout_full { padding: 28px 0; border-bottom: 1px solid var(--bi-line); }
.layout_short .info,
.layout_full .info { font-size: 13px; color: var(--bi-neutral-500); margin-bottom: 8px; }
.more a { font-size: 14px; }

/* --- Video / Player ---------------------------------------------------- */
.ce_youtube .responsive,
.ce_vimeo .responsive,
.ce_player video {
  border-radius: var(--bi-radius);
  overflow: hidden;
  width: 100%;
}

/* --- Zustaende und Hilfsklassen --------------------------------------- */
:focus-visible { outline: 2px solid var(--bi-accent); outline-offset: 2px; }
::selection { background: rgba(74, 127, 214, 0.3); }
.clear { display: block; clear: both; }
.ce_text::after { content: ""; display: block; clear: both; }

@media (max-width: 900px) {
  #main:not(:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows)) .inside,
  #left .inside,
  #right .inside { padding: 48px 24px; }
  #header:not(:has(.bi-header)) .inside,
  #footer:not(:has(.bi-footer)) .inside { padding: 16px 24px; }
  .ce_gallery ul.cols_3,
  .ce_gallery ul.cols_4,
  .ce_gallery ul.cols_6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ce_image.float_left,
  .ce_image.float_right { float: none; max-width: 100%; margin: 0 0 24px; }
}
@media (max-width: 640px) {
  #main:not(:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows)) .inside { padding: 36px 20px; }
  .ce_gallery ul { grid-template-columns: 1fr; }
  .ce_form { padding: 20px; }
}

/* ==========================================================================
   Contao-Integration
   Contao 5.3 liefert kein eigenes Frontend-Stylesheet, aber es erzeugt eine
   feste Wrapper-Struktur:

     body
       #wrapper
         header#header > .inside          -> Frontend-Modul (mod_html)
         #container
           main#main > .inside            -> Artikel (mod_article) mit .ce_html
         footer#footer > .inside          -> Frontend-Modul (mod_html)

   Die Abschnitte dieses Pakets bringen ihre Breite (1180 px) und ihre
   Innenabstaende selbst mit. Damit Hero, Zahlenband und Kontakt randlos ueber
   die volle Fensterbreite laufen, werden die Contao-Wrapper hier neutralisiert.
   Dieser Block ist der einzige Ort, der Contao-Klassen anfasst.
   ========================================================================== */

#contentwrapper,
#fix-wrapper,
#top-wrapper,
#wrapper:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
#container:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
#main:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
#header:has(.bi-header),
#footer:has(.bi-footer),
#left:has(.bi-rows),
#right:has(.bi-rows) {
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  float: none;
  background: none;
  border: 0;
}

/* Contaos Innencontainer begrenzt sonst die Breite bzw. setzt Abstaende. */
#header:has(.bi-header) .inside,
#container:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows) .inside,
#footer:has(.bi-footer) .inside {
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  display: block;
  gap: 0;
}

/* Artikel und Inhaltselemente: keine Eigenabstaende, volle Breite.
   .block ergaenzt Contao automatisch, .first/.last auf dem ersten und
   letzten Element eines Artikels. */
.mod_article:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
.mod_html:has(.bi-header, .bi-footer),
.ce_html:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows, .bi-section, .bi-card) {
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  overflow: visible;
  display: block;
  color: var(--bi-text);
}

/* Contao setzt bei leerer Ueberschrift gelegentlich ein leeres h1/h2 – ausblenden. */
.ce_html > h1:empty,
.ce_html > h2:empty,
.ce_html > h3:empty { display: none; }

/* Der Backend-Rahmen ("Vorschaumodus") soll das Layout nicht verschieben. */
#tl_preview_toggle,
.fe_preview_bar { z-index: 30; }

/* Falls das Seitenlayout zusaetzlich einen Theme-Reset mitbringt, der
   box-sizing anders setzt: unsere Abschnitte bestehen auf border-box. */
section,
article,
aside,
header,
footer,
figure { margin: 0; }

/* Contaos Sprungmarken-Ziele (id="pakete" usw.) sollen nicht unter der
   klebenden Kopfzeile verschwinden. */
[id] { scroll-margin-top: 84px; }


/* ==========================================================================
   Abschnitte aus Standard-Inhaltselementen
   Kein HTML-Element, keine eigene Vorlage: ein normales Inhaltselement plus
   eine CSS-Klasse im Feld "CSS-ID/Klasse". Welche Klasse zu welchem
   Elementtyp gehoert, steht in der README.

     hero        Text-Element mit Bild      -> Bildheader
     stats       Tabellen-Element, 2 Zeilen -> Zahlenband
     plan        Text-Element, dreimal      -> Paketkarte
     plan--rec   zusaetzlich am Mittleren   -> "Empfohlen"
   ========================================================================== */

/* Randlos: die Abschnitte nehmen die aeussere Rasterspur ein. */
.mod_article > .hero,
.mod_article > .stats { grid-column: full; }

/* --- Hero: Text-Element mit eingefuegtem Bild --------------------------- */
.ce_text.hero,
.content-text.hero {
  position: relative;
  overflow: hidden;
  display: block;
  /* Der Rand traegt die Innenbreite: aussen mindestens 32px, sonst so viel,
     dass der Inhalt in der Innenbreite steht. Dadurch sitzen schmale
     Textspalten (15ch, 52ch) linksbuendig an der Innenkante. */
  padding: 140px max(32px, calc((100% - (var(--bi-shell) - 64px)) / 2)) 84px;
}
.ce_text.hero .image_container,
.ce_text.hero figure,
.content-text.hero > figure {
  position: absolute;
  inset: 0;
  margin: 0;
  z-index: 0;
  mix-blend-mode: normal;
}
.ce_text.hero .image_container img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.5;
  border-radius: 0;
}
.ce_text.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(60% 70% at 8% 90%, rgba(74, 127, 214, 0.22), transparent 70%),
    linear-gradient(100deg, #161826 12%, rgba(22, 24, 38, 0.86) 46%, rgba(22, 24, 38, 0.35) 100%);
}
/* Die redaktionellen Inhalte liegen ueber dem Bild und in der Innenbreite.
   :where() hat Spezifitaet 0, damit die Regeln darunter greifen. */
.ce_text.hero > :where(h1, h2, h3, p, ul, ol, div),
.content-text.hero > :where(h1, h2, h3, p, ul, ol, div) {
  position: relative;
  z-index: 2;
  max-width: calc(var(--bi-shell) - 64px);
  margin-left: 0;
  margin-right: 0;
  padding: 0;
}
.ce_text.hero > h1,
.ce_text.hero > h2 {
  font-size: clamp(40px, 5.6vw, 76px);
  line-height: 1.02;
  letter-spacing: -0.025em;
  max-width: calc(15ch + 64px);
  margin-bottom: 28px;
}
.ce_text.hero > p {
  font-size: 19px;
  line-height: 1.6;
  color: var(--bi-neutral-300);
  max-width: 52ch;
  margin-bottom: 16px;
}
/* Links im letzten Absatz werden zu Schaltflaechen. */
.ce_text.hero > p:last-of-type { margin-top: 24px; display: flex; flex-wrap: wrap; gap: 12px; }
.ce_text.hero > p:last-of-type a {
  display: inline-flex;
  align-items: center;
  font-weight: 500;
  font-size: 15px;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 12px 22px;
}
.ce_text.hero > p:last-of-type a:hover { background: rgba(74, 127, 214, 0.12); }
.ce_text.hero > p:last-of-type a:nth-child(n+2) { border-color: transparent; }
.ce_text.hero > p:last-of-type a:nth-child(n+2):hover { background: rgba(74, 127, 214, 0.1); }

/* --- Zahlenband: Tabellen-Element, zwei Zeilen -------------------------- */
.ce_table.stats {
  background: var(--bi-section);
  position: relative;
  overflow: hidden;
}
.ce_table.stats::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(70% 120% at 15% 0%, var(--bi-section-glow), transparent 70%);
}
.ce_table.stats {
  padding: 56px max(32px, calc((100% - (var(--bi-shell) - 64px)) / 2));
}
.ce_table.stats table {
  position: relative;
  max-width: none;
  margin: 0;
  padding: 0;
  table-layout: fixed;
  font-size: inherit;
}
.ce_table.stats td,
.ce_table.stats th {
  background: none;
  padding: 0 16px 0 0;
  vertical-align: top;
  text-transform: none;
  letter-spacing: normal;
}
.ce_table.stats tr:first-child td,
.ce_table.stats tr:first-child th {
  font-weight: 500;
  font-size: 44px;
  /* Feste Ziffernbreite, damit beim Hochzaehlen nichts springt. */
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--bi-text);
  padding-bottom: 10px;
}
.ce_table.stats tr:last-child td {
  font-size: 14px;
  line-height: 1.5;
  color: var(--bi-section-text);
}

/* --- Paketkarten: drei Text-Elemente ------------------------------------ */
/* Eine Paketkarte ist ein Drittel breit; drei hintereinander bilden die
   Reihe von allein. */
.mod_article > .plan { grid-column: content-start / span 2; }

.ce_text.plan {
  display: flex;
  flex-direction: column;
  padding: 28px;
  position: relative;
  background: var(--bi-surface);
  border-radius: var(--bi-radius);
  box-shadow: var(--bi-shadow-sm);
}
.ce_text.plan--rec,
.ce_text.plan-rec { box-shadow: var(--bi-shadow-md); }
.ce_text.plan--rec::before,
.ce_text.plan-rec::before {
  content: "Empfohlen";
  /* In der Flex-Karte greift float nicht, die Marke wuerde sonst als eigene
     Zeile ueber die ganze Breite laufen. */
  position: absolute;
  top: 24px;
  left: 28px;
  font-size: 11px;
  line-height: 1.5;
  padding: 3px 10px;
  border-radius: 6px;
  background: var(--bi-accent-800);
  color: var(--bi-accent-100);
}

.ce_text.plan h2,
.ce_text.plan h3 { font-size: 22px; max-width: none; margin-bottom: 14px; }
.ce_text.plan p { font-size: 15px; max-width: none; }
.ce_text.plan > p:first-of-type { font-size: 15px; color: var(--bi-neutral-400); }
.ce_text.plan ul { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--bi-line-strong); }
.ce_text.plan > p:last-child { margin-top: auto; }
.ce_text.plan p:last-child a {
  display: inline-flex;
  justify-content: center;
  width: 100%;
  margin-top: 18px;
  font-weight: 500;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 10px 18px;
}
.ce_text.plan p:last-child a:hover { background: rgba(74, 127, 214, 0.12); }


@media (max-width: 900px) {
  .ce_text.hero { padding: 100px max(20px, calc((100% - (var(--bi-shell) - 64px)) / 2)) 64px; }
  /* Alles untereinander in der vollen Inhaltsspur. */
  .mod_article > :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon),
  .mod_article > :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) + :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) { grid-column: content; }
  .ce_text.plan { margin-bottom: 20px; }
  .ce_table.stats { padding: 40px max(20px, calc((100% - (var(--bi-shell) - 64px)) / 2)); }
  /* Die Tabelle bleibt vierspaltig, damit Zahl und Text beieinanderstehen. */
  .ce_table.stats tr:first-child td,
  .ce_table.stats tr:first-child th { font-size: 32px; }
  .ce_table.stats tr:last-child td { font-size: 13px; }
}
@media (max-width: 560px) {
  .ce_table.stats { padding: 32px 20px; }
  .ce_table.stats tr:first-child td,
  .ce_table.stats tr:first-child th { font-size: 24px; }
  .ce_table.stats td { padding-right: 10px; }
}

/* ==========================================================================
   Contao 5.3: neue Twig-Klassen
   Seit Contao 5 heissen die Inhaltselemente .content-text, .content-headline,
   .content-list usw. statt .ce_text, .ce_headline, .ce_list; der Fliesstext
   steckt zusaetzlich in einem <div class="rte">. Dieser Block wiederholt die
   Regeln von oben fuer die neuen Namen, damit beide Ausgaben gestaltet sind.
   ========================================================================== */

/* --- Grundlage: Seite, Wrapper, Bereiche -------------------------------- */
/* Die Wrapper-Regeln gelten nur, wenn im Bereich KEIN randloser Abschnitt
   aus inhalt/ liegt - sonst muesste dieser Abschnitt aus dem Container
   ausbrechen. Siehe Block "Contao-Integration" am Ende. */
#header:not(:has(.bi-header)),
#footer:not(:has(.bi-footer)) { background: rgba(35, 37, 50, 0.4); }
#header:not(:has(.bi-header)) { border-bottom: 1px solid var(--bi-line); }
#footer:not(:has(.bi-footer)) { border-top: 1px solid var(--bi-line); margin-top: 96px; }

#header:not(:has(.bi-header)) .inside,
#footer:not(:has(.bi-footer)) .inside {
  max-width: var(--bi-shell);
  margin: 0 auto;
  padding: 20px 32px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 24px;
}


/* --- Kopfzeile: Marke links, Navigation rechts -------------------------- */
#header {
  position: sticky;
  top: 0;
  z-index: 20;
  background: rgba(22, 24, 38, 0.86);
  backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--bi-line);
}
#header:not(:has(.bi-header)) .inside {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 32px;
  padding: 14px 32px;
}
/* Das Markenmodul steht zuerst, die Navigation wird nach rechts geschoben. */
#header .mod_navigation,
#header .mod_customnav,
#header .mod_changelanguage { margin-left: auto; }
#header .mod_navigation + .mod_changelanguage,
#header .mod_navigation + .mod_customnav { margin-left: 0; }

/* Marke (HTML-Modul im Kopfbereich) */
.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: none;
}
/* Sobald eine helle Logofassung vorliegt, wird sie hier eingesetzt:
   <img src="files/burow/img/logo-hell.svg" class="brand__logo" alt="Burow IT">
   Die dunkle Fassung (#002a7f) erreicht auf dem Grund #161826 nur 1,4:1
   Kontrast und ist deshalb vorerst nicht eingebaut. */
.brand__logo { height: 26px; width: auto; display: block; flex: none; }
.brand__name {
  font-weight: 500;
  font-size: 17px;
  letter-spacing: 0.01em;
  color: var(--bi-text);
}
.brand__tag {
  font-size: 11px;
  color: var(--bi-neutral-500);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  padding-top: 3px;
}
a.brand:hover .brand__name { color: var(--bi-accent-300); }

@media (max-width: 720px) {
  #header:not(:has(.bi-header)) .inside { gap: 16px; padding: 12px 20px; }
  .brand__tag { display: none; }
  #header .mod_navigation ul { gap: 18px; }
  #header .mod_navigation a,
  #header .mod_navigation strong { font-size: 14px; }
}

/* Rhythmus zwischen Inhaltselementen */
.mod_article > .content-headline { margin-top: 48px; margin-bottom: -16px; }
.mod_article > .content-headline:first-child,
.mod_article > .content-headline.first { margin-top: 0; }

/* --- Ueberschriften ------------------------------------------------------ */
.content-headline,
.content-text h1,
.content-list h1,
.content-accordion .accordion h1,
.content-downloads h1,
.content-table h1,
.content-form h1,
.mod_search h1,
.layout_short h1,
.layout_full h1,
.content-text h2,
.content-list h2,
.content-accordion .accordion h2,
.content-downloads h2,
.content-table h2,
.content-form h2,
.mod_search h2,
.layout_short h2,
.layout_full h2,
.content-text h3,
.content-list h3,
.content-accordion .accordion h3,
.content-downloads h3,
.content-table h3,
.content-form h3,
.mod_search h3,
.layout_short h3,
.layout_full h3,
.content-text h4,
.content-list h4,
.content-accordion .accordion h4,
.content-downloads h4,
.content-table h4,
.content-form h4,
.mod_search h4,
.layout_short h4,
.layout_full h4,
.content-text h5,
.content-list h5,
.content-accordion .accordion h5,
.content-downloads h5,
.content-table h5,
.content-form h5,
.mod_search h5,
.layout_short h5,
.layout_full h5,
.content-text h6,
.content-list h6,
.content-accordion .accordion h6,
.content-downloads h6,
.content-table h6,
.content-form h6,
.mod_search h6,
.layout_short h6,
.layout_full h6 {
  font-family: var(--bi-font);
  font-weight: 500;
  color: var(--bi-text);
  letter-spacing: -0.02em;
  line-height: 1.12;
  margin: 0 0 16px;
  text-wrap: balance;
}

h1.content-headline,
.content-text h1 { font-size: clamp(38px, 5vw, 64px); line-height: 1.04; letter-spacing: -0.025em; max-width: 18ch; }
h2.content-headline,
.content-text h2 { font-size: clamp(28px, 3.4vw, 44px); max-width: 24ch; }
h3.content-headline,
.content-text h3 { font-size: 26px; letter-spacing: -0.015em; }
h4.content-headline,
.content-text h4 { font-size: 20px; letter-spacing: -0.01em; }
h5.content-headline,
.content-text h5 { font-size: 17px; }
h6.content-headline,
.content-text h6 {
  font-size: 13px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--bi-accent-300);
  font-weight: 400;
}

/* Nocturne-Signatur: kurzer Akzentstrich vor dem Ueberschriften-Element. */
.content-headline::before {
  content: "";
  display: block;
  width: 34px;
  height: 1px;
  background: var(--bi-accent);
  margin-bottom: 20px;
}

/* --- Fliesstext ---------------------------------------------------------- */
.content-text p,
.content-list p,
.content-accordion .accordion p,
.content-downloads p,
.content-table p,
.content-form p,
.mod_search p,
.layout_short p,
.layout_full p {
  margin: 0 0 16px;
  max-width: 68ch;
  color: var(--bi-neutral-300);
  line-height: 1.65;
  text-wrap: pretty;
}
.content-text p:last-child,
.content-list p:last-child,
.content-accordion .accordion p:last-child,
.content-downloads p:last-child,
.content-table p:last-child,
.content-form p:last-child,
.mod_search p:last-child,
.layout_short p:last-child,
.layout_full p:last-child { margin-bottom: 0; }
.content-text > p:first-of-type { font-size: 17px; color: var(--bi-neutral-200); }

.content-text strong,
.content-list strong,
.content-accordion .accordion strong,
.content-downloads strong,
.content-table strong,
.content-form strong,
.mod_search strong,
.layout_short strong,
.layout_full strong,
.content-text b,
.content-list b,
.content-accordion .accordion b,
.content-downloads b,
.content-table b,
.content-form b,
.mod_search b,
.layout_short b,
.layout_full b { font-weight: 500; color: var(--bi-text); }
.content-text small,
.content-list small,
.content-accordion .accordion small,
.content-downloads small,
.content-table small,
.content-form small,
.mod_search small,
.layout_short small,
.layout_full small { font-size: 13px; color: var(--bi-neutral-500); }
.content-text code,
.content-list code,
.content-accordion .accordion code,
.content-downloads code,
.content-table code,
.content-form code,
.mod_search code,
.layout_short code,
.layout_full code {
  font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
  font-size: 0.9em;
  background: var(--bi-surface);
  border-radius: var(--bi-radius-sm);
  padding: 2px 6px;
}
.content-hr hr,
.content-text hr {
  border: 0;
  height: 1px;
  margin: 48px 0;
  background: linear-gradient(90deg, transparent, var(--bi-line-strong) 48px,
    var(--bi-line-strong) calc(100% - 48px), transparent);
}
.content-text blockquote,
.content-quote blockquote {
  margin: 0;
  padding-left: 20px;
  border-left: 2px solid var(--bi-accent);
  font-size: 19px;
  line-height: 1.55;
  color: var(--bi-text);
  max-width: 52ch;
}
.content-text blockquote p,
.content-quote blockquote p { color: inherit; font-size: inherit; max-width: none; }

.content-text a,
.content-list a,
.mod_search a { color: var(--bi-accent); border-bottom: 1px solid rgba(74, 127, 214, 0.4); }
.content-text a:hover,
.content-list a:hover,
.mod_search a:hover { color: var(--bi-accent-300); border-bottom-color: var(--bi-accent-300); }

/* --- Listen (.content-list, Listen im Text) ---------------------------------- */
.content-text ul,
.content-text ol,
.content-list ul,
.content-list ol {
  margin: 0 0 16px;
  padding: 0;
  list-style: none;
  max-width: 68ch;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.content-text li,
.content-list li {
  display: flex;
  gap: 12px;
  color: var(--bi-neutral-200);
  line-height: 1.6;
}
.content-text ul > li::before,
.content-list ul > li::before {
  content: "—";
  color: var(--bi-accent);
  flex: none;
}
.content-list ol { counter-reset: bi-li; }
.content-list ol > li { counter-increment: bi-li; }
.content-list ol > li::before {
  content: counter(bi-li, decimal-leading-zero);
  color: var(--bi-accent);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.1em;
  flex: none;
  min-width: 2.4em;
}

/* --- Bilder (.content-image, .content-gallery) ----------------------------------- */
.content-image figure,
.content-gallery figure { margin: 0; }
.content-image img,
.content-gallery img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--bi-radius);
}
/* Nocturne: Fotos werden in den Grund eingeblendet. */
.content-image .image_container,
.content-gallery .image_container { mix-blend-mode: lighten; background-color: transparent; }
.content-image figcaption,
.content-image .caption,
.content-gallery figcaption {
  margin-top: 12px;
  font-size: 13px;
  color: var(--bi-neutral-500);
  max-width: 60ch;
}
.content-image.float_left { float: left; margin: 0 32px 24px 0; max-width: 46%; }
.content-image.float_right { float: right; margin: 0 0 24px 32px; max-width: 46%; }

.content-gallery ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 20px;
}
.content-gallery ul.cols_2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.content-gallery ul.cols_3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.content-gallery ul.cols_4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.content-gallery ul.cols_6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.content-gallery li::before { content: none; }

/* --- Hyperlink-Element und Buttons ------------------------------------- */
.content-hyperlink a,
a.hyperlink_txt,
.content-form .submit,
.content-form button,
.content-form input[type="submit"],
.mod_search button,
.mod_search input[type="submit"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-family: var(--bi-font);
  font-weight: 500;
  font-size: 15px;
  line-height: 1.2;
  color: var(--bi-accent);
  background: transparent;
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 12px 22px;
  cursor: pointer;
  width: auto;
}
.content-hyperlink a:hover,
.content-form .submit:hover,
.content-form button:hover,
.mod_search button:hover { background: rgba(74, 127, 214, 0.12); color: var(--bi-accent); }
.content-hyperlink a:active,
.content-form .submit:active,
.content-form button:active { background: rgba(74, 127, 214, 0.22); }

/* --- Tabelle (.content-table) ------------------------------------------------ */
.content-table table { width: 100%; border-collapse: collapse; font-size: 15px; }
.content-table th {
  text-align: left;
  font-weight: 400;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(233, 233, 237, 0.6);
  padding: 12px 8px;
  background: linear-gradient(90deg, transparent, rgba(233, 233, 237, 0.16) 48px,
    rgba(233, 233, 237, 0.16) calc(100% - 48px), transparent) no-repeat bottom / 100% 1px;
}
.content-table td {
  padding: 12px 8px;
  color: var(--bi-neutral-200);
  background: linear-gradient(90deg, transparent, rgba(233, 233, 237, 0.08) 48px,
    rgba(233, 233, 237, 0.08) calc(100% - 48px), transparent) no-repeat bottom / 100% 1px;
}
.content-table caption {
  text-align: left;
  font-size: 13px;
  color: var(--bi-neutral-500);
  padding-bottom: 12px;
}

/* --- Akkordeon (.content-accordion) ----------------------------------------- */
.content-accordion { border-bottom: 1px solid var(--bi-line-strong); }
.content-accordion .toggler {
  cursor: pointer;
  padding: 20px 40px 20px 0;
  position: relative;
  font-size: 19px;
  font-weight: 500;
  color: var(--bi-text);
}
.content-accordion .toggler::after {
  content: "+";
  position: absolute;
  right: 4px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--bi-accent);
  font-size: 22px;
  line-height: 1;
}
.content-accordion .toggler.active::after { content: "–"; }
.content-accordion .toggler:hover { color: var(--bi-accent-300); }
.content-accordion .accordion { padding: 0 0 24px; }

/* --- Downloads --------------------------------------------------------- */
.content-downloads ul,
.content-download ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.content-downloads li { display: block; }
.content-downloads li::before { content: none; }
.content-downloads a,
.content-download a {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 14px 16px;
  background: var(--bi-surface);
  box-shadow: var(--bi-shadow-sm);
  border-radius: var(--bi-radius);
  color: var(--bi-text);
  border: 0;
}
.content-downloads a:hover { box-shadow: var(--bi-shadow-md); color: var(--bi-text); }
.content-downloads .size { color: var(--bi-neutral-500); font-size: 13px; }

/* --- Formulare (.content-form, Widgets) ------------------------------------- */
.content-form,
.mod_search .formbody {
  background: var(--bi-surface);
  box-shadow: var(--bi-shadow-sm);
  border-radius: var(--bi-radius);
  padding: 28px;
  max-width: 560px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.widget { display: flex; flex-direction: column; gap: 6px; }
.widget label {
  font-size: 13px;
  color: var(--bi-neutral-400);
  letter-spacing: 0.02em;
}
.widget label .mandatory { color: var(--bi-accent); }
.widget .text,
.widget .textarea,
.widget .select,
.widget input[type="text"],
.widget input[type="email"],
.widget input[type="tel"],
.widget input[type="url"],
.widget input[type="number"],
.widget input[type="password"],
.widget input[type="search"],
.widget textarea,
.widget select {
  font-family: var(--bi-font);
  font-size: 15px;
  color: var(--bi-text);
  background: var(--bi-bg);
  border: 1px solid var(--bi-line-strong);
  border-radius: var(--bi-radius);
  padding: 10px 12px;
  width: 100%;
}
.widget textarea { min-height: 120px; resize: vertical; }
.widget .text:hover,
.widget textarea:hover,
.widget select:hover { border-color: var(--bi-neutral-500); }
.widget ::placeholder { color: var(--bi-neutral-500); }
.widget-radio .radio_container,
.widget-checkbox .checkbox_container {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.radio_container label,
.checkbox_container label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  color: var(--bi-neutral-200);
}
.widget input[type="radio"],
.widget input[type="checkbox"] { accent-color: var(--bi-accent); width: auto; }
.widget .error,
.content-form p.error { color: var(--bi-accent-300); font-size: 13px; }
.content-form .confirmation {
  color: var(--bi-accent-300);
  border-left: 2px solid var(--bi-accent);
  padding-left: 16px;
}
.content-form .submit_container { margin-top: 4px; }

/* --- Navigation (.mod_navigation, .mod_customnav) ---------------------- */
.mod_navigation ul,
.mod_customnav ul,
.mod_breadcrumb ul,
.mod_changelanguage ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 26px;
  align-items: center;
}
.mod_navigation li::before,
.mod_customnav li::before,
.mod_breadcrumb li::before,
.mod_changelanguage li::before { content: none; }
.mod_navigation a,
.mod_navigation strong,
.mod_customnav a,
.mod_customnav strong {
  font-size: 15px;
  font-weight: 400;
  color: var(--bi-neutral-300);
  padding: 4px 0;
  border-bottom: 1px solid transparent;
}
.mod_navigation a:hover,
.mod_customnav a:hover { color: var(--bi-text); }
.mod_navigation a.trail,
.mod_navigation strong.active,
.mod_customnav strong.active {
  color: var(--bi-text);
  border-bottom-color: var(--bi-accent);
}
.mod_navigation ul.level_2 {
  gap: 14px;
  flex-direction: column;
  align-items: flex-start;
  padding: 12px 0 0;
}
.mod_navigation ul.level_2 a { font-size: 14px; }

/* --- Breadcrumb, Sprachwechsler, Blaetterfunktion --------------------- */
.mod_breadcrumb { font-size: 13px; color: var(--bi-neutral-500); }
.mod_breadcrumb ul { gap: 10px; }
.mod_breadcrumb li + li::before {
  content: "/";
  color: var(--bi-neutral-500);
  margin-right: 10px;
}
.mod_breadcrumb a { color: var(--bi-neutral-400); border: 0; }
.mod_breadcrumb .active { color: var(--bi-neutral-200); }

.mod_changelanguage a { font-size: 13px; letter-spacing: 0.08em; text-transform: uppercase; }
.mod_changelanguage img { width: 16px; height: auto; display: inline-block; vertical-align: -2px; }

.pagination { margin-top: 40px; font-size: 14px; }
.pagination p { color: var(--bi-neutral-500); margin: 0 0 12px; }
.pagination ul { display: flex; gap: 8px; list-style: none; margin: 0; padding: 0; }
.pagination li::before { content: none; }
.pagination a,
.pagination .current {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  height: 34px;
  border-radius: var(--bi-radius-sm);
  border: 1px solid var(--bi-line-strong);
  color: var(--bi-neutral-300);
}
.pagination a:hover { border-color: var(--bi-accent); color: var(--bi-accent); }
.pagination .current { border-color: var(--bi-accent); color: var(--bi-accent); }

/* --- Suche und Listen-Module ------------------------------------------ */
.mod_search .header { color: var(--bi-neutral-500); font-size: 14px; margin: 24px 0; }
.mod_search .value { color: var(--bi-text); }
.mod_search .even,
.mod_search .odd { padding: 24px 0; border-bottom: 1px solid var(--bi-line); }
.mod_search .url,
.mod_search .relevance { font-size: 13px; color: var(--bi-neutral-500); }
.highlight { background: rgba(74, 127, 214, 0.22); color: var(--bi-text); }

.layout_short,
.layout_latest,
.layout_full { padding: 28px 0; border-bottom: 1px solid var(--bi-line); }
.layout_short .info,
.layout_full .info { font-size: 13px; color: var(--bi-neutral-500); margin-bottom: 8px; }
.more a { font-size: 14px; }

/* --- Video / Player ---------------------------------------------------- */
.content-youtube .responsive,
.content-vimeo .responsive,
.content-player video {
  border-radius: var(--bi-radius);
  overflow: hidden;
  width: 100%;
}

/* --- Zustaende und Hilfsklassen --------------------------------------- */
:focus-visible { outline: 2px solid var(--bi-accent); outline-offset: 2px; }
::selection { background: rgba(74, 127, 214, 0.3); }
.clear { display: block; clear: both; }
.content-text::after { content: ""; display: block; clear: both; }

@media (max-width: 900px) {
  #main:not(:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows)) .inside,
  #left .inside,
  #right .inside { padding: 48px 24px; }
  #header:not(:has(.bi-header)) .inside,
  #footer:not(:has(.bi-footer)) .inside { padding: 16px 24px; }
  .content-gallery ul.cols_3,
  .content-gallery ul.cols_4,
  .content-gallery ul.cols_6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .content-image.float_left,
  .content-image.float_right { float: none; max-width: 100%; margin: 0 0 24px; }
}
@media (max-width: 640px) {
  #main:not(:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows)) .inside { padding: 36px 20px; }
  .content-gallery ul { grid-template-columns: 1fr; }
  .content-form { padding: 20px; }
}

/* ==========================================================================
   Contao-Integration
   Contao 5.3 liefert kein eigenes Frontend-Stylesheet, aber es erzeugt eine
   feste Wrapper-Struktur:

     body
       #wrapper
         header#header > .inside          -> Frontend-Modul (mod_html)
         #container
           main#main > .inside            -> Artikel (mod_article) mit .content-html
         footer#footer > .inside          -> Frontend-Modul (mod_html)

   Die Abschnitte dieses Pakets bringen ihre Breite (1180 px) und ihre
   Innenabstaende selbst mit. Damit Hero, Zahlenband und Kontakt randlos ueber
   die volle Fensterbreite laufen, werden die Contao-Wrapper hier neutralisiert.
   Dieser Block ist der einzige Ort, der Contao-Klassen anfasst.
   ========================================================================== */

#contentwrapper,
#fix-wrapper,
#top-wrapper,
#wrapper:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
#container:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
#main:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
#header:has(.bi-header),
#footer:has(.bi-footer),
#left:has(.bi-rows),
#right:has(.bi-rows) {
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  float: none;
  background: none;
  border: 0;
}

/* Contaos Innencontainer begrenzt sonst die Breite bzw. setzt Abstaende. */
#header:has(.bi-header) .inside,
#container:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows) .inside,
#footer:has(.bi-footer) .inside {
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  display: block;
  gap: 0;
}

/* Artikel und Inhaltselemente: keine Eigenabstaende, volle Breite.
   .block ergaenzt Contao automatisch, .first/.last auf dem ersten und
   letzten Element eines Artikels. */
.mod_article:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows),
.mod_html:has(.bi-header, .bi-footer),
.content-html:has(.bi-hero, .bi-stats, .bi-contact, .bi-rows, .bi-section, .bi-card) {
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  overflow: visible;
  display: block;
  color: var(--bi-text);
}

/* Contao setzt bei leerer Ueberschrift gelegentlich ein leeres h1/h2 – ausblenden. */
.content-html > h1:empty,
.content-html > h2:empty,
.content-html > h3:empty { display: none; }

/* Der Backend-Rahmen ("Vorschaumodus") soll das Layout nicht verschieben. */
#tl_preview_toggle,
.fe_preview_bar { z-index: 30; }

/* Falls das Seitenlayout zusaetzlich einen Theme-Reset mitbringt, der
   box-sizing anders setzt: unsere Abschnitte bestehen auf border-box. */
section,
article,
aside,
header,
footer,
figure { margin: 0; }

/* Contaos Sprungmarken-Ziele (id="pakete" usw.) sollen nicht unter der
   klebenden Kopfzeile verschwinden. */
[id] { scroll-margin-top: 84px; }


/* ==========================================================================
   Abschnitte aus Standard-Inhaltselementen
   Kein HTML-Element, keine eigene Vorlage: ein normales Inhaltselement plus
   eine CSS-Klasse im Feld "CSS-ID/Klasse". Welche Klasse zu welchem
   Elementtyp gehoert, steht in der README.

     hero        Text-Element mit Bild      -> Bildheader
     stats       Tabellen-Element, 2 Zeilen -> Zahlenband
     plan        Text-Element, dreimal      -> Paketkarte
     plan--rec   zusaetzlich am Mittleren   -> "Empfohlen"
   ========================================================================== */

/* Randlos: die Abschnitte nehmen die aeussere Rasterspur ein. */
.mod_article > .hero,
.mod_article > .stats { grid-column: full; }

/* --- Hero: Text-Element mit eingefuegtem Bild --------------------------- */
.content-text.hero {
  position: relative;
  overflow: hidden;
  padding: 140px max(32px, calc((100% - (var(--bi-shell) - 64px)) / 2)) 84px;
  display: block;
}
.content-text.hero .image_container,
.content-text.hero figure {
  position: absolute;
  inset: 0;
  margin: 0;
  z-index: 0;
  mix-blend-mode: normal;
}
.content-text.hero .image_container img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.5;
  border-radius: 0;
}
.content-text.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(60% 70% at 8% 90%, rgba(74, 127, 214, 0.22), transparent 70%),
    linear-gradient(100deg, #161826 12%, rgba(22, 24, 38, 0.86) 46%, rgba(22, 24, 38, 0.35) 100%);
}
/* Die redaktionellen Inhalte liegen ueber dem Bild und in der Innenbreite.
   :where() hat Spezifitaet 0, damit die Regeln darunter greifen. */

.content-text.hero > h1,
.content-text.hero > h2 {
  font-size: clamp(40px, 5.6vw, 76px);
  line-height: 1.02;
  letter-spacing: -0.025em;
  max-width: calc(15ch + 64px);
  margin-bottom: 28px;
}
.content-text.hero > p {
  font-size: 19px;
  line-height: 1.6;
  color: var(--bi-neutral-300);
  max-width: 52ch;
  margin-bottom: 16px;
}
/* Links im letzten Absatz werden zu Schaltflaechen. */
.content-text.hero > p:last-of-type { margin-top: 24px; display: flex; flex-wrap: wrap; gap: 12px; }
.content-text.hero > p:last-of-type a {
  display: inline-flex;
  align-items: center;
  font-weight: 500;
  font-size: 15px;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 12px 22px;
}
.content-text.hero > p:last-of-type a:hover { background: rgba(74, 127, 214, 0.12); }
.content-text.hero > p:last-of-type a:nth-child(n+2) { border-color: transparent; }
.content-text.hero > p:last-of-type a:nth-child(n+2):hover { background: rgba(74, 127, 214, 0.1); }

/* --- Zahlenband: Tabellen-Element, zwei Zeilen -------------------------- */
.content-table.stats {
  background: var(--bi-section);
  position: relative;
  overflow: hidden;
}
.content-table.stats::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(70% 120% at 15% 0%, var(--bi-section-glow), transparent 70%);
}
.content-table.stats {
  padding: 56px max(32px, calc((100% - (var(--bi-shell) - 64px)) / 2));
}
.content-table.stats table {
  position: relative;
  max-width: none;
  margin: 0;
  padding: 0;
  table-layout: fixed;
  font-size: inherit;
}
.content-table.stats td,
.content-table.stats th {
  background: none;
  padding: 0 16px 0 0;
  vertical-align: top;
  text-transform: none;
  letter-spacing: normal;
}
.content-table.stats tr:first-child td,
.content-table.stats tr:first-child th {
  font-weight: 500;
  font-size: 44px;
  /* Feste Ziffernbreite, damit beim Hochzaehlen nichts springt. */
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: -0.03em;
  color: var(--bi-text);
  padding-bottom: 10px;
}
.content-table.stats tr:last-child td {
  font-size: 14px;
  line-height: 1.5;
  color: var(--bi-section-text);
}

/* --- Paketkarten: drei Text-Elemente ------------------------------------ */
.content-text.plan {
  display: flex;
  flex-direction: column;
  padding: 28px;
  position: relative;
  background: var(--bi-surface);
  border-radius: var(--bi-radius);
  box-shadow: var(--bi-shadow-sm);
}
.content-text.plan--rec,
.content-text.plan-rec { box-shadow: var(--bi-shadow-md); }
.content-text.plan--rec::before,
.content-text.plan-rec::before {
  content: "Empfohlen";
  /* In der Flex-Karte greift float nicht, die Marke wuerde sonst als eigene
     Zeile ueber die ganze Breite laufen. */
  position: absolute;
  top: 24px;
  left: 28px;
  font-size: 11px;
  line-height: 1.5;
  padding: 3px 10px;
  border-radius: 6px;
  background: var(--bi-accent-800);
  color: var(--bi-accent-100);
}

.content-text.plan h2,
.content-text.plan h3 { font-size: 22px; max-width: none; margin-bottom: 14px; }
.content-text.plan p { font-size: 15px; max-width: none; }
.content-text.plan > p:first-of-type { font-size: 15px; color: var(--bi-neutral-400); }
.content-text.plan ul { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--bi-line-strong); }
.content-text.plan > p:last-child { margin-top: auto; }
.content-text.plan p:last-child a {
  display: inline-flex;
  justify-content: center;
  width: 100%;
  margin-top: 18px;
  font-weight: 500;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 10px 18px;
}
.content-text.plan p:last-child a:hover { background: rgba(74, 127, 214, 0.12); }


@media (max-width: 900px) {
  .content-text.hero { padding: 100px max(20px, calc((100% - (var(--bi-shell) - 64px)) / 2)) 64px; }
  /* Alles untereinander in der vollen Inhaltsspur. */
  .mod_article > :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon),
  .mod_article > :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) + :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) { grid-column: content; }
  .content-text.plan { margin-bottom: 20px; }
  .content-table.stats { padding: 40px max(20px, calc((100% - (var(--bi-shell) - 64px)) / 2)); }
  /* Die Tabelle bleibt vierspaltig, damit Zahl und Text beieinanderstehen. */
  .content-table.stats tr:first-child td,
  .content-table.stats tr:first-child th { font-size: 32px; }
  .content-table.stats tr:last-child td { font-size: 13px; }
}
@media (max-width: 560px) {
  .content-table.stats { padding: 32px 20px; }
  .content-table.stats tr:first-child td,
  .content-table.stats tr:first-child th { font-size: 24px; }
  .content-table.stats td { padding-right: 10px; }
}

/* --- Anpassungen an die neue Struktur ---------------------------------- */

/* Rhythmus: die neuen Elemente tragen kein .block mehr. Abstaende kommen
   ausschliesslich aus row-gap des Artikelrasters. */
.mod_article > * + * { margin-top: 0; }
.mod_article > .content-headline { margin-top: 48px; margin-bottom: -16px; }
.mod_article > .content-headline:first-child { margin-top: 0; }

/* Der Fliesstext liegt in .rte - der Wrapper selbst bleibt unsichtbar. */
.content-text > .rte > p:first-of-type { font-size: 17px; color: var(--bi-neutral-200); }
.content-text > .rte > p { max-width: 68ch; }

/* Hero: Bild ohne .image_container, Text in .rte ------------------------ */
.content-text.hero > figure {
  position: absolute;
  inset: 0;
  margin: 0;
  z-index: 0;
  mix-blend-mode: normal;
}
.content-text.hero > figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.5;
  border-radius: 0;
}
.content-text.hero > h1,
.content-text.hero > h2 { max-width: 15ch; }
.content-text.hero > .rte > p {
  font-size: 19px;
  line-height: 1.6;
  color: var(--bi-neutral-300);
  max-width: 52ch;
  margin-bottom: 16px;
}
.content-text.hero > .rte > p:first-of-type { font-size: 19px; color: var(--bi-neutral-300); }
/* Der letzte Absatz wird zur Schaltflaechenreihe. */
.content-text.hero > .rte > p:last-of-type {
  margin-top: 24px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  max-width: none;
}
.content-text.hero > .rte > p:last-of-type a {
  display: inline-flex;
  align-items: center;
  font-weight: 500;
  font-size: 15px;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 12px 22px;
}
.content-text.hero > .rte > p:last-of-type a:hover { background: rgba(74, 127, 214, 0.12); }
.content-text.hero > .rte > p:last-of-type a:nth-child(n+2) { border-color: transparent; }

/* Paketkarten: der .rte-Wrapper traegt die Spalte ---------------------- */
.content-text.plan > .rte {
  display: flex;
  flex-direction: column;
  flex: 1;
  max-width: none;
}
.content-text.plan > .rte > p { max-width: none; }
.content-text.plan > .rte > p:first-of-type { font-size: 15px; color: var(--bi-neutral-400); }
.content-text.plan > .rte > ul,
.content-text.plan > .rte > ol {
  margin-top: 18px;
  padding-top: 18px;
  border-top: 1px solid var(--bi-line-strong);
}
.content-text.plan > .rte > p:last-child { margin-top: auto; margin-bottom: 0; }
.content-text.plan > .rte > p:last-child a {
  display: inline-flex;
  justify-content: center;
  width: 100%;
  margin-top: 18px;
  font-weight: 500;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 10px 18px;
  border-bottom-width: 1px;
}
.content-text.plan > .rte > p:last-child a:hover { background: rgba(74, 127, 214, 0.12); }

/* Die Bildvarianten media--above/below/left/right heben die absolute
   Positionierung im Hero nicht auf. */
.hero.media--above > figure,
.hero.media--below > figure,
.hero.media--left > figure,
.hero.media--right > figure { float: none; }

/* --- Hero als ganzer Artikel -------------------------------------------
   Eleganter als ein einzelnes Text-Element: der Artikel selbst traegt die
   Klasse "hero" (Artikel > Experten-Einstellungen > CSS-ID/Klasse), das
   Hintergrundbild ist ein Bild-Element mit der Klasse "bg", und darin
   stehen beliebige Elemente mit Breitenklassen.

     Artikel            CSS-Klasse  hero
       Bild-Element     CSS-Klasse  bg          (das Hintergrundbild)
       Text-Element     CSS-Klasse  w-1-2 v-center
       HTML-Element     <aside class="bi-mon w-1-2 v-center">

   Das Bild bleibt damit in der Dateiverwaltung austauschbar.
   ----------------------------------------------------------------------- */
.mod_article.hero {
  position: relative;
  overflow: hidden;
  padding-top: 140px;
  padding-bottom: 96px;
  row-gap: 32px;
  align-items: center;
}
/* Das Bild-Element legt sich formatfuellend hinter den Inhalt. */
.mod_article.hero > .bg {
  /* Ausdruecklich aus dem Raster nehmen: mit Rasterplatzierung waere die
     Rasterzelle der Bezugsrahmen, und das Bild endete an der Inhaltskante. */
  grid-column: auto;
  grid-row: auto;
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  z-index: 0;
  max-width: none;
}
.mod_article.hero > .bg figure,
.mod_article.hero > .bg .image_container { margin: 0; height: 100%; mix-blend-mode: normal; }
.mod_article.hero > .bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.5;
  border-radius: 0;
}
/* Verlauf darueber, damit der Text auf jedem Foto lesbar bleibt. */
.mod_article.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    radial-gradient(60% 70% at 8% 90%, rgba(74, 127, 214, 0.22), transparent 70%),
    linear-gradient(100deg, #161826 12%, rgba(22, 24, 38, 0.86) 46%, rgba(22, 24, 38, 0.35) 100%);
}
.mod_article.hero > *:not(.bg) { position: relative; z-index: 2; }
/* Im Hero-Artikel nimmt das Monitoring-Panel von sich aus die halbe Spalte
   und steht auf der Mittelachse - auch ohne Breitenklasse im HTML. */
.mod_article.hero > .bi-mon {
  grid-column: content-start / span 3;
  align-self: center;
  max-width: none;
}
.mod_article.hero > :is(.w-1-6, .w-1-3, .w-1-2, .w-2-3, .w-5-6, .plan, .bi-mon) + .bi-mon {
  grid-column-start: auto;
}
/* Innerhalb des Heros regelt row-gap die Abstaende. */
.mod_article.hero > * + * { margin-top: 0; }
.mod_article.hero > .content-headline,
.mod_article.hero > .ce_headline { margin-top: 0; margin-bottom: 0; }

/* Der Claim im Hero-Artikel */
.mod_article.hero h1,
.mod_article.hero > .content-text > h2,
.mod_article.hero > .ce_text > h2 {
  font-size: clamp(36px, 4.6vw, 64px);
  line-height: 1.04;
  letter-spacing: -0.025em;
  max-width: 18ch;
  margin-bottom: 24px;
}
.mod_article.hero .rte > p,
.mod_article.hero .content-text p {
  font-size: 18px;
  line-height: 1.6;
  color: var(--bi-neutral-300);
  max-width: 46ch;
}
/* Links im letzten Absatz werden zu Schaltflaechen. */
.mod_article.hero .rte > p:last-of-type:has(a) {
  margin-top: 24px;
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  max-width: none;
}
.mod_article.hero .rte > p:last-of-type:has(a) a {
  display: inline-flex;
  align-items: center;
  font-weight: 500;
  font-size: 15px;
  color: var(--bi-accent);
  border: 1px solid var(--bi-accent);
  border-radius: var(--bi-radius);
  padding: 12px 22px;
}
.mod_article.hero .rte > p:last-of-type:has(a) a:hover { background: rgba(74, 127, 214, 0.12); }
.mod_article.hero .rte > p:last-of-type:has(a) a:nth-child(n+2) { border-color: transparent; }

/* Steht der Hero-Artikel oben, entfaellt der Abstand des Inhaltsbereichs. */
#main .inside:has(> .mod_article.hero:first-of-type) { padding-top: 0; }
/* Der Breadcrumb steht dann ueber dem Hero und braucht eigenen Abstand. */
#main .inside:has(> .mod_article.hero:first-of-type) > .mod_breadcrumb { padding-top: 20px; }

@media (max-width: 900px) {
  .mod_article.hero { padding-top: 96px; padding-bottom: 64px; }
}

/* Platz fuer die "Empfohlen"-Marke wird nur reserviert, wenn im Artikel
   ueberhaupt eine hervorgehobene Karte steht - dann in allen Karten gleich,
   damit die Titel auf einer Linie beginnen. */
.mod_article:has(.plan--rec, .plan-rec) > .plan { padding-top: 60px; }

/* Abstand zwischen aufeinanderfolgenden Artikeln. Eine Regel, eine
   Ausnahme: an den Hero schliesst der naechste Artikel direkt an, damit
   Zahlenband oder Inhalt ohne Fuge folgen. */
#main .inside > .mod_article + .mod_article { margin-top: 72px; }
#main .inside > .mod_article.hero + .mod_article { margin-top: 0; }

/* --- Schwebendes Logo ---------------------------------------------------
   Klasse "brand--float" zusaetzlich am Marken-Link im Kopfbereich:
     <a class="brand brand--float" href="...">
   Das Logo waechst auf 56px und haengt unter die Kopfleiste hinaus. Es sitzt
   auf einer eigenen Flaeche in Grundfarbe, damit die Kante der Kopfleiste
   dahinter sauber durchlaeuft, und tragt einen weichen Akzentschein.
   Die Hoehe der Kopfleiste bleibt unveraendert. */
#header:has(.brand--float),
#header:has(.brand--float) .inside { overflow: visible; }

.brand--float { position: relative; z-index: 2; gap: 16px; }
.brand--float .brand__logo {
  height: 56px;
  margin-bottom: -26px;          /* der Ueberhang unter die Kante */
  transition: transform 0.25s ease;
}
/* Der Schein liegt hinter der Flaeche, nicht auf dem Logo. */
.brand--float::before {
  content: "";
  position: absolute;
  left: -10px;
  top: 50%;
  width: 96px;
  height: 96px;
  margin-top: -34px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(74, 127, 214, 0.28), transparent 68%);
  pointer-events: none;
  z-index: -1;
}
.brand--float:hover .brand__logo { transform: translateY(-2px); }

/* Beim Scrollen zieht sich das Logo zusammen, sobald die Kopfleiste
   kompakt wird - dieselbe Mechanik wie bei der Navigation. */
#header.is-scrolled .brand--float .brand__logo {
  height: 44px;
  margin-bottom: -14px;
}

@media (max-width: 720px) {
  .brand--float .brand__logo { height: 44px; margin-bottom: -16px; }
  .brand--float::before { width: 72px; height: 72px; margin-top: -26px; }
}

/* --- Helle Logofassung --------------------------------------------------
   files/burow/img/logo-hell.svg ist die Wortmarke in Weiss, Seitenverhaeltnis
   3301:904. Das SVG traegt width="100%" im Quelltext, deshalb wird das
   Verhaeltnis hier gesetzt, sonst rechnen manche Browser die Breite falsch. */
.brand__logo { aspect-ratio: 3301 / 904; }

/* Steht die Wortmarke als Bild im Kopf, entfaellt der gesetzte Schriftzug -
   sonst stuende der Name zweimal da. Das Zusatzwort bleibt. */
/* Die Wortmarke traegt Name und Zusatz bereits - der gesetzte Schriftzug
   daneben entfaellt vollstaendig. */
.brand:has(.brand__logo) .brand__name,
.brand:has(.brand__logo) .brand__tag { display: none; }

/* Die schwebende Fassung: das Logo steht frei, ohne Flaeche und ohne
   Rahmen. Der Ueberhang und der weiche Schein dahinter tragen es. */
.brand--float .brand__logo {
  height: 64px;
  margin-bottom: -28px;
  filter: drop-shadow(0 10px 22px rgba(0, 0, 0, 0.55));
}
.brand--float::before {
  left: -16px;
  width: 260px;
  height: 110px;
  margin-top: -40px;
  border-radius: 999px;
  background: radial-gradient(ellipse at center, rgba(74, 127, 214, 0.24), transparent 70%);
}
#header.is-scrolled .brand--float .brand__logo {
  height: 48px;
  margin-bottom: -16px;
}
@media (max-width: 720px) {
  .brand--float .brand__logo { height: 46px; margin-bottom: -16px; }
  .brand--float::before { width: 190px; height: 80px; margin-top: -30px; }
}

/* --- Breadcrumb: nur wo er etwas leistet -------------------------------
   Das Modul steht im Layout und erscheint damit auf jeder Seite. Auf der
   ersten Ebene nennt es nur Wurzel und aktuelle Seite - das weiss der
   Besucher schon, und es draengt sich zwischen Kopf und Bildheader.
   Die Regel blendet es aus, solange es kein drittes Glied hat. */
.mod_breadcrumb:not(:has(li:nth-child(3))) { display: none; }

/* Faellt der Breadcrumb weg, schliesst der Bildheader direkt an den Kopf an. */
#main .inside > .mod_breadcrumb + .mod_article.hero { margin-top: 0; }

/* --- Paketkarten: andere Formen -----------------------------------------
   Drei Alternativen zum abgerundeten Viereck. Die Klasse kommt an den
   ARTIKEL (Feld "CSS-ID/Klasse" des Artikels), die Karten darin behalten
   ihre Klasse "plan". Nur eine Variante gleichzeitig verwenden.

     plans--rules   ohne Flaeche, getrennt durch auslaufende Haarlinien
     plans--cut     Flaeche mit abgeschnittener Ecke oben rechts
     plans--steps   ansteigende Stufen mit Akzentkante oben
   ========================================================================= */

/* Variante 1: keine Kaesten. Die Spalten trennen Haarlinien, die an beiden
   Enden auslaufen - dasselbe Kantenbild wie im uebrigen Layout. Das
   empfohlene Paket tritt durch einen Akzentstrich und Weissraum hervor,
   nicht durch einen Rahmen. */
.plans--rules .plan {
  background: none;
  box-shadow: none;
  border-radius: 0;
  padding: 8px 32px 0;
  position: relative;
}
.plans--rules .plan + .plan::before {
  content: "";
  position: absolute;
  left: 0;
  top: 8px;
  bottom: 8px;
  width: 1px;
  background: linear-gradient(180deg, transparent, var(--bi-line-strong) 48px,
              var(--bi-line-strong) calc(100% - 48px), transparent);
}
.plans--rules .plan--rec,
.plans--rules .plan-rec { padding-top: 8px; }
.plans--rules .plan--rec::before,
.plans--rules .plan-rec::before {
  content: "";
  position: static;
  display: block;
  width: 34px;
  height: 2px;
  margin-bottom: 18px;
  border-radius: 0;
  padding: 0;
  background: var(--bi-accent);
}
.plans--rules .plan--rec > h3,
.plans--rules .plan-rec > h3 { color: var(--bi-text); }

/* Variante 2: die Flaeche bleibt, aber die Ecke oben rechts ist gekappt -
   eine Form, die von der Akzentlinie aufgenommen wird. */
.plans--cut .plan {
  border-radius: 0;
  clip-path: polygon(0 0, calc(100% - 28px) 0, 100% 28px, 100% 100%, 0 100%);
  border-top: 1px solid var(--bi-line-strong);
}
.plans--cut .plan--rec,
.plans--cut .plan-rec { border-top-color: var(--bi-accent); }

/* Variante 3: die Karten steigen an, die obere Kante traegt den Akzent.
   Die Hoehenstaffelung macht die Reihenfolge der Pakete sichtbar. */
.plans--steps .plan {
  border-radius: 2px 2px 0 0;
  border-top: 2px solid var(--bi-line-strong);
  box-shadow: none;
  background: linear-gradient(180deg, var(--bi-surface), rgba(35, 37, 50, 0.35));
}
.plans--steps .plan:nth-of-type(1) { margin-top: 48px; }
.plans--steps .plan:nth-of-type(2) { margin-top: 24px; }
.plans--steps .plan:nth-of-type(3) { margin-top: 0; }
.plans--steps .plan--rec,
.plans--steps .plan-rec { border-top-color: var(--bi-accent); }

@media (max-width: 900px) {
  .plans--rules .plan { padding: 8px 0 0; }
  .plans--rules .plan + .plan::before {
    left: 0; right: 0; top: 0; bottom: auto; width: auto; height: 1px;
    background: linear-gradient(90deg, transparent, var(--bi-line-strong) 48px,
                var(--bi-line-strong) calc(100% - 48px), transparent);
  }
  .plans--steps .plan { margin-top: 0 !important; }
}

/* --- Paketkarten: drei kraeftigere Formen -------------------------------
     plans--hud     Eckwinkel statt Rahmen, Kopfleiste wie im Monitoring
     plans--skew    geneigte Flaechen, Inhalt bleibt gerade
     plans--ghost   ohne Flaeche, riesige Ziffer als Grund
   ========================================================================= */

/* Variante 4: Eckwinkel statt Rahmen. Nimmt die Sprache des
   Monitoring-Panels auf - gekappte Ecke, Akzentkante, technische
   Anmutung ohne geschlossenen Kasten. */
.plans--hud .plan {
  background:
    linear-gradient(180deg, rgba(74, 127, 214, 0.10), transparent 40%),
    rgba(35, 37, 50, 0.45);
  box-shadow: none;
  border-radius: 0;
  clip-path: polygon(0 0, calc(100% - 22px) 0, 100% 22px, 100% 100%, 22px 100%, 0 calc(100% - 22px));
  padding: 26px 26px 26px;
  isolation: isolate;
}
/* Die Winkel liegen als eigene Ebene darueber, damit die gekappten Ecken
   offen bleiben. */
.plans--hud .plan > h3 { position: relative; }
.plans--hud .plan > h3::before {
  content: "";
  position: absolute;
  left: -26px;
  right: -26px;
  top: -14px;
  height: 1px;
  background: linear-gradient(90deg, var(--bi-accent), rgba(74, 127, 214, 0.15) 55%, transparent);
}
.plans--hud .plan > h3 {
  font-size: 15px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bi-accent-300);
  margin-bottom: 18px;
}
.plans--hud .plan ul { border-top-style: dashed; }
.plans--hud .plan--rec,
.plans--hud .plan-rec {
  background:
    linear-gradient(180deg, rgba(74, 127, 214, 0.20), transparent 45%),
    rgba(35, 37, 50, 0.6);
}
.plans--hud .plan--rec::before,
.plans--hud .plan-rec::before {
  content: "aktiv";
  top: 26px;
  left: auto;
  right: 34px;
  font-size: 10px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  background: none;
  padding: 0;
  color: var(--bi-accent);
}
.plans--hud:has(.plan--rec) > .plan,
.plans--hud:has(.plan-rec) > .plan { padding-top: 26px; }

/* Variante 5: geneigte Flaechen. Die Karte kippt, der Inhalt wird
   gegengekippt und steht gerade - eine Form, die sonst nirgends auf der
   Seite vorkommt und den Abschnitt klar heraushebt. */
.plans--skew { padding-top: 24px; padding-bottom: 24px; }
.plans--skew .plan {
  transform: skewY(-3deg);
  border-radius: 0;
  box-shadow: none;
  background: linear-gradient(160deg, rgba(35, 37, 50, 0.95), rgba(22, 24, 38, 0.6));
  border-top: 2px solid var(--bi-line-strong);
  padding: 34px 28px;
  transition: transform 0.3s ease, background 0.3s ease;
}
.plans--skew .plan > * { transform: skewY(3deg); }
.plans--skew .plan:nth-of-type(2) { transform: skewY(-3deg) translateY(-18px); }
.plans--skew .plan:nth-of-type(3) { transform: skewY(-3deg) translateY(-36px); }
.plans--skew .plan:hover { transform: skewY(-3deg) translateY(-44px); }
.plans--skew .plan:nth-of-type(2):hover { transform: skewY(-3deg) translateY(-26px); }
.plans--skew .plan:nth-of-type(3):hover { transform: skewY(-3deg) translateY(-44px); }
.plans--skew .plan--rec,
.plans--skew .plan-rec { border-top-color: var(--bi-accent); }

/* Variante 6: keine Flaeche, dafuer eine riesige Ziffer als Grund. Die
   Zahl traegt die Hierarchie, der Text steht frei darueber. */
.plans--ghost { counter-reset: bi-plan; }
.plans--ghost .plan {
  counter-increment: bi-plan;
  background: none;
  box-shadow: none;
  border-radius: 0;
  padding: 72px 20px 0;
  position: relative;
  overflow: hidden;
}
.plans--ghost .plan > h3 {
  position: relative;
  font-size: 30px;
  letter-spacing: -0.02em;
}
.plans--ghost .plan::after {
  content: counter(bi-plan, decimal-leading-zero);
  position: absolute;
  top: -22px;
  left: 4px;
  font-size: 150px;
  line-height: 1;
  font-weight: 500;
  letter-spacing: -0.06em;
  color: transparent;
  -webkit-text-stroke: 1px var(--bi-line-strong);
  pointer-events: none;
  z-index: 0;
}
.plans--ghost .plan > * { position: relative; z-index: 1; }
.plans--ghost .plan--rec::after,
.plans--ghost .plan-rec::after { -webkit-text-stroke-color: rgba(74, 127, 214, 0.55); }
.plans--ghost .plan--rec::before,
.plans--ghost .plan-rec::before { top: 30px; left: 20px; }

@media (max-width: 900px) {
  .plans--skew .plan,
  .plans--skew .plan:nth-of-type(2),
  .plans--skew .plan:nth-of-type(3) { transform: none; }
  .plans--skew .plan > * { transform: none; }
  .plans--ghost .plan { padding: 56px 0 0; }
  .plans--ghost .plan::after { font-size: 110px; }
}

