/* IMMO-VINT : espace admin. Mêmes jetons graphiques que le site public. */
@font-face{font-family:'IV Spectral';font-weight:300;font-style:normal;font-display:swap;src:url(../assets/fonts/spectral-latin-300-normal.woff2) format('woff2')}
@font-face{font-family:'IV Spectral';font-weight:400;font-style:normal;font-display:swap;src:url(../assets/fonts/spectral-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IV Spectral';font-weight:300;font-style:italic;font-display:swap;src:url(../assets/fonts/spectral-latin-300-italic.woff2) format('woff2')}
@font-face{font-family:'IV Jost';font-weight:300;font-style:normal;font-display:swap;src:url(../assets/fonts/jost-300-latin.woff2) format('woff2')}
@font-face{font-family:'IV Jost';font-weight:400;font-style:normal;font-display:swap;src:url(../assets/fonts/jost-latin-400-normal.woff2) format('woff2')}
@font-face{font-family:'IV Jost';font-weight:500;font-style:normal;font-display:swap;src:url(../assets/fonts/jost-latin-500-normal.woff2) format('woff2')}

:root{
  --ink:#132A38;--ink-72:rgba(19,42,56,.72);--ink-65:rgba(19,42,56,.7);
  --bleu:#215A73;--bleu-fonce:#1A4A5F;--champagne:#E6D7AE;--paper:#FCFBF8;
  --limestone:#EAE6DC;--limestone-dk:#DED9CD;--brass:#9C8654;--brass-text:#75643F;
  --line:rgba(19,42,56,.13);--rouge:#A8402F;--vert:#3F6B4F;
  --serif:'IV Spectral',Georgia,'Times New Roman',serif;
  --sans:'IV Jost','Futura','Avenir Next',Avenir,'Helvetica Neue',Arial,sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
  --gutter:clamp(1.1rem,4vw,3rem);
  --ombre:0 1px 2px rgba(19,42,56,.05),0 14px 34px -12px rgba(19,42,56,.16);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);font-weight:300;font-size:15.5px;line-height:1.62;color:var(--ink);background:var(--paper);
  -webkit-font-smoothing:antialiased;font-variant-numeric:lining-nums}
img,svg{display:block;max-width:100%}
button,input,select,textarea{font-family:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:2px solid var(--brass);outline-offset:3px}
[hidden]{display:none!important}
h1,h2,h3{font-family:var(--serif);font-weight:300;line-height:1.14;letter-spacing:-.008em;margin:0}
h1{font-size:clamp(1.9rem,4vw,2.7rem)}
h2{font-size:clamp(1.4rem,2.6vw,1.8rem)}
h3{font-size:1.25rem}
.kicker{display:flex;align-items:center;gap:.85rem;font-size:.68rem;letter-spacing:.26em;color:var(--brass-text);margin:0 0 1rem;text-transform:uppercase}
.kicker::before{content:"";width:26px;height:1px;background:currentColor;flex:0 0 auto}
.muet{color:var(--ink-65);font-size:.86rem}
.wrap{max-width:1120px;margin-inline:auto;padding-inline:var(--gutter)}

/* Barre du haut */
.haut{position:sticky;top:0;z-index:30;background:rgba(252,251,248,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.haut .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:68px}
.marque{display:flex;align-items:center;gap:.9rem;text-decoration:none}
.marque img{width:46px;height:auto}
.marque span{font-size:.68rem;letter-spacing:.26em;text-transform:uppercase;color:var(--brass-text)}
.moi{display:flex;align-items:center;gap:1.1rem;font-size:.82rem;color:var(--ink-72)}
.lien{background:none;border:0;padding:0;cursor:pointer;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;border-bottom:1px solid var(--line);padding-bottom:2px}
.lien:hover{border-bottom-color:var(--brass)}
.onglets{display:flex;gap:clamp(1rem,3vw,2.2rem);overflow-x:auto;scrollbar-width:none;border-top:1px solid var(--line)}
.onglets::-webkit-scrollbar{display:none}
.onglets button{background:none;border:0;cursor:pointer;padding:.95rem 0;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-65);white-space:nowrap;border-bottom:1px solid transparent;margin-bottom:-1px;transition:color .3s,border-color .3s}
.onglets button:hover{color:var(--ink)}
.onglets button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--brass)}
main{padding-block:clamp(1.8rem,4vw,3.2rem) 6rem}
.vue-tete{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}

