*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base:#0d0d1a;--bg-card:#13132a;--bg-input:#1a1a35;--border:#ffffff14;--border-focus:#6366f199;--primary:#4f46e5;--primary-light:#818cf8;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--danger:#ef4444;--radius:10px}body.light-mode{--bg-base:#f0f2f8;--bg-card:#fff;--bg-input:#f1f5f9;--border:#0000001a;--border-focus:#4f46e580;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8}body{background:var(--bg-base);color:var(--text-primary);justify-content:center;align-items:center;min-height:100vh;font-family:Noto Sans KR,Inter,sans-serif;transition:background .3s,color .3s;display:flex;position:relative;overflow:hidden}.bg-orb{filter:blur(80px);pointer-events:none;z-index:0;border-radius:50%;position:fixed}.bg-orb-1{background:#4f46e52e;width:480px;height:480px;top:-120px;left:-100px}.bg-orb-2{background:#06b6d41f;width:400px;height:400px;bottom:-80px;right:-80px}.bg-orb-3{background:#8b5cf61a;width:280px;height:280px;top:50%;left:50%;transform:translate(-50%,-50%)}body:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(#ffffff06 1px,#0000 1px),linear-gradient(90deg,#ffffff06 1px,#0000 1px);background-size:40px 40px;position:fixed;inset:0}body.light-mode:before{background-image:linear-gradient(#0000000a 1px,#0000 1px),linear-gradient(90deg,#0000000a 1px,#0000 1px)}.login-wrap{z-index:1;border-radius:20px;width:100%;max-width:900px;min-height:520px;margin:20px;animation:.5s both fadeUp;display:flex;position:relative;overflow:hidden;box-shadow:0 32px 80px #00000080}.login-brand{background:linear-gradient(145deg,#2d1b8e 0%,#1e3a8a 40%,#0e4d6b 100%);flex-direction:column;flex:1;justify-content:space-between;min-width:300px;padding:48px 40px;display:flex;position:relative;overflow:hidden}.login-brand:before{content:"";background:#ffffff0f;border-radius:50%;width:300px;height:300px;position:absolute;top:-80px;right:-80px}.login-brand:after{content:"";background:#ffffff0a;border-radius:50%;width:200px;height:200px;position:absolute;bottom:40px;left:-60px}.brand-logo{z-index:1;align-items:center;gap:14px;display:flex;position:relative}.brand-icon{color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1.5px solid #ffffff40;border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;font-size:24px;font-weight:900;display:flex}.brand-name{color:#fff;letter-spacing:-.5px;font-size:22px;font-weight:900}.brand-tagline{color:#fff9;letter-spacing:1.5px;text-transform:uppercase;margin-top:2px;font-size:11px;font-weight:600}.brand-body{z-index:1;position:relative}.brand-headline{color:#fff;letter-spacing:-.5px;margin-bottom:16px;font-size:26px;font-weight:900;line-height:1.35}.brand-headline span{color:#93c5fd}.brand-desc{color:#ffffffa6;margin-bottom:28px;font-size:12.5px;line-height:1.8}.brand-features{flex-direction:column;gap:10px;display:flex}.brand-feat{align-items:center;gap:10px;display:flex}.feat-dot{background:#60a5fa;border-radius:50%;flex-shrink:0;width:7px;height:7px}.feat-text{color:#ffffffbf;font-size:12px;font-weight:500}.brand-footer{color:#ffffff59;z-index:1;font-size:10.5px;position:relative}.login-form-panel{background:var(--bg-card);flex-direction:column;flex-shrink:0;justify-content:center;width:380px;padding:48px 40px;display:flex}.form-header{margin-bottom:32px}.form-title{color:var(--text-primary);letter-spacing:-.5px;margin-bottom:6px;font-size:22px;font-weight:900}.form-subtitle{color:var(--text-muted);font-size:12.5px;line-height:1.6}.fg{margin-bottom:18px}.fg label{color:var(--text-secondary);letter-spacing:.3px;margin-bottom:7px;font-size:11.5px;font-weight:700;display:block}.fg label span{color:var(--danger);margin-left:2px}.input-wrap{width:100%;position:relative}.input-icon{pointer-events:none;z-index:1;font-size:16px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.form-input{box-sizing:border-box;width:100%;height:40px}.form-input:focus{border-color:#6366f1;outline:none}.form-input::placeholder{color:var(--text-muted);font-size:12px}.form-input.error{border-color:var(--danger)}.pw-toggle{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:2px;font-size:14px;transition:color .15s;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.pw-toggle:hover{color:var(--text-primary)}.opts-row{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.checkbox-label{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:12px;display:flex}.checkbox-label input[type=checkbox]{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}.forgot-link{color:var(--primary-light);font-size:12px;font-weight:600;text-decoration:none;transition:opacity .15s}.forgot-link:hover{opacity:.7;text-decoration:underline}.btn-login{background:linear-gradient(135deg,var(--primary),#7c3aed);border-radius:var(--radius);color:#fff;cursor:pointer;letter-spacing:.3px;border:none;width:100%;padding:13px;font-family:inherit;font-size:14px;font-weight:800;transition:opacity .2s,transform .1s,box-shadow .2s;position:relative;overflow:hidden;box-shadow:0 4px 20px #6366f159}.btn-login:before{content:"";opacity:0;background:linear-gradient(135deg,#ffffff1f,#0000);transition:opacity .2s;position:absolute;inset:0}.btn-login:hover:before{opacity:1}.btn-login:hover{box-shadow:0 6px 28px #6366f180}.btn-login:active{transform:scale(.98)}.btn-login:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-login .spinner{vertical-align:middle;border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;margin-right:6px;animation:.7s linear infinite spin;display:inline-block}.error-msg{border-radius:8px;align-items:center;gap:8px;margin-bottom:16px;padding:10px 12px;font-size:12px;display:none}.error-msg.show{display:flex}.error-msg.type-error{color:#fca5a5;background:#ef44441a;border:1px solid #ef444440}.divider{color:var(--text-muted);align-items:center;gap:10px;margin:20px 0;font-size:11px;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.demo-accounts{flex-direction:column;gap:6px;display:flex}.demo-btn{background:var(--bg-input);border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:10px;width:100%;padding:9px 12px;font-family:inherit;transition:border-color .15s,background .15s;display:flex}.demo-btn:hover{background:#6366f10f;border-color:#6366f166}.demo-avatar{color:#fff;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:800;display:flex}.demo-info{text-align:left;flex:1}.demo-name{color:var(--text-primary);font-size:12px;font-weight:700}.demo-role{color:var(--text-muted);margin-top:1px;font-size:10.5px}.demo-arrow{color:var(--text-muted);font-size:12px}.theme-btn{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;z-index:100;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;transition:all .2s;display:flex;position:fixed;top:18px;right:18px}.theme-btn:hover{border-color:var(--primary);background:#6366f11a}.login-success-overlay{background:var(--bg-base);z-index:999;opacity:0;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:16px;transition:opacity .4s;display:flex;position:fixed;inset:0}.login-success-overlay.show{opacity:1;pointer-events:all}.success-icon{background:linear-gradient(135deg,#10b981,#059669);border-radius:20px;justify-content:center;align-items:center;width:72px;height:72px;font-size:34px;animation:.5s cubic-bezier(.175,.885,.32,1.275) .1s both successPop;display:flex}.success-text{color:var(--text-primary);font-size:18px;font-weight:800}.success-sub{color:var(--text-muted);font-size:12.5px}.success-bar{background:var(--border);border-radius:2px;width:220px;height:3px;margin-top:8px;overflow:hidden}.success-bar-fill{background:linear-gradient(90deg,var(--primary),#06b6d4);border-radius:2px;width:0;height:100%;animation:1.4s .3s forwards fillBar}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes successPop{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}@keyframes fillBar{to{width:100%}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}@media (max-width:720px){.login-brand{display:none}.login-wrap{border-radius:16px;max-width:420px;margin:12px}.login-form-panel{width:100%;padding:36px 28px}}
