/* Shared public reservation calendar, scoped away from municipal navigation. */
#reservation-calendar { border:1px solid #e2d9cb; padding:18px; background:#faf6f0; min-width:0; }
#reservation-calendar[hidden], #reservation-calendar [hidden] { display:none!important; }
#reservation-calendar .rc-toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
#reservation-calendar .rc-toolbar > div { flex:1; min-width:150px; max-width:260px; }
#reservation-calendar .rc-month { font-family:Georgia,serif; font-size:1.4rem; font-weight:700; text-transform:capitalize; }
#reservation-calendar .rc-week, #reservation-calendar .rc-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px; }
#reservation-calendar .rc-week { text-align:center; margin-bottom:8px; font-size:.85rem; font-weight:700; }
#reservation-calendar .rc-day { display:flex; flex-direction:column; gap:1px; min-height:62px; min-width:0; padding:6px 2px; border:1px solid #b5a99a; background:#fffdfa; color:#2c2621; font:inherit; font-weight:700; cursor:pointer; border-radius:3px; }
#reservation-calendar .rc-day small { font-size:.8rem; line-height:1; }
#reservation-calendar .rc-partial { background:#fdf3d9; border-color:#9c6b0b; }
#reservation-calendar .rc-blocked { background:repeating-linear-gradient(135deg,#f5e7e1,#f5e7e1 7px,#eddbd3 7px,#eddbd3 9px); color:#803420; border-color:#b77b64; }
#reservation-calendar .rc-past { background:#eeeae4; color:#776e65; cursor:default; }
#reservation-calendar .rc-selected { background:#4a5540; color:white; border-color:#4a5540; box-shadow:inset 0 0 0 2px white; }
#reservation-calendar button:focus-visible { outline:3px solid #c3902a; outline-offset:2px; }
#reservation-calendar .rc-day:not(:disabled):hover { outline:2px solid #a4553a; outline-offset:0; }
#reservation-calendar [aria-current="date"] { border-bottom:4px solid #a4553a; }
#reservation-calendar .rc-toolbar button[aria-pressed="false"] { background:#fffdfa; color:#8a4229; border:1px solid #a4553a; }
#reservation-calendar .rc-legend { display:flex; flex-wrap:wrap; gap:8px 18px; font-size:.85rem; }
#reservation-calendar #calendar-status { min-height:1.6em; font-weight:700; }
#reservation-calendar button:disabled { opacity:.6; cursor:default; }
@media(max-width:480px) {
    #reservation-calendar { padding:10px; }
    #reservation-calendar .rc-week, #reservation-calendar .rc-days { gap:3px; }
    #reservation-calendar .rc-day { min-height:48px; }
    #reservation-calendar .rc-toolbar { gap:6px; }
}
/* Scoped to service content: municipal header/footer keep their own styles. */
.communal-service { width:min(1180px, calc(100% - 32px)); margin:0 auto; padding:24px 0 56px; display:grid; gap:18px; color:#2c2621; }
.communal-service *, .communal-service *::before, .communal-service *::after { box-sizing:border-box; }
.communal-service :is(.notice,.panel,.room,.event,.card,.stat) { background:#fffdfa; border:1px solid #e2d9cb; border-radius:3px; min-width:0; }
.communal-service .notice { padding:15px 18px; border-left:4px solid #c3902a; }
.communal-service :is(.panel,.room,.event,.card) { padding:20px; }
.communal-service :is(h2,h3) { margin:0 0 12px; font-family:Georgia,"Times New Roman",serif; }
.communal-service h2 { font-size:1.6rem; }
.communal-service h3 { font-size:1.3rem; }
.communal-service .grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.communal-service .muted { color:#6a6055; }
.communal-service .success { color:#375132; font-weight:700; }
.communal-service .error { color:#a33125; font-weight:700; }
.communal-service .pill { display:inline-flex; align-items:center; min-height:24px; max-width:100%; padding:3px 9px; border-radius:999px; background:#5e6a51; color:white; font-size:.78rem; font-weight:700; overflow-wrap:anywhere; text-align:center; }
.communal-service .stats { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.communal-service .stat { padding:16px; }
.communal-service .stat strong { display:block; color:#a4553a; font-family:Georgia,serif; font-size:2rem; }
.communal-service .filters { display:grid; grid-template-columns:minmax(0,1fr) 220px auto; gap:12px; align-items:end; }
.communal-service .form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.communal-service .span-2 { grid-column:span 2; }
.communal-service label { display:block; font-weight:700; margin-bottom:6px; }
.communal-service :is(input,select,textarea) { width:100%; min-width:0; min-height:44px; padding:10px 12px; border:1px solid #b5a99a; border-radius:3px; background:white; color:#2c2621; font:inherit; }
.communal-service :is(input,select,textarea):focus-visible { outline:3px solid #c3902a; outline-offset:2px; }
.communal-service textarea { min-height:120px; resize:vertical; }
.communal-service :is(button,.btn) { min-height:44px; padding:10px 16px; border:1px solid transparent; border-radius:3px; background:#a4553a; color:white; font:inherit; font-weight:700; cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; justify-content:center; }
.communal-service :is(button,.btn):hover { background:#8a4229; color:white; }
.communal-service .defunt { border-top:1px solid #e2d9cb; margin-top:10px; padding-top:10px; }
.communal-service .memoire { display:inline-block; background:#4a5540; color:white; border-radius:999px; padding:2px 8px; margin:3px; font-size:.8rem; }
.communal-service .map-layout { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(240px,.8fr); gap:14px; margin-top:16px; }
.communal-service :is(.map-actions,.map-tools) { display:flex; flex-wrap:wrap; gap:8px; }
.communal-service .map-actions { margin-top:14px; }
.communal-service .map-canvas { height:500px; min-height:460px; border:1px solid #e2d9cb; border-radius:3px; background:#eceee6; cursor:grab; overflow:hidden; position:relative; touch-action:none; user-select:none; }
.communal-service .map-canvas.is-dragging { cursor:grabbing; }
.communal-service .map-canvas svg { width:100%; height:100%; display:block; }
.communal-service .map-empty { display:grid; min-height:220px; place-items:center; padding:18px; color:#6a6055; text-align:center; }
.communal-service .map-list { display:grid; grid-auto-rows:max-content; align-content:start; gap:8px; max-height:500px; overflow:auto; padding:3px 5px 3px 3px; }
.communal-service .map-item { display:grid; justify-content:stretch; gap:4px; height:auto; min-height:74px; line-height:1.4; padding:10px 12px; width:100%; text-align:left; border:1px solid #e2d9cb; background:#fffdfa; color:#2c2621; }
.communal-service .map-item span { color:#6a6055; font-size:.85rem; }
.communal-service .map-item:is(.is-active,:hover) { border-color:#a4553a; background:#f5e7e1; color:#2c2621; }
.communal-service .map-tool { background:#4a5540; }
.communal-service .map-shape { cursor:pointer; vector-effect:non-scaling-stroke; }
.communal-service [hidden] { display:none!important; }
.communal-service .map-shape:focus { outline:none; stroke:#2c2621; stroke-width:3; }
.communal-service .map-shape.is-active { stroke:#2c2621; stroke-width:3; fill-opacity:.54; }
.communal-service .map-label { pointer-events:none; fill:#2c2621; font-weight:700; paint-order:stroke; stroke:#fff; stroke-width:.8px; stroke-linejoin:round; }
.communal-service .map-shape.is-active + .map-label { fill:#111; font-weight:900; }
.communal-service .events { display:grid; gap:12px; }
.service-plan-print :is(.site-header,.site-footer,.sub-hero,.service-navigation) { display:none; }
.service-plan-print .communal-service { width:100%; padding:0; }
.service-plan-print .map-panel { border:0; padding:0; }
.service-plan-print .map-panel > :is(strong,.muted), .service-plan-print .stats, .service-plan-print .notice { display:none; }
.service-plan-print .map-layout { display:block; margin:0; }
.service-plan-print .map-canvas { height:95vh; }
@media(max-width:800px) {
    .communal-service :is(.filters,.grid,.form-grid,.map-layout) { grid-template-columns:1fr; }
    .communal-service .stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .communal-service .span-2 { grid-column:span 1; }
    .communal-service .map-canvas { height:380px; min-height:300px; }
    .communal-service .map-list { max-height:260px; }
    .communal-service :is(.panel,.room,.event,.card) { padding:15px; }
}
@media print {
    .site-header,.site-footer,.sub-hero,.service-navigation,.communal-service :is(.filters,.contact,.notice,.request,.map-actions,.map-list) { display:none!important; }
    .communal-service { width:100%; padding:0; }
    .communal-service .map-layout,.communal-service .grid { display:block; }
    .communal-service .map-canvas { height:85vh; }
}

/* Keep keyboard focus visible through the municipal service gateway. */
.communal-service .map-shape:focus { stroke:#111827 !important; stroke-width:3 !important; fill:#facc15 !important; fill-opacity:.65 !important; }
.communal-service [data-public-cim-detail]:focus,
.communal-service #contact-cimetiere:focus { outline:3px solid #67500f; outline-offset:4px; }
.communal-service #reservation-estimate { min-width:0; border:1px solid #d4c7b5; border-radius:8px; padding:16px; }
.communal-service #reservation-estimate legend { font-weight:700; padding:0 6px; }
