@media (min-width: 901px) {
  body { font-size: 13px; }
  .sidebar { width: 238px; padding: 20px 17px; }
  .main { margin-left: 238px; width: calc(100% - 238px); }
  .brand { margin: 0 9px 27px; gap: 11px; }
  .brand-mark { width: 40px; height: 40px; border-radius: 12px; font-size: 24px; }
  .brand b { font-size: 19px; }
  .brand small { font-size: 11px; }
  .admin-chip small { font-size: 10px; }
  .nav-label { font-size: 12px; margin: 21px 12px 8px; }
  .sidebar nav a { gap: 12px; padding: 11px 13px; margin: 3px 0; font-size: 14px; }
  .sidebar nav i { font-size: 17px; }
  .sidebar-tip { left: 17px; right: 17px; bottom: 18px; padding: 14px; font-size: 14px; }
  .sidebar-tip small { font-size: 12px; }
  .topbar { height: 68px; padding: 0 20px; }
  .topbar h2 { font-size: 17px; }
  .avatar { width: 32px; height: 32px; }
  .content { padding: 16px 18px; }
  .panel { padding: 15px; border-radius: 13px; }
  .panel-title { margin-bottom: 12px; }
  .panel-title h3 { font-size: 14px; }
  .metric-card { padding: 13px; gap: 10px; border-radius: 12px; }
  .metric-icon { width: 39px; height: 39px; border-radius: 10px; font-size: 18px; }
  .metric-value { font-size: 21px; }
  .metric-label { font-size: 11px; }
  .chart-wrap { height: 200px; }
  .code-display { font-size: 23px; letter-spacing: 3px; padding: 15px; border-radius: 11px; }
  .table thead th { padding: 8px; font-size: 11px; }
  .table tbody td { padding: 9px 8px; font-size: 12px; }
  footer { height: 44px; font-size: 11px; }
}

html { overflow-y: scroll; scrollbar-gutter: stable; }
html:has(body.versions-page) { overflow-y:hidden; scrollbar-gutter:auto; }
html:has(body.settings-page) { overflow-y:hidden; scrollbar-gutter:auto; }
html:has(body.trash-page) { overflow-y:hidden; scrollbar-gutter:auto; }

.btn { font-size: 13px !important; font-weight: 700 !important; }
.code-save-button { min-height: 45px; font-size: 14px !important; }

.sidebar nav a.active {
  color: var(--primary);
  font-weight: 600;
  background: linear-gradient(100deg, rgba(86, 101, 238, .13), rgba(118, 84, 223, .07));
  box-shadow: inset 3px 0 0 var(--primary);
}

.sidebar nav a.active i { color: #5e69ef; }

.sidebar nav a { font-weight: 600; }

/* Verification manager */
.panel:has(#demoCodeDisplay) {
  position: relative;
  overflow: hidden;
  padding: 21px 22px;
  border-color: rgba(99, 102, 241, .13);
  box-shadow: 0 16px 42px rgba(67, 74, 130, .08);
}

.panel:has(#demoCodeDisplay)::before {
  content: "";
  position: absolute;
  width: 180px;
  height: 180px;
  right: -80px;
  top: -90px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(102, 92, 238, .12), transparent 68%);
  pointer-events: none;
}

#demoCodeDisplay {
  position: relative;
  color: #5d54df;
  background: linear-gradient(120deg, #f4f3ff, #f7faff 52%, #eff7ff);
  border: 1px solid rgba(99, 102, 241, .13);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .85);
  text-shadow: 0 3px 12px rgba(91, 83, 218, .13);
}

.panel:has(#demoCodeDisplay) .d-flex.justify-content-between {
  padding: 13px 3px;
  margin-top: 0 !important;
  border-bottom: 1px dashed #e8eaf3;
}

.panel:has(#demoCodeDisplay) .d-flex.justify-content-between:first-of-type {
  margin-top: 14px !important;
}

.panel:has(#demoCodeDisplay) label {
  margin-top: 18px !important;
  color: #343d5c;
  font-weight: 600;
}

#demoCodeInput {
  height: 36px;
  padding: 6px 12px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-weight: 700;
  letter-spacing: 1px;
  background: #fbfcff;
  border-radius: 8px 0 0 8px;
}

#demoSaveCode {
  min-width: 66px;
  height: 36px;
  padding: 5px 11px;
  font-size: 13px;
  font-weight: 700;
  color: white;
  border-color: transparent;
  border-radius: 0 8px 8px 0;
  background: linear-gradient(100deg, #7660e9, #4c7bf0);
}

