/* TUP login — based on the layout of Topdata Monitor v0.5.13; isolated from dashboard CSS. */
:root{--tup-orange:#ff870c;--tup-line:#343c44;--tup-muted:#abb5c1}
*,*::before,*::after{box-sizing:border-box}
html,body{padding:0;margin:0;min-height:100%;font-family:system-ui,-apple-system,"Segoe UI",Arial,sans-serif}
body.tup-login-page{background:#111820;color:#f5f7fa;min-height:100vh}
.tup-login-shell{display:grid;grid-template-columns:minmax(390px,30vw) minmax(0,1fr);min-height:100vh}
.tup-login-panel{background:radial-gradient(circle at 0 0,#293038 0,#181d22 47%,#11161a 100%);padding:44px 38px 26px;display:flex;flex-direction:column;position:relative;z-index:2;box-shadow:10px 0 35px #0003}
.tup-login-content{max-width:420px;width:100%}
.tup-login-brand{margin-bottom:34px}
.tup-brand-row{display:flex;align-items:center;gap:18px;min-width:0}
.tup-brand-icon{width:88px;height:88px;object-fit:contain;flex:0 0 88px}
.tup-brand-copy{min-width:0}.tup-brand-title{font-size:clamp(21px,2vw,30px);line-height:1.1;white-space:nowrap;letter-spacing:-.5px;font-weight:350}.tup-brand-title strong{font-weight:750}
.tup-brand-sub{font-size:11px;letter-spacing:4.2px;color:#aeb6bf;margin-top:9px}
.tup-brand-tagline{color:#bbc4cd;margin:28px 0 0;font-size:15px}
.tup-login-form-area{max-width:370px}
.tup-login-form label{display:block;font-weight:650;font-size:13px;margin:0 0 8px;color:#eaf0f5}
.tup-login-field{height:48px;border:1px solid #3d454d;border-radius:5px;background:#1c2228;display:flex;align-items:center;margin-bottom:19px;transition:border-color .15s,box-shadow .15s}
.tup-login-field:focus-within{border-color:var(--tup-orange);box-shadow:0 0 0 3px #ff85001c}
.tup-login-field input{min-width:0;flex:1;height:100%;background:transparent;color:#f5f7f9;border:0;outline:0;padding:0 8px;font:inherit;font-size:14px}
.tup-login-field input::placeholder{color:#939ca7}
.tup-field-icon{width:46px;flex:0 0 46px;height:100%;display:grid;place-items:center;color:#bac4cf}
.tup-field-icon svg,.tup-password-toggle svg{height:21px;width:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tup-password-toggle{height:100%;width:44px;flex:0 0 44px;display:grid;place-items:center;border:0;color:#aeb9c5;background:transparent;cursor:pointer}.tup-password-toggle:hover{color:var(--tup-orange)}
.tup-login-submit{margin-top:9px;width:100%;height:48px;border-radius:5px;background:#10161b;border:1px solid var(--tup-orange);color:var(--tup-orange);font-weight:750;font-size:15px;cursor:pointer;transition:background .15s,color .15s}
.tup-login-submit:hover{background:var(--tup-orange);color:#10151b}
.tup-login-submit span{font-size:21px;margin-left:8px;vertical-align:-1px}
.tup-login-notice,.tup-login-error{padding:12px 13px;border-radius:5px;margin-bottom:18px;font-size:13px;line-height:1.5}
.tup-login-notice{background:#233343;border:1px solid #3b5872;color:#d2e9ff}.tup-login-error{background:#411f22;border:1px solid #943d42;color:#ffe0e0}
.tup-login-status{margin-top:30px;min-height:72px;display:flex;align-items:center;gap:14px;border-radius:5px;border:1px solid #78441c;background:linear-gradient(90deg,#3c281c,#302017ad);padding:14px 16px}
.tup-status-dot{width:15px;height:15px;border-radius:50%;background:var(--tup-orange);box-shadow:0 0 14px #ff850080;flex:0 0 15px}
.tup-login-status strong,.tup-login-status small{display:block}.tup-login-status strong{font-size:13px}.tup-login-status small{font-size:11px;color:#c3bdb6;margin-top:4px;line-height:1.45}
.tup-login-footer{max-width:420px;margin-top:auto;border-top:1px solid #303842;padding-top:18px;color:#929ca7;font-size:11px;line-height:1.9}
.tup-login-visual{position:relative;overflow:hidden;background:linear-gradient(145deg,#eef0f2 0%,#fafafa 44%,#e4e7e8 100%)}
.tup-login-visual:before,.tup-login-visual:after{content:"";position:absolute;inset:-25%;transform:rotate(45deg);background:linear-gradient(90deg,transparent 12%,#5d636940 12% 27%,transparent 27% 39%,#ff850055 39% 55%,transparent 55% 69%,#33394148 69% 82%,transparent 82%)}
.tup-login-visual:after{transform:rotate(-45deg) scale(1.15);opacity:.58;left:8%;top:-12%}
.tup-geo{position:absolute;transform:rotate(45deg);border-radius:2px}
.tup-geo.g1{width:300px;height:300px;background:#ffffffcc;left:27%;top:18%;box-shadow:0 0 80px #fff}
.tup-geo.g2{width:300px;height:300px;background:#5c62684d;right:8%;top:8%}
.tup-geo.g3{width:230px;height:230px;background:#ff8500c7;right:-3%;top:29%}
.tup-geo.g4{width:260px;height:260px;background:#3d434955;left:46%;bottom:6%}
.tup-geo.g5{width:180px;height:180px;background:#ffb16b55;left:12%;bottom:4%}
.tup-geo.g6{width:120px;height:520px;background:#ff850054;right:10%;bottom:-35%;transform:rotate(45deg)}
@media(max-width:1000px){.tup-login-shell{grid-template-columns:minmax(360px,40vw) minmax(0,1fr)}.tup-login-panel{padding:36px 27px 22px}.tup-brand-icon{width:70px;height:70px;flex-basis:70px}.tup-brand-title{font-size:23px}.tup-brand-sub{letter-spacing:2.7px}}
@media(max-width:780px){.tup-login-shell{display:block}.tup-login-panel{min-height:100vh;align-items:center}.tup-login-visual{display:none}.tup-login-content,.tup-login-footer{width:100%;max-width:420px}.tup-login-form-area{max-width:none}.tup-login-brand{margin-bottom:31px}}
@media(max-width:400px){.tup-login-panel{padding:27px 20px 20px}.tup-brand-icon{width:58px;height:58px;flex-basis:58px}.tup-brand-row{gap:10px}.tup-brand-title{font-size:21px}.tup-brand-sub{letter-spacing:1.7px;font-size:10px}}
