/* constatséjour — direction "hospitalité soignée" : vert forêt + crème + laiton,
   serif (Fraunces) pour la voix, sans (Inter) pour l'interface. */

:root {
  --forest:#0E5A4F; --forest-d:#0A3F37;
  --ink:#1B2621; --muted:#6E7C74;
  --cream:#F4EFE5; --cream-hi:#FBF8F1;
  --card:#FFFFFF; --line:#E7E1D4;
  --brass:#B08A4F;
  --warn:#B4552F; --warn-bg:#F6E8E1; --warn-line:#E9D3C7;
  --ok-bg:#E7F1EC; --ok-ink:#0A3F37;
  --radius:16px; --pad:18px; --tap:52px;
  --col:620px; /* largeur de la colonne principale — élargie sur grand écran ci-dessous */
  --serif:'Fraunces', Georgia, 'Times New Roman', serif;
  --sans:'Inter', system-ui, -apple-system, sans-serif;
  --mono:ui-monospace, SFMono-Regular, Menlo, monospace;
  --shadow:0 18px 44px -22px rgba(16,42,34,.42);
  --shadow-sm:0 8px 20px -12px rgba(16,42,34,.34);
  font-family:var(--sans);
}

@media (min-width:900px)  { :root { --col:820px; } }
@media (min-width:1200px) { :root { --col:1000px; } }

