@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600&family=Inter:wght@400;500;600&display=swap');
:root {
    --green:#354b2d;
    --green2:#263a24;
    --cream:#f5f1e9;
    --ink:#171713;
    --gold:#9a7445;
    --white:#fff
}

* {
    box-sizing:border-box
}

html {
    scroll-behavior:smooth
}

body {
    margin:0;
    color:var(--ink);
    font-family:Inter,Arial,sans-serif;
    background:#fff
}

img {
    display:block;
    width:100%;
    height:100%;
    object-fit:cover
}

a {
    color:inherit;
    text-decoration:none
}

h1,h2,.brand strong {
    font-family:Inter,Arial,sans-serif;
	color:#313a2a;
}

h2 {
    font-size:clamp(2rem,4vw,3.3rem);
    line-height:.95;
    margin:.35rem 0 1.2rem;

}

.eyebrow {
    letter-spacing:.28em;
    font-size:.72rem;
    color:#76552f;
    font-weight:600
}

.rule {
    display:block;
    width:42px;
    border-top:2px solid var(--gold);
    margin:1rem 0 1.4rem
}

.header {
    height:76px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:0 5vw;
    background:rgba(255,255,255,.97);
    position:sticky;
    top:0;
    z-index:20;
    box-shadow:0 1px 10px #0000000d
}

.brand {
    display:flex;
    align-items:center;
    gap:12px
}

.brand-mark {
    font-size:2.3rem
}

.brand strong {
    display:block;
    font-size:1.5rem
}

.brand small {
    font-size:.62rem;
    letter-spacing:.14em
}

.nav {
    display:flex;
    align-items:center;
    gap:2rem;
    font-size:.85rem
}

.nav>a:not(.btn) {
    padding:29px 0 25px
}

.nav .active {
    border-bottom:2px solid var(--green)
}

.menu-toggle {
    display:none;
    border:0;
    background:none;
    font-size:1.8rem
}

.btn {
    display:inline-block;
    border:0;
    border-radius:3px;
    background:var(--green);
    color:#fff;
    padding:15px 23px;
    font:500 .9rem Inter;
    cursor:pointer
}

.btn:hover {
    background:var(--green2)
}

.btn-small {
    padding:12px 18px
}

.btn-light {
    background:#f7f4ee;
    color:#222;
    border:1px solid #777
}

.btn-outline {
    background:transparent;
    border:1px solid white
}

.hero {
    min-height:590px;
    position:relative;
   /* background:url("../img/exterieur.jpg") center/cover no-repeat; */
    background:url("../img/exterieur_joli.png") center/cover no-repeat;
    display:flex;
    align-items:center
}

.hero-overlay {
    position:absolute;
    inset:0;
    background:linear-gradient(90deg,rgba(247,244,236,.92) 0%,rgba(247,244,236,.72) 28%,rgba(247,244,236,.05) 62%)
}

.hero-content {
    position:relative;
    z-index:2;
    margin-left:5.5vw;
    max-width:620px
}

.hero h1 {
    font-size:clamp(4rem,7.2vw,7rem);
    line-height:.72;
    margin:.3rem 0 1.2rem;
    font-weight:500
}

.hero h2 {
    font-size:2rem;
    margin:0
}

.hero-content>p:not(.eyebrow) {
    line-height:1.6
}

.hero-actions {
    display:flex;
    gap:12px;
    margin-top:24px
}

.location {
    position:absolute;
    right:4vw;
    bottom:28px;
    background:#222d;
    color:#fff;
    padding:12px 18px;
    border-radius:5px;
    z-index:3
}

.location small {
    display:block;
    margin-top:5px
}

.features {
    display:grid;
    grid-template-columns:repeat(7,1fr);
    padding:24px 4vw;
    background:#fbfaf7;
    border-bottom:1px solid #eee
}

.features div {
    text-align:center;
    padding:3px 12px;
    border-right:1px solid #ddd
}

.features div:last-child {
    border:0
}

.features b {
    display:block;
    color:var(--green);
    font-size:1.7rem;
    height:34px
}

.features span {
    font:600 .8rem "Cormorant Garamond",Georgia,serif
}

.intro {
    display:grid;
    grid-template-columns:1.05fr 1fr;
    background:var(--cream)
}

.intro-photo {
    min-height:500px
}

.intro-copy {
    padding:70px 8vw 55px 5vw
}

.intro-copy p:not(.eyebrow) {
    line-height:1.65;
    max-width:620px
}

.gallery {
    display:grid;
    grid-template-columns:repeat(4,1fr)
}

