/* ggs-bundle:04c4bdf23f0a1315cde08d37333a12c007de9434 — fichier produit par correctif ciblé Chambres, ne pas modifier à la main */
/* --- assets/css/ganganstay-search-core-v29.css --- */
/* GANGANSTAY_PHASE29_R3_SEARCH_CORE_CSS */
.ggs-search-page{padding-top:22px!important}
.ggs-search-shell{
  display:grid;grid-template-columns:minmax(250px,1.25fr) minmax(170px,.72fr) minmax(300px,1.05fr) minmax(210px,.8fr) auto;
  gap:10px;align-items:stretch;background:#fff;border:1px solid #dde6e0;border-radius:24px;
  padding:12px;box-shadow:0 18px 54px rgba(15,48,30,.10);position:relative;z-index:18
}
.ggs-search-shell label,.ggs-search-shell legend{font-weight:850;color:#41564b;font-size:.78rem}
.ggs-search-destination{position:relative;min-width:0}
.ggs-search-destination>label{display:block;margin:0 0 6px 4px}
.ggs-search-destination-input{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;border:1px solid #d6e1da;border-radius:15px;padding:0 11px;min-height:56px;background:#fff}
.ggs-search-destination-input:focus-within{border-color:#137246;outline:3px solid rgba(19,114,70,.12)}
.ggs-search-destination-input input{border:0!important;box-shadow:none!important;outline:0!important;min-width:0!important;min-height:50px!important;padding:0!important;font-size:16px!important}
.ggs-search-pin{font-weight:900;color:#0a613a}
.ggs-search-category{min-width:0;display:grid;align-content:start}
.ggs-search-category>label{display:block;margin:0 0 6px 4px}
.ggs-search-category select{min-height:56px!important;border:1px solid #d6e1da!important;border-radius:15px!important;background:#fff!important;font-weight:800!important;padding:0 12px!important}
.ggs-search-clear{border:0;background:transparent;color:#7a8a81;font-size:1.35rem;width:36px;height:36px;border-radius:999px;cursor:pointer}
.ggs-search-clear:hover{background:#eef4f0}
.ggs-search-suggestions{
  position:absolute;z-index:200;left:0;right:0;top:calc(100% + 8px);background:#fff;border:1px solid #dbe5df;
  border-radius:18px;box-shadow:0 24px 60px rgba(7,54,31,.18);padding:7px;max-height:390px;overflow:auto
}
.ggs-search-section-title{padding:8px 10px 5px;color:#6a7b72;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;font-weight:900}
.ggs-search-suggestion{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;width:100%;border:0;background:#fff;text-align:left;padding:10px;border-radius:13px;cursor:pointer;color:#173023}
.ggs-search-suggestion:hover,.ggs-search-suggestion[aria-selected="true"]{background:#edf6f0}
.ggs-search-suggestion-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#edf6f0;color:#0a5b36;font-weight:900}
.ggs-search-suggestion-copy{display:grid;min-width:0}.ggs-search-suggestion-copy strong{font-size:.94rem}.ggs-search-suggestion-copy small{color:#687970;line-height:1.25;white-space:normal}
.ggs-search-suggestion-kind{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;font-weight:900;color:#698077}
.ggs-search-loading,.ggs-search-no-suggestion{padding:14px;color:#6a7b72}

.ggs-search-stay{border:1px solid #d6e1da;border-radius:15px;padding:5px 8px 8px;margin:0;min-width:0}
.ggs-search-stay legend{padding:0 5px}
.ggs-search-native-dates{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.ggs-search-native-dates label{display:grid;gap:2px}.ggs-search-native-dates label span{font-size:.67rem;color:#75847c}
.ggs-search-native-dates input{border:0!important;min-height:34px!important;padding:0!important;box-shadow:none!important;font-size:.9rem!important;font-weight:850!important}
.ggs-search-date-trigger{display:none;width:100%;border:0;background:transparent;text-align:left;grid-template-columns:1fr auto 1fr auto;gap:8px;align-items:center;padding:2px 4px;min-height:48px;color:#173023}
.ggs-search-core-ready .ggs-search-native-dates{display:none}
.ggs-search-core-ready .ggs-search-date-trigger{display:grid}
.ggs-search-date-trigger span:not(.ggs-search-date-arrow){display:grid}.ggs-search-date-trigger small{font-size:.65rem;color:#75847c}.ggs-search-date-trigger strong{font-size:.88rem}
.ggs-search-date-arrow{color:#87968e;font-weight:900}
.ggs-search-date-trigger b{white-space:nowrap;background:#edf8f1;color:#0a6a3e;border-radius:999px;padding:6px 9px;font-size:.68rem}

.ggs-search-guests{border:1px solid #d6e1da;border-radius:15px;background:#fff;position:relative}
.ggs-search-guests summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:56px;padding:8px 13px;cursor:pointer;list-style:none}.ggs-search-guests summary::-webkit-details-marker{display:none}
.ggs-search-guests summary>span{display:grid}.ggs-search-guests summary small{font-size:.67rem;color:#75847c}.ggs-search-guests summary strong{font-size:.87rem}
.ggs-search-steppers{position:absolute;z-index:190;right:0;top:calc(100% + 8px);width:min(360px,92vw);background:#fff;border:1px solid #dbe5df;border-radius:18px;box-shadow:0 22px 54px rgba(7,54,31,.18);padding:10px}
.ggs-search-steppers>label{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 4px;border-bottom:1px solid #edf1ee}.ggs-search-steppers>label:last-child{border-bottom:0}
.ggs-search-steppers>label>span:first-child{display:grid}.ggs-search-steppers small{color:#75847c}
.ggs-search-stepper{display:grid;grid-template-columns:38px 42px 38px;align-items:center;gap:4px}.ggs-search-stepper button{width:38px;height:38px;border-radius:999px;border:1px solid #d6e2da;background:#fff;color:#0a5b36;font-size:1.2rem;font-weight:900}.ggs-search-stepper input{text-align:center;border:0!important;min-height:38px!important;padding:0!important;font-weight:900!important}
.ggs-search-submit{min-width:132px!important;border-radius:15px!important}

.ggs-search-toolbar{margin-top:28px}
.ggs-search-empty{background:#fff;border:1px dashed #cbd9d0;border-radius:24px;padding:44px 24px;text-align:center;box-shadow:0 12px 38px rgba(15,48,30,.05)}
.ggs-search-empty-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:999px;background:#edf6f0;color:#0a5b36;font-size:1.5rem;margin:0 auto 12px}.ggs-search-empty h2{font-size:1.55rem;margin:.3rem 0}.ggs-search-empty p{max-width:720px;margin:0 auto;color:#687970;line-height:1.55}.ggs-search-recovery{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:18px}

/* Custom calendar */
.ggs-search-calendar-overlay{position:fixed;inset:0;z-index:500;background:rgba(7,24,15,.46);display:grid;place-items:center;padding:18px}
.ggs-search-calendar-overlay[hidden]{display:none}
.ggs-search-calendar{width:min(820px,96vw);max-height:min(88vh,760px);overflow:auto;background:#fff;border-radius:24px;box-shadow:0 28px 90px rgba(0,0,0,.28);padding:18px}
.ggs-search-calendar-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.ggs-search-calendar-head h2{margin:2px 0 3px;font-size:1.35rem}.ggs-search-calendar-head p{margin:0;color:#6b7c73}.ggs-search-calendar-close{border:0;background:#f0f4f1;border-radius:999px;width:42px;height:42px;font-size:1.2rem}
.ggs-search-calendar-nav{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:10px 0}.ggs-search-calendar-nav button{border:1px solid #d7e2db;background:#fff;color:#0a5b36;width:42px;height:42px;border-radius:999px;font-weight:900}.ggs-search-calendar-nav strong{font-size:.94rem}
.ggs-search-calendar-months{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ggs-search-month{border:1px solid #e2e9e4;border-radius:17px;padding:12px}.ggs-search-month h3{text-align:center;margin:0 0 10px;font-size:.95rem}
.ggs-search-week,.ggs-search-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.ggs-search-week span{text-align:center;color:#78877f;font-size:.68rem;font-weight:800;padding:4px 0}
.ggs-search-day{aspect-ratio:1;border:0;background:#fff;border-radius:999px;display:grid;place-items:center;font-size:.82rem;cursor:pointer;color:#173023}.ggs-search-day:hover{background:#edf6f0}.ggs-search-day[disabled]{color:#c2cbc5;cursor:not-allowed;background:transparent}.ggs-search-day.is-range{background:#e8f6ed;border-radius:8px}.ggs-search-day.is-start,.ggs-search-day.is-end{background:#0b6a40;color:#fff;border-radius:999px;font-weight:900}
.ggs-search-calendar-quick{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.ggs-search-calendar-quick button{border:1px solid #d7e2db;background:#fff;border-radius:999px;padding:8px 12px;color:#0a5b36;font-weight:850}.ggs-search-calendar-quick button:hover{background:#edf6f0}
.ggs-search-calendar-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.ggs-search-calendar-actions button{border-radius:999px;padding:10px 16px;font-weight:900}.ggs-search-calendar-cancel{border:1px solid #d7e2db;background:#fff;color:#173023}.ggs-search-calendar-done{border:0;background:#0a623b;color:#fff}

form[data-search-form] .autocomplete-panel.ggs-search-legacy-upgraded{border-radius:18px!important;box-shadow:0 22px 54px rgba(7,54,31,.18)!important;max-height:390px!important;overflow:auto!important;z-index:200!important}

@media(max-width:1000px){
  .ggs-search-shell{grid-template-columns:1fr 1fr}.ggs-search-destination{grid-column:1/-1}.ggs-search-submit{width:100%}
}
@media(max-width:720px){
  .ggs-search-page{padding-top:14px!important}
  .ggs-search-shell{grid-template-columns:1fr;padding:10px;border-radius:20px}
  .ggs-search-destination{grid-column:auto}
  .ggs-search-date-trigger{grid-template-columns:1fr auto 1fr}.ggs-search-date-trigger b{grid-column:1/-1;justify-self:start}
  .ggs-search-steppers{position:fixed;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));top:auto;width:auto;z-index:520}
  .ggs-search-guests[open]::before{content:"";position:fixed;inset:0;background:rgba(7,25,15,.24);z-index:510}
  .ggs-search-guests[open] summary{position:relative;z-index:521}
  .ggs-search-submit{min-height:52px!important}
  .ggs-search-toolbar{display:grid!important;align-items:start!important}.ggs-search-toolbar h1{font-size:1.8rem!important}
  .ggs-search-calendar-overlay{align-items:end;padding:0}
  .ggs-search-calendar{width:100%;max-height:88vh;border-radius:24px 24px 0 0;padding:16px 14px calc(16px + env(safe-area-inset-bottom))}
  .ggs-search-calendar-months{grid-template-columns:1fr}
  .ggs-search-month:nth-child(2){display:none}
}
@media(max-width:390px){
  .ggs-search-date-trigger strong{font-size:.82rem}.ggs-search-empty{padding:34px 16px}
}

/* GanGanStay R6.7 — smart destination, filters and mobile sheets */
.ggs-search-near-action{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;width:100%;border:0;border-bottom:1px solid #edf1ee;background:#fff;text-align:left;padding:10px;border-radius:13px;cursor:pointer;color:#173023}
.ggs-search-near-action:hover{background:#edf6f0}.ggs-search-near-action:disabled{opacity:.65;cursor:wait}
.ggs-search-near-action>span:nth-child(2){display:grid}.ggs-search-near-action strong{font-size:.94rem}.ggs-search-near-action small{color:#687970}.ggs-search-near-action>b{color:#6c7c73;font-size:1.2rem}
.ggs-search-geo-status{margin-top:6px;padding:7px 9px;border-radius:10px;background:#edf6f0;color:#315a45;font-size:.75rem}.ggs-search-geo-status.is-error{background:#fff2ee;color:#8a3b25}
.ggs-search-filter-panel{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:100%}.ggs-search-filter-panel>label{display:grid;gap:5px}.ggs-search-filter-panel select,.ggs-search-filter-panel input[type="number"]{width:100%;min-height:42px;border:1px solid #d6e1da;border-radius:10px;background:#fff;padding:7px 10px}
.ggs-search-filter-amenities,.home-filter-amenities{grid-column:1/-1;border:0;margin:0;padding:3px 0;display:flex;flex-wrap:wrap;gap:7px}.ggs-search-filter-amenities legend,.home-filter-amenities legend{width:100%;font-size:.72rem;font-weight:850;color:#4b5f54;margin-bottom:3px}.ggs-search-filter-check,.home-filter-check{display:inline-flex!important;align-items:center;gap:6px!important;border:1px solid #dce5df;border-radius:999px;padding:7px 10px!important;margin:0!important;background:#fff;font-size:.76rem!important;cursor:pointer}.ggs-search-filter-check input,.home-filter-check input{width:auto!important;min-height:0!important;margin:0}
.ggs-search-guests-done{width:100%;margin-top:8px;min-height:40px!important}
.ggs-search-calendar-selection{display:grid;grid-template-columns:1fr auto 1fr auto;align-items:center;gap:10px;padding:9px 12px;margin:8px 0 10px;border:1px solid #dce6df;border-radius:14px;background:#f8fbf9}.ggs-search-calendar-selection span{display:grid}.ggs-search-calendar-selection small{font-size:.65rem;color:#748079}.ggs-search-calendar-selection strong{font-size:.9rem}.ggs-search-calendar-selection>b{white-space:nowrap;border-radius:999px;background:#e9f6ee;color:#0a633b;padding:5px 9px;font-size:.7rem}
.ggs-search-calendar-months .ggs-search-month:nth-child(3){display:none}
.ggs-search-distance{display:inline-flex;align-items:center;gap:4px;margin-left:7px;padding:3px 7px;border-radius:999px;background:#edf6f0;color:#0a613a;font-weight:850;font-size:.7rem}
.ggs-search-results-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ggs-search-results-actions select,.ggs-search-results-actions button{min-height:40px;border-radius:999px}.ggs-search-radius-note{display:inline-flex;align-items:center;gap:5px;color:#4f6559;font-size:.8rem;font-weight:750}

@media(max-width:720px){
  .ggs-search-filter-panel{grid-template-columns:1fr}
  .ggs-search-calendar{height:min(92vh,860px);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
  .ggs-search-calendar-head,.ggs-search-calendar-selection,.ggs-search-calendar-nav{flex:0 0 auto}
  .ggs-search-calendar-months{display:grid;grid-template-columns:1fr;gap:12px;overflow:auto;padding-bottom:8px}
  .ggs-search-calendar-months .ggs-search-month:nth-child(2),.ggs-search-calendar-months .ggs-search-month:nth-child(3){display:block}
  .ggs-search-calendar-actions{position:sticky;bottom:0;background:#fff;padding-top:10px;flex:0 0 auto}.ggs-search-calendar-done{min-width:130px}
  .ggs-search-calendar-selection{grid-template-columns:1fr auto 1fr}.ggs-search-calendar-selection>b{grid-column:1/-1;justify-self:start}
  .ggs-search-steppers{padding:16px 14px calc(14px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0}
}
.ggs-results-filters{grid-column:1/-1;border-top:1px solid #edf1ee;padding-top:4px}.ggs-results-filters>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:34px;padding:4px 5px;list-style:none;cursor:pointer;color:#41564b;font-size:.78rem;font-weight:850}.ggs-results-filters>summary::-webkit-details-marker{display:none}.ggs-results-filters>summary span{display:grid;place-items:center;width:24px;height:24px;border-radius:999px;background:#edf6f0;color:#0a613a}.ggs-results-filters[open]>summary span{transform:rotate(45deg)}
@media(max-width:1000px){.ggs-results-filters{grid-column:1/-1}}
.ggs-search-mobile-close{display:none}
@media(max-width:720px){
  form.ggs-destination-mobile-open .ggs-search-destination{position:fixed;inset:0;z-index:560;background:#fff;padding:18px 14px calc(18px + env(safe-area-inset-bottom));overflow:auto}
  form.ggs-destination-mobile-open .ggs-search-destination>label{font-size:.95rem;margin:4px 44px 10px 2px}
  form.ggs-destination-mobile-open .ggs-search-destination-input,.ggs-destination-mobile-open .home-search-input-wrap{position:relative;z-index:2}
  form.ggs-destination-mobile-open .ggs-search-suggestions{position:static!important;display:block;max-height:none!important;overflow:visible!important;margin-top:10px;border:0!important;box-shadow:none!important;padding:0!important}
  form.ggs-destination-mobile-open .ggs-search-suggestions[hidden]{display:none!important}
  form.ggs-destination-mobile-open .ggs-search-mobile-close{display:grid;place-items:center;position:absolute;top:14px;right:14px;width:36px;height:36px;border:0;border-radius:999px;background:#eef4f0;color:#274c39;font-size:1.25rem;z-index:4}
  form.ggs-destination-mobile-open .ggs-search-near-action{margin-top:4px}
}

/* GanGanStay R8.2 — parcours mobile prioritaire : sélecteur voyageurs tactile fiable */
.ggs-search-stepper button{
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  user-select:none;
  -webkit-user-select:none;
}
.ggs-search-stepper button:active{transform:scale(.96);background:#edf6f0}
@media(max-width:720px){
  html.ggs-guest-sheet-open,html.ggs-guest-sheet-open body{overflow:hidden!important;overscroll-behavior:none}
  .ggs-search-guests[open]::before{pointer-events:none;z-index:610}
  .ggs-search-guests[open] .ggs-search-steppers{
    z-index:620;
    left:10px;
    right:10px;
    bottom:max(0px,env(safe-area-inset-bottom));
    width:auto;
    max-height:min(72dvh,540px);
    overflow-y:auto;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    padding:16px 16px calc(18px + env(safe-area-inset-bottom));
    border-radius:24px 24px 0 0;
  }
  .ggs-search-guests[open] summary{z-index:621}
  .ggs-search-steppers>label{min-height:68px;padding:10px 4px}
  .ggs-search-stepper{grid-template-columns:50px 52px 50px;gap:7px}
  .ggs-search-stepper button{width:50px;height:50px;min-width:50px;min-height:50px;font-size:1.35rem;font-weight:900}
  .ggs-search-stepper input{min-height:50px!important;height:50px!important;font-size:1.05rem!important;line-height:50px!important}
  .ggs-search-guests-done{min-height:52px!important;font-size:1rem!important;margin-top:12px}
}
/* --- assets/app.css --- */
:root{--green:#174b2c;--green2:#246b3e;--orange:#e76f2e;--ink:#18231d;--muted:#66736b;--line:#e4e9e6;--bg:#f6f8f7;--white:#fff;--radius:18px;--shadow:0 12px 35px rgba(23,75,44,.10)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);line-height:1.5}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.container{width:min(1180px,calc(100% - 32px));margin:auto}.top{position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.nav{height:76px;display:flex;align-items:center;justify-content:space-between;gap:22px}.brand img{height:57px;width:auto}.nav nav{display:flex;align-items:center;gap:20px;font-weight:650;font-size:14px}.nav nav>a:hover{color:var(--green2)}.menu{display:none;border:0;background:transparent;font-size:27px}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:12px;padding:13px 18px;background:var(--orange);color:#fff;font-weight:800;cursor:pointer;min-height:48px}.btn:hover{filter:brightness(.96)}.btn.green{background:var(--green)}.btn.ghost{background:#fff;color:var(--green);border:1px solid var(--line)}.btn.small{padding:9px 13px;min-height:38px}.hero{background:linear-gradient(115deg,rgba(23,75,44,.95),rgba(36,107,62,.80)),url('hero.svg') center/cover;min-height:430px;color:#fff;display:grid;align-items:center}.hero h1{font-size:clamp(34px,5vw,58px);line-height:1.05;margin:0 0 16px;max-width:800px}.hero p{font-size:18px;max-width:720px;color:#eff7f1}.searchbox{display:grid;grid-template-columns:1.4fr 1fr 1fr .8fr auto;gap:10px;background:#fff;padding:12px;border-radius:18px;box-shadow:var(--shadow);margin-top:28px;color:var(--ink)}label{font-size:13px;font-weight:750;color:var(--muted);display:block;margin-bottom:6px}input,select,textarea{width:100%;border:1px solid #d9e0dc;background:#fff;border-radius:11px;padding:12px 13px;font:inherit;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green2);box-shadow:0 0 0 3px rgba(36,107,62,.10)}textarea{min-height:110px;resize:vertical}.section{padding:48px 0}.section h2{font-size:30px;margin:0 0 8px}.muted{color:var(--muted)}.grid{display:grid;gap:20px}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 6px 22px rgba(24,35,29,.04)}.hotel-card{overflow:hidden;padding:0}.hotel-card .photo{height:215px;background:linear-gradient(135deg,#c9dccc,#edf4ef);object-fit:cover;width:100%}.hotel-card .inside{padding:18px}.hotel-card h3{margin:4px 0 8px;font-size:20px}.badge{display:inline-flex;padding:6px 9px;border-radius:999px;background:#eaf5ed;color:var(--green);font-size:12px;font-weight:800}.badge.orange{background:#fff0e8;color:#a84616}.badge.red{background:#fdecec;color:#a52929}.price{font-size:22px;font-weight:900}.stars{color:#e69a22;letter-spacing:1px}.alert{width:min(1180px,calc(100% - 32px));margin:16px auto 0;padding:13px 16px;border-radius:12px;font-weight:650}.alert.success{background:#e8f6ed;color:#145b2c}.alert.warning{background:#fff5df;color:#7a5110}.alert.error{background:#fdeaea;color:#962b2b}.filters{display:grid;grid-template-columns:260px 1fr;gap:24px}.room{display:grid;grid-template-columns:160px 1fr auto;gap:18px;align-items:center}.room img{width:160px;height:120px;object-fit:cover;border-radius:12px}.summary{position:sticky;top:96px}.kv{display:grid;grid-template-columns:1fr auto;gap:8px;padding:8px 0;border-bottom:1px dashed var(--line)}.status{font-weight:900;text-transform:uppercase;letter-spacing:.04em}.status.confirmed,.status.checked_in,.status.checked_out{color:#17733a}.status.cancelled,.status.no_show{color:#a02c2c}.qrbox{display:grid;place-items:center;background:#fff;border:1px solid var(--line);padding:20px;border-radius:16px}.qrbox canvas{max-width:100%}.tablewrap{overflow:auto;background:#fff;border-radius:16px;border:1px solid var(--line)}table{width:100%;border-collapse:collapse;min-width:760px}th,td{padding:13px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}th{background:#f2f6f3;color:#496157}.adminnav{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.adminnav a{padding:9px 12px;border-radius:10px;background:#fff;border:1px solid var(--line)}.metric{font-size:34px;font-weight:900;color:var(--green)}.footer{padding:40px 0;display:grid;grid-template-columns:2fr 1fr 1fr;gap:24px;color:#dce9df}footer{background:#103520;margin-top:48px}.empty{text-align:center;padding:48px 20px}.split{display:grid;grid-template-columns:1.4fr .8fr;gap:24px}.formgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.formgrid .full{grid-column:1/-1}.cover{height:420px;border-radius:22px;overflow:hidden;background:linear-gradient(135deg,#d8e6db,#bcd3c2)}.cover img{width:100%;height:100%;object-fit:cover}.scanner{max-width:620px;margin:auto}.scanner video{width:100%;border-radius:18px;background:#111;min-height:260px}.notice{padding:14px;border-left:4px solid var(--orange);background:#fff7f1;border-radius:10px}.legal{max-width:800px}.skeleton{background:linear-gradient(90deg,#edf1ef 25%,#f8faf9 37%,#edf1ef 63%);background-size:400% 100%;animation:sh 1.3s infinite}@keyframes sh{0%{background-position:100% 0}100%{background-position:0 0}}@media(max-width:900px){.nav nav{display:none;position:absolute;left:16px;right:16px;top:70px;background:white;border:1px solid var(--line);border-radius:14px;padding:14px;flex-direction:column;align-items:stretch;box-shadow:var(--shadow)}.nav nav.open{display:flex}.menu{display:block}.searchbox{grid-template-columns:1fr 1fr}.searchbox>*:first-child{grid-column:1/-1}.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}.filters,.split{grid-template-columns:1fr}.summary{position:static}.room{grid-template-columns:110px 1fr}.room .roomaction{grid-column:1/-1}.footer{grid-template-columns:1fr}.cover{height:320px}}@media(max-width:560px){.container{width:min(100% - 22px,1180px)}.hero{min-height:520px}.searchbox{grid-template-columns:1fr}.searchbox>*{grid-column:1!important}.grid-4,.grid-3,.grid-2,.formgrid{grid-template-columns:1fr}.room{display:block}.room img{width:100%;height:190px;margin-bottom:14px}.section{padding:34px 0}.nav{height:68px}.brand img{height:48px}.cover{height:250px}.card{padding:17px}}

/* GanGanStay V1.1 - back-office hôtel */
.btn.danger{background:#b33a32}.adminnav a.active{background:var(--green);color:#fff;border-color:var(--green)}.pagehead{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.pagehead h1{margin:0 0 6px;font-size:34px}.formwide>h3,.formwide h3{margin-top:26px}.checks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 14px;margin:8px 0 20px}.check{display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:650;margin:0}.check input{width:auto}.topcheck{min-height:48px}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}.gallery-item{position:relative;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff}.gallery-item img{width:100%;height:160px;object-fit:cover}.gallery-item form{padding:8px}.row-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inline-upload{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.inline-upload input{flex:1;min-width:220px}.room-editor{min-width:0}.mini-gallery{display:flex;gap:9px;flex-wrap:wrap;margin:12px 0}.mini-photo{width:86px;height:70px;position:relative}.mini-photo img{width:100%;height:100%;object-fit:cover;border-radius:10px}.mini-photo form{position:absolute;right:-5px;top:-7px}.mini-photo .x{border:0;border-radius:50%;width:25px;height:25px;background:#a62f2f;color:#fff;font-weight:900;cursor:pointer}.stafflist{margin-top:18px;border-top:1px solid var(--line)}.staffline{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}hr{border:0;border-top:1px solid var(--line);margin:18px 0}.status.draft{color:#6b7280}.status.pending_approval{color:#9a6500}.status.active{color:#17733a}.status.suspended{color:#a02c2c}
@media(max-width:900px){.checks{grid-template-columns:repeat(2,minmax(0,1fr))}.pagehead{flex-direction:column}.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.checks,.gallery{grid-template-columns:1fr}.inline-upload{display:block}.inline-upload .btn{width:100%;margin-top:10px}.pagehead h1{font-size:28px}.adminnav{overflow:auto;flex-wrap:nowrap;padding-bottom:4px}.adminnav a{white-space:nowrap}}

/* GanGanStay V1.2 — UX stratégique, confort et sécurité */
:root{--green-dark:#0d3d24;--green-soft:#eef7f1;--orange-soft:#fff3eb;--danger:#b42318;--danger-soft:#fff0ee;--warning:#a15c00;--warning-soft:#fff7e6;--info:#175cd3;--info-soft:#eff8ff;--focus:0 0 0 4px rgba(36,107,62,.14)}
body{font-size:16px}.container{width:min(1280px,calc(100% - 40px))}.top{box-shadow:0 1px 0 rgba(16,53,32,.03)}
.nav{height:78px}.nav nav{gap:24px}.nav nav>a{padding:8px 2px;border-bottom:2px solid transparent}.nav nav>a:hover,.nav nav>a:focus-visible{color:var(--green);border-bottom-color:rgba(23,75,44,.35)}
button,a,input,select,textarea{transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease,color .16s ease,transform .16s ease,opacity .16s ease}
:focus-visible{outline:3px solid rgba(36,107,62,.34);outline-offset:2px}.btn:focus-visible{outline-color:rgba(231,111,46,.42)}
.btn{gap:8px;box-shadow:0 5px 15px rgba(231,111,46,.14)}.btn.green{box-shadow:0 5px 16px rgba(23,75,44,.14)}.btn.ghost{box-shadow:none}.btn.danger{background:var(--danger);box-shadow:0 5px 16px rgba(180,35,24,.12)}.btn:hover{filter:none;transform:translateY(-1px)}.btn.green:hover{background:#113f25}.btn:not(.green):not(.ghost):not(.danger):hover{background:#d96125}.btn.ghost:hover{background:var(--green-soft);border-color:#b9d3c1}.btn.danger:hover{background:#912018}.btn[disabled],button[disabled]{cursor:not-allowed;opacity:.58;transform:none;box-shadow:none}
input,select,textarea{min-height:46px;border-color:#d6dfd9}.smart-form input,.smart-form select,.smart-form textarea{background:#fff}input:hover,select:hover,textarea:hover{border-color:#b9c9bf}input:focus,select:focus,textarea:focus{box-shadow:var(--focus)}input:user-invalid,select:user-invalid,textarea:user-invalid{border-color:#c0574d}.field-help,small.field-help{display:block;color:var(--muted);font-size:12px;margin-top:6px}
.alert{box-shadow:0 8px 24px rgba(24,35,29,.05)}.alert.success{border:1px solid #b8dfc3}.alert.warning{border:1px solid #f0d89c}.alert.error{border:1px solid #f0b9b4}
.badge{align-items:center;gap:5px}.secure-pill{display:inline-flex;align-items:center;gap:7px;padding:7px 10px;border-radius:999px;background:var(--green-soft);border:1px solid #cfe5d5;color:var(--green-dark);font-size:12px;font-weight:850;letter-spacing:.01em}
.user-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 11px;border-radius:999px;background:#f4f7f5;color:var(--green-dark);font-weight:800}.logout-link{color:#7b2a23!important}.logout-link:hover{color:var(--danger)!important}

/* Espaces administratifs : une navigation métier stable plutôt qu'une rangée de boutons */
.workspace{width:min(1440px,calc(100% - 36px));margin:28px auto 56px;display:grid;grid-template-columns:245px minmax(0,1fr);gap:30px;align-items:start}.workspace-sidebar{position:sticky;top:102px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:14px;box-shadow:0 10px 34px rgba(24,35,29,.06)}.workspace-brand{padding:12px 12px 16px;border-bottom:1px solid var(--line);margin-bottom:10px}.workspace-brand strong{display:block;color:var(--green-dark);font-size:16px}.workspace-brand small{display:block;color:var(--muted);margin-top:3px}.workspace-link{display:flex;align-items:center;gap:10px;min-height:45px;padding:10px 12px;margin:4px 0;border-radius:11px;color:#385044;font-weight:740;font-size:14px}.workspace-link:hover{background:#f4f8f5;color:var(--green-dark)}.workspace-link.active{background:var(--green);color:#fff;box-shadow:0 8px 18px rgba(23,75,44,.15)}.workspace-content{min-width:0}.workspace-mobile-nav{display:none}.workspace-actions{display:grid;gap:8px;margin-top:13px;padding-top:13px;border-top:1px solid var(--line)}
.pagehead{align-items:center;margin-bottom:26px}.pagehead.compact{margin-bottom:16px}.pagehead h1{font-size:clamp(29px,3vw,40px);line-height:1.14;color:#10291b;letter-spacing:-.025em}.pagehead p{margin:0;max-width:760px}.pagehead>.btn{flex:0 0 auto}.section-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:30px 0 14px}.section-head h2{margin:0 0 4px;font-size:24px}.section-head p{margin:0}

/* Tableau de bord : les décisions importantes en premier */
.metrics-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:20px 0 26px}.metric-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;min-height:132px;box-shadow:0 8px 26px rgba(24,35,29,.045);display:flex;flex-direction:column;justify-content:space-between}.metric-card .metric{font-size:36px;line-height:1}.metric-card small{color:var(--muted);font-weight:700}.money-metric .metric{font-size:28px}.dashboard-panels{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}.quick-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.quick-actions .btn{justify-content:flex-start;min-height:52px}.quick-actions .btn:first-child{grid-column:1/-1}

/* Formulaires : découpés par décisions, avec action principale persistante */
.smart-form{display:grid;gap:18px;min-width:0}.form-section{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;box-shadow:0 7px 24px rgba(24,35,29,.035)}.form-section-head{display:flex;align-items:flex-start;gap:13px;padding-bottom:17px;margin-bottom:19px;border-bottom:1px solid var(--line)}.form-section-head>span{display:grid;place-items:center;min-width:32px;height:32px;border-radius:10px;background:var(--green-soft);color:var(--green-dark);font-weight:900;font-size:14px}.form-section-head h2{font-size:20px;margin:1px 0 3px}.form-section-head p{margin:0;color:var(--muted);font-size:13px}.formgrid{gap:18px}.formgrid>div{min-width:0}.checks{padding:14px 0 0}.check{padding:9px 10px;border-radius:10px}.check:hover{background:#f6f9f7}.sticky-save{position:sticky;bottom:14px;z-index:15;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 15px 13px 18px;background:rgba(13,61,36,.96);color:#fff;border-radius:16px;box-shadow:0 14px 36px rgba(13,61,36,.24);backdrop-filter:blur(8px)}.sticky-save strong{display:block}.sticky-save small{display:block;color:#d7e9dd}.sticky-save .btn{min-width:150px;background:#fff;color:var(--green-dark);box-shadow:none}.sticky-save .btn:hover{background:#f2f7f4}.editor-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;align-items:start}.editor-side{position:sticky;top:102px}.publication-card{padding:20px}.publication-card h2{margin:10px 0 15px}.readiness{display:grid;gap:8px;margin:14px 0}.readiness-item{display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border-radius:10px;font-size:13px;font-weight:700}.readiness-item.ok{background:var(--green-soft);color:#165a31}.readiness-item.missing{background:var(--warning-soft);color:#754300}.publication-control{background:linear-gradient(180deg,#fff,#fbfcfb)}.gallery-section{margin-top:20px}.management-panels{margin-top:22px}.management-panels>.form-section{height:100%}

/* Cartes chambres, inventaire et personnel */
.room-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.room-editor{background:#fff}.room-editor h2{margin-top:0}.create-card{border-style:dashed;border-color:#b8cbbf;background:#fbfdfc}.inventory-controls{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.inventory-controls>div{min-width:150px}.stafflist{border-top:0}.staffline{padding:13px 11px;border:1px solid var(--line);border-radius:12px;margin:8px 0;background:#fcfdfc}.staffline:last-child{border-bottom:1px solid var(--line)}

/* Réservation : actions conditionnelles clairement séparées */
.reservation-ops{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:20px}.action-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:18px}.critical-actions{border-top:1px solid var(--line);padding-top:16px;margin-top:18px}.inline-action{display:flex;align-items:center;gap:8px;margin:0}.inline-action select{min-width:145px}.confirmation-card{max-width:760px;margin:0 auto}.confirmation-head{text-align:center;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:18px}.confirmation-head h1{margin:9px 0}.confirmation-card .qrbox{max-width:340px;margin:22px auto}.security-denied{max-width:680px;margin:48px auto;text-align:center}.security-icon{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 16px;border-radius:20px;background:var(--danger-soft);font-size:28px}

/* Scanner : la caméra est la décision principale, saisie manuelle clairement secondaire */
.scanner-card{max-width:760px;margin:auto;padding:24px}.scan-frame{position:relative;border-radius:20px;overflow:hidden;background:#09110c;min-height:340px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}.scan-frame video{display:block;width:100%;min-height:340px;object-fit:cover}.scan-target{position:absolute;inset:16%;border:3px solid rgba(255,255,255,.82);border-radius:20px;box-shadow:0 0 0 999px rgba(0,0,0,.20);pointer-events:none}.manual-fallback{margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}.inline-search{display:grid;grid-template-columns:1fr auto;gap:9px}.inline-search .btn{min-width:130px}

/* Centre de sécurité */
.security-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}.security-check{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}.security-check:last-child{border-bottom:0}.security-check>span{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;font-weight:950}.security-check.ok>span{background:var(--green-soft);color:#136a34}.security-check.bad>span{background:var(--danger-soft);color:var(--danger)}.security-check strong,.security-check small{display:block}.security-check small{color:var(--muted);font-size:12px}.auth-card{max-width:520px;margin:42px auto;padding:28px}.auth-card h1{margin-top:8px}.full-btn{width:100%;margin-top:8px}.notice{border-left-color:var(--orange);box-shadow:0 5px 18px rgba(24,35,29,.03)}

/* Tables : lecture rapide, actions stables */
.tablewrap{box-shadow:0 6px 22px rgba(24,35,29,.035)}th{font-size:12px;text-transform:uppercase;letter-spacing:.035em}tbody tr:hover{background:#fbfdfc}td .btn{white-space:nowrap}.status{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:12px}.status.active,.status.confirmed,.status.checked_in,.status.checked_out{background:var(--green-soft)}.status.suspended,.status.cancelled,.status.no_show{background:var(--danger-soft)}.status.draft{background:#f2f4f3}.status.pending_approval{background:var(--warning-soft)}

/* Impression confirmation */
.print-page{background:#fff}.print-box{max-width:760px;margin:24px auto;background:#fff;border:1px solid var(--line);padding:32px;border-radius:18px}.print-logo{height:70px;width:auto;margin-bottom:22px}

@media(max-width:1120px){.workspace{grid-template-columns:210px minmax(0,1fr);gap:20px}.editor-layout{grid-template-columns:1fr}.editor-side{position:static}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.room-grid{grid-template-columns:1fr}}
@media(max-width:900px){.container{width:min(100% - 28px,1280px)}.workspace{display:block;width:min(100% - 28px,1280px);margin-top:20px}.workspace-sidebar{display:none}.workspace-mobile-nav{display:flex;gap:8px;overflow-x:auto;padding:0 0 12px;margin-bottom:16px;scrollbar-width:thin}.workspace-mobile-nav .workspace-link{flex:0 0 auto;background:#fff;border:1px solid var(--line);margin:0}.workspace-mobile-nav .workspace-link.active{background:var(--green);border-color:var(--green)}.dashboard-panels,.reservation-ops,.security-grid{grid-template-columns:1fr}.form-section{padding:20px}.sticky-save{bottom:8px}.pagehead{align-items:flex-start}.pagehead>.btn{width:auto}.scanner-card{padding:18px}}
@media(max-width:640px){body{font-size:15px}.container,.workspace{width:min(100% - 20px,1280px)}.brand img{height:49px}.pagehead{margin-bottom:18px}.pagehead h1{font-size:28px}.pagehead>.btn{width:100%}.metrics-grid{grid-template-columns:1fr 1fr;gap:10px}.metric-card{padding:15px;min-height:110px}.metric-card .metric{font-size:30px}.money-metric{grid-column:1/-1}.dashboard-panels{gap:14px}.quick-actions{grid-template-columns:1fr}.quick-actions .btn:first-child{grid-column:auto}.form-section{padding:16px;border-radius:14px}.form-section-head{margin-bottom:15px}.formgrid{gap:13px}.sticky-save{margin-left:-4px;margin-right:-4px;padding:11px 12px}.sticky-save small{display:none}.sticky-save .btn{min-width:120px}.checks{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.inline-search{grid-template-columns:1fr}.inline-search .btn{width:100%}.action-bar{display:grid;grid-template-columns:1fr}.action-bar .btn,.action-bar form,.action-bar form .btn{width:100%}.inventory-controls{display:grid;grid-template-columns:1fr 1fr}.inventory-controls>*{min-width:0!important}.inventory-controls .btn{grid-column:1/-1}.tablewrap{margin-left:-2px;margin-right:-2px}.scanner-card{padding:14px}.scan-frame,.scan-frame video{min-height:290px}.auth-card{margin:24px auto;padding:20px}.print-box{margin:0;border:0;border-radius:0;padding:20px}}
@media(max-width:420px){.metrics-grid{grid-template-columns:1fr}.money-metric{grid-column:auto}.gallery{grid-template-columns:1fr}.inventory-controls{grid-template-columns:1fr}.pagehead h1{font-size:25px}.sticky-save strong{font-size:13px}}
@media print{.top,.workspace-sidebar,.workspace-mobile-nav,.footer,footer,.action-bar,.btn{display:none!important}.workspace{display:block;width:100%;margin:0}.workspace-content{width:100%}.print-box{border:0;box-shadow:none;max-width:none;margin:0}.card{box-shadow:none}}
.qr-render{display:grid;place-items:center;min-height:260px}.qr-render img,.qr-render canvas{max-width:100%;height:auto!important}
.nav-logout{margin:0;display:inline-flex}.nav-logout .logout-link{appearance:none;border:0;background:transparent;font:inherit;font-weight:650;padding:8px 2px;cursor:pointer}.nav-logout .logout-link:hover{color:var(--danger)}
@media(max-width:900px){.nav-logout{display:block}.nav-logout .logout-link{width:100%;text-align:left;padding:8px 0}}

/* ============================================================
   GanGanStay V2.0 — Secure Marketplace / 4 interfaces séparées
   ============================================================ */
:root{
  --ns-forest:#0f4328;--ns-forest-2:#175b36;--ns-leaf:#23854e;--ns-orange:#eb6b2d;
  --ns-orange-dark:#c94f18;--ns-cream:#fffaf5;--ns-surface:#fff;--ns-page:#f6f8f7;
  --ns-text:#14241a;--ns-muted:#66746c;--ns-line:#e0e8e3;--ns-green-soft:#eaf7ef;
  --ns-orange-soft:#fff0e8;--ns-danger:#a92f2a;--ns-danger-soft:#fdeceb;--ns-warning:#8a5b00;
  --ns-warning-soft:#fff4d9;--ns-shadow:0 16px 45px rgba(12,54,31,.10);--ns-radius:18px;
}
body{background:var(--ns-page);color:var(--ns-text)}
.site-container{width:min(1240px,calc(100% - 40px));margin-inline:auto}.simple-page{width:min(760px,calc(100% - 32px));margin:52px auto}.panel{background:#fff;border:1px solid var(--ns-line);border-radius:20px;padding:28px;box-shadow:var(--ns-shadow)}.auth-panel{max-width:560px;margin-inline:auto}.success-panel{border-top:4px solid var(--ns-leaf)}
.btn.primary{background:var(--ns-orange);color:#fff}.btn.primary:hover{background:var(--ns-orange-dark)}.btn.secondary{background:#fff;color:var(--ns-forest);border:1px solid var(--ns-line)}.btn.danger{background:var(--ns-danger);color:#fff}.btn.large{min-height:54px;padding-inline:24px}.full-btn{width:100%}.secure-pill,.trust-chip{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:999px;background:var(--ns-green-soft);color:var(--ns-forest);font-size:12px;font-weight:800}.success-text{color:#13733b;font-weight:750}.warning-text{color:var(--ns-warning);font-weight:750}.eyebrow{display:inline-block;color:var(--ns-forest-2);font-size:12px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;margin-bottom:6px}.status{border-radius:999px;padding:6px 9px;font-size:11px;font-weight:850;letter-spacing:.02em;text-transform:none}.status.pending_verification,.status.pending,.status.changes_required{background:var(--ns-warning-soft);color:var(--ns-warning)}.status.expired,.status.rejected,.status.suspended,.status.cancelled,.status.no_show{background:var(--ns-danger-soft);color:var(--ns-danger)}.status.verified,.status.active,.status.confirmed,.status.checked_in,.status.checked_out{background:var(--ns-green-soft);color:#17683a}

/* Marketplace publique — header léger, aucun rôle technique exposé */
.public-header{position:sticky;top:0;z-index:80;background:rgba(255,255,255,.97);border-bottom:1px solid var(--ns-line);backdrop-filter:blur(16px)}.nav-row{height:72px;display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:24px}.public-header .brand img{height:52px;width:auto}.public-links{display:flex;align-items:center;justify-content:center;gap:24px;font-size:14px;font-weight:760}.public-links a{position:relative;padding:25px 0}.public-links a:hover{color:var(--ns-forest-2)}.nav-right{display:flex;align-items:center;gap:14px;font-size:14px;font-weight:700}.nav-meta{color:var(--ns-muted);font-size:12px}.public-header .menu{display:none;background:transparent;border:0;color:var(--ns-text);font-size:26px;padding:8px}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--ns-forest);color:#fff;font-size:12px;font-weight:900}.account-menu{position:relative}.account-menu summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:5px 7px;border-radius:12px}.account-menu summary::-webkit-details-marker{display:none}.account-menu summary:hover{background:#f1f5f2}.account-dropdown{position:absolute;right:0;top:calc(100% + 9px);width:240px;background:#fff;border:1px solid var(--ns-line);border-radius:15px;padding:8px;box-shadow:var(--ns-shadow);z-index:100}.account-dropdown a,.account-dropdown button{display:flex;width:100%;padding:11px 12px;border:0;border-radius:9px;background:transparent;color:var(--ns-text);font:inherit;text-align:left;cursor:pointer}.account-dropdown a:hover,.account-dropdown button:hover{background:#f3f7f4}.account-dropdown hr{border:0;border-top:1px solid var(--ns-line);margin:7px 4px}

.market-hero{background:linear-gradient(112deg,rgba(11,62,36,.96),rgba(28,104,57,.88)),url('hero.svg') center/cover;color:#fff;padding:64px 0 74px;min-height:410px}.hero-inner{display:grid;align-content:center;gap:28px}.hero-copy{max-width:820px}.hero-copy h1{font-size:clamp(38px,5.3vw,64px);line-height:1.02;letter-spacing:-.035em;margin:10px 0 16px}.hero-copy p{max-width:720px;font-size:18px;color:#e7f3eb}.market-hero .trust-chip{background:#fff;color:var(--ns-forest)}
.ota-search{display:grid;grid-template-columns:minmax(235px,1.35fr) minmax(160px,.78fr) 1fr 1fr 1.15fr auto;gap:10px;background:#fff;padding:12px;border-radius:18px;box-shadow:0 22px 50px rgba(4,37,20,.24);color:var(--ns-text);align-items:end}.ota-search.compact{position:sticky;top:84px;z-index:30;margin-bottom:28px;box-shadow:var(--ns-shadow)}.ota-search label{font-size:11px;margin:0 0 4px;color:#5f6b64}.ota-search input,.ota-search select{min-height:50px;border-color:#d9e2dc}.compact-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.compact-fields input{padding-inline:8px}.search-cta{height:50px}.search-destination{position:relative}.autocomplete-panel{position:absolute;top:calc(100% + 7px);left:0;right:0;background:#fff;border:1px solid var(--ns-line);border-radius:14px;box-shadow:var(--ns-shadow);padding:7px;z-index:120;max-height:360px;overflow:auto}.autocomplete-item{display:grid;grid-template-columns:34px 1fr;gap:9px;align-items:center;width:100%;border:0;background:#fff;border-radius:10px;padding:9px 10px;text-align:left;cursor:pointer}.autocomplete-item:hover,.autocomplete-item.active{background:#eff6f1}.autocomplete-item strong,.autocomplete-item small{display:block}.autocomplete-item small{color:var(--ns-muted);margin-top:2px}.autocomplete-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--ns-green-soft);color:var(--ns-forest);font-weight:900}
.section-head,.results-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:20px}.section-head h2,.results-toolbar h1{margin:0}.destination-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.destination-card{display:grid;gap:5px;background:#fff;border:1px solid var(--ns-line);border-radius:16px;padding:18px;transition:.18s ease}.destination-card:hover{transform:translateY(-2px);box-shadow:var(--ns-shadow);border-color:#c9dbcf}.destination-card small{color:var(--ns-muted)}.destination-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--ns-orange-soft);color:var(--ns-orange-dark);font-weight:900;margin-bottom:4px}.destination-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.destination-list-item{display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;border:1px solid var(--ns-line);padding:15px 17px;border-radius:14px}.destination-list-item strong,.destination-list-item small{display:block}.destination-list-item small{color:var(--ns-muted)}
.hotel-result-list{display:grid;gap:16px}.hotel-result-card{display:grid;grid-template-columns:250px minmax(0,1fr) 210px;background:#fff;border:1px solid var(--ns-line);border-radius:18px;overflow:hidden;box-shadow:0 7px 25px rgba(18,49,31,.045)}.hotel-result-card:hover{box-shadow:var(--ns-shadow)}.hotel-image-wrap{min-height:210px;background:#dfeae2}.hotel-image-wrap img{width:100%;height:100%;object-fit:cover}.hotel-result-main{padding:20px}.hotel-result-main h2{margin:4px 0 8px;font-size:23px}.rating-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.score{display:inline-grid;place-items:center;min-width:40px;height:30px;border-radius:9px;background:var(--ns-forest);color:#fff;font-weight:900}.hotel-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.badge.soft{background:#f3f6f4;color:#536159}.hotel-result-price{border-left:1px solid var(--ns-line);padding:20px;display:flex;flex-direction:column;justify-content:flex-end;align-items:flex-end;text-align:right;gap:5px}.hotel-result-price strong{font-size:23px}.hotel-result-price .btn{margin-top:10px;width:100%}.trust-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding:20px 0 50px}.trust-strip>div{display:grid;gap:4px;background:#fff;border:1px solid var(--ns-line);border-radius:15px;padding:17px}.trust-strip span{color:var(--ns-muted);font-size:13px}.empty-state{background:#fff;border:1px dashed #cbd8cf;border-radius:18px;padding:36px;text-align:center;color:var(--ns-muted)}
.public-footer{background:#0b3720;color:#dfece3;margin-top:50px;padding:42px 0 20px}.footer-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:26px}.footer-grid>div{display:flex;flex-direction:column;gap:8px}.footer-grid strong{color:#fff}.footer-grid a:hover{color:#fff}.footer-logo{height:62px;width:auto;object-fit:contain;object-position:left}.footer-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:28px;padding-top:18px;font-size:13px;color:#b9cbbf}

/* Pages réservation / fiche */
.search-page{padding-top:26px}.booking-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:24px;align-items:start}.booking-summary{position:sticky;top:96px}.booking-summary img{width:100%;height:190px;object-fit:cover;border-radius:13px;margin-bottom:16px}.check-row{display:flex!important;align-items:flex-start;gap:9px;margin:12px 0;color:var(--ns-text)}.check-row input{width:auto;margin-top:4px}.confirmation-card{background:#fff;border:1px solid var(--ns-line);border-radius:22px;padding:26px;box-shadow:var(--ns-shadow)}.confirmation-head{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}.confirmation-head>div:first-child{display:flex;align-items:center;gap:14px}.success-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--ns-green-soft);color:var(--ns-leaf);font-size:26px;font-weight:900}.confirmation-grid{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:24px;margin-top:22px}.qrbox small{display:block;text-align:center;color:var(--ns-muted);margin-top:8px}

/* 3 workspaces privés : client, hôtel, administration */
.account-app,.hotel-app,.admin-app{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr);background:#f5f7f6}.workspace-sidebar{position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid var(--ns-line);padding:20px 14px;overflow:auto}.admin-side{background:#0f3722;color:#e5f0e9;border-right:0}.hotel-side{background:#123f29;color:#e5f0e9;border-right:0}.workspace-logo{display:flex;align-items:center;height:68px;padding:5px 10px;margin-bottom:10px}.workspace-logo img{height:54px;width:auto}.admin-side .workspace-logo,.hotel-side .workspace-logo{background:#fff;border-radius:14px}.workspace-title{font-size:15px;font-weight:900;padding:12px 12px 10px;margin-bottom:8px}.workspace-title small{display:block;font-size:11px;font-weight:650;opacity:.7;margin-top:3px}.workspace-link{display:flex;align-items:center;min-height:43px;padding:9px 12px;border-radius:10px;margin:3px 0;font-size:14px;font-weight:720;color:inherit}.workspace-link:hover{background:#f1f5f2}.workspace-link.active{background:var(--ns-green-soft);color:var(--ns-forest)}.admin-side .workspace-link:hover,.hotel-side .workspace-link:hover{background:rgba(255,255,255,.08)}.admin-side .workspace-link.active,.hotel-side .workspace-link.active{background:#fff;color:var(--ns-forest)}.workspace-back{display:block;border-top:1px solid currentColor;margin:16px 10px 0;padding:16px 2px 0;opacity:.75;font-size:13px}.workspace-content{min-width:0}.workspace-topbar{height:74px;background:#fff;border-bottom:1px solid var(--ns-line);display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 26px;position:sticky;top:0;z-index:50}.admin-search{display:grid;grid-template-columns:minmax(250px,460px) auto;gap:7px}.admin-search input{min-height:42px}.admin-search button{border:0;border-radius:10px;background:#eef4f0;color:var(--ns-forest);font-weight:800;padding:0 14px}.topbar-actions{display:flex;align-items:center;gap:12px}.notification-pill{background:var(--ns-orange-soft);color:var(--ns-orange-dark);border-radius:999px;padding:7px 10px;font-size:12px;font-weight:800}.workspace-page{padding:30px;max-width:1500px;margin:auto}.workspace-mobile-nav{display:none}.filter-pills{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:15px}.filter-pills a{background:#fff;border:1px solid var(--ns-line);padding:8px 11px;border-radius:999px;font-size:13px;font-weight:700}.search-admin-row{display:grid;grid-template-columns:120px 1fr;padding:10px;border-bottom:1px solid var(--ns-line)}.search-admin-row:last-child{border-bottom:0}.review-list{display:grid;gap:14px}.action-stack{display:grid;gap:9px;margin-top:12px}.payment-action{display:grid;gap:8px}.scanner-panel{max-width:800px;margin:auto}.camera-box{position:relative;background:#09130d;border-radius:20px;min-height:370px;overflow:hidden;margin:20px 0}.camera-box video{width:100%;min-height:370px;object-fit:cover}.camera-guide{position:absolute;inset:16%;border:3px solid rgba(255,255,255,.9);border-radius:20px;box-shadow:0 0 0 999px rgba(0,0,0,.24);pointer-events:none}.camera-box p{position:absolute;left:18px;right:18px;bottom:12px;background:rgba(0,0,0,.58);color:#fff;padding:10px 12px;border-radius:10px;margin:0}.scanner-result{max-width:760px;margin:auto}.result-state{background:#fff;border:1px solid var(--ns-line);border-radius:20px;padding:25px;text-align:center;margin-bottom:16px}.result-state.valid{border-top:5px solid var(--ns-leaf)}.result-state.invalid,.result-state.cancelled,.result-state.wrong_hotel{border-top:5px solid var(--ns-danger)}.secret-code{display:block;overflow-wrap:anywhere;background:#0e2518;color:#fff;padding:13px;border-radius:10px;margin:12px 0;font-size:15px;letter-spacing:.06em}.security-card{height:100%}

/* Tables et formulaires privés */
.metrics-grid{grid-template-columns:repeat(6,minmax(150px,1fr))}.metric-card{min-height:128px}.editor-layout{grid-template-columns:minmax(0,1fr) 330px}.form-section h2{margin-top:0}.readiness-item span{font-weight:900}.readiness-item.ok{background:var(--ns-green-soft);color:#166b39}.readiness-item.missing{background:var(--ns-warning-soft);color:var(--ns-warning)}.tablewrap table{min-width:760px}.inline-action{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.inline-action input,.inline-action select{width:auto}.section+.section{padding-top:10px}

@media(max-width:1180px){.destination-grid{grid-template-columns:repeat(3,1fr)}.hotel-result-card{grid-template-columns:210px 1fr 190px}.metrics-grid{grid-template-columns:repeat(3,1fr)}.account-app,.hotel-app,.admin-app{grid-template-columns:220px minmax(0,1fr)}.workspace-page{padding:24px}.booking-layout{grid-template-columns:1fr 330px}}
@media(max-width:920px){.site-container{width:min(100% - 26px,1240px)}.nav-row{grid-template-columns:auto 1fr auto;gap:12px}.public-header .menu{display:block;grid-column:3}.public-links,.nav-right{display:none}.public-links.open,.nav-right.open{display:flex;position:absolute;left:13px;right:13px;background:#fff;border:1px solid var(--ns-line);box-shadow:var(--ns-shadow);z-index:100}.public-links.open{top:68px;flex-direction:column;align-items:stretch;gap:0;padding:8px}.public-links.open a{padding:12px}.nav-right.open{top:calc(68px + 250px);padding:12px;flex-wrap:wrap}.ota-search,.ota-search.compact{grid-template-columns:1fr 1fr;position:static}.ota-search .search-destination{grid-column:1/-1}.ota-search .search-cta{grid-column:1/-1}.destination-grid{grid-template-columns:repeat(2,1fr)}.hotel-result-card{grid-template-columns:190px minmax(0,1fr)}.hotel-result-price{grid-column:1/-1;border-left:0;border-top:1px solid var(--ns-line);align-items:flex-start;text-align:left;display:grid;grid-template-columns:1fr auto;gap:4px 12px}.hotel-result-price .btn{grid-row:1/4;grid-column:2;margin:0;width:auto}.booking-layout,.confirmation-grid{grid-template-columns:1fr}.booking-summary{position:static}.trust-strip{grid-template-columns:1fr}.footer-grid{grid-template-columns:1fr 1fr}.account-app,.hotel-app,.admin-app{display:block}.workspace-sidebar{display:none}.workspace-topbar{position:sticky;top:0;height:auto;min-height:64px;padding:10px 14px}.workspace-mobile-nav{display:flex;gap:7px;overflow-x:auto;padding:12px 14px 0;background:#f5f7f6}.workspace-mobile-nav .workspace-link{flex:0 0 auto;background:#fff;border:1px solid var(--ns-line);white-space:nowrap}.workspace-mobile-nav .workspace-link.active{background:var(--ns-forest);color:#fff}.admin-search{display:none}.editor-layout{grid-template-columns:1fr}.editor-side{position:static}.metrics-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.site-container{width:min(100% - 18px,1240px)}.public-header .brand img{height:45px}.nav-row{height:62px}.market-hero{padding:38px 0 45px;min-height:auto}.hero-copy h1{font-size:36px}.hero-copy p{font-size:15px}.ota-search,.ota-search.compact{grid-template-columns:1fr;border-radius:14px;padding:9px}.ota-search>*{grid-column:1!important}.compact-fields{grid-template-columns:repeat(3,1fr)}.destination-grid,.destination-list{grid-template-columns:1fr}.hotel-result-card{display:block}.hotel-image-wrap{height:220px;display:block}.hotel-result-main{padding:16px}.hotel-result-price{display:flex;align-items:stretch;text-align:left;padding:16px}.hotel-result-price .btn{width:100%;margin-top:8px}.section-head,.results-toolbar,.confirmation-head{align-items:flex-start;flex-direction:column}.footer-grid{grid-template-columns:1fr}.booking-summary{padding:16px}.confirmation-card{padding:16px}.workspace-page{padding:18px 12px}.workspace-topbar{gap:8px}.notification-pill{display:none}.metrics-grid{grid-template-columns:1fr 1fr}.metric-card{min-height:105px;padding:14px}.metric-card .metric{font-size:28px}.form-section{padding:15px}.sticky-save{border-radius:12px}.tablewrap{border-radius:12px}.camera-box,.camera-box video{min-height:310px}.panel{padding:20px}.simple-page{margin:25px auto}.inline-action{display:grid;grid-template-columns:1fr}.inline-action input,.inline-action select,.inline-action .btn{width:100%}.topbar-actions .account-menu summary span:last-child{display:none}}
@media(max-width:380px){.metrics-grid{grid-template-columns:1fr}.hero-copy h1{font-size:31px}.compact-fields{grid-template-columns:1fr}.workspace-page{padding-inline:9px}}

/* GanGanStay V2.1 — cloisonnement des comptes */
.account-side{background:#fff}.account-side .workspace-title small{color:var(--ns-muted)}
.account-topbar{justify-content:space-between}.account-identity{display:flex;align-items:center;gap:11px;min-width:0}.account-identity>div{display:grid;gap:2px;min-width:0}.account-identity small{color:var(--ns-muted);font-size:12px}.context-switch{font-weight:820!important}
.account-metrics .metric-card{min-height:150px}.small-metric{font-size:20px!important;line-height:1.25!important;margin:7px 0}.metric-label{font-size:12px;font-weight:800;color:var(--ns-muted);text-transform:uppercase;letter-spacing:.05em}
.security-status{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:850}.security-status.ok{background:var(--ns-green-soft);color:var(--ns-forest)}
.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.mfa-qr{display:grid;place-items:center;min-height:270px;background:#fff;border:1px solid var(--ns-line);border-radius:16px;padding:12px;margin:16px 0}.mfa-qr canvas{max-width:100%;height:auto}.manual-secret{margin:12px 0 18px}.manual-secret summary,.danger-zone summary{cursor:pointer;font-weight:800}.manual-secret[open],.danger-zone[open]{padding:12px;border:1px solid var(--ns-line);border-radius:12px;background:#fafcfb}.danger-zone{margin-top:18px;border-top:1px solid var(--ns-line);padding-top:14px}.danger-zone[open]{border:1px solid #f0caca;background:#fffafa}.recovery-card{border-top:4px solid var(--ns-orange);margin-bottom:18px}.recovery-codes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}.recovery-codes code{display:block;text-align:center;background:#102b1d;color:#fff;border-radius:9px;padding:10px 8px;font-weight:850;letter-spacing:.08em}
.notice-list{display:grid;gap:12px}.notice-item{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 18px;background:#fff;border:1px solid var(--ns-line);border-left:4px solid #9aa9a0;border-radius:14px}.notice-item p{margin:4px 0 0}.notice-item small{color:var(--ns-muted)}.notice-item.warning{border-left-color:#c88900}.notice-item.critical{border-left-color:var(--ns-danger)}.notice-item.success{border-left-color:var(--ns-leaf)}.notice-item.is-read{opacity:.72}.notice-item a:not(.btn){font-weight:800;color:var(--ns-forest)}
.context-account-badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 10px;background:#eef4f0;color:var(--ns-forest);font-size:12px;font-weight:850}
.public-header .account-dropdown .context-switch{background:#f1f7f3;color:var(--ns-forest);font-weight:850}

@media(max-width:920px){.account-topbar .topbar-actions{display:flex}.account-topbar .btn{white-space:nowrap}.recovery-codes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.account-topbar{align-items:center}.account-identity strong{max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-topbar .topbar-actions{gap:6px}.account-topbar .topbar-actions .btn.secondary{display:none}.recovery-codes{grid-template-columns:1fr 1fr}.notice-item{align-items:flex-start;flex-direction:column}.mfa-qr{min-height:220px;padding:8px}.mfa-qr canvas{width:220px!important;height:220px!important}}


/* V2.1.1 — centre d'actions admin et traitement partenaire */
.notification-menu{position:relative}
.notification-menu>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.notification-menu>summary::-webkit-details-marker{display:none}
.notification-menu[open]>.notification-pill{box-shadow:0 0 0 3px rgba(239,107,43,.12)}
.notification-dropdown{position:absolute;right:0;top:calc(100% + 10px);width:min(360px,86vw);background:#fff;border:1px solid var(--ns-line);border-radius:16px;padding:8px;box-shadow:var(--ns-shadow);z-index:120}
.notification-title{padding:10px 12px 8px;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--ns-muted)}
.notification-dropdown a{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px;border-radius:10px;color:var(--ns-text);font-weight:720}
.notification-dropdown a:hover{background:#f3f7f4}
.notification-dropdown a strong{min-width:28px;height:28px;display:grid;place-items:center;border-radius:999px;background:var(--ns-orange-soft);color:var(--ns-orange-dark);font-size:12px}
.notification-clear{background:var(--ns-green-soft);color:var(--ns-forest)}
.partner-review-card{margin-bottom:20px;border-left:4px solid var(--ns-orange)}
.partner-review-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:8px 0 18px}
.partner-review-grid>div{display:grid;gap:5px;align-content:start}
.partner-review-grid a{color:var(--ns-forest);font-weight:700;overflow-wrap:anywhere}
.partner-message{border-top:1px solid var(--ns-line);border-bottom:1px solid var(--ns-line);padding:16px 0;margin-bottom:16px}
.partner-message p{margin:6px 0 0}
.partner-review-actions{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.partner-review-actions form{margin:0}
.partner-reject-form{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:8px;flex:1;min-width:min(100%,420px)}
.partner-reject-form input{min-height:42px}
@media(max-width:760px){
  .notification-menu .notification-pill{display:inline-flex}
  .notification-dropdown{position:fixed;left:12px;right:12px;top:78px;width:auto}
  .partner-review-grid{grid-template-columns:1fr}
  .partner-review-actions{display:grid}
  .partner-review-actions .btn{width:100%}
  .partner-reject-form{grid-template-columns:1fr;min-width:0}
}


/* V2.1.3 — Mode Support GanGanStay sécurisé */
.support-banner{margin:18px 28px 0;padding:16px 18px;border-radius:16px;display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid;box-shadow:0 10px 28px rgba(18,53,37,.08)}
.support-banner.read{background:#fff8e6;border-color:#e6b85c;color:#503600}.support-banner.write{background:#fff0ea;border-color:#ed6c32;color:#5d230a}
.support-banner>div:first-child{display:flex;flex-direction:column;gap:4px}.support-banner strong{font-size:1.05rem}.support-banner small{line-height:1.45}.support-kicker{font-size:.72rem;font-weight:900;letter-spacing:.08em}
.support-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.support-actions form{margin:0}.support-unlock{background:#ed6c32;color:#fff;border-color:#ed6c32}
.hotel-app.support-readonly .workspace-page form[method="post"]{pointer-events:none;opacity:.55;filter:saturate(.65)}
.hotel-app.support-readonly .workspace-page form[method="post"]::before{content:"Lecture seule — autorisation Support requise pour modifier";display:block;color:#8a5b00;font-weight:700;font-size:.78rem;margin-bottom:8px}
.hotel-app.support-readonly .workspace-page input,.hotel-app.support-readonly .workspace-page select,.hotel-app.support-readonly .workspace-page textarea{background:#f7f7f5}
.support-start-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:20px;max-width:1100px}.security-list{margin:0;padding-left:20px;display:grid;gap:12px}.support-write .workspace-sidebar{box-shadow:inset -4px 0 0 #ed6c32}
@media(max-width:900px){.support-banner{margin:12px;align-items:flex-start;flex-direction:column}.support-actions{width:100%}.support-actions .btn{width:100%}.support-start-grid{grid-template-columns:1fr}}

/* V2.1.4 - dossier admin lecture seule pour donnees hotel */
.admin-readonly-notice{margin-bottom:16px}.admin-declared-readonly fieldset{border:0;padding:0;margin:0;min-width:0}.admin-declared-readonly .sticky-save{display:none}.admin-declared-readonly :is(input,select,textarea):disabled{opacity:1;color:#39473f;background:#f4f6f3;cursor:not-allowed}

/* GanGanStay V2.2 — vérification officielle, publication séparée, bulk inventory */
.verification-flow{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 20px}.verification-flow span{display:inline-flex;align-items:center;min-height:34px;padding:7px 11px;border-radius:999px;background:#eef2ef;color:#647269;font-size:12px;font-weight:820;border:1px solid var(--ns-line)}.verification-flow span.active{background:var(--ns-orange-soft);color:var(--ns-orange-dark);border-color:#f2c9b5}.verification-flow span.done{background:var(--ns-green-soft);color:var(--ns-forest);border-color:#cfe5d5}.verification-flow.vertical{display:grid;gap:7px}.verification-flow.vertical span{border-radius:10px;justify-content:flex-start}.admin-flow{margin-bottom:18px}
.official-blocked{border-left:4px solid var(--ns-orange);background:#fffaf6}.official-decision{border-top:1px solid var(--ns-line);padding-top:14px;margin-top:14px}.publish-card{border-top:4px solid var(--ns-orange)}.publish-card.published{border-top-color:var(--ns-leaf)}.publish-card button:disabled{opacity:.5;cursor:not-allowed}
.owner-security{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid var(--ns-line);margin-bottom:10px}.owner-badges{display:flex;gap:6px;flex-wrap:wrap}.compact-form{margin:8px 0 14px}.document-review-item form{min-width:260px}
.bulk-inventory{margin:18px 0}.bulk-inventory summary{cursor:pointer;font-weight:900;font-size:16px}.bulk-inventory form{margin-top:16px}.bulk-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.restrictions-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin:12px 0}.weekday-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0;padding:12px;border-radius:12px;background:#f7faf8;border:1px solid var(--ns-line)}.weekday-row label{display:inline-flex;align-items:center;gap:5px;margin:0}.weekday-row input{width:auto}.weekday-row small{width:100%;color:var(--ns-muted)}.support-mfa-panel{max-width:650px}.support-mfa-panel form{display:grid;gap:8px;margin:18px 0 10px}
@media(max-width:1000px){.bulk-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.restrictions-grid{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:650px){.bulk-grid,.restrictions-grid{grid-template-columns:1fr}.verification-flow{display:grid}.verification-flow span{border-radius:10px}.weekday-row{align-items:flex-start}}
.status.approved{background:#e9f4ff;color:#245f8e}.status.unverified{background:#f2f4f3;color:#6b7280}.status.verified_ganganstay,.status.official_verified{background:var(--ns-green-soft);color:#17683a}

/* V2.2.1 — rattachement propriétaire depuis demande partenaire */
.checkline{display:flex;align-items:flex-start;gap:.65rem;margin:1rem 0;font-weight:600;line-height:1.4}.checkline input{width:auto;margin-top:.2rem}.owner-candidate{margin:.8rem 0}.owner-candidate form{margin-top:.8rem}.manual-owner{margin-top:1rem}.manual-owner summary{cursor:pointer;font-weight:700;color:var(--green,#0b4f2c)}.owner-badges{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}


/* V2.2.2 — formulaire partenaire dynamique / séparation demandeur-propriétaire */
.partner-smart-form fieldset{border:1px solid #dfe8e2;border-radius:16px;padding:18px;margin:0 0 18px;background:#fff}
.partner-smart-form legend{font-weight:800;color:#103f27;padding:0 8px}
.partner-smart-form .choice-row{display:flex;gap:18px;flex-wrap:wrap;padding:10px 0 4px}
.partner-smart-form .choice-row label{display:flex;align-items:center;gap:8px;font-weight:700}
.partner-smart-form [hidden]{display:none!important}
.partner-smart-form .form-hint{font-size:.9rem;color:#66756d;margin-top:12px}
.partner-legal-summary{margin-top:18px;padding:16px;border-radius:14px;background:#f6f9f7;border:1px solid #e1e8e4}
.legacy-owner-form{display:grid;gap:8px;margin-top:10px}
.owner-candidate .status{display:inline-flex;margin:8px 0}
@media(max-width:760px){.partner-smart-form fieldset{padding:14px}.partner-smart-form .grid{grid-template-columns:1fr!important}.partner-review-grid{grid-template-columns:1fr!important}}

/* V2.2.4 — entrée professionnelle discrète, identité séquentielle et navigation contextuelle */
.nav-pro-entry{display:inline-flex!important;align-items:center;gap:5px;padding:7px 10px!important;border:1px solid #dce7e0;border-radius:999px;background:#f8fbf9;color:var(--ns-forest)!important;font-size:12px;font-weight:850;line-height:1}
.nav-pro-entry:hover{background:#eef6f1!important;border-color:#cbdcd1}.nav-pro-entry span:first-child{font-size:14px}
.footer-grid-visitors{grid-template-columns:1.6fr 1fr 1.15fr}
.professional-entry{max-width:680px}.micro-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;font-size:13px;font-weight:750;color:var(--ns-forest)}.micro-nav.light{margin:0 0 20px;color:#fff}.micro-nav.light a{color:#fff;opacity:.92}.micro-nav a:hover{text-decoration:underline}
.partner-access-card{padding:34px}.partner-access-card h1{margin-bottom:10px}.partner-email-gate{margin-top:22px}.partner-email-gate .btn{margin-top:10px}.partner-access-notes{display:grid;gap:8px;margin-top:20px;padding-top:18px;border-top:1px solid var(--ns-line);font-size:13px;color:var(--ns-muted)}
.hp-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important;opacity:0!important;pointer-events:none!important}
.compact-partner-hero{padding:34px 0 26px}.compact-partner-hero h1{margin:6px 0 8px}.partner-form-layout{align-items:start}.partner-form-guide{position:sticky;top:98px}.partner-form-guide .notice{margin-top:18px}.partner-smart-form input[readonly]{background:#f2f5f3;color:#53645b;cursor:not-allowed}
.page-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.context-breadcrumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;font-size:12px;font-weight:800}.context-breadcrumbs>a:first-child{color:var(--ns-forest)}.context-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid #dce7e0;border-radius:999px;padding:5px 9px;background:#fff;color:var(--ns-forest)!important;font-size:12px;font-weight:800}.context-chip:hover{background:#eef6f1}.workflow-hint{margin-bottom:16px;border-left:4px solid var(--ns-orange)}
.action-bar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.owner-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.owner-security{padding:10px 0}.owner-security+.compact-form{margin-bottom:12px}
@media(max-width:920px){.nav-pro-entry{justify-content:flex-start!important;border:0;border-radius:9px;background:#f3f7f4!important}.partner-form-guide{position:static}.footer-grid-visitors{grid-template-columns:1fr 1fr}.page-actions{width:100%}}
@media(max-width:600px){.footer-grid-visitors{grid-template-columns:1fr}.partner-access-card{padding:22px}.micro-nav{align-items:flex-start}.page-actions{display:grid;grid-template-columns:1fr}.page-actions .btn{width:100%}.context-breadcrumbs{align-items:flex-start}.action-bar{display:grid;grid-template-columns:1fr}.action-bar .btn{width:100%}}

/* =========================================================
   GanGanStay V2.2.5 — navigation dynamique / langues / compte
   ========================================================= */
.nav-currency{display:inline-flex;align-items:center;min-height:34px;padding:0 3px;color:var(--ns-muted);font-size:12px;font-weight:850;letter-spacing:.03em}
.locale-menu{position:relative}.locale-menu summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:4px;min-height:34px;padding:5px 6px;border-radius:10px;color:var(--ns-text);font-size:12px;font-weight:850}.locale-menu summary::-webkit-details-marker{display:none}.locale-menu summary:hover{background:#f1f5f2}.locale-menu .chevron,.public-login-menu .chevron{font-size:11px;opacity:.65}.locale-dropdown{position:absolute;right:0;top:calc(100% + 8px);width:170px;background:#fff;border:1px solid var(--ns-line);border-radius:13px;padding:7px;box-shadow:var(--ns-shadow);z-index:120}.locale-dropdown form{margin:0}.locale-option{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;background:transparent;color:var(--ns-text);padding:10px 11px;border-radius:8px;font:inherit;font-size:13px;text-align:left;cursor:pointer}.locale-option:hover,.locale-option.active{background:#f1f7f3;color:var(--ns-forest)}
.locale-menu.compact summary{border:1px solid var(--ns-line);background:#fff;min-width:54px;justify-content:center}.locale-menu.compact .locale-dropdown{right:0}
.public-login-menu>summary{border:1px solid var(--ns-line);background:#fff;min-height:38px;padding:7px 10px}.public-login-menu>summary:hover{background:#f8fbf9}.public-login-menu .account-dropdown{width:260px}.public-login-menu .account-dropdown strong{font-weight:900}.dropdown-label{display:block;padding:8px 12px 4px;color:var(--ns-muted);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.account-dropdown .context-switch{background:#f1f7f3;color:var(--ns-forest);font-weight:850}
.password-security-card{padding:0!important;overflow:hidden}.account-password-zone>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px}.account-password-zone>summary::-webkit-details-marker{display:none}.account-password-zone>summary span:first-child{display:grid;gap:4px}.account-password-zone>summary strong{font-size:20px}.account-password-zone>summary small{color:var(--ns-muted);font-weight:500}.password-zone-toggle{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ns-line);border-radius:10px;padding:8px 11px;color:var(--ns-forest);font-size:12px;font-weight:850}.account-password-zone[open] .password-zone-toggle{background:var(--ns-green-soft)}.account-password-body{padding:0 22px 22px;border-top:1px solid var(--ns-line)}.account-password-body form{padding-top:12px}
@media(max-width:920px){
  .public-links.open{top:68px}
  .nav-right.open{top:214px;align-items:center}
  .nav-right.open .locale-menu,.nav-right.open .account-menu{position:relative}
  .nav-right.open .locale-dropdown,.nav-right.open .account-dropdown{position:fixed;left:18px;right:18px;top:auto;width:auto;max-width:none}
  .locale-menu.compact summary{min-width:48px}
}
@media(max-width:600px){
  .nav-right.open{top:194px}
  .public-login-menu>summary{min-height:36px}
  .account-password-zone>summary{padding:18px}.account-password-body{padding:0 18px 18px}
}
/* V2.2.6 — confort d'authentification */
.auth-trust-row{display:flex;align-items:flex-start;gap:.75rem;margin:1rem 0;padding:.85rem 1rem;border:1px solid #d9e5dc;border-radius:14px;background:#f7fbf8;cursor:pointer}
.auth-trust-row input[type="checkbox"]{width:18px;height:18px;min-width:18px;margin-top:.18rem;accent-color:#0b5a38}
.auth-trust-row span{display:grid;gap:.2rem}.auth-trust-row small{display:block;color:#5d6b63;line-height:1.35}
.trusted-device-status{display:grid;gap:.45rem;margin:1rem 0;padding:.9rem 1rem;border:1px solid #d9e5dc;border-radius:14px;background:#f7fbf8}.trusted-device-status small{color:#5d6b63;line-height:1.4}.trusted-device-status form{margin-top:.25rem}


/* =========================================================
   GanGanStay V2.2.7 — accueil vivant + localisation facultative
   ========================================================= */
.readiness-item.optional{background:#f2f5f8;color:#55626d;border:1px dashed #d5dde3}
.readiness-item.optional.ok{background:var(--ns-green-soft);color:#17683a;border-style:solid;border-color:#cfe5d5}
.readiness-item.optional>div{display:grid;gap:1px}
.readiness-item.optional small{display:block;font-size:10px;font-weight:650;color:inherit;opacity:.78;line-height:1.3}

.smart-discovery-section{padding-top:26px;padding-bottom:28px}
.smart-section-head{align-items:flex-end}
.smart-section-head .eyebrow{display:block;margin-bottom:5px}
.smart-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.smart-location-btn{min-height:38px;padding:8px 12px;border-radius:999px;border:1px solid #cfe0d5;background:#f5faf7;color:var(--ns-forest);font:inherit;font-size:12px;font-weight:850;cursor:pointer}
.smart-location-btn:hover{background:#eaf4ed}
.smart-location-btn.is-active{background:var(--ns-green-soft);border-color:#bcd9c5}
.smart-location-btn:disabled{opacity:.6;cursor:not-allowed}
.smart-carousel-controls{display:flex;align-items:center;gap:6px}
.smart-carousel-controls button{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--ns-line);border-radius:999px;background:#fff;color:var(--ns-forest);font-size:23px;line-height:1;cursor:pointer}
.smart-carousel-controls button:hover{background:#f1f7f3}
.smart-carousel{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(270px,310px);gap:14px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:inline mandatory;scrollbar-width:thin;padding:3px 2px 12px}
.smart-carousel.hotels{grid-auto-columns:minmax(270px,300px)}
.smart-room-card,.smart-hotel-card{scroll-snap-align:start;background:#fff;border:1px solid var(--ns-line);border-radius:18px;overflow:hidden;box-shadow:0 7px 25px rgba(18,49,31,.045);min-width:0}
.smart-room-card:hover,.smart-hotel-card:hover{box-shadow:var(--ns-shadow);transform:translateY(-1px)}
.smart-room-photo,.smart-hotel-photo{display:block;height:185px;background:#dfeae2;overflow:hidden}
.smart-room-photo img,.smart-hotel-photo img{width:100%;height:100%;object-fit:cover}
.smart-room-body,.smart-hotel-body{padding:16px}
.smart-room-kicker{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:25px;color:var(--ns-muted);font-size:11px;font-weight:800}
.smart-room-kicker>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.smart-room-card h3,.smart-hotel-card h3{font-size:18px;line-height:1.25;margin:8px 0 5px}
.smart-room-card p{margin:0 0 14px;font-size:13px}
.smart-badge{display:inline-flex;align-items:center;white-space:nowrap;border-radius:999px;padding:4px 7px;background:var(--ns-orange-soft);color:var(--ns-orange-dark);font-size:10px;font-weight:900}
.smart-badge.favorite{background:#fff0f2;color:#9d3145}
.smart-room-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;border-top:1px solid var(--ns-line);padding-top:13px}
.smart-room-footer>div{display:grid;gap:1px}
.smart-room-footer small{font-size:10px;color:var(--ns-muted)}
.smart-room-footer strong{font-size:18px;color:var(--ns-forest)}
.smart-room-footer .btn{min-height:36px;padding:8px 11px}
.smart-hotel-body .rating-row{margin:8px 0 12px}
.smart-card-link{display:inline-flex;margin-top:12px;color:var(--ns-forest);font-weight:850;font-size:13px}
.smart-card-link:hover{text-decoration:underline}
.smart-privacy-note{margin:7px 0 0;color:var(--ns-muted);font-size:11px}
.smart-location-status{font-size:11px;color:var(--ns-muted)}

@media(max-width:920px){
  .smart-section-head{align-items:flex-start}
  .smart-head-actions{justify-content:flex-start;width:100%}
  .smart-carousel{grid-auto-columns:minmax(250px,78vw)}
}
@media(max-width:600px){
  .smart-discovery-section{padding-top:18px;padding-bottom:22px}
  .smart-carousel-controls{display:none}
  .smart-carousel{grid-auto-columns:84vw;gap:11px}
  .smart-room-photo,.smart-hotel-photo{height:170px}
  .smart-location-btn{width:100%;justify-content:center}
}


/* GGS_DESIGN_SYSTEM_V1
 * Harmonisation visuelle uniquement.
 * Les moteurs métier et leurs statuts ne sont pas modifiés.
 */
:root{
  --ggs-brand:#0b5d3b;
  --ggs-brand-strong:#08472f;
  --ggs-accent:#f47b20;
  --ggs-text:#17251d;
  --ggs-muted:#66756d;
  --ggs-surface:#ffffff;
  --ggs-surface-soft:#f5f7f6;
  --ggs-border:#dce5df;
  --ggs-danger:#b42318;
  --ggs-warning:#946200;
  --ggs-success:#087443;
  --ggs-radius-sm:8px;
  --ggs-radius:12px;
  --ggs-radius-lg:16px;
  --ggs-shadow:0 4px 18px rgba(15,35,25,.08);
  --ggs-focus:0 0 0 3px rgba(11,93,59,.18);
  --ggs-control-h:44px;
  --ggs-content:1180px;
}

@media screen{
  *,*::before,*::after{box-sizing:border-box}

  html{-webkit-text-size-adjust:100%;text-size-adjust:100%}

  body{
    color:var(--ggs-text);
    background:var(--ggs-surface-soft);
    line-height:1.5;
  }

  img,svg,video{max-width:100%;height:auto}

  a{color:var(--ggs-brand)}
  a:hover{color:var(--ggs-brand-strong)}

  :where(a,button,input,select,textarea,[tabindex]):focus-visible{
    outline:2px solid var(--ggs-brand);
    outline-offset:2px;
    box-shadow:var(--ggs-focus);
  }

  :where(button,.btn,input[type="submit"],input[type="button"],input[type="reset"]){
    min-height:var(--ggs-control-h);
    border-radius:var(--ggs-radius-sm);
    font:inherit;
    font-weight:700;
  }

  :where(.btn,.btn-primary,button[type="submit"],input[type="submit"]){
    border:1px solid var(--ggs-brand);
  }

  :where(input:not([type="checkbox"]):not([type="radio"]),select,textarea){
    width:100%;
    min-height:var(--ggs-control-h);
    border:1px solid var(--ggs-border);
    border-radius:var(--ggs-radius-sm);
    background:var(--ggs-surface);
    color:var(--ggs-text);
    font:inherit;
  }

  textarea{min-height:110px;resize:vertical}

  :where(input,select,textarea)::placeholder{color:var(--ggs-muted)}

  :where(.card,.panel,.metric-card,.box){
    border-radius:var(--ggs-radius);
  }

  :where(.card,.panel,.metric-card){
    border-color:var(--ggs-border);
  }

  :where(.badge,.pill,.status-badge){
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    border-radius:999px;
    line-height:1.2;
  }

  :where(.alert,.notice,.flash){
    border-radius:var(--ggs-radius);
  }

  :where(table){
    border-collapse:collapse;
  }

  :where(th,td){
    vertical-align:top;
  }

  :where(.container,.page-container,.shell-main,.content-wrap){
    max-width:var(--ggs-content);
    margin-inline:auto;
  }

  :where(.muted,.text-muted,small){
    color:var(--ggs-muted);
  }

  @media (max-width:900px){
    :where(.grid,.cards,.metrics,.dashboard-grid){
      grid-template-columns:1fr;
    }

    :where(.container,.page-container,.shell-main,.content-wrap){
      width:100%;
      padding-inline:16px;
    }
  }

  @media (max-width:640px){
    body{overflow-x:hidden}

    :where(.card,.panel,.metric-card){
      max-width:100%;
    }

    :where(button,.btn,input[type="submit"],input[type="button"]){
      max-width:100%;
    }

    :where(table){
      font-size:.92rem;
    }
  }
}

/* GANGANSTAY_EXPERIENCE_2_PHASE19_FOUNDATION
   Premium / simple / mobile-first foundation. */
:root{
  --ggs-green-950:#063821;
  --ggs-green-900:#074a2b;
  --ggs-green-800:#0b5d37;
  --ggs-green-700:#147447;
  --ggs-cream:#fbfaf6;
  --ggs-surface:#ffffff;
  --ggs-surface-soft:#f5f7f5;
  --ggs-ink:#122019;
  --ggs-muted:#64736b;
  --ggs-line:#dfe7e2;
  --ggs-orange:#f26a2e;
  --ggs-orange-dark:#d9561f;
  --ggs-success:#08783e;
  --ggs-danger:#b42318;
  --ggs-warning:#9a6700;
  --ggs-radius-sm:12px;
  --ggs-radius:18px;
  --ggs-radius-lg:26px;
  --ggs-shadow:0 12px 34px rgba(14,42,27,.08);
  --ggs-shadow-lg:0 22px 60px rgba(14,42,27,.13);
  --ggs-max:1180px;
}
html{scroll-behavior:smooth}
body{background:var(--ggs-surface-soft);color:var(--ggs-ink);text-rendering:optimizeLegibility}
body,input,select,textarea,button{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.site-container,.r4-main{width:min(var(--ggs-max),calc(100% - 32px));margin-inline:auto}
a{transition:color .18s ease,background .18s ease,border-color .18s ease,transform .18s ease}
button,.btn,.r4-submit,.r4-outline{min-height:44px;border-radius:999px;font-weight:750}
.btn.primary,.r4-submit{background:var(--ggs-orange);border-color:var(--ggs-orange);box-shadow:0 10px 24px rgba(242,106,46,.22)}
.btn.primary:hover,.r4-submit:hover{background:var(--ggs-orange-dark);transform:translateY(-1px)}
input,select,textarea{
  min-height:46px;border:1px solid var(--ggs-line);border-radius:13px;background:#fff;color:var(--ggs-ink);
  padding:10px 12px;box-shadow:0 1px 0 rgba(0,0,0,.02)
}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(20,116,71,.14);border-color:var(--ggs-green-700)}
.card,.panel,.hotel-result-card,.r4-card,.r4-search,.r4-detail,.empty-state{
  border:1px solid var(--ggs-line);border-radius:var(--ggs-radius);background:var(--ggs-surface);box-shadow:var(--ggs-shadow)
}
.site-header,.public-header,.public-nav,.r4-header{
  backdrop-filter:saturate(160%) blur(14px);background:rgba(255,255,255,.94)!important;border-bottom:1px solid var(--ggs-line)!important
}
.site-header,.public-header,.r4-header{position:sticky;top:0;z-index:80}
.public-nav,.r4-header{min-height:68px}
.public-nav a,.r4-header a{font-weight:650;color:var(--ggs-ink)}
.public-nav a:hover,.r4-header a:hover{color:var(--ggs-green-700)}
.locale-menu summary{border:1px solid var(--ggs-line);border-radius:999px;padding:7px 10px;background:#fff}
.hero,.home-hero{
  background:
    radial-gradient(circle at 84% 10%,rgba(255,255,255,.11),transparent 25%),
    linear-gradient(135deg,var(--ggs-green-950),var(--ggs-green-700));
  color:#fff
}
.hero h1,.home-hero h1{font-size:clamp(2.25rem,5vw,4.5rem);line-height:.98;letter-spacing:-.045em;max-width:760px}
.hero p,.home-hero p{font-size:clamp(1rem,1.5vw,1.18rem);opacity:.9}
.ota-search,.r4-search form{
  border:1px solid rgba(255,255,255,.22);border-radius:20px;background:#fff;padding:8px;box-shadow:var(--ggs-shadow-lg)
}
.ota-search label,.r4-search label{font-size:.75rem;font-weight:750;color:#4a5a51}
.ota-search input,.ota-search select,.r4-search input,.r4-search select{border-color:#e1e6e3;background:#fbfcfb}
.results-toolbar,.pagehead,.section-head{gap:18px}
.destination-grid,.destination-list{gap:12px}
.destination-card,.destination-list-item{
  background:#fff;border:1px solid var(--ggs-line);border-radius:16px;padding:16px;box-shadow:0 6px 20px rgba(14,42,27,.04)
}
.destination-list-prefectures{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px
}
.destination-list-prefectures .destination-list-item{display:flex;align-items:center;min-height:58px;text-decoration:none}
.hotel-result-card{overflow:hidden;transition:transform .18s ease,box-shadow .18s ease}
.hotel-result-card:hover{transform:translateY(-2px);box-shadow:var(--ggs-shadow-lg)}
.hotel-image-wrap img,.hotel-photo,.r4-hero-img{object-fit:cover}
.badge,.secure-pill{border-radius:999px}
.trust-strip{border-radius:var(--ggs-radius);overflow:hidden}
.r4-main{padding-block:28px 54px}
.r4-header{padding-inline:max(16px,calc((100vw - var(--ggs-max))/2))}
.r4-footer{background:var(--ggs-green-950)!important;color:#fff;border:0!important}
.r4-footer a{color:#fff}
.r4-search,.r4-detail{padding:20px;margin-block:18px}
.r4-search form{box-shadow:none;border:0;padding:0}
.r4-grid,.grid{gap:16px}
[data-ggs-date-summary]{
  display:inline-flex;align-items:center;gap:6px;margin-top:8px;padding:6px 10px;border-radius:999px;
  background:#edf7f1;color:var(--ggs-green-800);font-size:.82rem;font-weight:700
}
.ggs-search-state{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 20px;color:var(--ggs-muted);font-size:.9rem
}
.ggs-search-state span{background:#fff;border:1px solid var(--ggs-line);border-radius:999px;padding:7px 10px}
.ggs-suggest-context{display:block;color:var(--ggs-muted);font-size:.78rem;margin-top:2px}
.ggs-suggest-type{font-size:.7rem;font-weight:800;letter-spacing:.04em;color:var(--ggs-green-700);text-transform:uppercase}
@media(max-width:900px){
  .destination-list-prefectures{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ota-search{grid-template-columns:1fr 1fr!important}
  .ota-search>button{grid-column:1/-1}
}
@media(max-width:640px){
  .site-container,.r4-main{width:min(100% - 22px,var(--ggs-max))}
  .public-nav,.r4-header{min-height:60px}
  .hero h1,.home-hero h1{font-size:clamp(2rem,12vw,3rem)}
  .ota-search{grid-template-columns:1fr!important;padding:10px;border-radius:18px}
  .destination-list-prefectures{grid-template-columns:1fr}
  .hotel-result-card{border-radius:16px}
  .btn,.r4-submit,.r4-outline,button{min-height:46px}
  input,select,textarea{font-size:16px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* GANGANSTAY_EXPERIENCE_2_PHASE20_PUBLIC_PREMIUM_CSS */
.market-hero{position:relative;overflow:hidden;background:linear-gradient(125deg,#063821 0%,#0b5d37 58%,#147447 100%);color:#fff}
.market-hero:after{content:"";position:absolute;inset:auto -12% -48% 42%;height:440px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.13),transparent 68%);pointer-events:none}
.market-hero .hero-inner{position:relative;z-index:1;padding-block:clamp(52px,8vw,104px)}
.market-hero .hero-copy{max-width:780px}.market-hero .hero-copy h1{font-size:clamp(2.4rem,6vw,5rem);line-height:.94;letter-spacing:-.055em;margin:.25em 0}.market-hero .hero-copy p{max-width:650px;font-size:clamp(1rem,1.8vw,1.22rem);opacity:.9}
.market-hero .ota-search{margin-top:30px;position:relative;z-index:2}
.destination-card,.destination-list-item{transition:transform .18s ease,box-shadow .18s ease}.destination-card:hover,.destination-list-item:hover{transform:translateY(-2px);box-shadow:0 16px 34px rgba(14,42,27,.09)}

.ggs20-search-shell{padding:26px 0 14px;background:linear-gradient(180deg,#f1f6f2 0%,transparent 100%)}
.ggs20-search{display:grid;grid-template-columns:minmax(210px,2.1fr) repeat(2,minmax(140px,1.05fr)) repeat(3,minmax(84px,.68fr)) auto;gap:10px;align-items:end;background:#fff;border:1px solid var(--ggs-line,#dfe7e2);border-radius:22px;padding:12px;box-shadow:0 18px 46px rgba(14,42,27,.09)}
.ggs20-search.compact{grid-template-columns:1fr 1fr;box-shadow:none;border:0;padding:0;background:transparent;border-radius:0}.ggs20-search.compact .ggs20-field:nth-of-type(n+3){grid-column:auto}.ggs20-search.compact .ggs20-search-submit{grid-column:1/-1}
.ggs20-field{min-width:0;position:relative}.ggs20-field label{display:block;font-size:.74rem;line-height:1.2;font-weight:800;color:#53635a;margin:0 0 6px}.ggs20-field input,.ggs20-field select{width:100%;height:48px;min-height:48px;background:#fbfcfb}.ggs20-search-submit{height:48px;padding-inline:24px;white-space:nowrap}
.ggs20-dirty{margin-top:10px;border:1px solid #f2d397;background:#fff8e8;color:#6c4c00;border-radius:14px;padding:10px 12px;font-weight:700;font-size:.87rem}
.ggs20-results{padding-block:26px 60px}.ggs20-results-head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:20px}.ggs20-results-head h1{font-size:clamp(1.8rem,3.5vw,2.7rem);letter-spacing:-.035em;margin:.18em 0}.ggs20-results-head p{color:var(--ggs-muted,#64736b);margin:0}.ggs20-filter-toggle{display:none}
.ggs20-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:22px;align-items:start}.ggs20-filter-panel{position:sticky;top:92px}.ggs20-filters{display:grid;gap:14px;background:#fff;border:1px solid var(--ggs-line,#dfe7e2);border-radius:18px;padding:16px;box-shadow:0 9px 26px rgba(14,42,27,.05)}.ggs20-filters label{display:block;font-size:.75rem;font-weight:800;color:#53635a;margin-bottom:5px}.ggs20-filters input,.ggs20-filters select{width:100%}.ggs20-filters .btn{width:100%}
.ggs20-list{display:grid;gap:16px}.ggs20-hotel-card{display:grid;grid-template-columns:245px minmax(0,1fr) 205px;min-height:245px;overflow:hidden;background:#fff;border:1px solid var(--ggs-line,#dfe7e2);border-radius:20px;box-shadow:0 10px 30px rgba(14,42,27,.06);transition:transform .18s ease,box-shadow .18s ease}.ggs20-hotel-card:hover{transform:translateY(-2px);box-shadow:0 18px 48px rgba(14,42,27,.11)}
.ggs20-hotel-photo{display:block;background:#eef3ef;overflow:hidden}.ggs20-hotel-photo img{width:100%;height:100%;min-height:245px;object-fit:cover;transition:transform .3s ease}.ggs20-hotel-card:hover .ggs20-hotel-photo img{transform:scale(1.025)}.ggs20-photo-placeholder{height:100%;min-height:190px;display:grid;place-items:center;background:linear-gradient(135deg,#e4eee7,#f8faf8);color:#0b5d37;font-weight:900;letter-spacing:.04em}
.ggs20-hotel-main{padding:22px;min-width:0}.ggs20-kicker,.ggs20-breadcrumb,.ggs20-property .eyebrow{color:#147447;font-size:.76rem;text-transform:uppercase;letter-spacing:.06em;font-weight:850}.ggs20-hotel-main h2{font-size:clamp(1.35rem,2.3vw,1.8rem);letter-spacing:-.03em;margin:.35em 0}.ggs20-hotel-main h2 a{color:inherit;text-decoration:none}.ggs20-hotel-main p{color:#526159;line-height:1.55}.ggs20-rating{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.83rem}.ggs20-stars{color:#9a6700;letter-spacing:.05em;font-weight:850}.ggs20-score{display:inline-flex;align-items:center;padding:5px 8px;border-radius:9px;background:#eaf5ee;color:#075b35;font-weight:850}
.ggs20-tags,.ggs20-chip-grid,.ggs20-room-facts{display:flex;flex-wrap:wrap;gap:7px}.ggs20-tags span,.ggs20-chip-grid span,.ggs20-room-facts span{display:inline-flex;align-items:center;border-radius:999px;padding:6px 9px;background:#f1f6f2;color:#3d5146;font-size:.78rem;font-weight:700}
.ggs20-price{border-left:1px solid var(--ggs-line,#dfe7e2);padding:22px 18px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;text-align:right}.ggs20-price small,.ggs20-room-price small{color:#67766e}.ggs20-price strong,.ggs20-room-price strong{font-size:1.45rem;margin:8px 0 2px}.ggs20-price>span,.ggs20-room-price>span{color:#7a8880;font-size:.78rem}.ggs20-price .btn{margin-top:16px;width:100%}
.ggs20-empty{margin-block:34px 70px;padding:clamp(34px,7vw,76px);text-align:center;background:#fff;border:1px dashed #cddbd2;border-radius:22px}.ggs20-empty.compact{margin:0;padding:46px 24px}.ggs20-empty h1,.ggs20-empty h2{letter-spacing:-.035em}.ggs20-empty p{max-width:620px;margin-inline:auto;color:#64736b}.ggs20-empty-icon{font-size:2rem;color:#147447}

.ggs20-property{padding-block:24px 68px}.ggs20-breadcrumb{margin:4px 0 14px;text-transform:none;letter-spacing:0}.ggs20-breadcrumb a{text-decoration:none;color:#147447}.ggs20-gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:210px 210px;gap:8px;border-radius:22px;overflow:hidden;background:#e8efe9}.ggs20-gallery-item{border:0;padding:0;border-radius:0;overflow:hidden;cursor:zoom-in;min-height:0;background:#eef3ef}.ggs20-gallery-item.hero{grid-row:1/3}.ggs20-gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .25s ease}.ggs20-gallery-item:hover img{transform:scale(1.02)}.ggs20-gallery-empty{grid-column:1/-1;grid-row:1/3;display:grid;place-items:center;font-size:2rem;font-weight:900;color:#0b5d37;background:linear-gradient(135deg,#e3eee6,#f7faf8)}
.ggs20-property-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:34px;align-items:start;margin-top:30px}.ggs20-property h1{font-size:clamp(2rem,4vw,3.5rem);line-height:1;letter-spacing:-.05em;margin:.25em 0}.ggs20-property-meta{display:flex;flex-wrap:wrap;gap:9px;align-items:center;color:#53635a;font-size:.86rem}.ggs20-property-meta>span:first-child{font-weight:800;color:#122019}.ggs20-lead{font-size:1.04rem;line-height:1.75;color:#46584e;max-width:820px}.ggs20-info-section{padding-block:20px;border-top:1px solid var(--ggs-line,#dfe7e2);margin-top:22px}.ggs20-info-section h2{letter-spacing:-.03em}.ggs20-info-section h3{margin-top:20px}
.ggs20-practical-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ggs20-practical-grid>div{border:1px solid var(--ggs-line,#dfe7e2);border-radius:15px;background:#fff;padding:14px}.ggs20-practical-grid small{display:block;color:#6b7971;margin-bottom:5px}
.ggs20-stay-card{position:sticky;top:92px;background:#fff;border:1px solid var(--ggs-line,#dfe7e2);border-radius:20px;padding:20px;box-shadow:0 18px 46px rgba(14,42,27,.1)}.ggs20-stay-card h2{margin-top:0}.ggs20-stay-card>p{color:#64736b;font-size:.9rem;line-height:1.5}
.ggs20-map-card{margin-top:24px;display:grid;grid-template-columns:auto 1fr auto;gap:13px;align-items:center;text-decoration:none;color:inherit;background:#edf6f0;border:1px solid #d6e8dc;border-radius:18px;padding:16px}.ggs20-map-card small{display:block;color:#607168;margin-top:3px}.ggs20-map-pin{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#0b5d37;color:#fff;font-size:1.3rem}
.ggs20-rooms{margin-top:42px}.ggs20-room-card{display:grid;grid-template-columns:210px minmax(0,1fr) 235px;overflow:hidden;background:#fff;border:1px solid var(--ggs-line,#dfe7e2);border-radius:18px;margin-top:14px}.ggs20-room-photo img{width:100%;height:100%;min-height:210px;object-fit:cover}.ggs20-room-info{padding:20px}.ggs20-room-info h3{font-size:1.25rem;margin:0 0 8px}.ggs20-room-info p{color:#607168;line-height:1.55}.ggs20-room-price{padding:20px;border-left:1px solid var(--ggs-line,#dfe7e2);display:flex;flex-direction:column;align-items:flex-end;justify-content:center;text-align:right}.ggs20-room-price .btn{margin-top:14px;width:100%}.ggs20-unavailable{margin-top:12px;color:#a33;font-weight:800;font-size:.86rem}
.ggs20-lightbox{position:fixed;z-index:9999;inset:0;background:rgba(3,18,10,.94);display:grid;place-items:center;padding:28px}.ggs20-lightbox[hidden]{display:none}.ggs20-lightbox img{max-width:min(1200px,96vw);max-height:90vh;object-fit:contain}.ggs20-lightbox button{position:absolute;right:20px;top:20px;width:48px;height:48px;border:0;border-radius:50%;background:#fff;color:#122019;font-size:2rem;cursor:pointer}
body.ggs20-loading .ggs20-list{opacity:.58;pointer-events:none}body.ggs20-loading .ggs20-search-submit span{visibility:hidden}body.ggs20-loading .ggs20-search-submit:after{content:"…";position:absolute}

@media(max-width:1050px){.ggs20-search{grid-template-columns:2fr 1fr 1fr repeat(3,.72fr);}.ggs20-search-submit{grid-column:1/-1}.ggs20-layout{grid-template-columns:220px minmax(0,1fr)}.ggs20-hotel-card{grid-template-columns:210px minmax(0,1fr)}.ggs20-price{grid-column:2;border-left:0;border-top:1px solid var(--ggs-line,#dfe7e2);display:grid;grid-template-columns:1fr auto;align-items:center;text-align:left;gap:6px 18px}.ggs20-price .btn{grid-column:2;grid-row:1/4;margin:0;min-width:160px}.ggs20-property-grid{grid-template-columns:minmax(0,1fr) 330px}}
@media(max-width:820px){.ggs20-search{grid-template-columns:1fr 1fr}.ggs20-destination{grid-column:1/-1}.ggs20-search-submit{grid-column:1/-1}.ggs20-filter-toggle{display:inline-flex}.ggs20-layout{display:block}.ggs20-filter-panel{position:fixed;z-index:300;left:0;right:0;bottom:0;top:auto;padding:16px;background:rgba(6,34,20,.25);backdrop-filter:blur(3px);transform:translateY(110%);transition:transform .22s ease}.ggs20-filter-panel.open{transform:translateY(0)}.ggs20-filters{border-radius:22px 22px 14px 14px;max-height:78vh;overflow:auto}.ggs20-hotel-card{grid-template-columns:190px minmax(0,1fr)}.ggs20-property-grid{grid-template-columns:1fr}.ggs20-stay-card{position:static;order:-1}.ggs20-gallery{grid-template-rows:170px 170px}.ggs20-room-card{grid-template-columns:180px minmax(0,1fr)}.ggs20-room-price{grid-column:2;border-left:0;border-top:1px solid var(--ggs-line,#dfe7e2);align-items:flex-start;text-align:left}.ggs20-room-price .btn{width:auto}.ggs20-results-head{align-items:center}}
@media(max-width:620px){.market-hero .hero-inner{padding-block:42px 54px}.ggs20-search-shell{padding-top:14px}.ggs20-search{grid-template-columns:1fr 1fr;padding:10px;border-radius:18px}.ggs20-search.compact{grid-template-columns:1fr 1fr}.ggs20-destination{grid-column:1/-1}.ggs20-search .ggs20-field:nth-of-type(4),.ggs20-search .ggs20-field:nth-of-type(5),.ggs20-search .ggs20-field:nth-of-type(6){grid-column:auto}.ggs20-results{padding-top:18px}.ggs20-results-head{align-items:flex-start;flex-direction:column}.ggs20-hotel-card{display:block}.ggs20-hotel-photo{height:220px}.ggs20-hotel-photo img{min-height:0;height:220px}.ggs20-price{display:flex;align-items:stretch;text-align:left;border-top:1px solid var(--ggs-line,#dfe7e2);padding:17px 20px}.ggs20-price .btn{width:100%;margin-top:13px}.ggs20-gallery{grid-template-columns:1fr 1fr;grid-template-rows:240px 110px}.ggs20-gallery-item.hero{grid-column:1/-1;grid-row:1}.ggs20-gallery-item:nth-child(n+4){display:none}.ggs20-property{padding-top:12px}.ggs20-property-grid{margin-top:22px;gap:20px}.ggs20-practical-grid{grid-template-columns:1fr}.ggs20-room-card{display:block}.ggs20-room-photo{height:205px}.ggs20-room-photo img{min-height:0;height:205px}.ggs20-room-price{border-left:0;align-items:stretch;text-align:left}.ggs20-room-price .btn{width:100%}.ggs20-lightbox{padding:14px}}
@media(max-width:390px){.ggs20-search{grid-template-columns:1fr}.ggs20-search.compact{grid-template-columns:1fr}.ggs20-destination,.ggs20-search .ggs20-field,.ggs20-search-submit{grid-column:1}.ggs20-gallery{grid-template-rows:220px 96px}.ggs20-hotel-main{padding:18px}.ggs20-price{padding:16px 18px}}
@media(prefers-reduced-motion:reduce){.ggs20-filter-panel,.ggs20-gallery-item img,.ggs20-hotel-card,.ggs20-hotel-photo img{transition:none!important}}

/* ==========================================================
   GANGANSTAY_EXPERIENCE_2_PHASE20_V3_PUBLIC_PREMIUM
   Refonte publique intégrale — présentation uniquement.
   ========================================================== */

:root{
  --x2-green-950:#06351f;
  --x2-green-900:#07462a;
  --x2-green-800:#0a5b36;
  --x2-green-700:#137246;
  --x2-orange:#f36b2c;
  --x2-orange-hover:#d9551e;
  --x2-bg:#f6f8f6;
  --x2-card:#fff;
  --x2-ink:#12221a;
  --x2-muted:#65746c;
  --x2-line:#dde6e0;
  --x2-soft:#eef6f1;
  --x2-radius:18px;
  --x2-radius-lg:26px;
  --x2-shadow:0 14px 40px rgba(15,48,30,.08);
  --x2-shadow-lg:0 24px 70px rgba(15,48,30,.14);
  --x2-max:1220px;
}

body.context-public{background:var(--x2-bg);color:var(--x2-ink)}
body.context-public main{min-height:58vh}
body.context-public .site-container{width:min(var(--x2-max),calc(100% - 36px));margin-inline:auto}
body.context-public .section{padding-block:34px}
body.context-public .section+.section{padding-top:12px}

body.context-public .public-nav{
  position:sticky;top:0;z-index:90;
  min-height:70px;background:rgba(255,255,255,.95);
  backdrop-filter:blur(14px) saturate(150%);
  border-bottom:1px solid var(--x2-line);
  box-shadow:0 4px 18px rgba(14,42,27,.035)
}
body.context-public .public-nav .nav-inner,
body.context-public .public-nav>.site-container{width:min(var(--x2-max),calc(100% - 36px));margin:auto}
body.context-public .public-nav a{font-weight:700}
body.context-public .public-nav .brand img{max-height:46px;width:auto}

body.context-public .market-hero{
  background:
    radial-gradient(circle at 88% 12%,rgba(255,255,255,.12),transparent 24%),
    linear-gradient(135deg,var(--x2-green-950),var(--x2-green-700));
  color:#fff;padding:54px 0 58px
}
body.context-public .hero-inner{display:grid;gap:28px}
body.context-public .hero-copy{max-width:780px}
body.context-public .hero-copy h1{font-size:clamp(2.35rem,5vw,4.65rem);line-height:.98;letter-spacing:-.05em;margin:.4rem 0 1rem}
body.context-public .hero-copy p{font-size:clamp(1rem,1.6vw,1.18rem);max-width:700px;opacity:.9}
body.context-public .trust-chip{display:inline-flex;padding:8px 12px;border-radius:999px;background:rgba(255,255,255,.94);color:var(--x2-green-900);font-weight:800;font-size:.8rem}

body.context-public .ota-search,
body.context-public .search-panel,
body.context-public form[data-search-form]{
  background:#fff;border:1px solid rgba(255,255,255,.5);border-radius:20px;
  padding:10px;box-shadow:var(--x2-shadow-lg)
}
body.context-public .ota-search label,
body.context-public .search-panel label{font-size:.76rem;font-weight:800;color:#526159}
body.context-public input,
body.context-public select,
body.context-public textarea{
  border:1px solid var(--x2-line);border-radius:13px;background:#fff;min-height:46px
}
body.context-public input:focus,
body.context-public select:focus,
body.context-public textarea:focus{outline:3px solid rgba(19,114,70,.14);border-color:var(--x2-green-700)}
body.context-public .btn.primary,
body.context-public .search-cta{background:var(--x2-orange);border-color:var(--x2-orange);font-weight:800;min-height:46px;border-radius:13px}
body.context-public .btn.primary:hover,
body.context-public .search-cta:hover{background:var(--x2-orange-hover);transform:translateY(-1px)}

body.context-public .pagehead,
body.context-public .section-head,
body.context-public .results-toolbar{align-items:end;gap:20px}
body.context-public .pagehead h1,
body.context-public .results-toolbar h1{letter-spacing:-.03em}
body.context-public .muted{color:var(--x2-muted)}

body.context-public .hotel-result-list{display:grid;gap:18px}
body.context-public .hotel-result-card{
  display:grid;grid-template-columns:minmax(250px,31%) 1fr minmax(190px,22%);
  background:var(--x2-card);border:1px solid var(--x2-line);border-radius:var(--x2-radius-lg);
  overflow:hidden;box-shadow:var(--x2-shadow);min-height:245px
}
body.context-public .hotel-result-card:hover{box-shadow:var(--x2-shadow-lg);transform:translateY(-2px)}
body.context-public .hotel-image-wrap{display:block;min-height:245px;background:#e7eee9;overflow:hidden}
body.context-public .hotel-image-wrap img{width:100%;height:100%;min-height:245px;max-height:310px;object-fit:cover;display:block}
body.context-public .hotel-result-main{padding:24px 26px;display:flex;flex-direction:column;justify-content:center}
body.context-public .hotel-result-main h2{font-size:clamp(1.35rem,2vw,1.85rem);margin:.3rem 0 .55rem}
body.context-public .hotel-result-main h2 a{color:var(--x2-ink);text-decoration:none}
body.context-public .hotel-result-main .rating-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:.1rem 0 .7rem}
body.context-public .hotel-result-main .hotel-tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto}
body.context-public .hotel-result-card .hotel-result-price,
body.context-public .hotel-result-card .hotel-price,
body.context-public .hotel-result-card .price-column{
  padding:24px;border-left:1px solid var(--x2-line);display:flex;flex-direction:column;
  justify-content:center;align-items:flex-end;text-align:right;gap:8px
}
body.context-public .hotel-result-card strong.price,
body.context-public .hotel-result-card .hotel-result-price strong,
body.context-public .hotel-result-card .price-column strong{font-size:1.55rem;letter-spacing:-.025em}
body.context-public .badge{border-radius:999px}
body.context-public .empty-state{background:#fff;border:1px dashed #cfdcd4;border-radius:22px;padding:50px 24px;text-align:center}

body.context-public .hotel-detail-hero{
  width:min(var(--x2-max),calc(100% - 36px));margin:26px auto 18px;
  height:clamp(300px,46vw,570px);border-radius:var(--x2-radius-lg);
  overflow:hidden;background:#e9efeb;box-shadow:var(--x2-shadow);cursor:zoom-in
}
body.context-public .hotel-detail-hero img{width:100%;height:100%;object-fit:cover;display:block}
body.context-public .hotel-detail-grid{
  width:min(var(--x2-max),calc(100% - 36px));margin:0 auto 34px;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);gap:26px;align-items:start
}
body.context-public .hotel-detail-grid>div,
body.context-public .hotel-detail-grid>aside{min-width:0}
body.context-public .hotel-detail-grid .card,
body.context-public .hotel-detail-grid .panel{border-radius:var(--x2-radius);box-shadow:var(--x2-shadow);border-color:var(--x2-line)}
body.context-public .hotel-detail-grid h1{font-size:clamp(2rem,4vw,3.25rem);letter-spacing:-.045em;line-height:1.02}
body.context-public .hotel-detail-grid .stars{font-size:1rem}
body.context-public .hotel-detail-grid .hotel-tags,
body.context-public .hotel-detail-grid .amenity-list{display:flex;flex-wrap:wrap;gap:8px}

body.context-public #rooms{width:min(var(--x2-max),calc(100% - 36px));margin:0 auto 50px}
body.context-public #rooms>h2{font-size:clamp(1.7rem,3vw,2.3rem);letter-spacing:-.03em}
body.context-public .room-public-card,
body.context-public .room-card{
  display:grid;grid-template-columns:minmax(210px,30%) 1fr minmax(180px,23%);
  gap:0;background:#fff;border:1px solid var(--x2-line);border-radius:22px;overflow:hidden;
  box-shadow:var(--x2-shadow);margin:16px 0
}
body.context-public .room-public-card>img,
body.context-public .room-card>img,
body.context-public .room-public-card .room-image img,
body.context-public .room-card .room-image img{
  width:100%;height:100%;min-height:230px;max-height:300px;object-fit:cover;display:block;background:#edf2ef
}
body.context-public .room-public-card>div,
body.context-public .room-card>div{padding:22px}
body.context-public .room-public-card .btn,
body.context-public .room-card .btn{align-self:center}

body.context-public .destination-grid{gap:12px}
body.context-public .destination-card{background:#fff;border:1px solid var(--x2-line);border-radius:16px;box-shadow:0 7px 24px rgba(15,48,30,.04)}
body.context-public .trust-strip{border:1px solid var(--x2-line);border-radius:20px;background:#fff;overflow:hidden}

body.context-public .site-footer{background:var(--x2-green-950);color:#fff;margin-top:30px}
body.context-public .site-footer a{color:#fff}

/* La source de données peut contenir des placeholders internes.
   Ils sont neutralisés côté JS, mais ces classes assurent aussi un rendu discret. */
body.context-public .ggs-public-placeholder{display:none!important}

/* Lightbox */
.ggs-x2-lightbox{position:fixed;inset:0;z-index:9999;background:rgba(3,18,10,.94);display:grid;place-items:center;padding:24px}
.ggs-x2-lightbox[hidden]{display:none}
.ggs-x2-lightbox img{max-width:min(94vw,1500px);max-height:88vh;object-fit:contain;border-radius:14px}
.ggs-x2-lightbox button{position:absolute;top:20px;right:20px;width:48px;height:48px;border-radius:999px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:#fff;font-size:1.6rem}
.ggs-x2-room-jump{display:none}

@media(max-width:980px){
  body.context-public .hotel-result-card{grid-template-columns:260px 1fr}
  body.context-public .hotel-result-card .hotel-result-price,
  body.context-public .hotel-result-card .hotel-price,
  body.context-public .hotel-result-card .price-column{
    grid-column:2;border-left:0;border-top:1px solid var(--x2-line);align-items:flex-start;text-align:left
  }
  body.context-public .hotel-detail-grid{grid-template-columns:1fr}
  body.context-public .room-public-card,
  body.context-public .room-card{grid-template-columns:220px 1fr}
}

@media(max-width:700px){
  body.context-public .site-container,
  body.context-public .hotel-detail-grid,
  body.context-public #rooms,
  body.context-public .hotel-detail-hero{width:calc(100% - 22px)}
  body.context-public .section{padding-block:24px}
  body.context-public .market-hero{padding:38px 0 42px}
  body.context-public .hero-copy h1{font-size:clamp(2.2rem,11vw,3.15rem)}
  body.context-public .ota-search,
  body.context-public form[data-search-form]{grid-template-columns:1fr!important;border-radius:18px}
  body.context-public .hotel-result-card{grid-template-columns:1fr;border-radius:20px}
  body.context-public .hotel-image-wrap{min-height:0;aspect-ratio:16/10}
  body.context-public .hotel-image-wrap img{min-height:0;max-height:none;aspect-ratio:16/10}
  body.context-public .hotel-result-main{padding:19px}
  body.context-public .hotel-result-card .hotel-result-price,
  body.context-public .hotel-result-card .hotel-price,
  body.context-public .hotel-result-card .price-column{
    grid-column:auto;border-left:0;border-top:1px solid var(--x2-line);padding:18px 19px;align-items:stretch
  }
  body.context-public .hotel-detail-hero{height:270px;margin-top:16px;border-radius:20px}
  body.context-public .hotel-detail-grid{gap:16px;margin-bottom:24px}
  body.context-public .room-public-card,
  body.context-public .room-card{grid-template-columns:1fr;border-radius:18px}
  body.context-public .room-public-card>img,
  body.context-public .room-card>img,
  body.context-public .room-public-card .room-image img,
  body.context-public .room-card .room-image img{height:220px;min-height:220px;max-height:220px}
  body.context-public .ggs-x2-room-jump{
    display:flex;position:fixed;z-index:85;left:12px;right:12px;bottom:12px;
    min-height:52px;align-items:center;justify-content:center;border-radius:999px;
    background:var(--x2-orange);color:#fff;text-decoration:none;font-weight:850;
    box-shadow:0 14px 38px rgba(0,0,0,.22)
  }
  body.context-public .site-footer{padding-bottom:76px}
}

@media(prefers-reduced-motion:reduce){
  body.context-public *{scroll-behavior:auto!important;transition:none!important;animation:none!important}
}

/* ==========================================================
   GANGANSTAY_PHASE20_FINAL_CONSOLIDATED_CSS
   Classes réelles du routeur public canonique.
   ========================================================== */
body.context-public .hotel-public-page{padding-top:24px}
body.context-public .hotel-gallery-hero{
  height:clamp(300px,42vw,560px);
  overflow:hidden;
  border-radius:26px;
  background:#e7eee9;
  box-shadow:0 18px 52px rgba(15,48,30,.12);
  cursor:zoom-in;
  margin-bottom:24px
}
body.context-public .hotel-gallery-hero img{
  width:100%;height:100%;display:block;object-fit:cover;object-position:center;
}
body.context-public .hotel-detail-grid{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,360px);
  gap:28px;align-items:start
}
body.context-public .hotel-detail-main{min-width:0}
body.context-public .hotel-detail-main h1{
  font-size:clamp(2rem,4vw,3.45rem);line-height:1;letter-spacing:-.045em;margin:.25rem 0 .8rem
}
body.context-public .hotel-description{font-size:1.05rem;line-height:1.75;max-width:78ch}
body.context-public .stay-card{
  position:sticky;top:92px;border:1px solid #dde6e0;border-radius:20px;
  box-shadow:0 14px 40px rgba(15,48,30,.08);padding:22px;background:#fff
}
body.context-public .stay-card form{display:grid;gap:10px}
body.context-public .stay-card .grid{gap:8px}
body.context-public .hotel-practical{margin-top:26px}
body.context-public .info-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px
}
body.context-public .info-grid>div{
  background:#f4f8f5;border:1px solid #e0e8e3;border-radius:14px;padding:14px
}
body.context-public .info-grid small{display:block;color:#65746c;margin-bottom:4px}
body.context-public .hotel-rooms-section{margin-top:34px}
body.context-public .room-list{display:grid;gap:16px}
body.context-public .room-offer{
  display:grid;grid-template-columns:minmax(220px,30%) minmax(0,1fr) minmax(190px,23%);
  overflow:hidden;background:#fff;border:1px solid #dde6e0;border-radius:22px;
  box-shadow:0 12px 34px rgba(15,48,30,.07);min-height:230px
}
body.context-public .room-offer-media{overflow:hidden;background:#e7eee9}
body.context-public .room-offer-media img{
  width:100%;height:100%;min-height:230px;display:block;object-fit:cover;object-position:center;cursor:zoom-in
}
body.context-public .room-info{padding:22px;display:flex;flex-direction:column;justify-content:center;min-width:0}
body.context-public .room-info h3{font-size:1.35rem;margin:0 0 .55rem}
body.context-public .room-price{
  padding:22px;border-left:1px solid #dde6e0;display:flex;flex-direction:column;
  justify-content:center;align-items:flex-end;text-align:right;gap:8px
}
body.context-public .room-price strong{font-size:1.5rem;letter-spacing:-.025em}
body.context-public .room-price .btn{margin-top:6px}
body.context-public .map-section{margin-top:34px}
body.context-public .map-section iframe{
  width:100%;height:min(420px,60vh);border:0;border-radius:20px;background:#edf2ef
}
body.context-public .ggs-p20-room-jump{display:none}

.ggs-p20-lightbox{
  position:fixed;inset:0;z-index:10000;background:rgba(3,18,10,.95);
  display:grid;place-items:center;padding:24px
}
.ggs-p20-lightbox[hidden]{display:none}
.ggs-p20-lightbox img{max-width:94vw;max-height:88vh;object-fit:contain;border-radius:14px}
.ggs-p20-lightbox button{
  position:absolute;top:18px;right:18px;width:48px;height:48px;border-radius:999px;
  border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:#fff;font-size:1.6rem
}

@media(max-width:920px){
  body.context-public .hotel-detail-grid{grid-template-columns:1fr}
  body.context-public .stay-card{position:static}
  body.context-public .room-offer{grid-template-columns:220px 1fr}
  body.context-public .room-price{
    grid-column:2;border-left:0;border-top:1px solid #dde6e0;align-items:flex-start;text-align:left
  }
}
@media(max-width:700px){
  body.context-public .hotel-public-page{padding-top:12px}
  body.context-public .hotel-gallery-hero{height:260px;border-radius:18px;margin-bottom:18px}
  body.context-public .hotel-detail-grid{gap:16px}
  body.context-public .info-grid{grid-template-columns:1fr}
  body.context-public .room-offer{grid-template-columns:1fr;border-radius:18px}
  body.context-public .room-offer-media{height:220px}
  body.context-public .room-offer-media img{height:220px;min-height:220px}
  body.context-public .room-info{padding:18px}
  body.context-public .room-price{
    grid-column:auto;border-left:0;border-top:1px solid #dde6e0;padding:18px;align-items:stretch;text-align:left
  }
  body.context-public .ggs-p20-room-jump{
    display:flex;position:fixed;z-index:86;left:12px;right:12px;bottom:12px;
    min-height:52px;align-items:center;justify-content:center;border-radius:999px;
    background:#f36b2c;color:#fff;text-decoration:none;font-weight:850;
    box-shadow:0 14px 38px rgba(0,0,0,.22)
  }
}


/* GANGANSTAY_EXPERIENCE_2_PHASE22_TRAVELER_ACCOUNT_CSS */
body.context-account:has(.traveler-app-v22){background:#f5f8f6;color:#13251b}
.traveler-app-v22{min-height:100vh;background:#f5f8f6}
.traveler-sidebar{background:#083b25;border-right:0;color:#fff;width:260px;padding:22px 16px}
.traveler-sidebar .workspace-logo{display:block;padding:4px 10px 20px}
.traveler-sidebar .workspace-logo img{max-height:52px;width:auto;filter:brightness(0) invert(1)}
.traveler-side-identity{display:flex;gap:11px;align-items:center;padding:13px;border-radius:16px;background:rgba(255,255,255,.08);margin-bottom:16px}
.traveler-side-identity .avatar,.traveler-top-identity .avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:999px;background:#fff;color:#0a5b36;font-weight:900}
.traveler-side-identity div,.traveler-top-identity div{display:grid;min-width:0}
.traveler-side-identity small{color:rgba(255,255,255,.7);overflow:hidden;text-overflow:ellipsis}
.traveler-side-nav{display:grid;gap:4px}
.traveler-side-nav .workspace-link{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:11px 12px;border-radius:13px;color:rgba(255,255,255,.82);text-decoration:none;font-weight:750}
.traveler-side-nav .workspace-link:hover,.traveler-side-nav .workspace-link.active{background:#fff;color:#083b25}
.traveler-nav-icon{font-size:1rem;text-align:center}
.traveler-nav-badge{display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#f36b2c;color:#fff;font-size:.72rem}
.traveler-side-bottom{margin-top:auto;padding:18px 10px 4px;display:grid;gap:10px}
.traveler-side-bottom a,.traveler-side-bottom button{background:none;border:0;color:rgba(255,255,255,.78);padding:0;text-align:left;text-decoration:none;font:inherit;cursor:pointer}
.traveler-content{padding-bottom:30px}
.traveler-topbar{min-height:72px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid #e1e8e3;position:sticky;top:0;z-index:45}
.traveler-mobile-logo{display:none}
.traveler-top-identity{display:flex;gap:9px;align-items:center}
.traveler-top-identity small{color:#708078}
.traveler-app-v22 .workspace-page{max-width:1180px;margin:0 auto;padding:30px 28px 50px}
.traveler-app-v22 .pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}
.traveler-app-v22 .pagehead h1{font-size:clamp(2rem,3.5vw,3.1rem);line-height:1;letter-spacing:-.04em;margin:.3rem 0 .6rem}
.traveler-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:12px;margin-bottom:20px}
.traveler-metrics a{display:grid;gap:3px;background:#fff;border:1px solid #dfe7e2;border-radius:18px;padding:18px;text-decoration:none;color:#173023;box-shadow:0 8px 26px rgba(15,48,30,.045)}
.traveler-metrics strong{font-size:1.65rem;letter-spacing:-.03em}.traveler-metrics span{color:#718077;font-size:.85rem}
.traveler-next{display:grid;grid-template-columns:1fr minmax(260px,38%);overflow:hidden;border-radius:24px;background:linear-gradient(135deg,#083b25,#0a6a3e);color:#fff;box-shadow:0 18px 48px rgba(8,59,37,.18);margin-bottom:28px}
.traveler-next>div{padding:30px;align-self:center}.traveler-next h2{font-size:clamp(1.65rem,3vw,2.45rem);letter-spacing:-.03em;margin:.35rem 0 .7rem}.traveler-next p{color:rgba(255,255,255,.83)}.traveler-next img{width:100%;height:100%;min-height:250px;object-fit:cover}.traveler-next-empty{grid-template-columns:1fr}
.traveler-section{margin-top:28px}.traveler-section .section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:14px}.traveler-section .section-head h2{margin:0 0 4px}.traveler-section .section-head>a{font-weight:800;color:#0a5b36;text-decoration:none}
.traveler-booking-list{display:grid;gap:14px}
.traveler-booking-card{display:grid;grid-template-columns:220px minmax(0,1fr) minmax(210px,25%);background:#fff;border:1px solid #dfe7e2;border-radius:22px;overflow:hidden;box-shadow:0 10px 32px rgba(15,48,30,.055)}
.traveler-booking-photo{display:block;background:#e7eee9;overflow:hidden}.traveler-booking-photo img{width:100%;height:100%;min-height:225px;object-fit:cover;display:block}
.traveler-booking-main{padding:20px 22px;min-width:0}.traveler-booking-main h2{font-size:1.35rem;margin:.45rem 0 .25rem}.traveler-card-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.traveler-card-top small{color:#728078}
.traveler-trip-facts{display:grid;grid-template-columns:auto 22px auto;align-items:center;justify-content:start;gap:7px;margin:14px 0}.traveler-trip-facts span{display:grid}.traveler-trip-facts small{color:#76857d}.traveler-trip-facts>span:nth-child(2){display:block;color:#9aaba1}
.traveler-pref-chips{display:flex;flex-wrap:wrap;gap:6px}.traveler-pref-chips span,.traveler-doc-mask{display:inline-flex;background:#f0f6f2;border:1px solid #dce8e0;border-radius:999px;padding:5px 8px;color:#466052;font-size:.78rem}.traveler-doc-mask{margin-top:7px}
.traveler-booking-side{border-left:1px solid #e4ebe6;padding:20px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;text-align:right;gap:8px}.traveler-total{font-size:1.45rem;letter-spacing:-.025em}.traveler-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px;margin-top:7px}.traveler-actions form{margin:0}
.traveler-tabs{display:flex;gap:6px;overflow:auto;padding-bottom:3px;margin:0 0 18px}.traveler-tabs a{white-space:nowrap;text-decoration:none;color:#52665b;background:#fff;border:1px solid #dce5df;padding:9px 13px;border-radius:999px;font-weight:800}.traveler-tabs a.active{background:#083b25;color:#fff;border-color:#083b25}
.traveler-trust-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.traveler-trust-row>div{background:#fff;border:1px solid #dfe7e2;border-radius:16px;padding:15px;display:grid;gap:4px}.traveler-trust-row span{font-size:.82rem;color:#6b7b72}
.traveler-favorite-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.traveler-favorite-card{background:#fff;border:1px solid #dfe7e2;border-radius:20px;overflow:hidden;box-shadow:0 9px 28px rgba(15,48,30,.05)}.traveler-favorite-photo{display:block;aspect-ratio:4/3;overflow:hidden;background:#e8efea}.traveler-favorite-photo img{width:100%;height:100%;object-fit:cover}.traveler-favorite-body{padding:18px}.traveler-favorite-body h2{font-size:1.25rem;margin:.4rem 0 .55rem}
.traveler-profile-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,34%);gap:20px;align-items:start}.traveler-profile-form{display:grid;gap:18px}.traveler-profile-form h2{font-size:1.15rem;margin:6px 0 -4px;padding-top:14px;border-top:1px solid #e7ece9}.traveler-profile-form h2:first-of-type{border-top:0;padding-top:0}.traveler-profile-form input,.traveler-profile-form select{min-height:48px}.traveler-profile-grid aside{display:grid;gap:14px}.traveler-privacy-card{background:#f0f7f2!important;border-color:#d6e7dc!important}.traveler-completeness{display:grid;text-align:right}.traveler-completeness strong{font-size:1.65rem;color:#0a5b36}.traveler-completeness span{color:#6f7f76;font-size:.8rem}
.traveler-review-form{max-width:760px;display:grid;gap:18px}.traveler-review-form fieldset{border:0;padding:0;margin:0}.traveler-review-form legend{font-weight:850;margin-bottom:8px}.traveler-rating{display:flex;flex-wrap:wrap;gap:8px}.traveler-rating input{position:absolute;opacity:0}.traveler-rating span{display:block;padding:10px 14px;border:1px solid #dce5df;border-radius:999px;cursor:pointer}.traveler-rating input:checked+span{background:#083b25;color:#fff;border-color:#083b25}.traveler-review-form textarea{min-height:150px}
.traveler-mobile-bottom{display:none}
@media(max-width:1050px){.traveler-booking-card{grid-template-columns:190px 1fr}.traveler-booking-side{grid-column:2;border-left:0;border-top:1px solid #e4ebe6;align-items:flex-start;text-align:left}.traveler-actions{justify-content:flex-start}.traveler-favorite-grid{grid-template-columns:1fr 1fr}}
@media(max-width:820px){.traveler-sidebar{display:none}.traveler-top-identity{display:none}.traveler-mobile-logo{display:block}.traveler-mobile-logo img{height:42px;width:auto}.traveler-content{width:100%;padding-bottom:82px}.traveler-app-v22 .workspace-page{padding:22px 16px 38px}.traveler-metrics{grid-template-columns:1fr 1fr}.traveler-next{grid-template-columns:1fr}.traveler-next img{max-height:240px}.traveler-profile-grid{grid-template-columns:1fr}.traveler-mobile-bottom{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;z-index:90;left:8px;right:8px;bottom:8px;padding:7px;background:rgba(255,255,255,.96);border:1px solid #dce5df;border-radius:20px;box-shadow:0 18px 48px rgba(0,0,0,.16);backdrop-filter:blur(14px)}.traveler-mobile-bottom a{display:grid;place-items:center;gap:2px;color:#68786f;text-decoration:none;padding:6px 3px;border-radius:13px}.traveler-mobile-bottom a.active{background:#edf6f0;color:#083b25}.traveler-mobile-bottom span{font-size:1.05rem}.traveler-mobile-bottom small{font-size:.67rem;white-space:nowrap}}
@media(max-width:620px){.traveler-app-v22 .pagehead{align-items:flex-start;flex-direction:column}.traveler-app-v22 .pagehead>.btn{width:100%}.traveler-booking-card{grid-template-columns:1fr}.traveler-booking-photo{aspect-ratio:16/9}.traveler-booking-photo img{min-height:0}.traveler-booking-side{grid-column:auto;border-top:1px solid #e4ebe6}.traveler-favorite-grid{grid-template-columns:1fr}.traveler-trust-row{grid-template-columns:1fr}.traveler-metrics a{padding:14px}.traveler-next>div{padding:22px}.traveler-profile-form .grid-2{grid-template-columns:1fr!important}.traveler-completeness{text-align:left}}


/* GANGANSTAY_EXPERIENCE_2_PHASE23_HOTEL_EXTRANET_CSS */
body.context-hotel{background:#f4f7f5;color:#14251d}
.hotel-v23-app{min-height:100vh;background:#f4f7f5}
.hotel-v23-side{width:260px;background:#073b24;color:#fff;border-right:0;padding:20px 15px}
.hotel-v23-side .workspace-logo{display:block;padding:4px 10px 18px}.hotel-v23-side .workspace-logo img{max-height:50px;width:auto;filter:brightness(0) invert(1)}
.hotel-v23-side .workspace-title{display:grid;gap:3px;margin:0 7px 15px;padding:13px;background:rgba(255,255,255,.08);border-radius:15px}.hotel-v23-side .workspace-title strong{font-size:.95rem}.hotel-v23-side .workspace-title small{color:rgba(255,255,255,.68)}
.hotel-v23-side-nav{display:grid;gap:3px}.hotel-v23-nav-link{display:grid;grid-template-columns:24px 1fr;gap:8px;align-items:center;padding:10px 11px;border-radius:12px;color:rgba(255,255,255,.82);text-decoration:none;font-weight:750;font-size:.88rem}.hotel-v23-nav-link:hover,.hotel-v23-nav-link.active{background:#fff;color:#073b24}.hotel-v23-nav-icon{text-align:center;font-size:1rem}
.hotel-v23-side .workspace-back{margin-top:auto;color:rgba(255,255,255,.72);padding:16px 10px 5px}
.hotel-v23-content{padding-bottom:36px}
.hotel-v23-topbar{min-height:72px;background:rgba(255,255,255,.95);border-bottom:1px solid #dfe6e1;backdrop-filter:blur(14px);position:sticky;top:0;z-index:60;display:grid;grid-template-columns:minmax(180px,1fr) minmax(250px,420px) auto;gap:15px;align-items:center}
.hotel-v23-property{display:grid;min-width:0}.hotel-v23-property strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hotel-v23-property small{color:#6a7a71;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.78rem}
.hotel-v23-quick-search{display:grid;grid-template-columns:1fr auto;border:1px solid #d8e2dc;border-radius:999px;background:#f7f9f8;overflow:hidden}.hotel-v23-quick-search input{border:0;background:transparent;min-height:42px;padding:0 14px;outline:0}.hotel-v23-quick-search button{border:0;background:#0a5b36;color:#fff;padding:0 16px;font-weight:800}
.hotel-v23-switcher{position:relative}.hotel-v23-switcher summary{cursor:pointer;font-weight:750;list-style:none}.hotel-v23-switcher>div{position:absolute;right:0;top:calc(100% + 10px);width:260px;padding:7px;background:#fff;border:1px solid #dce5df;border-radius:15px;box-shadow:0 18px 48px rgba(20,45,30,.16);z-index:80}.hotel-v23-switcher a{display:grid;gap:2px;padding:9px;border-radius:10px;text-decoration:none;color:#173025}.hotel-v23-switcher a.active,.hotel-v23-switcher a:hover{background:#edf5f0}.hotel-v23-switcher small{color:#728078}
.hotel-v23-context-strip{max-width:1220px;margin:12px auto 0;padding:0 24px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.hotel-v23-context-strip a{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #dfe7e2;border-radius:14px;padding:10px 12px;text-decoration:none;color:#193226;min-width:0}.hotel-v23-context-strip strong{font-size:1.2rem}.hotel-v23-context-strip span{font-size:.76rem;color:#6c7d73}
.hotel-v23-app .workspace-page{max-width:1220px;margin:0 auto;padding:26px 24px 50px}.hotel-v23-app .pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:20px}.hotel-v23-app .pagehead h1{font-size:clamp(2rem,3.5vw,3.1rem);line-height:1;letter-spacing:-.04em;margin:.3rem 0 .5rem}
.hotel-v23-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:22px}.hotel-v23-metrics a{display:grid;gap:2px;background:#fff;border:1px solid #dce5df;border-radius:18px;padding:16px;text-decoration:none;color:#173025;box-shadow:0 7px 24px rgba(13,49,29,.045)}.hotel-v23-metrics span{font-size:.8rem;color:#65756c}.hotel-v23-metrics strong{font-size:1.75rem;letter-spacing:-.035em}.hotel-v23-metrics small{color:#88958e}
.hotel-v23-quick{margin:20px 0 26px}.hotel-v23-quick h2{font-size:1rem;margin-bottom:10px}.hotel-v23-quick>div{display:flex;gap:8px;flex-wrap:wrap}.hotel-v23-quick a{display:flex;align-items:center;gap:8px;border:1px solid #dce5df;background:#fff;color:#183426;border-radius:999px;padding:9px 13px;text-decoration:none}.hotel-v23-quick a span{font-size:1.05rem}.hotel-v23-quick a:hover{border-color:#0a5b36;background:#edf7f1}
.hotel-v23-alerts{margin:24px 0}.hotel-v23-alert{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 15px;border-radius:14px;text-decoration:none;margin:8px 0}.hotel-v23-alert>div{display:grid;gap:2px}.hotel-v23-alert span{font-size:.84rem}.hotel-v23-alert.warning{background:#fff8e7;border:1px solid #f3dda3;color:#684f13}.hotel-v23-alert.danger{background:#fff0ef;border:1px solid #f0c8c4;color:#7d251f}.hotel-v23-alert.info{background:#edf7f1;border:1px solid #cee5d6;color:#155b35}
.hotel-v23-next .section-head{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:12px}.hotel-v23-next .section-head h2{margin:0 0 3px}.hotel-v23-next .section-head>a{font-weight:800;color:#0a5b36;text-decoration:none}
.hotel-v23-arrival-list{display:grid;gap:9px}.hotel-v23-arrival-card{display:grid;grid-template-columns:145px minmax(0,1fr) auto;gap:16px;align-items:center;background:#fff;border:1px solid #dce5df;border-radius:17px;padding:14px 16px}.hotel-v23-time{display:grid}.hotel-v23-time span{font-size:.78rem;color:#718178}.hotel-v23-arrival-main h3{margin:0 0 3px;font-size:1rem}.hotel-v23-arrival-main p{margin:0 0 5px;color:#66766d;font-size:.84rem}.hotel-v23-arrival-actions{display:flex;gap:6px}.hotel-v23-ok,.hotel-v23-soft,.hotel-v23-chip{display:inline-flex;border-radius:999px;padding:4px 7px;font-size:.72rem}.hotel-v23-ok{background:#e9f8ef;color:#0a6a3c}.hotel-v23-soft,.hotel-v23-chip{background:#f0f4f1;color:#52665b}
.hotel-v23-filterbar{display:grid;grid-template-columns:minmax(300px,1fr) 170px 180px auto;gap:8px;align-items:center;margin-bottom:15px}.hotel-v23-search-wide{display:grid;grid-template-columns:1fr auto;border:1px solid #d8e2dc;border-radius:14px;background:#fff;overflow:hidden}.hotel-v23-search-wide input{border:0;min-height:46px;padding:0 13px;outline:0}.hotel-v23-filterbar select{min-height:46px}.hotel-v23-unpaid{display:flex!important;align-items:center;gap:6px;white-space:nowrap;background:#fff;border:1px solid #d8e2dc;border-radius:14px;min-height:46px;padding:0 12px}.hotel-v23-unpaid input{width:18px!important;min-height:18px!important}
.hotel-v23-booking-list{display:grid;gap:10px}.hotel-v23-booking-card{display:grid;grid-template-columns:minmax(0,1fr) 235px;background:#fff;border:1px solid #dce5df;border-radius:19px;overflow:hidden;box-shadow:0 8px 25px rgba(15,48,30,.04)}.hotel-v23-booking-main{padding:17px 19px;min-width:0}.hotel-v23-booking-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.hotel-v23-booking-top small{color:#718078}.hotel-v23-booking-main h2{font-size:1.2rem;margin:.45rem 0 .25rem}.hotel-v23-stayline{display:flex;align-items:center;gap:12px;margin:12px 0}.hotel-v23-stayline span{display:grid}.hotel-v23-stayline small{color:#738178;font-size:.72rem}.hotel-v23-stayline b{color:#a0aea6}.hotel-v23-chips{display:flex;flex-wrap:wrap;gap:5px}
.hotel-v23-booking-side{padding:17px 19px;border-left:1px solid #e2e9e4;display:flex;flex-direction:column;justify-content:center;align-items:flex-end;text-align:right;gap:7px}.hotel-v23-booking-side>strong{font-size:1.28rem}.hotel-v23-payment{font-size:.78rem;color:#62736a}.hotel-v23-card-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.hotel-v23-mobile-bottom{display:none}
.hotel-v23-app .card,.hotel-v23-app .wizard-card,.hotel-v23-app .scanner-panel,.hotel-v23-app .bulk-inventory{border-radius:18px;border-color:#dce5df;box-shadow:0 8px 28px rgba(15,48,30,.045)}
.hotel-v23-app .filterbar{background:#fff;border:1px solid #dce5df;border-radius:16px;padding:10px}
.hotel-v23-app .tablewrap{border:1px solid #dce5df;border-radius:17px;background:#fff}
.hotel-v23-app table th{background:#f3f7f4;color:#4c6256}
.hotel-v23-app .operation-card{border-radius:16px;border:1px solid #dce5df;background:#fff}
.hotel-v23-app .fast-checkin-form,.hotel-v23-app .qr-fast-checkin{border-radius:16px}
.hotel-v23-app .scanner-panel{max-width:780px;margin-inline:auto}.hotel-v23-app .camera-box{border-radius:20px;overflow:hidden}
.hotel-v23-app .inventory-table{overflow-x:auto}.hotel-v23-app .inventory-table table{min-width:800px}
.hotel-v23-app .form-section{background:#fff;border:1px solid #e0e7e2;border-radius:16px;padding:18px;margin:12px 0}
.hotel-v23-app .sticky-actions{background:rgba(244,247,245,.94);backdrop-filter:blur(12px);border-top:1px solid #dce5df;padding:10px;bottom:0}
@media(max-width:1080px){.hotel-v23-metrics{grid-template-columns:repeat(3,1fr)}.hotel-v23-filterbar{grid-template-columns:1fr 1fr}.hotel-v23-search-wide{grid-column:1/-1}.hotel-v23-context-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:860px){
 .hotel-v23-side{display:none}.hotel-v23-content{width:100%;padding-bottom:82px}.hotel-v23-topbar{grid-template-columns:1fr auto;padding-inline:14px}.hotel-v23-property small{display:none}.hotel-v23-quick-search{display:none}.hotel-v23-switcher{display:none}
 .hotel-v23-context-strip{padding:0 14px;margin-top:10px}.hotel-v23-app .workspace-page{padding:20px 14px 38px}
 .hotel-v23-mobile-bottom{display:flex;position:fixed;z-index:95;left:8px;right:8px;bottom:8px;min-height:64px;background:rgba(255,255,255,.97);border:1px solid #dce5df;border-radius:20px;box-shadow:0 18px 48px rgba(0,0,0,.16);backdrop-filter:blur(14px);padding:6px;justify-content:space-around}
 .hotel-v23-mobile-bottom>a,.hotel-v23-mobile-more>summary{display:grid;place-items:center;gap:2px;min-width:62px;padding:6px;color:#66776d;text-decoration:none;border-radius:13px;list-style:none}.hotel-v23-mobile-bottom>a.active{background:#edf6f0;color:#073b24}.hotel-v23-mobile-bottom small{font-size:.66rem}.hotel-v23-mobile-more{position:relative}.hotel-v23-mobile-more>div{position:absolute;right:0;bottom:calc(100% + 12px);width:245px;padding:8px;background:#fff;border:1px solid #dce5df;border-radius:16px;box-shadow:0 18px 48px rgba(0,0,0,.18)}.hotel-v23-mobile-more .hotel-v23-nav-link{color:#173025}
 .hotel-v23-booking-card{grid-template-columns:1fr}.hotel-v23-booking-side{border-left:0;border-top:1px solid #e2e9e4;align-items:flex-start;text-align:left}.hotel-v23-card-actions{justify-content:flex-start}
}
@media(max-width:620px){
 .hotel-v23-context-strip{display:flex;overflow-x:auto}.hotel-v23-context-strip a{min-width:150px}
 .hotel-v23-app .pagehead{align-items:flex-start;flex-direction:column}.hotel-v23-app .pagehead>.btn{width:100%}
 .hotel-v23-metrics{grid-template-columns:1fr 1fr}.hotel-v23-metrics a{padding:13px}.hotel-v23-metrics strong{font-size:1.5rem}
 .hotel-v23-arrival-card{grid-template-columns:1fr}.hotel-v23-arrival-actions{justify-content:flex-start}
 .hotel-v23-filterbar{grid-template-columns:1fr}.hotel-v23-search-wide{grid-column:auto}.hotel-v23-filterbar select,.hotel-v23-unpaid{width:100%}
 .hotel-v23-stayline{flex-wrap:wrap}.hotel-v23-card-actions .btn{flex:1}
 .hotel-v23-app input,.hotel-v23-app select,.hotel-v23-app textarea{font-size:16px}
}


/* GANGANSTAY_EXPERIENCE_2_PHASE24_ADMIN_CSS */
body.context-admin{background:#f4f7f5;color:#14251d}
.admin-v24-app{min-height:100vh;background:#f4f7f5}
.admin-v24-side{width:266px;background:#092f20;color:#fff;border-right:0;padding:18px 14px}
.admin-v24-side .workspace-logo{display:block;padding:4px 10px 15px}.admin-v24-side .workspace-logo img{max-height:48px;width:auto;filter:brightness(0) invert(1)}
.admin-v24-side-title{display:grid;gap:2px;margin:0 7px 13px;padding:12px;background:rgba(255,255,255,.075);border-radius:14px}.admin-v24-side-title small{color:rgba(255,255,255,.65)}
.admin-v24-side nav{display:grid;gap:10px;overflow:auto;padding-right:2px}.admin-v24-nav-group{display:grid;gap:2px}.admin-v24-nav-group>small{text-transform:uppercase;letter-spacing:.08em;font-size:.62rem;color:rgba(255,255,255,.46);padding:6px 10px 3px}
.admin-v24-nav-link{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:center;padding:9px 10px;border-radius:11px;color:rgba(255,255,255,.8);text-decoration:none}.admin-v24-nav-link b{font-size:.83rem}.admin-v24-nav-link:hover,.admin-v24-nav-link.active{background:#fff;color:#092f20}
.admin-v24-side .workspace-back{margin-top:auto;color:rgba(255,255,255,.7);padding:14px 10px 4px}
.admin-v24-content{padding-bottom:36px}
.admin-v24-topbar{min-height:72px;background:rgba(255,255,255,.95);backdrop-filter:blur(14px);border-bottom:1px solid #dfe6e1;position:sticky;top:0;z-index:60;display:grid;grid-template-columns:minmax(280px,620px) auto;gap:16px;align-items:center}
.admin-v24-search{display:grid;grid-template-columns:auto 1fr auto;align-items:center;border:1px solid #d8e1db;background:#f7f9f8;border-radius:999px;overflow:hidden;padding-left:13px}.admin-v24-search span{color:#74847a}.admin-v24-search input{border:0;background:transparent;min-height:42px;padding:0 9px;outline:0}.admin-v24-search button{border:0;background:#0a5b36;color:#fff;align-self:stretch;padding:0 17px;font-weight:800}
.admin-v24-app .workspace-page{max-width:1240px;margin:0 auto;padding:28px 24px 52px}.admin-v24-app .pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:20px}.admin-v24-app .pagehead h1{font-size:clamp(2rem,3.5vw,3.1rem);line-height:1;letter-spacing:-.045em;margin:.3rem 0 .5rem}
.admin-v24-metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:25px}.admin-v24-metrics a{display:grid;gap:3px;background:#fff;border:1px solid #dce5df;border-radius:18px;padding:16px;text-decoration:none;color:#173025;box-shadow:0 7px 24px rgba(13,49,29,.04)}.admin-v24-metrics span{font-size:.77rem;color:#65756c}.admin-v24-metrics strong{font-size:1.75rem;letter-spacing:-.04em}.admin-v24-metrics small{color:#8a9690;font-size:.7rem}
.admin-v24-priority{margin:25px 0}.admin-v24-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.admin-v24-action{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;background:#fff;border:1px solid #dce5df;border-radius:16px;padding:13px;text-decoration:none;color:#173025}.admin-v24-action-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;background:#edf5f0}.admin-v24-action div{display:grid}.admin-v24-action div small{color:#627269}.admin-v24-action div strong{font-size:1.25rem}.admin-v24-action b{font-size:.76rem;color:#0a5b36}.admin-v24-action.urgent{border-color:#efc1bd;background:#fff7f6}.admin-v24-action.urgent .admin-v24-action-icon{background:#fee9e7;color:#9e2b21}.admin-v24-action.important{border-color:#ead9a8;background:#fffaf0}.admin-v24-clear{display:flex;gap:11px;align-items:center;background:#edf8f1;border:1px solid #cae7d4;border-radius:16px;padding:15px}.admin-v24-clear>span{display:grid;place-items:center;width:38px;height:38px;border-radius:999px;background:#0a6a3d;color:#fff}.admin-v24-clear>div{display:grid}.admin-v24-clear small{color:#687970}
.admin-v24-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}.admin-v24-two-col .card{border-radius:19px;border-color:#dce5df}.admin-v24-two-col .section-head{display:flex;justify-content:space-between;align-items:end;gap:10px}.admin-v24-two-col .section-head h2{margin:0 0 3px}.admin-v24-two-col .section-head>a{font-weight:800;color:#0a5b36;text-decoration:none}
.admin-v24-queue{display:grid;margin-top:10px}.admin-v24-queue-row,.admin-v24-res-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 2px;border-top:1px solid #e8edea;text-decoration:none;color:#183125}.admin-v24-queue-row:first-child,.admin-v24-res-row:first-child{border-top:0}.admin-v24-queue-row>div,.admin-v24-res-row>div:first-child{display:grid}.admin-v24-queue-row small,.admin-v24-res-row small{color:#718077}.admin-v24-queue-row>span{font-size:.78rem;font-weight:800;color:#0a5b36}.admin-v24-res-row>div:last-child{display:flex;align-items:center;gap:7px;text-align:right}
.admin-v24-health{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.admin-v24-health a{display:flex;gap:10px;align-items:center;background:#fff;border:1px solid #dce5df;border-radius:15px;padding:13px;text-decoration:none;color:#183125}.admin-v24-health a>span{font-size:1.15rem}.admin-v24-health a>div{display:grid}.admin-v24-health small{color:#6b7a71}.admin-v24-health .warn{border-color:#efc9ad;background:#fff8f1}.admin-v24-health .ok{border-color:#cfe4d6;background:#f2faf5}
.admin-v24-search-results{background:#fff;border:1px solid #dce5df;border-radius:19px;padding:18px;margin-bottom:18px}.admin-v24-search-results section{margin-top:13px}.admin-v24-search-results section h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.07em;color:#738279}.admin-v24-search-results section a{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid #edf1ee;text-decoration:none;color:#173025}.admin-v24-search-results section a span{display:grid}.admin-v24-search-results section a small{color:#6f7e76}
.admin-v24-filterbar{display:grid;grid-template-columns:minmax(320px,1fr) 190px 190px;gap:8px;margin-bottom:15px}.admin-v24-filterbar>div{display:grid;grid-template-columns:1fr auto;border:1px solid #d8e1db;border-radius:14px;background:#fff;overflow:hidden}.admin-v24-filterbar input{border:0;padding:0 13px;outline:0}.admin-v24-filterbar select{min-height:46px}
.admin-v24-booking-list{display:grid;gap:9px}.admin-v24-booking-card{display:grid;grid-template-columns:minmax(0,1fr) 220px;background:#fff;border:1px solid #dce5df;border-radius:18px;overflow:hidden}.admin-v24-booking-card>div:first-child{padding:16px 18px}.admin-v24-booking-top{display:flex;align-items:center;justify-content:space-between;gap:9px}.admin-v24-booking-card h2{font-size:1.08rem;margin:.5rem 0 .2rem}.admin-v24-booking-card p{margin:.2rem 0;color:#607168}.admin-v24-booking-card small{color:#7b8982}.admin-v24-booking-side{padding:16px 18px;border-left:1px solid #e3e9e5;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:6px;text-align:right}.admin-v24-booking-side>strong{font-size:1.2rem}
.admin-v24-app .card,.admin-v24-app .panel{border-radius:18px;border-color:#dce5df;box-shadow:0 8px 28px rgba(15,48,30,.04)}
.admin-v24-app .tablewrap{border:1px solid #dce5df;border-radius:17px;background:#fff;overflow:auto}.admin-v24-app table{min-width:720px}.admin-v24-app table th{background:#f2f6f3;color:#4d6257;position:sticky;top:0}.admin-v24-app .verification-flow,.admin-v24-app .admin-flow{border-radius:16px}
.admin-v24-app .editor-layout{gap:16px}.admin-v24-app .editor-layout .card{border-radius:18px}.admin-v24-app .form-section{background:#fff;border:1px solid #dce5df;border-radius:16px;padding:17px}
.admin-v24-app .quick-actions{display:flex;gap:7px;flex-wrap:wrap}.admin-v24-app .search-admin-row{border-radius:12px}
.admin-v24-mobile-bottom{display:none}
@media(max-width:1120px){.admin-v24-metrics{grid-template-columns:repeat(3,1fr)}.admin-v24-action-grid{grid-template-columns:1fr 1fr}}
@media(max-width:880px){
 .admin-v24-side{display:none}.admin-v24-content{width:100%;padding-bottom:82px}.admin-v24-topbar{padding-inline:14px;grid-template-columns:1fr auto}.admin-v24-topbar .notification-menu{display:none}
 .admin-v24-app .workspace-page{padding:21px 14px 40px}.admin-v24-two-col{grid-template-columns:1fr}
 .admin-v24-mobile-bottom{display:flex;position:fixed;left:8px;right:8px;bottom:8px;z-index:95;min-height:64px;padding:6px;background:rgba(255,255,255,.97);border:1px solid #dce5df;border-radius:20px;box-shadow:0 18px 48px rgba(0,0,0,.16);backdrop-filter:blur(14px);justify-content:space-around}
 .admin-v24-mobile-bottom>a,.admin-v24-mobile-more>summary{display:grid;place-items:center;gap:2px;min-width:60px;padding:6px;border-radius:13px;text-decoration:none;color:#67776e;list-style:none}.admin-v24-mobile-bottom>a.active{background:#edf5f0;color:#092f20}.admin-v24-mobile-bottom small{font-size:.65rem}
 .admin-v24-mobile-more{position:relative}.admin-v24-mobile-more>div{position:absolute;right:0;bottom:calc(100% + 11px);width:245px;max-height:65vh;overflow:auto;padding:8px;background:#fff;border:1px solid #dce5df;border-radius:16px;box-shadow:0 18px 48px rgba(0,0,0,.18)}.admin-v24-mobile-more .admin-v24-nav-link{color:#173025}
 .admin-v24-filterbar{grid-template-columns:1fr 1fr}.admin-v24-filterbar>div{grid-column:1/-1}
}
@media(max-width:620px){
 .admin-v24-app .pagehead{align-items:flex-start;flex-direction:column}.admin-v24-app .pagehead>.btn{width:100%}
 .admin-v24-topbar{grid-template-columns:1fr}.admin-v24-topbar .topbar-actions{display:none}.admin-v24-search{width:100%}
 .admin-v24-metrics{grid-template-columns:1fr 1fr}.admin-v24-metrics a{padding:13px}.admin-v24-metrics strong{font-size:1.5rem}
 .admin-v24-action-grid{grid-template-columns:1fr}.admin-v24-health{grid-template-columns:1fr}
 .admin-v24-filterbar{grid-template-columns:1fr}.admin-v24-filterbar>div{grid-column:auto}
 .admin-v24-booking-card{grid-template-columns:1fr}.admin-v24-booking-side{border-left:0;border-top:1px solid #e3e9e5;align-items:flex-start;text-align:left}
 .admin-v24-app input,.admin-v24-app select,.admin-v24-app textarea{font-size:16px}
}

/* GanGanStay R7.0.8.1 - équipe plateforme : formulaire stable et tableau mobile */
.platform-team-invite,.platform-team-permissions{margin-top:18px}
.platform-team-invite>.btn{margin-top:14px}
.platform-team-table{margin-top:18px}
.platform-role-badges{display:flex;flex-wrap:wrap;gap:6px}
.platform-role-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;background:#edf6f0;color:#0a5b36;font-size:.72rem;font-weight:800;line-height:1.2}
.platform-role-form{display:grid;gap:10px;min-width:310px}
.platform-role-picker{display:grid;grid-template-columns:repeat(2,minmax(130px,1fr));gap:6px;margin:0;padding:10px;border:1px solid #dce5df;border-radius:12px}
.platform-role-picker legend{padding:0 5px;color:#52665b;font-size:.72rem;font-weight:800}
.platform-role-option{display:flex;align-items:flex-start;gap:7px;margin:0;padding:6px;border-radius:8px;background:#f7faf8;font-size:.75rem;line-height:1.25;cursor:pointer}
.platform-role-option input{flex:0 0 auto;margin-top:2px}
@media(max-width:760px){
 .admin-v24-app .platform-team-table{overflow:visible;border:0;background:transparent}
 .admin-v24-app .platform-team-table table,.admin-v24-app .platform-team-table tbody,.admin-v24-app .platform-team-table tr,.admin-v24-app .platform-team-table td{display:block;width:100%;min-width:0}
 .admin-v24-app .platform-team-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
 .admin-v24-app .platform-team-table tr{margin-bottom:12px;padding:8px 14px;background:#fff;border:1px solid #dce5df;border-radius:16px;box-shadow:0 6px 20px rgba(15,48,30,.04)}
 .admin-v24-app .platform-team-table td{display:grid;grid-template-columns:minmax(88px,34%) minmax(0,1fr);gap:10px;padding:10px 0;border:0;border-bottom:1px solid #e8edea;overflow-wrap:anywhere}
 .admin-v24-app .platform-team-table td:last-child{border-bottom:0}
 .admin-v24-app .platform-team-table td::before{content:attr(data-label);color:#64756b;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
 .admin-v24-app .platform-team-table .inline-action{display:grid;grid-template-columns:1fr;gap:7px}
 .admin-v24-app .platform-team-table .inline-action .btn,.admin-v24-app .platform-team-table .inline-action select{width:100%}
 .admin-v24-app .platform-role-form{min-width:0}
 .admin-v24-app .platform-role-picker{grid-template-columns:1fr}
 .platform-team-invite .grid-3,.platform-team-permissions .grid-3{grid-template-columns:1fr}
}


/* GANGANSTAY_EXPERIENCE_2_PHASE25_ACCESSIBILITY_PERFORMANCE */
.skip-link{
  position:fixed;z-index:9999;left:12px;top:10px;transform:translateY(-160%);
  background:#fff;color:#073b24;border:2px solid #073b24;border-radius:10px;
  padding:10px 14px;font-weight:900;text-decoration:none;box-shadow:0 10px 30px rgba(0,0,0,.18)
}
.skip-link:focus{transform:none}
#main-content:focus{outline:none}
:focus-visible{outline:3px solid #d96b2d!important;outline-offset:3px!important}
.alert[role="alert"],.alert[role="status"]{scroll-margin-top:90px}
img{max-width:100%}
.hotel-v23-booking-card,.hotel-v23-arrival-card,.traveler-booking-card,.traveler-favorite-card,.admin-v24-booking-card{
  content-visibility:auto;
  contain-intrinsic-size:260px
}
@media(pointer:coarse){
  .btn,button,summary,input[type="checkbox"],input[type="radio"]{min-height:44px}
  a.hotel-v23-nav-link,a.admin-v24-nav-link,.traveler-side-nav .workspace-link{min-height:44px}
}
@media(prefers-reduced-motion:reduce){
  html:focus-within{scroll-behavior:auto!important}
  *,*::before,*::after{
    animation-duration:.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:.01ms!important;
    scroll-behavior:auto!important
  }
}
@media(forced-colors:active){
  .btn,button,input,select,textarea,summary,a{forced-color-adjust:auto}
  :focus-visible{outline:3px solid CanvasText!important}
}


/* GanGanStay R4 — compte professionnel dynamique */
.professional-account-v40,.professional-account-v41{max-width:1240px;margin:0 auto}.professional-account-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.professional-account-metrics .metric.small-metric{font-size:1.45rem;line-height:1.15}.professional-access-grid{align-items:start}.professional-access-card{display:grid;gap:14px}.professional-access-card.pending{border-style:dashed}.professional-role-block{display:grid;gap:7px}.position-chips{display:flex;flex-wrap:wrap;gap:7px}.position-chip{background:#eef6f0}.professional-permissions{border-top:1px solid var(--ns-line,#e4e9e6);border-bottom:1px solid var(--ns-line,#e4e9e6);padding:10px 0}.professional-permissions summary{cursor:pointer;font-weight:850;color:var(--ns-forest,#174b2c)}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:13px}.permission-group{padding:12px;border-radius:12px;background:#f8faf9}.permission-group strong{display:block;margin-bottom:7px}.permission-group ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.permission-group li{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.9rem}.professional-card-actions{display:flex;gap:8px;flex-wrap:wrap}.professional-security-notice{margin:0 0 18px}.professional-security-notice.success{border-left-color:var(--ns-leaf,#246b3e);background:#eef8f1}.professional-security-notice a{text-decoration:underline;font-weight:850}.professional-model-card{margin-top:20px}.professional-principles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.professional-principles>div{display:grid;gap:4px;padding:14px;border:1px solid var(--ns-line,#e4e9e6);border-radius:13px;background:#fafcfb}.professional-principles span{color:var(--muted);font-size:.9rem}.professional-access-card .owner-badges{justify-content:flex-end}.badge.soft{background:#f3f6f4;color:#496157}
@media(max-width:1000px){.professional-account-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.professional-principles{grid-template-columns:repeat(2,minmax(0,1fr))}.permission-grid{grid-template-columns:1fr}}
@media(max-width:620px){.professional-account-metrics{grid-template-columns:1fr 1fr}.professional-principles{grid-template-columns:1fr}.professional-access-grid{grid-template-columns:1fr}.professional-account-v40 .pagehead>.btn{width:100%}.professional-access-card .card-head{display:grid}.professional-access-card .owner-badges{justify-content:flex-start}}
@media(max-width:390px){.professional-account-metrics{grid-template-columns:1fr}}


.nav-login-link{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:7px 14px;border:1px solid var(--ns-line);border-radius:12px;background:#fff;color:var(--ns-text);font-size:14px;font-weight:800}
.nav-login-link:hover{background:#f8fbf9}
.auth-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:8px}
.auth-page-head h1{margin:6px 0 0}
.auth-switch-link{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 11px;border:1px solid var(--ns-line);border-radius:999px;background:#f8fbf9;color:var(--ns-forest);font-size:12px;font-weight:800;white-space:nowrap}
.auth-switch-link:hover{background:#f1f7f3}
.auth-steps{margin:0 0 18px 18px;padding:0;color:var(--ns-muted)}
.auth-steps li{margin:0 0 8px}
.auth-actions-stack{display:grid;gap:14px;margin-top:16px}
.auth-inline-link{display:inline-flex;align-items:center;justify-content:center;margin-top:10px;color:var(--ns-forest);font-size:13px;font-weight:700}
.auth-inline-link:hover{text-decoration:underline}
@media(max-width:600px){
  .auth-page-head{flex-direction:column;align-items:flex-start}
  .nav-right.open{align-items:flex-start}
}

/* GanGanStay R4.4 — Équipe & postes / propriétaire juridique */
.owner-configuration-card{display:grid;gap:16px;margin-bottom:20px;border-top:4px solid var(--ns-forest)}
.owner-configuration-card .card-head{align-items:flex-start}
.owner-authority-notice{margin:0;background:#f5faf6}
.owner-position-form{margin-top:4px}
.team-section{display:grid;gap:16px;margin-top:20px}
.team-members-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}
.team-member-card{display:grid;gap:12px}
.team-assignment-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-top:1px solid var(--ns-line)}
.team-assignment-row form{margin:0}
.team-assign-form{display:grid;grid-template-columns:minmax(170px,1.3fr) minmax(150px,1fr) minmax(150px,1fr) auto;gap:8px;align-items:end;margin-top:8px}
.coverage-list{display:grid;gap:10px;padding-left:20px}
.coverage-action{margin-top:8px}
.position-admin{display:grid;gap:12px;margin-top:24px}
.position-admin-card>summary{cursor:pointer}
@media(max-width:900px){.team-members-grid{grid-template-columns:1fr}.team-assign-form{grid-template-columns:1fr 1fr}.team-assign-form .btn{width:100%}}
@media(max-width:600px){.team-assign-form{grid-template-columns:1fr}.team-assignment-row{align-items:flex-start;flex-direction:column}.team-assignment-row form,.team-assignment-row .btn{width:100%}}


/* GanGanStay R4.4.1 - stabilisation impression/PDF de l'espace hotel
   Cause corrigee : en media print, la sidebar etait masquee mais .hotel-app
   conservait sa grille 260px + contenu. Le contenu restant etait alors place
   dans la premiere colonne de 260px, produisant des cartes tres etroites et
   de grandes zones blanches dans les PDF. */
@media print{
  .account-app,.hotel-app,.admin-app{
    display:block!important;
    grid-template-columns:none!important;
    min-height:0!important;
    width:100%!important;
    background:#fff!important;
  }
  .workspace-sidebar,.workspace-topbar,.workspace-mobile-nav,.admin-v24-mobile-bottom,
  .public-header,.public-footer,.top,.footer,footer,
  .action-bar,.workspace-back,.menu{
    display:none!important;
  }
  .workspace-content{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    max-width:none!important;
  }
  .workspace-page{
    width:100%!important;
    max-width:none!important;
    margin:0!important;
    padding:16px 18px!important;
  }
  .workspace-page .pagehead,
  .workspace-page .section-head{
    break-after:avoid;
  }
  .owner-configuration-card,.team-member-card,.position-admin-card,
  .coverage-list li,.empty-state{
    break-inside:avoid;
  }
  .team-section>.grid.grid-2{
    grid-template-columns:1fr!important;
  }
  .team-members-grid{
    grid-template-columns:1fr!important;
  }
  .team-assign-form{
    grid-template-columns:minmax(210px,1fr) minmax(170px,.8fr) minmax(170px,.8fr)!important;
  }
  .team-assign-form .btn{
    display:none!important;
  }
  .card{
    box-shadow:none!important;
  }
  .platform-team-invite,.platform-team-table td:last-child,
  .platform-team-table th:last-child,.ggs-r56-form-close-row{
    display:none!important;
  }
  .platform-team-table{overflow:visible!important;border:0!important}
  .platform-team-table table{min-width:0!important;width:100%!important;font-size:10px}
  .platform-team-table tr,.platform-team-permissions{break-inside:avoid}
  .platform-team-permissions{margin-top:12px!important;padding:14px!important}
  .platform-team-permissions .grid-3{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important}
  .platform-team-permissions h2{margin-bottom:8px!important}
  .platform-team-permissions p{margin:.2rem 0!important;font-size:10px!important}
}

/* GANGANSTAY_R5_5_STAY_EXPERIENCE */
.traveler-stay-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:20px}
.traveler-stay-metrics>div{display:grid;gap:4px;background:#fff;border:1px solid #dfe7e2;border-radius:18px;padding:18px}
.traveler-stay-metrics span{color:#718077;font-size:.82rem}.traveler-stay-metrics strong{font-size:1.25rem}
.traveler-request-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #e6ece8}.traveler-request-row:last-child{border-bottom:0}.traveler-request-row>div{display:grid;gap:3px}.traveler-request-row small{color:#6e7e75}
@media(max-width:760px){.traveler-stay-metrics{grid-template-columns:1fr 1fr}.traveler-request-row{grid-template-columns:1fr}.traveler-request-row form{justify-self:start}}

/* ==========================================================
   GANGANSTAY_R5_7_PROPERTY_IDENTITY_CATEGORY_BRANDING
   ========================================================== */
body.context-public .hotel-identity-hero{
  display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,.8fr);gap:22px;align-items:stretch;margin-bottom:28px
}
body.context-public .hotel-identity-hero .hotel-gallery-hero{height:auto;min-height:430px;margin:0}
body.context-public .hotel-identity-panel{
  background:#fff;border:1px solid #dde6e0;border-radius:26px;padding:28px;box-shadow:0 18px 52px rgba(15,48,30,.09);display:flex;flex-direction:column;justify-content:center;min-width:0
}
body.context-public .hotel-identity-panel h1{font-size:clamp(2rem,3.7vw,3.35rem);line-height:1.02;letter-spacing:-.045em;margin:.35rem 0 .8rem}
body.context-public .hotel-identity-logo{display:block;max-width:150px;max-height:76px;object-fit:contain;object-position:left center;margin:0 0 18px}
body.context-public .hotel-identity-facts{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:20px}
body.context-public .hotel-identity-facts>div{border:1px solid #e1e9e4;background:#f7faf8;border-radius:14px;padding:12px;min-width:0}
body.context-public .hotel-identity-facts small{display:block;color:#697970;font-size:.7rem;font-weight:800;margin-bottom:4px}
body.context-public .hotel-identity-facts strong{display:block;font-size:.86rem;line-height:1.35;overflow-wrap:anywhere}
body.context-public .hotel-identity-facts a{color:#0a623b}

.establishment-identity-card{display:grid;grid-template-columns:minmax(240px,36%) minmax(0,1fr);background:#fff;border:1px solid var(--ns-line);border-radius:20px;overflow:hidden;box-shadow:var(--ns-shadow);margin:0 0 18px}
.establishment-identity-photo{min-height:260px;background:#e7eee9}.establishment-identity-photo img{width:100%;height:100%;min-height:260px;display:block;object-fit:cover}
.establishment-identity-info{padding:24px;display:flex;flex-direction:column;justify-content:center;min-width:0}.establishment-identity-info h2{font-size:clamp(1.8rem,3vw,2.5rem);margin:.25rem 0 1rem}
.establishment-identity-logo{max-width:140px;max-height:70px;object-fit:contain;object-position:left center;margin-bottom:14px}
.establishment-identity-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.establishment-identity-facts span{display:block;padding:10px 12px;border-radius:12px;background:#f5f8f6;overflow-wrap:anywhere}.establishment-identity-facts strong{display:block;font-size:.7rem;color:var(--ns-muted);margin-bottom:3px;text-transform:uppercase;letter-spacing:.03em}
.hotel-logo-preview{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:12px 0}.hotel-logo-preview img{max-width:180px;max-height:90px;object-fit:contain;padding:10px;background:#fff;border:1px solid var(--ns-line);border-radius:12px}
[data-geolocate-status]{display:block;margin-top:7px}.geo-success{color:#176b3b}.geo-error{color:#a52d2d}

@media(max-width:920px){body.context-public .hotel-identity-hero{grid-template-columns:1fr}body.context-public .hotel-identity-hero .hotel-gallery-hero{min-height:340px}.establishment-identity-card{grid-template-columns:1fr}.establishment-identity-photo,.establishment-identity-photo img{min-height:240px;height:240px}}
@media(max-width:600px){body.context-public .hotel-identity-panel{padding:20px;border-radius:18px}body.context-public .hotel-identity-facts{grid-template-columns:1fr}body.context-public .hotel-identity-hero .hotel-gallery-hero{min-height:250px;height:250px}.establishment-identity-info{padding:18px}.establishment-identity-facts{grid-template-columns:1fr}}
.receipt-brand-row{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:12px}.receipt-hotel-logo{display:block;max-width:160px;max-height:78px;object-fit:contain}.receipt-document .pagehead{margin-top:0}@media(max-width:600px){.receipt-brand-row{align-items:flex-start;flex-direction:column}.receipt-hotel-logo{max-width:140px;max-height:68px}}@media print{.receipt-hotel-logo{max-width:140px;max-height:65px}}

/* ==========================================================
   GANGANSTAY_R5_8_PHOTO_STUDIO
   ========================================================== */
.ggs-photo-open{overflow:hidden!important}
.ggs-photo-modal{position:fixed;inset:0;z-index:100000;background:rgba(7,28,18,.72);display:grid;place-items:center;padding:18px;overflow:auto}
.ggs-photo-modal[hidden]{display:none!important}
.ggs-photo-dialog{width:min(920px,100%);background:#fff;border-radius:24px;box-shadow:0 26px 90px rgba(0,0,0,.32);padding:22px;max-height:calc(100vh - 36px);overflow:auto}
.ggs-photo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.ggs-photo-head h2{margin:.2rem 0 0}.ggs-photo-close{border:1px solid #dce5df;background:#fff;border-radius:999px;width:42px;height:42px;font-size:1.7rem;line-height:1;cursor:pointer;color:#173827}
.ggs-photo-help{color:#66776e;margin:.7rem 0 14px;max-width:760px}
.ggs-photo-stage{background:#102419;border-radius:18px;overflow:hidden;display:grid;place-items:center;user-select:none;touch-action:none}
.ggs-photo-stage canvas{display:block;width:100%;height:auto;max-height:62vh;object-fit:contain;cursor:grab;touch-action:none}.ggs-photo-stage canvas.is-dragging{cursor:grabbing}
.ggs-photo-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:14px 0 4px;flex-wrap:wrap;color:#5f7167}.ggs-photo-controls label{display:flex;align-items:center;gap:10px;font-weight:700}.ggs-photo-controls input[type=range]{width:min(320px,58vw)}
.ggs-photo-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:16px}
.ggs-photo-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:7px;font-size:.82rem;color:#176b3b}.ggs-photo-summary .btn{padding:.35rem .6rem;min-height:auto}
@media(max-width:640px){.ggs-photo-modal{padding:0;place-items:stretch}.ggs-photo-dialog{border-radius:0;min-height:100vh;max-height:none;padding:16px}.ggs-photo-stage canvas{max-height:52vh}.ggs-photo-actions{display:grid;grid-template-columns:1fr 1fr}.ggs-photo-actions [data-photo-apply]{grid-column:1/-1}.ggs-photo-actions .btn{width:100%}}

/* Impression de la fiche publique : ne pas scinder la photo principale du bloc identité. */
@media print{
  body.context-public .hotel-identity-hero{break-inside:avoid!important;page-break-inside:avoid!important;grid-template-columns:1.1fr .9fr!important;gap:14px!important;margin-bottom:18px!important}
  body.context-public .hotel-identity-hero .hotel-gallery-hero{min-height:300px!important;height:300px!important;break-inside:avoid!important}
  body.context-public .hotel-identity-panel{padding:18px!important;box-shadow:none!important;break-inside:avoid!important}
  body.context-public .hotel-identity-panel h1{font-size:2.1rem!important}
  body.context-public .hotel-identity-facts{gap:6px!important;margin-top:12px!important}
  body.context-public .hotel-identity-facts>div{padding:9px!important}
}

/* ==========================================================
   GanGanStay R6.3 — EXPÉRIENCE PUBLIQUE
   Destinations par préfectures, recherche simplifiée,
   favoris, prix / nuit, avis et bénéfices voyageurs.
   ========================================================== */
body.context-public .public-home-search{
  grid-template-columns:minmax(280px,1.8fr) minmax(150px,.9fr) minmax(150px,.9fr) minmax(210px,1.05fr) auto;
  gap:10px;align-items:end
}
body.context-public .public-home-search .search-destination{grid-column:auto}
body.context-public .public-home-search .search-cta{height:50px;min-width:145px;font-size:1rem;padding-inline:24px}
body.context-public .home-search-more{grid-column:1/-1;border-top:1px solid #edf1ee;margin-top:2px;padding-top:4px;overflow:visible!important}
body.context-public .home-search-more>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;padding:8px 4px 4px;font-size:.78rem;font-weight:800;color:#496057;list-style:none}
body.context-public .home-search-more>summary::-webkit-details-marker{display:none}
body.context-public .home-search-more>summary:after{content:'+';display:grid;place-items:center;width:24px;height:24px;border-radius:999px;background:#edf6f0;color:#0b5d37;font-size:1rem}
body.context-public .home-search-more[open]>summary:after{content:'−'}
body.context-public .home-search-more>summary span{margin-left:auto;font-weight:650;color:#7a877f}
body.context-public .home-search-more>div{display:grid;grid-template-columns:minmax(220px,360px);padding:8px 0 2px}

body.context-public .public-resume-search{margin-top:18px;background:#fff;border:1px solid var(--x2-line,#dfe7e2);border-radius:16px;padding:14px 16px;display:flex;align-items:center;gap:14px;box-shadow:0 8px 24px rgba(15,48,30,.05)}
body.context-public .public-resume-search[hidden]{display:none}
body.context-public .public-resume-search>div{display:grid;gap:2px;min-width:0;flex:1}
body.context-public .public-resume-search span{font-size:.86rem;color:var(--x2-muted,#64736b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.context-public .public-resume-close{border:0;background:transparent;color:#65756c;font-size:1.35rem;min-width:36px;padding:0}

body.context-public .destination-prefecture-grid{display:flex;flex-wrap:wrap;gap:10px}
body.context-public .destination-prefecture{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:11px 18px;border-radius:999px;font-weight:850;box-shadow:none!important;background:#fff}
body.context-public .destination-prefecture:hover{background:#eef7f1;border-color:#b9d6c4;transform:translateY(-1px)}
body.context-public .destination-list-prefectures{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
body.context-public .destination-list-prefectures .destination-list-item{justify-content:center;text-align:center;font-weight:850;min-height:54px}

body.context-public .public-featured-section .hotel-result-list{gap:16px}
body.context-public .public-card-media{position:relative;min-width:0;background:#e8efea}
body.context-public .public-card-media .hotel-image-wrap{height:100%}
body.context-public .public-favorite-form{position:absolute;top:12px;right:12px;z-index:4;margin:0}
body.context-public .public-favorite-btn{position:absolute;top:12px;right:12px;z-index:4;width:42px;height:42px;min-height:42px;padding:0;border-radius:999px;border:1px solid rgba(18,65,39,.12);background:rgba(255,255,255,.94);color:#174b2c;font-size:1.35rem;box-shadow:0 7px 22px rgba(0,0,0,.12);backdrop-filter:blur(8px)}
body.context-public .public-favorite-form .public-favorite-btn{position:static}
body.context-public .public-favorite-btn.is-saved{background:#fff0f2;color:#a12f4d;border-color:#f0c4cf}
body.context-public .hotel-result-price .price-unit,body.context-public .smart-room-footer .price-unit{font-size:.72em;font-weight:750;color:#6c7b73}
body.context-public .availability-low{display:inline-flex;padding:6px 9px;border-radius:999px;background:#fff3e8;color:#9b4e1c;font-size:.77rem;font-weight:850}
body.context-public .section-link{font-weight:850;color:#0b5d37}

body.context-public .public-benefit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
body.context-public .public-benefit-grid article{display:grid;gap:7px;background:#fff;border:1px solid var(--x2-line,#dfe7e2);border-radius:18px;padding:20px;box-shadow:0 7px 24px rgba(15,48,30,.04)}
body.context-public .public-benefit-grid strong{font-size:1.02rem}
body.context-public .public-benefit-grid span{font-size:.9rem;line-height:1.5;color:var(--x2-muted,#64736b)}

body.context-public .public-review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
body.context-public .public-review-card{display:grid;gap:13px;background:#fff;border:1px solid var(--x2-line,#dfe7e2);border-radius:20px;padding:21px;box-shadow:0 8px 28px rgba(15,48,30,.05)}
body.context-public .public-review-card p{font-size:1rem;line-height:1.6;margin:0;color:#2f4037}
body.context-public .public-review-score{display:inline-flex;width:max-content;padding:6px 9px;border-radius:10px;background:#eaf5ee;color:#075b35;font-weight:900}
body.context-public .public-review-card>div:last-child{display:grid;gap:2px}
body.context-public .public-review-card>div:last-child span{font-size:.78rem;color:#6b7a72}

body.context-public .public-install-section{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(120deg,#073d24,#0f6b40);color:#fff;border-radius:24px;padding:30px 32px;margin-top:18px;box-shadow:0 20px 52px rgba(8,66,38,.16)}
body.context-public .public-install-section>div{max-width:760px}
body.context-public .public-install-section h2{margin:.28rem 0 .45rem;color:#fff}
body.context-public .public-install-section p{margin:0;opacity:.9}
body.context-public .public-install-section .eyebrow{color:#c8ead5}
body.context-public .public-install-section .btn{flex:0 0 auto}

body.context-public .public-trust-strip{margin-top:34px;grid-template-columns:repeat(3,1fr)}
body.context-public .public-trust-strip>div{padding:20px}
body.context-public .public-trust-strip span{display:block;margin-top:4px;color:#65756d;font-size:.88rem}

.ggs63-toast{position:fixed;left:50%;bottom:24px;z-index:10050;transform:translate(-50%,18px);opacity:0;pointer-events:none;background:#123b25;color:#fff;padding:11px 16px;border-radius:999px;font-weight:800;box-shadow:0 12px 32px rgba(0,0,0,.22);transition:.2s ease}
.ggs63-toast.show{opacity:1;transform:translate(-50%,0)}

@media(max-width:1050px){
  body.context-public .public-home-search{grid-template-columns:1.4fr 1fr 1fr}
  body.context-public .public-home-search .search-destination{grid-column:1/-1}
  body.context-public .public-home-search .search-cta{grid-column:1/-1}
  body.context-public .public-benefit-grid{grid-template-columns:1fr 1fr}
  body.context-public .public-review-grid{grid-template-columns:1fr 1fr}
  body.context-public .destination-list-prefectures{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
  body.context-public .public-home-search{grid-template-columns:1fr!important}
  body.context-public .public-home-search>*{grid-column:1!important}
  body.context-public .home-search-more>div{grid-template-columns:1fr}
  body.context-public .destination-prefecture-grid{display:grid;grid-template-columns:1fr 1fr}
  body.context-public .destination-prefecture{border-radius:14px;justify-content:flex-start}
  body.context-public .public-benefit-grid,body.context-public .public-review-grid{grid-template-columns:1fr}
  body.context-public .public-install-section{align-items:flex-start;flex-direction:column;padding:24px 20px;border-radius:20px}
  body.context-public .public-install-section .btn{width:100%}
  body.context-public .public-resume-search{align-items:flex-start;flex-wrap:wrap}
  body.context-public .public-resume-search .btn{order:3;width:100%}
  body.context-public .public-trust-strip{grid-template-columns:1fr}
  body.context-public .destination-list-prefectures{grid-template-columns:1fr 1fr}
}
@media(max-width:420px){
  body.context-public .destination-prefecture-grid,body.context-public .destination-list-prefectures{grid-template-columns:1fr}
}
body.context-public .public-section-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){body.context-public .public-section-actions{width:100%;justify-content:flex-start}body.context-public .public-section-actions .smart-location-btn{flex:1 1 auto}}
body.context-public .hotel-identity-panel{position:relative}
body.context-public .hotel-identity-panel>.public-favorite-form,body.context-public .hotel-identity-panel>.public-favorite-btn{top:16px;right:16px}
body.context-public .room-price .price-unit{font-size:.68em;font-weight:750;color:#6c7b73}

/* ==========================================================
   GanGanStay R6.4 — FINALISATION PUBLIQUE HUMAINE
   Actions visibles, langage commercial et rendu PDF fidèle.
   ========================================================== */
body.context-public .public-home-search{
  grid-template-columns:minmax(300px,1.8fr) minmax(150px,.9fr) minmax(150px,.9fr) minmax(220px,1.05fr);
}
body.context-public .public-home-search .search-cta{
  grid-column:1/-1!important;
  width:100%;
  min-height:56px;
  font-size:1.05rem;
  letter-spacing:.01em;
}
body.context-public .public-install-inline{
  margin-top:18px;
  min-width:190px;
}
body.context-public .public-destinations-section .destination-prefecture-grid{
  align-items:stretch;
}
body.context-public .public-destinations-section .destination-prefecture{
  border:1px solid var(--x2-line,#dfe7e2);
}
body.context-public .public-featured-section .hotel-result-price .btn{
  min-width:170px;
}
body.context-public .smart-location-btn{
  font-weight:850;
}
@media(max-width:1050px){
  body.context-public .public-home-search{grid-template-columns:1fr 1fr}
  body.context-public .public-home-search .search-destination{grid-column:1/-1}
  body.context-public .public-home-search .search-cta{grid-column:1/-1!important}
}
@media(max-width:700px){
  body.context-public .public-home-search{grid-template-columns:1fr!important}
}
@media print{
  body.context-public .public-home-search .search-cta,
  body.context-public .public-home-hotel-card .btn,
  body.context-public .smart-room-card .btn,
  body.context-public .public-install-section .btn{
    display:inline-flex!important;
  }
  body.context-public .public-home-search .search-cta{width:100%!important}
  body.context-public .public-install-inline{margin-top:14px!important}
}

/* ==========================================================
   GanGanStay R6.4.1 — FINITION PUBLIQUE
   Préfectures compactes, preuve sociale stricte et PDF propre.
   ========================================================== */
body.context-public .public-destinations-section .destination-prefecture-grid{
  gap:8px;
}
body.context-public .public-destinations-section .destination-prefecture{
  min-height:40px;
  padding:8px 14px;
  font-size:.9rem;
  line-height:1.1;
}
body.context-public .public-home-hotel-card .hotel-tags{
  row-gap:7px;
}
body.context-public .public-home-hotel-card .hotel-result-main>.eyebrow,
body.context-public .ggs-search-result-card .hotel-result-main>.eyebrow{
  letter-spacing:.045em;
}
@media(max-width:700px){
  body.context-public .public-destinations-section .destination-prefecture{
    min-height:42px;
    padding:9px 12px;
    font-size:.88rem;
  }
}
@media print{
  body.context-public .market-hero{
    min-height:0!important;
    padding:14px 0 18px!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  body.context-public .market-hero .hero-inner{
    padding-block:14px!important;
    gap:14px!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  body.context-public .market-hero .hero-copy{
    max-width:760px!important;
  }
  body.context-public .market-hero .hero-copy h1{
    font-size:34px!important;
    line-height:1.02!important;
    margin:6px 0 8px!important;
  }
  body.context-public .market-hero .hero-copy p{
    font-size:14px!important;
    margin:0!important;
  }
  body.context-public .public-home-search{
    margin-top:10px!important;
    padding:9px!important;
    gap:7px!important;
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
  body.context-public .public-home-search input,
  body.context-public .public-home-search select{
    min-height:40px!important;
  }
  body.context-public .public-home-search .search-cta{
    min-height:44px!important;
  }
  body.context-public .home-search-more{
    padding-top:2px!important;
  }
  body.context-public .home-search-more>summary{
    padding:5px 3px 2px!important;
  }
  body.context-public .public-destinations-section,
  body.context-public .public-home-hotel-card,
  body.context-public .public-why-section,
  body.context-public .public-install-section,
  body.context-public .public-trust-strip{
    break-inside:avoid!important;
    page-break-inside:avoid!important;
  }
}

/* ==========================================================
   GanGanStay R6.4.2 — CONTOURS RECHERCHE & DATES
   Renforce visuellement les zones essentielles du moteur public.
   ========================================================== */
body.context-public .public-home-search{
  border:1.5px solid #b9cbbf;
  box-shadow:0 22px 50px rgba(4,37,20,.24),0 0 0 1px rgba(18,69,40,.04);
}
body.context-public .public-home-search .search-destination>input:not([type="hidden"]),
body.context-public .public-home-search input[type="date"]{
  border:2px solid #9eb5a7;
  background:#fff;
  box-shadow:0 1px 0 rgba(18,69,40,.04);
}
body.context-public .public-home-search .search-destination>input:not([type="hidden"]):hover,
body.context-public .public-home-search input[type="date"]:hover{
  border-color:#789985;
}
body.context-public .public-home-search .search-destination>input:not([type="hidden"]):focus,
body.context-public .public-home-search input[type="date"]:focus{
  border-color:#17613a;
  box-shadow:0 0 0 3px rgba(23,97,58,.12);
}
@media print{
  body.context-public .public-home-search{
    border:1.5px solid #9eb5a7!important;
  }
  body.context-public .public-home-search .search-destination>input:not([type="hidden"]),
  body.context-public .public-home-search input[type="date"]{
    border:1.5px solid #8ea596!important;
  }
}

/* ==========================================================
   GanGanStay R6.6 — MOTEUR DE RECHERCHE STRUCTURÉ
   Composition inspirée de la référence fournie, palette GanGanStay.
   Aucun changement des noms de champs ou de la route backend.
   ========================================================== */
body.context-public .market-hero .hero-inner{
  gap:24px;
}
body.context-public .public-home-search.home-search-reference{
  position:relative;
  display:block;
  width:min(100%,920px);
  margin:42px auto 20px;
  padding:30px 24px 28px;
  border:1px solid #c7d4cc;
  border-radius:20px;
  background:#fff;
  box-shadow:0 18px 38px rgba(4,37,20,.20);
  color:var(--ns-text);
  overflow:visible;
}
body.context-public .home-search-tabs{
  position:absolute;
  top:-26px;
  left:50%;
  transform:translateX(-50%);
  z-index:8;
  display:flex;
  align-items:center;
  gap:2px;
  width:max-content;
  max-width:calc(100% - 28px);
  padding:4px;
  border:1px solid #d9e2dc;
  border-radius:14px;
  background:#fff;
  box-shadow:0 8px 20px rgba(8,54,31,.12);
  overflow-x:auto;
  scrollbar-width:none;
}
body.context-public .home-search-tabs::-webkit-scrollbar{display:none}
body.context-public .home-search-tab{
  flex:0 0 auto;
  min-height:34px;
  padding:7px 13px;
  border:0;
  border-radius:10px;
  background:transparent;
  color:#5f6b64;
  font-size:.78rem;
  font-weight:800;
  white-space:nowrap;
  cursor:pointer;
}
body.context-public .home-search-tab:hover{background:#eef6f1;color:#0b5d37}
body.context-public .home-search-tab.is-active,
body.context-public .home-search-tab[aria-pressed="true"]{
  background:#edf6f0;
  color:#075b35;
  box-shadow:inset 0 -2px 0 #0b5d37;
}

body.context-public .home-search-destination{
  position:relative;
  margin-bottom:10px;
}
body.context-public .home-search-destination>label{
  display:block;
  margin:0 0 5px;
  color:#4a5a51;
  font-size:.74rem;
  font-weight:800;
}
body.context-public .home-search-input-wrap{
  position:relative;
}
body.context-public .home-search-leading-icon{
  position:absolute;
  left:13px;
  top:50%;
  transform:translateY(-50%);
  z-index:2;
  color:#355b46;
  font-size:1.15rem;
  pointer-events:none;
}
body.context-public .home-search-destination .home-search-input-wrap>input{
  width:100%;
  height:46px;
  min-height:46px;
  padding:9px 14px 9px 40px;
  border:1.5px solid #a8bbae;
  border-radius:10px;
  background:#fff;
  font-size:.94rem;
}
body.context-public .home-search-destination .home-search-input-wrap>input:hover{border-color:#789985}
body.context-public .home-search-destination .home-search-input-wrap>input:focus{
  border-color:#17613a;
  box-shadow:0 0 0 3px rgba(23,97,58,.10);
}

body.context-public .home-search-main-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(250px,1.45fr);
  gap:8px;
  align-items:stretch;
}
body.context-public .home-search-field{
  position:relative;
  display:grid;
  gap:2px;
  min-width:0;
  min-height:50px;
  margin:0;
  padding:6px 10px 5px;
  border:1px solid #d4ddd7;
  border-radius:10px;
  background:#fff;
  cursor:pointer;
}
body.context-public .home-search-field:hover{border-color:#a8bbae}
body.context-public .home-search-field:focus-within{
  border-color:#17613a;
  box-shadow:0 0 0 3px rgba(23,97,58,.09);
}
body.context-public .home-search-field-label{
  color:#56675e;
  font-size:.67rem;
  font-weight:800;
  line-height:1.1;
}
body.context-public .home-search-field input[type="date"]{
  width:100%;
  min-height:24px;
  height:24px;
  padding:0 1px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  color:#27352e;
  font-size:.88rem;
  font-weight:650;
}
body.context-public .home-search-field input[type="date"]:focus{outline:0;box-shadow:none}
body.context-public .home-search-checkout [data-ggs-date-summary]{
  position:absolute;
  top:5px;
  right:35px;
  margin:0;
  padding:2px 6px;
  min-height:0;
  border-radius:999px;
  background:#edf6f0;
  color:#0b5d37;
  font-size:.62rem;
  font-weight:850;
  line-height:1.2;
}

body.context-public .home-search-guests{
  position:relative;
  min-width:0;
}
body.context-public .home-search-guests>summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  min-height:50px;
  padding:7px 12px;
  border:1px solid #d4ddd7;
  border-radius:10px;
  background:#fff;
  list-style:none;
  cursor:pointer;
}
body.context-public .home-search-guests>summary::-webkit-details-marker{display:none}
body.context-public .home-search-guests>summary:hover{border-color:#a8bbae}
body.context-public .home-search-guests[open]>summary{
  border-color:#17613a;
  box-shadow:0 0 0 3px rgba(23,97,58,.09);
}
body.context-public .home-search-guests-copy{display:grid;gap:2px;min-width:0}
body.context-public .home-search-guests-copy small{
  color:#56675e;
  font-size:.67rem;
  font-weight:800;
}
body.context-public .home-search-guests-copy strong{
  overflow:hidden;
  color:#27352e;
  font-size:.88rem;
  font-weight:700;
  text-overflow:ellipsis;
  white-space:nowrap;
}
body.context-public .home-search-guests>summary>b{color:#65756d;font-size:.9rem}
body.context-public .home-search-guests-panel{
  position:absolute;
  top:calc(100% + 7px);
  right:0;
  z-index:130;
  width:min(330px,calc(100vw - 32px));
  padding:8px 14px;
  border:1px solid #d8e1db;
  border-radius:14px;
  background:#fff;
  box-shadow:0 18px 42px rgba(7,49,28,.18);
}
body.context-public .home-search-guests-panel>label{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:10px 0;
  border-bottom:1px solid #eef2ef;
  margin:0;
}
body.context-public .home-search-guests-panel>label:last-child{border-bottom:0}
body.context-public .home-search-guests-panel>label>span:first-child{display:grid;gap:2px}
body.context-public .home-search-guests-panel>label strong{font-size:.84rem}
body.context-public .home-search-guests-panel>label small{color:#748079;font-size:.7rem}
body.context-public .home-search-stepper{display:grid;grid-template-columns:30px 44px 30px;align-items:center;gap:4px}
body.context-public .home-search-stepper button{
  width:30px;
  height:30px;
  padding:0;
  border:1px solid #cfdad2;
  border-radius:999px;
  background:#fff;
  color:#0b5d37;
  font-size:1rem;
  font-weight:900;
  cursor:pointer;
}
body.context-public .home-search-stepper button:hover{background:#edf6f0}
body.context-public .home-search-stepper input{
  width:44px;
  min-width:44px;
  height:30px;
  min-height:30px;
  padding:3px 4px;
  border:1px solid #dde4df;
  border-radius:8px;
  text-align:center;
  font-size:.82rem;
}

body.context-public .home-search-more{
  margin:9px 0 0;
  padding:0;
  border-top:1px solid #edf1ee;
}
body.context-public .home-search-more>summary{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  min-height:32px;
  padding:7px 2px 0;
  color:#4b5f54;
  font-size:.73rem;
  font-weight:800;
  list-style:none;
  cursor:pointer;
}
body.context-public .home-search-more>summary::-webkit-details-marker{display:none}
body.context-public .home-search-more>summary span{
  margin-left:auto;
  color:#7b887f;
  font-weight:650;
}
body.context-public .home-search-more>summary:after{
  content:'+';
  display:grid;
  place-items:center;
  width:22px;
  height:22px;
  border-radius:999px;
  background:#edf6f0;
  color:#0b5d37;
  font-size:.9rem;
}
body.context-public .home-search-more[open]>summary:after{content:'−'}
body.context-public .home-search-more>div{
  display:grid;
  grid-template-columns:minmax(210px,320px);
  padding:7px 0 0;
}
body.context-public .home-search-more label{margin-bottom:4px;font-size:.72rem}
body.context-public .home-search-more select{
  min-height:38px;
  height:38px;
  padding:6px 10px;
  border-radius:9px;
}

body.context-public .public-home-search .search-cta{
  display:flex;
  align-items:center;
  justify-content:center;
  width:min(360px,70%);
  min-width:0;
  min-height:42px;
  height:42px;
  margin:13px auto -21px;
  padding:0 22px;
  border-radius:999px;
  background:var(--x2-orange);
  border-color:var(--x2-orange);
  font-size:.88rem;
  font-weight:850;
  box-shadow:0 10px 24px rgba(239,105,37,.18);
}
body.context-public .public-home-search .search-cta:hover{background:var(--x2-orange-hover)}

@media(max-width:780px){
  body.context-public .public-home-search.home-search-reference{
    width:min(100%,700px);
    margin-top:38px;
    padding:28px 18px 28px;
  }
  body.context-public .home-search-main-row{
    grid-template-columns:1fr 1fr;
  }
  body.context-public .home-search-guests{grid-column:1/-1}
  body.context-public .home-search-guests-panel{left:0;right:auto;width:min(100%,360px)}
  body.context-public .public-home-search .search-cta{width:min(360px,82%)}
}

@media(max-width:560px){
  body.context-public .market-hero .hero-inner{gap:20px}
  body.context-public .public-home-search.home-search-reference{
    width:100%;
    margin-top:34px;
    padding:27px 10px 28px;
    border-radius:16px;
  }
  body.context-public .home-search-tabs{
    left:8px;
    right:8px;
    transform:none;
    width:auto;
    max-width:none;
    justify-content:flex-start;
  }
  body.context-public .home-search-tab{padding-inline:11px;font-size:.73rem}
  body.context-public .home-search-destination{margin-bottom:8px}
  body.context-public .home-search-destination .home-search-input-wrap>input{height:44px;min-height:44px;font-size:.9rem}
  body.context-public .home-search-main-row{grid-template-columns:1fr;gap:7px}
  body.context-public .home-search-guests{grid-column:auto}
  body.context-public .home-search-guests-panel{position:static;width:100%;margin-top:6px;box-shadow:none}
  body.context-public .home-search-more>div{grid-template-columns:1fr}
  body.context-public .public-home-search .search-cta{width:100%;height:44px;min-height:44px;margin-bottom:-22px}
}

@media print{
  body.context-public .public-home-search.home-search-reference{
    width:92%!important;
    max-width:820px!important;
    margin:30px auto 12px!important;
    padding:24px 16px 24px!important;
    border:1px solid #b9cbbf!important;
    box-shadow:none!important;
  }
  body.context-public .home-search-tabs{top:-22px!important;box-shadow:none!important}
  body.context-public .home-search-main-row{grid-template-columns:1fr 1fr 1.25fr!important}
  body.context-public .home-search-guests-panel{display:none!important}
  body.context-public .home-search-destination .home-search-input-wrap>input{height:38px!important;min-height:38px!important}
  body.context-public .home-search-field,body.context-public .home-search-guests>summary{min-height:44px!important}
  body.context-public .public-home-search .search-cta{width:300px!important;height:36px!important;min-height:36px!important;margin-bottom:-18px!important}
}

/* GanGanStay R6.7 — home search behavior aligned with the validated reference */
body.context-public .home-search-main-row{grid-template-columns:minmax(0,1.7fr) minmax(250px,1fr);gap:9px}
body.context-public .home-search-date-range{min-width:0;min-height:56px;padding:4px 8px 6px;border:1px solid #d4ddd7;border-radius:10px;background:#fff}
body.context-public .home-search-date-range>legend{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
body.context-public .home-search-date-range .ggs-search-native-dates{grid-template-columns:1fr 1fr}
body.context-public .home-search-date-range .home-search-date-trigger{display:none;grid-template-columns:1fr auto 1fr auto;gap:10px;align-items:center;width:100%;min-height:48px;padding:2px 4px;border:0;background:transparent;color:#27352e;text-align:left}
body.context-public .ggs-search-core-ready .home-search-date-range .ggs-search-native-dates{display:none}
body.context-public .ggs-search-core-ready .home-search-date-range .home-search-date-trigger{display:grid}
body.context-public .home-search-date-trigger>span:not(.ggs-search-date-arrow){display:grid;gap:2px}
body.context-public .home-search-date-trigger small{font-size:.67rem;color:#56675e;font-weight:800}
body.context-public .home-search-date-trigger strong{font-size:.88rem;font-weight:700}
body.context-public .home-search-date-trigger b{white-space:nowrap;background:#edf6f0;color:#0b5d37;border-radius:999px;padding:5px 8px;font-size:.65rem}
body.context-public .home-search-guests.ggs-search-guests>summary{min-height:56px}
body.context-public .home-search-guests .ggs-search-steppers.home-search-guests-panel{width:min(360px,calc(100vw - 32px));padding:10px 14px}
body.context-public .home-search-guests .ggs-search-guests-done{display:flex;align-items:center;justify-content:center;color:#0b5d37;border-color:#cbdacf;background:#f6faf7}
body.context-public .home-search-more>div.ggs-search-filter-panel{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;width:100%;padding:10px 0 2px}
body.context-public .home-search-more .home-filter-amenities{display:flex;grid-column:1/-1;flex-wrap:wrap;gap:7px}
body.context-public .home-search-more .home-filter-check{display:inline-flex}
body.context-public .ggs-search-geo-status{position:relative;z-index:4}

@media(max-width:780px){
  body.context-public .home-search-main-row{grid-template-columns:1fr}
  body.context-public .home-search-more>div.ggs-search-filter-panel{grid-template-columns:1fr 1fr}
}
@media(max-width:560px){
  body.context-public .home-search-date-range .home-search-date-trigger{grid-template-columns:1fr auto 1fr}
  body.context-public .home-search-date-range .home-search-date-trigger b{grid-column:1/-1;justify-self:start}
  body.context-public .home-search-more>div.ggs-search-filter-panel{grid-template-columns:1fr}
}
@media print{
  body.context-public .home-search-main-row{grid-template-columns:1.7fr 1fr!important}
  body.context-public .home-search-date-range .home-search-date-trigger{display:grid!important}
}

.auth-password-error{display:block;margin:8px 0 14px;color:#962b2b;font-size:10.5px;font-weight:750;line-height:1.45;white-space:nowrap}.auth-password-error a{color:#962b2b;text-decoration:underline;text-underline-offset:2px}@media(max-width:560px){.auth-password-error{white-space:normal}}

/* GanGanStay R7.3.22.2 - gestion des postes : panneau lisible pleine largeur */
.platform-role-toggle{white-space:nowrap}
.platform-role-editor-row[hidden]{display:none!important}
.platform-role-editor-row>td{padding:0 14px 16px;background:#f7faf8}
.platform-role-editor{padding:18px;border:1px solid #d7e4dc;border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(15,48,30,.06)}
.platform-role-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:14px;margin-bottom:16px;border-bottom:1px solid #e5ece8}
.platform-role-editor-head strong{font-size:1rem;color:#123e28}
.platform-role-editor-head p{margin:3px 0 0}
.platform-role-editor-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(250px,.55fr);gap:18px;align-items:start}
.platform-role-section,.platform-account-actions{padding:16px;border:1px solid #e0e8e3;border-radius:14px;background:#fbfdfc}
.platform-role-section h3,.platform-account-actions h3{margin:0 0 10px;font-size:1rem}
.platform-role-section>.btn{margin-top:12px}
.platform-role-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:0;border:0}
.platform-role-option{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:10px;padding:11px;border:1px solid #e3ebe6;background:#fff}
.platform-role-option input[type="checkbox"]{width:18px!important;min-width:18px;height:18px;min-height:18px;padding:0;margin:2px 0 0;accent-color:#0a5b36}
.platform-role-option:has(input:checked){border-color:#a9c9b7;background:#f1f8f4}
.platform-role-option span{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere}
.platform-role-option strong{font-size:.78rem;color:#173f2a}
.platform-role-option small{color:#66766d;font-size:.69rem;line-height:1.35}
.platform-account-actions>p{margin:0 0 12px;font-size:.78rem}
.platform-account-actions .inline-action{display:grid;grid-template-columns:1fr;gap:8px}
.platform-account-actions .inline-action .btn{width:100%}
@media(max-width:900px){
 .platform-role-editor-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
 .admin-v24-app .platform-team-table .platform-role-editor-row[hidden]{display:none!important}
 .admin-v24-app .platform-team-table .platform-role-editor-row{padding:0;border:0;box-shadow:none;background:transparent}
 .admin-v24-app .platform-team-table .platform-role-editor-row td{display:block;padding:0;border:0}
 .admin-v24-app .platform-team-table .platform-role-editor-row td::before{display:none}
 .platform-role-editor{padding:14px}
 .platform-role-editor-head{align-items:flex-start}
 .platform-role-picker{grid-template-columns:1fr}
}

/* R7.3.26 — espace Agent établissement */
.agent-establishment-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px}
.agent-establishment-filters .active{border-color:var(--green,#0c6840);background:#eef8f2}
.agent-establishments-list{display:grid;gap:12px}
.agent-establishment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:16px 18px;background:#fff;border:1px solid var(--line,#dfe7e1);border-radius:14px}
.agent-establishment-main{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0}
.agent-establishment-main strong{display:block;font-size:1rem}.agent-establishment-main small{display:block;margin-top:4px;color:var(--muted,#66756b)}
.agent-workflow-state{white-space:nowrap}.agent-establishment-action{display:flex;align-items:flex-end;gap:8px;flex-direction:column}.agent-next-action{white-space:nowrap}
@media(max-width:760px){.agent-establishment-row{grid-template-columns:1fr}.agent-establishment-main{align-items:flex-start;flex-direction:column}.agent-establishment-action{align-items:stretch}.agent-next-action{text-align:center}}
.agent-draft-form .field-error{display:block;margin-top:5px;color:#b42318;font-size:.82rem}.agent-draft-form [aria-invalid="true"]{border-color:#b42318}.agent-section-save{margin-top:12px}.agent-draft-form .form-section{scroll-margin-top:90px}
/* GGS-LEGAL-01 : pages légales et liens légaux du pied de page */
.legal-page{width:min(860px,calc(100% - 32px))}.legal-panel h1{margin:6px 0 4px}.legal-body{line-height:1.7;color:var(--ink,#18231d)}.legal-body h2{font-size:20px;margin:28px 0 8px}.legal-body h3{font-size:16px;margin:20px 0 6px}.legal-body ul{padding-left:22px;margin:8px 0}.legal-body li{margin:4px 0}.legal-body a{color:var(--green2,#246b3e);text-decoration:underline}
.legal-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px;padding-top:18px;border-top:1px solid var(--line,#e4e9e6)}.legal-nav a{font-size:13px;padding:6px 12px;border:1px solid var(--line,#e4e9e6);border-radius:999px;color:var(--muted,#66736b)}.legal-nav a.active{background:var(--green,#174b2c);border-color:var(--green,#174b2c);color:#fff}
.footer-legal{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:24px;font-size:13px}.footer-legal a{color:#b9cbbf}.footer-legal a:hover{color:#fff}
.booking-terms a,.ggs-booking-terms a{text-decoration:underline}
/* GGS-UI-01 : liens du pied de page lisibles (une règle globale « a » les rendait vert sur vert). */
.public-footer .footer-grid a{color:#dfece3}.public-footer .footer-grid a:hover{color:#fff}
/* GGS-UI-02 : logo des espaces établissement, administration et voyageur de nouveau visible
   (il était inversé en blanc sur fond blanc) ; logo du pied de page lisible sur fond vert. */
aside.workspace-sidebar .workspace-logo{display:flex;align-items:center;justify-content:center;background:#fff;border-radius:14px;padding:8px 10px;margin:0 0 14px;height:auto}
aside.workspace-sidebar .workspace-logo img{filter:none;max-height:56px;height:auto;width:auto}
.public-footer .footer-logo{background:#fff;border-radius:12px;padding:6px 10px;height:66px;width:auto;object-fit:contain;align-self:flex-start}

/* GGS 24/10/2026 — séjour mobile final : destination claire, steppers tactiles, une seule action. */
.ggs-stay-destination{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 0 8px;padding:12px 14px;border:1px solid #e1e8e3;border-radius:14px;background:#f7faf8}
.ggs-stay-destination>span{display:grid;gap:2px;min-width:0}
.ggs-stay-destination small{font-size:12px;font-weight:800;color:#66766d;text-transform:uppercase;letter-spacing:.04em}
.ggs-stay-destination strong{font-size:15px;line-height:1.3;color:#14251b;overflow-wrap:anywhere}
.ggs-stay-change{flex:none;display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:7px 13px;border:1px solid #cfe0d4;border-radius:999px;background:#eef7f1;color:#15522f;font-weight:800;text-decoration:none}
.ggs-stay-people>div{min-width:0}
.ggs-stay-stepper{display:grid;grid-template-columns:48px minmax(56px,1fr) 48px;align-items:center;gap:8px;width:100%}
.ggs-stay-stepper button{display:grid;place-items:center;width:48px;height:48px;padding:0;border:1px solid #cfdad3;border-radius:50%;background:#fff;color:#0d5a35;font-size:25px;font-weight:800;line-height:1;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.ggs-stay-stepper button:active{background:#e8f5ec;transform:scale(.97)}
.ggs-stay-stepper button:disabled{opacity:.38;cursor:not-allowed;transform:none}
.ggs-stay-stepper input[type=number]{width:100%;height:48px;padding:0 8px;border:0!important;background:transparent!important;box-shadow:none!important;text-align:center;font-size:18px;font-weight:850;color:#16231c;-moz-appearance:textfield}
.ggs-stay-stepper input[type=number]::-webkit-inner-spin-button,.ggs-stay-stepper input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
@media(max-width:720px){
  .ggs-stay-summary{padding:16px!important}
  .ggs-stay-summary>summary{align-items:flex-start}
  .ggs-stay-summary>summary strong{font-size:16px}
  .ggs-stay-destination{margin-top:12px;padding:12px}
  .ggs-stay-form .grid.grid-2,.ggs-stay-form .grid.grid-3{grid-template-columns:1fr!important;gap:14px!important}
  .ggs-stay-form label{font-weight:800;margin-bottom:6px;display:block}
  .ggs-stay-form input[type=date]{min-height:52px;font-size:16px}
  .ggs-stay-stepper{grid-template-columns:54px 1fr 54px;gap:12px;padding:6px 8px;border:1px solid #dce5df;border-radius:16px;background:#fff}
  .ggs-stay-stepper button{width:52px;height:52px;font-size:28px}
  .ggs-stay-stepper input[type=number]{height:52px;font-size:19px}
  .ggs-stay-form .full-btn{min-height:56px;margin-top:16px;font-size:16px;font-weight:900;border-radius:14px}
  body.context-public .ggs-x2-room-jump,body.context-public .ggs-p20-room-jump{display:none!important}
}

/* GGS account properties pulse — 25/10/2026 */
.property-pulse{display:grid;gap:12px;padding:14px;border:1px solid var(--ns-line,#e4e9e6);border-radius:14px;background:#fbfdfb}
.property-pulse-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.property-pulse-head>strong{font-size:1rem;color:var(--ns-forest,#174b2c)}
.property-pulse-alert{font-size:.86rem;font-weight:800;white-space:nowrap}
.property-pulse-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.property-pulse-grid>div{display:grid;gap:3px;min-width:0;padding:11px;border:1px solid #e5ece7;border-radius:12px;background:#fff}
.property-pulse-grid span{color:#65746b;font-size:.76rem;font-weight:700}
.property-pulse-grid strong{font-size:1.25rem;line-height:1.1;color:#123f27}
.property-pulse-grid small{color:#65746b;line-height:1.3}
.property-pulse-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-radius:11px;background:#f2f7f3}
.property-pulse-row span{color:#65746b;font-size:.82rem;font-weight:700}
.property-pulse-row strong{text-align:right;font-size:.9rem}
.property-pulse-links{display:flex;gap:8px;flex-wrap:wrap}
.property-pulse-links a{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:7px 11px;border:1px solid #d9e4dc;border-radius:10px;background:#fff;color:var(--ns-forest,#174b2c);font-size:.85rem;font-weight:800;text-decoration:none}
.property-pulse-links a:hover{background:#f2f7f3}
@media(max-width:820px){.property-pulse-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:460px){.property-pulse{padding:12px}.property-pulse-head{align-items:flex-start;flex-direction:column}.property-pulse-alert{white-space:normal}.property-pulse-grid{grid-template-columns:1fr 1fr}.property-pulse-grid>div{padding:10px}.property-pulse-row{align-items:flex-start;flex-direction:column}.property-pulse-row strong{text-align:left}.property-pulse-links a{flex:1 1 calc(50% - 4px)}}
@media(max-width:350px){.property-pulse-grid{grid-template-columns:1fr}.property-pulse-links a{flex-basis:100%}}

/* GanGanStay R8.2 - établissement pulse final */
.property-pulse-alert[href]{display:inline-flex;align-items:center;gap:4px;text-decoration:none;color:inherit;border-radius:9px;padding:4px 7px;margin:-4px -7px}
.property-pulse-alert[href]:hover,.property-pulse-alert[href]:focus-visible{background:#fff3e8;outline:none}
.property-pulse-upcoming{border:1px solid #e5ece7;background:#fff}

/* GANGANSTAY_SCANNER_RECEPTION_RESPONSIVE_2026_10_25
   Interface uniquement : aucune regle QR/check-in n'est modifiee ici. */
.scanner-reception{max-width:820px!important;margin-inline:auto}
.scanner-heading{margin-bottom:14px}.scanner-heading h1{margin:.25rem 0 .4rem}.scanner-heading>p{margin:.2rem 0}.scanner-heading .eyebrow{color:#0a5b36;font-weight:900;letter-spacing:.08em;font-size:.72rem}
.scanner-camera-stage{display:block}
.scanner-camera-stage .camera-box{position:relative;width:100%;height:clamp(300px,42dvh,410px);min-height:0!important;margin:0 auto 10px;border-radius:20px;overflow:hidden;background:#09130d;box-shadow:0 10px 28px rgba(0,0,0,.11)}
.scanner-camera-stage .camera-box video{display:block;width:100%;height:100%;min-height:0!important;object-fit:cover;background:#09130d}
.scanner-camera-stage .camera-guide{inset:14% 22%;border-radius:18px;opacity:.92}
.scanner-camera-idle{position:absolute;z-index:5;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;color:#173025;background:linear-gradient(180deg,rgba(248,252,249,.98),rgba(238,247,241,.98))}
.scanner-camera-idle[hidden]{display:none!important}
.scanner-camera-idle strong{font-size:1.18rem}.scanner-camera-idle>span{max-width:460px;color:#66766d;font-size:.92rem;line-height:1.4}.scanner-main-action{min-width:210px;margin-top:2px}
.scanner-qr-mark{width:64px;height:64px;border-radius:18px;background:#e4f3e9;position:relative;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:7px;padding:13px}
.scanner-qr-mark span{display:block;border:4px solid #0a5b36;border-radius:3px}.scanner-qr-mark span:nth-child(4){border-width:0;background:linear-gradient(90deg,#0a5b36 0 38%,transparent 38% 62%,#0a5b36 62%),linear-gradient(#0a5b36 0 38%,transparent 38% 62%,#0a5b36 62%)}
.scanner-camera-stage .camera-box>p[data-scanner-status]{z-index:4;left:14px;right:14px;bottom:12px;padding:9px 11px;font-size:.9rem;line-height:1.3}.scanner-camera-idle:not([hidden])~p[data-scanner-status]{display:none}
.scanner-privacy{margin:0 2px 10px;color:#6d7d74;line-height:1.35}
.scanner-camera-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}.scanner-camera-actions .btn{min-height:42px;flex:0 1 auto}
.scanner-alternatives{margin-top:14px;border:1px solid #dce5df;border-radius:16px;background:#fff;overflow:hidden}.scanner-alternatives>summary{cursor:pointer;list-style:none;padding:14px 16px;font-weight:850;color:#173025;display:flex;align-items:center;justify-content:space-between}.scanner-alternatives>summary::-webkit-details-marker{display:none}.scanner-alternatives>summary:after{content:'+';display:grid;place-items:center;width:28px;height:28px;border-radius:999px;background:#edf5f0;color:#0a5b36;font-size:1.15rem}.scanner-alternatives[open]>summary:after{content:'−'}.scanner-alternatives-body{border-top:1px solid #e5ece7;padding:16px}.scanner-alternatives .scanner-manual{margin:0}.scanner-alternatives .scanner-manual label{font-size:.95rem}
.scanner-reception.scanner-has-error .scanner-alternatives{border-color:#efc9be}.scanner-reception.scanner-has-error .scanner-alternatives>summary{background:#fff7f3}
.camera-box.is-live:before{content:'Caméra active';position:absolute;z-index:3;top:12px;left:12px;background:rgba(7,79,44,.92);color:#fff;border-radius:999px;padding:6px 10px;font-size:.75rem;font-weight:800}

/* Tablettes : cadre large mais contenu et commandes restent dans le premier viewport. */
@media(min-width:701px) and (max-width:1100px){
 .scanner-reception{max-width:760px!important}.scanner-camera-stage .camera-box{height:clamp(310px,44dvh,430px)}.scanner-camera-stage .camera-guide{inset:13% 15%}.scanner-camera-actions .btn{flex:1 1 30%}
}

/* Android/iPhone : camera prioritaire, format 4:3, boutons tactiles et aucun debordement horizontal. */
@media(max-width:700px){
 .workspace-page:has(.scanner-reception){padding:14px 10px 18px}
 .scanner-reception{max-width:none!important;width:100%}.scanner-heading{margin-bottom:10px}.scanner-heading h1{font-size:1.65rem;line-height:1.12}.scanner-heading>p{font-size:.9rem;line-height:1.35}.scanner-heading .eyebrow{font-size:.68rem}
 .scanner-camera-stage .camera-box{width:100%;height:auto;aspect-ratio:4/3;min-height:260px!important;max-height:52dvh;border-radius:16px;margin-bottom:8px}.scanner-camera-stage .camera-box video{height:100%;min-height:0!important}.scanner-camera-stage .camera-guide{inset:11% 9%;border-radius:16px}
 .scanner-camera-idle{padding:18px 14px;gap:8px}.scanner-camera-idle strong{font-size:1.05rem}.scanner-camera-idle>span{font-size:.84rem}.scanner-qr-mark{width:56px;height:56px;padding:11px;border-radius:15px}.scanner-main-action{width:min(100%,320px);min-height:48px}
 .scanner-camera-stage .camera-box>p[data-scanner-status]{left:9px;right:9px;bottom:8px;font-size:.82rem;padding:8px 9px}.camera-box.is-live:before{top:9px;left:9px}
 .scanner-privacy{font-size:.76rem;margin-bottom:8px}.scanner-camera-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}.scanner-camera-actions .btn{width:100%;min-height:46px;padding:9px 8px}.scanner-camera-actions .btn:last-child:nth-child(odd){grid-column:1/-1}
 .scanner-alternatives{margin-top:10px}.scanner-alternatives>summary{padding:13px 14px;min-height:50px}.scanner-alternatives-body{padding:13px}.scanner-alternatives .inline-search{grid-template-columns:1fr}.scanner-alternatives .inline-search .btn{width:100%;min-height:48px}
}

@media(max-width:430px){
 .scanner-heading>p.muted{font-size:.84rem}.scanner-camera-stage .camera-box{min-height:245px!important;max-height:48dvh}.scanner-camera-actions{grid-template-columns:1fr}.scanner-camera-actions .btn:last-child:nth-child(odd){grid-column:auto}.scanner-camera-idle>span{max-width:290px}
}

/* iPhone/Safari : conserver la video dans la page et respecter la zone basse. */
@supports(padding:max(0px)){.scanner-reception{padding-bottom:max(0px,env(safe-area-inset-bottom))}}

/* GANGANSTAY_SCANNER_VIEWPORT_FIT_2026_10_25
   Correctif d'affichage uniquement : garder camera + commandes utiles dans le premier ecran sur ordinateur,
   sans modifier les regles QR, les permissions ni le parcours check-in. */
@media(min-width:1101px){
  .workspace-page:has(.scanner-reception){padding-top:18px;padding-bottom:18px}
  .scanner-reception{max-width:860px!important}
  .scanner-heading{margin-bottom:9px}
  .scanner-heading h1{font-size:clamp(1.9rem,2.35vw,2.35rem);line-height:1.08;margin:.12rem 0 .28rem}
  .scanner-heading>p{margin:.08rem 0;line-height:1.28}
  .scanner-heading>p.muted{font-size:.9rem;max-width:780px}
  .scanner-camera-stage .camera-box{height:clamp(220px,31dvh,300px);min-height:220px!important;max-height:300px;margin-bottom:7px}
  .scanner-camera-stage .camera-guide{width:min(46%,250px);height:auto;aspect-ratio:1;inset:50% auto auto 50%;transform:translate(-50%,-50%);border-radius:18px}
  .scanner-privacy{font-size:.76rem;margin:0 2px 6px}
  .scanner-camera-actions{margin-top:0;gap:7px}
  .scanner-camera-actions .btn{min-height:38px;padding:8px 12px}
  .scanner-alternatives{margin-top:9px}
  .scanner-alternatives>summary{min-height:44px;padding:10px 14px}
}

/* Tablette paysage : cadrage plus compact pour eviter le scroll avant les commandes. */
@media(min-width:701px) and (max-width:1100px) and (orientation:landscape){
  .workspace-page:has(.scanner-reception){padding-top:16px;padding-bottom:16px}
  .scanner-heading{margin-bottom:8px}
  .scanner-heading h1{font-size:1.85rem;margin:.12rem 0 .25rem}
  .scanner-heading>p{margin:.08rem 0;line-height:1.28}
  .scanner-camera-stage .camera-box{height:clamp(230px,36dvh,300px);min-height:230px!important;max-height:300px}
  .scanner-camera-stage .camera-guide{width:min(52%,240px);height:auto;aspect-ratio:1;inset:50% auto auto 50%;transform:translate(-50%,-50%)}
  .scanner-privacy{margin-bottom:6px}
  .scanner-alternatives{margin-top:9px}
}

/* Tablette portrait : conserver un vrai cadre de scan sans occuper tout le viewport. */
@media(min-width:701px) and (max-width:1100px) and (orientation:portrait){
  .scanner-camera-stage .camera-box{height:clamp(280px,38dvh,360px);min-height:280px!important;max-height:360px}
  .scanner-camera-stage .camera-guide{width:min(54%,270px);height:auto;aspect-ratio:1;inset:50% auto auto 50%;transform:translate(-50%,-50%)}
}

/* Telephone : le cadre QR reste carre au centre, quelle que soit la hauteur du telephone. */
@media(max-width:700px){
  .scanner-camera-stage .camera-guide{width:min(68%,260px);height:auto;aspect-ratio:1;inset:50% auto auto 50%;transform:translate(-50%,-50%)}
}

/* GANGANSTAY_SCANNER_DESKTOP_SHORT_VIEWPORT_2026_10_25
   Ajustement d'ergonomie uniquement : sur les ecrans desktop peu hauts,
   garder la camera, les commandes et la methode de secours dans le premier viewport.
   Aucun comportement QR/check-in n'est modifie. */
@media(min-width:1101px) and (max-height:950px){
  .workspace-page:has(.scanner-reception){padding-top:10px;padding-bottom:12px}
  .scanner-reception{max-width:860px!important}
  .scanner-heading{margin-bottom:6px}
  .scanner-heading h1{font-size:clamp(1.78rem,2.1vw,2.15rem);margin:.05rem 0 .18rem}
  .scanner-heading>p{margin:.04rem 0;line-height:1.2}
  .scanner-heading>p.muted{font-size:.84rem;max-width:780px}
  .scanner-camera-stage .camera-box{height:clamp(185px,23dvh,210px);min-height:185px!important;max-height:210px;margin-bottom:5px}
  .scanner-camera-stage .camera-guide{width:min(42%,180px);max-height:calc(100% - 28px)}
  .scanner-camera-stage .camera-box>p[data-scanner-status]{left:10px;right:10px;bottom:8px;padding:7px 9px;font-size:.8rem}
  .camera-box.is-live:before{top:8px;left:8px;padding:5px 8px;font-size:.7rem}
  .scanner-privacy{font-size:.71rem;line-height:1.2;margin:0 2px 4px}
  .scanner-camera-actions{gap:6px}
  .scanner-camera-actions .btn{min-height:36px;padding:7px 10px;font-size:.82rem}
  .scanner-alternatives{margin-top:6px}
  .scanner-alternatives>summary{min-height:40px;padding:8px 12px;font-size:.9rem}
}

/* Petits ecrans d'ordinateur portable : donner la priorite absolue au geste de scan. */
@media(min-width:1101px) and (max-height:820px){
  .workspace-page:has(.scanner-reception){padding-top:6px;padding-bottom:8px}
  .scanner-heading{margin-bottom:4px}
  .scanner-heading .eyebrow{font-size:.64rem}
  .scanner-heading h1{font-size:1.72rem;line-height:1.02;margin:.02rem 0 .12rem}
  .scanner-heading>p{font-size:.82rem;line-height:1.15}
  .scanner-heading>p.muted{font-size:.78rem}
  .scanner-camera-stage .camera-box{height:clamp(155px,20dvh,175px);min-height:155px!important;max-height:175px}
  .scanner-camera-stage .camera-guide{width:min(38%,145px)}
  .scanner-privacy{font-size:.68rem;margin-bottom:3px}
  .scanner-camera-actions .btn{min-height:34px;padding:6px 9px;font-size:.78rem}
  .scanner-alternatives{margin-top:5px}
  .scanner-alternatives>summary{min-height:38px;padding:7px 11px;font-size:.86rem}
}
/* --- assets/ganganstay-mobile-v28.css --- */

/* GANGANSTAY_EXPERIENCE_2_PHASE28_MOBILE_PREMIUM_CSS */

/* Skip-link invisible until keyboard focus, even if an older app.css is cached. */
.skip-link:not(:focus):not(:focus-visible){
  position:fixed!important;
  width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;
  overflow:hidden!important;clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important;
}
.skip-link:focus,.skip-link:focus-visible{
  position:fixed!important;z-index:99999!important;left:12px!important;top:10px!important;
  width:auto!important;height:auto!important;margin:0!important;padding:10px 14px!important;
  overflow:visible!important;clip:auto!important;clip-path:none!important;
  background:#fff!important;color:#073b24!important;border:2px solid #073b24!important;border-radius:10px!important;
}

/* ---------- Confirmation premium ---------- */
.ggs28-confirmation-page{padding-top:28px;padding-bottom:72px;max-width:1080px}
.ggs28-confirmation-hero{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:16px;align-items:center;
  border:1px solid #cde3d4;background:linear-gradient(135deg,#edf9f1,#fff);
  border-radius:24px;padding:22px;margin-bottom:16px
}
.ggs28-confirmation-hero.danger{border-color:#f0cbc6;background:#fff6f5}
.ggs28-confirmation-hero.neutral{border-color:#dfe6e1;background:#fff}
.ggs28-confirmation-check{
  display:grid;place-items:center;width:48px;height:48px;border-radius:999px;background:#0a6a3e;color:#fff;
  font-size:1.35rem;font-weight:950
}
.ggs28-confirmation-hero.danger .ggs28-confirmation-check{background:#a92a22}
.ggs28-confirmation-hero h1{font-size:clamp(1.8rem,4vw,2.8rem);letter-spacing:-.04em;line-height:1.04;margin:.3rem 0 .45rem}
.ggs28-confirmation-hero p{margin:0;color:#52675c}.ggs28-status-pill{display:inline-flex;padding:7px 10px;border-radius:999px;background:#fff;border:1px solid #d8e4dc;font-weight:850}

.ggs28-stay-card,.ggs28-qr-card,.ggs28-reception-card,.ggs28-policy{
  background:#fff;border:1px solid #dce6df;border-radius:22px;box-shadow:0 12px 38px rgba(16,50,31,.06)
}
.ggs28-stay-card{padding:22px;margin-bottom:16px}
.ggs28-stay-head{display:flex;justify-content:space-between;gap:22px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid #e8eee9}
.ggs28-stay-head h2{font-size:1.5rem;margin:.3rem 0 .2rem}.ggs28-stay-head p{margin:0;color:#697a70}
.ggs28-total{display:grid;text-align:right}.ggs28-total small{color:#718078}.ggs28-total strong{font-size:1.5rem;letter-spacing:-.03em}.ggs28-total span{font-size:.8rem;color:#50665a}
.ggs28-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:18px 0}
.ggs28-facts>div{display:grid;gap:2px;padding:12px;background:#f6f9f7;border-radius:14px}
.ggs28-facts small{color:#74837b;font-size:.72rem}.ggs28-facts strong{font-size:.92rem}
.ggs28-payment-trust{display:flex;gap:10px;align-items:flex-start;padding:13px;border-radius:14px;background:#edf8f1;border:1px solid #cce6d5}
.ggs28-payment-trust>span{display:grid;place-items:center;min-width:26px;height:26px;border-radius:999px;background:#0a6a3e;color:#fff;font-weight:900}
.ggs28-payment-trust>div{display:grid}.ggs28-payment-trust small{color:#607268}

.ggs28-confirmation-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:16px;align-items:start}
.ggs28-qr-card{padding:22px}.ggs28-qr-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.ggs28-qr-head>div{display:flex;gap:10px;align-items:center}.ggs28-qr-head h2{margin:.2rem 0 0;font-size:1.25rem}
.ggs28-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#edf6f0;color:#0a5b36;font-size:1.1rem}
.ggs28-secure-chip{display:inline-flex;align-items:center;padding:6px 8px;border-radius:999px;background:#f0f6f2;color:#3f5d4b;font-size:.72rem;font-weight:800}
.ggs28-qr-intro{color:#607168;margin:14px 0}
.ggs28-qr-stage{display:grid;place-items:center;background:#f7faf8;border:1px solid #e3ebe6;border-radius:18px;padding:16px}
.ggs28-qr-render{width:min(290px,76vw);aspect-ratio:1/1;display:grid;place-items:center;background:#fff}
.ggs28-qr-render canvas,.ggs28-qr-render img,.ggs28-qr-render svg{display:block!important;width:100%!important;height:100%!important;max-width:100%!important;object-fit:contain!important}
.ggs28-reference-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:14px;padding:12px 0;border-bottom:1px solid #e7ede9}
.ggs28-reference-row>div{display:grid}.ggs28-reference-row small{color:#74837b}.ggs28-reference-row strong{font-size:1.08rem;letter-spacing:.02em}
.ggs28-qr-note{font-size:.78rem;color:#577065;padding-top:12px}
.ggs28-qr-unavailable{text-align:center}.ggs28-qr-unavailable .ggs28-icon{margin:0 auto 10px}

.ggs28-reception-card{padding:22px}.ggs28-reception-card h2{font-size:1.25rem;margin:.35rem 0 14px}
.ggs28-reception-card ol{list-style:none;padding:0;margin:0;display:grid;gap:12px}
.ggs28-reception-card li{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:start}
.ggs28-reception-card li>span{display:grid;place-items:center;width:32px;height:32px;border-radius:999px;background:#0a5b36;color:#fff;font-weight:900}
.ggs28-reception-card li>div{display:grid}.ggs28-reception-card li small{color:#6d7d74;line-height:1.4}

.ggs28-primary-actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}
.ggs28-primary-actions .btn{min-height:46px}
.ggs28-policy{overflow:hidden}.ggs28-policy summary{display:flex;justify-content:space-between;align-items:center;gap:10px;cursor:pointer;padding:17px 20px;font-weight:900;list-style:none}
.ggs28-policy summary::-webkit-details-marker{display:none}.ggs28-policy>div{padding:0 20px 18px;border-top:1px solid #e7ede9}.ggs28-cancel-form{margin-top:12px}

/* ---------- Traveler account: mobile-first ---------- */
body.context-account:has(.traveler-app-v22){background:#f5f8f6;color:#13251b}
.traveler-app-v22{min-height:100vh;background:#f5f8f6}
.traveler-sidebar{background:#083b25;border-right:0;color:#fff;width:260px;padding:22px 16px}
.traveler-sidebar .workspace-logo{display:block;padding:4px 10px 20px}
.traveler-sidebar .workspace-logo img{max-height:52px;width:auto;filter:brightness(0) invert(1)}
.traveler-side-identity{display:flex;gap:11px;align-items:center;padding:13px;border-radius:16px;background:rgba(255,255,255,.08);margin-bottom:16px}
.traveler-side-identity .avatar,.traveler-top-identity .avatar{display:grid;place-items:center;width:42px;height:42px;border-radius:999px;background:#fff;color:#0a5b36;font-weight:900}
.traveler-side-identity div,.traveler-top-identity div{display:grid;min-width:0}
.traveler-side-identity small{color:rgba(255,255,255,.7);overflow:hidden;text-overflow:ellipsis}
.traveler-side-nav{display:grid;gap:4px}.traveler-side-nav .workspace-link{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:11px 12px;border-radius:13px;color:rgba(255,255,255,.82);text-decoration:none;font-weight:750}
.traveler-side-nav .workspace-link:hover,.traveler-side-nav .workspace-link.active{background:#fff;color:#083b25}
.traveler-side-bottom{margin-top:auto;padding:18px 10px 4px;display:grid;gap:10px}
.traveler-content{padding-bottom:30px}.traveler-topbar{min-height:68px;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-bottom:1px solid #e1e8e3;position:sticky;top:0;z-index:45}
.traveler-mobile-logo{display:none}.traveler-top-identity{display:flex;gap:9px;align-items:center}.traveler-top-identity small{color:#708078}
.traveler-app-v22 .workspace-page{max-width:1180px;margin:0 auto;padding:30px 28px 50px}
.traveler-app-v22 .pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px}
.traveler-app-v22 .pagehead h1{font-size:clamp(2rem,3.5vw,3.1rem);line-height:1;letter-spacing:-.04em;margin:.3rem 0 .6rem}
.traveler-metrics{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important;margin-bottom:20px!important}
.traveler-metrics a{display:grid!important;gap:3px;background:#fff;border:1px solid #dfe7e2;border-radius:18px;padding:18px;text-decoration:none;color:#173023;box-shadow:0 8px 26px rgba(15,48,30,.045)}
.traveler-metrics strong{font-size:1.65rem;letter-spacing:-.03em}.traveler-metrics span{color:#718077;font-size:.85rem}
.traveler-next{display:grid!important;grid-template-columns:1fr minmax(260px,38%);overflow:hidden;border-radius:24px;background:linear-gradient(135deg,#083b25,#0a6a3e);color:#fff;box-shadow:0 18px 48px rgba(8,59,37,.18);margin-bottom:28px}
.traveler-next>div{padding:30px;align-self:center}.traveler-next h2{font-size:clamp(1.65rem,3vw,2.45rem);letter-spacing:-.03em;margin:.35rem 0 .7rem}.traveler-next p{color:rgba(255,255,255,.83)}
.traveler-next img{width:100%!important;height:100%!important;min-height:250px;max-height:340px;object-fit:cover!important;object-position:center center;display:block}.traveler-next-empty{grid-template-columns:1fr!important}
.traveler-section{margin-top:28px}.traveler-section .section-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:14px}
.traveler-booking-list{display:grid;gap:14px}.traveler-booking-card{display:grid;grid-template-columns:220px minmax(0,1fr) minmax(210px,25%);background:#fff;border:1px solid #dfe7e2;border-radius:22px;overflow:hidden;box-shadow:0 10px 32px rgba(15,48,30,.055)}
.traveler-booking-photo{display:block;background:#e7eee9;overflow:hidden}.traveler-booking-photo img{width:100%!important;height:100%!important;min-height:225px;object-fit:cover!important;display:block}
.traveler-booking-main{padding:20px 22px;min-width:0}.traveler-booking-side{border-left:1px solid #e4ebe6;padding:20px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;text-align:right;gap:8px}
.traveler-trust-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.traveler-trust-row>div{background:#fff;border:1px solid #dfe7e2;border-radius:16px;padding:15px;display:grid;gap:4px}
.traveler-mobile-bottom{display:none}

/* ---------- Public hotel/room media normalization ---------- */
.ggs20-hotel-photo,.ggs20-room-photo,.ggs20-gallery-item,.traveler-booking-photo,.traveler-favorite-photo{
  background:#e9efeb;overflow:hidden
}
.ggs20-hotel-photo img,.ggs20-room-photo img,.ggs20-gallery-item img,.traveler-booking-photo img,.traveler-favorite-photo img{
  object-fit:cover!important;object-position:center center!important
}
.ggs20-gallery{max-height:520px!important}
.ggs20-room-price{min-width:190px}
.ggs20-room-price .btn{min-height:46px}
video,.ggs20-property video{display:block;max-width:100%;height:auto;border-radius:18px;background:#0d1712}
.ggs-media-error{position:relative!important;background:linear-gradient(135deg,#edf3ef,#dfe9e2)!important}
.ggs-media-error>img{visibility:hidden!important}
.ggs-media-error::after{
  content:"GanGanStay";position:absolute;inset:0;display:grid;place-items:center;color:#789087;font-weight:850;letter-spacing:.02em
}

/* ---------- Print ---------- */
.ggs28-print-page{background:#eef3ef}.ggs28-print-box{max-width:760px;margin:24px auto;background:#fff;border:1px solid #dfe6e1;border-radius:20px;padding:26px;box-shadow:0 16px 48px rgba(15,48,30,.08)}
.ggs28-print-box header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border-bottom:1px solid #e5ece7;padding-bottom:18px}
.ggs28-print-box header img{width:150px;height:auto}.ggs28-print-box header div{text-align:right}.ggs28-print-box header span{font-size:.7rem;letter-spacing:.08em;color:#0a6a3e;font-weight:900}.ggs28-print-box header h1{margin:.25rem 0}
.ggs28-print-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:20px 0}.ggs28-print-facts>div{display:grid;background:#f5f8f6;border-radius:12px;padding:12px}.ggs28-print-facts small{color:#718078}
.ggs28-print-qr{display:grid;place-items:center;gap:7px;border:1px solid #dce6df;border-radius:18px;padding:18px}.ggs28-print-trust{text-align:center;color:#5d7367}
@media print{
  .ggs28-no-print{display:none!important}.ggs28-print-page{background:#fff}.ggs28-print-box{box-shadow:none;border:0;margin:0;max-width:none}
}

/* ---------- Mobile ---------- */
@media(max-width:820px){
  .ggs28-confirmation-page{padding:16px 14px 92px}
  .ggs28-confirmation-hero{grid-template-columns:auto 1fr;padding:17px;border-radius:19px}
  .ggs28-status-pill{grid-column:1/-1;justify-self:start}
  .ggs28-stay-card,.ggs28-qr-card,.ggs28-reception-card{padding:17px;border-radius:18px}
  .ggs28-stay-head{display:grid}.ggs28-total{text-align:left}
  .ggs28-facts{grid-template-columns:1fr 1fr}
  .ggs28-confirmation-grid{grid-template-columns:1fr}
  .ggs28-primary-actions{display:grid;grid-template-columns:1fr 1fr}
  .ggs28-primary-actions .btn{width:100%;justify-content:center}
  .ggs28-primary-actions .btn.primary{grid-column:1/-1}

  .traveler-sidebar{display:none!important}.traveler-top-identity{display:none!important}.traveler-mobile-logo{display:block!important}
  .traveler-mobile-logo img{height:38px!important;width:auto!important;max-width:128px}
  .traveler-content{width:100%!important;padding-bottom:86px!important}
  .traveler-topbar{min-height:62px!important;padding:8px 14px!important}
  .traveler-app-v22 .workspace-page{padding:18px 14px 38px!important}
  .traveler-app-v22 .pagehead{align-items:flex-start!important}
  .traveler-metrics{grid-template-columns:1fr 1fr!important;gap:9px!important}
  .traveler-metrics a{padding:14px!important;min-height:92px;align-content:center}
  .traveler-metrics strong{font-size:1.55rem}.traveler-metrics span{font-size:.78rem}
  .traveler-next{grid-template-columns:1fr!important;border-radius:20px!important}
  .traveler-next>div{padding:21px!important}.traveler-next img{min-height:0!important;max-height:none!important;aspect-ratio:16/9!important}
  .traveler-booking-card{grid-template-columns:1fr!important}.traveler-booking-photo{aspect-ratio:16/9}.traveler-booking-photo img{min-height:0!important}
  .traveler-booking-side{grid-column:auto!important;border-left:0!important;border-top:1px solid #e4ebe6;align-items:flex-start!important;text-align:left!important}
  .traveler-trust-row{grid-template-columns:1fr!important}
  .traveler-mobile-bottom{
    display:grid!important;grid-template-columns:repeat(4,1fr)!important;position:fixed;z-index:96;left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));
    padding:7px;background:rgba(255,255,255,.97);border:1px solid #dce5df;border-radius:20px;box-shadow:0 18px 48px rgba(0,0,0,.16);backdrop-filter:blur(14px)
  }
  .traveler-mobile-bottom a{display:grid;place-items:center;gap:2px;color:#68786f;text-decoration:none;padding:6px 3px;border-radius:13px;min-height:48px}
  .traveler-mobile-bottom a.active{background:#edf6f0;color:#083b25}.traveler-mobile-bottom span{font-size:1.05rem}.traveler-mobile-bottom small{font-size:.65rem;white-space:nowrap}

  .ggs20-gallery{max-height:none!important}.ggs20-gallery-item.hero{aspect-ratio:4/3!important}
  .ggs20-hotel-photo,.ggs20-room-photo{aspect-ratio:4/3!important;max-height:none!important}
  .ggs20-room-card{grid-template-columns:1fr!important}
  .ggs20-room-price{min-width:0!important;padding-top:12px}
  .ggs20-room-price .btn{width:100%!important;justify-content:center}
}
@media(max-width:620px){
  .ggs28-confirmation-hero h1{font-size:1.72rem}
  .ggs28-confirmation-check{width:40px;height:40px}
  .ggs28-facts{grid-template-columns:1fr 1fr}
  .ggs28-primary-actions{grid-template-columns:1fr}
  .ggs28-primary-actions .btn.primary{grid-column:auto}
  .ggs28-qr-render{width:min(270px,78vw)}
  .traveler-app-v22 .pagehead{flex-direction:column!important}.traveler-app-v22 .pagehead>.btn{width:100%!important}
  .traveler-next h2{font-size:1.55rem}
  .ggs28-print-box{margin:0;border-radius:0;padding:18px}.ggs28-print-box header{display:grid}.ggs28-print-box header div{text-align:left}.ggs28-print-facts{grid-template-columns:1fr}
}
@media(max-width:420px){
  .ggs28-confirmation-page{padding-inline:10px}
  .ggs28-confirmation-hero,.ggs28-stay-card,.ggs28-qr-card,.ggs28-reception-card{border-radius:16px}
  .ggs28-facts{gap:7px}.ggs28-facts>div{padding:10px}
  .ggs28-reference-row{align-items:flex-start}
  .traveler-metrics{gap:7px!important}.traveler-metrics a{padding:12px!important;min-height:86px}
}

/* GGS multi-chambres — répartition voyageurs */
.ggs-room-adult-rule{margin:8px 0 0;color:#2d6a4f;font-size:13px;font-weight:700}
.bk-room-distribution{margin:16px 0;border:1px solid #d8e4dc;border-radius:16px;background:#f8fbf9;overflow:hidden}
.bk-room-distribution summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer;list-style:none}
.bk-room-distribution summary::-webkit-details-marker{display:none}.bk-room-distribution summary span{display:grid;gap:3px}.bk-room-distribution summary small{color:#617068}.bk-room-distribution summary b{color:#0d673c;font-size:13px}
.bk-room-distribution-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 14px 12px}.bk-room-allocation{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px;border:1px solid #e0e8e3;border-radius:12px;background:#fff}.bk-room-allocation>strong{grid-column:1/-1}.bk-room-allocation label{font-size:12px;color:#526259}.bk-room-allocation input{margin-top:5px;width:100%;min-height:44px}.bk-room-distribution-status{margin:0 14px 8px;color:#12613b;font-weight:700}.bk-room-distribution-status.is-error{color:#a63324}.bk-room-distribution>small{display:block;padding:0 14px 14px;color:#67736d}
.room-plan-card ul{margin:8px 0 0;padding-left:20px}.ggs28-room-plan-row{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:12px 0;border-bottom:1px solid #e6eee8}.ggs28-room-plan-row:last-child{border-bottom:0}.ggs28-room-plan-row small{grid-column:1/-1;color:#627068}
@media(max-width:720px){.bk-room-distribution-grid{grid-template-columns:1fr}.bk-room-allocation{grid-template-columns:1fr 1fr}.bk-room-distribution summary{align-items:flex-start}.bk-room-distribution summary b{white-space:nowrap}}
/* --- assets/ganganstay-finance-r5.css --- */
/* GanGanStay R5 — Finance, caisses, remises et écarts. Styles isolés. */
.finance-r5{max-width:1500px;margin:0 auto;padding-bottom:48px}
.finance-r5 .pagehead{gap:18px;align-items:flex-start}
.finance-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0}
.finance-kpis>div,.finance-cashbox-total{background:#fff;border:1px solid #dce5df;border-radius:16px;padding:16px;box-shadow:0 5px 18px rgba(20,55,38,.05)}
.finance-kpis span,.finance-cashbox-total span{display:block;color:#5c6f65;font-size:.84rem;margin-bottom:6px}
.finance-kpis strong,.finance-cashbox-total strong{font-size:1.2rem;line-height:1.25}
.finance-section{margin:16px 0;overflow:hidden}
.finance-section h2{margin-top:0}
.finance-methods{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.finance-methods>div{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #e5ece7;border-radius:12px;padding:12px;background:#fbfdfb}
.finance-methods>div small{display:block;color:#6b7a71}
.finance-cash-methods{margin:14px 0 18px}
.finance-cashbox-total{display:flex;align-items:center;justify-content:space-between;margin:16px 0}
.finance-cashbox-total strong{font-size:1.7rem}
.finance-filter,.finance-rules-form{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:10px;align-items:end;margin:12px 0 18px}
.finance-filter label,.finance-rules-form label,.finance-close-form label,.finance-payment-action label,.finance-checkin-box label{display:grid;gap:6px;font-weight:600;color:#33463b}
.finance-filter input,.finance-filter select,.finance-rules-form input,.finance-close-form input,.finance-close-form select,.finance-close-form textarea,.finance-payment-action input,.finance-payment-action select,.finance-payment-action textarea,.finance-checkin-box input,.finance-checkin-box select,.finance-checkin-box textarea,.finance-correction-form input,.finance-correction-form select{width:100%;min-height:42px}
.finance-close-form{display:grid;gap:12px;max-width:760px;margin:18px 0}
.finance-inline-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.finance-inline-form input{min-width:220px}
.finance-correction-form{display:grid;gap:8px;min-width:260px;margin-top:8px}
.finance-r5 details summary{cursor:pointer}
.finance-payment-summary{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}
.finance-payment-summary span{background:#f3f7f4;border:1px solid #dfe8e2;border-radius:10px;padding:8px 10px}
.finance-checkin-box{display:grid;gap:10px;margin-bottom:12px}
.finance-payment-action{display:grid;gap:10px}
.finance-mini-card{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}
.finance-mini-card>div{background:#f7faf8;border:1px solid #e3ebe5;border-radius:10px;padding:10px}
.finance-mini-card span{display:block;color:#64736a;font-size:.78rem}
.finance-mini-card strong{display:block;margin-top:4px}
.finance-rules{margin-top:20px}
.finance-rules summary{padding:4px 0 12px}
.warning-text{font-weight:700}
.success-text{font-weight:700}
.finance-r5 .table-scroll{overflow:auto;-webkit-overflow-scrolling:touch}
.finance-r5 table{min-width:780px;width:100%;border-collapse:collapse}
.finance-r5 th,.finance-r5 td{vertical-align:top}
@media(max-width:1050px){.finance-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-methods{grid-template-columns:repeat(2,minmax(0,1fr))}.finance-filter,.finance-rules-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.finance-r5{padding-bottom:76px}.finance-kpis,.finance-methods,.finance-mini-card,.finance-filter,.finance-rules-form{grid-template-columns:1fr}.finance-kpis>div{padding:13px}.finance-cashbox-total{align-items:flex-start;flex-direction:column}.finance-filter .btn,.finance-rules-form .btn,.finance-close-form .btn{width:100%}.finance-payment-summary{display:grid;grid-template-columns:1fr}.finance-r5 table{min-width:690px}}
/* --- assets/ganganstay-ui-r56.css --- */
/* GanGanStay R5.6 — Design system unifié + formulaires fermés par défaut
   Portée : espaces hôtel, voyageur et administration. Aucun changement métier. */
:root{
  --r56-forest:#083b25;
  --r56-forest-2:#0d5a36;
  --r56-leaf:#1f7a48;
  --r56-orange:#f26b2b;
  --r56-orange-hover:#dc5b1e;
  --r56-red:#b42318;
  --r56-red-hover:#8f1d14;
  --r56-amber:#a56600;
  --r56-blue:#175cd3;
  --r56-ink:#173024;
  --r56-muted:#66766d;
  --r56-line:#dfe7e2;
  --r56-line-strong:#cdd9d1;
  --r56-surface:#ffffff;
  --r56-soft:#f6f9f7;
  --r56-soft-green:#eef7f1;
  --r56-soft-orange:#fff5ee;
  --r56-soft-red:#fff0ee;
  --r56-soft-amber:#fff8e8;
  --r56-shadow:0 12px 32px rgba(8,59,37,.07);
  --r56-shadow-hover:0 18px 42px rgba(8,59,37,.11);
  --r56-radius-lg:20px;
  --r56-radius-md:14px;
  --r56-radius-sm:10px;
}

/* Cadre général */
body.context-hotel,body.context-account,body.context-admin{background:#f5f8f6;color:var(--r56-ink)}
body.context-hotel main,body.context-account main,body.context-admin main{min-width:0}
body.context-hotel .workspace-page,body.context-account .workspace-page,body.context-admin .workspace-page{
  max-width:1280px!important;margin:0 auto!important;padding:30px 30px 58px!important;
}
body.context-hotel .workspace-content,body.context-account .workspace-content,body.context-admin .workspace-content{min-width:0}
body.context-hotel h1,body.context-account h1,body.context-admin h1{letter-spacing:-.035em;color:#10291b}
body.context-hotel h2,body.context-account h2,body.context-admin h2{letter-spacing:-.02em;color:#163526}
body.context-hotel p,body.context-account p,body.context-admin p{max-width:78ch}

/* Cartes et sections */
body.context-hotel .card,body.context-account .card,body.context-admin .card,
body.context-hotel .finance-section,body.context-hotel .operation-card{
  border:1px solid var(--r56-line)!important;border-radius:var(--r56-radius-lg)!important;
  box-shadow:0 7px 24px rgba(8,59,37,.045)!important;background:var(--r56-surface);
}
body.context-hotel .card:hover,body.context-account .card:hover,body.context-admin .card:hover{border-color:#d5e0d9}
body.context-hotel .section-head,body.context-account .section-head,body.context-admin .section-head{margin:28px 0 14px}
body.context-hotel .section-head h2,body.context-account .section-head h2,body.context-admin .section-head h2{font-size:1.35rem}

/* Boutons : 4 niveaux visuels stables */
body.context-hotel .btn,body.context-account .btn,body.context-admin .btn,
body.context-hotel button:not(.menu):not(.x),body.context-account button:not(.menu):not(.x),body.context-admin button:not(.menu):not(.x){
  border-radius:12px;min-height:44px;font-weight:800;letter-spacing:-.005em;box-shadow:none;
}
body.context-hotel .btn.primary,body.context-account .btn.primary,body.context-admin .btn.primary,
body.context-hotel .btn:not(.secondary):not(.danger):not(.ghost):not(.green),
body.context-account .btn:not(.secondary):not(.danger):not(.ghost):not(.green),
body.context-admin .btn:not(.secondary):not(.danger):not(.ghost):not(.green){background:var(--r56-orange);color:#fff;border:1px solid var(--r56-orange)}
body.context-hotel .btn.primary:hover,body.context-account .btn.primary:hover,body.context-admin .btn.primary:hover{background:var(--r56-orange-hover);border-color:var(--r56-orange-hover)}
body.context-hotel .btn.secondary,body.context-account .btn.secondary,body.context-admin .btn.secondary,
body.context-hotel .btn.ghost,body.context-account .btn.ghost,body.context-admin .btn.ghost{
  background:#fff!important;color:var(--r56-forest)!important;border:1px solid #cbd9d0!important;
}
body.context-hotel .btn.secondary:hover,body.context-account .btn.secondary:hover,body.context-admin .btn.secondary:hover,
body.context-hotel .btn.ghost:hover,body.context-account .btn.ghost:hover,body.context-admin .btn.ghost:hover{background:var(--r56-soft-green)!important;border-color:#afc8b8!important}
body.context-hotel .btn.danger,body.context-account .btn.danger,body.context-admin .btn.danger{background:var(--r56-red)!important;color:#fff!important;border:1px solid var(--r56-red)!important}
body.context-hotel .btn.danger:hover,body.context-account .btn.danger:hover,body.context-admin .btn.danger:hover{background:var(--r56-red-hover)!important}
body.context-hotel .btn.small,body.context-account .btn.small,body.context-admin .btn.small{min-height:38px;padding:8px 12px}

/* Champs : même rythme sur toute l'application */
body.context-hotel label,body.context-account label,body.context-admin label{color:#4d6257;font-size:.79rem;font-weight:800;margin-bottom:7px}
body.context-hotel input:not([type="checkbox"]):not([type="radio"]),body.context-hotel select,body.context-hotel textarea,
body.context-account input:not([type="checkbox"]):not([type="radio"]),body.context-account select,body.context-account textarea,
body.context-admin input:not([type="checkbox"]):not([type="radio"]),body.context-admin select,body.context-admin textarea{
  min-height:48px;border:1px solid #d4ded8;border-radius:12px;background:#fff;padding:11px 13px;color:var(--r56-ink);
}
body.context-hotel textarea,body.context-account textarea,body.context-admin textarea{min-height:104px}
body.context-hotel input:focus,body.context-hotel select:focus,body.context-hotel textarea:focus,
body.context-account input:focus,body.context-account select:focus,body.context-account textarea:focus,
body.context-admin input:focus,body.context-admin select:focus,body.context-admin textarea:focus{
  border-color:#76a78a;box-shadow:0 0 0 4px rgba(31,122,72,.11);outline:0;
}
body.context-hotel form,body.context-account form,body.context-admin form{gap:14px}
body.context-hotel form>label,body.context-account form>label,body.context-admin form>label{margin-top:0}

/* Formulaires fermés par défaut : déclencheur compact puis panneau */
.ggs-r56-form-shell{display:block;min-width:0;margin:10px 0}
.ggs-r56-form-shell.is-compact{display:inline-flex;margin:0}
.ggs-r56-form-toggle{
  width:100%;min-height:48px;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px;
  padding:12px 15px!important;background:#fff!important;color:var(--r56-forest)!important;border:1px solid #cfddd4!important;
  border-radius:13px!important;font-weight:850!important;text-align:left!important;cursor:pointer;box-shadow:none!important;
}
.ggs-r56-form-toggle:hover{background:var(--r56-soft-green)!important;border-color:#adc9b8!important}
.ggs-r56-form-toggle .ggs-r56-form-icon{display:grid;place-items:center;width:26px;height:26px;border-radius:9px;background:#edf6f0;color:var(--r56-forest);font-size:18px;line-height:1;flex:0 0 auto}
.ggs-r56-form-shell.is-open>.ggs-r56-form-toggle{background:var(--r56-soft-green)!important;border-color:#b9d1c1!important;border-radius:13px 13px 0 0!important}
.ggs-r56-form-shell.is-open>.ggs-r56-form-toggle .ggs-r56-form-icon{transform:rotate(45deg)}
.ggs-r56-form-panel{border:1px solid #cfe0d5;border-top:0;background:#fff;border-radius:0 0 16px 16px;padding:18px;box-shadow:0 12px 30px rgba(8,59,37,.06)}
.ggs-r56-form-panel[hidden]{display:none!important}
.ggs-r56-form-panel form{margin:0!important;box-shadow:none!important;border:0!important;border-radius:0!important;padding:0!important;background:transparent!important}
.ggs-r56-form-close-row{display:flex;justify-content:flex-end;margin-top:12px;padding-top:12px;border-top:1px solid #e6ece8}
.ggs-r56-form-close{min-height:38px!important;padding:7px 12px!important;border:0!important;background:#f2f5f3!important;color:#53665b!important;border-radius:10px!important;font-weight:800!important}
.ggs-r56-form-close:hover{background:#e8efea!important}

/* Les formulaires déjà dans details restent fermés et ont le même langage visuel */
body.context-hotel details:has(form),body.context-account details:has(form),body.context-admin details:has(form){
  border:1px solid var(--r56-line);border-radius:14px;background:#fff;overflow:hidden;margin:10px 0;
}
body.context-hotel details:has(form)>summary,body.context-account details:has(form)>summary,body.context-admin details:has(form)>summary{
  cursor:pointer;list-style:none;padding:13px 15px;font-weight:850;color:var(--r56-forest);display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;
}
body.context-hotel details:has(form)>summary::-webkit-details-marker,body.context-account details:has(form)>summary::-webkit-details-marker,body.context-admin details:has(form)>summary::-webkit-details-marker{display:none}
body.context-hotel details:has(form)>summary::after,body.context-account details:has(form)>summary::after,body.context-admin details:has(form)>summary::after{content:'+';display:grid;place-items:center;width:26px;height:26px;border-radius:9px;background:#edf6f0;font-size:18px}
body.context-hotel details[open]:has(form)>summary::after,body.context-account details[open]:has(form)>summary::after,body.context-admin details[open]:has(form)>summary::after{content:'×'}
body.context-hotel details:has(form)>form,body.context-account details:has(form)>form,body.context-admin details:has(form)>form{border-top:1px solid #e4ece7;padding:18px!important;margin:0!important;background:#fff}

/* Réservation : information dominante + actions suffisamment larges */
body.context-hotel .reservation-ops{grid-template-columns:minmax(0,1fr) minmax(340px,390px)!important;gap:22px!important;align-items:start}
body.context-hotel .reservation-ops>aside,body.context-hotel .reservation-ops>.actions,body.context-hotel .actions-quick{position:sticky;top:98px}
body.context-hotel .finance-kpis{gap:12px}
body.context-hotel .finance-kpis>div{border:1px solid var(--r56-line);background:#fbfdfc;border-radius:14px;padding:15px 16px}
body.context-hotel .finance-kpis span{color:var(--r56-muted);font-size:.78rem}
body.context-hotel .finance-kpis strong{font-size:1.15rem;color:#153725}
body.context-hotel .notice{border:1px solid #f0d8c8;border-left:4px solid var(--r56-orange);background:var(--r56-soft-orange);border-radius:14px;padding:14px 15px}
body.context-hotel .notice.warning{background:var(--r56-soft-amber);border-color:#efd7a1;border-left-color:#c58413}
body.context-hotel .notice.success{background:var(--r56-soft-green);border-color:#cce3d3;border-left-color:var(--r56-leaf)}
body.context-hotel .critical-actions{background:#fff9f8;border:1px solid #f0d7d4;border-radius:14px;padding:14px;margin-top:16px}

/* Demandes voyageurs : décision lisible, formulaires fermés */
body.context-hotel .traveler-request-row,body.context-account .traveler-request-row{border-radius:14px}
body.context-hotel .grid.grid-2>.ggs-r56-form-shell{margin:0;align-self:start}
body.context-account .grid.grid-2>.ggs-r56-form-shell,body.context-admin .grid.grid-2>.ggs-r56-form-shell{align-self:start}
body.context-hotel .grid.grid-2>.ggs-r56-form-shell .ggs-r56-form-toggle{height:auto;min-height:50px}
body.context-hotel .status.pending,body.context-account .status.pending{background:#fff4d8;color:#8a5b00}
body.context-hotel .status.approved,body.context-account .status.approved{background:#e8f5ed;color:#17643a}
body.context-hotel .status.rejected,body.context-account .status.rejected{background:#fdeceb;color:#a32823}

/* Badges unifiés */
body.context-hotel .badge,body.context-account .badge,body.context-admin .badge,
body.context-hotel .status,body.context-account .status,body.context-admin .status{
  display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:6px 9px;border-radius:999px;font-size:.72rem;font-weight:850;line-height:1.1;text-transform:none;letter-spacing:0;
}
body.context-hotel .badge.ready,body.context-hotel .badge.checked_in,body.context-hotel .badge.confirmed,body.context-hotel .status.confirmed,body.context-hotel .status.checked_in{background:#eaf6ee;color:#17643a}
body.context-hotel .badge.cleaning{background:#fff5d9;color:#886000}
body.context-hotel .badge.maintenance{background:#fff0e8;color:#9c4a1b}
body.context-hotel .badge.blocked,body.context-hotel .status.cancelled,body.context-hotel .status.no_show{background:#fdebea;color:#a12a25}
body.context-hotel .badge.occupied{background:#edf4ff;color:#17579e}

/* État chambres : cartes moins hautes, décision au premier regard */
body.context-hotel .room-unit-card{padding:17px!important;display:grid;gap:10px;align-content:start;min-height:0}
body.context-hotel .room-unit-card .card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
body.context-hotel .room-unit-card h3{margin:3px 0 0;font-size:1.1rem}
body.context-hotel .room-unit-card p{margin:3px 0}
body.context-hotel .room-state-form{margin-top:2px!important}
body.context-hotel .hotel-v23-metrics{gap:10px!important}
body.context-hotel .hotel-v23-metrics>div{border-radius:15px!important;padding:15px 16px!important;background:#fff!important;border:1px solid var(--r56-line)!important;box-shadow:none!important}
body.context-hotel .hotel-v23-metrics strong{font-size:1.55rem!important}

/* Tables : plus propres et lisibles */
body.context-hotel .tablewrap,body.context-account .tablewrap,body.context-admin .tablewrap,
body.context-hotel .table-scroll{border:1px solid var(--r56-line);border-radius:15px;overflow:auto;background:#fff}
body.context-hotel table,body.context-account table,body.context-admin table{border-collapse:separate;border-spacing:0}
body.context-hotel th,body.context-account th,body.context-admin th{background:#f1f6f3;color:#4c6256;font-size:.72rem;text-transform:uppercase;letter-spacing:.025em;font-weight:850}
body.context-hotel td,body.context-account td,body.context-admin td{padding-top:12px;padding-bottom:12px}
body.context-hotel tbody tr:hover,body.context-account tbody tr:hover,body.context-admin tbody tr:hover{background:#fbfdfc}

/* Voyageur : séjour courant volontairement plus simple */
body.context-account .traveler-stay-metrics{gap:10px}
body.context-account .traveler-stay-metrics>div{border-radius:16px;padding:16px;box-shadow:none}
body.context-account .traveler-stay-metrics strong{font-size:1.2rem}
body.context-account .traveler-next{border-radius:22px;box-shadow:0 16px 38px rgba(8,59,37,.14)}
body.context-account .traveler-booking-card{box-shadow:0 8px 24px rgba(8,59,37,.045);border-radius:19px}
body.context-account details.card{padding:0!important}
body.context-account details.card>summary{padding:14px 15px!important}

/* Finance : lecture pilotage, moins de bruit */
body.context-hotel .finance-grid,body.context-hotel .finance-kpis{gap:10px!important}
body.context-hotel .finance-section{padding:20px!important}
body.context-hotel .finance-section>h3{margin:22px 0 10px;font-size:1rem}
body.context-hotel .finance-section .section-head{margin-top:0}

/* Navigation et topbar */
body.context-hotel .hotel-v23-side,body.context-account .traveler-sidebar,body.context-admin .admin-v24-side{box-shadow:8px 0 24px rgba(8,59,37,.035)}
body.context-hotel .hotel-v23-topbar,body.context-account .traveler-topbar,body.context-admin .admin-v24-topbar{border-bottom-color:#dde6e0;box-shadow:0 4px 18px rgba(8,59,37,.025)}

/* État fermé explicite */
html.ggs-r56-ready form[data-r56-collapsible="1"]{display:grid}
html.ggs-r56-ready .ggs-r56-form-panel[hidden] form[data-r56-collapsible="1"]{display:none}

/* Responsive */
@media(max-width:1080px){
  body.context-hotel .reservation-ops{grid-template-columns:1fr!important}
  body.context-hotel .reservation-ops>aside,body.context-hotel .reservation-ops>.actions,body.context-hotel .actions-quick{position:static}
}
@media(max-width:820px){
  body.context-hotel .workspace-page,body.context-account .workspace-page,body.context-admin .workspace-page{padding:22px 15px 88px!important}
  .ggs-r56-form-panel{padding:15px}
  body.context-hotel .grid.grid-2,body.context-account .grid.grid-2,body.context-admin .grid.grid-2{grid-template-columns:1fr}
}
@media(max-width:560px){
  body.context-hotel .card,body.context-account .card,body.context-admin .card{border-radius:16px!important}
  .ggs-r56-form-toggle{min-height:46px;padding:11px 13px!important}
  body.context-hotel .finance-kpis,body.context-account .traveler-stay-metrics{grid-template-columns:1fr 1fr!important}
  body.context-hotel .hotel-v23-metrics{grid-template-columns:1fr 1fr!important}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}


/* R5.6.1 — stabilisation des pages de configuration
   Les formulaires fermés restent des actions compactes et ne prennent jamais
   la hauteur du contenu voisin. */
.ggs-r56-form-shell{align-self:start!important;height:auto!important}
.ggs-r56-form-toggle{height:auto!important;min-height:50px}
.ggs-r56-form-shell:not(.is-open) .ggs-r56-form-toggle{box-shadow:none!important}

/* Chambres : catalogue lisible, images contenues, aucune clé technique brute. */
body.context-hotel .room-admin-layout{display:grid;grid-template-columns:1fr;gap:20px}
body.context-hotel .room-admin-existing{min-width:0}
body.context-hotel .room-admin-existing .section-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:0 0 12px}
body.context-hotel .room-admin-existing .section-head p{margin:0}
body.context-hotel .room-admin-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
body.context-hotel .room-admin-card{
  display:grid;grid-template-columns:170px minmax(0,1fr) auto;align-items:center;gap:16px;
  min-width:0;padding:14px;border:1px solid var(--r56-line);border-radius:18px;background:#fff;
  box-shadow:0 6px 20px rgba(8,59,37,.04);
}
body.context-hotel .room-admin-thumb{
  width:170px;height:122px;display:block;object-fit:cover;border-radius:13px;background:#eef3f0;
}
body.context-hotel .room-admin-body{min-width:0}
body.context-hotel .room-admin-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
body.context-hotel .room-admin-title-row h3{margin:0;font-size:1.08rem;line-height:1.2}
body.context-hotel .room-admin-price{margin:8px 0 4px;font-weight:850;color:#163526}
body.context-hotel .room-admin-price span{font-weight:650;color:var(--r56-muted)}
body.context-hotel .room-admin-card .muted{margin:3px 0}
body.context-hotel .room-admin-policy{
  margin:7px 0 0;color:#53675c;font-size:.84rem;line-height:1.35;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden
}
body.context-hotel .room-admin-actions{margin:0;align-self:center}
body.context-hotel .room-create-form{margin:0!important}

/* Les pages avec une action à gauche et un panneau d'information à droite
   gardent l'action compacte au lieu d'une grande carte vide. */
body.context-hotel .grid.grid-2>.ggs-r56-form-shell:not(.is-open){min-height:0}
body.context-hotel .grid.grid-2>.ggs-r56-form-shell:not(.is-open)>.ggs-r56-form-toggle{
  min-height:52px;background:#f2f8f4!important
}

/* Inventory : l'intitulé fermé décrit l'action, pas le bouton de sauvegarde final. */
body.context-hotel .inventory-table{max-height:min(58vh,620px)}
body.context-hotel .inventory-table thead th{position:sticky;top:0;z-index:2}

@media(max-width:980px){
  body.context-hotel .room-admin-list{grid-template-columns:1fr}
}
@media(max-width:680px){
  body.context-hotel .room-admin-card{grid-template-columns:1fr;align-items:start}
  body.context-hotel .room-admin-thumb{width:100%;height:180px}
  body.context-hotel .room-admin-actions{justify-self:start}
  body.context-hotel .room-admin-existing .section-head{display:block}
}


/* Résumé visible même lorsque les formulaires Tarifs sont fermés. */
body.context-hotel .inventory-summary{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 12px;
}
body.context-hotel .inventory-summary>div{
  border:1px solid var(--r56-line);border-radius:14px;background:#fff;padding:13px 14px;min-width:0;
}
body.context-hotel .inventory-summary span{display:block;color:var(--r56-muted);font-size:.75rem;margin-bottom:4px}
body.context-hotel .inventory-summary strong{display:block;color:#173a28;font-size:.98rem;line-height:1.3}
@media(max-width:820px){body.context-hotel .inventory-summary{grid-template-columns:1fr 1fr}}
@media(max-width:520px){body.context-hotel .inventory-summary{grid-template-columns:1fr}}


/* R5.6.2 — page Chambres : vue de gestion compacte, lisible et orientée décision */
body.context-hotel .rooms-v562-page{
  max-width:1320px!important;
}
body.context-hotel .rooms-v562-pagehead{
  align-items:flex-end!important;
  margin-bottom:18px!important;
}
body.context-hotel .rooms-v562-pagehead .eyebrow{
  display:block;margin-bottom:7px;color:#2d7550;font-size:.72rem;font-weight:900;letter-spacing:.11em;
}
body.context-hotel .rooms-v562-pagehead h1{margin:.1rem 0 .45rem!important}
body.context-hotel .rooms-v562-pagehead p{margin:0;max-width:760px}
body.context-hotel .rooms-v562-head-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}

body.context-hotel .rooms-v562-kpis{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 22px;
}
body.context-hotel .rooms-v562-kpis>div{
  min-width:0;background:#fff;border:1px solid #dce7e0;border-radius:16px;padding:15px 17px;
  box-shadow:0 5px 18px rgba(8,59,37,.035);display:grid;gap:2px;
}
body.context-hotel .rooms-v562-kpis small{
  color:#6b7b72;font-size:.72rem;font-weight:850;text-transform:uppercase;letter-spacing:.045em;
}
body.context-hotel .rooms-v562-kpis strong{
  color:#123e28;font-size:1.45rem;line-height:1.2;letter-spacing:-.025em;overflow-wrap:anywhere;
}
body.context-hotel .rooms-v562-kpis span{color:#75847c;font-size:.78rem}

body.context-hotel .rooms-v562-toolbar{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,330px);gap:18px;align-items:start;
  margin:0 0 13px;padding:0 2px;
}
body.context-hotel .rooms-v562-toolbar h2{margin:0 0 4px;font-size:1.28rem}
body.context-hotel .rooms-v562-toolbar p{margin:0}
body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell{margin:0!important;align-self:start}
body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell.is-open{grid-column:1/-1}
body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell:not(.is-open) .ggs-r56-form-toggle{
  min-height:46px!important;background:#f26b2b!important;color:#fff!important;border-color:#f26b2b!important;
  justify-content:center!important;box-shadow:0 7px 18px rgba(242,107,43,.14)!important;
}
body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell:not(.is-open) .ggs-r56-form-toggle:hover{
  background:#dc5b1e!important;border-color:#dc5b1e!important;
}
body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell:not(.is-open) .ggs-r56-form-icon{
  background:rgba(255,255,255,.18)!important;color:#fff!important;
}
body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell.is-open .ggs-r56-form-panel{
  padding:22px;max-width:920px;margin-left:auto;
}
body.context-hotel .rooms-v562-toolbar .room-create-form .grid{gap:12px}

body.context-hotel .rooms-v562-list{
  display:grid;gap:12px;
}
body.context-hotel .rooms-v562-row{
  display:grid;grid-template-columns:148px minmax(0,1fr) minmax(220px,260px);
  gap:17px;align-items:center;background:#fff;border:1px solid #dce6e0;border-radius:18px;
  padding:13px;min-width:0;box-shadow:0 5px 18px rgba(8,59,37,.035);
  transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;
}
body.context-hotel .rooms-v562-row:hover{
  border-color:#c6d8cd;box-shadow:0 10px 26px rgba(8,59,37,.065);transform:translateY(-1px);
}
body.context-hotel .rooms-v562-row.is-inactive{background:#fafbfa;opacity:.82}
body.context-hotel .rooms-v562-photo{
  width:148px;height:106px;border-radius:13px;overflow:hidden;background:#edf3ef;border:1px solid #e1e8e4;
}
body.context-hotel .rooms-v562-photo img{
  width:100%;height:100%;display:block;object-fit:cover;
}
body.context-hotel .rooms-v562-main{min-width:0}
body.context-hotel .rooms-v562-titleline{
  display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0;
}
body.context-hotel .rooms-v562-titleline>div{min-width:0}
body.context-hotel .rooms-v562-titleline h3{
  margin:0;color:#123e28;font-size:1.08rem;line-height:1.22;letter-spacing:-.015em;
}
body.context-hotel .rooms-v562-desc{
  margin:4px 0 0;color:#718078;font-size:.82rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
body.context-hotel .rooms-v562-facts{
  display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px;
}
body.context-hotel .rooms-v562-facts span{
  display:inline-flex;align-items:center;min-height:27px;padding:4px 8px;border-radius:999px;
  background:#f3f7f4;color:#50635a;border:1px solid #e2e9e5;font-size:.74rem;font-weight:760;
}
body.context-hotel .rooms-v562-policy{
  display:flex;align-items:flex-start;gap:7px;margin-top:9px;color:#52665b;font-size:.79rem;line-height:1.35;
}
body.context-hotel .rooms-v562-policy-icon{
  display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border-radius:999px;
  background:#eaf5ed;color:#1f7a48;font-size:.7rem;font-weight:900;
}
body.context-hotel .rooms-v562-side{
  min-width:0;align-self:stretch;border-left:1px solid #e5ece8;padding-left:17px;
  display:flex;flex-direction:column;justify-content:center;gap:11px;
}
body.context-hotel .rooms-v562-price{display:grid;gap:1px}
body.context-hotel .rooms-v562-price small{
  color:#78877f;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;
}
body.context-hotel .rooms-v562-price strong{
  color:#123e28;font-size:1.18rem;line-height:1.25;
}
body.context-hotel .rooms-v562-actions{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
body.context-hotel .rooms-v562-actions .btn{min-height:38px!important;padding:8px 11px!important;font-size:.76rem}
body.context-hotel .rooms-v562-actions form{margin:0!important;display:inline-flex!important;gap:0!important}

@media(max-width:980px){
  body.context-hotel .rooms-v562-row{grid-template-columns:120px minmax(0,1fr)}
  body.context-hotel .rooms-v562-photo{width:120px;height:92px}
  body.context-hotel .rooms-v562-side{
    grid-column:2;border-left:0;border-top:1px solid #e5ece8;padding:10px 0 0;flex-direction:row;align-items:center;justify-content:space-between;
  }
}
@media(max-width:720px){
  body.context-hotel .rooms-v562-kpis{grid-template-columns:1fr 1fr}
  body.context-hotel .rooms-v562-kpis>div:last-child{grid-column:1/-1}
  body.context-hotel .rooms-v562-toolbar{grid-template-columns:1fr}
  body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell.is-open{grid-column:auto}
  body.context-hotel .rooms-v562-row{grid-template-columns:96px minmax(0,1fr);gap:12px;padding:11px}
  body.context-hotel .rooms-v562-photo{width:96px;height:82px}
  body.context-hotel .rooms-v562-titleline{display:block}
  body.context-hotel .rooms-v562-titleline .status{display:inline-flex;margin-top:6px}
  body.context-hotel .rooms-v562-facts{margin-top:7px}
  body.context-hotel .rooms-v562-policy{grid-column:1/-1}
  body.context-hotel .rooms-v562-side{grid-column:1/-1;padding-top:11px}
}
@media(max-width:480px){
  body.context-hotel .rooms-v562-kpis{grid-template-columns:1fr}
  body.context-hotel .rooms-v562-kpis>div:last-child{grid-column:auto}
  body.context-hotel .rooms-v562-row{grid-template-columns:1fr}
  body.context-hotel .rooms-v562-photo{width:100%;height:150px}
  body.context-hotel .rooms-v562-side{grid-column:auto;display:grid}
  body.context-hotel .rooms-v562-actions{align-items:stretch}
  body.context-hotel .rooms-v562-actions .btn{flex:1;text-align:center}
}

@media print{
  body.context-hotel .rooms-v562-page{max-width:none!important;padding:12px!important}
  body.context-hotel .rooms-v562-head-actions,
  body.context-hotel .rooms-v562-toolbar>.ggs-r56-form-shell,
  body.context-hotel .rooms-v562-actions{display:none!important}
  body.context-hotel .rooms-v562-kpis{grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:12px}
  body.context-hotel .rooms-v562-kpis>div{padding:8px 10px;box-shadow:none}
  body.context-hotel .rooms-v562-list{gap:7px}
  body.context-hotel .rooms-v562-row{
    grid-template-columns:92px minmax(0,1fr) 155px;gap:10px;padding:8px;border-radius:10px;box-shadow:none;
    break-inside:avoid;page-break-inside:avoid;transform:none!important;
  }
  body.context-hotel .rooms-v562-photo{width:92px;height:68px;border-radius:8px}
  body.context-hotel .rooms-v562-facts{margin-top:5px}
  body.context-hotel .rooms-v562-facts span{min-height:22px;padding:2px 6px;font-size:.66rem}
  body.context-hotel .rooms-v562-policy{margin-top:5px;font-size:.68rem}
  body.context-hotel .rooms-v562-side{padding-left:10px;gap:4px}
  body.context-hotel .rooms-v562-price strong{font-size:.95rem}
}

/* GANGANSTAY_R5_9_ROOM_EDIT_AND_EXISTING_PHOTO */
body.context-hotel .ggs-photo-existing-btn{margin-top:8px!important;width:auto!important}
body.context-hotel .rooms-v59-edit-panel[hidden]{display:none!important}
body.context-hotel .rooms-v59-edit-panel{
  grid-column:1/-1;margin:2px 0 10px!important;padding:20px!important;border:1px solid #cfded5!important;
  border-radius:18px!important;box-shadow:0 12px 34px rgba(8,59,37,.08)!important;background:#fff!important;
}
body.context-hotel .rooms-v59-edit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:15px}
body.context-hotel .rooms-v59-edit-head h2{margin:3px 0 4px!important}
body.context-hotel .rooms-v59-edit-head p{margin:0!important;max-width:720px}
body.context-hotel .rooms-v59-edit-preview{
  width:min(360px,100%);aspect-ratio:4/3;border-radius:14px;overflow:hidden;border:1px solid #dce6e0;background:#edf3ef;margin-bottom:16px;
}
body.context-hotel .rooms-v59-edit-preview img{width:100%;height:100%;object-fit:cover;display:block}
body.context-hotel .rooms-v59-edit-panel .room-edit-form{display:grid;gap:10px;margin:0!important}
body.context-hotel .rooms-v59-edit-panel .room-edit-form>.grid{gap:12px}
body.context-hotel .rooms-v59-edit-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:8px;padding-top:14px;border-top:1px solid #e3ebe6}
body.context-hotel .rooms-v562-actions>[data-room-edit-button]{white-space:nowrap}
@media(max-width:720px){
  body.context-hotel .rooms-v59-edit-panel{padding:15px!important}
  body.context-hotel .rooms-v59-edit-head{display:block}
  body.context-hotel .rooms-v59-edit-head>[data-room-edit-close]{margin-top:10px}
  body.context-hotel .rooms-v59-edit-actions{display:grid;grid-template-columns:1fr}
  body.context-hotel .rooms-v59-edit-actions .btn{width:100%}
}
@media print{body.context-hotel .rooms-v59-edit-panel{display:none!important}}

/* GanGanStay R6.0 — tarification dynamique */
.dynamic-pricing-card{display:grid;gap:18px}
.dynamic-pricing-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}
.dynamic-pricing-head h2{margin:.2rem 0 .35rem}
.dynamic-priority-note{margin:0}
.dynamic-preview h3{margin:0 0 10px}
.dynamic-preview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dynamic-preview-grid>div{border:1px solid var(--line,#dbe4df);border-radius:14px;padding:12px;background:#f8fbf9;display:grid;gap:5px}
.dynamic-preview-grid span{font-size:.78rem;color:var(--muted,#68766f)}
.dynamic-preview-grid strong{font-size:1.05rem}
.dynamic-preview-grid small{font-weight:700;color:#315b45}
.dynamic-advanced{border:1px solid var(--line,#dbe4df);border-radius:14px;padding:0 14px;background:#fff}
.dynamic-advanced summary{cursor:pointer;font-weight:800;padding:13px 0}
.price-source{display:block;margin-top:5px;font-size:.72rem;line-height:1.25}
.price-source.dynamic{color:#0f6b3b;font-weight:800}.price-source.manual{color:#8a5a00;font-weight:800}.price-source.base{color:var(--muted,#68766f)}
.dynamic-price-badge{margin-left:6px}
.dynamic-booking-note{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0}
.dynamic-booking-note small{color:var(--muted,#68766f)}
@media(max-width:900px){.dynamic-preview-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dynamic-pricing-head{align-items:center}}
@media(max-width:560px){.dynamic-preview-grid{grid-template-columns:1fr}.dynamic-pricing-head{display:grid}}

/* GanGanStay R6.1 — formulaires Chambres et Tarifs simplifiés */
body.context-hotel .room-simple-form{display:grid;gap:11px}
body.context-hotel .simple-form-intro{
  display:grid;gap:3px;padding:12px 14px;border:1px solid #d8e7de;border-radius:14px;background:#f3f8f5;color:#183e2a;
}
body.context-hotel .simple-form-intro strong{font-size:.94rem}
body.context-hotel .simple-form-intro span{font-size:.8rem;color:#667970;line-height:1.42}
body.context-hotel .room-essential-grid{align-items:start}
body.context-hotel .room-essential-grid small{display:block;margin-top:5px;color:#718078;line-height:1.35}
body.context-hotel .room-advanced-options,
body.context-hotel .inventory-advanced-options{
  margin-top:7px;border:1px solid #dce6e0;border-radius:14px;background:#fbfdfc;overflow:hidden;
}
body.context-hotel .room-advanced-options>summary,
body.context-hotel .inventory-advanced-options>summary{
  cursor:pointer;list-style:none;padding:13px 14px;font-weight:850;color:#17412a;display:flex;align-items:center;justify-content:space-between;gap:12px;
}
body.context-hotel .room-advanced-options>summary::-webkit-details-marker,
body.context-hotel .inventory-advanced-options>summary::-webkit-details-marker{display:none}
body.context-hotel .room-advanced-options>summary::after,
body.context-hotel .inventory-advanced-options>summary::after{
  content:'+';display:grid;place-items:center;width:25px;height:25px;border-radius:999px;background:#eaf4ed;color:#176038;font-weight:900;
}
body.context-hotel .room-advanced-options[open]>summary::after,
body.context-hotel .inventory-advanced-options[open]>summary::after{content:'−'}
body.context-hotel .advanced-options-body{display:grid;gap:10px;padding:0 14px 15px;border-top:1px solid #e5ece8;padding-top:14px}
body.context-hotel .advanced-options-body h3{margin:5px 0 0!important;font-size:1rem}
body.context-hotel .inventory-propagation-note{display:block;padding:10px 12px;border-radius:11px;background:#f8faf9;color:#6b7a72}

body.context-hotel .inventory-simple-page{max-width:1320px!important}
body.context-hotel .inventory-summary-simple{grid-template-columns:repeat(5,minmax(0,1fr))}
body.context-hotel .inventory-guide{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 16px;
}
body.context-hotel .inventory-guide>div{
  display:grid;gap:4px;padding:12px 14px;border:1px solid #dce7e0;border-radius:14px;background:#fff;
}
body.context-hotel .inventory-guide strong{color:#17432b;font-size:.83rem}
body.context-hotel .inventory-guide span{color:#6c7c73;font-size:.77rem;line-height:1.4}

body.context-hotel .dynamic-pricing-simple .dynamic-mode-block{display:grid;gap:6px}
body.context-hotel .dynamic-pricing-simple .dynamic-mode-block label{font-weight:850}
body.context-hotel .dynamic-limits-grid{display:grid;grid-template-columns:1fr minmax(180px,.8fr) 1fr;gap:12px;align-items:stretch}
body.context-hotel .dynamic-limits-grid>div{min-width:0}
body.context-hotel .dynamic-base-reference{
  display:grid;align-content:center;gap:4px;padding:12px 14px;border:1px solid #dbe6df;border-radius:13px;background:#f7faf8;
}
body.context-hotel .dynamic-base-reference span{font-size:.75rem;color:#687970;font-weight:800;text-transform:uppercase;letter-spacing:.03em}
body.context-hotel .dynamic-base-reference strong{font-size:1.16rem;color:#153d28}
body.context-hotel .dynamic-base-reference small{color:#718078;line-height:1.35}

body.context-hotel .bulk-inventory-simple>summary{font-size:1rem;padding:3px 0}
body.context-hotel .bulk-inventory-simple form{display:grid;gap:14px}
body.context-hotel .bulk-simple-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
body.context-hotel .bulk-simple-grid>div{min-width:0}
body.context-hotel .restrictions-grid-simple{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
body.context-hotel .restrictions-grid-simple>div{padding:11px;border:1px solid #e0e8e3;border-radius:12px;background:#fff}
body.context-hotel .restrictions-grid-simple small{display:block;margin-top:5px;color:#748179;line-height:1.35}

body.context-hotel .inventory-table-help{
  display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px;padding:11px 13px;border-radius:12px;background:#f5f8f6;border:1px solid #e0e7e3;
}
body.context-hotel .inventory-table-help strong{color:#17402a}
body.context-hotel .inventory-table-help span{max-width:680px;color:#687970;font-size:.79rem;line-height:1.4;text-align:right}
body.context-hotel .inventory-table-simple table{min-width:900px}
body.context-hotel .inventory-table-simple th:nth-child(1){width:145px}
body.context-hotel .inventory-table-simple th:nth-child(2){width:230px}
body.context-hotel .inventory-table-simple th:nth-child(3){width:300px}
body.context-hotel .inventory-table-simple th:nth-child(4){width:auto}
body.context-hotel .inventory-table-simple td{vertical-align:top}
body.context-hotel .inventory-date-cell strong{white-space:nowrap}
body.context-hotel .inventory-mobile-label{display:none}
body.context-hotel .inventory-row-advanced details{border:1px solid #dce6e0;border-radius:11px;background:#fbfdfc;min-width:250px}
body.context-hotel .inventory-row-advanced summary{cursor:pointer;padding:10px 11px;font-weight:800;color:#185033;list-style:none}
body.context-hotel .inventory-row-advanced summary::-webkit-details-marker{display:none}
body.context-hotel .inventory-row-advanced summary::after{content:'+';float:right;color:#1d7044;font-weight:900}
body.context-hotel .inventory-row-advanced details[open] summary::after{content:'−'}
body.context-hotel .inventory-advanced-body{display:grid;gap:10px;padding:0 11px 12px;border-top:1px solid #e5ece8;padding-top:11px}
body.context-hotel .restriction-choice{
  display:flex!important;align-items:flex-start!important;gap:9px!important;margin:0!important;padding:9px 10px;border:1px solid #e3e9e5;border-radius:11px;background:#fff;color:#253c30!important;font-weight:400!important;
}
body.context-hotel .restriction-choice input{width:auto!important;flex:0 0 auto;margin-top:3px!important}
body.context-hotel .restriction-choice span{display:grid;gap:2px}
body.context-hotel .restriction-choice strong{font-size:.8rem;color:#193c29}
body.context-hotel .restriction-choice small{font-size:.71rem;color:#748078;line-height:1.35}
body.context-hotel .price-reset-choice{background:#fffaf3}

body.context-hotel [data-money-input]{font-variant-numeric:tabular-nums}

@media(max-width:1100px){
  body.context-hotel .inventory-summary-simple{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.context-hotel .bulk-simple-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:820px){
  body.context-hotel .inventory-summary-simple{grid-template-columns:1fr 1fr}
  body.context-hotel .inventory-guide{grid-template-columns:1fr}
  body.context-hotel .dynamic-limits-grid{grid-template-columns:1fr}
  body.context-hotel .restrictions-grid-simple{grid-template-columns:1fr}
  body.context-hotel .inventory-table-help{display:grid}
  body.context-hotel .inventory-table-help span{text-align:left}
}
@media(max-width:620px){
  body.context-hotel .room-essential-grid{grid-template-columns:1fr!important}
  body.context-hotel .bulk-simple-grid{grid-template-columns:1fr}
  body.context-hotel .inventory-summary-simple{grid-template-columns:1fr}
}

/* =========================================================
   GanGanStay R6.2.1 — correctif menu « Mon accès »
   Le sélecteur générique details:has(form) de R5.6/R6.1
   captait aussi .account-menu à cause du formulaire Déconnexion,
   ce qui ajoutait un « + » et surtout overflow:hidden, masquant
   le menu déroulant positionné en absolu.
   ========================================================= */
body.context-hotel details.account-menu,
body.context-account details.account-menu,
body.context-admin details.account-menu{
  position:relative!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  overflow:visible!important;
  margin:0!important;
}
body.context-hotel details.account-menu>summary,
body.context-account details.account-menu>summary,
body.context-admin details.account-menu>summary{
  list-style:none!important;
  cursor:pointer!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:8px!important;
  min-height:40px!important;
  padding:5px 7px!important;
  border:0!important;
  border-radius:12px!important;
  background:transparent!important;
  color:var(--ns-text)!important;
  font-weight:800!important;
}
body.context-hotel details.account-menu>summary::after,
body.context-account details.account-menu>summary::after,
body.context-admin details.account-menu>summary::after{
  content:none!important;
  display:none!important;
}
body.context-hotel details.account-menu[open]>summary,
body.context-account details.account-menu[open]>summary,
body.context-admin details.account-menu[open]>summary{
  background:#f1f5f2!important;
}
body.context-hotel details.account-menu .account-dropdown,
body.context-account details.account-menu .account-dropdown,
body.context-admin details.account-menu .account-dropdown{
  overflow:visible!important;
  z-index:250!important;
}

/* GANGANSTAY_2026_10_25_ROOM_CATEGORIES_CLARITY */
body.context-hotel .rooms-v563-duplicate-notice{margin:0 0 14px!important}
body.context-hotel .rooms-v562-row.has-duplicate{border-color:#e7bd67}
body.context-hotel .rooms-v563-name-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
body.context-hotel .rooms-v563-name-row h3{min-width:0}
body.context-hotel .rooms-v563-duplicate-badge{
  display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;
  background:#fff4d8;color:#7d5100;border:1px solid #f0d490;font-size:.68rem;font-weight:850;white-space:nowrap;
}
body.context-hotel .rooms-v563-status-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:10px;
}
body.context-hotel .rooms-v563-status-grid>span{
  min-width:0;display:grid;gap:1px;padding:7px 8px;border:1px solid #e1e9e4;border-radius:10px;background:#f8faf9;
}
body.context-hotel .rooms-v563-status-grid small{
  color:#718078;font-size:.64rem;font-weight:800;line-height:1.15;text-transform:uppercase;letter-spacing:.025em;
}
body.context-hotel .rooms-v563-status-grid strong{color:#123e28;font-size:.93rem;line-height:1.2}
body.context-hotel .rooms-v562-actions{position:relative}
body.context-hotel .rooms-v563-more{position:relative;margin:0}
body.context-hotel .rooms-v563-more>summary{list-style:none;cursor:pointer;white-space:nowrap}
body.context-hotel .rooms-v563-more>summary::-webkit-details-marker{display:none}
body.context-hotel .rooms-v563-more-menu{
  position:absolute;right:0;top:calc(100% + 7px);z-index:40;min-width:210px;padding:7px;
  display:grid;gap:5px;background:#fff;border:1px solid #d9e5de;border-radius:12px;box-shadow:0 16px 34px rgba(8,59,37,.13);
}
body.context-hotel .rooms-v563-more:not([open]) .rooms-v563-more-menu{display:none}
body.context-hotel .rooms-v563-more-menu a,
body.context-hotel .rooms-v563-more-menu button{
  width:100%;min-height:38px;padding:8px 10px;border:0;border-radius:9px;background:transparent;color:#173f2b;
  font:inherit;font-size:.78rem;font-weight:780;text-align:left;text-decoration:none;cursor:pointer;
}
body.context-hotel .rooms-v563-more-menu a:hover,
body.context-hotel .rooms-v563-more-menu button:hover{background:#f0f6f2}
body.context-hotel .rooms-v563-more-menu form{display:block!important;width:100%;margin:0!important}
body.context-hotel .rooms-v562-actions>[data-room-edit-button]{font-weight:850}

@media(max-width:900px){
  body.context-hotel .rooms-v562-row{grid-template-columns:1fr!important;gap:12px!important;align-items:stretch}
  body.context-hotel .rooms-v562-photo{width:100%!important;height:180px!important}
  body.context-hotel .rooms-v562-side{grid-column:auto!important;border-left:0!important;border-top:1px solid #e5ece8;padding:11px 0 0!important}
  body.context-hotel .rooms-v563-more-menu{position:static;min-width:0;margin-top:7px;box-shadow:none}
}
@media(max-width:600px){
  body.context-hotel .rooms-v562-photo{height:150px!important}
  body.context-hotel .rooms-v563-status-grid{grid-template-columns:1fr 1fr}
  body.context-hotel .rooms-v562-side{display:grid!important;gap:10px}
  body.context-hotel .rooms-v562-actions{display:grid;grid-template-columns:1fr;align-items:stretch}
  body.context-hotel .rooms-v562-actions .btn,
  body.context-hotel .rooms-v563-more,
  body.context-hotel .rooms-v563-more>summary{width:100%;text-align:center;justify-content:center}
}
body.context-hotel .rooms-v562-facts .rooms-v563-reserved-chip{background:#fff7e8;color:#7a4d00;border-color:#f1d39c}
/* --- assets/ganganstay-connect-r62.css --- */
.ggs62-toast-host{position:fixed;right:18px;top:82px;z-index:10020;display:grid;gap:10px;max-width:min(390px,calc(100vw - 32px))}.ggs62-toast{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:14px 16px;background:#fff;border:1px solid #d8e4dc;border-radius:16px;box-shadow:0 18px 44px rgba(0,0,0,.16);color:#123c27;text-decoration:none}.ggs62-toast strong,.ggs62-toast span{grid-column:1}.ggs62-toast button{grid-column:2;grid-row:1/3;border:0;background:transparent;font-size:22px}.ggs62-prompt{position:fixed;inset:0;z-index:10030;background:rgba(8,35,22,.48);display:grid;place-items:end center;padding:18px}.ggs62-prompt-card{position:relative;width:min(560px,100%);background:#fff;border-radius:22px;padding:24px;box-shadow:0 24px 70px rgba(0,0,0,.24)}.ggs62-prompt-card>strong{font-size:1.3rem}.ggs62-prompt-card p{color:#5d6b63}.ggs62-x{border:0;background:transparent;font-size:22px;cursor:pointer}.ggs62-prompt-card>.ggs62-x{position:absolute;right:14px;top:10px}.ggs62-install-chip{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:10010;width:min(680px,calc(100vw - 28px));background:#fff;border:1px solid #cfddd4;border-radius:18px;padding:12px 14px;box-shadow:0 18px 50px rgba(0,0,0,.18);display:flex;align-items:center;gap:12px}.ggs62-install-chip span{display:grid;flex:1}.ggs62-install-chip small{color:#66746c}.ggs62-referral-list{display:grid;gap:18px}.ggs62-share-box{display:grid;grid-template-columns:180px 1fr;gap:20px;align-items:center}.ggs62-share-box .qr-render{width:180px;min-height:180px}.ggs62-share-box input{width:100%;margin:10px 0}.ggs62-referral-card{overflow:hidden}@media(max-width:700px){.ggs62-share-box{grid-template-columns:1fr}.ggs62-share-box .qr-render{margin:auto}.ggs62-install-chip{align-items:flex-start;flex-wrap:wrap}.ggs62-install-chip .btn{margin-left:auto}}
/* --- assets/ganganstay-services-r65.css --- */
/* GanGanStay R6.5 — services voyageurs / partenaires locaux */
.ggs65-services-section{margin-top:clamp(28px,5vw,64px)}
.ggs65-service-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.ggs65-service-card{background:#fff;border:1px solid rgba(18,69,40,.15);border-radius:22px;overflow:hidden;box-shadow:0 16px 36px rgba(18,69,40,.08);display:flex;flex-direction:column;min-width:0}
.ggs65-service-photo{display:block;aspect-ratio:4/3;background:#eef5f0;overflow:hidden}
.ggs65-service-photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease}
.ggs65-service-card:hover .ggs65-service-photo img{transform:scale(1.02)}
.ggs65-service-body{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1}
.ggs65-service-kicker{display:flex;gap:8px;align-items:center;justify-content:space-between;flex-wrap:wrap;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#17613a}
.ggs65-service-body h3{margin:0;font-size:1.12rem;line-height:1.25}
.ggs65-service-body h3 a{color:#123d27;text-decoration:none}
.ggs65-service-body p{margin:0;color:#5c6961;line-height:1.45}
.ggs65-service-meta{font-size:.86rem;font-weight:700;color:#344c3e}
.ggs65-badge{display:inline-flex;align-items:center;width:max-content;padding:5px 9px;border-radius:999px;font-size:.72rem;font-weight:800;text-transform:none;letter-spacing:0}
.ggs65-badge.sponsored{background:#fff1e9;color:#9a4b1e;border:1px solid #ffd7c0}
.ggs65-badge.advantage{background:#e9f7ee;color:#155d38;border:1px solid #c9ead5}
.ggs65-advantage-text{padding:10px 12px;border-radius:12px;background:#f3faf5;border:1px solid #d8eee0;color:#174f32;font-weight:700;font-size:.86rem}
.ggs65-service-body .btn{margin-top:auto;align-self:flex-start}
.ggs65-disclosure{font-size:.78rem;color:#65726a;margin:12px 0 0}

.ggs65-directory-hero{padding-top:36px;padding-bottom:18px}
.ggs65-directory-hero .panel{background:linear-gradient(135deg,#0e4b2f,#167443);color:#fff;border:none}
.ggs65-directory-hero h1{margin:.3rem 0 .5rem;color:#fff}
.ggs65-directory-hero p{color:rgba(255,255,255,.84);max-width:780px}
.ggs65-category-pills{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0 0}
.ggs65-category-pills a{display:inline-flex;padding:9px 13px;border-radius:999px;background:#fff;border:1px solid rgba(18,69,40,.16);text-decoration:none;color:#17482f;font-weight:750}
.ggs65-category-pills a.active{background:#174f32;color:#fff;border-color:#174f32}
.ggs65-directory-note{margin-top:12px;color:#64736a;font-size:.88rem}

.ggs65-detail{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:24px;align-items:start}
.ggs65-detail-media{background:#eef5f0;border-radius:24px;overflow:hidden;aspect-ratio:4/3}
.ggs65-detail-media img{width:100%;height:100%;object-fit:cover;display:block}
.ggs65-detail-main,.ggs65-detail-side{background:#fff;border:1px solid rgba(18,69,40,.14);border-radius:22px;padding:22px;box-shadow:0 14px 32px rgba(18,69,40,.06)}
.ggs65-detail-main h1{margin:.25rem 0 .5rem}
.ggs65-detail-actions{display:grid;gap:10px;margin-top:18px}
.ggs65-detail-actions .btn{justify-content:center}
.ggs65-detail-facts{display:grid;gap:12px}
.ggs65-detail-facts div{padding-bottom:12px;border-bottom:1px solid #e7eee9}
.ggs65-detail-facts div:last-child{border-bottom:0;padding-bottom:0}
.ggs65-detail-facts small{display:block;color:#6b786f;margin-bottom:3px}
.ggs65-detail-facts strong{display:block;color:#173d29}
.ggs65-pharmacy-note{margin-top:16px;padding:12px;border-radius:12px;background:#f7faf8;color:#536158;font-size:.84rem}

.ggs65-admin-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,.7fr);gap:22px;align-items:start}
.ggs65-admin-card{background:#fff;border:1px solid #dce9e0;border-radius:18px;padding:18px}
.ggs65-admin-row{display:grid;grid-template-columns:84px minmax(0,1fr) auto;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid #edf2ee}
.ggs65-admin-row:last-child{border-bottom:0}
.ggs65-admin-thumb{width:84px;aspect-ratio:4/3;border-radius:12px;overflow:hidden;background:#eef4ef}
.ggs65-admin-thumb img{width:100%;height:100%;object-fit:cover}
.ggs65-admin-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.ggs65-admin-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}
.ggs65-admin-stats span{padding:8px;border-radius:10px;background:#f6faf7;font-size:.75rem;text-align:center}
.ggs65-admin-stats strong{display:block;font-size:1rem}
.ggs65-admin-form details>summary,.ggs65-admin-create>summary{cursor:pointer;font-weight:800;list-style:none}
.ggs65-admin-form details>summary::-webkit-details-marker,.ggs65-admin-create>summary::-webkit-details-marker{display:none}
.ggs65-admin-form form,.ggs65-admin-create form{margin-top:16px}
.ggs65-admin-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ggs65-admin-fields .full{grid-column:1/-1}
.ggs65-admin-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.ggs65-admin-checks label{display:flex;gap:8px;align-items:flex-start;padding:10px;border:1px solid #e1ebe4;border-radius:12px;background:#fafcfb}
.ggs65-admin-note{font-size:.82rem;color:#66746c}

@media(max-width:1100px){.ggs65-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ggs65-admin-grid{grid-template-columns:1fr}}
@media(max-width:720px){.ggs65-service-grid{grid-template-columns:1fr}.ggs65-detail{grid-template-columns:1fr}.ggs65-admin-fields,.ggs65-admin-checks{grid-template-columns:1fr}.ggs65-admin-fields .full{grid-column:auto}.ggs65-admin-row{grid-template-columns:68px minmax(0,1fr)}.ggs65-admin-row>.btn{grid-column:1/-1}.ggs65-admin-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}

@media print{
  .ggs65-service-card{break-inside:avoid;box-shadow:none}
  .ggs65-disclosure{font-size:10px}
}
.ggs65-service-body .btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:1px solid #cfe1d5;border-radius:12px;padding:9px 12px;font-weight:800;color:#174b31;background:#fff}
.ggs65-service-body .btn:hover{border-color:#9fc9ae;background:#f7fbf8}

/* GanGanStay R6.8 — annuaire local dynamique et géolocalisation */
.ggs65-live-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:14px 0 0}
.ggs65-directory-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ggs65-live-status{display:inline-flex;align-items:center;min-height:34px;padding:7px 11px;border-radius:999px;background:#f4f8f5;border:1px solid #dbe9df;color:#385847;font-size:.84rem;font-weight:700;line-height:1.2}
.ggs65-live-status.is-loading{background:#fff7ee;border-color:#f1d5ba;color:#7b4b22}
.ggs65-live-status.is-success{background:#edf8f0;border-color:#cfe9d7;color:#175d38}
.ggs65-live-status.is-error{background:#fff4f2;border-color:#f0d0ca;color:#8d3f35}
.ggs65-radius-control{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ggs65-radius-control[hidden]{display:none!important}
.ggs65-radius-control>span{font-size:.8rem;font-weight:800;color:#50645a;margin-right:2px}
.ggs65-radius-control button{appearance:none;border:1px solid #d5e3d9;background:#fff;color:#315643;border-radius:999px;padding:7px 10px;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer}
.ggs65-radius-control button:hover{border-color:#9fc9ae;background:#f7fbf8}
.ggs65-radius-control button.active{background:#174f32;color:#fff;border-color:#174f32}
.ggs65-service-grid[aria-busy="true"]{opacity:.58;pointer-events:none;transition:opacity .16s ease}
.ggs65-live-empty{grid-column:1/-1}
.ggs65-service-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
@media(max-width:720px){
  .ggs65-live-toolbar{align-items:stretch}
  .ggs65-directory-actions{width:100%;align-items:stretch}
  .ggs65-directory-actions .btn{flex:0 0 auto}
  .ggs65-live-status{flex:1;min-width:190px;border-radius:14px}
  .ggs65-radius-control{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px;scrollbar-width:none}
  .ggs65-radius-control::-webkit-scrollbar{display:none}
  .ggs65-radius-control button{white-space:nowrap}
}
/* --- assets/ganganstay-display-r70.css --- */
/* GanGanStay — corrections d'affichage relevées en production (22/10/2026).
   Chargé en dernier, après toutes les autres feuilles. */

/* 1. Champs de formulaire : un libellé qui suit un champ respire (il était collé au champ précédent). */
form :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea,small) + label{margin-top:14px}

/* 2. Case « Faire confiance à cet ordinateur » : case et texte sur la même ligne, case de taille normale. */
.auth-trust-row input[type=checkbox]{min-height:0;height:18px;padding:0;border:0;box-shadow:none}
.auth-trust-row span{min-width:0}
.auth-trust-row strong{color:var(--ink,#16231c);font-size:14px}
.auth-trust-row small{font-weight:500;font-size:12.5px}

/* 3. Textes illisibles (texte foncé sur fond vert foncé, ou blanc sur fond clair). */
.ggs65-directory-hero .panel .eyebrow{color:#bfe8cf}
.ggs65-directory-hero .ggs65-directory-note{color:#5b6a61}
body.context-account .traveler-next .eyebrow{color:#bfe8cf}
body.context-account .traveler-next h2{color:#fff}

/* 4. Titres de section alignés à gauche sur téléphone (ils étaient décalés vers la droite). */
@media (max-width:900px){body.context-public .pagehead{align-items:stretch}}
@media (max-width:600px){body.context-public .section-head{align-items:stretch}}

/* 5. Destinations : pastilles compactes sur téléphone au lieu d'une longue colonne de boutons. */
@media (max-width:720px){
  body.context-public .destination-prefecture-grid{display:flex;flex-wrap:wrap;gap:8px}
  body.context-public .destination-prefecture{min-height:42px;padding:9px 15px;border-radius:999px;justify-content:center}
  body.context-public .destination-list-prefectures{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  body.context-public .destination-list-prefectures .destination-list-item{min-height:48px;padding:11px 12px}
}

/* 6. Connexion : lien « Mot de passe oublié ? » sous le champ, texte d'accueil court. */
.auth-forgot-link{display:block;text-align:right;margin:8px 0 14px;font-size:14px;font-weight:650}
.auth-panel .auth-lead{margin:0 0 18px}
.auth-panel .auth-alt{margin-top:22px;padding-top:18px;border-top:1px solid #e3ebe6;display:grid;gap:12px}
.auth-panel .auth-alt p{margin:0;color:var(--muted,#5d6a62)}

/* 7. Recherche (/hotels/) : le type d'établissement n'est plus tronqué. */
.ggs-search-category select{text-overflow:ellipsis}

/* 8. Ouverture : message et appel aux établissements quand aucun hébergement n'est encore publié. */
.ggs-launch-empty{display:grid;justify-items:center;gap:10px;text-align:center}
.ggs-launch-empty p{max-width:560px;margin:0 auto}
.ggs-launch-empty .btn{margin-top:6px}
.ggs-launch-empty h2,.ggs-launch-empty h3{font-size:clamp(1.25rem,4.6vw,1.7rem);line-height:1.25;margin:0}

/* 9. Accueil : bandeau compact et centré. Le formulaire de recherche est visible dès l'ouverture,
      sur un portable (1280 × 560 utiles) comme sur un téléphone. */
body.context-public .market-hero{min-height:0;padding:26px 0 38px}
body.context-public .market-hero .hero-inner{padding:0;row-gap:24px}
body.context-public .market-hero .hero-copy{max-width:none;width:100%;text-align:center;margin:0 auto}
body.context-public .market-hero .hero-copy .trust-chip{margin-bottom:10px}
body.context-public .market-hero .hero-copy h1{font-size:clamp(2.1rem,3.3vw,3rem);line-height:1.08;margin:0 auto 10px;max-width:none}
body.context-public .market-hero .hero-copy p{font-size:clamp(15px,1.2vw,18px);margin:0 auto;max-width:660px}
@media (max-width:600px){
  body.context-public .market-hero{padding:16px 0 26px}
  body.context-public .market-hero .hero-inner{row-gap:18px}
  body.context-public .market-hero .hero-copy{text-align:left}
  body.context-public .market-hero .hero-copy .trust-chip{margin-bottom:8px}
  body.context-public .market-hero .hero-copy h1{font-size:30px;line-height:1.1;margin-bottom:8px}
  body.context-public .market-hero .hero-copy p{font-size:15px}
}

/* 10. Champs mot de passe : bouton « Afficher / Masquer » intégré au champ. */
.pw-wrap{position:relative;display:block}
.pw-wrap input{padding-right:92px!important}
.pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);min-height:34px;padding:0 12px;border:1px solid #d6dfd9;border-radius:9px;background:#f2f6f3;color:#174b2c;font:inherit;font-size:13px;font-weight:700;cursor:pointer;line-height:1}
.pw-toggle:focus-visible{outline:3px solid rgba(36,107,62,.3);outline-offset:1px}
form .pw-wrap + label,form .pw-wrap + small + label{margin-top:14px}
form .pw-wrap + small{display:block;margin-top:6px}
input[readonly][autocomplete=username]{background:#f2f6f3;color:#3d4a42}

/* 11. Lot « confort » (23/10/2026) — titres de page identiques dans l'administration et les comptes. */
body:is(.context-admin,.context-account) .workspace-page .pagehead h1,
body:is(.context-admin,.context-account) .workspace-page > h1,
body.context-admin .diag-top h1{font-size:clamp(1.85rem,3vw,2.6rem);line-height:1.1;letter-spacing:-.03em;margin:.25rem 0 .45rem;color:#10291b}
body:is(.context-admin,.context-account) .workspace-page .pagehead p.muted{max-width:720px}

/* 12. Sécurité du compte : la double authentification occupe la colonne de droite, les autres cartes s'empilent à gauche. */
@media (min-width:901px){
  body.context-account .security-grid{grid-template-columns:1fr 1fr;align-items:start}
  body.context-account .security-grid>.ggs-mfa-card{grid-column:2;grid-row:1 / span 3}
  body.context-account .security-grid>.security-card:not(.ggs-mfa-card){grid-column:1}
}
body.context-account .security-grid .security-card{height:auto}
.ggs-password-card .ggs-password-change>summary{display:inline-flex;list-style:none;width:auto}
.ggs-password-card .ggs-password-change>summary::-webkit-details-marker{display:none}
body.context-account .ggs-password-card .ggs-password-change>summary::after{content:none!important;display:none!important}
.ggs-password-card .ggs-password-change[open]>summary{margin-bottom:12px}
.ggs-password-change-body{border-top:1px solid #e3ebe6;padding-top:12px}

/* 13. Activité & sessions. */
.ggs-ended-sessions{margin-top:12px}
.ggs-ended-sessions>summary{cursor:pointer;font-weight:700;color:#174b2c}
.ggs-session-note{margin:12px 0 0;font-size:13px}
code.tech-code{font-size:11.5px;color:#6b7a71;background:#f2f6f3;border-radius:6px;padding:1px 6px}

/* 14. Contenus du site : une carte par texte, groupées par page. */
.ggs-content-group{margin-top:22px}
.ggs-content-group .section-head h2{margin:0 0 4px;font-size:1.3rem}
.ggs-content-list{display:grid;gap:12px}
.ggs-content-item-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap}
.ggs-content-item-head h3{margin:0 0 4px;font-size:1.08rem}
.ggs-content-item-head p{margin:0 0 4px}
.ggs-content-item-side{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ggs-content-item .ggs-r56-form-shell{margin-top:12px}

/* 15. Profil : formulaire ouvert, largeur confortable. */
.ggs-profile-form{max-width:560px}
.ggs-profile-form input[readonly]{background:#f2f6f3;color:#3d4a42}
.ggs-password-card details.ggs-password-change{border:0;padding:0;background:none;box-shadow:none;margin:0}

/* 16. Tableaux du compte sur téléphone : une ligne devient une petite fiche (action et résultat, puis date et détail). */
@media (max-width:640px){
  .ggs-stack-table thead{display:none}
  .ggs-stack-table,.ggs-stack-table tbody{display:block;width:100%;min-width:0!important}
  .ggs-stack-table tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"main state" "when when" "detail detail";gap:3px 10px;padding:11px 12px;border-bottom:1px solid #e3ebe6}
  .ggs-stack-table td{display:block;padding:0!important;border:0!important;min-width:0}
  .ggs-stack-table td.c-main{grid-area:main;font-weight:650;color:#16231c}
  .ggs-stack-table td.c-state{grid-area:state;text-align:right}
  .ggs-stack-table td.c-when{grid-area:when;font-size:13px;color:#5d6a62}
  .ggs-stack-table td.c-detail{grid-area:detail;font-size:13px;color:#5d6a62}
  .ggs-stack-table td.c-detail:empty{display:none}
  .ggs-stack-table td[colspan]{grid-column:1 / -1}
}

/* 17. Parcours établissement (23/10/2026) : liste « Ce qu'il reste à faire », erreurs sur le formulaire, champ ciblé. */
.ggs-onb{display:grid;gap:16px;margin:12px 0}
.ggs-onb-group h3{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 8px;font-size:1.02rem}
.ggs-onb-count{font-size:12px;font-weight:800;border-radius:999px;padding:3px 10px}
.ggs-onb-count.todo{background:#fff1e3;color:#9a4b07}
.ggs-onb-count.done{background:#e8f5ec;color:#1b6b3a}
.ggs-onb ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ggs-onb-task{display:grid;grid-template-columns:26px 1fr auto;gap:10px;align-items:start;padding:10px 12px;border:1px solid #e3ebe6;border-radius:12px;background:#fff}
.ggs-onb-task.is-done{background:#f6faf7;border-color:#e3ebe6}
.ggs-onb-task.is-done strong{color:#4b5a51;font-weight:650}
.ggs-onb-task.is-todo{border-color:#f0c99a;background:#fffaf4}
.ggs-onb-mark{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:13px;background:#e8f5ec;color:#1b6b3a}
.ggs-onb-task.is-todo .ggs-onb-mark{background:#fff;border:2px solid #e59a45}
.ggs-onb-body{display:grid;gap:3px;min-width:0}
.ggs-onb-body small{color:#5d6a62;font-size:13px;line-height:1.35}
.ggs-onb-body small.ggs-onb-who{color:#9a4b07;font-weight:700}
.ggs-onb-action{display:grid;justify-items:end;gap:4px}
.ggs-onb-inline{margin:0}
.ggs-onb-alt{font-size:12.5px}
.ggs-onb-card .ggs-onb-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}
.ggs-onb-card h2{margin:.2rem 0 .3rem}
@media (max-width:600px){.ggs-onb-task{grid-template-columns:26px 1fr}.ggs-onb-action{grid-column:2;justify-items:start}}
.ggs-form-error{border:1px solid #f1b5ad;background:#fff4f2;color:#7c1d12;border-radius:12px;padding:12px 14px;margin:0 0 14px;line-height:1.45}
.ggs-form-error span{color:#5d3a34;font-size:13.5px}
.ggs-focus-highlight{outline:3px solid rgba(229,154,69,.55)!important;outline-offset:3px;border-radius:10px;transition:outline-color .3s}
.ggs-photo-meta.is-warning,[data-photo-meta].is-warning{color:#9a4b07;font-weight:700}
.workspace-page .grid.grid-2>.ggs-onb-card{grid-column:1 / -1;order:-1}
.hotel-v23-dashboard>.ggs-onb-card{margin:0 0 18px}

/* 18. Lot 2 (23/10/2026) — parcours voyageur sur téléphone. */
.ggs-search-summary{display:none}
@media (max-width:720px){
  .ggs-search-page .ggs-search-summary{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #d6dfd9;border-radius:14px;background:#fff;box-shadow:0 4px 14px rgba(24,35,29,.06);text-align:left;font:inherit;color:#16231c;margin:0 0 14px;cursor:pointer}
  .ggs-search-page .ggs-search-shell.is-collapsible:not(.is-open){display:none}
}
.ggs-search-summary-text{display:grid;gap:2px;min-width:0}
.ggs-search-summary-text strong{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ggs-search-summary-text small{font-size:13px;color:#5d6a62}
.ggs-search-summary b,.ggs-stay-summary>summary b{flex:none;color:#174b2c;font-size:13.5px;border:1px solid #d6dfd9;border-radius:999px;padding:6px 12px;background:#f2f6f3}
.ggs-quick-dest{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 2px}
.ggs-quick-dest>span{font-size:12.5px;font-weight:700;color:#5d6a62;margin-right:2px}
.ggs-quick-chip{display:inline-flex;align-items:center;min-height:38px;padding:6px 14px;border-radius:999px;border:1px solid #d6dfd9;background:#fff;color:#174b2c;font-weight:700;font-size:14px;text-decoration:none}
.ggs-quick-chip:active{background:#e8f5ec}
.ggs-stay-summary{margin:18px 0}
.ggs-stay-summary>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;list-style:none}
.ggs-stay-summary>summary::-webkit-details-marker{display:none}
.ggs-stay-summary>summary span{display:grid;gap:2px;min-width:0}
.ggs-stay-summary>summary small{color:#5d6a62;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.ggs-stay-summary>summary strong{font-size:15.5px;line-height:1.3}
.ggs-stay-summary[open]>summary b{background:#e8f5ec}
.ggs-stay-form{margin-top:14px}
.ggs-map-link{display:inline-block;margin-top:4px;font-size:13.5px;font-weight:700}
@media (max-width:720px){
  .ggs-search-page .ggs-search-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px}
  .ggs-search-page .ggs-search-toolbar h1{font-size:19px;line-height:1.2;margin:0;letter-spacing:-.01em}
  .ggs-search-page:has(.ggs-search-summary) .ggs-search-toolbar p.muted{display:none}
  .ggs-search-page .ggs-search-results-actions select{min-height:38px;padding:6px 28px 6px 10px;font-size:14px;width:auto;max-width:170px}
  .ggs-search-page .ggs-search-result-card .public-card-media img{height:190px;object-fit:cover}
}
/* 19. Espace hôtel (23/10/2026) : scanner (saisie manuelle toujours visible, lecteur USB), note de la fiche réservation. */
.scanner-panel .scanner-privacy{margin:.55rem 0 0}
.scanner-manual{margin-top:.25rem}
.scanner-manual label{display:block;font-weight:800;margin-bottom:.4rem}
.scanner-manual small{display:block;margin-top:.45rem}
.scanner-manual .inline-search input{text-transform:uppercase;letter-spacing:.02em}
.scanner-manual .inline-search input::placeholder{text-transform:none}
.camera-box.is-live .camera-guide{border-color:#3ddc84;box-shadow:0 0 0 9999px rgba(0,0,0,.18)}
.muted.small{font-size:.86rem}
.hotel-v23-context-strip strong{white-space:nowrap}
@media(min-width:1081px){.hotel-v23-context-strip{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}}
/* 20. Fiche réservation de l'hôtel (23/10/2026) : la colonne « Actions rapides » était écrasée par le compte du séjour
   (environ 140 px à 1280 px avec zoom). Largeur fixe confortable, et au-dessus du reste quand l'écran est étroit. */
.grid.grid-2.res-detail-grid{grid-template-columns:minmax(0,1fr) minmax(300px,360px);align-items:start}
.res-detail-main{min-width:0}
@media(max-width:1180px){
  body .grid.grid-2.res-detail-grid{grid-template-columns:minmax(0,1fr)}
  .res-detail-actions{order:-1}
}
/* 21. Page « Pas d'espace voyageur » d'un compte d'équipe. */
.security-denied .actions-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px}
/* 22. Cartes de chambre (23/10/2026) : politique d'annulation datée, comme sur la page de réservation. */
.room-offer .room-policy{margin:.55rem 0 0;font-size:.93rem;line-height:1.4;font-weight:600;color:#245b3b}
.room-offer .room-policy-warn{color:#8a5a00}
.room-offer .room-policy-info{color:#5d6a62;font-weight:500}
.hotel-v23-context-strip a{flex-wrap:wrap;row-gap:0;column-gap:8px}
.hotel-v23-context-strip a span{white-space:nowrap}
/* 23. Disponibilité des chambres (23/10/2026) : nombre exact quand il en reste peu, sinon « Disponible pour vos dates ». */
body.context-public .availability-ok{display:inline-flex;padding:6px 9px;border-radius:999px;background:#eaf5ee;color:#1f5c3a;font-size:.77rem;font-weight:800}
