:root{
  --navy:#16283f;--navy-2:#0f1b2d;--navy-3:#1a2940;--green:#4f8271;--green-2:#3a6255;
  --cream:#f5f2ea;--cream-2:#efeade;--sand:#e4dbcb;--slate:#586371;--white:#fff;--gold:#e6c56b;
  --shadow:0 18px 42px rgba(22,40,63,.12);--radius:22px;--tab-h:76px;
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Instrument Sans",system-ui,-apple-system,sans-serif;color:var(--navy);background:var(--cream);-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit}.hidden{display:none!important}
html.host-mode,body.host-mode{background:var(--navy-2)}
html.guest-mode,body.guest-mode{background:var(--cream)}
.app-shell{min-height:100dvh;background:var(--cream);padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom));overflow-x:hidden}
.app-shell.host{background:var(--navy-2);color:#fff}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;min-height:calc(58px + env(safe-area-inset-top));height:auto;padding:calc(8px + env(safe-area-inset-top)) 18px 8px;background:rgba(245,242,234,.96);backdrop-filter:blur(14px);border-bottom:1px solid rgba(228,219,203,.7)}
.host .topbar{background:rgba(15,27,45,.96);border-bottom-color:rgba(255,255,255,.08)}
.brand{display:flex;align-items:center;gap:8px;font-family:"Fraunces",Georgia,serif;font-size:1rem;font-weight:600}.brand span{color:var(--green)}.host .brand span{color:#8fc3ad}
.logo{width:25px;height:25px;border:1.5px solid currentColor;border-radius:8px;display:grid;place-items:center;font-family:"Fraunces";font-weight:600}.logo::after{content:"R"}
.icon-btn{border:0;background:transparent;color:inherit;width:38px;height:38px;border-radius:12px;display:grid;place-items:center}.avatar{width:30px;height:30px;border-radius:50%;background:var(--green);display:grid;place-items:center;color:#fff;font-size:.72rem;font-weight:700}
.page{display:none;min-height:calc(100dvh - 58px - var(--tab-h));padding:16px 16px 28px}.page.active{display:block}.host .page{padding-bottom:30px}
h1,h2,h3{font-family:"Fraunces",Georgia,serif;font-weight:500;letter-spacing:-.02em;margin:0}.eyebrow{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--green-2);font-weight:700}.host .eyebrow{color:#8fc3ad}
.hero{background:linear-gradient(145deg,#cbdde0,#eaf0ec);border-radius:24px;padding:22px;box-shadow:var(--shadow);margin-bottom:14px}.hero h1{font-size:2rem;margin:4px 0 7px}.meta{color:var(--slate);font-size:.8rem}.chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.chip{background:rgba(255,255,255,.78);padding:6px 10px;border-radius:999px;font-size:.68rem}
.card{background:var(--white);border:1px solid var(--sand);border-radius:18px;box-shadow:var(--shadow);padding:15px}.host .card{background:var(--navy-3);border-color:rgba(255,255,255,.08);box-shadow:none}
.wifi-strip{display:flex;align-items:center;gap:14px}.grow{flex:1}.label{font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--green-2);font-weight:700}.value{font-weight:700;margin-top:2px}.sub{font-size:.74rem;color:var(--slate)}.host .sub{color:#9fb0c4}
.qr{width:62px;height:62px;border-radius:10px;background:repeating-conic-gradient(#132136 0 25%,#fff 0 50%) 0/14px 14px;border:6px solid #fff;box-shadow:0 0 0 1px var(--sand)}
.section-title{margin:22px 2px 10px;font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;color:var(--slate);font-weight:700;display:flex;justify-content:space-between;align-items:center}.host .section-title{color:#8fc3ad}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.shortcut{min-height:128px;display:flex;flex-direction:column;justify-content:space-between}.shortcut .ico{width:38px;height:38px;border-radius:11px;background:var(--cream-2);color:var(--green-2);display:grid;place-items:center;font-size:1.1rem}.shortcut b{display:block;font-size:.9rem}.shortcut small{color:var(--slate)}
.list{display:grid;gap:10px}.list-item{display:flex;gap:12px;align-items:flex-start}.list-item .ico{width:38px;height:38px;border-radius:10px;background:rgba(79,130,113,.12);display:grid;place-items:center;color:var(--green-2);flex:none}.list-item h3{font-family:"Instrument Sans";font-size:.92rem;font-weight:700}.list-item p{margin:3px 0 0;color:var(--slate);font-size:.75rem}.chev{margin-left:auto;color:var(--slate)}
.checklist{display:grid;gap:10px}.check{display:flex;gap:10px;align-items:center}.check input{width:20px;height:20px;accent-color:var(--green)}
.time-box{background:linear-gradient(135deg,#e8eee8,#f3efe5);border-radius:17px;padding:16px;margin-bottom:12px}.time-box b{font-family:"Fraunces";font-size:1.7rem;display:block}
.host-title{margin:4px 0 16px}.host-title h1{font-size:1.7rem}.host-title p{margin:5px 0 0;color:#9fb0c4;font-size:.82rem}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{min-height:105px}.stat strong{font-family:"Fraunces";font-size:1.8rem;display:block}.stat span{font-size:.7rem;color:#9fb0c4}
.property{padding:0;overflow:hidden}.property-photo{height:94px;background:linear-gradient(135deg,#e8d9c8,#cbb9a6);position:relative}.property-photo.nissa{background:linear-gradient(135deg,#bcd4d8,#8fb3b0)}.badge{position:absolute;top:10px;left:10px;background:rgba(22,40,63,.84);color:#fff;border-radius:999px;padding:5px 9px;font-size:.58rem;font-weight:700}.badge.live{background:rgba(58,98,85,.92)}.property-body{padding:13px}.property-body h3{font-size:1.03rem}.property-body p{margin:4px 0 10px;color:#9fb0c4;font-size:.7rem}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn{border:0;border-radius:10px;padding:10px 12px;font-weight:700}.btn.ghost{background:rgba(255,255,255,.08);color:#e3e9f0}.btn.gold{background:var(--gold);color:#1a2333}.btn.green{background:var(--green);color:#fff}.btn.full{width:100%}
.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day{aspect-ratio:1;border-radius:9px;background:rgba(255,255,255,.05);display:grid;place-items:center;font-size:.68rem;color:#9fb0c4}.day.active{background:var(--green-2);color:#fff}.agenda-item{display:flex;gap:12px;align-items:center}.datebox{width:46px;height:52px;border-radius:10px;background:rgba(255,255,255,.06);display:grid;place-items:center;flex:none}.datebox b{font-family:"Fraunces";font-size:1.15rem}.datebox span{font-size:.55rem;color:#8fc3ad;text-transform:uppercase}.agenda-item h3{font-family:"Instrument Sans";font-size:.86rem;font-weight:700}.agenda-item p{margin:3px 0 0;color:#9fb0c4;font-size:.68rem}
.msg{display:flex;gap:10px;align-items:center}.msg .avatar{width:38px;height:38px;background:#365372}.msg h3{font-family:"Instrument Sans";font-size:.82rem;font-weight:700}.msg p{margin:2px 0 0;color:#9fb0c4;font-size:.67rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}.dot{width:7px;height:7px;border-radius:50%;background:#8fc3ad;margin-left:auto}
.form{display:grid;gap:11px}.field{display:grid;gap:5px}.field label{font-size:.7rem;color:#9fb0c4}.field input,.field select,.field textarea{width:100%;border:1px solid rgba(255,255,255,.1);background:#13223a;color:#fff;border-radius:11px;padding:12px}.field textarea{min-height:90px;resize:vertical}
.more-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.more-item{min-height:110px}.more-item b{display:block;margin-top:18px}.more-item span{color:#9fb0c4;font-size:.7rem}
.tabbar{position:fixed;z-index:30;left:0;right:0;bottom:0;min-height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding:8px 8px calc(8px + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,255,255,.97);border-top:1px solid var(--sand);backdrop-filter:blur(16px)}.host .tabbar{background:rgba(22,40,63,.97);border-top-color:rgba(255,255,255,.08)}
.tab{border:0;background:transparent;color:#6b7684;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.57rem}.tab .ti{font-size:1.1rem;line-height:1}.tab.active{color:var(--green-2);font-weight:700}.host .tab.active{color:#8fc3ad}.host .tab{color:#7f92a7}
.mode-switch{position:fixed;z-index:50;right:12px;top:calc(64px + env(safe-area-inset-top));background:#fff;border:1px solid var(--sand);border-radius:999px;padding:6px;box-shadow:var(--shadow);display:flex;gap:4px}.mode-switch button{border:0;border-radius:999px;padding:7px 10px;background:transparent;color:var(--slate);font-weight:700;font-size:.7rem}.mode-switch button.active{background:var(--navy);color:#fff}
.toast{position:fixed;left:50%;bottom:calc(var(--tab-h) + 22px + env(safe-area-inset-bottom));transform:translateX(-50%);background:#0f1b2d;color:#fff;padding:10px 14px;border-radius:999px;font-size:.75rem;z-index:60;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1}
@media(min-width:760px){body{display:grid;place-items:center;background:#e9e5dc}.topbar{min-height:58px;padding-top:8px}.app-shell{width:430px;min-height:860px;max-height:94vh;overflow:auto;border-radius:34px;box-shadow:0 30px 80px rgba(22,40,63,.25);position:relative}.tabbar{position:sticky;left:auto;right:auto;bottom:0}.mode-switch{position:fixed}}


/* V23 — authentification et icônes SVG */
.boot-screen{min-height:100dvh;display:grid;place-content:center;gap:12px;text-align:center;background:var(--cream);font-family:"Fraunces",Georgia,serif;font-size:1.35rem;font-weight:600}.boot-screen span{color:var(--green)}.boot-logo{width:54px;height:54px;margin:auto;border:1.5px solid var(--navy);border-radius:17px;display:grid;place-items:center;font-size:1.45rem}
.login-shell{min-height:100dvh;background:linear-gradient(180deg,#f8f5ee 0%,#f5f2ea 52%,#eee8dc 100%);padding:calc(22px + env(safe-area-inset-top)) 20px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;justify-content:space-between}
.login-brand{display:flex;align-items:center;gap:10px;font-family:"Fraunces",Georgia,serif;font-size:1.15rem;font-weight:600}.login-brand span{color:var(--green)}
.login-card{width:min(100%,430px);margin:auto;background:#fff;border:1px solid var(--sand);border-radius:28px;padding:24px;box-shadow:0 28px 70px rgba(22,40,63,.14)}
.login-card .eyebrow{margin-bottom:9px}.login-card h1{font-size:2.15rem;margin-bottom:8px}.login-card>p{margin:0 0 22px;color:var(--slate);font-size:.9rem}
.login-form{display:grid;gap:13px}.login-field{display:grid;gap:6px}.login-field label{font-size:.72rem;font-weight:700;color:var(--navy-soft)}.login-field input{width:100%;border:1px solid var(--sand);background:#fbfaf7;color:var(--navy);border-radius:14px;padding:14px 15px;outline:none}.login-field input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(79,130,113,.12)}
.login-submit{border:0;border-radius:14px;padding:14px 16px;background:var(--navy);color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px}.login-submit:disabled{opacity:.65}.login-error{display:none;border:1px solid #efb4ac;background:#fff2f0;color:#9e352b;padding:11px 12px;border-radius:12px;font-size:.78rem}.login-error.show{display:block}.login-links{display:flex;justify-content:space-between;gap:10px;margin-top:4px}.text-btn{border:0;background:transparent;color:var(--green-2);font-weight:700;padding:8px 0;font-size:.76rem}.preview-btn{width:100%;border:1px solid var(--sand);background:#fff;color:var(--navy);border-radius:14px;padding:13px 14px;font-weight:700;margin-top:12px}.login-foot{text-align:center;color:var(--slate);font-size:.7rem;padding-top:18px}
.icon-shape{width:40px;height:40px;border-radius:13px;background:var(--cream-2);display:grid;place-items:center;color:var(--green-2);flex:none}.icon-shape svg{width:20px;height:20px;display:block}.host .icon-shape{background:rgba(143,195,173,.12);color:#8fc3ad}.shortcut .icon-shape{margin-bottom:12px}.list-item .icon-shape{width:38px;height:38px;border-radius:12px}.more-item .icon-shape{width:42px;height:42px;border-radius:14px}
.tab .ti{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;transition:.18s ease}.tab .ti svg{width:19px;height:19px;display:block}.tab.active .ti{background:rgba(79,130,113,.13);color:var(--green-2)}.host .tab.active .ti{background:rgba(143,195,173,.14);color:#8fc3ad}.tab:active .ti{transform:scale(.94)}
.topbar-actions{display:flex;align-items:center;gap:8px}.topbar-login{border:1px solid var(--sand);background:#fff;color:var(--navy);border-radius:999px;padding:8px 11px;font-size:.68rem;font-weight:700}.host .topbar-login{border-color:rgba(255,255,255,.12);background:rgba(255,255,255,.06);color:#fff}
@media(min-width:760px){.login-shell{min-height:100vh}.login-card{margin:auto}}

/* V24 — interactions hôte robustes */
button,[data-go],[data-action]{cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.clickable-row{width:100%;text-align:left;color:inherit}
.clickable-row:active,.more-item:active,.btn:active,.tab:active{transform:scale(.985)}
.page{position:relative;z-index:1}
.tabbar{pointer-events:auto}
.tabbar .tab{pointer-events:auto}


/* V25 — finition premium, identité RivaScreen et compte hôte */
:root{--display:"Fraunces",Georgia,serif;--ui:"Instrument Sans",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
html,body,button,input,select,textarea{font-family:var(--ui)}
h1,h2,.host-title h1,.hero h1,.time-box b,.stat strong,.datebox b{font-family:var(--display);font-weight:500;letter-spacing:-.025em}
body{font-feature-settings:"kern" 1,"liga" 1;text-rendering:optimizeLegibility}
.wordmark{display:inline-flex;align-items:baseline;gap:4px;font-family:var(--display);font-size:1.2rem;font-weight:600;letter-spacing:-.035em;white-space:nowrap;color:var(--navy)}
.wordmark span:last-child{color:var(--green)}
.wordmark.is-light{color:#f9fbfc}.wordmark.is-light span:last-child{color:#8fc3ad}
.riva-logo{width:34px;height:34px;display:inline-grid;place-items:center;color:var(--navy);flex:none}.riva-logo svg{width:100%;height:100%;display:block}.riva-logo .riva-wave{stroke:var(--green)}
.riva-logo.is-light{color:#fff}.riva-logo.is-light .riva-wave{stroke:#8fc3ad}
.brand,.login-brand{display:flex;align-items:center;gap:10px}
.topbar{min-height:70px;padding-left:18px;padding-right:18px;border-bottom:1px solid rgba(22,40,63,.08)}
.host .topbar{border-bottom-color:rgba(255,255,255,.07);background:rgba(15,27,45,.94);backdrop-filter:blur(18px)}
.avatar.account-trigger{border:1px solid rgba(255,255,255,.14);box-shadow:0 8px 24px rgba(0,0,0,.18);transition:transform .18s ease,box-shadow .18s ease}
.avatar.account-trigger:active{transform:scale(.95)}
.card{border-radius:18px;box-shadow:0 14px 34px -24px rgba(22,40,63,.38)}
.host .card{background:linear-gradient(180deg,rgba(255,255,255,.065),rgba(255,255,255,.045));border-color:rgba(255,255,255,.085);box-shadow:0 16px 36px -26px rgba(0,0,0,.7)}
.btn{border-radius:12px;letter-spacing:-.01em;transition:transform .16s ease,filter .16s ease}.btn:active{transform:scale(.98)}
.eyebrow{font-size:.66rem;letter-spacing:.18em}
.host-title p,.property-body p,.agenda-item p,.msg p,.more-item span{line-height:1.45}
.tabbar{box-shadow:0 -12px 32px rgba(22,40,63,.06)}.host .tabbar{box-shadow:0 -12px 32px rgba(0,0,0,.18)}

.account-backdrop{position:fixed;inset:0;z-index:70;background:rgba(4,12,23,.46);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .22s ease}
.account-sheet{position:fixed;left:0;right:0;bottom:0;z-index:71;background:#f8f6f0;color:var(--navy);border-radius:26px 26px 0 0;padding:10px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -28px 70px rgba(0,0,0,.34);transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);max-height:82dvh;overflow:auto}
.account-open .account-backdrop{opacity:1;pointer-events:auto}.account-open .account-sheet{transform:translateY(0)}
.sheet-handle{width:42px;height:4px;border-radius:999px;background:#c8c1b5;margin:2px auto 16px}
.account-head{display:flex;align-items:center;gap:12px;padding:4px 2px 16px;border-bottom:1px solid var(--sand)}
.avatar.large{width:48px;height:48px;font-size:.9rem}.account-name{font-weight:700}.account-email{font-size:.73rem;color:var(--slate);margin-top:2px}.sheet-close{margin-left:auto;border:0;background:#ece7dd;color:var(--navy);width:36px;height:36px;border-radius:12px;font-size:1.45rem;line-height:1}
.account-row{width:100%;display:grid;grid-template-columns:24px 1fr auto;gap:12px;align-items:center;text-align:left;border:0;background:transparent;color:var(--navy);padding:15px 4px;border-bottom:1px solid var(--sand)}.account-row>svg{width:22px;height:22px;color:var(--green-2)}.account-row span:nth-child(2){display:grid;gap:2px}.account-row b{font-size:.88rem}.account-row small{color:var(--slate);font-size:.7rem}.account-row.danger{color:#9d3f36}.account-row.danger>svg{color:#b44e44}
@media(min-width:760px){.account-sheet{left:50%;right:auto;width:430px;transform:translate(-50%,105%)}.account-open .account-sheet{transform:translate(-50%,0)}}

/* V26 — bannière photo Villa Azur + wordmark RivaScreen sans espace */
.wordmark{
  gap:0;
  letter-spacing:-.045em;
}
.wordmark span{
  display:inline;
}
.wordmark span + span{
  margin-left:0;
}

.hero{
  position:relative;
  isolation:isolate;
  min-height:300px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  overflow:hidden;
  padding:26px 22px 24px;
  background:
    linear-gradient(180deg,rgba(8,22,36,.08) 10%,rgba(8,22,36,.26) 48%,rgba(8,22,36,.78) 100%),
    url("https://images.unsplash.com/photo-1600607687939-ce8a6c25118c?auto=format&fit=crop&w=1800&q=85") center 54%/cover no-repeat;
  border:1px solid rgba(255,255,255,.28);
  box-shadow:0 24px 56px -26px rgba(22,40,63,.52);
}
.hero::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:linear-gradient(135deg,rgba(79,130,113,.12),transparent 52%);
  pointer-events:none;
}
.hero .eyebrow,
.hero h1,
.hero .meta{
  color:#fff;
  text-shadow:0 2px 18px rgba(5,16,28,.45);
}
.hero .eyebrow{color:rgba(255,255,255,.88)}
.hero h1{font-size:2.35rem;margin:7px 0 8px;line-height:.98}
.hero .meta{font-size:.8rem;color:rgba(255,255,255,.88)}
.hero .chips{margin-top:16px}
.hero .chip{
  background:rgba(255,255,255,.9);
  color:var(--navy);
  border:1px solid rgba(255,255,255,.58);
  box-shadow:0 8px 22px -16px rgba(0,0,0,.5);
  backdrop-filter:blur(8px);
}

@media(max-width:390px){
  .wordmark{font-size:1.08rem}
  .riva-logo{width:31px;height:31px}
  .brand{gap:8px}
  .hero{min-height:278px;padding:22px 18px 22px}
  .hero h1{font-size:2.1rem}
}


/* V27 — confirmation de départ */
.checkout-confirm-btn{display:flex;align-items:center;justify-content:center;gap:9px;min-height:50px;font-size:.92rem}
.checkout-confirm-btn svg{width:20px;height:20px}
.checkout-confirm-btn.is-confirmed{background:var(--green-2);color:#fff;opacity:1}
.checkout-confirm-btn:disabled{cursor:default;filter:none}
.checkout-confirmation{display:none;margin-top:14px;padding:16px;border-radius:18px;background:linear-gradient(135deg,#e9f3ee,#f8fbf9);border:1px solid #bdd5c9;color:var(--navy);grid-template-columns:44px 1fr;gap:12px;align-items:start;box-shadow:0 16px 34px -26px rgba(22,40,63,.38)}
.checkout-confirmation.show{display:grid;animation:checkoutIn .3s ease both}
.confirmation-icon{width:44px;height:44px;border-radius:14px;background:var(--green-2);color:#fff;display:grid;place-items:center}
.confirmation-icon svg{width:24px;height:24px}
.checkout-confirmation strong{display:block;font-family:var(--display);font-size:1.08rem;line-height:1.2;margin:1px 0 5px}
.checkout-confirmation p{margin:0;color:var(--slate);font-size:.79rem;line-height:1.5}
@keyframes checkoutIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* V28 — fiches cliquables « Autour de vous » */
.local-place{width:100%;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.local-place:active{transform:scale(.992)}
.place-backdrop{position:fixed;inset:0;background:rgba(15,27,45,.48);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .22s ease;z-index:120}
.place-sheet{position:fixed;left:0;right:0;bottom:0;z-index:121;background:var(--paper);border-radius:28px 28px 0 0;padding:14px 22px calc(24px + env(safe-area-inset-bottom));box-shadow:0 -24px 70px rgba(15,27,45,.28);transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);max-height:78vh;overflow:auto;color:var(--ink)}
.place-open .place-backdrop{opacity:1;pointer-events:auto}
.place-open .place-sheet{transform:translateY(0)}
.place-open{overflow:hidden}
.place-sheet .sheet-close{position:absolute;right:18px;top:16px}
.place-type{margin-top:12px;color:var(--sea-deep);font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.place-sheet h2{font-family:var(--font-display);font-size:2rem;line-height:1.05;margin:8px 42px 12px 0}
.place-description{font-size:1rem;line-height:1.55;color:var(--slate)}
.place-info{margin:16px 0 18px;padding:14px 16px;border:1px solid var(--sand);border-radius:16px;background:#fff;font-weight:600;color:var(--ink-soft)}
.place-map-link{display:flex;align-items:center;justify-content:center;text-decoration:none;margin-bottom:10px}

/* V29 — toutes les actions hôte actives */
button{font-family:inherit}
.interactive-row{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.interactive-row:active,.clickable-row:active,.more-item:active{transform:scale(.992)}
.agenda-item.interactive-row,.msg.interactive-row{display:flex;align-items:center;border:1px solid rgba(255,255,255,.08)}
.interactive-row .chev{margin-left:auto;color:#8fa0b4;font-size:1.35rem;line-height:1}
.mini-status{display:inline-flex;margin-top:7px;padding:4px 8px;border-radius:999px;background:rgba(143,195,173,.13);color:#b9decf;font-size:.6rem;font-weight:700}
.action-backdrop{position:fixed;inset:0;background:rgba(5,12,23,.62);backdrop-filter:blur(4px);opacity:0;pointer-events:none;transition:opacity .22s ease;z-index:160}
.action-sheet{position:fixed;left:0;right:0;bottom:0;z-index:161;max-height:88dvh;overflow:auto;background:#f7f4ed;color:var(--ink);border-radius:30px 30px 0 0;padding:14px 22px calc(28px + env(safe-area-inset-bottom));box-shadow:0 -28px 80px rgba(0,0,0,.34);transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1)}
.action-sheet-open{overflow:hidden}
.action-sheet-open .action-backdrop{opacity:1;pointer-events:auto}
.action-sheet-open .action-sheet{transform:translateY(0)}
.action-sheet .sheet-close{position:absolute;right:18px;top:14px;width:38px;height:38px;border-radius:50%;border:1px solid var(--sand);background:#fff;color:var(--ink);font-size:1.35rem;display:grid;place-items:center}
.sheet-eyebrow{margin-top:12px;color:var(--sea-deep);font-size:.68rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
.action-sheet h2{font-family:var(--display);font-size:2rem;line-height:1.06;margin:8px 48px 8px 0}
.sheet-subtitle{margin:0 0 18px;color:var(--slate);font-size:.88rem}
.sheet-field{display:grid;gap:7px;margin:0 0 14px}
.sheet-field label{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--sea-deep)}
.sheet-field input,.sheet-field textarea,.sheet-field select{width:100%;border:1px solid var(--sand);border-radius:14px;background:#fff;color:var(--ink);padding:13px 14px;font:inherit;font-size:.92rem;outline:none}
.sheet-field input:focus,.sheet-field textarea:focus,.sheet-field select:focus{border-color:var(--sea);box-shadow:0 0 0 3px rgba(79,130,113,.12)}
.sheet-grid{display:grid;gap:0}
.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:8px}
.conversation-thread{display:grid;gap:10px;margin:16px 0 18px;max-height:34vh;overflow:auto;padding-right:3px}
.bubble{max-width:86%;padding:11px 13px;border-radius:17px 17px 17px 5px;background:#fff;border:1px solid var(--sand);box-shadow:0 10px 24px -20px rgba(22,40,63,.45)}
.bubble.mine{margin-left:auto;background:#dfece7;border-color:#c4d9d0;border-radius:17px 17px 5px 17px}
.bubble span{display:block;font-size:.58rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--sea-deep);margin-bottom:3px}
.bubble p{margin:0;font-size:.86rem;line-height:1.45;color:var(--ink)}
.request-message{padding:16px;margin:16px 0;border-radius:17px;background:#fff;border:1px solid var(--sand);font-size:.95rem;line-height:1.55;color:var(--ink-soft)}
.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 0;border-bottom:1px solid var(--sand)}
.toggle-row span{display:grid;gap:3px}.toggle-row b{font-size:.9rem}.toggle-row small{color:var(--slate);font-size:.72rem}
.toggle-row input{width:22px;height:22px;accent-color:var(--sea-deep)}
@media(min-width:700px){.action-sheet{left:50%;right:auto;width:min(520px,100%);transform:translate(-50%,105%)}.action-sheet-open .action-sheet{transform:translate(-50%,0)}}

/* ===== V30 : interface unifiée mobile + ordinateur ===== */
.desktop-sidebar,.desktop-page-name{display:none}

@media (min-width: 900px){
  html,body{min-height:100%;background:#0f1b2d}
  body{display:block!important;overflow:auto}
  #app{min-height:100vh}
  .app-shell,.app-shell.host{
    width:100%!important;max-width:none!important;min-height:100vh!important;max-height:none!important;
    border-radius:0!important;box-shadow:none!important;overflow:visible!important;margin:0!important;
  }
  .app-shell.host{
    display:grid;grid-template-columns:270px minmax(0,1fr);grid-template-rows:82px minmax(calc(100vh - 82px),auto);
    background:#f5f2ea;color:var(--navy);padding:0;
  }
  .desktop-sidebar{
    display:flex;grid-column:1;grid-row:1 / span 2;position:sticky;top:0;height:100vh;
    flex-direction:column;background:linear-gradient(180deg,#0f1b2d 0%,#14243a 100%);
    border-right:1px solid rgba(255,255,255,.08);padding:28px 18px 20px;color:#fff;z-index:35;
  }
  .desktop-brand{display:flex;align-items:center;gap:11px;padding:0 10px 24px;font-family:"Fraunces",Georgia,serif;font-size:1.18rem;font-weight:600}
  .desktop-brand .riva-logo{width:34px;height:34px}.desktop-brand .wordmark{font-size:1.2rem}
  .desktop-account{display:flex;align-items:center;gap:11px;margin:0 6px 22px;padding:13px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.045)}
  .desktop-account b{display:block;font-size:.82rem}.desktop-account span{display:block;color:#91a3b8;font-size:.68rem;margin-top:2px}
  .desktop-avatar{width:36px;height:36px;border:0;border-radius:50%;background:var(--green);color:#fff;font-weight:700;cursor:pointer}
  .desktop-nav{display:grid;gap:5px;overflow:auto;padding:2px 4px 14px}
  .desktop-nav-btn{display:flex;align-items:center;gap:12px;width:100%;border:0;border-radius:12px;padding:11px 12px;background:transparent;color:#96a8bc;text-align:left;font-weight:600;cursor:pointer;transition:.18s}
  .desktop-nav-btn .icon-shape{width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.05)}
  .desktop-nav-btn svg{width:17px;height:17px}.desktop-nav-btn:hover{background:rgba(255,255,255,.06);color:#fff}
  .desktop-nav-btn.active{background:rgba(143,195,173,.14);color:#bfe3d3}.desktop-nav-btn.active .icon-shape{background:rgba(143,195,173,.14)}
  .desktop-sidebar-foot{margin-top:auto;padding:12px 4px 0;border-top:1px solid rgba(255,255,255,.08)}
  .desktop-logout{display:flex;align-items:center;gap:11px;width:100%;border:0;border-radius:12px;padding:11px 12px;background:transparent;color:#d7a2a2;font-weight:600;cursor:pointer}.desktop-logout svg{width:19px;height:19px}

  .host .topbar{grid-column:2;grid-row:1;position:sticky;top:0;z-index:25;min-height:82px;height:82px;padding:0 34px;background:rgba(245,242,234,.96);color:var(--navy);border-bottom:1px solid var(--sand);box-shadow:0 8px 26px rgba(22,40,63,.05)}
  .host .topbar>.brand{display:none}.desktop-page-name{display:flex;flex-direction:column}.desktop-page-name span{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green-2);font-weight:700}.desktop-page-name b{font-family:"Fraunces",Georgia,serif;font-size:1.18rem;font-weight:500;margin-top:2px}
  .host .topbar .avatar{width:38px;height:38px;box-shadow:0 0 0 5px rgba(79,130,113,.1);cursor:pointer}

  .host .page{grid-column:2;grid-row:2;min-height:auto;padding:36px 38px 64px;color:var(--navy);max-width:1500px;width:100%;margin:0 auto}
  .host .host-title{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:26px;padding-bottom:18px;border-bottom:1px solid var(--sand)}
  .host .host-title h1{font-size:2.25rem;color:var(--navy)}.host .host-title p{color:var(--slate);max-width:520px}
  .host .eyebrow,.host .section-title{color:var(--green-2)}
  .host .card{background:#fff;color:var(--navy);border-color:var(--sand);box-shadow:0 16px 36px rgba(22,40,63,.08)}
  .host .sub,.host .property-body p,.host .agenda-item p,.host .msg p,.host .more-item span,.host .stat span{color:var(--slate)}
  .host .stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.host .stat{min-height:132px;padding:22px}.host .stat strong{font-size:2.35rem}.host .stat span{font-size:.78rem}
  .host .section-title{margin-top:30px;font-size:.74rem}
  .host .page[data-page="dashboard"]>.list:nth-of-type(1),.host .page[data-page="homes"]>.list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .host .property-photo{height:150px}.host .property-body{padding:18px}.host .property-body h3{font-size:1.25rem;color:var(--navy)}
  .host .btn.ghost{background:#eef1f4;color:var(--navy)}.host .btn.gold{box-shadow:0 8px 18px rgba(230,197,107,.25)}
  .host .page[data-page="dashboard"]>.list:last-child,.host .page[data-page="agenda"]>.list,.host .page[data-page="messages"]>.list,.host .page[data-page="cleaning"]>.list,.host .page[data-page="requests"]>.list{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
  .host .calendar{gap:8px}.host .day{aspect-ratio:auto;min-height:52px;background:#f3f5f7;color:var(--slate);font-size:.76rem}.host .day.active{background:var(--green);color:#fff}
  .host .more-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.host .more-item{min-height:155px;color:var(--navy)!important;border-color:var(--sand)!important}.host .more-item .icon-shape{background:rgba(79,130,113,.12)}.host .more-item b{font-size:1rem}
  .host .form{max-width:820px;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.host .form .field:last-of-type,.host .form>button{grid-column:1/-1}
  .host .field label{color:var(--slate)}.host .field input,.host .field select,.host .field textarea{background:#fff;color:var(--navy);border-color:var(--sand)}
  .host .msg .avatar{background:#365372}.host .datebox{background:#eef1f4}.host .datebox span{color:var(--green-2)}
  .host .tabbar{display:none}

  /* Voyageur sur ordinateur : aperçu large, sans perdre l'expérience mobile */
  .app-shell:not(.host){max-width:none!important;width:100%!important;min-height:100vh!important;border-radius:0!important;box-shadow:none!important;background:var(--cream);padding-bottom:0!important}
  .app-shell:not(.host) .topbar{position:sticky;top:0;min-height:76px;padding:0 max(32px,calc((100vw - 1180px)/2));background:rgba(245,242,234,.96)}
  .app-shell:not(.host) .topbar .brand{font-size:1.15rem}.app-shell:not(.host) .topbar .riva-logo{width:34px;height:34px}.app-shell:not(.host) .topbar .wordmark{font-size:1.18rem}
  .app-shell:not(.host) .page{max-width:1180px;margin:0 auto;padding:38px 28px 90px;min-height:auto}
  .app-shell:not(.host) .page[data-page="home"].active{display:grid;grid-template-columns:1.25fr .75fr;gap:20px;align-items:start}
  .app-shell:not(.host) .page[data-page="home"] .hero{grid-column:1/-1;min-height:330px;display:flex;flex-direction:column;justify-content:flex-end;padding:42px;background-position:center;background-size:cover}
  .app-shell:not(.host) .page[data-page="home"] .hero h1{font-size:3.6rem}.app-shell:not(.host) .page[data-page="home"] .wifi-strip{grid-column:1/-1}
  .app-shell:not(.host) .page[data-page="home"] .section-title{grid-column:1/-1}.app-shell:not(.host) .page[data-page="home"] .grid-2{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
  .app-shell:not(.host) .shortcut{min-height:170px;padding:22px}.app-shell:not(.host) .shortcut b{font-size:1.05rem}
  .app-shell:not(.host) .tabbar{position:sticky;bottom:auto;top:76px;min-height:62px;padding:8px max(32px,calc((100vw - 780px)/2));grid-template-columns:repeat(5,1fr);box-shadow:0 10px 28px rgba(22,40,63,.05)}
  .app-shell:not(.host) .tab{flex-direction:row;font-size:.75rem;gap:8px}.app-shell:not(.host) .tab .ti{width:29px;height:29px}

  .action-sheet{left:50%;right:auto;bottom:50%;width:min(640px,calc(100vw - 48px));max-height:82vh;border-radius:24px;transform:translate(-50%,calc(50% + 24px))}.action-sheet-open .action-sheet{transform:translate(-50%,50%)}
  .account-sheet{right:28px;left:auto;bottom:auto;top:72px;width:390px;border-radius:22px;transform:translateY(-12px) scale(.98)}.account-open .account-sheet{transform:translateY(0) scale(1)}
}

@media (min-width: 1280px){
  .app-shell.host{grid-template-columns:292px minmax(0,1fr)}
  .host .page{padding-left:50px;padding-right:50px}
  .host .page[data-page="dashboard"]>.list:nth-of-type(1),.host .page[data-page="homes"]>.list{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* ===== V31 : correctifs desktop, menus et mode TV ===== */
.action-sheet[aria-hidden="true"],
.account-sheet[aria-hidden="true"]{
  visibility:hidden!important;
  pointer-events:none!important;
}
.action-backdrop,.account-backdrop{pointer-events:none}
.action-sheet-open .action-backdrop,.account-open .account-backdrop{pointer-events:auto}
body:not(.action-sheet-open) .action-sheet{
  opacity:0!important;
  transform:translate(-50%,calc(50% + 40px))!important;
}
body:not(.account-open) .account-sheet{opacity:0!important}
.account-sheet,.action-sheet{transition:transform .24s ease,opacity .2s ease,visibility .2s ease}
.account-open .account-sheet,.action-sheet-open .action-sheet{opacity:1!important;visibility:visible!important;pointer-events:auto!important}
.fullscreen-btn{display:inline-flex;align-items:center;gap:7px}

@media (min-width:900px){
  .account-sheet{top:88px!important;right:34px!important}
  .action-sheet{top:50%!important;bottom:auto!important}
  body:not(.action-sheet-open) .action-sheet{transform:translate(-50%,calc(-50% + 28px))!important}
  .action-sheet-open .action-sheet{transform:translate(-50%,-50%)!important}
  .account-backdrop,.action-backdrop{position:fixed;inset:0}
}

/* Mode TV / grand écran client */
.tv-mode, .tv-mode body{background:#07111f!important;overflow:hidden}
.app-shell.tv{min-height:100dvh!important;background:#07111f!important;color:#fff!important;padding:0!important}
.app-shell.tv .topbar{
  position:fixed!important;left:0;right:0;top:0;z-index:50;
  background:linear-gradient(180deg,rgba(3,10,20,.82),rgba(3,10,20,0))!important;
  border:0!important;color:#fff!important;padding:24px 34px!important;min-height:92px!important;
}
.app-shell.tv .wordmark{color:#fff}.app-shell.tv .wordmark span:last-child{color:#8fc3ad}
.app-shell.tv .riva-logo{color:#fff}.app-shell.tv .riva-logo .riva-wave{stroke:#8fc3ad}
.app-shell.tv .page{display:none!important}
.app-shell.tv .page[data-page="home"].active{
  display:grid!important;min-height:100dvh!important;max-width:none!important;margin:0!important;padding:0!important;
  grid-template-columns:1fr!important;gap:0!important;
}
.app-shell.tv .hero{
  grid-column:1!important;min-height:100dvh!important;height:100dvh!important;border-radius:0!important;margin:0!important;
  padding:clamp(70px,9vw,140px)!important;display:flex!important;flex-direction:column!important;justify-content:flex-end!important;
  background-position:center!important;background-size:cover!important;
}
.app-shell.tv .hero::after{background:linear-gradient(180deg,rgba(3,10,20,.12),rgba(3,10,20,.82))!important}
.app-shell.tv .hero h1{font-size:clamp(4rem,9vw,9rem)!important;color:#fff!important;max-width:12ch}
.app-shell.tv .hero .eyebrow{font-size:clamp(.8rem,1.3vw,1.2rem)!important;color:#dcece6!important}
.app-shell.tv .hero .meta{font-size:clamp(1rem,1.7vw,1.55rem)!important;color:#fff!important}
.app-shell.tv .hero .chips{margin-top:24px!important}.app-shell.tv .chip{font-size:clamp(.78rem,1.1vw,1rem)!important;padding:10px 16px!important;background:rgba(255,255,255,.15)!important;color:#fff!important;backdrop-filter:blur(10px)}
.app-shell.tv .wifi-strip,.app-shell.tv .section-title,.app-shell.tv .grid-2{display:none!important}
.app-shell.tv .tv-exit{background:rgba(255,255,255,.14)!important;color:#fff!important;border-color:rgba(255,255,255,.24)!important;backdrop-filter:blur(12px)}
@media(max-width:899px){.fullscreen-btn{display:none}.app-shell.tv .topbar{padding:calc(14px + env(safe-area-inset-top)) 18px 12px!important}.app-shell.tv .hero{padding:100px 24px 70px!important}.app-shell.tv .hero h1{font-size:3.8rem!important}}

/* V32 — équipe et options de réservation */
.form-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.reservation-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:8px}
.option-card{position:relative;display:flex;align-items:center;gap:11px;min-height:74px;padding:13px 14px;border:1px solid rgba(230,197,107,.22);border-radius:16px;background:rgba(255,255,255,.045);cursor:pointer;transition:border-color .18s ease,background .18s ease,transform .18s ease}
.option-card:active{transform:scale(.985)}
.option-card input{position:absolute;opacity:0;pointer-events:none}
.option-card .option-check{width:27px;height:27px;flex:0 0 27px;display:grid;place-items:center;border-radius:9px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.04);color:transparent;font-weight:800;transition:.18s ease}
.option-card b{display:block;color:#fff;font-size:.9rem}
.option-card small{display:block;color:#9fb0c4;font-size:.72rem;line-height:1.35;margin-top:2px}
.option-card:has(input:checked){border-color:#e6c56b;background:rgba(230,197,107,.1)}
.option-card:has(input:checked) .option-check{background:#e6c56b;border-color:#e6c56b;color:#16283f}
.team-summary{display:grid;gap:14px}.team-summary p{color:#9fb0c4}
@media(max-width:640px){.form-two,.reservation-options{grid-template-columns:1fr}.option-card{min-height:68px}}


/* V33 — écran TV enrichi et rubrique Découvrir */
.app-shell.tv .hero{padding-bottom:clamp(235px,25vh,310px)!important}
.tv-experience{position:fixed;inset:0;z-index:42;pointer-events:none;color:#fff}
.tv-welcome-copy{position:absolute;left:clamp(72px,8vw,138px);bottom:clamp(205px,22vh,270px);max-width:min(620px,45vw);z-index:3;text-shadow:0 3px 22px rgba(0,0,0,.46)}
.tv-welcome-copy span{display:block;font:700 clamp(.7rem,1vw,.95rem)/1 "Instrument Sans";letter-spacing:.18em;text-transform:uppercase;color:#9ed0bb;margin-bottom:9px}
.tv-welcome-copy strong{display:block;font:500 clamp(1.25rem,2.2vw,2.15rem)/1.12 "Fraunces",serif;color:#fff}
.tv-welcome-copy p{font-size:clamp(.82rem,1.15vw,1.08rem);color:rgba(255,255,255,.82);margin-top:8px;max-width:52ch}
.tv-dock{position:absolute;left:50%;bottom:clamp(34px,5vh,62px);transform:translateX(-50%);display:flex;gap:clamp(12px,1.5vw,24px);padding:14px 18px;border:1px solid rgba(255,255,255,.18);border-radius:28px;background:rgba(12,24,40,.56);box-shadow:0 24px 60px rgba(0,0,0,.34);backdrop-filter:blur(24px) saturate(130%);pointer-events:auto}
.tv-dock-item{width:clamp(118px,10.5vw,172px);min-height:94px;border:1px solid rgba(255,255,255,.12);border-radius:22px;background:rgba(255,255,255,.075);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;font:650 clamp(.72rem,1vw,.95rem)/1 "Instrument Sans";cursor:pointer;transition:transform .18s ease,background .18s ease,box-shadow .18s ease,border-color .18s ease}
.tv-dock-item .icon-shape{width:43px;height:43px;border-radius:14px;background:rgba(143,195,173,.17);color:#a9dac5}.tv-dock-item .icon-shape svg{width:23px;height:23px}
.tv-dock-item:hover,.tv-dock-item:focus-visible{outline:none;transform:translateY(-8px) scale(1.045);background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.35);box-shadow:0 22px 45px rgba(0,0,0,.28),0 0 0 4px rgba(143,195,173,.16)}
.tv-phone-card{position:absolute;right:clamp(34px,4vw,72px);bottom:clamp(34px,5vh,62px);width:min(390px,26vw);min-width:310px;display:flex;align-items:center;gap:16px;padding:14px 16px;border:1px solid rgba(255,255,255,.17);border-radius:24px;background:rgba(12,24,40,.64);backdrop-filter:blur(24px) saturate(130%);box-shadow:0 24px 60px rgba(0,0,0,.3);pointer-events:auto}
.tv-qr{width:116px;height:116px;flex:0 0 116px;padding:7px;border-radius:16px;background:#fff;display:grid;place-items:center;overflow:hidden}.tv-qr img,.tv-qr canvas{max-width:100%;height:auto!important}.tv-qr.qr-fallback{background:conic-gradient(from 0deg,#0b1728 25%,#fff 0 50%,#0b1728 0 75%,#fff 0) 0 0/18px 18px,#fff}
.tv-phone-card span{display:block;color:#9ed0bb;text-transform:uppercase;letter-spacing:.12em;font-size:.62rem;font-weight:750}.tv-phone-card strong{display:block;font-size:.86rem;line-height:1.35;margin-top:4px}.tv-phone-card p{font-size:.7rem;color:rgba(255,255,255,.66);line-height:1.4;margin-top:4px}
.tv-info-backdrop{position:fixed;inset:0;background:rgba(2,8,16,.54);opacity:0;visibility:hidden;transition:.22s ease;pointer-events:none}
.tv-info-panel{position:fixed;left:50%;top:50%;width:min(820px,72vw);min-height:380px;transform:translate(-50%,-46%) scale(.96);opacity:0;visibility:hidden;pointer-events:none;display:grid;grid-template-columns:150px 1fr;gap:30px;align-items:center;padding:46px;border:1px solid rgba(255,255,255,.2);border-radius:34px;background:rgba(12,24,40,.88);box-shadow:0 40px 100px rgba(0,0,0,.5);backdrop-filter:blur(30px) saturate(135%);transition:.24s ease}
.tv-panel-open .tv-info-backdrop{opacity:1;visibility:visible;pointer-events:auto}.tv-panel-open .tv-info-panel{opacity:1;visibility:visible;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.tv-info-close{position:absolute;right:22px;top:18px;width:48px;height:48px;border:1px solid rgba(255,255,255,.18);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:1.6rem;cursor:pointer}.tv-info-close:focus-visible{outline:3px solid rgba(143,195,173,.65)}
.tv-info-icon .icon-shape{width:126px;height:126px;border-radius:34px;background:rgba(143,195,173,.15);color:#a9dac5}.tv-info-icon .icon-shape svg{width:64px;height:64px}
.tv-info-copy>span{color:#9ed0bb;font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;font-weight:750}.tv-info-copy h2{font-size:clamp(2rem,4vw,4.2rem);color:#fff;margin:8px 0 12px}.tv-info-copy p{font-size:clamp(1rem,1.45vw,1.28rem);color:rgba(255,255,255,.78);line-height:1.55}.tv-info-value,.tv-info-note{margin-top:20px;padding:18px 20px;border-radius:18px;background:rgba(255,255,255,.08);font-size:clamp(.9rem,1.2vw,1.08rem);color:#fff}
@media(max-width:1200px){.tv-phone-card{min-width:0;width:250px}.tv-qr{width:88px;height:88px;flex-basis:88px}.tv-phone-card p{display:none}.tv-dock{left:38%;}.tv-welcome-copy{max-width:52vw}}
@media(max-width:899px){.tv-welcome-copy{left:24px;right:24px;bottom:245px;max-width:none}.tv-phone-card{right:18px;left:18px;bottom:118px;width:auto}.tv-dock{left:18px;right:18px;bottom:22px;transform:none;justify-content:space-between;padding:8px}.tv-dock-item{width:auto;flex:1;min-height:76px}.tv-dock-item span{font-size:.62rem}.tv-phone-card strong{font-size:.72rem}.tv-info-panel{width:calc(100vw - 28px);grid-template-columns:1fr;padding:30px;text-align:center}.tv-info-icon{display:flex;justify-content:center}.app-shell.tv .hero{padding-bottom:330px!important}}

/* V34 — lisibilité options réservation + composition TV corrigée */
/* Options de réservation : contraste clair dans les formulaires */
.reservation-options{gap:14px!important}
.option-card{
  min-height:92px!important;
  padding:16px 18px!important;
  border:1px solid #e4dbcb!important;
  background:#fff!important;
  box-shadow:0 12px 28px -22px rgba(22,40,63,.35)!important;
}
.option-card .option-check{
  width:30px!important;height:30px!important;flex-basis:30px!important;
  border:1.5px solid #b9c8c1!important;
  background:#f5f2ea!important;
  color:transparent!important;
}
.option-card b{color:#16283f!important;font-size:.96rem!important;line-height:1.2!important}
.option-card small{color:#586371!important;font-size:.78rem!important;line-height:1.35!important;margin-top:4px!important}
.option-card:hover{border-color:#9fb9ae!important;background:#fbfcfa!important}
.option-card:has(input:checked){border-color:#4f8271!important;background:#edf4f1!important;box-shadow:0 0 0 2px rgba(79,130,113,.12)!important}
.option-card:has(input:checked) .option-check{background:#4f8271!important;border-color:#4f8271!important;color:#fff!important}

/* TV : une seule zone de bienvenue, remontée et sans chevauchement */
.app-shell.tv .hero>.eyebrow,
.app-shell.tv .hero>h1,
.app-shell.tv .hero>.meta,
.app-shell.tv .hero>.chips{display:none!important}
.app-shell.tv .hero{padding-bottom:0!important}
.tv-welcome-copy{
  top:clamp(145px,18vh,215px)!important;
  bottom:auto!important;
  left:clamp(72px,7vw,120px)!important;
  max-width:min(760px,52vw)!important;
}
.tv-welcome-copy span{font-size:clamp(.78rem,1.05vw,1rem)!important;margin-bottom:14px!important}
.tv-welcome-copy strong{font-size:clamp(2rem,3vw,3.5rem)!important;line-height:1.08!important;max-width:18ch!important}
.tv-welcome-copy p{font-size:clamp(.92rem,1.25vw,1.18rem)!important;line-height:1.45!important;margin-top:14px!important;max-width:46ch!important}

/* TV : dock et QR séparés avec une vraie respiration */
.tv-dock{
  left:clamp(38px,4vw,72px)!important;
  right:auto!important;
  bottom:clamp(34px,4.5vh,54px)!important;
  transform:none!important;
  gap:clamp(10px,1.2vw,18px)!important;
  padding:14px 16px!important;
  max-width:calc(100vw - 540px)!important;
}
.tv-dock-item{width:clamp(122px,10vw,164px)!important;min-height:104px!important}
.tv-phone-card{
  right:clamp(38px,4vw,72px)!important;
  bottom:clamp(34px,4.5vh,54px)!important;
  width:min(400px,28vw)!important;
  min-width:340px!important;
  margin-left:44px!important;
}

@media (max-width:1200px) and (min-width:900px){
  .tv-welcome-copy{top:150px!important;max-width:58vw!important}
  .tv-welcome-copy strong{font-size:clamp(1.8rem,2.8vw,2.7rem)!important}
  .tv-dock{left:24px!important;max-width:calc(100vw - 350px)!important;gap:8px!important;padding:10px!important}
  .tv-dock-item{width:clamp(100px,9.5vw,132px)!important;min-height:88px!important}
  .tv-phone-card{right:24px!important;width:290px!important;min-width:290px!important;padding:12px!important;gap:12px!important}
  .tv-qr{width:84px!important;height:84px!important;flex-basis:84px!important}
  .tv-phone-card p{display:none!important}
}

@media (max-width:899px){
  .tv-welcome-copy{top:110px!important;left:24px!important;right:24px!important;bottom:auto!important;max-width:none!important}
  .tv-welcome-copy strong{font-size:1.7rem!important}
  .tv-phone-card{left:18px!important;right:18px!important;bottom:124px!important;width:auto!important;min-width:0!important;margin-left:0!important}
  .tv-dock{left:18px!important;right:18px!important;bottom:22px!important;max-width:none!important;justify-content:space-between!important}
  .tv-dock-item{width:auto!important;flex:1!important;min-height:76px!important}
}


/* V35 — retour sécurisé depuis l’aperçu voyageur ouvert par l’hôte */
.host-preview-back{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  background:var(--navy)!important;
  color:#fff!important;
  border-color:var(--navy)!important;
  box-shadow:0 8px 22px rgba(22,40,63,.16);
}
.host-preview-back:active{transform:scale(.98)}
@media(max-width:640px){
  .host-preview-back{font-size:.64rem;padding:8px 10px}
  .app-shell:not(.host) .topbar-actions{gap:5px}
  .app-shell:not(.host) .host-preview-back + .fullscreen-btn{display:none}
}
\n\n/* V36.3 — cartes logements visuelles et responsives */
.property-photo{
  height:118px;
  background-position:center;
  background-size:cover;
  background-repeat:no-repeat;
}
.property-photo.azur{
  background-image:
    linear-gradient(180deg,rgba(15,27,45,.04),rgba(15,27,45,.18)),
    url("https://images.unsplash.com/photo-1600607687920-4e2a09cf159d?auto=format&fit=crop&w=1200&q=82");
}
.property-photo.nissa{
  background-image:
    linear-gradient(180deg,rgba(15,27,45,.03),rgba(15,27,45,.2)),
    url("https://images.unsplash.com/photo-1600566753190-17f0baa2a6c3?auto=format&fit=crop&w=1200&q=82");
}
.property-copy{min-width:0}
.property .badge{top:12px;left:12px;padding:6px 10px;box-shadow:0 8px 22px rgba(15,27,45,.18)}

@media (min-width:900px){
  .host .page[data-page="dashboard"]>.list:nth-of-type(1),
  .host .page[data-page="homes"]>.list{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:22px;
    align-items:stretch;
  }
  .host .property{
    display:flex;
    flex-direction:column;
    min-height:430px;
    border-radius:24px;
    transition:transform .2s ease,box-shadow .2s ease;
  }
  .host .property:hover{
    transform:translateY(-4px);
    box-shadow:0 24px 52px rgba(22,40,63,.14);
  }
  .host .property-photo{
    height:auto;
    aspect-ratio:16/10;
  }
  .host .property-body{
    display:flex;
    flex:1;
    flex-direction:column;
    justify-content:space-between;
    gap:22px;
    padding:22px;
  }
  .host .property-body h3{font-size:1.45rem;margin-bottom:6px}
  .host .property-body p{font-size:.8rem;margin:0}
  .host .property .actions{gap:10px}
  .host .property .btn{min-height:46px}
}

@media (min-width:1280px){
  .host .page[data-page="dashboard"]>.list:nth-of-type(1),
  .host .page[data-page="homes"]>.list{
    grid-template-columns:repeat(3,minmax(260px,1fr));
  }
  .host .property{min-height:410px}
}

@media (max-width:899px){
  .property{border-radius:18px}
  .property-photo{height:112px}
  .property-body{padding:14px}
  .property .actions{grid-template-columns:1fr 1fr}
  .property .btn{min-height:42px}
}

/* V36.4 — retours hôte */
.host-back-btn{display:inline-flex;align-items:center;gap:7px;width:max-content;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:inherit;border-radius:999px;padding:8px 12px;margin-bottom:14px;font-weight:700;cursor:pointer}
@media(min-width:900px){.host-back-btn{border-color:var(--sand);background:#fff;color:var(--navy);box-shadow:0 8px 22px rgba(22,40,63,.06)}}


/* V36.5 — gestion complète logement par logement */
.property-admin-hero{min-height:230px;border-radius:24px;background:linear-gradient(135deg,#c7d8d5,#8ea9a4);background-position:center;background-size:cover;display:flex;align-items:flex-end;padding:24px;margin-bottom:20px;color:#fff;box-shadow:var(--shadow)}
.property-admin-hero span{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.14em}.property-admin-hero strong{display:block;font-family:var(--display);font-size:2rem;margin-top:4px}.public-links{display:grid;gap:8px;margin-top:18px}.public-links a{overflow:hidden;text-overflow:ellipsis;color:var(--green-2)}.property-danger-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.danger-btn{background:#fff0ee;color:#9d3f36;border:1px solid #e7bbb5}.field small{color:var(--slate)}
@media(max-width:640px){.property-admin-hero{min-height:180px;border-radius:18px;padding:18px}.property-danger-actions{grid-template-columns:1fr}.public-links a{font-size:.72rem}}

/* V36.5.2 — photo par logement, retour TV et typographie du dock */
.property-photo-form{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:14px;margin:0 0 20px;padding:18px 20px}
.property-photo-form b{display:block;font-family:var(--display);font-size:1.12rem}
.property-photo-form p{margin:4px 0 0;color:var(--slate);font-size:.78rem;line-height:1.45}
.property-photo-picker{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;border:1px dashed #9fb9ae;border-radius:12px;background:#f4f8f6;color:var(--green-2);font-weight:700;cursor:pointer}
.property-photo-picker input{position:absolute;inset:0;opacity:0;cursor:pointer}
.property-photo-picker:focus-within{box-shadow:0 0 0 3px rgba(79,130,113,.14)}
.app-shell.tv .tv-dock-item,
.app-shell.tv .tv-dock-item span{font-family:"Instrument Sans",system-ui,-apple-system,sans-serif!important;font-weight:600!important;letter-spacing:0!important}
@media(max-width:760px){.property-photo-form{grid-template-columns:1fr}.property-photo-picker,.property-photo-form .btn{width:100%}}


/* V36.5.3 — retour cohérent dans toutes les rubriques hôte */
.host-back-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:max-content;min-height:42px;margin:0 0 16px;
  border:1px solid var(--sand);border-radius:999px;padding:9px 15px;
  background:#fff;color:var(--navy);font-weight:700;
  box-shadow:0 8px 22px rgba(22,40,63,.07);cursor:pointer;
}
.host-back-btn:hover{background:#f7f5ef}.host-back-btn:active{transform:scale(.98)}
@media(max-width:899px){
  .host-back-btn{margin:2px 0 14px;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14);color:#fff;box-shadow:none}
}

/* V36.5.5 — statistiques dynamiques et typographie des chiffres */
.stat strong{
  font-family:"Instrument Sans",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-weight:700!important;
  letter-spacing:-.045em!important;
  line-height:1!important;
}
@media (min-width:900px){
  .host .dashboard-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}
  .host .dashboard-stats .stat{min-width:0}
}
@media (max-width:899px){
  .dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dashboard-stats .stat:last-child{grid-column:1/-1}
}

/* V36.6 — réservations, clients et finances */
.finance-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.client-row,.reservation-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px}.client-row h3,.reservation-row h3{font-family:var(--ui);font-size:1rem;font-weight:700}.client-row p,.reservation-row p{margin:4px 0 0;color:var(--slate);font-size:.76rem}.client-metrics,.reservation-amount{display:grid;text-align:right}.client-metrics b,.reservation-amount b{font-size:.95rem}.client-metrics span,.reservation-amount span{font-size:.66rem;color:var(--slate)}.report-row{display:flex;justify-content:space-between;align-items:center}.report-row span{font-weight:800}.empty-state{text-align:center;color:var(--slate);padding:28px}.finance-stats{grid-template-columns:repeat(5,minmax(0,1fr))!important}.reservation-finance-form .form-two{grid-template-columns:repeat(2,minmax(0,1fr))}.danger-btn{background:#a84f46!important;color:#fff!important;border:0}
@media(max-width:899px){.finance-stats{grid-template-columns:1fr 1fr!important}.client-row,.reservation-row{grid-template-columns:1fr auto}.client-row .client-metrics:first-of-type{display:none}.reservation-finance-form .form-two{grid-template-columns:1fr}.finance-tabs .btn{flex:1}}

/* V36.7 — pilotage des ménages */
.cleaning-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}
.cleaning-filters select{width:100%;border:1px solid var(--sand);background:#fff;color:var(--navy);border-radius:12px;padding:11px 12px}
.cleaning-history{margin:18px 0;padding:14px;border:1px solid var(--sand);border-radius:16px;background:#fff}
.cleaning-history>b{display:block;margin-bottom:10px}
.cleaning-history>div{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--sand);font-size:.78rem}
.cleaning-history small{color:var(--slate);white-space:nowrap}
.cleaning-list .mini-status{font-size:.66rem}
@media(max-width:700px){.cleaning-filters{grid-template-columns:1fr}.cleaning-list{gap:12px}.cleaning-list .agenda-item{padding:14px}.cleaning-history>div{display:grid;gap:3px}.cleaning-history small{white-space:normal}}

/* V36.8 — messagerie voyageurs en temps réel */
.message-toolbar{display:flex;gap:10px;margin:0 0 16px}.message-total{padding:8px 12px;border-radius:999px;background:rgba(79,130,113,.12);color:var(--green-2);font-size:.72rem;font-weight:700;white-space:nowrap}.message-list .msg{min-height:82px}.message-list .msg.has-unread{border-color:rgba(79,130,113,.46);box-shadow:0 14px 34px -24px rgba(79,130,113,.6)}.message-list .msg h3{font-size:.9rem}.message-list .msg p{max-width:none;margin-top:4px}.message-list .msg small{display:block;margin-top:5px;color:var(--slate);font-size:.63rem}.message-meta{display:grid;justify-items:end;gap:6px;min-width:48px}.message-meta em{font-style:normal;color:var(--slate);font-size:.61rem}.unread-badge{min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--green);color:#fff;display:grid;place-items:center;font-size:.62rem}.empty-thread{padding:18px;border:1px dashed var(--sand);border-radius:15px;color:var(--slate);text-align:center}.conversation-thread{scroll-behavior:smooth}.bubble p{white-space:pre-wrap;word-break:break-word}
@media(min-width:900px){.host .page[data-page="messages"] .message-list{grid-template-columns:1fr!important;max-width:900px}.host .page[data-page="messages"] .host-title{align-items:center}.message-list .msg{padding:18px 20px}.message-list .msg .avatar{width:44px;height:44px}}

/* V36.9 — accès voyageur sécurisé par réservation */
.access-gate{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#fbfaf6,#eee8dc);color:var(--navy)}
.access-gate-card{width:min(100%,560px);padding:34px;border:1px solid var(--sand);border-radius:28px;background:#fff;box-shadow:0 28px 80px rgba(22,40,63,.14);text-align:center}
.access-gate-card>.riva-logo{margin-bottom:10px}.access-gate-card>.wordmark{display:flex;justify-content:center;margin-bottom:28px}
.access-gate-card h1{font-size:clamp(2rem,6vw,3.25rem);line-height:1.02;margin:10px 0 14px}.access-gate-card p{color:var(--slate);line-height:1.65;margin:0 auto;max-width:44ch}
.access-dates{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:24px 0}.access-dates span{display:grid;gap:4px;padding:14px;border-radius:15px;background:var(--cream);font-size:.72rem;color:var(--slate)}.access-dates b{color:var(--navy);font-size:.88rem}
.access-status-pill,.access-mini{display:inline-flex;align-items:center;width:max-content;border-radius:999px;font-weight:800}
.access-status-pill{margin-top:22px;padding:9px 14px;font-size:.72rem}.access-mini{margin-top:7px;padding:4px 8px;font-size:.6rem}
.access-status-pill.active,.access-mini.active{background:#dfeee8;color:#2f6654}.access-status-pill.upcoming,.access-mini.upcoming{background:#fff2ca;color:#765d16}.access-status-pill.expired,.access-mini.expired{background:#edf0f3;color:#596473}.access-status-pill.disabled,.access-mini.disabled,.access-status-pill.invalid,.access-mini.invalid{background:#f8e1de;color:#94453c}.access-mini.missing{background:#edf0f3;color:#596473}
.guest-access-panel{display:grid;gap:12px;margin:8px 0 20px;padding:16px;border:1px solid #c9dcd4;border-radius:18px;background:#edf5f1}.guest-access-panel>div:first-child{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.guest-access-panel>div:first-child .access-mini{margin:0}.guest-access-link{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.guest-access-link input{min-width:0;border:1px solid var(--sand);border-radius:12px;background:#fff;padding:11px;color:var(--navy)}
.public-links small{display:block;color:var(--slate);margin-top:8px;line-height:1.45}
@media(max-width:560px){.access-gate-card{padding:26px 20px}.access-dates{grid-template-columns:1fr}.guest-access-link{grid-template-columns:1fr}.guest-access-link .btn{width:100%}}

/* Branding officiel RivaScreen */
.riva-brand-image{
  display:inline-flex;
  align-items:center;
  flex:none;
  height:42px;
  max-width:210px;
}
.riva-brand-image img{
  display:block;
  width:auto;
  height:100%;
  max-width:100%;
  object-fit:contain;
}
.brand .riva-brand-image{height:40px;max-width:190px}
.login-brand .riva-brand-image{height:64px;max-width:300px}
.desktop-brand .riva-brand-image{height:54px;max-width:230px}
.app-shell.tv .riva-brand-image{height:46px;max-width:220px}
.boot-screen{padding:24px}
.boot-brand-logo{
  width:min(520px,82vw);
  height:auto;
  display:block;
  margin:auto;
}
@media(max-width:640px){
  .brand .riva-brand-image{height:34px;max-width:165px}
  .login-brand .riva-brand-image{height:52px;max-width:245px}
  .desktop-brand .riva-brand-image{height:46px;max-width:205px}
}

/* V36.9.1 — logo officiel plus visible sans modifier l’interface */
@media (min-width:900px){
  .desktop-brand{
    justify-content:center;
    margin:0 4px 26px;
    padding:14px 12px 13px;
    min-height:118px;
    border:1px solid rgba(255,255,255,.16);
    border-radius:20px;
    background:rgba(255,255,255,.96);
    box-shadow:0 18px 44px rgba(0,0,0,.18);
    overflow:hidden;
  }
  .desktop-brand .riva-brand-image{
    width:100%;
    height:92px;
    max-width:250px;
    justify-content:center;
  }
  .desktop-brand .riva-brand-image img{
    width:100%;
    height:100%;
    object-fit:contain;
  }
}

/* Mode TV : logo plus grand, lisible sur toutes les photos */
.app-shell.tv .topbar .brand{
  padding:9px 14px 10px;
  border:1px solid rgba(255,255,255,.35);
  border-radius:18px;
  background:rgba(255,255,255,.92);
  box-shadow:0 14px 36px rgba(0,0,0,.30);
  backdrop-filter:blur(14px);
}
.app-shell.tv .topbar .brand .riva-brand-image{
  width:220px;
  height:72px;
  max-width:24vw;
  justify-content:center;
}
.app-shell.tv .topbar .brand .riva-brand-image img{
  width:100%;
  height:100%;
  object-fit:contain;
}

/* En-têtes hôte et voyageur hors TV */
.topbar .brand .riva-brand-image{
  height:48px;
  max-width:210px;
}

@media (max-width:899px){
  .topbar .brand .riva-brand-image{
    height:42px;
    max-width:180px;
  }
  .app-shell.tv .topbar .brand{
    padding:7px 10px 8px;
    border-radius:14px;
  }
  .app-shell.tv .topbar .brand .riva-brand-image{
    width:150px;
    height:52px;
    max-width:38vw;
  }
}


/* V37 — demandes voyageurs réelles */
.support-intro{margin:0 0 14px;color:var(--slate);font-size:.84rem;line-height:1.55}
.guest-request-new{min-height:50px}
.guest-message-secondary{width:100%;background:#fff!important;color:var(--navy)!important;border:1px solid var(--sand)!important}
.request-empty{color:var(--slate);font-size:.8rem;text-align:center;padding:22px}
.guest-request-card{display:grid;gap:10px}
.request-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.request-card-head h3{font-family:var(--ui);font-size:.92rem;font-weight:700;margin-top:3px}
.request-category{font-size:.61rem;letter-spacing:.1em;text-transform:uppercase;color:var(--green-2);font-weight:700}
.guest-request-card>p{margin:0;color:var(--slate);font-size:.8rem;line-height:1.55}
.guest-request-card>small{color:#87909b;font-size:.67rem}
.host-request-reply{background:#eef4f0;border:1px solid #cfe0d7;border-radius:14px;padding:12px}
.host-request-reply b{font-size:.72rem;color:var(--green-2)}
.host-request-reply p{margin:5px 0 0;color:var(--navy);font-size:.78rem;line-height:1.5}
.request-status{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:5px 9px;font-size:.61rem;font-weight:700;white-space:nowrap;background:#edf0f4;color:#536173}
.request-status.new{background:#f6e6b8;color:#735b18}.request-status.in_progress{background:#dceaf3;color:#315b77}.request-status.resolved,.request-status.closed{background:#dceee5;color:#356653}
.request-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;color:inherit}
.request-row-icon{width:42px;height:42px;border-radius:13px;display:grid;place-items:center;background:rgba(143,195,173,.12);color:#8fc3ad;flex:none}.request-row-icon svg{width:21px;height:21px}
.request-row-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.request-row-top h3{font-family:var(--ui);font-size:.85rem;font-weight:700}
.request-row p{margin:3px 0;color:#9fb0c4;font-size:.7rem}.request-row small{display:block;color:#7f92a7;font-size:.67rem;line-height:1.4}
.request-stats{grid-template-columns:repeat(3,1fr);margin-bottom:12px}.request-stats .stat{min-height:88px}
.request-filters{display:flex;gap:7px;overflow:auto;padding:2px 0 12px;scrollbar-width:none}.request-filters::-webkit-scrollbar{display:none}.request-filters .btn{padding:8px 11px;white-space:nowrap;font-size:.7rem}
.request-meta{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}.request-meta span{background:#ece7dd;border-radius:999px;padding:6px 9px;font-size:.66rem;color:var(--slate)}
.request-message{background:#f3f0e8;border:1px solid var(--sand);border-radius:16px;padding:15px;color:var(--navy);font-size:.83rem;line-height:1.55;margin-bottom:14px;white-space:pre-wrap}
@media(max-width:420px){.request-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.request-stats .stat{padding:12px}.request-stats .stat strong{font-size:1.45rem}.request-row-top{display:grid}.request-status{justify-self:start}}


/* TV Guide V1 — commande TV simple pour l’hôte */
.tv-control-card{display:grid;gap:16px}
.tv-control-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.tv-control-head>div{display:grid;gap:4px}
.tv-control-head b{font-size:1.05rem}
.tv-property-select{min-width:220px;border:1px solid rgba(255,255,255,.14);background:#13223a;color:#fff;border-radius:12px;padding:11px 13px}
.tv-link-preview{padding:12px 14px;border-radius:13px;background:rgba(255,255,255,.055);border:1px solid rgba(255,255,255,.08);overflow:auto}
.tv-link-preview span{font-size:.74rem;color:#b9c7d6;white-space:nowrap}
.tv-primary-actions{display:grid;grid-template-columns:1.25fr 1fr 1fr;gap:9px}
.tv-guide-card{margin-top:14px}
.tv-guide-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:18px}
.tv-guide-heading h2{font-size:1.35rem;margin-top:5px}
.tv-guide-time{border-radius:999px;padding:6px 9px;background:rgba(143,195,173,.12);color:#9ed0ba;font-size:.68rem;font-weight:700;white-space:nowrap}
.tv-guide-steps{display:grid;gap:12px}
.tv-guide-steps article{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start;padding:13px;border-radius:15px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.065)}
.tv-guide-steps article>span{width:34px;height:34px;border-radius:11px;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:800}
.tv-guide-steps b{font-size:.84rem}
.tv-guide-steps p{margin:4px 0 0;color:#9fb0c4;font-size:.73rem;line-height:1.48}
.tv-equipment-help{margin-top:14px;border-top:1px solid rgba(255,255,255,.08);padding-top:13px}
.tv-equipment-help summary{cursor:pointer;color:#d9e3ec;font-weight:700;font-size:.78rem;padding:7px 0}
.tv-equipment-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}
.tv-equipment-grid>div{padding:12px;border-radius:13px;background:rgba(255,255,255,.04)}
.tv-equipment-grid b{font-size:.76rem}
.tv-equipment-grid p{margin:4px 0 0;color:#9fb0c4;font-size:.69rem;line-height:1.45}
.tv-qr-sheet{display:grid;place-items:center;gap:12px;text-align:center}
.tv-install-qr{width:244px;min-height:244px;padding:12px;background:#fff;border-radius:18px;display:grid;place-items:center}
.tv-install-qr img,.tv-install-qr canvas{max-width:100%;height:auto!important}
.tv-qr-sheet p{margin:0;color:var(--slate);font-size:.72rem;word-break:break-all}
.guest-tv-btn{display:inline-flex}

@media(max-width:899px){
  .guest-tv-btn{display:none!important}
  .tv-control-head{display:grid}
  .tv-property-select{width:100%;min-width:0}
  .tv-primary-actions{grid-template-columns:1fr}
  .tv-equipment-grid{grid-template-columns:1fr}
}

/* TV Guide V2 — sélecteur fiable et liens courts */
.tv-link-preview::before{
  content:"Lien court permanent";
  display:block;
  margin-bottom:5px;
  color:#8fc3ad;
  font-size:.62rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
}

/* TV Guide V3 — plein écran + bandeau supérieur plus court */
.app-shell.tv .topbar{
  min-height:72px!important;
  padding:10px 24px!important;
  background:
    linear-gradient(
      180deg,
      rgba(3,10,20,.72) 0%,
      rgba(3,10,20,.34) 46%,
      rgba(3,10,20,0) 100%
    )!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
.app-shell.tv .topbar-actions{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
}
.app-shell.tv .tv-fullscreen-btn,
.app-shell.tv .tv-exit{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  color:#fff!important;
  border:1px solid rgba(255,255,255,.24)!important;
  background:rgba(255,255,255,.12)!important;
  backdrop-filter:blur(8px)!important;
  -webkit-backdrop-filter:blur(8px)!important;
}
.app-shell.tv .topbar .brand{
  padding:7px 12px!important;
  border-radius:18px!important;
}
.app-shell.tv .topbar .brand .riva-brand-image{
  height:40px!important;
  max-width:185px!important;
}
@media(max-width:899px){
  .app-shell.tv .topbar{
    min-height:64px!important;
    padding:8px 12px!important;
  }
  .app-shell.tv .topbar .brand{
    padding:5px 8px!important;
  }
  .app-shell.tv .topbar .brand .riva-brand-image{
    height:32px!important;
    max-width:145px!important;
  }
}


/* Notifications V1 */
.desktop-nav-btn{position:relative}
.nav-notification-badge{
  margin-left:auto;
  min-width:22px;
  height:22px;
  padding:0 6px;
  border-radius:999px;
  display:inline-grid;
  place-items:center;
  background:#d96b63;
  color:#fff;
  font-size:.62rem;
  line-height:1;
  box-shadow:0 4px 12px rgba(217,107,99,.3);
}
.tab .ti{position:relative}
.tab-notification-badge{
  position:absolute;
  top:-5px;
  right:-8px;
  min-width:18px;
  height:18px;
  padding:0 5px;
  border-radius:999px;
  display:grid;
  place-items:center;
  background:#d96b63;
  color:#fff;
  border:2px solid var(--navy);
  font-size:.5rem;
  line-height:1;
}
.notification-settings-card{
  display:grid;
  gap:14px;
  padding:4px 0;
}
.notification-setting-head{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:center;
}
.notification-setting-head>div{
  display:flex;
  align-items:center;
  gap:11px;
}
.notification-setting-head span{
  display:grid;
  gap:2px;
}
.notification-setting-head small,
.notification-settings-card p{
  color:var(--slate);
  font-size:.72rem;
  line-height:1.45;
}
.notification-setting-head strong{
  padding:6px 9px;
  border-radius:999px;
  background:#e7efe9;
  color:var(--green-2);
  font-size:.66rem;
  white-space:nowrap;
}
.notification-settings-card p{margin:0}

/* Correctif noms de logements */
.desktop-page-name b{
  max-width:min(42vw,420px);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
@media(max-width:700px){
  .desktop-page-name b{max-width:42vw}
}


/* Départ & ménage V1 */
.checkout-time-card{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-bottom:12px;
}
.checkout-time-card p{
  margin:5px 0 0;
  color:var(--slate);
  font-size:.78rem;
  line-height:1.45;
}
.checkout-time-card input{
  width:126px;
  flex:none;
  border:1px solid var(--sand);
  background:#fbfaf7;
  color:var(--navy);
  border-radius:13px;
  padding:12px;
  font-weight:700;
}
.checkout-note-field{
  display:grid;
  gap:7px;
  margin-top:12px;
  color:var(--navy);
  font-size:.76rem;
  font-weight:700;
}
.checkout-note-field small{font-weight:500;color:var(--slate)}
.checkout-note-field textarea{
  width:100%;
  border:1px solid var(--sand);
  background:#fff;
  color:var(--navy);
  border-radius:14px;
  padding:13px;
  resize:vertical;
}
.checkout-host-banner{margin-bottom:16px}
.host-checkout-row{
  display:flex;
  align-items:center;
  gap:12px;
}
.host-checkout-icon{
  width:42px;
  height:42px;
  border-radius:13px;
  display:grid;
  place-items:center;
  color:#8fc3ad;
  background:rgba(143,195,173,.12);
  flex:none;
}
.host-checkout-icon svg{width:21px;height:21px}
.host-checkout-row h3{font-family:var(--ui);font-size:.86rem;font-weight:700}
.host-checkout-row p{margin:3px 0 0;color:#b7c4d2;font-size:.72rem}
.host-checkout-row small{display:block;margin-top:4px;color:#8fa1b4;font-size:.67rem}
.checkout-ready-pill{
  margin-left:auto;
  border-radius:999px;
  padding:6px 9px;
  background:rgba(230,197,107,.14);
  color:#efd883;
  font-size:.64rem;
  font-weight:800;
  white-space:nowrap;
}
.checkout-confirmed{
  border-color:rgba(143,195,173,.35)!important;
  box-shadow:inset 3px 0 0 #8fc3ad!important;
}
.property-photo .property-ops-badge{
  position:absolute;
  right:10px;
  top:10px;
  border-radius:999px;
  padding:5px 9px;
  color:#fff;
  font-size:.58rem;
  font-weight:800;
  backdrop-filter:blur(8px);
}
.property-ops-badge.occupied{background:rgba(54,83,114,.92)}
.property-ops-badge.prepare{background:rgba(190,132,69,.94)}
.property-ops-badge.ready{background:rgba(58,98,85,.94)}
@media(max-width:600px){
  .checkout-time-card{align-items:stretch;flex-direction:column}
  .checkout-time-card input{width:100%}
  .host-checkout-row{align-items:flex-start}
}

/* Correctif ménages — statuts et notifications */
.desktop-nav-btn[data-go="cleaning"] .nav-notification-badge{background:#c98a45}


/* Création de compte V1 */
.create-account-btn{
  width:100%;
  border:1px solid var(--navy);
  background:transparent;
  color:var(--navy);
  border-radius:14px;
  padding:13px 14px;
  font-weight:800;
}
.create-account-btn:hover{background:rgba(22,40,63,.04)}
.signup-shell{padding-top:18px}
.signup-card{width:min(100%,620px)}
.signup-card h1{margin-top:4px}
.signup-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.signup-card select{
  width:100%;
  border:1px solid var(--sand);
  background:#fbfaf7;
  color:var(--navy);
  border-radius:14px;
  padding:14px 15px;
}
.auth-back-btn{
  border:0;
  background:transparent;
  color:var(--green-2);
  padding:0 0 16px;
  font-weight:800;
}
.signup-consent{
  display:flex;
  align-items:flex-start;
  gap:9px;
  color:var(--slate);
  font-size:.74rem;
  line-height:1.4;
}
.signup-consent input{
  width:18px;
  height:18px;
  margin-top:1px;
  accent-color:var(--green);
  flex:none;
}
@media(max-width:620px){
  .signup-grid{grid-template-columns:1fr}
  .signup-card{padding:21px}
}

/* Comptes isolés et onboarding vide */
.onboarding-empty{text-align:center;padding:34px 24px!important}
.onboarding-empty .empty-icon{width:58px;height:58px;margin:0 auto 14px;border-radius:18px;display:grid;place-items:center;background:rgba(143,195,173,.12);color:#8fc3ad}
.onboarding-empty .empty-icon svg{width:28px;height:28px}
.onboarding-empty h3{font-size:1.15rem;margin-bottom:7px}
.onboarding-empty p{max-width:440px;margin:0 auto 18px;color:#9fb0c4;line-height:1.5}

/* Démo isolée V2 */
.host-preview-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:6px 9px;
  border-radius:999px;
  background:rgba(230,197,107,.16);
  color:#f1d77e;
  font-size:.62rem;
  font-weight:800;
}

/* Démo isolée V3 — identité clairement distincte */
.demo-account-note{
  margin:12px 0 4px;
  padding:12px;
  border-radius:14px;
  background:#fff8df;
  color:#66531a;
  font-size:.72rem;
  line-height:1.45;
  border:1px solid #efdc93;
}
.desktop-account span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* Release Candidate 1 — finition stabilité */
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline:3px solid rgba(230,197,107,.75);
  outline-offset:2px;
}


/* Release Candidate 2 — QR Wi-Fi, plein écran, notifications et guide ménage */
.wifi-mini-qr,
.wifi-main-qr{
  background:#fff!important;
  display:grid;
  place-items:center;
  overflow:hidden;
}
.wifi-mini-qr img,
.wifi-mini-qr canvas,
.wifi-main-qr img,
.wifi-main-qr canvas{
  max-width:100%;
  max-height:100%;
  width:100%!important;
  height:auto!important;
}
.wifi-main-qr{
  width:220px!important;
  height:220px!important;
  padding:10px;
  border-radius:18px;
}
.cleaning-guide-card{
  margin-top:18px;
  padding:20px;
}
.cleaning-guide-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:15px;
}
.cleaning-guide-heading h2{
  margin:4px 0 0;
  font-size:1.15rem;
}
.cleaning-guide-heading>span{
  padding:6px 10px;
  border-radius:999px;
  background:rgba(143,195,173,.14);
  color:var(--green-2);
  font-size:.7rem;
  font-weight:800;
  white-space:nowrap;
}
.cleaning-guide-steps{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px;
}
.cleaning-guide-steps article{
  padding:13px;
  border-radius:14px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.07);
}
.cleaning-guide-steps b{
  display:block;
  margin-bottom:6px;
  font-size:.78rem;
}
.cleaning-guide-steps p,
.cleaning-guide-note{
  margin:0;
  color:var(--muted);
  font-size:.7rem;
  line-height:1.5;
}
.cleaning-guide-note{
  margin-top:14px;
  padding-top:14px;
  border-top:1px solid rgba(255,255,255,.08);
}
@media(max-width:900px){
  .cleaning-guide-steps{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  .cleaning-guide-steps{grid-template-columns:1fr}
}


/* Release Candidate 3 — personnalisation logement et écran TV */
.property-customization-form{
  margin:16px 0;
  padding:20px;
}
.property-customization-heading{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:16px;
  margin-bottom:16px;
}
.property-customization-heading h2{
  margin:4px 0 6px;
  font-size:1.15rem;
}
.property-customization-heading p{
  margin:0;
  color:var(--muted);
  font-size:.76rem;
  line-height:1.5;
}
.property-customization-form textarea{
  min-height:112px;
  resize:vertical;
}


/* Release Candidate 4 — aperçu hôte et personnalisation visible */
.personalization-page-form textarea{
  min-height:150px;
  resize:vertical;
}
.tv-message-preview{
  margin:4px 0 16px;
  padding:22px;
  border-radius:18px;
  background:linear-gradient(145deg,#10243a,#0d1929);
  color:#fff;
  border:1px solid rgba(255,255,255,.08);
}
.tv-message-preview span{
  display:block;
  margin-bottom:9px;
  color:#e6c56b;
  font-size:.68rem;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.tv-message-preview strong{
  display:block;
  font-size:1.05rem;
  line-height:1.5;
}


/* Release Candidate 5 — formulaire stable et accès propre */
.personalization-launch-card{
  width:100%;
  margin:16px 0;
  padding:18px 20px;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:14px;
  text-align:left;
  color:inherit;
  cursor:pointer;
  border:1px solid rgba(15,27,45,.08);
}
.personalization-launch-card:hover{
  transform:translateY(-1px);
  border-color:rgba(230,197,107,.7);
}
.personalization-launch-icon{
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:14px;
  background:rgba(230,197,107,.16);
  color:#a57e14;
}
.personalization-launch-icon svg{
  width:23px;
  height:23px;
}
.personalization-launch-card b{
  display:block;
  margin-bottom:5px;
  font-size:.96rem;
}
.personalization-launch-card small{
  display:block;
  color:var(--muted);
  line-height:1.45;
}
.personalization-launch-arrow{
  font-size:1.8rem;
  color:var(--muted);
}
.personalization-page-form{
  max-width:760px;
  margin:0 auto;
}
.personalization-page-form .field{
  margin-bottom:18px;
}
.personalization-page-form input,
.personalization-page-form textarea{
  background:#fff;
}
.personalization-page-form button[disabled]{
  opacity:.7;
  cursor:wait;
}


/* Release Candidate 6 — notifications silencieuses pendant les formulaires */
.personalization-page-form{
  position:relative;
}
