/* ============================================
   ZFShang 授权系统 - AppVector 真实风格
   框架: Chakra UI 风格 / 字体: Plus Jakarta Sans
   主题: #f97316 橙色 / 黑灰白
   ============================================ */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');

:root {
  /* 品牌色 - AppVector 同款 #f97316 */
  --brand-50: #FFF7ED;
  --brand-100: #FFEDD5;
  --brand-200: #FED7AA;
  --brand-300: #FDBA74;
  --brand-400: #FB923C;
  --brand-500: #F97316;
  --brand-600: #EA580C;
  --brand-700: #C2410C;
  --brand-800: #9A3412;

  /* 语义色彩 */
  --primary: var(--brand-500);
  --primary-hover: var(--brand-600);
  --primary-light: var(--brand-50);
  --cta: var(--brand-500);
  --cta-hover: var(--brand-600);

  --bg-primary: #F9FAFB;
  --bg-secondary: #F3F4F6;
  --bg-tertiary: #E5E7EB;
  --surface: #FFFFFF;

  --text-primary: #111827;
  --text-secondary: #6B7280;
  --text-tertiary: #9CA3AF;

  --border-primary: #E5E7EB;
  --border-secondary: #F3F4F6;

  --success: #10B981; --success-bg: #D1FAE5;
  --warning: #F59E0B; --warning-bg: #FEF3C7;
  --danger: #EF4444;  --danger-bg: #FEE2E2;

  /* 侧边栏 */
  --sidebar-bg: #111827;
  --sidebar-fg: #D1D5DB;
  --sidebar-hover: #1F2937;
  --sidebar-active: var(--brand-500);
  --sidebar-border: #1F2937;
  --sidebar-width: 250px;

  /* 字体 */
  --font-sans: 'Plus Jakarta Sans', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', monospace;

  /* 圆角 - Chakra UI 风格: 全圆角 */
  --radius-sm: 6px;
  --radius: 8px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-xl: 20px;
  --radius-full: 9999px;

  /* 阴影 */
  --shadow-xs: 0 1px 2px rgba(0,0,0,.04);
  --shadow-sm: 0 1px 3px rgba(0,0,0,.06);
  --shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);
  --shadow-md: 0 4px 6px -1px rgba(0,0,0,.06);
  --shadow-lg: 0 10px 15px -3px rgba(0,0,0,.06);
  --shadow-xl: 0 20px 25px -5px rgba(0,0,0,.08);
  --shadow-brand: 0 4px 14px rgba(249,115,22,.35);

  --transition: 200ms ease;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}
body{font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-primary);line-height:1.6;font-size:.9375rem}
a{background:transparent;color:var(--primary);text-decoration:none;transition:color var(--transition)}
a:hover{color:var(--primary-hover)}
img,svg{max-width:100%;display:block}
ul{list-style:none}
::selection{background:var(--primary-light);color:var(--brand-700)}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:var(--bg-secondary)}
::-webkit-scrollbar-thumb{background:var(--border-primary);border-radius:var(--radius-full)}
::-webkit-scrollbar-thumb:hover{background:var(--brand-400)}

.container,.section-inner{max-width:1240px;margin:0 auto;padding:0 1.5rem}

