body{font-family:Arial;background:#f5f6f8;margin:0}
.container{max-width:760px;margin:40px auto;background:#fff;padding:24px;border-radius:12px}
.card{border:1px solid #e5e7eb;padding:16px;margin-bottom:12px}
.btn{background:#2563eb;color:#fff;padding:10px 16px;border-radius:8px;text-decoration:none}

body {
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
    background: #f5f6f8;
}

.topmenu {
    background: #111827;
    color: #ffffff;
    padding: 14px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.topmenu a {
    color: #ffffff;
    margin-left: 16px;
    text-decoration: none;
}

.container {
    max-width: 800px;
    margin: 40px auto;
    background: #ffffff;
    padding: 24px;
    border-radius: 12px;
}




.topmenu {
    background: #111827;
    color: #ffffff;
    padding: 14px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.topmenu .logo {
    font-weight: bold;
    font-size: 18px;
}

.topmenu .nav a {
    color: #ffffff;
    margin-left: 16px;
    text-decoration: none;
    font-size: 14px;
}

.topmenu .nav a:hover {
    text-decoration: underline;
}

/* HERO */
.hero {
    background: linear-gradient(135deg, #111827, #1f2937);
    color: #ffffff;
    text-align: center;
    padding: 80px 20px;
}

.hero-logo {
    max-width: 160px;
    margin-bottom: 24px;
}

.hero h1 {
    font-size: 36px;
    margin-bottom: 12px;
}

.hero-sub {
    font-size: 18px;
    opacity: 0.85;
    max-width: 640px;
    margin: 0 auto 32px auto;
}

/* HERO BUTTONS */
.hero-actions {
    display: flex;
    justify-content: center;
    gap: 16px;
}

.btn.primary {
    background: #2563eb;
    color: #ffffff;
}

.btn.secondary {
    background: transparent;
    border: 1px solid #ffffff;
    color: #ffffff;
}

/* STEPS */
.steps {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 16px;
    margin-top: 20px;
}

.step {
    background: #f9fafb;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 16px;
    font-size: 14px;
}

/* TOPMENU */
.topmenu {
    background:#111827;
    padding:14px 24px;
    display:flex;
    align-items:center;
    justify-content:space-between;
}
.topmenu img { height:28px; }
.topmenu a {
    color:#fff;
    margin-left:16px;
    text-decoration:none;
}
.lang a {
    font-size:13px;
    opacity:.8;
}

/* HERO */
.hero {
    background:linear-gradient(135deg,#111827,#1f2937);
    color:#fff;
    text-align:center;
    padding:80px 20px;
}
.hero-logo { max-width:160px; margin-bottom:20px; }
.hero-sub { opacity:.85; max-width:640px; margin:0 auto 30px; }

/* BUTTONS */
.btn { padding:10px 18px; border-radius:8px; text-decoration:none; }
.btn.primary { background:#2563eb; color:#fff; }
.role-card.participant .btn.secondary {
    background: #10b981;
    color: #ffffff;
    border: none;
}

.role-card.participant .btn.secondary:hover {
    background: #059669;
}

/* CONTENT */
.container {
    max-width:900px;
    margin:40px auto;
    background:#fff;
    padding:28px;
    border-radius:14px;
}

/* STEPS */
.steps {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
    gap:16px;
}
.step {
    background:#f9fafb;
    padding:16px;
    border-radius:10px;
    border:1px solid #e5e7eb;
}

/* STATS */
.stats {
    display:flex;
    justify-content:center;
    gap:60px;
    padding:40px;
    text-align:center;
}

/* FOOTER */
.footer {
    background:#111827;
    color:#9ca3af;
    text-align:center;
    padding:20px;
    font-size:13px;
}

/* ROLES */
.roles {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
    gap:24px;
    max-width:900px;
    margin:40px auto;
}

.role-card {
    background:#ffffff;
    border-radius:14px;
    padding:24px;
    box-shadow:0 4px 12px rgba(0,0,0,0.05);
    border-top:4px solid transparent;
}

.role-card.organizer {
    border-top-color:#2563eb;
}

.role-card.participant {
    border-top-color:#10b981;
}

.role-card h3 {
    margin-top:0;
}

.role-card p {
    font-size:14px;
    line-height:1.6;
}

/* ADMIN */
.admin-cards {
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
    gap:24px;
}

.admin-card {
    background:#ffffff;
    padding:24px;
    border-radius:14px;
    box-shadow:0 4px 12px rgba(0,0,0,0.05);
}

.admin-card h3 {
    margin-top:0;
}

/* ADMIN TABLE */
.admin-table {
    width:100%;
    border-collapse:collapse;
}

.admin-table th,
.admin-table td {
    padding:12px;
    text-align:left;
    border-bottom:1px solid #e5e7eb;
}

.admin-table th {
    background:#f9fafb;
    font-size:13px;
    text-transform:uppercase;
    letter-spacing:.04em;
}

/* STATUS BADGES */
.status {
    padding:4px 10px;
    border-radius:12px;
    font-size:12px;
    color:#ffffff;
    text-transform:capitalize;
}

.status.active {
    background:#10b981;
}

.status.paused {
    background:#f59e0b;
}

.status.ended {
    background:#ef4444;
}

/* ADMIN ? secondary button zichtbaar */
.admin-card .btn.secondary {
    background: #ef4444;
    color: #ffffff;
    border: none;
}

.admin-card .btn.secondary:hover {
    background: #dc2626;
}

/* ADMIN MENU */
.admin-menu {
    background: #1f2937;
    padding: 12px 24px;
    display: flex;
    gap: 16px;
    margin-bottom: 20px;
}

.admin-menu a {
    color: #ffffff;
    text-decoration: none;
    font-size: 14px;
}

.admin-menu a.logout {
    margin-left: auto;
    color: #fca5a5;
}

.admin-menu a:hover {
    text-decoration: underline;
}

.admin-table textarea {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    padding: 6px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
}

/* ADMIN DASHBOARD CARDS */
.admin-cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 24px;
    margin-top: 20px;
}

.admin-card {
    background: #ffffff;
    padding: 24px;
    border-radius: 14px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
}

.admin-card h3 {
    margin-top: 0;
}
/* ADMIN ? secondary button zichtbaar */
.admin-cards .btn.secondary,
.container .btn.secondary {
    background: #e5e7eb;
    color: #111827;
    border: 1px solid #d1d5db;
}

.admin-cards .btn.secondary:hover,
.container .btn.secondary:hover {
    background: #d1d5db;
}

/* ADMIN FORMS */
.admin-form {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px 24px;
}

.admin-form .form-group {
    display: flex;
    flex-direction: column;
}

.admin-form .form-group.full {
    grid-column: 1 / -1;
}

.admin-form label {
    font-size: 13px;
    font-weight: 600;
    margin-bottom: 6px;
    color: #374151;
}

.admin-form input,
.admin-form select {
    padding: 10px 12px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    font-size: 14px;
}

.admin-form input:focus,
.admin-form select:focus {
    outline: none;
    border-color: #2563eb;
}

.admin-form .form-actions {
    grid-column: 1 / -1;
    display: flex;
    gap: 12px;
    margin-top: 10px;
}

/* --------------------------------------------------
   Admin text filter button (isolated & safe)
-------------------------------------------------- */
/*.tbtn_primary {
    display: inline-block;
    padding: 8px 14px;
    background-color: #000;   /* lichtgrijs */
    color: #DDD;              /* zwart/donker */
    border: 1px solid #9ca3af;
    border-radius: 4px;
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    line-height: 1.2;
}
*/

/* --------------------------------------------------
   Admin safe button
-------------------------------------------------- */
/*button.tbtn_primary {
    background-color: #e5e7eb !important;
    color: #111827 !important;
    border: 1px solid #9ca3af !important;
    padding: 8px 16px !important;
    border-radius: 4px !important;
    font-size: 14px !important;
    cursor: pointer !important;
}

button.tbtn_primary:hover {
    background-color: #d1d5db !important;
}*/



/* --------------------------------------------------
   Admin buttons ? same height & shape, auto width
-------------------------------------------------- */
button.tbtn_primary,
button.tbtn_secondary {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;

    height: 38px !important;          /* zelfde hoogte */
    padding: 0 20px !important;       /* zelfde body */

    font-size: 14px !important;
    font-weight: 500 !important;
    line-height: 1 !important;

    border-radius: 8px !important;    /* zoals voorheen */
    cursor: pointer !important;
    white-space: nowrap !important;
}

/* Primary */
button.tbtn_primary {
    background-color: #2563eb !important;
    color: #ffffff !important;
    border: 1px solid #2563eb !important;
}

button.tbtn_primary:hover {
    background-color: #1d4ed8 !important;
}

/* Secondary */
button.tbtn_secondary {
    background-color: #ffffff !important;
    color: #111827 !important;
    border: 1px solid #9ca3af !important;
}

button.tbtn_secondary:hover {
    background-color: #f3f4f6 !important;
}






/* ------------------------------
   Texts filter card
------------------------------ */
.filter-card {
    margin: 20px auto;
    padding: 16px 20px;
    max-width: 1200px;
}

/* Inline filter row */
.filter-row {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: flex-end;
}

/* Individual filter block */
.filter-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* Compact inputs */
.filter-item select,
.filter-item input {
    min-width: 160px;
    padding: 6px 8px;
}

/* Search field a bit wider */
.filter-search input {
    min-width: 220px;
}

/* Button alignment */
.filter-btn {
    padding-bottom: 2px;
}

/* ------------------------------
   Texts main card
------------------------------ */
.texts-card {
    max-width: 1200px;
    margin: 30px auto;
    padding: 24px 28px;
    border-radius: 12px;
}

/* Make text inputs more compact */
.texts-card textarea {
    max-width: 520px;
    font-size: 14px;
    padding: 8px 10px;
}

/* Center save button */
.texts-card .save-row {
    margin-top: 24px;
    text-align: right;
}

/* ===============================
   Modal (floating window)
=============================== */
.modal-overlay {
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(0,0,0,0.45);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}

.modal {
    background: #ffffff;
    border-radius: 12px;
    width: 640px;
    max-width: 92%;
    padding: 24px 28px;
    box-shadow: 0 20px 40px rgba(0,0,0,0.2);
}

.modal h2 {
    margin-top: 0;
}

.modal .form-row {
    margin-bottom: 14px;
}

.modal label {
    display: block;
    font-weight: 600;
    margin-bottom: 4px;
}

.modal input,
.modal textarea {
    width: 100%;
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
}


/* =========================================================
   JOIN CAMPAIGN ? COMPLETE & OVERRIDING STYLE (v1)
   Dit blok vervangt ALLE eerdere join styles
   ========================================================= */

/* Doorbreek site container / theme wrapper */
.join-wrap {
    position: relative;
    width: 100vw;
    left: 50%;
    margin-left: -50vw;

    min-height: calc(100vh - 220px); /* header + footer */
    display: flex;
    align-items: center;
    justify-content: center;

    padding: 40px 20px;
    background: #f9fafb;
    box-sizing: border-box;
}

/* De card zelf */
.join-card {
    width: 100%;
    max-width: 520px;

    background: #ffffff;
    border: 1px solid #e5e7eb;
    border-radius: 18px;
    padding: 32px;

    box-shadow: 0 12px 30px rgba(0,0,0,0.10);
    box-sizing: border-box;
}

/* Titel */
.join-title {
    margin: 0 0 12px 0;
    font-size: 28px;
    font-weight: 700;
    color: #111827;
}

/* Intro tekst */
.join-intro {
    margin: 0 0 20px 0;
    color: #374151;
    line-height: 1.5;
}

/* Form reset ? breek theme styles */
.join-form,
.join-form * {
    float: none !important;
    box-sizing: border-box;
}

/* Label */
.join-label {
    display: block;
    margin-bottom: 6px;
    font-weight: 600;
    color: #111827;
}

/* Input */
.join-input {
    display: block;
    width: 100% !important;

    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid #d1d5db;

    font-size: 15px;
    color: #111827;
    background: #ffffff;

    margin-bottom: 18px;
}

.join-input:focus {
    outline: none;
    border-color: #2563eb;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
}

/* Button */
.join-button {
    display: block;
    width: 100% !important;

    padding: 13px;
    border-radius: 14px;
    font-size: 16px;
}

/* Success message */
.join-success {
    color: #065f46;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;

    padding: 14px 16px;
    border-radius: 12px;
    margin-top: 16px;
}

/* Error message */
.join-error {
    color: #991b1b;
    background: #fef2f2;
    border: 1px solid #fecaca;

    padding: 14px 16px;
    border-radius: 12px;
    margin-bottom: 16px;
}

/* Mobile tweaks */
@media (max-width: 640px) {
    .join-card {
        padding: 24px;
    }

    .join-title {
        font-size: 24px;
    }
}

/* === Campaign overview cards === */

.campaign-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 22px;
    margin-top: 24px;
}

.campaign-card {
    background: #ffffff;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 6px 18px rgba(0,0,0,0.08);
    transition: transform .15s ease, box-shadow .15s ease;
    text-decoration: none;
    color: inherit;
    display: block;
}

.campaign-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 10px 26px rgba(0,0,0,0.12);
}

.campaign-hero {
    height: 160px;
    background-size: cover;
    background-position: center;
}

.campaign-body {
    padding: 18px;
}

.campaign-title {
    font-size: 18px;
    font-weight: bold;
    margin-bottom: 6px;
}

.campaign-status {
    font-size: 13px;
    margin-bottom: 8px;
}

.campaign-status.active { color: #16a34a; }
.campaign-status.upcoming { color: #f59e0b; }
.campaign-status.ended { color: #6b7280; }

.campaign-dates {
    font-size: 13px;
    color: #6b7280;
    margin-bottom: 10px;
}

.campaign-desc {
    font-size: 14px;
    line-height: 1.5;
    color: #374151;
}

/* === Campaign detail card === */
.campaign-card-detail {
    background: #ffffff;
    border-radius: 20px;
    overflow: hidden;               /* CRUCIAAL */
    box-shadow: 0 12px 32px rgba(0,0,0,0.08);
}

/* === Hero === */
.campaign-hero {
    position: relative;
    width: 100%;
    height: 260px;
    background-size: cover;
    background-repeat: no-repeat;
	 background-position: top center; /* i.p.v. center center */
    /* zorg dat hero exact de card-top vult */
    border-top-left-radius: 20px;
    border-top-right-radius: 20px;
}

/* === Hero overlay container === */
.campaign-hero-overlay {
    position: absolute;
    top: 14px;
    left: 14px;
    display: flex;
    gap: 8px;
}

/* === Status badge === */
.campaign-status-badge {
    background: #2563eb;
    color: #ffffff;
    font-size: 13px;
    font-weight: 600;
    padding: 6px 12px;
    border-radius: 999px;
    line-height: 1;
}

/* Status kleuren (optioneel uitbreidbaar) */
.campaign-status-badge.active { background: #16a34a; }
.campaign-status-badge.paused { background: #f59e0b; }
.campaign-status-badge.ended  { background: #6b7280; }

/* === Chain badge === */
.campaign-chain-badge {
    background: rgba(0,0,0,0.55);
    color: #ffffff;
    font-size: 12px;
    padding: 6px 10px;
    border-radius: 999px;
}

/* === Body === */
.campaign-body {
    padding: 28px;
}


/* === Campaign meta row === */
.campaign-meta-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 14px 0 22px;
}

.campaign-meta {
    background: #f3f4f6;
    color: #111827;
    font-size: 13px;
    padding: 6px 12px;
    border-radius: 999px;
}

.campaign-meta.status.active { background: #16a34a; color:#fff; }
.campaign-meta.status.paused { background: #f59e0b; color:#fff; }
.campaign-meta.status.ended  { background: #6b7280; color:#fff; }

/* === CTA spacing === */
.campaign-cta {
    margin-top: 32px;
    display: flex;
    align-items: center;
}

/* Zorg dat niets overlap heeft */
.campaign-body > * {
    position: relative;
}

/* === Top menu === */
.topmenu {
    display: flex;
    align-items: center;
    height: 56px;
    padding: 0 16px;
    background: #0f172a;
}

.topmenu .logo {
    width: 140px;          /* controleerbare breedte */
    height: 100%;
}

.topmenu .logo a {
    display: block;
    width: 100%;
    height: 100%;
    background: url('/img/xtraidlogo.png') no-repeat left center;
    background-size: contain;
}



.campaign-intro-block {
    font-size: 1.15rem;
    line-height: 1.6;
    font-weight: 600;
    margin: 16px 0 24px;
}

.campaign-content-grid {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 32px;
    margin-top: 24px;
}

@media (max-width: 900px) {
    .campaign-content-grid {
        grid-template-columns: 1fr;
    }
}


.campaign-fulltext,
.campaign-rules {
    line-height: 1.7;
    letter-spacing: 0.2px;
}


.campaign-side-logo {
    margin-bottom: 20px;
    text-align: center;
}

.campaign-side-logo img {
    max-width: 100%;
    max-height: 200px;
    width: auto;
    height: auto;
    object-fit: contain;
}


.campaign-side-logo {
    margin-bottom: 20px;
    text-align: center;
}

.campaign-filters {
    display: flex;
    gap: 10px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.filter-pill {
    padding: 6px 14px;
    border-radius: 999px;
    background: #eef2f7;
    color: #111;
    font-size: 13px;
    text-decoration: none;
}

.filter-pill.active {
    background: #2563eb;
    color: #fff;
}

