651 lines
17 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ======================================================
rot.css VARIANTE ROT ("Einsatz" Dark Theme)
------------------------------------------------------
Dunkles, kantiges Feuerwehr-Design:
schwarz-roter Hintergrund, gelbe Akzente, harte Kanten,
große Uppercase-Typografie. Mobile-first.
====================================================== */
:root {
--rot: #b30000;
--rot-hell: #e10600;
--gelb: #ffcc00;
--gelb-hell: #ffe27a;
--bg: #120607;
--surface: #1f0d0e;
--surface-2: #2a1213;
--border: rgba(255, 204, 0, 0.22);
--text: #f5ead9;
--muted: #c7a491;
--pattern: url('../../../bilder/logo2.jpeg');
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
margin: 0;
background-color: var(--bg);
background-image: linear-gradient(rgba(18, 6, 7, 0.94), rgba(18, 6, 7, 0.96)), var(--pattern);
background-size: auto, 14em;
color: var(--text);
font-family: "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
min-height: 100vh;
display: flex;
flex-direction: column;
overflow-x: hidden;
}
main { flex: 1 0 auto; }
::selection { background: var(--gelb); color: #1a0a00; }
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--rot); border-radius: 0; }
::-webkit-scrollbar-thumb:hover { background: var(--gelb); }
/* ------------------------------------------------------
Typografie
------------------------------------------------------ */
h1, h2, h3, h4, h5 {
text-transform: uppercase;
letter-spacing: 0.04em;
font-weight: 800;
}
a { color: var(--gelb); }
a:hover { color: var(--gelb-hell); }
.abschnitt-titel {
display: flex;
align-items: center;
gap: 0.75rem;
margin-bottom: 1.5rem;
color: var(--gelb);
}
.abschnitt-titel::before {
content: "";
width: 10px;
height: 1.6em;
background: var(--rot-hell);
transform: skewX(-12deg);
flex: none;
}
/* ------------------------------------------------------
Buttons (kantig, abgeschrägte Ecken)
------------------------------------------------------ */
.btn-ff {
display: inline-block;
background: var(--gelb);
color: #1a0a00 !important;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.06em;
text-decoration: none;
padding: 0.8rem 1.6rem;
border: none;
clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
transition: transform 0.2s ease, background 0.2s ease;
}
.btn-ff:hover { background: var(--gelb-hell); transform: translateY(-2px); }
.btn-ff-outline {
background: transparent;
color: var(--gelb) !important;
box-shadow: inset 0 0 0 2px var(--gelb);
}
.btn-ff-outline:hover { background: var(--gelb); color: #1a0a00 !important; }
/* ------------------------------------------------------
Navbar (sticky, dunkles Glas, gelbe Kante)
------------------------------------------------------ */
.ff-navbar {
position: sticky;
top: 0;
z-index: 1030;
background: rgba(15, 5, 6, 0.92);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-bottom: 3px solid var(--gelb);
}
.ff-navbar .navbar-brand {
color: var(--gelb) !important;
text-transform: uppercase;
font-weight: 800;
letter-spacing: 0.05em;
display: flex;
align-items: center;
gap: 0.6rem;
}
.ff-navbar .navbar-brand img { height: 2.6em; width: auto; }
.ff-navbar .nav-link {
color: var(--text) !important;
text-transform: uppercase;
font-weight: 700;
font-size: 0.9rem;
letter-spacing: 0.05em;
padding: 0.6rem 0.9rem !important;
transition: color 0.2s ease;
}
.ff-navbar .nav-link:hover,
.ff-navbar .nav-link.active { color: var(--gelb) !important; }
.ff-navbar .nav-link.active { box-shadow: inset 0 -3px 0 var(--rot-hell); }
.ff-navbar .dropdown-menu {
background: var(--surface);
border: 1px solid var(--border);
border-top: 3px solid var(--gelb);
border-radius: 0;
}
.ff-navbar .dropdown-item {
color: var(--text);
text-transform: uppercase;
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.04em;
}
.ff-navbar .dropdown-item:hover,
.ff-navbar .dropdown-item.active {
background: var(--surface-2);
color: var(--gelb);
}
.ff-navbar .dropdown-divider { border-top-color: var(--border); }
.ff-navbar .navbar-toggler { border: 2px solid var(--gelb); border-radius: 0; }
.ff-navbar .navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23FFCC00' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
/* ------------------------------------------------------
Hero (Startseite)
------------------------------------------------------ */
.ff-hero {
position: relative;
min-height: 78vh;
display: flex;
align-items: center;
isolation: isolate;
overflow: hidden;
}
.ff-hero::before {
content: "";
position: absolute;
inset: 0;
z-index: -2;
background: var(--hero-bild) center/cover no-repeat;
transform: scale(1.03);
}
.ff-hero::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(100deg, rgba(18, 6, 7, 0.95) 20%, rgba(18, 6, 7, 0.55) 60%, rgba(179, 0, 0, 0.35));
}
.ff-hero-inhalt { padding: 4rem 0; max-width: 720px; }
.ff-hero-badge {
display: inline-block;
background: var(--rot-hell);
color: #fff;
font-weight: 700;
text-transform: uppercase;
font-size: 0.8rem;
letter-spacing: 0.12em;
padding: 0.35rem 0.9rem;
transform: skewX(-12deg);
margin-bottom: 1.2rem;
}
.ff-hero-badge > span { display: inline-block; transform: skewX(12deg); }
.ff-hero h1 {
font-size: clamp(2.2rem, 6vw, 4.2rem);
line-height: 1.05;
color: #fff;
text-shadow: 3px 3px 0 rgba(179, 0, 0, 0.8);
margin-bottom: 1rem;
}
.ff-hero h1 .highlight { color: var(--gelb); }
.ff-hero p { color: var(--text); font-size: 1.1rem; max-width: 34em; }
.ff-hero-cta { display: flex; flex-wrap: wrap; gap: 0.8rem; margin-top: 1.8rem; }
/* ------------------------------------------------------
Karten & Info-Boxen
------------------------------------------------------ */
.ff-card {
background: var(--surface);
border: 1px solid var(--border);
border-left: 5px solid var(--gelb);
padding: 1.5rem;
height: 100%;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
}
.ff-card h3 {
color: var(--gelb);
font-size: 1.05rem;
margin-bottom: 1rem;
}
.ff-card .termin-datum { font-weight: 800; font-size: 1.1rem; color: #fff; margin-bottom: 0.4rem; }
.ff-card .termin-art { color: var(--gelb-hell); font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.4rem; }
.ff-card .termin-beschr { color: var(--muted); margin-bottom: 0; }
.ff-link-kachel {
display: block;
background: var(--surface);
border: 1px solid var(--border);
border-left: 5px solid var(--rot-hell);
color: var(--text) !important;
text-decoration: none;
padding: 1.2rem 1.5rem;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.05em;
transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.ff-link-kachel:hover {
transform: translateX(6px);
border-left-color: var(--gelb);
background: var(--surface-2);
color: var(--gelb) !important;
}
.ff-link-kachel .pfeil { float: right; color: var(--gelb); }
.ff-link-kachel small {
display: block;
text-transform: none;
letter-spacing: 0;
font-weight: 400;
color: var(--muted);
margin-top: 0.3rem;
}
/* ------------------------------------------------------
Seitenkopf (Unterseiten)
------------------------------------------------------ */
.ff-seitenkopf {
position: relative;
padding: 4rem 0 3rem;
border-bottom: 3px solid var(--gelb);
background:
linear-gradient(rgba(18, 6, 7, 0.88), rgba(18, 6, 7, 0.88)),
var(--pattern) center/12em repeat;
overflow: hidden;
}
.ff-seitenkopf h1 {
font-size: clamp(1.8rem, 5vw, 3rem);
color: #fff;
text-shadow: 3px 3px 0 rgba(179, 0, 0, 0.8);
margin: 0;
}
.ff-seitenkopf .untertitel { color: var(--muted); margin: 0.5rem 0 0; }
/* ------------------------------------------------------
Zeitleiste (Geschichte) Tabs
------------------------------------------------------ */
.zl-tabs {
display: flex;
gap: 0.5rem;
overflow-x: auto;
padding-bottom: 0.5rem;
margin-bottom: 1.5rem;
scrollbar-width: thin;
}
.zl-tab {
flex: none;
background: var(--surface);
border: 1px solid var(--border);
color: var(--text);
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 0.7rem 1.2rem;
cursor: pointer;
clip-path: polygon(8px 0, 100% 0, 100% calc(100% - 8px), calc(100% - 8px) 100%, 0 100%, 0 8px);
transition: background 0.2s ease, color 0.2s ease;
}
.zl-tab:hover { background: var(--surface-2); color: var(--gelb); }
.zl-tab.active {
background: var(--gelb);
color: #1a0a00;
}
.zl-panel {
background: var(--surface);
border: 1px solid var(--border);
border-top: 4px solid var(--rot-hell);
padding: 2rem;
}
.zl-panel h2, .zl-panel h3 {
color: var(--gelb);
font-size: 1.15rem;
margin-top: 1.5rem;
}
.zl-panel h2:first-child, .zl-panel h3:first-child { margin-top: 0; }
.zl-panel p, .zl-panel li { color: var(--text); line-height: 1.8; }
.zl-panel blockquote {
border-left: 4px solid var(--gelb);
background: var(--surface-2);
padding: 1rem 1.4rem;
margin: 1.4rem 0;
font-style: italic;
color: var(--gelb-hell);
}
/* ------------------------------------------------------
Technik-Übersicht
------------------------------------------------------ */
.ff-kat-titel {
color: var(--gelb);
border-bottom: 2px solid var(--border);
padding-bottom: 0.4rem;
margin: 2.5rem 0 1.2rem;
}
.ff-kat-titel:first-of-type { margin-top: 0; }
.tech-karte {
position: relative;
display: block;
height: 100%;
background: var(--surface);
border: 1px solid var(--border);
text-decoration: none;
overflow: hidden;
transition: transform 0.25s ease, border-color 0.25s ease;
}
.tech-karte:hover { transform: translateY(-6px); border-color: var(--gelb); }
.tech-karte .bild {
height: 190px;
background-size: cover;
background-position: center;
filter: saturate(0.9);
transition: transform 0.35s ease, filter 0.35s ease;
}
.tech-karte:hover .bild { transform: scale(1.06); filter: saturate(1.15); }
.tech-karte .titel {
display: flex;
justify-content: space-between;
align-items: center;
gap: 0.5rem;
padding: 0.9rem 1.1rem;
color: var(--gelb);
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.04em;
border-top: 3px solid var(--rot-hell);
}
.tech-karte .titel .pfeil { transition: transform 0.25s ease; }
.tech-karte:hover .titel .pfeil { transform: translateX(5px); }
.tech-karte .bald {
position: absolute;
top: 12px;
right: 12px;
background: var(--rot-hell);
color: #fff;
font-size: 0.72rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 0.25rem 0.7rem;
}
/* ------------------------------------------------------
Fahrzeug-Detail
------------------------------------------------------ */
.spec-list { list-style: none; padding: 0; margin: 0; }
.spec-list li {
display: flex;
flex-wrap: wrap;
gap: 0.25rem 1rem;
padding: 0.6rem 0;
border-bottom: 1px solid var(--border);
color: var(--text);
}
.spec-list .spec-label {
min-width: 160px;
color: var(--muted);
font-weight: 700;
text-transform: uppercase;
font-size: 0.8rem;
letter-spacing: 0.05em;
}
.fz-sektion {
color: var(--gelb);
font-size: 1rem;
margin: 1.8rem 0 0.8rem;
padding-left: 0.8rem;
border-left: 4px solid var(--rot-hell);
}
.fz-punkte { margin: 0; padding-left: 1.2rem; }
.fz-punkte li { color: var(--text); padding: 0.25rem 0; }
.fz-punkte li::marker { color: var(--gelb); }
.fz-hinweis {
margin-top: 1.2rem;
padding: 0.9rem 1.2rem;
background: var(--surface-2);
border-left: 4px solid var(--gelb);
color: var(--gelb-hell);
font-style: italic;
}
.standort-badge {
display: inline-block;
background: var(--rot-hell);
color: #fff;
font-weight: 700;
text-transform: uppercase;
font-size: 0.78rem;
letter-spacing: 0.1em;
padding: 0.3rem 0.9rem;
transform: skewX(-12deg);
margin-bottom: 1rem;
}
.standort-badge > span { display: inline-block; transform: skewX(12deg); }
#fahrzeugCarousel .carousel-item img {
max-height: 480px;
object-fit: cover;
border: 1px solid var(--border);
}
#fahrzeugCarousel .carousel-control-prev-icon,
#fahrzeugCarousel .carousel-control-next-icon {
background-color: var(--gelb);
background-size: 55%;
border-radius: 0;
}
/* ------------------------------------------------------
Mitglieder / Organigramm
------------------------------------------------------ */
.org-ebene {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 1rem;
position: relative;
padding-top: 1.4rem;
}
.org-ebene + .org-ebene::before {
content: "";
position: absolute;
top: 0;
left: 50%;
width: 2px;
height: 1.4rem;
background: var(--gelb);
transform: translateX(-50%);
}
.org-box {
background: var(--surface);
border: 1px solid var(--border);
border-top: 4px solid var(--rot-hell);
padding: 0.9rem 1.4rem;
min-width: 200px;
text-align: center;
}
.org-box.fuehrung { border-top-color: var(--gelb); }
.org-box .rolle {
display: block;
color: var(--gelb);
font-size: 0.72rem;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.1em;
margin-bottom: 0.3rem;
}
.org-box .name { color: #fff; font-weight: 700; line-height: 1.5; }
.org-gruppen { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); margin-top: 2.5rem; }
.org-gruppe {
background: var(--surface);
border: 1px solid var(--border);
border-left: 5px solid var(--gelb);
padding: 1.2rem 1.4rem;
}
.org-gruppe h3 { color: var(--gelb); font-size: 0.95rem; margin-bottom: 0.8rem; }
.org-gruppe .label { color: var(--rot-hell); font-weight: 800; text-transform: uppercase; font-size: 0.75rem; letter-spacing: 0.08em; display: block; margin-top: 0.7rem; }
.org-gruppe ul { list-style: none; margin: 0; padding: 0; }
.org-gruppe li { color: var(--text); padding: 0.15rem 0; font-size: 0.95rem; }
/* ------------------------------------------------------
Dienstplan-Tabelle
------------------------------------------------------ */
.termin-tabelle { width: 100%; border-collapse: collapse; background: var(--surface); border: 1px solid var(--border); }
.termin-tabelle th {
background: var(--rot);
color: #fff;
text-transform: uppercase;
font-size: 0.8rem;
letter-spacing: 0.08em;
padding: 0.9rem 1rem;
text-align: left;
}
.termin-tabelle td {
padding: 0.85rem 1rem;
border-top: 1px solid var(--border);
color: var(--text);
vertical-align: top;
}
.termin-tabelle tr.termin-is-next td { background: rgba(255, 204, 0, 0.08); box-shadow: inset 3px 0 0 var(--gelb); }
.termin-badge {
display: inline-block;
background: var(--surface-2);
border: 1px solid var(--border);
color: var(--gelb);
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
padding: 0.2rem 0.6rem;
white-space: nowrap;
}
.termin-badge-fest, .termin-badge-feier { background: var(--rot-hell); color: #fff; border-color: var(--rot-hell); }
@media (max-width: 768px) {
.termin-tabelle thead { display: none; }
.termin-tabelle tr { display: block; border-top: 3px solid var(--border); padding: 0.6rem 0; }
.termin-tabelle tr.termin-is-next { box-shadow: inset 4px 0 0 var(--gelb); }
.termin-tabelle td { display: flex; gap: 1rem; border: none; padding: 0.3rem 1rem; }
.termin-tabelle td::before {
content: attr(data-label);
min-width: 110px;
color: var(--muted);
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.06em;
}
}
/* ------------------------------------------------------
Footer
------------------------------------------------------ */
.ff-footer {
background: #0d0405;
border-top: 3px solid var(--gelb);
padding: 2.5rem 0;
margin-top: 4rem;
color: var(--muted);
}
.ff-footer h6 {
color: var(--gelb);
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 0.85rem;
margin-bottom: 0.6rem;
}
.ff-footer p, .ff-footer small { color: var(--muted); margin-bottom: 0.2rem; }
.ff-footer .footer-nav { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.4rem 1.2rem; justify-content: center; }
.ff-footer .footer-nav a { color: var(--text); text-decoration: none; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em; }
.ff-footer .footer-nav a:hover { color: var(--gelb); }
/* ------------------------------------------------------
Modal (Zeitungsartikel etc.)
------------------------------------------------------ */
.modal-content { background: var(--surface); border: 1px solid var(--border); border-top: 4px solid var(--gelb); border-radius: 0; color: var(--text); }
.modal-header { border-bottom-color: var(--border); }
.modal-title { color: var(--gelb); text-transform: uppercase; font-weight: 800; }
.btn-close { filter: invert(1); }