#demoSaveCode:hover { filter: brightness(1.06); }
#demoGenerateCode { height: 46px; padding: 8px 16px; border-radius: 9px; font-size: 15px !important; font-weight: 700; }
#demoGenerateCode i { font-size: 16px; }
#demoCodeHistory code { color: #6657dc; font-weight: 700; background: #f1efff; padding: 4px 8px; border-radius: 7px; }
#demoCodeHistory tr:first-child { background: linear-gradient(90deg, rgba(93, 84, 223, .035), transparent); }
.code-manager-row { align-items: stretch; }
.code-manager-row > div { display: flex; }
.code-manager-row > div > .panel { width:100%; min-height:470px; padding:21px 22px; }
.code-current-panel .panel-title { margin-bottom:16px; }
.code-current-panel .panel-title h3,.code-link-panel .panel-title h3 { font-size:15px; font-weight:750; }
.code-current-panel .code-display { display:flex; flex-direction:column; align-items:center; gap:5px; padding:18px; }
.code-current-panel .code-display small { color:#78819e; font-size:12px; font-weight:500; letter-spacing:0; }
.code-current-panel .code-display strong { color:#5d50df; font-size:30px; line-height:1.1; letter-spacing:5px; }
.code-meta { margin-top:18px; padding-bottom:14px; border-bottom:1px solid var(--line); }
.code-meta > div { display:flex; align-items:center; justify-content:space-between; min-height:40px; }
.code-meta span { display:flex; align-items:center; gap:9px; color:#717b98; font-size:13px; }
.code-meta span i { width:17px; color:#7180a1; font-size:16px; }
.code-meta b { color:#4f5d80; font-size:13px; }
.code-edit-form { margin-top:15px; }
.code-edit-form .form-label { margin-bottom:8px; font-weight:700; }
.code-edit-form .form-text { margin-top:7px; color:#7b849f; font-size:11px; }
.code-current-panel .input-group,.code-link-panel .input-group { flex-wrap:nowrap; gap:10px; }
.code-current-panel .input-group > .form-control,.code-link-panel .input-group > .form-control { min-height:38px; padding:7px 11px; border-radius:9px !important; font-size:13px; }
.code-current-panel .input-group > .btn,.code-link-panel .input-group > .btn { min-width:62px; min-height:38px; margin-left:0 !important; padding:7px 13px; border-radius:9px !important; font-size:13px !important; font-weight:700; }
.code-current-panel .code-save-button { min-height:45px; margin-top:23px; border-radius:9px; font-weight:700; }
.code-link-panel .code-save-button { min-height:45px; margin-top:23px; border-radius:9px; font-weight:700; }
.code-link-panel { align-self:flex-start; }
.code-link-panel .panel-title { align-items:flex-start; padding-bottom:14px; border-bottom:1px solid var(--line); }
.code-link-panel .panel-title p { margin:7px 0 0; color:var(--muted); font-size:13px; }
.code-link-icon { display:grid; place-items:center; width:46px; height:46px; flex:0 0 46px; color:#5f5bea; border-radius:12px; background:linear-gradient(145deg,#f0edff,#f6f5ff); font-size:23px; }
.code-link-panel .form-label { margin-bottom:7px; font-weight:650; }
.code-link-panel .form-control,.code-link-panel .btn { min-height:42px; }
.code-link-panel .form-control::placeholder { color:#b5bbcc; opacity:1; }
.code-link-security { display:flex; align-items:center; gap:8px; margin-top:10px; color:#737e9c; font-size:12px; }
.code-link-security i { color:#65769e; font-size:15px; }
.code-link-help { margin-top:30px; padding:18px 20px; border:1px solid #e7e8f3; border-radius:12px; background:linear-gradient(145deg,#fafaff,#f8f8fd); color:#66718e; }
.code-link-help h4 { display:flex; align-items:center; gap:9px; margin:0 0 13px; color:#4e5b7c; font-size:14px; font-weight:700; }
.code-link-help h4 i { color:#5572ec; font-size:18px; }
.code-link-help ul { margin:0; padding-left:28px; }
.code-link-help li { margin:10px 0; font-size:12px; }
@media (max-width:900px) { .code-manager-row > div > .panel { min-height:0; } }
@media (min-width: 901px) {
  html:has(.code-manager-row) { overflow-y: hidden; scrollbar-gutter: auto; }
  body:has(.code-manager-row),
  body:has(.code-manager-row) .app-shell,
  body:has(.code-manager-row) .main { height: calc(100vh - 16px); min-height: 0; overflow: hidden; }
  body:has(.code-manager-row) .content { min-height: 0; overflow: hidden; }
}

/* Larger data text on code history and software pages */
.sh-message { position:fixed; z-index:2000; top:24px; left:50%; display:flex; align-items:center; min-width:320px; max-width:min(520px,calc(100vw - 32px)); padding:11px 15px; gap:10px; border:1px solid; border-radius:8px; box-shadow:0 8px 24px rgba(40,48,90,.12); transform:translateX(-50%); animation:sh-message-in .22s ease-out; font-size:14px; line-height:1.4; }
.sh-message>i { flex:0 0 auto; font-size:16px; }.sh-message>span { flex:1; }.sh-message>button { display:grid; place-items:center; width:22px; height:22px; padding:0; color:inherit; border:0; background:transparent; opacity:.65; }.sh-message>button:hover { opacity:1; }
.sh-message-success { color:#529b2e; border-color:#e1f3d8; background:#f0f9eb; }.sh-message-danger { color:#f56c6c; border-color:#fde2e2; background:#fef0f0; }.sh-message-warning { color:#e6a23c; border-color:#faecd8; background:#fdf6ec; }.sh-message-info { color:#909399; border-color:#e9e9eb; background:#f4f4f5; }
.sh-message.is-leaving { opacity:0; transform:translate(-50%,-12px); transition:.2s ease; }
@keyframes sh-message-in { from { opacity:0; transform:translate(-50%,-12px); } to { opacity:1; transform:translate(-50%,0); } }
@media(max-width:600px){.sh-message{top:14px;min-width:0;width:calc(100vw - 28px)}}
.sh-confirm-mask { position:fixed; z-index:2100; inset:0; display:grid; place-items:center; padding:20px; background:rgba(22,25,43,.48); backdrop-filter:blur(1px); animation:sh-mask-in .18s ease-out; }
.sh-confirm { width:min(410px,100%); overflow:hidden; border:1px solid rgba(225,226,244,.95); border-radius:14px; background:linear-gradient(145deg,#fff 0%,#fdfcff 100%); box-shadow:0 18px 46px rgba(39,39,91,.25); animation:sh-confirm-in .2s ease-out; }
.sh-confirm-head { display:flex; align-items:center; justify-content:space-between; padding:18px 21px 10px; }.sh-confirm-title { display:flex; align-items:center; gap:11px; }.sh-confirm-title>span { display:grid; place-items:center; width:34px; height:34px; color:#7459eb; border-radius:10px; background:linear-gradient(145deg,#eee7ff,#f7f3ff); box-shadow:0 6px 15px rgba(114,82,229,.16); }.sh-confirm-title>span i { font-size:18px; }.sh-confirm-head h3 { margin:0; color:#171d38; font-size:17px; font-weight:750; }.sh-confirm-head>button { padding:4px; color:#7f87a4; border:0; background:transparent; font-size:16px; }.sh-confirm-head>button:hover { color:#6557df; }
.sh-confirm-body { padding:9px 23px 18px; color:#313952; }.sh-confirm-text { margin:0; white-space:pre-line; font-size:14px; line-height:1.65; }.sh-confirm-text::after { content:"\A是否继续操作？"; }
.sh-confirm-actions { display:flex; justify-content:flex-end; gap:9px; padding:14px 21px; border-top:1px solid #ececf5; background:rgba(250,250,255,.72); }.sh-confirm-actions button { min-width:72px; padding:7px 14px; border:1px solid #dfe1ef; border-radius:8px; background:#fff; color:#606981; font-size:13px; font-weight:650; transition:.18s; }.sh-confirm-actions .sh-confirm-ok { min-width:94px; color:#fff; border-color:transparent; background:linear-gradient(100deg,#7a49ed,#4e73ed); box-shadow:0 7px 16px rgba(92,75,226,.23); }.sh-confirm-actions .sh-confirm-ok:hover { transform:translateY(-1px); box-shadow:0 9px 20px rgba(92,75,226,.32); }.sh-confirm-actions .sh-confirm-cancel:hover { color:#6257df; border-color:#c9c6f5; background:#faf9ff; }
@media(max-width:600px){.sh-confirm-head{padding:21px 21px 13px}.sh-confirm-body{padding:8px 23px 22px}.sh-confirm-actions{padding:17px 22px}.sh-confirm-text{font-size:15px}}
@keyframes sh-mask-in { from { opacity:0; } to { opacity:1; } } @keyframes sh-confirm-in { from { opacity:0; transform:translateY(-12px); } to { opacity:1; transform:none; } }

.panel:has(#demoCodeHistory) .panel-title h3,
.software-list-panel .panel-title h3 { font-size: 17px; font-weight: 700; }

#demoCodeHistory th,
.software-list-panel .table th { font-size: 13px; font-weight: 700; }

#demoCodeHistory td,
.software-list-panel .table td { font-size: 14px; }

#demoCodeHistory code { font-size: 13px; }
#demoCodeHistory .badge { font-size: 14px; font-weight: 700; padding: 5px 9px; border-radius: 7px; }
.panel:has(#demoCodeHistory) .panel-title h3 { font-size: 18px; }
.panel:has(#demoCodeHistory) .table thead th { font-size: 14px; }
#demoCodeHistory td { font-size: 15px; }
#demoCodeHistory code { font-size: 14px; }
.software-list-panel .table td b { font-size: 15px; }
.software-list-panel .table td small { font-size: 12px; margin-top: 3px; }
.software-list-panel .table td > small.d-block.text-secondary,
.dashboard-main-row .table td > small.d-block.text-secondary { display: none !important; }
.software-list-panel .badge { font-size: 12px; padding: 5px 9px; }
.software-list-panel .panel-title .btn { font-size: 14px; padding: 8px 14px; border-radius: 8px; }

.software-actions { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.software-actions .btn { padding: 6px 11px; border: 0; border-radius: 8px; font-size: 13px; font-weight: 600; transition: transform .18s, box-shadow .18s, filter .18s; }
.software-actions .btn:hover { transform: translateY(-1px); filter: brightness(1.03); }
.software-actions .action-edit { color: #fff; background: linear-gradient(100deg, #4485f4, #5b6ff0); box-shadow: 0 5px 12px rgba(68, 113, 235, .2); }
.software-actions .action-stats { color: #674dd7; background: linear-gradient(100deg, #eeeaff, #e7e9ff); box-shadow: inset 0 0 0 1px rgba(104, 78, 215, .1); }

/* Version manager typography */
.versions-page .content > .panel .panel-title h3 { font-size: 16px; font-weight: 700; }
.versions-page .content > .panel .panel-title .btn { padding: 9px 15px; font-size: 15px !important; }
.versions-page .content > .panel .table thead th { font-size: 13px; }
.versions-page .content > .panel .table tbody td { font-size: 14px; }
.versions-page .content > .panel .table tbody td b { font-size: 15px; }
.versions-page .content > .panel .badge { font-size: 13px; }
@media (min-width:901px) {
  body.versions-page { height:100vh; overflow:hidden; }
  .versions-page .app-shell { height:100vh; min-height:0; }
  .versions-page .main { height:calc(100vh - 16px); min-height:0; overflow:hidden; }
  .versions-page .content { min-height:0; overflow:hidden; }
  .versions-page .versions-list-panel { display:flex; flex-direction:column; height:100%; min-height:0; }
  .versions-page .versions-list-panel .table-responsive { min-height:0; overflow-y:auto; }
}
#demoEditAppModal .modal-dialog { max-width: 470px; }
#demoEditAppModal .modal-content { overflow: hidden; border: 1px solid rgba(220, 224, 244, .9); border-radius: 22px; background: rgba(255, 255, 255, .98); box-shadow: 0 24px 70px rgba(61, 69, 133, .18); }
#demoEditAppModal .modal-header { min-height: 62px; padding: 13px 19px; border-bottom: 0; background: radial-gradient(420px 120px at 34% 0, rgba(116, 100, 239, .13), transparent 70%), linear-gradient(135deg, #fbfbff, #f6f6ff); }
#demoEditAppModal .modal-title { display: flex; align-items: center; gap: 12px; color: #1d2850; font-size: 18px; font-weight: 750; letter-spacing: .2px; }
#demoEditAppModal .modal-title-icon { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 8px; color: #fff; font-size: 16px; background: linear-gradient(145deg, #9a75ef, #7253ed 55%, #4d75f5); box-shadow: 0 7px 14px rgba(91, 79, 231, .28); }
#demoEditAppModal .btn-close { width: 16px; height: 16px; margin: 0 0 0 auto; padding: 6px; opacity: .62; }
#demoEditAppModal .modal-body { padding: 16px 22px 14px; }
#demoEditAppModal .form-label { margin-bottom: 6px; color: #687298; font-size: 13px; font-weight: 500; }
#demoEditAppModal .form-control,
#demoEditAppModal .form-select { min-height: 38px; padding: 7px 11px; color: #17254d; border-color: #dce0f6; border-radius: 8px; background-color: #fff; font-size: 14px; box-shadow: 0 5px 16px rgba(66, 74, 128, .035); }
#demoEditAppModal .form-control[readonly] { background: #fff; }
#demoEditAppModal .form-control:focus,
#demoEditAppModal .form-select:focus { border-color: #a7a6ef; box-shadow: 0 0 0 3px rgba(105, 91, 232, .09); }
#demoEditAppModal .mb-3 { margin-bottom: 12px !important; }
#demoEditAppModal .modal-footer { min-height: 58px; gap: 9px; padding: 10px 22px; border-top-color: #e8eaf4; }
#demoEditAppModal .modal-footer .btn { min-width: 68px; min-height: 35px; padding: 6px 13px; border-radius: 8px; font-size: 13px !important; font-weight: 700; }
#demoEditAppModal .modal-footer .btn-light { color: #555d82; border: 1px solid #e0e3f3; background: #fff; }
#demoEditAppModal .modal-footer .btn-gradient { min-width: 96px; background: linear-gradient(105deg, #7a43ed, #4d79f2); box-shadow: 0 8px 17px rgba(83, 79, 231, .26); }
@media (max-width: 680px) {
  #demoEditAppModal .modal-dialog { margin: 12px; }
  #demoEditAppModal .modal-header { min-height: 60px; padding: 12px 17px; }
  #demoEditAppModal .modal-title { gap: 10px; font-size: 18px; }
  #demoEditAppModal .modal-title-icon { width: 32px; height: 32px; font-size: 16px; }
  #demoEditAppModal .modal-body { padding: 16px 18px; }
  #demoEditAppModal .form-label { font-size: 13px; }
  #demoEditAppModal .form-control, #demoEditAppModal .form-select { min-height: 38px; font-size: 14px; }
  #demoEditAppModal .modal-footer { min-height: 56px; padding: 10px 18px; }
}
#demoAddAppModal .modal-dialog { max-width: 470px; }
#demoAddAppModal .modal-header { padding: 16px 19px; }
#demoAddAppModal .modal-title { font-size: 18px; font-weight: 600; }
#demoAddAppModal .modal-body { padding: 18px 19px; }
#demoAddAppModal .form-label { margin-bottom: 5px; font-size: 13px; }
#demoAddAppModal .form-control, #demoAddAppModal .form-select { min-height: 38px; padding: 7px 11px; font-size: 14px; }
#demoAddAppModal .mb-3 { margin-bottom: 12px !important; }
#demoAddAppModal .modal-footer { padding: 13px 19px; }
#demoAddAppModal .modal-footer .btn { padding: 7px 13px; border-radius: 8px; font-weight: 700; }

.app-form-modal { background:rgba(27,32,58,.32); backdrop-filter:blur(3px); }
.app-form-modal .modal-dialog { max-width:470px; margin-top:20px; margin-bottom:20px; }
.app-form-modal .modal-content { overflow:hidden; border:0; border-radius:24px; background:rgba(255,255,255,.98); box-shadow:0 26px 75px rgba(34,40,82,.28); }
.app-form-modal .modal-header { min-height:66px; padding:14px 28px; border-bottom:0; background:radial-gradient(430px 130px at 32% 0,rgba(116,100,239,.12),transparent 72%),linear-gradient(135deg,#fcfcff,#f8f8ff); }
.app-form-modal .modal-title { display:flex; align-items:center; gap:12px; color:#172244; font-size:19px; font-weight:750; }
.app-form-modal .modal-title-icon { display:grid; place-items:center; width:32px; height:32px; border-radius:8px; color:#fff; font-size:15px; background:linear-gradient(145deg,#9874ee,#7152ed 55%,#4e75f4); box-shadow:0 8px 18px rgba(87,76,229,.3); }
.app-form-modal .btn-close { margin:0 0 0 auto; opacity:.55; }
.app-form-modal .modal-body { padding:16px 28px 19px; }
.app-form-modal .form-label { margin-bottom:6px; color:#303b61; font-size:13px; font-weight:600; }
.app-form-modal .form-control,.app-form-modal .form-select { min-height:44px; padding:8px 13px; color:#172244; border-color:#dce0f4; border-radius:9px; background:#fff; font-size:14px; box-shadow:0 5px 16px rgba(66,74,128,.035); }
.app-form-modal .form-control:focus,.app-form-modal .form-select:focus { border-color:#9d9aee; box-shadow:0 0 0 3px rgba(105,91,232,.1); }
.app-form-modal .mb-3 { margin-bottom:14px !important; }
.app-form-modal .modal-footer { gap:10px; min-height:64px; padding:11px 28px; border-top:1px solid #e8eaf3; background:#fdfdff; }
.app-form-modal .modal-footer .btn { min-width:88px; min-height:38px; padding:7px 16px; border-radius:9px; font-size:13px; font-weight:700; }
.app-form-modal .modal-footer .btn-light { color:#535d80; border:1px solid #dfe3f2; background:#fff; }
.app-form-modal .modal-footer .btn-gradient { min-width:106px; background:linear-gradient(105deg,#7b43ed,#4d79f2); box-shadow:0 9px 20px rgba(83,79,231,.27); }
.app-form-modal label:has(+ select[name="status"]),
.app-form-modal select[name="status"] { display:none; }
#demoVersionModal.app-form-modal .modal-dialog { margin-top:12px; margin-bottom:12px; }
#demoVersionModal.app-form-modal .modal-content { max-height:calc(100vh - 24px); }
#demoVersionModal.app-form-modal .modal-header { min-height:58px; padding:11px 26px; flex:0 0 auto; }
#demoVersionModal.app-form-modal .modal-body { overflow-y:auto; padding:12px 26px 14px; }
#demoVersionModal.app-form-modal .form-label { margin-bottom:4px; }
#demoVersionModal.app-form-modal .form-control,
#demoVersionModal.app-form-modal .form-select { min-height:38px; padding:6px 11px; }
#demoVersionModal.app-form-modal textarea.form-control { min-height:62px; height:62px; }
#demoVersionModal.app-form-modal .mb-3 { margin-bottom:9px !important; }
#demoVersionModal.app-form-modal .modal-footer { min-height:56px; padding:8px 26px; flex:0 0 auto; }
@media(max-width:600px){.app-form-modal .modal-dialog{margin:12px}.app-form-modal .modal-header,.app-form-modal .modal-body,.app-form-modal .modal-footer{padding-left:20px;padding-right:20px}}

.statistics-head .panel-title { display: none; }
.statistics-tabs { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 2px; }
.statistics-tabs a { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px; padding: 8px 13px; color: #69738f; font-size: 13px; font-weight: 600; border: 1px solid #e5e8f2; border-radius: 9px; background: #fafbfe; transition: .18s; }
.statistics-tabs a:hover { color: var(--primary); border-color: #cfd3fa; background: #f4f3ff; }
.statistics-tabs a.active { color: white; border-color: transparent; background: linear-gradient(100deg, #7058e7, #4d7bf0); box-shadow: 0 6px 16px rgba(82, 94, 226, .2); }
.recent-usage-panel .panel-title h3 { font-size: 17px; font-weight: 700; }
.recent-usage-panel .table th { font-size: 13px; font-weight: 700; }
.recent-usage-panel .table td { font-size: 14px; }
.recent-usage-panel .table code { font-size: 13px; font-weight: 700; color: #6657dc; }
.statistics-chart { height: 280px; }
.statistics-page .content > .statistics-head { margin-bottom: 12px !important; padding: 13px 15px; }
.statistics-filter-panel { padding:11px 18px 12px; border-color:rgba(225,227,241,.9); border-radius:15px; }
.statistics-filter-panel .form-label { margin-bottom:4px; color:#313b5c; font-size:12px; font-weight:650; }
.statistics-filter-panel .form-control,
.statistics-filter-panel .form-select { min-height:38px; padding-top:6px; padding-right:36px; padding-bottom:6px; border-color:#dfe3f1; background-color:#fff; font-size:13px; }
.statistics-filter-panel .btn-gradient { min-height:38px; border-radius:9px; background:linear-gradient(105deg,#7548e8,#5768ed); box-shadow:0 8px 18px rgba(91,78,229,.25); }
.statistics-page .content > .row { margin-bottom:14px !important; }
.statistics-page .metric-card { min-height:76px; padding:8px 14px; gap:11px; align-items:center; border-color:#e5e7f1; border-radius:14px; box-shadow:0 8px 24px rgba(55,64,118,.06); }
.statistics-page .metric-label { margin-bottom:4px; font-size:13px; }
.statistics-page .metric-value { font-size:25px; }
.statistics-metric-icon { flex:0 0 38px; display:grid; place-items:center; width:38px; height:38px; border-radius:11px; font-size:19px; }
.statistics-metric-icon.purple { color: #7055eb; background: #f0edff; }
.statistics-metric-icon.blue { color: #4782eb; background: #eaf3ff; }
.statistics-metric-icon.teal { color: #35aaa5; background: #e7f8f6; }
.statistics-metric-icon.green { color: #3daf86; background: #e8f8f1; }
.statistics-page .recent-usage-panel { padding:16px 22px 12px; border-radius:15px; }
.statistics-page .recent-usage-panel .panel-title { margin-bottom:8px; }
.statistics-page .recent-usage-panel .panel-title h3 { color:#17213f; font-size:17px; font-weight:750; }
@media (min-width: 901px) {
  html:has(.statistics-page) { overflow-y: hidden; scrollbar-gutter: auto; }
  .statistics-page,
  .statistics-page .app-shell,
  .statistics-page .main { height: calc(100vh - 16px); min-height: 0; overflow: hidden; }
  .statistics-page .content { display:flex; flex-direction:column; min-height:0; padding-top:12px; padding-bottom:12px; overflow:hidden; }
  .statistics-page .statistics-filter-panel,
  .statistics-page .content > .row { flex:0 0 auto; }
  .statistics-page .recent-usage-panel { display:flex; flex:1 1 auto; flex-direction:column; min-height:0; }
  .statistics-page .statistics-chart { flex:1 1 auto; height:auto; min-height:260px; }
}
.dashboard-code-grid { display: grid; grid-template-columns: minmax(300px, 1fr) minmax(280px, .8fr); gap: 22px; align-items: center; }
.dashboard-code-meta { display: grid; gap: 13px; }
.dashboard-code-meta .d-flex { padding-bottom: 10px; border-bottom: 1px dashed #e6e9f2; }
@media (max-width: 900px) { .dashboard-code-grid { grid-template-columns: 1fr; } }
.dashboard-main-row { align-items: stretch; }
.dashboard-side-code { display: flex; flex-direction: column; }
.dashboard-side-code .code-display { margin-bottom: 15px; }
.dashboard-side-code > .d-flex { padding: 11px 2px; border-bottom: 1px dashed #e6e9f2; }
.dashboard-side-code > .btn { margin-top: auto; font-size: 15px; font-weight: 700; }
.dashboard-main-row > .col-xl-8 > .panel { height: 340px !important; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #c9cdef transparent; }
.dashboard-main-row > .col-xl-8 > .panel::-webkit-scrollbar { width: 5px; }
.dashboard-main-row > .col-xl-8 > .panel::-webkit-scrollbar-track { background: transparent; }
.dashboard-main-row > .col-xl-8 > .panel::-webkit-scrollbar-thumb { background: #c9cdef; border-radius: 10px; }
.dashboard-main-row > .col-xl-4 > .panel { min-height: 340px; }
.dashboard-main-row > .col-xl-8 .panel-title h3 { font-size: 17px; font-weight: 700; }
.dashboard-main-row > .col-xl-8 .panel-title a { font-size: 14px; font-weight: 600; }
.dashboard-main-row > .col-xl-8 .table th { font-size: 13px; font-weight: 700; }
.dashboard-main-row > .col-xl-8 .table td { font-size: 14px; }
.dashboard-main-row > .col-xl-8 .table td b { font-size: 15px; }
.dashboard-main-row > .col-xl-8 .table td small { font-size: 12px; margin-top: 3px; }
.dashboard-main-row > .col-xl-8 .table td:first-child b,
.dashboard-main-row > .col-xl-8 .table td:nth-child(2) b { font-size: 14px; font-weight: 400; }
.dashboard-main-row > .col-xl-8 .table td:nth-child(2) small { display: none !important; }

/* 首页概览：独立的高科技浅色仪表盘布局 */
@media (min-width: 901px) {
  body.dashboard-page { background: #f0f3ff; }
  .dashboard-page .app-shell {
    margin: 8px;
    min-height: calc(100vh - 16px);
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.9);
    border-radius: 28px;
    background: #f5f7ff;
    box-shadow: 0 24px 70px rgba(88, 81, 193, .12), inset 0 0 60px rgba(255,255,255,.8);
  }
  .dashboard-page .sidebar {
    top: 8px;
    bottom: 8px;
    left: 8px;
    width: 280px;
    padding: 38px 28px 28px;
    border: 1px solid rgba(255,255,255,.9);
    border-radius: 27px;
    background: rgba(255,255,255,.82);
    box-shadow: 10px 0 36px rgba(88, 85, 180, .10), inset -1px 0 rgba(222,225,246,.8);
    backdrop-filter: blur(18px);
  }
  .dashboard-page .main { margin-left: 280px; min-height: calc(100vh - 16px); }
  .dashboard-page .topbar {
    height: 112px;
    padding: 0 32px;
    border-bottom: 1px solid #e6e8f5;
    background:
      radial-gradient(650px 160px at 62% -35%, rgba(114,100,255,.18), transparent 72%),
      linear-gradient(135deg, rgba(255,255,255,.96), rgba(246,246,255,.88));
  }
  .dashboard-page .topbar::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(142deg, transparent 31%, rgba(255,255,255,.8) 31.2%, transparent 31.5%);
  }
  .dashboard-page .topbar h2 { position: relative; margin-bottom: 6px; font-size: 27px; font-weight: 750; letter-spacing: .5px; }
  .dashboard-page .topbar span { position: relative; font-size: 16px; color: #7682a5; }
  .dashboard-page .admin-chip { position: relative; gap: 13px; }
  .dashboard-page .admin-chip .avatar { width: 48px; height: 48px; font-size: 17px; color: #fff; background: linear-gradient(145deg,#833fe4,#5864ee); }
  .dashboard-page .admin-chip b { font-size: 16px; }
  .dashboard-page .admin-chip small { font-size: 13px; }
  .dashboard-page .content {
    min-height: calc(100vh - 190px);
    padding: 24px 26px 36px;
    background:
      radial-gradient(520px 420px at 86% 23%, rgba(119,99,255,.09), transparent 72%),
      linear-gradient(135deg,#f7f9ff 0%,#f2f5fc 55%,#f7f7ff 100%);
  }
  .dashboard-page .brand { margin: 0 4px 54px; gap: 14px; }
  .dashboard-page .brand-mark { width: 58px; height: 58px; border-radius: 15px; font-size: 31px; box-shadow: 0 12px 24px rgba(105,75,232,.25); }
  .dashboard-page .brand b { font-size: 22px; letter-spacing: -.2px; }
  .dashboard-page .brand small { margin-top: 4px; font-size: 13px; }
  .dashboard-page .sidebar nav { gap: 10px; }
  .dashboard-page .sidebar nav a { min-height: 58px; padding: 0 20px; gap: 18px; border-radius: 13px; font-size: 16px; font-weight: 650; }
  .dashboard-page .sidebar nav a i { width: 25px; font-size: 22px; }
  .dashboard-page .sidebar nav a.active { background: linear-gradient(105deg,#f0edff,#efeffe); box-shadow: none; }
  .dashboard-page .sidebar nav .nav-label { margin: 22px 20px 5px; font-size: 13px; }
  .dashboard-page .footer { height: 62px; padding: 0 30px; background: rgba(255,255,255,.76); }
}

.dashboard-metrics { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 25px; margin-bottom: 28px; }
.dashboard-metric-card {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 168px;
  padding: 26px 24px;
  overflow: hidden;
  border: 1px solid rgba(225,227,243,.9);
  border-radius: 20px;
  background: rgba(255,255,255,.9);
  box-shadow: 0 14px 30px rgba(61,71,133,.08);
}
.dashboard-metric-card::after { content:""; position:absolute; right:-28px; bottom:-34px; width:145px; height:100px; opacity:.55; transform:rotate(-18deg); background:linear-gradient(135deg,transparent 22%,rgba(121,102,255,.08) 23% 36%,transparent 37% 46%,rgba(121,102,255,.09) 47% 57%,transparent 58%); }
.dashboard-metric-icon { position:relative; z-index:1; flex:0 0 66px; display:grid; place-items:center; width:66px; height:66px; margin-right:20px; border-radius:17px; font-size:34px; }
.dashboard-metric-icon.purple { color:#6c50ef; background:linear-gradient(145deg,#eeeaff,#f5f2ff); }
.dashboard-metric-icon.violet { color:#7351e8; background:linear-gradient(145deg,#f0ecff,#f6f3ff); }
.dashboard-metric-icon.blue { color:#4286ed; background:linear-gradient(145deg,#e7f3ff,#eef6ff); }
.dashboard-metric-icon.green { color:#16b58b; background:linear-gradient(145deg,#e4f8f2,#eefaf7); }
.dashboard-metric-copy { position:relative; z-index:1; min-width:0; }
.dashboard-metric-label { margin-bottom:4px; color:#6e7898; font-size:17px; }
.dashboard-metric-value { color:#101936; font-size:32px; line-height:1.13; font-weight:750; letter-spacing:.2px; }
.dashboard-metric-change { margin-top:14px; color:#23925b; font-size:15px; }

.dashboard-grid { display:grid; grid-template-columns:minmax(0,2.18fr) minmax(350px,1fr); gap:25px; }
.dashboard-card { height:486px; padding:27px 28px; border:1px solid rgba(222,225,241,.95); border-radius:20px; background:rgba(255,255,255,.91); box-shadow:0 14px 32px rgba(61,71,133,.08); }
.dashboard-card-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:22px; }
.dashboard-card-head h3 { margin:0; color:#101936; font-size:23px; line-height:1.25; font-weight:750; }
.dashboard-card-head a { color:#7554e8; font-size:15px; font-weight:700; text-decoration:none; }
.dashboard-card-head a i { display:inline-grid; place-items:center; width:19px; height:19px; margin-left:2px; border-radius:50%; background:#f0ecff; font-size:11px; }
.cron-status-card { display:flex; align-items:center; gap:10px; margin-bottom:12px; padding:8px 15px; min-height:44px; border:1px solid; border-radius:12px; }
.cron-status-card.is-success { color:#3f8f55; border-color:#d7eddd; background:#f1faf3; }
.cron-status-card.is-alert { color:#b86d16; border-color:#f3dfbd; background:#fff8eb; }
.cron-status-card.is-pending { color:#667085; border-color:#e3e6ee; background:#f7f8fb; }
.cron-status-card .cron-status-icon { display:grid; place-items:center; flex:0 0 auto; font-size:18px; }
.cron-status-card > div { display:flex; align-items:center; gap:14px; min-width:0; }
.cron-status-card b { display:block; font-size:14px; white-space:nowrap; }
.cron-status-card p { margin:0; font-size:13px; line-height:1.3; }
@media (max-width: 760px) { .cron-status-card > div{display:block}.cron-status-card p{margin-top:2px} }
.dashboard-ranking-scroll { max-height:380px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:#d1d3ef transparent; }
.dashboard-ranking-table { width:100%; border-collapse:collapse; color:#101936; font-size:16px; }
.dashboard-ranking-table th { height:48px; padding:0 13px; color:#77819f; font-size:15px; font-weight:650; text-align:left; border-bottom:1px solid #e5e7f1; }
.dashboard-ranking-table td { height:77px; padding:0 13px; font-size:16px; font-weight:400; border-bottom:1px solid #e8eaf2; }
.dashboard-ranking-table th:first-child,.dashboard-ranking-table td:first-child { width:14%; }
.dashboard-ranking-table th:nth-child(2),.dashboard-ranking-table td:nth-child(2) { width:43%; }
.dashboard-code-card { display:grid; grid-template-rows:auto auto auto auto auto; align-content:space-between; }
.dashboard-status { display:inline-flex; align-items:center; gap:8px; padding:8px 14px; color:#299966; border-radius:22px; background:#e8f8f1; font-size:14px; font-weight:650; }
.dashboard-status i { width:8px; height:8px; border-radius:50%; background:#22aa76; }
.dashboard-code { display:grid; place-items:center; min-height:96px; margin:0; border:1px solid #dddafa; border-radius:14px; color:#624fe0; background:linear-gradient(180deg,#f8f8ff,#f3f2ff); font-size:31px; font-weight:750; letter-spacing:4px; box-shadow:inset 0 -18px 35px rgba(114,93,238,.035); }
.dashboard-code-row { display:flex; align-items:center; justify-content:space-between; min-height:62px; color:#6c7591; font-size:15px; border-bottom:1px solid #e7e8f0; }
.dashboard-code-row strong { color:#68718a; font-size:16px; font-weight:650; }
.dashboard-code-button { display:flex; align-items:center; justify-content:center; gap:10px; min-height:56px; margin:0; color:#fff; border-radius:9px; background:linear-gradient(105deg,#8b42e8,#4e64f0); box-shadow:0 10px 22px rgba(93,75,228,.25),inset 0 -4px rgba(83,48,211,.18); font-size:15px; font-weight:700; text-decoration:none; transition:transform .18s,filter .18s; }
.dashboard-code-button:hover { color:#fff; transform:translateY(-1px); filter:brightness(1.03); }
.dashboard-code-button i { font-size:18px; }

@media (max-width: 1250px) { .dashboard-metrics{gap:14px}.dashboard-metric-card{padding:20px 16px}.dashboard-metric-icon{flex-basis:54px;width:54px;height:54px;margin-right:13px;font-size:28px}.dashboard-metric-value{font-size:27px}.dashboard-grid{grid-template-columns:minmax(0,1.8fr) minmax(320px,1fr)} }
@media (max-width: 900px) { .dashboard-metrics{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.dashboard-card{height:auto;min-height:390px}.dashboard-code-card{min-height:450px} }
@media (max-width: 560px) { .dashboard-metrics{grid-template-columns:1fr}.dashboard-ranking-card{padding:20px 14px;overflow-x:auto}.dashboard-ranking-table{min-width:650px}.dashboard-code-card{padding:22px 18px} }

/* 首页紧凑比例：在桌面可视区内完整展示，不产生页面滚动条 */
@media (min-width: 901px) {
  body.dashboard-page { height:100vh; overflow:hidden; }
  .dashboard-page .app-shell { height:calc(100vh - 16px); min-height:0; }
  .dashboard-page .sidebar { width:260px; padding:28px 24px 22px; overflow:hidden; }
  .dashboard-page .main { height:calc(100vh - 16px); min-height:0; margin-left:260px; overflow:hidden; }
  .dashboard-page .topbar { flex:0 0 88px; height:88px; padding:0 28px; }
  .dashboard-page .topbar h2 { margin-bottom:3px; font-size:22px; }
  .dashboard-page .topbar span { font-size:14px; }
  .dashboard-page .admin-chip .avatar { width:40px; height:40px; font-size:15px; }
  .dashboard-page .admin-chip b { font-size:14px; }
  .dashboard-page .admin-chip small { font-size:11px; }
  .dashboard-page .content { flex:1 1 auto; min-height:0; padding:18px 22px; overflow:hidden; }
  .dashboard-page .footer,
  .dashboard-page footer { flex:0 0 48px; height:48px; padding:0 26px; }
  .dashboard-page .brand { margin:0 4px 37px; gap:12px; }
  .dashboard-page .brand-mark { width:48px; height:48px; border-radius:13px; font-size:26px; }
  .dashboard-page .brand b { font-size:19px; }
  .dashboard-page .brand small { margin-top:2px; font-size:11px; }
  .dashboard-page .sidebar nav { gap:6px; }
  .dashboard-page .sidebar nav a { min-height:48px; padding:0 17px; gap:14px; border-radius:12px; font-size:15px; font-weight:650; }
  .dashboard-page .sidebar nav a i { width:21px; font-size:18px; }
  .dashboard-page .sidebar nav .nav-label { margin:15px 17px 3px; font-size:11px; }
}
.dashboard-metrics { gap:18px; margin-bottom:20px; }
.dashboard-metric-card { min-height:110px; padding:14px 16px; border-radius:16px; }
.dashboard-metric-icon { flex-basis:46px; width:46px; height:46px; margin-right:13px; border-radius:12px; font-size:24px; }
.dashboard-metric-label { margin-bottom:4px; font-size:13px; }
.dashboard-metric-value { font-size:21px; line-height:1.12; }
.dashboard-metric-change { margin-top:9px; font-size:12px; }
.dashboard-grid { gap:20px; }
.dashboard-card { height:550px; padding:22px 23px; border-radius:18px; }
.dashboard-card-head { margin-bottom:15px; }
.dashboard-card-head h3 { font-size:19px; }
.dashboard-card-head a { font-size:13px; }
.dashboard-ranking-scroll { max-height:470px; }
.dashboard-ranking-scroll::-webkit-scrollbar { width:5px; }
.dashboard-ranking-scroll::-webkit-scrollbar-track { background:transparent; }
.dashboard-ranking-scroll::-webkit-scrollbar-thumb { background:#c8cbed; border-radius:10px; }
.dashboard-ranking-scroll::-webkit-scrollbar-thumb:hover { background:#aaaee0; }
.dashboard-ranking-table { font-size:14px; }
.dashboard-ranking-table th { height:40px; padding:0 11px; font-size:13px; }
.dashboard-ranking-table td { height:62px; padding:0 11px; font-size:14px; }
.dashboard-status { padding:7px 12px; font-size:12px; }
.dashboard-code { min-height:78px; margin-bottom:17px; font-size:27px; }
.dashboard-code-row { min-height:51px; font-size:13px; }
.dashboard-code-row strong { font-size:14px; }
.dashboard-code-button { min-height:48px; font-size:13px; }
.dashboard-code-button i { font-size:16px; }

@media (min-width: 901px) and (max-height: 760px) {
  .dashboard-page .topbar { flex-basis:76px; height:76px; }
  .dashboard-page .content { padding-top:14px; padding-bottom:14px; }
  .dashboard-page footer { flex-basis:42px; height:42px; }
  .dashboard-metric-card { min-height:108px; padding-top:13px; padding-bottom:13px; }
  .dashboard-card { height:340px; padding-top:18px; padding-bottom:18px; }
  .dashboard-card-head { margin-bottom:10px; }
  .dashboard-ranking-table th { height:34px; }
  .dashboard-ranking-table td { height:47px; }
  .dashboard-ranking-scroll { max-height:260px; }
  .dashboard-code { min-height:60px; margin-bottom:10px; font-size:24px; }
  .dashboard-code-row { min-height:42px; }
  .dashboard-code-button { min-height:42px; }
}

/* 所有后台页面统一首页侧边栏与顶部栏位置 */
@media (min-width: 901px) {
  body:not(.dashboard-page) { background:#f0f3ff; }
  body:not(.dashboard-page) .app-shell {
    margin:8px;
    min-height:calc(100vh - 16px);
    overflow:hidden;
    border:1px solid rgba(255,255,255,.9);
    border-radius:28px;
    background:#f5f7ff;
    box-shadow:0 24px 70px rgba(88,81,193,.12),inset 0 0 60px rgba(255,255,255,.8);
  }
  body:not(.dashboard-page) .sidebar {
    top:8px;
    bottom:8px;
    left:8px;
    width:260px;
    padding:28px 24px 22px;
    border:1px solid rgba(255,255,255,.9);
    border-radius:27px;
    background:rgba(255,255,255,.82);
    box-shadow:10px 0 36px rgba(88,85,180,.10),inset -1px 0 rgba(222,225,246,.8);
    backdrop-filter:blur(18px);
  }
  body:not(.dashboard-page) .main { margin-left:260px; width:calc(100% - 260px); min-height:calc(100vh - 16px); }
  body:not(.dashboard-page) .topbar {
    height:88px;
    padding:0 28px;
    background:radial-gradient(650px 160px at 62% -35%,rgba(114,100,255,.18),transparent 72%),linear-gradient(135deg,rgba(255,255,255,.96),rgba(246,246,255,.88));
  }
  body:not(.dashboard-page) .topbar h2 { margin-bottom:3px; font-size:22px; }
  body:not(.dashboard-page) .topbar span { font-size:14px; }
  body:not(.dashboard-page) .brand { margin:0 4px 37px; gap:12px; }
  body:not(.dashboard-page) .brand-mark { width:48px; height:48px; border-radius:13px; font-size:26px; }
  body:not(.dashboard-page) .brand b { font-size:19px; }
  body:not(.dashboard-page) .brand small { margin-top:2px; font-size:11px; }
  body:not(.dashboard-page) .sidebar nav { gap:6px; }
  body:not(.dashboard-page) .sidebar nav a { min-height:48px; padding:0 17px; gap:14px; border-radius:12px; font-size:15px; font-weight:650; }
  body:not(.dashboard-page) .sidebar nav a i { width:21px; font-size:18px; }
body:not(.dashboard-page) .sidebar nav .nav-label { margin:15px 17px 3px; font-size:11px; }

  body:not(.dashboard-page) .admin-chip .avatar { width:40px; height:40px; font-size:15px; }
  body:not(.dashboard-page) .admin-chip b { font-size:14px; }
  body:not(.dashboard-page) .admin-chip small { font-size:11px; }
  body:not(.dashboard-page) .content { padding:18px 22px; }
body:not(.dashboard-page) footer { height:48px; padding:0 26px; }
}

.settings-layout { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:18px; max-width:none; }
.trash-panel .panel-title p { margin:5px 0 0; color:var(--muted); font-size:12px; }
.trash-panel .panel-title h3 { font-size:16px; font-weight:700; }
.trash-panel .panel-title p { font-size:14px; }
.trash-panel .table thead th { font-size:13px; }
.trash-panel .table { width:100%; table-layout:fixed; }
.trash-panel .table th,
.trash-panel .table td { width:20%; }
.trash-panel .table thead th { text-align:left; }
.trash-panel .table thead th:last-child { text-align:center; }
.trash-panel .table tbody td:last-child { text-align:center; }
.trash-panel .table tbody td { font-size:14px; }
.trash-panel .table tbody td b { font-size:15px; }
.trash-panel .table tbody td code { font-size:13px; }
.trash-panel .trash-actions .btn { padding:5px 9px; border-radius:7px; font-size:13px !important; }
.trash-actions .btn-outline-primary { color:#fff; border-color:transparent; background:linear-gradient(105deg,#6658ea,#477df3); box-shadow:0 6px 14px rgba(77,102,232,.22); }
.trash-actions .btn-outline-primary:hover { color:#fff; border-color:transparent; filter:brightness(1.06); transform:translateY(-1px); }
.trash-actions .btn-outline-danger { color:#fff; border-color:transparent; background:linear-gradient(105deg,#eb6670,#d94e5b); box-shadow:0 6px 14px rgba(215,75,88,.2); }
.trash-actions .btn-outline-danger:hover { color:#fff; border-color:transparent; filter:brightness(1.05); transform:translateY(-1px); }
.trash-actions { display:flex; align-items:center; justify-content:center; gap:8px; }
.trash-actions form { margin:0; }
.versions-list-panel .table { width:100%; table-layout:fixed; }
.versions-list-panel .table th,.versions-list-panel .table td { width:16.6667%; overflow-wrap:anywhere; }
.versions-list-panel .table th:last-child,.versions-list-panel .table td:last-child { text-align:center; }
.versions-page .versions-list-panel .panel-title .version-add-button { min-width:0; min-height:0; padding:7px 12px !important; border-radius:7px; font-size:12px !important; line-height:1.25; font-weight:700; white-space:nowrap; }
.version-actions { display:flex; align-items:center; justify-content:center; gap:8px; }
.version-actions form { margin:0; }
.version-actions .btn { display:inline-flex; align-items:center; gap:5px; padding:6px 10px; border-color:transparent; border-radius:8px; color:#fff; font-size:13px !important; font-weight:600; white-space:nowrap; }
.version-actions .btn-outline-primary { background:linear-gradient(105deg,#6658ea,#477df3); box-shadow:0 6px 14px rgba(77,102,232,.22); }
.version-actions .btn-outline-danger { background:linear-gradient(105deg,#eb6670,#d94e5b); box-shadow:0 6px 14px rgba(215,75,88,.2); }
.version-actions .btn:hover { color:#fff; border-color:transparent; filter:brightness(1.06); transform:translateY(-1px); }
@media (min-width:901px) {
  body.trash-page { height:100vh; overflow:hidden; }
  .trash-page .app-shell { height:100vh; min-height:0; }
  .trash-page .main { height:calc(100vh - 16px); min-height:0; overflow:hidden; }
  .trash-page .content { min-height:0; overflow:hidden; }
  .trash-page .trash-panel { display:flex; flex-direction:column; max-height:100%; min-height:0; }
  .trash-page .trash-panel .table-responsive { min-height:0; overflow-y:auto; }
}
.settings-panel { padding:22px 26px; }
.settings-panel .panel-title { align-items:flex-start; border-bottom:1px solid var(--line); padding-bottom:14px; }
.settings-panel .panel-title h3 { font-size:15px; font-weight:700; }
.settings-panel .panel-title p { color:var(--muted); font-size:13px; margin:7px 0 0; }
.settings-icon { display:grid; place-items:center; width:46px; height:46px; border-radius:13px; color:var(--primary); font-size:21px; background:#eef0ff; }
.settings-panel .btn { padding:10px 18px; }
.settings-panel .form-control { min-height:42px; padding:8px 12px; }
.settings-panel .mb-3 { margin-bottom:12px !important; }
.settings-panel .mb-4 { margin-bottom:14px !important; }
.password-field { position:relative; }
.password-field .form-control { padding-right:48px; }
.pushplus-panel { align-self:start; }
.pushplus-switch-row { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:13px 14px; border:1px solid #e8eaf4; border-radius:11px; background:#fafaff; cursor:pointer; }
.pushplus-switch-row b,.pushplus-switch-row small { display:block; }
.pushplus-switch-row b { color:#27304d; font-size:14px; }
.pushplus-switch-row small { margin-top:4px; color:var(--muted); font-size:12px; }
.pushplus-actions { display:flex; gap:10px; flex-wrap:wrap; }
@media(max-width:1050px){.settings-layout{grid-template-columns:1fr}.pushplus-panel{order:-1}}
.password-toggle { position:absolute; top:50%; right:12px; display:grid; place-items:center; width:34px; height:34px; padding:0; color:#7c86a5; border:0; border-radius:8px; background:transparent; font-size:18px; transform:translateY(-50%); }
.password-toggle:hover,.password-toggle:focus-visible { color:var(--primary); background:#eef0ff; outline:none; }
@media (min-width:901px) {
  body.settings-page { height:100vh; overflow:hidden; }
  .settings-page .app-shell { height:100vh; min-height:0; }
  .settings-page .main { height:calc(100vh - 16px); min-height:0; overflow:hidden; }
  .settings-page .content { min-height:0; overflow:hidden; }
}

/* 软件管理：卡片列表 + 详情双栏 */
@media (min-width:901px) {
  body.software-page { height:100vh; overflow:hidden; }
  .software-page .app-shell,.software-page .main { height:calc(100vh - 16px); min-height:0; }
  .software-page .main { overflow:hidden; }
  .software-page .content { min-height:0; overflow:hidden; padding:14px 18px; }
  .software-page footer { flex:0 0 42px; height:42px; }
}

/* 全后台隐藏底部状态栏，把空间留给页面内容 */

/* 软件列表默认完整展示两行，超过两行才在列表内部滚动 */
.software-page .content { padding-bottom:18px; }
.software-card-list { min-height:0; }
.software-card { min-height:0; }
@media (min-width:901px) {
  .software-page .software-card-list { grid-auto-rows:225px; }
  .software-page .software-catalog-panel { height:100%; }
}
.software-page .software-card { height:225px; padding:16px 18px; }
.software-page .software-card-stats { margin-top:20px; }
.software-page .software-card-foot { margin-top:18px; }
.software-page .software-card-foot button { margin-top:13px; }

@media (min-width:901px) {
  .software-page .software-card-list { gap:16px; }
  .software-page .software-card {
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    height:100%;
    min-height:0;
    padding:22px 22px;
  }
  .software-page .software-card-stats { margin-top:0; }
  .software-page .software-card-foot { margin-top:0; }
  .software-page .software-card-list.two-row-fit {
    grid-template-rows:repeat(2,205px);
    grid-auto-rows:205px;
    overflow-y:hidden;
  }
  .software-page .software-card-list.two-row-fit .software-card { height:205px; min-height:205px; }
  .software-page .software-card-list.list-overflow {
    grid-template-rows:none;
    grid-auto-rows:260px;
    overflow-y:auto;
  }
}
.software-source-panel { display:none !important; }
.software-add-fixed { margin-left:auto; padding:8px 13px; border-radius:8px; font-size:13px; font-weight:700; white-space:nowrap; }
.software-workspace { display:block; height:100%; min-height:0; }
.software-catalog-panel,.software-detail-panel { min-height:0; border:1px solid #e5e7f2; border-radius:17px; background:rgba(255,255,255,.93); box-shadow:0 10px 30px rgba(52,60,110,.06); }
.software-catalog-panel { display:flex; flex-direction:column; height:100%; padding:18px; overflow:hidden; }
.software-catalog-head { flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; padding:0 2px 13px; }
.software-catalog-head h3 { margin:0; font-size:18px; font-weight:750; }
.software-card-list { flex:1 1 auto; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-content:start; min-height:0; gap:16px; padding:2px 5px 2px 2px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:#c9cdef transparent; }
.software-card-list::-webkit-scrollbar { width:5px; }.software-card-list::-webkit-scrollbar-thumb { background:#c9cdef; border-radius:8px; }
.software-card { min-height:240px; padding:19px; cursor:pointer; border:1px solid #e1e4ef; border-radius:13px; background:linear-gradient(150deg,#fff,#f9f9ff); box-shadow:0 6px 18px rgba(58,68,126,.08),inset 0 0 0 1px rgba(103,92,224,.02); transition:.18s; }
.software-card:hover,.software-card.active { border-color:#aaa8ef; box-shadow:0 14px 32px rgba(87,79,210,.2),0 0 0 2px rgba(103,92,224,.055); }
.software-card-top { display:flex; align-items:center; gap:12px; position:relative; }
.software-app-icon { flex:0 0 48px; display:grid; place-items:center; width:48px; height:48px; color:#fff; border-radius:12px; font-size:24px; box-shadow:0 7px 16px rgba(83,71,210,.2); }
.software-app-icon.violet { background:linear-gradient(145deg,#8c6ff0,#5b45dd); }.software-app-icon.blue { background:linear-gradient(145deg,#69a1fa,#5364df); }.software-app-icon.green { background:linear-gradient(145deg,#62d5a8,#2ca66f); }
.software-app-icon.orange { background:linear-gradient(145deg,#f3aa62,#e4773d); }.software-app-icon.rose { background:linear-gradient(145deg,#ef829b,#d95577); }.software-app-icon.cyan { background:linear-gradient(145deg,#58cbd5,#3297bd); }
.app-icon-picker { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:7px; margin-top:2px; }
.app-icon-picker label { display:flex; flex-direction:column; align-items:center; gap:4px; min-width:0; padding:7px 3px 5px; cursor:pointer; border:1px solid #e4e6f1; border-radius:9px; background:#fafbff; transition:.16s; }
.app-icon-picker input { position:absolute; opacity:0; pointer-events:none; }
.app-icon-picker .software-app-icon { flex:0 0 32px; width:32px; height:32px; border-radius:8px; font-size:15px; box-shadow:0 5px 11px rgba(83,71,210,.16); }
.app-icon-picker small { max-width:100%; overflow:hidden; color:#737d99; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.app-icon-picker label:has(input:checked) { border-color:#8e88ec; background:#f1f0ff; box-shadow:0 0 0 2px rgba(102,88,232,.09); }
.app-icon-picker label:hover { border-color:#bbb8ef; transform:translateY(-1px); }
.software-card h4 { max-width:230px; margin:0 0 4px; overflow:hidden; color:#111a35; font-size:15px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }.software-card p { margin:0; color:#7b84a2; font-size:12px; }
.software-state { display:inline-flex; align-items:center; flex:0 0 auto; padding:4px 9px; border-radius:7px; font-size:11px; font-weight:700; white-space:nowrap; }.software-card-top>.software-state { margin-left:auto; }.software-state.on { color:#249565; background:#e1f7ed; }.software-state.off { color:#7d8498; background:#eef0f5; }
.software-card-stats { display:grid; grid-template-columns:repeat(3,1fr); margin-top:27px; }
.software-card-stats>div { padding:0 9px; border-right:1px solid #eceef5; }.software-card-stats>div:first-child { padding-left:0; }.software-card-stats>div:last-child { border:0; }
.software-card-stats span,.software-card-stats b { display:block; }.software-card-stats span { color:#818aa6; font-size:11px; }.software-card-stats b { margin-top:5px; font-size:16px; }
.software-card-foot { margin-top:25px; color:#737d9b; font-size:11px; }.software-card-foot button { display:block; margin-top:18px; padding:0; color:#6755e6; border:0; background:none; font-size:12px; font-weight:650; }
.software-detail-panel { height:100%; padding:20px 28px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:#c9cdef transparent; }.software-detail-panel::-webkit-scrollbar { width:5px; }.software-detail-panel::-webkit-scrollbar-thumb { background:#c9cdef; border-radius:8px; }
.software-detail-full { max-width:none; }
.software-detail-nav { display:flex; justify-content:flex-end; margin-bottom:8px; }.software-detail-nav a { color:#6258dc; font-size:13px; font-weight:650; }
.software-detail-full .software-detail-hero { max-width:1000px; padding-top:4px; }
.software-detail-full .software-info-card { margin-top:5px; }
.software-detail-full .software-stat-grid { gap:18px; }
.software-detail-mode .software-detail-panel { overflow-y:hidden; padding:14px 24px; }
.software-detail-mode .software-detail-nav { margin-bottom:2px; }
.software-detail-mode .software-detail-hero { padding:2px 4px 16px; }
.software-detail-mode .software-detail-tabs { margin-bottom:10px; }
.software-detail-mode .software-detail-tabs button { padding-top:9px; padding-bottom:9px; }
.software-detail-mode .software-info-card { padding:14px 15px; }
.software-detail-mode .software-info-head { margin-bottom:2px; }
.software-detail-mode .software-info-row { min-height:42px; }
.software-detail-mode .software-stat-grid { margin-top:10px; }
.software-detail-mode .software-stat-grid > div { padding:10px 13px; }
.software-detail-mode .software-info-row > .software-state { justify-self:start; width:auto; min-width:42px; }
.software-code-settings[hidden],.software-basic-content[hidden] { display:none !important; }
.software-stats-content[hidden] { display:none !important; }
.software-trend-card { padding:16px 18px 14px; border:1px solid #e7e9f3; border-radius:13px; background:linear-gradient(145deg,#fff,#fafaff); }
.software-trend-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.software-trend-head h3 { margin:0; font-size:15px; font-weight:750; }
.software-trend-head span { color:#7b849e; font-size:12px; }
.software-trend-chart { height:295px; padding-bottom:6px; }
.software-setting-card { max-width:760px; margin-top:15px; padding:24px; border:1px solid #e7e9f3; border-radius:14px; background:linear-gradient(145deg,#fff,#fafaff); }
.software-setting-head { display:flex; align-items:center; justify-content:space-between; gap:30px; padding-bottom:20px; border-bottom:1px solid #eceef5; }
.software-setting-head h3 { margin:0 0 7px; font-size:17px; font-weight:750; }.software-setting-head p { margin:0; color:#7b849e; font-size:13px; }
.software-switch { position:relative; flex:0 0 auto; width:48px; height:26px; cursor:pointer; }.software-switch input { position:absolute; opacity:0; }.software-switch span { position:absolute; inset:0; border-radius:20px; background:#cbd0df; transition:.2s; }.software-switch span:after { content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 2px 6px rgba(35,44,80,.2); transition:.2s; }.software-switch input:checked+span { background:linear-gradient(100deg,#7655e8,#4f72ee); }.software-switch input:checked+span:after { transform:translateX(22px); }
.software-setting-note { display:flex; gap:12px; margin:18px 0; padding:14px 16px; color:#626d89; border-radius:10px; background:#f4f5ff; }.software-setting-note i { color:#675ae5; font-size:18px; }.software-setting-note b { font-size:13px; }.software-setting-note p { margin:4px 0 0; font-size:12px; line-height:1.6; }
.software-setting-save { min-width:110px; padding:8px 16px; border-radius:8px; font-size:13px; font-weight:700; }
.software-detail-hero { display:flex; align-items:center; gap:18px; padding:2px 4px 17px; }.software-detail-title { display:flex; align-items:center; gap:16px; }.software-detail-title h2 { margin:0; font-size:20px; line-height:1.35; font-weight:750; }.software-detail-hero p { margin:5px 0; color:#7882a0; font-size:12px; }.software-detail-meta { display:flex; gap:28px; margin-top:8px; color:#75809d; font-size:11px; line-height:1.4; }
.software-detail-tabs { display:flex; gap:28px; margin:0 -20px 15px; padding:0 22px; border-bottom:1px solid #e8eaf2; }.software-detail-tabs button { padding:12px 3px; color:#69728d; border:0; border-bottom:2px solid transparent; background:none; font-size:14px; font-weight:650; }.software-detail-tabs button.active { color:#5d5bea; border-color:#675cf0; }
.software-info-card { padding:14px 17px; border:1px solid #eceef5; border-radius:13px; }.software-info-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }.software-info-head h3 { margin:0; font-size:15px; font-weight:750; }.software-info-head button { padding:7px 11px; color:#5d5bea; border:1px solid #9b97ed; border-radius:7px; background:#f7f6ff; font-size:13px; font-weight:700; }.software-info-head button i { font-size:14px; }
.software-info-row { display:grid; grid-template-columns:130px 1fr; align-items:center; min-height:38px; border-bottom:1px solid #eef0f5; font-size:12px; }.software-info-row:last-child { border:0; }.software-info-row span { color:#8089a5; }.software-info-row b { font-weight:550; }
.software-key-value { display:flex; align-items:center; gap:10px; min-width:0; }
.software-key-value code { color:#5f56d9; font-size:12px; word-break:break-all; }
.software-key-value button { flex:0 0 auto; padding:3px 7px; color:#6257dc; border:1px solid #dcd9fa; border-radius:6px; background:#f7f6ff; font-size:11px; line-height:1.25; }
.software-detail-mode .software-info-head h3 { font-size:17px; }
.software-detail-mode .software-info-head button { font-size:14px; }
.software-detail-mode .software-info-row { font-size:14px; }
.software-detail-mode .software-info-row b { font-size:14px; font-weight:650; }
.software-detail-mode .software-key-value code { font-size:13px; }
.software-detail-mode .software-key-value button { font-size:11px; }
.software-detail-mode .software-stat-grid span { font-size:13px; }
.software-detail-mode .software-stat-grid small { font-size:12px; }
.software-card-actions { position:absolute; z-index:2; top:14px; right:14px; }
.software-card-more { display:grid; width:30px; height:30px; padding:0; place-items:center; color:#8690ae; border:1px solid #d9deec; border-radius:50%; background:#fff; font-size:18px; line-height:1; }
.software-card-more:hover,.software-card.actions-open .software-card-more { color:#6656df; border-color:#aaa8ef; background:#f8f7ff; }
.software-card-menu { display:none; position:absolute; top:38px; right:0; width:132px; margin:0; padding:7px; border:1px solid #e5e7f1; border-radius:10px; background:#fff; box-shadow:0 10px 28px rgba(52,60,110,.16); }
.software-card.actions-open .software-card-menu { display:block; }
.software-card-menu button { display:flex; width:100%; margin:0 !important; padding:9px 10px !important; align-items:center; gap:8px; color:#d95460; border:0; border-radius:7px; background:transparent; font-size:12px; font-weight:650; white-space:nowrap; }
.software-card-menu button:hover { background:#fff0f1; }
.software-page .software-card { position:relative; padding:20px 20px 18px; }
.software-page .software-card-top { padding-right:42px; }
.software-page .software-card-stats { margin-top:25px; }
.software-page .software-card-foot { margin-top:22px; line-height:1.5; }
.software-card[draggable="true"] { cursor:pointer; }
.software-card.is-dragging { opacity:.45; cursor:grabbing; transform:scale(.98); }
.software-card.is-drag-over { border-color:#7565ee; box-shadow:0 0 0 3px rgba(102,88,232,.12),0 10px 24px rgba(58,68,126,.12); }
.software-stat-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:14px; }.software-stat-grid>div { padding:13px; border:1px solid #e6e8f3; border-radius:11px; background:linear-gradient(160deg,#fff,#fafaff); }.software-stat-grid span,.software-stat-grid strong,.software-stat-grid small { display:block; }.software-stat-grid span { color:#79839f; font-size:11px; }.software-stat-grid strong { margin:4px 0; font-size:20px; }.software-stat-grid small { color:#39976d; font-size:10px; }
@media(max-width:1200px){.software-card-list{grid-template-columns:repeat(2,minmax(0,1fr))}.software-card{min-height:220px}}
@media(max-width:900px){.software-page{overflow:auto}.software-workspace{grid-template-columns:1fr;height:auto}.software-card-list{grid-template-columns:1fr;max-height:600px}.software-detail-panel{overflow:visible}.software-add-fixed{margin-right:0}}

/* 全后台统一紧凑顶部栏与首页标题样式 */
@media (min-width:901px) {
  .dashboard-page .topbar,
  body:not(.dashboard-page) .topbar {
    flex:0 0 72px;
    height:72px;
    min-height:72px;
    padding:0 28px;
  }
  .dashboard-page .topbar h2,
  body:not(.dashboard-page) .topbar h2 {
    margin:0 0 2px;
    color:#111a35;
    font-size:22px;
    line-height:1.18;
    font-weight:750;
    letter-spacing:.2px;
  }
  .dashboard-page .topbar > div > span,
  body:not(.dashboard-page) .topbar > div > span {
    color:#7883a4;
    font-size:13px;
    line-height:1.2;
  }
  .software-page .content { padding-top:12px; }
}
