body{color:#1a1a1a;margin:0;padding:2rem;font-family:system-ui,sans-serif;line-height:1.6;overflow-x:hidden}@media (width<=640px){body{padding:1rem}}main{max-width:64rem;margin:0 auto}a{color:#0b5fff}.site-nav{border-bottom:1px solid #ddd;flex-wrap:wrap;align-items:center;gap:1.25rem;margin-bottom:1rem;padding-bottom:.5rem;display:flex}.site-nav a{padding:.3rem .1rem;font-weight:600;text-decoration:none}.site-nav a:hover{text-decoration:underline}.site-nav a:focus-visible{outline-offset:2px;border-radius:.15rem;outline:3px solid #0b5fff}.site-nav-user{color:#444;margin-inline-start:auto;font-size:.9rem}.logout-form{margin:0}.logout-form button{font:inherit;cursor:pointer;background:#f4f4f4;border:1px solid #999;border-radius:.3rem;padding:.3rem .6rem;font-size:.85rem;font-weight:600}.logout-form button:hover{background:#e8e8e8}.logout-form button:focus-visible{outline-offset:2px;outline:3px solid #0b5fff}@media (width<=640px){.site-nav-user{order:3;width:100%;margin-inline-start:0}}.intro{max-width:40rem}.legend{flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 1rem;padding:0;font-size:.9rem;list-style:none;display:flex}.legend-item{padding-inline-start:1.4rem;position:relative}.legend-item:before{content:"";border:2px solid #4a4a4a;border-radius:.2rem;width:1rem;height:1rem;position:absolute;top:.15rem;left:0}.legend-available:before{background:0 0;border-style:dashed}.legend-allocated:before{background:#4a4a4a}.legend-full:before{background:repeating-linear-gradient(45deg,#ccc,#ccc 3px,#eee 3px 6px)}.course-legend{flex-wrap:wrap;gap:.4rem .9rem;margin:0 0 1rem;padding:0;font-size:.85rem;list-style:none;display:flex}.course-legend-item{padding-inline-start:1.1rem;position:relative}.course-legend-item:before{content:"";background:var(--course-color);border:1px solid #4a4a4a;border-radius:50%;width:.75rem;height:.75rem;position:absolute;top:.2rem;left:0}#status:empty{display:none}#status{color:#7a2b00;min-height:1.5rem;font-weight:600}.scroll-hint{color:#555;margin:0 0 .5rem;font-size:.85rem;display:none}@media (width<=640px){.scroll-hint{display:block}}.timetable-scroll{padding-bottom:1rem;overflow-x:auto}.timetable{--heading-height:2.25rem;grid-template-columns:4rem repeat(5,minmax(13rem,1fr));min-width:68rem;display:grid}.hour-axis{z-index:3;background:#fff;flex-direction:column;display:flex;position:sticky;left:0}.hour-axis-spacer{height:var(--heading-height)}.hour-marks{height:var(--day-height);position:relative}.hour-label{color:#666;font-size:.75rem;position:absolute;right:.5rem;transform:translateY(-.6em)}.day-column{border-inline-start:1px solid #ddd}.day-heading{height:var(--heading-height);z-index:4;background:#fff;border-bottom:2px solid #bbb;justify-content:center;align-items:center;font-size:.9rem;font-weight:600;display:flex;position:sticky;top:0}.day-body{height:var(--day-height);background-image:repeating-linear-gradient(to bottom, #eee 0, #eee 1px, transparent 1px, transparent var(--hour-height));position:relative}.session-card{box-sizing:border-box;font:inherit;text-align:start;cursor:pointer;border:2px solid var(--course-color);color:#1a1a1a;border-radius:.25rem;flex-direction:column;justify-content:center;gap:.15rem;padding:.3rem .45rem;font-size:.72rem;line-height:1.25;display:flex;position:absolute;overflow:hidden;container:card/inline-size}.card-course,.card-activity,.card-time{overflow-wrap:anywhere;display:block}@container card (width<=110px){.session-card{gap:.05rem;padding:.2rem .3rem;font-size:.62rem;line-height:1.15}.card-course-activity{flex-wrap:wrap;gap:.3rem;display:flex}}@container card (width<=70px){.card-meta{display:none}}.card-status,.card-meta{white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:block;overflow:hidden}.session-card:focus-visible{outline-offset:1px;z-index:2;outline:3px solid #0b5fff}.status-available{background:color-mix(in srgb, var(--course-color) 12%, white);border-style:dashed}.status-allocated{color:#fff;border-style:solid;background:#1f2937;border-inline-start-width:.4rem}.status-full{color:#555;cursor:not-allowed;background:repeating-linear-gradient(45deg,#e4e4e4,#e4e4e4 4px,#f2f2f2 4px 8px);border-style:solid;border-color:#999}.card-status{text-transform:uppercase;letter-spacing:.02em;font-size:.62rem;font-weight:700}.card-course{font-weight:600}.card-activity{font-size:.68rem}.card-meta{opacity:.85;font-size:.68rem}body.login-page{--login-bg:#f7f6f2;--login-ink:#20211f;--login-gold:#9b762f;--login-card-bg:#fff;--login-border:#dddad2;--login-muted:#6b6a62;background:var(--login-bg);color:var(--login-ink);padding:0}.login-header{background:var(--login-ink)}.login-header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;max-width:1160px;min-height:76px;margin:0 auto;padding:.75rem 2rem;display:flex}.login-brand{color:#fff;align-items:center;gap:.7rem;text-decoration:none;display:flex}.login-brand:focus-visible{outline:2px solid var(--login-gold);outline-offset:3px;border-radius:.2rem}.login-brand-mark{flex-shrink:0;width:26px;height:26px}.login-brand-mark rect{fill:none;stroke:var(--login-gold);stroke-width:1.5px}.login-brand-mark rect:first-child,.login-brand-mark rect:nth-child(4){fill:var(--login-gold)}.login-brand-text{flex-direction:column;gap:.2rem;font-size:1rem;font-weight:600;line-height:1.2;display:flex}.login-brand-badge{letter-spacing:.08em;text-transform:uppercase;color:#fff9;font-size:.62rem;font-weight:600}.login-nav{align-items:center;gap:1.75rem;font-size:.9rem;display:flex}.login-nav a{color:#ffffffd1;font-weight:500;text-decoration:none}.login-nav a:hover{color:#fff}.login-nav a:focus-visible{outline:2px solid var(--login-gold);outline-offset:3px;border-radius:.2rem}.login-nav-current{color:#fff;border-bottom:2px solid var(--login-gold);padding-bottom:2px;font-weight:600}.login-main{max-width:1160px;margin:0 auto;padding:5.5rem 2rem 4rem}.login-shell{grid-template-columns:minmax(0,1.22fr) minmax(380px,440px);align-items:start;gap:4.25rem;display:grid}.login-intro{padding-top:.5rem}.login-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--login-gold);margin:0 0 1rem;font-size:.78rem;font-weight:700}.login-headline{max-width:15ch;color:var(--login-ink);margin:0 0 1.25rem;font-family:Georgia,Times New Roman,serif;font-size:3.25rem;font-weight:400;line-height:1.14}.login-lede{max-width:34ch;color:var(--login-ink);margin:0 0 .6rem;font-size:1.125rem;line-height:1.55}.login-sub-lede{max-width:34ch;color:var(--login-muted);margin:0 0 2.5rem;font-size:1rem}.week-preview{border:1px solid var(--login-border);background:var(--login-card-bg);border-radius:14px;max-width:30rem;padding:1.25rem 1.5rem 1rem}.week-preview-grid{grid-template-columns:repeat(5,1fr);align-items:end;gap:.6rem;margin:0 0 .85rem;padding:0;list-style:none;display:grid}.week-preview-day{flex-direction:column;gap:.35rem;display:flex}.week-preview-day-label{letter-spacing:.04em;text-transform:uppercase;text-align:center;color:var(--login-muted);margin:0 0 .15rem;font-size:.68rem;font-weight:600}.week-preview-slot{border-radius:5px;min-height:1rem}.week-preview-slot--open{border:1.5px dashed color-mix(in srgb, var(--login-gold) 55%, var(--login-border));background:color-mix(in srgb, var(--login-gold) 8%, white)}.week-preview-slot--picked{border:1.5px solid var(--login-ink);background:var(--login-ink)}.week-preview-legend{border-top:1px solid var(--login-border);color:var(--login-muted);gap:1.25rem;margin:0;padding:.75rem 0 0;font-size:.78rem;list-style:none;display:flex}.week-preview-legend-item{padding-inline-start:1.1rem;position:relative}.week-preview-legend-item:before{content:"";border-radius:3px;width:.7rem;height:.7rem;position:absolute;top:.2rem;left:0}.week-preview-legend-item--open:before{border:1.5px dashed color-mix(in srgb, var(--login-gold) 55%, var(--login-border));background:color-mix(in srgb, var(--login-gold) 8%, white)}.week-preview-legend-item--picked:before{background:var(--login-ink)}.week-preview-caption{color:var(--login-muted);margin:.7rem 0 0;font-size:.78rem}.login-card-wrap{justify-content:center;display:flex}.login-card{border:1px solid var(--login-border);background:var(--login-card-bg);border-radius:16px;width:100%;max-width:420px;padding:2rem;box-shadow:0 1px 2px #20211f0a,0 8px 24px #20211f0d}.login-card-eyebrow{letter-spacing:.12em;text-transform:uppercase;color:var(--login-gold);margin:0 0 .6rem;font-size:.72rem;font-weight:700}.login-card-title{color:var(--login-ink);margin:0 0 .35rem;font-family:Georgia,Times New Roman,serif;font-size:1.85rem;font-weight:400}.login-card-subtitle{color:var(--login-muted);margin:0 0 1.5rem;font-size:.95rem}.login-form{flex-direction:column;gap:1.1rem;margin:0;display:flex}.login-field{flex-direction:column;gap:.4rem;display:flex}.login-field label{color:var(--login-ink);font-size:.85rem;font-weight:600}.login-field input{height:50px;font:inherit;color:var(--login-ink);border:1px solid var(--login-border);background:#fff;border-radius:10px;padding:0 .9rem;font-size:1rem}.login-field input:hover{border-color:color-mix(in srgb, var(--login-gold) 40%, var(--login-border))}.login-field input:focus-visible{border-color:var(--login-gold);box-shadow:0 0 0 3px color-mix(in srgb, var(--login-gold) 22%, transparent);outline:none}.login-password-field{display:flex;position:relative}.login-password-field input{flex:1;padding-inline-end:4.2rem}.login-password-toggle{font:inherit;color:var(--login-gold);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.4rem .7rem;font-size:.8rem;font-weight:600;position:absolute;top:50%;right:.4rem;transform:translateY(-50%)}.login-password-toggle:hover{background:color-mix(in srgb, var(--login-gold) 10%, transparent)}.login-password-toggle:focus-visible{outline:2px solid var(--login-gold);outline-offset:2px}.login-error{color:#a3372b;min-height:1.2rem;margin:0;font-size:.85rem;font-weight:600}.login-error:empty{display:none}.login-submit{height:52px;font:inherit;color:#fff;background:var(--login-ink);cursor:pointer;border:none;border-radius:10px;margin-top:.4rem;font-size:1rem;font-weight:600;transition:background-color .15s}.login-submit:hover{background:#34352f}.login-submit:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--login-gold) 35%, transparent);outline:none}.login-submit:disabled{cursor:wait;background:#6b6a62}.login-demo{margin-top:1.75rem}.login-demo-divider{text-align:center;margin:0 0 1rem;position:relative}.login-demo-divider:before{content:"";background:var(--login-border);height:1px;position:absolute;top:50%;left:0;right:0}.login-demo-divider span{letter-spacing:.06em;text-transform:uppercase;color:var(--login-muted);background:var(--login-card-bg);padding:0 .75rem;font-size:.72rem;font-weight:600;position:relative}.login-demo-hint{color:var(--login-muted);margin:0 0 .75rem;font-size:.82rem}.login-demo-list{flex-wrap:wrap;gap:.5rem;margin:0 0 .85rem;padding:0;list-style:none;display:flex}.login-demo-account{min-height:46px;font:inherit;text-align:start;border:1px solid var(--login-border);cursor:pointer;background:#fff;border-radius:12px;align-items:center;gap:.55rem;padding:.5rem .85rem .5rem .5rem;display:inline-flex}.login-demo-account:hover{border-color:color-mix(in srgb, var(--login-gold) 45%, var(--login-border));background:color-mix(in srgb, var(--login-gold) 5%, white)}.login-demo-account:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--login-gold) 30%, transparent);outline:none}.login-demo-avatar{color:#fff;background:var(--login-gold);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.68rem;font-weight:700;display:flex}.login-demo-name{color:var(--login-ink);flex-direction:column;font-size:.88rem;font-weight:600;line-height:1.3;display:flex}.login-demo-username{color:var(--login-muted);font-size:.76rem;font-weight:400}.login-demo-password{color:var(--login-muted);margin:0 0 .4rem;font-size:.8rem}.login-demo-password code{color:var(--login-ink);background:color-mix(in srgb, var(--login-gold) 12%, white);user-select:all;border-radius:5px;padding:.1rem .4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem}.login-demo-status{min-height:1.1rem;color:var(--login-gold);margin:0;font-size:.8rem;font-weight:600}.login-demo-status:empty{display:none}.login-footnote{border-top:1px solid var(--login-border);color:var(--login-muted);margin:1.5rem 0 0;padding-top:1.25rem;font-size:.78rem;line-height:1.5}@media (width<=1180px){.login-main{padding-inline:1.5rem}.login-shell{gap:3rem}.login-headline{font-size:2.75rem}}@media (width<=900px){.login-main{padding-top:3rem;padding-bottom:3rem}.login-shell{grid-template-columns:1fr;gap:2.5rem}.login-card-wrap{order:1}.login-intro{order:2}.login-headline,.login-lede,.login-sub-lede{max-width:none}}@media (width<=640px){.login-header-inner{min-height:64px;padding:.6rem 1.25rem}.login-brand-text{font-size:.9rem}.login-nav{gap:1rem;font-size:.82rem}.login-main{padding:1.75rem 1.25rem 2.5rem}.login-shell{gap:1.75rem}.login-headline{font-size:1.85rem}.login-lede{font-size:1rem}.week-preview,.week-preview-caption{display:none}.login-card{padding:1.4rem}}
