*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:#f0f2f5;color:#1f2329;font-size:14px;line-height:1.6}
a{color:#2563eb;text-decoration:none}
button{font-family:inherit}

/* 登录页 */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:linear-gradient(135deg,#1e3a8a,#2563eb)}
.login-shell{width:100%;display:flex;justify-content:center;padding:24px}
.login-card{background:#fff;border-radius:12px;padding:40px 36px;width:100%;max-width:380px;box-shadow:0 10px 40px rgba(0,0,0,.2)}
.login-card h2{font-size:22px;margin-bottom:24px;text-align:center}
.login-form label{display:block;margin-bottom:16px;font-size:14px;color:#374151}
.login-form input{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;outline:none;transition:border .2s}
.login-form input:focus{border-color:#2563eb}
.login-submit{width:100%;margin-top:8px}

/* 布局 */
.admin-shell{display:flex;min-height:100vh}
.sidebar{width:220px;background:#1f2937;color:#e5e7eb;display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;z-index:100;transition:transform .25s}
.brand{display:flex;align-items:center;gap:10px;padding:18px 16px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand-logo{width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,#2563eb,#7c3aed);display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;font-size:16px}
.brand strong{display:block;font-size:15px}
.brand small{color:#9ca3af;font-size:11px}
.menu{flex:1;padding:12px 8px;overflow-y:auto}
.menu-item{display:block;padding:10px 14px;border-radius:8px;color:#d1d5db;margin-bottom:4px;font-size:14px;transition:background .15s}
.menu-item:hover{background:rgba(255,255,255,.08);color:#fff}
.menu-item.active{background:#2563eb;color:#fff}
.sidebar-footer{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);color:#9ca3af;font-size:12px}
.main{flex:1;margin-left:220px;display:flex;flex-direction:column;min-height:100vh}
.topbar{background:#fff;border-bottom:1px solid #e5e7eb;padding:12px 24px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50}
.topbar-left{display:flex;align-items:center;gap:12px}
.topbar-title h1{font-size:18px;font-weight:600}
.sidebar-toggle{display:none;background:none;border:none;font-size:20px;cursor:pointer}
.profile{display:flex;align-items:center;gap:10px}
.avatar{width:30px;height:30px;border-radius:50%;background:#2563eb;color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
.profile-name{font-weight:500}
.profile-balance{background:#fef3c7;color:#92400e;padding:3px 10px;border-radius:20px;font-size:12px}
.logout-form button{background:none;border:1px solid #e5e7eb;border-radius:8px;padding:5px 12px;cursor:pointer;color:#6b7280;font-size:13px}
.logout-form button:hover{color:#dc2626;border-color:#fca5a5}
.content{padding:24px;flex:1}

/* 面板 */
.panel{background:#fff;border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,.06);padding:20px;margin-bottom:20px}
.panel-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:16px;gap:12px}
.panel-header h2{font-size:16px;font-weight:600}
.panel-header p{color:#6b7280;font-size:13px;margin-top:2px}
.panel-subtitle{color:#6b7280;font-size:13px}

/* 按钮 */
.btn-primary{background:#2563eb;color:#fff;border:none;border-radius:8px;padding:8px 16px;font-size:14px;cursor:pointer;transition:background .15s;white-space:nowrap}
.btn-primary:hover{background:#1d4ed8}
.btn-secondary{background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:6px 12px;font-size:13px;cursor:pointer;color:#374151;transition:all .15s;white-space:nowrap}
.btn-secondary:hover{border-color:#2563eb;color:#2563eb}
.btn-secondary.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
.btn-danger:hover{border-color:#dc2626;color:#dc2626}

/* 表格 */
.table-wrap{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse}
.data-table th{background:#f9fafb;text-align:left;padding:10px 12px;font-size:12px;color:#6b7280;font-weight:600;border-bottom:1px solid #e5e7eb;white-space:nowrap}
.data-table td{padding:12px;border-bottom:1px solid #f3f4f6;vertical-align:middle;font-size:13px}
.data-table tr:hover td{background:#f9fafb}
.table-empty{color:#9ca3af;text-align:center;padding:40px !important}
.table-toolbar{display:flex;gap:16px;align-items:center;margin:12px 0;color:#6b7280;font-size:13px}
.table-toolbar-item{font-size:13px}

.domain-cell{display:flex;align-items:center;gap:6px}
.domain-text{font-weight:600;color:#111827}
.domain-unbound{color:#9ca3af;font-style:italic}
.copy-icon-button{background:none;border:1px solid #e5e7eb;border-radius:6px;padding:2px 8px;cursor:pointer;font-size:12px;color:#6b7280}
.copy-icon-button:hover{color:#2563eb;border-color:#2563eb}
.time-info{display:flex;flex-direction:column;font-size:12px;color:#6b7280}
.row-actions{display:flex;flex-wrap:wrap;gap:6px}
.inline-form{display:inline}
.badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;background:#f3f4f6;color:#6b7280}
.badge-success{background:#d1fae5;color:#065f46}

/* 统计卡片 */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:20px}
.stat-card{background:#fff;border-radius:12px;padding:18px 20px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.stat-card span{color:#6b7280;font-size:13px}
.stat-card strong{display:block;font-size:26px;margin:6px 0;color:#111827}
.stat-card small{color:#9ca3af;font-size:12px}

/* 表单 */
.filter-form{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filter-form input[type=search],.filter-form input[type=datetime-local]{padding:8px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:13px;outline:none;background:#fff}
.filter-form input:focus{border-color:#2563eb}
.search-field{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #d1d5db;border-radius:8px;padding:0 10px;flex:0 0 auto}
.search-field span{color:#9ca3af}
.search-field input{border:none;outline:none;padding:8px 4px;font-size:13px;min-width:200px;background:transparent}
.modal-form label{display:block;margin-bottom:14px;font-size:13px;color:#374151}
.modal-form input[type=text],.modal-form input[type=password],.modal-form input[type=number],.modal-form input[type=url],.modal-form input[type=search],.modal-form select,.modal-form textarea{display:block;width:100%;margin-top:6px;padding:9px 12px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;outline:none;font-family:inherit}
.modal-form input:focus,.modal-form select:focus,.modal-form textarea:focus{border-color:#2563eb}
.form-hint{display:block;color:#9ca3af;font-size:12px;margin-top:4px}
.field-help{color:#9ca3af;font-size:12px;margin-top:6px}

/* 开关 */
.site-option-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.site-option-switch{display:flex;align-items:flex-start;gap:10px;border:1px solid #e5e7eb;border-radius:8px;padding:10px 12px;cursor:pointer}
.site-option-switch input{margin-top:3px}
.site-option-switch strong{display:block;font-size:13px}
.site-option-switch small{color:#9ca3af;font-size:12px}
.site-option-delay{display:flex;align-items:center;gap:8px;font-size:13px;color:#374151}
.site-option-delay input{width:120px;padding:6px 10px;border:1px solid #d1d5db;border-radius:8px;outline:none}
.download-wildcard-switch{margin-top:6px}

/* 弹窗 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:200;overflow-y:auto}
.modal-overlay.open{display:flex}
.modal-card{background:#fff;border-radius:12px;width:100%;max-width:520px;padding:24px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal-card-wide{max-width:680px}
.modal-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px;gap:12px}
.modal-header h3{font-size:16px}
.modal-header p{color:#6b7280;font-size:12px;margin-top:2px}
.modal-close{background:none;border:none;font-size:22px;cursor:pointer;color:#9ca3af;line-height:1}
.modal-close:hover{color:#111827}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
.renew-summary{display:flex;gap:24px;background:#f9fafb;border-radius:8px;padding:12px 16px;margin-bottom:14px}
.renew-summary span{display:block;color:#6b7280;font-size:12px}
.renew-summary strong{font-size:15px}

/* 二维码 */
.qr-box{display:flex;flex-direction:column;align-items:center;gap:12px;padding:12px}
.qr-code img{width:200px;height:200px}
.qr-domain{font-weight:600}

/* 模板预览 */
.template-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}
.template-preview-item{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:14px;transition:box-shadow .2s}
.template-preview-item:hover{box-shadow:0 4px 16px rgba(0,0,0,.08)}
.template-preview-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.template-preview-head a{font-size:12px}
.template-preview-phone{width:100%;background:#111827;border-radius:16px;padding:10px 6px}
.template-preview-phone-bar{width:60px;height:4px;background:#374151;border-radius:2px;margin:0 auto 8px}
.template-preview-frame{background:#fff;border-radius:10px;overflow:hidden;height:360px}
.template-preview-viewport{height:100%}
.template-preview-viewport iframe{width:100%;height:100%;border:none;background:#fff}
.template-preview-url{font-size:12px;color:#9ca3af;margin-top:8px;word-break:break-all}

/* 分页 */
.pager{display:flex;align-items:center;gap:10px;margin-top:16px;color:#6b7280;font-size:13px}
.pager-pages{display:flex;gap:4px}
.pager-page{display:inline-block;padding:5px 10px;border:1px solid #e5e7eb;border-radius:6px;font-size:13px;color:#374151}
.pager-page.is-active{background:#2563eb;color:#fff;border-color:#2563eb}

/* 提示 */
.alert{padding:10px 14px;border-radius:8px;margin-bottom:14px;font-size:13px}
.alert-success{background:#d1fae5;color:#065f46}
.alert-error{background:#fee2e2;color:#991b1b}

/* 移动端 */
@media (max-width:900px){
    .sidebar{transform:translateX(-100%)}
    .sidebar.open{transform:translateX(0)}
    .main{margin-left:0}
    .sidebar-toggle{display:block}
    .mobile-sidebar-mask{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:99;display:none}
    .mobile-sidebar-mask.open{display:block}
    .profile-balance{display:none}
    .content{padding:14px}
}
