/* =========================================================
   Casa Mariposa – MOBILE FIRST (same look, responsive)
   ========================================================= */

/* ---------- Variables ---------- */
:root{
    --brand:#015482;
    --text:#333;
    --muted:#666;
    --bg:#fff;

    --shadow-sm:0 4px 10px rgba(0,0,0,.09);
    --shadow-md:0 8px 16px rgba(0,0,0,.12);
    --shadow-lg:0 6px 48px rgba(8,96,144,.13), 0 1px 14px rgba(8,96,144,.07);

    --r-sm:8px;
    --r-md:12px;
    --r-lg:32px;

    --container-pad: clamp(12px, 4vw, 40px);
}

/* ---------- Base / Reset-ish ---------- */
*,
*::before,
*::after{ box-sizing:border-box; }

html, body{
    margin:0;
    font-family:'Open Sans', system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
    color:var(--text);
    background:var(--bg);
    line-height:1.45;
    -webkit-text-size-adjust:100%;
}

img{ max-width:100%; height:auto; display:block; }
a{ color:inherit; text-decoration:none; }

.container{
    width: min(1100px, 100%);
    margin-inline:auto;
    padding-inline: var(--container-pad);
}

/* =========================================================
   Header & Navigation
   ========================================================= */
.topbar{
    background:var(--brand);
    color:#fff;
    text-align:center;
    font-size:.95rem;
    padding:8px 10px;
}

/* Compacte header (hoogte = tekst) */
.main-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:nowrap;
    padding:8px var(--container-pad);
    border-bottom:1px solid #e8edf2;
    background:transparent;
    position:relative;
    z-index:10;
}

/* Container voor titel + vlinderlogo */
.logo-container{
    position:relative;
    display:flex;
    align-items:center;
    padding-left:170px; /* ruimte voor vlinders */
}

/* Groot vlinderlogo dat uit header hangt */
.logo{
    position:absolute;
    left:10px;
    bottom:-26px;
    height:140px;
    width:auto;
    z-index:11;
    filter:drop-shadow(0 6px 16px rgba(0,0,0,.25));
    pointer-events:none;
    user-select:none;
}

/* Titel */
.main-header h1{
    margin:0;
    line-height:1.1;
    font-size:1.5rem;
    color:var(--brand);
}

/* Navigatie */
.nav-menu{
    list-style:none;
    display:flex;
    flex-wrap:nowrap;
    gap: clamp(12px, 2vw, 28px);
    margin:0;
    padding:0;
    width:auto;
    margin-left:auto;
}
.nav-menu a{
    padding:6px 8px;
    font-weight:600;
    border-radius:8px;
    transition: color .15s ease;
}
.nav-menu a:hover,
.nav-menu a.active{ color:var(--brand); }

/* Hero krijgt marge zodat logo niet overlapt */
.hero{ margin-top:40px; }

/* =========================================================
   Hero
   ========================================================= */
.hero{
    position:relative;
    height: clamp(40vh, 52vw, 88vh);
    overflow:hidden;
}
.hero-bg{
    width:100%; height:100%; object-fit:cover;
}
.hero-overlay{
    position:absolute; inset:auto 50% 8% 50%;
    transform:translate(-50%,0);
    background:rgba(255,255,255,.85);
    color:#333;
    padding: clamp(14px, 3.2vw, 40px) clamp(16px, 3.6vw, 60px);
    text-align:center;
    max-width:min(90%, 900px);
    box-shadow:var(--shadow-md);
    border-radius: var(--r-md);
}
.hero-subtitle{
    margin:0 0 6px;
    color:var(--brand);
    text-transform:uppercase;
    font-weight:700;
    font-size: clamp(.8rem, 1.5vw, 1rem);
}
.hero-title{
    margin:0 0 8px;
    font-size: clamp(1.4rem, 6vw, 3rem);
}
.hero-welcome{ font-size: clamp(.95rem, 1.8vw, 1.15rem); margin:0; }

/* =========================================================
   Info cards
   ========================================================= */
