/*
groen: 56baa8
oranje: f48e23
blauw: 225064

*/

/* Corner radius for the whole app. Bootstrap components read these
   variables, so this is the one place to change how round things look. */
:root {
    --bs-border-radius: 8px;
    --bs-border-radius-sm: 6px;
    --bs-border-radius-lg: 12px;
    --bs-border-radius-xl: 18px;
}

a, a:visited {
    color:#225064;
}
.navbar-brand {
        font-weight: bold;
    }
    .card-header {
        background: linear-gradient(135deg, #225064 0%, #56baa8 100%);
        color: white;
    }
    .btn-primary {
        background: linear-gradient(135deg, #225064 0%, #56baa8 100%);
        border: none;
    }
    .btn-primary:hover {
        background: linear-gradient(135deg, #56baa8 0%, #225064 100%);
}

body, p {
    font-family: "apparat-light", sans-serif;
    font-weight: 400;
    font-style: normal;
}
a.nav-link {
    font-family: "apparat", sans-serif;
font-weight: 600;
font-style: normal;
color: #ffffff;
text-transform:none;
font-family: "apparat-light", sans-serif;
font-weight: 400;
font-style: normal;
}
.navbar-brand {
 background-image: url("/img/hitbingo-logo.svg");
 background-size: 210px 65px;
 width: 220px;
 height: 60px;
 background-position: 0;
 background-repeat: no-repeat;
}


.navbar-brand img {
    display: none;
} 
.sticky-top {
    background-color: #f48e23bf !important;
    background-color: #F7AB63 !important;
}
.accordion-button {
    font-size: 1.4rem;
}
.accordion-body {
    background-color: #f7ab631c;
}

@media (min-width: 992px) {
    .navbar-expand-lg {
        height: 90px;
    }
    .nav-link {
        font-size: 1.4rem;
    }
    
}
@media (max-width: 992px) {
.container, .container-md, .container-sm {
        max-width: 980px;
    }

}
@media (max-width: 1200px) {
    .nav-link {
        font-size: 1.2rem;
    }
}

.alert-info {
    --bs-alert-color: #225064;
    --bs-alert-bg: #56baa8;
    --bs-alert-border-color: #56baa8;
    --bs-alert-link-color: ##225064;
}

/* ---------------------------------------------------------------------------
   Homepage hero: party photo, mascot, and a panel that keeps the text legible
   over it. See the responsive rules at the bottom of this block — on phones
   the bear moves above the panel instead of overlapping it.
   --------------------------------------------------------------------------- */

.home {
    /* Break out of main.container by exactly its own padding, so the hero is
       flush with the container edges without ever exceeding the viewport.
       A fixed -15px was 3px too much per side and caused horizontal scroll. */
    margin: -1.5rem calc(-.5 * var(--bs-gutter-x, 1.5rem)) 3rem;
    padding: 3rem calc(.5 * var(--bs-gutter-x, 1.5rem));
    /* Sits flush under the header, so only the bottom corners round. */
    border-radius: 0 0 var(--bs-border-radius-lg) var(--bs-border-radius-lg);
    overflow: hidden;
    background-image: url("/img/startpagina2.webp");
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
    min-height: 400px;
}

.hero-stage {
    display: flex;
    align-items: center;
    justify-content: center;
    /* Reserve the space the bear sticks out into, so a bigger bear never
       runs past the hero's left edge. */
    padding-left: 16.5rem;
}

/* Desktop: the bear is lifted out of the panel and set against its left edge,
   bottom-aligned, so he reads as holding the panel up rather than floating
   beside it. He stays in the markup inside the panel for the phone layout. */
.hero-panel {
    position: relative;
    background: rgba(34, 80, 100, .92);
    border-radius: 1.25rem;
    /* Left padding keeps the copy clear of the bear's raised arm. */
    padding: 2.5rem 2.5rem 2.25rem 6.5rem;
    max-width: 42rem;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .25);
}

.hero-bear {
    position: absolute;
    /* Body sits left of the panel, arm reaching across the edge — he holds
       the panel rather than standing beside it. */
    left: -16.5rem;
    bottom: -1.5rem;
    width: 22rem;
    height: auto;
    z-index: 2;
    filter: drop-shadow(0 8px 18px rgba(0, 0, 0, .4));
    pointer-events: none;
}

.hero-panel h1 {
    color: #ffffff;
    font-weight: 700;
    font-size: clamp(1.6rem, 3.2vw, 2.4rem);
    line-height: 1.2;
    margin-bottom: 1rem;
}

.hero-panel .hero-lead {
    color: #f48e23;
    font-size: clamp(1rem, 1.4vw, 1.15rem);
    line-height: 1.55;
    margin-bottom: .85rem;
}

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

.btn-hero,
.btn-hero:link,
.btn-hero:visited {
    background: #ffffff;
    color: #225064;
    font-weight: 700;
    border: 2px solid #ffffff;
    padding: .6rem 1.4rem;
}

.btn-hero:hover,
.btn-hero:focus {
    background: #f48e23;
    border-color: #f48e23;
    color: #ffffff;
}

.btn-hero-ghost,
.btn-hero-ghost:link,
.btn-hero-ghost:visited {
    background: transparent;
    color: #ffffff;
    font-weight: 600;
    border: 2px solid rgba(255, 255, 255, .7);
    padding: .6rem 1.4rem;
}

.btn-hero-ghost:hover,
.btn-hero-ghost:focus {
    background: rgba(255, 255, 255, .15);
    border-color: #ffffff;
    color: #ffffff;
}

/* Row holding the bear and the buttons. On desktop the bear is positioned out
   of flow, so this row is effectively just the buttons. */
.hero-footer {
    display: flex;
    align-items: center;
    gap: 1rem;
}

/* Tablet: same idea, smaller. */
@media (max-width: 991.98px) {
    .hero-stage {
        padding-left: 9rem;
    }
    .hero-bear {
        width: 15.5rem;
        left: -9rem;
    }
    .hero-panel {
        padding: 2rem 1.75rem 1.75rem 6.5rem;
    }
}

/* Phone: the bear moves back into the flow, standing next to the buttons
   inside the panel. That keeps him grounded instead of floating above it,
   and saves the vertical space a stacked mascot would cost. */
@media (max-width: 767.98px) {
    .home {
        padding: 2rem calc(.5 * var(--bs-gutter-x, 1.5rem)) 2.5rem;
    }
    .hero-stage {
        flex-direction: column;
        padding-left: 0;
    }
    .hero-panel {
        padding: 1.75rem 1.5rem 1.5rem;
        width: 100%;
    }
    .hero-bear {
        position: static;
        width: 9.5rem;
        /* Never let him crowd out the buttons on very narrow phones. */
        max-width: 36%;
        flex: 0 0 auto;
        /* Sits just above the panel's bottom edge, level with the buttons. */
        margin-bottom: 0;
        align-self: flex-end;
        filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .35));
    }
    .hero-actions {
        flex: 1 1 auto;
        flex-direction: column;
        margin-top: 0;
    }
    .hero-actions .btn {
        width: 100%;
    }
}

