:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--panel:#12151a;--text:#e7eaee;--muted:#98a2b3;--line:#343b46;--accent:#7aa2ff;--cat-methods:#1f3a66;--cat-cs:#3b2f66;--cat-bio:#1f4a2c;--cat-interdisc:#353b46;--cat-none:#2b2f38;--seminar:#5c2a40;--practical:#5a4023;--research:#4f3d2a;--workshop:#1f4a50;--language:#55491b;--exercise:#28382f;--fixed:#323640;--open:#3ccb84;--closed:#ff7b6b;--warn:#ff7b6b}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.4 system-ui,-apple-system,Segoe UI,sans-serif}.app{max-width:1500px;margin:0 auto;padding:12px 16px 32px}header{align-items:baseline;gap:12px;display:flex}h1{margin:4px 0 8px;font-size:22px}h2{margin:0 0 4px;font-size:20px}h2.inline{margin:0}h3{margin:12px 0 6px;font-size:17px}h4{margin:12px 0 4px;font-size:15px}.warn{color:var(--warn)}.muted{color:var(--muted)}a{color:var(--accent)}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0;display:flex}.toolbar.types{gap:6px}.spacer{flex:1}input[type=search]{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:6px;min-width:260px;padding:6px 10px}button{border:1px solid var(--line);background:var(--panel);color:var(--text);cursor:pointer;font:inherit;border-radius:6px;padding:6px 12px}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary.on{filter:brightness(.85)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,.box:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.chip{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;display:inline-flex}.chip.tone-lecture{background:var(--panel)}.chip.tone-seminar{background:var(--seminar)}.chip.tone-practical{background:var(--practical)}.chip.tone-research{background:var(--research)}.chip.tone-workshop{background:var(--workshop)}.chip.tone-language{background:var(--language)}.counter{color:var(--muted)}.grid-scroll{border:1px solid var(--line);background:var(--panel);border-radius:8px;min-height:300px;max-height:calc(100vh - 210px);position:relative;overflow:auto}.grid{width:max-content;min-width:100%;display:flex}.axis{z-index:30;background:var(--panel);border-right:1px solid var(--line);flex:none;width:56px;position:sticky;left:0}.axis-body{margin-top:10px;position:relative}.hour-label{color:var(--muted);font-size:13px;position:absolute;right:6px;transform:translateY(-50%)}.day{border-right:1px solid var(--line);flex:none}.day:last-child{border-right:none}.day-head{z-index:20;text-align:center;background:var(--panel);border-bottom:1px solid var(--line);height:32px;font-weight:600;line-height:32px;position:sticky;top:0}.axis-head{z-index:40}.day-body{margin-top:10px;position:relative}.hour-line{border-top:1px solid var(--line);opacity:.6;position:absolute;left:0;right:0}.grid-empty{z-index:5;color:var(--muted);position:absolute;top:60px;left:80px}.box{border:1px solid var(--line);cursor:pointer;background:var(--cat-none);z-index:2;border-left-width:4px;border-radius:6px;padding:4px 24px 4px 6px;position:absolute;overflow:hidden}.box:hover{z-index:6;box-shadow:0 2px 8px #00000040}.tone-seminar{background:var(--seminar)}.tone-practical{background:var(--practical)}.tone-research{background:var(--research)}.tone-workshop{background:var(--workshop)}.tone-language{background:var(--language)}.box.tone-exercise{background:var(--exercise);border-style:dashed dashed dashed solid}.box.tone-fixed{background:var(--fixed)}.box.checked{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.box.disabled{opacity:.35;filter:grayscale();cursor:not-allowed}.box.conflict{border-color:var(--warn);background-image:repeating-linear-gradient(45deg,#0000 0 6px,#c0392b2e 6px 12px)}.box.clash{outline:2px dotted var(--warn);outline-offset:-2px}.box-check{cursor:pointer;width:16px;height:16px;margin:0;position:absolute;top:3px;right:3px}.box-title{overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:14.5px;font-weight:600;line-height:1.25;display:-webkit-box;overflow:hidden}.box-sub{color:var(--muted);font-size:13.5px}.badge{border:1px solid var(--line);background:var(--panel);white-space:nowrap;border-radius:4px;margin-left:4px;padding:0 5px;font-size:12.5px;display:inline-block}.dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.dot.open{background:var(--open)}.dot.closed{background:var(--closed)}.undated ul{flex-wrap:wrap;gap:6px 16px;padding:0;list-style:none;display:flex}.schedule-layout{grid-template-columns:minmax(0,1fr) 260px;align-items:start;gap:12px;display:grid}.summary{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 14px 12px}.summary h3{margin-top:4px}.summary ul{margin:4px 0;padding-left:18px}@media (width<=900px){.schedule-layout{grid-template-columns:1fr}}.overlay{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:12px;display:flex;position:fixed;inset:0}.popup{background:var(--panel);color:var(--text);border-radius:10px;width:100%;max-width:640px;max-height:90vh;padding:16px 20px 20px;position:relative;overflow:auto}.popup h2{padding-right:28px}.popup-close{background:0 0;border:none;font-size:24px;line-height:1;position:absolute;top:8px;right:10px}.popup dl{grid-template-columns:100px 1fr;gap:6px 12px;margin:10px 0 0;display:grid}.popup dt{color:var(--muted)}.popup dd{margin:0}@media (width<=600px){.overlay{align-items:flex-end;padding:0}.popup{border-radius:14px 14px 0 0;max-height:85vh}.popup dl{grid-template-columns:1fr;gap:0}.popup dd{margin-bottom:8px}}.tone-cat-methods{background:var(--cat-methods)}.tone-cat-cs{background:var(--cat-cs)}.tone-cat-bio{background:var(--cat-bio)}.tone-cat-interdisc{background:var(--cat-interdisc)}.tone-cat-none,.swatch,.fill{background:var(--cat-none)}.swatch{border:1px solid var(--line);border-radius:4px;flex:none;width:14px;height:14px;display:inline-block}.cat-methods{background:var(--cat-methods)}.cat-cs{background:var(--cat-cs)}.cat-bio{background:var(--cat-bio)}.cat-interdisc{background:var(--cat-interdisc)}.cat-none{background:var(--cat-none)}.credits{align-items:center;gap:8px 22px;margin:8px 0;display:flex}.credits.strip{background:var(--panel);border:1px solid var(--line);border-radius:8px;flex-wrap:wrap;padding:6px 10px}.credits.column{flex-direction:column;align-items:stretch;gap:6px;margin:8px 0;padding:0}.credit-row{grid-template-columns:auto 1fr auto;align-items:center;gap:2px 8px;display:grid}.credits.strip .credit-row{grid-template-columns:auto auto auto}.credit-row .bar{background:var(--line);border-radius:3px;grid-column:1/-1;height:5px;overflow:hidden}.credits.strip .bar{display:none}.bar .fill{border-right:1px solid var(--line);height:100%;display:block}.credit-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.credit-value.done{color:var(--open)}.credit-value.over{color:var(--warn)}.credit-row.total{border-top:1px solid var(--line);grid-template-columns:1fr auto;padding-top:4px}.credits.strip .credit-row.total{border-top:none;border-left:1px solid var(--line);grid-template-columns:auto auto;padding-top:0;padding-left:16px}.note-mark{color:var(--warn);cursor:help;margin:0 2px;font-size:1.15em;font-weight:800}.ects-note{border-left:3px solid var(--warn);background:color-mix(in srgb, var(--warn) 12%, transparent);border-radius:4px;margin-top:4px;padding:4px 8px;font-size:15px}.credit-notes{border-left:3px solid var(--warn);background:color-mix(in srgb, var(--warn) 10%, transparent);border-radius:4px;padding:4px 8px;font-size:14.5px}.credit-notes p{margin:2px 0}.credits.strip .credit-notes{flex-basis:100%;order:10}.ects-note ul{margin:4px 0 0;padding-left:18px}.ects-note li.counted{font-weight:600}.site-footer{border-top:1px solid var(--line);flex-wrap:wrap;gap:24px;margin-top:24px;padding-top:8px;font-size:15px;display:flex}.site-footer h3{margin:4px 0}.site-footer p{margin:2px 0}.site-footer ul{margin:0;padding-left:18px}.contact-box{border:1px solid var(--line);background:var(--panel);border-radius:6px;min-width:260px;padding:4px 12px}header{flex-wrap:wrap}.sources{flex-wrap:wrap;gap:14px;margin-left:auto;display:flex}.catalog-line{margin-top:2px;font-size:14px}.cit-modules li{align-items:center;gap:6px;display:flex}.cit-modules .swatch{border-radius:2px;width:10px;height:10px;display:inline-block}