.info-section{
    display:flex; flex-wrap:wrap; gap:20px;
    justify-content:center;
    padding: clamp(20px, 5vw, 40px) var(--container-pad);
    background:#fff;
}
.info-card{
    background:#fff;
    box-shadow:var(--shadow-sm);
    border-radius: var(--r-md);
    padding: clamp(16px, 3.6vw, 30px);
    max-width:400px; text-align:center;
}
.info-card a{ color:white; font-weight:700; }

/* =========================================================
   Intro tekst
   ========================================================= */
.intro-text{
    padding: clamp(24px, 6vw, 60px) var(--container-pad);
    max-width: 900px;
    margin: 0 auto;
    text-align:center;
}
.intro-text h2{
    margin:0 0 14px;
    font-size: clamp(1.25rem, 6vw, 2.2rem);
}
.vlinder{ width:18px; height:18px; display:inline-block; object-fit:contain; }
.bullet{ display:flex; align-items:center; gap:.45rem; }

/* =========================================================
   Emoji-opsomming
   ========================================================= */
.linkskes{ display:flex; flex-direction:column; gap:10px; }
.allignen{ display:flex; flex-direction:column; gap:10px; }
.allignen > div{
    display:grid;
    grid-template-columns: 2em 1fr;
    align-items:start;
    column-gap:.5em;
    text-align:left;
}
.allignen > div .emoji{ text-align:center; line-height:1.2; }

/* =========================================================
   Gallery
   ========================================================= */
.gallery{
    display:grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: clamp(12px, 3vw, 20px);
    padding: clamp(22px, 5vw, 40px) var(--container-pad);
}
.gallery img{
    width:100%;
    height: clamp(180px, 28vw, 280px);
    object-fit:cover;
    border-radius: var(--r-sm);
    cursor: zoom-in;
    transition: transform .25s ease, box-shadow .25s ease;
}
.gallery img:hover{ transform:scale(1.01); box-shadow:0 6px 18px rgba(0,0,0,.25); }

/* =========================================================
   Contact
   ========================================================= */
