.login-shell{min-height:100vh;background:linear-gradient(135deg,#f2faf6,#fff 54%,#fff5e7);color:#14243a;font-family:Arial,Helvetica,sans-serif;display:flex;flex-direction:column}.login-shell *{box-sizing:border-box}.login-shell a{text-decoration:none;color:inherit}.login-head{height:82px;padding:0 5vw;justify-content:space-between}.login-brand,.login-head{display:flex;align-items:center}.login-brand{gap:10px}.login-brand>span{width:40px;height:40px;border-radius:12px;background:#e5f5ee;color:#25876f;display:grid;place-items:center;font-size:20px}.login-brand div{display:flex;flex-direction:column}.login-brand b{font-size:22px;letter-spacing:-1px}.login-brand small{font-size:12px;color:#738093}.login-head>a:last-child{font-size:14px;font-weight:700;color:#367f6c}.login-main{flex:1;display:grid;place-items:center;padding:45px 20px 80px}.login-wrap{width:min(100%,1040px)}.login-intro{text-align:center;max-width:620px;margin:0 auto 37px}.login-kicker{font-size:12px;letter-spacing:.12em;font-weight:900;color:#27876f}.login-intro h1{font-size:38px;letter-spacing:-1.3px;margin:12px 0}.login-intro p{font-size:13px;line-height:1.6;color:#687588}.login-role-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.login-role-card{background:rgba(255,255,255,.92);border:1px solid #e0e7e3;border-radius:19px;padding:27px;box-shadow:0 17px 45px rgba(34,69,58,.07);display:flex;flex-direction:column;align-items:flex-start;min-height:270px;transition:.2s}.login-role-card:hover{transform:translateY(-3px);border-color:#c6dfd6;box-shadow:0 21px 50px rgba(34,69,58,.11)}.login-role-card>span{width:48px;height:48px;border-radius:14px;background:#e8f6f0;color:#26856e;display:grid;place-items:center}.login-role-card.teacher>span{background:#eaf3fb;color:#438cc2}.login-role-card.admin>span{background:#f1eafa;color:#7855ad}.login-role-card h2{font-size:18px;margin:21px 0 8px}.login-role-card p{font-size:14px;line-height:1.55;color:#6c7888;margin:0 0 24px}.login-role-card b{margin-top:auto;font-size:14px;color:#237b65;display:flex;align-items:center;gap:7px}.role-login-card{width:min(100%,470px);margin:auto;background:#fff;border:1px solid #e0e7e3;border-radius:22px;padding:34px;box-shadow:0 24px 70px rgba(31,67,55,.11)}.role-login-card>span:first-child{width:54px;height:54px;border-radius:16px;background:#e8f6f0;color:#25856d;display:grid;place-items:center}.role-login-card.teacher>span:first-child{background:#eaf3fb;color:#438cc2}.role-login-card.admin>span:first-child{background:#f1eafa;color:#7855ad}.role-login-card h1{font-size:26px;letter-spacing:-.6px;margin:20px 0 8px}.role-login-card>p{font-size:15px;line-height:1.55;color:#6b7788;margin:0 0 25px}.login-security{display:flex;align-items:flex-start;gap:10px;background:#f5f8f6;border-radius:11px;padding:13px;margin-bottom:18px}.login-security svg{color:#368d75;flex:none}.login-security div{display:flex;flex-direction:column;gap:4px}.login-security b{font-size:13px}.login-security span{font-size:12px;line-height:1.45;color:#6f7b88}.role-login-card>a.primary{height:48px;border-radius:11px;background:linear-gradient(135deg,#4aad90,#298970);color:#fff;display:flex;align-items:center;justify-content:center;gap:9px;font-size:14px;font-weight:800;box-shadow:0 10px 22px rgba(47,143,116,.18)}.role-login-card.admin>a.primary{background:linear-gradient(135deg,#8063b4,#61448e)}.login-note{text-align:center;display:block;font-size:11px;color:#8b959e;margin-top:13px}.login-back{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#607168;margin-bottom:18px}.login-footer{text-align:center;padding:25px;font-size:12px;color:#89938f}.login-footer a{margin:0 8px}@media(max-width:760px){.login-role-grid{grid-template-columns:1fr}.login-intro h1{font-size:31px}.login-main{align-items:start;padding-top:35px}.login-role-card{min-height:215px}.role-login-card{padding:27px 22px}}.takta-login-form{display:flex;flex-direction:column;gap:13px;margin-bottom:18px}.takta-login-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:800;color:#455468}.takta-login-form input{height:44px;border:1px solid #dce3df;border-radius:10px;padding:0 12px;outline:none;background:#fff;font-size:14px}.takta-login-form input:focus{border-color:#4cae91;box-shadow:0 0 0 3px #e8f6f0}.takta-login-form button{height:48px;border:0;border-radius:11px;background:linear-gradient(135deg,#4aad90,#298970);color:#fff;display:flex;align-items:center;justify-content:center;gap:9px;font-size:14px;font-weight:800;box-shadow:0 10px 22px rgba(47,143,116,.18);cursor:pointer}.takta-login-form button:disabled{cursor:wait;opacity:.82}.takta-login-form input:disabled{background:#f7f9f8;color:#6d7884}.role-login-card.admin .takta-login-form button{background:linear-gradient(135deg,#8063b4,#61448e)}.login-spinner{animation:login-spin .8s linear infinite}.login-error{background:#fff0f0;border:1px solid #f0cdcd;color:#a94e54;border-radius:9px;padding:10px 12px;margin:0 0 14px;font-size:12px;font-weight:700}@keyframes login-spin{to{transform:rotate(1turn)}}.login-brand-mark{width:49px;height:auto;flex:none;object-fit:contain}