/* ===== Session overlays: boot, lock, suspend, power-off ===== */

#session-layer { position:fixed; inset:0; z-index:10000; display:none; }
#session-layer.show { display:block; }

/* boot splash */
.boot-splash {
  position:absolute; inset:0; background:#2c001e;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:34px;
}
.boot-splash.light-bg { background:#f7f7f7; }
.boot-logo { width:110px; height:110px; animation:boot-pulse 2.2s ease-in-out infinite; }
@keyframes boot-pulse { 0%,100% { opacity:.92; } 50% { opacity:.65; } }
.boot-dots { display:flex; gap:11px; }
.boot-dots i {
  width:9px; height:9px; border-radius:99px; background:#fff; opacity:.28;
  animation:boot-dot 1.4s ease-in-out infinite;
}
.boot-dots i:nth-child(2) { animation-delay:.15s; }
.boot-dots i:nth-child(3) { animation-delay:.3s; }
.boot-dots i:nth-child(4) { animation-delay:.45s; }
.boot-dots i:nth-child(5) { animation-delay:.6s; }
@keyframes boot-dot { 0%,100% { opacity:.25; } 40% { opacity:1; } }
.boot-msg { color:rgba(255,255,255,.75); font-family:var(--font-mono); font-size:13px; height:18px; letter-spacing:.3px; }

/* shutdown / restart fade */
.power-fade {
  position:absolute; inset:0; background:#000; opacity:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:22px;
  transition:opacity .5s ease;
}
.power-fade.on { opacity:1; }
.power-fade .pf-text { color:rgba(255,255,255,.85); font-size:15px; font-weight:500; }
.power-fade .gspinner { border-color:rgba(255,255,255,.2); border-top-color:#fff; width:26px; height:26px; }

/* off screen */
.off-screen {
  position:absolute; inset:0; background:#000;
  display:flex; align-items:center; justify-content:center;
}
.power-btn-off {
  width:74px; height:74px; border-radius:99px; border:2px solid rgba(255,255,255,.25);
  background:rgba(255,255,255,.05); color:rgba(255,255,255,.75); cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:border-color .2s ease, background .2s ease, transform .1s ease;
}
.power-btn-off:hover { border-color:rgba(255,255,255,.6); background:rgba(255,255,255,.1); }
.power-btn-off:active { transform:scale(.95); }
.power-btn-off svg { width:30px; height:30px; fill:currentColor; }

/* lock screen */
.lock-screen {
  position:absolute; inset:0; overflow:hidden;
  display:flex; flex-direction:column; align-items:center;
}
.lock-screen .lock-wall {
  position:absolute; inset:-20px; background-size:cover; background-position:center;
  filter:blur(26px) brightness(.72); transform:scale(1.06);
}
.lock-screen .lock-shade { position:absolute; inset:0; background:rgba(0,0,0,.18); }
.lock-clock-wrap {
  position:relative; z-index:2; margin-top:16vh; text-align:center; color:#fff;
  text-shadow:0 2px 18px rgba(0,0,0,.5);
  transition:opacity .25s ease, transform .25s ease;
}
.lock-screen.authenticating .lock-clock-wrap { opacity:0; transform:translateY(-30px); pointer-events:none; }
.lock-time { font-size:104px; font-weight:300; line-height:1; letter-spacing:-1px; }
.lock-date { font-size:21px; font-weight:700; margin-top:8px; }
.lock-hint {
  position:relative; z-index:2; margin-top:auto; margin-bottom:38px; color:rgba(255,255,255,.85);
  font-size:13.5px; font-weight:500; text-shadow:0 1px 6px rgba(0,0,0,.6);
  animation:hint-float 2.6s ease-in-out infinite;
}
@keyframes hint-float { 0%,100% { transform:translateY(0);} 50% { transform:translateY(-5px);} }
.lock-auth {
  position:relative; z-index:2; margin:auto; display:none; flex-direction:column; align-items:center; gap:14px;
}
.lock-screen.authenticating .lock-auth { display:flex; animation:auth-in .3s cubic-bezier(.3,1,.4,1); }
@keyframes auth-in { from { opacity:0; transform:translateY(24px); } }
.lock-avatar { width:84px; height:84px; border-radius:99px; overflow:hidden; box-shadow:0 4px 20px rgba(0,0,0,.4); }
.lock-avatar img, .lock-avatar svg { width:100%; height:100%; }
.lock-name { color:#fff; font-size:17px; font-weight:700; text-shadow:0 1px 6px rgba(0,0,0,.5); }
.lock-pass {
  width:250px; height:38px; border-radius:99px; border:none; outline:none;
  background:rgba(255,255,255,.22); color:#fff; font-size:14px; text-align:center;
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.25);
}
.lock-pass::placeholder { color:rgba(255,255,255,.7); }
.lock-pass:focus { box-shadow:inset 0 0 0 2px var(--accent); }
.lock-error { color:#ffb3ae; font-size:12.5px; min-height:16px; text-shadow:0 1px 4px rgba(0,0,0,.6); }
.lock-status-icons {
  position:absolute; right:16px; bottom:14px; z-index:2; display:flex; gap:12px; color:#fff;
}
.lock-status-icons svg { width:16px; height:16px; fill:#fff; filter:drop-shadow(0 1px 3px rgba(0,0,0,.6)); }

/* suspend black */
.suspend-screen { position:absolute; inset:0; background:#000; }

/* screenshot flash */
#flash { position:fixed; inset:0; z-index:10500; background:#fff; opacity:0; pointer-events:none; }
#flash.go { animation:flash .32s ease; }
@keyframes flash { 0% { opacity:.85; } 100% { opacity:0; } }

/* night light & brightness overlays */
#night-light { position:fixed; inset:0; z-index:9990; pointer-events:none; background:#ff9a3c; opacity:0; mix-blend-mode:multiply; transition:opacity .6s ease; }
#brightness-overlay { position:fixed; inset:0; z-index:9991; pointer-events:none; background:#000; opacity:0; transition:opacity .3s ease; }

/* global dialog layer (power dialogs etc.) */
#global-dialogs {
  position:fixed; inset:0; z-index:9500; display:none;
  align-items:center; justify-content:center; background:rgba(0,0,0,.42);
}
#global-dialogs.show { display:flex; animation:fade-in .15s ease; }
#global-dialogs .gdialog { background:var(--win-bg); }