/* Boutons */
.btn{display:inline-block;border:1px solid currentColor;background:none;color:var(--ink);font-weight:300;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;padding:.78rem 1.5rem;cursor:pointer;text-decoration:none;text-align:center;
  transition:background .35s var(--ease),color .35s var(--ease),border-color .35s var(--ease),letter-spacing .35s var(--ease)}
.btn:hover{background:var(--bleu);color:var(--paper);border-color:var(--bleu);letter-spacing:.22em}
.btn.sm{padding:.55rem 1.05rem;font-size:.66rem;letter-spacing:.14em}
.btn.plein{background:var(--bleu);color:var(--paper);border-color:var(--bleu)}
.btn.plein:hover{background:var(--bleu-fonce);border-color:var(--brass)}
.btn.danger{color:var(--rouge)}
.btn.danger:hover{background:var(--rouge);border-color:var(--rouge);color:#fff}
.btn[disabled]{opacity:.45;pointer-events:none}

/* Champs : trait fin en dessous, comme les formulaires du site */
.field{margin-bottom:1.5rem}
.field label,.etiq{display:block;font-size:.66rem;letter-spacing:.18em;color:var(--ink-65);margin-bottom:.45rem;text-transform:uppercase}
.field input,.field textarea,.field select{width:100%;border:0;border-bottom:1px solid var(--line);background:none;font-size:.97rem;font-weight:300;padding:.5rem 0;border-radius:0;transition:border-color .3s var(--ease)}
.field input:focus,.field textarea:focus,.field select:focus{outline:0;border-bottom-color:var(--brass)}
.field textarea{resize:vertical;min-height:110px;line-height:1.55}
.field select{appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='7'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23132A38' stroke-width='1.2'/%3E%3C/svg%3E") right .2rem center no-repeat;padding-right:1.6rem}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:0 1.6rem}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:0 1.6rem}
.quatre{display:grid;grid-template-columns:repeat(4,1fr);gap:0 1.6rem}
.aide{font-size:.8rem;color:var(--ink-65);margin:-.9rem 0 1.4rem;line-height:1.5}
.hp{position:absolute;left:-9999px}

/* Cartes */
.carte{background:#fff;border:1px solid var(--line);padding:clamp(1.2rem,2.6vw,2rem);margin-bottom:1.4rem}
.carte>h3{margin-bottom:1.3rem}
.carte.creuse{background:none;border-style:dashed}

/* Connexion */
.connexion{min-height:100vh;display:grid;place-items:center;padding:1.5rem}
.connexion .boite{width:min(420px,100%);text-align:center}
.connexion .boite img{width:210px;margin:0 auto 2.4rem}
.connexion form{text-align:left;background:#fff;border:1px solid var(--line);padding:2rem;box-shadow:var(--ombre)}
.connexion .btn{width:100%}
.statut{min-height:1.4em;font-size:.86rem;margin:.9rem 0 0;color:var(--ink-72)}
.statut.err{color:var(--rouge)}

/* Liste des devis */
.tab{width:100%;border-collapse:collapse;font-size:.92rem}
.tab th{font-weight:400;font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-65);text-align:left;padding:.6rem .8rem .6rem 0;border-bottom:1px solid var(--ink)}
.tab td{padding:.85rem .8rem .85rem 0;border-bottom:1px solid var(--line);vertical-align:middle}
.tab td.num,.tab th.num{text-align:right;padding-right:0;white-space:nowrap;font-variant-numeric:tabular-nums}
.tab .actions{display:flex;gap:.9rem;justify-content:flex-end;flex-wrap:wrap}
.pastille{display:inline-block;font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--line);padding:.15rem .55rem;color:var(--ink-72)}
.pastille.ok{border-color:var(--vert);color:var(--vert)}
.pastille.mod{border-color:var(--brass);color:var(--brass-text)}
.vide{text-align:center;padding:3.5rem 1rem;color:var(--ink-65)}

/* Éditeur de devis */
.devis-grille{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:2rem;align-items:start}
.recap-colle{position:sticky;top:150px}
.recap{background:var(--bleu);color:var(--paper);padding:1.7rem}
.recap h3{color:var(--paper);margin-bottom:1.2rem}
.recap .l{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid rgba(252,251,248,.18);font-variant-numeric:tabular-nums}
.recap .l span:first-child{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--champagne);align-self:center}
.recap .tot{border-bottom:0;padding-top:1rem}
.recap .tot b{font-family:var(--serif);font-weight:300;font-size:2rem;line-height:1.1}
.recap .btns{display:grid;gap:.7rem;margin-top:1.5rem}
.recap .btn{color:var(--paper);border-color:rgba(252,251,248,.55)}
.recap .btn:hover{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.recap .btn.plein{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.recap .btn.plein:hover{background:var(--brass);border-color:var(--brass);color:var(--ink)}
.recap .petit{font-size:.78rem;color:rgba(252,251,248,.78);margin:1rem 0 0;line-height:1.5}
.ligne{border:1px solid var(--line);padding:1.3rem 1.3rem .4rem;margin-bottom:1rem;background:var(--paper)}
.ligne-tete{display:flex;gap:1rem;align-items:flex-start;margin-bottom:.6rem}
.ligne-tete .field{flex:1;margin-bottom:.6rem}
.x{background:none;border:1px solid var(--line);width:34px;height:34px;cursor:pointer;font-size:1.2rem;line-height:1;color:var(--ink-65);flex:0 0 auto;margin-top:1.1rem}
.x:hover{border-color:var(--rouge);color:var(--rouge)}
.ligne-grille{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:0 1.6rem}
.bascule{display:flex;margin-top:.55rem;border:1px solid var(--line);width:max-content;max-width:100%}
.bascule button{background:none;border:0;cursor:pointer;font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;padding:.4rem .75rem;color:var(--ink-65)}
.bascule button.on{background:var(--ink);color:var(--paper)}
.stepper{display:flex;align-items:center;border-bottom:1px solid var(--line)}
.stepper:focus-within{border-bottom-color:var(--brass)}
.stepper input{border:0!important;text-align:center;width:100%;min-width:0;padding:.5rem 0}
.stepper button{background:none;border:1px solid var(--line);width:32px;height:32px;cursor:pointer;font-size:1.1rem;flex:0 0 auto;line-height:1}
.stepper button:hover{border-color:var(--brass)}
.ligne-calc{display:flex;flex-wrap:wrap;gap:.4rem 1.8rem;border-top:1px solid var(--line);padding:.9rem 0 1rem;font-size:.9rem;font-variant-numeric:tabular-nums}
.ligne-calc span{color:var(--ink-65);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;margin-right:.45rem}
.ligne-calc small{flex-basis:100%;color:var(--ink-65);font-size:.76rem;line-height:1.45}

/* Logements */
.biens{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.3rem}
.bien{background:#fff;border:1px solid var(--line);text-align:left;padding:0;cursor:pointer;transition:box-shadow .35s var(--ease),transform .35s var(--ease)}
.bien:hover{box-shadow:var(--ombre);transform:translateY(-2px)}
.bien .im{aspect-ratio:4/3;background:var(--limestone);overflow:hidden}
.bien .im img{width:100%;height:100%;object-fit:cover}
.bien .tx{padding:1rem 1.1rem 1.2rem}
.bien b{display:block;font-family:var(--serif);font-weight:300;font-size:1.2rem;line-height:1.2}
.bien small{color:var(--ink-65);font-size:.78rem}
.langues{display:flex;gap:.2rem;margin-bottom:.9rem;flex-wrap:wrap}
.langues button{background:none;border:1px solid var(--line);cursor:pointer;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;padding:.35rem .7rem;color:var(--ink-65)}
.langues button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem}
.photo{border:1px solid var(--line);background:var(--paper);position:relative}
.photo .im{aspect-ratio:4/3;overflow:hidden;background:var(--limestone)}
.photo .im img{width:100%;height:100%;object-fit:cover}
.photo .badge{position:absolute;top:.4rem;left:.4rem;background:var(--ink);color:var(--paper);font-size:.58rem;letter-spacing:.16em;text-transform:uppercase;padding:.15rem .5rem}
.photo .bar{display:flex;justify-content:space-between;gap:.2rem;padding:.35rem .4rem}
.photo .bar button{background:none;border:0;cursor:pointer;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-65);padding:.2rem .3rem}
.photo .bar button:hover{color:var(--ink)}
.photo .bar .r:hover{color:var(--rouge)}
.depot{border:1px dashed rgba(19,42,56,.35);padding:1.6rem;text-align:center;margin-top:1rem;cursor:pointer;font-size:.88rem;color:var(--ink-72);transition:background .3s,border-color .3s}
.depot:hover,.depot.sur{background:var(--limestone);border-color:var(--brass)}
.barre-fixe{position:sticky;bottom:0;background:rgba(252,251,248,.96);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:.9rem 0;margin-top:1.5rem;display:flex;gap:.8rem;align-items:center;flex-wrap:wrap;z-index:10}

/* Textes */
.recherche{display:flex;gap:1rem;align-items:center;margin-bottom:1.6rem}
.recherche input{flex:1;border:0;border-bottom:1px solid var(--ink);background:none;font-size:1rem;padding:.6rem 0;font-weight:300}
.recherche input:focus{outline:0;border-bottom-color:var(--brass)}
.groupe-tit{margin:2rem 0 .4rem;font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--brass-text)}
details.txt{border-bottom:1px solid var(--line)}
details.txt summary{list-style:none;cursor:pointer;padding:.85rem 0;display:grid;grid-template-columns:150px 1fr auto;gap:1rem;align-items:baseline}
details.txt summary::-webkit-details-marker{display:none}
details.txt summary code{font-size:.7rem;color:var(--ink-65);font-family:ui-monospace,Menlo,monospace;overflow:hidden;text-overflow:ellipsis}
details.txt summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.95rem}
details.txt[open] summary span{white-space:normal}
details.txt .corps{padding:.4rem 0 1.4rem}
details.txt .corps .field{margin-bottom:1rem}

