/* =========================================================
   Travel Hub
   Gemeinsame Gestaltung für Reise-, Kontinent- und Länderseiten
   ========================================================= */


/* ---------------------------------------------------------
   Grundlayout und Farbvariablen
   --------------------------------------------------------- */

.travel-hub-page {
    --travel-bg: #07101f;
    --travel-panel: rgba(10, 20, 36, 0.92);
    --travel-panel-soft: rgba(13, 27, 46, 0.78);
    --travel-border: rgba(255, 255, 255, 0.10);
    --travel-text: #f4f7fb;
    --travel-muted: #a8b6ca;
    --travel-accent: #d8a85f;

    position: relative;
    min-height: 100vh;
    overflow: hidden;

    padding: 118px 0 72px;

    color: var(--travel-text);

    background:
        radial-gradient(
            circle at 15% 10%,
            rgba(20, 74, 116, 0.22),
            transparent 34%
        ),
        linear-gradient(
            180deg,
            #07101f 0%,
            #050b15 100%
        );
}

.travel-hub-page *,
.travel-hub-page *::before,
.travel-hub-page *::after {
    box-sizing: border-box;
}


/* ---------------------------------------------------------
   Seitenbreite
   --------------------------------------------------------- */

.travel-hub-shell {
    width: min(1460px, calc(100% - 40px));
    margin: 0 auto;
}


/* ---------------------------------------------------------
   Hero-Bereich
   --------------------------------------------------------- */

.travel-hub-hero {
    position: relative;
    isolation: isolate;

    display: flex;
    align-items: center;

    min-height: 470px;
    margin-bottom: 34px;
    padding: clamp(32px, 5vw, 72px);

    overflow: hidden;

    border: 1px solid var(--travel-border);
    border-radius: 28px;

    background: #06101e;

    box-shadow:
        0 28px 80px rgba(0, 0, 0, 0.30);
}


/*
   Hintergrundkarte

   Die Karte wird über die PHP-Seite gesetzt:

   style="--travel-map:url('/assets/img/maps/world-map.jpg')"
*/

.travel-hub-hero::before {
    content: "";

    position: absolute;
    inset: 0;

    z-index: -2;

    background-image: var(--travel-map);
    background-repeat: no-repeat;
    background-position: 78% center;
    background-size: min(72%, 1050px) auto;

    opacity: 0.48;

    filter:
        brightness(1.22)
        contrast(1.08)
        saturate(0.85);

    pointer-events: none;
}


/*
   Verlauf schützt den Text auf der linken Seite,
   ohne die Karte rechts zu stark abzudunkeln.
*/

.travel-hub-hero::after {
    content: "";

    position: absolute;
    inset: 0;

    z-index: -1;

    background:
        linear-gradient(
            90deg,
            rgba(4, 12, 24, 0.99) 0%,
            rgba(4, 12, 24, 0.94) 34%,
            rgba(4, 12, 24, 0.58) 56%,
            rgba(4, 12, 24, 0.15) 100%
        );

    pointer-events: none;
}


/* ---------------------------------------------------------
   Hero-Texte
   --------------------------------------------------------- */

.travel-hub-copy {
    position: relative;
    z-index: 1;

    max-width: 680px;
}