.gallery figure {
    height:290px;
    margin:0;
    position:relative;
    overflow:hidden
}

.gallery figcaption {
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    color:#fff;
    padding:42px 18px 14px;
    background:linear-gradient(transparent,#000a);
    font-size:.83rem
}

.gallery img {
    transition:transform .5s
}

.gallery figure:hover img {
    transform:scale(1.035)
}

.booking {
    display:grid;
    grid-template-columns:.85fr 1.15fr;
    gap:5vw;
    padding:55px 5vw;
    background:#f6f2eb
}

.booking>div p:last-child {
    line-height:1.55
}

.booking-form {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:14px;
    align-content:center
}

.booking-form label {
    font-size:.72rem
}

.booking-form input,.booking-form select {
    width:100%;
    margin-top:7px;
    border:1px solid #ddd;
    background:white;
    padding:14px;
    font:inherit
}

.booking-form .btn {
    grid-column:1/3
}

.form-message {
    grid-column:1/-1;
    margin:0;
    font-size:.85rem
}

.region {
    height:390px;
    position:relative;
    color:white;
    background:#26352a;
    overflow:hidden
}

.region-bg {
    position:absolute;
    inset:0;
    background:url("../img/exterieur.jpg") center 63%/cover;		
}

.region-content {
    position:relative;
    z-index:2;
    padding:48px 5vw;
    max-width:650px;
  color: #313a2a;
}
.region-content h2{
	 color:#313a2a
}
.region .eyebrow {
  
	  color: #313a2a;
}

.region p {
    line-height:1.55
}

footer {
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:30px 5vw;
    background:#20271f;
    color:#fff
}

footer span {
    opacity:.7;
    font-size:.8rem
}

@media(max-width:980px) {
    .menu-toggle {
        display:block
    }
    .nav {
        display:none;
        position:absolute;
        top:76px;
        left:0;
        right:0;
        background:#fff;
        padding:20px 5vw;
        flex-direction:column;
        align-items:stretch;
        gap:0;
        box-shadow:0 8px 20px #0002
    }
    .nav.open {
        display:flex
    }
    .nav>a:not(.btn) {
        padding:13px 0
    }
    .nav .active {
        border:0
    }
    .hero {
        min-height:650px;
        background-position:60% center
    }
    .hero-overlay {
        background:linear-gradient(90deg,rgba(247,244,236,.94),rgba(247,244,236,.55) 70%,rgba(247,244,236,.15))
    }
    .features {
        grid-template-columns:repeat(4,1fr);
        gap:18px
    }
    .features div {
        border:0
    }
    .intro {
        grid-template-columns:1fr
    }
    .intro-photo {
        min-height:390px
    }
    .gallery {
        grid-template-columns:1fr 1fr
    }
    .booking {
        grid-template-columns:1fr
    }
    .booking-form {
        grid-template-columns:1fr 1fr
    }
    .booking-form .btn {
        grid-column:1/-1
    }
}

@media(max-width:620px) {
    .header {
        height:66px;
        padding:0 18px
    }
    .brand strong {
        font-size:1.2rem
    }
    .brand-mark {
        font-size:1.7rem
    }
    .nav {
        top:66px
    }
    .hero {
        min-height:690px;
        align-items:flex-start;
        padding-top:80px;
        background-position:67% center
    }
    .hero-overlay {
        background:linear-gradient(180deg,rgba(247,244,236,.96) 0%,rgba(247,244,236,.78) 52%,rgba(247,244,236,.15) 100%)
    }
    .hero-content {
        margin:0 22px
    }
    .hero h1 {
        font-size:4.1rem
    }
    .hero h2 {
        font-size:1.65rem
    }
    .hero-content>p:not(.eyebrow) br {
        display:none
    }
    .hero-actions {
        flex-direction:column;
        align-items:flex-start
    }
    .location {
        right:16px;
        bottom:16px;
        font-size:.8rem
    }
    .features {
        grid-template-columns:repeat(2,1fr);
        padding:25px 16px
    }
    .intro-copy {
        padding:45px 24px
    }
    .intro-photo {
        min-height:310px
    }
    .gallery {
        grid-template-columns:1fr
    }
    .gallery figure {
        height:260px
    }
    .booking {
        padding:45px 24px
    }
    .booking-form {
        grid-template-columns:1fr
    }
    .booking-form .btn {
        grid-column:1
    }
    .region {
        height:450px
    }
    .region-content {
        padding:45px 24px
    }
    footer {
        gap:20px;
        align-items:flex-start;
        flex-direction:column
    }
}

/* Ajustements v2 : logo, pictogrammes et hero */
.brand-logo {
    width:42px;
    height:36px;
    display:grid;
    place-items:center;
    color:var(--green)
}

.brand-logo svg {
    width:100%;
    height:100%;
    fill:none;
    stroke:currentColor;
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round
}

.features svg {
    width:31px;
    height:31px;
    margin:0 auto 7px;
    fill:none;
    stroke:var(--green);
    stroke-width:2;
    stroke-linecap:round;
    stroke-linejoin:round
}

.features div:nth-child(1) svg circle,.features div:nth-child(6) svg circle {
    fill:var(--green);
    stroke:none
}

.btn-icon {
    font-size:.78em;
    margin-right:5px
}

@media(min-width:981px) {
    .hero {
        min-height:540px
    }
    .hero h1 {
        font-size:clamp(4rem,6.15vw,6.1rem);
        line-height:.78;
        margin:.35rem 0 1.05rem
    }
    .hero-overlay {
        background:linear-gradient(90deg,rgba(247,244,236,.90) 0%,rgba(247,244,236,.66) 25%,rgba(247,244,236,.16) 48%,rgba(247,244,236,0) 64%)
    }
    .hero-content {
        max-width:570px
    }
}

@media(max-width:620px) {
    .brand-logo {
        width:34px;
        height:30px
    }
    .features svg {
        width:29px;
        height:29px
    }
}

/* Ajustements v3 : header plus net + finition du hero */
.header {
    background:#fbfaf7;
    border-bottom:1px solid #e4e1da;
    box-shadow:0 2px 8px rgba(0,0,0,.04);
}

.brand {
    gap:13px
}

.brand-logo {
    width:44px;
    height:38px
}

.brand-logo svg {
    stroke-width:2.8
}

.brand strong {
    font-size:1.58rem;
    font-weight:600;
    line-height:1;
    color:#76552f;
    -webkit-font-smoothing:antialiased;
    text-rendering:geometricPrecision;
}

.brand small {
    display:block;
    margin-top:7px;
    font-family:Inter,Arial,sans-serif;
    font-size:.68rem;
    font-weight:600;
    line-height:1;
    letter-spacing:.17em;
    color:#343a31;
}

.nav {
    font-size:.90rem;
    font-weight:500;
    color:#1d211c;
    -webkit-font-smoothing:antialiased;
}

.nav>a:not(.btn) {
    padding:28px 0 25px
}

.nav .active {
    border-bottom:2px solid var(--green)
}

.features span {
    font-size:.88rem
}

@media(min-width:981px) {
    .hero {
        min-height:525px
    }
    .hero h1 {
        font-size:clamp(3.8rem,5.65vw,5.65rem);
        line-height:.80
    }
    .hero-overlay {
        background:linear-gradient(90deg,rgba(247,244,236,.86) 0%,rgba(247,244,236,.60) 24%,rgba(247,244,236,.10) 47%,rgba(247,244,236,0) 51%)
    }
}

@media(max-width:620px) {
    .brand-logo {
        width:36px;
        height:31px
    }
    .brand strong {
        font-size:1.25rem
    }
    .brand small {
        font-size:.61rem;
        margin-top:5px
    }
}

/* V4 — bande équipements plus lisible */
.features {
    padding:28px 3.5vw 27px;
    background:#fbfaf7;
    align-items:stretch
}

.features div {
    display:flex;
    min-height:92px;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    padding:0 14px;
    border-right:1px solid #d9d6cf
}

.features svg {
    width:38px;
    height:38px;
    margin:0 auto 7px;
    stroke-width:2.2
}

.features span {
    display:block;
    font-family:"Cormorant Garamond",Georgia,serif;
    font-size:1.05rem;
    font-weight:600;
    line-height:1.15;
    color:#181914
}

.features small {
    display:block;
    margin-top:7px;
    font:600 .62rem/1 Inter,Arial,sans-serif;
    letter-spacing:.18em;
    color:#9a7445
}

@media(max-width:980px) {
    .features {
        grid-template-columns:repeat(4,1fr);
        padding:24px 3vw;
        row-gap:16px
    }
    .features div {
        min-height:96px;
        border-right:1px solid #ddd
    }
    .features div:nth-child(4n) {
        border-right:0
    }
}

@media(max-width:620px) {
    .features {
        grid-template-columns:repeat(2,1fr);
        padding:18px 10px;
        gap:0
    }
    .features div {
        min-height:112px;
        padding:12px 8px;
        border-right:1px solid #ddd;
        border-bottom:1px solid #e5e2dc
    }
    .features div:nth-child(even) {
        border-right:0
    }
    .features svg {
        width:36px;
        height:36px
    }
    .features span {
        font-size:1rem
    }
    .features small {
        font-size:.58rem
    }
}

/* V5 — lisibilité de la bande des équipements */
.features span {
    font-family:Inter,Arial,sans-serif;
    font-size:1rem;
    font-weight:600;
    line-height:1.25;
    letter-spacing:-.01em;
    color:#171b16;
}

.features small {
    margin-top:8px;
    font-family:Inter,Arial,sans-serif;
    font-size:.64rem;
    font-weight:600;
    line-height:1;
    letter-spacing:.18em;
    color:#9a7445;
}

@media(max-width:620px) {
    .features span {
        font-size:.96rem;
        line-height:1.25
    }
    .features small {
        font-size:.57rem;
        letter-spacing:.14em
    }
}

/* Vidéo de fond du bandeau */
.hero{overflow:hidden}
.hero-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none}
.hero-overlay{z-index:1}
.hero-video-toggle{position:absolute;right:22px;top:18px;z-index:4;border:1px solid #ffffff80;border-radius:4px;padding:8px 12px;background:#20271fe6;color:#fff;font:500 .75rem Inter,Arial,sans-serif;cursor:pointer}
.hero-video-toggle:focus-visible{outline:3px solid #fff;outline-offset:3px}
.hero-video-toggle[hidden]{display:none}
@media(max-width:620px){.hero-video-toggle{bottom:105px}.hero-video{object-position:67% center}}
@media(prefers-reduced-motion:reduce){.hero-video{display:none}.hero-video-toggle{display:none}}
/* Formulaires et réservations : même charte que les pages du gîte. */
.service-page{background:var(--cream);min-height:65vh;padding:50px 5vw;line-height:1.6}
.service-page .shell{width:100%;max-width:1180px;margin-inline:auto}
.service-page h1{font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.2;color:var(--green);margin:8px 0 25px}
.service-page h2{font-size:clamp(1.5rem,3vw,2rem);line-height:1.2;margin:24px 0 16px}
.service-page h3{color:var(--green);line-height:1.3}
.service-page a:not(.button){text-decoration:underline;text-underline-offset:3px}
.service-page .button{display:inline-block;background:var(--green);color:#fff;border:0;border-radius:3px;padding:15px 23px;font:500 .9rem Inter,Arial,sans-serif;text-align:center;cursor:pointer}
.service-page .button:hover{background:var(--green2)}
.service-page .button-outline{background:transparent;color:var(--green);border:1px solid var(--green)}
.service-page button:disabled{opacity:.5;cursor:not-allowed}
.service-page input:not([type=checkbox]):not([type=radio]),.service-page select,.service-page textarea{width:100%;min-width:0;border:1px solid #d8d7cf;border-radius:3px;padding:12px;font:inherit;background:#fff;color:var(--ink)}
.service-page textarea{resize:vertical}
.service-page input[type=checkbox],.service-page input[type=radio]{accent-color:var(--green);width:auto}
.service-page label{display:grid;gap:6px;font-size:.88rem;font-weight:500}
.service-page :focus-visible,.account-bar :focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.service-page .auth-card{max-width:540px;margin:auto;padding:32px;background:#fff;border:1px solid #e4e1da;border-top:3px solid var(--gold)}
.service-page .auth-form{display:grid;gap:18px}
.service-page .auth-checkbox{display:flex;align-items:center;gap:10px}
.service-page .auth-error{padding:14px;background:#fff0ed;color:#8c251c;border-left:3px solid #8c251c}
.service-page .auth-success{padding:14px;background:#e4efdf;color:var(--green)}
.account-bar{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:18px;padding:12px 5vw;background:#e9ecdf;font-size:.85rem}
.account-bar a,.account-bar button{text-decoration:underline;text-underline-offset:3px}
.account-bar form{margin:0}
.account-bar button{background:none;border:0;font:inherit;color:var(--green);cursor:pointer;padding:6px}
.service-page .admin-page{overflow-x:auto}
.service-page .admin-table-wrap{overflow:auto;margin:24px 0}
.service-page .admin-table{width:100%;border-collapse:collapse;background:white}
.service-page .admin-table th,.service-page .admin-table td{padding:12px;text-align:left;border-bottom:1px solid #e4e1da}
.service-page .admin-table th{background:#e9ecdf}
.service-page .admin-form,.service-page .tarif-form{display:flex;align-items:end;flex-wrap:wrap;gap:16px;margin:22px 0}
.service-page .admin-form label{flex:1 1 180px}
.service-page .admin-table button{font:inherit;cursor:pointer;padding:6px 10px;border:1px solid #ddd;background:var(--cream);color:var(--green)}
.service-page .admin-tarif,.service-page .reservation-card{padding:24px;margin:24px 0;background:#fff;border:1px solid #e4e1da;border-radius:3px;overflow-wrap:anywhere}
.service-page .tarif-help,.service-page .form-note,.service-page .price-disclaimer{font-size:.85rem}
.service-page .account-editor{margin:32px 0 0}
.service-page .reservation-status{font-weight:600;color:var(--green)}
.service-page .reservation-prices{display:flex;flex-wrap:wrap;gap:24px}
.service-page .reservation-prices div{flex:1;min-width:150px}
.service-page .reservation-prices dd{margin:0;font-size:1.2rem;font-weight:600}
.service-page .reservation-card form{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.service-page .cicon-reservation{max-width:850px}
.service-page .booking-card{padding:32px;background:#fff;border-top:3px solid var(--gold)}
.service-page .booking-card .eyebrow.light{color:#76552f}
.service-page .booking-form{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:24px}
.service-page .booking-form input,.service-page .booking-form select{margin:0}
.service-page .booking-full,.service-page .stay-summary,.service-page .stay-price,.service-page .price-disclaimer,.service-page .form-note,.service-page .booking-form>button{grid-column:1/-1}
.service-page .stay-summary{padding:12px;border:1px solid #ddd;margin:0}
.service-page .stay-price{padding:16px;background:var(--cream);color:var(--green);font-size:1.2rem;font-weight:600}
.service-page .nightly-rate{font-weight:600}
.service-page .booking-benefits{border-top:1px solid #ddd;padding-top:20px;margin-top:20px}
.service-page .stay-calendar{margin-top:24px;padding:20px;background:var(--cream)}
.service-page .calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}
.service-page .calendar-heading h3{margin:0;text-transform:capitalize;text-align:center}
.service-page .calendar-heading button{width:40px;height:40px;border:1px solid #ddd;background:#fff;color:var(--green);font-size:25px;cursor:pointer}
.service-page #calendar-help{font-size:.85rem}
.service-page .calendar-weekdays,.service-page .calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.service-page .calendar-weekdays span{text-align:center;font-size:.8rem;padding:5px}
.service-page .calendar-days button{min-width:0;min-height:40px;padding:5px 0;border:1px solid transparent;border-radius:3px;background:white;color:var(--ink);font:inherit;cursor:pointer}
.service-page .calendar-days button:hover:not(:disabled){border-color:var(--green)}
.service-page .calendar-days button.in-range{background:#dce7d9}
.service-page .calendar-days button.selected{background:var(--green);color:white;font-weight:600}
.service-page .calendar-days button.unavailable{text-decoration:line-through}
.service-page .calendar-days button[aria-current=date]{text-decoration:underline}
.service-page .calendar-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;font-size:.8rem}
.service-page .calendar-footer button{border:0;background:transparent;color:var(--green);text-decoration:underline;cursor:pointer;padding:8px;font:inherit}
@media(max-width:620px){.service-page{padding:32px 18px}.service-page .auth-card,.service-page .booking-card,.service-page .admin-tarif,.service-page .reservation-card{padding:20px}.service-page .booking-form{grid-template-columns:1fr}.service-page .stay-calendar{padding:10px}.account-bar{justify-content:flex-start;gap:12px}.service-page .calendar-days button{min-height:36px}}
/* Galerie photos */
.photos-page{background:var(--cream);padding:55px 5vw}
.photos-intro{max-width:760px;margin:0 auto 38px;text-align:center;line-height:1.7}
.photos-intro h1{font-size:clamp(2rem,4.5vw,3.5rem);line-height:1.15;color:var(--green);font-weight:500;margin:15px 0}
.photos-intro>span{font-size:.85rem;color:#58604f}
.photos-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;max-width:1400px;margin:auto}
.photo-link{position:relative;display:block;overflow:hidden;background:#e6e2d9;border-radius:4px;aspect-ratio:4/3}
.photo-link img{width:100%;height:100%;object-fit:cover;transition:transform .25s}
.photo-link:hover img{transform:scale(1.035)}
.photo-link>span{position:absolute;right:12px;bottom:12px;padding:7px 11px;background:#263a24e6;color:#fff;font-size:.75rem;border-radius:3px}
.photos-pagination{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin:35px 0}
.photos-pagination a{padding:10px 15px;background:white;border:1px solid #ddd;border-radius:3px}
.photos-pagination a[aria-current=page]{background:var(--green);color:white;border-color:var(--green)}
.photos-stay{text-align:center;margin-top:55px;padding-top:35px;border-top:1px solid #dedbd3}
.photos-stay h2{font-size:clamp(1.5rem,3vw,2rem);line-height:1.2}
.photo-dialog{border:0;padding:56px 16px 12px;background:#e6e9dc;color:#354b2d;width:min(1100px,96vw);max-width:96vw;max-height:94vh;border-radius:6px}
.photo-dialog::backdrop{background:#000d}
.photo-dialog .photo-full{display:block;width:100%;height:70vh;object-fit:contain}
.photo-close{position:absolute;top:12px;right:16px}
.photo-dialog button{border:1px solid #ffffff70;background:transparent;color:black;padding:9px 15px;cursor:pointer;border-radius:3px;font:inherit}
.photo-dialog button:disabled{opacity:.3;cursor:default}
.photo-controls{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:12px}
.photo-counter{font-size:.85rem;text-align:center}
.photos-page a:focus-visible,.photo-dialog button:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
@media(max-width:980px){.photos-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.photos-page{padding:35px 18px}.photos-grid{grid-template-columns:1fr;gap:16px}.photos-pagination a{padding:9px 12px}.photo-dialog .photo-full{height:60vh}}
@media(prefers-reduced-motion:reduce){.photo-link img{transition:none}}
/* Gestion des photos dans le gabarit commun */
.photo-upload{padding:24px;background:#fff;border-top:3px solid var(--gold);margin:28px 0}
.photo-upload p{font-size:.85rem}
.photo-upload label{margin-bottom:16px}
.photo-admin-message{padding:16px;border-left:3px solid var(--gold);background:#fff}
.admin-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.admin-photo-grid article{min-width:0;background:#fff;border:1px solid #e4e1da;padding:14px}
.admin-photo-grid img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.admin-photo-grid p{overflow-wrap:anywhere;font-size:.8rem}
.admin-photo-grid .button{width:100%;font-size:.8rem}
@media(max-width:980px){.admin-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.admin-photo-grid{grid-template-columns:1fr}.photo-upload{padding:18px}}
/* Contact : charte commune du gîte */
.contact-page{padding:60px 6vw;background:var(--cream);line-height:1.75}
.contact-heading{max-width:750px;margin:0 auto 40px;text-align:center}
.contact-heading h1{font-size:clamp(2rem,4.5vw,3.5rem);line-height:1.12;font-weight:500;color:var(--green);margin:18px 0}
.contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;max-width:1100px;margin:auto}
.contact-panel{background:#fff;padding:36px;border-top:3px solid var(--gold);min-width:0}
.contact-symbol{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:#f1f3e9;color:var(--green);font-size:1.7rem;margin-bottom:20px}
.contact-panel h2,.contact-booking h2{font-size:clamp(1.5rem,3vw,2rem);line-height:1.2;color:var(--green)}
.contact-panel address{font-style:normal}
.contact-email{color:var(--green);font-weight:600;text-decoration:underline;text-underline-offset:4px;overflow-wrap:anywhere}
.contact-panel small{color:#58604f}
.contact-booking{display:flex;align-items:center;justify-content:space-between;gap:30px;max-width:1100px;margin:45px auto 0;padding-top:32px;border-top:1px solid #dcd7cd}
.contact-booking .btn{flex-shrink:0}
.contact-page a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
@media(max-width:700px){.contact-page{padding:35px 20px}.contact-grid{grid-template-columns:1fr;gap:20px}.contact-panel{padding:25px}.contact-booking{flex-direction:column;align-items:flex-start}.contact-panel .btn{line-height:1.5}}
/* Formulaire de contact et captcha */
.contact-form{display:grid;gap:17px}
.contact-form label{display:grid;gap:6px;font-size:.9rem;font-weight:500}
.contact-form input,.contact-form textarea{width:100%;min-width:0;border:1px solid #d8d7cf;border-radius:3px;padding:12px;font:inherit;background:#fff;color:var(--ink)}
.contact-form textarea{resize:vertical}
.contact-form input[name=captcha]{max-width:130px}
.contact-form .contact-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.contact-help,.contact-required{font-size:.8rem;color:#58604f;margin:0}
.contact-form :focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.contact-form .btn:disabled{opacity:.5;cursor:not-allowed}
.contact-panel .auth-error{padding:14px;background:#fff0ed;color:#8c251c;border-left:3px solid #8c251c}
.contact-panel .auth-error a{text-decoration:underline;overflow-wrap:anywhere}
.contact-panel .auth-success{padding:14px;background:#e4efdf;color:var(--green)}
.contact-grid{align-items:start}
/* Présentation du gîte et éditeur */
.gite-page{background:var(--cream);padding:55px 6vw}
.gite-page-heading{max-width:900px;margin:0 auto 40px;text-align:center}
.gite-page-heading h1{font-size:clamp(2rem,4.5vw,3.5rem);line-height:1.15;font-weight:500;color:var(--green)}
.gite-page-layout{max-width:1200px;margin:auto;display:grid;grid-template-columns:auto;gap:45px;align-items:start;}
.gite-rich-text{line-height:1.85;overflow-wrap:anywhere}
.gite-rich-text h2{font-size:1.75rem;line-height:1.3;margin:30px 0 15px}
.gite-rich-text h3{font-size:1.25rem;line-height:1.4;color:var(--green)}
.gite-rich-text ul{padding-left:24px}.gite-rich-text li{margin:8px 0}
.gite-page-aside{background:#fff;border-bottom:3px solid var(--gold)}
.gite-page-aside img{width:100%;height:auto;aspect-ratio:7/5;object-fit:cover}
.gite-page-aside>div{padding:28px}
.gite-page-aside h2{font-size:1.6rem;line-height:1.2}
.gite-page-aside .btn{margin:6px 5px 6px 0;line-height:1.4}
.editor-toolbar{display:flex;flex-wrap:wrap;gap:8px}
.editor-toolbar[hidden]{display:none}
.editor-toolbar button{padding:9px 14px;background:#fff;color:var(--green);border:1px solid #ccc;border-radius:3px;font:inherit;cursor:pointer}
.editor-actions{display:flex;flex-wrap:wrap;gap:12px}
.editor-preview{margin-top:32px;padding:28px;background:#fff;border-top:3px solid var(--gold)}
#editor-help{font-size:.85rem}
#gite-editor{font:1rem/1.7 Inter,Arial,sans-serif;min-height:350px}
@media(max-width:800px){.gite-page-layout{grid-template-columns:1fr}.gite-page{padding:35px 20px}}
/* Quill dans le gabarit commun */
#quill-wrap .ql-toolbar{background:#f5f1e9;border-color:#d8d7cf;border-radius:3px 3px 0 0}
#quill-editor{background:#fff;border-color:#d8d7cf;font-family:Inter,Arial,sans-serif;font-size:1rem}
#quill-editor .ql-editor{min-height:350px;line-height:1.75}
#quill-wrap .ql-toolbar button{padding:3px 5px}
#quill-wrap .ql-toolbar .ql-picker-label{font-weight:400}
#quill-wrap .ql-editor h2{font-size:1.75rem;line-height:1.3}
#quill-wrap .ql-editor h3{font-size:1.25rem}
#quill-wrap[hidden],#gite-source-label[hidden],#quill-error[hidden]{display:none}
#quill-error{color:#8c251c}
.gite-rich-text blockquote{margin:20px 0;padding:10px 20px;border-left:3px solid var(--gold);background:#fff}
.gite-rich-text ol{padding-left:24px}
/* Sauvegarde visible, même pour un long texte Quill */
.gite-editor-page .editor-save-bar{position:sticky;top:80px;z-index:10;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:14px;background:var(--cream);border:1px solid #d8d7cf;box-shadow:0 3px 10px #0000000d}
.editor-save-bar>span{font-size:.85rem}
#quill-editor.ql-container{height:auto;min-height:0}
#quill-editor .ql-editor{height:clamp(280px,50vh,520px);min-height:0;overflow-y:auto}
.gite-editor-page .editor-actions{position:relative;clear:both;padding:14px 0}
@media(max-width:620px){.gite-editor-page .editor-save-bar{top:70px}.editor-save-bar .button{width:100%}.editor-save-bar>span{display:none}}
.nav .login-link{display:inline-flex;align-items:center;justify-content:center;gap:8px}.login-icon{display:block;flex-shrink:0}
/* Logo au trait du gîte dans l'en-tête */
.header .brand-line-logo{width:110px;height:47px;object-fit:contain;flex-shrink:0}
@media(max-width:620px){.header .brand-line-logo{width:76px;height:38px}.header .brand{gap:8px}}
@media(max-width:380px){.header .brand-line-logo{width:60px;height:32px}.header .brand strong{font-size:1rem}.header .brand small{font-size:.52rem}}
/* Planning multi-mois */
.service-page .cicon-reservation .booking-card{max-width:1400px;margin:0 auto}
.service-page .calendar-months{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:24px 18px;margin:24px 0}
.service-page .calendar-month-panel{min-width:0}
.service-page .calendar-month-panel h4{text-align:center;text-transform:capitalize;font-size:.95rem;color:var(--green);margin:0 0 10px}
.service-page .calendar-month-panel .calendar-weekdays,.service-page .calendar-month-panel .calendar-days{gap:2px}
.service-page .calendar-month-panel .calendar-weekdays span{font-size:.67rem;padding:4px 0}
.service-page .calendar-month-panel .calendar-days button{min-height:30px;font-size:.73rem;padding:2px 0}
.service-page .calendar-days button.available{background:#e1ecd9;color:#263a24}
.service-page .calendar-days button.unavailable{background:#f5d6d4;color:#8a2621;text-decoration:line-through;opacity:1}
.service-page .calendar-days button.past{background:#e9e7e2;color:#8b8881;opacity:.6}
.service-page .calendar-days button.in-range{background:#b4c9a4;color:#203a1e}
.service-page .calendar-days button.selected{background:#354b2d;color:white;border:2px solid #b58b43;font-weight:700;opacity:1}
.service-page .calendar-days button:focus-visible{outline:3px solid #b58b43;outline-offset:1px;position:relative;z-index:1}
.calendar-legend{display:flex;flex-wrap:wrap;gap:12px 20px;font-size:.75rem;margin:14px 0}
.calendar-legend span{display:flex;align-items:center;gap:6px}
.calendar-legend i{width:12px;height:12px;display:inline-block;border-radius:2px}
.legend-free{background:#e1ecd9;border:1px solid #b4c9a4}.legend-busy{background:#f5d6d4;border:1px solid #d89994}.legend-selected{background:#354b2d}
@media(max-width:1200px){.service-page .calendar-months{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:980px){.service-page .calendar-months{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.service-page .calendar-months{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px}.service-page .calendar-heading h3{font-size:.95rem}}
@media(max-width:480px){.service-page .calendar-months{grid-template-columns:1fr}.service-page .calendar-month-panel .calendar-days button{min-height:36px;font-size:.85rem}}
.service-page .cicon-reservation{max-width:1400px}

.stay-options[hidden]{display:none}
.stay-options{margin:32px 0;padding:28px;background:#faf9f5;border:1px solid #dfdfd3;scroll-margin-top:100px}
.stay-options-heading{display:flex;align-items:center;justify-content:space-between;gap:22px}
.service-page .stay-options h3{font-size:1.4rem;margin:8px 0}
.stay-options-heading p{font-size:.85rem;margin:8px 0}
.stay-options-groups{display:grid;grid-template-columns:1.5fr 1fr;gap:24px;margin-top:20px}
.stay-options-group h4{margin:0;padding:14px 18px;background:#e1ecd9;color:#263a24}
.stay-options-list{max-height:510px;overflow-y:auto;overscroll-behavior:contain;padding:10px;background:#fff;border:1px solid #e4e1da}
.stay-option-row{display:grid;grid-template-columns:64px 1fr auto;gap:14px;align-items:center;padding:16px 8px;border-bottom:1px solid #e4e1da}
.stay-option-row:last-child{border:0}
.stay-option-nights{text-align:center;font-weight:600;color:var(--green);font-size:.9rem}
.stay-option-detail p{margin:0 0 4px;font-size:.78rem}
.stay-option-detail strong{font-size:1.05rem;color:var(--green)}
.service-page .stay-option-row .button{font-size:.75rem;padding:11px 14px}
.stay-option-row button[aria-pressed=true]{background:#76552f}
.stay-contact{padding:22px;margin-top:20px;background:var(--cream)}
.stay-contact h4{background:transparent;padding:0}
.stay-contact p,#stay-options-status{font-size:.85rem}
.stay-contact a{font-size:.85rem;font-weight:600}
.service-page #booking-form{scroll-margin-top:100px}
@media(max-width:980px){.stay-options-groups{grid-template-columns:1fr}.stay-options-heading{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.stay-options{padding:14px}.stay-option-row{grid-template-columns:52px 1fr;gap:12px}.stay-option-row .button{grid-column:2;justify-self:start}.stay-options-list{max-height:460px}.service-page .stay-options h3{font-size:1.15rem}}
