/* YESBY HOTEL — global.css */
/* YESBY HOTEL — styles communs */
/* Socle responsive clair/sombre. */
:root{color-scheme:light;--bg:#f3f4f6;--surface:#fff;--text:#151922;--sub:#5f6979;--line:#d9dde4;--accent:#2368c9;--hover:#e9eef6}
:root[data-theme="dark"]{color-scheme:dark;--bg:#15171b;--surface:#24282f;--text:#f0f2f6;--sub:#b7bec9;--line:#414955;--accent:#79adff;--hover:#343c48}
@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--bg:#15171b;--surface:#24282f;--text:#f0f2f6;--sub:#b7bec9;--line:#414955;--accent:#79adff;--hover:#343c48}}
*{box-sizing:border-box}body{margin:0;font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}a{color:var(--accent)}.layout{display:flex;min-height:100vh}.sidebar{width:232px;flex:0 0 232px;padding:22px 14px;background:var(--surface);border-right:1px solid var(--line);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:28px}.brand{font-size:19px;font-weight:800;padding:9px 12px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.sidebar nav a{display:block;padding:11px 13px;border-radius:9px;text-decoration:none;color:var(--text)}.sidebar nav a:hover,.sidebar nav a.active{background:var(--hover)}.sidebar nav a.active{font-weight:700}.sidebar-footer{margin-top:auto}.sidebar-footer button{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px;background:var(--surface);color:var(--text);cursor:pointer}main{flex:1;min-width:0;max-width:1500px;padding:28px 32px}.hero{padding:clamp(30px,6vw,80px);border-radius:18px;background:var(--surface);border:1px solid var(--line);margin-bottom:20px}.hero h1{font-size:clamp(32px,4vw,56px);line-height:1.12;max-width:730px;margin:16px 0}.hero p{font-size:18px;color:var(--sub);max-width:630px}.eyebrow{font-size:13px;font-weight:700;color:var(--accent)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:20px}.panel h2{margin-top:0}.btn{display:inline-block;border:0;border-radius:9px;padding:11px 19px;background:#2368c9;color:#fff;text-decoration:none;font-weight:700}.btn:hover{background:#19529f}.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.tile{min-height:120px;border:1px solid var(--line);border-radius:12px;padding:19px;background:var(--bg)}.tile>span:not(.hotel-status):not(.hotel-booking-new){font-size:27px}.tile h3{font-size:16px;margin:12px 0 0}@media(max-width:900px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:720px){.layout{display:block}.sidebar{position:static;width:auto;height:auto;padding:10px 16px;gap:8px}.sidebar nav{flex-direction:row;flex-wrap:wrap}.sidebar nav a{padding:8px}.sidebar-footer{margin:0}.sidebar-footer button{width:auto}main{padding:16px}.hero{padding:26px}.panel{padding:17px}}@media(max-width:390px){.tiles{grid-template-columns:1fr}}

/* Comptes */
.auth{max-width:520px}.auth label{display:block;margin:14px 0;font-weight:600}.auth input{display:block;width:100%;margin-top:5px;padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text);font:inherit}.auth .btn{cursor:pointer}.error{padding:12px 14px;color:#922c2c;background:#ffebeb;border-radius:8px}.muted{color:var(--sub)}

/* Navigation horizontale desktop, thème puis burger en mobile */
.layout{display:block;min-height:100vh}
.topbar{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:18px;min-height:70px;padding:10px 28px;background:var(--surface);border-bottom:1px solid var(--line)}
.brand{padding:0;white-space:nowrap}
.topbar nav{display:flex;align-items:center;flex:1;gap:5px;min-width:0}
.topbar nav a{display:block;padding:10px 13px;border-radius:9px;color:var(--text);text-decoration:none;white-space:nowrap}
.topbar nav a:hover,.topbar nav a.active{background:var(--hover)}
.topbar nav a.active{font-weight:700}
.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text);font-size:22px;cursor:pointer}
.icon-button:hover{background:var(--hover)}
.burger{display:none}
main{width:100%;max-width:1500px;margin:0 auto;padding:28px 32px}
@media(max-width:800px){
  .topbar{padding:10px 16px;min-height:62px;flex-wrap:wrap;gap:8px}
  .brand{font-size:18px}
  .burger{display:inline-flex}
  .topbar nav{display:none;order:3;flex:0 0 100%;flex-direction:column;align-items:stretch;gap:3px;padding:8px 0 4px}
  .topbar.menu-open nav{display:flex}
  .topbar nav a{width:100%;padding:11px 13px}
  .topbar-actions{order:2}
  main{padding:16px}
}

/* Adresses : fieldset et suggestion BAN */
.address-box{grid-column:1/-1;min-width:0;border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:8px 0}
.address-box legend{padding:0 8px;font-weight:750}
.address-box label{display:block;margin:0 0 12px;font-weight:600}
.address-box label:last-child{margin-bottom:0}
.address-box input{display:block;width:100%;margin-top:5px;padding:11px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text);font:inherit}
.address-city-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.address-lookup{position:relative}
.address-suggestions{position:absolute;top:100%;left:0;right:0;z-index:50;background:var(--surface);border:1px solid var(--line);border-radius:9px;box-shadow:0 8px 20px rgba(0,0,0,.18);overflow:hidden;max-height:250px;overflow-y:auto}
.address-suggestions[hidden]{display:none}
.address-suggestions button{display:block;width:100%;padding:11px;text-align:left;border:0;border-bottom:1px solid var(--line);background:var(--surface);color:var(--text);font:inherit;cursor:pointer}
.address-suggestions button:hover,.address-suggestions button:focus{background:var(--hover)}
.auth .address-box{margin:14px 0}
@media(max-width:450px){.address-box{padding:12px}.address-city-row{gap:10px}}


/* Contraste global YESBY HOTEL — Niveau C maximum */
:root{
  color-scheme:light;
  --bg:#e0e6ef;--surface:#ffffff;--surface-2:#eef2f8;
  --field-bg:#ffffff;--text:#111827;--sub:#465568;
  --line:#a9b5c7;--line-strong:#8797ad;
  --accent:#165cba;--hover:#dbe7f8;
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#090b0f;--surface:#2a313b;--surface-2:#414b59;
  --field-bg:#101419;--text:#ffffff;--sub:#d9e0e9;
  --line:#77869a;--line-strong:#8b9aad;
  --accent:#91c2ff;--hover:#495669;
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme]){
    color-scheme:dark;
    --bg:#090b0f;--surface:#2a313b;--surface-2:#414b59;
    --field-bg:#101419;--text:#ffffff;--sub:#d9e0e9;
    --line:#77869a;--line-strong:#8b9aad;
    --accent:#91c2ff;--hover:#495669;
  }
}
body{background:var(--bg);color:var(--text)}
.panel,.hero,.topbar{background:var(--surface);border-color:var(--line-strong)}
.tile{background:var(--surface-2);border-color:var(--line-strong)}
fieldset,.address-box{background:var(--surface-2);border:1px solid var(--line-strong)}
:is(.auth,.property-form,.address-box) :is(input,select,textarea),
input:not([type="hidden"]),select,textarea{
  background:var(--field-bg);color:var(--text);
  border:1px solid var(--line-strong);
}
:is(input,select,textarea):focus-visible,.icon-button:focus-visible,.btn:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;
}
:is(input,select,textarea):focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 28%,transparent)}
:is(input,select,textarea)::placeholder{color:var(--sub)}
fieldset legend{color:var(--text);background:var(--surface-2);border-radius:5px}
label{color:var(--text)}.muted{color:var(--sub)}
.address-suggestions{background:var(--surface);border-color:var(--line-strong)}
.address-suggestions button{background:var(--surface);color:var(--text)}
.address-suggestions button:hover,.address-suggestions button:focus{background:var(--hover)}
.icon-button{border-color:var(--line-strong)}

