:root{--navy:#0c3153;--navy2:#143f66;--blue:#2d6eaa;--cyan:#5da8d6;--ink:#1e2f3f;--muted:#6c7f90;--line:#dce6ee;--bg:#f4f7fa;--card:#fff;--success:#18865f;--warning:#b87816;--danger:#b64855;--shadow:0 14px 40px rgba(19,47,71,.08);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg)}body{font-size:15px}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.topbar{height:72px;position:fixed;inset:0 0 auto 0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px}.brand{display:flex;align-items:center;gap:11px}.brand img{width:43px;height:43px}.brand span{display:grid}.brand b{font-size:15px;letter-spacing:-.01em}.brand small{font-size:11px;color:var(--muted);margin-top:2px}.top-actions{display:flex;align-items:center;gap:10px}.user-chip{display:grid;text-align:right}.user-chip b{font-size:13px}.user-chip small{font-size:11px;color:var(--muted)}.role-badge{font-size:10px;font-weight:900;letter-spacing:.08em;padding:7px 9px;border-radius:999px;background:#e9f2f9;color:var(--navy2)}.iconbtn{width:38px;height:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:10px;background:#fff;font-weight:900}.app-shell{display:grid;grid-template-columns:210px minmax(0,1fr);padding-top:72px;min-height:100vh}.sidebar{position:fixed;top:72px;bottom:0;width:210px;background:linear-gradient(180deg,var(--navy),#0a2946);padding:18px 12px;display:flex;flex-direction:column;justify-content:space-between}.sidebar nav{display:grid;gap:5px}.sidebar nav a{color:#d9e9f6;min-height:46px;border-radius:10px;display:flex;align-items:center;gap:10px;padding:0 11px;font-weight:700}.sidebar nav a i{width:25px;height:25px;border-radius:7px;display:grid;place-items:center;background:rgba(255,255,255,.08);font-style:normal}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.12);color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 0 #7cc2ea}.side-foot{border-top:1px solid rgba(255,255,255,.14);padding-top:12px;color:#a9c3d8;font-size:11px;display:grid;gap:7px}.side-foot a{color:#fff;font-weight:700}.content{grid-column:2;padding:24px 28px 60px;max-width:1600px;width:100%}.page-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px}.eyebrow{text-transform:uppercase;font-size:10px;font-weight:900;letter-spacing:.12em;color:var(--blue)}h1{font-size:32px;letter-spacing:-.04em;margin:4px 0 0}.date-chip{background:#fff;border:1px solid var(--line);border-radius:10px;padding:9px 11px;font-size:12px;font-weight:800}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.card-head{padding:16px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center}.card-head h2{font-size:18px;margin:0}.card-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.card-body{padding:18px}.stat{padding:18px;border-left:4px solid var(--blue)}.stat small{color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:900;letter-spacing:.08em}.stat strong{font-size:30px;display:block;margin-top:6px;letter-spacing:-.04em}.stat.success{border-left-color:var(--success)}.stat.warning{border-left-color:var(--warning)}.stat.danger{border-left-color:var(--danger)}.btn{border:1px solid var(--line);background:#fff;color:var(--navy2);border-radius:9px;min-height:40px;padding:0 13px;font-weight:800;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn.primary{background:var(--navy2);border-color:var(--navy2);color:#fff}.btn.success{background:#e7f5ef;color:#126a4a;border-color:#cce7dc}.btn.danger{background:#faecee;color:#a53c49;border-color:#f0d1d6}.btn.sm{min-height:34px;padding:0 10px;font-size:12px}.actions{display:flex;gap:7px;flex-wrap:wrap}.field{display:grid;gap:6px}.field label{font-size:12px;font-weight:800;color:#415b70}.input,.select,.textarea{width:100%;border:1px solid #ccdbe6;background:#fff;border-radius:9px;color:var(--ink);outline:none}.input,.select{height:44px;padding:0 11px}.textarea{min-height:100px;padding:11px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:#6fa6cf;box-shadow:0 0 0 3px rgba(55,123,177,.1)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.span-2{grid-column:span 2}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;min-width:760px}.table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:#758796;padding:11px 12px;border-bottom:1px solid var(--line)}.table td{padding:12px;border-bottom:1px solid #edf2f5;font-size:13px;vertical-align:top}.table tbody tr:hover{background:#f8fbfd}.pill{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900;text-transform:uppercase}.pill.success{background:#e8f6f0;color:#14724f}.pill.warning{background:#fff3df;color:#956116}.pill.danger{background:#fae9ec;color:#a73e4b}.pill.neutral{background:#eef3f6;color:#617483}.alert{border-radius:10px;padding:12px 14px;margin-bottom:12px;font-weight:700;font-size:13px}.alert.ok,.alert.success{background:#e8f6f0;color:#176f50}.alert.error,.alert.danger{background:#fae9ec;color:#a23d49}.alert.warning{background:#fff3df;color:#8b5c17}.empty{padding:34px;text-align:center;color:var(--muted)}.empty strong{display:block;color:var(--ink);font-size:16px;margin-bottom:5px}.appt-card{border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;gap:8px;background:#fff}.appt-top{display:flex;justify-content:space-between;gap:10px}.appt-card h3{margin:0;font-size:16px}.meta{display:flex;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:12px}.meta b{color:#41576a}.slot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.slot{position:relative}.slot input{position:absolute;opacity:0}.slot label{display:block;border:1px solid var(--line);border-radius:9px;padding:11px;text-align:center;font-weight:800;cursor:pointer;background:#fff}.slot input:checked+label{border-color:var(--blue);background:#eaf3fa;color:#1e5d91}.hero-card{background:linear-gradient(135deg,#0d355b,#1e5f90);color:#fff;border:0}.hero-card .card-body{padding:24px}.hero-card p{color:#d3e5f3;max-width:700px;line-height:1.6}.hero-card .btn{background:#fff;border-color:#fff}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.day{min-height:110px;border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff}.day .num{font-size:11px;font-weight:900;color:var(--muted)}.day .event{margin-top:6px;font-size:10px;padding:5px;border-radius:6px;background:#edf5fb;color:#275f8b;display:block}.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(360px,44%) 1fr;background:#fff}.login-panel{padding:42px clamp(24px,6vw,86px);display:flex;flex-direction:column;justify-content:center;position:relative}.login-brand{display:flex;gap:12px;align-items:center;margin-bottom:34px}.login-brand img{width:54px;height:54px}.login-brand b{display:block;font-size:17px}.login-brand small{color:var(--muted)}.login-panel h1{font-size:36px}.login-panel>p{color:var(--muted);line-height:1.6;margin-bottom:22px}.portal-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:11px;padding:4px;margin-bottom:18px;background:#f5f8fa}.portal-tabs button{border:0;background:transparent;border-radius:8px;height:42px;font-weight:900;color:var(--muted);cursor:pointer}.portal-tabs button.active{background:#fff;color:var(--navy);box-shadow:0 3px 12px rgba(19,47,71,.08)}.login-form{display:grid;gap:13px}.password-wrap{position:relative}.password-wrap .input{padding-right:60px}.password-wrap button{position:absolute;right:7px;top:7px;height:30px;border:0;background:#edf3f7;border-radius:7px;font-size:11px;font-weight:800}.login-help{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:2px}.login-visual{position:relative;overflow:hidden;background:linear-gradient(140deg,#0d355b 0%,#174e79 55%,#2c77a7 100%);color:#fff;padding:54px;display:flex;align-items:flex-end}.login-visual:before,.login-visual:after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.13)}.login-visual:before{width:650px;height:650px;right:-240px;top:-180px}.login-visual:after{width:410px;height:410px;right:-70px;top:80px}.visual-copy{position:relative;z-index:1;max-width:650px}.visual-copy span{display:inline-flex;padding:7px 10px;border-radius:999px;background:rgba(255,255,255,.12);font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.visual-copy h2{font-size:48px;line-height:1.04;letter-spacing:-.045em;margin:14px 0}.visual-copy p{color:#d6e6f2;font-size:16px;line-height:1.7}.visual-features{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}.visual-features div{border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.07);border-radius:12px;padding:13px}.visual-features b{display:block;font-size:12px}.visual-features small{color:#c5d9e8}.section-gap{margin-top:14px}.toolbar{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.filter-form{display:flex;gap:8px;flex-wrap:wrap}.filter-form .input,.filter-form .select{width:auto;min-width:150px}.detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.detail-item{border:1px solid var(--line);border-radius:10px;padding:11px}.detail-item small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;font-weight:900}.detail-item b{display:block;margin-top:4px;font-size:13px}.codebox{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:18px;font-weight:900;letter-spacing:.08em;padding:12px;border-radius:10px;background:#f2f6f9;border:1px dashed #bfd0dc;display:inline-block}
@media(max-width:1050px){.grid.cols-4{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(2,1fr)}.slot-grid{grid-template-columns:repeat(3,1fr)}.login-page{grid-template-columns:1fr}.login-visual{min-height:330px}.visual-copy h2{font-size:38px}.app-shell{grid-template-columns:180px 1fr}.sidebar{width:180px}.content{padding:22px 20px}}
@media(max-width:720px){body{font-size:14px}.topbar{height:60px;padding:0 10px}.brand img{width:36px;height:36px}.brand b{font-size:12px}.brand small,.user-chip,.role-badge{display:none}.app-shell{display:block;padding-top:60px}.sidebar{position:fixed;z-index:60;left:6px;right:6px;bottom:6px;top:auto;width:auto;height:60px;border-radius:14px;background:rgba(10,41,70,.97);padding:5px 6px;box-shadow:0 18px 40px rgba(0,0,0,.25)}.sidebar nav{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;height:100%;overflow:auto}.sidebar nav a{padding:3px;min-height:48px;display:grid;place-items:center;text-align:center;font-size:8px;gap:1px}.sidebar nav a i{height:22px;width:22px}.side-foot{display:none}.content{padding:14px 9px 82px}.page-head{align-items:flex-start}.page-head h1{font-size:26px}.date-chip{display:none}.grid.cols-2,.grid.cols-3,.grid.cols-4,.form-grid,.detail-list{grid-template-columns:1fr}.span-2{grid-column:auto}.slot-grid{grid-template-columns:repeat(2,1fr)}.card{border-radius:12px}.table{min-width:760px}.login-page{display:block}.login-panel{min-height:100vh;padding:24px 20px}.login-visual{display:none}.login-panel h1{font-size:31px}.calendar-grid{grid-template-columns:repeat(2,1fr)}.day{min-height:85px}}
@media print{.topbar,.sidebar,.btn,.toolbar{display:none!important}.app-shell{display:block;padding:0}.content{padding:0}.card{box-shadow:none}.page-head{margin-top:0}}


/* =========================================================
   Final AIU login / installer hero
   - Official AIU campus photograph on desktop, tablet & mobile
   - Keeps forms readable and touch-friendly at every breakpoint
   ========================================================= */
.login-page{
  min-height:100svh;
  grid-template-columns:minmax(390px,43%) minmax(0,57%);
}
.login-panel{
  z-index:2;
  background:#fff;
  padding:max(32px,5vh) clamp(28px,5.3vw,84px);
}
.login-brand{margin-bottom:clamp(22px,4vh,38px)}
.login-panel h1{font-size:clamp(34px,3.1vw,46px);line-height:1.02;margin-top:7px}
.login-form .btn.primary{min-height:48px;border-radius:11px}
.portal-tabs{border-radius:13px}
.portal-tabs button{height:46px}
.login-visual{
  position:relative;
  min-height:100svh;
  padding:clamp(32px,5vw,70px);
  isolation:isolate;
  background:#103c61;
  display:flex;
  align-items:flex-end;
}
.login-campus-photo{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:50% 52%;
  z-index:-3;
}
.login-photo-shade{
  position:absolute;
  inset:0;
  z-index:-2;
  background:
    linear-gradient(180deg,rgba(6,32,53,.10) 0%,rgba(7,38,63,.30) 42%,rgba(7,35,58,.88) 100%),
    linear-gradient(90deg,rgba(8,41,67,.12),rgba(8,41,67,.02));
}
.login-visual:before{
  width:620px;
  height:620px;
  right:-265px;
  top:-235px;
  z-index:-1;
  background:rgba(255,255,255,.025);
}
.login-visual:after{
  width:350px;
  height:350px;
  right:-105px;
  top:35px;
  z-index:-1;
}
.visual-copy{
  max-width:760px;
  text-shadow:0 2px 22px rgba(0,0,0,.24);
}
.visual-copy span{
  background:rgba(5,35,58,.44);
  border:1px solid rgba(255,255,255,.20);
  backdrop-filter:blur(10px);
}
.visual-copy h2{
  font-size:clamp(42px,4.6vw,68px);
  max-width:760px;
  margin:16px 0 12px;
}
.visual-copy p{
  max-width:690px;
  color:#f0f7fb;
  font-size:clamp(15px,1.25vw,18px);
}
.visual-features div{
  background:rgba(8,39,63,.48);
  border-color:rgba(255,255,255,.22);
  backdrop-filter:blur(12px);
  box-shadow:0 12px 30px rgba(0,0,0,.08);
}
.visual-features small{color:#e5f0f7}

@media(max-width:1050px){
  .login-page{
    display:flex;
    flex-direction:column;
    min-height:100svh;
  }
  .login-visual{
    order:-1;
    min-height:320px;
    height:38svh;
    max-height:430px;
    padding:34px clamp(24px,7vw,64px);
  }
  .login-campus-photo{object-position:50% 49%}
  .login-photo-shade{
    background:linear-gradient(180deg,rgba(7,34,56,.05),rgba(7,35,58,.80));
  }
  .visual-copy h2{font-size:clamp(34px,6vw,50px);margin:11px 0 8px}
  .visual-copy p{margin:0;max-width:780px}
  .visual-features{margin-top:14px}
  .login-panel{
    min-height:auto;
    width:min(760px,100%);
    align-self:center;
    padding:38px clamp(24px,7vw,64px) 56px;
  }
}

@media(max-width:720px){
  .login-page{display:flex;background:#fff}
  .login-visual{
    display:flex;
    order:-1;
    min-height:205px;
    height:27svh;
    max-height:245px;
    padding:20px 18px;
    align-items:flex-end;
  }
  .login-campus-photo{object-position:50% 53%}
  .login-photo-shade{
    background:linear-gradient(180deg,rgba(5,28,47,.03),rgba(6,34,57,.82));
  }
  .visual-copy span{font-size:8px;padding:5px 8px}
  .visual-copy h2{font-size:28px;line-height:1.03;margin:8px 0 0;max-width:430px}
  .visual-copy p,.visual-features{display:none}
  .login-panel{
    min-height:auto;
    width:100%;
    padding:24px 18px 42px;
    justify-content:flex-start;
  }
  .login-brand{margin-bottom:20px}
  .login-brand img{width:46px;height:46px}
  .login-brand b{font-size:15px}
  .login-brand small{font-size:11px}
  .login-panel h1{font-size:32px;margin-top:5px}
  .login-panel>p{font-size:13px;margin-bottom:16px}
  .portal-tabs{margin-bottom:14px}
  .portal-tabs button{height:44px;font-size:12px}
  .input,.select{height:48px;font-size:16px}
  .password-wrap button{height:34px;top:7px}
  .login-form{gap:12px}
  .login-help{gap:10px;flex-wrap:wrap;line-height:1.4}
  .form-grid{grid-template-columns:1fr}
  .span-2{grid-column:auto}
}

@media(max-width:390px){
  .login-visual{min-height:185px;height:24svh;padding:16px 14px}
  .visual-copy h2{font-size:25px}
  .login-panel{padding:20px 14px 34px}
  .login-brand{margin-bottom:16px}
}

/* =========================================================
   AIU full-bleed login hero hotfix v3
   Uses the official campus image locally and forces full cover
   even if older browser styles were cached previously.
   ========================================================= */
.login-visual{
  position:relative !important;
  overflow:hidden !important;
  background-color:#103c61 !important;
  background-image:url('aiu-campus.jpg') !important;
  background-repeat:no-repeat !important;
  background-size:cover !important;
  background-position:50% 50% !important;
}
.login-campus-photo{
  display:none !important;
}
.login-photo-shade{
  position:absolute !important;
  inset:0 !important;
  z-index:0 !important;
  background:linear-gradient(180deg,rgba(5,28,47,.07) 0%,rgba(7,35,58,.28) 42%,rgba(5,31,52,.90) 100%) !important;
  pointer-events:none;
}
.login-visual:before,.login-visual:after{z-index:1 !important;pointer-events:none}
.visual-copy{position:relative !important;z-index:2 !important}

@media(max-width:1050px){
  .login-visual{
    display:flex !important;
    background-size:cover !important;
    background-position:50% 50% !important;
  }
}
@media(max-width:720px){
  .login-visual{
    display:flex !important;
    width:100% !important;
    min-height:220px !important;
    height:30svh !important;
    max-height:280px !important;
    background-size:cover !important;
    background-position:50% 50% !important;
  }
}

/* =========================================================
   Login V4 — premium, sharp, high-performance
   Scoped to .login-page-v4 so the rest of the system remains unchanged.
   ========================================================= */
.auth-body{background:#edf3f7}
.login-page-v4{
  min-height:100svh;
  display:grid;
  grid-template-columns:minmax(460px,42%) minmax(0,58%);
  background:#f4f8fb;
}
.login-page-v4 .login-panel{
  min-height:100svh;
  padding:0;
  justify-content:stretch;
  background:
    linear-gradient(180deg,rgba(255,255,255,.98),rgba(247,250,252,.98)),
    repeating-linear-gradient(90deg,rgba(15,59,91,.025) 0 1px,transparent 1px 42px);
}
.login-panel-inner{
  width:min(100%,670px);
  min-height:100svh;
  margin:0 auto;
  padding:clamp(24px,4.3vh,52px) clamp(24px,5vw,72px) 22px;
  display:flex;
  flex-direction:column;
}
.login-brand-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:clamp(24px,5vh,54px)}
.login-page-v4 .login-brand{margin:0;gap:12px}
.login-page-v4 .login-brand img{width:50px;height:50px;display:block}
.login-page-v4 .login-brand b{font-size:15px;line-height:1.2;color:#153a58;max-width:260px}
.login-page-v4 .login-brand small{display:block;margin-top:4px;font-size:10px;text-transform:uppercase;letter-spacing:.1em;font-weight:800;color:#7790a3}
.secure-chip{height:32px;padding:0 10px;border:1px solid #cddce7;background:#fff;display:flex;align-items:center;gap:7px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.075em;color:#49677d;white-space:nowrap;box-shadow:0 8px 24px rgba(21,57,84,.05)}
.secure-chip span{width:7px;height:7px;background:#159369;box-shadow:0 0 0 4px rgba(21,147,105,.09)}
.auth-card{position:relative;border:1px solid #cfdae3;background:rgba(255,255,255,.94);padding:clamp(22px,3.4vw,34px);box-shadow:0 24px 55px rgba(24,52,74,.10),0 3px 0 #0f436d;overflow:hidden}
.auth-card:before{content:"";position:absolute;left:0;top:0;width:82px;height:3px;background:#4a98c7}
.auth-card:after{content:"";position:absolute;right:-48px;top:-48px;width:120px;height:120px;border:1px solid rgba(29,85,124,.08);transform:rotate(45deg)}
.auth-intro{position:relative;z-index:1;margin-bottom:20px}
.auth-kicker{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.14em;font-weight:950;color:#2c719f;margin-bottom:9px}
.login-page-v4 .auth-intro h1{margin:0;font-size:clamp(30px,3vw,42px);line-height:1.04;letter-spacing:-.045em;color:#132f47}
.login-page-v4 .auth-intro p{margin:10px 0 0;color:#718696;line-height:1.65;font-size:13px;max-width:520px}
.auth-alert{border-radius:0;border-left:3px solid #b64855;margin:0 0 16px}
.portal-tabs-v4{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0;border:0;background:transparent;margin:0 0 18px}
.portal-tabs-v4 button{height:62px;border:1px solid #cfdbe4 !important;background:#f8fafc !important;border-radius:0 !important;padding:0 13px;display:flex;align-items:center;gap:10px;text-align:left;box-shadow:none !important;transition:border-color .16s ease,background .16s ease,transform .16s ease}
.portal-tabs-v4 button:hover{border-color:#91afc5 !important;background:#fff !important}
.portal-tabs-v4 button.active{border-color:#174d76 !important;background:#eef5fa !important;color:#153e5e !important;box-shadow:inset 0 -3px 0 #174d76 !important}
.portal-tabs-v4 .tab-icon{width:31px;height:31px;flex:0 0 31px;display:grid;place-items:center;border:1px solid #bed0dc;background:#fff;font-size:11px;font-weight:950;color:#205f8b}
.portal-tabs-v4 b{display:block;font-size:12px;line-height:1.1}
.portal-tabs-v4 small{display:block;margin-top:4px;font-size:9px;color:#7b8f9e;font-weight:750}
.login-form-v4{position:relative;z-index:1;gap:14px}
.login-form-v4 .field{gap:7px}
.login-form-v4 .field label{font-size:11px;text-transform:uppercase;letter-spacing:.045em;color:#425f74;font-weight:900}
.input-shell{position:relative;display:flex;align-items:center;border:1px solid #c8d7e1;background:#fff;transition:border-color .16s ease,box-shadow .16s ease}
.input-shell:focus-within{border-color:#2d75a5;box-shadow:0 0 0 3px rgba(45,117,165,.08)}
.input-shell .field-mark{width:44px;align-self:stretch;display:grid;place-items:center;border-right:1px solid #dbe5ec;background:#f5f8fa;color:#59778d;font-size:10px;font-weight:950;letter-spacing:.04em}
.login-form-v4 .input{height:48px;border:0 !important;border-radius:0 !important;box-shadow:none !important;background:transparent;padding:0 12px;font-size:14px}
.login-form-v4 .input::placeholder{color:#a0b0bc}
.login-form-v4 .password-wrap{border-radius:0}
.login-form-v4 .password-wrap .input{padding-right:62px}
.login-form-v4 .password-wrap button{right:7px;top:7px;height:34px;border:1px solid #d4e0e8;background:#f4f7f9;border-radius:0;color:#37596f;padding:0 10px;text-transform:uppercase;font-size:9px;letter-spacing:.05em;cursor:pointer}
.login-form-v4 .password-wrap button:hover{background:#eaf1f5}
.login-page-v4 .auth-submit{width:100%;min-height:50px;margin-top:2px;border-radius:0 !important;border:1px solid #103f64;background:#103f64;justify-content:space-between;padding:0 16px;box-shadow:0 12px 24px rgba(15,63,100,.14);transition:background .16s ease,transform .16s ease}
.login-page-v4 .auth-submit:hover{background:#0a3455;transform:translateY(-1px)}
.login-page-v4 .auth-submit b{font-size:18px;line-height:1}
.login-help-v4{font-size:10px;margin-top:1px;gap:12px;line-height:1.5}
.login-help-v4 a{font-weight:900;color:#286d9a}
.auth-note{display:flex;align-items:center;gap:10px;margin-top:19px;padding-top:16px;border-top:1px solid #e1e8ed;color:#8294a1}
.auth-note .note-line{width:22px;height:1px;background:#82a7c0;flex:0 0 auto}
.auth-note p{margin:0;font-size:10px;line-height:1.5}
.login-copyright{margin-top:auto;padding-top:24px;color:#8293a0;font-size:10px;letter-spacing:.025em;font-weight:700}

.login-visual-v4{position:relative;min-height:100svh;padding:clamp(30px,4.8vw,68px);overflow:hidden;isolation:isolate;background:#0c3454 !important;display:flex;align-items:flex-end}
.login-picture{position:absolute;inset:0;z-index:-3;display:block}
.login-picture img{width:100%;height:100%;display:block;object-fit:cover;object-position:50% 50%}
.login-page-v4 .login-photo-shade{z-index:-2 !important;background:linear-gradient(180deg,rgba(7,34,55,.13) 0%,rgba(7,34,55,.24) 44%,rgba(5,29,48,.90) 100%) !important}
.login-visual-v4:before{content:"";position:absolute;inset:22px;border:1px solid rgba(255,255,255,.17);z-index:-1;border-radius:0}
.login-visual-v4:after{content:"";position:absolute;width:290px;height:290px;right:-145px;top:-145px;border:1px solid rgba(255,255,255,.18);transform:rotate(45deg);z-index:-1;border-radius:0}
.visual-topline{position:absolute;top:clamp(32px,5vw,70px);left:clamp(30px,4.8vw,68px);display:flex;align-items:center;gap:11px;color:#fff;text-transform:uppercase;letter-spacing:.08em;font-size:10px}
.visual-topline span{width:39px;height:31px;display:grid;place-items:center;background:rgba(6,38,62,.62);border:1px solid rgba(255,255,255,.26);font-weight:950}
.visual-topline b{font-size:10px;text-shadow:0 2px 15px rgba(0,0,0,.28)}
.visual-copy-v4{position:relative;z-index:2;max-width:760px;margin-bottom:clamp(8px,3vh,28px)}
.visual-copy-v4 .visual-label{display:inline-flex;border:1px solid rgba(255,255,255,.26);background:rgba(6,35,58,.42);backdrop-filter:blur(8px);border-radius:0;padding:7px 10px;font-size:9px}
.visual-copy-v4 h2{font-size:clamp(46px,5.2vw,78px);line-height:.98;margin:15px 0 14px;letter-spacing:-.055em;max-width:760px}
.visual-copy-v4 p{font-size:clamp(14px,1.2vw,17px);line-height:1.65;max-width:650px;color:#eff6fb;margin:0}
.visual-features-v4{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:24px;max-width:720px}
.visual-features-v4 div{position:relative;border-radius:0;background:rgba(5,34,56,.48);border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(10px);padding:13px 13px 14px;min-height:78px}
.visual-features-v4 .feature-no{position:absolute;right:10px;top:8px;background:transparent;padding:0;border:0;font-size:9px;color:rgba(255,255,255,.52);letter-spacing:.08em}
.visual-features-v4 b{font-size:12px;margin-top:3px}
.visual-features-v4 small{font-size:10px;margin-top:5px;display:block;color:#d7e7f2;line-height:1.35}

@media(max-width:1050px){
  .login-page-v4{display:flex;flex-direction:column;min-height:100svh}
  .login-page-v4 .login-panel{order:2;min-height:auto}
  .login-panel-inner{width:min(720px,100%);min-height:auto;padding:30px 34px 20px}
  .login-brand-row{margin-bottom:24px}
  .login-copyright{margin-top:28px}
  .login-visual-v4{order:1;min-height:330px;height:38svh;max-height:430px;padding:30px 34px;align-items:flex-end}
  .login-picture img{object-position:50% 48%}
  .login-visual-v4:before{inset:14px}
  .visual-topline{top:27px;left:34px}
  .visual-copy-v4{margin-bottom:3px}
  .visual-copy-v4 h2{font-size:clamp(38px,7vw,56px);margin:9px 0 7px}
  .visual-copy-v4 p{font-size:13px}
  .visual-features-v4{display:none}
}

@media(max-width:720px){
  .login-page-v4{background:#f5f8fa}
  .login-visual-v4{display:flex !important;min-height:210px !important;height:27svh !important;max-height:245px !important;padding:18px 17px !important;background:#0c3454 !important}
  .login-picture img{object-position:50% 52%}
  .login-visual-v4:before{inset:9px}
  .login-visual-v4:after{width:150px;height:150px;right:-80px;top:-80px}
  .visual-topline{top:17px;left:18px;gap:7px}
  .visual-topline span{width:32px;height:25px;font-size:8px}
  .visual-topline b{font-size:8px}
  .visual-copy-v4{margin:0}
  .visual-copy-v4 .visual-label{padding:5px 7px;font-size:7px}
  .visual-copy-v4 h2{font-size:30px;line-height:1;margin:7px 0 0;max-width:360px}
  .visual-copy-v4 p{display:none}
  .login-panel-inner{padding:19px 15px 14px}
  .login-brand-row{margin-bottom:16px;gap:8px}
  .login-page-v4 .login-brand img{width:42px;height:42px}
  .login-page-v4 .login-brand b{font-size:12px;max-width:210px}
  .login-page-v4 .login-brand small{font-size:8px;margin-top:2px}
  .secure-chip{height:28px;font-size:8px;padding:0 8px}
  .auth-card{padding:19px 15px;box-shadow:0 14px 34px rgba(24,52,74,.08),0 3px 0 #0f436d}
  .login-page-v4 .auth-intro h1{font-size:28px}
  .login-page-v4 .auth-intro p{font-size:11px;line-height:1.5;margin-top:7px}
  .auth-intro{margin-bottom:15px}
  .portal-tabs-v4{gap:6px;margin-bottom:14px}
  .portal-tabs-v4 button{height:54px;padding:0 9px;gap:7px}
  .portal-tabs-v4 .tab-icon{width:27px;height:27px;flex-basis:27px}
  .portal-tabs-v4 b{font-size:11px}.portal-tabs-v4 small{font-size:8px;margin-top:2px}
  .login-form-v4 .field label{font-size:10px}
  .input-shell .field-mark{width:39px}
  .login-form-v4 .input{height:47px;font-size:16px}
  .login-page-v4 .auth-submit{min-height:48px}
  .auth-note{margin-top:15px;padding-top:13px}
  .auth-note p{font-size:9px}
  .login-copyright{text-align:center;margin-top:18px;padding:0 0 5px;font-size:9px}
}

@media(max-width:390px){
  .secure-chip{display:none}
  .login-brand-row{justify-content:flex-start}
  .login-visual-v4{min-height:190px !important;height:24svh !important}
  .visual-copy-v4 h2{font-size:27px}
  .login-panel-inner{padding-left:12px;padding-right:12px}
  .auth-card{padding-left:13px;padding-right:13px}
}

/* =========================================================
   Login V5 — Google / first-time / recovery actions
   ========================================================= */
.google-auth-btn{position:relative;z-index:1;min-height:48px;width:100%;display:flex;align-items:center;justify-content:center;gap:11px;border:1px solid #c8d7e1;background:#fff;color:#263f52;font-size:12px;font-weight:900;letter-spacing:.01em;box-shadow:0 8px 22px rgba(25,56,78,.05);transition:background .16s ease,border-color .16s ease,transform .16s ease}
.google-auth-btn:hover{background:#f8fafc;border-color:#9cb8ca;transform:translateY(-1px)}
.google-auth-btn svg{width:19px;height:19px;flex:0 0 19px}
.auth-provider-note{position:relative;z-index:1;margin:7px 0 0;font-size:9px;line-height:1.45;color:#7f929f;text-align:center}
.auth-divider{position:relative;z-index:1;display:flex;align-items:center;gap:10px;margin:14px 0;color:#91a1ad;font-size:8px;text-transform:uppercase;letter-spacing:.08em;font-weight:850;white-space:nowrap}
.auth-divider:before,.auth-divider:after{content:"";height:1px;background:#e0e7ec;flex:1}
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.field-label-row label{margin:0}
.field-label-row a{font-size:9px;font-weight:900;color:#286d9a;text-transform:none;letter-spacing:0}
.first-access-box{margin-top:2px;border:1px solid #d6e2e9;background:#f5f9fb;min-height:43px;padding:9px 11px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;color:#668092}
.first-access-box a{font-weight:950;color:#185b85;white-space:nowrap}
.access-card{max-width:570px;width:100%}
.access-type-chip{display:inline-flex;align-items:center;min-height:28px;padding:0 9px;margin:-2px 0 16px;border:1px solid #c7d9e5;background:#eef5fa;color:#285f84;font-size:9px;text-transform:uppercase;letter-spacing:.075em;font-weight:950}
.access-email-sent{border-left:3px solid #2d7ca9;background:#f1f7fa;padding:10px 12px;margin-bottom:2px;font-size:11px;color:#557086}
.access-restart-form{text-align:center;margin-top:10px}
.access-restart-form button{border:0;background:transparent;color:#2a6f99;font-size:10px;font-weight:900;cursor:pointer;padding:6px 8px}
.access-page .auth-note a{font-weight:900;color:#286d9a}
.access-page .login-panel-inner{justify-content:flex-start}
@media(max-width:720px){
  .google-auth-btn{min-height:47px;font-size:11px}
  .auth-provider-note{font-size:8px}
  .auth-divider{margin:11px 0;font-size:7px}
  .field-label-row a{font-size:8px}
  .first-access-box{font-size:9px;padding:8px 9px;min-height:40px}
  .access-page .login-visual-v4{min-height:180px !important;height:22svh !important}
}

/* =========================================================
   Login V6 — desktop hero refinement + cleaner access screen
   ========================================================= */
.auth-body{overflow-x:hidden}
.login-page-v4 .login-help-v4{align-items:center;color:#7890a1}
.login-page-v4 .login-help-v4 span:last-child{font-weight:850;color:#486a80}

.visual-copy-v4 h2{display:flex;flex-direction:column;align-items:flex-start}
.visual-copy-v4 h2>span{display:block}
.visual-copy-v4 h2 .hero-accent{color:#fff;position:relative}
.visual-copy-v4 h2 .hero-accent:after{content:"";position:absolute;left:2px;right:4px;bottom:-7px;height:3px;background:rgba(111,190,232,.88)}
.visual-features-v4 .feature-mark{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.26);background:rgba(255,255,255,.08);color:#fff;font-size:10px;font-weight:950;letter-spacing:.02em;margin-bottom:12px}

@media(min-width:1051px){
  .login-page-v4{grid-template-columns:minmax(430px,39%) minmax(0,61%)}
  .login-panel-inner{width:min(100%,650px);padding:clamp(26px,4vh,46px) clamp(28px,4.2vw,62px) 20px}
  .login-brand-row{margin-bottom:clamp(22px,3.5vh,38px)}
  .auth-card{padding:clamp(24px,2.5vw,32px)}

  .login-visual-v4{padding:clamp(48px,4.4vw,70px);align-items:flex-end}
  .visual-topline{top:clamp(46px,4.4vw,70px);left:clamp(48px,4.4vw,70px)}
  .visual-copy-v4{max-width:760px;margin-bottom:clamp(8px,1.8vh,18px)}
  .visual-copy-v4 .visual-label{padding:8px 11px;font-size:9px;letter-spacing:.13em;font-weight:950;background:rgba(6,35,58,.55)}
  .visual-copy-v4 h2{font-size:clamp(48px,4.55vw,70px);line-height:.93;letter-spacing:-.052em;margin:18px 0 19px;max-width:680px}
  .visual-copy-v4 p{font-size:clamp(14px,1.05vw,16px);line-height:1.62;max-width:620px;color:rgba(255,255,255,.94)}

  .visual-features-v4{max-width:760px;gap:10px;margin-top:30px}
  .visual-features-v4 div{min-height:116px;padding:17px 17px 16px;background:rgba(6,34,55,.62);border-color:rgba(255,255,255,.24);box-shadow:0 16px 34px rgba(0,0,0,.10);overflow:hidden}
  .visual-features-v4 div:before{content:"";position:absolute;left:0;top:0;width:100%;height:2px;background:rgba(110,190,232,.84)}
  .visual-features-v4 .feature-no{right:13px;top:11px;font-size:9px;color:rgba(255,255,255,.58)}
  .visual-features-v4 b{font-size:14px;line-height:1.1;margin:0}
  .visual-features-v4 small{font-size:11px;line-height:1.45;margin-top:7px;color:#dbeaf3}
}

@media(min-width:1051px) and (max-height:800px){
  .login-panel-inner{padding-top:24px;padding-bottom:14px}
  .login-brand-row{margin-bottom:20px}
  .auth-card{padding:22px 26px}
  .login-page-v4 .auth-intro h1{font-size:32px}
  .login-page-v4 .auth-intro p{margin-top:7px;font-size:12px}
  .auth-intro{margin-bottom:15px}
  .portal-tabs-v4{margin-bottom:14px}
  .portal-tabs-v4 button{height:56px}
  .google-auth-btn{min-height:44px}
  .auth-divider{margin:10px 0}
  .login-form-v4{gap:11px}
  .login-form-v4 .input{height:44px}
  .login-form-v4 .password-wrap button{top:5px}
  .login-page-v4 .auth-submit{min-height:46px}
  .auth-note{margin-top:13px;padding-top:12px}
  .login-copyright{padding-top:14px}

  .login-visual-v4{padding-top:44px;padding-bottom:40px}
  .visual-topline{top:40px}
  .visual-copy-v4 h2{font-size:clamp(44px,4.2vw,62px);margin:13px 0 14px}
  .visual-copy-v4 p{font-size:14px}
  .visual-features-v4{margin-top:20px}
  .visual-features-v4 div{min-height:98px;padding:13px 14px}
  .visual-features-v4 .feature-mark{width:26px;height:26px;margin-bottom:9px}
  .visual-features-v4 b{font-size:13px}
  .visual-features-v4 small{font-size:10px;margin-top:5px}
}

@media(max-width:720px){
  .visual-copy-v4 h2 .hero-accent:after{height:2px;bottom:-4px}
}

/* =========================================================
   Login V7 — clean campus hero + verified account access
   ========================================================= */
/* Remove the large decorative rectangle visible on laptop screens. */
.login-visual-v4:before{display:none !important;content:none !important}

.account-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.account-actions a{min-height:54px;border:1px solid #d5e0e7;background:#f7fafc;padding:10px 11px;display:flex;flex-direction:column;justify-content:center;gap:3px;color:#1d5378;transition:border-color .16s ease,background .16s ease,transform .16s ease}
.account-actions a:hover{border-color:#9fb9ca;background:#eef5f9;transform:translateY(-1px)}
.account-actions span{font-size:10px;font-weight:950;letter-spacing:.01em}
.account-actions small{font-size:8px;line-height:1.35;color:#718897}

.access-email-sent{border-left:3px solid #216b97;background:#f2f7fa;padding:11px 12px;margin-bottom:3px;font-size:10px;line-height:1.5;color:#526f82}
.access-email-sent b{color:#173f5a}

@media(min-width:1051px){
  .login-visual-v4{border:0 !important;outline:0 !important}
  .account-actions{gap:9px;margin-top:11px}
  .account-actions a{min-height:56px;padding:10px 12px}
}

@media(max-width:720px){
  .account-actions{grid-template-columns:1fr;gap:6px;margin-top:8px}
  .account-actions a{min-height:46px;padding:8px 10px}
  .account-actions span{font-size:9px}
  .account-actions small{font-size:7.5px}
}

/* =========================================================
   Login V8 — standard academic sign-in + real registration
   ========================================================= */
.login-page-v8 .auth-card{max-width:590px}
.login-page-v8 .auth-intro p{max-width:520px}
.login-page-v8 .auth-submit{border-radius:2px !important}
.login-page-v8 .google-auth-btn{border-radius:2px !important}
.login-page-v8 .portal-tabs-v4 button{border-radius:2px !important}
.login-page-v8 .input-shell,.login-page-v8 .input{border-radius:2px !important}
.register-prompt{margin-top:12px;border:1px solid #d6e1e8;background:#f6f9fb;min-height:46px;padding:10px 12px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;color:#718695}
.register-prompt a{font-weight:950;color:#175b86}
.register-prompt a:hover{text-decoration:underline}

.registration-card{width:100%;max-width:680px;padding:26px 28px}
.registration-page .login-panel-inner{width:min(100%,760px)}
.register-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.register-tabs a{height:58px;border:1px solid #d6e1e8;background:#f7fafc;display:flex;align-items:center;gap:9px;padding:0 12px;color:#536f82;transition:.15s ease}
.register-tabs a.active{border-color:#276c97;background:#eef6fa;color:#153f5c;box-shadow:inset 0 -3px 0 #1f628e}
.register-tabs .tab-icon{width:30px;height:30px;flex:0 0 30px;display:grid;place-items:center;border:1px solid #c8d8e2;background:#fff;font-size:9px;font-weight:950;color:#1b608c}
.register-tabs a span:last-child{display:flex;flex-direction:column}
.register-tabs b{font-size:11px}.register-tabs small{font-size:8px;margin-top:2px;color:#8092a0}
.registration-form{display:grid;gap:14px;margin-top:15px}
.registration-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.registration-grid .span-2-reg{grid-column:1/-1}
.registration-grid .field{margin:0}
.registration-grid .field label{display:flex;align-items:center;gap:6px;font-size:9px;font-weight:900;color:#38556a;margin-bottom:6px;text-transform:uppercase;letter-spacing:.035em}
.registration-grid .input{height:47px;border-radius:2px !important}
.registration-grid select.input{width:100%;border:1px solid #cbd9e3;background:#fff;padding:0 12px;color:#273f51;outline:0}
.optional-label{font-size:7px;font-weight:800;color:#8b9ba6;text-transform:none;letter-spacing:0}
.registration-consent{border-left:3px solid #2c739e;background:#f5f9fb;padding:9px 11px;font-size:8px;line-height:1.55;color:#718694}
.registration-page .auth-submit{border-radius:2px !important;min-height:50px}
.register-signin-link{text-align:center;margin-top:15px;padding-top:14px;border-top:1px solid #e3e9ed;color:#738896;font-size:10px}
.register-signin-link a{font-weight:950;color:#175b86}
.verification-badge{display:grid;gap:4px;border-left:3px solid #236d98;background:#f2f7fa;padding:12px 13px;font-size:9px;color:#6a8292}
.verification-badge span{text-transform:uppercase;letter-spacing:.08em;font-weight:950;color:#2a6488;font-size:8px}
.verification-badge b{font-size:11px;color:#183f59;overflow-wrap:anywhere}
.verification-code-input{letter-spacing:.32em;font-weight:900;text-align:center;font-size:18px !important}
.registration-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:28px;max-width:660px}
.registration-steps div{border:1px solid rgba(255,255,255,.24);background:rgba(6,34,55,.60);padding:14px;display:grid;gap:6px}
.registration-steps b{font-size:9px;color:#8dd0f0;letter-spacing:.08em}
.registration-steps span{font-size:11px;font-weight:900;color:#fff}

.access-page .auth-submit,.access-page .input-shell,.access-page .input,.access-page .access-type-chip{border-radius:2px !important}

@media(min-width:1051px){
  .registration-page{grid-template-columns:minmax(560px,46%) minmax(0,54%)}
  .registration-page .login-panel-inner{padding:28px 44px 18px}
  .registration-page .login-brand-row{margin-bottom:20px}
  .registration-card{padding:23px 26px}
  .registration-page .auth-intro{margin-bottom:13px}
  .registration-page .auth-intro h1{font-size:31px}
  .registration-visual{padding:58px}
  .registration-copy{max-width:650px}
}

@media(min-width:1051px) and (max-height:820px){
  .registration-page .login-panel-inner{padding-top:18px;padding-bottom:10px}
  .registration-page .login-brand-row{margin-bottom:12px}
  .registration-card{padding:17px 22px}
  .registration-page .auth-intro h1{font-size:26px}
  .registration-page .auth-intro p{font-size:10px;margin-top:5px}
  .register-tabs a{height:48px}
  .registration-form{gap:9px;margin-top:10px}
  .registration-grid{gap:8px 10px}
  .registration-grid .input{height:40px;font-size:12px}
  .registration-grid .field label{margin-bottom:4px;font-size:8px}
  .registration-consent{padding:7px 9px}
  .registration-page .auth-submit{min-height:43px}
  .register-signin-link{margin-top:10px;padding-top:9px}
  .registration-steps{margin-top:18px}
}

@media(max-width:1050px){
  .registration-page .login-panel-inner{width:100%}
  .registration-visual{min-height:270px}
}

@media(max-width:720px){
  .login-page-v8 .auth-intro p{font-size:10px}
  .register-prompt{min-height:42px;padding:8px 10px;font-size:9px;flex-wrap:wrap}
  .registration-card{padding:18px 14px}
  .registration-page .login-panel-inner{padding:18px 13px 12px}
  .registration-page .login-brand-row{margin-bottom:14px}
  .registration-grid{grid-template-columns:1fr;gap:9px}
  .registration-grid .span-2-reg{grid-column:auto}
  .registration-grid .input{height:45px}
  .register-tabs a{height:52px;padding:0 9px}
  .registration-visual{min-height:200px !important;height:25svh !important}
  .registration-visual .registration-steps{display:none}
  .registration-page .visual-copy-v4 h2{font-size:28px}
}
