/* ============================================================
   维度信息库 · 访客友好登录（导航入口 + 轻量登录弹窗）
   只负责 auth-* / am-* 命名空间，不覆盖门户既有样式。
   ============================================================ */

:root{--sans:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif}

/* ---------- 桌面顶栏：游客双按钮 / 已登录头像菜单 ---------- */
.auth-nav{
  position:relative;
  min-width:112px;
  height:30px;
  flex:0 0 auto;
}
.auth-guest,.auth-user{
  position:absolute;
  right:0;
  top:0;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:5px;
  height:30px;
  transition:opacity .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1);
}
.auth-user{
  width:100%;
  opacity:0;
  pointer-events:none;
  transform:translateY(-4px);
}
.auth-nav.is-user .auth-guest{
  opacity:0;
  pointer-events:none;
  transform:translateY(4px);
}
.auth-nav.is-user .auth-user{
  opacity:1;
  pointer-events:auto;
  transform:none;
}
.auth-btn{
  height:30px;
  padding:0 10px;
  border:1px solid var(--border2);
  border-radius:999px;
  background:var(--card);
  color:var(--text2);
  font:700 11.5px/1 var(--sans,inherit);
  cursor:pointer;
  white-space:nowrap;
  transition:background .18s,color .18s,border-color .18s,transform .18s;
}
.auth-btn:hover{border-color:var(--gold);color:var(--gold2);background:var(--gold-soft)}
.auth-btn:active{transform:translateY(1px)}
.auth-btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.auth-signup{
  border-color:transparent;
  background:linear-gradient(135deg,var(--gold),var(--gold2));
  color:#fff;
  box-shadow:0 4px 12px rgba(168,95,10,.18);
}
.auth-signup:hover{background:linear-gradient(135deg,var(--gold2),var(--gold));color:#fff;border-color:transparent}
html[data-theme="dark"] .auth-signup{color:#10192C}
.auth-user-btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:30px;
  max-width:100%;
  padding:2px 4px 2px 2px;
  border:1px solid transparent;
  border-radius:999px;
  background:transparent;
  color:var(--text);
  cursor:pointer;
  min-width:0;
  transition:background .18s,border-color .18s;
}
.auth-user-btn:hover{background:var(--card2);border-color:var(--border)}
.auth-user-btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.auth-avatar{
  width:25px;
  height:25px;
  flex:0 0 25px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:linear-gradient(135deg,var(--gold),var(--gold2));
  color:#fff;
  font:800 11px/1 var(--sans,inherit);
  text-transform:uppercase;
  box-shadow:0 2px 7px rgba(168,95,10,.2);
}
html[data-theme="dark"] .auth-avatar{color:#10192C}
.auth-name{
  max-width:50px;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font:700 11.5px/1 var(--sans,inherit);
}
.auth-chev{width:12px;height:12px;color:var(--text3);flex:0 0 12px;transition:transform .2s}
.auth-user-btn[aria-expanded="true"] .auth-chev{transform:rotate(180deg)}
.auth-menu{
  position:fixed;
  top:calc(100% + 8px);
  right:auto;
  width:190px;
  padding:5px;
  border:1px solid var(--border);
  border-radius:10px;
  background:var(--card);
  box-shadow:0 14px 34px rgba(10,16,32,.18);
  z-index:70;
  transform-origin:top right;
  animation:authMenuIn .2s cubic-bezier(.22,1,.36,1) both;
}
@keyframes authMenuIn{from{opacity:0;transform:translateY(-4px) scale(.97)}to{opacity:1;transform:none}}
.auth-menu-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  width:100%;
  min-height:34px;
  padding:0 9px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:var(--text2);
  font:600 12px/1 var(--sans,inherit);
  text-align:left;
  cursor:pointer;
}
.auth-member-badge{font-size:10px;padding:1px 6px;border-radius:999px;background:var(--gold-soft);color:var(--gold2);white-space:nowrap}
.auth-member-badge.expired{background:rgba(154,90,0,.12);color:#9A5A00}
.auth-member-badge.none{display:none}
.auth-menu-item:hover{background:var(--gold-soft);color:var(--gold2)}
.auth-menu-item.danger:hover{background:rgba(179,51,37,.07);color:var(--red)}
.auth-menu-item:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}

/* ---------- 移动顶栏：头像图标 ---------- */
.mobile-auth{
  position:relative;
  margin-left:auto;
  flex:0 0 auto;
  display:flex;
  align-items:center;
}
.mobile-auth-btn{
  width:32px;
  height:32px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--border);
  border-radius:50%;
  background:var(--card);
  color:var(--text3);
  cursor:pointer;
  padding:0;
}
.mobile-auth-btn:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.mobile-auth-btn.is-user{border-color:var(--gold);background:var(--gold-soft);color:var(--gold2)}
.mobile-auth-avatar{
  width:100%;
  height:100%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  font:800 11px/1 var(--sans,inherit);
  text-transform:uppercase;
}
.mobile-auth-avatar svg{width:17px;height:17px}
.mobile-auth-btn.is-user .mobile-auth-avatar{background:linear-gradient(135deg,var(--gold),var(--gold2));color:#fff}
html[data-theme="dark"] .mobile-auth-btn.is-user .mobile-auth-avatar{color:#10192C}
.auth-mobile-menu{
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  width:168px;
  padding:5px;
  border:1px solid var(--border);
  border-radius:10px;
  background:var(--card);
  box-shadow:0 14px 34px rgba(10,16,32,.2);
  z-index:64;
  animation:authMenuIn .2s cubic-bezier(.22,1,.36,1) both;
}
.auth-mobile-menu .auth-menu-item{min-height:38px;font-size:12.5px}
.auth-mobile-menu[hidden]{display:none}

/* ---------- 轻量登录弹窗 ---------- */
.am-layer{
  position:fixed;
  inset:0;
  z-index:80;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
  overflow:auto;
}
.am-layer[hidden]{display:none}
.am-scrim{
  position:absolute;
  inset:0;
  background:rgba(6,10,18,.62);
  opacity:0;
  transition:opacity .22s cubic-bezier(.22,1,.36,1);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}
.am-card{
  position:relative;
  z-index:1;
  width:min(452px,100%);
  max-height:calc(100vh - 36px);
  overflow:auto;
  overscroll-behavior:contain;
  border:1px solid var(--border);
  border-radius:18px;
  background:var(--card);
  color:var(--text);
  box-shadow:0 28px 80px rgba(6,10,18,.32),0 1px 0 rgba(255,255,255,.45) inset;
  padding:22px 22px 18px;
  opacity:0;
  transform:translateY(16px) scale(.985);
  transition:opacity .22s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1);
  scrollbar-gutter:stable;
}
.am-layer.on .am-scrim{opacity:1}
.am-layer.on .am-card{opacity:1;transform:none}
.am-layer.am-success .am-card{border-color:rgba(11,110,67,.45)}
.am-head{
  display:flex;
  align-items:flex-start;
  gap:12px;
  margin-bottom:14px;
}
.am-head-copy{min-width:0;flex:1}
.am-kicker{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-bottom:7px;
  color:var(--gold2);
  font:800 9.5px/1 var(--sans,inherit);
  letter-spacing:1.6px;
  text-transform:uppercase;
}
.am-kicker::before{content:"";width:14px;height:1px;background:var(--goldD)}
.am-title{
  margin:0;
  color:var(--text);
  font:700 22px/1.18 var(--serif,"Songti SC",serif);
  letter-spacing:.2px;
}
.am-sub{
  margin:6px 0 0;
  color:var(--text3);
  font:400 11.5px/1.5 var(--sans,inherit);
}
.am-close{
  width:30px;
  height:30px;
  flex:0 0 30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--border);
  border-radius:50%;
  background:var(--card2);
  color:var(--text3);
  cursor:pointer;
  transition:background .18s,color .18s,border-color .18s;
}
.am-close:hover{background:var(--gold-soft);border-color:var(--gold);color:var(--gold2)}
.am-close:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.am-close svg{width:15px;height:15px}