/* Photos du site */
.grille-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1.3rem}
.pcarte{background:#fff;border:1px solid var(--line)}
.pcarte .im{aspect-ratio:4/3;background:var(--limestone);overflow:hidden}
.pcarte .im img{width:100%;height:100%;object-fit:cover}
.pcarte .tx{padding:.9rem 1rem 1.1rem}
.pcarte b{display:block;font-weight:400;font-size:.95rem}
.pcarte .acts{display:flex;gap:.8rem;margin-top:.8rem;flex-wrap:wrap;align-items:center}

/* Fenêtres et messages */
.voile{position:fixed;inset:0;background:rgba(19,42,56,.5);z-index:100;display:grid;place-items:center;padding:1.2rem}
.fenetre{background:var(--paper);width:min(480px,100%);max-height:92vh;overflow:auto;padding:2rem;box-shadow:0 30px 80px -20px rgba(19,42,56,.5)}
.fenetre h2{margin-bottom:1.2rem}
.fenetre .btns{display:flex;gap:.8rem;margin-top:1.4rem;flex-wrap:wrap}
.toast{position:fixed;left:50%;bottom:1.6rem;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--paper);padding:.85rem 1.4rem;font-size:.88rem;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s var(--ease);z-index:200;max-width:92vw}
.toast.vu{opacity:1;transform:translateX(-50%)}
.toast.err{background:var(--rouge)}
.note{border-left:2px solid var(--brass);padding:.2rem 0 .2rem 1rem;font-size:.86rem;color:var(--ink-72);margin:0 0 1.4rem}
.liste-users{list-style:none;padding:0;margin:0 0 1.2rem}
.liste-users li{display:flex;justify-content:space-between;align-items:center;padding:.7rem 0;border-bottom:1px solid var(--line);gap:1rem}

