.weekly-scroll{overflow-x:auto;border:1px solid #cdded8;border-radius:14px;background:#fff;-webkit-overflow-scrolling:touch}
.weekly-scroll:focus-visible{outline:3px solid #308f87;outline-offset:4px}
.weekly-table{width:100%;min-width:980px;border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:.9rem;line-height:1.45;color:#173e40}
.weekly-table th,.weekly-table td{padding:.7rem;border-right:1px solid #dce7e2;border-bottom:1px solid #dce7e2;vertical-align:top;text-align:left}
.weekly-table thead th{background:#113f43;color:#fff;padding:1rem .7rem;font-size:1rem;font-weight:650}
.weekly-table th:first-child{width:125px;position:sticky;left:0;z-index:1}
.weekly-table thead th:first-child{z-index:2}
.weekly-table .weekly-time{background:#f0f5f2;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:1rem}
.weekly-table td{background:#fff}
.weekly-table tr:last-child>*{border-bottom:0}
.weekly-table tr>*:last-child{border-right:0}
.weekly-course{padding:.7rem;border-radius:8px;background:#edf5f0;border-left:3px solid #427f72;overflow-wrap:anywhere}
.weekly-course+.weekly-course{margin-top:.65rem}
.weekly-link{font-weight:700;color:#113f43;text-decoration:underline;text-underline-offset:.2em;text-decoration-color:#83a89c}
.weekly-link:hover{color:#00665d;text-decoration-color:currentColor}
.weekly-link:focus-visible{outline:2px solid #116d69;outline-offset:3px}
.weekly-place,.weekly-room,.weekly-label,.weekly-course small{display:block;margin-top:.35rem}
.weekly-label{font-weight:600}.weekly-room,.weekly-course small{font-size:.8rem;color:#47625d}
.weekly-empty{display:block;color:#a7b8b1;text-align:center;padding:.3rem}
.weekly-hint{font-size:.85rem;color:#526b65}
.weekly-caption{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:640px){.weekly-table{min-width:900px}.weekly-table th:first-child{width:110px}.weekly-table th,.weekly-table td{padding:.55rem}}
/* Copie visuelle de l'en-tête, synchronisée avec le défilement horizontal. */
.weekly-floating-head{position:fixed;z-index:19;overflow:hidden;pointer-events:none;background:#113f43;box-shadow:0 3px 8px #123e4226}
.weekly-floating-head[hidden]{display:none}
.weekly-floating-head .weekly-table{margin:0;min-width:0}
.weekly-floating-head .weekly-table thead th:first-child{position:relative;left:auto;z-index:2}