.am-tabs{
  position:relative;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:0;
  height:37px;
  padding:3px;
  margin-bottom:17px;
  border:1px solid var(--border);
  border-radius:9px;
  background:var(--card2);
}
.am-tab{
  position:relative;
  z-index:1;
  border:0;
  border-radius:7px;
  background:transparent;
  color:var(--text3);
  font:700 12px/1 var(--sans,inherit);
  cursor:pointer;
  transition:color .2s;
}
.am-tab[aria-selected="true"]{color:var(--gold2)}
.am-tab:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.am-ink{
  position:absolute;
  z-index:0;
  top:3px;
  left:3px;
  width:calc(50% - 3px);
  height:calc(100% - 6px);
  border-radius:7px;
  background:var(--card);
  box-shadow:0 1px 5px rgba(20,30,50,.08);
  transition:transform .24s cubic-bezier(.22,1,.36,1);
}
.am-tabs[data-mode="register"] .am-ink{transform:translateX(100%)}

.am-pane{padding-top:1px}
.am-pane[hidden]{display:none}
.am-pane.is-entering{animation:amPaneIn .24s cubic-bezier(.22,1,.36,1) both}
@keyframes amPaneIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

.am-field{margin-bottom:12px}
.am-field-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:18px;
  margin-bottom:5px;
}
.am-label{
  color:var(--text2);
  font:700 11px/1.2 var(--sans,inherit);
}
.am-count{
  color:var(--text3);
  font:500 9.5px/1 var(--sans,inherit);
  font-variant-numeric:tabular-nums;
}
.am-count.is-over{color:var(--red)}
.am-control{position:relative}
.am-input{
  width:100%;
  height:42px;
  padding:0 35px 0 11px;
  border:1px solid var(--border2);
  border-radius:9px;
  background:var(--card2);
  color:var(--text);
  font:500 13px/1.2 var(--sans,inherit);
  outline:none;
  transition:border-color .16s,box-shadow .16s,background .16s;
}
.am-input::placeholder{color:var(--text3);opacity:.72}
.am-input:hover{border-color:var(--border2);background:var(--card)}
.am-input:focus{
  border-color:var(--gold);
  background:var(--card);
  box-shadow:0 0 0 3px var(--gold-soft);
}
.am-field.is-invalid .am-input{
  border-color:var(--red);
  background:rgba(179,51,37,.035);
  box-shadow:0 0 0 3px rgba(179,51,37,.08);
}
.am-field.is-valid .am-input{border-color:rgba(11,110,67,.48)}
.am-field.is-valid .am-input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(11,110,67,.1)}
.am-field.is-invalid .am-control{animation:amShake .22s ease}
@keyframes amShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
.am-input.is-password{padding-right:74px}
.am-eye{
  position:absolute;
  top:6px;
  right:6px;
  width:30px;
  height:30px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:0;
  border-radius:6px;
  background:transparent;
  color:var(--text3);
  cursor:pointer;
}
.am-eye:hover{background:var(--gold-soft);color:var(--gold2)}
.am-eye:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.am-eye svg{width:16px;height:16px}
.am-tick{
  position:absolute;
  top:13px;
  right:11px;
  width:16px;
  height:16px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:var(--green);
  color:#fff;
  font:800 10px/1 var(--sans,inherit);
  opacity:0;
  visibility:hidden;
  transform:scale(.7);
  transition:opacity .16s,visibility .16s,transform .16s;
}
.am-field.is-valid .am-tick{opacity:1;visibility:visible;transform:scale(1)}
.am-field.has-eye .am-tick{right:40px}
.am-msg{
  max-height:0;
  overflow:hidden;
  margin-top:0;
  color:var(--red);
  font:500 10.5px/1.45 var(--sans,inherit);
  opacity:0;
  transition:max-height .18s,opacity .18s,margin-top .18s;
}
.am-field.is-invalid .am-msg{max-height:38px;margin-top:5px;opacity:1}
.am-hint{
  margin-top:5px;
  color:var(--text3);
  font:400 10px/1.45 var(--sans,inherit);
}

