:root{color-scheme:light;--ink:#162a2c;--muted:#586c6d;--line:#dce7e4;--teal:#087969;--wash:#e8f5ef;--bg:#f3f7f5;--amber:#805414}
.gate-locked > :is(.top,.shell){display:none}
.gate-login{width:min(460px,calc(100% - 32px));margin:12vh auto;padding:28px;display:grid;gap:16px}
.gate-login button{justify-self:start;padding:9px 14px;border:1px solid var(--teal);border-radius:8px;background:var(--teal);color:white}
.gate-login a{color:var(--teal)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);font:15px/1.45 "Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #42a895;outline-offset:2px}
.top{height:72px;background:#113738;color:white;display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:12px}
.brand{display:flex;align-items:center;gap:12px;font-weight:700;line-height:1.18}
.brand small{display:block;font-size:12px;font-weight:500;color:#c0d9d3;margin-top:4px}
.mark{display:grid;place-items:center;background:#c4edcf;color:#163b32;width:40px;height:40px;border-radius:12px;font-size:24px;font-weight:800}
.sync{color:#d8eae5;font-size:12px;text-align:right}
.header-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}
.header-actions .action{color:var(--ink);white-space:nowrap}
.brand,.header-actions,.sync{min-width:0}
.mark{flex:none}
.history-section{margin-top:18px}.history-section h3{margin-bottom:8px}
.version{padding:8px 0;border-bottom:1px solid var(--line)}.version summary{cursor:pointer;color:var(--teal)}
.shell{display:grid;grid-template-columns:310px minmax(0,1fr);min-height:calc(100vh - 72px)}
.catalogue{background:white;border-right:1px solid var(--line);max-height:calc(100vh - 72px);position:sticky;top:0;overflow:auto}
.catalogue-head{position:sticky;top:0;background:white;padding:22px 20px 17px;border-bottom:1px solid var(--line);z-index:1}
h1,h2,h3,p{margin:0} h2{font-size:18px} h1{font-size:clamp(23px,3vw,34px);letter-spacing:-.04em;line-height:1.14}
.catalogue h2,.catalogue .badge{display:inline-block;vertical-align:middle}
.badge{padding:2px 8px;border-radius:99px;background:var(--wash);color:#1b5c50;font-weight:650;font-size:12px;margin-left:6px}
.search-label{display:block;color:var(--muted);font-size:12px;margin:16px 0 5px}
input:not([type=checkbox]),select{border:1px solid #cbdad6;border-radius:8px;background:white;padding:8px;min-width:0}
#search,#listing-status{width:100%}
.check{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:12px;color:var(--muted)} input[type=checkbox]{accent-color:var(--teal)}
#list{padding:9px 10px}.item{display:block;text-align:left;width:100%;border:1px solid transparent;background:white;border-radius:9px;padding:11px 10px;margin-bottom:3px}
.item:hover{background:#f3f8f5}.item[aria-current=true]{background:var(--wash);border-color:#b9e2d4}
.item strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.item small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.dot{color:#a96d14}
.main{padding:28px;max-width:1450px;width:100%;margin:0 auto}
.overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px}
.metric,.card{background:white;border:1px solid var(--line);border-radius:14px}
.metric{padding:16px}.metric b{display:block;font-size:24px;letter-spacing:-.035em}.metric span{color:var(--muted);font-size:12px}
.hero{padding:24px}.hero p,.hint{color:var(--muted);font-size:13px;margin-top:7px}
.tabs{display:flex;gap:9px;padding:0 22px;border-bottom:1px solid var(--line);overflow:auto}
.tabs button{padding:10px 8px;border:0;border-bottom:3px solid transparent;background:transparent;white-space:nowrap;color:var(--muted)}
.tabs button[aria-pressed=true]{border-color:var(--teal);color:var(--teal);font-weight:700}
.panel{padding:20px 22px;min-height:190px}.panel h2{margin-bottom:9px}.tools{display:flex;flex-wrap:wrap;gap:9px;align-items:end;margin:0 0 13px}
.tools label{font-size:12px;color:var(--muted);display:grid;gap:3px}.tools input,.tools select{height:37px;max-width:170px}
button.action,.modal-top button{border:1px solid #cbdad6;border-radius:8px;background:white;padding:7px 11px;font-size:13px}.action:hover{background:var(--wash)} button:disabled{opacity:.4;cursor:default}
.scroll{overflow:auto} table{width:100%;border-collapse:collapse;text-align:left;font-size:13px;white-space:nowrap}
th,td{padding:10px 9px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-size:11px;background:#f5f8f7}.money{text-align:right;font-variant-numeric:tabular-nums}
.link{border:0;background:none;color:var(--teal);font-weight:650;padding:2px;text-decoration:underline;text-underline-offset:3px}
.pages{display:flex;align-items:center;gap:10px;margin-top:14px;color:var(--muted);font-size:12px}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.fact{padding:12px;background:#f6f9f8;border:1px solid var(--line);border-radius:9px;overflow-wrap:anywhere}.fact small{display:block;color:var(--muted);margin-bottom:4px}
.gaps{background:#fff6e5;color:var(--amber);padding:11px 13px;border-radius:8px;margin:10px 0 15px;font-size:13px}.gaps p+p{margin-top:3px}
.empty{padding:22px 14px;color:var(--muted)}
dialog{width:min(750px,calc(100% - 25px));max-height:85vh;border:1px solid var(--line);border-radius:16px;padding:20px;color:var(--ink);box-shadow:0 14px 60px #142e2f42}
dialog::backdrop{background:#17313275}.modal-top{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}
@media(max-width:900px){.shell{grid-template-columns:245px minmax(0,1fr)}.main{padding:15px}.panel{padding:14px}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.top{padding:0 15px}.shell{display:block}.catalogue{position:static;max-height:280px;border-right:0;border-bottom:1px solid var(--line)}.catalogue-head{padding:10px 15px}.main{padding:11px}.metric{padding:9px}.metric b{font-size:18px}.hero{padding:17px}.tabs{padding:0 12px}}
@media(max-width:620px){.top{height:auto;min-height:72px;padding-block:10px}.header-actions{align-items:flex-end;flex-direction:column;gap:5px}.sync{font-size:10px}.header-actions .action{font-size:11px}}

/* Le calendrier garde sept colonnes, même quand les libellés deviennent des repères. */
[hidden]{display:none!important}
.main,.panel,.card,.calendar-layout,.calendar-grid,.calendar-recap{min-width:0}
.hero h1{overflow-wrap:anywhere}
.shell{grid-template-columns:clamp(210px,18vw,275px) minmax(0,1fr)}
.main{padding:clamp(12px,2vw,26px);max-width:1700px}
#detail{container:workspace / inline-size}
.workspace-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:13px}
.workspace-nav button{border:1px solid transparent;border-radius:8px;padding:7px 12px;background:transparent;color:var(--muted);font-weight:600}
.workspace-nav button[aria-current=true]{background:white;border-color:var(--line);color:var(--teal)}
.query-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px 12px;padding:16px 18px;border-bottom:1px solid var(--line)}
.query-tools label{display:grid;gap:4px;min-width:0;color:var(--muted);font-size:12px}
.query-tools input,.query-tools select{width:100%;font-size:14px}
.query-tools input[type=checkbox]{width:auto;margin:0}
.query-tools .query-toggle,.query-column-options label{display:flex;align-items:center;gap:7px}
.query-columns{grid-column:1/-1;border:1px solid var(--line);border-radius:8px;padding:8px 12px}
.query-columns summary{cursor:pointer;color:var(--teal);font-weight:650}
.query-columns .query-actions{margin:9px 0}
.query-column-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(142px,1fr));gap:7px 12px}
.query-scope,.query-actions{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}
.query-actions button[type=submit]{color:white;background:var(--teal);border-color:var(--teal)}
.query-count{margin-bottom:10px;font-weight:650}
.global-reservation-table{max-height:70vh}
.global-reservation-table thead{position:sticky;top:0;z-index:1}
.query-property{display:grid;gap:2px;min-width:9rem;max-width:17rem;white-space:normal}
.query-property small{color:var(--muted)}
.reservation-facts{margin:12px 0}
@media(max-width:700px){
  .query-tools{padding:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
  .global-reservation-table{max-height:none}
}
#catalogue-toggle{display:none}
.all-listings{margin:12px 0 0;color:var(--teal);font-weight:700;font-size:13px}
.calendar-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:19px 18px 14px}
.calendar-header h1{font-size:clamp(22px,2.5vw,31px)}
.calendar-header .hint{margin-top:4px;overflow-wrap:anywhere}
.calendar-controls{display:flex;flex-wrap:wrap;align-items:center;gap:5px}
.calendar-controls button{padding-inline:9px}
.calendar-month{font-size:clamp(13px,2vw,18px);text-transform:capitalize;padding-inline:5px}
.calendar-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:0 18px 12px}
.calendar-filters label:not(.calendar-toggle){display:grid;gap:4px;font-size:12px;color:var(--muted)}
.calendar-toggle{display:inline-flex;align-items:center;gap:6px;min-height:34px;font-size:13px;cursor:pointer}
.calendar-toggle input,.picker-row input{margin:0;width:16px;height:16px;flex:none}
.listing-picker{width:min(520px,calc(100% - 24px));max-height:85dvh;padding:clamp(12px,3vw,20px)}
.listing-picker[open]{display:flex;flex-direction:column;gap:10px}
.listing-picker .modal-top,.picker-footer .hint{margin:0}
.listing-picker input[type=search]{width:100%}
.picker-results{min-height:0;max-height:48dvh;overflow:auto;border:1px solid var(--line);border-radius:8px;overscroll-behavior:contain}
.picker-row{display:flex;align-items:center;gap:10px;padding:8px 12px;cursor:pointer}
.picker-row+.picker-row{border-top:1px solid var(--line)}
.picker-row:hover,.picker-row:has(input:checked){background:var(--wash)}
.picker-row span{min-width:0;overflow-wrap:anywhere}
.picker-row strong,.picker-row small{display:block}
.picker-row small{color:var(--muted)}
.picker-footer{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.picker-footer .hint{margin-inline-end:auto}
button.picker-apply{background:var(--teal);color:white;border-color:var(--teal)}
button.picker-apply:hover{background:#075e52}
.calendar-legend{display:flex;flex-wrap:wrap;gap:5px 12px;padding:0 18px 8px;font-size:11px;color:var(--muted)}
.calendar-legend span::before{content:"";display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:2px;background:#4b9b87}
.calendar-legend .legend-cancel::before{background:#b63931}
.calendar-legend .legend-mobility::before{background:#6b56af}
.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;padding:0 14px 14px}
.calendar-board{container:calendar-board / inline-size;min-width:0}
.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:auto;grid-auto-rows:minmax(min-content,1fr);background:var(--line);gap:1px;border:1px solid var(--line);border-radius:11px;overflow:hidden}
.calendar-grid>.empty{grid-column:1/-1;background:white}
.weekday{font-size:11px;text-align:center;padding:8px 0;color:var(--muted);font-weight:650;background:#f4f8f6}
.calendar-cell{min-width:0;min-height:7.5rem;padding:5px;display:flex;flex-direction:column;gap:3px;background:white}
.calendar-cell.outside-month{background:#f5f8f7}
.calendar-cell.selected-day{background:#eef8f3;box-shadow:inset 0 0 0 1.5px #71b5a6}
.day-number{border:0;background:none;color:var(--ink);padding:0;min-width:1.65rem;min-height:1.65rem;border-radius:50%;align-self:flex-start;font-weight:650;font-size:.85rem}
.outside-month .day-number{color:var(--muted)}
.day-number[aria-current=date]{background:#086a5e;color:white}
.calendar-cell button:not(.day-number){min-width:0;max-width:100%;border:0;border-radius:4px;font-size:.75rem;text-align:left;line-height:1.2;padding:3px 4px;min-height:1.15rem}
.calendar-cell button:focus-visible{outline-offset:-2px}
.stay-pill{background:#def1e9;color:#13584c;border-inline-start:3px solid #4b9b87!important}
.stay-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stay-pill.mobility-pill{background:#ede7fa;color:#483781;border-inline-start-color:#6b56af!important}
.cancel-pill{display:flex;align-items:center;gap:3px;background:#fbe2de;color:#8c2924;font-weight:750;white-space:nowrap}
.cancel-label,.cancel-short{display:none}
.cancel-count{flex:none;padding:0 3px;background:#b63931;color:#fff;border-radius:3px}
.more-pill,.departure-pill{background:transparent;color:#35645a;font-weight:650}
.recap-slot{display:none;position:relative;min-width:0}
.calendar-recap{border:1px solid var(--line);border-radius:10px;background:#f5f8f7;padding:12px;overflow:auto;overscroll-behavior:contain}
.recap-slot>.calendar-recap{position:absolute;inset:0}
.calendar-recap>h2{font-size:1rem;text-transform:capitalize}
.recap-drawer{position:fixed;inset:0 0 0 auto;margin:0;width:min(26rem,100%);max-width:100%;height:100dvh;max-height:100dvh;padding:0;border-radius:14px 0 0 14px}
.recap-drawer[open]{display:grid;grid-template-rows:auto minmax(0,1fr)}
.recap-drawer .calendar-recap{border:0;border-top:1px solid var(--line);border-radius:0}
.drawer-bar{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px;font-weight:650}
.recap-group{margin-top:11px}
.recap-group>h3{font-size:12px;color:#49615d;margin-bottom:5px}
.recap-cancelled>h3,.cancel-source{color:#8c2924}
.recap-cancelled .badge{background:#fbe2de;color:#8c2924}
.recap-card{padding:8px;background:white;border:1px solid var(--line);border-radius:7px;margin:0 0 5px}
.recap-cancelled .recap-card{border-left:3px solid #b63931}
.recap-link{display:block;border:0;background:none;padding:0;color:#075f54;text-align:left;font-weight:700;font-size:.875rem;overflow-wrap:anywhere}
.recap-link:hover{text-decoration:underline}
.recap-meta{display:flex;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:.75rem;margin-top:3px}
.recap-type{border-radius:4px;padding:0 4px;font-weight:650}
.short-type{background:#def1e9;color:#13584c}
.mobility-type{background:#ede7fa;color:#483781}
.stay-dates{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:6px 0;font-size:.75rem}
.stay-dates dt{color:var(--muted)}.stay-dates dd{margin:0;font-weight:650}
.cancellation-date{margin:8px 0 0;padding:6px 8px;background:#fcecea;color:#8c2924;border-radius:5px;font-size:.75rem}
.cancellation-date dt{font-weight:700}
.cancellation-date dd{margin:0}
.cancel-source,.recap-status{font-size:11px}
.calendar-archive{margin:0 14px 14px;border-top:1px solid var(--line);padding:9px 3px 0}
.calendar-archive summary{cursor:pointer;color:var(--teal);font-size:13px;font-weight:650}

@media(max-width:1220px){
  .shell{grid-template-columns:minmax(0,1fr)}
  #catalogue-toggle{display:inline-block}
  .catalogue{display:none;position:static}
  .catalogue.expanded{display:block;max-height:min(450px,55vh);border-right:0;border-bottom:1px solid var(--line)}
}
@container workspace (min-width: 65rem){
  .calendar-layout{grid-template-columns:minmax(0,1fr) clamp(14rem,23%,20rem)}
  .recap-slot{display:block}
  .calendar-grid{min-height:calc(100dvh - 14rem)}
}
@container calendar-board (min-width: 36rem){
  .cancel-short{display:inline}
}
@container calendar-board (min-width: 52rem){
  .cancel-short{display:none}
  .cancel-label{display:inline}
}
@container calendar-board (max-width: 43rem){
  .stay-label{overflow:hidden;clip-path:inset(50%);position:absolute;width:1px;height:1px}
}
@container calendar-board (max-width: 33rem){
  .calendar-cell{min-height:5.5rem;padding:2px;gap:2px}
  .calendar-cell button:not(.day-number){padding-inline:3px;font-size:.7rem}
  .more-label,.departure-label{display:none}
  .weekday{font-size:.65rem;padding-block:5px}
}
@media(max-width:700px){
  .overview{gap:5px}.metric{padding:8px}.metric span{font-size:10px;display:block}
  .calendar-header{padding:11px 8px 9px}
  .calendar-layout{padding:0 5px 8px;gap:8px}
  .recap-drawer{inset:auto 0 0;width:100%;height:min(36rem,85dvh);border-radius:14px 14px 0 0}
  .reservation-table{overflow:visible}
  .reservation-table table,.reservation-table tbody{display:block;white-space:normal}
  .reservation-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .reservation-table tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));padding:8px;margin-bottom:8px;border:1px solid var(--line);border-radius:8px}
  .reservation-table td{border:0;overflow-wrap:anywhere;padding:4px;font-size:12px}
  .reservation-table td::before{content:attr(data-label);display:block;color:var(--muted);font-size:10px}
  .reservation-table td:first-child{grid-column:1/-1}
}
@media(max-width:400px){
  .top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:8px;padding-inline:10px}
  .brand{gap:6px}
  .brand .mark{width:30px;height:30px;font-size:18px}
  .header-actions .action{white-space:normal;text-align:right;max-width:100%}
  .sync{overflow-wrap:anywhere}
}
