/*! BRACU Course Compass. Copyright 2026 Faiaz Abrar Zaman Pronoy and Sinthia Khandoker. All rights reserved. See LICENSE. */:root{--ground: #f4ecff;--glow-a: #e2f7b5;--glow-b: #ffd9c7;--glow-c: #e9d2ff;--surface: #ffffff;--sunken: #f1e6ff;--line: #e6d8f8;--line-2: #cfb8ef;--ink: #1d0f33;--ink-2: #574670;--violet: #7a22c9;--violet-hi: #6118a8;--violet-lo: #f0e1ff;--on-violet: #ffffff;--lime: #c4f04a;--lime-lo: #eefbd0;--lime-ink: #2f4a00;--coral: #ad2a25;--coral-lo: #fde7e5;--amber: #8a5a00;--amber-lo: #fff1d6;--shadow: 23 18 46;--dot: rgb(122 34 201 / .11);--night: #1d0f33;--on-night: #f7f0ff;--marker: var(--lime);--panel: #7a22c9;--font: "Atkinson Hyperlegible Next", "Atkinson Hyperlegible", "Anek Bangla", system-ui, "Segoe UI", sans-serif;--display: "Bricolage Grotesque", "Anek Bangla", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, Consolas, monospace;--radius: 16px}.dark{--ground: #100a1c;--glow-a: #1b2410;--glow-b: #2a1712;--glow-c: #26123f;--surface: #19112b;--sunken: #221838;--line: #33254f;--line-2: #4a3570;--ink: #f2ebfb;--ink-2: #bba9d6;--violet: #c99bff;--violet-hi: #d9b8ff;--violet-lo: #331f57;--on-violet: #100a1c;--lime-lo: #25300c;--lime-ink: #d8f68a;--coral: #ff8f86;--coral-lo: #3a1614;--amber: #f2c46b;--amber-lo: #33260c;--shadow: 0 0 0;--dot: rgb(201 155 255 / .08);--night: #231543;--marker: rgb(196 240 74 / .3);--panel: #5a1aa0;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background-color:var(--ground);background-image:radial-gradient(900px 540px at 0% 0%,var(--glow-a),transparent 65%),radial-gradient(800px 520px at 100% 6%,var(--glow-b),transparent 62%),radial-gradient(1000px 700px at 50% 100%,var(--glow-c),transparent 65%);min-height:100%}body{margin:0;font-family:var(--font);font-size:16px;line-height:1.6;color:var(--ink);background-image:radial-gradient(var(--dot) 1.2px,transparent 1.3px);background-size:22px 22px;-webkit-font-smoothing:antialiased}html[lang=bn] body{line-height:1.75}h1,h2,h3,h4{font-family:var(--display);line-height:1.15;letter-spacing:-.02em;margin:0;color:var(--ink);text-wrap:balance}html[lang=bn] :is(h1,h2,h3,h4){letter-spacing:0;line-height:1.35}p{margin:0}p,li,dd{text-wrap:pretty}.lead,.justify{text-align:justify;hyphens:auto;-webkit-hyphens:auto}a{color:var(--violet)}::selection{background:var(--lime);color:#17122e}:focus-visible{outline:3px solid var(--violet);outline-offset:2px;border-radius:8px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;left:12px;top:-60px;z-index:100}.skip:focus{top:12px}.page{width:100%;max-width:1180px;margin:0 auto;padding:28px 20px 64px}@media(max-width:640px){.page{padding:20px 16px 56px}}.stack>*+*{margin-top:var(--gap, 16px)}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr))}.grid-3{grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}.grid-4{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}.grid-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.split{display:grid;gap:24px;grid-template-columns:minmax(0,1fr) 340px;align-items:start}.split-notes{grid-template-columns:minmax(0,300px) minmax(0,1fr)}@media(max-width:960px){.split,.split-notes{grid-template-columns:minmax(0,1fr)}}.topbar{position:sticky;top:0;z-index:40;padding:12px 16px 0}.nav{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px;background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:999px;box-shadow:0 10px 30px -18px rgb(var(--shadow) / .45)}.nav-links{display:flex;gap:2px;margin:0 auto}.nav-link{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 14px;border-radius:999px;color:var(--ink-2);text-decoration:none;font-weight:600;white-space:nowrap}.nav-link:hover{color:var(--ink);background:var(--sunken)}.nav-link.active{background:var(--ink);color:var(--ground)}.nav-tools{display:flex;align-items:center;gap:4px}.nav .only-wide{display:inline-flex}.nav .only-narrow{display:none}@media(max-width:900px){.nav-links,.nav .only-wide{display:none}.nav .only-narrow{display:inline-flex}.nav-tools{margin-left:auto}}.sheet{max-width:1180px;margin:8px auto 0;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:0 18px 40px -20px rgb(var(--shadow) / .5);display:grid;gap:4px}.sheet .nav-link{min-height:46px}.brand{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);flex-shrink:0}.brand-name{font-family:var(--display);font-weight:800;font-size:1.1rem;line-height:1;letter-spacing:-.02em}.brand-name small{display:block;font-family:var(--mono);font-size:.62rem;font-weight:700;letter-spacing:.16em;color:var(--violet);margin-bottom:3px}.icon-btn{width:42px;height:42px;display:inline-grid;place-items:center;border-radius:999px;border:0;background:transparent;color:var(--ink-2);cursor:pointer;font-size:18px;position:relative;text-decoration:none}.icon-btn:hover{background:var(--sunken);color:var(--ink)}.badge-dot{position:absolute;top:5px;right:5px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--coral);color:#fff;font-size:11px;font-weight:700;display:grid;place-items:center}.dark .badge-dot{color:#1a0a09}.search-trigger{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 10px 0 14px;border-radius:999px;border:1px solid var(--line);background:var(--sunken);color:var(--ink-2);cursor:pointer;font:inherit}.search-trigger:hover{border-color:var(--line-2);color:var(--ink)}kbd{font-family:var(--mono);font-size:.72rem;font-weight:700;padding:2px 6px;border-radius:6px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px rgb(var(--shadow) / .03),0 12px 28px -22px rgb(var(--shadow) / .35)}.pad{padding:20px}@media(max-width:640px){.pad{padding:16px}}.course-card{position:relative;transition:border-color .15s,transform .15s,box-shadow .15s}.course-card .stretched{color:inherit;text-decoration:none}.course-card .stretched:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit}.course-card:hover{border-color:var(--line-2);transform:translateY(-2px);box-shadow:0 18px 34px -22px rgb(var(--shadow) / .45)}.course-card:focus-within{border-color:var(--violet)}.course-card .icon-btn{position:relative}a.card{display:block;color:inherit;text-decoration:none;transition:border-color .15s,transform .15s,box-shadow .15s}a.card:hover{border-color:var(--line-2);transform:translateY(-2px);box-shadow:0 18px 34px -22px rgb(var(--shadow) / .45)}.eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--violet)}html[lang=bn] .eyebrow{font-family:var(--font);letter-spacing:.02em;font-size:.85rem}.muted{color:var(--ink-2)}.small{font-size:.88rem}.center{text-align:center}.code{display:inline-flex;align-items:center;font-family:var(--mono);font-weight:700;font-size:.8rem;letter-spacing:.02em;padding:3px 9px;border-radius:8px;background:var(--lime-lo);color:var(--lime-ink);border:1px solid color-mix(in srgb,var(--lime) 60%,transparent);white-space:nowrap;text-decoration:none}a.code:hover{background:var(--lime);color:#17122e}.tag{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:999px;font-size:.8rem;font-weight:700;background:var(--sunken);color:var(--ink-2)}.tag.violet{background:var(--violet-lo);color:var(--violet-hi)}.dark .tag.violet{color:var(--violet-hi)}.tag.lime{background:var(--lime-lo);color:var(--lime-ink)}.tag.coral{background:var(--coral-lo);color:var(--coral)}.tag.amber{background:var(--amber-lo);color:var(--amber)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 18px;border-radius:12px;border:1.5px solid transparent;font:inherit;font-weight:700;line-height:1.2;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,color .15s,transform .1s}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-primary{background:var(--violet);color:var(--on-violet)}.btn-primary:hover:not(:disabled){background:var(--violet-hi)}.btn-lime{background:var(--lime);color:#17122e}.btn-lime:hover:not(:disabled){background:#b3e232}.btn-line{background:var(--surface);color:var(--ink);border-color:var(--line-2)}.btn-line:hover:not(:disabled){border-color:var(--ink)}.btn-quiet{background:transparent;color:var(--ink-2)}.btn-quiet:hover:not(:disabled){background:var(--sunken);color:var(--ink)}.btn-danger{background:transparent;color:var(--coral);border-color:color-mix(in srgb,var(--coral) 45%,transparent)}.btn-danger:hover:not(:disabled){background:var(--coral-lo)}.btn-sm{min-height:36px;padding:0 12px;border-radius:10px;font-size:.9rem}.btn-block{width:100%}.label{display:block;font-weight:700;font-size:.92rem;margin-bottom:6px}.hint{font-size:.85rem;color:var(--ink-2);margin-top:5px}.field{width:100%;min-height:46px;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line-2);background:var(--surface);color:var(--ink);font:inherit;transition:border-color .15s,box-shadow .15s}.field::placeholder{color:var(--ink-2);opacity:.8}.field:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px color-mix(in srgb,var(--violet) 22%,transparent)}textarea.field{min-height:120px;resize:vertical;line-height:1.55}select.field{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-2) 50%),linear-gradient(135deg,var(--ink-2) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:38px}.form-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr))}.form-error{padding:10px 14px;border-radius:12px;background:var(--coral-lo);color:var(--coral);font-weight:600}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line-2);background:var(--surface);color:var(--ink-2);font:inherit;font-weight:600;font-size:.92rem;cursor:pointer}.chip:hover{color:var(--ink);border-color:var(--ink-2)}.chip[aria-pressed=true]{background:var(--violet);border-color:var(--violet);color:var(--on-violet)}.tabs{display:flex;gap:4px;padding:4px;border-radius:14px;background:var(--sunken);border:1px solid var(--line);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 16px;border-radius:10px;border:0;background:transparent;color:var(--ink-2);font:inherit;font-weight:700;white-space:nowrap;cursor:pointer;text-decoration:none}.tab:hover{color:var(--ink)}.tab[aria-selected=true]{background:var(--surface);color:var(--ink);box-shadow:0 2px 8px -3px rgb(var(--shadow) / .3)}.tab .count{font-family:var(--mono);font-size:.75rem;color:var(--ink-2)}.page-head{margin-bottom:26px}.page-head h1{font-size:clamp(1.9rem,4vw,2.6rem);margin-top:8px}.page-head p{margin-top:8px;color:var(--ink-2);font-size:1.08rem;max-width:64ch;text-wrap:pretty}.page-head.with-action{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap}.empty{text-align:center;padding:40px 20px}.empty .anticon{font-size:34px;color:var(--line-2)}.empty h3{margin-top:12px;font-size:1.2rem}.empty p{text-wrap:balance;margin:6px auto 0;color:var(--ink-2);max-width:44ch}.skeleton{border-radius:14px;background:linear-gradient(90deg,var(--sunken),var(--line),var(--sunken));background-size:200% 100%;animation:shimmer 1.3s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.avatar{display:inline-grid;place-items:center;flex-shrink:0;border-radius:12px;font-family:var(--display);font-weight:800;color:#17122e}.meter{display:inline-flex;gap:3px}.meter i{width:14px;height:7px;border-radius:3px;background:var(--line)}.meter i.on{background:var(--violet)}.meter.hot i.on{background:var(--coral)}.stars{display:inline-flex;gap:1px;color:#d9a200;font-size:.95em}.dark .stars{color:#f2c94c}.stars .off{color:var(--line-2)}.stat{display:grid;gap:2px}.stat b{font-family:var(--display);font-size:1.7rem;line-height:1.1}.stat span{font-size:.86rem;color:var(--ink-2)}.divider{height:1px;background:var(--line);border:0;margin:18px 0}.list-plain{list-style:none;margin:0;padding:0}.list-plain>li+li{border-top:1px solid var(--line)}.link-row{display:flex;align-items:center;gap:12px;padding:12px 4px;color:inherit;text-decoration:none;border-radius:10px}a.link-row:hover{background:var(--sunken)}.prose{line-height:1.7;overflow-wrap:anywhere}.prose h1,.prose h2,.prose h3{margin:1em 0 .4em}.prose p+p{margin-top:.7em}.lime-panel{background:var(--lime);color:#17122e}.lime-panel .muted{color:#3d4a18}.violet-panel{background:var(--panel);color:#fff}.violet-panel h2,.violet-panel h3{color:inherit}.rise{animation:rise .45s ease both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.ant-modal .ant-modal-title{font-family:var(--display);font-size:1.3rem}.ant-picker{width:100%;min-height:46px;border-radius:12px!important;border-width:1.5px!important}.ql-toolbar.ql-snow,.ql-container.ql-snow{border-color:var(--line-2)!important}.ql-toolbar.ql-snow{border-radius:12px 12px 0 0;background:var(--sunken)}.ql-container.ql-snow{border-radius:0 0 12px 12px;background:var(--surface);font-family:var(--font)!important;font-size:1rem!important;min-height:320px}.ql-editor{min-height:320px;color:var(--ink)}.dark .ql-snow .ql-stroke{stroke:var(--ink-2)}.dark .ql-snow .ql-fill{fill:var(--ink-2)}.dark .ql-snow .ql-picker{color:var(--ink-2)}.ql-editor.ql-blank:before{color:var(--ink-2)!important}@media print{body{background:#fff}.no-print,.topbar,footer{display:none!important}}html [data-sonner-toaster][data-theme=light]{--success-text: #1f5c00;--info-text: #1d3f9e;--warning-text: #6e4700;--error-text: #a3201c}@media(max-width:640px){.actions>.btn{flex:1 1 100%}}.auth-page{min-height:100vh;display:flex;flex-direction:column}.auth-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px clamp(16px,4vw,40px)}.auth-main{flex:1;display:flex;flex-direction:column;align-items:center;padding:12px 16px 56px}.auth-badge{display:grid;place-items:center;width:64px;height:64px;border-radius:20px;background:var(--panel);color:var(--lime);font-size:30px;box-shadow:0 10px 30px #7a22c947;transform:rotate(-8deg)}.auth-card{width:100%;max-width:460px;margin-top:26px;padding:clamp(18px,4vw,28px)}.demo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-top:14px}.demo-btn{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px solid var(--line-2);border-radius:14px;background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,transform .15s,background .15s}.demo-btn:hover:not(:disabled){border-color:var(--violet);background:var(--violet-lo);transform:translateY(-1px)}.demo-btn:focus-visible{outline:3px solid var(--violet);outline-offset:2px}.demo-btn b{display:block}.demo-icon{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;border-radius:12px;background:var(--violet-lo);color:var(--violet);font-size:18px}.auth-or{display:flex;align-items:center;gap:12px;margin:22px 0 16px;color:var(--ink-2);font-size:.88rem}.auth-or:before,.auth-or:after{content:"";flex:1;height:1px;background:var(--line)}.auth-tagline{margin-top:26px;font-family:var(--display);font-weight:700;font-size:1.15rem;color:var(--ink-2);text-wrap:balance}.stat .stars{color:#d9a200}.stat .stars .off{color:var(--line-2)}.summary-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));overflow:hidden}.summary-strip>.stat{padding:16px 18px;border-right:1px solid var(--line)}.summary-strip>.stat:last-child{border-right:0}.dropzone{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:20px;border:2px dashed var(--line-2);border-radius:var(--radius);background:var(--surface);transition:border-color .15s,background .15s}.dropzone.over{border-color:var(--violet);background:var(--violet-lo)}.add-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.whatif-row{flex-wrap:wrap}@media(max-width:640px){.whatif-row .only-wide{display:none}}.scale-table{width:100%;border-collapse:collapse;font-size:.93rem}.scale-table th,.scale-table td{padding:6px 4px;border-top:1px solid var(--line);text-align:left}.scale-table thead th{border-top:0;color:var(--ink-2);font-size:.82rem;font-weight:700}.scale-table tbody th{font-family:var(--mono)}.scale-table td:last-child,.scale-table th:last-child{text-align:right}.feature-card{display:block;color:var(--ink);transition:border-color .15s,transform .15s,box-shadow .15s}.feature-card:hover{border-color:var(--violet);transform:translateY(-2px)}.feature-icon{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:14px;font-size:22px;background:var(--violet-lo);color:var(--violet);transition:background .15s,color .15s}.feature-card:hover .feature-icon{background:var(--violet);color:var(--lime)}.course-edit{display:grid;grid-template-columns:110px minmax(0,1fr) 80px auto;gap:8px;align-items:center;padding:8px 0;border-top:1px dashed var(--line)}.course-name{flex:1;min-width:0}@media(max-width:640px){.course-edit{grid-template-columns:minmax(0,1fr) 80px;grid-template-areas:"code credits" "title title" "actions actions"}.course-edit .edit-code{grid-area:code}.course-edit .edit-credits{grid-area:credits}.course-edit .edit-title{grid-area:title}.course-edit .edit-actions{grid-area:actions}.course-line{flex-wrap:wrap}.course-line .course-name{flex:1 1 calc(100% - 100px)}.course-line select{margin-left:auto}}.straight-a{margin-top:12px;padding:10px 14px;border-radius:12px;background:var(--lime-lo);color:var(--lime-ink);font-weight:700}.live{position:sticky;bottom:14px;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:12px 18px;border-radius:16px;border:1px solid var(--line-2);background:var(--night);color:var(--on-night);box-shadow:0 16px 36px -14px rgb(var(--shadow) / .55)}.live :is(p,b,.live-now span){color:inherit}.live-now{display:flex;align-items:baseline;gap:10px;font-weight:700}.live-number{font-family:var(--mono);font-size:1.8rem;line-height:1.1;padding:0 6px;border-radius:8px;animation:live-flash .9s ease-out}@keyframes live-flash{0%{background:color-mix(in srgb,var(--violet) 55%,transparent)}to{background:transparent}}.live-was{display:flex;align-items:center;gap:8px;flex:1 1 auto}.live .btn-line{background:transparent;color:inherit;border-color:color-mix(in srgb,var(--on-night) 40%,transparent)}@media(max-width:640px){.live{bottom:8px;padding:10px 14px}.live-number{font-size:1.45rem}}.outlook-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px;padding:8px 0;border-top:1px dashed var(--line)}.outlook-row b{font-family:var(--mono);text-align:right}.outlook-row em{grid-column:1 / -1;font-style:normal;font-size:.8rem;font-weight:700;color:var(--lime-ink)}.by-hand{display:grid;gap:10px}.by-hand h3{margin-top:10px;font-size:1rem}.how{display:grid;gap:8px;margin:0;padding-left:22px}.how li::marker{font-family:var(--mono);color:var(--violet)}.yours,.example{padding:12px 14px;border-radius:12px;background:var(--sunken)}.yours{border-left:3px solid var(--violet)}.cgpa-layout{display:grid;gap:20px;grid-template-columns:minmax(0,1fr) 300px;align-items:start}.cgpa-side{align-self:start}@media(max-width:1000px){.cgpa-layout{grid-template-columns:minmax(0,1fr)}.cgpa-side{order:-1}}.list-count{padding:10px;border-radius:12px;background:var(--violet-lo);text-align:center}.list-count.dean{background:var(--lime-lo)}.list-count b{display:block;font-family:var(--display);font-size:1.9rem;line-height:1.1;color:var(--ink)}.list-count span{font-size:.8rem;font-weight:700;color:var(--ink-2)}.grade-counts{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(62px,1fr));gap:6px}.grade-counts li{display:flex;align-items:baseline;justify-content:space-between;gap:6px;padding:5px 9px;border-radius:9px;background:var(--sunken);font-size:.88rem}.grade-counts b{font-family:var(--display)}.stepper{display:inline-flex;align-items:center;border:1.5px solid var(--line-2);border-radius:12px;overflow:hidden}.stepper button{width:44px;height:44px;border:0;background:var(--sunken);color:var(--ink);font-size:1.3rem;font-weight:700;cursor:pointer}.stepper button:disabled{opacity:.4;cursor:not-allowed}.stepper output{min-width:52px;text-align:center;font-family:var(--mono);font-size:1.15rem}