.am-meter{display:flex;gap:4px;margin-top:7px}
.am-meter i{height:4px;flex:1;border-radius:3px;background:var(--border);transition:background .2s}
.am-meter i.on:nth-child(1){background:#C24135}
.am-meter i.on:nth-child(2){background:#C9962F}
.am-meter i.on:nth-child(3){background:#2E7D5B}
.am-meter i.on:nth-child(4){background:#1F6FEB}
.am-strength{
  display:flex;
  justify-content:space-between;
  gap:8px;
  margin-top:4px;
  color:var(--text3);
  font:500 9.5px/1.3 var(--sans,inherit);
}
.am-strength b{font-weight:800}

.am-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin:2px 0 15px;
}
.am-check{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:var(--text2);
  font:500 11px/1.2 var(--sans,inherit);
  cursor:pointer;
  user-select:none;
}
.am-check input{
  width:15px;
  height:15px;
  accent-color:var(--gold);
  cursor:pointer;
}
.am-forgot{
  color:var(--gold2);
  font:700 11px/1.2 var(--sans,inherit);
  text-decoration:none;
  border-bottom:1px solid rgba(168,95,10,.25);
  padding-bottom:1px;
}
.am-forgot:hover{border-bottom-color:var(--gold)}
.am-forgot:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

.am-submit{
  position:relative;
  width:100%;
  height:44px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:0;
  border-radius:10px;
  background:linear-gradient(135deg,var(--gold),var(--gold2));
  color:#fff;
  font:800 13px/1 var(--sans,inherit);
  letter-spacing:.4px;
  cursor:pointer;
  box-shadow:0 9px 22px rgba(168,95,10,.2);
  transition:transform .16s,box-shadow .16s,background .2s,color .2s;
}
html[data-theme="dark"] .am-submit{color:#10192C}
.am-submit:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(168,95,10,.26)}
.am-submit:active{transform:translateY(1px);box-shadow:0 5px 14px rgba(168,95,10,.18)}
.am-submit:focus-visible{outline:3px solid var(--goldL);outline-offset:3px}
.am-submit:disabled{opacity:.72;cursor:not-allowed;transform:none;box-shadow:none}
.am-submit.is-loading{background:linear-gradient(135deg,var(--gold2),var(--gold2));opacity:1}
.am-submit.is-success{background:linear-gradient(135deg,#2E7D5B,#0B6E43);box-shadow:0 9px 22px rgba(11,110,67,.2)}
.am-spinner{
  width:15px;height:15px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;
  animation:amSpin .65s linear infinite;
}
@keyframes amSpin{to{transform:rotate(360deg)}}
.am-checkmark{font:800 16px/1 var(--sans,inherit)}

.am-switch{
  margin:12px 0 0;
  color:var(--text3);
  text-align:center;
  font:500 11px/1.5 var(--sans,inherit);
}
.am-switch button{
  border:0;
  background:transparent;
  color:var(--gold2);
  font:800 11px/1.5 var(--sans,inherit);
  cursor:pointer;
  padding:2px 4px;
}
.am-switch button:hover{text-decoration:underline}
.am-switch button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.am-note{
  display:flex;
  align-items:center;
  gap:6px;
  justify-content:center;
  margin-top:13px;
  color:var(--text3);
  font:500 9.5px/1.4 var(--sans,inherit);
  text-align:center;
}
.am-note svg{width:12px;height:12px;flex:0 0 12px;color:var(--green)}

.am-toast{
  position:fixed;
  top:16px;
  left:50%;
  z-index:92;
  max-width:min(420px,calc(100vw - 28px));
  padding:9px 13px;
  border:1px solid var(--border);
  border-radius:9px;
  background:var(--card);
  color:var(--text2);
  box-shadow:0 12px 30px rgba(6,10,18,.18);
  font:600 11.5px/1.4 var(--sans,inherit);
  transform:translate(-50%,-8px);
  opacity:0;
  pointer-events:none;
  transition:opacity .18s,transform .18s;
}
.am-toast.on{opacity:1;transform:translate(-50%,0)}
.am-toast.is-err{border-color:rgba(179,51,37,.3);color:var(--red);background:#FFF7F5}
.am-toast.is-ok{border-color:rgba(11,110,67,.28);color:var(--green);background:#F3FBF7}
html[data-theme="dark"] .am-toast.is-err{background:#2A1718}
html[data-theme="dark"] .am-toast.is-ok{background:#10241D}

/* ---------- 移动端：底部轻量面板 ---------- */
@media(max-width:560px){
  .am-layer{
    align-items:flex-end;
    padding:0;
  }
  .am-card{
    width:100%;
    max-height:92vh;
    border-radius:18px 18px 0 0;
    border-left:0;
    border-right:0;
    border-bottom:0;
    padding:18px 18px calc(16px + env(safe-area-inset-bottom));
    transform:translateY(26px);
  }
  .am-head{margin-bottom:12px}
  .am-title{font-size:20px}
  .am-tabs{margin-bottom:14px}
  .am-input{height:44px;font-size:14px}
  .am-field{margin-bottom:11px}
  .am-row{margin-bottom:13px}
  .am-submit{height:46px}
}

@media(prefers-reduced-motion:reduce){
  .auth-guest,.auth-user,.auth-btn,.auth-user-btn,.auth-menu,.auth-mobile-menu,
  .am-scrim,.am-card,.am-ink,.am-input,.am-tick,.am-msg,.am-submit,.am-toast,
  .am-pane.is-entering,.am-field.is-invalid .am-control{
    transition:none!important;
    animation:none!important;
  }
}