section.contact{
    padding: clamp(14px, 4vw, 26px) var(--container-pad);
    background: linear-gradient(180deg, #f7fbff, #ffffff);
}
.contact-container{
    width:min(100%, 980px);
    margin: 0 auto;
    background:#fff;
    border-radius: 22px;
    box-shadow: 0 6px 48px rgba(8,96,144,.07);
    padding: clamp(16px, 4.5vw, 36px);
    display:flex; flex-direction:column; gap: clamp(14px, 3vw, 48px);
    align-items:center; justify-content:center;
}
.contact-info{
    max-width: 520px;
    text-align:center;
    display:flex; flex-direction:column; align-items:center;
}
.contact-info h3{
    color:var(--brand);
    font-size: clamp(1.3rem, 4.2vw, 2.1rem);
    font-weight:800; margin:0 0 12px;
    letter-spacing:-.5px; line-height:1.15;
}
.contact-info p{
    margin:0 0 12px;
    font-size: clamp(.95rem, 2.7vw, 1.23rem);
    color:#1a2737;
}
.contact-info p strong{ color:var(--brand); }
.contact-info .socials{ display:flex; gap: clamp(16px, 4vw, 34px); margin:14px 0 10px; }
#facebook,#instagram,#whatsapp{ height:28px; width:auto; }

.contact-image{ width:100%; display:flex; justify-content:center; }
.contact-image img{
    width: min(100%, 510px);
    max-height: clamp(180px, 36vw, 370px);
    object-fit:cover;
    border-radius: clamp(16px, 3vw, 30px);
    box-shadow: var(--shadow-lg);
}

/* =========================================================
   Buttons
   ========================================================= */
.btn{
    display:inline-block;
    background:var(--brand);
    color:#fff;
    border:none;
    border-radius: 15px;
    padding: clamp(12px, 2.8vw, 18px) clamp(16px, 5vw, 48px);
    font-size: clamp(1rem, 2.8vw, 1.25rem);
    font-weight:700;
    letter-spacing:.5px;
    box-shadow:0 4px 16px rgba(20,60,100,.08);
    cursor:pointer;
    transition: background .18s, box-shadow .16s, transform .08s;
}
.btn:hover{ background:#127db3; box-shadow:0 7px 36px rgba(8,96,144,.13); }
.contact-info .btn{ width:100%; }

/* =========================================================
   Divider / Footer
   ========================================================= */
.divider{
    border:none; border-top:2px solid var(--brand);
    margin: 24px auto;
    width:min(1100px, 100%);
}
.site-footer, .disclaimer{
    text-align:center;
    font-size: clamp(.8rem, 2.2vw, .95rem);
    padding: 10px var(--container-pad) 40px;
    color:#666;
}

/* =========================================================
   Forms
   ========================================================= */
#infoForm{
    width:min(900px, 100%);
    margin:0 auto;
    padding: 18px 14px;
    background:#fff;
    border-radius:20px;
    box-shadow:0 10px 30px rgba(8,96,144,.08);
    display:grid;
    gap:14px;
}
#infoForm label{
    font-weight:600; color:#1a2737; margin-bottom:6px; display:inline-block;
}
#infoForm input,
#infoForm textarea,
#infoForm select{
    width:100%;
    padding:12px 14px;
    font-size:1rem;
    border:1px solid #d9e0e6;
    border-radius:12px;
    background:#fff;
    outline:none;
    transition: box-shadow .15s, border-color .15s, background .15s;
}
#infoForm textarea{ min-height:120px; resize:vertical; }
#infoForm input:focus,
#infoForm textarea:focus,
#infoForm select:focus{
    border-color:var(--brand);
    box-shadow:0 0 0 3px rgba(1,84,130,.12);
}
#infoForm .btn,
#infoForm button[type="submit"]{
    width:100%;
    border-radius:14px;
    font-weight:800;
}
#infoForm input[readonly]{
    background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23015482' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E") no-repeat 12px 50%;
    padding-left:40px; cursor:pointer;
}
#infoForm input[readonly]:focus{ box-shadow:0 0 0 3px rgba(1,84,130,.15); }
input.error, textarea.error{ border-color:#e63946 !important; background:#fff0f0; }

/* =========================================================
   Lightbox
   ========================================================= */
.lightbox{
    position: fixed; inset:0; display:none;
    align-items:center; justify-content:center;
    z-index:9999;
}
.lightbox.is-open{ display:flex; }
.lightbox-backdrop{
    position:absolute; inset:0; background:rgba(0,0,0,.7); backdrop-filter: blur(2px);
}
.lightbox-stage{
    position:relative; z-index:1; max-width:90vw; max-height:90vh;
    display:flex; align-items:center; justify-content:center;
    animation: lb-fade .18s ease-out;
}
@keyframes lb-fade{ from{ transform:scale(.98); opacity:.6; } to{ transform:scale(1); opacity:1; } }
#lightboxImg{
    max-width:90vw; max-height:90vh; object-fit:contain;
    border-radius:10px; background:#111; box-shadow:0 8px 30px rgba(0,0,0,.5);
}
.lightbox-close{
    position:absolute; top:16px; right:22px; z-index:2;
    background:transparent; border:none; color:#fff; font-size:34px; line-height:1;
    cursor:pointer; opacity:.9;
}
.lightbox-close:hover{ opacity:1; }
.lightbox-nav{
    position:absolute; top:50%; transform:translateY(-50%);
    z-index:2; width:52px; height:52px; border-radius:50%; border:none;
    background:#fff; color:#000; font-size:28px; line-height:52px; text-align:center;
    cursor:pointer; box-shadow:0 4px 16px rgba(0,0,0,.3); opacity:.95; user-select:none;
}
.lightbox-prev{ left:18px; } .lightbox-next{ right:18px; }
.lightbox-nav:disabled{ background:#e5e5e5; color:#9b9b9b; cursor:not-allowed; box-shadow:none; }
body.lb-no-scroll{ overflow:hidden; }
@media (hover:hover) and (pointer:fine){
    .lightbox-nav:not(:disabled):hover{ transform:translateY(-50%) scale(1.06); }
}

/* =========================================================
   RESPONSIVE UPGRADES
   ========================================================= */
@media (min-width:700px){
    .logo-container{ padding-left:200px; }
    .logo{ height:160px; bottom:-30px; }
    .hero{ margin-top:48px; }
    .contact-container{ flex-direction:row; }
    .contact-image{ flex:1 1 210px; }
    .contact-info{ flex:0 1 340px; }
    .nav-menu{ justify-content:flex-end; }
}
@media (min-width:1024px){
    .logo-container{ padding-left:240px; }
    .logo{ height:180px; bottom:-34px; }
    .hero{ margin-top:56px; }
    .intro-text{ max-width: 800px; }
    .gallery{ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); }
}
/* ===== Fix header + logo overlap (final) ===== */