/* === 导航栏 - 公开页居中，后台页对齐侧边栏 === */
.navbar{position:sticky;top:0;z-index:100}
.navbar .nav-glass{background:rgba(255,255,255,.82);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid transparent;transition:border-color .2s,box-shadow .2s}
.navbar .nav-inner{max-width:1240px;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;height:4.5rem;justify-content:space-between;gap:1.5rem}
/* 后台页：导航左边缘对齐侧边栏 */
.dashboard-layout ~ .navbar .nav-inner,.dashboard-layout .navbar .nav-inner,body:has(.dashboard-layout) .nav-inner{max-width:none;padding:0 2.5rem}
.navbar .nav-brand{font-weight:700;font-size:1.0625rem;color:var(--brand-500);letter-spacing:-.01em;flex-shrink:0;width:var(--sidebar-width);min-width:0}
/* 公开页：品牌区不需要固定宽度 */
body:not(:has(.dashboard-layout)) .nav-brand{width:auto}
.navbar .nav-brand:hover{color:var(--brand-600)}
.navbar .nav-links{display:none;align-items:center;gap:.125rem}
@media(min-width:992px){.navbar .nav-links{display:flex}}
.navbar .nav-links a,.navbar .nav-links button{display:inline-flex;align-items:center;gap:.375rem;height:2.75rem;padding:0 1rem;font-size:.875rem;font-weight:600;color:var(--text-secondary);border-radius:var(--radius-full);background:transparent;border:none;cursor:pointer;transition:all var(--transition)}
.navbar .nav-links a:hover,.navbar .nav-links button:hover{color:var(--text-primary);background:var(--bg-secondary)}
.navbar .nav-actions{display:flex;align-items:center;gap:.5rem}
.navbar .nav-actions .btn{padding:0 .875rem;height:2.125rem;font-size:.8125rem;border-radius:var(--radius-full);font-weight:600}
.navbar .btn-cta{background:var(--brand-500);color:#FFF;box-shadow:var(--shadow-brand)}
.navbar .btn-cta:hover{background:var(--brand-600);transform:translateY(-2px)}

/* === Hero - AppVector 风格: 12col grid + 背景光晕 === */
.hero{position:relative;overflow:hidden;background:var(--bg-primary);border-bottom:1px solid var(--border-primary);padding:3rem 1.5rem}
@media(min-width:768px){.hero{min-height:calc(100vh - 4.5rem);display:flex;align-items:center;padding:4rem 2rem}}
.hero-glow{position:absolute;top:12%;right:-12%;width:560px;height:560px;background:var(--brand-500);opacity:.06;filter:blur(110px);border-radius:50%;pointer-events:none;z-index:0}
.hero-inner{width:100%;max-width:1240px;margin:0 auto;position:relative;z-index:1}
.hero-label{display:flex;align-items:center;gap:.75rem;margin-bottom:1.5rem}
.hero-label .line{height:1px;background:var(--border-primary);flex-shrink:0}
.hero-label .line-short{width:3rem}
.hero-label .line-long{flex:1;opacity:.6}
.hero-label span{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary);white-space:nowrap;letter-spacing:.05em}
.hero-grid{display:grid;grid-template-columns:1fr;gap:2rem;align-items:end}
@media(min-width:992px){.hero-grid{grid-template-columns:8fr 4fr;gap:3rem}}
.hero-grid h1{font-size:2.25rem;font-weight:800;color:var(--text-primary);line-height:1.1;letter-spacing:-.03em}
@media(min-width:768px){.hero-grid h1{font-size:3.5rem}}
.hero-grid h1 em{font-style:italic;font-weight:500;color:var(--brand-500)}
.hero-grid p{font-size:1rem;color:var(--text-secondary);max-width:520px;line-height:1.6;margin-top:1rem}
@media(min-width:768px){.hero-grid p{font-size:1.125rem}}
.hero-stats{border-left:none;border-top:1px solid var(--border-primary);padding-left:0;padding-top:1.5rem}
@media(min-width:992px){.hero-stats{border-left:1px solid var(--border-primary);border-top:none;padding-left:2rem;padding-top:0}}
.hero-stats-label{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.5rem}
.hero-stats-num{font-family:var(--font-mono);font-size:2.5rem;font-weight:700;line-height:1;margin-bottom:.25rem}
@media(min-width:768px){.hero-stats-num{font-size:3rem}}
.hero-stats-desc{font-size:.875rem;color:var(--text-secondary);line-height:1.5;max-width:260px}
.hero-actions{display:flex;align-items:center;gap:1.5rem;margin-top:2rem;flex-wrap:wrap}
@media(min-width:768px){.hero-actions{margin-top:2.5rem;gap:2rem}}
.hero-actions .btn-cta{padding:.75rem 1.5rem;font-size:.9375rem}
.hero-actions .btn-link-see{font-size:.875rem;font-weight:500;color:var(--text-primary);border-bottom:1px solid var(--border-primary);padding-bottom:.25rem;transition:all var(--transition)}
.hero-actions .btn-link-see:hover{color:var(--brand-500);border-color:var(--brand-500)}
.hero-badges{display:flex;align-items:center;gap:1rem;margin-left:0;flex-wrap:wrap}
@media(min-width:768px){.hero-badges{margin-left:auto}}
.hero-badges .badge-item{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--text-secondary);font-weight:500}
.hero-badges .badge-item svg{color:var(--brand-500);width:16px;height:16px;flex-shrink:0}
.hero-badges-divider{width:1px;height:16px;background:var(--border-primary);display:none}
@media(min-width:768px){.hero-badges-divider{display:block}}
@media(max-width:767px){.hero-grid h1{font-size:2rem}}

