/* S19: booking calendar, inside the student shell. Tokens only. */
@font-face{font-family:"Onest";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/onest-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Onest";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/onest-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
.s19{color:var(--color-body);font-family:var(--font-body)}
.s19 h2{margin:0 0 var(--s-3);font-family:var(--font-head);font-size:var(--t-lg);color:var(--color-ink);font-weight:800}
.s19 .crumb{display:inline-block;margin-bottom:var(--s-4);font-size:var(--t-sm);font-weight:700}
.s19 a:focus-visible,.s19 button:focus-visible,.s19 input:focus-visible,.s19 textarea:focus-visible{outline:3px solid var(--color-accent-text);outline-offset:2px}
.s19 button.btn{font-family:inherit;cursor:pointer}
.s19 button.btn[disabled]{opacity:.45;cursor:not-allowed}
.s19-chips{display:flex;gap:var(--s-2);flex-wrap:wrap;margin:0 0 var(--s-3)}
.s19-chip{font-family:inherit;font-size:var(--t-sm);font-weight:700;padding:.5rem 1.05rem;border-radius:999px;border:1.5px solid var(--color-line);background:var(--color-card);color:var(--color-ink);cursor:pointer;line-height:1.2}
.s19-chip:hover{border-color:var(--color-ink)}
.s19-chip[aria-pressed="true"]{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-card)}
.s19-desc{margin:0 0 var(--s-5);font-size:var(--t-sm);color:var(--color-body);max-width:62ch}
.s19-desc strong{color:var(--color-ink)}
.s19-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--s-5);align-items:start}
.s19-box{background:var(--color-card);border:1px solid var(--color-line);border-radius:var(--radius);padding:var(--s-5);box-shadow:var(--shadow)}
/* calendar */
.cal-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 var(--s-3)}
.cal-title{font-family:var(--font-head);font-weight:800;font-size:var(--t-lg);color:var(--color-ink)}
.cal-nav{font-family:inherit;width:2.5rem;height:2.5rem;border-radius:var(--radius-sm);border:1.5px solid var(--color-line);background:var(--color-card);color:var(--color-ink);font-size:var(--t-lg);line-height:1;cursor:pointer}
.cal-nav:hover:not([disabled]){border-color:var(--color-ink)}
.cal-nav[disabled]{opacity:.35;cursor:not-allowed}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-dow{text-align:center;font-size:var(--t-xs);font-weight:700;color:var(--color-muted);padding:var(--s-1) 0;text-transform:uppercase;letter-spacing:.04em}
.cal-day{font-family:inherit;font-size:var(--t-sm);font-weight:700;aspect-ratio:1/1;min-height:2.6rem;border-radius:var(--radius-sm);border:1.5px solid transparent;display:flex;align-items:center;justify-content:center;background:none;padding:0}
.cal-day.empty{visibility:hidden}
.cal-day.av{background:var(--color-accent-wash);color:var(--color-ink);cursor:pointer}
.cal-day.av:hover{border-color:var(--color-accent-text)}
.cal-day.off{color:var(--color-muted);background:var(--color-surface);cursor:not-allowed;font-weight:500}
.cal-day.course{color:var(--color-muted);background:repeating-linear-gradient(135deg,var(--color-surface) 0 5px,var(--color-line) 5px 6px);cursor:not-allowed;font-weight:500}
.cal-day.range{background:var(--color-ink);color:var(--color-card);opacity:.88}
.cal-day.sel{background:var(--color-ink);color:var(--color-card);border-color:var(--color-accent);box-shadow:inset 0 -3px 0 var(--color-accent)}
.cal-day.today{border-color:var(--color-ink)}
.cal-legend{display:flex;gap:var(--s-4);flex-wrap:wrap;margin:var(--s-4) 0 0;font-size:var(--t-xs);color:var(--color-muted)}
.cal-legend span{display:inline-flex;align-items:center;gap:.4rem}
.cal-legend i{width:.9rem;height:.9rem;border-radius:3px;display:inline-block}
.cal-note{margin:var(--s-3) 0 0;padding-top:var(--s-3);border-top:1px solid var(--color-line);font-size:var(--t-xs);color:var(--color-muted)}
.cal-msg{margin:var(--s-3) 0 0;font-size:var(--t-sm);color:var(--color-warning-ink);background:var(--color-warning-wash);border-radius:var(--radius-sm);padding:var(--s-2) var(--s-3)}
.cal-msg[hidden]{display:none}
/* summary */
.sum-line{margin:0 0 var(--s-3);font-size:var(--t-sm)}
.sum-line b{display:block;font-size:var(--t-xs);font-weight:700;color:var(--color-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}
.sum-line span{color:var(--color-ink);font-weight:700;font-size:var(--t-base)}
.sum-line span.none{color:var(--color-muted);font-weight:400;font-size:var(--t-sm)}
.sum-opt{margin:var(--s-4) 0}
.sum-opt[hidden]{display:none}
.sum-label{display:block;font-size:var(--t-sm);font-weight:700;color:var(--color-ink);margin:0 0 var(--s-2)}
.s19 textarea{width:100%;box-sizing:border-box;font-family:inherit;font-size:var(--t-sm);color:var(--color-ink);background:var(--color-card);border:1.5px solid var(--color-line);border-radius:var(--radius-sm);padding:.6rem .75rem;resize:vertical;min-height:4.5rem}
.s19 textarea:focus{border-color:var(--color-ink)}
.s19-check{display:flex;gap:.6rem;align-items:center;font-size:var(--t-sm);color:var(--color-ink);cursor:pointer}
.s19-check input{position:absolute;opacity:0;width:1px;height:1px}
.s19-check .bx{width:1.25rem;height:1.25rem;border:1.5px solid var(--color-ink);border-radius:4px;background:var(--color-card);flex:none;display:inline-flex;align-items:center;justify-content:center}
.s19-check input:checked + .bx{background:var(--color-ink)}
.s19-check input:checked + .bx::after{content:"";width:.35rem;height:.65rem;border:solid var(--color-card);border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}
.s19-check input:focus-visible + .bx{outline:3px solid var(--color-accent-text);outline-offset:2px}
.sum-acts{display:flex;gap:var(--s-3);flex-wrap:wrap;margin-top:var(--s-4)}
.sum-hint{margin:var(--s-3) 0 0;font-size:var(--t-xs);color:var(--color-muted)}
/* done */
.s19-done{max-width:640px}
.s19-ok{display:inline-flex;width:3rem;height:3rem;border-radius:50%;background:var(--color-success-wash);color:var(--color-success-ink);align-items:center;justify-content:center;margin-bottom:var(--s-3)}
.s19-steps{margin:var(--s-4) 0 0;padding-left:1.2rem;font-size:var(--t-sm)}
.s19-steps li{margin-bottom:var(--s-2)}
.s19-facts{margin:0}
.s19-facts div{display:flex;justify-content:space-between;gap:var(--s-4);padding:var(--s-3) 0;border-bottom:1px solid var(--color-line);font-size:var(--t-sm)}
.s19-facts div:last-child{border-bottom:0}
.s19-facts dt{color:var(--color-muted)}
.s19-facts dd{margin:0;color:var(--color-ink);font-weight:700;text-align:right}
.s19-empty{padding:var(--s-5);border:1px dashed var(--color-line);border-radius:var(--radius);color:var(--color-muted);text-align:center}
@media (max-width:820px){
 .s19{padding:var(--s-5) var(--s-4) var(--s-7)}
 .s19-grid{grid-template-columns:1fr}
 .s19-box{padding:var(--s-4)}
 .cal-day{min-height:2.4rem}
}
