/* 身份凭证代理 - 深空科技风 */
*{margin:0;padding:0;box-sizing:border-box}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  background:#0a0e1a;color:#e0e0e0;min-height:100vh
}
#app{max-width:480px;margin:0 auto;min-height:100vh;background:#0d1117;position:relative}
.screen{display:none;padding:0}
.screen.active{display:block}

/* Header */
.app-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;border-bottom:1px solid #1f2937;
  background:#0d1117;position:sticky;top:0;z-index:10
}
.header-left{display:flex;align-items:center;gap:12px}
.avatar{width:40px;height:40px;border-radius:50%;
  background:linear-gradient(135deg,#3b82f6,#8b5cf6);
  display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:700;color:#fff}
.btn-icon{background:none;border:none;color:#9ca3af;font-size:20px;cursor:pointer;padding:4px 8px}
.btn-icon:hover{color:#e0e0e0}
.btn-primary,.btn-secondary,.btn-danger{
  display:block;width:100%;padding:12px;border:none;border-radius:8px;
  font-size:15px;font-weight:600;cursor:pointer;text-align:center;transition:opacity .2s
}
.btn-primary{background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff}
.btn-secondary{background:#1f2937;color:#e0e0e0;border:1px solid #374151}
.btn-danger{background:linear-gradient(135deg,#dc2626,#ef4444);color:#fff}
.btn-sm{padding:6px 14px;border-radius:6px;font-size:12px;cursor:pointer;border:1px solid #374151;background:#1f2937;color:#e0e0e0}
.btn-primary:hover,.btn-secondary:hover,.btn-danger:hover{opacity:.85}
.btn-primary:disabled,.btn-secondary:disabled{opacity:.5;cursor:not-allowed}

/* Auth */
.auth-wrap{padding:48px 24px;text-align:center}
.auth-logo{font-size:64px;margin-bottom:12px}
.auth-title{font-size:24px;font-weight:700;background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.auth-sub{color:#6b7280;font-size:14px;margin:8px 0 32px}
.wechat-btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  width:100%;padding:14px;border-radius:10px;border:none;
  background:#07c160;color:#fff;font-size:16px;font-weight:600;cursor:pointer;margin-bottom:16px
}
.wechat-btn:hover{opacity:.9}
.wechat-icon{font-size:24px}
.divider{text-align:center;color:#4b5563;font-size:13px;margin:20px 0;position:relative}
.divider::before,.divider::after{content:"";position:absolute;top:50%;width:40%;height:1px;background:#1f2937}
.divider::before{left:0}.divider::after{right:0}
.phone-toggle{color:#3b82f6;cursor:pointer;font-size:14px;text-align:center;margin-bottom:20px}
.phone-toggle:hover{text-decoration:underline}

/* Forms */
.form-group{margin-bottom:14px;text-align:left}
.form-group label{display:block;font-size:12px;color:#9ca3af;margin-bottom:4px}
.form-group input,.form-group textarea,.form-group select{
  width:100%;padding:11px 14px;background:#161b22;border:1px solid #1f2937;
  border-radius:8px;color:#e0e0e0;font-size:15px;transition:border .2s
}
.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:#3b82f6}
.form-group textarea{min-height:50px;resize:vertical}
.form-row{display:flex;gap:10px}.form-group.half{flex:1}
.hidden{display:none!important}
.msg{font-size:13px;margin-top:8px;min-height:20px;color:#22c55e}
.error-msg{font-size:13px;margin-top:8px;color:#ef4444}
.hint{font-size:12px;color:#6b7280}

/* Tabs */
.tab-bar{display:flex;gap:0;margin-bottom:0;border-radius:0;overflow:hidden}
.tab-btn{flex:1;padding:12px;background:transparent;color:#6b7280;border:none;cursor:pointer;font-size:14px;transition:all .2s;border-bottom:2px solid transparent}
.tab-btn.active{color:#60a5fa;border-bottom-color:#60a5fa;font-weight:600}

/* Cards */
.card{padding:14px;background:#161b22;border:1px solid #1f2937;border-radius:10px;margin-bottom:8px}
.card-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.badge{padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}
.badge-active{background:rgba(34,197,94,.15);color:#22c55e}
.badge-expired{background:rgba(245,158,11,.15);color:#f59e0b}
.badge-revoked{background:rgba(239,68,68,.15);color:#ef4444}
.card-name{font-weight:600;font-size:15px}
.card-purpose{font-size:13px;color:#9ca3af;margin:4px 0}
.card-expiry{font-size:11px;color:#6b7280}
.card-actions{display:flex;gap:6px;margin-top:8px;justify-content:flex-end;flex-wrap:wrap}

/* Stats */
.stats-row{display:flex;gap:12px;padding:16px}
.stat-card{flex:1;text-align:center;padding:16px;background:#161b22;border-radius:12px;border:1px solid #1f2937;cursor:pointer}
.stat-card:hover{border-color:#3b82f6}
.stat-num{font-size:28px;font-weight:700}
.stat-label{font-size:12px;color:#6b7280;margin-top:4px}

/* Menu */
.menu-list{padding:0 16px}
.menu-item{
  display:flex;align-items:center;gap:14px;padding:14px;
  background:#161b22;border:1px solid #1f2937;border-radius:12px;margin-bottom:8px;cursor:pointer
}
.menu-item:hover{border-color:#3b82f6}
.menu-icon{font-size:22px;width:34px;text-align:center}
.menu-title{font-size:14px;font-weight:600}
.menu-desc{font-size:12px;color:#6b7280}
.menu-arrow{margin-left:auto;color:#4b5563;font-size:18px}

/* Search */
.search-results{background:#161b22;border:1px solid #1f2937;border-radius:8px;margin-top:4px;max-height:200px;overflow-y:auto}
.search-item{padding:10px 12px;cursor:pointer;border-bottom:1px solid #1f2937}
.search-item:hover{background:#1f2937}.search-item:last-child{border-bottom:none}

/* Image upload */
.upload-area{
  border:2px dashed #1f2937;border-radius:12px;padding:40px 20px;
  text-align:center;cursor:pointer;transition:border .2s;margin-bottom:14px
}
.upload-area:hover{border-color:#3b82f6}
.upload-area.has-image{border-color:#22c55e;padding:10px}
.upload-icon{font-size:40px;color:#6b7280;margin-bottom:8px}
.upload-preview{max-width:100%;max-height:200px;border-radius:8px}
.upload-hint{font-size:12px;color:#6b7280;margin-top:6px}

/* Modal */
.modal-overlay{
  position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);
  display:flex;align-items:center;justify-content:center;z-index:100
}
.modal{background:#161b22;border:1px solid #1f2937;border-radius:12px;padding:24px;max-width:360px;width:90%}
.modal-title{font-size:16px;font-weight:600;margin-bottom:12px}
.modal-body{font-size:14px;margin-bottom:16px}
.pw-display{
  background:#0d1117;padding:14px;border-radius:8px;
  font-size:22px;font-weight:700;text-align:center;letter-spacing:3px;
  color:#60a5fa;font-family:monospace;margin:12px 0
}
.modal-actions{display:flex;gap:8px}
.modal-actions .btn-primary,.modal-actions .btn-secondary{width:auto;flex:1}

/* Share link */
.share-box{
  background:#0f1a2e;border:1px solid #1e3a5f;border-radius:10px;
  padding:16px;margin:16px 0;text-align:center
}
.share-url{
  background:#0d1117;padding:10px;border-radius:6px;
  font-size:12px;color:#60a5fa;word-break:break-all;margin:8px 0;font-family:monospace
}
.qr-placeholder{
  width:120px;height:120px;margin:12px auto;
  background:#1f2937;border-radius:8px;display:flex;
  align-items:center;justify-content:center;font-size:12px;color:#6b7280
}

/* Share receive page */
.share-receive{text-align:center;padding:32px 16px}
.share-icon{font-size:48px;margin-bottom:16px}
.share-info{background:#161b22;border:1px solid #1f2937;border-radius:10px;padding:16px;margin:16px 0;text-align:left}
.share-info-item{display:flex;justify-content:space-between;padding:6px 0;font-size:14px}
.share-info-label{color:#6b7280}

/* Content padding */
.content{padding:16px}
.status-text{font-size:12px;color:#6b7280}
.info-banner{
  padding:10px 12px;background:#0f1a2e;border:1px solid #1e3a5f;
  border-radius:8px;font-size:12px;color:#60a5fa;margin-bottom:14px
}
.empty-state{text-align:center;padding:48px 20px;color:#6b7280}
.empty-state-icon{font-size:40px;margin-bottom:8px}

/* Toggle switch */
.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0}
.toggle-switch{width:40px;height:22px;background:#374151;border-radius:11px;position:relative;cursor:pointer;flex-shrink:0}
.toggle-switch::after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:2px;left:2px;transition:transform .2s}
.toggle-switch.on{background:#3b82f6}.toggle-switch.on::after{transform:translateX(18px)}

.loader{width:28px;height:28px;border:3px solid #1f2937;border-top-color:#3b82f6;border-radius:50%;animation:spin .7s linear infinite;margin:16px auto}
@keyframes spin{to{transform:rotate(360deg)}}