.text-primary {
    color: #56baa8 !important;
}

h1, h2, h3 {
  font-family: "apparat", sans-serif;
font-weight: 600;
font-style: normal;  
} 
h1 {
    color: #56baa8;
}
h2, h3 {
    color:#f48e23
}

.lead {
      font-family: "apparat", sans-serif;
    font-weight: 600;
    font-style: normal;
    font-size: 1.45rem;
    color: #fff;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
    background-color: #ffffff61;
    padding: 12px 4px;
    border-radius: 8px;
    text-wrap: balance;
}
.lead2 {
      font-family: "apparat", sans-serif;
    font-weight: 600;
    font-style: normal;
    font-size: 1.45rem;
    color: #225064;

}

.hero-section .lead {
      font-family: "apparat", sans-serif;
    font-weight: 600;
    font-style: normal;
    font-size: 1.45rem;
    color: #fff;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
    background-color: #F7AB6361;
    padding: 12px 0;
    border-radius: 8px;
}
.bg-light {
    background-color: #56baa838 !important;
    border-radius: var(--bs-border-radius-lg);
}

.alert-success {
    background-color: #fff;
    border: 3px solid #56baa8 ;
}
.card-body {
    background-color: #56baa81f;
    border: none;
    /* This background sat square on top of the card's rounded corners, which
       is why every card in the app looked sharp-cornered. Follow the card. */
    border-radius: inherit;
}

