:root{--colour-black:#000;--colour-white:#fff;--colour-gold:#be830e;--colour-gold-tint:#f5edde;--colour-unigrey:#333;--colour-border:#d9d3c4;--colour-available:#1e6b3d;--colour-available-bg:#e3f0e6;--colour-busy:#a13324;--colour-busy-bg:#f3e2de;--colour-closed:#5a5a5a;--colour-closed-bg:#ececec;--colour-past-bg:#dcdcdc;--colour-busy-accent:#7b83eb;--radius:.5rem;--nav-height:3.3rem;--shadow-card:0 1px 2px #0000000f, 0 1px 3px #00000014}*{box-sizing:border-box}body{color:var(--colour-unigrey);background:var(--colour-white);margin:0;padding:0;font-family:system-ui,sans-serif;line-height:1.6}main{max-width:60rem;margin:0 auto;padding:1.5rem}main.full-bleed{max-width:none;padding:0}a{color:var(--colour-black)}a:hover{color:var(--colour-gold)}.site-nav{height:var(--nav-height);white-space:nowrap;background:var(--colour-black);border-bottom:3px solid var(--colour-gold);align-items:center;gap:1.5rem;padding:0 1.5rem;display:flex;overflow-x:auto}.site-nav a{color:var(--colour-white);font-weight:600;text-decoration:none}.site-nav a:hover{color:var(--colour-gold)}.site-nav .brand{color:var(--colour-gold);font-weight:700}@media (width<=26rem){.site-nav{gap:1rem;padding:0 1rem}}.card-meta{color:var(--colour-unigrey);font-size:.85rem}.campus-map{width:100%;height:calc(100vh - var(--nav-height));height:calc(100dvh - var(--nav-height));background:var(--colour-gold-tint);overflow:hidden}.campus-map-frame{position:relative}.map-overlay{z-index:3;background:var(--colour-white);border:1px solid var(--colour-border);border-left:3px solid var(--colour-gold);border-radius:var(--radius);max-width:calc(100% - 4rem);box-shadow:var(--shadow-card);padding:.5rem .75rem;font-size:.9rem;line-height:1.4;position:absolute;bottom:.75rem;left:.75rem}.map-overlay-tagline{color:var(--colour-black);margin:0 0 .2rem;font-weight:600}.map-overlay a{font-weight:600}.map-overlay a:focus-visible{outline:3px solid var(--colour-gold);outline-offset:2px}.map-marker{width:1.5rem;height:1.5rem;color:var(--colour-unigrey);text-decoration:none;display:block}.map-marker:hover,.map-marker:focus-visible{z-index:10;outline:none}.marker-pin{background:var(--colour-black);border:3px solid var(--colour-gold);border-radius:50% 50% 50% 0;width:100%;height:100%;transition:transform .15s;display:block;transform:rotate(-45deg);box-shadow:0 2px 4px #00000059}.map-marker:hover .marker-pin,.map-marker:focus-visible .marker-pin{transform:rotate(-45deg)scale(1.2)}.map-marker:focus-visible .marker-pin{outline:3px solid var(--colour-black);outline-offset:3px}.marker-card{background:var(--colour-white);border:1px solid var(--colour-border);border-radius:var(--radius);width:12rem;box-shadow:var(--shadow-card);pointer-events:none;flex-direction:column;gap:.15rem;padding:0 0 .6rem;display:none;position:absolute;bottom:calc(100% + .6rem);left:50%;overflow:hidden;transform:translate(-50%)}.map-marker.card-below .marker-card{top:calc(100% + .6rem);bottom:auto}.map-marker:hover .marker-card,.map-marker:focus-visible .marker-card{display:flex}.marker-card-image{aspect-ratio:16/9;object-fit:cover;background:linear-gradient(135deg, transparent 48%, var(--colour-border) 49%, var(--colour-border) 51%, transparent 52%), var(--colour-gold-tint);width:100%;margin-bottom:.4rem;display:block}.marker-card-name{color:var(--colour-black);padding-inline:.7rem;font-weight:600;line-height:1.3}.marker-card-meta{color:var(--colour-available);padding-inline:.7rem;font-size:.8rem}.map-help{max-width:60rem;margin:0 auto;padding:1.5rem}.building-links{flex-wrap:wrap;gap:.25rem 1.25rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.back-link{color:var(--colour-black);margin-bottom:1rem;font-size:.9rem;display:inline-block}form{flex-wrap:wrap;align-items:center;gap:.5rem;margin-block:1.5rem;display:flex}input{min-width:12rem;font:inherit;border:1px solid var(--colour-border);border-radius:var(--radius);flex:1;padding:.4rem .6rem}button{font:inherit;background:var(--colour-black);color:var(--colour-white);border-radius:var(--radius);cursor:pointer;border:none;padding:.4rem 1rem}button:hover{background:var(--colour-gold);color:var(--colour-black)}#messages{padding-inline-start:1.2rem}.booking-form{border:1px solid var(--colour-border);border-radius:var(--radius);background:var(--colour-gold-tint);margin-top:1rem;padding:.75rem}.booking-form[hidden]{display:none}.building-floorplan{border-radius:var(--radius);border:1px solid var(--colour-border,#ddd);width:100%;height:auto;margin:1.5rem auto 0;display:block}.booking-feedback{border-radius:var(--radius);margin-top:.6rem;padding:.5rem .7rem;font-size:.85rem}.booking-feedback.success{color:var(--colour-available);background:var(--colour-available-bg)}.booking-feedback.error{color:var(--colour-busy);background:var(--colour-busy-bg)}.booking-feedback:empty{margin:0;padding:0}.booking-form label{flex-direction:column;gap:.2rem;font-size:.85rem;display:flex}.booking-form select{font:inherit;border:1px solid var(--colour-border);border-radius:var(--radius);padding:.4rem .6rem}.booking-summary{color:var(--colour-black);flex-basis:100%;margin:0;font-weight:600}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.day-strip{flex-wrap:wrap;align-items:center;gap:.5rem;margin-block:1rem;font-size:.85rem;display:flex}.day-strip ul{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.day-link{border:1px solid var(--colour-border);border-radius:var(--radius);white-space:nowrap;padding:.2rem .5rem;text-decoration:none;display:inline-block}.day-link[aria-current=date]{background:var(--colour-gold);border-color:var(--colour-gold);color:var(--colour-black);font-weight:600}.day-step{white-space:nowrap}.calendar-legend{flex-wrap:wrap;gap:1rem;margin:0 0 .75rem;padding:0;font-size:.85rem;list-style:none;display:flex}.calendar-legend li{align-items:center;gap:.35rem;display:flex}.legend-swatch{border:1px solid var(--colour-border);width:1rem;height:1rem;display:inline-block}.calendar-wrap{border:1px solid var(--colour-border);border-radius:var(--radius);max-width:100%;position:relative;overflow-x:auto}.calendar{border-collapse:separate;border-spacing:0;font-size:.8rem}.calendar caption{text-align:left;color:var(--colour-black);padding:.5rem;font-weight:600}.calendar th[scope=row],.calendar thead th:first-child{z-index:1;text-align:left;background:var(--colour-white);border-right:1px solid var(--colour-border);min-width:11rem;padding:.3rem .6rem;position:sticky;left:0}.room-name{color:var(--colour-black);white-space:nowrap;font-weight:600;display:block}.room-meta{font-size:.75rem;font-weight:400;display:block}.slot-head{width:2rem;min-width:2rem;height:1.6rem;padding:0;position:relative}.slot-hour{white-space:nowrap;font-weight:400;position:absolute;bottom:.2rem;left:.15rem}.slot{border-left:1px solid var(--colour-white);border-bottom:1px solid var(--colour-white);width:2rem;min-width:2rem;height:2.4rem;padding:0}.slot-free{background:var(--colour-available-bg)}.slot-free a{width:100%;height:2.4rem;display:block}.slot-free a:hover,.slot-free a:focus-visible,.slot-selected a{outline:3px solid var(--colour-gold);outline-offset:-3px}.slot-booked{background:repeating-linear-gradient(135deg, color-mix(in srgb, var(--colour-busy) 55%, transparent) 0 3px, transparent 3px 7px), var(--colour-busy-bg)}.slot-closed{background:color-mix(in srgb, var(--colour-closed) 45%, var(--colour-closed-bg))}.slot-past{background:var(--colour-past-bg)}.calendar-hint{margin:0 0 .35rem;font-size:.75rem;display:none}.skip-link{position:absolute;left:-9999px}.skip-link:focus{background:var(--colour-black);color:var(--colour-white);border-radius:var(--radius);outline:3px solid var(--colour-gold);margin-bottom:.5rem;padding:.3rem .6rem;display:inline-block;position:static}@media (width<=40rem){.calendar-hint{display:block}.calendar th[scope=row],.calendar thead th:first-child{min-width:7rem;max-width:7rem;padding:.3rem .4rem;font-size:.75rem}.room-name{white-space:normal}}.room-panel{z-index:50;background:var(--colour-black);width:min(24rem,100vw);color:var(--colour-white);border-left:3px solid var(--colour-gold);flex-direction:column;gap:.75rem;padding:1rem;animation:.2s ease-out room-panel-in;display:flex;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-4px 0 16px #00000059}.room-panel[hidden]{display:none}.room-panel:focus{outline:none}.room-panel:focus-visible{outline:3px solid var(--colour-gold);outline-offset:-3px}@keyframes room-panel-in{0%{transform:translate(100%)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.room-panel{animation:none}}.room-panel-header{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.room-panel-kicker{text-transform:uppercase;letter-spacing:.05em;color:var(--colour-gold);margin:0;font-size:.75rem}.room-panel-title{color:var(--colour-white);margin:0;font-size:1.2rem;line-height:1.3}.room-panel-close{width:2rem;height:2rem;color:var(--colour-white);border:1px solid var(--colour-unigrey);background:0 0;flex:none;padding:0;font-size:1.4rem;line-height:1}.room-panel-close:hover,.room-panel-close:focus-visible{background:var(--colour-gold);color:var(--colour-black)}.room-panel-status{margin:0;font-size:.85rem}.room-panel-status:empty{display:none}.room-panel-status.error{border-radius:var(--radius);color:var(--colour-busy);background:var(--colour-busy-bg);padding:.5rem .7rem}.room-panel-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.room-row{background:var(--colour-unigrey);border-left:4px solid var(--colour-closed);border-radius:var(--radius);flex-direction:column;gap:.1rem;padding:.6rem .75rem;display:flex}.room-row-available{border-left-color:var(--colour-available)}.room-row-busy{border-left-color:var(--colour-busy-accent)}.room-row-name{color:var(--colour-white);font-weight:600}.room-row-meta,.room-row-status{color:var(--colour-white);font-size:.8rem}.room-row-status{align-items:center;gap:.35rem;font-weight:600;display:flex}.room-row-icon{text-align:center;width:1rem;display:inline-block}.room-panel-book{text-align:center;background:var(--colour-gold);color:var(--colour-black);border-radius:var(--radius);margin-top:auto;padding:.5rem 1rem;font-weight:600;text-decoration:none}.room-panel-book:hover,.room-panel-book:focus-visible{background:var(--colour-white);color:var(--colour-black)}
