*{box-sizing:border-box;margin:0}button,input,select,textarea{font-family:inherit}html,body{background:#dfe3e8}body{color:#2a2f36;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,PingFang SC,HarmonyOS Sans SC,MiSans,Microsoft YaHei,sans-serif}.phone{background:#f2f4f6;max-width:520px;min-height:100vh;margin:0 auto;padding-bottom:36px}.head{padding:20px 16px 14px;padding-top:calc(20px + env(safe-area-inset-top));color:#f4f6f8;background:#0f1f33}.head-row{justify-content:space-between;align-items:flex-start;display:flex}.head h1{letter-spacing:8px;text-indent:8px;font-family:Kaiti SC,STKaiti,KaiTi,楷体,Noto Serif SC,Songti SC,STSong,SimSun,serif;font-size:24px;font-weight:700}.count{color:#d9a441;text-align:right;font-size:11px;line-height:1.5}.head .sub{color:#f4f6f899;letter-spacing:1px;margin-top:4px;font-size:11.5px}.ctrl{align-items:center;gap:8px;padding:12px 16px 8px;display:flex}.seg{background:#fbfcfd;border-radius:8px;flex-shrink:0;padding:3px;display:flex;box-shadow:0 1px 2px #0f1f3314}.seg button{color:#525a64;background:0 0;border:none;border-radius:6px;min-height:34px;padding:7px 14px;font-size:13px}.seg button.on{color:#fff;background:#0f1f33}.search{color:#2a2f36;background:#fbfcfd;border:none;border-radius:8px;flex:1;min-width:0;min-height:38px;padding:9px 12px;font-size:16px;box-shadow:0 1px 2px #0f1f3314}.search:focus-visible{outline:2px solid #8a6a2f}.tags{gap:7px;padding:2px 16px 8px;display:flex;overflow-x:auto}.tags button{color:#525a64;background:0 0;border:1px solid #c9cfd6;border-radius:999px;flex-shrink:0;min-height:30px;padding:5px 12px;font-size:12px}.tags button.on{color:#fff;background:#8a6a2f;border-color:#8a6a2f}.list{grid-template-columns:minmax(0,1fr);gap:8px;padding:4px 16px 0;list-style:none;display:grid}.card{cursor:pointer;background:#fbfcfd;border-radius:6px;align-items:center;gap:12px;padding:11px 13px;display:flex;box-shadow:0 1px 2px #0f1f3314}.card:active{background:#f0f2f4}.grade{text-align:center;flex-shrink:0;width:44px;font-size:19px;font-weight:700;line-height:1.2}.grade.g-none{color:#b3bac2;letter-spacing:1px;font-size:14px}.body{flex:1;min-width:0}.name{overflow-wrap:anywhere;font-size:14.5px;font-weight:600;line-height:1.4}.name em{color:#77808b;font-size:12px;font-style:normal;font-weight:400}.meta{align-items:baseline;gap:8px;margin-top:3px;display:flex}.cat{color:#8a6a2f;border:1px solid #8a6a2f55;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:10.5px}.tagset{color:#77808b;text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.meta2{justify-content:space-between;align-items:baseline;gap:8px;margin-top:3px;font-size:11.5px;display:flex}.kids-n{color:#8a6a2f;flex-shrink:0;font-weight:600}.parent-link{color:#8a6a2f;background:0 0;border:none;margin-top:8px;padding:2px 0;font-size:12.5px}.kids{background:#fbfcfd;border-radius:6px;margin:0 16px;padding:4px 14px;list-style:none;box-shadow:0 1px 3px #0f1f330f}.kids li{cursor:pointer;border-bottom:1px solid #eef1f4;align-items:baseline;gap:10px;padding:10px 0;display:flex}.kids li:last-child{border-bottom:none}.kids li:active{background:#f0f2f4}.kid-name{flex-shrink:0;font-size:14px;font-weight:600}.kid-why{color:#9aa3ad;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:11px;overflow:hidden}.kids .grade{width:auto;font-size:16px}.org{color:#77808b;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dl-open{color:#6b7280;flex-shrink:0}.dl-soon{color:#c7362b;flex-shrink:0;font-weight:700}.dl-closed{color:#9aa3ad;flex-shrink:0}.dl-none{color:#b3bac2;flex-shrink:0}.g-top{color:#c7362b}.g-inv{color:#8a6a2f}.g-spec{color:#5b636d}.tip{text-align:center;color:#77808b;padding:48px 0;font-size:14px}.tip.err{color:#c7362b}.foot{color:#9aa3ad;text-align:center;padding:0 28px calc(28px + env(safe-area-inset-bottom));margin-top:26px;font-size:11px;line-height:1.7}.bar{z-index:5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#f4f6f8;padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top));background:#0f1f33f2;align-items:center;gap:8px;display:flex;position:sticky;top:0}.back{color:#f4f6f8;background:0 0;border:none;min-height:36px;padding:6px 8px 6px 0;font-size:15px}.bar-title{letter-spacing:4px;font-family:Kaiti SC,STKaiti,KaiTi,楷体,Noto Serif SC,Songti SC,STSong,SimSun,serif;font-size:14px}.bulletin{text-align:center;background:#fbfcfd;border-radius:6px;margin:14px 16px 0;padding:18px 16px 14px;box-shadow:0 1px 3px #0f1f331a}.eyebrow{letter-spacing:3px;color:#8a6a2f;border-bottom:1px solid #8a6a2f33;margin-bottom:14px;padding-bottom:10px;font-size:10px}.bname{font-family:Kaiti SC,STKaiti,KaiTi,楷体,Noto Serif SC,Songti SC,STSong,SimSun,serif;font-size:21px;line-height:1.45}.bname em{color:#77808b;font-size:14px;font-style:normal}.borg{color:#77808b;margin-top:6px;font-size:12.5px}.dial{width:158px;height:158px;margin:18px auto 4px;position:relative}.dial svg{width:100%;height:100%;position:absolute;inset:0}.dial-ring{fill:none;stroke:#c9cfd6;stroke-width:2px}.dial-arc{fill:none;stroke-width:3px;stroke-dasharray:327;stroke-dashoffset:327px;animation:.9s ease-out .1s forwards arc}.dial.g-top .dial-arc{stroke:#c7362b}.dial.g-inv .dial-arc{stroke:#8a6a2f}.dial.g-spec .dial-arc,.dial.g-none .dial-arc{stroke:#6b7280}.dial-tick{stroke:#8a6a2f99;stroke-width:1.5px;transform-origin:60px 60px}.dial-needle{stroke:#c7362b;stroke-width:2.5px;stroke-linecap:round;transform-origin:60px 60px;rotate:0deg}.dial.g-top .dial-needle{animation:1s cubic-bezier(.3,1.4,.4,1) .2s both needle-top}.dial.g-inv .dial-needle{animation:1s cubic-bezier(.3,1.4,.4,1) .2s both needle-inv}.dial.g-spec .dial-needle{animation:1s cubic-bezier(.3,1.4,.4,1) .2s both needle-spec}.dial.g-none .dial-needle{opacity:0}.dial-center{place-content:center;display:grid;position:absolute;inset:0}.dial-grade{font-family:Kaiti SC,STKaiti,KaiTi,楷体,Noto Serif SC,Songti SC,serif;font-size:44px;font-weight:700;line-height:1}.dial.g-none .dial-grade{color:#9aa3ad;font-size:34px}.dial.g-top .dial-grade{color:#c7362b}.dial.g-inv .dial-grade{color:#8a6a2f}.dial-status{color:#77808b;letter-spacing:2px;margin-top:6px;font-size:11px}.dial-note{color:#9aa3ad;margin-top:6px;font-size:11px}@keyframes arc{to{stroke-dashoffset:0}}@keyframes needle-top{0%{rotate:0deg}to{rotate:340deg}}@keyframes needle-inv{0%{rotate:0deg}to{rotate:290deg}}@keyframes needle-spec{0%{rotate:0deg}to{rotate:120deg}}@media (prefers-reduced-motion:reduce){.dial-arc{stroke-dashoffset:0;animation:none}.dial.g-top .dial-needle{animation:none;rotate:340deg}.dial.g-inv .dial-needle{animation:none;rotate:290deg}.dial.g-spec .dial-needle{animation:none;rotate:120deg}}.block{margin-top:18px}.sec{letter-spacing:1px;justify-content:space-between;align-items:baseline;padding:0 18px 8px;font-size:14.5px;font-weight:700;display:flex}.sec span{color:#9aa3ad;font-size:11px;font-weight:400}.dims{background:#fbfcfd;border-radius:6px;margin:0 16px;padding:4px 14px;list-style:none;box-shadow:0 1px 3px #0f1f330f}.dims li{border-bottom:1px solid #e7eaee;padding:12px 0}.dims li:last-child{border-bottom:none}.dim-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.dim-name{font-size:14px;font-weight:600}.dim-grade{font-size:17px;font-weight:700}.dim-grade.g-none{color:#b3bac2}.dim-basis{color:#67707a;margin-top:6px;font-size:12px;line-height:1.7}.kv{background:#fbfcfd;border-radius:6px;margin:0 16px;padding:4px 14px;list-style:none;box-shadow:0 1px 3px #0f1f330f}.kv li{border-bottom:1px solid #e7eaee;justify-content:space-between;gap:14px;padding:11px 0;font-size:13px;display:flex}.kv li:last-child{border-bottom:none}.kv span{color:#77808b;flex-shrink:0}.kv a{color:#0f5aa5}.sources{counter-reset:src;background:#fbfcfd;border-radius:6px;margin:0 16px;padding:4px 14px;list-style:none;box-shadow:0 1px 3px #0f1f330f}.sources li{counter-increment:src;border-bottom:1px solid #e7eaee;justify-content:space-between;align-items:baseline;gap:8px;padding:10px 0;font-size:12.5px;display:flex}.sources li:last-child{border-bottom:none}.sources li a{color:#0f5aa5;line-height:1.6;text-decoration:none}.sources li a:before{content:"[" counter(src) "] ";color:#8a6a2f;font-size:11px}.sources em{flex-shrink:0;font-size:10.5px;font-style:normal}.sources em.ok{color:#1a7f37}.sources em.warn{color:#b3600b}.legal{color:#9aa3ad;padding:14px 22px 0;font-size:11px;line-height:1.8}a:focus-visible,button:focus-visible{outline-offset:2px;border-radius:4px;outline:2px solid #8a6a2f}.form{background:#fbfcfd;border-radius:6px;gap:12px;margin:0 16px;padding:14px;display:grid;box-shadow:0 1px 3px #0f1f3314}.form label{color:#67707a;gap:5px;font-size:12.5px;display:grid}.form input,.form textarea{color:#2a2f36;background:#fff;border:1px solid #d5dae0;border-radius:6px;width:100%;padding:10px 12px;font-family:inherit;font-size:14px}.form input:focus-visible,.form textarea:focus-visible{outline-offset:1px;outline:2px solid #8a6a2f}.submit-btn{color:#fff;background:#0f1f33;border:none;border-radius:8px;margin-top:4px;padding:12px;font-size:15px}.submit-btn:active{background:#16324f}.submit-btn:disabled{opacity:.6}.submit-msg{color:#1a7f37;font-size:13px;line-height:1.6}.foot-link{color:#8a6a2f;background:0 0;border:none;padding:2px;font-size:12.5px}.persona-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.persona-card{text-align:left;background:#fff;border:1px solid #d5dae0;border-radius:8px;gap:4px;min-height:58px;padding:10px;display:grid}.persona-card.on{background:#8a6a2f14;border-color:#8a6a2f}.persona-card.off{opacity:.45}.p-name{font-size:13.5px;font-weight:600}.p-tags{gap:4px;display:flex}.p-chip{color:#8a6a2f;background:#8a6a2f20;border-radius:3px;padding:2px 6px;font-size:10px;font-style:normal;font-weight:600}.persona-card.on .p-chip{color:#fff;background:#8a6a2f}.persona-sources{margin:8px 0}.persona-sources summary{color:#8a6a2f;cursor:pointer;font-size:12px}.persona-sources ul{color:#9aa3ad;margin:6px 0 0;padding-left:16px;font-size:11.5px;line-height:1.7}.p-tag{color:#9aa3ad;font-size:10.5px}.report{text-align:left;white-space:pre-wrap;word-break:break-word;margin-top:12px;font-size:13px;line-height:1.8}.err2{color:#c7362b}.file-input{background:#fff;border:1px dashed #b3bac2;border-radius:8px;width:100%;padding:16px 12px;font-size:13px}.file-name{color:#1a7f37;font-size:12.5px}.consent-row{color:#67707a;align-items:flex-start;gap:8px;font-size:12px;line-height:1.6;display:flex}.consent-box{flex-shrink:0;width:16px;height:16px;margin-top:2px}