.travel-hub-kicker {
    margin: 0 0 18px;

    color: var(--travel-accent);

    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.travel-hub-title {
    max-width: 760px;
    margin: 0;

    color: #ffffff;

    font-size: clamp(3rem, 6vw, 6rem);
    font-weight: 800;
    line-height: 0.98;
    letter-spacing: -0.045em;
}

.travel-hub-rule {
    width: 74px;
    height: 3px;

    margin: 28px 0 24px;

    border-radius: 999px;

    background: var(--travel-accent);
}

.travel-hub-intro {
    max-width: 650px;
    margin: 0;

    color: var(--travel-muted);

    font-size: clamp(1rem, 1.4vw, 1.24rem);
    line-height: 1.85;
}


/* ---------------------------------------------------------
   Kartenraster
   --------------------------------------------------------- */

.travel-hub-grid {
    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap: 20px;

    align-items: stretch;
}


/* ---------------------------------------------------------
   Einzelne Kontinent-Karte
   --------------------------------------------------------- */

.travel-hub-card {
    position: relative;

    display: flex;
    flex-direction: column;

    min-width: 0;
    min-height: 470px;

    overflow: hidden;

    border: 1px solid var(--travel-border);
    border-radius: 22px;

    color: inherit;
    text-decoration: none;

    background:
        linear-gradient(
            180deg,
            rgba(11, 25, 43, 0.95),
            rgba(7, 16, 30, 0.98)
        );

    box-shadow:
        0 18px 44px rgba(0, 0, 0, 0.24);

    transition:
        transform 0.24s ease,
        border-color 0.24s ease,
        box-shadow 0.24s ease;
}

.travel-hub-card:hover {
    transform: translateY(-6px);

    border-color:
        rgba(216, 168, 95, 0.42);

    box-shadow:
        0 26px 62px rgba(0, 0, 0, 0.34);

    text-decoration: none;
}

.travel-hub-card.is-disabled {
    opacity: 0.62;
    pointer-events: none;
}


/* ---------------------------------------------------------
   Kartenbild

   Wichtig:
   Feste Höhe für alle Bilder.
   Dadurch liegt Afrika exakt auf derselben Höhe wie Europa,
   Asien und Amerika.
   --------------------------------------------------------- */

.travel-hub-card-media {
    position: relative;

    width: 100%;
    height: 235px;
    min-height: 235px;

    flex: 0 0 235px;

    overflow: hidden;

    background:
        linear-gradient(
            135deg,
            rgba(216, 168, 95, 0.20),
            rgba(11, 36, 62, 0.55)
        ),
        #10233a;
}

.travel-hub-card-media img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center center;

    transition:
        transform 0.35s ease;
}

.travel-hub-card:hover
.travel-hub-card-media img {
    transform: scale(1.035);
}

.travel-hub-card-media::after {
    content: "";

    position: absolute;
    inset: 0;

    background:
        linear-gradient(
            180deg,
            transparent 52%,
            rgba(5, 12, 23, 0.68) 100%
        );

    pointer-events: none;
}


/* ---------------------------------------------------------
   Karteninhalt
   --------------------------------------------------------- */

.travel-hub-card-body {
    display: flex;
    flex: 1;
    flex-direction: column;

    padding: 24px;
}

.travel-hub-card h2 {
    margin: 0 0 8px;

    color: #ffffff;

    font-size: clamp(1.65rem, 2.1vw, 2.25rem);
    line-height: 1.1;
}

.travel-hub-meta {
    margin: 0 0 16px;

    color: var(--travel-accent);

    font-size: 0.9rem;
    font-weight: 700;
}

.travel-hub-card p {
    margin: 0;

    color: var(--travel-muted);

    line-height: 1.7;
}


/* ---------------------------------------------------------
   Kartenbutton
   --------------------------------------------------------- */

.travel-hub-card-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-height: 44px;

    margin-top: auto;
    padding: 0 16px;

    border:
        1px solid rgba(216, 168, 95, 0.55);

    border-radius: 12px;

    color: #f6d6a0;

    font-weight: 800;

    transition:
        background 0.2s ease,
        color 0.2s ease;
}

.travel-hub-card:hover
.travel-hub-card-action {
    color: #07101f;
    background: var(--travel-accent);
}


/* ---------------------------------------------------------
   Zusammenfassung und Statistiken
   --------------------------------------------------------- */

.travel-hub-summary {
    display: grid;

    grid-template-columns:
        1.35fr repeat(3, minmax(120px, 0.45fr));

    gap: 18px;
    align-items: center;

    margin-top: 26px;
    padding: 22px 26px;

    border: 1px solid var(--travel-border);
    border-radius: 20px;

    background: var(--travel-panel-soft);
}

.travel-hub-quote {
    margin: 0;

    color: #d7e0ec;

    font-size: 1rem;
    line-height: 1.65;
}

