.portal-shell{--orange:#0b3a82;--accent:#f5c518;--ink:#0f172a;--muted:#64748b;--border:#e2e8f0;--secondary:#f7f9fc;--card:#fff;--bg:#fff;--radius:12px;min-height:100vh;color:var(--ink);background:var(--bg);font-family:var(--font-plus-jakarta),ui-sans-serif,system-ui,sans-serif;box-sizing:border-box}.portal-shell *,.portal-shell :before,.portal-shell :after{box-sizing:border-box}.portal-shell button,.portal-shell input,.portal-shell select{font:inherit}.portal-shell button{cursor:pointer}.portal-shell .mark{color:var(--orange);align-items:center;gap:8px;display:inline-flex}.portal-shell .mark-logo{width:auto;height:40px;display:block}.portal-shell .auth-card .mark-logo{height:52px}.portal-shell .mark-nine{letter-spacing:-.08em;font-size:28px;font-weight:800;line-height:1}.portal-shell .mark-copy{line-height:.9;display:grid}.portal-shell .mark-copy b{letter-spacing:.08em;font-size:9px}.portal-shell .mark-copy small{letter-spacing:.12em;font-size:7px}.portal-shell .login-page{background:#0b3a82;place-items:center;min-height:100vh;padding:24px;display:grid;position:relative;overflow:hidden}.portal-shell .login-backdrop{background:linear-gradient(135deg,#071f4add,#0b3a828f,#f5c51855),linear-gradient(120deg,#0b3a82 0%,#1a56b0 45%,#071f4a 100%);position:absolute;inset:0}.portal-shell .login-backdrop:before,.portal-shell .login-backdrop:after{content:"";filter:blur(3px);border-radius:50%;position:absolute}.portal-shell .login-backdrop:before{background:#f5c51855;width:48vw;min-width:460px;height:48vw;min-height:460px;top:-18%;right:-15%}.portal-shell .login-backdrop:after{background:#ffffff14;width:38vw;height:38vw;bottom:-24%;left:-12%}.portal-shell .auth-card{z-index:1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;border:1px solid #ffffff26;border-radius:16px;width:min(440px,100%);padding:38px 34px;position:relative;box-shadow:0 24px 70px #0007}.portal-shell .auth-card>.mark{justify-content:center;margin-bottom:24px;display:flex}.portal-shell .auth-card .mark-nine{font-size:38px}.portal-shell .auth-card h1{text-align:center;letter-spacing:-.025em;margin:0;font-size:26px}.portal-shell .auth-card>p{max-width:330px;color:var(--muted);text-align:center;margin:8px auto 25px;font-size:13px;line-height:1.5}.portal-shell .auth-card label,.portal-shell .settings-card label{color:#40434b;gap:8px;font-size:13px;font-weight:600;display:grid}.portal-shell .auth-card input,.portal-shell .settings-card input,.portal-shell .settings-card select{border:1px solid var(--border);width:100%;height:44px;color:var(--ink);background:#fff;border-radius:8px;outline:none;padding:0 13px}.portal-shell .auth-card input:focus,.portal-shell .settings-card input:focus,.portal-shell .settings-card select:focus{border-color:var(--orange);box-shadow:0 0 0 2px #0b3a8220}.portal-shell .auth-card .dark-button{width:100%;margin-top:18px}.portal-shell .demo-copy{color:#888d97;text-align:center;margin-top:16px;font-size:11px;display:block}.portal-shell .app-header{z-index:40;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffffff2;position:sticky;top:0}.portal-shell .header-inner{align-items:center;gap:16px;width:min(1120px,100% - 40px);height:66px;margin:auto;display:flex}.portal-shell .logo-btn{background:0 0;border:0;flex:none;padding:0}.portal-shell .desktop-nav{align-items:center;gap:4px;margin-left:auto;display:flex}.portal-shell .desktop-nav button{color:#62656d;background:0 0;border:0;border-radius:8px;height:38px;padding:0 13px;font-size:13px;font-weight:500}.portal-shell .desktop-nav button:hover{color:var(--ink);background:var(--secondary)}.portal-shell .desktop-nav .nav-active{color:var(--orange);background:var(--secondary)}.portal-shell .desktop-nav .signout{border:1px solid var(--border);background:#fff;margin-left:6px}.portal-shell .notification{width:38px;height:38px;color:var(--ink);background:0 0;border:0;place-items:center;padding:0;display:grid;position:relative}.portal-shell .notification i{color:#fff;background:var(--orange);border-radius:99px;place-items:center;min-width:21px;height:17px;padding:0 4px;font-size:8px;font-style:normal;font-weight:800;display:grid;position:absolute;top:-4px;right:-1px}.portal-shell .menu-btn{border:1px solid var(--border);color:#666a73;background:#fff;border-radius:8px;place-items:center;width:36px;height:36px;padding:0;display:none}.portal-shell .bottom-nav{display:none}.portal-shell .app-content{width:min(1120px,100% - 40px);min-height:calc(100vh - 122px);margin:auto;padding:52px 0 76px;animation:.32s fade}@keyframes fade{0%{opacity:0;transform:translateY(7px)}}.portal-shell .dashboard-title{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:30px;display:flex}.portal-shell .dashboard-title h1,.portal-shell .page-title h1{letter-spacing:-.035em;margin:9px 0 4px;font-size:30px;line-height:1.15}.portal-shell .dashboard-title>div>p,.portal-shell .page-title>p{color:var(--muted);margin:0;font-size:13px;line-height:1.6}.portal-shell .overline{color:#0b3a82;letter-spacing:.11em;text-transform:uppercase;background:#e8f0fb;border-radius:99px;width:max-content;padding:5px 10px;font-size:10px;font-weight:650;display:inline-flex}.portal-shell .overline.category{color:#7b7e86;background:var(--secondary)}.portal-shell .title-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.portal-shell .outline-button,.portal-shell .dark-button{border:1px solid var(--border);color:#444951;background:#fff;border-radius:9px;justify-content:center;align-items:center;gap:7px;min-height:40px;padding:0 14px;font-size:12px;font-weight:600;display:inline-flex}.portal-shell .outline-button:hover{background:var(--secondary)}.portal-shell .dark-button{border-color:var(--orange);color:#fff;background:var(--orange);box-shadow:0 1px 2px #00000012}.portal-shell .dark-button:hover{color:var(--ink);border-color:var(--accent);background:var(--accent)}.portal-shell .course-search{border:1px solid var(--border);color:#9a9da4;background:#fff;border-radius:8px;align-items:center;gap:8px;width:176px;height:40px;padding:0 11px;display:flex}.portal-shell .course-search input{width:100%;color:var(--ink);background:0 0;border:0;outline:0;font-size:12px}.portal-shell .course-search input::placeholder{color:#b0b2b8}.portal-shell .live-now{min-height:96px;color:var(--ink);background:linear-gradient(120deg,#f0f5fc,#fff);border:1px solid #c5d4eb;border-radius:14px;align-items:center;gap:15px;margin-bottom:30px;padding:18px 20px;text-decoration:none;transition:all .2s;display:flex;box-shadow:0 1px 3px #00000008}.portal-shell .live-now:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000012}.portal-shell .live-icon{background:#0b3a8220;border-radius:12px;flex:none;place-items:center;width:44px;height:44px;display:grid}.portal-shell .live-icon i{background:var(--orange);border-radius:50%;width:8px;height:8px}.portal-shell .live-now div{flex:1;gap:2px;min-width:0;display:grid}.portal-shell .live-now div b{color:#0b3a82;font-size:10px}.portal-shell .live-now div strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.portal-shell .live-now p{color:var(--muted);margin:0;font-size:12px}.portal-shell .live-now>span:last-child{color:#0b3a82;font-size:12px;font-weight:700}.portal-shell .course-group{margin-bottom:38px}.portal-shell .course-group>.overline{margin-bottom:15px}.portal-shell .course-grid{grid-template-columns:repeat(3,1fr);gap:22px;display:grid}.portal-shell .course-card{border:1px solid var(--border);background:#fff;border-radius:13px;transition:all .2s;overflow:hidden;box-shadow:0 1px 2px #0000000d}.portal-shell .course-card:hover{transform:translateY(-3px);box-shadow:0 5px 15px #00000014}.portal-shell .course-cover{color:#fff;justify-content:space-between;align-items:flex-end;height:146px;padding:18px;display:flex;position:relative;overflow:hidden}.portal-shell .course-cover img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.portal-shell .course-cover:after{content:"";pointer-events:none;background:linear-gradient(#0000 25%,#20242d55);position:absolute;inset:0}.portal-shell .course-cover span,.portal-shell .course-cover svg{z-index:1;position:relative}.portal-shell .course-cover span{letter-spacing:.15em;max-width:180px;font-size:10px;font-weight:800}.portal-shell .course-cover.orange{background:linear-gradient(135deg,#0b3a82,#1a56b0)}.portal-shell .course-cover.blue{background:linear-gradient(135deg,#168bb8,#52b9d5)}.portal-shell .course-cover.purple{background:linear-gradient(135deg,#705bd4,#9a7ee7)}.portal-shell .course-cover.green{background:linear-gradient(135deg,#109876,#53b99e)}.portal-shell .course-cover.amber{background:linear-gradient(135deg,#d49521,#f2bd53)}.portal-shell .course-info{padding:18px 20px}.portal-shell .course-info>strong{min-height:42px;font-size:14px;line-height:1.45;display:block}.portal-shell progress{background:var(--secondary);appearance:none;border:0;border-radius:99px;width:100%;height:4px;margin:14px 0 7px;display:block}.portal-shell progress::-webkit-progress-bar{background:var(--secondary);border-radius:99px}.portal-shell progress::-webkit-progress-value{background:var(--orange);border-radius:99px}.portal-shell progress::-moz-progress-bar{background:var(--orange);border-radius:99px}.portal-shell .course-info>div{justify-content:space-between;align-items:center;display:flex}.portal-shell .course-info span{color:var(--muted);font-size:10px}.portal-shell .course-info button{color:var(--ink);background:0 0;border:0;padding:0;font-size:11px;font-weight:700}.portal-shell .course-card:hover .course-info button{color:var(--orange)}.portal-shell .empty{border:1px dashed var(--border);color:var(--muted);text-align:center;background:#fff;border-radius:12px;padding:40px;font-size:13px}.portal-shell .page-title{max-width:760px;margin-bottom:30px}.portal-shell .page-title h1{font-size:32px}.portal-shell .notice{color:#727783;margin:-18px 0 24px;font-size:11px}.portal-shell .room-grid,.portal-shell .tool-grid{grid-template-columns:repeat(2,1fr);gap:22px;display:grid}.portal-shell .room-card{border:1px solid var(--border);background:#fff;border-radius:14px;overflow:hidden}.portal-shell .room-top{color:#fff;justify-content:space-between;align-items:flex-end;height:145px;padding:20px;display:flex}.portal-shell .room-top.orange{background:linear-gradient(135deg,#0b3a82,#1a56b0)}.portal-shell .room-top.blue{background:linear-gradient(135deg,#168db9,#4bb7d5)}.portal-shell .room-top span{letter-spacing:.13em;font-size:10px;font-weight:800}.portal-shell .room-card>div:last-child{padding:22px}.portal-shell .room-card h2{letter-spacing:-.02em;margin:9px 0 5px;font-size:19px}.portal-shell .room-card p{color:var(--muted);margin:0 0 20px;font-size:12px}.portal-shell .status-live,.portal-shell .status-next{color:#0b3a82;text-transform:uppercase;align-items:center;gap:6px;font-size:10px;font-weight:800;display:inline-flex}.portal-shell .status-live i{background:#0b3a82;border-radius:50%;width:7px;height:7px}.portal-shell .status-next{color:#676b74}.portal-shell .calendar-card{border:1px solid var(--border);background:#fff;border-radius:14px;padding:20px;box-shadow:0 1px 2px #0000000a}.portal-shell .cal-toolbar{justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px;display:flex}.portal-shell .cal-toolbar>div{align-items:center;gap:8px;display:flex}.portal-shell .cal-toolbar button,.portal-shell .view-switch button,.portal-shell .filter-pills button{border:1px solid var(--border);color:#555a64;background:#fff;border-radius:7px;height:34px;padding:0 11px;font-size:11px;font-weight:600}.portal-shell .cal-toolbar h2{margin:0 0 0 6px;font-size:17px}.portal-shell .view-switch{border:1px solid var(--border);border-radius:8px;padding:3px}.portal-shell .view-switch button{border:0;height:29px}.portal-shell .view-switch .active,.portal-shell .filter-pills .active{color:#fff;background:var(--ink)}.portal-shell .filter-pills{gap:7px;margin:0 0 16px;display:flex}.portal-shell .calendar{border:1px solid var(--border);border-radius:10px;overflow:hidden}.portal-shell .weekdays,.portal-shell .calendar-days{grid-template-columns:repeat(7,1fr);display:grid}.portal-shell .weekdays span{border-right:1px solid var(--border);color:#8b8f98;text-align:center;background:#f7f7f8;padding:9px;font-size:9px;font-weight:700}.portal-shell .calendar-days>div{border-right:1px solid var(--border);border-top:1px solid var(--border);color:#535760;min-height:105px;padding:8px;font-size:10px;position:relative}.portal-shell .calendar-days .muted-day{color:#c0c2c7;background:#fafafa}.portal-shell .cal-event{color:#fff;text-align:left;border:0;border-radius:5px;width:100%;margin-top:7px;padding:5px;font-size:8px;line-height:1.4;overflow:hidden}.portal-shell .cal-event.orange{background:#0b3a82}.portal-shell .cal-event.purple{background:#7961cb}.portal-shell .cal-event.blue{background:#258bae}.portal-shell .credits{border:1px solid var(--border);color:var(--muted);background:#fff;border-radius:99px;align-items:center;gap:6px;margin-top:12px;padding:7px 12px;font-size:11px;display:inline-flex}.portal-shell .credits b{color:var(--orange)}.portal-shell .appointments>h2{margin:30px 0 12px;font-size:18px}.portal-shell .appointments article{border:1px solid var(--border);background:#fff;border-radius:13px;align-items:center;gap:18px;padding:20px;display:flex}.portal-shell .appointment-date{color:#0b3a82;background:#e8f0fb;border-radius:10px;flex:none;align-content:center;place-items:center;width:56px;height:60px;display:grid}.portal-shell .appointment-date strong{font-size:21px;line-height:1}.portal-shell .appointment-date span{font-size:8px;font-weight:800}.portal-shell .appointments article>div:nth-child(2){flex:1;min-width:0}.portal-shell .appointments h3{margin:7px 0 4px;font-size:14px}.portal-shell .appointments p{color:var(--muted);margin:0;font-size:11px}.portal-shell .appointments .past{opacity:.85}.portal-shell .complete{color:#147e5d;background:#eaf7f1;border-radius:99px;align-items:center;gap:5px;padding:6px 9px;font-size:10px;font-weight:700;display:inline-flex}.portal-shell .tool-grid{grid-template-columns:repeat(3,1fr)}.portal-shell .tool-grid article{border:1px solid var(--border);background:#fff;border-radius:14px;min-height:245px;padding:23px}.portal-shell .tool-grid article>span{width:46px;height:46px;color:var(--orange);background:#e8f0fb;border-radius:11px;place-items:center;display:grid}.portal-shell .tool-grid h2{margin:20px 0 7px;font-size:17px}.portal-shell .tool-grid p{min-height:58px;color:var(--muted);margin:0 0 18px;font-size:11px;line-height:1.6}.portal-shell .id-wrap{grid-template-columns:360px minmax(0,1fr);align-items:start;gap:28px;display:grid}.portal-shell .student-id{border:1px solid var(--border);text-align:center;background:#fff;border-radius:16px;padding:24px;box-shadow:0 6px 22px #0000000e}.portal-shell .id-head{justify-content:space-between;align-items:center;display:flex}.portal-shell .id-head>span:last-child{color:var(--orange);letter-spacing:.14em;font-size:9px;font-weight:800}.portal-shell .photo{color:#9ca0a8;background:#f1f2f4;border-radius:50%;place-items:center;width:104px;height:104px;margin:28px auto 14px;display:grid}.portal-shell .student-id h2{margin:0;font-size:22px}.portal-shell .student-id>p{color:var(--muted);margin:4px 0 18px;font-size:11px}.portal-shell .id-courses{flex-wrap:wrap;justify-content:center;gap:5px;margin-bottom:22px;display:flex}.portal-shell .id-courses span{color:#70737b;background:var(--secondary);border-radius:99px;padding:5px 8px;font-size:8px}.portal-shell .student-id small{color:#92959d}.portal-shell .id-help{border:1px solid var(--border);background:#fff;border-radius:14px;padding:28px}.portal-shell .id-help>svg{color:var(--orange)}.portal-shell .id-help h2{font-size:18px}.portal-shell .id-help p{max-width:500px;color:var(--muted);font-size:12px;line-height:1.65}.portal-shell .settings-card{border:1px solid var(--border);background:#fff;border-radius:14px;grid-template-columns:1fr 1fr;gap:18px;max-width:680px;padding:26px;display:grid}.portal-shell .settings-card>div{grid-column:1/-1}.portal-shell .settings-card h2{margin:0 0 5px;font-size:18px}.portal-shell .settings-card p{color:var(--muted);margin:0;font-size:11px}.portal-shell .settings-card .dark-button{justify-self:start}.portal-shell footer{border-top:1px solid var(--border);color:#a0a3aa;text-align:center;padding:19px;font-size:9px}.portal-shell .drawer-layer{z-index:100;position:fixed;inset:0}.portal-shell .drawer-scrim{background:#20242d66;border:0;position:absolute;inset:0}.portal-shell .drawer{background:#fff;flex-direction:column;width:min(280px,100%);height:100%;padding:26px 22px;display:flex;position:relative;box-shadow:15px 0 40px #0002}.portal-shell .drawer-title{justify-content:space-between;align-items:center;margin-bottom:26px;display:flex}.portal-shell .drawer-title strong{font-size:24px}.portal-shell .drawer-title button{color:#70747c;background:0 0;border:0}.portal-shell .drawer>button:not(.drawer-signout){color:var(--ink);text-align:left;background:#fff;border:0;border-radius:12px;padding:13px 20px;font-size:15px}.portal-shell .drawer>button.active{color:var(--orange);background:var(--secondary)}.portal-shell .drawer hr{border:0;border-top:1px solid var(--border);width:100%;margin:auto 0 18px}.portal-shell .drawer-signout{border:1px solid var(--border);color:#777b83;background:#fff;border-radius:12px;height:48px}@media (max-width:980px){.portal-shell .desktop-nav{display:none}.portal-shell .menu-btn{display:grid}.portal-shell .header-inner{height:62px}.portal-shell .course-grid{grid-template-columns:repeat(2,1fr)}.portal-shell .tool-grid{grid-template-columns:1fr}.portal-shell .bottom-nav{z-index:35;padding:7px 2px calc(7px + env(safe-area-inset-bottom));border-top:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffffff5;justify-content:space-around;display:flex;position:fixed;inset:auto 0 0}.portal-shell .bottom-nav button{color:#80838b;background:0 0;border:0;border-radius:7px;flex:1;min-width:0;padding:8px 2px;font-size:9px;font-weight:600}.portal-shell .bottom-nav .active{color:var(--orange)}.portal-shell .app-content{padding-bottom:104px}.portal-shell footer{padding-bottom:75px}}@media (max-width:640px){.portal-shell .header-inner,.portal-shell .app-content{width:calc(100% - 32px)}.portal-shell .app-content{padding-top:28px}.portal-shell .mark-nine{font-size:25px}.portal-shell .dashboard-title{flex-direction:column;align-items:flex-start}.portal-shell .title-actions{justify-content:flex-start;width:100%}.portal-shell .course-search{order:3;width:100%}.portal-shell .live-now{align-items:flex-start}.portal-shell .live-now p{display:none}.portal-shell .course-grid,.portal-shell .room-grid{grid-template-columns:1fr}.portal-shell .course-cover{height:138px}.portal-shell .cal-toolbar{flex-direction:column;align-items:flex-start}.portal-shell .view-switch{width:100%;display:flex}.portal-shell .view-switch button{flex:1}.portal-shell .calendar-card{padding:10px}.portal-shell .calendar-days>div{min-height:72px;padding:5px}.portal-shell .cal-event{font-size:6px}.portal-shell .appointments article{flex-wrap:wrap;align-items:flex-start}.portal-shell .appointments .outline-button{margin-left:74px}.portal-shell .id-wrap,.portal-shell .settings-card{grid-template-columns:1fr}.portal-shell .settings-card>div{grid-column:auto}.portal-shell .auth-card{padding:30px 24px}}@media (prefers-reduced-motion:reduce){.portal-shell *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
