.sw-colour-red{--sw-bg:#fbd5d7;--sw-line:#c52232;--sw-text:#6e1420}.sw-colour-orange{--sw-bg:#ffe0b2;--sw-line:#dc6a0b;--sw-text:#713600}.sw-colour-yellow{--sw-bg:#fff34d;--sw-line:#b39600;--sw-text:#443b00}.sw-colour-blue{--sw-bg:#d6e7ff;--sw-line:#2469ce;--sw-text:#163d78}.sw-colour-purple{--sw-bg:#e9dafa;--sw-line:#8042b3;--sw-text:#4e226f}.sw-colour-teal{--sw-bg:#c4eee4;--sw-line:#16836e;--sw-text:#125447}.sw-colour-black{--sw-bg:#202124;--sw-line:#70757a;--sw-text:#ffffff}
.sw-legend{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.sw-legend>span{display:inline-flex;gap:8px;align-items:center;border:1px solid var(--sw-line);background:var(--sw-bg);color:var(--sw-text);padding:7px 12px;border-radius:20px;font-size:13px;font-weight:700}.sw-legend i{width:10px;height:10px;background:var(--sw-line);border-radius:50%}.sw-scroll{max-height:720px;overflow:auto;border:1px solid #ccd2d8;border-radius:12px;background:#fff;margin-bottom:24px}.sw-week{display:grid;grid-template-columns:64px repeat(7,minmax(145px,1fr));min-width:1080px}.sw-header{position:sticky;top:0;z-index:3;background:#f5f7fa;border-bottom:1px solid #ccd2d8;border-right:1px solid #e3e6eb;padding:12px;text-align:center;color:#344054;font-size:13px}.sw-header strong{display:block;font-size:18px;margin-top:4px}.sw-time-head{left:0;z-index:5}.sw-today{background:#e8f0fe;color:#195abe}.sw-times{position:sticky;left:0;background:white;z-index:2;height:calc(var(--hours)*60px);border-right:1px solid #ddd}.sw-times span{position:absolute;right:8px;font-size:11px;color:#667085}.sw-day{position:relative;height:calc(var(--hours)*60px);border-right:1px solid #e3e6eb;background:repeating-linear-gradient(to bottom,transparent 0,transparent 29px,#eff1f4 29px,#eff1f4 30px,transparent 30px,transparent 59px,#dfe3e9 59px,#dfe3e9 60px)}.sw-event{position:absolute;box-sizing:border-box;background:var(--sw-bg);color:var(--sw-text);border:1px solid white;border-left:4px solid var(--sw-line);border-radius:5px;padding:3px 5px;font-size:11px;line-height:1.25;text-decoration:none;overflow:hidden}.sw-event b,.sw-event span{display:block}.sw-event:focus-visible{outline:3px solid #171717;z-index:4}.sw-event:hover{filter:brightness(.96);z-index:4}.sw-event:focus,.sw-event:hover{min-height:70px;height:auto!important}div[id^="manage-"]{scroll-margin-top:95px}
/* Compact full-week desktop view and seven-day mobile overview. */
.sw-scroll{max-height:none;overflow:visible}.sw-week{min-width:0;grid-template-columns:44px repeat(7,minmax(0,1fr))}.sw-times,.sw-day{height:calc(var(--hours)*24px)}.sw-day{background:repeating-linear-gradient(to bottom,transparent 0,transparent 23px,#dfe3e9 23px,#dfe3e9 24px)}.sw-header{padding:6px 2px}.sw-header strong{font-size:15px}.sw-times span{font-size:10px;right:3px}.sw-event{font-size:10px;padding:1px 3px}.sw-mobile{display:none}.sw-day-tabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.sw-day-tab{padding:8px 0!important;margin:0!important;min-width:0;background:#fff!important;color:#344054!important;border:1px solid #cfd6df!important;border-radius:7px;font-size:11px!important;cursor:pointer}.sw-day-tab strong,.sw-day-tab small{display:block;margin-top:5px}.sw-day-tab[aria-pressed="true"]{outline:2px solid #2469ce;background:#eaf2ff!important}.sw-dots{display:flex;flex-wrap:wrap;justify-content:center;gap:2px;margin-top:5px}.sw-dots i{width:6px;height:6px;background:var(--sw-bg);border:1px solid var(--sw-line);border-radius:50%}.sw-mobile-event{padding:12px;border-left:5px solid var(--sw-line);background:var(--sw-bg);color:var(--sw-text);margin:8px 0;border-radius:5px;font-size:13px}.sw-mobile-event p{margin:6px 0}.sw-mobile-event a{color:inherit;text-decoration:underline}.sw-day-detail[hidden]{display:none}.sw-day-detail{padding:8px 0}.sw-legend{gap:5px}.sw-legend>span{font-size:11px;padding:5px 8px}
@media(max-width:640px){.sw-scroll{display:none}.sw-mobile{display:block}.sw-legend>span{font-size:10px;padding:4px 6px}}
.sw-hour-scroll{overflow-x:auto;max-width:100%}.sw-hour-table{border-collapse:collapse;width:100%;table-layout:fixed;font-size:11px}.sw-hour-table caption{text-align:left;padding:10px 0}.sw-hour-table th,.sw-hour-table td{border:1px solid #d5d9de;padding:3px;vertical-align:top;overflow-wrap:anywhere;height:36px}.sw-hour-table th{background:#f5f7fa}.sw-hour-table th:first-child{width:49px}.sw-hour-table th[class*="sw-colour"]{background:var(--sw-bg);color:var(--sw-text)}.sw-hour-entry{display:block;padding:4px 2px;margin:1px 0;background:var(--sw-bg);color:var(--sw-text);border-left:3px solid var(--sw-line);border-radius:3px;min-height:28px}

.sw-hour-table .sw-room-slot{display:block;width:100%;min-height:44px;margin:0!important;padding:8px 2px!important;border:1px dashed #a8beb1;border-radius:6px;background:#f0f6f1;color:#244b38;font:inherit;cursor:pointer;touch-action:manipulation}.sw-room-slot:focus-visible{outline:2px solid #2469ce}
#room-book-dialog{width:min(700px,94vw);max-height:85dvh;overflow:auto;border:1px solid #ccd2d8;border-radius:12px;padding:22px;background:#fff;color:#20392f}#room-book-dialog::backdrop{background:#0006}

.room-date-filter{display:flex;align-items:center;gap:10px}.room-date-filter label{margin:0;flex:1;min-width:0;font-weight:600}.room-date-filter input{min-width:0;max-width:100%;min-height:44px;background:#fff;border-radius:8px}.room-week-links{display:flex;justify-content:space-between;gap:8px}.room-week-links a{display:inline-flex;justify-content:center;align-items:center;padding:10px 14px;border:1px solid #cad6ce;border-radius:8px;text-decoration:none;background:#fff}.sw-day-tab strong{font-size:17px}.sw-day-tab[aria-pressed="true"]{background:#20553d!important;color:#fff!important;outline-color:#20553d}.sw-day-detail h3{font-size:22px;color:#203e34;margin:18px 0 10px}@media(max-width:640px){.sw-hour-table caption{display:none}}
/* Keep date labels vertical even inside the admin's inline-flex buttons. */
.sw-mobile .sw-day-tab{display:flex!important;flex-direction:column!important;align-items:center;justify-content:flex-start;gap:5px!important;width:100%;min-width:0;min-height:90px;padding:10px 1px!important;line-height:1.2;white-space:nowrap;font-size:12px!important;overflow:hidden}
.sw-mobile .sw-day-tab strong{display:block;margin:0;font-size:clamp(12px,3.4vw,16px);line-height:1.25;white-space:nowrap;letter-spacing:0}
.sw-mobile .sw-day-tab small{display:block;margin:0;font-size:10px;line-height:1.2;white-space:nowrap}
.sw-mobile .sw-day-tab .sw-dots{margin:0;min-height:6px;flex-shrink:0}

/* Shared weekday buttons and daily detail, preserving the weekly grid. */
.sw-calendar .sw-open-day{display:block;width:100%;min-height:44px;padding:6px 2px;border:0;border-radius:8px;background:transparent;color:inherit;font:inherit;cursor:pointer;text-align:center}
.sw-calendar .sw-open-day:hover{background:#e6eee8}.sw-calendar .sw-open-day:focus-visible{outline:3px solid #2469ce;outline-offset:-3px}
.sw-calendar .sw-back-week{display:none;margin:0 0 12px;padding:10px 16px;min-height:44px;border:1px solid #c8d5cc;border-radius:10px;background:#edf2ee;color:#234638;font:inherit;cursor:pointer}
.sw-calendar.sw-detail-mode>.sw-mobile{display:block!important}
.sw-calendar.sw-detail-mode>.sw-scroll{display:none!important}
.sw-calendar.sw-week-mode>.sw-mobile{display:none!important}
.sw-calendar.sw-week-mode>.sw-scroll{display:block!important}
.sw-calendar.sw-detail-mode .sw-back-week{display:inline-block}
.sw-calendar .sw-day-detail[hidden]{display:none!important}

/* Elapsed shading remains click-through; sticky weekday headings stay above it. */
.sw-calendar .sw-day,.sw-calendar .sw-hour-canvas{position:relative;isolation:isolate;z-index:0}
.sw-calendar .sw-elapsed{position:absolute;left:0;right:0;background:rgba(32,45,40,.16);z-index:5;pointer-events:none}
.sw-calendar .sw-now-line{position:absolute;left:0;right:0;height:0;border-top:2px solid #c43843;z-index:6;pointer-events:none}
.sw-calendar .sw-now-line>span{display:none}
.sw-calendar .sw-now-line[hidden],.sw-calendar .sw-elapsed[hidden]{display:none!important}

/* Staff daily tables keep readable room columns within their own scroller. */
.sw-scroll-hint{font-size:13px;color:#52665b;margin:10px 0}
.sw-staff-calendar .sw-hour-canvas{min-width:var(--sw-detail-width)}
.sw-staff-calendar .sw-hour-table{font-size:13px}
.sw-staff-calendar .sw-hour-table th:first-child{width:64px}
.sw-staff-calendar .sw-hour-table tr>:first-child{position:sticky;left:0;z-index:7;background:#f5f7fa;white-space:nowrap}
.sw-staff-calendar .sw-hour-entry{min-height:44px;padding:8px 5px;box-sizing:border-box}
.sw-staff-calendar .sw-hour-scroll:focus-visible{outline:3px solid #8aa87b;outline-offset:2px}
