.calendar{display:flex;flex-direction:column;gap:1.5rem}.calendar-status{padding:2rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--muted)}.calendar-status--error{color:var(--heading)}.calendar-status--error a{color:var(--accent);font-weight:600}.calendar__toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem}.calendar__nav{display:inline-flex;align-items:center;gap:.2rem;padding:.3rem .45rem;border:1px solid var(--border);border-radius:999px;background:var(--surface)}.calendar__nav-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex:0 0 auto;padding:0;border:none;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s ease,color .15s ease}.calendar__nav-btn:hover,.calendar__nav-btn:focus-visible{background:var(--nav-active-bg);color:var(--heading);outline:none}.calendar__month{margin:0;min-width:11ch;text-align:center;font-family:var(--font-heading);font-size:1.15rem;color:var(--heading)}.calendar__today{margin-left:.3rem;padding:.3rem .8rem;border:1px solid var(--border-strong);border-radius:999px;background:transparent;color:var(--heading);font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s ease,border-color .15s ease}.calendar__today:hover{background:var(--nav-active-bg);border-color:var(--accent)}.calendar__legend{margin:0;color:var(--muted)}.calendar__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.calendar__weekday{text-align:center;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-bottom:.25rem}.calendar__cell{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;min-height:5rem;padding:.6rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:inherit;text-align:left}.calendar__cell--empty{border-color:transparent;background:transparent}.calendar__cell--past{opacity:.4}.calendar__cell--available{cursor:pointer;border-color:var(--accent);transition:transform .15s ease,box-shadow .15s ease}.calendar__cell--available:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.calendar__cell--selected{outline:2px solid var(--accent);outline-offset:1px}.calendar__day{font-weight:600;color:var(--heading)}.calendar__request{margin-top:auto;padding:.22rem .7rem;border-radius:999px;border:1px solid var(--border-strong);color:var(--muted);font-size:.78rem;font-weight:600;transition:background .15s ease,color .15s ease,border-color .15s ease,box-shadow .15s ease}.calendar__cell--available:hover .calendar__request,.calendar__cell--available:focus-visible .calendar__request{background:var(--button-bg);color:var(--button-text);border-color:transparent;box-shadow:var(--button-shadow)}.calendar__muted{color:var(--muted)}.course-picker{display:flex;flex-direction:column;gap:.6rem;padding:.9rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--input-bg)}.course-picker__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem}.course-picker__title{font-weight:700;color:var(--heading)}.contact-form .course-picker__search{width:100%;padding:.55rem .8rem;border-radius:var(--radius-sm);border:1px solid var(--input-border);background:var(--surface);color:var(--text)}.course-picker__list{margin:0;padding:0;list-style:none;max-height:15rem;overflow:auto;display:flex;flex-direction:column}.course-picker__row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem;padding:.3rem .2rem;border-bottom:1px solid var(--border)}.course-picker__row.is-checked{background:var(--nav-active-bg);border-radius:6px}.contact-form .course-picker__course{display:flex;flex-direction:row;align-items:center;gap:.55rem;flex:1;min-width:0;font-weight:500;cursor:pointer}.contact-form .course-picker__course input[type=checkbox]{width:auto;flex:0 0 auto;margin:0}.course-picker__name{color:var(--heading);font-size:.92rem;min-width:0}.course-picker__meta{color:var(--muted);font-size:.8rem;white-space:nowrap}.course-picker__pdf{color:var(--accent);font-size:.75rem;font-weight:700;letter-spacing:.06em}.contact-form .course-picker__count{display:flex;flex-direction:row;align-items:center;gap:.4rem;flex:0 0 auto}.contact-form .course-picker__count input{width:4.5rem;padding:.35rem .5rem}.course-picker__empty{padding:.6rem .2rem;color:var(--muted)}.calendar-dialog{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:#00000080;backdrop-filter:blur(4px)}.calendar-dialog__panel{width:min(640px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;padding:0;border-radius:var(--radius-md);background:var(--surface-strong);border:1px solid var(--border);box-shadow:var(--shadow)}.calendar-dialog__head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-shrink:0;padding:1.4rem 1.75rem 1rem;border-bottom:1px solid var(--border)}.calendar-dialog__toggle{display:inline-block;margin-top:.5rem;padding:0;border:none;background:none;color:var(--accent);font-size:.85rem;font-weight:600;cursor:pointer}.calendar-dialog__toggle:hover{text-decoration:underline}.contact-form.calendar-dialog__form{display:flex;flex-direction:column;flex:1;min-height:0}.calendar-dialog__body{flex:1;min-height:0;overflow-y:auto;padding:1.25rem 1.75rem}.calendar-dialog__foot{display:flex;align-items:center;gap:1rem;flex-shrink:0;padding:1rem 1.75rem;border-top:1px solid var(--border);background:var(--surface-strong)}.calendar-dialog__head h3{margin:.25rem 0 0}.calendar-dialog__close{border:none;background:transparent;font-size:1.6rem;line-height:1;cursor:pointer;color:var(--muted)}.contact-form .calendar-consent{display:flex;flex-direction:row;align-items:center;gap:.6rem}.contact-form .calendar-consent input{width:auto;flex:0 0 auto;margin:0}.contact-form .calendar-consent span{flex:1}@media (max-width: 720px){.calendar__cell{min-height:4rem;padding:.4rem}.calendar__request{padding:.14rem .45rem;font-size:.68rem}.day-card{flex-direction:column;align-items:flex-start}}
