@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_f367f3{font-family:Inter,Inter Fallback;font-style:normal}.__variable_f367f3{--font-inter:"Inter","Inter Fallback"}:root{--bg:#f8f9fc;--card:#ffffff;--card-2:#f1f5f9;--ink:#1e293b;--muted:#64748b;--line:#e2e8f0;--line-strong:#cbd5e1;--accent:#4f46e5;--accent-hover:#4338ca;--accent-ink:#ffffff;--accent-soft:#eef2ff;--teal:#0d9488;--teal-soft:#f0fdfa;--amber:#d97706;--amber-soft:#fef3c7;--rose:#e11d48;--rose-soft:#ffe4e6;--slate:#475569;--slate-soft:#f1f5f9;--ok:#0d9488;--ok-soft:#f0fdfa;--warn:#d97706;--warn-soft:#fef3c7;--bad:#e11d48;--bad-soft:#ffe4e6;--ring:rgba(79,70,229,0.30);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--r-sm:8px;--r:10px;--r-lg:14px;--shadow-1:0 1px 3px rgba(15,23,42,0.06),0 1px 2px rgba(15,23,42,0.04);--shadow-2:0 8px 24px rgba(15,23,42,0.10);--hero-grad:linear-gradient(135deg,#1e1b4b,#312e81 55%,#4338ca);--text-xs:13px;--text-sm:14px;--text-base:16px;--text-lg:20px;--text-xl:24px;--text-2xl:30px;--sidebar-w:232px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-inter),-apple-system,"PingFang TC","Microsoft JhengHei","Noto Sans TC",sans-serif;font-size:var(--text-base);line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.content{min-width:0}.content>main{max-width:1240px;margin:0 auto;padding:var(--s-5) var(--s-4) 60px}.sidebar{position:-webkit-sticky;position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-4) var(--s-3);background:var(--card);border-right:1px solid var(--line)}.brand-link{display:inline-flex;align-items:center;gap:var(--s-3);color:var(--ink)}.brand-link:hover{text-decoration:none}.sidebar .brand-link{padding:var(--s-2) var(--s-2) var(--s-3)}.year-chip{align-self:flex-start;margin:0 0 var(--s-2) var(--s-2);background:var(--accent-soft);color:var(--accent);font-size:var(--text-xs);font-weight:600;padding:2px 10px;border-radius:999px}.brand-name{display:block;font-weight:700;font-size:17px;line-height:1.15}.brand-sub{display:block}.brand-sub,.nav-group-label{color:var(--muted);font-size:var(--text-xs)}.nav-group-label{font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:0 var(--s-3);margin:var(--s-4) 0 var(--s-1)}.nav-item{display:flex;align-items:center;gap:var(--s-3);padding:8px var(--s-3);border-radius:var(--r-sm);color:var(--ink);font-weight:500;font-size:15px;text-decoration:none;transition:background .15s,color .15s}.nav-item:hover{background:var(--accent-soft);text-decoration:none}.nav-item.active{background:var(--accent);color:var(--accent-ink)}.nav-ico{width:18px;height:18px;flex:none;color:var(--muted)}.nav-item:hover .nav-ico{color:var(--accent)}.nav-item.active .nav-ico{color:var(--accent-ink)}.sidebar-foot{margin-top:auto;padding-top:var(--s-4);border-top:1px solid var(--line);display:flex;flex-direction:column;gap:var(--s-2);font-size:var(--text-sm)}.mobile-bar{display:none}.hamburger{background:none;border:none;padding:var(--s-2);cursor:pointer;color:var(--ink);display:inline-flex;border-radius:var(--r-sm)}.hamburger:hover{background:var(--accent-soft)}.scrim{display:none}@media (max-width:860px){.app{grid-template-columns:1fr}.mobile-bar{display:flex;align-items:center;gap:var(--s-3);position:-webkit-sticky;position:sticky;top:0;z-index:30;padding:var(--s-2) var(--s-3);background:var(--card);border-bottom:1px solid var(--line)}.sidebar{position:fixed;left:0;top:0;z-index:50;width:280px;height:100vh;transform:translateX(-100%);transition:transform .2s ease;box-shadow:var(--shadow-2)}.sidebar.open{transform:none}.scrim.open{display:block;position:fixed;inset:0;z-index:40;background:rgba(20,12,10,.4)}.content>main{padding:var(--s-4)}}h1{font-size:var(--text-2xl);font-weight:700;letter-spacing:-.01em;margin:0 0 var(--s-1)}h2{font-size:var(--text-lg);margin:var(--s-5) 0 var(--s-3)}h2,h3{font-weight:600}h3{font-size:var(--text-base);margin:var(--s-4) 0 var(--s-2)}p.sub{color:var(--muted)}.page-hero,p.sub{margin:0 0 var(--s-5)}.page-hero{background:var(--hero-grad);color:#fff;border-radius:var(--r-lg);padding:var(--s-5) var(--s-6);box-shadow:var(--shadow-1)}.page-hero .hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s-4);flex-wrap:wrap}.page-hero h1{margin:0;color:#fff;font-size:var(--text-2xl)}.page-hero .hero-sub{margin:6px 0 0;color:rgba(255,255,255,.78);font-size:var(--text-sm);max-width:70ch}.page-hero .hero-actions{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.page-hero .header-meta{display:flex;gap:var(--s-3);flex-wrap:wrap;margin-top:var(--s-5)}.stat-pill{background:rgba(255,255,255,.12);border-radius:var(--r-sm);padding:10px 18px;display:flex;flex-direction:column;gap:2px;min-width:84px}.stat-pill .val{font-size:var(--text-xl);font-weight:700;line-height:1.1}.stat-pill .lbl{font-size:var(--text-xs);opacity:.7;text-transform:uppercase;letter-spacing:.05em}.stat-pill.warn .val{color:#fde68a}.stat-pill.bad .val{color:#fecdd3}.page-hero a{color:#fff}.page-hero .btn.ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3);color:#fff}.page-hero .btn.ghost:hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.5)}@media (max-width:620px){.page-hero{padding:var(--s-5) var(--s-4)}}.row{display:flex;align-items:center;gap:var(--s-3)}.row.wrap{flex-wrap:wrap}.between{align-items:center;justify-content:space-between}.between,.stack{display:flex;gap:var(--s-3)}.stack{flex-direction:column}.ml-auto{margin-left:auto}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));grid-gap:var(--s-4);gap:var(--s-4);margin:var(--s-4) 0}.card{display:flex;flex-direction:column;gap:var(--s-2);background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s-4);min-width:0;box-shadow:var(--shadow-1)}.card .num{font-size:var(--text-2xl);font-weight:700;letter-spacing:-.01em;color:var(--accent)}.card .lbl{color:var(--muted);font-size:var(--text-sm)}.card-ico{width:40px;height:40px;flex:none;border-radius:var(--r-sm);background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center}.card.teal .num{color:var(--teal)}.card.teal .card-ico{background:var(--teal-soft);color:var(--teal)}.card.amber .num{color:var(--amber)}.card.amber .card-ico{background:var(--amber-soft);color:var(--amber)}.card.rose .num{color:var(--rose)}.card.rose .card-ico{background:var(--rose-soft);color:var(--rose)}.card.slate .num{color:var(--slate)}.card.slate .card-ico{background:var(--slate-soft);color:var(--slate)}.card.warn .num{color:var(--warn)}.card.warn .card-ico{background:var(--warn-soft);color:var(--warn)}.card.bad .num{color:var(--bad)}.card.bad .card-ico{background:var(--bad-soft);color:var(--bad)}a.card{color:inherit;transition:box-shadow .15s,transform .15s,border-color .15s}a.card,a.card:hover{text-decoration:none}a.card:hover{box-shadow:0 0 0 3px var(--ring),var(--shadow-2);transform:translateY(-2px);border-color:var(--accent)}.navcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:var(--s-4);gap:var(--s-4);margin:var(--s-4) 0 var(--s-6)}.navcard{display:flex;gap:var(--s-3);align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s-4);box-shadow:var(--shadow-1);color:var(--ink);text-decoration:none;transition:box-shadow .15s,transform .15s,border-color .15s}.navcard:hover{box-shadow:var(--shadow-2);transform:translateY(-2px);border-color:var(--line-strong);text-decoration:none}.navcard-ico{width:40px;height:40px;flex:none;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center}.navcard-ico,.navcard-ico.ico-indigo{background:var(--accent-soft);color:var(--accent)}.navcard-ico.ico-teal{background:var(--teal-soft);color:var(--teal)}.navcard-ico.ico-amber{background:var(--amber-soft);color:var(--amber)}.navcard-ico.ico-rose{background:var(--rose-soft);color:var(--rose)}.navcard-ico.ico-slate{background:var(--slate-soft);color:var(--slate)}.navcard-body{min-width:0}.navcard h3{margin:0 0 2px;font-size:var(--text-base);font-weight:700;color:var(--ink)}.navcard p{margin:0;color:var(--muted);font-size:var(--text-sm)}.navcard-count{margin-left:auto;font-weight:700;font-size:var(--text-lg);color:var(--accent)}table.data{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;font-size:15px;box-shadow:var(--shadow-1)}table.data td,table.data th{padding:9px var(--s-3);text-align:left;border-bottom:1px solid var(--line);vertical-align:top}table.data th{background:var(--card-2);font-weight:700;white-space:nowrap;font-size:var(--text-xs);color:var(--muted);letter-spacing:.05em;text-transform:uppercase;border-bottom:2px solid var(--line)}table.data tbody tr:last-child td{border-bottom:none}table.data tbody tr:hover td{background:var(--card-2)}table.data td.num,table.data th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gb-grid td,.gb-grid th{white-space:nowrap;padding-left:var(--s-2);padding-right:var(--s-2)}.gb-grid .gb-name{text-align:left}.gb-grid .gb-spacer{width:100%;min-width:0;padding:0;border-bottom:1px solid var(--line)}table.data tr.stripe-ok td:first-child{border-left:3px solid var(--ok)}table.data tr.stripe-warn td:first-child{border-left:3px solid var(--warn)}table.data tr.stripe-bad td:first-child{border-left:3px solid var(--bad)}table.data tr.stripe-muted td:first-child{border-left:3px solid var(--line-strong)}.scroll-x{overflow-x:auto}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:var(--text-xs);font-weight:600;background:var(--card-2);color:var(--muted)}.badge.withdrawn{background:var(--bad-soft);color:var(--bad)}.badge.enrolled{background:var(--ok-soft);color:var(--ok)}.badge.missing{background:var(--warn-soft);color:var(--warn)}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:var(--text-xs);font-weight:600;line-height:1.5;background:var(--card-2);color:var(--muted);white-space:nowrap}.chip.indigo{background:var(--accent-soft);color:var(--accent)}.chip.teal{background:var(--teal-soft);color:var(--teal)}.chip.amber{background:var(--amber-soft);color:var(--amber)}.chip.rose{background:var(--rose-soft);color:var(--rose)}.chip.slate{background:var(--slate-soft);color:var(--slate)}.chip svg{width:13px;height:13px;flex:none}.mono{font-family:ui-monospace,Menlo,monospace;font-size:var(--text-sm)}.muted{color:var(--muted)}.small{font-size:var(--text-sm)}.prov-mark{color:var(--accent);font-weight:700;margin-left:2px;cursor:help}.flow-lane{display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap;padding:var(--s-2) 0;border-bottom:1px dashed var(--line)}.flow-lane:last-child{border-bottom:none}.flow-lane .lane-name{min-width:96px;font-weight:600}.flow-node{border:1px solid var(--line);border-radius:var(--r-sm);padding:4px 10px;background:var(--card);text-align:center;min-width:52px}.flow-node .n-lbl{display:block;font-size:var(--text-xs);color:var(--muted)}.flow-node .n-val{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.flow-node.assess{background:var(--card-2)}.flow-node.avg,.flow-node.weighted{border-color:var(--accent)}.flow-node.weighted{background:var(--accent-soft)}.flow-node.total{background:var(--teal-soft);border-color:var(--teal)}.flow-node.grade{background:var(--amber-soft);border-color:var(--amber)}.flow-node.report{background:var(--slate-soft);border-color:var(--line-strong);border-style:dashed}.flow-node.missing{color:var(--warn);border-color:var(--warn);background:var(--warn-soft)}.flow-arrow{color:var(--muted);font-weight:700}.flow-op{color:var(--muted);font-size:var(--text-sm)}.flow-sum{margin-top:var(--s-3);padding-top:var(--s-3);border-top:2px solid var(--line);display:flex;align-items:center;gap:var(--s-2);flex-wrap:wrap}ul.plain{list-style:none;padding-left:0;margin:6px 0}ul.plain li{margin:3px 0}.panel,form.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:var(--s-5);margin:var(--s-4) 0;box-shadow:var(--shadow-1)}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 22px;gap:10px 22px}label.f{display:block;margin-bottom:var(--s-2)}label.f span{display:block;font-size:var(--text-sm);color:var(--slate);font-weight:500;margin-bottom:2px}input[type=date],input[type=email],input[type=number],input[type=text],select,textarea{width:100%;box-sizing:border-box;padding:7px 9px;border:1px solid var(--line-strong);border-radius:var(--r-sm);font:inherit;background:#fff;transition:border-color .15s,box-shadow .15s}input[type=date],input[type=email],input[type=number],input[type=text],select{height:38px}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:12px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;background:var(--accent);color:var(--accent-ink);border:none;border-radius:var(--r-sm);padding:8px 18px;font:inherit;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s,box-shadow .15s,border-color .15s}.btn:not(.small),button:not(.small){min-height:38px}.btn svg,button svg{flex:none}.btn:hover,button:hover{background:var(--accent-hover)}.btn.secondary,button.secondary{background:#fff;color:var(--ink);border:1px solid var(--line-strong)}.btn.secondary:hover,button.secondary:hover{background:var(--card-2);border-color:var(--muted)}.btn.ghost,button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line-strong)}.btn.ghost:hover,button.ghost:hover{background:var(--card-2);border-color:var(--muted)}@media (max-width:620px){.grid2{grid-template-columns:1fr}}.id-pill{font-size:.58em;font-weight:600;letter-spacing:.5px;vertical-align:middle;background:rgba(255,255,255,.18);padding:3px 9px;border-radius:7px;white-space:nowrap}.searchbar{display:flex;gap:10px;margin:var(--s-4) 0;flex-wrap:wrap;align-items:center}.searchbar input{flex:1 1 240px;width:auto;max-width:380px}.searchbar select{min-width:150px}.searchbar button,.searchbar select{flex:0 0 auto;width:auto}.warnlist{background:var(--warn-soft);border:1px solid #f2e2bd;border-left:3px solid var(--warn);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:10px 16px}.warnlist li{margin:3px 0;font-size:var(--text-sm)}.notice{background:var(--accent-soft);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 var(--r-sm) var(--r-sm) 0;padding:10px 16px;margin:var(--s-3) 0;color:var(--ink)}.notice.warn{background:var(--warn-soft);border-color:#f2e2bd;border-left-color:var(--warn)}.notice.info{background:var(--teal-soft);border-color:#cdeee9;border-left-color:var(--teal)}.notice.bad{background:var(--bad-soft);border-color:#f6ccd3;border-left-color:var(--bad)}.tabbar{display:flex;flex-wrap:wrap;gap:4px;border-bottom:2px solid var(--line);margin:var(--s-4) 0 0;padding-bottom:0;position:-webkit-sticky;position:sticky;top:0;background:var(--bg);z-index:5;padding-top:6px}.tabbar .tab{background:var(--card-2);color:var(--ink);border:1px solid var(--line);border-bottom:none;border-radius:8px 8px 0 0;padding:6px 12px;font-weight:500;cursor:pointer}.tabbar .tab.active{background:var(--card);border-color:var(--accent);font-weight:700}.tabbar .tab .badge{margin-left:6px}.stickybar{position:-webkit-sticky;position:sticky;bottom:0;z-index:6;display:flex;gap:18px;align-items:center;background:var(--card);border-top:2px solid var(--accent);padding:10px 16px;margin-top:18px;box-shadow:0 -4px 14px rgba(0,0,0,.06)}.print-sheet .sheet-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}.print-sheet table.data{width:100%}.print-sheet table.data td,.print-sheet table.data th{border-color:#999}.print-sheet .markcell{height:30px}@media print{.mobile-bar,.no-print,.scrim,.sidebar{display:none!important}.app{display:block}.content>main{max-width:none;margin:0;padding:0}@page{size:landscape;margin:8mm}body,html{background:#fff}.page-hero{display:none!important}.panel{border:none!important;box-shadow:none!important;padding:0!important;margin:0 0 8px!important}.print-sheet table.data{border-collapse:collapse;box-shadow:none}.print-sheet table.data td,.print-sheet table.data th{border:1px solid #000;background:#fff!important;color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact}.print-sheet table.data thead{display:table-header-group}.print-sheet tr{page-break-inside:avoid;break-inside:avoid}.print-sheet input{border:none!important;background:transparent!important;box-shadow:none!important;width:100%!important;height:auto!important;padding:1px 2px!important;text-align:right;font:inherit;color:#000}.print-sheet .scroll-x{overflow:visible!important}.print-sheet .gb-grid .gb-spacer{display:none!important}.print-sheet .gb-grid .markcell input{width:30px!important}.print-sheet{line-height:1.15}.print-sheet,.print-sheet table.data{font-size:10px}.print-sheet table.data td,.print-sheet table.data th{padding:2px 4px}.print-sheet table.data th{font-size:9px;letter-spacing:0}.print-sheet .markcell{height:18px}.print-sheet .sheet-head{margin-bottom:6px}.print-sheet .sheet-head div[style]{font-size:13px!important}}