
/*! NO8GEO-AUTHORSHIP-20261013 | 教学设计与平台开发：史若彬 | 版权所有，仅限个人使用，侵权必究 | no8geo.online
 * 声明适用于本站原创教学设计及平台开发；第三方库、授权素材与共创作品保留各自作者及许可。 */
html.school-locked{overflow:hidden!important}#school-access{position:fixed;inset:0;z-index:2147483601;display:grid;place-items:center;padding:22px;overflow:auto;overscroll-behavior:contain;background:rgba(2,12,24,.28);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);opacity:0;transition:opacity 260ms cubic-bezier(.23,1,.32,1);color:#f4fbff;font-family:'Microsoft YaHei',system-ui,sans-serif}#school-access.is-visible{opacity:1}#school-access *{box-sizing:border-box}.school-glass{width:min(460px,100%);padding:28px 32px 20px;border:1px solid rgba(224,248,255,.45);border-radius:28px;background:linear-gradient(130deg,rgba(214,240,255,.18),rgba(25,61,86,.26));box-shadow:inset 0 1px 0 #ffffff50,0 24px 90px #0005;backdrop-filter:blur(24px) saturate(145%);-webkit-backdrop-filter:blur(24px) saturate(145%);transform:translateY(12px) scale(.98);transition:transform 280ms cubic-bezier(.23,1,.32,1)}.is-visible .school-glass{transform:translateY(0) scale(1)}.school-mark{font-size:36px;color:#a7edff;line-height:1}.school-eyebrow{font-size:10px;letter-spacing:.16em;color:#d2eafa;margin:12px 0}.school-glass h1{font-size:24px;letter-spacing:-.04em;line-height:1.4;margin:8px 0}.school-subtitle{font-size:13px;color:#e0edf5;margin:0 0 20px}.school-login-form label{display:block;font-size:13px;margin:14px 0 0;font-weight:500}.school-login-form input{display:block;box-sizing:border-box;width:100%;min-width:0;border:1px solid #c9e6f344;border-radius:12px;background:#061c304f;color:inherit;padding:12px 14px;font:inherit;font-size:16px;margin-top:7px;outline:none}.school-login-form input::placeholder{color:#c7dbea}.school-login-form input:focus-visible{outline:2px solid #90dbff;outline-offset:2px}.school-login-form button{font:inherit;cursor:pointer}.school-password{position:relative;display:block}.school-password input{padding-right:66px}.school-reveal{position:absolute;right:9px;top:6px;bottom:5px;background:none;border:0;color:inherit;padding:6px 8px;font-size:12px!important}.school-captcha{display:grid;grid-template-columns:minmax(0,1fr) 154px;gap:10px;align-items:center}.school-refresh{border:1px solid #c9e6f344;border-radius:10px;background:#e6f2f7;overflow:hidden;margin-top:7px;padding:0!important;height:48px;position:relative}.school-refresh img{width:150px;height:48px;display:block;object-fit:contain}.school-refresh span{position:absolute;right:2px;bottom:0;font-size:9px;background:#e6f2f7;color:#30516b}.school-submit{display:flex;align-items:center;justify-content:space-between;width:100%;border:1px solid #ffffff70;border-radius:12px;padding:13px 16px;margin:21px 0 12px;background:linear-gradient(110deg,#b9e9fce8,#e6faffdb);color:#13384e;font-size:15px!important;font-weight:600!important;box-shadow:inset 0 1px #fff9;transition:transform 120ms ease-out}.school-submit:active{transform:scale(.98)}.school-login-form button:disabled{opacity:.55;cursor:wait}.school-login-note{font-size:11px;line-height:1.7;color:inherit;opacity:.82;margin:8px 0}.school-error{font-size:13px;line-height:1.7;background:#30111a7d;border:1px solid #ffd2d580;color:#ffe3e5;border-radius:9px;padding:8px 10px;margin:12px 0}.school-register{display:block;margin:9px auto 0;border:0;background:none;color:inherit;font-size:12px!important;opacity:.8}.school-footer{text-align:center;font-size:10px;letter-spacing:.12em;opacity:.65;margin:14px 0 0}.school-login-form [hidden]{display:none!important}.school-login-form button:focus-visible{outline:2px solid #78d9ff;outline-offset:3px}.auth .school-login-form input{background:#fff;color:#17364a;border-color:#b8d2df}.auth .school-login-form input::placeholder{color:#6e8490}.auth .school-error{background:#fff0f1;color:#87303b}.auth .school-login-note{color:#405f70}@media(max-width:500px){#school-access{padding:16px}.school-glass{padding:24px 22px 17px;border-radius:24px}.school-glass h1{font-size:22px}.school-captcha{grid-template-columns:minmax(0,1fr) 140px}.school-refresh img{width:136px}.school-login-note{font-size:10px}}@media(max-height:700px){#school-access{place-items:start center}.school-glass{margin:auto;padding-top:18px;padding-bottom:14px}.school-mark{display:none}.school-login-form label{margin-top:10px}.school-subtitle{margin-bottom:10px}.school-footer{margin:9px 0 0}}@media(prefers-reduced-motion:reduce){#school-access,.school-glass,.school-submit{transition:none;transform:none}}@media(prefers-reduced-transparency:reduce){.school-glass{background:#153349}#school-access{background:#041320ee}}@supports not (backdrop-filter:blur(1px)){.school-glass{background:#153349f0}}
html.splash-on body>#school-access{visibility:visible!important;pointer-events:auto!important}
#school-access .school-glass{display:block;margin:0;height:auto;min-height:0;gap:0;color:#f4fbff}#school-access .school-glass h1{color:#f4fbff;-webkit-text-fill-color:#f4fbff}#school-access{backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}#school-access .school-glass{backdrop-filter:blur(16px) saturate(145%);-webkit-backdrop-filter:blur(16px) saturate(145%)}