.travel-hub-stat {
    padding-left: 20px;

    border-left:
        1px solid rgba(255, 255, 255, 0.10);
}

.travel-hub-stat strong {
    display: block;

    color: var(--travel-accent);

    font-size: 1.8rem;
    line-height: 1;
}

.travel-hub-stat span {
    display: block;

    margin-top: 6px;

    color: var(--travel-muted);

    font-size: 0.86rem;
}



/* ---------------------------------------------------------
   Raster für Länderseiten

   Desktop:
   3 Kacheln pro Zeile

   Tablet:
   2 Kacheln pro Zeile

   Smartphone:
   1 Kachel pro Zeile
   --------------------------------------------------------- */

.travel-hub-grid--places {
    grid-template-columns:
        repeat(3, minmax(0, 1fr));
}


/* =========================================================
   Tablet
   ========================================================= */

@media (max-width: 1180px) {

    .travel-hub-grid {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .travel-hub-grid--places {
        grid-template-columns:
            repeat(2, minmax(0, 1fr));
    }

    .travel-hub-card-media {
        height: 240px;
        min-height: 240px;
        flex-basis: 240px;
    }

    .travel-hub-summary {
        grid-template-columns:
            1fr repeat(3, minmax(100px, 0.34fr));
    }
}

@media (max-width: 1180px) {

    .travel-destination-layout {
        grid-template-columns: 1fr;
    }

    .travel-gallery-card-media {
        height: 300px;
    }
}

/* =========================================================
   Smartphone
   ========================================================= */

@media (max-width: 760px) {

    .travel-hub-page {
        padding-top: 92px;
    }

    .travel-hub-shell {
        width: min(
            calc(100% - 24px),
            1460px
        );
    }

    .travel-hub-hero {
        min-height: 430px;
        padding: 30px 24px;
    }

    .travel-hub-hero::before {
        background-position:
            70% 25%;

        background-size:
            auto 82%;

        opacity: 0.30;

        filter:
            brightness(1.18)
            contrast(1.05)
            saturate(0.80);
    }

    .travel-hub-hero::after {
        background:
            linear-gradient(
                180deg,
                rgba(4, 12, 24, 0.90) 0%,
                rgba(4, 12, 24, 0.82) 45%,
                rgba(4, 12, 24, 0.94) 100%
            );
    }

    .travel-hub-title {
        font-size:
            clamp(2.7rem, 14vw, 4.25rem);
    }

    .travel-hub-grid {
        grid-template-columns: 1fr;
    }

    .travel-hub-grid--places {
        grid-template-columns: 1fr;
    }

    .travel-hub-card {
        min-height: 0;
    }

    .travel-hub-card-media {
        height: 225px;
        min-height: 225px;
        flex-basis: 225px;
    }

    .travel-hub-summary {
        grid-template-columns:
            1fr 1fr;
    }

    .travel-hub-quote {
        grid-column: 1 / -1;
    }

    .travel-hub-stat {
        padding-left: 0;
        border-left: 0;
    }
    .travel-hub-grid--single {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 760px) {

    .travel-gallery-card,
    .travel-info-panel {
        border-radius: 20px;
    }

    .travel-gallery-card-media {
        height: 230px;
    }
}

/* =========================================================
   Sehr kleine Smartphones
   ========================================================= */

@media (max-width: 420px) {

    .travel-hub-hero {
        min-height: 450px;
        border-radius: 20px;
    }

    .travel-hub-card {
        border-radius: 18px;
    }

    .travel-hub-card-media {
        height: 205px;
        min-height: 205px;
        flex-basis: 205px;
    }

    .travel-hub-card-body {
        padding: 20px;
    }
}

/* ---------------------------------------------------------
   Einzelne Kachel auf Kontinentseiten
   --------------------------------------------------------- */

.travel-hub-grid--single {
    grid-template-columns: minmax(300px, 520px);
    justify-content: start;
}

.travel-hub-grid--single .travel-hub-card {
    width: 100%;
}


/* ---------------------------------------------------------
   Zurück-Link
   --------------------------------------------------------- */

.travel-hub-back {
    margin-top: 30px;
}

.travel-hub-back a {
    display: inline-flex;
    align-items: center;
    justify-content: center;

    min-height: 44px;
    padding: 0 18px;

    border: 1px solid var(--travel-border);
    border-radius: 12px;

    color: var(--travel-text);
    background: rgba(255, 255, 255, 0.04);

    font-size: 0.92rem;
    font-weight: 700;
    text-decoration: none;

    transition:
        background 0.2s ease,
        border-color 0.2s ease,
        transform 0.2s ease;
}

.travel-hub-back a:hover {
    transform: translateY(-2px);

    border-color: rgba(216, 168, 95, 0.45);

    color: #ffffff;
    background: rgba(216, 168, 95, 0.10);

    text-decoration: none;
}
/* ---------------------------------------------------------
   Stadt- und Projektseiten
   --------------------------------------------------------- */

.travel-destination-layout {
    display: grid;
    grid-template-columns:
        minmax(0, 1.45fr)
        minmax(320px, 0.75fr);

    gap: 22px;
    align-items: stretch;
}


/* ---------------------------------------------------------
   Große Galerie-Karte
   --------------------------------------------------------- */

.travel-gallery-card {
    display: flex;
    flex-direction: column;

    min-width: 0;
    overflow: hidden;

    border: 1px solid var(--travel-border);
    border-radius: 24px;

    color: inherit;
    text-decoration: none;

    background:
        linear-gradient(
            180deg,
            rgba(11, 25, 43, 0.96),
            rgba(7, 16, 30, 0.99)
        );

    box-shadow:
        0 20px 50px rgba(0, 0, 0, 0.26);

    transition:
        transform 0.24s ease,
        border-color 0.24s ease,
        box-shadow 0.24s ease;
}

.travel-gallery-card:hover {
    transform: translateY(-5px);

    border-color:
        rgba(216, 168, 95, 0.42);

    box-shadow:
        0 28px 66px rgba(0, 0, 0, 0.34);

    text-decoration: none;
}

.travel-gallery-card-media {
    position: relative;

    height: 330px;
    overflow: hidden;

    background: #10233a;
}

.travel-gallery-card-media img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;
}

.travel-gallery-card-media::after {
    content: "";

    position: absolute;
    inset: 0;

    background:
        linear-gradient(
            180deg,
            transparent 50%,
            rgba(5, 12, 23, 0.72) 100%
        );

    pointer-events: none;
}

.travel-gallery-card-body {
    display: flex;
    flex: 1;
    flex-direction: column;

    padding: clamp(24px, 3vw, 36px);
}

.travel-gallery-card h2 {
    margin: 0 0 18px;

    color: #ffffff;

    font-size:
        clamp(2rem, 3vw, 3rem);

    line-height: 1.08;
}

.travel-gallery-card-body > p {
    margin: 0;

    color: var(--travel-muted);

    line-height: 1.75;
}

.travel-gallery-label {
    margin-bottom: 10px !important;

    color: var(--travel-accent) !important;

    font-size: 0.88rem;
    font-weight: 800;
    letter-spacing: 0.04em;
}


/* ---------------------------------------------------------
   Informationsbereich
   --------------------------------------------------------- */

.travel-info-panel {
    padding: clamp(26px, 3vw, 38px);

    border: 1px solid var(--travel-border);
    border-radius: 24px;

    background:
        linear-gradient(
            180deg,
            rgba(13, 27, 46, 0.84),
            rgba(8, 17, 31, 0.94)
        );

    box-shadow:
        0 20px 50px rgba(0, 0, 0, 0.22);
}

.travel-info-panel p {
    margin: 0 0 22px;

    color: var(--travel-muted);

    line-height: 1.78;
}

.travel-info-panel p:last-child {
    margin-bottom: 0;
}

.travel-info-panel
.travel-hub-kicker {
    color: var(--travel-accent);

    font-size: 1rem;
    letter-spacing: 0.10em;
}