/* ====================================================== 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); }