:root{color:#172033;background:#f5f7fb;font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}html{-webkit-text-size-adjust:100%}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,textarea,select{font:inherit}button,input,textarea,select,summary,[role=button]{-webkit-tap-highlight-color:rgba(8,103,242,.16);touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.62}.app-shell{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100vh}.auth-page{min-height:100vh;display:flex;flex-direction:column;background:#eef3f9;overflow-y:auto}.auth-shell{flex:1;display:flex;flex-direction:column;padding-bottom:80px}.auth-topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 24px 16px}.auth-kicker{display:block;margin-bottom:4px;color:#637083;font-size:13px;font-weight:700}.auth-topbar h1{margin:0;font-size:22px;line-height:1.2;color:#172033}.auth-actions{display:flex;gap:8px}.auth-icon{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:999px;color:#1455d9;background:transparent;cursor:pointer}.auth-icon:hover{background:#e8f1ff}.auth-icon.active{background:#dce8ff}.auth-content{width:100%;max-width:480px;margin:0 auto;padding:0 16px}.auth-card{background:#fff;border:1px solid #dbe3ef;border-radius:16px;box-shadow:0 2px 16px #0000000f;overflow:hidden}.auth-bottom{display:flex;justify-content:center;gap:10px;padding:14px 18px 22px;margin-top:auto}.auth-bottom-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:160px;min-height:48px;border:0;border-radius:10px;color:#344054;background:#f0f3f8;font-weight:700;font-size:14px;cursor:pointer;transition:background .2s ease}.auth-card .result-box{margin:0 22px 16px;min-height:44px;max-height:180px;overflow-y:auto;font-size:12px;padding:10px;border-radius:8px;background:#fbfcfe;border:1px solid #e3e8f0;line-height:1.6}.auth-form{display:grid;gap:14px;padding:20px 22px 0}.material-field{display:flex;align-items:center;gap:10px;min-height:46px;padding:0 12px;border:1.5px solid #d6deea;border-radius:10px;background:#f9fafc;transition:border-color .2s ease,box-shadow .2s ease}.material-field span{font-weight:600;color:#344054;white-space:nowrap;min-width:88px;font-size:14px}.material-field input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#172033;font-size:14px}.remember-row{display:inline-flex;align-items:center;gap:8px;min-height:28px;color:#526071;font-size:13px;font-weight:600;-webkit-user-select:none;user-select:none}.remember-row input{width:16px;height:16px;margin:0;accent-color:#1455d9}.compact-remember{margin-top:-4px}.auth-login-row{padding:16px 22px 0}.large-login-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;border:0;border-radius:10px;color:#fff;background:#1455d9;font-size:15px;font-weight:700;cursor:pointer;transition:opacity .2s ease}.large-login-button:hover:not(:disabled){opacity:.92}.large-login-button:active:not(:disabled){transform:scale(.99)}.auth-bottom{position:sticky;bottom:0;display:flex;justify-content:center;gap:10px;padding:10px 16px 14px;background:#eef3f9eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid rgba(214,222,234,.6);z-index:2}.auth-bottom-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:120px;min-height:40px;padding:0 16px;border:0;border-radius:8px;color:#344054;background:#f0f3f8;font-weight:700;font-size:13px;cursor:pointer;transition:background .2s ease}.auth-bottom-button:hover{background:#e3e8f0}.auth-bottom-button.secondary{color:#1e5bbf;background:#fff;border:1px solid #d6deea}.auth-bottom-button.secondary:hover{background:#f0f4ff}.material-field{display:flex;align-items:center;gap:12px;min-height:50px;padding:0 16px;border:1.5px solid #d6deea;border-radius:10px;background:#f9fafc;transition:border-color .2s ease,box-shadow .2s ease}.material-field:focus-within{border-color:#1e5bbf;box-shadow:0 0 0 3px #1e5bbf14;background:#fff}.material-field span{font-weight:600;color:#344054;white-space:nowrap;min-width:72px}.material-field input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:#172033;font-size:15px}.material-field input::placeholder{color:#98a2b3}.show-pwd-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid #d6deea;border-radius:6px;color:#5a6d86;background:#fff;font-size:12px;font-weight:600;cursor:pointer;flex-shrink:0;white-space:nowrap;line-height:1}.show-pwd-btn:hover{color:#1e5bbf;border-color:#1e5bbf;background:#f0f4ff}.field-icon-button{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:999px;color:#667085;background:transparent;cursor:pointer;flex-shrink:0}.field-icon-button:hover{color:#1e5bbf;background:#f0f4ff}.captcha-image-button{display:grid;place-items:center;width:88px;height:32px;padding:0;border:1px solid #d6deea;border-radius:6px;overflow:hidden;background:#fff;cursor:pointer;flex-shrink:0}.captcha-image-button:hover{border-color:#1e5bbf}.captcha-image-button img{width:100%;height:100%;object-fit:cover}.ocr-button{display:inline-flex;align-items:center;justify-content:center;padding:0 10px;min-height:32px;border:1px solid #1455d9;border-radius:6px;color:#1455d9;background:#e8f1ff;font-size:12px;font-weight:600;cursor:pointer;flex-shrink:0;white-space:nowrap}.ocr-button:hover:not(:disabled){background:#dce8ff}.ocr-button:disabled{opacity:.6;cursor:not-allowed}.semester-control{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:8px 12px;border-radius:8px;background:#f8faff;border:1px solid #e3edff}.semester-control div{display:grid;gap:2px}.semester-control strong{color:#172033;font-size:13px}.semester-control span{color:#667085;font-size:12px}.compact-semester{border:1px solid #d6deea}.switch{position:relative;display:inline-grid;width:52px;height:32px}.switch input{opacity:0}.switch span{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#c8d2df;transition:background .18s ease}.switch span:after{position:absolute;top:4px;left:4px;width:24px;height:24px;content:"";border-radius:999px;background:#fff;box-shadow:0 2px 8px #0f172a33;transition:transform .18s ease}.switch input:checked+span{background:#1455d9}.switch input:checked+span:after{transform:translate(20px)}.auth-login-row{padding:0 32px 28px}.large-login-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:50px;border:0;border-radius:10px;color:#fff;background:linear-gradient(135deg,#1a3a8a,#1e5bbf);font-size:16px;font-weight:700;cursor:pointer;transition:opacity .2s ease,transform .1s ease}.large-login-button:hover:not(:disabled){opacity:.92;transform:translateY(-1px)}.large-login-button:active:not(:disabled){transform:translateY(0)}.info-row{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:10px 0;border-bottom:1px solid #edf2f7}.info-row:last-child{border-bottom:0}.info-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:999px;color:#1e5bbf;background:#e8f1ff}.info-row strong{display:block;font-size:14px;color:#172033}.info-row span{display:block;margin-top:3px;color:#667085;font-size:13px;line-height:1.5}.sidebar{display:flex;flex-direction:column;gap:26px;padding:24px;background:#fff;border-right:1px solid #dde3ec}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px}.brand-mark img{display:block;width:100%;height:100%}.brand strong,.brand span{display:block}.brand span{margin-top:4px;color:#667085;font-size:13px}.nav-list{display:grid;gap:8px}.nav-button,.ghost-button,.primary-button,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:8px;min-height:42px}.nav-button{justify-content:flex-start;padding:0 12px;background:transparent;color:#465165}.nav-button svg{width:18px;height:18px}.nav-button.active{background:#e8f1ff;color:#0b5ed7;font-weight:700}.sidebar-footer{margin-top:auto}.ghost-button{width:100%;background:#f0f3f8;color:#1f2937}.workspace{min-width:0;padding:28px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.topbar p{margin:0 0 6px;color:#667085}.topbar h1{margin:0;font-size:30px;line-height:1.2}.topbar-actions{display:flex;gap:10px}.icon-button,.primary-button{border:1px solid #d6deea;background:#fff;color:#1f2937;padding:0 13px}.primary-button{background:#1455d9;border-color:#1455d9;color:#fff;font-weight:700}.hidden{display:none}.back-button{display:inline-flex;align-items:center;gap:8px;min-height:38px;margin-bottom:14px;border:1px solid #d6deea;border-radius:8px;padding:0 12px;color:#1f2937;background:#fff;font-weight:700}.content-grid{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(420px,1.28fr);gap:18px;align-items:start}.schedule-view-wrapper{width:100%}.panel-head-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.schedule-view-toggle{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border:1px solid #d0d5dd;border-radius:8px;background:#f8fafc;color:#0f766e;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s ease}.schedule-view-toggle:hover{background:#eaf4f4;border-color:#0f766e;box-shadow:0 2px 6px #0f766e1f}.schedule-view-toggle svg{flex-shrink:0}.timetable-inner{display:grid;grid-template-columns:88px repeat(7,minmax(80px,1fr));border:1px solid #e3e8f0;border-radius:8px;overflow-x:auto}.timetable-inner .corner-cell,.timetable-inner .day-cell,.timetable-inner .time-cell,.timetable-inner .slot-cell{min-height:0;border-right:1px solid #eef1f6;border-bottom:1px solid #eef1f6;padding:4px}.timetable-inner .day-cell{display:grid;place-items:center;min-height:32px;background:#f8fafc;font-weight:700;font-size:13px}.timetable-inner .corner-cell{min-height:32px;background:#f8fafc}.timetable-inner .time-cell{display:grid;align-content:center;gap:2px;padding:6px 8px;background:#fbfcfe;font-size:12px;white-space:nowrap}.timetable-inner .time-cell strong{font-size:12px}.timetable-inner .time-cell span{color:#667085;font-size:11px}.timetable-inner .slot-cell{display:grid;align-content:start;gap:3px;padding:3px}.timetable-inner .course-card{min-height:0;padding:6px 8px;gap:3px;font-size:12px;border-left-width:3px;border-radius:6px}.timetable-inner .course-card strong{font-size:12px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.timetable-inner .course-card span{font-size:11px}.timetable-inner .course-card small{font-size:10px}.services-layout{display:grid;width:100%}.panel{background:#fff;border:1px solid #dde3ec;border-radius:8px;padding:18px;min-width:0}.panel-wide{grid-column:span 1}.panel-full{grid-column:1 / -1}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.panel h2{margin:4px 0 0;font-size:20px}.panel-subtitle{margin:6px 0 0;color:#667085;font-size:13px;line-height:1.4}.eyebrow{color:#667085;font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase}.week-switcher{display:grid;grid-template-columns:auto 48px auto;gap:8px;align-items:center}.week-switcher button,.week-switcher input{height:36px;border:1px solid #d6deea;border-radius:8px;background:#fff;text-align:center}.week-switcher button{min-width:74px;padding:0 10px;white-space:nowrap}.week-switcher input{width:48px}.segmented-control{display:inline-flex;gap:4px;padding:4px;border:1px solid #d6deea;border-radius:8px;background:#f8fafc}.segmented-control button{min-height:30px;border:0;border-radius:6px;padding:0 10px;color:#465165;background:transparent;font-weight:700}.segmented-control button.active{color:#0b5ed7;background:#fff;box-shadow:0 1px 2px #10182814}.timetable{display:grid;grid-template-columns:80px repeat(7,minmax(108px,1fr));overflow-x:auto;border:1px solid #e3e8f0;border-radius:8px}.corner-cell,.day-cell,.time-cell,.slot-cell{min-height:92px;border-right:1px solid #e3e8f0;border-bottom:1px solid #e3e8f0}.day-cell{display:grid;place-items:center;min-height:44px;background:#f8fafc;font-weight:800}.corner-cell{min-height:44px;background:#f8fafc}.time-cell{display:grid;align-content:center;gap:4px;padding:10px;background:#fbfcfe}.time-cell span{color:#667085;font-size:13px}.slot-cell{display:grid;align-content:start;gap:6px;padding:7px}.course-card{display:grid;width:100%;text-align:left;gap:6px;min-height:78px;border:0;padding:10px;border-radius:8px;background:#eaf4f4;border-left:4px solid #0f766e;cursor:pointer}.course-card.event{background:#fff3e6;border-left-color:#dc6803}.course-card.conflict{border:1px solid #f04438;border-left:4px solid #d92d20;background:#fff1f0}.course-card:hover,.clickable-item:hover,.term-course-item:hover{box-shadow:0 8px 22px #10182814;transform:translateY(-1px)}.empty-state{padding:14px;border:1px dashed #d6deea;border-radius:8px;color:#667085;background:#fbfcfe;text-align:center}.course-card strong,.compact-item strong,.service-item strong{line-height:1.25}.course-card span,.course-card small,.compact-item span,.compact-item small,.service-item span{color:#667085;line-height:1.35}.stack-list{display:grid;gap:10px}.compact-item{display:grid;gap:6px;padding:12px;border:1px solid #e3e8f0;border-radius:8px}.clickable-item{width:100%;text-align:left;background:#fff;cursor:pointer}.metric-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}.term-metrics{max-width:420px}.metric-card{display:grid;gap:6px;padding:14px;border-radius:8px;background:#f3f7ff}.metric-card span{color:#667085}.metric-card strong{font-size:28px}.agenda-layout{display:grid;grid-template-columns:minmax(320px,1fr) minmax(320px,.9fr);gap:18px;align-items:start}.focus-card-panel{display:grid;gap:14px;border-color:#bfdbfe;background:#f8fbff}.focus-card-panel.is-clickable{cursor:pointer}.focus-card-panel.is-clickable:hover{box-shadow:0 14px 32px #1018281a;transform:translateY(-1px)}.focus-card-panel.low{border-color:#fecdca;background:#fff7f7}.focus-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.focus-card-head h2{margin:4px 0 0}.focus-balance{display:grid;gap:4px}.focus-balance span,.focus-balance small,.focus-empty-card span,.focus-bill-list small{color:#667085}.focus-balance strong{font-size:38px;letter-spacing:0}.focus-card-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.focus-actions{display:flex;gap:10px;flex-wrap:wrap}.focus-card-note{padding:10px 12px;border:1px solid #d8e2ef;border-radius:8px;color:#475467;background:#f8fbff;font-size:14px}.focus-empty-card{display:grid;gap:6px;padding:14px;border-radius:8px;background:#fff;border:1px solid #e3e8f0}.focus-bill-list{display:grid;gap:8px}.focus-bill-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:10px 12px;border-radius:8px;background:#fff;border:1px solid #e3e8f0}.focus-bill-list span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.focus-bill-list strong{color:#b42318}.focus-bill-list strong.income{color:#047857}.focus-bill-list small{grid-column:1 / -1}.today-panel{display:grid;gap:14px;min-height:300px}.today-panel.has-important{border-color:#fecdca;background:snow}.today-list{display:grid;gap:10px;align-content:start}.focus-right-panel{gap:0;overflow:hidden}.focus-right-panel>.panel-head{padding-bottom:12px;border-bottom:1px solid #e3e8f0}.focus-right-panel>.today-list,.focus-right-panel>.empty-state{padding:12px 0;border-bottom:1px solid #e3e8f0}.focus-section{display:grid;gap:10px;padding:14px 0;border-bottom:1px solid #f0f3f7}.focus-section:last-of-type{border-bottom:none}.focus-section-head{display:flex;align-items:center;gap:8px;color:#475467}.focus-section-head h3{margin:0;font-size:15px;font-weight:700;flex:1}.focus-section-head span{font-size:13px;color:#667085;white-space:nowrap}.focus-section-head svg{color:#0f766e;flex-shrink:0}.focus-divider{height:1px;background:#e3e8f0;margin:0}.focus-timetable-panel{gap:0;overflow:hidden}.focus-toggle-bar{display:flex;justify-content:flex-end;padding:10px 14px;border-bottom:1px solid #e3e8f0}.focus-toggle-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid #d0d5dd;border-radius:20px;background:#f8fafc;color:#0f766e;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s ease}.focus-toggle-btn:hover{background:#eaf4f4;border-color:#0f766e;box-shadow:0 2px 6px #0f766e1f}.focus-toggle-btn svg{animation:bounce-toggle 1.5s ease-in-out infinite}@keyframes bounce-toggle{0%,to{transform:translateY(0)}50%{transform:translateY(2px)}}.focus-type-counts{display:flex;flex-wrap:wrap;gap:6px}.focus-type-tag{display:inline-block;padding:3px 10px;border-radius:12px;background:#f0f3f7;color:#475467;font-size:12px;font-weight:500}.mini-timetable{display:grid;grid-template-columns:42px repeat(7,minmax(0,1fr));overflow-x:auto;border:1px solid #e3e8f0;border-radius:6px;font-size:10px}.mini-timetable .corner-cell,.mini-timetable .day-cell,.mini-timetable .time-cell,.mini-timetable .slot-cell{min-height:36px;border-right:1px solid #eef1f6;border-bottom:1px solid #eef1f6;padding:2px}.mini-timetable .day-cell{display:grid;place-items:center;min-height:24px;background:#f8fafc;font-weight:700;font-size:10px}.mini-timetable .corner-cell{min-height:24px;background:#f8fafc}.mini-timetable .time-cell{display:grid;align-content:center;gap:1px;padding:2px 4px;background:#fbfcfe;font-size:9px}.mini-timetable .time-cell strong{font-size:9px}.mini-timetable .time-cell span{color:#667085;font-size:8px}.mini-timetable .slot-cell{display:grid;align-content:start;gap:2px;padding:2px}.mini-timetable .course-card{min-height:30px;padding:3px 4px;gap:1px;font-size:9px;border-left-width:2px;border-radius:4px}.mini-timetable .course-card strong{font-size:9px;line-height:1.15;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.mini-timetable .course-card span{font-size:8px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}.mini-timetable .course-card small{display:none}.agenda-alert{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:132px}.agenda-important-alert{border-color:#fecdca;background:#fff7f7}.agenda-alert h2{margin:4px 0 8px;font-size:26px}.agenda-alert p{margin:0;color:#667085;line-height:1.45}.agenda-countdown{display:grid;place-items:center;min-width:116px;min-height:78px;border-radius:8px;padding:12px;color:#fff;background:#b42318;font-size:22px;text-align:center}.agenda-summary-panel .metric-row{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:0}.agenda-pinned-panel{border-color:#fecdca;background:snow}.agenda-list{display:grid;gap:10px}.agenda-item{display:grid;grid-template-columns:148px minmax(0,1fr);gap:14px;width:100%;border:1px solid #e3e8f0;border-radius:8px;padding:14px;text-align:left;background:#fff}.agenda-item.compact{grid-template-columns:108px minmax(0,1fr);padding:12px}.agenda-item.important{border-color:#fecdca;border-left:5px solid #b42318;background:#fff7f7}.agenda-date{display:grid;align-content:start;gap:6px}.agenda-date strong,.agenda-main strong{color:#172033;line-height:1.25}.agenda-date span,.agenda-main span,.agenda-main small{color:#667085;line-height:1.4}.agenda-main{display:grid;gap:6px;min-width:0}.agenda-title-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.agenda-badge,.agenda-days-left{display:inline-flex;align-items:center;min-height:26px;border-radius:8px;padding:0 9px;font-size:12px;font-weight:800;white-space:nowrap}.agenda-badge{color:#0b5ed7;background:#eaf2ff}.agenda-badge.important,.agenda-days-left{color:#b42318;background:#fee4e2}.agenda-days-left{border:1px solid #fecdca}.campus-detail-page{display:grid;gap:16px}.campus-card-hero{align-items:center}.campus-card-hero.low{border-color:#fecdca;background:#fff7f7}.campus-balance-block{display:grid;justify-items:end;gap:4px;color:#667085}.campus-balance-block strong{color:#172033;font-size:40px}.campus-detail-layout{display:grid;grid-template-columns:minmax(520px,1.1fr) minmax(360px,.9fr);gap:18px;align-items:start}.campus-card-actions-panel,.campus-bills-panel{display:grid;gap:14px}.campus-card-metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin:0}.detail-actions{display:flex;gap:10px;flex-wrap:wrap}.life-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.life-service-card{display:grid;gap:8px;min-height:118px;border:1px solid #e3e8f0;border-radius:8px;padding:12px;text-align:left;color:#172033;background:#fff;cursor:pointer}.life-service-card:hover,.life-service-card.active{border-color:#0b5ed7;background:#f3f7ff}.life-service-card svg{color:#0b5ed7}.life-service-card strong{line-height:1.25}.life-service-card span,.life-service-card small{color:#667085;line-height:1.35}.fee-form{display:grid;gap:12px;border:1px solid #e3e8f0;border-radius:8px;padding:14px;background:#fbfcfe}.fee-form h3{margin:4px 0;font-size:20px}.fee-form p{margin:0;color:#667085;line-height:1.45}.fee-form label{display:grid;gap:6px;color:#465165;font-weight:700}.fee-form input{min-height:42px;border:1px solid #d6deea;border-radius:8px;padding:0 12px;color:#172033;background:#fff}.fee-pay-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.fee-status{padding:10px 12px;border-radius:8px;color:#475467;background:#eef4ff;line-height:1.4}.fee-result{display:grid;gap:8px}.campus-bill-list{display:grid;gap:10px}.campus-bill-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start;border:1px solid #e3e8f0;border-radius:8px;padding:12px;background:#fff}.campus-bill-list article div{display:grid;gap:4px;min-width:0}.campus-bill-list strong:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campus-bill-list span{color:#667085;line-height:1.35}.campus-bill-list article>strong{color:#b42318;white-space:nowrap}.campus-bill-list article>strong.income{color:#047857}.select-course-layout{display:grid;grid-template-columns:minmax(260px,.42fr) minmax(520px,1fr);gap:18px;align-items:start}.recommendation-layout{grid-template-columns:minmax(0,1fr)}.recommendation-panel{display:grid;gap:16px}.recommendation-head{gap:18px}.recommendation-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.recommendation-actions button{min-height:42px}.recommendation-status{display:flex;align-items:center;justify-content:space-between;gap:12px}.course-search-view{display:grid;gap:16px}.course-search-form .course-search-box{display:flex;align-items:center;gap:10px;border:1px solid #d6deea;border-radius:8px;padding:6px 10px;background:#fff}.course-search-form .course-search-box input{flex:1;border:0;outline:none;background:transparent;font-size:15px;min-width:0}.course-search-form .course-search-box button{flex-shrink:0}.course-search-form .course-search-box svg{color:#667085;flex-shrink:0}.program-tree{display:grid;gap:10px}.program-node{border:1px solid #e3e8f0;border-radius:8px;overflow:hidden}.program-node-header{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;border:none;padding:14px 16px;background:#f8fafc;text-align:left;cursor:pointer;transition:background .15s}.program-node-header:hover{background:#eef2f7}.program-node-title{min-width:0}.program-node-title strong{display:block;font-size:15px;color:#172033}.program-node-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;font-size:13px}.program-node-require{color:#b42318;font-weight:600}.program-node-total{color:#667085}.program-node-arrow{flex-shrink:0;color:#667085;transition:transform .2s}.program-node-body{padding:0 16px 16px;border-top:1px solid #eef1f6}.program-node-remark{margin:14px 0 10px;padding:10px 14px;background:#fffdf0;border-left:3px solid #dc6803;border-radius:4px;font-size:13px;color:#475467;line-height:1.55}.program-sub-nodes{display:grid;gap:8px;margin:12px 0}.program-course-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.program-elective-badge{padding:1px 8px;border-radius:10px;background:#fef3c7;color:#92400e;font-size:11px;font-weight:600;flex-shrink:0}.program-course-remark{color:#667085;font-style:italic}.search-result-info p{color:#667085;font-size:14px;margin:0 0 12px}.search-result-info strong{color:#0f766e}.recommendation-status span{min-width:0;overflow-wrap:anywhere}.recommendation-text-view{display:grid;gap:12px}.recommendation-text-view h3,.recommendation-group-title h3{margin:0;color:#172033}.recommendation-text-view p{margin:4px 0 0;color:#667085}.recommendation-warning{display:grid;gap:4px;border:1px solid #fedf89;border-radius:8px;padding:10px 12px;color:#7a2e0e;background:#fffbeb}.recommendation-warning span{color:#8a4b12;line-height:1.45;overflow-wrap:anywhere}.recommendation-textarea{width:100%;min-height:520px;border:1px solid #d8e2ef;border-radius:8px;padding:14px;color:#172033;background:#fbfcfe;font-family:Cascadia Mono,Consolas,monospace;line-height:1.55;resize:vertical}.recommendation-textarea.compact{min-height:220px}.recommendation-groups{display:grid;gap:16px}.recommendation-type-tabs{display:flex;flex-wrap:wrap;gap:8px}.recommendation-subtype-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid #e3e8f0;border-radius:8px;background:#fbfcfe}.recommendation-type-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:34px;border:1px solid #d6deea;border-radius:8px;padding:0 12px;color:#344054;background:#fff;font-weight:700}.recommendation-subtype-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:32px;max-width:100%;border:1px solid #d6deea;border-radius:8px;padding:0 10px;color:#475467;background:#fff;font-size:13px;font-weight:700}.recommendation-type-tabs button.active{border-color:#0b5ed7;color:#0b5ed7;background:#eaf2ff}.recommendation-subtype-tabs button.active{border-color:#0f766e;color:#0f766e;background:#ecfdf5}.recommendation-subtype-tabs button{overflow-wrap:anywhere}.recommendation-type-tabs strong{color:#0b5ed7}.recommendation-subtype-tabs strong{color:#0f766e}.recommendation-group{display:grid;gap:10px}.recommendation-group.compact{gap:8px}.recommendation-group-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:4px}.recommendation-group-title span{color:#667085;font-weight:700;white-space:nowrap}.recommendation-secondary-note{margin:-4px 0 0;color:#667085;line-height:1.45;overflow-wrap:anywhere}.recommendation-course-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:12px}.recommendation-course-card,.program-course-card{border:1px solid #d8e2ef;border-radius:8px;background:#fff}.recommendation-course-card{display:grid;gap:12px;padding:14px}.clickable-recommendation{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.clickable-recommendation:hover,.clickable-recommendation:focus-visible{border-color:#84adff;box-shadow:0 8px 22px #10182814;transform:translateY(-1px);outline:0}.recommendation-course-main{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.recommendation-course-main>div,.program-course-card{display:grid;gap:6px;min-width:0}.recommendation-course-card strong,.program-course-card strong{color:#172033;line-height:1.25}.recommendation-course-card span,.recommendation-course-card p,.recommendation-course-card small,.program-course-card span,.program-course-card small{color:#667085;line-height:1.45}.recommendation-course-card p{margin:0;overflow-wrap:anywhere}.course-offering-list,.program-course-grid{display:grid;gap:8px}.program-course-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.program-course-card{padding:12px}.course-offering-card{display:grid;gap:4px;border:1px solid #edf1f7;border-radius:8px;padding:10px 12px;background:#f8fbff}.course-offering-card strong{color:#172033}.course-offering-card small{overflow-wrap:anywhere}.recommendation-footnote{justify-self:start;color:#0f766e;font-size:13px;font-weight:700}.recommendation-detail,.next-schedule-view{display:grid;gap:16px}.recommendation-detail-toolbar,.recommendation-detail-hero,.recommendation-offering-head,.next-schedule-head,.next-schedule-actions,.simulation-meeting-row,.simulation-roster-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.recommendation-detail-hero{padding:16px;border:1px solid #d8e2ef;border-radius:8px;background:#f8fbff}.recommendation-detail-hero h3,.next-schedule-head h3{margin:4px 0 6px;color:#172033;font-size:24px}.recommendation-detail-hero p,.recommendation-detail-meta span,.recommendation-offering-head span,.simulation-meeting-row span,.simulation-meeting-row small,.simulation-roster-row span{margin:0;color:#667085;line-height:1.45}.recommendation-detail-meta{display:grid;justify-items:end;gap:4px;white-space:nowrap}.recommendation-offering-groups,.simulation-meeting-list,.simulation-roster{display:grid;gap:10px}.recommendation-offering-detail{display:grid;gap:12px;padding:14px 0;border-top:1px solid #e3e8f0}.recommendation-offering-head>div,.simulation-meeting-row>div,.simulation-roster-row>div{display:grid;gap:4px;min-width:0}.recommendation-offering-actions{display:flex!important;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px!important}.simulation-roster-meetings{display:grid;gap:2px;margin-top:4px}.schedule-course-roster{display:grid;gap:12px;padding-top:16px;border-top:1px solid #d8e2ef}.schedule-course-roster-head,.schedule-course-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.schedule-course-roster-head h4{margin:3px 0 0;font-size:20px}.schedule-course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.schedule-course-row{padding:12px;border:1px solid #d8e2ef;border-radius:8px;background:#fff}.schedule-course-row>div{display:grid;min-width:0;gap:3px}.schedule-course-row span,.schedule-course-row small{color:#667085;overflow-wrap:anywhere}.simulation-meeting-row,.simulation-roster-row{padding:12px;border:1px solid #d8e2ef;border-radius:8px;background:#fff}.simulation-meeting-row.conflict,.simulation-roster-row.conflict{border-color:#f04438;background:#fff1f0}.simulation-meeting-row.conflict small,.simulation-roster-row.conflict strong{color:#b42318}.next-schedule-head{align-items:flex-start}.next-schedule-actions{flex-wrap:wrap;justify-content:flex-end}.simulation-conflict-alert{padding:12px 14px;border:1px solid #f04438;border-radius:8px;color:#b42318;background:#fff1f0;font-weight:700}.selection-limit-alert{padding:12px 14px;border:1px solid #f79009;border-radius:8px;color:#9a3412;background:#fffaeb;font-weight:700}.ai-planning-note,.ai-import-note{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid #99d5cf;border-radius:8px;color:#134e4a;background:#f0fdfa}.ai-planning-note>div,.ai-import-note>div{display:grid;flex:1;gap:3px;min-width:0}.ai-planning-note span,.ai-import-note span{color:#475467;line-height:1.5}.simulation-roster-row.pending-drop{border-color:#f79009;background:#fffaeb}.simulation-roster-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:0 0 auto}.pending-add-tag{color:#075985;background:#e0f2fe}.pending-drop-tag{color:#9a3412;background:#ffedd5}.simulation-roster-row.file-imported{border-color:#7dd3fc;background:#f0f9ff}.file-import-tag{color:#075985;background:#e0f2fe}.selection-submit-button{background:#087f5b}.selection-commit-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:24px;background:#0f172a8f}.selection-commit-dialog{width:min(760px,100%);max-height:min(820px,calc(100vh - 48px));display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid #cbd5e1;border-radius:8px;background:#fff;box-shadow:0 24px 64px #0f172a3d}.selection-commit-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px;border-bottom:1px solid #d8e2ef}.selection-commit-head h3{margin:4px 0;font-size:24px}.selection-commit-head p{margin:0;color:#667085}.selection-commit-scroll{min-height:240px;overflow-y:auto;overscroll-behavior:contain;padding:18px 20px 24px}.selection-commit-summary,.selection-submit-notice,.selection-result-alert,.selection-final-confirm,.selection-scroll-hint{display:grid;gap:5px;padding:12px 14px;border:1px solid #d8e2ef;border-radius:8px;color:#475467;background:#f8fafc}.selection-commit-summary strong,.selection-submit-notice strong,.selection-final-confirm strong{color:#172033}.selection-commit-list{display:grid;gap:10px;margin:14px 0}.selection-commit-item{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px;padding:13px;border:1px solid #d8e2ef;border-radius:8px;background:#fff}.selection-commit-item>div{display:grid;gap:3px;min-width:0}.selection-commit-item span,.selection-commit-item small{color:#667085;overflow-wrap:anywhere}.selection-commit-item.drop{border-left:4px solid #f79009}.selection-commit-item.add{border-left:4px solid #0ea5e9}.selection-commit-item.unavailable{opacity:.74;background:#f2f4f7}.selection-commit-item.success{grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);border-color:#6ce9a6;background:#ecfdf3}.selection-commit-item.failed{grid-template-columns:minmax(0,1fr) minmax(180px,.7fr);border-color:#fda29b;background:#fff1f0}.selection-unavailable-reason{color:#b42318!important;font-weight:700}.selection-submit-notice{border-color:#f79009;background:#fffaeb}.selection-result-alert{border-color:#087f5b;color:#065f46;background:#ecfdf3;font-weight:700}.selection-final-confirm{margin-top:14px;border-color:#087f5b;background:#f0fdf4}.selection-final-confirm>div{display:flex;justify-content:flex-end;gap:10px}.selection-scroll-hint{margin-top:14px;text-align:center;border-style:dashed}.schedule-import-dialog{width:min(900px,100%)}.schedule-import-scroll{display:grid;gap:16px}.schedule-format-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.schedule-format-grid section,.schedule-format-example{display:grid;align-content:start;gap:6px;padding:12px;border:1px solid #d8e2ef;border-radius:8px;background:#f8fafc}.schedule-format-grid span,.schedule-format-example span{color:#667085;line-height:1.45;overflow-wrap:anywhere}.schedule-format-example>code{display:block;overflow-x:auto;padding:9px 10px;border:1px solid #e2e8f0;border-radius:6px;color:#0f172a;background:#fff;white-space:nowrap}.schedule-template-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.schedule-import-errors,.schedule-import-report{display:grid;gap:7px;padding:13px 14px;border:1px solid #fda29b;border-radius:8px;color:#b42318;background:#fff1f0}.schedule-import-report{border-color:#6ce9a6;color:#065f46;background:#ecfdf3}.schedule-import-report span,.schedule-import-report small{color:#344054}.schedule-import-report details{display:grid;gap:5px;padding-top:4px}.schedule-import-report details small{display:block;margin-top:5px}.schedule-import-report .primary-button{justify-self:end}.simulation-timetable{width:100%}.danger-button{color:#b42318;border-color:#fda29b}.select-turn-panel,.select-lessons-panel,.selected-lessons-panel{display:grid;gap:14px}.select-turn-panel{position:sticky;top:18px}.selected-lessons-panel{grid-column:1 / -1}.manual-turn-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}.manual-turn-row input{min-height:42px;border:1px solid #d6deea;border-radius:8px;padding:0 12px;color:#172033;background:#fff}.select-turn-list,.select-lesson-list,.selected-lesson-list{display:grid;gap:10px}.select-turn-card{display:grid;gap:6px;width:100%;border:1px solid #e3e8f0;border-radius:8px;padding:12px;text-align:left;color:#172033;background:#fff;cursor:pointer}.select-turn-card:hover,.select-turn-card.active{border-color:#0b5ed7;background:#f3f7ff}.select-turn-card span,.select-turn-card small{color:#667085;line-height:1.4}.select-notice{display:grid;gap:6px;border:1px solid #d8e2ef;border-radius:8px;padding:12px;color:#475467;background:#fbfcfe}.select-notice span{line-height:1.5}.select-lesson-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,.28fr) auto;gap:14px;align-items:start;border:1px solid #e3e8f0;border-radius:8px;padding:14px;background:#fff}.select-lesson-card.selected{border-color:#bfdbfe;background:#f8fbff}.select-lesson-card.full{border-color:#fecdca;background:snow}.select-lesson-card.compact{grid-template-columns:minmax(0,1fr) auto}.select-lesson-card.compact .select-lesson-meta{grid-column:1 / -1;grid-template-columns:repeat(4,minmax(0,auto))}.select-lesson-main,.select-lesson-meta,.select-lesson-actions{display:grid;gap:6px;min-width:0}.select-lesson-main strong{color:#172033;line-height:1.25}.select-lesson-main span,.select-lesson-main small,.select-lesson-meta span{color:#667085;line-height:1.4}.select-lesson-main small{overflow-wrap:anywhere}.select-lesson-meta{align-content:start}.select-lesson-meta strong{color:#0f766e}.select-lesson-actions{justify-items:end}.icon-button.danger{color:#b42318;border-color:#fecdca;background:#fff7f7}.term-course-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 10px}.term-course-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.semester-picker{display:grid;grid-template-columns:auto minmax(190px,1fr) auto;gap:8px;align-items:center}.semester-picker button,.semester-picker select{min-height:36px;border:1px solid #d6deea;border-radius:8px;padding:0 10px;color:#1f2937;background:#fff;font-weight:700;white-space:nowrap}.semester-picker select{min-width:210px}.term-status{margin:0 0 12px;padding:10px 12px;border:1px solid #d6deea;border-radius:8px;color:#465165;background:#fbfcfe;line-height:1.45}.term-course-toolbar>span{color:#667085;font-size:13px;font-weight:700;white-space:nowrap}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.chip-row.muted .stat-chip{background:#fbfcfe}.stat-chip{display:inline-flex;align-items:center;gap:8px;min-height:30px;border:1px solid #d6deea;border-radius:8px;padding:0 10px;color:#344054;background:#f3f7ff;font-weight:700}.stat-chip span{color:#0b5ed7}.term-course-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.term-course-item{display:grid;width:100%;text-align:left;gap:10px;padding:13px;border:1px solid #e3e8f0;border-radius:8px;background:#fff;cursor:pointer}.term-course-item>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.term-course-item strong{color:#172033;line-height:1.25}.term-course-item span,.term-course-item small{color:#667085;line-height:1.35}.term-course-item small{display:block}.detail-page{display:grid;gap:16px}.detail-hero{display:flex;align-items:center;justify-content:space-between;gap:20px}.detail-hero h2{margin:4px 0 6px;font-size:28px}.detail-hero p{margin:0;color:#667085}.fail-rate-badge{display:grid;justify-items:end;min-width:190px;border-radius:8px;padding:14px 16px;color:#fff;background:#b42318}.fail-rate-badge.empty{color:#344054;background:#f0f3f8}.fail-rate-badge span,.fail-rate-badge small{font-weight:700;opacity:.9}.fail-rate-badge strong{font-size:36px;line-height:1.1}.detail-grid{display:grid;grid-template-columns:minmax(320px,.9fr) minmax(360px,1.1fr);gap:18px;align-items:start}.detail-list,.fail-rate-list{display:grid;gap:10px}.detail-row,.fail-rate-row{display:grid;gap:5px;padding:12px;border:1px solid #e3e8f0;border-radius:8px;background:#fbfcfe}.detail-row span,.fail-rate-row span,.fail-rate-row small{color:#667085;line-height:1.4}.detail-row strong,.fail-rate-row strong{color:#172033;line-height:1.35}.fail-rate-row{background:#fff}.fail-rate-row>div{display:flex;justify-content:space-between;gap:12px}.fail-rate-row strong{color:#b42318;font-size:22px}.avg-fail-rate{color:#b42318;font-weight:800}.table-list{display:grid;border:1px solid #e3e8f0;border-radius:8px;overflow:hidden}.table-row{display:grid;grid-template-columns:1.2fr 1fr 1fr .7fr;gap:12px;align-items:center;min-height:52px;padding:0 14px;border-bottom:1px solid #e3e8f0}.table-row:last-child{border-bottom:0}.service-toolbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:16px}.services-panel .service-toolbar{max-width:none}.search-box{display:flex;align-items:center;gap:8px;flex:1;min-height:42px;padding:0 12px;border:1px solid #d6deea;border-radius:8px;background:#fff}.search-box input{flex:1;border:0;outline:0}.service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.services-panel .service-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-dialog{background:#fff;border-radius:12px;padding:24px;max-width:420px;width:90vw;max-height:90vh;overflow-y:auto;box-shadow:0 12px 40px #00000026}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.modal-header h3{margin:0;font-size:1.125rem}.modal-qr p{color:#6b7280;font-size:.9rem;margin:0 0 16px}.qr-code-wrapper{display:flex;justify-content:center;padding:16px;background:#fff;border:1px solid #e3e8f0;border-radius:8px;margin-bottom:12px}.qr-code-image{display:block;max-width:100%}.qr-hint{font-size:.78rem!important;color:#9ca3af!important;word-break:break-all;text-align:center;margin-bottom:12px!important}.modal-actions{display:flex;gap:8px;justify-content:flex-end}.service-item{display:grid;gap:8px;min-height:132px;padding:14px;border:1px solid #e3e8f0;border-radius:8px}.services-panel .service-item{align-content:start}.service-item-clickable{cursor:pointer;transition:border-color .12s ease,box-shadow .12s ease}.service-item-clickable:hover{border-color:#0867f2;box-shadow:0 0 0 1px #0867f2}.body-copy{color:#4b5563;line-height:1.7}.small-copy{margin:4px 22px 14px;font-size:11px;color:#98a2b3;text-align:center;line-height:1.5}.form-stack{display:grid;gap:12px}.form-stack label{display:grid;gap:6px;color:#475467;font-size:14px;font-weight:700}.form-stack input,.form-stack select{width:100%;min-height:42px;border:1px solid #d6deea;border-radius:8px;padding:0 12px;color:#172033;background:#fff}.button-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.button-grid.single{grid-template-columns:1fr}.result-box{min-height:92px;margin:0;padding:12px;white-space:pre-wrap;word-break:break-word;border:1px solid #d6deea;border-radius:8px;background:#fbfcfe;color:#344054;font-family:Microsoft YaHei,PingFang SC,system-ui,sans-serif;line-height:1.5}.usage-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.usage-summary .stack-list{grid-column:1 / -1}.json-editor{width:100%;min-height:420px;resize:vertical;border:1px solid #d6deea;border-radius:8px;padding:14px;color:#172033;background:#fbfcfe;font-family:JetBrains Mono,Consolas,monospace;font-size:13px;line-height:1.5}@media(max-width:1040px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;z-index:3;display:grid;grid-template-columns:1fr auto;padding:14px}.nav-list{grid-column:1 / -1;grid-template-columns:repeat(5,minmax(0,1fr))}.nav-button{justify-content:center}.sidebar-footer{margin-top:0}.content-grid,.agenda-layout,.campus-detail-layout,.select-course-layout{grid-template-columns:1fr}.select-turn-panel{position:static}}@media(max-width:720px){.workspace{padding:16px}.topbar,.service-toolbar,.panel-head{align-items:stretch;flex-direction:column}.nav-list{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar h1{font-size:24px}.service-grid,.metric-row,.table-row,.term-course-list,.agenda-item,.detail-grid,.campus-card-metrics,.life-service-grid,.fee-pay-row,.recommendation-course-list,.program-course-grid,.schedule-course-grid,.select-lesson-card,.select-lesson-card.compact,.select-lesson-card.compact .select-lesson-meta{grid-template-columns:1fr}.term-course-toolbar,.term-course-actions,.term-course-item>div,.agenda-alert,.detail-hero,.campus-card-hero,.recommendation-status,.recommendation-course-main,.recommendation-detail-toolbar,.recommendation-detail-hero,.recommendation-offering-head,.schedule-course-row,.next-schedule-head,.simulation-meeting-row,.simulation-roster-row{align-items:stretch;flex-direction:column}.recommendation-detail-meta{justify-items:start;white-space:normal}.next-schedule-actions{align-items:stretch;justify-content:flex-start}.simulation-roster-actions,.selection-final-confirm>div{align-items:stretch;flex-direction:column}.ai-planning-note,.ai-import-note,.schedule-template-actions{align-items:stretch;flex-direction:column}.schedule-format-grid{grid-template-columns:1fr}.schedule-import-report .primary-button{justify-self:stretch}.selection-commit-backdrop{padding:0}.selection-commit-dialog{width:100%;height:100vh;max-height:none;border:0;border-radius:0}.selection-commit-head{padding:16px}.selection-commit-scroll{padding:14px 16px 22px}.selection-commit-item,.selection-commit-item.success,.selection-commit-item.failed,.semester-picker{grid-template-columns:1fr}.semester-picker select{min-width:0;width:100%}.fail-rate-badge{justify-items:start;min-width:0}.campus-balance-block,.select-lesson-actions{justify-items:start}}.auth-shell{min-height:100vh}.auth-content{width:min(calc(100% - 32px),560px);max-width:none;margin:clamp(12px,3vh,34px) auto 0;padding:0}.auth-card{width:100%;max-width:100%;overflow:visible}.auth-form{padding:20px 22px 0}.auth-card .result-box{display:block;width:auto;min-height:44px;max-height:none;margin:0 22px 16px;overflow:visible;white-space:pre-wrap;word-break:break-word}.auth-card .small-copy{margin:4px 22px 18px;text-align:left;overflow-wrap:anywhere}.auth-card .body-copy{display:block}.mobile-qr-card{margin-bottom:16px;padding:18px}.mobile-qr-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.mobile-qr-head strong,.mobile-qr-head span{display:block}.mobile-qr-head strong{font-weight:800;color:#172033}.mobile-qr-head span{margin-top:3px;color:#667085;font-size:13px}.mobile-qr-body{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:center}.mobile-qr-body img,.qr-placeholder{width:220px;height:220px;border:1px solid #d6deea;border-radius:8px;background:#fff}.qr-placeholder{display:grid;place-items:center;padding:12px;color:#667085;text-align:center}.mobile-url-list{display:grid;gap:10px;min-width:0}.mobile-url-list span{color:#667085;font-size:13px;font-weight:700}.mobile-url{width:100%;min-height:42px;padding:0 12px;border:1px solid #d6deea;border-radius:8px;color:#1455d9;background:#f8fbff;text-align:left;overflow-wrap:anywhere}.mobile-url-list select{min-height:40px;border:1px solid #d6deea;border-radius:8px;padding:0 10px;color:#172033;background:#fff}.mobile-url-list small{color:#667085}.material-field,.material-field input{min-width:0}.captcha-field{display:grid;grid-template-columns:20px 72px minmax(120px,1fr) auto auto;align-items:center;column-gap:12px}.captcha-field>svg{grid-column:1}.captcha-field>span{grid-column:2;min-width:0}.captcha-field>input{grid-column:3;width:100%}.captcha-field>.captcha-image-button{grid-column:4}.captcha-field>.ocr-button{grid-column:5}@media(max-width:620px){.auth-topbar{padding:18px 16px 12px}.auth-topbar h1{font-size:20px}.auth-form{padding:16px 16px 0}.auth-card .result-box,.auth-card .small-copy{margin-left:16px;margin-right:16px}.mobile-qr-body{grid-template-columns:1fr}.mobile-qr-body img,.qr-placeholder{justify-self:center;width:min(220px,100%);height:auto;aspect-ratio:1}.captcha-field{grid-template-columns:20px 64px minmax(0,1fr);row-gap:10px}.captcha-field>.captcha-image-button{grid-column:2 / 3;width:96px}.captcha-field>.ocr-button{grid-column:3 / 4;width:fit-content}}.grade-semester-list{display:grid;gap:14px}.grade-overview-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.grade-rule-note{display:flex;justify-content:space-between;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid #e3e8f0;color:#667085;font-size:13px}.grade-rule-note strong{color:#172033}.semester-group{border:1px solid #e3e8f0;border-radius:10px;overflow:hidden}.semester-group[open]{background:#fafbfd}.semester-summary{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;background:#fff;list-style:none}.semester-summary::-webkit-details-marker{display:none}.semester-summary:before{content:"▶";font-size:10px;color:#667085;transition:transform .2s;margin-right:4px}.semester-group[open]>.semester-summary:before{transform:rotate(90deg)}.semester-summary strong{font-size:15px;color:#172033}.semester-summary>span{color:#667085;font-size:13px}.semester-avg{margin-left:auto;font-weight:700;color:#2563eb;font-size:14px}.semester-group .stack-list{padding:0 16px 16px}.grade-tag{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px;background:#e8edf5;color:#4a5568;margin-left:6px;vertical-align:middle}.grade-tag.elective{background:#fef3c7;color:#92400e}.grade-tag.muted{background:#eef2f7;color:#667085}.grade-item{gap:8px}.grade-meta-line{display:flex;flex-wrap:wrap;gap:8px 14px;color:#667085;font-size:13px}.grade-score-line{color:#172033;font-weight:700}.grade-breakdown{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}.grade-breakdown span{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:6px;background:#f2f6fb;color:#667085;font-size:12px}.grade-breakdown strong{color:#172033}.grade-breakdown-text{color:#667085;line-height:1.5}.compact-item.dimmed{opacity:.35}.timetable,.timetable-inner,.mini-timetable,.recommendation-type-tabs,.recommendation-subtype-tabs,.selection-commit-scroll,.schedule-format-example>code{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}@media(pointer:coarse){button,.nav-button,.ghost-button,.primary-button,.icon-button,.schedule-view-toggle,.week-switcher button,.segmented-control button,.recommendation-type-tabs button,.recommendation-subtype-tabs button,.semester-summary{min-height:44px}.icon-button,.field-icon-button,.auth-icon{min-width:44px}input:not([type=checkbox]):not([type=radio]),textarea,select{min-height:44px;font-size:16px}.course-card,.clickable-item,.term-course-item,.clickable-recommendation,.focus-card-panel.is-clickable,.life-service-card,.select-turn-card,.semester-summary{-webkit-user-select:none;user-select:none}button:not(:disabled):active,.course-card:active,.clickable-item:active,.term-course-item:active,.clickable-recommendation:active,.focus-card-panel.is-clickable:active,.life-service-card:active,.select-turn-card:active,.semester-summary:active{transform:scale(.985)}.recommendation-type-tabs,.recommendation-subtype-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x proximity}.recommendation-type-tabs button,.recommendation-subtype-tabs button{flex:0 0 auto;scroll-snap-align:start}}@media(hover:none){.course-card:hover,.clickable-item:hover,.term-course-item:hover,.focus-card-panel.is-clickable:hover,.clickable-recommendation:hover{box-shadow:none;transform:none}.schedule-view-toggle:hover{border-color:#d0d5dd;background:#f8fafc;box-shadow:none}.life-service-card:hover:not(.active),.select-turn-card:hover:not(.active){border-color:#e3e8f0;background:#fff}}@media(max-width:768px){.library-search-bar{flex-direction:column}}.library-search-bar{display:flex;gap:8px;align-items:end;margin:16px 0}.library-search-bar .search-box{flex:1}.service-status{font-size:.88rem;color:#6b7280;margin:8px 0}.library-borrowed{margin-top:20px}.library-book-list{display:flex;flex-direction:column;gap:8px}.library-book-item{padding:12px;border:1px solid #e3e8f0;border-radius:8px}.library-book-item strong{display:block;font-size:1rem;margin-bottom:4px}.library-book-item small{color:#6b7280;font-size:.82rem;display:block}.library-book-status{font-size:.78rem;color:#16a34a}.library-book-status.overdue{color:#dc2626}.library-callno{font-size:.78rem;color:#9ca3af}.library-results{margin-top:16px}.library-links{margin-top:32px}.library-link-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:12px}.library-link-card{display:grid;gap:4px;padding:14px;border:1px solid #e3e8f0;border-radius:8px;text-decoration:none;color:inherit;cursor:pointer;transition:border-color .12s}.library-link-card:hover{border-color:#0867f2}.library-link-card strong{font-size:.95rem}.library-link-card span{font-size:.82rem;color:#6b7280}.shuttle-filters{display:flex;gap:8px;margin:16px 0}.shuttle-filters input{flex:1;padding:8px 12px;border:1px solid #e3e8f0;border-radius:8px;font-size:.9rem}.shuttle-list{display:flex;flex-direction:column;gap:8px}.shuttle-item{padding:14px;border:1px solid #e3e8f0;border-radius:8px}.shuttle-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.shuttle-header strong{font-size:1rem}.shuttle-type{font-size:.78rem;color:#6b7280;background:#f3f4f6;padding:2px 8px;border-radius:12px}.shuttle-meta{display:flex;gap:16px;font-size:.85rem;color:#6b7280;margin-bottom:6px}.shuttle-stops{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.8rem;color:#9ca3af}.shuttle-stop-dot:before{content:"● ";font-size:.5rem;vertical-align:middle}.security-report-banner{margin:20px 0;padding:16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px}.security-report-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:12px}.security-item{padding:10px 12px;border-radius:6px;display:grid;gap:2px;background:#fff;border:1px solid #e2e8f0}.security-item strong{font-size:.88rem}.security-item span{font-size:.78rem;color:#6b7280}.security-status{font-size:.72rem!important;font-weight:600;padding:1px 6px;border-radius:10px;width:fit-content}.security-status.pass{color:#16a34a;background:#dcfce7}.security-status.warn{color:#d97706;background:#fef3c7}.security-status.info{color:#2563eb;background:#dbeafe}.notice-controls{display:flex;gap:8px;margin:16px 0;align-items:end}.notice-controls select{padding:8px 12px;border:1px solid #e3e8f0;border-radius:8px;font-size:.9rem}.notice-list{display:flex;flex-direction:column;gap:2px}.notice-item{display:grid;gap:2px;padding:12px;text-decoration:none;color:inherit;border-radius:8px;transition:background .12s}.notice-item:hover{background:#f8fafc}.notice-item strong{font-size:.95rem;line-height:1.4}.notice-date{font-size:.78rem;color:#9ca3af}.monitor-health-badge{font-size:.78rem;font-weight:600;padding:4px 12px;border-radius:16px}.monitor-health-badge.healthy{color:#16a34a;background:#dcfce7}.monitor-health-badge.warn{color:#d97706;background:#fef3c7}.monitor-health-badge.danger{color:#dc2626;background:#fee2e2}.monitor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:16px 0}.monitor-card{padding:14px;border:1px solid #e3e8f0;border-radius:10px}.monitor-card strong{display:block;font-size:.88rem;margin-bottom:10px}.monitor-card.danger-card{border-color:#fca5a5;background:#fef2f2}.monitor-metrics{display:grid;grid-template-columns:1fr 1fr;gap:6px}.monitor-metric{display:flex;justify-content:space-between;align-items:center;padding:4px 0;font-size:.84rem}.monitor-metric span{color:#6b7280}.monitor-metric strong{font-size:.95rem;margin:0}.monitor-metric.ok strong{color:#16a34a}.monitor-metric.warn strong{color:#d97706}.monitor-metric.danger strong{color:#dc2626}.monitor-locked-list{display:flex;flex-direction:column;gap:4px}.monitor-locked-item{display:flex;gap:16px;font-size:.82rem;padding:4px 0}.monitor-error-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow-y:auto}.monitor-error-item{display:flex;gap:12px;font-size:.8rem;padding:3px 0;align-items:center}.monitor-error-code{font-weight:600;min-width:28px;color:#dc2626}.monitor-error-path{flex:1;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monitor-error-time{color:#9ca3af;font-size:.75rem}.guide-hero{background:linear-gradient(135deg,#0867f2,#0052cc);color:#fff;border-radius:12px;padding:28px;margin:16px 0}.guide-hero h3{margin:0 0 8px;font-size:1.25rem;color:#fff}.guide-hero p{margin:0;font-size:.92rem;opacity:.9;line-height:1.6}.guide-section{margin:24px 0}.guide-section h3{font-size:1.05rem;margin:0 0 12px}.guide-steps{display:flex;flex-direction:column;gap:12px}.guide-step{display:flex;gap:14px;align-items:flex-start;padding:14px;border:1px solid #e3e8f0;border-radius:10px}.guide-step-num{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#0867f2;color:#fff;border-radius:50%;font-weight:700;font-size:.9rem;flex-shrink:0}.guide-step strong{display:block;font-size:.95rem;margin-bottom:4px}.guide-step p{margin:0;font-size:.84rem;color:#6b7280;line-height:1.5}.guide-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.guide-feature-card{padding:14px;border:1px solid #e3e8f0;border-radius:10px;text-align:center}.guide-feature-icon{font-size:1.5rem;display:block;margin-bottom:6px}.guide-feature-card strong{font-size:.9rem}.guide-feature-card p{margin:4px 0 0;font-size:.8rem;color:#6b7280;line-height:1.4}.guide-footer{margin-top:24px;padding-top:16px;border-top:1px solid #e3e8f0}.guide-footer p{font-size:.8rem;color:#9ca3af}.spending-stats{margin:12px 0;padding:12px;border:1px solid #e3e8f0;border-radius:10px}.spending-stats .panel-head{padding:0}.spending-stats .panel-head.clickable{cursor:pointer}.spending-stats-body{margin-top:12px}.spending-year-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.spending-year-item{flex:1;min-width:80px;padding:10px;background:#f8fafc;border-radius:8px;text-align:center}.spending-year-item span{display:block;font-size:.82rem;color:#6b7280}.spending-year-item strong{font-size:1.1rem;color:#dc2626}.spending-month-list h4{font-size:.88rem;margin:0 0 8px}.spending-month-item{display:flex;align-items:center;gap:12px;padding:6px 0;border-bottom:1px solid #f3f4f6;font-size:.85rem}.spending-month-item span{color:#6b7280}.spending-month-item strong{margin-left:auto;color:#dc2626}@keyframes pulse-guide{0%,to{box-shadow:0 4px 14px #dc262659}50%{box-shadow:0 4px 28px #dc26268c}}.auth-guide-banner{margin:0}.auth-guide-banner button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;background:linear-gradient(135deg,#f59e0b,#dc2626);color:#fff;border:none;border-radius:0;padding:14px 20px;cursor:pointer;box-shadow:0 2px 8px #dc26264d;transition:box-shadow .2s;animation:pulse-guide 2s ease-in-out infinite}.auth-guide-banner button:hover{box-shadow:0 4px 16px #dc262673}.auth-guide-banner button small{display:block;font-size:.78rem;opacity:.9;font-weight:400}
