/* Quiet shared loading UI. Layout keeps each page's existing background. */
.page-loading{box-sizing:border-box;display:flex;min-height:min(48vh,340px);width:100%;margin:0 auto;padding:40px 24px;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;color:var(--loading-muted,var(--muted,var(--site-muted,#68756d)));font:14px/1.65 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;overflow-wrap:anywhere}
.page-loading[hidden],.page-loading [hidden]{display:none!important}
.page-loading .page-loading-message{max-width:38em;margin:0;font:inherit;color:inherit}
.page-loading[data-state=loading]:not([data-loading-visible=true])>*,.page-loading[data-page-loading]:not([data-loading-visible=true]):not([data-state=error])>*{visibility:hidden}
.page-loading h1,.page-loading h2{margin:0;color:var(--ink,var(--site-ink,#354a3e));font:600 18px/1.5 system-ui,sans-serif;letter-spacing:normal}
.page-loading[data-state=error] .page-loading-message{visibility:visible;color:var(--red,#9d4137)}
.page-loading-actions{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px}
.page-loading .page-loading-actions :is(button,a){box-sizing:border-box;display:inline-flex;min-height:44px;align-items:center;justify-content:center;margin:0;padding:9px 16px;border:1px solid var(--line,var(--site-line,#dce2d8));border-radius:7px;background:transparent;color:var(--green,var(--accent,var(--site-accent,#365b46)));font:inherit;line-height:1.5;text-decoration:none;cursor:pointer;box-shadow:none}
.page-loading .page-loading-actions :is(button,a):focus-visible{outline:2px solid currentColor;outline-offset:3px}
.page-loading.page-loading--notice{position:fixed;z-index:1000;top:14px;left:50%;transform:translateX(-50%);width:max-content;min-height:0;max-width:calc(100vw - 32px);padding:9px 16px;gap:0;border:1px solid var(--line,#dce2d8);border-radius:8px;background:var(--paper,#fff);box-shadow:0 3px 12px #20372a12;pointer-events:none}
.page-loading--notice:not([data-loading-visible=true]){visibility:hidden}
/* Bootstrap content must never expose the sample timed exam before hydration. */
body[data-exam-loading] #exam-load-status.page-loading{max-width:none;min-height:55vh;margin:0;padding:40px 24px;color:var(--loading-muted,#68756d)}
@media(max-width:600px){.page-loading{padding:32px 20px;min-height:42vh}.page-loading.page-loading--notice{min-height:0;padding:9px 14px}.page-loading-actions{gap:8px}}
@media(prefers-reduced-motion:reduce){.page-loading,.page-loading *{animation:none!important;transition:none!important}}