/* Only the outer corners should round: a body under a header keeps its top
   square, a body above a footer keeps its bottom square. */
.card-body:not(:first-child) {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}
.card-body:not(:last-child) {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.card {
    border: 1px solid #56baa81f;
}
.card .card-body .card .card-body {
    background-color: #fff;
        background-color: #56baa81f;

}
.card .card-body hr {
    color: #225064;
}
.card-footer {
    background-color: #56baa84b !important;
    border-top: none;
}

.btn, .btn:hover {
    border-color: #225064;
    color: #225064;

}
.btn:hover {
    background-color: #225064;
    color: #fff;
}
.btn-primary {
    color: #fff;
}
.btn-secondary {
    color: #ccc;
}
.btn-outline-danger:hover {
    background-color: red;
}
.donation .btn {
        color: #225064;
}

.download-view .btn, .save-to-spotify .btn {
 color:#fff !important;
}
.save-to-spotify button.btn {
 color:#225064;
}
.download-view .btn.disabled, .download-view .btn:disabled, .download-view fieldset:disabled .btn {
    color: var(--bs-btn-disabled-color);
    background-color: #56baa8;
    border-color: #56baa8;
}
#donationSection .card-body {
    background-color:#56baa84b ;
}
#donationSection .btn {
    border: none;
}
 #recommendationAlert {
    color: #fff;
}
#spotifySection .alert {
    color: #56baa8;
}
.bingo-beheer .btn {
    background-color: #fff;
    color:#225064 !important;
    border-color: #fff;
}
.bingo-beheer .btn-primary {
    color: #fff !important;
}
.zoek-spotify {
    text-align: left !important;
}
.save-spotify, .zoek-spotify .btn {
    color:#fff
}
.placeholder {
    background-color: #fff;
}
.gratis, .werkt {
    border: none;
        color: #fff;

}
.gratis {
    background-color: #56baa8;
}
.werkt {
    background-color: #f48e23;
}
.bg-dark {
    background-color: #225064 !important;
}

.bi {
    color: #f48e23 !important;
}
.werkt .bi {
    color: #fff !important;
}
.step-number {
    background-color: #f48e23 !important;
}
footer p.text-muted {
    color:#f48e23 !important;
}
.card.border-primary {
        border: 1px solid #fc0 !important;
        border: none !important;
} 
.bg-primary {
    background-color: #225064 !important;
}
nav.bg-primary {
    background-color: #F7AB63 !important;
}
.navbar-nav .nav-item {
    padding-right: 10px;
}
.wit {
    color:#fff !important;
}
.donker {
    color:#225064 !important;
}
.knop-rechts {
    text-align: right;
}
.bcards .card-body {
    background-color: #fff;
}

.accordion-button:not(.collapsed) {
    background-color: #56baa81f;
} 
#spotifyImportBtn {
    color:#fff;
}
@media (max-width: 768px) {

    .card-body {
        padding: 5px;
    }
    .bingo-statistics {
        display: none;
    }
    .bingo-edit .form-text {
        display: none;
    }
    .bingo-edit .knoppen a {
        margin-bottom: 4px;
        float: right;
        margin-right: 0 !important;
        margin-left: 4px;
    }
    .bingo-edit > div > h4 > span {
        display: none;
    }
    #songList .year {
        display: none;
    }
    .cta .btn {
        margin-right: 0 !important;
        margin-bottom: 10px;
    }
    .p-5 {
    padding: 1rem !important;
    }
}

#spotifySearchResults .btn, #spotifySearchModal .btn {
    color: #fff;
}
#deleteModal .modal-content {
    border: 3px solid #f48e23;
}
#deleteModal .modal-content .btn {
    color: #fff;
    border: none;
}

.standard-playlists .card-header .text-muted, .standard-playlist .card-header .text-muted {
    color: #fff !important;
}
.features a {
    color: #225064;
    text-decoration: none;
    border-bottom: 1px solid #56baa8;
}
.inloggen a {
    color: #225064;
}
.bg-info {
    background-color: #56baa8 !important;
}
.card-header .btn {
    color: #fff;
}