/* Position standard des boutons et messages des formulaires */
.form-actions{grid-column:1/-1;display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px}
.form-actions .success,.form-actions .error{width:100%;margin:0 0 3px}
.btnpos{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;min-height:42px;height:auto;padding:10px 18px;white-space:normal;line-height:1.4;cursor:pointer}
.auth .form-actions{margin-top:18px}

/* Accueil hors du burger sur smartphone */
.mobile-home-link{display:none;text-decoration:none;color:var(--text);font-weight:700;padding:9px 12px;border-radius:9px}
@media(max-width:800px){.mobile-home-link{display:inline-flex;align-items:center}.mobile-home-link:hover{background:var(--hover)}.topbar nav .desktop-home-link{display:none}}

/* Bascule de visibilité des mots de passe */
.password-wrap{display:block;position:relative;margin-top:5px}.auth .password-wrap input{display:block;width:100%;padding-right:54px;margin-top:0}
.password-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:43px;height:38px;border:0;border-radius:7px;background:transparent;color:var(--text);font-size:20px;cursor:pointer}.password-toggle:hover,.password-toggle:focus-visible{background:var(--hover)}


/* Formulaires : champs courts sur demi-largeur, textes longs sur toute la ligne. */
.property-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.property-form>label{grid-column:1/-1;min-width:0}
.property-form>label:has(input:is([type="date"],[type="time"],[type="datetime-local"],[type="number"])),
.property-form>label:has(select){grid-column:span 1}
.property-form>label:has(input[inputmode="decimal"]){grid-column:span 1}
.property-form>label:has(textarea),.property-form>.form-actions,.property-form>.address-box{grid-column:1/-1}
@media(max-width:380px){.property-form{grid-template-columns:1fr}.property-form>label{grid-column:1/-1}}

#category-create-form[hidden]{display:none!important}