/* 1) Zet de hero direct tegen de header (géén witte strook) */
.hero{ margin-top:0 !important; }

/* 2) Zorg dat het vlinderlogo altijd absoluut hangt (overrulet oude .big-logo regels) */
.logo-container{ position:relative !important; padding-left:170px !important; }
.logo-container.big-logo .logo,
.main-header .logo-container .logo{
    position:absolute !important;
    left:10px !important;
    bottom:-26px !important;     /* steekt onder de header uit */
    height:140px !important;     /* maak ‘m hier groter/kleiner naar smaak */
    width:auto !important;
    filter:drop-shadow(0 6px 16px rgba(0,0,0,.25));
    pointer-events:none;
}

/* 3) Titel netjes naast het logo en header compact */
.main-header{ padding:8px var(--container-pad) !important; }
.main-header h1{ margin:0 !important; line-height:1.1 !important; }

/* 4) Optional: iets ruimer op grotere schermen */
@media (min-width:700px){
    .logo-container{ padding-left:200px !important; }
    .logo-container.big-logo .logo,
    .main-header .logo-container .logo{ height:160px !important; bottom:-30px !important; }
}
@media (min-width:1024px){
    .logo-container{ padding-left:240px !important; }
    .logo-container.big-logo .logo,
    .main-header .logo-container .logo{ height:180px !important; bottom:-34px !important; }
}
/* === Tuning header + logo === */

/* Grotere header */
.main-header{
    padding:20px var(--container-pad) !important; /* was 8px */
}

/* Logo verder naar beneden + groter */
.logo-container.big-logo .logo,
.main-header .logo-container .logo{
    bottom:-60px !important;   /* duw meer naar beneden */
    height:180px !important;   /* maak groter */
}

/* Hero krijgt marge zodat logo niet overlapt */
.hero{ margin-top:80px !important; }

/* Tablet */
@media (min-width:700px){
    .main-header{ padding:26px var(--container-pad) !important; }
    .logo-container{ padding-left:100px !important; }
    .logo-container.big-logo .logo,
    .main-header .logo-container .logo{
        bottom:-70px !important;
        height:200px !important;
    }
    .hero{ margin-top:100px !important; }
}

/* Desktop */
@media (min-width:1024px){
    .main-header{ padding:30px var(--container-pad) !important; }
    .logo-container{ padding-left:260px !important; }
    .logo-container.big-logo .logo,
    .main-header .logo-container .logo{
        bottom:-90px !important;
        height:150px !important;
    }
    .hero{ margin-top:120px !important; }
}
/* === FINAL OVERRIDES: header groter, vlinders lager, GEEN witte gap === */

/* Grotere header */
.main-header{
    padding: 26px var(--container-pad) !important;
    border-bottom: 1px solid #e8edf2; /* laat staan voor subtiele lijn */
}

/* Ruimte links voor het absolute logo */
.logo-container{
    position: relative !important;
    padding-left: 180px !important;   /* titel netjes naast de vlinders */
}

/* Vlinders groter en verder naar beneden, los van header-hoogte */
.logo-container .logo{
    position: absolute !important;
    left: 10px !important;
    bottom: -100px !important;         /* laat ze “over” de foto hangen */
    height: 200px !important;          /* levendiger, groter */
    width: auto !important;
    filter: drop-shadow(0 6px 16px rgba(0,0,0,.25));
    pointer-events: none;
}

/* Heel belangrijk: GEEN extra witruimte onder header */
.hero{
    margin-top: 0 !important;         /* verwijdert de witte strook */
}
/* =========================
   MOBILE & TABLET FIX
   - header mag wrappen
   - logo normaal (niet absoluut)
   - menu onder de titel gecentreerd
   ========================= */
