/* ==========================================================================
   main.css —— 创想镜像 自研 UI（Bootstrap 5.3 精简 + 深色模式）
   ========================================================================== */

/* ---------- Reset ---------- */
*,::before,::after{box-sizing:border-box}
:root{
  --bs-blue:#0d6efd;--bs-primary:#0d6efd;--bs-secondary:#6c757d;
  --bs-success:#198754;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;
  --bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-color:#dee2e6;
  --bs-border-radius:.375rem;--bs-border-radius-sm:.25rem;--bs-border-radius-lg:.5rem;
  --bs-border-radius-xl:1rem;--bs-border-radius-pill:50rem;
  --bs-box-shadow:0 .5rem 1rem rgba(0,0,0,.15);
  --bs-box-shadow-sm:0 .125rem .25rem rgba(0,0,0,.075);
  --bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;
}
@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
  font-size:1rem;font-weight:400;line-height:1.5;
  color:var(--bs-body-color);text-align:left;background-color:var(--bs-body-bg);
  -webkit-tap-highlight-color:transparent;
}
h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}
h5{font-size:1.25rem}
p{margin-top:0;margin-bottom:1rem}
a{color:var(--bs-link-color);text-decoration:underline}
a:hover{color:var(--bs-link-hover-color)}
img,svg{vertical-align:middle}
table{caption-side:bottom;border-collapse:collapse}
th{text-align:inherit;text-align:-webkit-match-parent}
tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}
button{border-radius:0}
button:focus:not(:focus-visible){outline:0}
button,input,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}
button,select{text-transform:none}
[role=button]{cursor:pointer}

/* ---------- Container / Grid ---------- */
.container{--bs-gutter-x:1.5rem;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}
@media (min-width:576px){.container{max-width:540px}}
@media (min-width:768px){.container{max-width:720px}}
@media (min-width:992px){.container{max-width:960px}}
@media (min-width:1200px){.container{max-width:1140px}}
@media (min-width:1400px){.container{max-width:1320px}}
.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-.5*var(--bs-gutter-x));margin-left:calc(-.5*var(--bs-gutter-x))}
.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}
.col-6{flex:0 0 auto;width:50%}
.col-12{flex:0 0 auto;width:100%}
@media (min-width:768px){.col-md-3{flex:0 0 auto;width:25%}.col-md-6{flex:0 0 auto;width:50%}}
@media (min-width:992px){.col-lg-4{flex:0 0 auto;width:33.33333333%}}
.g-3{--bs-gutter-x:1rem;--bs-gutter-y:1rem}
.g-4{--bs-gutter-x:1.5rem;--bs-gutter-y:1.5rem}

/* ---------- Display / Flex ---------- */
.d-flex{display:flex!important}
.d-block{display:block!important}
.d-inline-block{display:inline-block!important}
.d-none{display:none!important}
.flex-column{flex-direction:column!important}
.flex-wrap{flex-wrap:wrap!important}
.flex-fill{flex:1 1 auto!important}
.align-self-start{align-self:flex-start!important}
.justify-content-center{justify-content:center!important}
.align-items-center{align-items:center!important}
.h-100{height:100%!important}
.gap-2{gap:.5rem!important}
.gap-4{gap:1.5rem!important}

