@import url('https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;600;700&display=swap');
:root{--primary:#1e40af;--primary-2:#2563eb;--ink:#172554;--muted:#64748b;--bg:#f8fafc;--surface:#fff;--line:#dbeafe;--success:#047857;--success-bg:#ecfdf5;--warning:#b45309;--warning-bg:#fffbeb;--danger:#b91c1c;--danger-bg:#fef2f2;--shadow:0 12px 32px rgba(30,64,175,.09);--radius:16px}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-width:320px;color:var(--ink);font:16px/1.55 "Noto Sans SC","Fira Sans",system-ui,sans-serif;background:radial-gradient(circle at 9% -5%,#dbeafe 0,transparent 25rem),var(--bg)}button,input,select{font:inherit}button{cursor:pointer}.skip-link{position:fixed;z-index:100;left:1rem;top:-3rem;background:var(--ink);color:#fff;padding:.5rem .75rem;border-radius:.5rem}.skip-link:focus{top:1rem}.shell{min-height:100dvh}.topbar{height:68px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,4vw,56px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:11px;font-weight:700;color:var(--ink);letter-spacing:.02em}.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(145deg,var(--primary),var(--primary-2));display:grid;place-items:center;color:#fff;font-weight:700;box-shadow:0 5px 12px #bfdbfe}.topbar-actions{display:flex;gap:10px;align-items:center}.layout{max-width:1180px;margin:0 auto;padding:52px 24px}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:28px;align-items:stretch}.eyebrow{font-size:13px;font-weight:700;color:var(--primary);letter-spacing:.08em}.hero h1{font-size:clamp(32px,5vw,50px);line-height:1.17;letter-spacing:-.04em;margin:14px 0}.hero p{color:var(--muted);max-width:620px;margin:0 0 28px}.trust-list{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.trust{color:#334155;background:#fff;border:1px solid var(--line);padding:7px 11px;border-radius:99px;font-size:13px}.panel,.card{background:var(--surface);border:1px solid rgba(219,234,254,.95);box-shadow:var(--shadow);border-radius:var(--radius)}.query-card{padding:28px}.query-card h2{font-size:20px;margin:0 0:4px}.field{margin:16px 0}.field label{display:block;font-size:14px;font-weight:600;color:#334155;margin-bottom:7px}.field input,.field select{width:100%;height:46px;border:1px solid #cbd5e1;border-radius:10px;padding:0 13px;background:#fff;color:#172554;outline:none}.field input:focus,.field select:focus{border-color:var(--primary-2);box-shadow:0 0 0 3px #dbeafe}.form-note{font-size:12px;color:var(--muted);margin:10px 0 0}.btn{border:0;border-radius:10px;min-height:44px;padding:0 17px;font-weight:700;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}.btn:active{transform:scale(.98)}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 8px 15px rgba(30,64,175,.2)}.btn-primary:hover{background:#1d4ed8}.btn-secondary{background:#eff6ff;color:var(--primary)}.btn-quiet{background:transparent;color:var(--primary);border:1px solid var(--line)}.btn-danger{background:var(--danger-bg);color:var(--danger)}.full{width:100%}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:46px}.metric{padding:19px}.metric-label{font-size:13px;color:var(--muted)}.metric-value{font:700 28px/1.2 "Fira Sans",sans-serif;margin-top:7px}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:32px}.info-block{padding:22px}.info-block h3{font-size:16px;margin:0 0 8px}.info-block p{color:var(--muted);font-size:14px;margin:0}.result{margin-top:18px;padding:16px;border-radius:12px}.result.success{background:var(--success-bg);border:1px solid #a7f3d0}.result.empty,.notice{background:var(--warning-bg);border:1px solid #fde68a;color:#78350f}.result h3{margin:0 0 10px;color:#065f46;font-size:16px}.record-line{display:flex;justify-content:space-between;gap:14px;border-top:1px solid #bbf7d0;padding-top:10px;margin-top:10px;font-size:14px}.record-line strong{color:#064e3b}.admin-shell{display:grid;grid-template-columns:244px 1fr;min-height:100dvh}.sidebar{background:#172554;color:#dbeafe;padding:23px 14px;position:sticky;top:0;height:100dvh}.sidebar .brand{color:#fff;padding:0 10px 25px}.sidebar nav{display:grid;gap:5px}.nav-item{width:100%;border:0;background:transparent;color:#bfdbfe;text-align:left;padding:12px 13px;border-radius:9px;font-weight:600}.nav-item:hover,.nav-item.active{background:#1e3a8a;color:#fff}.side-footer{position:absolute;bottom:18px;left:24px;right:24px;font-size:12px;color:#93c5fd}.admin-main{min-width:0}.admin-header{height:68px;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);padding:0 30px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10}.admin-content{padding:28px 30px;max-width:1440px}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:24px}.page-heading h1{font-size:26px;line-height:1.2;margin:0}.page-heading p{margin:5px 0 0;color:var(--muted);font-size:14px}.admin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.admin-metrics .metric{box-shadow:none}.section{margin-top:23px;padding:22px}.section h2{font-size:17px;margin:0}.section-head{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:18px}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.filters input,.filters select{height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:0 10px;background:#fff}.filters input{min-width:220px}.table-wrap{overflow:auto;border:1px solid #e2e8f0;border-radius:10px}.data-table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:14px}.data-table th{background:#f8fafc;text-align:left;color:#475569;font-size:12px;letter-spacing:.02em}.data-table th,.data-table td{padding:12px 13px;border-bottom:1px solid #e2e8f0}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#f8fbff}.mono{font-family:"Fira Code",ui-monospace,monospace;font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:99px;font-size:12px;font-weight:700}.badge.green{background:var(--success-bg);color:var(--success)}.badge.blue{background:#eff6ff;color:var(--primary)}.badge.amber{background:var(--warning-bg);color:var(--warning)}.actions{display:flex;gap:6px}.action{border:0;background:#eff6ff;color:var(--primary);border-radius:7px;padding:6px 9px;font-size:12px;font-weight:700}.action.danger{background:var(--danger-bg);color:var(--danger)}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.dropzone{border:2px dashed #93c5fd;border-radius:13px;padding:25px;background:#f8fbff}.dropzone input{width:100%;padding:11px;background:#fff;border:1px solid var(--line);border-radius:8px}.upload-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.upload-fields .field{margin:0}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.52);display:grid;place-items:center;padding:18px;z-index:40}.modal{width:min(680px,100%);max-height:90dvh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 20px 50px rgba(15,23,42,.25);padding:24px}.modal h2{margin:0 0 16px;font-size:20px}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.toast{position:fixed;right:22px;bottom:22px;z-index:70;background:#0f172a;color:#fff;padding:12px 16px;border-radius:10px;box-shadow:var(--shadow);font-size:14px}.empty-state{text-align:center;padding:36px;color:var(--muted)}.login{min-height:100dvh;display:grid;place-items:center;padding:24px}.login-card{width:min(410px,100%);padding:32px}.login-card h1{font-size:24px;margin:16px 0 4px}.login-card p{font-size:14px;color:var(--muted);margin:0 0 20px}.muted{color:var(--muted)}.hide{display:none!important}
@media(max-width:800px){.layout{padding:32px 16px}.hero,.info-grid,.upload-grid{grid-template-columns:1fr}.metrics,.admin-metrics{grid-template-columns:repeat(2,1fr)}.admin-shell{display:block}.sidebar{height:auto;position:static;padding:13px;display:flex;align-items:center;gap:12px;overflow:auto}.sidebar .brand{padding:0;white-space:nowrap}.sidebar nav{display:flex;gap:5px}.nav-label{display:none}.nav-item{white-space:nowrap;padding:9px 11px}.side-footer{display:none}.admin-header{padding:0 16px}.admin-content{padding:20px 16px}.page-heading{display:block}.page-heading .btn{margin-top:14px}.modal-grid,.upload-fields{grid-template-columns:1fr}.table-wrap{margin:0 -6px}.topbar{padding:0 16px}.topbar-actions .btn-quiet{display:none}}
@media(max-width:430px){.metrics{grid-template-columns:1fr 1fr}.hero h1{font-size:32px}.query-card{padding:21px}.admin-metrics{grid-template-columns:1fr 1fr}.record-line{display:block}.record-line span{display:block;margin-top:4px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
.result-record>.congrats-line{color:#15803d;line-height:1.55}
.query-stage h1{font-size:clamp(17px,5.8vw,32px);letter-spacing:-.07em;line-height:1.2;white-space:nowrap}
.result-icon.celebrate{background:linear-gradient(145deg,#fef3c7,#fde68a);font-size:28px;box-shadow:0 8px 18px rgba(217,119,6,.18)}.result-record>.congrats-line{font-size:17px}.congrats-name{color:#2563eb;margin:0 2px}.congrats-school{color:#db2777;margin:0 2px}

/* 家长查询端：极简圆角毛玻璃 */
.user-shell{position:relative;overflow:hidden;background:linear-gradient(140deg,#edf5ff 0%,#e6eeff 48%,#f8f5ff 100%)}.user-shell::before,.user-shell::after{content:"";position:fixed;border-radius:999px;filter:blur(2px);pointer-events:none}.user-shell::before{width:360px;height:360px;left:-130px;bottom:-130px;background:rgba(96,165,250,.35)}.user-shell::after{width:280px;height:280px;right:-90px;top:90px;background:rgba(196,181,253,.35)}.user-topbar{background:rgba(255,255,255,.38);border-color:rgba(255,255,255,.7);backdrop-filter:blur(18px)}.user-layout{min-height:calc(100dvh - 68px);display:grid;place-items:center;padding:36px 18px 60px;position:relative;z-index:1}.query-stage{width:min(100%,460px);text-align:center}.title-team{margin-bottom:9px;color:#3355b9;font-size:14px;font-weight:700;letter-spacing:.12em}.query-stage h1{margin:0;font-size:clamp(28px,8.2vw,42px);letter-spacing:-.055em;line-height:1.16;color:#172554}.title-subtitle{margin:8px 0 24px;color:#4763bd;font-size:16px;font-weight:600}.glass-card{padding:26px 22px;background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.86);box-shadow:0 20px 48px rgba(30,64,175,.14),inset 0 1px rgba(255,255,255,.8);backdrop-filter:blur(22px)}.query-card h2{font-size:17px;text-align:left;margin:0 0 18px;color:#1e3a8a}.glass-card .field{text-align:left;margin:14px 0}.glass-card .field label{font-size:13px}.glass-card .field input{height:50px;border-color:rgba(148,163,184,.42);background:rgba(255,255,255,.68);border-radius:13px}.glass-card .btn{height:52px;border-radius:13px;margin-top:8px}.btn:disabled{opacity:.62;cursor:wait}.result-backdrop{backdrop-filter:blur(9px);background:rgba(15,23,42,.28)}.result-modal{position:relative;width:min(92vw,460px);padding:30px 24px;border:1px solid rgba(255,255,255,.85);background:rgba(255,255,255,.84);backdrop-filter:blur(28px);text-align:center}.modal-close{position:absolute;right:12px;top:10px;width:40px;height:40px;border:0;border-radius:50%;background:rgba(226,232,240,.7);color:#475569;font-size:27px;line-height:1;cursor:pointer}.result-icon{width:48px;height:48px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;background:#dbeafe;color:#1e40af;font-size:24px;font-weight:700}.result-modal.success .result-icon{background:#dcfce7;color:#15803d}.result-modal h2{font-size:21px;margin:0 0 16px;color:#172554}.result-copy{margin:0;color:#64748b}.result-list{text-align:left;display:grid;gap:11px;margin-top:14px}.result-record{padding:15px;border:1px solid rgba(191,219,254,.9);border-radius:14px;background:rgba(255,255,255,.65)}.result-record>strong{display:block;color:#1e3a8a;font-size:16px}.result-record>span{font-size:12px;color:#64748b}.result-record dl{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:13px 0 0}.result-record dl>div{padding:8px 10px;border-radius:9px;background:rgba(239,246,255,.8)}.result-record dt{font-size:11px;color:#64748b}.result-record dd{margin:2px 0 0;color:#1e3a8a;font-size:13px;font-weight:700}.duplicate-alert{margin:0 0 12px;padding:9px 11px;border-radius:10px;text-align:left;background:#fff7ed;color:#9a3412;font-size:13px;font-weight:600}@media(max-width:430px){.user-topbar .btn-quiet{display:none}.user-layout{padding-top:26px}.glass-card{padding:23px 18px}.result-record dl{grid-template-columns:1fr}}

.query-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 22px;padding:5px;border-radius:14px;background:rgba(219,234,254,.62)}.query-tab{min-height:42px;padding:8px 6px;border:0;border-radius:10px;background:transparent;color:#4763bd;font-size:13px;font-weight:700}.query-tab.active{background:rgba(255,255,255,.84);color:#1e3a8a;box-shadow:0 4px 12px rgba(30,64,175,.12)}.pre-query-record dl{grid-template-columns:1fr 1fr}.pre-query-record dl>div:first-child{grid-column:span 2}.pre-query-record dd{font-family:inherit}@media(max-width:430px){.query-tab{font-size:12px}.pre-query-record dl>div:first-child{grid-column:auto}}

.nav-label{margin:13px 12px 3px;color:#93c5fd;font-size:11px;font-weight:700;letter-spacing:.1em}.data-kind-banner{display:flex;gap:12px;align-items:flex-start;margin-bottom:18px;padding:13px 15px;border-radius:12px}.data-kind-banner>span{font-size:22px;line-height:1}.data-kind-banner b{display:block;font-size:14px}.data-kind-banner p{margin:2px 0 0;font-size:12px}.pre-kind{background:#eff6ff;color:#1e40af}.result-kind{background:#ecfdf5;color:#047857}.security-card{max-width:620px}.password-form{max-width:460px}
.school-stats{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px;padding:8px 10px;border-radius:9px;background:rgba(239,246,255,.8);color:#4763bd;font-size:12px}.school-stats span{white-space:nowrap}.school-stats b{color:#1e3a8a;font-size:13px}@media(max-width:430px){.school-stats{display:grid;grid-template-columns:1fr 1fr}.school-stats span:last-child{grid-column:span 2}}
.rate-count{background:#f3e8ff;color:#7e22ce}
.bulk-progress{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:rgba(15,23,42,.28);backdrop-filter:blur(4px)}.bulk-progress-card{width:min(360px,calc(100vw - 40px));padding:22px;border-radius:14px;background:#fff;box-shadow:0 18px 50px rgba(15,23,42,.25)}.bulk-progress-title{color:#172554;font-weight:700;margin-bottom:12px}.bulk-progress-track{height:8px;overflow:hidden;border-radius:999px;background:#dbeafe}.bulk-progress-track i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#60a5fa);transition:width .35s ease}
.prediction-notice{margin:0 0 12px;padding:10px 12px;border:1px solid #fbbf24;border-radius:10px;background:#fffbeb;color:#92400e;font-size:13px;font-weight:700;text-align:left}
.official-notice{margin:0 0 12px;padding:10px 12px;border:1px solid #93c5fd;border-radius:10px;background:#eff6ff;color:#1e40af;font-size:13px;font-weight:700;text-align:left}
.school-summary>span:first-child{max-width:100%}@media(max-width:430px){.school-summary{align-items:flex-start;flex-wrap:wrap;white-space:normal}.school-summary>span:first-child{flex:1 1 100%;width:100%}.school-counts{flex:1 1 100%;justify-content:flex-start;overflow-x:auto;padding-bottom:2px}}

/* 家长端：学校名称后的同批次报名规模 */
.school-count{display:inline-flex;align-items:center;margin-left:9px;padding:2px 7px;border-radius:999px;background:#e0edff;color:#3355b9;font-size:11px;font-weight:700;vertical-align:middle;white-space:nowrap}.admitted-count{background:#dcfce7;color:#15803d}.school-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:11px;padding:8px 10px;border-radius:9px;background:rgba(239,246,255,.8);color:#1e3a8a;font-size:13px;font-weight:700;white-space:nowrap}.school-summary>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.school-counts{display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;gap:5px;min-width:0}.school-summary .school-count{margin-left:0}@media(max-width:430px){.result-modal{box-sizing:border-box;max-width:calc(100vw - 24px);overflow:hidden;padding-left:16px;padding-right:16px}.school-summary{align-items:flex-start;flex-direction:column;white-space:normal}.school-summary>span:first-child{width:100%;overflow:visible;text-overflow:clip;white-space:normal}.school-counts{width:100%;justify-content:flex-start;flex-wrap:wrap}.school-count{font-size:10px;padding:2px 5px}}
.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;color:#64748b;font-size:13px}.pagination>div{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.pagination .btn{min-width:34px;padding:7px 10px}.pagination .btn.active{background:#dbeafe;color:#1e40af}.pagination .btn:disabled{opacity:.45;cursor:not-allowed}@media(max-width:600px){.pagination{align-items:flex-start;flex-direction:column}.pagination>div{justify-content:flex-start}}