* { box-sizing:border-box; }
html, body { margin:0; color:var(--ink); }
body {
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(120% 70% at 50% -8%, var(--cream-hi) 0%, var(--cream) 58%, #EAE3D5 100%)
    fixed;
}

#app { min-height:100dvh; }
#app.loading { display:grid; place-items:center; color:var(--muted); }

.screen {
  max-width:var(--col); margin:0 auto;
  padding:0 var(--pad) calc(var(--tap) + 48px);
  min-height:100dvh;
}

/* ---- Top bar (bandeau forêt) ---- */
/* Enveloppe sticky : porte le fond opaque (derrière les coins arrondis) pour que le
   contenu qui défile ne transparaisse jamais dans les découpes de l'arrondi. */
.topbar-wrap {
  position:sticky; top:0; z-index:10;
  margin:0 calc(-1 * var(--pad)) 16px;
}
.topbar-bg { position:absolute; inset:0; background:var(--cream-hi); z-index:0; }
.topbar {
  position:relative; z-index:1;
  display:grid; grid-template-columns:44px 1fr 44px; align-items:center; gap:8px;
  padding:16px var(--pad);
  background:linear-gradient(158deg, var(--forest), var(--forest-d));
  color:#fff; border-radius:0 0 22px 22px;
}
.topbar-title {
  font-family:var(--serif); font-weight:500; font-size:1.2rem; letter-spacing:-.01em;
  text-align:center; margin:0; color:#fff;
}
.icon-btn {
  height:44px; min-width:44px; border:none; background:none; cursor:pointer;
  font-size:1.6rem; line-height:1; color:var(--ink); border-radius:12px;
}
.topbar .icon-btn { color:#fff; }
.icon-btn.ghost { visibility:hidden; }
.icon-btn.danger { color:var(--warn); font-size:1.4rem; }

/* ---- Logement cards (avec photo) ---- */
.list { display:flex; flex-direction:column; gap:13px; margin:8px 0; }

.lg-card {
  display:block; width:100%; text-align:left; padding:0; cursor:pointer; overflow:hidden;
  background:var(--card); border:1px solid var(--line); border-radius:20px; box-shadow:var(--shadow-sm);
}
.lg-card:active { transform:scale(.995); }
.lg-photo { position:relative; height:104px; background:linear-gradient(135deg,#B7C4BC,#7C978B); }
.lg-photo.ph { background:linear-gradient(135deg,#C8D0C9,#9FB1A7); }
.lg-img { width:100%; height:100%; object-fit:cover; display:block; }
.lg-tag {
  position:absolute; top:11px; right:11px; font-size:11px; font-weight:600;
  padding:5px 11px; border-radius:999px; background:rgba(255,255,255,.94);
}
.lg-tag.ok { color:var(--ok-ink); }
.lg-tag.warn { color:var(--warn); }
.lg-info { display:flex; justify-content:space-between; align-items:flex-end; padding:13px 15px; }
.lg-name { font-family:var(--serif); font-size:17px; font-weight:500; }
.lg-sub { font-size:12px; color:var(--muted); margin-top:2px; }
.lg-date { font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; white-space:nowrap; }

/* ---- Rows (historique, liens serveur) ---- */
.row {
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  width:100%; text-align:left; padding:14px 16px; cursor:pointer;
  background:var(--card); border:1px solid var(--line); border-radius:14px;
  font-size:.85rem; color:var(--ink);
}

/* ---- Pills ---- */
.pill { font-size:.72rem; font-weight:600; padding:5px 11px; border-radius:999px; white-space:nowrap; }
.pill.ok   { background:var(--ok-bg);   color:var(--ok-ink); }
.pill.warn { background:var(--warn-bg); color:var(--warn); }
.pill.big  { font-size:.85rem; padding:7px 15px; }

/* ---- Passeport ---- */
.passeport {
  display:grid; grid-template-columns:repeat(3,1fr);
  background:var(--card); border:1px solid var(--line); border-radius:20px;
  box-shadow:var(--shadow-sm); overflow:hidden; margin:4px 0 18px;
}
.passeport-stat { padding:18px 8px; text-align:center; border-right:1px solid var(--line); }
.passeport-stat:last-child { border-right:none; }
.passeport-stat .num { display:block; font-family:var(--serif); font-size:1.7rem; font-weight:500; line-height:1; }
.passeport-stat .num.warn { color:var(--warn); }
.passeport-stat .lbl { display:block; font-size:.72rem; color:var(--muted); margin-top:6px; }

/* ---- Sections ---- */
.section { margin:18px 0; }
.section-head {
  display:flex; align-items:center; justify-content:space-between;
  font-size:.72rem; font-weight:600; letter-spacing:.12em; text-transform:uppercase;
  color:var(--muted); margin-bottom:10px;
}

/* ---- Forms ---- */
.form { display:flex; flex-direction:column; gap:16px; margin:8px 0; }
.field { display:flex; flex-direction:column; gap:6px; }
.label { font-size:.8rem; font-weight:600; color:var(--muted); }
.input {
  width:100%; font:inherit; font-family:var(--sans); padding:13px 15px; color:var(--ink);
  background:var(--card); border:1px solid var(--line); border-radius:13px;
}
.input:focus-visible { outline:2px solid var(--forest); outline-offset:1px; border-color:var(--forest); }
.input.err { border-color:var(--warn); }
textarea.input { min-height:84px; resize:vertical; }
.flex { flex:1; }
.piece-edit-list { display:flex; flex-direction:column; gap:8px; }
.piece-edit-row { display:flex; align-items:center; gap:8px; }

/* ---- Buttons ---- */
.btn {
  font:inherit; font-family:var(--sans); font-weight:600; min-height:var(--tap); padding:0 20px;
  border-radius:15px; border:1px solid transparent; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
}
.btn.block { width:100%; }
.btn.primary { background:var(--forest); color:#fff; box-shadow:var(--shadow-sm); }
.btn.primary:active { background:var(--forest-d); }
.btn.warn { background:#fff; color:var(--warn); border-color:var(--warn-line); }
.btn.ghost { background:#fff; color:var(--ink); border-color:var(--line); }
.btn.disabled, .btn:disabled { opacity:.4; pointer-events:none; }
.btn:focus-visible { outline:2px solid var(--ink); outline-offset:2px; }
.spacer { flex:1; }

/* ---- Bottom action bar ---- */
.bottombar {
  position:fixed; left:0; right:0; bottom:0; z-index:10;
  display:flex; gap:10px; padding:14px var(--pad) calc(14px + env(safe-area-inset-bottom));
  background:color-mix(in srgb, var(--cream-hi) 90%, transparent);
  backdrop-filter:blur(8px); border-top:1px solid var(--line);
}
.bottombar .btn { flex:1; }
.screen > .bottombar { max-width:var(--col); margin:0 auto; }

/* ---- Empty state ---- */
.empty { text-align:center; padding:52px 16px; }
.empty-title { font-family:var(--serif); font-size:1.25rem; font-weight:500; }
.empty-sub { color:var(--muted); margin-top:8px; line-height:1.55; }

/* ---- Stepper ---- */
.stepper { padding-top:4px; }
.stack { display:flex; flex-direction:column; gap:14px; }

.step { display:flex; flex-direction:column; gap:14px; }
.step-count { font-family:var(--mono); font-size:.76rem; color:var(--muted); }
.step-title { font-family:var(--serif); font-size:1.6rem; font-weight:500; margin:0; letter-spacing:-.01em; }
.hint { color:var(--muted); font-size:.9rem; margin:0; line-height:1.5; }

.photo-wrap, .photo-placeholder { border-radius:14px; overflow:hidden; }
.photo-placeholder {
  display:grid; place-items:center; aspect-ratio:4/3; color:var(--muted);
  background:var(--card); border:1px dashed var(--line); font-size:.9rem;
}
.thumb { width:100%; height:100%; object-fit:cover; display:block; }

.shot-row { display:grid; grid-template-columns:1fr 92px; gap:10px; align-items:start; }
.shot-main .photo-placeholder, .shot-main .thumb { aspect-ratio:4/3; width:100%; }
.ref-mini { margin:0; }
.ref-mini .thumb { aspect-ratio:3/4; border-radius:12px; border:1px solid var(--line); }
.ref-mini figcaption { font-size:.66rem; color:var(--muted); text-align:center; margin-top:4px; }
.ref-mini.empty { display:grid; place-items:center; aspect-ratio:3/4; border:1px dashed var(--line); border-radius:12px; }

.file-btn { position:relative; overflow:hidden; }
.file-btn.loading { opacity:.6; pointer-events:none; }
.file-hidden { position:absolute; inset:0; opacity:0; cursor:pointer; }

/* ---- Progress ---- */
.progress { display:flex; gap:5px; margin:8px 0 16px; }
.progress .seg { flex:1; height:4px; border-radius:3px; background:var(--line); }
.progress .seg.done { background:var(--forest); }
.progress .seg.current { background:var(--brass); }

/* ---- Damage branch ---- */
.damage-box { display:flex; flex-direction:column; gap:12px; padding-top:4px; }
.damage-box.hidden, .hidden { display:none !important; }
.extras { display:flex; flex-wrap:wrap; gap:8px; }
.extras .thumb { width:74px; height:74px; border-radius:12px; }

/* ---- Recap ---- */
.recap-head { text-align:center; padding:10px 0 18px; display:flex; flex-direction:column; gap:8px; align-items:center; }
.recap-title { font-family:var(--serif); font-size:1.4rem; font-weight:500; }
.mono { font-family:var(--mono); font-size:.8rem; color:var(--muted); }
.recap-piece { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:14px; }
.recap-piece.degat { border-color:var(--warn-line); }
.recap-piece-head { display:flex; align-items:center; justify-content:space-between; font-weight:600; }
.thumb-row { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.thumb-row .thumb { width:86px; height:86px; border-radius:12px; }

/* ---- Lien voyageur ---- */
.linkbox {
  font-family:var(--mono); font-size:.78rem; word-break:break-all;
  background:var(--card); border:1px solid var(--line); border-radius:14px; padding:12px; margin:8px 0;
}
.link-actions { display:flex; gap:10px; }
.link-actions .btn { flex:1; }
.attest { display:flex; gap:10px; align-items:flex-start; font-size:.85rem; padding:4px 0; line-height:1.45; }
.attest input { margin-top:3px; width:20px; height:20px; flex:none; accent-color:var(--forest); }

/* ---- Bandeau de connexion ---- */
.auth-strip {
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
  padding:10px 13px; margin:0 0 14px;
  background:var(--card); border:1px solid var(--line); border-radius:14px; font-size:.8rem;
}
.auth-ok { color:var(--ok-ink); font-weight:600; }
.auth-warn { color:var(--muted); }
.auth-email { color:var(--muted); font-family:var(--mono); font-size:.72rem; }
.auth-link {
  margin-left:auto; background:none; border:none; padding:4px;
  color:var(--forest); font:inherit; font-weight:600; cursor:pointer;
}

/* ---- Guidage / prise en main ---- */
.welcome { padding:14px 4px 8px; }
.welcome-title { font-family:var(--serif); font-size:1.5rem; font-weight:500; }
.welcome-sub { color:var(--muted); margin:8px 0 22px; line-height:1.55; }
.wsteps { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.wstep { display:flex; gap:14px; align-items:flex-start; }
.wnum {
  flex:none; width:30px; height:30px; border-radius:50%; display:grid; place-items:center;
  font-family:var(--serif); font-weight:600; font-size:.95rem;
  color:var(--brass); background:#F4ECDD; border:1px solid #E7D6BB;
}
.wstep-t { font-weight:600; font-size:.98rem; }
.wstep-d { color:var(--muted); font-size:.85rem; margin-top:2px; line-height:1.45; }

/* ---- Photos requises (voyageur) + concordance (proprio) ---- */
.ref-mini.wide { margin:0 0 6px; }
.ref-mini.wide .thumb { aspect-ratio:16/10; border-radius:12px; border:1px solid var(--line); }
.req-list { display:flex; flex-direction:column; gap:12px; margin:4px 0; }
.req-item { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:12px; }
.req-label { font-weight:600; font-size:.9rem; margin-bottom:8px; }
.req-row { display:flex; align-items:center; gap:12px; }
.req-shot { width:88px; height:88px; flex:none; border-radius:12px; display:grid; place-items:center;
  background:var(--cream); border:1px dashed var(--line); color:var(--muted); font-size:.72rem; overflow:hidden; }
.req-shot .thumb { width:100%; height:100%; }
.req-row .file-btn { flex:1; }
.req-ref { margin:0; width:64px; flex:none; }
.req-ref .thumb { width:64px; height:64px; border-radius:10px; border:1px solid var(--line); }
.req-ref figcaption { font-size:.6rem; color:var(--muted); text-align:center; margin-top:2px; }

.conc-list { display:flex; flex-direction:column; gap:12px; margin-top:10px; }
.conc-item { border-top:1px solid var(--line); padding-top:10px; }
.conc-label { display:flex; align-items:center; justify-content:space-between; gap:10px; font-weight:600; font-size:.88rem; margin-bottom:8px; }
.conc-pair { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.conc-cell { margin:0; }
.conc-cell .thumb { aspect-ratio:4/3; border-radius:10px; border:1px solid var(--line); }
.conc-cell figcaption { font-size:.66rem; color:var(--muted); text-align:center; margin-top:3px; }
.conc-cell.empty { display:grid; place-items:center; aspect-ratio:4/3; border:1px dashed var(--warn-line);
  border-radius:10px; color:var(--warn); font-size:.72rem; }

.qr-box { margin-top:22px; padding-top:18px; border-top:1px solid var(--line); text-align:center; }
.qr-box .label { text-align:left; }
.qr-wrap { width:200px; height:200px; margin:12px auto 4px; }
.qr-wrap svg { width:100%; height:100%; display:block; }

.msg-preview { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:14px;
  font-size:.9rem; line-height:1.55; white-space:pre-wrap; color:var(--ink); margin:8px 0 12px; }
.msg-edit { min-height:130px; margin:8px 0 12px; }
.linkbtn { background:none; border:none; color:var(--forest); font:inherit; font-weight:600; cursor:pointer; padding:8px 2px; font-size:.85rem; }
.linkbtn:active { opacity:.6; }
.link-actions-row { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-top:8px; }

/* ---- Barre d'onglets (écran logement) ---- */
.tabbar {
  position:fixed; left:0; right:0; bottom:0; z-index:11;
  display:flex; background:#fff; border-top:1px solid var(--line);
  padding:8px 6px calc(8px + env(safe-area-inset-bottom));
}
.screen > .tabbar { max-width:var(--col); margin:0 auto; }
.tabbtn {
  flex:1; display:flex; flex-direction:column; align-items:center; gap:3px;
  padding:6px 2px; border:none; background:none; cursor:pointer;
  color:var(--muted); font:inherit; font-size:10.5px; font-weight:500; white-space:nowrap; min-width:0;
}
.tabbtn svg { width:21px; height:21px; }
.tabbtn .ic { padding:3px 10px; border-radius:9px; display:block; line-height:0; }
.tabbtn.on { color:var(--forest); font-weight:600; }
.tabbtn.on .ic { background:var(--ok-bg); }
.tabbtn.off { opacity:.45; }
/* la barre d'onglets remplace la barre d'action : on remonte celle-ci au-dessus */
.screen.tabbed { padding-bottom:calc(var(--tap) + 108px); }
.screen.tabbed > .bottombar { bottom:72px; border-radius:0; }

/* Lignes de la page Gestion */
.grow { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%;
  text-align:left; background:var(--card); border:1px solid var(--line); border-radius:13px;
  padding:13px; margin-bottom:8px; cursor:pointer; font:inherit; font-size:.85rem; color:var(--ink); }
.grow .glab { display:flex; align-items:center; gap:10px; }
.grow .glab svg { width:17px; height:17px; color:var(--forest); flex:none; }
.grow .chev { color:#C6CFC9; font-size:16px; }

/* ---- Journal du logement ---- */
.jrow { display:flex; gap:10px; margin-bottom:14px; }
.jic { width:30px; height:30px; border-radius:50%; flex:none; display:grid; place-items:center; }
.jic svg { width:15px; height:15px; }
.j-ok { background:var(--ok-bg); color:var(--forest); }
.j-warn { background:var(--warn-bg); color:var(--warn); }
.j-conc { background:#E2ECF1; color:#2F5D74; }
.j-msg { background:#F4ECDD; color:var(--brass); }
.jbody { flex:1; min-width:0; }
.jbody .jt { font-size:.82rem; line-height:1.4; font-weight:500; }
.jbody .jm { font-size:.68rem; color:var(--muted); margin-top:2px; }
.jbubble { background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:9px 11px; font-size:.8rem; margin-top:5px; line-height:1.45; white-space:pre-line; }
.jbubble .thumb { width:100%; max-width:190px; border-radius:10px; margin-top:6px; }
.jclick { cursor:pointer; }
.lg-tag.depart { background:var(--brass); color:#fff; }

/* Point "non lu" */
.dot-unread {
  display:inline-block; width:8px; height:8px; border-radius:50%;
  background:var(--warn); margin-left:6px; vertical-align:middle;
}
.tabbtn .ic { position:relative; }
.dot-unread.tab {
  position:absolute; top:1px; right:5px; margin:0; width:7px; height:7px;
  box-shadow:0 0 0 2px #fff;
}

/* Bandeau contact en haut du journal */
.contact-bar { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  background:var(--card); border:1px solid var(--line); border-radius:14px; padding:12px 14px; margin:4px 0 10px; }
.contact-actions { display:flex; gap:8px; }
.contact-actions .btn { min-height:40px; padding:0 14px; font-size:.8rem; text-decoration:none; }

/* Composer de message, au-dessus de la barre d'onglets */
.composer { display:flex; gap:8px; align-items:center; width:100%; }
.composer .input { flex:1 1 auto; min-width:0; min-height:46px; max-height:96px; }
/* photoBtn impose .block (100%) : on le neutralise ici pour garder une icône compacte */
.composer .file-btn { flex:0 0 auto; width:46px; min-width:46px; padding:0; font-size:18px; }
.composer .btn.primary { flex:0 0 auto; padding:0 16px; }
.composer-preview .thumb { width:56px; height:56px; border-radius:10px; }

.gate-intro { text-align:center; padding:18px 6px 6px; }
.gate-title { font-family:var(--serif); font-size:1.5rem; font-weight:500; margin-bottom:8px; }

/* Invite d'installation (écran d'accueil du téléphone) */
.inst-slot.on { margin:14px 0 4px; }
.inst-card {
  position:relative; display:flex; gap:14px; align-items:flex-start;
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  padding:16px 44px 16px 16px; box-shadow:var(--shadow-sm);
  border-left:4px solid var(--brass);
  animation:inst-in .35s ease-out both;
}
@keyframes inst-in { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:none; } }
.inst-icon { width:44px; height:44px; border-radius:11px; flex:0 0 auto; box-shadow:0 2px 6px rgba(16,42,34,.18); }
.inst-body { flex:1 1 auto; min-width:0; }
.inst-title { margin:0 0 4px; font-family:var(--serif); font-size:1.05rem; font-weight:500; color:var(--forest-d); line-height:1.3; }
.inst-sub { margin:0; color:var(--muted); font-size:.88rem; line-height:1.45; }
.inst-steps { margin:6px 0 0; padding-left:20px; color:var(--ink); font-size:.9rem; line-height:1.7; }
.inst-share { display:inline-flex; vertical-align:-3px; color:#0A7AFF; }
.inst-actions { display:flex; align-items:center; gap:16px; margin-top:12px; flex-wrap:wrap; }
.inst-btn { min-height:42px; padding:0 22px; }
.inst-actions .auth-link { margin-left:0; }
.inst-close {
  position:absolute; top:8px; right:8px; width:32px; height:32px; border:0; border-radius:50%;
  background:transparent; color:var(--muted); font-size:22px; line-height:1; cursor:pointer;
}
.inst-close:hover { background:var(--cream); color:var(--ink); }
.inst-card.perm { padding-right:16px; animation:none; }
.inst-card.perm.ok { border-left-color:var(--forest); }
.inst-card.perm.ok .inst-title { color:var(--forest); }

/* Thème conciergerie : bleu ardoise, pour différencier du propriétaire (vert). */
/* Thème voyageur : palette légère et chaleureuse (sauge/pêche/soleil), sur fond crème clair. */
.screen.guest {
  --forest:#6E9B7F; --forest-d:#4F7862; --warn:#C97A2E; --warn-bg:#FBEDDD; --warn-line:#F0D3A8;
  background:linear-gradient(180deg, #FFF9EF 0%, #FBF3E4 100%);
}
.screen.guest .topbar-bg { background:#FFF9EF; }
.screen.guest .topbar { border-radius:0 0 26px 26px; }
.screen.guest .btn.warn { color:var(--warn); }
/* Boutons en gélule + un peu plus hauts */
.screen.guest .btn { border-radius:26px; min-height:52px; }
.screen.guest .guide-btn, .screen.guest .file-btn { border-radius:26px; }
/* Titres de pièce plus grands et accentués sauge */
.screen.guest .step-title { color:var(--forest-d); }
.screen.guest .step-count { color:#B79B6B; letter-spacing:.04em; }
/* Cadres photo : grands arrondis, pointillé pêche, icône appareil photo */
.screen.guest .photo-placeholder,
.screen.guest .req-shot { border:2px dashed #E9C89A; border-radius:20px; background:#fff; color:#B79B6B; }
.screen.guest .photo-placeholder { aspect-ratio:4/3; display:grid; place-items:center; gap:4px; font-size:12.5px; }
.screen.guest .photo-placeholder::before { content:'📷'; font-size:30px; display:block; }
.screen.guest .ref-mini .thumb, .screen.guest .req-ref .thumb,
.screen.guest .photo-wrap, .screen.guest .thumb { border-radius:16px; }
/* Progression : pastilles arrondies couleur soleil */
.screen.guest .progress { gap:6px; }
.screen.guest .progress .seg { height:8px; border-radius:5px; background:#EFE1C6; }
.screen.guest .progress .seg.done { background:#D9B98A; }
.screen.guest .progress .seg.current { background:#E8A33D; }
/* Cartes/encarts un peu plus doux */
.screen.guest .req-item { border-radius:18px; border-color:#EFE1CC; }
.screen.guest .input { border-radius:16px; border-color:#EAD9BC; }
/* En-tête d'accueil : petit avatar rond façon "invité" */
.guest-hello { display:flex; align-items:center; gap:12px; margin:6px 0 4px; }
.guest-hello .ava { width:46px; height:46px; border-radius:50%; background:#F2C9A0; display:grid; place-items:center; font-size:24px; flex:none; }
.guest-hello .htxt .h1 { font-family:var(--serif); font-size:20px; font-weight:500; color:var(--forest-d); }
.guest-hello .htxt .h2 { font-size:13px; color:var(--muted); margin-top:1px; }

.screen.conc { --forest:#2F5D74; --forest-d:#1E4152; }
.pill.conc { background:#E2ECF1; color:#1E4152; }

/* ---- Caméra intégrée ---- */
.cam-overlay { position:fixed; inset:0; z-index:1000; background:#000; display:flex; flex-direction:column; }
.cam-overlay video { flex:1; width:100%; height:100%; object-fit:cover; background:#000; }
.cam-bar { position:absolute; left:0; right:0; bottom:0; display:flex; align-items:center; justify-content:space-between;
  gap:18px; padding:24px 28px calc(24px + env(safe-area-inset-bottom)); }
.cam-shutter { width:74px; height:74px; border-radius:50%; flex:none; cursor:pointer;
  background:#fff; border:5px solid rgba(255,255,255,.45); box-shadow:0 0 0 2px rgba(0,0,0,.25); }
.cam-shutter:active { transform:scale(.94); }
.cam-btn { background:rgba(0,0,0,.45); color:#fff; border:1px solid rgba(255,255,255,.35); border-radius:12px;
  padding:12px 16px; font:inherit; font-size:15px; cursor:pointer; -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.cam-cancel { min-width:88px; }
.cam-flip { min-width:56px; font-size:20px; line-height:1; }

.photo-date { font-size:.75rem; color:var(--muted); margin:6px 2px 0; }
.ref-extra-list { display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 8px; }
.ref-extra { position:relative; margin:0; width:88px; }
.ref-extra .thumb { width:88px; height:88px; border-radius:12px; }
.ref-extra figcaption { font-size:.6rem; color:var(--muted); text-align:center; margin-top:3px; line-height:1.2; }
.ref-x { position:absolute; top:4px; right:4px; width:22px; height:22px; border-radius:50%; border:none;
  background:rgba(27,38,33,.72); color:#fff; font-size:15px; line-height:1; cursor:pointer; }

.welcome-login { text-align:center; margin:20px 0 0; color:var(--muted); font-size:.9rem; }

.guide {
  background:linear-gradient(160deg, var(--forest), var(--forest-d));
  color:#fff; border-radius:18px; padding:16px 17px; margin:0 0 16px; box-shadow:var(--shadow-sm);
}
.guide-step {
  display:inline-block; font-size:.68rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase;
  color:#EBD9B8; margin-bottom:7px;
}
.guide-text { font-size:.92rem; line-height:1.5; color:#F0F5F2; }
.guide-btn { margin-top:14px; width:100%; background:#fff; color:var(--forest-d); box-shadow:none; }
.guide-btn:active { background:#F1ECE0; }

.nudge {
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  background:#F4ECDD; border:1px solid #E7D6BB; border-radius:14px; padding:12px 14px; margin:6px 0 2px;
  font-size:.85rem; color:var(--ink);
}
.nudge .auth-link { margin-left:auto; }
.guest-decouverte { text-align:center; font-size:.88rem; color:var(--muted); margin:28px 16px 8px; }
.guest-decouverte a { color:var(--forest-d); font-weight:600; text-decoration:underline; text-underline-offset:2px; }

@media (prefers-reduced-motion: reduce) {
  * { transition:none !important; animation:none !important; }
}

/* ---------- Livret d'accueil ---------- */
.lv-master{display:flex;gap:14px;align-items:center;justify-content:space-between;background:var(--forest);color:#fff;border-radius:var(--radius);padding:14px 16px;margin-top:10px}
.lv-master b{display:block;font-size:.98rem}.lv-master span{display:block;font-size:.82rem;color:#CFE3DA;line-height:1.4;margin-top:2px}
.lv-sec{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 14px 16px;display:flex;flex-direction:column;gap:10px}
.lv-sec-h{display:flex;align-items:center;gap:10px}.lv-sec-h b{flex:1;font-size:.98rem}
.lv-ic{width:32px;height:32px;border-radius:10px;background:var(--ok-bg);display:grid;place-items:center;font-size:16px;flex:none}
.lv-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lv-tg{appearance:none;-webkit-appearance:none;width:44px;height:26px;border-radius:999px;background:#D8D2C4;position:relative;cursor:pointer;flex:none;margin:0;transition:background .15s}
.lv-tg::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.lv-tg:checked{background:var(--forest)}.lv-tg:checked::after{left:21px}
.lv-master .lv-tg:checked{background:#7FC3A8}
.lv-warn,.lv-lock{font-size:.84rem;color:#7A5A26;background:#FFF6E3;border-radius:10px;padding:8px 10px;margin:0;line-height:1.45}
.lv-cons{white-space:pre-line;font-size:.9rem;background:var(--cream-hi);border-radius:10px;padding:10px 12px;margin:0}
.lv-info{background:var(--cream-hi);border:1px dashed var(--line);border-radius:var(--radius);padding:12px 14px;font-size:.86rem;color:var(--muted)}
.lv-info b{color:var(--ink)}.lv-info ul{margin:6px 0 0;padding-left:18px}.lv-info li{margin:3px 0;line-height:1.45}

.screen.guest.livret{padding:0 0 190px;max-width:620px}
.lv-hero{background:linear-gradient(158deg,#4F7862,#36584A);color:#fff;padding:26px 20px 22px;border-radius:0 0 28px 28px}
.lv-hero small{color:#CFE3DA;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700}
.lv-hero h1{font-family:var(--serif);font-weight:500;font-size:1.75rem;margin:4px 0 14px;line-height:1.15}
.lv-times{display:flex;gap:10px}
.lv-times div{flex:1;background:rgba(255,255,255,.12);border-radius:14px;padding:9px 12px;font-size:.78rem;color:#CFE3DA}
.lv-times b{display:block;color:#fff;font-family:var(--serif);font-weight:500;font-size:1.15rem}
.lv-bienvenue{margin:16px 20px 4px;font-family:var(--serif);font-size:1.08rem;line-height:1.5;color:var(--forest-d);white-space:pre-line}
.lv-off,.lv-apercu{margin:12px 16px 0;font-size:.85rem;background:#FFF6E3;color:#7A5A26;border-radius:12px;padding:9px 12px}
.lv-apercu{margin:0;border-radius:0;text-align:center;background:#1B2621;color:#fff}
.lv-card{background:#fff;border:1px solid #EFE6D6;border-radius:18px;padding:14px 16px;margin:12px 16px}
.lv-card h3{display:flex;align-items:center;gap:8px;font-size:.98rem;margin:0 0 8px;color:var(--ink)}
.lv-card ul{margin:0;padding-left:20px}.lv-card li{margin:3px 0;line-height:1.5}
.lv-txt{white-space:pre-line;margin:0;line-height:1.55;font-size:.95rem}
.lv-txt a{color:var(--forest);font-weight:600}
.lv-wifi{display:flex;align-items:center;justify-content:space-between;gap:12px}
.lv-wifi span{display:block;font-size:.75rem;color:var(--muted);margin-top:4px}
.lv-wifi b{font-size:1rem}.lv-wifi code{font-family:var(--mono);font-size:1.05rem;font-weight:600;color:var(--ink);word-break:break-all}
.lv-copy{border:0;background:var(--ok-bg);color:var(--forest);font-weight:700;font-size:.85rem;border-radius:10px;padding:9px 12px;cursor:pointer;flex:none}
.lv-addr{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid #F1EADC;font-size:.94rem}
.lv-addr:first-of-type{border-top:0}.lv-addr span{color:var(--muted);text-align:right;font-size:.86rem}
.lv-foot{text-align:center;font-size:.8rem;color:var(--muted);margin:18px 16px}.lv-foot a{color:var(--forest-d);font-weight:600}
.lv-depart{position:fixed;left:50%;transform:translateX(-50%);bottom:12px;width:min(596px,calc(100% - 24px));background:var(--cream);border:1px solid #EAD9BC;border-radius:20px;padding:12px 14px 14px;box-shadow:0 -12px 30px -16px rgba(16,42,34,.45);z-index:20}
.lv-depart b{display:block;font-size:.95rem;color:var(--ink)}.lv-depart span{display:block;font-size:.82rem;color:var(--muted);margin:2px 0 10px}

/* Livret v2 : accès réservé au séjour, adresses, liste de départ, QR Wi-Fi, anglais */
.lv-ok{font-size:.84rem;color:var(--ok-ink);background:var(--ok-bg);border-radius:10px;padding:8px 10px;margin:0;line-height:1.45}
.lv-mode{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.lv-radio{display:flex;gap:10px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:12px;cursor:pointer;background:#fff}
.lv-radio input{margin:3px 0 0;accent-color:var(--forest);flex:none}
.lv-radio b{display:block;font-size:.9rem}.lv-radio span{display:block;font-size:.8rem;color:var(--muted);line-height:1.35}
.lv-radio.off{opacity:.5;cursor:not-allowed}
.lv-radio:has(input:checked){border-color:var(--forest);background:var(--ok-bg)}
.lv-more summary{cursor:pointer;font-size:.86rem;color:var(--forest);font-weight:600;margin:4px 0 8px}
.lv-more[open]{display:flex;flex-direction:column;gap:8px}
.lv-lieux{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
.lv-lieu{display:flex;flex-direction:column;gap:6px;background:var(--cream-hi);border-radius:12px;padding:10px}
.lv-lieu-h{display:flex;gap:8px;align-items:center}.lv-lieu-h select{flex:1;min-width:0}
.lv-x{border:0;background:#fff;color:var(--warn);font-size:1.3rem;line-height:1;width:34px;height:34px;border-radius:10px;cursor:pointer;flex:none}
.lv-sub{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:10px}
.lv-sub:first-of-type{border-top:0;padding-top:0}.lv-sub b{font-size:.92rem}
.lv-ck-ed{display:flex;flex-direction:column;gap:6px}
.lv-ck-row{display:flex;gap:8px;align-items:flex-start}
.lv-ck-in{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.lv-ck-row.fixe{justify-content:space-between;align-items:center;background:var(--ok-bg);border-radius:10px;padding:9px 12px;font-size:.88rem;color:var(--ok-ink);font-weight:600}
.lv-ck-row.fixe small{font-weight:400;color:var(--muted);font-size:.75rem}
.field.lv-en .label{color:var(--forest)}
.lv-wifi-b{display:flex;flex-direction:column;gap:6px;flex:none}
.lv-qr{text-align:center;margin-top:12px;border-top:1px solid #F1EADC;padding-top:12px}
.lv-qr svg{width:180px;height:180px;display:block;margin:0 auto}
.lv-qr p{font-size:.82rem;color:var(--muted);margin:6px 0 0}
.lv-itin{flex:none;align-self:center;font-size:.82rem;font-weight:700;color:var(--forest);background:var(--ok-bg);border-radius:10px;padding:7px 10px;text-decoration:none;white-space:nowrap}
.lv-itin.big{display:block;text-align:center;margin-top:10px;padding:11px 12px;font-size:.9rem}
.lv-cat{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--muted);margin:12px 0 2px}
.lv-cat:first-of-type{margin-top:0}
.lv-addr>div{min-width:0}.lv-addr .lv-note{display:block;text-align:left;margin-top:2px}
.lv-ck{list-style:none;padding:0!important;margin:8px 0 0}
.lv-ck li{margin:0!important;border-top:1px solid #F1EADC}.lv-ck li:first-child{border-top:0}
.lv-ck label{display:flex;gap:12px;align-items:center;padding:10px 2px;cursor:pointer;font-size:.95rem;line-height:1.4}
.lv-ck input{width:22px;height:22px;accent-color:var(--forest);flex:none;margin:0}
.lv-ck input:checked+span{color:var(--muted);text-decoration:line-through}
.lv-ck-foot{text-align:right;font-size:.78rem;color:var(--muted);margin:2px 0 8px}
.lv-ck-constat{display:block;width:100%;border:0;background:var(--forest);color:#fff;font-weight:700;font-size:.95rem;border-radius:12px;padding:12px;cursor:pointer;font-family:inherit}
.lv-ck-constat.disabled{opacity:.5;cursor:not-allowed}
.lv-card.lv-urgent{border:2px solid var(--forest)}
.lv-banner{margin:-2px 0 10px;background:var(--forest);color:#fff;border-radius:10px;padding:8px 12px;font-weight:700;font-size:.9rem}
.lv-hero-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.lv-lang{border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff;border-radius:999px;padding:5px 12px;font-size:.78rem;font-weight:700;cursor:pointer;font-family:inherit}

/* Livret : modes d'emploi PDF */
.lv-docs-box{margin-top:10px;border-top:1px solid var(--line,#E7E1D4);padding-top:10px}
.lv-docs{display:flex;flex-direction:column;gap:6px;margin:6px 0 8px}
.lv-doc{display:flex;gap:8px;align-items:center;background:var(--cream-hi);border-radius:12px;padding:8px 10px}
.lv-doc-ic{font-size:1.2rem;flex:none}.lv-doc-in{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.lv-doc-in small{font-size:.78rem;color:var(--ink-soft,#55625c)}.lv-doc-in small a{color:var(--forest);font-weight:700}
.lv-docs-g{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.lv-doc-g{display:flex;gap:8px;align-items:baseline;background:var(--ok-bg);border-radius:10px;padding:9px 12px;text-decoration:none;color:var(--forest)}
.lv-doc-g b{flex:1;min-width:0;overflow-wrap:anywhere}.lv-doc-g small{flex:none;font-size:.76rem;opacity:.8}.lv-doc-g.off{opacity:.6}

/* Livret : onglet tableau de bord */
.lv-promo{display:flex;gap:12px;align-items:center;width:100%;margin:12px 0 0;text-align:left;background:#fff;border:1.5px solid var(--ok-bg);border-radius:16px;padding:13px 14px;cursor:pointer;font:inherit;color:inherit}
.lv-promo b{display:block;font-size:.95rem;color:var(--forest-d,#0A3F37)}.lv-promo small{display:block;font-size:.8rem;color:var(--muted);margin-top:2px;line-height:1.4}
.lv-promo .chev{margin-left:auto;color:var(--muted);font-size:1.3rem}
.lv-promo-ic{flex:none;width:42px;height:42px;border-radius:12px;background:var(--ok-bg);color:var(--forest);display:flex;align-items:center;justify-content:center}
.lv-promo-ic.big{width:60px;height:60px;border-radius:16px;margin:0 auto 10px}
.lv-hub-new{text-align:center;background:#fff;border-radius:18px;padding:24px 18px;margin-top:14px}
.lv-hub-new h2{font-family:Georgia,serif;font-weight:normal;font-size:1.35rem;margin:0 0 8px}.lv-hub-new p{color:var(--muted);line-height:1.5;margin:0 0 10px}
.lv-hub-new ul{text-align:left;margin:0 auto 18px;padding-left:20px;max-width:320px;line-height:1.7}
.lv-prog-h{display:flex;justify-content:space-between;align-items:baseline}.lv-prog-h span{font-weight:700;color:var(--forest)}
.lv-bar{height:8px;border-radius:99px;background:var(--cream-hi);overflow:hidden;margin:8px 0 10px}.lv-bar span{display:block;height:100%;background:var(--forest);border-radius:99px}
.lv-chips{display:flex;flex-wrap:wrap;gap:6px}
.lv-chip{border:1px dashed var(--forest);background:none;color:var(--forest);border-radius:99px;padding:6px 11px;font:inherit;font-size:.8rem;font-weight:600;cursor:pointer}
.lv-alert{display:block;width:100%;text-align:left;background:var(--warn-bg);color:var(--warn);border:0;border-radius:14px;padding:11px 13px;font:inherit;cursor:pointer}
.lv-alert b{display:block;font-size:.9rem}.lv-alert span{display:block;font-size:.8rem;margin-top:2px;line-height:1.4;color:#5b3b2a}
.lv-alert.soft{background:var(--ok-bg);color:var(--forest)}.lv-alert.soft span{color:var(--ink,#1B2621)}
.lv-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.lv-act{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;font:inherit;color:inherit;cursor:pointer;min-width:0}
.lv-act-ic{font-size:1.25rem;margin-bottom:4px}.lv-act b{font-size:.92rem}.lv-act small{font-size:.76rem;color:var(--muted)}
.lv-act:active,.lv-chip:active,.lv-promo:active{opacity:.7}
.lv-focus{box-shadow:0 0 0 2px var(--forest)}
@media (max-width:370px){.tabbtn{font-size:9.5px;letter-spacing:-.01em}.tabbtn .ic{padding:3px 8px}}

.lv-rubs{background:#fff;border-radius:16px;overflow:hidden;border:1px solid var(--line)}
.lv-rub{display:flex;align-items:center;gap:12px;padding:11px 14px;cursor:pointer;border-top:1px solid var(--line)}
.lv-rub:first-child{border-top:0}.lv-rub:active{background:var(--cream-hi)}
.lv-rub-ic{font-size:1.15rem;width:26px;text-align:center;flex:none}
.lv-rub-t{flex:1;min-width:0;display:flex;flex-direction:column}.lv-rub-t b{font-size:.92rem}
.lv-rub-t small{font-size:.76rem;font-weight:600}.lv-rub-t small.on{color:var(--forest)}.lv-rub-t small.off{color:var(--muted)}.lv-rub-t small.todo{color:var(--warn)}
.lv-rub .chev{color:var(--muted);font-size:1.3rem;padding:0 6px}

/* Annuaire : fiche conciergerie */
.lv-chip.on{background:var(--forest);color:#fff;border-style:solid}
.ann-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ann-stats>*{background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px;text-align:center;font-size:.78rem;color:var(--muted);text-decoration:none}
.ann-stats b{display:block;font-family:Georgia,serif;font-size:1.4rem;color:var(--forest);font-weight:500}
.screen.conc .lv-promo{border-color:#DCE6EA}

/* Compteur des nuits (résidence principale) */
.rp-card{display:block;width:100%;margin:12px 0 0;text-align:left;background:#fff;border:1px solid var(--line);border-radius:16px;padding:13px 14px;font:inherit;color:inherit;cursor:pointer}
.form .rp-card{width:100%;margin:0}
.rp-t{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.rp-t b{font-size:.9rem}.rp-t small{color:var(--muted);font-size:.72rem}
.rp-n{font-family:Georgia,serif;font-size:1.9rem;color:var(--forest-d);margin-top:2px;line-height:1.2}.rp-n small{font-family:inherit;font-size:.8rem;color:var(--muted)}
.rp-g{height:10px;border-radius:99px;background:#DCE9E2;overflow:hidden;margin:8px 0 6px;position:relative}
.rp-g i{position:absolute;top:0;bottom:0;background:var(--forest)}.rp-g i.f{background:#B08A4F}
.rp-l{display:flex;gap:12px;flex-wrap:wrap;font-size:.72rem;color:var(--muted)}.rp-l em{display:inline-block;width:9px;height:9px;border-radius:3px;background:var(--forest);margin-right:4px;vertical-align:-1px}.rp-l em.f{background:#B08A4F}
.rp-a{background:var(--warn-bg);color:var(--warn);border-radius:12px;padding:9px 11px;font-size:.78rem;margin-top:8px}.rp-a b{display:block;font-size:.82rem}
.rp-card.max .rp-n{color:var(--warn)}

/* Aperçu administrateur (lecture seule) */
.apercu-bar{position:sticky;top:0;height:calc(38px + env(safe-area-inset-top));box-sizing:border-box;z-index:9999;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));background:#B4552F;color:#fff;font-size:13px;line-height:1.3;box-shadow:0 2px 10px rgba(0,0,0,.18)}
.apercu-txt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.apercu-quit{flex:none;border:0;border-radius:999px;background:#fff;color:#B4552F;font-weight:700;font-size:12.5px;padding:6px 12px;cursor:pointer}
.en-apercu .topbar-wrap{top:calc(38px + env(safe-area-inset-top))}

/* Page vitrine conciergerie (éditeur) */
.pv-entree{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:linear-gradient(158deg,#2A5568,#1E4152);color:#fff;border:0;border-radius:18px;padding:14px 16px;margin:12px 0;cursor:pointer;font:inherit}
.pv-entree b{display:block;font-size:15.5px}.pv-entree span{font-size:13px;color:#CFDDE5}
.pv-entree .pv-e-ic{font-size:26px;flex:none;color:#fff}.pv-entree .pv-e-go{margin-left:auto;font-size:28px;color:#fff;flex:none}
.pv-jauge{background:#fff;border:1px solid var(--line,#E7E1D4);border-radius:16px;padding:14px;margin:14px 0}
.pv-j-row{display:flex;justify-content:space-between;align-items:center;gap:6px 8px;flex-wrap:wrap}.pv-j-row b{white-space:nowrap}
.pv-j-n{font-weight:700;color:#B08A4F}
.pv-bar{height:8px;border-radius:99px;background:#EDE6D8;margin:8px 0;overflow:hidden}.pv-bar i{display:block;height:100%;background:#B08A4F;transition:width .3s}
.pv-crit{display:flex;gap:6px;flex-wrap:wrap}.pv-crit span{font-size:12px;font-weight:600;border-radius:99px;padding:3px 9px}
.pv-crit .ok{background:#E7F1EC;color:#0E5A4F}.pv-crit .ko{background:#F6E8E1;color:#B4552F}
.pv-url{display:flex;flex-wrap:wrap;align-items:baseline;gap:0;font-size:14px;margin-bottom:8px;word-break:break-all}.pv-url span{color:#5F6E67}.pv-url b{color:#1E4152}
.pv-2img{display:flex;gap:12px;align-items:flex-start}
.pv-img{position:relative;border-radius:14px;background:#F4EFE5 center/cover no-repeat;border:2px dashed #C9D6D0;display:flex;align-items:center;justify-content:center;color:#5F6E67;font-size:13px;font-weight:600;cursor:pointer;margin-top:6px}
.pv-img[style*="background-image"]{border:0;cursor:default}
.pv-img.logo{width:92px;height:92px}.pv-img.couv{height:92px;width:100%}
.pv-photos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.pv-img.photo{aspect-ratio:4/3;margin-top:6px}
.pv-x{position:absolute;top:5px;right:5px;width:26px;height:26px;border-radius:50%;border:0;background:rgba(27,38,33,.75);color:#fff;font-size:17px;line-height:1;cursor:pointer}
.pv-busy{opacity:.5;pointer-events:none}
.pv-ligne{display:flex;gap:6px;align-items:center;margin-bottom:6px}.pv-ligne .input{margin:0}.pv-ligne .input:first-child{flex:1.6}.pv-ligne .input:nth-child(2){flex:1}
.pv-x2{flex:none;width:34px;height:34px;border-radius:10px;border:1px solid var(--line,#E7E1D4);background:#fff;color:#B4552F;font-size:18px;cursor:pointer}
.pv-faq{background:#FBF8F1;border-radius:12px;padding:8px;margin-bottom:8px}.pv-faq textarea{margin:0}
.pv-actions{display:flex;gap:8px;width:100%}.pv-actions .btn{margin:0;flex:1}.pv-actions .btn.primary{flex:1.4}

.pv-bloc{background:#fff!important;color:#1B2621!important;border:1px solid #E7E1D4;margin-bottom:8px}.pv-bloc b{color:#1B2621!important}.pv-bloc span{color:#5F6E67!important}

/* Photos agrandissables (visionneuse plein écran) */
img.zoomable{cursor:zoom-in}
.lb{position:fixed;inset:0;z-index:10000;background:rgba(10,16,14,.94);display:flex;flex-direction:column}
.lb-zone{flex:1;overflow:auto;display:flex;align-items:center;justify-content:center;-webkit-overflow-scrolling:touch}
.lb-img{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in;display:block}
.lb-zone.zoomed{display:block}.lb-img.zoom{max-width:none;max-height:none;width:220%;cursor:zoom-out}
.lb-x{position:absolute;top:calc(10px + env(safe-area-inset-top));right:12px;z-index:2;width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.16);color:#fff;font-size:28px;line-height:1;cursor:pointer}
.lb-orig{color:#fff;text-align:center;padding:14px;padding-bottom:calc(14px + env(safe-area-inset-bottom));font-size:14px;opacity:.85}

/* ---------- Photothèque ---------- */
.ph-filtres { display:flex; flex-direction:column; gap:10px; margin:6px 0 4px; }
.ph-row2 { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.ph-row2 .input, .ph-piece { min-height:44px; padding:8px 12px; font-size:.9rem; }
.ph-row-types { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.ph-row-types .ph-chips { flex:1 1 auto; }
.ph-piece { width:auto; max-width:100%; flex:0 1 200px; }
.ph-chips { display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; padding-bottom:2px; }
.ph-chips::-webkit-scrollbar { display:none; }
.ph-chip { flex:none; border:1px solid var(--line); background:#fff; color:var(--ink); font:600 .8rem var(--sans); padding:8px 13px; border-radius:999px; cursor:pointer; }
.ph-chip.on { background:var(--forest); border-color:var(--forest); color:#fff; }
.ph-chip.on.a-conciergerie { background:#1E4152; border-color:#1E4152; }
.ph-chip.on.a-voyageur { background:var(--brass); border-color:var(--brass); }
.ph-bar { display:flex; justify-content:space-between; align-items:center; margin:12px 0 4px; }
.ph-count { font-size:.85rem; color:var(--muted); font-weight:600; }
.ph-bar-act { display:flex; gap:14px; }
.ph-link { background:none; border:0; color:var(--forest); font:600 .88rem var(--sans); padding:6px 0; cursor:pointer; }
.ph-day { margin:14px 0 6px; }
.ph-day-head { display:flex; align-items:baseline; gap:8px; margin:0 0 8px; }
.ph-day-t { font-family:var(--serif); font-size:1.02rem; font-weight:600; color:var(--ink); }
.ph-day-n { font-size:.78rem; color:var(--muted); white-space:nowrap; }
.ph-tj { margin-left:auto; font-size:.8rem; display:none; white-space:nowrap; }
.ph.selecting .ph-tj { display:inline; }
.ph-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:6px; }
@media (min-width:900px) { .ph-grid { grid-template-columns:repeat(5, minmax(0,1fr)); } }
.ph-cell { position:relative; display:block; padding:0; border:0; border-radius:10px; overflow:hidden; aspect-ratio:1; background:var(--line); cursor:pointer; }
.ph-cell img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .15s; }
.ph-badge { position:absolute; top:5px; left:5px; font:700 .6rem var(--sans); letter-spacing:.02em; color:#fff; padding:3px 7px; border-radius:999px; background:var(--forest); }
.ph-badge.b-conciergerie { background:#1E4152; }
.ph-badge.b-voyageur { background:var(--brass); }
.ph-cap { position:absolute; left:0; right:0; bottom:0; padding:14px 6px 5px; font-size:.64rem; line-height:1.25; color:#fff; text-align:left; background:linear-gradient(transparent, rgba(0,0,0,.62)); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ph-cap i { display:block; font-style:normal; opacity:.85; overflow:hidden; text-overflow:ellipsis; }
.ph-check { position:absolute; top:5px; right:5px; width:22px; height:22px; border-radius:50%; border:2px solid #fff; background:rgba(0,0,0,.25); display:none; }
.ph.selecting .ph-check { display:block; }
.ph-cell.sel img { transform:scale(.9); }
.ph-cell.sel { outline:3px solid var(--forest); outline-offset:-3px; }
.ph-cell.sel .ph-check { background:var(--forest); }
.ph-cell.sel .ph-check::after { content:''; position:absolute; left:6px; top:2px; width:5px; height:10px; border:solid #fff; border-width:0 2px 2px 0; transform:rotate(45deg); }
.ph-etat { text-align:center; padding:18px 0; }
.ph-sentinelle { height:1px; }
.ph-retention { font-size:.8rem; margin:18px 0 8px; }
.ph.selecting { padding-bottom:110px; }
.ph-selbar { position:fixed; left:0; right:0; bottom:0; z-index:40; background:#fff; border-top:1px solid var(--line); box-shadow:0 -10px 30px -18px rgba(16,42,34,.4); padding:10px 16px calc(10px + env(safe-area-inset-bottom)); display:flex; flex-direction:column; gap:8px; }
.ph-selbar[hidden] { display:none; }
.ph-nbsel { font-size:.85rem; font-weight:600; color:var(--ink); text-align:center; }
.ph-nbsel.max { color:var(--warn); }
.ph-selbar-btns { display:flex; gap:8px; max-width:var(--col); width:100%; margin:0 auto; }
.ph-selbar-btns .btn:first-child { flex:0 0 auto; }
.ph-selbar-btns .btn:last-child { flex:1; }

/* ---------- Messages du séjour ---------- */
.ms-lang{display:flex;gap:4px;align-self:center;background:#fff;border:1px solid var(--line);padding:4px;border-radius:999px}
.ms-lang-b{border:0;background:transparent;color:var(--ink);font:600 .85rem var(--sans);padding:9px 18px;border-radius:999px;cursor:pointer;min-height:40px}
.ms-lang-b.on{background:var(--forest);color:#fff}
.ms-sejour{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:11px 13px;font-size:.85rem;color:var(--muted)}
.ms-sejour svg{color:var(--forest);flex:none}.ms-sejour b{color:var(--ink)}
.ms-item{display:flex;flex-direction:column;gap:6px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:16px;padding:13px 15px;font:inherit;color:var(--ink);cursor:pointer;width:100%}
.ms-item.reco{border:2px solid var(--brass)}
.ms-item-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.ms-quand{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:0}
.ms-pill{background:#F3EAD9;color:#6E5228}
.ms-titre{font-weight:600;font-size:1rem}
.ms-apercu{font-size:.82rem;color:var(--muted);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ms-tags{display:flex;gap:6px;flex-wrap:wrap}.ms-tags:empty{display:none}
.ms-preview{white-space:pre-wrap;font-size:.92rem;line-height:1.6}
.ms-var{background:var(--ok-bg);color:var(--ok-ink);border-radius:4px;padding:0 3px}
.ms-manque{display:flex;flex-direction:column;gap:12px;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:14px;padding:14px}
.ms-garder{margin:0;font-size:.85rem}

/* ---------- Calendriers multiples ---------- */
.ical-liste{display:flex;flex-direction:column;gap:8px}
.ical-row{display:flex;gap:6px;align-items:flex-start}
.ical-champ{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.ical-pf{align-self:flex-start;background:var(--ok-bg);color:var(--ok-ink)}
.ical-x{width:44px;height:44px;flex:none;border:1px solid var(--line);background:#fff;border-radius:12px;color:var(--muted);font-size:20px;cursor:pointer}
.prochain-sejour{display:flex;align-items:center;gap:8px;margin:10px 0 0;padding:10px 14px;background:#fff;border:1px solid var(--line);border-radius:14px;font-size:.88rem;color:var(--muted)}
.prochain-sejour svg{color:var(--forest);flex:none}.prochain-sejour b{color:var(--ink)}
