@font-face {
    font-family: "Manrope";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/manrope.woff2") format("woff2");
}

:root {
    --orange: #ff6700;
    --light-gray: #ebebeb;
    --dark-gray: #c0c0c0;
    --light-blue: #3a6ea5;
    --dark-blue: #004e98;
    --content-width: 60vw;
}

* {
    box-sizing: border-box;
}

html {
    background: var(--light-gray);
    scroll-behavior: smooth;
}

body {
    min-width: 280px;
    margin: 0;
    color: var(--dark-blue);
    background: var(--light-gray);
    font-family: "Manrope", Arial, sans-serif;
    line-height: 1.55;
}

a {
    color: inherit;
    text-decoration: none;
}

.skip-link {
    position: fixed;
    top: -5rem;
    left: 1rem;
    z-index: 100;
    padding: .75rem 1rem;
    color: white;
    background: var(--dark-blue);
}

.skip-link:focus {
    top: 1rem;
}

.site-header {
    position: fixed;
    inset: 0 0 auto;
    z-index: 50;
    height: 80px;
    border-bottom: 2px solid var(--dark-blue);
    background: var(--light-gray);
}

.navigation {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

.brand {
    position: absolute;
    top: 8px;
    left: 8px;
    display: flex;
    align-items: center;
    height: 62px;
    gap: .5rem;
    z-index: 3;
}

.brand img {
    width: 62px;
    height: 62px;
    object-fit: contain;
}

.brand span {
    max-width: 150px;
    line-height: 1.2;
}

.nav-list,
.submenu,
.site-footer ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

.nav-list {
    display: flex;
    align-items: center;
}

.nav-item {
    position: relative;
    padding: 0 2.5rem;
}

.nav-item + .nav-item {
    border-left: 2px solid var(--dark-blue);
}

.nav-item > a:hover,
.nav-item > a:focus,
.submenu a:hover,
.submenu a:focus {
    text-decoration: underline;
}

.nav-item a[aria-current="page"],
.nav-item.is-current-section > a {
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: .2em;
}

.submenu {
    position: absolute;
    top: 100%;
    left: -2px;
    display: none;
    width: calc(100% + 4px);
    text-align: center;
    background: var(--light-gray);
    border: 2px solid var(--dark-blue);
    border-top: 0;
    border-radius: 0 0 .5rem .5rem;
}

.submenu li {
    padding: .35rem .5rem;
    border-top: 1px solid var(--dark-gray);
}

.has-submenu:hover .submenu,
.has-submenu:focus-within .submenu,
.has-submenu.submenu-open .submenu {
    display: block;
}

.submenu-toggle {
    display: none;
}

.menu-toggle {
    display: none;
}

.home-main {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    padding-top: 80px;
}

.page-main {
    display: flex;
    justify-content: center;
    width: 100%;
    min-height: 70vh;
    padding-top: 80px;
}

.page-shell {
    width: var(--content-width);
}

.page-hero {
    position: relative;
    height: 30vh;
    min-height: 220px;
    margin-bottom: 1rem;
    overflow: hidden;
}

.page-hero img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.page-hero h1 {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    margin: 0;
    padding: 1.1rem 1rem;
    border-top: 1px solid var(--orange);
    color: var(--light-gray);
    font-size: 1.6rem;
    font-weight: 400;
    background: rgb(0 0 0 / 18%);
    backdrop-filter: blur(20px);
}

.page-copy {
    padding: 0 1rem;
}

.page-copy h2 {
    margin: 1rem 0 .5rem;
    font-size: 1.9rem;
    font-weight: 400;
}

.page-copy p {
    margin: .6rem 0 0;
    font-size: 1.2rem;
}

.page-copy a:not(.contact-button) {
    color: #0645ad;
    text-decoration: underline;
}

.service-overview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(330px, 1fr));
    gap: 1.5rem;
    padding: 2rem 1rem;
}

.service-overview-card {
    position: relative;
    min-height: 360px;
    padding: 1rem 1rem 3.5rem;
    border: 2px solid var(--light-blue);
    border-radius: .5rem;
    box-shadow: 0 10px 15px rgb(0 0 0 / 12%);
}

.service-overview-heading {
    display: flex;
    align-items: center;
    min-height: 4rem;
    gap: .75rem;
}

.service-overview-heading h2 {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 400;
}

.service-overview-card ul {
    padding-left: 1.5rem;
    font-size: 1.15rem;
}

.service-overview-card li + li {
    margin-top: .5rem;
}

.service-overview-card li::marker {
    content: "> ";
}

.detail-button,
.contact-button {
    display: inline-block;
    padding: .45rem .7rem;
    border: 2px solid var(--dark-blue);
    border-radius: .45rem;
    color: var(--light-gray);
    background: var(--dark-blue);
}

.detail-button {
    position: absolute;
    right: .75rem;
    bottom: .75rem;
}

.detail-button:hover,
.detail-button:focus,
.contact-button:hover,
.contact-button:focus {
    color: var(--dark-blue);
    background: var(--light-gray);
}

.service-detail {
    padding-bottom: 5rem;
}

.service-detail h3 {
    margin: 2rem 0 .5rem;
    font-size: 1.2rem;
}

.service-list {
    padding-left: 2rem;
    font-size: 1.1rem;
}

.service-list li + li {
    margin-top: .25rem;
}

.contact-button {
    float: right;
    margin-top: 2rem;
    font-size: 1.15rem;
}

.download-links {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
    margin-top: 2rem;
}

.download-links img {
    display: block;
    width: auto;
    max-width: 190px;
    height: 55px;
    object-fit: contain;
}

.title-banner {
    padding: 3.5rem 1rem 2.5rem;
    color: var(--light-gray);
    text-align: center;
    background: var(--dark-blue);
}

.title-banner h1 {
    margin: 0;
    font-size: clamp(2rem, 4vw, 2.5rem);
    font-weight: 400;
}

.title-banner p {
    margin: .5rem 0 0;
    font-size: clamp(1.25rem, 2.5vw, 1.5rem);
}

.about-content {
    padding: 1.5rem 2rem 2rem;
    text-align: center;
}

.about-content p {
    margin: 1rem 0;
    font-size: 1.1rem;
}

