:root{--ink:#183d48;--muted:#526773;--accent:#146f75;--line:#d6e2e3;--paper:#fff;--wash:#f4f8f7}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:radial-gradient(ellipse at top right,#e7f2ec,transparent 55%),var(--wash);font:16px/1.6 'Trebuchet MS',sans-serif}a{color:var(--accent)}.brandbar{display:flex;justify-content:space-between;align-items:center;max-width:1180px;margin:auto;padding:26px 30px}.brandbar img{max-width:158px;height:auto}.brandbar span,.hint{font-size:.86rem;color:var(--muted)}main{max-width:1120px;margin:auto;padding:15px 24px 40px}.intro{display:grid;grid-template-columns:1.2fr 1fr;gap:50px;padding:28px 0 38px;align-items:center}.eyebrow{font-weight:bold;text-transform:uppercase;font-size:.76rem;letter-spacing:.14em;color:var(--accent);margin:0 0 9px}h1{font-family:Georgia,serif;font-weight:normal;font-size:clamp(2.8rem,6vw,4.4rem);line-height:1.07;margin:12px 0 20px}h2{font-size:1.35rem;line-height:1.3;margin:0 0 14px}.lead{font-size:1.1rem;max-width:470px}.visit-info{border-left:3px solid #dcba68;padding:8px 0 8px 27px}.visit-info p{margin:8px 0}.arrival,.zone{font-size:.9rem}.zone{color:var(--accent);font-weight:bold}.panel{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:30px;margin-bottom:22px;box-shadow:0 10px 30px #183d4805}.panel-heading{display:flex;justify-content:space-between;gap:20px;align-items:center}.slot-fieldset{border:0;padding:0;margin:22px 0}.slots{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.slot{position:relative;cursor:pointer}.slot input{position:absolute;left:12px;top:12px;accent-color:var(--accent)}.slot-face{display:flex;flex-direction:column;align-items:center;border:1px solid var(--line);border-radius:12px;padding:30px 8px 15px;transition:background .15s,border-color .15s}.slot-day{font-size:.78rem;text-align:center}.slot strong{font-size:1.25rem}.slot small{color:var(--muted)}.slot input:checked+.slot-face{background:#e8f4ef;border:2px solid var(--accent);padding:29px 7px 14px}.slot input:focus-visible+.slot-face{outline:3px solid #d2a232;outline-offset:3px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:20px}.fields label,.security label,#date-tools label{display:block;font-size:.9rem;font-weight:bold}.wide{grid-column:1/-1}input:not([type=radio]),select{display:block;width:100%;font:inherit;padding:12px;border:1px solid #aabfc3;border-radius:8px;color:var(--ink);background:white;margin-top:5px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:2px}#date-tools{max-width:320px;margin-top:15px}.security{display:flex;gap:20px;align-items:center;flex-wrap:wrap;margin:28px 0}.security input{max-width:180px}.security p{max-width:220px}.confirm-row{display:flex;justify-content:space-between;align-items:center;gap:24px;border-top:1px solid var(--line);padding-top:20px}button{background:var(--accent);color:white;border:0;border-radius:9px;padding:14px 25px;font: bold 1rem 'Trebuchet MS',sans-serif;cursor:pointer}button:disabled{opacity:.65;cursor:wait}button:focus-visible{outline:3px solid #d2a232;outline-offset:3px}.notice{padding:18px;border-radius:10px;margin-bottom:20px}.error{background:#fff0eb;border:1px solid #d39a83;color:#7d301c}.success{border-top:5px solid var(--accent);max-width:800px}.confirmed-time{font-size:1.4rem;font-weight:bold}footer{text-align:center;font-size:.8rem;color:var(--muted);padding:20px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}
@media(max-width:760px){.intro{grid-template-columns:1fr;gap:20px;padding-top:10px}.slots{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{padding:22px}.fields{grid-template-columns:1fr}.confirm-row,.panel-heading{display:block}.confirm-row button{width:100%;margin-top:12px}.brandbar{padding:20px 24px}.brandbar span{font-size:.75rem}.visit-info{padding-left:18px}main{padding:10px 16px}.security{gap:15px}}
/* Keep the date picker compact even when a campus publishes months of slots. */
body{background:linear-gradient(135deg,#f6f9f8,#eef4f2);font-size:15px}
.brandbar{max-width:1080px;padding:20px 32px}.brandbar a{text-decoration:none}
main{max-width:1040px;padding:0 28px 36px}.intro{gap:40px;padding:25px 0 28px}
h1{font-size:clamp(2rem,4vw,2.8rem);margin:10px 0 14px;letter-spacing:-.035em}
.lead{font-size:1rem;margin:0;color:var(--muted)}.visit-info{padding-left:22px}.visit-info h2{font-size:1.1rem}.visit-info p{font-size:.86rem}
.panel{padding:26px 30px;border-radius:14px}.panel-heading{border-bottom:1px solid var(--line);padding-bottom:14px}.panel-heading h2{font-size:1.2rem;margin:0}
.panel-heading .eyebrow{font-size:.67rem;margin-bottom:5px}.booking-picker{display:block}
.calendar-ready .booking-picker{display:grid;grid-template-columns:320px minmax(0,1fr);gap:32px;padding:26px 0 8px}
#date-tools{max-width:none;margin:0}.calendar-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.calendar-heading h3,.day-times h3{font-size:1rem;margin:0;font-weight:bold}.calendar-nav{display:flex;gap:6px}
.calendar-nav button{background:transparent;color:var(--ink);font-size:1.5rem;padding:0;width:32px;height:32px;border:1px solid var(--line);border-radius:50%}
.calendar-nav button:disabled{opacity:.3;cursor:default}
.calendar-weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;text-align:center}
.calendar-weekdays{color:var(--muted);font-size:.72rem;margin-bottom:10px}
.calendar-days button{padding:0;aspect-ratio:1;font-size:.86rem;background:#e8f2ee;color:var(--accent);border-radius:50%;border:1px solid transparent}
.calendar-days button:disabled{background:transparent;color:#a0aaad;opacity:1;cursor:default}
.calendar-days button[aria-pressed=true]{background:var(--accent);color:white}
.calendar-days button:not(:disabled):hover{border-color:var(--accent)}
.calendar-key{font-size:.72rem;color:var(--muted);margin:18px 0 0;display:flex;align-items:center;gap:7px}
.calendar-key span{width:8px;height:8px;border-radius:50%;background:var(--accent)}
.calendar-ready .day-times{border-left:1px solid var(--line);padding-left:32px}
.day-times>.hint{margin:6px 0 18px;font-size:.8rem}.slot-fieldset{margin:0 0 16px}
.slots{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.calendar-ready .slot-day{display:none}.slot input{opacity:0;left:0;top:0;width:100%;height:100%;margin:0;cursor:pointer}
.slot-face{padding:12px 8px;border-radius:8px;background:#fff}.slot strong{font-size:1rem}.slot small{font-size:.72rem}
.slot input:checked+.slot-face{padding:12px 8px;background:var(--accent);color:white;border:1px solid var(--accent)}
.slot input:checked+.slot-face small{color:#e0f0eb}.slot:hover .slot-face{border-color:var(--accent)}
.fields{gap:16px}.security{margin:22px 0}#selection{font-weight:bold;font-size:.9rem}
@media(max-width:760px){
 .brandbar{padding:16px 20px}main{padding:0 16px 24px}.intro{gap:18px;padding:16px 0 24px}.visit-info{padding-left:16px}
 .panel{padding:20px}.panel-heading{display:block}.panel-heading>.hint{display:block;margin-top:8px;font-size:.75rem}
 .calendar-ready .booking-picker{grid-template-columns:1fr;gap:24px;padding-top:22px}
 #date-tools{width:100%;max-width:340px;margin:0 auto}.calendar-ready .day-times{border-left:0;border-top:1px solid var(--line);padding:22px 0 0}
 .slots{grid-template-columns:repeat(2,minmax(0,1fr))}.calendar-days{gap:6px}.calendar-days button{max-height:42px}
}
#booking-steps{position:relative;overflow:hidden;padding:4px;margin:-4px;scroll-margin-top:20px}
.back-button{background:transparent;color:var(--accent);padding:4px 0;margin-bottom:20px;font-size:.88rem;border-radius:0}
.back-button:hover{text-decoration:underline}.visit-summary{background:#edf5f2;border-left:3px solid var(--accent);padding:12px 16px;margin:0 0 24px;font-size:.95rem}
#details-title:focus{outline:none}
@media print{.brandbar,button,footer{display:none}body{background:white}.panel{box-shadow:none}}
