/* v3: readable semester map, separate rule/status semantics, visible repairs. */
:root{--muted:#626b76}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #86afe9;outline-offset:3px}
.demo-strip{min-height:34px;height:auto;padding-top:5px;padding-bottom:5px;font-size:11px;color:#606a76}.demo-strip .text-btn{font-size:11px;min-height:24px}.demo-description{min-width:0}
.nav-link,.brand span{font-size:13px}.workspace-context,.context-school{font-size:13px}.context-term,.workspace-save{font-size:12px;color:#69727e}
.planner-toolbar{min-height:66px}.planner-title h1{font-size:18px}.board-state{font-size:12px;min-height:32px;color:#596676}.board-state.ready{color:#596676}.board-tools button{min-width:34px;height:36px}.board-tools button .icon{width:18px;height:18px}.board-tools button b{font-size:12px}
.main-tab{font-size:13px;min-height:44px}.version-select{font-size:12px;height:34px;width:145px}.academic-year{min-height:46px;font-size:13px}.academic-year>span{font-size:11px;color:#c2c4c6}.academic-year strong>span{color:#c2c4c6}
.semester-row{min-height:170px}.semester-label{padding:20px 12px}.semester-label strong{font-size:13px}.semester-label>span,.semester-label>small,.semester-label>.row-status{font-size:11px;color:#707984}.semester-label>.row-status{color:#697586}
.semester-unit-area{padding:12px}.course-grid{gap:10px}.course-card.compact-unit{height:132px;border-color:#d8ddd9;border-radius:6px}.subject-rail{flex-basis:23px}.subject-rail span{font-size:10px}.unit-main{padding:12px 9px 10px 11px}.unit-code-line{gap:5px;padding-right:24px;flex-wrap:wrap;align-items:center}.unit-code{font-size:14px;line-height:1.6;letter-spacing:0;color:#343b45}.requirement-badge{font-size:11px;padding:2px 5px;line-height:1.4}.requirement-badge.elective{color:#436550;background:#eaf1ec}.requirement-badge.limited{color:#625282;background:#efebf6}
.unit-main h3{font-size:15px;font-weight:500;line-height:1.5;height:44px;margin:8px 0 8px;color:#343d49}.unit-meta{font-size:12px;color:#697481;gap:5px}.unit-state{font-size:11px;color:#6a7581;gap:3px}.unit-state>.icon{width:12px;height:12px;flex-shrink:0}
.unit-menu-trigger{width:32px;height:34px;top:5px;right:1px;padding:7px}.unit-menu-trigger .icon{width:17px;height:17px}.unit-menu{top:40px;right:4px;min-width:154px;padding:5px}.unit-menu button{font-size:13px;min-height:40px;padding:9px 12px}.unit-menu button:focus{background:#edf3fc;color:#1765dc;outline-offset:0}
.state-prerequisite{border-bottom:2px solid #c56559!important}.state-recognition{border-bottom:2px solid #c19737!important}.state-not-offered{border-bottom:2px solid #85909b!important}.state-prerequisite .unit-state{color:#a4463c}.state-recognition .unit-state{color:#8e691f}.state-not-offered .unit-state{color:#5c6c7d}.add-unit-tile{height:132px}.add-unit-tile b{font-size:12px}.empty-map-hint{font-size:12px;color:#76818d}
.structure-reference{padding-top:26px}.structure-heading h2{font-size:13px;color:#55616e}.structure-heading>span{font-size:11px;color:#737f8b}.structure-row strong{font-size:13px;color:#414e5c}.structure-row p{font-size:12px;color:#6a7581}.structure-count{font-size:13px;color:#5f6c7a}.structure-row>button{font-size:12px;color:#5d7391;min-height:38px}.board-bottom>span{font-size:12px;color:#6f7b88;line-height:1.8}.board-bottom>.btn{font-size:12px;min-height:38px}.board-note.subtle-note{font-size:11px;color:#727e8b;line-height:1.9}
.aside-tab{font-size:14px;min-height:48px}.aside-body{padding:16px;font-size:14px}.aside-footer{padding:14px 16px}.aside-footer .btn.large{min-height:44px;font-size:14px}.aside-footer .footnote{font-size:11px;color:#73808d;line-height:1.7}.context-program{padding:14px}.context-program-label{font-size:11px;color:#687583}.context-program small,.context-program p,.context-program>div{font-size:12px;color:#73808d}.context-program strong{font-size:16px;color:#374452}.next-card strong{font-size:14px;color:#4e5864}.next-card p{font-size:12px;color:#6b7581;line-height:1.85}.aside-section{margin-top:22px}.aside-label{font-size:13px;color:#52606f}.aside-label .small{font-size:11px}.load-summary strong{font-size:34px}.load-summary span,.load-hint{font-size:12px;color:#6e7c8b}.check-row,.check-row .text-btn{font-size:13px;color:#526982;line-height:1.85}.check-row .small{font-size:11px;color:#718091}.section-source{font-size:11px;color:#71808e}.panel-head h3{font-size:17px}.aside .small,.aside .help{font-size:12px}.aside .input,.aside .select,.aside .textarea{font-size:14px}.aside .field-label,.aside .field>label,.radio-option{font-size:14px}.radio-option{min-height:44px}.panel-back{font-size:13px;min-height:36px}.aside .notice{font-size:13px;line-height:1.8}.aside .detail-fact,.aside .detail-section p,.aside .detail-course>p,.aside .summary-list{font-size:13px;line-height:1.9}.aside .detail-fact{align-items:flex-start}.aside .detail-fact>span:first-child{flex-shrink:0}.aside .detail-section h4{font-size:13px}.aside .detail-course .en{font-size:12px}.aside .policy-note{font-size:12px}
.search-context{margin:-8px 0 15px}.filter-row{gap:6px;flex-wrap:wrap}.filter,.picker-filters>.filter{font-size:12px;padding:7px 9px;min-height:34px}.candidate-heading,.candidate-group>summary{font-size:12px;font-weight:500;color:#586777;padding:11px 2px;line-height:1.8}.candidate-heading{display:flex;justify-content:space-between}.candidate-group>summary{cursor:pointer;border-top:1px solid #e5e9e4;margin-top:12px;min-height:42px}.candidate-group>summary>span{float:right;font-size:11px;background:#edf0ec;border-radius:8px;padding:0 6px;color:#687684}.candidate-empty{font-size:12px;line-height:1.85;color:#7d8791;padding:4px 1px 10px}.search-result{min-height:100px;padding:10px 47px 10px 14px}.search-result:first-child{padding-top:10px}.result-code-line>.course-code{font-size:13px}.result-code-line>span:nth-child(2){font-size:11px;color:#7d8894}.result-main strong{font-size:14px;line-height:1.6;font-weight:500}.result-meta{font-size:11px;color:#6b7987;flex-wrap:wrap;gap:7px}.period-badge{font-size:10px;padding:2px 5px}.quick-add{width:36px;height:40px;min-width:36px;right:5px;top:24px;border:1px solid #e1e7dd;background:#f8faf5;border-radius:5px;color:#5c6e80}.quick-add .icon{width:18px;height:18px}.quick-add:disabled{border-color:transparent;background:none;opacity:.65}.candidate-note{font-size:11px;color:#6c7e8a}.candidate-note.prerequisite{color:#a2483e}.candidate-note.recognition{color:#8b671f}.candidate-note.not-offered{color:#617286}.template-title{font-size:12px;color:#74818e}.unit-template strong{font-size:13px}.unit-template>div>span,.drag-help{font-size:12px;color:#70808c}.unit-template>button{font-size:12px;min-height:40px}
.board-issues{display:flex;align-items:center;gap:9px;padding:12px 16px;background:#fff8ef;border-top:1px solid #f0e4d3;border-bottom:1px solid #eadcca;color:#826034}.board-issues>.icon{width:18px;flex-shrink:0}.board-issues>div{flex:1}.board-issues strong{display:block;font-size:13px;font-weight:600}.board-issues span{display:block;font-size:12px;line-height:1.8;color:#8d7454}.board-issues .text-btn{font-size:12px;white-space:nowrap;min-height:36px;color:#7c613d}
.issue-summary{background:#fff9f0;border:1px solid #eadfce;border-radius:6px;padding:13px 12px}.issue-summary>strong{font-size:14px;color:#7a5b32}.issue-summary>p{font-size:12px;color:#8e795e;margin:5px 0 10px}.issue-summary>button{display:flex;align-items:center;gap:6px;width:100%;border:0;border-top:1px solid #eee1d1;background:none;text-align:left;padding:12px 0 5px;color:#5c646c}.issue-summary button>span:first-child{font-size:11px;flex:1}.issue-summary b{display:block;font-size:13px;font-weight:500;margin-top:3px}.issue-summary .icon{width:13px;flex-shrink:0}.status-chip{display:inline-flex;font-size:11px;line-height:1.5;padding:3px 6px;border-radius:4px;white-space:nowrap;font-style:normal;color:#647382;background:#eef1f3}.status-chip.prerequisite{background:#f9e9e5;color:#9b453a}.status-chip.recognition{background:#fff1ce;color:#8c6928}.status-chip.not-offered{background:#e9eef3;color:#586c80}.issue-detail{padding:14px;background:#fff9f2;border:1px solid #edddc9;border-radius:6px;margin-bottom:20px}.issue-detail h4{font-size:14px!important;color:#624d36!important;margin:11px 0 7px!important;letter-spacing:0!important;font-weight:600!important}.issue-detail p{font-size:13px!important;color:#6f6254!important;line-height:1.95!important}.issue-repair{border-top:1px solid #e9dece;margin-top:11px;padding-top:10px}.issue-actions{display:grid;gap:7px;margin-top:12px}.issue-actions .btn{font-size:12px;min-height:40px;white-space:normal;line-height:1.6;padding:8px}
.scenario-banner{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:13px 16px;margin:0 0 15px;border:1px solid #e4d8b7;border-left:4px solid #c79a32;border-radius:5px;background:#fffbef}.scenario-banner>div{flex:1}.scenario-banner strong{display:block;font-size:14px;color:#785d27}.scenario-banner span{display:block;font-size:12px;line-height:1.9;color:#8d7b53;margin-top:2px}.scenario-banner>a{display:flex;align-items:center;gap:5px;font-size:12px;color:#765d2b;white-space:nowrap;min-height:40px}.scenario-banner .icon{width:14px}.example-list{display:grid;gap:11px;margin-top:20px}.example-list a{display:block;text-decoration:none;background:#f8faf6;border:1px solid #dfe5da;padding:15px;border-radius:7px;color:#485765}.example-list a:hover{border-color:#a6bca0;background:#f2f6ed}.example-list span{font-size:16px;font-weight:600}.example-list p{font-size:13px;color:#687987;line-height:1.9;margin:7px 0}.example-list b{font-size:12px;color:#567641;font-weight:500}
dialog.unit-picker{width:1000px;height:min(820px,90dvh);max-height:90dvh}.picker-heading h2{font-size:17px}.picker-heading>span{font-size:12px;color:#77838e}.picker-heading .close-btn{width:36px;height:36px}.picker-filters{gap:4px}.picker-result{min-height:106px;padding:12px 12px 12px 16px}.picker-result-top strong{font-size:14px}.picker-result-top>span:last-child{font-size:11px;color:#75818b}.picker-result-name{font-size:14px;line-height:1.6;margin-top:6px}.picker-result-meta{font-size:11px;flex-wrap:wrap;color:#71818b;gap:7px}.picker-preview-inner{padding:20px 24px}.picker-preview-inner>h3{font-size:22px}.preview-en{font-size:13px;color:#788590}.picker-preview-inner h4{font-size:12px;color:#647583;font-weight:500}.picker-preview-inner section>p{font-size:14px;color:#596b79;line-height:1.95}.picker-preview-inner>small{font-size:11px;color:#758692}.preview-code-line>strong{font-size:18px}.preview-labels .tag,.faculty-badge{font-size:11px}.picker-fit{font-size:12px;color:#626f7e;background:#f2f5f1;border-bottom-color:#e0e7dd;padding:11px 19px}.picker-fit.fit-warning{color:#8c6230;background:#fff5e7;border-bottom-color:#eadcc4}.picker-fit>.icon{width:16px;height:16px}.picker-footer>span{font-size:11px;color:#6e7d89;line-height:1.8}.picker-footer .btn{font-size:13px;min-height:42px}.picker-preview-inner .topics span{font-size:11px}
.main-region>.notice,.main-region>.notice .notice-title{font-size:13px;line-height:1.9}.report-map-meta{font-size:13px;color:#627181}.report-map-meta>span{font-size:11px;color:#788695}.report-reason h3,.report-resolutions h3{font-size:15px;color:#475867}.report-reason p{font-size:13px;line-height:1.95;color:#657684}.report-reason details{font-size:12px}.report-condition{margin:14px 16px!important}.report-resolutions{padding:16px 18px;border-top:1px solid #e3e7df}.report-resolutions>div{margin-top:11px;padding:12px;background:#faf8f2;border:1px solid #e9e4d7;border-radius:5px}.report-resolutions strong{font-size:13px;margin-right:9px;color:#5f5c51}.report-resolutions p{font-size:13px;line-height:1.9;color:#7a7161;margin-top:6px}.delivery-row,.load-hint,.report-adjust p{font-size:12px;line-height:1.9}.dialog-body{font-size:14px;line-height:1.9}
@media(min-width:801px) and (max-width:1240px){.course-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.semester-row{grid-template-columns:104px minmax(0,1fr)}.planner-title{flex-wrap:wrap;gap:4px 8px}.planner-title h1{font-size:16px}.board-state{font-size:11px}.board-tools{gap:2px}.board-tools>span{margin:0}.unit-code-line{padding-right:20px}.unit-main{padding-left:8px;padding-right:7px}.unit-code{font-size:13px}.requirement-badge{padding:2px 4px}.unit-meta{font-size:11px}.unit-state{font-size:10px}}
@media(max-width:800px){.page{padding:14px 12px 98px}.demo-strip{font-size:10px;padding-left:12px;padding-right:12px;gap:8px;align-items:center}.demo-strip .strip-actions{gap:9px;flex-shrink:0}.demo-strip .text-btn{font-size:10px;min-height:28px}.demo-description{max-width:29%;font-size:9px;line-height:1.6}.site-header{height:58px}.nav{gap:12px}.nav-link{font-size:12px}.brand span{font-size:11px}.workspace-context{font-size:12px;gap:7px}.context-school{font-size:12px}.context-term{font-size:11px}.workspace-save{font-size:10px}.planner-toolbar{padding:9px 10px;min-height:78px;gap:7px;align-items:center}.planner-title{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.planner-title h1{font-size:16px}.board-state{font-size:10px;min-height:27px;padding:3px 5px}.board-tools button{width:34px;min-width:34px;height:44px;padding:8px}.board-tools button .icon{width:18px;height:18px}.board-tools{gap:0}.main-tab{font-size:12px;min-height:43px}.main-tabs{gap:18px;padding:0 11px;flex-wrap:wrap}.version-select{font-size:11px;height:30px;width:127px;max-width:130px}.academic-year{font-size:12px;padding:11px 12px}.academic-year>span{font-size:10px}.semester-label{padding:13px 12px;gap:10px}.semester-label strong{font-size:12px}.semester-label>small,.semester-label>.row-status{font-size:10px}.semester-unit-area{padding:10px}.course-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.course-card.compact-unit{height:148px}.subject-rail{flex-basis:20px}.subject-rail span{font-size:10px}.unit-main{padding:12px 6px 10px 8px}.unit-code{font-size:13px}.unit-code-line{padding-right:27px;gap:4px;min-height:40px;align-content:flex-start}.requirement-badge{font-size:10px;padding:2px 4px}.unit-main h3{font-size:14px;height:42px;margin:8px 0 9px}.unit-meta{font-size:11px;gap:3px;align-items:center;flex-direction:row}.unit-state{font-size:11px}.unit-menu-trigger{width:44px;height:44px;right:0;top:2px;padding:13px}.unit-menu-trigger .icon{width:17px;height:17px}.unit-menu{top:45px}.unit-menu button{min-height:44px;font-size:14px}.add-unit-tile{height:148px}.add-unit-tile b{font-size:12px}.structure-heading h2{font-size:12px}.structure-heading>span{font-size:10px}.structure-row{gap:7px}.structure-row strong{font-size:12px;flex-wrap:wrap}.structure-row p{font-size:11px;line-height:1.8}.structure-count{font-size:12px;width:25px}.structure-row>button{font-size:10px;min-width:55px;min-height:44px}.structure-branch{display:none}.board-bottom{padding:12px;align-items:flex-start}.board-bottom>span{font-size:11px}.board-bottom>.btn{font-size:11px;min-height:40px;white-space:nowrap}.board-note.subtle-note{font-size:10px;padding:9px 12px 13px}.aside.open{inset:60px 0 0;max-height:none!important}.aside-body{padding:18px}.aside .check-row,.aside .check-row .text-btn{font-size:13px}.aside .check-row .small{font-size:12px}.aside .load-summary span,.aside .load-hint{font-size:12px}.quick-add{width:44px;height:44px;right:3px;top:24px}.search-result{padding-right:51px}.result-main strong{font-size:14px}.result-code-line>.course-code{font-size:13px}.search-result .requirement-badge{font-size:10px}.search-result .result-meta{font-size:11px}.mobile-bottom .btn{min-height:44px}.mobile-bottom .btn.primary{font-size:14px}.mobile-bottom .btn:first-child{font-size:13px}.board-issues{padding:11px 12px;gap:7px}.board-issues strong{font-size:12px}.board-issues span{font-size:11px}.board-issues .text-btn{font-size:11px}.scenario-banner{padding:10px 12px;gap:9px;align-items:flex-start}.scenario-banner strong{font-size:13px}.scenario-banner span{font-size:11px}.scenario-banner>a{font-size:11px;white-space:normal;flex-shrink:0;max-width:68px;line-height:1.8}.report-map-meta{font-size:12px;flex-wrap:wrap}.report-map-meta>span{font-size:11px}.report-reason h3{font-size:14px}.report-reason p{font-size:13px}.report-resolutions{padding:14px 12px}.report-resolutions strong{display:block;margin-bottom:7px}.report-resolutions p{font-size:12px}dialog.unit-picker{height:94dvh;max-height:94dvh;width:calc(100vw - 16px)}.picker-heading h2{font-size:16px}.picker-heading .close-btn{width:44px;height:44px}.picker-header{padding:8px 11px 11px}.picker-list{max-height:240px;padding:6px 9px}.picker-result{min-height:100px}.picker-result-top strong{font-size:14px}.picker-result-name{font-size:14px}.picker-result-meta{font-size:11px}.picker-filters>.filter{font-size:12px;padding:7px 9px;min-height:36px}.picker-fit{font-size:11px;padding:10px 12px}.picker-preview-inner{padding:16px 15px}.picker-preview-inner>h3{font-size:20px}.picker-preview-inner h4{font-size:12px}.picker-preview-inner section>p{font-size:13px}.picker-footer{padding:11px}.picker-footer>span{font-size:10px;line-height:1.8}.picker-footer .btn{font-size:12px;min-height:44px;padding:8px 10px}.picker-footer .btn.primary{white-space:normal;line-height:1.5}.picker-footer>div{align-items:stretch}.picker-preview-inner .topics span{font-size:11px}}
@media(max-width:360px){.course-grid{grid-template-columns:1fr}.course-card.compact-unit{height:126px}.add-unit-tile{height:100px}.unit-code-line{min-height:22px;padding-right:40px;flex-wrap:nowrap}.unit-main h3{height:23px;margin:8px 0 9px}.unit-meta{flex-direction:row;align-items:center}.board-tools button{width:30px;min-width:30px;padding:6px}.planner-title h1{font-size:15px}.board-state{font-size:9px}.demo-strip .strip-actions{gap:6px}.demo-strip .text-btn{font-size:9px}.demo-description{max-width:24%;font-size:8px}.structure-heading{align-items:flex-start}.structure-heading>span{max-width:115px;text-align:right;line-height:1.8}.structure-row>button{min-width:50px}.main-tabs{gap:14px}.main-tab{font-size:11px}}