/* === Sections（大留白 Apple/SaaS 风格）=== */
.section{padding:4rem 1.5rem}
@media(min-width:768px){.section{padding:8rem 2rem}}
.section-alt{background:var(--bg-secondary);border-top:1px solid var(--border-primary)}
.section-title{text-align:center;margin:0 auto 4rem;max-width:760px}
.section-label{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem}
.section-label .line{height:1px;background:var(--border-primary);flex-shrink:0}
.section-label .line-short{width:2.5rem}
.section-label .line-long{flex:1;max-width:4rem;opacity:.6}
.section-label span{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary);white-space:nowrap;letter-spacing:.05em}
.section-title h2{font-size:1.75rem;font-weight:700;line-height:1.2;margin-bottom:.75rem;letter-spacing:-.02em}
@media(min-width:768px){.section-title h2{font-size:2.25rem}}
.section-title h2 em{font-style:italic;font-weight:500;color:var(--brand-500)}
.section-title p{font-size:1rem;color:var(--text-secondary);max-width:560px;margin:0 auto;line-height:1.6}
@media(min-width:768px){.section-title p{font-size:1.125rem}}

/* === 按钮 - 全圆角 pill === */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1.25rem;font-family:var(--font-sans);font-size:.875rem;font-weight:600;color:var(--text-primary);border-radius:var(--radius-full);border:none;background:var(--bg-secondary);cursor:pointer;transition:all var(--transition);text-decoration:none;white-space:nowrap;user-select:none;line-height:1.2}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--primary-light)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}