@media (max-width:900px){
  .devis-grille{grid-template-columns:1fr}
  .recap-colle{position:static}
  .quatre{grid-template-columns:1fr 1fr}
  details.txt summary{grid-template-columns:1fr auto}
  details.txt summary code{grid-column:1/-1}
}
@media (max-width:600px){
  .duo,.trio,.ligne-grille{grid-template-columns:1fr}
  .moi .nom{display:none}
  .tab thead{display:none}
  .tab,.tab tbody,.tab tr,.tab td{display:block;width:100%}
  .tab tr{border-bottom:1px solid var(--line);padding:.7rem 0}
  .tab td{border:0;padding:.15rem 0}
  .tab td.num{text-align:left}
  .tab .actions{justify-content:flex-start;margin-top:.5rem}
}

/* Services complémentaires, clients, arrivées, réglages avancés */
.pastille.attention{border-color:var(--rouge);color:var(--rouge)}
.supp{display:grid;grid-template-columns:2fr 1fr 1.3fr 1.2fr auto auto;gap:0 1.2rem;align-items:start;border:1px solid var(--line);background:var(--paper);padding:1.1rem 1.1rem .1rem;margin-bottom:.8rem}
.supp .x{margin-top:1.1rem}
.supp-total{align-self:center;text-align:right;min-width:90px;padding-bottom:1rem;font-variant-numeric:tabular-nums}
.supp-total small{display:block;color:var(--ink-65);font-size:.72rem;line-height:1.35}
.dispo{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;padding:0 0 1.1rem}
.recap .l.mini{padding:.3rem 0;border-bottom:0}
.recap .l.mini b{font-weight:300;font-size:.95rem}
.actions-tete{display:flex;gap:.7rem;flex-wrap:wrap}
.filtre{border:0;border-bottom:1px solid var(--ink);background:none;padding:.6rem 1.4rem .6rem 0;font-size:.9rem}
.coche{display:flex;gap:.6rem;align-items:flex-start;font-size:.88rem;cursor:pointer;margin:.3rem 0 1rem;line-height:1.45}
.coche input{margin-top:.28rem;flex:0 0 auto}
.cat{border:1px solid var(--line);background:var(--paper);padding:1.1rem 1.1rem .6rem;margin-bottom:.9rem}
.cat-grille{display:grid;grid-template-columns:repeat(6,1fr);gap:0 1.2rem}
.cat-grille .field:nth-child(1),.cat-grille .field:nth-child(2){grid-column:span 2}
.cat-pied{display:flex;gap:1.4rem;flex-wrap:wrap;align-items:flex-start;justify-content:space-between}
.auto{flex:1 1 280px}
.auto summary{cursor:pointer;font-size:.86rem;color:var(--ink-72)}
.auto-liste{padding:.6rem 0 0}
.btns-ligne{display:flex;gap:.8rem;flex-wrap:wrap;align-items:center}
.dossier{padding:1.3rem 1.4rem}
.doss-tete{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:flex-start}
.doss-tete b{display:block;font-family:var(--serif);font-weight:300;font-size:1.3rem;line-height:1.2}
.doss-tete small{color:var(--ink-65);font-size:.82rem}
.docs{margin-top:1rem;border-top:1px solid var(--line)}
.doc{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:center;padding:.7rem 0;border-bottom:1px solid var(--line)}
.doc small{display:block;color:var(--ink-65);font-size:.76rem}
.doc .acts{display:flex;gap:.9rem}
@media (max-width:900px){.supp{grid-template-columns:1fr 1fr}.supp-total{text-align:left}.cat-grille{grid-template-columns:1fr 1fr}.cat-grille .field:nth-child(1),.cat-grille .field:nth-child(2){grid-column:span 2}}
.actions{display:flex;gap:.9rem;flex-wrap:wrap}
.supp{grid-template-columns:1fr 1.3fr 1.2fr auto auto}
.supp .field:first-child{grid-column:1/-1;margin-bottom:1rem}
.supp .x{margin-top:1.1rem}
@media (max-width:900px){.supp{grid-template-columns:1fr 1fr}.supp-total{text-align:left}}