/* ---------- 文本 / 颜色 / 背景 ---------- */
.text-start{text-align:left!important}
.text-center{text-align:center!important}
.text-secondary{color:#6c757d!important}
.text-primary{color:#0d6efd!important}
.text-danger{color:#dc3545!important}
.text-dark{color:#212529!important}
.text-white{color:#fff!important}
.text-white-50{color:rgba(255,255,255,.5)!important}
.text-decoration-none{text-decoration:none!important}
.bg-white{background-color:#fff!important}
.bg-light{background-color:#f8f9fa!important}
.bg-primary{background-color:#0d6efd!important}
.fw-medium{font-weight:500!important}
.fw-semibold{font-weight:600!important}
.fw-bold{font-weight:700!important}
.small{font-size:.875em!important}
.fs-4{font-size:1.5rem!important}
.fs-5{font-size:1.25rem!important}
.display-5{font-weight:300;line-height:1.2;font-size:calc(1.425rem + 2.1vw)}
@media (min-width:1200px){.display-5{font-size:3rem}}
.h4{font-size:calc(1.275rem + .3vw)}
@media (min-width:1200px){.h4{font-size:1.5rem}}
.h5{font-size:1.25rem}

/* ---------- 边框 / 圆角 / 阴影 ---------- */
.border{border:1px solid var(--bs-border-color)!important}
.border-top{border-top:1px solid var(--bs-border-color)!important}
.border-bottom{border-bottom:1px solid var(--bs-border-color)!important}
.border-0{border:0!important}
.border-primary{border-color:#0d6efd!important}
.border-primary-subtle{border-color:#9ec5fe!important}
.rounded{border-radius:var(--bs-border-radius)!important}
.rounded-3{border-radius:var(--bs-border-radius-lg)!important}
.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}
.rounded-circle{border-radius:50%!important}
.shadow{box-shadow:var(--bs-box-shadow)!important}
.shadow-sm{box-shadow:var(--bs-box-shadow-sm)!important}

/* ---------- 定位 / 间距 ---------- */
.position-fixed{position:fixed!important}
.bottom-0{bottom:0!important}
.end-0{right:0!important}
.start-50{left:50%!important}
.translate-middle-x{transform:translateX(-50%)!important}
.m-4{margin:1.5rem!important}
.mt-1{margin-top:.25rem!important}
.mt-2{margin-top:.5rem!important}
.mt-5{margin-top:3rem!important}
.mt-auto{margin-top:auto!important}
.mb-0{margin-bottom:0!important}
.mb-1{margin-bottom:.25rem!important}
.mb-2{margin-bottom:.5rem!important}
.mb-3{margin-bottom:1rem!important}
.mb-4{margin-bottom:1.5rem!important}
.ms-1{margin-left:.25rem!important}
.ms-auto{margin-left:auto!important}
.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}
.p-2{padding:.5rem!important}
.p-3{padding:1rem!important}
.p-4{padding:1.5rem!important}
.px-3{padding-right:1rem!important;padding-left:1rem!important}
.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}
.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}
.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}
.py-3{padding-top:1rem!important;padding-bottom:1rem!important}
.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}
.pt-4{padding-top:1.5rem!important}
.pb-2{padding-bottom:.5rem!important}
.img-fluid{max-width:100%;height:auto}
.qr-img{max-width:180px}
.cursor-pointer{cursor:pointer!important}

/* ---------- Navbar / Collapse ---------- */
.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 0}
.navbar>.container{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}
.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;color:rgba(33,37,41,.9);text-decoration:none;white-space:nowrap}
.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;color:rgba(33,37,41,.65);background-color:transparent;border:1px solid rgba(33,37,41,.15);border-radius:.375rem;transition:box-shadow .15s ease-in-out}
.navbar-toggler:hover{text-decoration:none}
.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833,37,41,.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center;background-size:100%}
.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}
.nav-link{display:block;padding:.5rem 0;color:rgba(33,37,41,.65);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}
.nav-link:hover,.nav-link:focus{color:rgba(33,37,41,.8)}
.nav-link.active{color:rgba(33,37,41,1)}
.navbar-collapse{flex-grow:1;flex-basis:100%;align-items:center}
.collapse:not(.show){display:none}
.collapsing{height:0;overflow:hidden;transition:height .35s ease}
@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}
@media (min-width:768px){
  .navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}
  .navbar-expand-md .navbar-nav{flex-direction:row}
  .navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}
  .navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}
  .navbar-expand-md .navbar-toggler{display:none}
}

