/* ===== 全局字体：ALKATIP Yazma Tom ===== */
@font-face {
  font-family: "ALKATIP Yazma Tom";
  src: url("../fonts/ALKATIP Yazma Tom.TTF") format("truetype");
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

/* ===== 连锁会员管理系统 - 苹果风格全局样式 ===== */
:root{
  --bg:#f5f5f7;
  --surface:#ffffff;
  --surface-2:#fbfbfd;
  --text:#1d1d1f;
  --text-2:#6e6e73;
  --text-3:#86868b;
  --border:#d2d2d7;
  --border-soft:#e8e8ed;
  --blue:#0071e3;
  --blue-hover:#0077ed;
  --blue-soft:#e8f1ff;
  --green:#34c759;
  --orange:#ff9500;
  --red:#ff3b30;
  --purple:#af52de;
  --pink:#ff2d92;
  --cyan:#32ade6;
  --radius:14px;
  --radius-sm:10px;
  --radius-lg:20px;
  --shadow:0 4px 16px rgba(0,0,0,.06);
  --shadow-lg:0 12px 40px rgba(0,0,0,.12);
  --sidebar-w:280px;
  --topbar-h:56px;
  --font:"ALKATIP Yazma Tom","SF Pro Display","Segoe UI",Tahoma,"PingFang SC","Microsoft YaHei",sans-serif;
}
/* ===== 维吾尔语(ug)模式：专用字体族 ALKATIP Yazma Tom ===== */
html.lang-ug,
body.lang-ug,
.lang-ug {
  --font-ug:"ALKATIP Yazma Tom","SF Pro Display","Segoe UI",Tahoma,"PingFang SC","Microsoft YaHei",sans-serif;
  --sidebar-w:310px;
}
body.lang-ug {
  font-family: var(--font-ug) !important;
  font-size: 15px;
  line-height: 1.7;
  letter-spacing: normal;
  word-spacing: 0.5px;
}
body.lang-ug input,
body.lang-ug select,
body.lang-ug textarea,
body.lang-ug button {
  font-family: var(--font-ug) !important;
  font-weight: 500;
  letter-spacing: normal;
}
body.lang-ug input::placeholder,
body.lang-ug textarea::placeholder {
  font-family: var(--font-ug) !important;
  font-weight: 400;
  opacity: 0.75;
}
body.lang-ug h1,
body.lang-ug h2,
body.lang-ug h3,
body.lang-ug h4,
body.lang-ug h5,
body.lang-ug h6 {
  font-family: var(--font-ug) !important;
  font-weight: 700;
  line-height: 1.45;
  letter-spacing: normal;
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--text);
  font-size:14px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
a{color:var(--blue);text-decoration:none;transition:color .2s}
a:hover{color:var(--blue-hover)}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:14px;outline:none}
ul,ol{list-style:none}

/* ===== 应用框架 ===== */
.app-shell{display:flex;min-height:100vh}

/* 应用内全屏模式 - 保留侧边栏和顶部栏，只做轻微缩放 */
.app-fullscreen .sidebar{z-index:100}
.app-fullscreen .topbar{z-index:99}
.app-fullscreen .main-content{padding:16px 20px}

/* 全屏退出悬浮按钮 */
.fs-exit-btn{position:fixed;top:12px;right:12px;z-index:9999;width:40px;height:40px;border-radius:50%;background:rgba(0,0,0,0.5);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;transition:background .2s}
.fs-exit-btn:hover{background:rgba(0,0,0,0.7)}