@media (min-width: 1800px) {
    .container, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl {
        max-width: 1720px;
    }
}

/* Spotify import messages */
.spotify-fail {
    background-color: #f8d7da;
    border-color: #dc3545 !important;
    color: #721c24;
}

.spotify-fail .bi {
    color: #dc3545 !important;
}

/* Christmas tree icon - green */
.bi.christmas-tree {
    color: #198754 !important;
}
/* ---------------------------------------------------------------------------
   Legal pages (voorwaarden / privacy / cookiebeleid)
   Long-form reading: narrow measure, generous spacing, calm typography.
   --------------------------------------------------------------------------- */

.legal-page {
    max-width: 46rem;
    margin: 0 auto;
    padding-bottom: 3rem;
}

.legal-page h1 {
    color: #225064;
    margin-bottom: .25rem;
}

.legal-updated {
    color: #6c757d;
    font-size: .9rem;
    margin-bottom: 2rem;
}

.legal-intro {
    font-size: 1.1rem;
    line-height: 1.7;
    border-left: 4px solid #56baa8;
    padding-left: 1rem;
    margin-bottom: 2.5rem;
}

.legal-page h2 {
    color: #225064;
    font-size: 1.45rem;
    margin-top: 2.5rem;
    margin-bottom: .75rem;
    padding-bottom: .4rem;
    border-bottom: 1px solid #e5e9ec;
}

.legal-page h3 {
    font-size: 1.1rem;
    font-weight: 700;
    margin-top: 1.75rem;
    margin-bottom: .5rem;
}

.legal-page p,
.legal-page li {
    line-height: 1.7;
}

.legal-page table {
    width: 100%;
    margin: 1rem 0 1.5rem;
    font-size: .95rem;
}

.legal-page table th {
    background: #f4f7f8;
    color: #225064;
    font-weight: 700;
    border-bottom: 2px solid #dde4e7;
    padding: .6rem .75rem;
    text-align: left;
}

.legal-page table td {
    border-bottom: 1px solid #e9edef;
    padding: .6rem .75rem;
    vertical-align: top;
}

/* Wide tables must scroll inside their own box, never the page */
.legal-table-wrap {
    overflow-x: auto;
}

.legal-callout {
    background: #f4f7f8;
    border-radius: .5rem;
    padding: 1rem 1.25rem;
    margin: 1.5rem 0;
}

.legal-page code {
    background: #f4f7f8;
    color: #225064;
    padding: .15rem .35rem;
    border-radius: .25rem;
    font-size: .9em;
}

/* ---------------------------------------------------------------------------
   Cookie consent banner
   Bottom sheet, out of the way but not dismissible by ignoring it.
   --------------------------------------------------------------------------- */

.cookie-banner {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1080; /* above Bootstrap modals' backdrop-free content, below toasts */
    background: #ffffff;
    border-top: 3px solid #56baa8;
    box-shadow: 0 -4px 20px rgba(0, 0, 0, .12);
    padding: 1rem 1.25rem;
}

.cookie-banner-inner {
    max-width: 68rem;
    margin: 0 auto;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.cookie-banner-text {
    flex: 1 1 24rem;
    min-width: 0;
}

.cookie-banner-text strong {
    color: #225064;
    display: block;
    margin-bottom: .2rem;
}

.cookie-banner-text p {
    font-size: .9rem;
    line-height: 1.5;
    color: #495057;
}

.cookie-banner-actions {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
}

@media (max-width: 575.98px) {
    .cookie-banner-actions {
        width: 100%;
    }
    .cookie-banner-actions .btn {
        flex: 1 1 auto;
    }
}

/* Footer: legal links must stay readable on the dark bar. The Sitemap link
   deliberately stays muted — it exists for search engines, not for people. */
.footer-legal-link,
.footer-legal-link:link,
.footer-legal-link:visited {
    color: #ffffff !important;
    font-weight: 600;
}

.footer-legal-link:hover,
.footer-legal-link:focus {
    color: #f48e23 !important;
    text-decoration: underline !important;
}