/* ---------- Buttons ---------- */
.btn{display:inline-block;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:1px solid transparent;border-radius:var(--bs-border-radius);background-color:transparent;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}
@media (prefers-reduced-motion:reduce){.btn{transition:none}}
.btn:hover{text-decoration:none}
.btn:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.btn:disabled,.btn.disabled{pointer-events:none;opacity:.65}
.btn-primary{color:#fff;background-color:#0d6efd;border-color:#0d6efd}
.btn-primary:hover{color:#fff;background-color:#0b5ed7;border-color:#0a58ca}
.btn-primary:active{color:#fff;background-color:#0a58ca;border-color:#0a53be}
.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}
.btn-secondary:hover{color:#fff;background-color:#5c636a;border-color:#565e64}
.btn-outline-primary{color:#0d6efd;border-color:#0d6efd;background-color:transparent}
.btn-outline-primary:hover{color:#fff;background-color:#0d6efd;border-color:#0d6efd}
.btn-outline-secondary{color:#6c757d;border-color:#6c757d;background-color:transparent}
.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}
.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:var(--bs-border-radius);opacity:.5}
.btn-close:hover{color:#000;text-decoration:none;opacity:.75}
.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}
.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}

/* ---------- Card / Badge ---------- */
.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.175);border-radius:var(--bs-border-radius)}
.card-body{flex:1 1 auto;padding:1rem}
.card-title{margin-bottom:.5rem}
.card-text:last-child{margin-bottom:0}
.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border:0;border-radius:var(--bs-border-radius)}
.badge:empty{display:none}

/* ---------- Form / Select ---------- */
.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);appearance:none;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}
@media (prefers-reduced-motion:reduce){.form-select{transition:none}}
.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}
.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:var(--bs-border-radius-sm)}

/* ---------- Table ---------- */
.table{width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-border-color)}
.table>:not(caption)>*>*{padding:.5rem;background-color:#fff;border-bottom:1px solid var(--bs-border-color)}
.table>tbody{vertical-align:inherit}
.table>thead{vertical-align:bottom}
.table-bordered{border:1px solid var(--bs-border-color)}
.table-bordered>:not(caption)>*>*{border:1px solid var(--bs-border-color)}
.table-hover>tbody>tr:hover>*{background-color:rgba(0,0,0,.075)}
.table-primary>tr>th,.table-primary>tr>td{background-color:#cfe2ff}
.table-light>tr>th,.table-light>tr>td{background-color:#f8f9fa}
.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---------- Alert / Toast ---------- */
.alert{position:relative;padding:1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:var(--bs-border-radius)}
.alert-dark{color:#495057;background-color:#ced4da;border-color:#adb5bd}
.alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}
.app-toast{
  position:fixed;bottom:0;left:50%;z-index:999;
  margin-bottom:1.5rem;
  pointer-events:none;
  opacity:0;
  transform:translate(-50%,20px);
  transition:opacity .3s ease,transform .3s ease;
}
.app-toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- Back to top ---------- */
.back-to-top{width:44px;height:44px}

/* ---------- 剪贴板降级辅助节点 ---------- */
.clipboard-helper{position:fixed;top:-1000px;left:-1000px;opacity:0}

/* ==========================================================================
   统一页脚（首页 + 下载页共用）
   ========================================================================== */
.site-footer{
  text-align:center;
  color:#94a3b8;
  font-size:.8rem;
  line-height:1.6;
}
.site-footer p{margin-bottom:.25rem}
.site-footer p:last-child{margin-bottom:0}
.site-footer a{color:inherit;text-decoration:none}
.site-footer a:hover{text-decoration:underline}

/* ---------- Modal / Fade ---------- */
.modal{position:fixed;top:0;left:0;z-index:1055;display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}
.modal.modal-shown{display:block!important}
.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}
.modal.fade .modal-dialog{transform:translate(0,-50px);transition:transform .3s ease-out}
@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}
.modal.show .modal-dialog{transform:none}
.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}
.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:#212529;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.175);border-radius:var(--bs-border-radius-lg);outline:0}
.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem;border-bottom:1px solid var(--bs-border-color);border-top-left-radius:var(--bs-border-radius-lg);border-top-right-radius:var(--bs-border-radius-lg)}
.modal-header .btn-close{padding:.5rem;margin:-.5rem -.5rem -.5rem auto}
.modal-title{margin-bottom:0;line-height:1.5}
.modal-body{position:relative;flex:1 1 auto;padding:1rem}
.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid var(--bs-border-color);border-bottom-right-radius:var(--bs-border-radius-lg);border-bottom-left-radius:var(--bs-border-radius-lg)}
.modal-footer>*{margin:.25rem}
.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}
.modal-backdrop.fade{opacity:0}
.modal-backdrop.show{opacity:.5}
.modal-open{overflow:hidden}
.fade{transition:opacity .15s linear}
@media (prefers-reduced-motion:reduce){.fade{transition:none}}
.fade:not(.show){opacity:0}
@media (min-width:576px){
  .modal-dialog{max-width:500px;margin:1.75rem auto}
  .modal-dialog-centered{min-height:calc(100% - 3.5rem)}
}

