:root{font-family:Microsoft YaHei,PingFang SC,system-ui,-apple-system,sans-serif;color:#17233d;background:#f3f7fb;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#app{width:100%;min-width:1180px;height:100%;min-height:0;margin:0}button,input{font:inherit}button{border:0}.portal-shell{display:flex;width:100%;height:100vh;height:100dvh;min-height:0;background:#fff}.brand-panel{position:relative;width:48%;min-width:560px;height:100%;overflow:hidden;color:#fff;background:radial-gradient(circle at 74% 37%,rgba(23,179,224,.18),transparent 31%),linear-gradient(145deg,#07172c,#062d46 58%,#031523);background-position:center;background-size:cover}.brand-overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 52%,rgba(3,21,35,.12) 68%,rgba(3,21,35,.58) 100%)}.brand-content{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:space-between;height:100%;padding:52px 7.4% clamp(32px,6vh,64px)}.brand-mark{display:flex;gap:14px;align-items:center;font-size:21px;font-weight:700;letter-spacing:1px}.brand-mark img,.brand-mark svg{width:44px;height:44px;object-fit:contain;color:#20d2ff}.brand-slogan{margin:0;font-size:clamp(30px,2.8vw,48px);font-weight:700;line-height:1.45;letter-spacing:2px;text-shadow:0 2px 14px rgba(3,21,35,.3)}.brand-slogan span{display:block}.brand-slogan span:last-child{padding-left:clamp(32px,3.5vw,64px);color:#4de2ff}.login-panel{display:flex;flex:1;align-items:flex-start;justify-content:center;min-width:620px;height:100%;min-height:0;overflow-y:auto;padding:40px 7%;background:radial-gradient(circle at 90% 6%,#eef8ff,transparent 30%),#fff}.login-card{width:min(100%,520px);margin:auto 0}.login-card header{margin-bottom:28px}.login-card header .welcome{margin:0 0 8px;color:#1688d4;font-weight:600}.login-card header h2{margin:0 0 10px;color:#12223b;font-size:32px}.login-card header>p:last-child{margin:0;color:#75839a}.role-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:26px}.role-card{display:flex;flex-direction:column;gap:7px;align-items:center;padding:13px 6px 11px;color:#65738a;background:#f7f9fc;border:1px solid #e4e9f0;border-radius:10px;cursor:pointer;transition:.2s ease}.role-card:hover{color:#167bc1;border-color:#9ed4f5}.role-card.active{color:#fff;background:linear-gradient(145deg,#178fd7,#0c6fbb);border-color:transparent;box-shadow:0 8px 20px #0d76be3b}.role-icon{display:block;width:25px;height:25px}.role-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.field{position:relative;margin-bottom:17px}.field label{display:block;margin-bottom:7px;color:#35435a;font-size:14px;font-weight:600}.input-wrap{position:relative;display:flex;align-items:center;height:47px;background:#f8fafc;border:1px solid #dfe5ed;border-radius:8px;transition:.2s}.input-wrap:focus-within{background:#fff;border-color:#2294da;box-shadow:0 0 0 3px #2294da1a}.input-wrap input{width:100%;height:100%;padding:0 48px 0 43px;color:#17233d;background:transparent;border:0;outline:0}.input-wrap input::placeholder{color:#adb7c6}.input-icon{position:absolute;left:15px;color:#7b91a8;font-size:19px}.plain-button{position:absolute;right:12px;padding:5px;color:#59819c;font-size:12px;background:transparent;cursor:pointer}.captcha-row{display:grid;grid-template-columns:1fr 132px;gap:12px}.captcha{height:47px;padding:0;overflow:hidden;color:#6f7f94;background:#f3f6f9;border:1px solid #dfe5ed;border-radius:8px;cursor:pointer}.captcha img{display:block;width:100%;height:100%;object-fit:cover}.captcha:disabled{cursor:wait;opacity:.7}.field-error{margin:5px 0 0;color:#d83b46;font-size:12px}.button-spinner{display:inline-block;border:2px solid rgba(255,255,255,.42);border-top-color:currentColor;border-radius:50%;animation:spin .75s linear infinite}.button-spinner{width:17px;height:17px;margin-right:7px;vertical-align:-3px}.submit-error{padding:10px 13px;margin:2px 0 14px;color:#b52d39;font-size:13px;line-height:1.55;background:#fff1f2;border:1px solid #ffdadd;border-radius:7px}.submit-button{width:100%;height:49px;margin-top:5px;color:#fff;font-weight:700;letter-spacing:2px;background:linear-gradient(100deg,#158bd1,#096bb8);border-radius:8px;box-shadow:0 10px 22px #1077bc38;cursor:pointer}.submit-button:hover:not(:disabled){background:linear-gradient(100deg,#0f7fc4,#075fa7)}.submit-button:disabled{cursor:wait;opacity:.72}.login-card footer{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;justify-content:center;margin-top:24px;color:#a1aab7;font-size:12px;text-align:center}.login-card footer a{color:inherit;text-decoration:none;transition:color .2s ease}.login-card footer a:hover{color:#1688d4;text-decoration:underline}.login-card footer .public-security-record{display:inline-flex;gap:4px;align-items:center}.public-security-record img{width:16px;height:16px;object-fit:contain}@keyframes spin{to{transform:rotate(360deg)}}@media(max-height:800px){.login-card header{margin-bottom:18px}.login-card header h2{font-size:28px}.role-grid{margin-bottom:18px}.field{margin-bottom:12px}}