/* Réservations futures : vert, rouge si au moins une non vue. */
.hotel-notify-card{position:relative;padding-right:44px}
.hotel-unseen-badge{display:inline-flex;align-items:center;justify-content:center;min-width:21px;height:21px;padding:0 6px;border-radius:12px;background:#d92d36;color:#fff!important;font-size:12px;font-weight:800;line-height:1;text-decoration:none;white-space:nowrap}
.hotel-notify-card>.hotel-counter-link{position:absolute;top:12px;right:12px;z-index:10;text-decoration:none}
.hotel-nav-espace{display:flex!important;align-items:center;justify-content:space-between;gap:8px}
.hotel-booking-new{color:#e45c5c;font-size:12px;font-weight:700}

/* États métier des réservations — indépendants des notifications non vues. */
.hotel-status{display:inline-flex;align-items:center;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:700;line-height:1.3;white-space:nowrap;border:1px solid transparent}
.hotel-status-pending{background:#f1bd66;color:#392507;border-color:#d69d35}
.hotel-status-confirmed{background:#16835b;color:#fff;border-color:#16835b}
.hotel-status-checked-in{background:#2675dc;color:#fff;border-color:#2675dc}
.hotel-status-completed{background:#687a91;color:#fff;border-color:#687a91}
.hotel-status-cancelled{background:#bd4049;color:#fff;border-color:#bd4049}
.hotel-status-rejected{background:#915468;color:#fff;border-color:#915468}
.hotel-status-no-show{background:#7450af;color:#fff;border-color:#7450af}
.hotel-status-unknown{background:#566272;color:#fff;border-color:#566272}
.calendar-day.hotel-calendar-pending{background:#f1bd6630;border-color:#c38b2c}
.calendar-day.hotel-calendar-confirmed{background:#16835b30;border-color:#16835b}
.calendar-day.hotel-calendar-checked_in{background:#2675dc30;border-color:#2675dc}
.calendar-day.hotel-calendar-completed{background:#687a9130;border-color:#687a91}
.calendar-day.hotel-calendar-no_show{background:#7450af30;border-color:#7450af}

/* Pastilles compactes des unités. */
.property-unit-links .hotel-unseen-badge{min-width:16px;height:16px;padding:0 4px;font-size:9px;font-weight:700;line-height:16px}

/* Réserver visible hors burger en mobile. */
.mobile-book-link{display:none;text-decoration:none;color:var(--text);font-weight:700;padding:9px 10px;border-radius:9px;white-space:nowrap}
@media(max-width:800px){.mobile-book-link{display:inline-flex;align-items:center}.mobile-book-link:hover,.mobile-book-link.active{background:var(--hover)}.topbar nav .desktop-book-link{display:none}.mobile-home-link{padding-left:4px;padding-right:4px}.topbar{gap:5px}}
@media(max-width:390px){.mobile-book-link{padding:7px 5px;font-size:13px}.mobile-home-link{font-size:13px}}



/* Formulaires partagés : gestion et recherche. */
.property-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;max-width:980px}.property-form label{display:block;font-weight:600}.property-form input,.property-form select,.property-form textarea{display:block;width:100%;margin-top:5px;padding:11px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text);font:inherit}.property-form label:has(textarea){grid-column:1/-1}.property-form .btn{justify-self:start;cursor:pointer}@media(max-width:650px){.property-form{grid-template-columns:1fr}}

/* Couleur métier partagée : disponibilité et réservation confirmée. */
:root{--hotel-available-green:#16835b}

/* Pastille de réservations du menu Espace : visible sur toutes les pages. */
.hotel-unseen-badge.is-future{background:#21815c}.hotel-unseen-badge.is-unseen{background:#d92d36}


/* Icône calendrier de séjour, à droite des dates encadrées. */
.hotel-my-reservation-dates>div>strong,
.hotel-my-reservation-dates>div>.hotel-client-date-edit>strong{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.hotel-date-icon{
  display:inline-flex;flex:none;flex-direction:column;align-items:center;
  overflow:hidden;width:39px;height:43px;border:1px solid #d7dce5;
  border-radius:6px;background:#fff;color:#263040;vertical-align:middle;
  box-shadow:0 1px 3px #0002;line-height:1;
}
.hotel-date-icon-top{
  width:100%;padding:4px 0 3px;text-align:center;
  background:#c92b35;color:#fff;font-size:9px;font-weight:800;letter-spacing:.3px;
}
.hotel-date-icon-number{display:flex;align-items:center;justify-content:center;flex:1;font-size:18px;font-weight:800}

/* Navigation commune des écrans établissement et réservations. */
.hotel-bookings-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px}
.hotel-bookings-tabs .btn{padding:7px 14px;background:var(--surface-2);color:var(--text);border:1px solid var(--line-strong)}
.hotel-bookings-tabs .btn.active{background:#2368c9;color:#fff;border-color:#2368c9}
.hotel-bookings-tabs .btn:hover:not(.active){border-color:var(--accent);background:var(--surface)}
