/* Salles & Événements — styles (planning, formulaire, back-office, écrans) */
.genrp-root {
	--genrp-bg: #ffffff;
	--genrp-bg2: #f5f6f8;
	--genrp-line: #dfe2e7;
	--genrp-text: #1d2330;
	--genrp-muted: #5d6676;
	--genrp-accent: #1f5fbf;
	--genrp-ok: #137a3f;
	--genrp-ko: #b42318;
	--genrp-warn: #a15c00;
	--genrp-radius: 8px;
	--genrp-font: system-ui, -apple-system, "Segoe UI", Roboto, "Marianne", Arial, sans-serif;
	font-family: var(--genrp-font);
	color: var(--genrp-text);
	box-sizing: border-box;
}
.genrp-root *, .genrp-root *::before, .genrp-root *::after { box-sizing: inherit; }
.genrp-root [hidden] { display: none !important; }

/* Boutons */
.genrp-btn {
	font: inherit; font-size: .9rem; line-height: 1.2;
	padding: .45rem .8rem; border-radius: 6px;
	border: 1px solid var(--genrp-line); background: var(--genrp-bg); color: var(--genrp-text);
	cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: .3rem;
}
.genrp-btn:hover { background: var(--genrp-bg2); }
.genrp-btn:focus-visible, .genrp-chip:focus-visible, .genrp-root input:focus-visible, .genrp-root select:focus-visible, .genrp-root textarea:focus-visible {
	outline: 3px solid color-mix(in srgb, var(--genrp-accent) 45%, transparent); outline-offset: 1px;
}
.genrp-btn.is-active { background: var(--genrp-text); color: var(--genrp-bg); border-color: var(--genrp-text); }
.genrp-btn-primary { background: var(--genrp-accent); border-color: var(--genrp-accent); color: #fff; }
.genrp-btn-primary:hover { background: color-mix(in srgb, var(--genrp-accent) 85%, #000); }
.genrp-btn-danger, .genrp-btn-danger.button { color: var(--genrp-ko); border-color: color-mix(in srgb, var(--genrp-ko) 40%, transparent); }
.genrp-btn[disabled] { opacity: .6; cursor: progress; }

/* Barre d'outils */
.genrp-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin: 0 0 .6rem; }
.genrp-nav, .genrp-views { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; min-width: 0; }
.genrp-views .genrp-btn { border-radius: 0; margin-left: -1px; }
.genrp-views .genrp-btn:first-child { border-radius: 6px 0 0 6px; }
.genrp-views .genrp-btn:last-child { border-radius: 0 6px 6px 0; }
.genrp-title { font-size: 1.15rem; margin: 0; flex: 1 1 auto; text-transform: capitalize; font-weight: 600; }
.genrp-datepick, .genrp-site { font: inherit; font-size: .9rem; padding: .35rem .5rem; border: 1px solid var(--genrp-line); border-radius: 6px; background: var(--genrp-bg); color: var(--genrp-text); }
.genrp-legend { display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: .8rem; color: var(--genrp-muted); margin-bottom: .6rem; align-items: center; }
.genrp-lg::before { content: ""; display: inline-block; width: 1.4em; height: .9em; margin-right: .35em; vertical-align: -1px; border-radius: 3px; background: #7a8699; }
.genrp-lg.genrp-st-option::before { background: repeating-linear-gradient(135deg, #7a8699 0 4px, #c4cad4 4px 8px); }
.genrp-lg.genrp-st-pending::before { background: transparent; border: 2px dashed #7a8699; }
.genrp-hint { font-style: italic; }
.genrp-dot { display: inline-block; width: .7em; height: .7em; border-radius: 50%; margin-right: .4em; flex: none; }
.genrp-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--genrp-line); border-radius: var(--genrp-radius); background: var(--genrp-bg); }
.genrp-empty { color: var(--genrp-muted); padding: 1rem; }
.genrp-error { color: var(--genrp-ko); }
.genrp-cal[aria-busy="true"] .genrp-body { opacity: .5; }

/* Pastilles d'évènement */
.genrp-chip {
	--c: #2563eb; --fg: #fff;
	display: block; width: 100%; text-align: left; font: inherit; font-size: .78rem; line-height: 1.25;
	padding: .2rem .4rem; margin: 0 0 3px; border-radius: 5px; border: 0;
	background: var(--c); color: var(--fg); cursor: pointer;
	overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.genrp-chip b { font-weight: 600; }
.genrp-chip.genrp-st-option { background: repeating-linear-gradient(135deg, var(--c) 0 6px, color-mix(in srgb, var(--c) 70%, #fff) 6px 12px); }
.genrp-chip.genrp-st-pending { background: color-mix(in srgb, var(--c) 12%, var(--genrp-bg)); color: var(--genrp-text); outline: 2px dashed var(--c); outline-offset: -2px; }
.genrp-chip-room { opacity: .85; }

/* Vue jour (frise) */
.genrp-tl { min-width: 760px; }
.genrp-tl-row { display: grid; grid-template-columns: 190px 1fr; border-top: 1px solid var(--genrp-line); }
.genrp-tl-head { border-top: 0; background: var(--genrp-bg2); font-size: .75rem; color: var(--genrp-muted); }
.genrp-tl-room { padding: .5rem .6rem; display: flex; align-items: flex-start; font-size: .85rem; font-weight: 600; border-right: 1px solid var(--genrp-line); position: sticky; left: 0; background: var(--genrp-bg); z-index: 2; }
.genrp-tl-head .genrp-tl-room { background: var(--genrp-bg2); }
.genrp-tl-room small { display: block; font-weight: 400; color: var(--genrp-muted); font-size: .72rem; }
.genrp-tl-track { position: relative; min-height: 46px; display: grid; grid-template-columns: repeat(var(--hours), 1fr);
	background-image: linear-gradient(to right, var(--genrp-line) 1px, transparent 1px); background-size: calc(100% / var(--hours)) 100%; }
.genrp-tl-head .genrp-tl-track { background: none; min-height: 0; }
.genrp-tl-h { padding: .3rem .25rem; border-left: 1px solid var(--genrp-line); }
.genrp-slot-area { cursor: copy; }
.genrp-slot-area:hover { background-color: color-mix(in srgb, var(--genrp-accent) 5%, transparent); }
.genrp-tl-ev { position: absolute; top: 6px; bottom: 6px; width: auto; margin: 0; white-space: normal; z-index: 1; }
.genrp-now { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--genrp-ko); z-index: 1; pointer-events: none; }

/* Vue semaine */
.genrp-week { width: 100%; min-width: 820px; border-collapse: collapse; table-layout: fixed; }
.genrp-week th, .genrp-week td { border: 1px solid var(--genrp-line); padding: .3rem; vertical-align: top; font-size: .8rem; }
.genrp-week thead th { background: var(--genrp-bg2); font-weight: 600; text-transform: capitalize; }
.genrp-week .genrp-wk-room { width: 170px; text-align: left; position: sticky; left: 0; background: var(--genrp-bg); z-index: 1; }
.genrp-week thead .genrp-wk-room { background: var(--genrp-bg2); }
.genrp-wk-cell { height: 58px; }
.genrp-week .is-today { background: color-mix(in srgb, var(--genrp-accent) 6%, var(--genrp-bg)); }

/* Vue mois */
.genrp-month { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border: 1px solid var(--genrp-line); border-radius: var(--genrp-radius); overflow: hidden; background: var(--genrp-line); gap: 1px; }
.genrp-m-h { background: var(--genrp-bg2); text-align: center; font-size: .75rem; padding: .3rem; color: var(--genrp-muted); }
.genrp-m-cell { background: var(--genrp-bg); min-height: 92px; padding: .25rem; }
.genrp-m-cell.is-out { background: var(--genrp-bg2); }
.genrp-m-cell.is-out .genrp-m-day { opacity: .5; }
.genrp-m-day { font: inherit; font-size: .78rem; border: 0; background: none; padding: .1rem .3rem; border-radius: 4px; cursor: pointer; color: var(--genrp-text); }
.genrp-m-cell.is-today .genrp-m-day { background: var(--genrp-accent); color: #fff; }
.genrp-more { font: inherit; font-size: .72rem; border: 0; background: none; color: var(--genrp-accent); cursor: pointer; padding: 0 .2rem; }

/* Vue liste */
.genrp-list-day h3 { font-size: .9rem; text-transform: capitalize; margin: 1rem 0 .4rem; color: var(--genrp-muted); }
.genrp-view-liste .genrp-chip { white-space: normal; font-size: .9rem; padding: .5rem .6rem; }

/* Popover public */
.genrp-pop { position: absolute; z-index: 99999; background: var(--genrp-bg); border: 1px solid var(--genrp-line); border-radius: var(--genrp-radius); box-shadow: 0 10px 30px rgba(0,0,0,.15); padding: .8rem 1rem; max-width: 320px; font-size: .88rem; }
.genrp-pop p { margin: .2rem 0; }
.genrp-pop-t { font-weight: 600; font-size: 1rem; padding-right: 1.5rem; }
.genrp-pop-x { position: absolute; top: .3rem; right: .4rem; border: 0; background: none; font-size: 1.3rem; cursor: pointer; color: var(--genrp-muted); }
.genrp-badge { display: inline-block; font-size: .72rem; padding: .1rem .45rem; border-radius: 99px; background: var(--genrp-bg2); border: 1px solid var(--genrp-line); }
.genrp-badge.genrp-st-confirmed { background: #e3f4ea; border-color: #a6d8b8; color: #0c5a2d; }
.genrp-badge.genrp-st-option { background: #fff3dc; border-color: #f0cf8e; color: #7a4600; }
.genrp-badge.genrp-st-pending { background: #e8effb; border-color: #b2c7ec; color: #183f80; }
.genrp-badge.genrp-st-refused, .genrp-badge.genrp-st-cancelled { background: #fbe9e7; border-color: #f1b8b0; color: #8a1c10; }

/* Formulaire */
.genrp-form fieldset { border: 1px solid var(--genrp-line); border-radius: var(--genrp-radius); padding: 1rem 1.1rem 1.1rem; margin: 0 0 1rem; background: var(--genrp-bg); }
.genrp-form legend { font-weight: 600; padding: 0 .4rem; font-size: 1.05rem; }
.genrp-step { display: inline-grid; place-items: center; width: 1.6em; height: 1.6em; border-radius: 50%; background: var(--genrp-accent); color: #fff; font-size: .8rem; margin-right: .3rem; }
.genrp-f { display: flex; flex-direction: column; gap: .25rem; margin: 0 0 .8rem; font-size: .9rem; }
.genrp-f > span, .genrp-f-l { font-weight: 600; font-size: .85rem; margin: 0; }
.genrp-root input:not([type]), .genrp-root input[type=text], .genrp-root input[type=email], .genrp-root input[type=tel], .genrp-root input[type=number], .genrp-root input[type=date], .genrp-root input[type=datetime-local], .genrp-root select, .genrp-root textarea {
	font: inherit; font-size: .95rem; padding: .5rem .6rem; border: 1px solid #b9c0cc; border-radius: 6px; background: var(--genrp-bg); color: var(--genrp-text); width: 100%; max-width: 100%;
}
.genrp-root [aria-invalid="true"] { border-color: var(--genrp-ko); box-shadow: 0 0 0 2px color-mix(in srgb, var(--genrp-ko) 25%, transparent); }
.genrp-check { display: flex; gap: .5rem; align-items: flex-start; font-size: .9rem; margin: 0 0 .7rem; }
.genrp-check input { margin-top: .2rem; }
.genrp-inline { display: inline-flex; margin-right: 1rem; }
.genrp-grid2, .genrp-grid3 { display: grid; gap: 0 1rem; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); align-items: end; }
.genrp-help { font-size: .8rem; color: var(--genrp-muted); margin: -.3rem 0 .6rem; }
.genrp-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.genrp-rooms { display: grid; gap: .6rem; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); margin-bottom: 1rem; }
.genrp-room-card { position: relative; display: block; cursor: pointer; }
.genrp-room-card input { position: absolute; opacity: 0; }
.genrp-room-body { display: flex; flex-direction: column; border: 2px solid var(--genrp-line); border-radius: var(--genrp-radius); overflow: hidden; height: 100%; background: var(--genrp-bg); }
.genrp-room-body img, .genrp-room-ph { width: 100%; height: 90px; object-fit: cover; display: block; }
.genrp-room-ph { opacity: .25; }
.genrp-room-txt { padding: .5rem .6rem; display: flex; flex-direction: column; gap: .15rem; }
.genrp-room-txt small { color: var(--genrp-muted); font-size: .76rem; }
.genrp-room-card input:checked + .genrp-room-body { border-color: var(--genrp-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--genrp-accent) 20%, transparent); }
.genrp-room-card input:focus-visible + .genrp-room-body { outline: 3px solid color-mix(in srgb, var(--genrp-accent) 45%, transparent); }
.genrp-seg { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .8rem; }
.genrp-seg label { border: 1px solid var(--genrp-line); border-radius: 99px; padding: .35rem .8rem; cursor: pointer; font-size: .9rem; }
.genrp-seg label:has(input:checked) { background: var(--genrp-accent); color: #fff; border-color: var(--genrp-accent); }
.genrp-seg input { position: absolute; opacity: 0; }
.genrp-seg label:has(input:focus-visible) { outline: 3px solid color-mix(in srgb, var(--genrp-accent) 45%, transparent); }
.genrp-avail { margin-top: .2rem; }
.genrp-av-bar { position: relative; height: 22px; border-radius: 4px; background: #e3f4ea; border: 1px solid var(--genrp-line); overflow: hidden; }
.genrp-av-busy { position: absolute; top: 0; bottom: 0; background: repeating-linear-gradient(135deg, #d9534f 0 5px, #e88a87 5px 10px); }
.genrp-av-mine { position: absolute; top: 4px; bottom: 4px; border: 2px solid var(--genrp-accent); background: color-mix(in srgb, var(--genrp-accent) 25%, transparent); border-radius: 3px; }
.genrp-av-scale { position: relative; height: 1.1rem; font-size: .7rem; color: var(--genrp-muted); }
.genrp-av-scale span { position: absolute; transform: translateX(-50%); }
.genrp-av-scale span:first-child { transform: none; }
.genrp-av-msg { font-size: .88rem; margin: .3rem 0 0; font-weight: 600; }
.genrp-av-msg.is-ok { color: var(--genrp-ok); }
.genrp-av-msg.is-ko { color: var(--genrp-ko); }
.genrp-alert { border: 1px solid var(--genrp-ko); background: #fdf0ee; color: var(--genrp-ko); border-radius: 6px; padding: .6rem .8rem; margin-bottom: 1rem; font-size: .9rem; }
.genrp-submit { font-size: 1rem; padding: .7rem 1.4rem; }
.genrp-success, .genrp-track { border: 1px solid #a6d8b8; background: #f0faf3; border-radius: var(--genrp-radius); padding: 1rem 1.2rem; margin-bottom: 1rem; }
.genrp-track { border-color: #b2c7ec; background: #f2f6fd; }
.genrp-success-h, .genrp-track-h { font-weight: 700; font-size: 1.1rem; margin-top: 0; }
.genrp-note { font-style: italic; }

/* Back-office */
.genrp-requests td { vertical-align: top; }
.genrp-requests textarea { width: 100%; margin-bottom: .3rem; font-size: 12px; }
.genrp-conflict { color: var(--genrp-ko, #b42318); font-weight: 600; }
.genrp-ok { color: var(--genrp-ok, #137a3f); font-weight: 600; }
.genrp-dlg { border: 0; border-radius: 10px; padding: 0; width: min(720px, 96vw); max-height: 92vh; box-shadow: 0 20px 60px rgba(0,0,0,.3); }
.genrp-dlg::backdrop { background: rgba(10, 15, 25, .45); }
.genrp-ed header { display: flex; align-items: center; gap: .6rem; padding: .9rem 1.1rem; border-bottom: 1px solid var(--genrp-line); position: sticky; top: 0; background: var(--genrp-bg); z-index: 1; }
.genrp-ed h2 { margin: 0; font-size: 1.1rem; flex: 1; }
.genrp-x { border: 0; background: none; font-size: 1.5rem; cursor: pointer; color: var(--genrp-muted); }
.genrp-ed .genrp-alert { margin: .8rem 1.1rem 0; }
.genrp-ed-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; padding: 1rem 1.1rem 0; }
.genrp-span2 { grid-column: 1 / -1; }
.genrp-ed footer { display: flex; flex-wrap: wrap; gap: .4rem; padding: .8rem 1.1rem; border-top: 1px solid var(--genrp-line); position: sticky; bottom: 0; background: var(--genrp-bg); }
.genrp-sep { flex: 1; }
@media (max-width: 600px) { .genrp-ed-grid { grid-template-columns: 1fr; } .genrp-tl-row { grid-template-columns: 120px 1fr; } }

/* Affichage dynamique */
.genrp-kiosk-body { margin: 0; background: #0d1320; }
.genrp-kiosk {
	--k-bg: #0d1320; --k-card: #172033; --k-text: #f4f6fb; --k-muted: #9aa6bd; --k-free: #2fbf71; --k-busy: #ff5a4e;
	background: var(--k-bg); color: var(--k-text); padding: clamp(12px, 2vw, 32px); border-radius: var(--genrp-radius);
	display: flex; flex-direction: column; gap: clamp(10px, 1.5vw, 24px);
}
.genrp-kiosk--full { min-height: 100vh; border-radius: 0; }
.genrp-k-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; border-bottom: 1px solid #2a3550; padding-bottom: .8rem; }
.genrp-k-org { margin: 0; color: var(--k-muted); font-size: clamp(14px, 1.3vw, 22px); text-transform: uppercase; letter-spacing: .08em; }
.genrp-k-site { margin: 0; font-size: clamp(22px, 2.6vw, 44px); font-weight: 700; }
.genrp-k-clock { text-align: right; }
.genrp-k-time { display: block; font-size: clamp(32px, 4.5vw, 80px); font-weight: 700; font-variant-numeric: tabular-nums; line-height: 1; }
.genrp-k-date { color: var(--k-muted); font-size: clamp(14px, 1.3vw, 22px); text-transform: capitalize; }
.genrp-k-grid { display: grid; gap: clamp(10px, 1.2vw, 20px); grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr)); flex: 1; align-content: start; }
.genrp-k-card { background: var(--k-card); border-radius: 12px; padding: clamp(14px, 1.4vw, 24px); border-left: 10px solid var(--k-free); }
.genrp-k-card.is-busy { border-left-color: var(--k-busy); }
.genrp-k-room { margin: 0 0 .4rem; font-size: clamp(20px, 1.9vw, 34px); }
.genrp-k-state { margin: 0; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; font-size: clamp(13px, 1.1vw, 19px); color: var(--k-free); }
.is-busy .genrp-k-state { color: var(--k-busy); }
.genrp-k-now { margin: .3rem 0 0; font-size: clamp(18px, 1.7vw, 30px); font-weight: 600; }
.genrp-k-sub { margin: .1rem 0 0; color: var(--k-muted); font-size: clamp(14px, 1.1vw, 20px); }
.genrp-k-next { list-style: none; margin: .8rem 0 0; padding: .6rem 0 0; border-top: 1px solid #2a3550; font-size: clamp(14px, 1.1vw, 20px); color: var(--k-muted); }
.genrp-k-next li { margin: .2rem 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.genrp-k-next b { color: var(--k-text); font-variant-numeric: tabular-nums; margin-right: .4rem; }
.genrp-k-foot { color: var(--k-muted); font-size: 14px; text-align: right; }
.genrp-kiosk.is-offline .genrp-k-foot { color: var(--k-busy); }

@media (prefers-reduced-motion: reduce) { .genrp-root * { scroll-behavior: auto !important; } }
