:root{--navy:#102c4c;--navy-2:#173f68;--blue:#2c5d87;--gold:#b7924b;--gold-soft:#f4ead3;--ink:#172334;--muted:#667386;--line:#dce3ea;--surface:#fff;--bg:#f3f6f9;--green:#21785d;--amber:#a5650c;--orange:#c45f30;--red:#a83f45;--gray:#7b8794;--shadow:0 8px 28px rgba(16,44,76,.08);font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--bg);font-size:16px;line-height:1.55}button,input,select{font:inherit}button{cursor:pointer}a{color:var(--blue)}
.topbar{height:72px;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:30;box-shadow:0 3px 16px rgba(8,28,48,.2)}
.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none}.brand-mark{width:38px;height:38px;border:1px solid rgba(255,255,255,.5);border-radius:9px;display:grid;place-items:center;color:#e0bf78;font:700 1.35rem Georgia,serif}.brand strong,.brand small{display:block}.brand strong{font-size:1rem;letter-spacing:.04em}.brand small{font-size:.78rem;color:#ccd8e5;margin-top:1px}
.header-actions,.view-switch{display:flex;align-items:center}.header-actions{gap:10px}.view-switch{border:1px solid rgba(255,255,255,.28);border-radius:9px;padding:3px}.view-switch button,.text-button,.focus-button{border:0;color:#dce7f2;background:transparent;padding:7px 11px;border-radius:6px;font-size:.88rem}.view-switch button.active{color:var(--navy);background:#fff;font-weight:700}.text-button:hover,.focus-button:hover{background:rgba(255,255,255,.1)}
.notice{min-height:48px;background:#fff8e8;border-bottom:1px solid #ead9b2;color:#624d20;padding:10px 28px;display:flex;gap:10px;align-items:flex-start;font-size:.9rem}.notice-icon{flex:0 0 22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--gold);color:#fff;font:bold .8rem Georgia,serif;margin-top:1px}
.journey{max-width:1540px;margin:0 auto;padding:10px 28px 0;display:flex;align-items:center;justify-content:center;color:#7a8795;font-size:.78rem}.journey span{display:flex;align-items:center;gap:5px;white-space:nowrap}.journey b{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#e4eaf0;color:#5b6978}.journey span.active{color:var(--navy);font-weight:700}.journey span.active b,.journey span.done b{background:var(--navy);color:#fff}.journey i{height:1px;background:#ced7df;flex:0 1 54px;margin:0 8px}
.workspace{max-width:1540px;margin:0 auto;display:grid;grid-template-columns:340px minmax(0,1fr);gap:22px;padding:22px 26px 60px;transition:grid-template-columns .2s}.workspace.focus{grid-template-columns:0 minmax(0,1fr)}.workspace.focus .sidebar{opacity:0;visibility:hidden;overflow:hidden}.sidebar{display:flex;flex-direction:column;gap:16px;transition:opacity .15s;min-width:0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.sidebar .panel:first-child{position:sticky;top:142px}
.section-heading{display:flex;gap:11px;align-items:flex-start;margin-bottom:15px}.section-heading.compact{margin-bottom:12px}.step{flex:0 0 29px;height:29px;border-radius:8px;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:700}.section-heading h2{font-size:1.05rem;margin:0}.section-heading p{font-size:.79rem;color:var(--muted);margin:2px 0 0}.score-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.score-item label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:4px}.score-item select{width:100%;border:1px solid #cbd5df;border-radius:8px;background:#fff;padding:8px 6px;color:var(--ink)}.score-item select.filled{border-color:var(--blue);background:#f3f8fc;font-weight:700}.score-footer{display:flex;justify-content:space-between;align-items:center;margin-top:12px;font-size:.82rem;color:var(--muted)}.link-button{border:0;background:transparent;color:var(--blue);padding:2px}.apcs-box{margin-top:13px;border-top:1px solid var(--line);padding-top:11px}.apcs-box summary{font-weight:700;font-size:.86rem;color:var(--navy)}.apcs-box label{display:block;margin-top:10px;font-size:.8rem}.apcs-box select{width:100%;margin-top:4px;padding:7px;border:1px solid #cbd5df;border-radius:8px;background:#fff}.apcs-box p{font-size:.76rem;color:var(--muted);margin:8px 0 0}
.filters-panel label{display:block;font-size:.78rem;color:var(--muted)}.filters-panel input,.filters-panel select{width:100%;margin-top:4px;border:1px solid #cbd5df;border-radius:8px;background:#fff;padding:8px 9px;color:var(--ink)}.search-field{margin-bottom:10px}.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.secondary-button,.primary-button{border-radius:8px;padding:8px 13px;font-weight:700}.secondary-button{border:1px solid #bfcbd7;color:var(--navy);background:#fff}.primary-button{border:1px solid var(--navy);background:var(--navy);color:#fff}.full{width:100%;margin-top:11px}.privacy-note{padding:2px 8px;color:var(--muted);font-size:.78rem}.privacy-note strong{color:var(--navy)}.privacy-note p{margin:3px 0}
.multi-field>span{display:block;font-size:.78rem;color:var(--muted)}.multi-select{position:relative;margin-top:4px}.multi-select>summary{list-style:none;width:100%;min-height:42px;border:1px solid #cbd5df;border-radius:8px;background:#fff;padding:8px 28px 8px 9px;color:var(--ink);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.multi-select>summary::-webkit-details-marker{display:none}.multi-select>summary::after{content:'⌄';position:absolute;right:10px;top:8px;color:var(--muted)}.multi-select[open]>summary{border-color:var(--blue);box-shadow:0 0 0 2px rgba(44,93,135,.1)}.multi-options{position:absolute;z-index:24;top:45px;left:0;width:max(100%,220px);max-height:260px;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow);padding:6px}.multi-options label{display:flex!important;align-items:flex-start;gap:7px;padding:7px 8px;border-radius:6px;color:var(--ink)!important;font-size:.8rem!important;cursor:pointer}.multi-options label:hover{background:#eef4f8}.multi-options input{width:auto!important;margin:3px 0 0!important;flex:0 0 auto}.multi-empty{padding:9px;color:var(--muted);font-size:.78rem}
.active-filters{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px}.filter-chip{border:1px solid #c7d4df;background:#eef4f8;color:var(--navy);border-radius:999px;padding:3px 8px;font-size:.72rem}.filter-chip:hover{background:#dfeaf2}.completion-card{background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 14px;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.82rem;color:var(--muted)}.completion-card strong{color:var(--navy)}.completion-card .next{color:#7b581b;background:var(--gold-soft);border-radius:999px;padding:4px 9px;font-size:.74rem}
.content{min-width:0}.section-tabs{display:flex;gap:4px;background:#e7edf3;border-radius:11px;padding:4px;margin-bottom:14px;width:max-content}.section-tabs button{border:0;background:transparent;color:#516174;border-radius:8px;padding:8px 16px;font-weight:700}.section-tabs button.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px rgba(16,44,76,.08)}.section-tabs span{display:inline-grid;place-items:center;background:#d8e1e9;border-radius:999px;min-width:24px;padding:0 6px;font-size:.75rem;margin-left:4px}.section-tabs button.active span{background:var(--gold-soft);color:#715520}
.summary-strip{display:grid;grid-template-columns:repeat(6,minmax(90px,1fr));gap:9px;margin-bottom:13px}.summary-card{appearance:none;text-align:left;background:#fff;border:1px solid var(--line);border-radius:11px;padding:12px 14px}.summary-card:hover{border-color:#96adbf;transform:translateY(-1px)}.summary-card.selected{box-shadow:0 0 0 2px var(--gold) inset}.summary-card span{display:block;color:var(--muted);font-size:.75rem}.summary-card strong{display:block;color:var(--navy);font-size:1.35rem;line-height:1.3;margin-top:2px}.summary-card.highlight{background:var(--navy);border-color:var(--navy)}.summary-card.highlight span,.summary-card.highlight strong{color:#fff}
.legend-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:4px 2px 12px}.legend{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:.75rem;color:#536174}.legend-row p{margin:0;color:var(--muted);font-size:.78rem;text-align:right}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.stable,.status.stable{background:var(--green)}.dot.careful,.status.careful{background:var(--amber)}.dot.challenge,.status.challenge{background:var(--orange)}.dot.risk,.status.risk{background:var(--red)}.dot.unknown,.status.unknown,.dot.pending,.status.pending{background:var(--gray)}
.results-list{display:flex;flex-direction:column;gap:10px}.program-card{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 3px 15px rgba(16,44,76,.045);overflow:hidden}.card-main{display:grid;grid-template-columns:minmax(260px,1.4fr) minmax(270px,.85fr) auto;gap:18px;align-items:center;padding:16px 18px}.program-identity{min-width:0}.program-identity .meta{display:flex;gap:7px;align-items:center;color:var(--muted);font-size:.77rem;margin-bottom:3px}.pill{border:1px solid #d3dce4;border-radius:999px;padding:1px 7px;background:#f8fafb}.new-pill{border-color:#e2c786;background:#fff8e6;color:#79581e}.program-identity h2{font-size:1.04rem;line-height:1.38;margin:0 0 3px;color:var(--navy)}.program-identity p{font-size:.8rem;color:var(--muted);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.score-block{border-left:1px solid var(--line);padding-left:18px;display:grid;grid-template-columns:1fr 1fr;gap:4px 14px}.score-block span{font-size:.75rem;color:var(--muted)}.score-block strong{display:block;font-size:1.12rem;color:var(--navy)}.score-block .score-na{font-size:.88rem;color:var(--gray);grid-column:1/-1}.judgement{display:flex;align-items:center;gap:8px;min-width:116px}.status{width:11px;height:11px;border-radius:50%;box-shadow:0 0 0 4px rgba(83,97,116,.08)}.judgement strong{font-size:.9rem;display:block}.judgement small{font-size:.72rem;color:var(--muted);display:block}.card-actions{display:flex;border-top:1px solid #edf1f4;background:#fbfcfd}.card-actions button{border:0;border-right:1px solid #e4eaf0;background:transparent;color:var(--blue);padding:9px 14px;font-size:.79rem}.card-actions button:last-child{border-right:0;margin-left:auto}.card-actions button.saved{color:var(--green);font-weight:700}.card-actions button:hover{background:#f1f5f8}.detail{border-top:1px solid var(--line);padding:16px 18px;background:#fbfcfd}.detail-intro{display:flex;justify-content:space-between;gap:10px;margin-bottom:12px}.detail-intro p{margin:0;font-size:.8rem;color:var(--muted)}.history-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.history-card{border:1px solid var(--line);border-radius:9px;background:#fff;padding:10px}.history-card h3{font-size:.82rem;color:var(--navy);margin:0 0 7px}.history-row{display:flex;justify-content:space-between;gap:8px;font-size:.75rem;margin:3px 0}.history-row span{color:var(--muted)}.diff-positive{color:var(--green);font-weight:700}.diff-negative{color:var(--red);font-weight:700}.history-note{font-size:.71rem!important;border-top:1px dashed var(--line);padding-top:7px;margin-top:7px!important}.apcs-alert{margin-top:10px;border-left:3px solid var(--gold);background:#fff8e7;padding:9px 11px;font-size:.78rem;color:#664d1e}.counselor-detail{margin-top:10px;font-size:.76rem;color:var(--muted)}.load-more{display:block;margin:16px auto;border:1px solid #bcc9d6;background:#fff;color:var(--navy);border-radius:9px;padding:9px 28px;font-weight:700}.empty-state{background:#fff;border:1px dashed #bdc9d5;border-radius:13px;padding:42px 20px;text-align:center;color:var(--muted)}.empty-state h2{color:var(--navy);font-size:1.05rem}
.reason-line{margin-top:7px!important;color:#34495e!important;white-space:normal!important;font-size:.78rem!important}.evidence-strip{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}.evidence-chip{background:#edf3f7;border-radius:999px;padding:3px 8px;font-size:.72rem;color:#4b5d6e}.evidence-chip.warn{background:#fff2e9;color:#914d2b}.method-box{margin-top:12px;border:1px solid #dbe4eb;background:#fff;border-radius:9px;padding:10px}.method-box h3{font-size:.82rem;color:var(--navy);margin:0 0 5px}.method-box p{font-size:.75rem;color:var(--muted);margin:0}
.position-compact{font-size:.88rem!important;color:var(--blue)!important;white-space:nowrap}.position-box{margin:6px 0 8px;border-left:3px solid var(--blue);border-radius:5px;background:#eef5fa;padding:6px 7px}.position-box.threshold{border-left-color:var(--gold);background:#fbf6ea}.position-box span{display:block;color:var(--muted);font-size:.72rem}.position-box b{display:block;color:var(--navy);font-size:.74rem;line-height:1.45;margin-top:2px}.report-table small{display:block;color:#4e6072;line-height:1.35;margin-top:2px}
.favorites-head{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin:6px 0 16px}.favorites-head h1{font-size:1.35rem;color:var(--navy);margin:0}.favorites-head p{color:var(--muted);font-size:.86rem;margin:3px 0 0}.export-actions{display:flex;gap:8px;align-items:flex-start}.export-menu{position:relative}.export-menu>summary{list-style:none;border:1px solid #bfcbd7;color:var(--navy);background:#fff;border-radius:8px;padding:8px 13px;font-weight:700;cursor:pointer}.export-menu>summary::-webkit-details-marker{display:none}.export-menu>div{position:absolute;right:0;top:44px;z-index:12;width:220px;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow);padding:5px}.export-menu button{display:block;width:100%;border:0;background:#fff;color:var(--navy);padding:9px;text-align:left;border-radius:6px}.export-menu button:hover{background:#eef4f8}.favorite-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.favorite-columns>section{background:#fff;border:1px solid var(--line);border-radius:13px;padding:16px;min-height:280px}.list-title{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:10px}.list-title h2{font-size:1rem;color:var(--navy);margin:0}.list-title span{font-size:.8rem;color:var(--muted)}.favorite-item{border:1px solid var(--line);border-radius:9px;padding:11px;margin-bottom:8px;display:grid;grid-template-columns:1fr auto;gap:8px}.favorite-item strong{font-size:.86rem;color:var(--navy);display:block}.favorite-item small{color:var(--muted);font-size:.73rem}.favorite-item .mini-actions{display:flex;align-items:center;gap:3px}.mini-actions button{border:0;background:#eef3f7;color:var(--navy);border-radius:6px;min-width:30px;height:30px}.mini-actions button.promote{background:var(--navy);color:#fff;padding:0 9px}.warning-box{border:1px solid #e0b9a6;background:#fff5f0;color:#79422c;border-radius:10px;padding:10px 13px;margin-bottom:12px;font-size:.83rem}
dialog{width:min(720px,calc(100vw - 30px));border:0;border-radius:16px;padding:0;box-shadow:0 24px 70px rgba(5,22,38,.3)}dialog::backdrop{background:rgba(10,28,44,.58)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;background:var(--navy);color:#fff;padding:20px 22px}.dialog-head h2{margin:2px 0 0;font-size:1.3rem}.eyebrow{font-size:.72rem;color:#dfc07a;letter-spacing:.1em}.icon-button{border:0;background:rgba(255,255,255,.1);color:#fff;border-radius:50%;width:34px;height:34px;font-size:1.35rem}.method-content{padding:22px}.method-content section{margin-bottom:18px}.method-content h3{font-size:.96rem;color:var(--navy);margin:0 0 5px}.method-content p{font-size:.86rem;color:#536174;margin:0}.formula{margin-top:9px;background:#eef4f8;border-left:3px solid var(--blue);padding:9px 12px;color:var(--navy);font-weight:700;font-size:.85rem}.source-line{border-top:1px solid var(--line);padding-top:13px;font-size:.75rem!important}.toast{position:fixed;left:50%;bottom:30px;transform:translate(-50%,20px);background:#162b3e;color:#fff;border-radius:9px;padding:9px 15px;opacity:0;pointer-events:none;transition:.2s;z-index:60;font-size:.84rem}.toast.show{opacity:1;transform:translate(-50%,0)}.mobile-nav{display:none}
.export-note{background:#eef4f8;padding:10px 12px;border-radius:8px!important;margin:12px 0!important}.confirm-check{display:flex;align-items:flex-start;gap:8px;font-size:.84rem;color:#34495e}.confirm-check input{margin-top:4px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.check-list{display:grid;gap:7px}.check-row{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #edf1f4;padding-bottom:6px;font-size:.84rem}.check-row b.ok{color:var(--green)}.check-row b.warn{color:var(--red)}.print-report{display:none}
body[data-mode="student"] .counselor-only,body[data-mode="student"] .counselor-detail{display:none!important}
.summary-strip{grid-template-columns:repeat(auto-fit,minmax(105px,1fr))}
.filters-panel label,.program-identity p,.reason-line,.legend,.legend-row p,.history-row,.favorite-item small{font-size:.82rem!important}
@media(max-width:1050px){.workspace{grid-template-columns:300px minmax(0,1fr);padding-left:14px;padding-right:14px}.card-main{grid-template-columns:1fr auto}.score-block{grid-column:1/2;border-left:0;padding-left:0;grid-template-columns:repeat(4,auto);justify-content:start}.history-grid{grid-template-columns:1fr 1fr}.summary-strip{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){body{padding-bottom:67px}.topbar{height:62px;padding:0 14px}.brand-mark{width:34px;height:34px}.brand strong{font-size:.88rem}.brand small{font-size:.68rem}.header-actions .text-button,.focus-button{display:none}.view-switch button{font-size:.76rem;padding:6px 8px}.notice{padding:9px 14px;font-size:.8rem}.journey{padding:8px 10px 0;overflow-x:auto;justify-content:flex-start}.journey i{flex:0 0 18px;margin:0 4px}.journey span{font-size:.68rem}.journey b{width:19px;height:19px}.workspace,.workspace.focus{display:block;padding:12px 10px 30px}.sidebar{display:none}.sidebar.mobile-open{display:flex}.sidebar .panel:first-child{position:static}.content.mobile-hidden{display:none}.section-tabs{display:none}.filter-grid{grid-template-columns:1fr}.multi-options{width:100%}.summary-strip{grid-template-columns:repeat(3,1fr);gap:6px}.summary-card{padding:9px}.summary-card strong{font-size:1.08rem}.completion-card{display:block}.completion-card .next{display:inline-block;margin-top:5px}.legend-row{display:block}.legend-row p{text-align:left;margin-top:6px}.card-main{grid-template-columns:1fr auto;padding:14px;gap:10px}.program-identity{grid-column:1/-1}.score-block{grid-column:1/2;display:flex;gap:14px}.score-block>div:nth-child(n+3){display:none}.judgement{grid-column:2/3}.card-actions button{padding:9px 11px}.history-grid{grid-template-columns:1fr}.favorite-columns{grid-template-columns:1fr}.favorites-head{display:block}.export-actions{margin-top:11px;flex-wrap:wrap}.export-menu>div{left:0;right:auto}.mobile-nav{display:grid;grid-template-columns:repeat(3,1fr);position:fixed;z-index:40;bottom:0;left:0;right:0;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);box-shadow:0 -5px 20px rgba(16,44,76,.1)}.mobile-nav button{border:0;background:transparent;color:var(--muted);padding:7px;border-radius:8px;font-size:.8rem;font-weight:700}.mobile-nav button.active{background:#e9f0f6;color:var(--navy)}.toast{bottom:80px;width:max-content;max-width:calc(100vw - 30px)}dialog{max-height:88vh;overflow:auto}.method-content{padding:17px}}
@media print{body.printing-report>*:not(.print-report){display:none!important}body.printing-report .print-report{display:block}.report-page{page-break-after:always;padding:8mm 8mm;color:#172334}.report-page:last-child{page-break-after:auto}.report-head{border-bottom:3px solid #102c4c;padding-bottom:8px;margin-bottom:10px}.report-head h1{font-size:18pt;color:#102c4c;margin:0}.report-head p{font-size:9pt;color:#667386;margin:3px 0}.report-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.report-box{border:1px solid #cdd7df;border-radius:5px;padding:7px}.report-box h2{font-size:10pt;color:#102c4c;margin:0 0 4px}.report-box p{font-size:8.5pt;margin:2px 0}.report-table{border-collapse:collapse;width:100%;font-size:8pt;margin-top:8px}.report-table th,.report-table td{border:1px solid #cdd7df;padding:4px;text-align:left}.report-table th{background:#102c4c;color:#fff}.report-foot{font-size:7.5pt;color:#667386;margin-top:8px}.counseling-space{border:1px dashed #9eabb7;min-height:42px;margin-top:8px;padding:5px;font-size:8pt}}
