*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,Arial,sans-serif;color:#0a2857;background:#eef8ff}
body{min-height:100vh;overflow-x:hidden}
a{text-decoration:none;color:inherit}
button,input{font:inherit}
button{border:0}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

.page-shell{
  min-height:100vh;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(670px,.96fr);
  background:
    radial-gradient(circle at 2% 42%,rgba(80,184,218,.14),transparent 18%),
    radial-gradient(circle at 98% 93%,rgba(244,190,74,.18),transparent 18%),
    linear-gradient(112deg,#f9fdff 0%,#eef8ff 54%,#f9fdff 100%);
}

.role-visual{position:relative;min-width:0;overflow:hidden}
.role-visual-image{
  position:absolute;inset:0;
  background-image:url('../images/portal/student-left.webp');
  background-repeat:no-repeat;
  background-position:center center;
  background-size:cover;
  transition:opacity .22s ease,transform .45s cubic-bezier(.2,.8,.2,1),filter .22s ease;
}
body[data-role="parent"] .role-visual-image{background-image:url('../images/portal/parent-left.webp')}
body[data-role="staff"] .role-visual-image{background-image:url('../images/portal/staff-left.webp')}
.role-visual-image.switching{opacity:.12;transform:scale(.985);filter:blur(3px)}

.portal-side{
  min-width:0;
  padding:32px clamp(34px,4vw,82px) 20px clamp(20px,2vw,34px);
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:16px;
}
.login-card,.quick-card{
  width:min(690px,100%);
  margin-inline:auto;
  background:rgba(255,255,255,.95);
  border:1px solid rgba(255,255,255,.98);
  box-shadow:0 22px 62px rgba(28,74,120,.13),inset 0 1px 0 #fff;
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
}
.login-card{
  position:relative;
  overflow:hidden;
  border-radius:32px;
  padding:24px 32px 20px;
}
.login-card:before{
  content:"";
  position:absolute;right:-38px;top:-38px;width:150px;height:130px;
  border-radius:0 0 0 95%;
  background:linear-gradient(135deg,rgba(117,181,226,.25),rgba(117,181,226,.04));
  pointer-events:none;
}
.login-card.switching{animation:cardSwap .35s ease}
@keyframes cardSwap{0%{opacity:1;transform:translateY(0)}45%{opacity:.2;transform:translateY(7px)}100%{opacity:1;transform:translateY(0)}}

.school-brand{
  position:relative;z-index:1;
  display:flex;align-items:center;justify-content:center;gap:14px;
  margin-bottom:16px;
}
.school-brand img{width:56px;height:56px;filter:drop-shadow(0 7px 10px rgba(14,59,103,.15))}
.school-brand span{display:grid;line-height:1.05}
.school-brand strong{font-family:Georgia,'Times New Roman',serif;font-size:21px;color:#082653}
.school-brand small{margin-top:5px;text-transform:uppercase;letter-spacing:.055em;font-size:10px;font-weight:900;color:#058e93}

.role-tabs{
  display:grid;grid-template-columns:repeat(3,1fr);gap:4px;
  padding:5px;
  background:#edf4fb;
  border:1px solid #d9e6f2;
  border-radius:18px;
}
.role-tab{
  min-height:49px;
  border-radius:14px;
  background:transparent;
  color:#64748b;
  font-size:16px;
  font-weight:800;
  display:flex;align-items:center;justify-content:center;gap:9px;
  cursor:pointer;
  transition:.23s ease;
}
.role-tab:hover{color:#123a70;transform:translateY(-1px)}
.role-tab.active{
  color:#fff;
  background:linear-gradient(135deg,#092b73 0%,#0759bf 70%,#0d67c7 100%);
  box-shadow:0 10px 22px rgba(9,61,137,.24);
}
.role-icon{font-size:15px;line-height:1;color:inherit}
.parent-icon{letter-spacing:-4px;margin-right:4px;font-size:12px}

.login-heading{text-align:center;padding:17px 0 12px}
.login-heading p{margin:0 0 3px;text-transform:uppercase;color:#078f91;font-size:11px;font-weight:900;letter-spacing:.16em}
.login-heading h2{margin:0;font-family:Georgia,'Times New Roman',serif;color:#082653;font-size:44px;line-height:1.08;letter-spacing:-.02em}
.login-heading span{display:block;max-width:480px;margin:5px auto 0;color:#77839a;font-size:14px;line-height:1.35;min-height:38px}

#portalForm{display:grid}
.field-label{margin:0 0 7px;color:#123566;font-size:13px;font-weight:800}
.input-row{position:relative;display:flex;align-items:center;margin-bottom:3px}
.input-row input{
  width:100%;height:50px;border:1px solid #d7e4ef;border-radius:14px;
  background:#fbfdff;
  outline:0;
  padding:0 48px 0 48px;
  color:#18335b;
  font-size:14px;
  transition:.22s ease;
}
.input-row input::placeholder{color:#8b98aa}
.input-row input:focus{border-color:#0b9fa1;background:#fff;box-shadow:0 0 0 4px rgba(11,159,161,.11),0 8px 20px rgba(22,74,122,.06)}
.field-icon{position:absolute;left:17px;z-index:2;color:#60748e;font-size:18px;pointer-events:none}
.lock-icon{font-size:17px}
.show-password{position:absolute;right:9px;width:38px;height:38px;border-radius:10px;background:transparent;color:#5f7692;cursor:pointer}
.show-password:hover{background:#edf5fb;color:#0756ba}
.field-error{min-height:19px;padding:2px 2px 0;color:#c53a3a;font-size:11px;font-weight:700}

.form-options{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 12px;color:#4d5f78;font-size:13px}
.form-options a{font-weight:900;color:#0756bc}
.form-options a:hover{text-decoration:underline}
.remember{display:flex;align-items:center;gap:9px;cursor:pointer;font-weight:650}
.remember input{position:absolute;opacity:0;pointer-events:none}
.remember span{width:18px;height:18px;border:1.5px solid #91a5bb;border-radius:3px;background:#fff;display:grid;place-items:center}
.remember input:checked+span{background:#0756bc;border-color:#0756bc}
.remember input:checked+span:after{content:"✓";color:#fff;font-size:12px;font-weight:900}

.login-button{
  height:52px;border-radius:14px;
  color:#fff;font-size:16px;font-weight:900;
  display:flex;align-items:center;justify-content:center;gap:18px;
  cursor:pointer;
  background:linear-gradient(105deg,#082a70 0%,#0758bd 51%,#0ca5a3 100%);
  box-shadow:0 14px 28px rgba(8,72,148,.22);
  transition:.24s ease;
}
.login-button:hover{transform:translateY(-2px);box-shadow:0 18px 31px rgba(8,72,148,.28)}
.login-button span:last-child{font-size:22px;transition:.2s ease}
.login-button:hover span:last-child{transform:translateX(5px)}
.legal-line{text-align:center;color:#7c899c;font-size:10px;line-height:1.45;margin:12px 0 0}
.legal-line a{color:#0756bc;font-weight:900}

.quick-card{border-radius:27px;padding:20px 28px 22px}
.quick-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:13px}
.quick-heading h3{margin:0;font-family:Georgia,'Times New Roman',serif;color:#082653;font-size:20px}
.quick-heading span{color:#7a8799;font-size:11px;text-align:right}
.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.quick-item{
  min-height:91px;border-radius:14px;border:1px solid #dce7f1;background:#fff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  color:#163663;cursor:pointer;transition:.22s ease;
}
.quick-item:hover{transform:translateY(-4px);border-color:#9ed9dd;box-shadow:0 11px 24px rgba(24,75,121,.1)}
.quick-icon{font-size:28px;line-height:1}
.quick-item strong{font-size:11px}

.toast{position:fixed;right:24px;bottom:24px;z-index:20;width:min(410px,calc(100% - 48px));padding:15px 16px;border-radius:17px;background:#fff;border:1px solid #dce8f2;box-shadow:0 18px 50px rgba(15,58,103,.2);display:flex;align-items:flex-start;gap:12px;transform:translateY(130%);opacity:0;transition:.3s ease}
.toast.show{transform:translateY(0);opacity:1}
.toast-mark{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#dcf7ef;color:#047857;font-weight:900}
.toast div{flex:1}.toast strong{display:block;color:#0a2b5c;font-size:14px}.toast p{margin:4px 0 0;color:#65758c;font-size:12px;line-height:1.35}.toast button{background:transparent;color:#73839a;font-size:22px;cursor:pointer}

@media (min-width:1500px){
  .portal-side{padding-right:82px;padding-left:30px}
  .login-card{padding:26px 34px 21px}
}
@media (max-width:1180px){
  .page-shell{grid-template-columns:1fr minmax(610px,.95fr)}
  .role-visual-image{background-size:auto 100%;background-position:right center}
  .portal-side{padding-right:24px;padding-left:18px}
}
@media (max-width:980px){
  body{overflow:auto}
  .page-shell{grid-template-columns:1fr;min-height:100vh;padding:18px;background:linear-gradient(145deg,#f8fdff,#eef8ff)}
  .role-visual{display:none}
  .portal-side{padding:0;justify-content:flex-start}
  .login-card,.quick-card{width:min(680px,100%)}
}
@media (max-width:640px){
  .page-shell{padding:10px}
  .login-card{border-radius:24px;padding:18px 16px 17px}
  .quick-card{border-radius:22px;padding:17px 15px}
  .school-brand img{width:50px;height:50px}
  .school-brand strong{font-size:17px}
  .role-tab{font-size:13px;min-height:45px;gap:6px}
  .login-heading h2{font-size:36px}
  .login-heading span{font-size:13px}
  .quick-heading{align-items:flex-start;flex-direction:column;gap:4px}
  .quick-heading span{text-align:left}
  .quick-grid{grid-template-columns:repeat(2,1fr)}
  .form-options{font-size:12px}
}
