:root{--blue:#174ca3;--blue2:#2568ce;--ink:#182c49;--muted:#64758b;--line:#dfe6ef;--bg:#f4f7fb;--soft:#edf3ff;--amber:#936100;--green:#18765e;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.65}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,summary{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:var(--blue);text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:32px;line-height:1.35;letter-spacing:.01em}h2{font-size:22px;line-height:1.5}h3{font-size:17px}.muted,small{color:var(--muted)}small{font-size:12px}.topbar{height:84px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1160px)/2));gap:16px}.brand{display:flex;align-items:center;gap:12px;color:var(--ink)}.brand-mark{height:45px;width:45px;border-radius:13px;display:grid;place-items:center;background:var(--blue);color:#fff;font-weight:700;font-size:15px}.brand b{display:block;font-size:17px;letter-spacing:.08em}.brand small{display:block;font-size:11px;letter-spacing:.08em}.account{display:flex;align-items:center;gap:12px}.account .user-label{font-size:13px}main{max-width:1160px;margin:0 auto;padding:32px 24px 48px;min-height:calc(100vh - 175px)}footer{max-width:1160px;margin:auto;border-top:1px solid var(--line);padding:20px 24px 28px;font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:12px}.nav{display:flex;gap:7px;margin-bottom:32px;flex-wrap:wrap}.nav button{border:0;background:transparent;color:var(--muted);padding:8px 16px;border-radius:9px;font-weight:600}.nav button.active{background:var(--blue);color:#fff}.eyebrow{color:var(--blue);font-size:12px;font-weight:700;letter-spacing:.12em;margin-bottom:8px}.hero{margin:15px 0 28px}.hero p{color:var(--muted);margin-top:12px;font-size:15px}.search-shell{background:#fff;border:1px solid #cad8ec;box-shadow:0 6px 20px #1c42660a;border-radius:14px;display:flex;gap:12px;align-items:center;padding:12px 14px;margin-bottom:18px}.search-shell svg{width:24px;height:24px;stroke:var(--blue);fill:none;stroke-width:1.8;margin-left:7px;flex-shrink:0}.search-shell input{width:100%;border:0;outline:0;padding:10px 0;font-size:17px;min-width:0}.btn{border:1px solid var(--line);border-radius:9px;padding:9px 16px;color:var(--ink);background:#fff;white-space:nowrap;font-weight:600;font-size:14px}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.soft{background:var(--soft);border-color:transparent;color:var(--blue)}.btn.danger{color:#a32c35}.btn.small{font-size:12px;padding:5px 10px}.btn:hover{filter:brightness(.96)}.link{border:0;padding:0;color:var(--blue);background:none;font-size:13px}.meta-line{display:flex;gap:10px 20px;flex-wrap:wrap;color:var(--muted);font-size:12px}.status{display:inline-flex;align-items:center;border-radius:5px;background:#fff4d9;color:var(--amber);font-size:12px;font-weight:600;padding:2px 8px;white-space:nowrap}.status.ok{background:#e8f5ef;color:var(--green)}.status.neutral{background:#edf2f8;color:var(--muted)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:30px 0 14px}.section-heading p{font-size:13px;color:var(--muted)}.school-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.school-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:20px 22px;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--ink);transition:.15s}.school-card:hover{border-color:#85a8d9;box-shadow:0 4px 15px #174ca309;transform:translateY(-1px)}.school-card b{font-size:16px;display:block;line-height:1.5}.school-card small{display:block;margin-top:8px}.arrow{font-size:23px;color:var(--blue);font-weight:400}.empty{background:#fff;border:1px dashed #c8d6e6;text-align:center;padding:45px 20px;border-radius:13px;color:var(--muted)}.empty b{display:block;color:var(--ink);font-size:18px;margin-bottom:9px}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:24px}.detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:22px 0}.detail-head .location{margin-top:9px;color:var(--muted);font-size:13px}.actions{display:flex;gap:9px;flex-wrap:wrap}.filterbar{display:flex;gap:15px;align-items:flex-end;flex-wrap:wrap;padding:18px 22px;border:1px solid var(--line);background:#fff;border-radius:12px;margin:18px 0}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label,.field-label{font-size:12px;color:var(--muted);font-weight:600}input,select,textarea{border:1px solid #ccd6e3;background:#fff;color:var(--ink);border-radius:8px;padding:9px 11px;min-width:0;max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #b3cdf6;outline-offset:1px}.filterbar select{min-width:120px}.filterbar .major-field{flex:1;max-width:350px}.summary-grid{display:grid;grid-template-columns:260px 1fr;gap:20px;margin:20px 0}.total-card{background:var(--blue);color:#fff;border-radius:14px;padding:27px 28px;display:flex;flex-direction:column;justify-content:center}.total-card .label{color:#dce8ff;font-size:13px}.total-number{font-size:65px;font-weight:700;line-height:1.25;letter-spacing:-.04em;margin:13px 0 9px;font-variant-numeric:tabular-nums}.total-number small{font-size:16px;color:#e1eaff;margin-left:9px;letter-spacing:0}.total-card .foot{font-size:12px;color:#dce8ff}.year-overview{padding:20px 24px}.annual-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px;margin-top:20px}.annual-item{border-left:2px solid #e6edf7;padding-left:12px}.annual-item span{font-size:12px;color:var(--muted)}.annual-item strong{display:block;font-size:29px;font-weight:650;line-height:1.45;font-variant-numeric:tabular-nums}.annual-item .missing{font-size:13px;font-weight:500;line-height:2}.notice{background:#fffbf1;border:1px solid #f0e1bc;color:#82632c;border-radius:10px;padding:12px 16px;font-size:12px;margin:14px 0}.notice p+p{margin-top:3px}.year-block{background:#fff;border:1px solid var(--line);border-radius:12px;margin:12px 0;overflow:hidden}.year-block>summary{list-style:none;cursor:pointer;padding:19px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px}.year-block>summary::-webkit-details-marker{display:none}.year-block>summary .caret{color:var(--muted);font-size:12px}.year-block[open]>summary{border-bottom:1px solid var(--line)}.year-block[open] .caret{transform:rotate(180deg)}.year-body{padding:18px 22px}.chips{display:flex;flex-wrap:wrap;gap:9px}.chip{border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 10px;font-size:12px;color:var(--ink);text-align:left;line-height:1.4}.chip b{color:var(--blue);margin-left:8px}.chip.selected{border-color:var(--blue);background:var(--soft);color:var(--blue)}.roster-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:20px 0 12px;font-size:13px}.roster-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.student{padding:12px 13px;background:var(--bg);border-radius:8px;min-width:0}.student b{font-size:14px}.student small{display:block;font-size:11px;margin-top:3px;overflow-wrap:anywhere}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin:18px 0 0;color:var(--muted);font-size:12px}.login-layout{display:grid;grid-template-columns:1.1fr 1fr;max-width:970px;margin:45px auto;min-height:445px;gap:55px;align-items:center}.login-intro{padding:15px}.login-intro h1{font-size:39px;line-height:1.4}.login-intro p{margin-top:18px;max-width:400px;color:var(--muted)}.login-steps{display:flex;gap:25px;margin-top:38px}.login-steps b{display:block;color:#7a9fc9;font-size:20px;font-weight:400;margin-bottom:5px}.login-steps span{font-size:12px;color:var(--muted)}.login-box{padding:32px}.login-box p{color:var(--muted);font-size:13px;margin:9px 0 24px}.login-box .field{margin:16px 0}.login-box input{padding:12px}.login-box .btn{width:100%;margin-top:10px;padding:12px}.form-error{color:#b02c35;font-size:13px;min-height:22px;margin-top:10px}.admin-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.admin-tabs button.active{border-color:var(--blue);background:var(--soft);color:var(--blue)}.admin-stack{display:grid;gap:15px}.mapping{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:20px 0}.checks{display:flex;gap:15px;flex-wrap:wrap;margin:16px 0}.check{display:flex;align-items:center;gap:7px;font-size:13px}.check input{width:17px;height:17px}.review-card{padding:20px;border:1px solid var(--line);border-radius:11px;background:#fff}.review-card h3{font-size:15px;line-height:1.5}.review-card p{font-size:12px;margin:9px 0;overflow-wrap:anywhere}.review-card .source{color:var(--muted);font-size:11px}.review-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.stack{display:grid;gap:15px}.version-row,.user-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:17px 0;border-bottom:1px solid var(--line)}.version-row:last-child,.user-row:last-child{border:0}.version-row small,.user-row small{display:block;margin-top:4px}.loading{padding:70px 20px;text-align:center;color:var(--muted)}.help{max-width:850px}.help h3{margin:22px 0 8px}.help p,.help li{font-size:14px;color:#52657d}.help li{margin:8px 0}.help ul{padding-left:22px}dialog{border:0;border-radius:16px;width:min(620px,calc(100vw - 28px));max-height:85vh;padding:28px;color:var(--ink);box-shadow:0 25px 80px #12223840}dialog::backdrop{background:#13213966}dialog h2{font-size:21px;margin-bottom:15px}dialog .field{margin:12px 0}dialog .actions{margin-top:22px;justify-content:flex-end}dialog textarea{width:100%;min-height:150px;resize:vertical}.dialog-results{display:grid;gap:7px;margin-top:12px;max-height:230px;overflow:auto}.dialog-results button{font-size:13px;padding:11px}.selected-school{background:var(--soft);padding:12px;border-radius:9px;font-size:13px}.hidden{display:none!important}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(25px);opacity:0;pointer-events:none;z-index:20;border-radius:9px;background:#183354;color:#fff;padding:12px 20px;font-size:14px;max-width:90vw;transition:.2s}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.progress-line{font-size:13px;color:var(--blue);margin:15px 0}progress{width:100%;height:10px;accent-color:var(--blue)}.pad-top{margin-top:18px}.text-block{white-space:pre-line}.mono{font-variant-numeric:tabular-nums}.review-tools{border-top:1px solid var(--line);padding-top:17px;margin-top:25px}.result-count{font-size:13px;color:var(--muted)}
@media(max-width:800px){.summary-grid{grid-template-columns:210px 1fr}.annual-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.roster-list{grid-template-columns:repeat(2,minmax(0,1fr))}.login-layout{gap:20px}.login-intro h1{font-size:31px}.mapping{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-head{flex-direction:column}.annual-item strong{font-size:25px}}
@media(max-width:560px){:root{font-size:14px}.topbar{height:72px;padding:0 17px}.brand b{font-size:14px}.brand-mark{width:37px;height:37px;border-radius:10px;font-size:13px}.brand small{font-size:10px}.brand{gap:9px}.account{gap:8px}.account .user-label{display:none}main{padding:22px 16px 35px}footer{display:block;padding:18px 16px;font-size:10px}footer span{display:block;margin-top:5px}.nav{margin-bottom:24px}.nav button{padding:7px 12px;font-size:13px}h1{font-size:26px}.hero{margin-top:8px}.hero p{font-size:13px}.search-shell{padding:8px 10px;gap:8px}.search-shell input{font-size:15px}.search-shell .btn{padding:9px 12px}.search-shell svg{width:20px;margin:0}.school-grid{grid-template-columns:1fr}.school-card{padding:17px}.school-card b{font-size:15px}.meta-line{font-size:11px;gap:5px 12px}.section-heading{margin-top:25px}.section-heading h3{font-size:15px}.summary-grid{grid-template-columns:1fr;gap:12px}.total-card{padding:20px 23px;display:block}.total-number{font-size:52px;margin:4px 0}.total-card .label{font-size:12px}.annual-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.year-overview{padding:19px}.panel{padding:19px}.filterbar{padding:15px;gap:11px}.filterbar .field{flex:1}.filterbar select{min-width:0;width:100%;font-size:13px}.filterbar .major-field{flex-basis:100%;max-width:none}.detail-head h2{font-size:23px}.actions .btn{font-size:12px}.year-block>summary{padding:16px}.year-body{padding:15px}.year-body .chips{gap:7px}.roster-list{grid-template-columns:repeat(2,minmax(0,1fr))}.student{padding:10px}.student b{font-size:13px}.chip{padding:7px 8px;font-size:11px}.login-layout{display:block;margin:15px 0}.login-intro{padding:0 4px 25px}.login-intro h1{font-size:29px}.login-intro p{margin-top:12px;font-size:13px}.login-steps{display:none}.login-box{padding:24px}.login-box h2{font-size:21px}.mapping{grid-template-columns:1fr}.version-row,.user-row{align-items:flex-start}.version-row b,.user-row b{font-size:13px}.admin-tabs{gap:6px}.admin-tabs .btn{padding:7px 10px;font-size:12px}dialog{padding:22px}.review-head{flex-wrap:wrap}.review-card{padding:16px}.notice{font-size:11px}.roster-title{align-items:flex-start;flex-wrap:wrap}.roster-title .btn{font-size:11px}.account .btn{font-size:11px;padding:6px 9px}}
