/* ============================================================
   闪图 · 蓝色新版登录页 · 轨道动效皮肤
   只在 body.orbit-login 生效（由 login-orbit.js 在登录/注册页挂上）。
   后台视图（view=admin / users / setup / security）完全不受影响。
   ============================================================ */

body.orbit-login{
  background:radial-gradient(ellipse at 50% 48%,#eaf4ff 0,#f5faff 38%,#ffffff 72%,#f8fcff 100%);
  color:#15375d;
  min-height:100vh;
  overflow-x:hidden;
}
body.orbit-login::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  background-image:linear-gradient(#cfe2f5 1px,transparent 1px),linear-gradient(90deg,#cfe2f5 1px,transparent 1px);
  background-size:72px 72px;
  opacity:.3;
  mask-image:radial-gradient(ellipse at 50% 45%,#000 0,#000 45%,transparent 78%);
  -webkit-mask-image:radial-gradient(ellipse at 50% 45%,#000 0,#000 45%,transparent 78%);
}

/* ---------- 轨道舞台 ---------- */
#orbit-stage{
  position:fixed;
  inset:0;
  z-index:0;
  overflow:hidden;
  pointer-events:none;
}
#orbit-poster{
  position:absolute;
  left:0;
  top:0;
  width:1440px;
  height:900px;
  transform-origin:top left;
  isolation:isolate;
  will-change:transform;
}
#orbit-poster .aurora{
  position:absolute;
  width:920px;height:200px;
  left:270px;top:390px;
  background:#9ed4ff;
  opacity:.34;
  filter:blur(120px);
}
#orbit-poster .rings{
  position:absolute;
  left:0;top:0;
  width:1440px;height:900px;
  opacity:.5;
  pointer-events:none;
}
#orbit-poster .beam-glow{
  position:absolute;
  left:20px;right:20px;top:551px;height:26px;
  background:#61b6ff;
  opacity:.55;
  filter:blur(23px);
}
#orbit-poster .beam{
  position:absolute;
  left:22px;right:22px;top:561px;height:3px;
  background:linear-gradient(90deg,transparent,#9ed4ff 12%,#50a9ed 40%,#f2fbff 50%,#63b6f0 60%,#7ec2f2 88%,transparent);
  box-shadow:0 0 10px #8ecdf7,0 0 36px #63b6ff88;
  z-index:150;
}
#orbit-poster .beam::after{
  content:'';
  position:absolute;
  left:0;top:-2px;
  width:170px;height:7px;
  background:linear-gradient(90deg,transparent,#fff,transparent);
  filter:blur(2px);
  animation:orbitTravel 8s linear infinite;
}
#orbit-poster .floor{
  position:absolute;
  left:180px;right:180px;top:750px;height:40px;
  border-radius:50%;
  background:#69b8fb;
  opacity:.24;
  filter:blur(40px);
}
#orbit-poster .star{
  position:absolute;
  width:2px;height:2px;
  background:#5fa9dc;
  border-radius:50%;
  box-shadow:0 0 8px #6dc2f5;
  opacity:.45;
}
.orbit-icon{
  position:absolute;
  left:0;top:0;
  width:72px;height:72px;
  padding:0;
  border:0;
  background:transparent;
  cursor:default;
  outline:none;
  pointer-events:auto;
  will-change:transform;
  -webkit-tap-highlight-color:transparent;
}
.orbit-icon .tile{
  display:block;
  width:100%;height:100%;
  padding:5px;
  border:1px solid #9fd2f4cc;
  border-radius:19px;
  background:linear-gradient(140deg,#ffffffcc,#dcecfbcc);
  box-shadow:4px 7px 0 #cfe3f6,6px 12px 22px #9cbdd822,inset 0 1px 0 #ffffffdd;
  transition:transform .34s cubic-bezier(.22,1,.36,1),box-shadow .34s,border-color .34s;
}
.orbit-icon .tile img{
  width:100%;height:100%;
  border-radius:14px;
  display:block;
  pointer-events:none;
}
.orbit-icon:hover .tile{
  transform:scale(1.4) translateY(-6px);
  border-color:#4f95ea;
  box-shadow:0 0 0 2px #a8d4ff,0 0 26px #8ec4ffcc,5px 9px 0 #d3e6f8;
}
.orbit-icon .name{
  position:absolute;
  left:50%;top:92px;
  transform:translateX(-50%);
  white-space:nowrap;
  font-size:13px;
  color:#eaf7ff;
  padding:7px 12px;
  background:#153a5fe6;
  border:1px solid #7fbde8;
  border-radius:8px;
  opacity:0;
  transition:opacity .2s;
  pointer-events:none;
  z-index:5;
}
.orbit-icon:hover .name{opacity:1}
@keyframes orbitTravel{from{transform:translateX(-180px)}to{transform:translateX(1450px)}}
#orbit-poster.paused *{animation-play-state:paused!important}

/* 暂停按钮 */
#orbit-pause{
  position:fixed;
  right:26px;bottom:22px;
  z-index:6;
  width:34px;height:34px;
  display:grid;place-items:center;
  border:1px solid #c9def2;
  border-radius:50%;
  background:#ffffffd9;
  color:#5e89b5;
  font-size:12px;
  letter-spacing:0;
  box-shadow:0 4px 14px #7aa5c81f;
  backdrop-filter:blur(6px);
  transition:border-color .2s,color .2s,transform .2s,background .2s;
}
#orbit-pause:hover{border-color:#63a7e8;color:#2f6fb3;transform:translateY(-1px);background:#fff}
#orbit-pause:active{transform:scale(.94)}