/* 侧边栏 */
.sidebar{
  width:var(--sidebar-w);
  background:rgba(255,255,255,.8);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-right:1px solid var(--border-soft);
  display:flex;flex-direction:column;
  position:fixed;top:0;left:0;bottom:0;z-index:100;
  transition:transform .35s cubic-bezier(.4,0,.2,1);
}
.sidebar-header{
  height:var(--topbar-h);
  position:relative;
  padding:0 14px;border-bottom:1px solid var(--border-soft);
  display:flex;align-items:center;gap:10px;
}
.sidebar-header .sidebar-page-title{
  font-size:16px !important;font-weight:700 !important;color:#1a1a1e !important;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;text-align:center;
}
.sidebar-header .brand-name{
  position:relative;left:auto;top:auto;transform:none;
  font-size:15px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.sidebar-header .sidebar-close{position:relative;z-index:1;margin-left:auto}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand-mark{
  width:28px;height:28px;border-radius:8px;
  background:linear-gradient(135deg,#0071e3,#32ade6);
  box-shadow:0 2px 8px rgba(0,113,227,.35);
  flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
}
.brand-mark svg{width:16px;height:16px;color:white;stroke:white;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.topbar-logo{max-height:28px;width:auto;max-width:120px;border-radius:6px;object-fit:contain}
.sidebar-close{display:none;font-size:24px;color:var(--text-2);line-height:1}

/* 顶部栏中间品牌 */
.topbar-center{
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  display:flex;align-items:center;justify-content:center;
  pointer-events:none;
}
.topbar-center .brand{pointer-events:auto}
.topbar-center .topbar-title{font-size:18px !important;font-weight:700 !important;color:#1a1a1e !important;letter-spacing:.5px !important}
.topbar-center .brand-name{font-size:16px}
.sidebar-footer{padding:12px 18px;border-top:1px solid var(--border-soft);font-size:12px;color:var(--text-3);overflow:hidden}
.sb-footer{display:flex;flex-direction:column;gap:4px;line-height:1.6;text-align:center;align-items:center;justify-content:center;width:100%;box-sizing:border-box;overflow-wrap:anywhere;word-break:break-word}
.sb-footer .sb-footer-label{display:inline-block;color:var(--text-3);font-weight:500;margin-right:4px}
.sb-footer .sb-footer-ver{display:flex;align-items:center;justify-content:center;gap:4px;flex-wrap:wrap;max-width:100%}
.sb-footer .sb-footer-ver .ver{color:var(--primary);font-weight:600;font-family:'SF Mono',Menlo,Consolas,monospace;font-size:12px}
.sb-footer .sb-footer-row{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;align-items:center;max-width:100%}
.sb-footer .sb-footer-link{color:var(--text-3);word-break:break-word;overflow-wrap:anywhere;max-width:100%}
.sb-footer .sb-footer-copy{color:var(--text-2);word-break:break-word;overflow-wrap:anywhere;max-width:100%}
/* 侧边栏3处跳转链接（域名/公网备案号 + 版权值）—— Blue系蓝色优化同步登录页：主色蓝+hover加深Blue600+下划线 */
.sb-footer a.sb-footer-link-a{color:var(--primary,#0071e3);font-weight:500;text-decoration:none;cursor:pointer;word-break:break-word;overflow-wrap:anywhere;transition:color .2s ease,text-decoration-color .2s ease}
.sb-footer a.sb-footer-link-a:hover{text-decoration:underline;text-underline-offset:2px;color:#1d4ed8}
.sb-footer.sb-footer-rtl{direction:rtl;text-align:right;align-items:center}
.sb-footer.sb-footer-rtl .sb-footer-label{margin-right:0;margin-left:4px}
.sb-footer.sb-footer-rtl .sb-footer-row{flex-direction:row;justify-content:center}
.sb-footer.sb-footer-rtl .sb-footer-ver{flex-direction:row}
.sb-footer.sb-footer-rtl .sb-footer-ver .ver,.sb-footer.sb-footer-rtl .sb-footer-link,.sb-footer.sb-footer-rtl .sb-footer-copy,.sb-footer.sb-footer-rtl .sb-footer-label{font-family:'ALKATIP Yazma Tom','Segoe UI',Tahoma,sans-serif;font-variant-ligatures:contextual;font-feature-settings:'kern','liga','calt';unicode-bidi:embed;direction:rtl}

.sidebar-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:99;backdrop-filter:blur(2px)}

/* 主区域 */
.main-wrap{flex:1;margin-left:var(--sidebar-w);display:flex;flex-direction:column;min-width:0}
.topbar{
  height:var(--topbar-h);
  background:rgba(255,255,255,.72);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid var(--border-soft);
  display:flex;align-items:center;gap:14px;
  padding:0 22px;position:sticky;top:0;z-index:50;
}
.menu-toggle{display:none;flex-direction:column;gap:4px;padding:6px}
.menu-toggle span{width:20px;height:2px;background:var(--text);border-radius:2px;transition:.3s}
.topbar-title{font-size:16px;font-weight:600;color:var(--text);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-greeting{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-greeting .tg-name{font-size:15px;font-weight:600;color:var(--text)}
.topbar-greeting .tg-date{font-size:12px;color:var(--text-2)}
.topbar-actions{display:flex;align-items:center;gap:6px}
.topbar-btn{
  display:flex;align-items:center;gap:6px;
  height:36px;padding:0 12px;border-radius:var(--radius-sm);
  color:var(--text-2);transition:all .2s;font-size:13px;
}
.topbar-btn:hover{background:var(--surface-2);color:var(--text)}
.tb-icon{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center}
.tb-icon svg{width:18px;height:18px;color:var(--text-2);stroke:var(--text-2);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

.user-chip{
  display:flex;align-items:center;gap:8px;height:36px;padding:0 8px 0 4px;
  border-radius:18px;cursor:pointer;transition:background .2s;position:relative;
}
.user-chip:hover{background:var(--surface-2)}
.user-avatar{
  width:28px;height:28px;border-radius:50%;
  background:linear-gradient(135deg,#0071e3,#af52de);
  color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:600;flex-shrink:0;
}
.user-name{font-size:13px;color:var(--text);max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.caret{width:0;height:0;border:4px solid transparent;border-top-color:var(--text-3);margin-top:2px}
.user-dropdown{
  display:none;position:absolute;top:calc(100% + 6px);right:0;
  background:var(--surface);border:1px solid var(--border-soft);
  border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);
  min-width:140px;padding:6px;z-index:60;
}
.user-dropdown.open{display:block;animation:dropIn .2s ease}
.user-dropdown a{display:block;padding:8px 12px;border-radius:8px;color:var(--text);font-size:13px}
.user-dropdown a:hover{background:var(--blue-soft);color:var(--blue)}
@keyframes dropIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}

.content{flex:1;padding:16px 20px;max-width:100%;animation:fadeIn .3s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

/* ===== 通用组件 ===== */
.btn{
  display:inline-flex;align-items:center;gap:6px;
  height:38px;padding:0 18px;border-radius:var(--radius-sm);
  font-size:14px;font-weight:500;transition:all .2s;white-space:nowrap;
}
.btn-sm{height:32px;padding:0 14px;font-size:13px}
.btn-xs{height:26px;padding:0 10px;font-size:12px;border-radius:8px}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-hover);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,113,227,.3)}
.btn-ghost{background:var(--surface-2);color:var(--text);border:1px solid var(--border-soft)}
.btn-ghost:hover{background:var(--surface);border-color:var(--border)}
.btn-warn{background:var(--orange);color:#fff}
.btn-warn:hover{background:#f08a00;color:#fff}
.btn:active{transform:scale(.97)}

.alert{padding:12px 16px;border-radius:var(--radius-sm);margin-bottom:16px;font-size:13px;animation:dropIn .25s ease}
.alert-success{background:#e8f9ed;color:#1a7a37;border:1px solid #b8e8c8}

.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:500}
.tag-blue{background:var(--blue-soft);color:var(--blue)}
.tag-purple{background:#f3e8ff;color:var(--purple)}
.tag-green{background:#e8f9ed;color:var(--green)}
.tag-orange{background:#fff3e0;color:var(--orange)}

.badge{display:inline-block;padding:3px 10px;border-radius:8px;font-size:12px;font-weight:500}
.badge-green{background:#e8f9ed;color:var(--green)}
.badge-red{background:#ffecec;color:var(--red)}
.badge-orange{background:#fff3e0;color:var(--orange)}
.badge-blue{background:var(--blue-soft);color:var(--blue)}

/* 表格 */
.table-wrap{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.data-table{width:100%;border-collapse:collapse}
.data-table th{
  background:var(--surface-2);text-align:left;padding:12px 16px;
  font-size:12px;font-weight:600;color:var(--text-2);
  border-bottom:1px solid var(--border-soft);white-space:nowrap;
}
.data-table td{padding:13px 16px;border-bottom:1px solid var(--border-soft);font-size:13px;color:var(--text)}
.data-table tbody tr:last-child td{border-bottom:none}
.data-table tbody tr{transition:background .15s}
.data-table tbody tr:hover{background:var(--surface-2)}
.data-table .empty{text-align:center;color:var(--text-3);padding:40px 16px}
.num{text-align:right;font-variant-numeric:tabular-nums}
.mono{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px}
.muted{color:var(--text-3)}
.bold{font-weight:600}

/* 表格操作列 */
.row-actions{display:inline-flex;gap:6px;flex-wrap:nowrap}
.act-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:28px;min-width:28px;padding:0 10px;border-radius:8px;
  font-size:12px;font-weight:500;transition:all .2s;
  background-repeat:no-repeat;background-position:center;background-size:14px 14px;
  background-color:transparent;color:var(--text-2);
  border:1px solid transparent;
}
.act-btn:hover{background:var(--surface-2);border-color:var(--border-soft)}
.act-edit{
  color:var(--blue);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230071e3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7'/%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:7px center;background-size:13px 13px;
  padding-left:26px;
}
.act-edit:hover{background-color:var(--blue-soft);color:var(--blue)}
.act-del{
  color:var(--red);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ff3b30' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'/%3E%3Cpath d='M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:7px center;background-size:13px 13px;
  padding-left:26px;
}
.act-del:hover{background-color:#ffecec;color:var(--red)}
.act-on{
  color:var(--green);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2334c759' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:7px center;background-size:13px 13px;
  padding-left:26px;
}
.act-on:hover{background-color:#e8f9ed;color:var(--green)}
.act-off{
  color:var(--orange);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ff9500' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24'/%3E%3Cline x1='1' y1='1' x2='23' y2='23'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:7px center;background-size:13px 13px;
  padding-left:26px;
}
.act-off:hover{background-color:#fff3e0;color:var(--orange)}
.act-view{
  color:var(--purple);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23af52de' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:7px center;background-size:13px 13px;
  padding-left:26px;
}
.act-view:hover{background-color:#f3e8ff;color:var(--purple)}

/* 工具栏 */
.page-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.toolbar-title{font-size:15px;font-weight:600;color:var(--text)}
.toolbar-spacer{flex:1}
.search-form{display:flex;gap:8px}
.search-input{
  height:34px;padding:0 14px;border:1px solid var(--border-soft);
  border-radius:var(--radius-sm);background:var(--surface);width:240px;
  transition:all .2s;
}
.search-input:focus{border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,113,227,.12)}

/* 表单 */
.form-card{
  background:var(--surface);border:1px solid var(--border-soft);
  border-radius:var(--radius);padding:28px;box-shadow:var(--shadow);
  max-width:920px;
}
.params-card{max-width:none;padding:12px 16px}
.params-card .form-row{gap:6px 16px;margin-bottom:0}
.params-card .form-row + .form-row{margin-top:0}
.params-card .form-section-title{margin-top:8px;margin-bottom:2px;padding-bottom:2px}
.params-card .field{min-width:200px}
.params-card .param-field{min-width:240px}
.params-card .logo-only-row{align-items:flex-start}
.params-card .logo-field{flex:0 0 auto;min-width:280px}
.params-card .site-info-row{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 20px}
.params-card .site-info-row .field{min-width:0}
.params-card .logo-upload-wrap{flex-direction:row;align-items:center;gap:12px}
.params-card .logo-actions{flex-direction:column;gap:4px}
.params-card .logo-preview{width:64px;height:64px}
.params-card .param-item{padding:8px 0}
.params-card .field label{margin-bottom:2px}
.params-card .field input,.params-card .field select{padding:6px 10px}
.form-section-title{font-size:13px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.5px;margin:18px 0 14px;padding-bottom:8px;border-bottom:1px solid var(--border-soft)}
.form-section-title:first-child{margin-top:0}
.form-grid{display:flex;flex-direction:column}
.form-row{display:flex;gap:18px;margin-bottom:14px;flex-wrap:wrap}
.field{flex:1;min-width:200px;display:flex;flex-direction:column;gap:6px}
.field-full{flex-basis:100%}
.field label{font-size:13px;color:var(--text-2);font-weight:500}
.field label i{color:var(--red);font-style:normal}
.field input,.field select,.field textarea{
  height:40px;padding:0 14px;border:1px solid var(--border-soft);
  border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);
  transition:all .2s;
}
.field textarea{height:auto;padding:10px 14px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--blue);background:var(--surface);
  box-shadow:0 0 0 4px rgba(0,113,227,.12);
}
.form-actions{display:flex;gap:12px;margin-top:20px}

/* Logo上传 */
.logo-field{min-width:320px}
.logo-upload-wrap{display:flex;flex-direction:column;gap:10px}
.logo-preview{width:100px;height:100px;border-radius:16px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--border-soft)}
.logo-preview img{max-width:100%;max-height:100%;object-fit:contain}
.logo-preview svg{width:48px;height:48px}
.logo-actions{display:flex;flex-direction:column;gap:8px}

/* 侧边栏Logo */
.sidebar-logo{max-height:36px;width:auto;max-width:140px;border-radius:8px;object-fit:contain;background:rgba(255,255,255,.08);padding:2px}
.sidebar-logo-fallback{width:32px;height:32px;border-radius:8px;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center}
.sidebar-logo-fallback svg{width:20px;height:20px;stroke:#fff}

/* 分页 */
.pagination{display:flex;gap:6px;justify-content:center;margin-top:18px;flex-wrap:wrap}
.page-btn{min-width:36px;height:36px;padding:0 10px;border-radius:9px;background:var(--surface);border:1px solid var(--border-soft);color:var(--text-2);font-size:13px;transition:all .2s}
.page-btn:hover{background:var(--surface-2);color:var(--blue)}
.page-btn.active{background:var(--blue);color:#fff;border-color:var(--blue)}

/* 占位页 */
.placeholder-page{display:flex;align-items:center;justify-content:center;min-height:60vh}
.placeholder-card{text-align:center;padding:40px}
.ph-icon{width:88px;height:88px;margin:0 auto 20px;border-radius:24px;background:linear-gradient(135deg,var(--blue-soft),#f3e8ff);display:flex;align-items:center;justify-content:center;position:relative}
.ph-icon::after{content:"";width:36px;height:36px;border-radius:50%;border:3px solid var(--blue);border-right-color:transparent;animation:spin 1.2s linear infinite}
.ph-icon.ph-chart::after{display:none}
.ph-icon.ph-chart{background:linear-gradient(135deg,#e8f1ff,#fff3e0)}
.ph-icon.ph-box{background:linear-gradient(135deg,#e8f9ed,#e8f1ff)}
@keyframes spin{to{transform:rotate(360deg)}}
.placeholder-card h2{font-size:20px;color:var(--text);margin-bottom:8px}
.placeholder-card p{color:var(--text-3);margin-bottom:20px}
.ph-actions{margin-top:8px}

/* 上传区 */
.upload-area{margin:16px 0}
.upload-box{
  border:2px dashed var(--border);border-radius:var(--radius);
  padding:48px 20px;text-align:center;cursor:pointer;
  transition:all .2s;background:var(--surface-2);
}
.upload-box:hover{border-color:var(--blue);background:var(--blue-soft)}
.upload-icon{width:48px;height:48px;margin:0 auto 12px;border-radius:14px;background:var(--blue-soft);position:relative}
.upload-icon::after{content:"+";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:28px;color:var(--blue);font-weight:300}
.upload-box p{color:var(--text-3);font-size:13px}
.import-tips{margin-top:20px;background:var(--surface-2);border-radius:var(--radius-sm);padding:16px}
.import-tips h4{font-size:13px;color:var(--text);margin-bottom:8px}
.import-tips li{font-size:13px;color:var(--text-3);padding:3px 0;padding-left:16px;position:relative}
.import-tips li::before{content:"·";position:absolute;left:4px;color:var(--blue)}

/* 备份卡片 */
.backup-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;margin-top:16px}
.backup-card{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);padding:24px;text-align:center;transition:all .2s}
.backup-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.bc-icon{width:52px;height:52px;border-radius:14px;margin:0 auto 14px}
.bc-dump{background:linear-gradient(135deg,#0071e3,#32ade6)}
.bc-restore{background:linear-gradient(135deg,#34c759,#32ade6)}
.bc-init{background:linear-gradient(135deg,#ff9500,#ff3b30)}
.backup-card h4{font-size:15px;margin-bottom:6px}
.backup-card p{font-size:12px;color:var(--text-3);margin-bottom:14px}

.stat-mini{font-size:13px;color:var(--text-3);margin-bottom:14px}
.stat-mini b{color:var(--blue);font-size:15px}
.progress{position:relative;height:22px;background:var(--border-soft);border-radius:11px;overflow:hidden;min-width:160px}
.progress-bar{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--blue),#32ade6);border-radius:11px;transition:width .6s}
.progress-text{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;font-weight:600}
.rank{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:12px;font-weight:600;background:var(--border-soft);color:var(--text-2)}
.rank-1{background:linear-gradient(135deg,#ffd700,#ffaa00);color:#fff}
.rank-2{background:linear-gradient(135deg,#c0c0c0,#999);color:#fff}
.rank-3{background:linear-gradient(135deg,#cd7f32,#a0522d);color:#fff}

/* ===== 响应式 ===== */
@media (max-width:1024px){
  :root{--sidebar-w:220px}
  .content{padding:18px}
}
@media (max-width:768px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0);box-shadow:var(--shadow-lg)}
  .sidebar-close{display:block}
  .sidebar-mask.show{display:block}
  .main-wrap{margin-left:0}
  .menu-toggle{display:flex}
  .topbar{padding:0 14px}
  .user-name{display:none}
  .content{padding:14px}
  .form-card{padding:18px}
  .form-row{gap:12px}
  .field{min-width:100%}
  .search-input{width:100%}
  .data-table{font-size:12px}
  .data-table th,.data-table td{padding:9px 10px}
  .table-wrap{overflow-x:auto}
  .data-table{min-width:560px}
}
@media (max-width:480px){
  .toolbar-title{font-size:14px}
  .btn{height:34px;padding:0 14px;font-size:13px}
  .form-actions{flex-direction:column}
  .form-actions .btn{width:100%;justify-content:center}
}
/* =========================================================
   🔹 系统全屏幕水印（后台所有界面常驻，经验1430692修复"不显示"最佳实践）
   - 方案：纯DOM文字节点平铺（100%和备案行一样肉眼可见，无SVG编码失败问题）
   - pointer-events:none = 100%不阻挡任何点击/输入/操作（核心！）
   - z-index:999999 = 覆盖侧边栏/弹窗/下拉所有层级（不被任何层挡住）
   - color:rgba(0,0,0,0.18) + font-weight:600 = 18%深半透加粗=白/蓝/浅色背景都清晰（删掉multiply洗没）
   - 简体中文/维吾尔语 双语自动切换（维语指定ALKATIP字体避免面包块，经验1569889）
   ========================================================= */
.system-watermark {
  position: fixed !important;
  inset: 0 !important;          /* top/right/bottom/left:0 铺满整个视窗 */
  width: 100vw !important;
  height: 100vh !important;
  pointer-events: none !important;   /* ✅ 核心：不挡任何鼠标/键盘操作，点击直接透传到下层 */
  z-index: 999999 !important;        /* ✅ 层级最高，覆盖所有弹窗/侧边栏/表格，不被挡住不显示 */
  background-color: transparent !important;
  user-select: none !important;       /* 水印不能被鼠标选中复制（合规） */
  -webkit-user-drag: none !important;
  display: block !important;
  visibility: visible !important;
}
/* 🔹 单个水印文字 tile 样式（每个文字块，rotate(-15deg) 斜向平铺） */
.system-watermark .wm-tile {
  position: absolute !important;
  display: block !important;
  pointer-events: none !important;      /* 每个 tile 都透传，绝对不挡点击 */
  user-select: none !important;
  white-space: nowrap !important;
  transform: rotate(-15deg) !important; /* 斜向-15度，不打断内容视线 */
  transform-origin: center center !important;
  color: rgba(0, 113, 227, 0.28) !important;   /* ✅ 纯Blue500主色#0071e3 alpha28%半透明显（经验1146314：Blue系禁止紫indigo） */
  font-weight: 700 !important;                  /* ✅ 蓝色比黑浅，700 Bold加粗肉眼清晰 */
  font-size: 14px !important;
  line-height: 34px !important;
  letter-spacing: 0.2px !important;
  text-align: center !important;
  font-family: "PingFang SC","Microsoft YaHei","Hiragino Sans GB","Segoe UI",Tahoma,sans-serif !important;
  width: 780px !important;
  height: 80px !important;
  padding-top: 6px !important;
  box-sizing: border-box !important;
}
/* 维语水印字体兜底：避免维语"面包块"（经验1569889） */
body[dir="rtl"] .system-watermark .wm-tile,
body.lang-ug .system-watermark .wm-tile {
  font-family: "ALKATIP Yazma Tom", "ALKATIP Tor Tom", "UKIJ Tuz Tom", "Noto Sans Arabic", "Segoe UI", Tahoma, sans-serif !important;
  font-feature-settings: "liga", "calt";
  direction: rtl !important;
}