@media (max-width: 1023px){
    .main-header{
        padding:12px var(--container-pad) !important;
        flex-wrap: wrap !important;
    }

    /* Titel+logo op één regel links; geen extra linker padding */
    .logo-container{
        padding-left: 0 !important;
    }

    /* Logo NIET overlappend: gewoon inline, normale hoogte */
    .logo{
        position: static !important;
        height: 64px !important;      /* tablet */
        width: auto !important;
        left: auto !important;
        bottom: auto !important;
        filter: none !important;
        margin-right: 10px;            /* ruimte tussen logo en titel */
    }

    .main-header h1{
        font-size: 1.35rem !important;
    }

    /* Menu op nieuwe regel onderaan, gecentreerd */
    .nav-menu{
        width: 100% !important;
        margin-left: 0 !important;
        justify-content: center !important;
        gap: 16px !important;
        margin-top: 8px;
    }

    /* Geen witruimte-compensatie nodig want logo overlapt niet */
    .hero{ margin-top: 0 !important; }
}

/* Telefoon-specifiek iets kleiner logo en titel */
@media (max-width: 699px){
    .logo{ height: 56px !important; }
    .main-header h1{ font-size: 1.2rem !important; }
}
/* =========================
   GSM (≤ 700px)
   ========================= */
@media (max-width:700px){

    /* Header mag wrappen en krijgt compacte padding */
    .main-header{
        display:flex !important;
        flex-wrap:wrap !important;
        align-items:flex-start !important;
        gap:8px !important;
        padding:10px var(--container-pad) !important;
    }

    /* Titel + logo op één lijn links (géén linker padding meer) */
    .logo-container{
        position:relative !important;
        padding-left:0 !important;
        display:flex !important;
        align-items:center !important;
        gap:10px !important;
    }

    /* LOGO TERUG NORMAAL — alle absolute posities weg */
    .logo-container .logo,
    .main-header .logo-container .logo{
        position:static !important;
        left:auto !important;
        bottom:auto !important;
        top:auto !important;
        right:auto !important;
        transform:none !important;
        height:56px !important;   /* gsm-grootte */
        width:auto !important;
        margin:0 !important;
        filter:none !important;
    }

    /* Titel iets kleiner */
    .main-header h1{
        margin:0 !important;
        line-height:1.1 !important;
        font-size:1.2rem !important;
    }

    /* Menu op nieuwe regel, links uitgelijnd of centreer indien gewenst */
    .nav-menu{
        width:100% !important;
        margin-left:0 !important;
        margin-top:6px !important;
        display:flex !important;
        flex-wrap:wrap !important;
        justify-content: center !important; /* zet op center als je wil centreren */
        gap:12px !important;
        padding:0 !important;
    }

    /* Geen extra marge nodig: logo overlapt niet meer */
    .hero{ margin-top:0 !important; }
}

/* =========================
   TABLET (701–1023px)
   ========================= */
@media (min-width:701px) and (max-width:1023px){

    .main-header{
        display:flex !important;
        flex-wrap:wrap !important;
        align-items:flex-start !important;
        gap:10px !important;
        padding:14px var(--container-pad) !important;
    }

    .logo-container{
        position:relative !important;
        padding-left:0 !important;
        display:flex !important;
        align-items:center !important;
        gap:12px !important;
    }

    .logo-container .logo,
    .main-header .logo-container .logo{
        position:static !important;
        left:auto !important;
        bottom:auto !important;
        top:auto !important;
        right:auto !important;
        transform:none !important;
        height:64px !important;   /* tablet-grootte */
        width:auto !important;
        margin:0 !important;
        filter:none !important;
    }

    .main-header h1{ font-size:1.35rem !important; }

    .nav-menu{
        width:100% !important;
        margin-left:0 !important;
        margin-top:8px !important;
        display:flex !important;
        flex-wrap:wrap !important;
        justify-content:flex-start !important; /* of center */
        gap:14px !important;
    }

    .hero{ margin-top:0 !important; }
}