/* ═════════ Plateforme : menu latéral, tableau de bord, réservations, contrats, calendrier, finances ═════════ */
:root{--lat:#F5F2EA;--info:#215A73;--orange:#B26A1E}
.coque{display:grid;grid-template-columns:252px minmax(0,1fr);min-height:100vh}
.lat{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--lat);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:1.2rem 0 1rem}
.lat .marque{padding:0 1.3rem 1.1rem}
.lat .marque img{width:38px}
.mode-test{margin:0 1rem 1rem;padding:.55rem .7rem;font-size:.74rem;line-height:1.4;background:#FFF3D6;border:1px solid #E5C77A;color:#6B4E0B}
.nav{flex:1;padding:0 .6rem}
.nav-g{margin:1.15rem .7rem .3rem;font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;color:var(--brass-text)}
.nav-i{display:flex;justify-content:space-between;align-items:center;gap:.5rem;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;cursor:pointer;padding:.5rem .7rem;font-size:.9rem;font-weight:300;color:var(--ink-72);transition:background .2s,color .2s}
.nav-i:hover{background:rgba(19,42,56,.05);color:var(--ink)}
.nav-i[aria-current=true]{background:#fff;color:var(--ink);border-left-color:var(--brass);font-weight:400}
.nav-n{min-width:1.35rem;text-align:center;font-size:.66rem;background:var(--bleu);color:#fff;border-radius:999px;padding:.05rem .4rem;line-height:1.5}
.lat-pied{padding:1rem 1.3rem 0;border-top:1px solid var(--line);margin-top:1rem;display:flex;flex-direction:column;gap:.35rem;align-items:flex-start;font-size:.84rem}
.lat-pied .nom{font-weight:400}
.principal{min-width:0}
.barre{position:sticky;top:0;z-index:25;background:rgba(252,251,248,.95);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:1rem;padding:.65rem var(--gutter)}
.menu-bouton{display:none;background:none;border:1px solid var(--line);padding:.45rem .8rem;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}
.recherche-globale{position:relative;flex:1;max-width:620px}
.recherche-globale input{width:100%;border:1px solid var(--line);background:#fff;padding:.6rem .9rem;font-size:.92rem;font-weight:300}
.recherche-globale input:focus{outline:0;border-color:var(--brass)}
.rg-res{position:absolute;left:0;right:0;top:calc(100% + 4px);background:#fff;border:1px solid var(--line);box-shadow:var(--ombre);max-height:70vh;overflow:auto;z-index:40}
.rg-g{margin:0;padding:.6rem .9rem .2rem;font-size:.6rem;letter-spacing:.22em;text-transform:uppercase;color:var(--brass-text)}
.rg-i{display:block;width:100%;text-align:left;background:none;border:0;padding:.5rem .9rem;cursor:pointer}
.rg-i:hover{background:var(--lat)}
.rg-i b{display:block;font-weight:400;font-size:.92rem}
.rg-i small{color:var(--ink-65);font-size:.78rem}
.rg-vide{margin:0;padding:.8rem .9rem;color:var(--ink-65);font-size:.9rem}
.contenu{max-width:1240px;margin-inline:auto;padding:clamp(1.4rem,3vw,2.6rem) var(--gutter) 6rem}
.sous-onglets{display:flex;gap:1.6rem;border-bottom:1px solid var(--line);margin:0 0 1.6rem;overflow-x:auto}
.sous-onglets button{background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:.6rem 0;cursor:pointer;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-65);white-space:nowrap}
.sous-onglets button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--brass)}
.fenetre.large{width:min(880px,100%)}
.fenetre.moyenne{width:min(640px,100%)}
.pastille.rouge{border-color:var(--rouge);color:var(--rouge)}
.pastille.info{border-color:var(--info);color:var(--info)}
.pastille.orange{border-color:var(--orange);color:var(--orange)}
.pastille.gris{background:var(--lat)}
.tuiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1rem;margin-bottom:1.6rem}
.tuile{background:#fff;border:1px solid var(--line);padding:1rem 1.2rem}
.tuile small{display:block;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-65)}
.tuile b{display:block;font-family:var(--serif);font-weight:300;font-size:2.1rem;line-height:1.2}
.tuile.alerte{border-color:var(--rouge)}
.tuile.alerte b{color:var(--rouge)}
.grille-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem;align-items:start}
.grille-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.4rem;align-items:start}
.carte h4{margin:0 0 .7rem;font-family:var(--sans);font-weight:400;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:var(--brass-text)}
.carte.alerte{border-color:var(--rouge)}
.carte .vide-mini{margin:0;color:var(--ink-65);font-size:.86rem}
.liste-act{list-style:none;margin:0;padding:0}
.liste-act li{display:flex;justify-content:space-between;gap:.8rem;align-items:baseline;padding:.55rem 0;border-bottom:1px solid var(--line);font-size:.9rem}
.liste-act li:last-child{border-bottom:0}
.liste-act button.ligne-lien{background:none;border:0;text-align:left;cursor:pointer;padding:0;flex:1;font-size:.92rem}
.liste-act button.ligne-lien:hover b{text-decoration:underline}
.liste-act b{font-weight:400}
.liste-act small{display:block;color:var(--ink-65);font-size:.78rem}
.bandeau{display:flex;gap:1rem;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--bleu);color:var(--paper);padding:1rem 1.3rem;margin-bottom:1.4rem}
.bandeau b{font-family:var(--serif);font-weight:300;font-size:1.25rem}
.bandeau small{display:block;color:var(--champagne);font-size:.8rem}
.bandeau .btn{color:var(--paper);border-color:rgba(252,251,248,.6)}
.bandeau .btn:hover{background:var(--paper);color:var(--ink)}
.bandeau.ok{background:#E9F0EA;color:var(--ink);border:1px solid #BFD3C4}
.bandeau.ok small{color:var(--ink-72)}
.etapes{list-style:none;margin:0;padding:0}
.etape{display:grid;grid-template-columns:28px 1fr auto;gap:.8rem;align-items:center;padding:.62rem 0;border-bottom:1px solid var(--line)}
.etape:last-child{border-bottom:0}
.puce{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-size:.7rem;line-height:1;color:#fff}
.puce.fait{background:var(--vert);border-color:var(--vert)}
.puce.a_faire{border-color:var(--bleu);background:#fff}
.puce.a_faire::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--bleu)}
.puce.attente{border-color:var(--orange);background:#fff}
.puce.attente::after{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid var(--orange)}
.puce.retard{background:var(--rouge);border-color:var(--rouge)}
.puce.a_venir,.puce.na{background:#fff;border-style:dashed}
.etape b{font-weight:400}
.etape small{display:block;color:var(--ink-65);font-size:.8rem}
.etape.na b,.etape.a_venir b{color:var(--ink-65)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1.2rem;margin:0;font-size:.92rem}
.kv dt{font-size:.64rem;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-65);align-self:center}
.kv dd{margin:0}
.entete-fiche{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1.4rem}
.entete-fiche h1{margin:.2rem 0 .4rem}
.contrat-texte{border:1px solid var(--line);background:#fff;padding:1.2rem 1.5rem;max-height:52vh;overflow:auto;font-size:.92rem;line-height:1.6}
.contrat-texte h1,.contrat-texte h2{font-size:1.2rem;margin:1.1rem 0 .4rem}
.contrat-texte h1{font-size:1.5rem}
.contrat-texte p{margin:.5rem 0}
.avert{border:1px solid #E5C77A;background:#FFF8E5;color:#5E4509;padding:.7rem 1rem;font-size:.86rem;margin:0 0 1.2rem}
.avert.rouge{border-color:#E3B0A6;background:#FCEEEB;color:#7A2C1E}
.puces-champs{display:flex;flex-wrap:wrap;gap:.35rem;margin:.4rem 0 1rem}
.puces-champs button{background:#fff;border:1px solid var(--line);font-size:.72rem;padding:.2rem .55rem;cursor:pointer;font-family:ui-monospace,Menlo,monospace}
.puces-champs button:hover{border-color:var(--brass)}
textarea.mono{font-family:ui-monospace,Menlo,monospace;font-size:.84rem;line-height:1.5}
.filtres{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1.2rem}
.filtres .field{margin-bottom:0;min-width:150px}
.tab-compact td,.tab-compact th{padding-top:.55rem;padding-bottom:.55rem}
.tab tr.cliquable{cursor:pointer}
.tab tr.cliquable:hover td{background:var(--lat)}
.total-ligne td{font-weight:400;border-top:1px solid var(--ink)}
/* Calendrier */
.cal-barre{display:flex;gap:.8rem;flex-wrap:wrap;align-items:center;margin-bottom:1.1rem}
.cal-barre h2{font-size:1.3rem;margin:0 .5rem}
.cal{--col:34px;border:1px solid var(--line);background:#fff;overflow:auto}
.cal-ligne{display:grid;grid-template-columns:170px 1fr;border-bottom:1px solid var(--line);min-height:44px}
.cal-ligne:last-child{border-bottom:0}
.cal-nom{padding:.5rem .8rem;font-size:.84rem;border-right:1px solid var(--line);background:var(--lat);position:sticky;left:0;z-index:2;line-height:1.25}
.cal-jours{display:grid;position:relative}
.cal-jour{border-right:1px solid rgba(19,42,56,.07);text-align:center;font-size:.66rem;color:var(--ink-65);padding:.25rem 0}
.cal-jour.we{background:rgba(19,42,56,.03)}
.cal-jour.auj{background:#F4EBD0;color:var(--ink)}
.cal-entete .cal-jours{min-height:44px}
.cal-entete .cal-nom{font-size:.62rem;letter-spacing:.16em;text-transform:uppercase}
.cal-barre-sejour{position:absolute;top:6px;height:30px;background:var(--bleu);color:#fff;font-size:.72rem;line-height:30px;padding:0 .5rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border:0;text-align:left;z-index:1}
.cal-barre-sejour.en_cours{background:var(--vert)}
.cal-barre-sejour.terminee{background:#8794A0}
.cal-barre-sejour.conflit{outline:2px solid var(--rouge);outline-offset:1px}
.cal-bloc{position:absolute;top:6px;height:30px;background:repeating-linear-gradient(45deg,#E7DFC8,#E7DFC8 6px,#F2EBD6 6px,#F2EBD6 12px);color:#5E4F27;font-size:.7rem;line-height:30px;padding:0 .5rem;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;z-index:1}
.cal-point{position:absolute;bottom:3px;width:9px;height:9px;border-radius:50%;background:var(--brass);border:0;padding:0;cursor:pointer;z-index:3}
.cal-point.fait{background:var(--vert)}
.cal-point.urgente{background:var(--rouge)}
.legende{display:flex;gap:1.2rem;flex-wrap:wrap;font-size:.76rem;color:var(--ink-72);margin:.8rem 0 0}
.legende i{display:inline-block;width:12px;height:12px;margin-right:.35rem;vertical-align:-1px}
.agenda-j{margin-bottom:1.2rem}
.agenda-j h4{margin-bottom:.4rem}
/* Fiche logement / guide */
.etat-integr{display:grid;grid-template-columns:auto 1fr auto;gap:.6rem 1rem;align-items:center;font-size:.92rem}
.guide-item{border:1px solid var(--line);background:var(--paper);padding:1rem 1rem .4rem;margin-bottom:.8rem}
.imprimer-seul{display:none}
.cat-grille{grid-template-columns:2fr 1fr 1fr 1.4fr}
.cat-grille .field:nth-child(1),.cat-grille .field:nth-child(2){grid-column:auto}
.pilule{display:inline-block;font-size:.72rem;padding:.1rem .5rem;border-radius:999px;background:var(--lat);color:var(--ink-72)}
@media (max-width:1000px){
  .coque{grid-template-columns:1fr}
  .lat{position:fixed;left:0;top:0;bottom:0;width:272px;z-index:60;transform:translateX(-102%);transition:transform .3s var(--ease);box-shadow:var(--ombre)}
  .lat.ouvert{transform:none}
  .menu-bouton{display:block}
  .grille-2,.grille-3{grid-template-columns:1fr}
  .cat-grille{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
  .cal-ligne{grid-template-columns:110px 1fr}
  .etape{grid-template-columns:28px 1fr}
  .etape .btn{grid-column:2}
  .kv{grid-template-columns:1fr}
}
@media print{
  .lat,.barre,.no-print,.barre-fixe,.sous-onglets,.vue-tete .btn{display:none!important}
  .coque{display:block}
  .contenu{max-width:none;padding:0}
  .imprimer-seul{display:block}
  .carte{border:0;padding:0}
}

/* Champs insérables dans les modèles */
.chips { display: flex; flex-wrap: wrap; gap: .4rem; margin: .4rem 0 1rem; }
.chip { font: inherit; font-size: .78rem; padding: .25rem .6rem; border: 1px solid var(--trait, #d8d2c4); background: #fff; color: var(--encre, #1d2b36); border-radius: 999px; cursor: pointer; }
.chip:hover { border-color: var(--brass, #9a7b3f); background: #f6f1e4; }
