:root { color-scheme: light; --navy:#002147; --ink:#17314e; --muted:#657284; --line:#d9e0e8; --gold:#c49f4d; }
* { box-sizing:border-box; }
html { min-height:100%; background:#edf1f5; -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { margin:0; color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif; line-height:1.65; }
.login-shell { min-height:100vh; min-height:100dvh; display:flex; align-items:center; justify-content:center; padding:clamp(20px,5vh,52px) 24px; background:linear-gradient(125deg,rgba(0,33,71,.91),rgba(16,32,50,.75)),url('/faculty/images/school_silhouette.jpg') center/cover; padding-top:max(24px,env(safe-area-inset-top)); padding-bottom:max(24px,env(safe-area-inset-bottom)); }
.login-panel { width:100%; max-width:500px; padding:32px 36px 24px; background:#fff; border-radius:16px; border-top:4px solid var(--gold); box-shadow:0 20px 60px rgba(0,0,0,.23); }
.brand { font-size:26px; letter-spacing:.035em; font-weight:800; display:flex; align-items:center; gap:12px; }
.brand span { font-size:13px; font-weight:500; letter-spacing:.06em; border-left:1px solid var(--line); padding-left:12px; }
h1 { font-size:24px; margin:18px 0 8px; line-height:1.4; letter-spacing:-.025em; }
.intro { margin:0 0 24px; color:var(--muted); font-size:14px; }
.app-login { border:1px solid #d7e2ed; background:#f4f7fa; border-radius:12px; padding:18px; }
.device-label { font-size:12px; font-weight:700; letter-spacing:.04em; color:#5b6c80; display:block; margin-bottom:10px; }
a,button { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
.primary-action { min-height:52px; display:flex; align-items:center; justify-content:center; gap:10px; padding:12px 16px; border-radius:9px; text-decoration:none; background:var(--navy); color:white; font-size:17px; font-weight:650; }
.primary-action:hover { background:#12385f; }
.primary-action span { font-size:19px; opacity:.8; }
.hint { margin:12px 0 0; font-size:13px; color:var(--muted); }
.fallback-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:8px 20px; margin:12px 0; }
.fallback-actions button,.fallback-actions a { border:0; font:inherit; padding:9px 2px; background:none; color:var(--navy); font-size:13px; cursor:pointer; min-height:44px; text-decoration:underline; text-underline-offset:4px; }
.status { margin:0; min-height:0; font-size:13px; color:var(--muted); }
.status:not(:empty) { margin-bottom:12px; }
.manual-copy { margin:10px 0 16px; }
.manual-copy label { display:block; font-size:12px; margin-bottom:5px; }
.manual-copy input { width:100%; padding:10px; border:1px solid var(--line); border-radius:8px; font-size:16px; color:var(--ink); }
.scan-details { border-top:1px solid var(--line); margin-top:16px; padding-top:14px; }
summary { cursor:pointer; font-size:14px; font-weight:600; min-height:44px; list-style-position:inside; }
summary span { display:block; margin-left:18px; font-size:12px; font-weight:400; color:var(--muted); }
.qr-wrapper { width:min(100%,300px); height:300px; margin:14px auto 0; background:#fff; border:1px solid #edf0f3; border-radius:8px; position:relative; overflow:hidden; }
#ding_login_container { width:100%; height:100%; }
.qr-wrapper iframe { display:block; width:100%!important; height:100%!important; border:0; }
.qr-status { position:absolute; inset:0; display:flex; justify-content:center; align-items:center; text-align:center; padding:24px; font-size:13px; color:var(--muted); pointer-events:none; }
.qr-status[hidden] { display:none; }
.qr-retry { display:block; min-height:44px; margin:8px auto 0; border:1px solid var(--line); border-radius:8px; background:#fff; color:var(--navy); padding:8px 18px; cursor:pointer; }
.qr-retry[hidden] { display:none; }
.login-notes { border-top:1px solid var(--line); padding-top:12px; margin-top:18px; font-size:12px; color:var(--muted); }
.login-notes p { margin:0 0 8px; }
footer { font-size:10px; color:#7b8594; letter-spacing:.14em; text-align:center; margin-top:18px; }
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible { outline:3px solid #afcce9; outline-offset:4px; }
.noscript-note { padding:20px; margin:0; background:white; }
@media(max-width:520px) { .login-shell { padding-left:16px; padding-right:16px; align-items:flex-start; } .login-panel { padding:24px 20px 20px; border-radius:13px; } h1 { font-size:22px; } .app-login { padding:16px; } .primary-action { min-height:54px; } }
@media(max-width:360px) { .login-shell { padding-left:10px; padding-right:10px; } .login-panel { padding:22px 16px; } .qr-wrapper { height:280px; } }
@media(min-width:700px) and (max-height:850px) { .login-shell { align-items:flex-start; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; } }
