/* ================= 1. 全局与基础样式 ================= */
body { 
    margin: 0; 
    padding: 0; 
    background-color: #f0f2f5; 
    font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif; 
}

#app { height: 100vh; display: flex; flex-direction: column; }
[v-cloak] { display: none !important; }
.startup-loading { position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center; padding:24px; background:#f0f2f5; }
.startup-loading-card { display:flex; flex-direction:column; gap:9px; width:min(360px,100%); padding:28px; text-align:center; border-radius:14px; background:#fff; box-shadow:0 10px 30px rgba(35,57,87,.12); color:#243852; }
.startup-loading-card b { font-size:18px; }
.startup-loading-card span { color:#7a899d; font-size:13px; }

/* ================= 2. 登录页样式 ================= */
.login-wrap { height: 100vh; display: flex; justify-content: center; align-items: center; background: #2d3a4b; }
.login-box { width: 400px; max-width: calc(100vw - 40px); padding: 40px; box-sizing:border-box; background: white; border-radius: 8px; box-shadow: 0 0 20px rgba(0,0,0,0.1); }
.login-title { text-align: center; color: #333; margin-bottom: 30px; font-weight: 600; font-size: 24px; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.login-title img { width: 72px; height: 72px; object-fit: contain; }

/* ================= 3. 主布局框架 ================= */
.main-container { height: 100%; width: 100%; }
.el-aside { background-color: #304156; color: white; transition: width 0.3s; overflow-x: hidden; display: flex; flex-direction: column; }
.el-menu { border-right: none; width: 100%; }
.el-menu-item { display: flex; align-items: center; gap: 2px; }
.el-menu-item .el-icon { width: 20px; margin-right: 8px; }
.el-header { background-color: #fff; border-bottom: 1px solid #e6e6e6; display: flex; justify-content: space-between; align-items: center; padding: 0 20px; box-shadow: 0 1px 4px rgba(0,21,41,0.08); z-index: 9; height: 64px; }
.header-left { display:flex; align-items:center; min-width:0; }
.mobile-menu-trigger { display:none; margin-right:8px; color:#409eff; font-size:21px; }
.mobile-menu-mask { display:none; }
.logo { font-size: 20px; font-weight: 600; color: #409EFF; display: flex; align-items: center; gap: 10px; }
.logo > img { width: 34px; height: 34px; object-fit: contain; }
.sidebar-title { height: 64px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; gap: 10px; color: #fff; font-size: 17px; font-weight: 600; letter-spacing: 1px; background: #2b3649; border-bottom: 1px solid rgba(255,255,255,.08); }
.sidebar-title img { width: 34px; height: 34px; object-fit: contain; }
.el-main { padding: 20px; background-color: #f0f2f5; overflow-y: auto; } 
.content-card { background: white; padding: 25px; border-radius: 8px; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.05); min-height: 80vh; margin-bottom: 20px; }
.gif-assets-page { padding: 28px; }
.gif-assets-header { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-bottom:22px; }
.gif-assets-header h3 { margin:0; padding-left:11px; border-left:4px solid #409eff; color:#1f2d3d; font-size:19px; line-height:24px; }
.gif-assets-header p { margin:8px 0 0 15px; color:#8491a5; font-size:13px; }
.gif-assets-table { margin-top:0; border-radius:10px; overflow:hidden; }
.gif-assets-table .el-table__header th { background:#f7faff; color:#52647d; font-weight:600; }
.gif-asset-preview { display:block; width:76px; height:56px; margin:auto; object-fit:contain; background:#f3f6fa; border:1px solid #e8eef6; border-radius:7px; }
.gif-asset-name { color:#25364d; font-weight:600; }
.gif-edit-tip { margin:4px 0 0 90px; padding:10px 12px; color:#71809a; font-size:12px; background:#f5f8fd; border:1px solid #e2eaf5; border-radius:7px; }

/* ================= 4. 细节优化 ================= */
.el-table { margin-top: 15px; }
.admin-profile { display: flex; align-items: center; cursor: pointer; color: #606266; padding: 5px; border-radius: 4px; transition: background 0.3s; }
.admin-profile:hover { background: #f5f7fa; }
.admin-avatar-small { width: 40px; height: 40px; border-radius: 50%; margin-right: 10px; object-fit: cover; border: 1px solid #eee; }

.code-preview {
    font-family: Consolas, Monaco, monospace;
    background: #f4f4f5; padding: 4px 8px; border-radius: 4px;
    color: #606266; font-size: 12px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
    border: 1px solid #e9e9eb;
}

/* 个人中心样式 */
.page-header-title { font-size: 18px; font-weight: 600; color: #303133; padding-bottom: 20px; border-bottom: 1px solid #ebeef5; margin-bottom: 30px; display: flex; align-items: center; }
.page-header-title::before { content: ''; width: 4px; height: 18px; background: #409EFF; margin-right: 10px; border-radius: 2px; }
.form-container-center { max-width: 600px; margin: 0 auto; padding-top: 10px; }
.profile-avatar-section { text-align: center; margin-bottom: 30px; padding: 20px; background: #f9faFc; border-radius: 8px; border: 1px dashed #dcdfe6; }
.profile-avatar-large { width: 100px; height: 100px; border-radius: 50%; border: 4px solid #fff; box-shadow: 0 2px 12px 0 rgba(0,0,0,0.1); transition: transform 0.3s; }
.profile-avatar-large:hover { transform: scale(1.05); }
.form-actions { margin-top: 40px; text-align: center; }

/* 快速日期设置样式优化 */
.quick-date-group { background: #fdf6ec; padding: 15px; border-radius: 6px; margin-bottom: 20px; border: 1px solid #faecd8; display: flex; align-items: center; gap: 15px; }
.quick-label { color: #e6a23c; font-weight: bold; font-size: 14px; display: flex; align-items: center; gap: 5px; }

/* ================= 配置页面专用样式 (独立卡片风格) ================= */
.config-page-wrapper { 
    max-width: 1400px; 
    margin: 0 auto; 
    padding-bottom: 32px; 
}

.config-page-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; margin-bottom:20px; }
.config-page-heading p { margin:7px 0 0 10px; color:#8491a5; font-size:13px; }
.config-header-title {
    font-size: 21px; font-weight: 700; color: #25364d;
    padding-left: 10px;
    border-left: 5px solid #409EFF;
}
.config-primary-grid { align-items:flex-start; }

.config-section-card { 
    background: #ffffff; 
    padding: 30px; 
    border-radius: 16px; 
    border: 1px solid #e4e7ed; 
    display: flex; 
    flex-direction: column;
    gap: 20px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.03); 
    transition: all 0.3s;
    height: auto;
}
.config-section-card:hover { 
    box-shadow: 0 8px 24px rgba(0,0,0,0.08); 
    transform: translateY(-2px); 
}
.system-config-form { display:flex; flex-direction:column; gap:22px; }
.config-section-card { gap:16px; padding:25px; }
.config-section-card .el-form-item { margin-bottom:14px; }
.config-section-card .el-form-item:last-child { margin-bottom:0; }
.config-section-help { margin:-6px 0 2px; color:#8491a5; font-size:13px; }
.config-basic-card, .config-notice-card { min-height:0; }
.config-subsection-title { display:flex; align-items:center; gap:7px; padding-top:5px; margin-top:2px; color:#687993; font-size:13px; font-weight:600; border-top:1px dashed #dfe7f2; }
.neutral-switch-box { background:#f8faff; border-color:#e5edf8; }
.neutral-switch-box:hover { background:#f8faff; border-color:#d6e4f5; }
.update-config-card { margin-top:0; background:linear-gradient(180deg,#fff 0%,#f9fbff 100%); border-color:#dbe8f8; }
.update-method-row { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:14px 16px; background:#f8faff; border:1px solid #e5edf8; border-radius:10px; }
.update-method-row strong { display:block; color:#34445c; font-size:14px; }
.update-method-row span { display:block; margin-top:4px; color:#8491a5; font-size:12px; }
.update-method-options { flex:0 0 auto; }
.update-force-box { width:100%; background:#fff9ef; border-color:#ffe5b5; }
.update-force-box:hover { background:#fff9ef; border-color:#ffd995; }

.section-title { 
    font-weight: bold; font-size: 16px; 
    margin-bottom: 10px; display: flex; align-items: center; gap: 8px; 
    color: #303133; padding-bottom: 15px; border-bottom: 1px solid #f0f2f5;
}

.floating-save-bar {
    position: sticky;
    bottom: 18px;
    z-index: 9;
    display:flex;
    justify-content:flex-end;
    padding-top:2px;
}
.floating-save-btn {
    min-width: 188px; height: 44px; font-size: 14px; font-weight: 600;
    border-radius: 10px;
    box-shadow: 0 8px 18px rgba(64,158,255,0.24);
    letter-spacing: .5px;
}

.switch-box {
    background: #fcfcfc; padding: 15px; border-radius: 10px; border: 1px solid #ebeef5; 
    display: flex; justify-content: space-between; align-items: center; width: 100%;
    transition: background 0.3s;
}
.switch-box:hover { background: #f0f9eb; border-color: #c2e7b0; }
@media (max-width: 1000px) { .config-page-heading { align-items:stretch; } .config-primary-grid .el-col { width:100%; max-width:100%; flex:0 0 100%; margin-bottom:20px; } .update-method-row { align-items:flex-start; flex-direction:column; } .floating-save-bar { justify-content:center; } }

/* 系统配置：采用单列分组表单，去掉大面积卡片与浮动保存按钮。 */
.config-simple-page { max-width: 980px; padding: 4px 0 42px; }
.config-simple-page .config-page-heading { margin: 0 0 28px; }
.config-simple-form { width: 100%; }
.config-simple-section { padding: 0 0 24px; margin: 0 0 25px; border-bottom: 1px solid #e7edf5; }
.config-simple-section h3 { display:flex; align-items:center; gap:8px; margin:0 0 22px; color:#263850; font-size:16px; font-weight:650; }
.config-simple-section h3 .el-icon { color:#409eff; font-size:17px; }
.config-simple-form .el-form-item { display:flex; align-items:center; margin-bottom:18px; }
.config-simple-form .el-form-item:last-child { margin-bottom:0; }
.config-simple-form .el-form-item__label { height:auto; line-height:32px; color:#52647d; font-weight:500; }
.config-simple-form .el-form-item__content { min-height:32px; max-width:690px; }
.config-simple-form .el-input, .config-simple-form .el-textarea { width:100%; }
.config-simple-form .el-input-number { width:180px; }
.config-control-with-help { display:flex; align-items:center; gap:12px; min-height:32px; }
.config-control-with-help span { color:#8491a5; font-size:12px; white-space:nowrap; }
.config-switch-line { width:100%; min-height:32px; display:flex; align-items:center; justify-content:space-between; padding:0 12px; background:#f8faff; border:1px solid #e5edf8; border-radius:7px; color:#71809a; font-size:12px; }
.config-save-row { display:flex; justify-content:flex-end; padding-top:2px; }
.config-save-btn { min-width:178px; height:40px; border-radius:7px; font-size:14px; font-weight:600; }
.config-save-btn .el-icon { margin-right:6px; }
.script-version-row .el-form-item__content { min-width: 0; }
.script-version-row .el-input-group__append { padding: 0 8px; }
.script-editor-dialog { height:min(720px, 94vh); max-height:none; display:flex; flex-direction:column; overflow:hidden; }
.script-editor-dialog .el-dialog__header { flex:none; padding-bottom:8px; }
.script-editor-dialog .el-dialog__body { flex:1; min-height:0; overflow-y:auto; overflow-x:hidden; padding-top:8px; padding-bottom:8px; }
.script-editor-dialog .el-dialog__footer { flex:none; padding-top:10px; border-top:1px solid #eef1f5; }
.script-editor-form { width:100%; min-width:0; }
.script-editor-form .el-row { margin-left:0!important; margin-right:0!important; }
.script-editor-form .el-col, .script-editor-form .el-form-item__content { min-width:0; }
.script-editor-form .el-form-item { margin-bottom:12px; }
.script-editor-form .el-input, .script-editor-form .el-select, .script-editor-form .el-textarea { max-width:100%; }
.script-editor-form .el-textarea__inner { box-sizing:border-box; max-width:100%; resize:vertical; }
.script-editor-quick-row { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:2px 0 14px 96px; }
.script-editor-setting { min-width:0; min-height:65px; box-sizing:border-box; padding:9px 11px; border:1px solid #e5ebf3; border-radius:8px; background:#f8faff; display:flex; flex-direction:column; justify-content:space-between; align-items:flex-start; gap:6px; }
.script-editor-setting-label { font-size:12px; line-height:16px; color:#34445e; font-weight:650; }
.script-editor-setting-value { display:flex; align-items:center; gap:8px; color:#8a97aa; font-size:12px; white-space:nowrap; }
.script-editor-setting-value .is-active { color:#2474e8; font-weight:600; }
.script-editor-note { margin:-2px 0 12px 96px; color:#8895a8; font-size:11px; line-height:1.4; }
.script-editor-billing-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:0 0 12px 96px; padding:11px 13px; border:1px solid #e8edf5; border-radius:8px; background:#fff; }
.script-editor-meta-field { display:flex; min-width:0; flex-direction:column; align-items:flex-start; justify-content:space-between; gap:7px; }
.script-editor-meta-field > span:first-child { color:#52647e; font-size:12px; font-weight:600; line-height:16px; }
.script-editor-meta-value { display:flex; align-items:center; min-width:0; }
.script-editor-help-line { margin:0 0 10px 96px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:5px 10px; border-radius:6px; background:#fff8eb; color:#8a5b16; font-size:12px; line-height:1.4; }
.script-editor-help-line code { color:#945812; font-weight:600; }
.script-editor-advanced { margin:0 0 12px; }
.script-editor-advanced-hint { margin:4px 0 12px 96px; color:#8793a3; font-size:12px; }
@media (max-width:760px) {
    .script-editor-form .el-row > .el-col { flex:0 0 100%; max-width:100%; }
    .script-editor-quick-row, .script-editor-billing-row { margin-left:0; grid-template-columns:repeat(2,minmax(0,1fr)); }
    .script-editor-note, .script-editor-help-line, .script-editor-advanced-hint { margin-left:0; }
    .script-editor-help-line { align-items:flex-start; flex-direction:column; gap:2px; }
}
@media (max-width:420px) {
    .script-editor-quick-row, .script-editor-billing-row { grid-template-columns:1fr; }
}
@media (max-width: 760px) { .config-simple-page { padding:0 16px 32px; } .config-simple-form .el-form-item { display:block; } .config-simple-form .el-form-item__label { display:block; text-align:left; line-height:24px; margin-bottom:7px; } .config-simple-form .el-form-item__content { margin-left:0!important; max-width:none; } .config-control-with-help { align-items:flex-start; flex-direction:column; gap:6px; } .config-control-with-help span { white-space:normal; } }

/* 高级账户设置风格：标题说明在左，操作控件在右。 */
.account-settings-form { width:100%; }
.account-settings-section { padding:22px 26px 8px; margin:0 0 18px; background:#fff; border:1px solid #e3eaf3; border-radius:10px; box-shadow:0 3px 12px rgba(36,61,96,.045); }
.account-settings-section.last-section { margin-bottom:22px; }
.account-settings-section h3 { display:flex; align-items:center; gap:8px; margin:0; padding:0 0 16px; color:#273a54; font-size:16px; font-weight:650; }
.account-settings-section h3 .el-icon { color:#409eff; font-size:17px; }
.account-setting-row { display:grid; grid-template-columns:minmax(220px, 32%) minmax(0, 1fr); column-gap:42px; align-items:center; padding:16px 0; border-top:1px solid #eef2f6; }
.account-setting-row:first-of-type { border-top:0; }
.account-setting-row.align-start { align-items:start; }
.account-setting-meta strong { display:block; color:#34465e; font-size:14px; font-weight:600; line-height:20px; }
.account-setting-meta span { display:block; margin-top:4px; color:#8895a8; font-size:12px; line-height:18px; }
.account-setting-control { min-width:0; max-width:620px; }
.account-setting-control .el-input, .account-setting-control .el-textarea { width:100%; }
.account-setting-control .el-input-number { width:165px; }
.account-setting-control.narrow-control { max-width:220px; }
.account-switch-control { display:flex; align-items:center; min-height:32px; }
.account-radio-group { display:flex; flex-wrap:wrap; gap:10px; }
.account-radio-group .el-radio { margin-right:0; }
.config-simple-page .config-save-row { padding:4px 0 10px; border-top:0; }
@media (max-width:760px) { .account-setting-row { grid-template-columns:1fr; row-gap:11px; padding:15px 0; } .account-setting-control, .account-setting-control.narrow-control { max-width:none; } .account-setting-control .el-input-number { width:100%; } }

.card-gen-form .el-form-item__label { font-weight: bold; color: #606266; }

.card-type-group {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    width: 100%;
}

.card-type-item {
    cursor: pointer;
    border: 2px solid #f2f6fc;
    border-radius: 8px;
    padding: 12px;
    text-align: center;
    transition: all 0.3s;
    background: #fafafa;
    position: relative;
    overflow: hidden;
}

.card-type-item:hover { border-color: #409EFF; background: #ecf5ff; }

.card-type-item.is-active {
    border-color: #409EFF;
    background: #ecf5ff;
    color: #409EFF;
    box-shadow: 0 4px 12px rgba(64,158,255,0.15);
}

.card-type-item .days-num { font-size: 18px; font-weight: bold; display: block; }
.card-type-item .days-label { font-size: 12px; opacity: 0.8; }

.card-type-item.is-active::after {
    content: '✓';
    position: absolute;
    right: -10px;
    top: -10px;
    background: #409EFF;
    color: white;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    line-height: 35px;
    padding-left: 5px;
    font-size: 12px;
}

.table-layout-card {
    display: flex;
    flex-direction: column;
    min-height: calc(100vh - 130px);
}

.pagination-container {
    margin-top: auto !important; 
    padding-top: 20px;
    border-top: 1px dashed #ebeef5;
    display: flex;
    justify-content: flex-end;
}
.agent-pwd-cell {
    font-family: Consolas, 'Courier New', monospace;
    font-size: 13px;
    color: #303133;
    user-select: all;
    word-break: break-all;
}
.client-launch-copy { display:flex; align-items:flex-start; gap:13px; padding:7px 2px 12px; color:#52647d; }
.client-launch-copy .el-icon { display:grid; place-items:center; flex:0 0 38px; width:38px; height:38px; color:#409eff; font-size:20px; border-radius:10px; background:#ecf5ff; }
.client-launch-copy strong { display:block; color:#2d405a; font-size:15px; }
.client-launch-copy p { margin:7px 0 0; color:#8491a5; font-size:13px; line-height:1.65; }
.client-launch-link { display:inline-flex; align-items:center; justify-content:center; height:32px; color:#fff!important; text-decoration:none!important; }

/* ================= 手机端：抽屉导航与可横向查看的数据表 ================= */
@media (max-width: 760px) {
    #app, .main-container { min-height:100vh; height:auto; }
    .main-container > .el-container { min-width:0; width:100%; }
    .admin-sidebar { position:fixed; top:0; bottom:0; left:0; z-index:1001; width:220px!important; max-width:82vw; transform:translateX(-105%); box-shadow:8px 0 26px rgba(25,48,80,.24); transition:transform .24s ease; }
    .admin-sidebar.is-mobile-open { transform:translateX(0); }
    .mobile-menu-mask { position:fixed; inset:0; z-index:1000; background:rgba(16,31,52,.42); opacity:0; pointer-events:none; transition:opacity .2s ease; display:block; }
    .mobile-menu-mask.is-visible { opacity:1; pointer-events:auto; }
    .mobile-menu-trigger { display:inline-flex; }
    .el-header { height:56px; padding:0 12px; }
    .logo { gap:7px; font-size:16px; white-space:nowrap; overflow:hidden; }
    .logo > img { width:30px; height:30px; }
    .admin-profile { padding:3px; }
    .admin-profile span, .admin-profile .el-icon { display:none; }
    .admin-avatar-small { width:32px; height:32px; margin-right:0; }
    .el-main { padding:12px; overflow:visible; }
    .content-card { padding:16px; min-height:calc(100vh - 80px); border-radius:10px; overflow:hidden; }
    .content-card > div:first-child { flex-wrap:wrap; gap:12px!important; align-items:stretch!important; }
    .content-card > div:first-child > div { flex-wrap:wrap; gap:10px!important; width:100%; }
    .content-card > div:first-child .el-input { width:100%!important; }
    .content-card > div:first-child > .el-button { width:100%; margin:0; }
    .el-table { max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
    .el-table__body-wrapper, .el-scrollbar__wrap { -webkit-overflow-scrolling:touch; }
    .pagination-container { justify-content:flex-start; overflow-x:auto; }
    .el-pagination { flex-wrap:nowrap; min-width:max-content; }
    .login-wrap { padding:20px; box-sizing:border-box; align-items:center; }
    .login-box { padding:28px 20px; max-width:100%; }
    .login-title { margin-bottom:24px; font-size:20px; }
    .login-title img { width:58px; height:58px; }
    .gif-assets-page { padding:16px; }
    .gif-assets-header { align-items:stretch; flex-direction:column; gap:14px; }
    .gif-assets-header .el-button { width:100%; }
    .gif-edit-tip { margin:10px 0 0; }
}
.template-api-guide {
    margin: 0 0 18px;
    padding: 14px 16px;
    border: 1px solid #d9ecff;
    border-radius: 10px;
    background: #f5faff;
    color: #4b6178;
}

.template-api-guide__title {
    margin-bottom: 10px;
    color: #1f3b57;
    font-size: 14px;
    font-weight: 700;
}

.template-api-guide__items {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    line-height: 1.8;
}

.template-api-guide code,
.template-call-cell code,
.template-call-meta code {
    padding: 2px 6px;
    border-radius: 5px;
    background: #eaf4ff;
    color: #1769aa;
    font-family: Consolas, "Cascadia Code", monospace;
    font-size: 12px;
}

.template-api-guide p {
    margin: 8px 0 0;
    color: #73879b;
    font-size: 12px;
}

.template-call-cell {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.template-call-cell code {
    display: block;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.template-call-fields {
    margin: 16px 0;
}

.template-call-fields > div {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 9px;
}

.template-call-code {
    margin-top: 14px;
}

.template-call-code textarea {
    font-family: Consolas, "Cascadia Code", monospace;
    font-size: 12px;
    line-height: 1.55;
}

@media (max-width: 768px) {
    .template-api-guide__items,
    .template-call-cell {
        align-items: flex-start;
        flex-direction: column;
    }
}

.billing-tag {
    min-width: 74px;
    justify-content: center;
    white-space: nowrap;
}
