@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/7fea77d1d19108bf-s.2e4y-bhazgt_v.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/1bcd0e671759a44c-s.3o0_l_yqebdng.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/e15f58668ad64cb8-s.2mglm451ism6l.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/90c51ce8fb754fe8-s.3bjsqkuy1d2v8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/57215795b8570f5c-s.0xluf1kzv7x5w.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-stretch:100%;font-display:swap;src:url(../media/03fc1b4a8d284b5e-s.p.45487z7p3r8wm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Fallback;src:local(Arial);ascent-override:101.32%;descent-override:27.18%;line-gap-override:0.0%;size-adjust:101.17%}.ibm_plex_sans_9ce9db06-module___w4LUW__className{font-family:IBM Plex Sans,IBM Plex Sans Fallback;font-style:normal}.ibm_plex_sans_9ce9db06-module___w4LUW__variable{--font-sans:"IBM Plex Sans", "IBM Plex Sans Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.31-2bzhq1gx_9.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.3xauquyg2sixn.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.2taws-qdxmzlf.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.0htwiiqufp3l9.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.28xcb7557rbh2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_f108f4e4-module__mTR-Ia__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal;font-weight:500}.ibm_plex_mono_f108f4e4-module__mTR-Ia__variable{--font-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--red:#b61d22;--red-dark:#8e161a;--red-soft:#f7e2e2;--paper:#f5f0ee;--saffron:#d98a05;--saffron-soft:#fbebcd;--blue:#3c6e8f;--ink:#2a1f1f;--muted:#6b5b5a;--line:#dccfcc;--white:#fff;--sans:var(--font-sans), system-ui, -apple-system, "Segoe UI", Arial, sans-serif;--mono:var(--font-mono), ui-monospace, Consolas, monospace;--radius:14px;--shadow:0 1px 2px #2a1f1f0f, 0 8px 24px #2a1f1f0f;--shadow-hover:0 2px 4px #2a1f1f14, 0 16px 40px #b61d2224}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{font-family:var(--sans);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;background-image:linear-gradient(#b61d220d 1px,#0000 1px),linear-gradient(90deg,#b61d220d 1px,#0000 1px);background-size:24px 24px;line-height:1.55}a{color:inherit;text-decoration:none}button,input{font-family:inherit;font-size:inherit}:focus-visible{outline:3px solid var(--saffron);outline-offset:2px}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.login-logo{width:116px;height:auto;margin-bottom:20px}.topbar-logo{width:44px;height:auto;display:block}.topbar-divider{background:#ffffff59;width:1px;height:30px;margin:0 4px}.kicker{text-transform:uppercase;letter-spacing:.1em;opacity:.85;font-size:13px;font-weight:500}.kicker.dark{color:var(--red);opacity:1}.login-shell{grid-template-columns:1.1fr 1fr;min-height:100vh;display:grid}.login-brand{background:linear-gradient(145deg, var(--red) 0%, var(--red-dark) 100%);color:var(--white);flex-direction:column;justify-content:center;gap:16px;padding:64px 56px;display:flex;position:relative;overflow:hidden}.login-brand:after{content:"";border:48px solid #ffffff12;border-radius:50%;width:360px;height:360px;position:absolute;bottom:-120px;right:-120px}.login-brand .login-logo{align-self:flex-start}.login-brand h1{font-size:clamp(34px,5vw,52px);font-weight:600;line-height:1.1}.login-brand .lede{opacity:.92;max-width:440px;font-size:18px}.brand-points{flex-wrap:wrap;gap:8px;margin-top:12px;list-style:none;display:flex}.brand-points li{background:#ffffff1f;border:1px solid #ffffff40;border-radius:999px;padding:6px 12px;font-size:14px}.login-card-wrap{justify-content:center;align-items:center;padding:40px 20px;display:flex}.login-card{background:var(--white);border:1px solid var(--line);width:100%;max-width:420px;box-shadow:var(--shadow);border-radius:18px;padding:36px 32px}.login-card h2{font-size:26px;font-weight:600}.login-form{flex-direction:column;gap:16px;margin-top:24px;display:flex}.login-form label{flex-direction:column;gap:6px;display:flex}.login-form label>span{font-size:14px;font-weight:500}.login-form input{border:1.5px solid var(--line);background:#fffdfc;border-radius:10px;width:100%;padding:12px 14px;transition:border-color .15s,box-shadow .15s}.login-form input:focus{border-color:var(--red);box-shadow:0 0 0 4px var(--red-soft);outline:none}.login-form .field{flex-direction:column;gap:6px;display:flex}.login-form .field>span{font-size:14px;font-weight:500}.combo,.combo-field{position:relative}.combo-field input{cursor:pointer;padding-right:40px}.combo-field.open input{cursor:text}.combo-field input::placeholder{color:var(--muted)}.combo-field:not(.open) input:not(:placeholder-shown){color:var(--ink)}.combo-caret{color:var(--muted);cursor:pointer;background:0 0;border:none;width:30px;height:30px;font-size:16px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.combo-field.open .combo-caret{transform:translateY(-50%)rotate(180deg)}.combo-list{z-index:20;background:var(--white);border:1px solid var(--line);border-radius:10px;max-height:280px;padding:4px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 32px #2a1f1f29}.combo-option{cursor:pointer;border-radius:7px;justify-content:space-between;align-items:center;gap:12px;padding:9px 10px;font-size:14px;display:flex}.combo-option.active{background:var(--red-soft)}.combo-option[aria-selected=true] .combo-name{color:var(--red);font-weight:600}.combo-option.others{border-top:1px dashed var(--line);margin-top:4px;font-style:italic}.combo-roll{color:var(--muted);flex-shrink:0;font-size:12px}.combo-empty{color:var(--muted);padding:10px;font-size:14px}.pw-row{position:relative}.pw-row input{padding-right:68px}.pw-toggle{color:var(--red);cursor:pointer;background:0 0;border:none;padding:6px 8px;font-size:13px;font-weight:600;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.error{background:var(--red-soft);color:var(--red-dark);border:1px solid #ebc0c0;border-radius:10px;padding:10px 12px;font-size:14px}.btn-primary{background:var(--red);color:var(--white);cursor:pointer;border:none;border-radius:10px;padding:13px 16px;font-weight:600;transition:background .15s,transform .1s}.btn-primary:hover{background:var(--red-dark)}.btn-primary:active{transform:translateY(1px)}.btn-primary:disabled{opacity:.7;cursor:progress}.hint{color:var(--muted);background:var(--paper);border-radius:10px;margin-top:20px;padding:12px 14px;font-size:13px}.hint .mono{color:var(--ink);font-size:12px}.topbar{background:var(--red);color:var(--white);z-index:10;position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;gap:16px;max-width:1120px;margin:0 auto;padding:12px 20px;display:flex}.topbar-brand{align-items:center;gap:10px;font-weight:600;display:flex}.topbar-user{align-items:center;gap:12px;display:flex}.avatar{background:var(--white);width:36px;height:36px;color:var(--red);border-radius:50%;place-items:center;font-size:14px;font-weight:700;display:grid}.user-meta{flex-direction:column;line-height:1.2;display:flex}.user-meta strong{font-size:14px;font-weight:600}.user-meta .mono{opacity:.8;font-size:12px}.btn-ghost{color:var(--white);cursor:pointer;white-space:nowrap;background:#ffffff1f;border:1px solid #ffffff59;border-radius:8px;padding:7px 14px;font-size:14px;font-weight:500;transition:background .15s}.btn-ghost:hover{background:#ffffff3d}.page{max-width:1120px;margin:0 auto;padding:40px 20px 72px}.page-title{margin:6px 0;font-size:clamp(28px,4vw,38px);font-weight:600;line-height:1.15}.crumbs{color:var(--muted);margin-bottom:16px;font-size:14px}.crumbs a{color:var(--red);font-weight:500}.crumbs a:hover{text-decoration:underline}.crumbs span{margin:0 6px}.grid{gap:20px;margin-top:24px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.course-card,.activity-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;padding:24px;transition:transform .18s,box-shadow .18s,border-color .18s;display:flex;position:relative;overflow:hidden}a.course-card:hover,a.activity-card:hover{box-shadow:var(--shadow-hover);border-color:var(--red);transform:translateY(-4px)}.course-card{border-top:6px solid var(--red);min-height:230px}.course-card h2{font-size:22px;font-weight:600}.course-card p{color:var(--muted)}.course-top{justify-content:space-between;align-items:center;display:flex}.course-code{font-family:var(--mono);color:var(--red);letter-spacing:.04em;font-size:22px}.course-foot{border-top:1px dashed var(--line);color:var(--muted);justify-content:space-between;margin-top:auto;padding-top:14px;font-size:14px;display:flex}.arrow{color:var(--red);font-size:14px;font-weight:600}.course-card.disabled{border-top-color:var(--saffron);cursor:not-allowed}.course-card.disabled .course-code{color:var(--muted)}.course-card.disabled .arrow{color:var(--saffron)}.course-card.disabled:before{content:"";pointer-events:none;background:repeating-linear-gradient(135deg,#0000 0 14px,#d98a050d 14px 28px);position:absolute;inset:0}.pill{background:var(--red-soft);color:var(--red-dark);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.pill.soon{background:var(--saffron-soft);color:#8a5703}.session{margin-top:48px}.session-head{align-items:center;gap:16px;display:flex}.session-head h2{font-size:24px;font-weight:600;line-height:1.2}.session-no{font-family:var(--mono);background:var(--red);width:52px;height:52px;color:var(--white);border-radius:12px;place-items:center;font-size:20px;display:grid}.tag{text-transform:uppercase;letter-spacing:.06em;color:var(--red);background:var(--red-soft);border-radius:6px;align-self:flex-start;padding:3px 9px;font-size:12px;font-weight:600}.tag.light{color:var(--white);background:#ffffff29}.activity-card h3{font-size:18px;font-weight:600;line-height:1.3}.activity-card p{color:var(--muted);font-size:15px}.activity-card .arrow{margin-top:auto;padding-top:8px}.activity-card.feature{border-left:6px solid var(--red);min-height:180px}.activity-card.feature h3{font-size:22px}.session.locked .session-no{background:var(--line);color:var(--muted)}.session.locked h2{color:var(--muted)}.locked-card{cursor:not-allowed;border-left:6px solid var(--saffron);background:#fbf8f6;min-height:180px}.locked-card .pill{align-self:flex-start}.locked-card h3{color:var(--muted)}.locked-card .arrow{color:var(--saffron)}.card-row{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.case-no{font-family:var(--mono);color:var(--saffron);font-size:13px;font-weight:500}.banner-card{background:linear-gradient(135deg, var(--red) 0%, var(--red-dark) 100%);color:var(--white);border-radius:var(--radius);box-shadow:var(--shadow);margin-top:24px;padding:28px}.banner-card h3{margin:10px 0 6px;font-size:24px;font-weight:600}.banner-card p{opacity:.9;max-width:760px;font-size:15px}.viewer{flex-direction:column;height:100vh;display:flex}.viewer-bar{background:var(--red);color:var(--white);justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.viewer-title{align-items:center;gap:10px;min-width:0;display:flex}.viewer-title strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.viewer-frame{background:var(--paper);border:none;flex:1;width:100%}@media (max-width:960px){.grid.four{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.login-shell{grid-template-columns:1fr}.login-brand{padding:40px 24px}.login-brand:after{display:none}.grid.two,.grid.four{grid-template-columns:1fr}.user-meta,.viewer-title .tag,.viewer-bar a:last-child{display:none}}
