/* ==========================================================================
   Disproflex — huisstijl
   Gedeelde variabelen, typografie en basiscomponenten.
   Pagina-specifieke regels staan in hun eigen bestand (zie wwwroot/css).
   ========================================================================== */

:root {
    /* Merkkleuren */
    --dispro-green: #006f3c;
    --dispro-green-light: #00c867;
    --dispro-green-dark: #005530;
    --dispro-green-soft: #a8e6cf;
    --dispro-lime: #89B921;

    /* Neutraal */
    --dispro-bg: #e9ecef;
    --dispro-surface: #ffffff;
    --dispro-border: #dee2e6;
    --dispro-text: #333333;
    --dispro-muted: #6c757d;

    /* Vorm */
    --dispro-radius: 12px;
    --dispro-radius-lg: 20px;
    --dispro-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
    --dispro-shadow-hover: 0 8px 28px rgba(0, 0, 0, 0.18);
    --dispro-transition: all 0.25s ease;
}

html, body {
    height: 100%;
    margin: 0;
    padding: 0;
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
    background-color: var(--dispro-bg);
    color: var(--dispro-text);
}

*, *::before, *::after {
    box-sizing: border-box;
}

/* Ruimte voor de vaste navigatiebalk en footer; inhoud kan er niet achter verdwijnen. */
.page-shell {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    min-height: 100dvh;
}

.page-main {
    flex: 1 0 auto;
    padding-top: calc(var(--dispro-header-height, 4.25rem) + 1.5rem);
    padding-bottom: calc(var(--dispro-footer-height, 3.5rem) + 1rem);
}

@media (min-width: 992px) {
    .page-shell:has(.dispro-sidebar-sticky) {
        height: 100vh;
        height: 100dvh;
        min-height: 0;
        overflow: hidden;
    }

    .page-shell:has(.dispro-sidebar-sticky) .page-main {
        flex: 1 1 auto;
        min-height: 0;
        overflow: hidden;
        padding-top: calc(var(--dispro-header-height, 4.25rem) + 1rem);
        padding-bottom: calc(var(--dispro-footer-height, 3.5rem) + 1rem);
    }
}

/* --------------------------------------------------------------------------
   Kaarten
   -------------------------------------------------------------------------- */

.dispro-card {
    background-color: var(--dispro-surface);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--dispro-radius);
    box-shadow: var(--dispro-shadow);
    transition: box-shadow 0.3s ease;
}

.dispro-card:hover {
    box-shadow: var(--dispro-shadow-hover);
}

/* Inhoudsblok binnen een pagina, met ruime padding. */
.dispro-panel {
    background-color: var(--dispro-surface);
    border-radius: var(--dispro-radius);
    padding: 2rem;
}

.dispro-panel--tinted {
    background-color: var(--dispro-bg);
}

/* --------------------------------------------------------------------------
   Sectiekop met het groene streepje onder de titel
   -------------------------------------------------------------------------- */

/* Sectiekop met een groen streepje onder de titel.
   Het streepje is een pseudo-element op de h2 zelf, zodat het altijd precies
   onder de tekst valt en niet door de letters heen loopt. */
.section-title {
    position: relative;
    display: block;
    margin-bottom: 1.75rem;
}

.section-title h2 {
    position: relative;
    display: inline-block;
    margin: 0;
    padding-bottom: 0.35rem;
    font-weight: 700;
    color: var(--dispro-text);
}

.section-title h2::after {
    content: "";
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 8px;
    background-color: var(--dispro-green);
    opacity: 0.35;
    z-index: -1;
}

/* De losse <span> uit de oude opmaak doet niets meer, maar blijft onschadelijk. */
.section-title > span {
    display: none;
}

/* --------------------------------------------------------------------------
   Knoppen
   -------------------------------------------------------------------------- */

.btn-dispro {
    background-color: var(--dispro-green);
    border: 1px solid var(--dispro-green);
    color: #fff;
    border-radius: 50px;
    padding: 0.5rem 1.2rem;
    font-weight: 500;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: var(--dispro-transition);
}

.btn-dispro:hover,
.btn-dispro:focus {
    background-color: var(--dispro-green-light);
    border-color: var(--dispro-green-light);
    color: #fff;
}

.btn-dispro-outline {
    background-color: transparent;
    border: 1px solid var(--dispro-green);
    color: var(--dispro-green);
    border-radius: 50px;
    padding: 0.5rem 1.2rem;
    font-weight: 500;
    transition: var(--dispro-transition);
}

.btn-dispro-outline:hover {
    background-color: var(--dispro-green);
    color: #fff;
}

/* --------------------------------------------------------------------------
   Formulieren
   -------------------------------------------------------------------------- */

.form-control,
.form-select {
    border-radius: 10px;
    padding: 0.65rem 0.9rem;
}

.form-control:focus,
.form-select:focus {
    border-color: var(--dispro-green);
    box-shadow: 0 0 0 0.2rem rgba(0, 111, 60, 0.2);
}

.form-label {
    font-weight: 600;
    color: var(--dispro-text);
}

/* --------------------------------------------------------------------------
   Statusmeldingen
   -------------------------------------------------------------------------- */

.dispro-alert {
    border: none;
    border-left: 4px solid var(--dispro-green);
    border-radius: 8px;
    background-color: #eef7f2;
    padding: 1rem 1.25rem;
}

.dispro-alert--warning {
    border-left-color: #e67e22;
    background-color: #fdf3e8;
    color: #8a4b0a;
}

.dispro-alert--danger {
    border-left-color: #dc3545;
    background-color: #fdecee;
    color: #8a1a24;
}

/* --------------------------------------------------------------------------
   Hulpteksten
   -------------------------------------------------------------------------- */

.text-dispro {
    color: var(--dispro-green) !important;
}

.little-text {
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--dispro-muted);
}
