:root { --brand:#2949d3; --ink:#18223b; --muted:#74809a; --line:#e4e9f4; --paper:#fff; --bg:#f2f5fb; color-scheme:light; font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif; }
* { box-sizing:border-box; }
body { min-width:320px; margin:0; color:var(--ink); background:radial-gradient(circle at 15% 0,rgba(82,111,230,.13),transparent 30rem),var(--bg); }
button,input,select { font:inherit; }
button,a { -webkit-tap-highlight-color:transparent; }
[hidden] { display:none !important; }
.academic-shell { width:min(1180px,calc(100% - 32px)); min-height:100vh; margin:0 auto; padding:20px 0 36px; }
.academic-topbar { display:flex; align-items:center; gap:12px; min-height:52px; }
.academic-topbar .icon-link { display:grid; width:40px; height:40px; place-items:center; border:1px solid var(--line); border-radius:13px; color:#344262; background:rgba(255,255,255,.8); text-decoration:none; font-size:21px; }
.academic-topbar > div { display:grid; gap:2px; }
.academic-topbar strong { font-size:15px; }
.academic-topbar > div span { color:var(--muted); font-size:11px; }
.topbar-status { display:inline-flex; align-items:center; gap:6px; margin-left:auto; padding:7px 10px; border:1px solid #dce4f6; border-radius:999px; color:#52617c; background:rgba(255,255,255,.75); font-size:10px; font-weight:800; }
.topbar-status i { width:7px; height:7px; border-radius:50%; background:#35a56c; box-shadow:0 0 0 4px rgba(53,165,108,.12); }
.topbar-status.is-pending { border-color:#f0d9a4; color:#80652d; background:#fffaf0; }
.topbar-status.is-pending i { background:#d99a2d; box-shadow:0 0 0 4px rgba(217,154,45,.13); }
.academic-hero { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(290px,.65fr); gap:18px; margin-top:14px; padding:30px; overflow:hidden; border:1px solid rgba(255,255,255,.85); border-radius:26px; background:linear-gradient(130deg,#203dbd 0%,#3458df 58%,#5577eb 100%); box-shadow:0 18px 45px rgba(38,62,149,.18); }
.academic-hero__copy { align-self:center; color:#fff; }
.eyebrow { font-size:10px; font-weight:900; letter-spacing:.18em; opacity:.72; }
.academic-hero h1 { margin:7px 0 6px; font-size:clamp(30px,5vw,48px); line-height:1.05; letter-spacing:-.04em; }
.academic-hero__copy > p { max-width:600px; margin:0; color:rgba(255,255,255,.78); font-size:14px; line-height:1.7; }
.source-pill { display:inline-flex; align-items:flex-start; gap:8px; max-width:640px; margin-top:18px; padding:9px 12px; border:1px solid rgba(255,255,255,.16); border-radius:11px; color:rgba(255,255,255,.82); background:rgba(12,26,96,.18); font-size:10px; line-height:1.55; }
.source-pill > span:first-child { display:grid; width:17px; height:17px; flex:0 0 auto; place-items:center; border-radius:50%; color:#2443bd; background:#dce5ff; font-size:9px; font-weight:900; }
.semester-card { align-self:stretch; padding:18px; border:1px solid rgba(255,255,255,.26); border-radius:20px; color:#fff; background:rgba(255,255,255,.13); backdrop-filter:blur(12px); }
.semester-card > span { display:block; color:rgba(255,255,255,.68); font-size:10px; }
.semester-card > strong { display:block; min-height:45px; margin-top:5px; font-size:17px; line-height:1.4; }
.catalog-evidence { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; margin-top:11px; }
.catalog-evidence > div { display:grid; gap:3px; min-width:0; padding:8px 9px; border:1px solid rgba(255,255,255,.16); border-radius:11px; background:rgba(16,35,121,.14); }
.catalog-evidence span { color:rgba(255,255,255,.68); font-size:9px; font-weight:800; }
.catalog-evidence strong { overflow:hidden; min-height:auto; margin:0; color:#fff; font-size:10px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.catalog-stats { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; margin-top:15px; }
.catalog-stats > div { display:grid; gap:3px; padding:10px; border:1px solid rgba(255,255,255,.18); border-radius:12px; background:rgba(16,35,121,.14); }
.catalog-stats span { color:rgba(255,255,255,.68); font-size:9px; font-weight:800; }
.catalog-stats strong { min-height:auto; margin:0; color:#fff; font-size:22px; line-height:1.1; }
.catalog-card > p { margin:12px 0 0; color:rgba(255,255,255,.68); font-size:10px; line-height:1.55; }
.week-kind-label { display:inline-flex; width:max-content; margin-top:8px; padding:5px 8px; border:1px solid rgba(255,255,255,.25); border-radius:999px; color:#fff; background:rgba(14,31,109,.22); font-size:9px; font-weight:900; letter-spacing:.02em; }
.week-control { display:grid; grid-template-columns:34px minmax(0,1fr) 34px; gap:8px; align-items:center; margin-top:16px; }
.week-control button { height:34px; border:1px solid rgba(255,255,255,.25); border-radius:10px; color:#fff; background:rgba(255,255,255,.12); cursor:pointer; font-size:22px; }
.week-control button:disabled { opacity:.35; cursor:not-allowed; }
.week-control label { display:grid; gap:3px; }
.week-control small { color:rgba(255,255,255,.64); font-size:9px; }
.week-control select { width:100%; height:34px; padding:0 9px; border:1px solid rgba(255,255,255,.25); border-radius:10px; color:#fff; background:#314fc6; font-weight:800; }
.academic-tabs { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:20px 0 12px; padding:6px; border:1px solid var(--line); border-radius:16px; background:rgba(255,255,255,.82); box-shadow:0 8px 25px rgba(39,55,99,.06); }
.academic-tabs button { display:flex; min-height:44px; align-items:center; justify-content:center; gap:7px; border:0; border-radius:11px; color:#71809c; background:transparent; cursor:pointer; font-size:12px; font-weight:850; }
.academic-tabs button span { font-size:16px; }
.academic-tabs button.is-active { color:#fff; background:var(--brand); box-shadow:0 7px 18px rgba(41,73,211,.22); }
.academic-panel { min-height:380px; padding:24px; border:1px solid var(--line); border-radius:22px; background:rgba(255,255,255,.94); box-shadow:0 16px 40px rgba(39,55,99,.07); }
.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:18px; }
.section-heading span { color:var(--brand); font-size:9px; font-weight:900; letter-spacing:.14em; }
.section-heading h2 { margin:4px 0 0; font-size:21px; }
.section-heading > p { margin:0; color:var(--muted); font-size:11px; }
.day-picker { display:none; gap:7px; overflow:auto; padding-bottom:5px; scrollbar-width:none; }
.day-picker button { min-width:52px; min-height:42px; border:1px solid var(--line); border-radius:11px; color:#6f7b92; background:#fff; font-size:11px; font-weight:800; }
.day-picker button.is-active { border-color:var(--brand); color:#fff; background:var(--brand); }
.schedule-board { display:grid; grid-template-columns:repeat(7,minmax(115px,1fr)); gap:9px; overflow-x:auto; padding-bottom:4px; }
.schedule-day { min-height:270px; padding:10px; border:1px solid #e9edf5; border-radius:14px; background:#f8faff; }
.schedule-day.is-today { border-color:#cad5fb; background:#f4f6ff; }
.schedule-day__head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; padding:0 2px 8px; border-bottom:1px solid #e6eaf3; }
.schedule-day__head strong { font-size:12px; }
.schedule-day__head span { color:#9aa4b6; font-size:9px; }
.course-card { position:relative; display:grid; gap:4px; margin-top:7px; padding:10px 9px 9px 12px; overflow:hidden; border:1px solid #dae3fa; border-radius:11px; background:#edf2ff; }
.course-card::before { position:absolute; inset:0 auto 0 0; width:3px; content:""; background:#5475e8; }
.course-card strong { overflow:hidden; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.course-card span,.course-card small { overflow:hidden; color:#65738e; font-size:9px; line-height:1.4; text-overflow:ellipsis; white-space:nowrap; }
.course-card--green { border-color:#d6eee3; background:#edf9f3; }.course-card--green::before{background:#45a77a}
.course-card--orange { border-color:#f3dfcc; background:#fff6ed; }.course-card--orange::before{background:#eb8b3f}
.course-card--purple { border-color:#e4dbf4; background:#f7f1ff; }.course-card--purple::before{background:#8d63cc}
.course-card--rose { border-color:#f2dbe1; background:#fff2f5; }.course-card--rose::before{background:#d96782}
.course-card--teal { border-color:#d1e9e8; background:#eaf8f7; }.course-card--teal::before{background:#349590}
.day-empty { margin:34px 0 0; color:#a0a9b9; font-size:10px; text-align:center; }
.mobile-schedule { display:none; }
.empty-state { display:grid; justify-items:center; gap:6px; padding:55px 20px; color:#8590a5; text-align:center; }
.empty-state > span { display:grid; width:48px; height:48px; place-items:center; border-radius:15px; color:#536ad1; background:#eef2ff; font-size:20px; }
.empty-state strong { color:#526078; font-size:14px; }.empty-state p{margin:0;font-size:11px}
.notice-card,.privacy-card { display:flex; align-items:flex-start; gap:11px; margin-bottom:16px; padding:13px 14px; border:1px solid #e4e9f7; border-radius:13px; color:#62708c; background:#f7f9ff; font-size:11px; line-height:1.6; }
.notice-card > span { display:grid; width:22px; height:22px; flex:0 0 auto; place-items:center; border-radius:50%; color:#fff; background:#5470dc; font-size:10px; font-weight:900; }
.notice-card p,.privacy-card p { margin:0; }
.major-guide-notice { margin-bottom:14px; }
.major-guide-empty { display:grid; min-height:250px; place-items:center; align-content:center; gap:8px; padding:28px; border:1px dashed #ccd7f4; border-radius:16px; color:#7a879e; background:#fafbff; text-align:center; }
.major-guide-empty > span { display:grid; width:46px; height:46px; place-items:center; border-radius:14px; color:#4966cf; background:#ebf0ff; font-size:20px; }
.major-guide-empty strong { color:#4d5d78; font-size:14px; }.major-guide-empty p{max-width:440px;margin:0;font-size:11px;line-height:1.7}
.major-guide-empty a { margin-top:4px; padding:9px 12px; border:1px solid #cdd9fb; border-radius:10px; color:#3555bd; background:#fff; font-size:10px; font-weight:850; text-decoration:none; }
.major-guide-empty a:hover { border-color:#9cafec; background:#f4f7ff; }
.major-guide-content { display:grid; gap:14px; }
.major-picker { display:grid; gap:6px; max-width:470px; padding:13px; border:1px solid #dfe6f7; border-radius:15px; background:#f8faff; }
.major-picker > span { color:#53627d; font-size:10px; font-weight:850; }
.major-picker select { width:100%; min-height:42px; padding:0 12px; border:1px solid #d7e0f3; border-radius:11px; color:#253758; background:#fff; font-size:13px; font-weight:850; }
.major-picker select:focus { border-color:var(--brand); outline:3px solid rgba(41,73,211,.1); }
.major-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; align-items:stretch; padding:12px; border:1px solid #dfe6f7; border-radius:15px; background:linear-gradient(120deg,#f5f7ff,#fbfcff); }
.major-summary > div { display:grid; gap:2px; padding:4px 7px; }.major-summary span{color:#74819a;font-size:9px;font-weight:800}.major-summary strong{color:#26385d;font-size:22px;line-height:1.2}.major-summary small{color:#7e8ba2;font-size:9px;line-height:1.45}
.curriculum-groups { display:grid; gap:12px; }
.curriculum-term { overflow:hidden; border:1px solid #e1e7f2; border-radius:16px; background:#fff; }
.curriculum-term > header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 15px; border-bottom:1px solid #e7ebf4; background:#fafbfe; }.curriculum-term header>div{display:grid;gap:3px}.curriculum-term header span{color:#7785a2;font-size:9px;font-weight:800}.curriculum-term h3{margin:0;color:#31415f;font-size:15px}.curriculum-term>header>strong{padding:5px 8px;border-radius:999px;color:#536bc8;background:#edf1ff;font-size:10px}
.curriculum-category { display:grid; grid-template-columns:112px minmax(0,1fr); gap:13px; padding:13px 15px; border-top:1px solid #eef1f6; }.curriculum-category:first-of-type{border-top:0}.curriculum-category>div:first-child{display:grid;align-content:start;gap:4px}.curriculum-category>div:first-child strong{color:#45536d;font-size:11px}.curriculum-category>div:first-child span{color:#97a1b3;font-size:9px}
.curriculum-course-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }.curriculum-course{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-height:58px;padding:10px 11px;border:1px solid #e1e7f4;border-radius:10px;color:#485773;background:#f8faff;font-size:10px}.curriculum-course>div{display:grid;gap:4px;min-width:0}.curriculum-course strong{font-size:11px}.curriculum-course p{margin:0;color:#74809a;font-size:9px;line-height:1.5}.curriculum-course span{flex:0 0 auto;padding:2px 5px;border-radius:999px;color:#5d72c9;background:#e9eeff;font-size:8px;font-weight:800}
.schedule-audience-filter { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:-3px 0 14px; padding:9px 11px; border:1px solid #d9e2fb; border-radius:11px; color:#5c6d94; background:#f5f7ff; font-size:10px; line-height:1.5; }.schedule-audience-filter button{flex:0 0 auto;padding:0;border:0;color:#4059bf;background:transparent;cursor:pointer;font-size:10px;font-weight:850}
.exam-list,.calendar-list { display:grid; gap:11px; }
.exam-card { display:grid; grid-template-columns:90px minmax(0,1fr) auto; gap:16px; align-items:center; padding:16px; border:1px solid var(--line); border-radius:15px; }
.exam-card__date { display:grid; gap:3px; padding-right:14px; border-right:1px solid var(--line); }
.exam-card__date strong{font-size:14px}.exam-card__date span{color:var(--muted);font-size:10px}
.exam-card__copy strong{font-size:14px}.exam-card__copy p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.6}
.exam-card__location { padding:7px 10px; border-radius:9px; color:#3156ca; background:#edf2ff; font-size:10px; font-weight:850; }
.calendar-item { display:grid; grid-template-columns:130px 12px minmax(0,1fr); gap:14px; align-items:start; }
.calendar-item__date { padding:10px 12px; border:1px solid #e3e8f5; border-radius:11px; color:#3f55ad; background:#f6f8ff; font-size:11px; font-weight:850; text-align:center; }
.calendar-item__line { position:relative; height:100%; min-height:70px; background:#e5e9f4; }
.calendar-item__line::before { position:absolute; top:15px; left:-4px; width:10px; height:10px; border:3px solid #d9e2ff; border-radius:50%; content:""; background:var(--brand); }
.calendar-item__copy { padding:7px 0 16px; }.calendar-item__copy strong{font-size:13px}.calendar-item__copy p{margin:5px 0 0;color:var(--muted);font-size:10px;line-height:1.65}
.privacy-card { align-items:center; color:#416450; border-color:#d9ebdf; background:#f2faf5; }.privacy-card > span{font-size:20px}.privacy-card strong{display:block;color:#315440;font-size:12px}.privacy-card p{margin-top:3px}
.grade-form { display:grid; grid-template-columns:minmax(180px,1.4fr) minmax(100px,.5fr) minmax(120px,.6fr) auto; gap:10px; align-items:end; }
.grade-form label { display:grid; gap:6px; color:#62708a; font-size:10px; font-weight:850; }
.grade-form input { min-width:0; height:40px; padding:0 11px; border:1px solid #dfe5f0; border-radius:10px; color:var(--ink); background:#fff; }
.grade-form input:focus { border-color:#879ded; outline:3px solid rgba(41,73,211,.1); }
.grade-form button { height:40px; padding:0 17px; border:0; border-radius:10px; color:#fff; background:var(--brand); cursor:pointer; font-size:11px; font-weight:900; }
.grade-results { margin-top:20px; }.grade-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.grade-summary>div{display:grid;gap:5px;padding:14px;border:1px solid #e1e7f3;border-radius:13px;background:#f8faff}.grade-summary span{color:var(--muted);font-size:9px}.grade-summary strong{font-size:22px}
.grade-table-wrap{overflow:auto;margin-top:12px;border:1px solid #e3e8f2;border-radius:13px}.grade-table-wrap table{width:100%;border-collapse:collapse}.grade-table-wrap th,.grade-table-wrap td{padding:10px 12px;border-bottom:1px solid #edf0f6;font-size:10px;text-align:left}.grade-table-wrap th{color:#758198;background:#f8f9fc}.grade-table-wrap tr:last-child td{border-bottom:0}.grade-table-wrap button{border:0;color:#b44e60;background:transparent;cursor:pointer;font-weight:800}
.clear-grades{margin-top:10px;padding:7px 0;border:0;color:#a64f5e;background:transparent;cursor:pointer;font-size:10px;font-weight:800}
.academic-unavailable { display:grid; min-height:430px; place-items:center; align-content:center; gap:8px; margin-top:20px; padding:30px; border:1px solid var(--line); border-radius:22px; background:#fff; text-align:center; }.academic-unavailable>span{font-size:38px;color:#7183d9}.academic-unavailable h2{margin:5px 0 0}.academic-unavailable p{margin:0;color:var(--muted);font-size:12px}.academic-unavailable a{margin-top:10px;padding:10px 15px;border-radius:10px;color:#fff;background:var(--brand);text-decoration:none;font-size:11px;font-weight:850}
.academic-footer { display:flex; justify-content:space-between; gap:16px; padding:16px 4px 0; color:#8792a6; font-size:10px; }.academic-footer__copy{display:grid;gap:5px}.academic-footer p{margin:0}.academic-footer__copy .filing-record{text-align:left}.academic-footer a{color:#5368c8;text-decoration:none;font-weight:800}
@media (max-width:760px){
  .academic-shell{width:min(100% - 20px,620px);padding-top:10px;padding-bottom:104px}.academic-topbar{min-height:46px}.topbar-status{padding:6px 8px}
  .academic-hero{grid-template-columns:1fr;padding:21px;border-radius:20px}.academic-hero h1{font-size:32px}.semester-card{padding:14px;border-radius:16px}.semester-card>strong{min-height:auto;font-size:14px}
  .catalog-evidence { grid-template-columns:1fr 1fr; }
  .academic-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:sticky;top:6px;z-index:8;gap:3px;margin-top:12px;padding:4px;overflow:visible;border-radius:14px;backdrop-filter:blur(14px)}.academic-tabs button{min-width:0;min-height:43px;gap:3px;font-size:10px}.academic-tabs button span{font-size:14px}
  .academic-panel{padding:16px;border-radius:18px}.section-heading{display:grid;align-items:flex-start;gap:5px}.section-heading>p{max-width:none;text-align:left}
  .major-summary{grid-template-columns:1fr 1fr}.curriculum-category{grid-template-columns:1fr;gap:8px;padding:12px}.curriculum-category>div:first-child{grid-template-columns:1fr auto;align-items:center}.curriculum-course-list{grid-template-columns:1fr;gap:7px}.schedule-audience-filter{align-items:flex-start;flex-direction:column;gap:5px}.schedule-audience-filter button{padding:3px 0}
  .day-picker{display:flex}.schedule-board{display:none}.mobile-schedule{display:grid;gap:9px;margin-top:8px}.mobile-schedule .course-card{margin:0;padding:13px 12px 12px 15px}.mobile-schedule .course-card strong{font-size:13px}.mobile-schedule .course-card span,.mobile-schedule .course-card small{font-size:10px}
  .exam-card{grid-template-columns:72px minmax(0,1fr);gap:11px;padding:13px}.exam-card__location{grid-column:2;justify-self:start}.calendar-item{grid-template-columns:88px 10px minmax(0,1fr);gap:10px}.calendar-item__date{padding:9px 6px;font-size:9px}
  .grade-form{grid-template-columns:1fr 1fr}.grade-form label:first-child{grid-column:1/-1}.grade-form button{grid-column:1/-1}.grade-summary{grid-template-columns:1fr 1fr}.grade-summary>div:last-child{grid-column:1/-1}.academic-footer{align-items:flex-start;flex-direction:column;gap:6px}
}
@media (max-width:390px){.academic-tabs button{font-size:9px}.academic-tabs button span{display:none}.academic-hero{padding:18px}.academic-panel{padding:14px}.section-heading h2{font-size:18px}}
