/* EduSmart360 V4.25 — critical first-paint session boundary.
   Authentication authority lives in app-shell.js. This stylesheet owns only the
   mutually-exclusive paint boundary while that authority resolves. */

html.session-boot #login-wrap,
html.session-boot #app,
html.session-boot #session-unavailable,
html.observer-boot #login-wrap,
html.observer-boot #app,
html.superadmin-return #login-wrap,
html.superadmin-return #app,
html.observer-launching #app{
  visibility:hidden;
}

html.session-boot .session-boot-screen,
html.observer-boot .session-boot-screen,
html.superadmin-return .session-boot-screen,
html.observer-launching .session-boot-screen{
  display:grid;
}

.session-boot-screen{
  display:none;
  position:fixed;
  inset:0;
  z-index:12000;
  place-items:center;
  padding:24px;
  background:#F3F6F7;
  color:#0F1E35;
  font-family:"Plus Jakarta Sans",sans-serif;
}
.session-boot-card{
  width:min(340px,100%);
  padding:28px 26px 24px;
  border:1px solid #DEE6E8;
  border-radius:22px;
  background:#FFFFFF;
  box-shadow:0 22px 64px rgba(15,30,53,.08);
  text-align:center;
}
.session-boot-mark{display:none}
.session-boot-brand{color:#0F1E35;font-size:21px;font-weight:820;line-height:1.05;letter-spacing:-.04em}
.session-boot-brand span{color:#315F8A}
.session-boot-copy{margin-top:9px;color:#5A6A82;font-size:12.5px;line-height:1.5}
.session-boot-progress{height:3px;margin-top:20px;overflow:hidden;border-radius:999px;background:#DEE6E8}
.session-boot-progress span{display:block;width:38%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#315F8A,#142F4A);animation:es360-session-progress 1.15s cubic-bezier(.2,.8,.2,1) infinite}

/* Session unavailable is a dedicated product state, never an overlay above app. */
.session-unavailable{
  display:none;
  position:fixed;
  inset:0;
  z-index:11900;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:#F3F6F7;
  color:#0F1E35;
  font-family:"Plus Jakarta Sans",sans-serif;
}
.session-unavailable:not([hidden]){display:flex}
.session-unavailable-card{
  width:min(470px,100%);
  padding:30px;
  border:1px solid #DEE6E8;
  border-radius:24px;
  background:#FFFFFF;
  box-shadow:0 24px 72px rgba(15,30,53,.09);
}
.session-unavailable-card .es360-brand-mark{width:42px;height:42px;margin-bottom:18px}
.session-unavailable-title{font-size:24px;line-height:1.1;font-weight:820;letter-spacing:-.035em}
.session-unavailable-copy{margin-top:9px;color:#5A6A82;font-size:14px;line-height:1.55}
.session-unavailable .btn{width:auto;min-width:190px;min-height:46px;margin-top:22px;padding:0 18px}

@keyframes es360-session-progress{
  0%{transform:translateX(-120%)}
  100%{transform:translateX(365%)}
}

@media(max-width:767px){
  .session-boot-screen,.session-unavailable{padding:18px}
  .session-boot-card{width:min(310px,100%);padding:25px 21px 22px;border-radius:19px}
  .session-unavailable{align-items:flex-end;padding:16px 16px calc(18px + env(safe-area-inset-bottom,0px))}
  .session-unavailable-card{width:100%;padding:24px 22px 22px;border-radius:22px}
  .session-unavailable-title{font-size:22px}
  .session-unavailable-copy{font-size:13.5px}
  .session-unavailable .btn{width:100%;min-width:0}
}

@media(prefers-reduced-motion:reduce){
  .session-boot-progress span{animation:none;width:100%;opacity:.58}
}