.btn-primary{background:var(--brand-500);color:#FFF;box-shadow:var(--shadow-brand)}
.btn-primary:hover{background:var(--brand-600);color:#FFF;transform:translateY(-2px);box-shadow:0 6px 20px rgba(249,115,22,.4)}
.btn-cta{background:var(--brand-500);color:#FFF;box-shadow:var(--shadow-brand)}
.btn-cta:hover{background:var(--brand-600);color:#FFF;transform:translateY(-2px)}
.btn-outline{background:transparent;border:1px solid var(--border-primary)}
.btn-outline:hover{background:var(--bg-secondary)}
.btn-ghost{background:transparent}
.btn-ghost:hover{background:var(--bg-secondary)}
.btn-danger{background:var(--danger);color:#FFF}
.btn-sm{padding:.375rem .875rem;font-size:.8125rem;height:2.125rem}
.btn-lg{padding:.625rem 1.5rem;font-size:.9375rem;height:2.75rem}
.btn-block{width:100%}

/* === 表单 === */
.form-group{margin-bottom:1rem}
.form-group label{display:block;margin-bottom:.375rem;font-size:.875rem;font-weight:600;color:var(--text-primary)}
.form-group .form-hint{font-size:.75rem;color:var(--text-secondary);margin-top:.25rem}
.form-control{display:block;width:100%;height:2.625rem;padding:.5rem .875rem;font-family:var(--font-sans);font-size:.875rem;color:var(--text-primary);background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-md);transition:all var(--transition);outline:none}
.form-control:hover{border-color:var(--text-tertiary)}
.form-control:focus{border-color:var(--brand-500);box-shadow:0 0 0 3px var(--primary-light)}
textarea.form-control{min-height:6rem;height:auto;resize:vertical}
select.form-control{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none'%3E%3Cpath d='M3 5l3 3 3-3' stroke='%23666' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2.5rem;cursor:pointer}

/* === 侧边栏 - 精致 Modern Dashboard Style === */
.dashboard-layout{display:flex;min-height:calc(100vh - 4.5rem)}
.dashboard-sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:var(--surface);color:var(--text-primary);position:fixed;top:4.5rem;left:0;bottom:0;z-index:40;display:flex;flex-direction:column;border-right:1px solid var(--border-primary)}
.dashboard-sidebar nav{flex:1;padding:.75rem .75rem;overflow-y:auto}
.dashboard-sidebar .nav-section{margin-bottom:.25rem}
.dashboard-sidebar .nav-section-title{display:flex;align-items:center;gap:.5rem;padding:.75rem .875rem .25rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary);letter-spacing:.06em}
.dashboard-sidebar .nav-item{display:flex;align-items:center;gap:.625rem;padding:.5625rem .875rem;font-size:.875rem;font-weight:500;color:var(--text-secondary);border-radius:var(--radius-full);transition:all var(--transition);text-decoration:none}
.dashboard-sidebar .nav-item:hover{background:var(--bg-secondary);color:var(--text-primary)}
.dashboard-sidebar .nav-item.active{background:var(--brand-500);color:#FFF;font-weight:600;box-shadow:0 4px 12px rgba(249,115,22,.3)}
.dashboard-main{margin-left:var(--sidebar-width);flex:1;padding:2rem 2.5rem;min-height:calc(100vh - 4.5rem)}
@media(max-width:768px){.dashboard-sidebar{display:none}.dashboard-main{margin-left:0;padding:1.25rem}}

/* === 后台极简头部（56px）=== */
.admin-header{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border-primary);height:3.5rem}
.admin-header-inner{max-width:none;padding:0 1rem 0 1.25rem;display:flex;align-items:center;height:100%;justify-content:space-between}
.admin-header-left{display:flex;align-items:center;gap:1.25rem}
.admin-logo{font-weight:700;font-size:.9375rem;color:var(--brand-500);display:flex;align-items:center;gap:.5rem;text-decoration:none;letter-spacing:-.01em}
.admin-logo-dot{width:8px;height:8px;background:var(--brand-500);border-radius:50%;flex-shrink:0}
.admin-header-nav{display:flex;align-items:center;gap:.25rem}
.admin-header-nav a{font-size:.8125rem;font-weight:500;color:var(--text-secondary);padding:.25rem .625rem;border-radius:var(--radius-sm);transition:all var(--transition)}
.admin-header-nav a:hover{color:var(--brand-500);background:var(--bg-secondary)}
.admin-header-right{display:flex;align-items:center;gap:.75rem}
.admin-user{font-size:.8125rem;font-weight:500;color:var(--text-secondary)}

/* 后台极简底部 */
.admin-footer-bar{height:2.5rem;display:flex;align-items:center;justify-content:center;font-size:.75rem;color:var(--text-tertiary);border-top:1px solid var(--border-primary);background:var(--surface)}

/* 后台页：侧边栏顶部对齐 3.5rem 头部 */
body:has(.admin-header) .dashboard-sidebar{top:3.5rem}
body:has(.admin-header) .dashboard-layout{min-height:calc(100vh - 3.5rem)}
body:has(.admin-header) .dashboard-main{min-height:calc(100vh - 3.5rem)}

/* === 仪表盘头部 === */
.dashboard-header{margin-bottom:2rem}
.dashboard-header h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}
.dashboard-header p,.text-muted{font-size:.8125rem;color:var(--text-secondary)}
.dashboard-header{margin-bottom:2rem}
.dashboard-header h1{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}
.dashboard-header p,.text-muted{font-size:.8125rem;color:var(--text-secondary)}

/* === 统计卡片 === */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:2rem}
.stat-card{background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:1.25rem;display:flex;flex-direction:column;gap:.5rem;transition:all var(--transition);cursor:pointer}
.stat-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow)}
.stat-card .stat-body{flex:1}
.stat-card .stat-value{font-family:var(--font-mono);font-size:1.625rem;font-weight:700;line-height:1.2}
.stat-card .stat-label{font-size:.75rem;color:var(--text-secondary);font-weight:500}
.stat-card .stat-link{font-size:.75rem;font-weight:600;margin-top:auto}
@media(max-width:1024px){.stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.stat-grid{grid-template-columns:1fr}}

/* === 卡片 === */
.card{background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:.875rem 1.25rem;border-bottom:1px solid var(--border-primary)}
.card-header h3{font-size:.875rem;font-weight:600}
.card-body{padding:1.25rem}
.card-footer{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-top:1px solid var(--border-primary);background:var(--bg-secondary)}

/* === 表格 === */
.table-container{width:100%;overflow-x:auto;border:1px solid var(--border-primary);border-radius:var(--radius-lg)}
.data-table{width:100%;border-collapse:collapse;font-size:.875rem}
.data-table thead{border-bottom:1px solid var(--border-primary)}
.data-table th{height:2.75rem;padding:0 1rem;text-align:left;font-weight:600;color:var(--text-secondary);font-size:.75rem;letter-spacing:.03em;background:var(--bg-secondary);white-space:nowrap}
.data-table td{padding:.75rem 1rem;border-bottom:1px solid var(--border-secondary)}
.data-table tr:last-child td{border-bottom:none}
.data-table tbody tr:hover{background:var(--primary-light)}
.data-table td code{font-family:var(--font-mono);font-size:.8125rem;background:var(--bg-secondary);padding:.125rem .375rem;border-radius:3px}