/* ---------- 三处标语 ---------- */
.orbit-slogan{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  color:#5c7fa6;
  letter-spacing:.34em;
  white-space:nowrap;
}
#orbit-kicker{
  position:fixed;
  top:146px;
  left:0;right:0;
  z-index:2;
  text-align:center;
  font-size:11px;
  color:#7d9cbe;
  opacity:.95;
  pointer-events:none;
}
#orbit-kicker::before,
#orbit-kicker::after{
  content:"";
  display:inline-block;
  vertical-align:middle;
  width:42px;height:1px;
  margin:0 16px;
  background:linear-gradient(90deg,transparent,#a8c6e4,transparent);
}
#orbit-foot{
  position:relative;
  z-index:2;
  text-align:center;
  font-size:10px;
  color:#93aec9;
  letter-spacing:.26em;
  pointer-events:none;
  padding:0 24px 12px;
}

/* ---------- 页面骨架 ---------- */
body.orbit-login header{
  position:relative;
  z-index:3;
  background:#ffffffc4;
  backdrop-filter:blur(14px);
  border-bottom:1px solid #e4eef9;
  height:70px;
  padding:0 4.5%;
}
body.orbit-login header .brand{color:#1d3f6b;font-weight:800;letter-spacing:-.5px}
body.orbit-login header .brand span{color:#8ba3bd;font-weight:400}
body.orbit-login header nav{font-size:13px;color:#5c7794}
body.orbit-login header nav a{color:#46698e}
body.orbit-login header nav a:hover{color:#2563eb}

body.orbit-login main{
  position:relative;
  z-index:2;
  max-width:860px;
  margin:0 auto;
  padding:0 24px;
  min-height:calc(100vh - 178px);
  display:flex;
  align-items:center;
  justify-content:center;
}

/* ---------- 登录卡片：透明、居中、缩小 ---------- */
body.orbit-login .access{
  grid-template-columns:1fr 372px;
  align-items:center;
  gap:26px;
  min-height:0;
  background:transparent;
  border:0;
  border-radius:0;
  box-shadow:none;
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
  animation:orbitCardIn .6s cubic-bezier(.22,1,.36,1) both;
  overflow:visible;
}
@keyframes orbitCardIn{from{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:none}}

body.orbit-login .intro.logo-intro{
  background:transparent;
  padding:18px 8px 18px 4px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:flex-start;
  gap:0;
  position:relative;
  overflow:visible;
  min-height:0;
}
/* 文字后面一层柔和白光，保证透明卡片可读 */
body.orbit-login .intro.logo-intro::before{
  content:"";
  position:absolute;
  inset:-34px -46px -34px -60px;
  background:radial-gradient(ellipse at 42% 50%,#ffffff 0%,#ffffffd9 42%,#ffffff8c 62%,transparent 80%);
  filter:blur(6px);
  pointer-events:none;
  z-index:0;
}
body.orbit-login .intro.logo-intro::after{content:none}

/* 品牌行：logo + 闪图 */
.oi-brand{
  display:flex;
  align-items:center;
  gap:14px;
  position:relative;
  z-index:2;
}
.oi-logo{
  width:62px;height:62px;
  flex-shrink:0;
  display:grid;
  place-items:center;
  border-radius:18px;
  background:#fff;
  border:1px solid #d5e7fb;
  box-shadow:5px 7px 0 #d2e5f8,0 14px 26px -12px #6b9ed14d;
  transform:rotate(-6deg);
  animation:oiFloat 7s ease-in-out infinite;
  overflow:hidden;
}
.oi-logo img{width:100%;height:100%;object-fit:contain;padding:4px}
@keyframes oiFloat{50%{transform:rotate(-6deg) translateY(-6px)}}
.oi-word{
  font-size:32px;
  font-weight:800;
  letter-spacing:1.5px;
  line-height:1;
  background:linear-gradient(120deg,#123a66,#2f6fd0 62%,#4f93e8);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.oi-word small{
  display:block;
  margin-top:7px;
  font-size:8px;
  font-weight:600;
  letter-spacing:2.8px;
  color:#7f9cbb;
  -webkit-text-fill-color:#7f9cbb;
}

/* 标语 ②：主视觉里 */
body.orbit-login .oi-slogan{
  /* auth.css 在窄屏会隐藏 .intro p，这里用更高优先级保持标语常显 */
  display:block;
  margin:34px 0 0;
  font-size:15px;
  color:#33587f;
  letter-spacing:.2em;
  font-weight:600;
  position:relative;
  z-index:2;
}
.oi-slogan::after{
  content:"";
  display:block;
  width:46px;height:2px;
  margin-top:16px;
  border-radius:2px;
  background:linear-gradient(90deg,#2f6fd0,#8fc4f5);
}
.oi-desc{
  margin:14px 0 0;
  font-size:12px;
  line-height:1.95;
  color:#6887a6;
  position:relative;
  z-index:2;
  max-width:270px;
}
.oi-points{
  list-style:none;
  margin:18px 0 0;
  padding:0;
  display:grid;
  gap:9px;
  position:relative;
  z-index:2;
}
.oi-points li{
  display:flex;
  align-items:center;
  gap:9px;
  font-size:11.5px;
  color:#5b7895;
}
.oi-points li i{
  width:16px;height:16px;
  flex-shrink:0;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#dceafc;
  color:#2f6fd0;
  font-size:9px;
  font-style:normal;
}
.oi-stats{
  display:flex;
  gap:26px;
  margin-top:30px;
  padding-top:0;
  position:relative;
  z-index:2;
}
.oi-stats div strong{
  display:block;
  font-size:21px;
  font-weight:800;
  letter-spacing:-.5px;
  color:#1e4a7d;
}
.oi-stats div span{
  font-size:10.5px;
  letter-spacing:1.4px;
  color:#87a2bf;
}

/* ---------- 表单侧 ---------- */
body.orbit-login .form-panel{
  position:relative;
  z-index:3;
  padding:26px 26px 28px;
  background:rgba(255,255,255,.84);
  backdrop-filter:blur(26px) saturate(1.1);
  -webkit-backdrop-filter:blur(26px) saturate(1.1);
  border:1px solid #e4eefb;
  border-radius:22px;
  box-shadow:0 26px 64px -30px #2b5c9540,0 2px 0 #fff inset;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
body.orbit-login .form-panel .tabs{
  padding:3px;
  background:#f2f6fd;
  border:0;
  border-radius:11px;
  gap:3px;
  margin-bottom:20px;
}
body.orbit-login .form-panel .tabs button{
  flex:1;
  padding:7px 0;
  border:0;
  border-radius:8px;
  color:#8296ae;
  font-size:12.5px;
  font-weight:600;
  transition:background .2s,color .2s,box-shadow .2s;
}
body.orbit-login .form-panel .tabs button:hover{color:#3b6fb5}
body.orbit-login .form-panel .tabs button.active{
  background:#fff;
  color:#2563eb;
  box-shadow:0 2px 8px #2c4a711a;
}
body.orbit-login .form-panel h2{
  font-size:20px;
  letter-spacing:-.4px;
  color:#1a3557;
  margin:0 0 8px;
}
body.orbit-login .form-panel .sub{
  color:#8b9cb1;
  font-size:12px;
  line-height:1.8;
  margin:0 0 16px;
}
body.orbit-login label{
  font-size:11.5px;
  font-weight:600;
  color:#5a718c;
  margin:12px 0 6px;
}
body.orbit-login input{
  background:#f8fbff;
  border:1px solid #dfe9f5;
  border-radius:10px;
  padding:10px 12px;
  font-size:13px;
  color:#16324f;
  transition:border-color .2s,box-shadow .2s,background .2s;
}
body.orbit-login input::placeholder{color:#a6b6c8;font-size:12.5px}
body.orbit-login input:focus{
  outline:none;
  border-color:#7aa8ee;
  background:#fff;
  box-shadow:0 0 0 4px #2f6fd01a;
}
body.orbit-login .password button{
  top:9px;
  color:#7d97b4;
  font-size:11.5px;
  border-radius:7px;
  transition:color .18s,background .18s;
}
body.orbit-login .password button:hover{color:#2f6fd0;background:#eef5ff}
body.orbit-login .primary{
  background:linear-gradient(110deg,#2563eb,#3f86f0 60%,#54a0f5);
  border:0;
  border-radius:11px;
  color:#fff;
  padding:14px 20px;
  font-weight:600;
  letter-spacing:.04em;
  box-shadow:0 10px 22px -8px #2563eb99;
  transition:box-shadow .22s,transform .18s,filter .22s;
}
body.orbit-login .primary:hover{
  box-shadow:0 14px 28px -8px #2563ebaa;
  filter:brightness(1.03);
  transform:translateY(-1px);
}
body.orbit-login .primary:active{transform:translateY(0) scale(.99)}
body.orbit-login .wide{margin-top:22px}
body.orbit-login .recover-link{
  color:#6d90bb;
  font-size:12px;
  margin-top:10px;
  background:none;
  border:0;
  padding:0;
  align-self:flex-start;
}
body.orbit-login .recover-link:hover{color:#2563eb}
body.orbit-login .hint{color:#93a7bd;font-size:11px;line-height:1.85}
body.orbit-login .feedback{font-size:12.5px}
body.orbit-login .quiet{
  border:1px solid #dbe7f5;
  background:#fff;
  color:#5d7d9d;
  border-radius:9px;
}
body.orbit-login .badge{
  background:#e8f1ff;
  color:#2b62c4;
  border:1px solid #d3e4fb;
}

/* 站底说明 */
body.orbit-login #site-notice{
  position:relative;
  z-index:2;
  color:#9db2c8;
  font-size:11px;
  padding:0 24px 54px;
  margin:0 auto;
  max-width:1080px;
}

/* 点击波纹 */
.oi-wave{
  position:fixed;
  pointer-events:none;
  width:10px;height:10px;
  border-radius:50%;
  background:#4f8dff33;
  border:1px solid #4f8dff55;
  z-index:20000;
  animation:oiWave .5s ease-out forwards;
}
@keyframes oiWave{to{transform:scale(8);opacity:0}}

/* ---------- 响应式 ---------- */
@media(max-width:940px){
  body.orbit-login main{margin:24px auto 20px;min-height:0;display:block}
  body.orbit-login .access{grid-template-columns:1fr;min-height:0}
  body.orbit-login .intro.logo-intro{padding:26px 24px 24px}
  body.orbit-login .intro.logo-intro::before{inset:-14px -12px;opacity:.9}
  .oi-brand{gap:14px}
  .oi-logo{width:64px;height:64px;border-radius:18px;box-shadow:4px 6px 0 #cfe3f8}
  .oi-word{font-size:32px}
  .oi-slogan{font-size:13px;margin-top:22px;letter-spacing:.14em}
  .oi-points,.oi-stats,.oi-desc{display:none}
  body.orbit-login .form-panel{padding:30px 26px 34px}
  #orbit-kicker{top:140px;font-size:9.5px;letter-spacing:.2em}
  #orbit-kicker::before,#orbit-kicker::after{width:16px;margin:0 8px}
}
@media(max-width:560px){
  body.orbit-login header{height:60px}
  body.orbit-login header .brand span{display:none}
  #orbit-foot{font-size:9px;letter-spacing:.16em}
  body.orbit-login #site-notice{font-size:10px;padding-bottom:70px}
}

@media(prefers-reduced-motion:reduce){
  body.orbit-login .access{animation:none}
  .oi-logo{animation:none}
  .oi-wave{display:none}
}
