/* page-login — extracted from views/login.php (20260913) */
.login-bg{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--sp-4);position:relative;overflow:hidden;background:var(--gradient-hero);}
.login-bg::before,.login-bg::after{content:'';position:absolute;border-radius:50%;background:rgba(255,255,255,.07);}
.login-bg::before{width:520px;height:520px;top:-140px;inset-inline-end:-140px;animation:softPulse 7s ease-in-out infinite;}
.login-bg::after{width:360px;height:360px;bottom:-100px;inset-inline-start:-100px;background:rgba(255,255,255,.05);}
.login-card{position:relative;z-index:1;width:100%;max-width:420px;background:rgba(255,255,255,.14);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-2xl);padding:var(--sp-8) var(--sp-7);box-shadow:var(--shadow-xl);animation:scaleIn .4s var(--ease-spring);}
.login-logo{width:72px;height:72px;margin:0 auto var(--sp-4);border-radius:var(--radius-xl);background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.25);}
.login-title{color:#fff;text-align:center;font-size:23px;font-weight:800;letter-spacing:-.01em;}
.login-subtitle{color:rgba(255,255,255,.72);text-align:center;font-size:13px;margin-top:6px;margin-bottom:var(--sp-6);}
.login-field-wrap{position:relative;}
.login-field-icon{position:absolute;inset-inline-end:14px;top:50%;transform:translateY(-50%);color:rgba(255,255,255,.55);pointer-events:none;display:flex;align-items:center;}
.login-input{width:100%;min-height:var(--tap-min);padding:0 44px 0 var(--sp-4);background:rgba(255,255,255,.85);border:1.5px solid rgba(255,255,255,.4);border-radius:var(--radius-md);color:var(--gray-800);font-size:14px;transition:all var(--t-fast);}
.login-input:focus{outline:none;background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.35);border-color:rgba(255,255,255,.6);}
.login-submit{width:100%;min-height:50px;background:#fff;color:var(--color-primary-700);font-weight:800;font-size:15px;border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:none;cursor:pointer;font-family:inherit;transition:transform var(--t-fast),box-shadow var(--t-fast);}
.login-submit:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg);}
.login-submit:active{transform:translateY(0) scale(.98);}
.login-announce{margin-top:var(--sp-4);width:100%;max-width:420px;position:relative;z-index:1;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-xl);padding:var(--sp-4);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:fadeInUp .4s var(--ease) .1s both;}
.login-announce h2{color:#fff;font-size:13px;display:flex;align-items:center;gap:8px;margin-bottom:var(--sp-3);}
.login-ann-item{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);padding:var(--sp-3);margin-bottom:8px;}
.login-ann-item p:first-child{color:#fff;font-weight:700;font-size:13px;}
.login-ann-item p:last-child{color:rgba(255,255,255,.65);font-size:11.5px;margin-top:4px;line-height:1.7;}
.login-footer-text{text-align:center;color:rgba(255,255,255,.4);font-size:11.5px;margin-top:var(--sp-5);position:relative;z-index:1;}
.login-field-label{display:block;font-size:13px;font-weight:600;color:rgba(255,255,255,.9);margin-bottom:6px;}