/* === 标签 - 全圆角 === */
.tag{display:inline-flex;align-items:center;padding:.1875rem .625rem;font-size:.75rem;font-weight:600;border-radius:var(--radius-full);line-height:1.5}
.tag-default{background:var(--bg-secondary);color:var(--text-secondary)}
.tag-active,.tag-success{background:var(--success-bg);color:#065F46}
.tag-pending{background:var(--warning-bg);color:#92400E}
.tag-expired,.tag-destructive,.tag-revoked,.tag-suspended{background:var(--danger-bg);color:#991B1B}
.tag-primary,.tag-admin{background:var(--primary-light);color:var(--brand-700)}

/* === 提示 === */
.alert{padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.875rem;border:1px solid transparent;margin-bottom:1rem}
.alert-success{background:var(--success-bg);color:#065F46;border-color:#A7F3D0}
.alert-error{background:var(--danger-bg);color:#991B1B;border-color:#FECACA}

/* === 功能卡片 === */
.features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
.feature-card{background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-lg);padding:1.5rem;text-align:center;transition:all var(--transition);cursor:pointer}
.feature-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow-md);transform:translateY(-2px)}
.feature-card h3{font-size:.9375rem;font-weight:600;margin-bottom:.375rem}
.feature-card p{font-size:.8125rem;color:var(--text-secondary);line-height:1.5}
@media(max-width:768px){.features-grid{grid-template-columns:1fr}}

/* === 产品卡片 === */
.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}
.product-card{background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition)}
.product-card:hover{border-color:var(--brand-300);box-shadow:var(--shadow)}
.product-card-body{padding:1.25rem}
.product-card h3{font-size:.9375rem;font-weight:600;margin-bottom:.25rem}
.product-card h3 a{color:var(--text-primary)}
.product-card p{font-size:.8125rem;color:var(--text-secondary);margin-bottom:.75rem;line-height:1.5}
.product-card-footer{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;border-top:1px solid var(--border-primary);background:var(--bg-secondary)}
.product-price{font-family:var(--font-mono);font-size:1.0625rem;font-weight:700}
.product-type{display:inline-flex;padding:.125rem .5rem;font-size:.75rem;font-weight:600;border-radius:var(--radius-full);margin-bottom:.75rem;background:var(--primary-light);color:var(--brand-700)}
@media(max-width:1024px){.product-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.product-grid{grid-template-columns:1fr}}

/* === 分页 === */
.pagination{display:flex;align-items:center;justify-content:center;gap:.25rem;padding:1.5rem 0}
.pagination a,.pagination span{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;height:2.25rem;padding:0 .5rem;font-size:.875rem;font-weight:500;border:1px solid var(--border-primary);border-radius:var(--radius-full);color:var(--text-primary);transition:all var(--transition)}
.pagination a:hover{background:var(--primary-light);border-color:var(--brand-300);color:var(--brand-600)}
.pagination .current{background:var(--brand-500);color:#FFF;border-color:var(--brand-500);font-weight:600}

/* === 登录/注册 === */
.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:var(--bg-primary)}
.auth-container{width:100%;max-width:27rem}
.auth-card{background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);overflow:hidden}
.auth-header{text-align:center;padding:2rem 1.5rem 0}
.auth-header h1{font-size:1.375rem;font-weight:700;margin-bottom:.25rem}
.auth-header p{font-size:.8125rem;color:var(--text-secondary)}
.auth-form{padding:1.5rem}
.auth-footer{text-align:center;padding:1rem 1.5rem;background:var(--bg-secondary);border-top:1px solid var(--border-primary);font-size:.8125rem;color:var(--text-secondary)}