.about-content figure {
    float: right;
    width: min(35vw, 320px);
    margin: 0 0 1.5rem 2rem;
    text-align: left;
}

.about-content figure img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: .5rem;
    box-shadow: 0 10px 20px rgb(0 0 0 / 25%);
}

.about-content figcaption {
    padding-top: .4rem;
    color: var(--light-blue);
    font-size: .875rem;
}

.about-content::after {
    display: block;
    clear: both;
    content: "";
}

.imprint-columns {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
    padding: 1rem;
}

.legal-page h2 {
    margin: 1rem 0 .5rem;
    color: var(--dark-blue);
    font-size: 1.5rem;
    font-weight: 400;
    text-decoration: underline;
}

.legal-page address,
.privacy-page address {
    font-style: normal;
}

.legal-page a,
.privacy-page a {
    color: var(--light-blue);
    text-decoration: underline;
}

.legal-section {
    padding: 0 1rem 1rem;
}

.imprint-page hr {
    width: 70%;
    margin: 1rem auto;
    border: 0;
    border-top: 2px solid var(--orange);
}

.legal-copy {
    padding: .5rem 1rem 2rem;
}

.legal-copy h2 {
    margin: 1.5rem 0 .5rem;
    color: var(--light-blue);
    font-size: 1.8rem;
    font-weight: 400;
    text-decoration: underline;
}

.legal-copy h3 {
    margin: 1.25rem 0 .4rem;
    color: var(--light-blue);
    font-size: 1.4rem;
    font-weight: 400;
}

.legal-copy h4 {
    margin: 1rem 0 .35rem;
    font-size: 1.05rem;
}

.legal-copy p,
.legal-copy ul,
.legal-copy address {
    margin-block: .5rem 1rem;
}

.legal-emphasis {
    font-weight: 600;
}

.generic-content {
    min-height: 300px;
    padding-bottom: 2rem;
}

.contact-layout {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    min-height: calc(100vh - 80px);
}

.contact-details,
.contact-form-section {
    padding: 4rem 2rem 2rem;
}

.contact-details {
    border-right: 2px solid var(--orange);
    color: var(--light-gray);
    background: var(--dark-blue);
}

.contact-layout h1,
.contact-section-title {
    margin: 0 0 1rem;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    font-weight: 400;
    text-transform: uppercase;
}

.contact-layout h2 {
    margin: 1rem 0 .25rem;
    font-size: 1.25rem;
    font-weight: 400;
}

.contact-details address {
    font-style: normal;
}

.contact-links a,
.large-map-link,
.map-consent a {
    text-decoration: underline;
}

.map-consent {
    width: 100%;
    height: 30vh;
    min-height: 240px;
    margin-top: .5rem;
    overflow: hidden;
    color: var(--light-gray);
    background: rgb(58 110 165 / 85%);
}

.map-consent-message {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 1rem;
    text-align: center;
}

.map-consent-message button {
    margin: .5rem 0;
    padding: .65rem 1rem;
    border: 2px solid var(--orange);
    border-radius: .5rem;
    color: var(--light-gray);
    background: transparent;
    cursor: pointer;
}

.map-consent-message button:hover,
.map-consent-message button:focus {
    background: rgb(255 255 255 / 10%);
}

.large-map-link {
    display: block;
    margin-top: .35rem;
    text-align: right;
    font-size: .875rem;
}

.contact-form-section > p {
    margin-bottom: 1.5rem;
}

.contact-form {
    position: relative;
}

.contact-form label {
    display: block;
    margin-top: .8rem;
}

.contact-form label > span {
    display: block;
    margin-bottom: .2rem;
}

.contact-form input,
.contact-form select,
.contact-form textarea {
    width: 100%;
    padding: .65rem .75rem;
    border: 1px solid var(--dark-gray);
    border-radius: .2rem;
    color: #111;
    background: white;
    font: inherit;
}

.contact-form textarea {
    resize: vertical;
}

.form-row {
    display: grid;
    grid-template-columns: minmax(110px, .7fr) 2fr;
    gap: .75rem;
}

