.tb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem}.tb-card,.tb-panel{border:1px solid var(--color-border);border-radius:14px;background:var(--color-surface);padding:1.5rem}.tb-card__label{color:var(--color-muted);font-size:.85rem;margin:0 0 .8rem}.tb-card__value{font-size:1.5rem;font-weight:700;margin:0;overflow-wrap:anywhere}.tb-card__source{font-size:.8rem;color:var(--color-muted);margin:.65rem 0 0}.tb-panel{margin-top:1.25rem}.tb-panel h3{margin:0 0 1rem}.tb-plan-item{padding:1rem;border-left:3px solid var(--color-primary);background:var(--color-bg);border-radius:6px}.tb-plan-item p{margin:.3rem 0}#thebus-note{margin:1rem 0;line-height:1.6}@media(max-width:520px){.tb-grid{grid-template-columns:1fr}.tb-card,.tb-panel{padding:1.1rem}}
.tb-card__value.tb-status--online{color:#4ade80}.tb-card__value.tb-status--offline{color:#f87171}
.tb-card__value{display:flex;align-items:center;gap:.7rem;min-width:0}.tb-icon{width:28px;height:28px;flex:0 0 28px;color:var(--color-primary,#00cbea)}.tb-status--online .tb-icon,.tb-status--offline .tb-icon{color:inherit}.tb-icon--weather{width:42px;height:42px;flex-basis:42px}.tb-icon--Sunny{color:#fbbf24}.tb-icon--Overcast,.tb-icon--Nebular{color:#cbd5e1}.tb-icon--Precipitation,.tb-icon--Nebular-And-Precipitation{color:#60a5fa}.tb-icon--Thunderstrorm{color:#c4b5fd}.tb-icon--Dynamic{color:#fbbf24}.tb-icon--Sync{color:#22d3ee}.tb-icon--unknown{color:var(--color-muted,#9ca3af)}
.tb-plan-day{min-width:0;border:1px solid var(--color-border);border-radius:12px;overflow:hidden;background:var(--color-surface)}.tb-plan-day__title{font-size:.95rem;margin:0;padding:.85rem 1rem;border-bottom:1px solid var(--color-border)}.tb-plan-day .tb-plan-item{border-left:0;border-radius:0;background:transparent;padding:.85rem 1rem}.tb-plan-day .tb-plan-item+.tb-plan-item{border-top:1px solid var(--color-border)}.tb-plan-weather{display:flex;align-items:center;gap:.65rem;overflow-wrap:anywhere}.tb-plan-weather .tb-icon--weather{width:28px;height:28px;flex-basis:28px}.tb-plan-empty{padding:1rem;font-size:.85rem;color:var(--color-muted);margin:0}
.tb-plan-slider{display:flex;gap:1rem;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:thin;padding-bottom:.75rem;position:relative}.tb-plan-slider>.tb-plan-day{flex:0 0 calc((100% - 2rem)/3);scroll-snap-align:start}.tb-plan-nav{display:flex;justify-content:flex-end;gap:.5rem;margin-bottom:.8rem}.tb-plan-nav button:disabled{opacity:.4;cursor:default}.tb-plan-slider:focus-visible{outline:2px solid var(--color-primary);outline-offset:4px}#thebus-cards .tb-card:last-child .tb-card__value{font-size:1.15rem}@media(max-width:760px){.tb-plan-slider>.tb-plan-day{flex-basis:calc((100% - 1rem)/2)}}@media(max-width:520px){.tb-plan-slider>.tb-plan-day{flex-basis:100%}}
#thebus-cards .tb-card{padding:1.1rem}#thebus-cards .tb-card__value{font-size:1.2rem;overflow-wrap:normal}#thebus-cards .tb-icon--weather{width:32px;height:32px;flex-basis:32px}
.tb-plan-slider{scrollbar-color:var(--color-primary) var(--color-bg)}
.tb-icon--ClearNight{color:#d9e5f4}
/* Dortmund bus-livery palette. Scoped to The Bus, never other projects. */
.project-theme-thebus{
  --color-primary:#f26973;--color-secondary:#83d5a3;--color-accent:#f3f6f4;
  --color-glow:#83d5a3;--color-bg:#0d1410;--color-surface:#151c18;
  --color-text:#f0f5f2;--color-muted:#bbc9c1;--color-border:#354b3e;
  background-color:var(--color-bg);color:var(--color-text);
}
.project-theme-thebus .section__eyebrow,.project-theme-thebus .project-page__kicker{color:var(--color-primary)}
.project-theme-thebus .section__title{color:var(--color-text)}
.project-theme-thebus .section__desc,.project-theme-thebus .project-page__lead{color:var(--color-muted)}
.project-theme-thebus :is(.hardware-card,.pc-panel,.project-info__card,.news-card,.tb-panel){
  background:linear-gradient(135deg,#1b2a21,var(--color-surface) 75%);
  border-color:var(--color-border);box-shadow:0 10px 28px rgba(0,0,0,.22);
}
.project-theme-thebus :is(.hardware-card,.project-info__card,.news-card){--tb-content-accent:#f26973;position:relative;overflow:hidden}
.project-theme-thebus .project-info__card:nth-child(1){--tb-content-accent:#f26973} /* Bus und Linien */
.project-theme-thebus .project-info__card:nth-child(2){--tb-content-accent:#e7bd70} /* Gameplay und Straße */
.project-theme-thebus .project-info__card:nth-child(3){--tb-content-accent:#72c8e7} /* Welt und Stadt */
.project-theme-thebus .project-info__card:nth-child(4){--tb-content-accent:#b5a1e4} /* Maßstab und Geodaten */
.project-theme-thebus .project-info__card:nth-child(5){--tb-content-accent:#83d5a3} /* Haltestellen */
.project-theme-thebus .project-info__card:nth-child(6){--tb-content-accent:#77cec6} /* Updates */
.project-theme-thebus .hardware-card:nth-child(1){--tb-content-accent:#83d5a3}
.project-theme-thebus .hardware-card:nth-child(2){--tb-content-accent:#f26973}
.project-theme-thebus .hardware-card:nth-child(3){--tb-content-accent:#e7bd70}
.project-theme-thebus .hardware-card:nth-child(4){--tb-content-accent:#b5a1e4}
.project-theme-thebus .hardware-card:nth-child(5){--tb-content-accent:#72c8e7}
.project-theme-thebus .hardware-card:nth-child(6){--tb-content-accent:#77cec6}
.project-theme-thebus :is(.hardware-card,.project-info__card,.news-card)::before{
  content:'';position:absolute;inset:0 0 auto;height:3px;
  background:var(--tb-content-accent);
}
.project-theme-thebus :is(.hardware-card,.project-info__card,.news-card):hover{border-color:var(--tb-content-accent)}
.project-theme-thebus .hardware-card__media{background:linear-gradient(135deg,#18281f,#131b18)}
.project-theme-thebus .hardware-card__media img{
  -webkit-mask-image:linear-gradient(to right,transparent,#000 13%,#000 87%,transparent),linear-gradient(to bottom,transparent 5%,#000 20%,#000 78%,transparent 95%);
  mask-image:linear-gradient(to right,transparent,#000 13%,#000 87%,transparent),linear-gradient(to bottom,transparent 5%,#000 20%,#000 78%,transparent 95%);
  -webkit-mask-origin:content-box;mask-origin:content-box;-webkit-mask-clip:content-box;mask-clip:content-box;
  -webkit-mask-composite:source-in;mask-composite:intersect;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
}
.project-theme-thebus .project-hero--thebus{background:var(--color-surface)}
.project-theme-thebus .project-hero--thebus .project-hero__bg{-webkit-mask-image:none;mask-image:none}
.project-theme-thebus .project-hero--thebus .project-hero__bg img{
  -webkit-mask-image:linear-gradient(to right,transparent,#000 24%,#000 91%,transparent),linear-gradient(to bottom,transparent,#000 12%,#000 84%,transparent);
  mask-image:linear-gradient(to right,transparent,#000 24%,#000 91%,transparent),linear-gradient(to bottom,transparent,#000 12%,#000 84%,transparent);
  -webkit-mask-composite:source-in;mask-composite:intersect;
}
.project-theme-thebus #thebus-cards .tb-card{
  --tb-card-accent:#83d5a3;
  border-color:color-mix(in srgb,var(--tb-card-accent) 35%,#29362e);
  border-top:3px solid var(--tb-card-accent);border-radius:16px;
  background:linear-gradient(135deg,color-mix(in srgb,var(--tb-card-accent) 9%,var(--color-surface)),var(--color-surface) 80%);
  box-shadow:0 8px 24px rgba(0,0,0,.23);
}
.project-theme-thebus #thebus-cards .tb-card:nth-child(2){--tb-card-accent:#edf4ef}
.project-theme-thebus #thebus-cards .tb-card:nth-child(3){--tb-card-accent:#f26973}
.project-theme-thebus #thebus-cards .tb-card:nth-child(4){--tb-card-accent:#83d5a3}
.project-theme-thebus #thebus-cards .tb-card:nth-child(5){--tb-card-accent:#edf4ef}
.project-theme-thebus #thebus-cards .tb-card:has(.tb-status--offline){--tb-card-accent:#f26973}
.project-theme-thebus #thebus-cards .tb-card__label{color:#c7d4cc}
.project-theme-thebus #thebus-cards .tb-icon:not(.tb-icon--weather){color:var(--tb-card-accent)}
.project-theme-thebus #thebus-cards .tb-status--online{color:#83d5a3}
.project-theme-thebus #thebus-cards .tb-status--offline{color:#f26973}
.project-theme-thebus .tb-plan-day{background:#141e18;border-color:#3c5947;box-shadow:0 6px 18px rgba(0,0,0,.15)}
.project-theme-thebus .tb-plan-day__title{background:linear-gradient(90deg,#253a2d,#17271d);border-color:#3d5b48;color:#eef5f0}
.project-theme-thebus .tb-plan-day .tb-plan-item+.tb-plan-item{border-color:#304637}
.project-theme-thebus .tb-plan-item strong{color:#f5f7f6}
.project-theme-thebus .tb-plan-weather{color:#c6d8cc}
.project-theme-thebus .tb-plan-slider{scrollbar-color:#83d5a3 #152119}
.project-theme-thebus .project-info__icon{color:var(--color-secondary)}
.project-theme-thebus :is(.hardware-card__name,.news-card__title a,.pc-panel h3){color:var(--color-text)}
.project-theme-thebus :is(.hardware-card__brand,.news-card__excerpt,.pc-panel p,.tb-card__source){color:var(--color-muted)}
.project-theme-thebus :is(.rich-content a,.news-card__more){color:var(--color-secondary)}
.project-theme-thebus .news-card__date{color:var(--color-primary)}
.project-theme-thebus .faq details{border-color:#3c5947;background:linear-gradient(90deg,rgba(131,213,163,.045),transparent)}
.project-theme-thebus .faq summary{color:var(--color-text)}
.project-theme-thebus .faq details[open] summary{color:var(--color-secondary)}
.project-theme-thebus .faq summary::after{color:var(--color-primary)}
.project-theme-thebus .faq .rich-content{color:var(--color-muted)}
.project-theme-thebus .gallery-item{border-color:#3c5947;background:var(--color-surface)}
.project-theme-thebus .btn--ghost{border-color:#50675a}
.project-theme-thebus .btn--ghost:hover{border-color:var(--color-secondary);background:rgba(131,213,163,.09)}
.project-theme-thebus .btn--primary{color:#141816}
@media(max-width:700px){.project-theme-thebus .project-hero--thebus .project-hero__bg img{
  -webkit-mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent),linear-gradient(to bottom,transparent,#000 10%,#000 80%,transparent);
  mask-image:linear-gradient(to right,transparent,#000 8%,#000 92%,transparent),linear-gradient(to bottom,transparent,#000 10%,#000 80%,transparent);
}}
#thebus-cards{grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem}#thebus-cards .tb-card{min-width:0;padding:.9rem}#thebus-cards .tb-card__value{font-size:1.05rem;gap:.5rem;flex-wrap:wrap;overflow-wrap:anywhere}#thebus-cards .tb-icon,#thebus-cards .tb-icon--weather{width:24px;height:24px;flex-basis:24px}#thebus-cards .tb-card:last-child .tb-card__value{font-size:1rem}@media(max-width:999px){#thebus-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){#thebus-cards{grid-template-columns:repeat(2,minmax(0,1fr))}#thebus-cards .tb-card:last-child{grid-column:1/-1}}@media(max-width:520px){#thebus-cards{grid-template-columns:1fr}}
