.camp-booking{margin:64px 0;padding:38px;border:1px solid #d6e0d0;border-radius:22px;background:#f8faf3;scroll-margin-top:130px}
.camp-booking>h2{margin:12px 0 20px;white-space:normal;line-height:1.25}
.camp-booking>p{max-width:950px;line-height:1.8}
.camp-request-form{margin-top:30px;min-width:0}
.camp-request-form fieldset{min-width:0;border:0;padding:0;margin:26px 0}
.camp-request-form legend{font-size:20px;font-weight:700;margin-bottom:16px;color:var(--forest)}
.camp-calendar-toolbar,.camp-admin-intro{display:flex;align-items:end;flex-wrap:wrap;gap:24px;margin-bottom:24px}
.camp-calendar-toolbar label,.camp-fields label,.camp-project-label,.camp-admin label{display:flex;flex-direction:column;gap:8px;font-size:15px;font-weight:600;min-width:0}
.camp-request-form input:not([type=checkbox]):not([type=radio]),.camp-request-form select,.camp-request-form textarea,.camp-admin select{box-sizing:border-box;max-width:100%;min-width:0;min-height:46px;border:1px solid #a8baaa;border-radius:9px;padding:11px 12px;background:#fff;color:var(--forest);font:inherit;line-height:1.5}
.camp-request-form textarea{width:100%;resize:vertical}
.camp-request-form :focus-visible,.camp-admin :focus-visible{outline:3px solid #287b76;outline-offset:3px}
.camp-request-form input[type=checkbox],.camp-request-form input[type=radio]{width:21px;height:21px;flex-shrink:0;accent-color:#285d44;margin:3px 0}
.camp-legend{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0}
.camp-status{display:inline-block;width:fit-content;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700;line-height:1.5;background:#eef1ed;color:#4d594f}
.camp-status.camp-available,.camp-available .camp-status{background:#deecd9;color:#285a33}
.camp-status.camp-to_confirm,.camp-to_confirm .camp-status{background:#eceee7;color:#4e5947}
.camp-status.camp-option,.camp-option .camp-status{background:#f8e6bf;color:#77520e}
.camp-status.camp-reserved,.camp-reserved .camp-status{background:#f3dedd;color:#823e39}
.camp-status.camp-closed,.camp-closed .camp-status{background:#e4e8e6;color:#4f5956}
.camp-months{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}
.camp-month{min-width:0;padding:18px 12px;background:#fff;border:1px solid #d4dfce;border-radius:16px}
.camp-month h3{font-size:25px;margin:0 0 20px;padding:0 7px}
.camp-day-headings{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin:0 0 10px;text-align:center}
.camp-day-headings abbr{font-size:12px;font-weight:700;color:#576c55;text-decoration:none;line-height:1.8}
.camp-weeks{display:grid;gap:8px}
.camp-week{display:block;padding:5px;background:#f4f8ef;border:1px solid #cbd8c7;border-radius:10px;cursor:pointer;min-width:0}
.camp-week .camp-week-dates{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;min-width:0}
.camp-day{display:grid;place-items:center;min-width:0;min-height:36px;font-size:clamp(13px,1.3vw,17px);font-weight:600;line-height:1.5;color:#2d5635}
.camp-day.is-other-month{color:#889680;font-weight:400;opacity:.65}
.camp-week .camp-week-choice{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:5px 8px;padding:4px 6px;min-width:0}
.camp-week-choice .camp-status{font-size:11px;padding:2px 7px}
.camp-week-choice input[type=checkbox]{width:18px;height:18px;margin:0}
.camp-week-choice small,.camp-week-picked{font-size:11px;line-height:1.6}
.camp-week.is-selected{border:2px solid #356c46;padding:4px;background:#285b42}
.camp-week.is-selected .camp-day,.camp-week.is-selected .camp-week-picked,.camp-week.is-selected small{color:#fff}
.camp-week.is-selected .camp-day.is-other-month{opacity:.65}
.camp-week.is-selected .camp-status{background:#e2edcf;color:#234632}
.camp-week:has(input:focus-visible){outline:3px solid #287b76;outline-offset:3px}
.camp-week.is-unavailable{background:#f0f1ed;cursor:default;color:#60685d}
.camp-week.is-unavailable .camp-day{color:#687563}
.camp-week.camp-reserved .camp-day{color:#96564d}
.camp-week.camp-option .camp-day{color:#836426}
.camp-week.camp-outside-season .camp-day{color:#92998c}
.camp-week.camp-outside-season .camp-week-choice{min-height:24px}
.camp-selection{background:#edf3e4;border-radius:13px;padding:24px;margin:24px 0}
.camp-selection h3{font-size:24px;margin:0 0 12px}
.camp-selection>p{font-size:15px;line-height:1.8}
.camp-arrival{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,210px);gap:9px 20px;align-items:center;margin:22px 0}
.camp-arrival>span{font-size:15px;line-height:1.6}
.camp-arrival>[data-departure]{grid-column:1/-1;font-size:14px;color:#425d40}
.camp-selection-empty{border-bottom:1px solid #d4dfce;padding:12px 0 24px;font-size:15px;line-height:1.7}
.camp-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.camp-wide{grid-column:1/-1}
.camp-animation-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.camp-animation-options label{display:flex;align-items:flex-start;gap:12px;padding:20px;border:1px solid #c9d7c2;border-radius:12px;background:#fff;cursor:pointer}
.camp-animation-options label:has(:checked){background:#eff6e6;border-color:#618456}
.camp-animation-options strong,.camp-animation-options small{display:block;line-height:1.7;font-size:15px}
.camp-animation-options small{font-size:14px;font-weight:400;margin-top:6px}
.camp-project-label{margin:26px 0 14px}
.camp-consent{display:flex;align-items:flex-start;gap:13px;margin:24px 0;font-size:14px;line-height:1.8}
.camp-consent a{text-decoration:underline}
.camp-request-form .camp-honeypot{display:none}
.camp-request-form [disabled]{cursor:not-allowed}
.camp-request-form button[type=submit][disabled]{cursor:wait}
.camp-request-form .button{white-space:normal;text-align:center;line-height:1.6;max-width:100%}
.camp-error{color:#953a32;font-weight:600;line-height:1.8;overflow-wrap:anywhere}
.camp-success{padding:24px 0;max-width:850px}
.camp-success>.ui-icon{width:42px;height:42px;color:#356c46}
.camp-success h3{font-size:30px;line-height:1.4;margin:15px 0}
.camp-admin-intro{justify-content:space-between}
.camp-admin-calendar,.camp-admin-requests{margin:36px 0}
.camp-admin h2{font-size:32px;line-height:1.3;white-space:normal}
.camp-admin p{line-height:1.8;overflow-wrap:anywhere}
.camp-admin-weeks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:26px 0}
.camp-admin-weeks label{padding:17px;border:1px solid #d6e0d0;background:#f8faf3;border-radius:12px;line-height:1.7}
.camp-admin .actions{flex-wrap:wrap;gap:12px}
.camp-admin .button{white-space:normal;max-width:100%;line-height:1.7;text-align:center}
.camp-admin-request-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:28px}
.camp-admin-request{min-width:0;padding:27px;border:1px solid #d6e0d0;border-radius:17px;background:#fafbf7}
.camp-admin-request h3{font-size:26px;line-height:1.5;overflow-wrap:anywhere;margin:16px 0 10px}
.camp-admin-request p,.camp-admin-request li{font-size:15px;line-height:1.8}
.camp-admin-request .tag{white-space:normal;line-height:1.8}
.camp-admin-request ul{padding-left:22px}
.camp-admin-request .actions{margin-top:22px}
.camp-project-message{white-space:pre-wrap;overflow-wrap:anywhere;padding:16px;background:#edf2e9;border-radius:10px}
html[data-contrast=high] .camp-booking,html[data-contrast=high] .camp-week,html[data-contrast=high] .camp-selection,html[data-contrast=high] .camp-animation-options label,html[data-contrast=high] .camp-admin-weeks label,html[data-contrast=high] .camp-admin-request{background:#fff;color:#152b20;border-color:#152b20}
html[data-contrast=high] .camp-week.is-selected{outline:3px solid #111;outline-offset:-3px}
@media(max-width:1000px){.camp-booking{padding:28px}.camp-admin-weeks{grid-template-columns:repeat(2,minmax(0,1fr))}.camp-admin-request-list{grid-template-columns:minmax(0,1fr)}.camp-calendar-toolbar{gap:18px}}
@media(max-width:700px){.camp-booking{padding:22px 16px;margin:40px 0;border-radius:15px}.camp-months,.camp-fields,.camp-animation-options,.camp-admin-weeks{grid-template-columns:minmax(0,1fr)}.camp-calendar-toolbar{display:grid;grid-template-columns:minmax(0,1fr)}.camp-arrival{grid-template-columns:minmax(0,1fr)}.camp-selection{padding:18px}.camp-month{padding:17px 7px}.camp-admin-request{padding:21px}.camp-admin h2{font-size:27px}.camp-booking .button{width:100%;justify-content:center}.camp-legend{gap:8px}}