/* ==========================================================================
   Bootstrap Icons 精简版
   ========================================================================== */
@font-face{
  font-family:bootstrap-icons;
  src:url("../assets/bootstrap-icons/1.13.2/fonts/bootstrap-icons.woff2") format("woff2"),
      url("../assets/bootstrap-icons/1.13.2/fonts/bootstrap-icons.woff") format("woff");
  font-display:block;
}
.bi::before,
[class^=bi-]::before,
[class*=" bi-"]::before{
  display:inline-block;
  font-family:bootstrap-icons!important;
  font-style:normal;
  font-weight:400!important;
  font-variant:normal;
  text-transform:none;
  line-height:1;
  vertical-align:-.125em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
.bi-chevron-up::before{content:"\f286"}
.bi-clipboard::before{content:"\f290"}
.bi-arrow-clockwise::before{content:"\f116"}
.bi-moon-stars::before{content:"\f494"}
.bi-sun::before{content:"\f5a2"}

/* ==========================================================================
   下载页（404.html）
   ========================================================================== */
.page-download{
  background:#f8fafc;
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
.page-download .download-main{
  flex:1 1 auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:2rem 1.5rem;
  gap:1.5rem;
}

.page-download .download-card,
.page-download .ad-card{
  width:100%;
  max-width:480px;
}
.page-download .download-card{
  border:0;
  box-shadow:0 10px 40px -12px rgba(15,23,42,.12),0 2px 8px -2px rgba(15,23,42,.05);
}
.page-download .ad-card{
  border:0;
  box-shadow:0 4px 16px -8px rgba(15,23,42,.08);
}
.page-download .download-card .card-body{
  padding:2.5rem 2rem 1.75rem;
}
.page-download .ad-card .card-body{
  padding:1.25rem 1.5rem 1rem;
  position:relative;
}

.page-download .download-icon{
  width:64px;
  height:64px;
  margin:0 auto .875rem;
  border-radius:50%;
  background:#eff6ff;
  color:var(--bs-primary);
  display:grid;
  place-items:center;
}
.page-download .download-icon svg{display:block}

.page-download .file-name{
  font-size:1.75rem;
  font-weight:700;
  color:#0f172a;
  line-height:1.3;
  word-break:break-all;
  margin-bottom:.5rem;
}
.page-download .version-info{
  font-size:.9rem;
  color:#64748b;
  font-weight:500;
  letter-spacing:.2px;
  line-height:1.6;
}
.page-download .error-msg{
  font-size:1.25rem;
  font-weight:600;
  color:#b91c1c;
  padding:1rem 0;
}

.page-download .btn-group-custom{
  display:flex;
  flex-direction:column;
  gap:.75rem;
  margin-top:2rem;
  width:100%;
}
.page-download .download-primary{
  width:100%;
  padding:.75rem 1.5rem;
  font-size:1rem;
  font-weight:600;
  letter-spacing:.3px;
}
.page-download .download-secondary{
  width:100%;
  padding:.6rem 1.25rem;
  font-size:.95rem;
  font-weight:500;
}

.page-download .download-links{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:.75rem;
  margin-top:.25rem;
  font-size:.9rem;
}
.page-download .download-link{
  background:none;
  border:0;
  padding:0;
  color:#64748b;
  text-decoration:none;
  font-size:inherit;
  font-weight:500;
  line-height:inherit;
  cursor:pointer;
  transition:color .15s ease;
}
.page-download .download-link:hover,
.page-download .download-link:focus-visible{
  color:var(--bs-primary);
  text-decoration:none;
  outline:0;
}

.page-download .sponsor-tip{
  margin-top:1.75rem;
  padding:1.25rem 0 0;
  border:0;
  border-top:1px solid var(--bs-border-color);
  border-radius:0;
  background:none;
  font-size:.8rem;
  color:#94a3b8;
  font-weight:400;
  line-height:1.6;
  text-align:center;
}
.page-download .sponsor-tip a{
  color:var(--bs-link-color);
  text-decoration:none;
  font-weight:500;
}
.page-download .sponsor-tip a:hover{text-decoration:underline}

.page-download .ad-content{
  position:relative;
  text-align:center;
  font-size:.875rem;
  color:#1e293b;
  line-height:1.6;
  min-height:140px;
}
.page-download .ad-original{position:relative}
.page-download .btn-close-ad{
  position:absolute;
  top:.25rem;
  right:.25rem;
  background:transparent;
  border:none;
  font-size:1.25rem;
  line-height:1;
  color:#6b7a8f;
  cursor:pointer;
  padding:0 6px;
  border-radius:var(--bs-border-radius-sm);
  transition:color .15s,background-color .15s;
}
.page-download .btn-close-ad:hover{color:#b91c1c;background:#f8f9fa}
.page-download .ad-title{font-weight:700;font-size:1rem;color:var(--bs-primary);letter-spacing:.3px}
.page-download .ad-highlight{font-weight:600;color:#b45309}
.page-download .ad-qq{margin-top:.15rem;font-weight:500}
.page-download .ad-qq strong{font-size:1rem;color:var(--bs-primary)}

.page-download .service-alert{
  margin:1rem 0 0;
  padding:.75rem 1rem;
  font-size:.875rem;
  font-weight:500;
  line-height:1.5;
  text-align:center;
  border-radius:var(--bs-border-radius);
  animation:service-alert-in .2s ease;
}
@keyframes service-alert-in{
  from{opacity:0;transform:translateY(-4px)}
  to{opacity:1;transform:translateY(0)}
}

#aboutPage:empty,
#adCard:empty{display:none}

/* ==========================================================================
   验证弹窗
   ========================================================================== */
.verify-backdrop{
  position:fixed;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  z-index:2000;
  padding:20px;
  visibility:hidden;
  background:rgba(15,23,42,0);
  backdrop-filter:blur(0px);
  -webkit-backdrop-filter:blur(0px);
  transition:background .28s ease,visibility .28s ease,backdrop-filter .28s ease,-webkit-backdrop-filter .28s ease;
}
.verify-backdrop.show{
  visibility:visible;
  background:rgba(15,23,42,.55);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
.verify-modal{
  width:640px;
  max-width:100%;
  background:#fff;
  border-radius:var(--bs-border-radius-lg);
  overflow:hidden;
  box-shadow:0 30px 80px -20px rgba(0,0,0,.45);
  transform-origin:center center;
  transform:scale(.02);
  opacity:0;
  transition:transform .44s cubic-bezier(.16,1,.3,1),opacity .22s ease;
  display:flex;
  flex-direction:column;
  will-change:transform,opacity;
}
.verify-backdrop.show .verify-modal{transform:scale(1);opacity:1}
.verify-modal-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 20px;
  font-weight:700;
  font-size:15px;
  color:#1f2d3d;
  border-bottom:1px solid var(--bs-border-color);
  letter-spacing:.3px;
}
.verify-modal-close{
  width:32px;
  height:32px;
  border-radius:var(--bs-border-radius);
  border:none;
  background:transparent;
  font-size:22px;
  line-height:1;
  color:#6b7686;
  cursor:pointer;
  display:grid;
  place-items:center;
  transition:background .15s,color .15s;
}
.verify-modal-close:hover{background:#f1f4f9;color:#1f2d3d}
.verify-modal-body{
  position:relative;
  width:100%;
  height:760px;
  max-height:calc(92vh - 56px);
  background:#f6f8fc;
}
.verify-modal-body iframe{
  width:100%;
  height:100%;
  border:0;
  display:block;
  background:transparent;
}

/* ==========================================================================
   API 页目录树 & 主题图标
   ========================================================================== */
.api-header{border-bottom:1px solid var(--bs-border-color);padding-bottom:1rem}
.api-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.api-header-text{flex:1 1 auto;min-width:0}
.api-download-btn{flex-shrink:0;white-space:nowrap}
.api-download-btn .bi{margin-right:.25rem}
.api-meta{letter-spacing:.2px}

.api-toc-title{letter-spacing:.3px;color:#475569}
.api-toc-list{list-style:none;margin:0;padding:0}
.api-toc-item{margin-bottom:.25rem}
.api-toc-item:last-child{margin-bottom:0}
.api-toc-link{display:inline-block;padding:.25rem .5rem;margin-left:-.5rem;font-size:.9rem;font-weight:600;color:#0f172a;text-decoration:none;border-radius:var(--bs-border-radius);transition:color .15s,background-color .15s}
.api-toc-link:hover{color:var(--bs-primary);background:#eff6ff}
.api-toc-group-title{display:inline-block;padding:.25rem .5rem;margin-left:-.5rem;font-size:.9rem;font-weight:600;color:#64748b}
.api-toc-sublist{list-style:none;margin:.125rem 0 .25rem 0;padding:0 0 0 .75rem;border-left:2px solid #e2e8f0}
.api-toc-sublist li{margin-bottom:.1rem}
.api-toc-sublist li:last-child{margin-bottom:0}
.api-toc-sublink{display:block;padding:.2rem 0;font-size:.85rem;color:#475569;text-decoration:none;transition:color .15s}
.api-toc-sublink:hover{color:var(--bs-primary);text-decoration:underline}

.api-section{scroll-margin-top:1rem}
.api-section > h3{border-color:#9ec5fe!important}
.api-paragraph{color:#334155;line-height:1.7;margin-bottom:.75rem}
.api-paragraph:last-child{margin-bottom:0}
.api-heading{margin-top:1.25rem;margin-bottom:.5rem;font-weight:600;color:#0f172a}
.api-heading:first-child{margin-top:0}
.api-list{margin:0 0 .75rem;padding-left:1.5rem;color:#334155;line-height:1.7}
.api-list li{margin-bottom:.25rem}
.api-table-wrap{margin:.75rem 0;border-radius:var(--bs-border-radius)}
.api-table{font-size:.875rem;margin-bottom:0}
.api-table th{background:#f1f5f9;font-weight:600;color:#1e293b;white-space:nowrap}
.api-table td{color:#334155;vertical-align:top}
.api-code{background:#0f172a;color:#e2e8f0;border-radius:var(--bs-border-radius);padding:1rem;font-size:.82rem;line-height:1.65;overflow-x:auto;margin:.75rem 0;font-family:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,Monaco,"Liberation Mono",monospace;tab-size:2}
.api-code code{background:none;color:inherit;padding:0;font-family:inherit;font-size:inherit;white-space:pre}
.api-endpoint{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.75rem 0 .25rem}
.api-endpoint .api-method{font-size:.75rem;padding:.25em .6em;letter-spacing:.5px;font-weight:600}
.api-endpoint .api-path{background:#f1f5f9;color:#0f172a;padding:.35rem .75rem;border-radius:var(--bs-border-radius);font-size:.85rem;word-break:break-all}
.api-endpoint-desc{color:#64748b;font-size:.875rem;margin:.25rem 0 .75rem}
.api-note{margin:.75rem 0;font-size:.875rem;line-height:1.6}
.api-note:last-child{margin-bottom:0}

/* ==========================================================================
   深色模式 (Dark Mode)
   ========================================================================== */
body.dark-mode {
  --bs-body-bg: #0f172a;
  --bs-body-color: #cbd5e1;
  --bs-border-color: #334155;
  --bs-link-color: #60a5fa;
  --bs-link-hover-color: #93c5fd;
  background-color: var(--bs-body-bg);
  color: var(--bs-body-color);
}

body.dark-mode .navbar.bg-white { background-color: #1e293b !important; }
body.dark-mode .navbar-brand, body.dark-mode .nav-link { color: #f8fafc !important; }
body.dark-mode .navbar-brand.text-dark { color: #f8fafc !important; }
body.dark-mode .nav-link.active { color: #60a5fa !important; }
body.dark-mode .navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
body.dark-mode .navbar-toggler { border-color: rgba(255,255,255,.15); }

body.dark-mode .card, body.dark-mode .bg-white, body.dark-mode .modal-content { background-color: #1e293b !important; }
body.dark-mode .bg-light { background-color: #334155 !important; }
body.dark-mode .text-dark { color: #f8fafc !important; }
body.dark-mode .text-secondary { color: #94a3b8 !important; }
body.dark-mode .border, body.dark-mode .border-top, body.dark-mode .border-bottom { border-color: #334155 !important; }
body.dark-mode .shadow-sm { box-shadow: 0 .125rem .25rem rgba(0,0,0,.3) !important; }

body.dark-mode .table { color: #cbd5e1; --bs-table-bg: transparent; }
body.dark-mode .table > :not(caption) > * > * { background-color: transparent !important; border-bottom-color: #334155; }
body.dark-mode .table th { background-color: #334155 !important; color: #f8fafc; border-color: #475569; }
body.dark-mode .table td { border-color: #334155; }
body.dark-mode .table-bordered { border-color: #334155; }

body.dark-mode .btn-outline-secondary { color: #cbd5e1; border-color: #475569; }
body.dark-mode .btn-outline-secondary:hover { color: #f8fafc; background-color: #475569; }
body.dark-mode .form-select { background-color: #1e293b; color: #cbd5e1; border-color: #334155; }

body.dark-mode .card.bg-primary { background-color: #1e3a8a !important; }

body.dark-mode .api-section { background-color: #1e293b; border-color: #334155; }
body.dark-mode .api-toc { background-color: #1e293b; }
body.dark-mode .api-toc .api-toc-link, body.dark-mode .api-toc-sublink { color: #cbd5e1; }
body.dark-mode .api-toc .api-toc-link:hover { background-color: #334155; color: #fff; }
body.dark-mode .api-toc-group-title { color: #94a3b8; }
body.dark-mode .api-toc-sublist { border-left-color: #475569; }
body.dark-mode .api-table th { background-color: #334155 !important; }
body.dark-mode .api-code { background-color: #000; color: #e2e8f0; }
body.dark-mode .api-endpoint .api-path { background-color: #334155; color: #e2e8f0; }
body.dark-mode .api-note.alert-dark { background-color: #334155; border-color: #475569; color: #cbd5e1; }

body.dark-mode.page-download { background: #0f172a; }
body.dark-mode .download-card .file-name { color: #f8fafc; }
body.dark-mode .download-card .version-info { color: #cbd5e1; }
body.dark-mode .sponsor-tip { background-color: #334155; border-color: #475569; color: #cbd5e1; }
body.dark-mode .download-footer { color: #94a3b8; border-top-color: #334155; }
body.dark-mode .ad-content { color: #cbd5e1; }
body.dark-mode .ad-content .ad-title { color: #60a5fa; }

/* ---------- 响应式 ---------- */
@media (max-width:640px){
  .verify-backdrop{padding:10px}
  .verify-modal-body{height:calc(100vh - 80px);max-height:none}
}
@media (max-width:480px){
  .api-header-row{flex-direction:column;align-items:stretch}
  .api-download-btn{align-self:flex-start}
  .api-section{padding:1rem!important}
  .api-code{font-size:.75rem;padding:.75rem}
  .api-table{font-size:.8rem}
  .api-endpoint{gap:.35rem}
  .api-endpoint .api-path{font-size:.8rem}
  
  .page-download .download-main{padding:1.25rem 1rem}
  .page-download .download-card .card-body{padding:2rem 1.25rem 1.5rem}
  .page-download .ad-card .card-body{padding:1rem 1rem .8rem}
  .page-download .download-icon{width:56px;height:56px;margin-bottom:.75rem}
  .page-download .file-name{font-size:1.4rem}
  .page-download .version-info{font-size:.85rem}
  .page-download .download-primary{padding:.7rem 1.25rem;font-size:.95rem}
  .page-download .download-secondary{padding:.55rem 1rem;font-size:.9rem}
  .page-download .sponsor-tip{font-size:.75rem;margin-top:1.5rem;padding-top:1rem}
  .page-download .ad-content{font-size:.8rem;min-height:130px}
  .page-download .ad-title{font-size:.95rem}
  .page-download .btn-close-ad{font-size:1.1rem}
}
