:root{--tt-fill-s:78%;--tt-fill-l:92%;--tt-edge-l:72%;--tt-ink-l:26%;--tt-clash-s:80%;--tt-clash-l:93%;--tt-clash-l2:87%;--tt-clash-ink-l:30%;--tt-cell-h:52px;--tt-corner-w:62px;--tt-table-min:520px;--tt-gap:3px;--tt-grid-head-h:28px}:root[data-theme=dark]{--tt-fill-s:42%;--tt-fill-l:22%;--tt-edge-l:40%;--tt-ink-l:88%;--tt-clash-s:45%;--tt-clash-l:24%;--tt-clash-l2:18%;--tt-clash-ink-l:88%}.tt-notice{margin-top:var(--s-3);min-height:3.2em}.tt-notice--error{color:var(--c-warn);font-weight:600}.tt-layout{gap:var(--s-4);grid-template-columns:1fr;align-items:start;display:grid}.tt-panel{min-width:0}.tt-main{gap:var(--s-4);flex-direction:column;min-width:0;display:flex}@media (width>=961px){.tt-main{grid-template-columns:minmax(340px,5fr) minmax(0,7fr);align-items:start;display:grid}.tt-wizard{grid-column:1}.tt-mine{grid-column:2}.tt-wizard{max-height:var(--tt-col-h,80dvh);overscroll-behavior:contain;overflow-y:auto}.tt-day{grid-column:1/-1}}.tt-modal{z-index:300;padding:var(--s-4);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.tt-modal[hidden]{display:none}.tt-modal-backdrop{background:#080c1473;position:absolute;inset:0}.tt-modal-close{color:var(--c-text-3);cursor:pointer;background:0 0;border:0;padding:2px 6px;font-size:1.5rem;line-height:1}.tt-modal-close:hover{color:var(--c-text)}.tt-find{z-index:1;gap:var(--s-2);flex-direction:column;width:min(620px,100%);max-height:min(88dvh,880px);display:flex;position:relative}.tt-filters{gap:var(--s-2);grid-template-columns:1fr 1fr;display:grid}.tt-find-foot{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.tt-find-foot .tt-target{min-height:0;margin:0}.tt-modal .tt-custom,.tt-modal .tt-detail{z-index:1;width:min(480px,100%);max-height:min(82dvh,640px);position:relative;overflow-y:auto}.tt-find>*{flex:none}.tt-find .tt-results{flex:auto;min-height:140px;max-height:none}.tt-results{max-height:62vh;padding-right:var(--s-1);overflow-y:auto}.tt-groups,.tt-grade{font-variant-numeric:tabular-nums}.tt-conflict{flex-basis:100%}.tt-conflict[hidden]{display:none}.tt-grid-wrap{max-height:calc(var(--tt-grid-head-h) + 10 * (var(--tt-cell-h) + var(--tt-gap)) + var(--tt-gap));border-radius:var(--r-md);overscroll-behavior:contain;overflow:auto}.tt-table{width:100%;min-width:var(--tt-table-min);border-collapse:separate;border-spacing:var(--tt-gap);table-layout:fixed}.tt-table thead th{z-index:3;background:var(--c-bg-raised);box-shadow:0 0 0 var(--tt-gap) var(--c-bg-raised);position:sticky;top:0}.tt-table thead .tt-corner{z-index:4;left:0}.tt-table th{padding:var(--s-1) 0;color:var(--c-text-3);font-size:12.5px;font-weight:700}.tt-corner{width:var(--tt-corner-w)}.tt-period{z-index:1;background:var(--c-bg-raised);border-radius:var(--r-sm);line-height:1.2;position:sticky;left:0}.tt-period b{color:var(--c-text);font-size:13px;display:block}.tt-period small{color:var(--c-text-3);font-size:11px;display:block}.tt-cell{height:var(--tt-cell-h);padding:2px var(--s-1);border:1px solid var(--c-line);border-radius:var(--r-sm);background:var(--c-bg);vertical-align:middle;font-size:12px;line-height:1.25}.tt-cell--filled{background:hsl(var(--course-hue) var(--tt-fill-s) var(--tt-fill-l));border-color:hsl(var(--course-hue) var(--tt-fill-s) var(--tt-edge-l));color:hsl(var(--course-hue) var(--tt-fill-s) var(--tt-ink-l));font-weight:700}.tt-cell--filled small{opacity:.75;margin-top:2px;font-weight:500;display:block}.tt-cell--conflict{background:repeating-linear-gradient(45deg, hsl(0 var(--tt-clash-s) var(--tt-clash-l)), hsl(0 var(--tt-clash-s) var(--tt-clash-l)) 6px, hsl(0 var(--tt-clash-s) var(--tt-clash-l2)) 6px, hsl(0 var(--tt-clash-s) var(--tt-clash-l2)) 12px);border-color:var(--c-danger);color:hsl(0 var(--tt-clash-s) var(--tt-clash-ink-l))}.tt-picked{align-items:center;gap:var(--s-2);--item-accent:hsl(var(--course-hue) var(--tt-fill-s) var(--tt-edge-l));flex-wrap:wrap;display:flex}.tt-picked .item-title{margin-top:0}.tt-picked-main{flex:240px;min-width:0}.tt-picked-side{align-items:center;gap:var(--s-2);flex-wrap:wrap;margin-top:0;margin-left:auto;display:flex}.tt-room{width:140px;height:30px;font-size:13px}.tt-map{border-bottom:1px solid #0000;font-size:13px;font-weight:600;text-decoration:none}.tt-map:hover{border-bottom-color:currentColor}.tt-source{padding-top:var(--s-5);border-top:1px solid var(--c-line);text-align:center}.tt-plans{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));display:grid}.tt-plan{gap:var(--s-2);padding:var(--s-3);border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-bg);text-align:left;cursor:pointer;font:inherit;color:inherit;display:grid}.tt-plan:hover{background:var(--c-line-soft)}.tt-plan.is-active{border-color:var(--c-accent);box-shadow:inset 0 0 0 1px var(--c-accent);background:var(--c-accent-weak)}.tt-plan-head{align-items:center;gap:var(--s-2);display:flex}.tt-plan-sum{font-size:var(--fs-xs);font-variant-numeric:tabular-nums;color:var(--c-text-2);margin-left:auto}.tt-plan-meta{font-size:var(--fs-xs);color:var(--c-text-3)}.tt-plan-meta--warn{color:var(--c-warn)}.tt-thumb-wrap{gap:2px;display:grid}.tt-thumb-days{color:var(--c-text-3);text-align:center;grid-template-columns:repeat(5,1fr);gap:1px;padding:0 2px;font-size:9.5px;line-height:1.1;display:grid}.tt-thumb{grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(var(--thumb-rows,6), 1fr);aspect-ratio:5/6;border-radius:var(--r-sm);background:var(--c-line-soft);gap:1px;padding:2px;display:grid}.tt-thumb i{background:hsl(var(--course-hue) var(--tt-fill-s) var(--tt-edge-l));border-radius:2px}.tt-preview-bar{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border:1px dashed var(--c-accent);border-radius:var(--r-md);background:var(--c-accent-weak);font-size:var(--fs-sm);color:var(--c-text);flex-wrap:wrap;display:flex}.tt-preview-bar[hidden]{display:none}.tt-preview-actions{gap:var(--s-2);margin-left:auto;display:flex}@media (width<=720px){.tt-preview-actions{width:100%;margin-left:0}}.tt-target{align-items:center;gap:var(--s-2);flex-wrap:wrap;min-height:3.2em;display:flex}.tt-basket-new{gap:var(--s-2);flex-wrap:wrap;align-items:center;display:flex}.tt-basket-new .field{flex:220px;width:auto;min-width:0}.tt-basket--active{border-color:var(--c-accent);box-shadow:inset 3px 0 0 var(--c-accent)}.tt-basket-title{width:100%;margin-top:var(--s-1);border-radius:var(--r-sm);color:var(--c-text);font:inherit;font-size:var(--fs-md);background:0 0;border:1px solid #0000;padding:2px 4px;font-weight:700;line-height:1.45;display:block}.tt-basket-title:hover{border-color:var(--c-line)}.tt-basket-title:focus{border-color:var(--c-accent);background:var(--c-bg);outline:none}.tt-basket-rows{margin-top:var(--s-2);border-top:1px solid var(--c-line-soft)}.tt-basket-row{align-items:center;gap:var(--s-2);padding:var(--s-2) 0;border-bottom:1px solid var(--c-line-soft);font-size:var(--fs-sm);color:var(--c-text-2);flex-wrap:wrap;display:flex}.tt-basket-row:last-child{border-bottom:none}.tt-basket-main{flex:200px;min-width:0}.tt-basket-row .item-code{margin-left:auto}@media (width<=960px){.tt-modal{align-items:flex-end;padding:0}.tt-find,.tt-modal .tt-custom,.tt-modal .tt-detail{border-bottom-right-radius:0;border-bottom-left-radius:0;width:100%;max-height:88dvh}.tt-results,.tt-find .tt-results{max-height:none}}@media (width<=640px){:root{--tt-cell-h:46px;--tt-corner-w:48px;--tt-table-min:460px;--tt-gap:2px}.tt-cell{font-size:11px}.tt-picked-side{width:100%}.tt-room{flex:auto;width:auto}}@media (prefers-reduced-motion:reduce){.item-card{transition:none}}.tt-campus{--campus-h:210;background:hsl(var(--campus-h) 60% var(--tt-fill-l));color:hsl(var(--campus-h) 40% var(--tt-ink-l));border-color:hsl(var(--campus-h) 45% var(--tt-edge-l))}.tt-campus--1{--campus-h:268}.tt-campus--2{--campus-h:158}.tt-campus-tag{font-size:var(--fs-xs);opacity:.75;margin-top:2px;display:block}.tt-flags{gap:var(--s-1);margin-top:var(--s-2);flex-wrap:wrap;display:flex}.tt-flag--stop,.tt-flag--limit,.tt-flag--away{background:hsl(var(--flag-h) 62% var(--tt-fill-l));color:hsl(var(--flag-h) 42% var(--tt-ink-l));border-color:hsl(var(--flag-h) 46% var(--tt-edge-l))}.tt-flag--stop{--flag-h:4}.tt-flag--limit{--flag-h:28}.tt-flag--away{--flag-h:322}.tt-hit{align-items:start;gap:var(--s-2) var(--s-3);padding:var(--s-2) var(--s-3);grid-template-columns:minmax(0,1fr) auto;display:grid}.tt-hit-body{min-width:0}.tt-hit-title{margin:0;line-height:1.45}.tt-hit-facts{font-size:var(--fs-sm);color:var(--c-text-2);font-weight:500}.tt-hit-sub{align-items:center;gap:var(--s-1);font-size:var(--fs-xs);color:var(--c-text-3);flex-wrap:wrap;margin-top:3px;display:flex}.tt-hit-sub .item-code{margin-left:auto}.tt-hit .item-note{margin-top:3px}.tt-hit-actions{gap:var(--s-1);flex-direction:row;margin-top:0}@media (width<=480px){.tt-filters{grid-template-columns:1fr}.tt-hit-actions{flex-direction:column}.tt-hit-sub .item-code{margin-left:0}.tt-hit-sub .item-code:before{content:"· "}}.tt-check{align-items:center;gap:var(--s-2);font-size:var(--fs-sm);color:var(--c-text-2);cursor:pointer;display:flex}.tt-check input{accent-color:var(--c-accent)}.tt-wizard-more>summary{cursor:pointer;font-size:var(--fs-sm);color:var(--c-text-2);padding:var(--s-2) 0;font-weight:700}.tt-wizard-more>summary:hover{color:var(--c-text)}.tt-wizard-more[open]>summary{margin-bottom:var(--s-2)}.tt-wizard .tt-results{max-height:52vh}.tt-custom-form,.tt-wizard-prefs{gap:var(--s-3);border:0;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;margin:0;padding:0;display:grid}.tt-field{gap:var(--s-1);flex-direction:column;min-width:0;display:flex}.tt-field--wide{grid-column:1/-1}.tt-field label,.tt-field-label{font-size:var(--fs-sm);color:var(--c-text-2)}.tt-custom-submit{align-self:end}.tt-daypicks{gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-daypicks label{align-items:center;gap:var(--s-1);padding:var(--s-1) var(--s-2);border:1px solid var(--c-line);border-radius:var(--r-sm);font-size:var(--fs-sm);cursor:pointer;transition:border-color .15s var(--ease);display:flex}.tt-daypicks label:hover{border-color:var(--c-accent)}.tt-daypicks input{accent-color:var(--c-accent)}.tt-start{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-start label{font-size:var(--fs-sm);color:var(--c-text-2);white-space:nowrap}.tt-start .field{flex:200px;min-width:0}.tt-move--tight{border-left:3px solid var(--c-warn)}.tt-move--arrival{border-left:3px solid var(--c-accent)}.tt-room-split{white-space:nowrap;align-self:center}@media (width<=640px){.tt-custom-form,.tt-wizard-prefs{grid-template-columns:1fr}}.tt-days+#tt-move-note,#tt-move-note+.tt-chain,.tt-chain+.tt-mini{margin-top:var(--s-2)}.tt-mini+.tt-moves{margin-top:var(--s-5)}.tt-days{gap:var(--s-2);flex-wrap:wrap}.tt-days:empty{display:none}.tt-day-chip{align-items:baseline;gap:var(--s-1);display:inline-flex}.tt-day-chip small{font-size:var(--fs-xs);opacity:.75;font-weight:600}.tt-day-chip[aria-selected=true]{background:var(--c-accent);color:var(--c-accent-text);border-color:#0000}.tt-day-chip--warn:not([aria-selected=true]){border-color:var(--c-warn);color:var(--c-warn)}.tt-chain:empty{display:none}.tt-chain{gap:var(--s-1);display:grid}.tt-chain-line{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-chain-stop{padding:3px var(--s-2);border:1px solid var(--c-line);border-radius:var(--r-sm);background:var(--c-bg-raised);font-size:var(--fs-sm);font-weight:700}.tt-chain-gap{font-size:var(--fs-xs);color:var(--c-text-3);letter-spacing:.02em;font-weight:700}.tt-chain-gap--tight{color:var(--c-warn)}.tt-chain-gap--cross{color:var(--c-danger);-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.tt-mini{gap:var(--s-2);margin:0;display:grid}.tt-mini-canvas{border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-bg-sunken);overflow:hidden}.tt-mini-actions{justify-content:flex-end;margin:0;display:flex}.tt-mini-actions[hidden]{display:none}.mini-map{width:100%;height:auto;display:block}.mini-road{fill:none;stroke:var(--c-text-3);stroke-width:26px;stroke-linecap:round;stroke-linejoin:round;opacity:.35}.mini-trail{fill:none;stroke:var(--c-text-3);stroke-width:12px;stroke-linecap:round;stroke-dasharray:26 22;opacity:.35}.mini-bridge{fill:none;stroke:var(--c-text-2);stroke-width:14px;stroke-linecap:round;stroke-dasharray:8 30;opacity:.55}.mini-building{fill:var(--c-text-3);fill-opacity:.28;stroke:var(--c-text-3);stroke-width:6px;stroke-opacity:.5}.mini-place{fill:var(--c-text-3);fill-opacity:.14;stroke:none}.mini-label{fill:var(--c-text-2);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:78px;font-weight:800}.mini-route-halo{fill:none;stroke:var(--c-bg);stroke-width:34px;stroke-linecap:round;stroke-linejoin:round}.mini-route-line{fill:none;stroke:var(--c-accent);stroke-width:16px;stroke-linecap:round;stroke-linejoin:round}.mini-route-halo.is-dim,.mini-route-line.is-dim{opacity:.3}.mini-stop{fill:var(--c-accent);stroke:var(--c-bg);stroke-width:10px}.mini-stop-num{fill:var(--c-accent-text);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-size:54px;font-weight:800}.tt-syllabus{color:inherit;text-underline-offset:4px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-decoration-thickness:1px;-webkit-text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);text-decoration-color:color-mix(in srgb, currentColor 45%, transparent);cursor:pointer;transition:text-decoration-color .15s,color .15s}.tt-syllabus:hover,.tt-syllabus:focus-visible{text-decoration-style:solid;text-decoration-color:currentColor}.tt-syllabus:focus-visible{outline:2px solid var(--accent,#1b3a8c);outline-offset:3px;border-radius:3px}@media (pointer:coarse){.tt-check{min-height:44px}.tt-check input{width:20px;height:20px}.tt-daypicks label{min-height:40px;padding-left:var(--s-3);padding-right:var(--s-3)}.tt-daypicks input{width:18px;height:18px}}.tt-cell-more{font:inherit;color:inherit;opacity:.75;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;margin:2px auto 0;padding:0;font-size:11px;text-decoration:underline;display:block}.tt-cell-more:hover{opacity:1}.tt-curriculum-callout{justify-content:space-between;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);background:var(--c-bg-sunken);border:1px solid var(--c-line-soft);border-radius:var(--r-md);margin-top:var(--s-2);display:flex}.tt-curriculum-callout-text{flex:1;min-width:0}.tt-curriculum-callout-text strong{font-size:var(--fs-md);color:var(--c-text);margin-bottom:var(--s-1);word-break:keep-all;display:block}.tt-curriculum-callout-text p{font-size:var(--fs-sm);color:var(--c-text-2);word-break:keep-all;margin:0}.tt-curriculum-callout .btn{white-space:nowrap;font-size:var(--fs-sm);padding:var(--s-2) var(--s-3);flex-shrink:0}@media (width<=540px){.tt-curriculum-callout{flex-direction:column;align-items:stretch}.tt-curriculum-callout .btn{text-align:center;width:100%}}.tt-modal .tt-curriculum-panel{z-index:1;gap:var(--s-4);width:min(680px,100%);max-height:min(88dvh,880px);position:relative;overflow-y:auto}.tt-curr-section{gap:var(--s-2);padding-top:var(--s-3);border-top:1px solid var(--c-line-soft);flex-direction:column;display:flex}.tt-curr-section-head{align-items:center;gap:var(--s-2);font-size:var(--fs-md);display:flex}.tt-dept-selector{gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-dept-btn{align-items:center;gap:var(--s-1);display:flex}.tt-dept-btn.is-active{background:var(--c-accent);color:var(--c-accent-text);border-color:var(--c-accent);font-weight:600}.tt-dept-btn.is-disabled{opacity:.55;cursor:not-allowed}.tt-grade-selector{gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-grade-btn{text-align:center;flex:1;min-width:70px}.tt-grade-btn.is-active{background:var(--c-accent);color:var(--c-accent-text);border-color:var(--c-accent);font-weight:600}.tt-curr-quick-actions{gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-completed-details{border:1px solid var(--c-line-soft);border-radius:var(--r-md);background:var(--c-bg-sunken);padding:var(--s-2) var(--s-3)}.tt-completed-details summary{font-size:var(--fs-sm);color:var(--c-text-2);cursor:pointer;-webkit-user-select:none;user-select:none;padding:var(--s-1) 0;font-weight:500}.tt-completed-grid{gap:var(--s-2);margin-top:var(--s-2);max-height:240px;padding-top:var(--s-2);border-top:1px solid var(--c-line-soft);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid;overflow-y:auto}.tt-completed-item{align-items:flex-start;gap:var(--s-2);font-size:var(--fs-xs);padding:var(--s-1) var(--s-2);background:var(--c-bg-raised);border:1px solid var(--c-line);border-radius:var(--r-sm);cursor:pointer;display:flex}.tt-completed-item input[type=checkbox]{flex-shrink:0;margin-top:2px}.tt-completed-meta{flex-direction:column;gap:1px;display:flex}.tt-completed-title{color:var(--c-text);word-break:keep-all;font-weight:500}.tt-completed-sub{color:var(--c-text-3);font-size:10.5px}.tt-rec-list{gap:var(--s-2);flex-direction:column;max-height:320px;display:flex;overflow-y:auto}.tt-rec-card{align-items:flex-start;gap:var(--s-3);padding:var(--s-3);border:1px solid var(--c-line);border-radius:var(--r-md);background:var(--c-bg-raised);transition:border-color .15s;display:flex}.tt-rec-card:hover{border-color:var(--c-text-3)}.tt-rec-card.is-selected{border-color:var(--c-accent);background:var(--c-accent-weak)}.tt-rec-card.is-disabled{opacity:.6}.tt-rec-check{cursor:pointer;flex-shrink:0;margin-top:3px}.tt-rec-body{gap:var(--s-1);flex-direction:column;flex:1;min-width:0;display:flex}.tt-rec-top{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.tt-rec-title{font-size:var(--fs-md);color:var(--c-text);font-weight:600}.tt-rec-info{font-size:var(--fs-xs);color:var(--c-text-2)}.tt-rec-offered{font-size:var(--fs-xs);color:var(--c-text-3)}.tt-curr-foot{align-items:center;gap:var(--s-2);padding-top:var(--s-3);border-top:1px solid var(--c-line);flex-wrap:wrap;display:flex}