/* Center the school identity, form and input text in the glass sign-in card. */
#school-access .school-glass{text-align:center}#school-access .school-glass h1{font-size:26px;letter-spacing:.015em}
#school-access .school-blue{color:#61bdff;-webkit-text-fill-color:#61bdff}#school-access .school-white{color:#fff;-webkit-text-fill-color:#fff}
#school-access .school-subtitle{font-size:17px;letter-spacing:.12em;margin:12px 0 22px;color:#fff}
.school-login-form{text-align:center}.school-login-form label,.school-login-form input{text-align:center}
.school-password input{padding-left:66px;padding-right:66px}.school-submit{justify-content:center;gap:12px}
.school-error{text-align:center}.school-refresh img{margin:auto}.school-eyebrow{text-align:center}
@media(max-width:500px){#school-access .school-glass h1{font-size:24px}.school-login-form input{font-size:14px}#school-access .school-subtitle{font-size:16px}}

/* Authentication is a separate visible state; the homepage cannot show beneath it. */
html.school-locked body>:not(#site-splash):not(#school-access):not(script):not(style):not(link){display:none!important}
html.school-locked body{min-height:100dvh;background:#061425!important}
#school-access{background:radial-gradient(ellipse at 20% 20%,#153d5e 0,transparent 55%),radial-gradient(ellipse at 85% 80%,#164448 0,transparent 55%),#061425;backdrop-filter:none;-webkit-backdrop-filter:none}
#school-access .school-glass{background:linear-gradient(130deg,#d6f0ff21,#193d8633)}
.school-forgot{font-size:12px;line-height:1.7;margin:12px 0;color:inherit;opacity:.85}
#school-password-reminder{position:fixed;inset:0;margin:auto!important;max-height:90dvh;overflow:auto;color:#f4fbff;background:#153349ed;text-align:center;transform:none;border:1px solid #d1efff70;z-index:2147483645}
#school-password-reminder::backdrop{background:#03152599;backdrop-filter:blur(5px)}
.school-saved{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:2147483640;max-width:90vw;padding:14px 22px;border-radius:14px;background:#153349;color:white}

/* High-contrast, independent reveal controls for login and all change-password fields. */
.school-login-form .school-password{display:block;position:relative}
.school-login-form .school-password input{min-height:50px;padding-left:56px;padding-right:56px}
.school-login-form .school-reveal{position:absolute;right:4px;top:50%;bottom:auto;transform:translateY(-50%);display:grid;place-items:center;box-sizing:border-box;width:44px;min-width:44px;height:44px;min-height:44px;margin:0;padding:0;border:1px solid #237a9e;border-radius:9px;background:#bdeaff;color:#07314a;opacity:1;box-shadow:0 1px 3px #0002;cursor:pointer;touch-action:manipulation}
.school-login-form .school-reveal svg{display:block;width:22px;height:22px;pointer-events:none}
.school-login-form .school-reveal:hover{background:#e3f6ff;color:#07314a}
.school-login-form .school-reveal[aria-pressed="true"]{background:#ffe29c;color:#42301b;border-color:#98642b}
.school-login-form .school-reveal:focus-visible{outline:3px solid #5cceff;outline-offset:2px}
.school-login-form .school-password input::-ms-reveal{display:none}
@media(forced-colors:active){.school-login-form .school-reveal{border-color:ButtonText;background:ButtonFace;color:ButtonText;forced-color-adjust:auto}}

/* Compact visible frame with a generous touch target. */
.school-login-form button.school-reveal{background:transparent;color:#07314a;border:0;box-shadow:none;isolation:isolate}
.school-login-form button.school-reveal::before{content:"";position:absolute;width:32px;height:32px;box-sizing:border-box;left:6px;top:6px;border:1px solid #237a9e;border-radius:7px;background:#bdeaff;box-shadow:0 1px 3px #0002;z-index:-1;pointer-events:none}
.school-login-form button.school-reveal:hover::before{background:#e3f6ff}
.school-login-form button.school-reveal[aria-pressed="true"]{background:transparent;color:#42301b}
.school-login-form button.school-reveal[aria-pressed="true"]::before{background:#ffe29c;border-color:#98642b}
.school-login-form button.school-reveal svg{width:20px;height:20px}
@media(forced-colors:active){.school-login-form button.school-reveal{color:ButtonText}.school-login-form button.school-reveal::before{background:ButtonFace;border-color:ButtonText}}