/* === 页脚 - AppVector 风格: logobrand+邮件+4col+水印 === */
.footer{position:relative;overflow:hidden;background:var(--bg-secondary);border-top:1px solid var(--border-primary)}
.footer-accent{position:absolute;top:-1px;left:2rem;width:7.5rem;height:2px;background:var(--brand-500);z-index:2}
.footer-inner{max-width:1240px;margin:0 auto;padding:5rem 2rem;position:relative;z-index:1}
/* 后台页：页脚左边缘对齐侧边栏 + 内容区 */
body:has(.dashboard-layout) .footer-inner{max-width:none;margin-left:var(--sidebar-width);padding:5rem 2.5rem}
body:has(.dashboard-layout) .footer-accent{left:calc(var(--sidebar-width) + 2rem)}
@media(max-width:768px){body:has(.dashboard-layout) .footer-inner{margin-left:0;padding:3rem 1.25rem}body:has(.dashboard-layout) .footer-accent{left:1.25rem}}
.footer-grid{display:flex;flex-direction:column;gap:3rem}
@media(min-width:992px){.footer-grid{flex-direction:row;gap:6rem}}
.footer-brand{display:flex;flex-direction:column;gap:1.5rem;max-width:340px}
.footer-brand h3{font-size:1.0625rem;font-weight:700}
.footer-brand p{font-size:.875rem;color:var(--text-secondary);line-height:1.8}
.footer-contact-label{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:.5rem}
.footer-contact-link{font-size:.9375rem;font-weight:600;color:var(--text-primary);border-bottom:1px solid var(--border-primary);padding-bottom:2px;display:inline-block;transition:all .18s}
.footer-contact-link:hover{color:var(--brand-500);border-color:var(--brand-500)}
.footer-links-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2.5rem 2rem;flex:1}
@media(min-width:768px){.footer-links-grid{grid-template-columns:repeat(4,1fr)}}
.footer-col{display:flex;flex-direction:column;gap:.75rem}
.footer-col-title{display:flex;align-items:center;gap:.5rem}
.footer-col-title .dot{width:.875rem;height:2px;background:var(--brand-500);border-radius:var(--radius-full)}
.footer-col-title span{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--text-tertiary);letter-spacing:.05em}
.footer-col a{font-size:.875rem;color:var(--text-secondary);transition:all .18s}
.footer-col a:hover{color:var(--brand-500);transform:translateX(3px)}
.footer-sep{height:1px;background:var(--border-primary);margin:2.5rem 0}
.footer-bottom{display:flex;flex-direction:column;gap:1rem}
@media(min-width:768px){.footer-bottom{flex-direction:row;justify-content:space-between;align-items:center}}
.footer-bottom p{font-size:.875rem;color:var(--text-tertiary)}
.footer-bottom-links{display:flex;flex-wrap:wrap;gap:1.5rem}
.footer-bottom-links a{font-size:.875rem;color:var(--text-tertiary);transition:color .18s}
.footer-bottom-links a:hover{color:var(--brand-500)}
.footer-watermark{position:absolute;left:50%;transform:translateX(-50%);bottom:-.5rem;font-family:var(--font-sans);font-weight:700;letter-spacing:-.04em;line-height:.8;white-space:nowrap;pointer-events:none;font-size:4.5rem;color:var(--text-primary);opacity:.04;z-index:0}
@media(min-width:768px){.footer-watermark{font-size:10rem;bottom:-1.5rem}}
@media(max-width:768px){.footer-inner{grid-template-columns:1fr;gap:2rem}.footer-bottom{flex-direction:column;gap:.5rem}}

/* === 其他 === */
.dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem;margin-bottom:1.5rem}
@media(max-width:1024px){.dashboard-grid{grid-template-columns:1fr}}
.separator{height:1px;background:var(--border-primary);margin:1.5rem 0}
.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-secondary)}
.empty-state h3{font-size:1.0625rem;font-weight:600;margin-bottom:.375rem;color:var(--text-primary)}
.empty-state p{font-size:.875rem;margin-bottom:1rem}
.modal-overlay{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.modal-content{background:var(--surface);border:1px solid var(--border-primary);border-radius:var(--radius-xl);padding:1.5rem;max-width:32rem;width:90%;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-xl)}
.license-key-display{font-family:var(--font-mono);font-size:.875rem;letter-spacing:1px;background:var(--bg-secondary);padding:.75rem 1rem;border-radius:var(--radius-md);user-select:all;cursor:pointer;text-align:center;border:1px dashed var(--border-primary)}
@keyframes spin{to{transform:rotate(360deg)}}
.loading{display:inline-block;width:1.25rem;height:1.25rem;border:2px solid var(--border-primary);border-top-color:var(--brand-500);border-radius:50%;animation:spin .6s linear infinite}
@media(max-width:768px){.stat-grid{grid-template-columns:repeat(2,1fr)}.features-grid,.product-grid,.dashboard-grid{grid-template-columns:1fr}}
@media(max-width:640px){.stat-grid{grid-template-columns:1fr}}