.contact-trap {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.privacy-note {
    margin: 1rem 0;
    font-size: .85rem;
}

.privacy-note a {
    color: var(--light-blue);
    text-decoration: underline;
}

.submit-button {
    float: right;
    padding: .65rem 1rem;
    border: 2px solid var(--dark-blue);
    border-radius: .25rem;
    color: var(--light-gray);
    background: var(--dark-blue);
    cursor: pointer;
}

.submit-button:hover,
.submit-button:focus {
    color: var(--dark-blue);
    background: var(--light-gray);
}

.form-notice {
    margin: 1rem 0;
    padding: 1rem;
    border: 1px solid;
    border-radius: .3rem;
}

.form-success {
    color: #14532d;
    border-color: #22c55e;
    background: #dcfce7;
}

.form-error {
    color: #7f1d1d;
    border-color: #ef4444;
    background: #fee2e2;
}

.prices-content {
    padding: 1rem 1rem 2rem;
}

.price-section {
    scroll-margin-top: 95px;
}

.price-section h2,
.price-notes h2 {
    margin: 2rem 0 .75rem;
    color: var(--dark-blue);
    font-size: 1.6rem;
    font-weight: 400;
    text-align: center;
    text-decoration: underline;
}

.table-scroll {
    overflow-x: auto;
}

.prices-page table {
    width: 100%;
    border-collapse: collapse;
}

.prices-page th,
.prices-page td {
    padding: .65rem;
    border: 1px solid var(--light-blue);
    text-align: left;
}

.prices-page th:last-child,
.prices-page td:last-child {
    width: 25%;
    min-width: 120px;
    text-align: center;
}

.prices-page tbody tr:nth-child(even) {
    background: rgb(192 192 192 / 35%);
}

.price-notes {
    text-align: center;
}

.error-page {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: calc(100vh - 80px);
    padding: 112px 1rem 2rem;
    overflow: hidden;
}

.error-page::after {
    position: absolute;
    inset: 80px 0 0;
    z-index: 0;
    content: "";
    background: linear-gradient(135deg, rgb(0 36 71 / 70%), rgb(0 78 152 / 30%));
}

.error-page > img {
    position: absolute;
    inset: 80px 0 0;
    z-index: 0;
    width: 100%;
    height: calc(100% - 80px);
    object-fit: cover;
}

.error-card {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: min(100%, 600px);
    padding: clamp(2rem, 5vw, 3.5rem);
    border: 1px solid rgb(255 255 255 / 65%);
    border-top: 4px solid var(--orange);
    border-radius: .75rem;
    text-align: center;
    background: rgb(255 255 255 / 92%);
    box-shadow: 0 24px 60px rgb(0 20 40 / 30%);
    backdrop-filter: blur(10px);
}

.error-kicker {
    color: var(--orange);
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.error-card h1 {
    margin: .25rem 0 0;
    color: var(--dark-blue);
    font-size: clamp(4rem, 10vw, 7rem);
    font-weight: 700;
    line-height: 1;
}

.error-card h2 {
    margin: .75rem 0 0;
    color: var(--ink);
    font-size: clamp(1.5rem, 4vw, 2rem);
}

.error-card p {
    max-width: 28rem;
    margin: 1rem 0 0;
    color: #435f78;
    font-size: 1.05rem;
}

.error-card .error-action {
    float: none;
    margin-top: 2rem;
    padding: .75rem 5rem .75rem 1.25rem;
    color: #fff;
    white-space: nowrap;
}

.home-main > section {
    width: var(--content-width);
    padding: 1rem 3rem 2rem;
}

.home-main h2 {
    margin: 1.5rem 0 0;
    font-size: 1.75rem;
    font-weight: 400;
}

.copy-block {
    margin-top: 1.5rem;
}

.copy-block p {
    margin: .5rem 0 0;
    font-size: 1.1rem;
}

.hero {
    position: relative;
    isolation: isolate;
    min-height: 360px;
    overflow: hidden;
    padding: 1rem 0 6rem !important;
    color: var(--light-gray);
    background: var(--orange);
    clip-path: polygon(0 0, 100% 0, 100% 83%, 0 95%);
}

.hero-image {
    position: absolute;
    inset: 0;
    z-index: -2;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(.7);
}

.hero-heading {
    position: relative;
    margin-top: 1rem;
    padding: .45rem 2rem 1rem;
    border-block: 1px solid var(--orange);
}

.hero-heading::before {
    position: absolute;
    inset: 0;
    z-index: -1;
    content: "";
    background: rgb(0 0 0 / 12%);
    backdrop-filter: blur(7px) saturate(.9);
}

.hero h1 {
    margin: 0;
    font-size: clamp(2.2rem, 4vw, 3.75rem);
    font-weight: 400;
}

.hero-heading p {
    margin: .25rem 0 0;
    font-size: clamp(1.15rem, 2vw, 1.5rem);
}

.hero-location {
    margin: .75rem 3rem;
    font-size: clamp(1rem, 1.7vw, 1.25rem);
}

.services-section {
    padding-inline: 1rem !important;
}

.service-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-around;
    align-items: stretch;
    gap: 1.5rem;
    margin-top: 2rem;
}

.service-card {
    position: relative;
    display: flex;
    flex: 0 1 40%;
    flex-direction: column;
    align-items: center;
    justify-content: space-between;
    min-height: 230px;
    padding: 1rem;
    text-align: center;
    background: rgb(58 110 165 / 6%);
    box-shadow: 8px 8px 2px 1px rgb(96 150 186 / 20%);
}

.service-card::before,
.service-card::after {
    position: absolute;
    content: "";
    border-color: transparent;
    transition: .3s ease;
}

.service-card::before {
    top: 25%;
    left: 0;
    width: 100%;
    height: 50%;
    border-style: solid;
    border-width: 0 1px;
}

.service-card::after {
    top: 0;
    left: 25%;
    width: 50%;
    height: 100%;
    border-style: solid;
    border-width: 1px 0;
}

.service-card:hover::before,
.service-card:focus::before {
    top: 0;
    height: 100%;
    border-color: var(--orange);
}

.service-card:hover::after,
.service-card:focus::after {
    left: 0;
    width: 100%;
    border-color: var(--orange);
}

.service-card h3 {
    margin: .6rem 0 0;
    font-size: clamp(1.1rem, 2vw, 1.6rem);
    font-weight: 400;
}

.service-card p {
    margin: 1rem 0 0;
    font-size: clamp(1rem, 1.6vw, 1.25rem);
}

.service-card-link {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    margin-top: auto;
    padding-top: 1rem;
    color: var(--dark-blue);
    font-size: .9rem;
    font-weight: 700;
}

.service-card-link span {
    color: var(--orange);
    font-size: 1.15rem;
    transition: transform .2s ease;
}

.service-card:hover .service-card-link span,
.service-card:focus-visible .service-card-link span {
    transform: translateX(3px);
}

.service-icon {
    flex: 0 0 3rem;
    width: 3rem;
    height: 3rem;
    aspect-ratio: 1;
    border: 2px solid var(--dark-blue);
    border-radius: 50%;
    background: var(--light-gray) center / 1.8rem no-repeat;
}

.service-icon--computer { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='2' y='3' width='20' height='14' rx='2' fill='%23004e98'/%3E%3Crect x='5' y='6' width='14' height='8' rx='1' fill='%23ebebeb'/%3E%3Cpath d='M8 21h8M12 17v4' fill='none' stroke='%23004e98' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.service-icon--network { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23004e98' stroke-width='2'%3E%3Crect x='3' y='3' width='18' height='6' rx='1'/%3E%3Crect x='3' y='15' width='18' height='6' rx='1'/%3E%3Cpath d='M7 6h.01M7 18h.01M17 6h1M17 18h1M12 9v6'/%3E%3C/svg%3E"); }
.service-icon--service { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14.8 3.2a5 5 0 0 0-5.9 6.4l-6.8 6.8a2.1 2.1 0 0 0 3 3l6.8-6.8a5 5 0 0 0 6.4-5.9l-3.2 3.2-3.1-3.1 3.2-3.2z' fill='%23004e98'/%3E%3Cpath d='m15.8 15.8 5 5' fill='none' stroke='%23004e98' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.service-icon--headset { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23004e98' stroke-width='2'%3E%3Cpath d='M4 14v-2a8 8 0 0 1 16 0v2'/%3E%3Cpath d='M4 14h3v6H5a1 1 0 0 1-1-1zM20 14h-3v6h2a1 1 0 0 0 1-1zM17 20c0 1-2 2-5 2'/%3E%3C/svg%3E"); }

.services-section hr {
    width: 50%;
    margin: 3rem auto;
    border: 0;
    border-top: 1px solid var(--orange);
}

.arrow-link {
    display: flex;
    float: right;
    align-items: center;
    justify-content: space-between;
    width: 13rem;
    margin: 3rem 2rem 0 0;
    padding: .6rem 1rem;
    font-size: 1.25rem;
    box-shadow: 0 10px 20px rgb(107 114 128 / 45%);
    clip-path: polygon(0 0, 0 100%, 80% 100%, 85% 50%, 80% 0, 85% 0, 90% 50%, 85% 100%, 95% 100%, 100% 50%, 95% 0);
}

.arrow-link--blue {
    color: var(--light-gray);
    background: var(--dark-blue);
}

.arrow-link--light {
    color: var(--dark-blue);
    background: var(--light-gray);
}

.arrow-link:hover,
.arrow-link:focus {
    text-decoration: underline;
}

.about-teaser {
    clear: both;
    margin-top: 2rem;
    padding-block: 4rem !important;
    color: var(--light-gray);
    background: var(--dark-blue);
    clip-path: polygon(0 0, 100% 9%, 100% 91%, 0 100%);
}

.contact-teaser {
    min-height: 300px;
}

.site-footer {
    clear: both;
    width: 100%;
    margin-top: 1rem;
    border-top: 1px solid var(--dark-blue);
    color: #111;
    background: var(--light-gray);
}

.footer-content {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 2rem;
    width: var(--content-width);
    margin: auto;
    padding: 1rem 0 .75rem;
}

.footer-identity {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    font-size: 1.05rem;
}

.sitemap {
    display: grid;
    grid-template-columns: repeat(2, minmax(100px, 1fr));
    gap: 1rem;
    font-size: .875rem;
}

.sitemap h2 {
    margin: 0 0 .6rem;
    font-size: .875rem;
    font-weight: 400;
    text-decoration: underline;
    text-transform: uppercase;
}

.sitemap a:hover,
.sitemap a:focus {
    text-decoration: underline;
}

.copyright {
    width: 90%;
    margin: auto;
    padding: .5rem;
    border-top: 1px solid var(--orange);
    text-align: center;
    font-size: .875rem;
}

@media (min-width: 1280px) {
    .service-card {
        flex-basis: 30%;
    }
}

@media (min-width: 1536px) {
    .service-card {
        flex-basis: 21%;
        aspect-ratio: 1;
    }
}

@media (max-width: 1024px) {
    :root {
        --content-width: 100%;
    }

    .navigation {
        flex-direction: column;
        justify-content: flex-start;
    }

    .brand {
        position: relative;
        top: 5px;
        left: auto;
        height: 68px;
    }

    .brand span {
        max-width: none;
    }

    .menu-toggle {
        position: absolute;
        top: 4px;
        right: .75rem;
        z-index: 4;
        display: flex;
        flex-direction: column;
        align-items: center;
        border: 0;
        color: var(--dark-blue);
        background: transparent;
        cursor: pointer;
    }

    .menu-icon {
        display: flex;
        flex-direction: column;
        justify-content: space-evenly;
        width: 2.5rem;
        height: 2.5rem;
    }

    .menu-icon i {
        display: block;
        width: 100%;
        height: 4px;
        border-radius: 1rem;
        background: var(--dark-blue);
        transition: .15s ease;
    }

    .menu-toggle[aria-expanded="true"] .menu-icon i:first-child {
        transform: translateY(.68rem) rotate(45deg);
    }

    .menu-toggle[aria-expanded="true"] .menu-icon i:nth-child(2) {
        opacity: 0;
    }

    .menu-toggle[aria-expanded="true"] .menu-icon i:last-child {
        transform: translateY(-.68rem) rotate(-45deg);
    }

    .nav-list {
        position: absolute;
        top: 78px;
        left: 0;
        display: block;
        width: 100%;
        padding: .5rem 0;
        border-bottom: 1px solid var(--dark-blue);
        text-align: center;
        background: var(--light-gray);
    }

    .js .nav-list {
        display: none;
    }

    .js .nav-list.is-open {
        display: block;
    }

    .nav-item {
        padding: .4rem 1rem;
        text-transform: uppercase;
    }

    .nav-item > a {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
    }

    .nav-item + .nav-item {
        border-left: 0;
    }

    .nav-item + .nav-item::before {
        display: block;
        width: 50%;
        height: 2px;
        margin: -.4rem auto .4rem;
        content: "";
        background: rgb(255 103 0 / 60%);
    }

    .submenu-toggle {
        display: inline-block;
        min-width: 44px;
        min-height: 44px;
        border: 0;
        color: var(--dark-blue);
        background: transparent;
        cursor: pointer;
    }

    .submenu {
        position: static;
        display: block;
        width: 100%;
        border: 0;
        text-transform: none;
    }

    .submenu li {
        border: 0;
    }

    .submenu a {
        display: block;
        padding: .65rem;
    }

    .js .has-submenu:not(.submenu-open) .submenu {
        display: none;
    }

    .js .has-submenu.submenu-open .submenu {
        display: block;
    }
}

@media (max-width: 767px) {
    .home-main > section {
        padding-inline: 1rem;
    }

    .hero {
        min-height: 315px;
    }

    .hero-heading {
        padding-inline: 1.5rem;
    }

    .hero-location {
        margin-inline: 1.5rem;
    }

    .service-card {
        flex-basis: 100%;
        min-height: 190px;
    }

    .page-copy h2 {
        text-align: left;
    }

    .service-overview-grid {
        grid-template-columns: 1fr;
    }

    .contact-button {
        float: none;
        width: 100%;
        text-align: center;
    }

    .download-links {
        flex-wrap: wrap;
    }

    .download-links img {
        max-width: 150px;
        height: 45px;
    }

    .copy-block,
    .home-main h2 {
        text-align: center;
    }

    .arrow-link {
        margin-right: 0;
    }

    .footer-content {
        display: block;
        padding-inline: 1rem;
    }

    .footer-identity {
        justify-content: center;
        padding-bottom: .75rem;
    }

    .sitemap {
        padding-top: .75rem;
        border-top: 1px solid rgb(255 103 0 / 50%);
    }

    .title-banner {
        padding-block: 2rem;
    }

    .about-content {
        padding-inline: 1rem;
    }

    .about-content figure {
        float: none;
        width: min(75vw, 320px);
        margin: 0 auto 2rem;
    }

    .imprint-columns {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .contact-layout {
        grid-template-columns: 1fr;
    }

    .contact-details,
    .contact-form-section {
        padding: 2rem 1.5rem;
    }

    .contact-details {
        border-right: 0;
        border-bottom: 2px solid var(--orange);
    }

    .form-row {
        grid-template-columns: 1fr;
        gap: 0;
    }
}

@media (max-width: 359px) {
    .brand span {
        max-width: 125px;
        font-size: .8rem;
    }

    .sitemap {
        grid-template-columns: 1fr;
    }
}

/* Homepage refresh: clearer hierarchy, stronger calls to action, and calmer cards. */
:root {
    --surface: #f8fafc;
    --ink: #17324d;
    --content-width: min(1120px, calc(100% - 2rem));
}

body {
    color: var(--ink);
    background: var(--surface);
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid var(--orange);
    outline-offset: 3px;
}

.hero {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 480px;
    padding: 4rem 2rem 7rem !important;
    clip-path: none;
    background: var(--dark-blue);
}

.hero::after {
    position: absolute;
    inset: 0;
    z-index: -1;
    content: "";
    background: linear-gradient(90deg, rgb(0 32 64 / 90%), rgb(0 78 152 / 35%));
}

.hero-image {
    filter: saturate(.55) contrast(1.05);
}

.hero-heading {
    width: min(760px, 100%);
    margin: 0 auto;
    padding: 0;
    border: 0;
}

.hero-heading::before {
    display: none;
}

.hero-eyebrow,
.section-kicker {
    display: block;
    color: var(--orange);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.hero h1 {
    margin-top: .5rem;
    font-weight: 700;
    letter-spacing: -.03em;
}

.hero-heading p {
    max-width: 32rem;
    margin-top: .75rem;
    font-size: clamp(1.3rem, 2.5vw, 1.8rem);
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    margin-top: 1.75rem;
}

.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.9rem;
    padding: .65rem 1.1rem;
    border: 2px solid var(--orange);
    border-radius: .35rem;
    font-weight: 700;
    transition: transform .2s ease, background-color .2s ease, color .2s ease;
}

.button:hover,
.button:focus-visible {
    transform: translateY(-2px);
}

.button--primary {
    color: #fff;
    background: var(--orange);
}

.button--ghost {
    color: #fff;
    background: transparent;
}

.button--ghost:hover,
.button--ghost:focus-visible {
    color: var(--dark-blue);
    background: #fff;
}

.hero-location {
    width: min(760px, 100%);
    margin: 2rem auto 0;
    color: rgb(255 255 255 / 88%);
    font-size: 1rem;
}

.trust-strip {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    width: min(1000px, calc(100% - 2rem));
    margin: -2.75rem auto 0;
    padding: 1.25rem 1.5rem;
    position: relative;
    z-index: 2;
    border: 1px solid rgb(0 78 152 / 12%);
    border-radius: .65rem;
    background: #fff;
    box-shadow: 0 18px 40px rgb(15 41 64 / 12%);
}

.trust-strip div {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    padding: .25rem 1rem;
}

.trust-strip div + div {
    border-left: 1px solid #d7e1ea;
}

.trust-strip strong {
    color: var(--dark-blue);
    font-size: 1.05rem;
}

.trust-strip span {
    color: #52677a;
    font-size: .88rem;
}

.services-section,
.offer-section,
.process-section,
.contact-teaser {
    max-width: 1120px;
    margin-inline: auto;
}

.services-section {
    display: flow-root;
    margin-top: 2rem;
    padding: 3.5rem clamp(1.25rem, 4vw, 3rem) !important;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.offer-section {
    display: flow-root;
    margin-top: 2rem;
    padding: 3.5rem clamp(1.25rem, 4vw, 3rem) !important;
    border: 1px solid rgb(0 78 152 / 12%);
    border-radius: .75rem;
    background: #eaf3fa;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.offer-section .copy-block {
    max-width: 52rem;
    margin-top: .5rem;
}

.offer-section .arrow-link {
    margin-right: 0;
}

.section-kicker {
    margin: 0;
}

.home-main h2 {
    color: var(--dark-blue);
    font-weight: 700;
    letter-spacing: -.02em;
}

.section-intro {
    max-width: 46rem;
    margin: .75rem auto 0;
    color: #52677a;
    font-size: 1.1rem;
    text-align: center;
}

.service-grid {
    grid-template-columns: repeat(4, 1fr);
    display: grid;
    gap: 1rem;
    margin-top: 2rem;
}

.service-card {
    justify-content: flex-start;
    aspect-ratio: auto;
    min-height: 245px;
    padding: 1.5rem 1.2rem;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .65rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 8%);
    transition: transform .2s ease, box-shadow .2s ease;
}

.service-card h3 {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 3.4rem;
}

.service-card p {
    margin-top: .5rem;
}

.service-card:hover,
.service-card:focus-visible {
    transform: translateY(-5px);
    box-shadow: 0 16px 30px rgb(15 41 64 / 15%);
}

.service-card::before,
.service-card::after {
    display: none;
}

.service-icon {
    background-color: #eef5fb;
}

.service-overview-grid {
    grid-template-columns: repeat(2, minmax(280px, 1fr));
    gap: 1.25rem;
    padding: 2.5rem 1rem 4rem;
}

.service-overview-card {
    display: flex;
    flex-direction: column;
    min-height: 350px;
    padding: 1.5rem;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .65rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 8%);
    transition: transform .2s ease, box-shadow .2s ease;
}

.service-overview-card:hover,
.service-overview-card:focus-within {
    transform: translateY(-4px);
    box-shadow: 0 16px 30px rgb(15 41 64 / 15%);
}

.service-overview-heading {
    min-height: 3.5rem;
    padding-bottom: .75rem;
    border-bottom: 1px solid #d7e1ea;
}

.service-overview-heading h2 {
    color: var(--dark-blue);
    font-weight: 700;
}

.service-overview-card ul {
    flex: 1;
    margin: 1.25rem 0;
    color: #334e68;
}

.service-overview-card li::marker {
    color: var(--orange);
    content: "›  ";
}

.detail-button {
    position: static;
    align-self: flex-end;
    min-width: 11rem;
    margin-top: auto;
    text-align: center;
}

.process-section {
    margin-top: 2rem;
    padding: 3.5rem clamp(1.25rem, 4vw, 3rem) !important;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    color: var(--ink);
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
    text-align: center;
}

.process-section h2 {
    color: var(--dark-blue);
}

.service-area-section {
    margin-top: 2rem;
    padding: 3rem clamp(1.25rem, 4vw, 3rem) !important;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: linear-gradient(135deg, #fff, #eef5fb);
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.service-area-section h2 {
    color: var(--dark-blue);
    font-weight: 700;
}

.service-area-section p:last-child {
    max-width: 52rem;
    color: #334e68;
}

.breadcrumbs {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    margin-bottom: .75rem;
    color: #526b82;
    font-size: .9rem;
}

.breadcrumbs a {
    color: var(--dark-blue);
    text-decoration: underline;
    text-underline-offset: .2em;
}

.process-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    margin-top: 2rem;
    text-align: left;
}

.process-step {
    padding: 1.5rem;
    border-top: 3px solid var(--orange);
    border-radius: .5rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.process-step > span {
    color: var(--orange);
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .12em;
}

.process-step h3 {
    margin: .5rem 0 .35rem;
    color: var(--dark-blue);
    font-size: 1.15rem;
}

.process-step p {
    margin: 0;
    color: #52677a;
}

.about-teaser {
    width: var(--content-width) !important;
    max-width: 1120px;
    margin: 2rem auto 0;
    padding: 3.5rem clamp(1.25rem, 4vw, 3rem) !important;
    border-radius: .75rem;
    clip-path: none;
}

.about-teaser h2,
.about-teaser .section-kicker {
    color: #fff;
}

.about-teaser .copy-block {
    max-width: 48rem;
}

.about-teaser .arrow-link {
    margin-right: 0;
}

.contact-teaser {
    min-height: 0;
    margin-top: 2rem;
    padding: 3rem clamp(1.25rem, 4vw, 3rem) !important;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.contact-teaser .copy-block {
    max-width: 48rem;
}

.contact-teaser .arrow-link {
    float: right;
    width: auto;
    min-width: 14rem;
    margin: 2rem 0 0;
    white-space: nowrap;
}

.contact-teaser .arrow-link::after {
    content: none;
}

/* Shared CTA treatment based on the angular “Über mich” action. */
.arrow-link,
.detail-button,
.contact-button {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    width: max-content;
    max-width: 100%;
    min-height: 2.75rem;
    padding-right: 5rem;
    border: 0;
    border-radius: 0;
    clip-path: polygon(0 0, 0 100%, calc(100% - 4rem) 100%, calc(100% - 3rem) 50%, calc(100% - 4rem) 0, calc(100% - 3rem) 0, calc(100% - 2rem) 50%, calc(100% - 3rem) 100%, calc(100% - 1rem) 100%, 100% 50%, calc(100% - 1rem) 0);
    transition: transform .2s ease, filter .2s ease, box-shadow .2s ease;
}

.arrow-link {
    width: max-content;
    min-width: 13rem;
}

.arrow-link:hover,
.arrow-link:focus-visible,
.detail-button:hover,
.detail-button:focus,
.detail-button:focus-visible,
.contact-button:hover,
.contact-button:focus,
.contact-button:focus-visible {
    transform: translateY(-3px);
    filter: brightness(1.12);
    text-decoration: none;
    box-shadow: 0 12px 22px rgb(15 41 64 / 22%);
}

.button {
    border: 2px solid var(--orange);
    border-radius: .35rem;
    clip-path: none;
    transition: transform .2s ease, background-color .2s ease, color .2s ease;
}

.button:hover,
.button:focus-visible {
    transform: translateY(-2px);
}

.button--ghost:hover,
.button--ghost:focus-visible {
    color: var(--dark-blue);
    background: #fff;
}

/* Inner-page presentation aligned with the refreshed homepage. */
.service-page,
.services-page,
.about-page {
    margin-block: 2rem;
}

.service-page .page-hero,
.services-page .page-hero {
    margin-bottom: 1.25rem;
    border-radius: .75rem;
    box-shadow: 0 10px 25px rgb(15 41 64 / 10%);
}

.service-page .page-hero h1,
.services-page .page-hero h1 {
    padding: 1.25rem 1.5rem;
    font-size: clamp(1.6rem, 3vw, 2.2rem);
    font-weight: 700;
}

.service-detail {
    display: flow-root;
    margin-bottom: 2rem;
    padding: 2.25rem;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.service-detail h2 {
    margin-top: 0;
    color: var(--dark-blue);
    font-weight: 700;
}

.service-detail h3 {
    color: var(--dark-blue);
    font-size: 1.3rem;
}

.service-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .65rem 1rem;
    margin-block: 1.25rem;
    padding: 0;
    list-style: none;
}

.service-list li {
    position: relative;
    padding: .7rem .85rem .7rem 2rem;
    border: 1px solid #d7e1ea;
    border-radius: .4rem;
    background: #f8fafc;
}

.service-list li::before {
    position: absolute;
    top: .72rem;
    left: .75rem;
    color: var(--orange);
    content: "✓";
    font-weight: 700;
}

.service-list li + li {
    margin-top: 0;
}

.service-detail .contact-button {
    padding: .75rem 6rem .75rem 1rem;
    white-space: nowrap;
}

.detail-button:hover,
.detail-button:focus-visible,
.contact-button:hover,
.contact-button:focus-visible {
    color: var(--light-gray);
    background: var(--dark-blue);
}

.submit-button {
    transition: transform .2s ease, filter .2s ease, box-shadow .2s ease;
}

.submit-button:hover,
.submit-button:focus,
.submit-button:focus-visible {
    color: var(--light-gray);
    background: var(--dark-blue);
    transform: translateY(-2px);
    filter: brightness(1.12);
    box-shadow: 0 10px 18px rgb(15 41 64 / 18%);
}

.map-consent-message button {
    transition: transform .2s ease, background-color .2s ease, box-shadow .2s ease;
}

.map-consent-message button:hover,
.map-consent-message button:focus-visible {
    transform: translateY(-2px);
    box-shadow: 0 8px 16px rgb(0 0 0 / 18%);
}

.about-page {
    overflow: hidden;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 8%);
}

.about-page .title-banner {
    background: linear-gradient(135deg, var(--dark-blue), #0b64aa);
}

.about-page .about-content {
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(220px, .7fr);
    gap: 0 2.5rem;
    padding: 2.5rem;
    text-align: left;
}

.about-page .about-content p {
    grid-column: 1;
    margin: 0 0 1rem;
    color: #334e68;
}

.about-page .about-content figure {
    grid-row: 1 / span 3;
    grid-column: 2;
    width: 100%;
    margin: 0;
}

.contact-layout {
    min-height: 0;
    margin-block: 2rem;
    overflow: hidden;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 8%);
}

.contact-details,
.contact-form-section {
    padding: clamp(2rem, 4vw, 3.5rem);
}

.contact-details {
    background: linear-gradient(145deg, var(--dark-blue), #0b64aa);
}

.contact-details h1,
.contact-section-title {
    font-weight: 700;
    letter-spacing: -.02em;
}

.contact-links {
    line-height: 1.8;
}

.contact-links a:hover,
.contact-links a:focus-visible,
.large-map-link:hover,
.large-map-link:focus-visible {
    text-decoration-thickness: 2px;
    text-underline-offset: .2em;
}

.map-consent {
    border: 1px solid rgb(255 255 255 / 28%);
    border-radius: .6rem;
}

.contact-form-section > p {
    max-width: 38rem;
    color: #52677a;
}

.contact-form {
    display: flow-root;
}

.contact-form label {
    color: var(--dark-blue);
    font-weight: 700;
}

.contact-form input,
.contact-form select,
.contact-form textarea {
    border-color: #b8c7d5;
    border-radius: .4rem;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
    border-color: var(--dark-blue);
    box-shadow: 0 0 0 3px rgb(0 78 152 / 12%);
}

.contact-form select {
    cursor: pointer;
}

.contact-form textarea {
    min-height: 10rem;
}

.privacy-note {
    color: #52677a;
}

.submit-button {
    float: none;
    display: block;
    min-width: 10rem;
    margin: 1.25rem 0 0 auto;
    padding: .75rem 1.25rem;
    border-radius: .35rem;
    font-weight: 700;
}

.form-notice {
    border-radius: .5rem;
}

.form-notice ul {
    margin-bottom: 0;
    padding-left: 1.25rem;
}

.prices-page {
    margin-block: 2rem;
}

.prices-page .title-banner {
    border-radius: .75rem;
    background: linear-gradient(135deg, var(--dark-blue), #0b64aa);
    box-shadow: 0 10px 25px rgb(15 41 64 / 10%);
}

.prices-content {
    padding: 0;
}

.price-section {
    margin-top: 1.5rem;
    padding: 1.5rem;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 7%);
}

.price-section h2,
.price-note-card h2 {
    margin: 0 0 1rem;
    color: var(--dark-blue);
    font-size: 1.45rem;
    font-weight: 700;
    text-align: left;
    text-decoration: none;
}

.price-section h2::after,
.price-note-card h2::after {
    display: block;
    width: 3rem;
    height: 2px;
    margin-top: .5rem;
    content: "";
    background: var(--orange);
}

.table-scroll {
    border: 1px solid #d7e1ea;
    border-radius: .55rem;
}

.prices-page table {
    border-collapse: separate;
    border-spacing: 0;
}

.prices-page th {
    border: 0;
    color: #fff;
    background: var(--dark-blue);
}

.prices-page th,
.prices-page td {
    padding: .8rem 1rem;
}

.prices-page td {
    border: 0;
    border-bottom: 1px solid #e3eaf0;
}

.prices-page tbody tr:last-child td {
    border-bottom: 0;
}

.prices-page tbody tr:nth-child(even) {
    background: #f3f7fa;
}

.prices-page tbody tr:hover {
    background: #eaf3fa;
}

.prices-page td:last-child {
    color: var(--dark-blue);
    font-weight: 700;
}

.price-notes {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 1rem;
    margin-top: 1.5rem;
    text-align: left;
}

.price-note-card {
    padding: 1.5rem;
    border: 1px solid rgb(0 78 152 / 12%);
    border-radius: .75rem;
    background: #eaf3fa;
    box-shadow: 0 10px 25px rgb(15 41 64 / 6%);
}

.price-note-card p {
    color: #334e68;
}

.imprint-page,
.privacy-page {
    margin-block: 2rem;
    overflow: hidden;
    border: 1px solid rgb(0 78 152 / 14%);
    border-radius: .75rem;
    background: #fff;
    box-shadow: 0 10px 25px rgb(15 41 64 / 8%);
}

.imprint-page .title-banner,
.privacy-page .title-banner {
    background: linear-gradient(135deg, var(--dark-blue), #0b64aa);
}

.imprint-columns {
    gap: 1rem;
    padding: 2rem;
}

.imprint-columns > section {
    padding: 1.5rem;
    border: 1px solid rgb(0 78 152 / 12%);
    border-radius: .6rem;
    background: #eaf3fa;
}

.legal-page h2,
.legal-copy h2 {
    color: var(--dark-blue);
    font-weight: 700;
    text-decoration: none;
}

.legal-page h2 {
    font-size: 1.35rem;
}

.legal-page h2::after,
.legal-copy h2::after {
    display: block;
    width: 3rem;
    height: 2px;
    margin-top: .45rem;
    content: "";
    background: var(--orange);
}

.imprint-page > .legal-section {
    margin: 0 2rem 2rem;
    padding: 1.5rem;
    border: 1px solid #d7e1ea;
    border-radius: .6rem;
}

.legal-page a,
.privacy-page a {
    text-underline-offset: .18em;
}

.legal-page a:hover,
.legal-page a:focus-visible,
.privacy-page a:hover,
.privacy-page a:focus-visible {
    color: var(--dark-blue);
    text-decoration-thickness: 2px;
}

.legal-copy {
    width: min(100%, 82ch);
    margin: 0 auto;
    padding: 2.5rem;
}

.legal-copy h2 {
    margin-top: 2.5rem;
    font-size: 1.7rem;
}

.legal-copy h2:first-child {
    margin-top: 0;
}

.legal-copy h3 {
    margin-top: 1.75rem;
    color: var(--dark-blue);
    font-size: 1.3rem;
    font-weight: 700;
}

.legal-copy h4 {
    margin-top: 1.25rem;
    color: #334e68;
}

.legal-copy p,
.legal-copy li {
    color: #334e68;
}

.legal-copy li + li {
    margin-top: .45rem;
}

.legal-copy address {
    padding: 1rem 1.25rem;
    border-left: 3px solid var(--orange);
    background: #f3f7fa;
}

.legal-copy [id] {
    scroll-margin-top: 100px;
}

/* A compact, high-contrast footer that closes every page consistently. */
.site-footer {
    margin-top: 2rem;
    border-top: 3px solid var(--orange);
    color: #fff;
    background: linear-gradient(135deg, #003d78, #062c50);
}

.footer-content {
    width: min(1120px, calc(100% - 2rem));
    gap: 3rem;
    padding: 2.5rem 0 2rem;
}

.footer-identity {
    align-items: center;
    font-weight: 700;
}

.footer-identity img {
    box-sizing: content-box;
    padding: .25rem;
    border-radius: .25rem;
    background: #fff;
}

.sitemap {
    gap: 2rem;
    font-size: .95rem;
}

.sitemap h2 {
    color: #ffb27f;
    font-weight: 700;
    letter-spacing: .08em;
    text-decoration: none;
}

.sitemap li + li {
    margin-top: .4rem;
}

.sitemap a {
    color: #fff;
    text-underline-offset: .2em;
}

.sitemap a:hover,
.sitemap a:focus-visible {
    color: #ffb27f;
    text-decoration: underline;
}

.copyright {
    width: min(1120px, calc(100% - 2rem));
    padding: 1rem .5rem;
    border-top: 1px solid rgb(255 255 255 / 25%);
    color: rgb(255 255 255 / 80%);
}

@media (max-width: 900px) {
    .service-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .service-overview-grid {
        grid-template-columns: 1fr;
    }

    .price-notes {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .hero {
        min-height: 520px;
        padding-inline: 1.25rem !important;
    }

    .hero-actions,
    .button {
        width: 100%;
    }

    .trust-strip,
    .process-grid,
    .service-grid {
        grid-template-columns: 1fr;
    }

    .service-card h3 {
        min-height: 0;
    }

    .service-overview-grid {
        padding-inline: 0;
    }

    .service-overview-card {
        min-height: 0;
    }

    .detail-button {
        align-self: stretch;
    }

    .trust-strip {
        width: calc(100% - 2rem);
        margin-top: -1.5rem;
        padding: .75rem 1rem;
    }

    .trust-strip div {
        padding: .65rem .5rem;
    }

    .trust-strip div + div {
        border-top: 1px solid #d7e1ea;
        border-left: 0;
    }

    .services-section {
        width: calc(100% - 2rem) !important;
        padding: 2.5rem 1.25rem !important;
    }

    .offer-section {
        width: calc(100% - 2rem) !important;
        padding: 2.5rem 1.25rem !important;
    }

    .process-section {
        width: calc(100% - 2rem) !important;
        padding: 2.5rem 1.25rem !important;
    }

    .about-teaser {
        width: calc(100% - 2rem) !important;
        padding: 2.5rem 1.25rem !important;
    }

    .contact-teaser {
        width: calc(100% - 2rem) !important;
        padding: 2.5rem 1.25rem !important;
    }

    .contact-teaser .arrow-link {
        float: none;
        width: 100%;
    }

    .service-page,
    .services-page,
    .about-page {
        width: calc(100% - 2rem);
        margin-block: 1rem;
    }

    .service-detail {
        padding: 1.5rem 1.25rem;
    }

    .service-detail .contact-button {
        padding: .75rem 3.5rem .75rem 1rem;
        white-space: normal;
    }

    .service-list {
        grid-template-columns: 1fr;
    }

    .about-page .about-content {
        grid-template-columns: 1fr;
        padding: 1.5rem 1.25rem;
    }

    .about-page .about-content figure,
    .about-page .about-content p {
        grid-row: auto;
        grid-column: 1;
    }

    .about-page .about-content figure {
        width: min(75vw, 320px);
        margin: 0 auto 2rem;
    }

    .prices-page {
        width: calc(100% - 2rem);
        margin-block: 1rem;
    }

    .price-section,
    .price-note-card {
        padding: 1.25rem;
    }
}

@media (max-width: 767px) {
    .footer-content {
        padding-block: 2rem;
    }

    .footer-identity {
        justify-content: flex-start;
    }

    .sitemap {
        margin-top: 1rem;
        padding-top: 1.25rem;
        border-top-color: rgb(255 255 255 / 25%);
    }

    .detail-button,
    .contact-button {
        width: 100%;
        white-space: normal;
    }

    .contact-form-section {
        order: -1;
        border-bottom: 2px solid var(--orange);
    }

    .contact-details {
        border-bottom: 0;
    }

    .contact-layout {
        width: calc(100% - 2rem);
        margin-block: 1rem;
    }

    .submit-button {
        width: 100%;
    }

    .imprint-page,
    .privacy-page {
        width: calc(100% - 2rem);
        margin-block: 1rem;
    }

    .imprint-columns {
        padding: 1.25rem;
    }

    .imprint-page > .legal-section {
        margin: 0 1.25rem 1.25rem;
        padding: 1.25rem;
    }

    .legal-copy {
        padding: 1.5rem 1.25rem;
    }
}
