/* 页面宽度上限为 480px，窄屏按比例缩放。 */
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html { font-size: 10vw; overscroll-behavior: none; }
@media (min-width: 480px) { html { font-size: 48px; } }
body { margin: 0; color: #000; background: #fff; font-family: Medium, sans-serif; }
body:has(dialog[open]) { overflow: hidden; }
button, select, a { touch-action: manipulation; }
button, select { font: inherit; color: inherit; }
button { border: 0; cursor: pointer; }
button:disabled { cursor: wait; opacity: .7; }
button:focus-visible, select:focus-visible, a:focus-visible, [tabindex]:focus-visible { outline: 3px solid #6a5cff; outline-offset: 4px; }
a { color: inherit; }
figure { margin: 0; }
#app { font-size: .345rem; min-height: 100vh; min-height: 100dvh; overflow: hidden; width: 100%; }
.app_center { margin: 0 auto; max-width: 480px; width: 100%; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

.pwaPage_v5 {
  background:#f3f3f3;
  height:100%;
  overflow:auto;
  position:relative;
  width:100%
}

.pwaPage_v5 .loading_v5 {
  align-items:center;
  background:#000;
  display:flex;
  height:100%;
  justify-content:center;
  left:0;
  position:fixed;
  top:0;
  width:100%
}

.pwaPage_v5 .loading_v5 .box {
  align-items:center;
  background:#fff;
  border-radius:.2rem;
  display:flex;
  flex-direction:column;
  height:3rem;
  justify-content:center;
  margin-top:-2rem;
  position:relative;
  width:5rem
}

.pwaPage_v5 .loading_v5 .box p {
  font-size:.36rem;
  font-weight:100;
  margin-top:.3rem
}

.pwaPage_v5 .bg {
  position:absolute;
  width:100%
}

.pwaPage_v5 .bg img {
  height:100%;
  width:100%
}

.pwaPage_v5 .warp {
  display:flex;
  flex-direction:column;
  justify-content:center;
  position:relative
}

.pwaPage_v5 .warp_box1 {
  background:#fff;
  padding-bottom:.8rem
}

.pwaPage_v5 .warp1 {
  align-items:center;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding-top:2rem
}

.pwaPage_v5 .warp1 .logo {
  height:2.6rem;
  width:2.6rem
}

.pwaPage_v5 .warp1 .logo img {
  height:100%;
  width:100%
}

.pwaPage_v5 .warp1 .title {
  font-size:.4rem;
  font-weight:500;
  margin-top:.7rem
}

.pwaPage_v5 .warp1 .pelo {
  font-size:.28rem;
  margin-top:.3rem;
  opacity:.5
}

.pwaPage_v5 .warp2 {
  align-items:center;
  display:flex;
  justify-content:center;
  margin-top:1.4rem
}

.pwaPage_v5 .warp2 div {
  align-items:center;
  display:flex;
  flex-direction:column;
  justify-content:center;
  width:30%
}

.pwaPage_v5 .warp2 div p:first-of-type {
  color:#41af48;
  font-size:.42rem;
  margin-bottom:.05rem
}

.pwaPage_v5 .warp2 div p:nth-of-type(2) {
  opacity:.6
}

.pwaPage_v5 .warp_box2 {
  padding:0 .4rem;
  width:100%
}

.pwaPage_v5 .warp3 {
  display:flex;
  justify-content:center;
  margin-top:.7rem;
  width:100%
}

.pwaPage_v5 .warp3 .box {
  display:flex;
  justify-content:center;
  width:100%
}

.pwaPage_v5 .warp3 .btn1 {
  align-items:center;
  background:linear-gradient(180deg,#e56220 5%,#ef803f 60%);
  border-radius:.25rem;
  color:#fff;
  display:flex;
  height:1.5rem;
  justify-content:center;
  overflow:hidden;
  position:relative;
  width:100%
}

.pwaPage_v5 .warp3 .btn1 img {
  margin-right:.15rem
}

.pwaPage_v5 .warp3 .btn1 p:first-of-type {
  color:#fdf945;
  font-size:.45rem;
  margin-bottom:.15rem
}

.pwaPage_v5 .warp3 .btn1 .progress-bar {
  background-color:#4caf50;
  border-radius:.2rem;
  height:100%;
  transition:width .5s
}

.pwaPage_v5 .warp3 .btn1 .progress-text {
  color:#000;
  font-size:.3rem;
  font-weight:700;
  left:50%;
  position:absolute;
  top:50%;
  transform:translate(-50%,-50%)
}

.pwaPage_v5 .warp3 .btn2 {
  align-items:flex-start;
  justify-content:flex-start
}

.pwaPage_v5 .warp4 {
  align-items:center;
  border-radius:0;
  box-sizing:border-box;
  display:flex;
  flex-direction:row;
  gap:.5rem;
  justify-content:normal;
  margin:0;
  margin-top:.7rem;
  overflow-x:auto;
  overscroll-behavior:auto;
  padding:0;
  position:relative;
  width:100%
}

.pwaPage_v5 .warp4 figure,.pwaPage_v5 .warp4 figure img {
  height:6.2rem
}

.pwaPage_v5 .warp5 {
  background:#fff;
  border-radius:.2rem;
  margin-top:.5rem;
  padding:.8rem .4rem;
  position:relative
}

.pwaPage_v5 .warp5 .title {
  font-size:.56rem
}

.pwaPage_v5 .warp5 .text {
  font-size:.3rem;
  font-weight:100;
  margin-top:.4rem;
  opacity:.7
}

.pwaPage_v5 .warp5 .left_date {
  font-weight:100;
  margin-top:1.3rem;
  position:relative
}

.pwaPage_v5 .warp5 .left_date p:first-of-type {
  font-size:.38rem;
  font-weight:500
}

.pwaPage_v5 .warp5 .left_date p:nth-of-type(2) {
  margin:.15rem auto .4rem
}

.pwaPage_v5 .warp5 .left_date:after {
  background:#dadada;
  content:"";
  height:.02rem;
  position:absolute;
  top:-.4rem;
  width:4rem
}

.pwaPage_v5 .warp5 img {
  bottom:.3rem;
  height:3.2rem;
  position:absolute;
  right:.7rem
}

.pwaPage_v5 .warp6 {
  margin-bottom:1rem;
  margin-top:.5rem
}

.pwaPage_v5 .review_box {
  background:#fff;
  border-radius:.2rem;
  padding:.4rem
}

.pwaPage_v5 .review_summary {
  align-items:center;
  display:flex;
  justify-content:space-between
}

.pwaPage_v5 .summary_left {
  background:#f3f3f3;
  border-radius:.15rem;
  padding:.4rem .2rem;
  width:45%
}

.pwaPage_v5 .summary_left .score {
  color:#6a5cff;
  font-size:.7rem;
  font-weight:700
}

.pwaPage_v5 .summary_left .stars {
  color:#6a5cff;
  font-size:.46rem;
  margin:.1rem 0
}

.pwaPage_v5 .summary_left .count {
  font-size:.36rem;
  opacity:.6
}

.pwaPage_v5 .summary_right {
  width:40%
}

.pwaPage_v5 .rate_row {
  align-items:center;
  display:flex;
  margin-bottom:.05rem
}

.pwaPage_v5 .rate_row span {
  font-size:.26rem;
  opacity:.6;
  width:.3rem
}

.pwaPage_v5 .rate_row .bar {
  background:#e5e5e5;
  border-radius:1rem;
  flex:1;
  height:.2rem;
  overflow:hidden
}

.pwaPage_v5 .rate_row .bar_active {
  background:#6a5cff;
  border-radius:1rem;
  height:100%
}

.pwaPage_v5 .rate_row .w85 {
  width:85%
}

.pwaPage_v5 .rate_row .w10 {
  width:20%
}

.pwaPage_v5 .rate_row .w3 {
  width:12%
}

.pwaPage_v5 .rate_row .w1 {
  width:0
}

.pwaPage_v5 .review_list {
  margin-top:.6rem
}

.pwaPage_v5 .review_item {
  display:flex;
  margin-bottom:.6rem
}

.pwaPage_v5 .review_item .avatar {
  border-radius:50%;
  height:1rem;
  margin-right:.3rem;
  object-fit:cover;
  width:1rem
}

.pwaPage_v5 .review_item .content {
  flex:1
}

.pwaPage_v5 .review_item .content .top {
  display:flex;
  flex-direction:column;
  flex-wrap:wrap;
  gap:.1rem;
  position:relative
}

.pwaPage_v5 .review_item .content .top .name {
  font-size:.32rem;
  font-weight:500
}

.pwaPage_v5 .review_item .content .top .stars {
  color:#6a5cff;
  font-size:.46rem
}

.pwaPage_v5 .review_item .content .top .date {
  font-size:.28rem;
  opacity:.5;
  position:absolute;
  right:0;
  top:.2rem
}

.pwaPage_v5 .review_item .content .text {
  font-size:.34rem;
  left:-1rem;
  line-height:1.4;
  margin-top:.15rem;
  opacity:.7;
  position:relative
}

/* 语言切换入口。 */
.pwaPage_v5 .warp_box1 { position: relative; }
.pwaPage_v5 .bg { inset: 0 0 auto; pointer-events: none; }
.pwaPage_v5 .warp1, .pwaPage_v5 .warp2 { position: relative; }
.pwaPage_v5 .warp1 .title { margin: .7rem 0 1em; }
.language-picker {
  position: absolute; top: max(.35rem, env(safe-area-inset-top)); right: .4rem;
  z-index: 2; display: flex; align-items: center; gap: .12rem;
  padding: .16rem .22rem; color: #3f3730; background: #ffffffdf;
  border: 1px solid #ffffffc9; border-radius: 1rem; font-size: 12px;
  box-shadow: 0 2px 12px #624e1910; backdrop-filter: blur(12px);
}
.language-picker select {
  appearance: none; border: 0; background: transparent; cursor: pointer;
  padding: 0; min-height: 24px; outline-offset: 4px; border-radius: 2px;
}
.language-picker svg { flex-shrink: 0; }
.pwaPage_v5 .warp3 .btn1 { padding: 0 .3rem; font: inherit; border: 0; }
.pwaPage_v5 .warp3 .btn1 img { flex-shrink: 0; }
.install-copy { display: flex; flex-direction: column; gap: .12rem; text-align: left; }
.install-title { color: #fdf945; font-size: .45rem; line-height: 1.25; }
.install-subtitle { font-size: .345rem; line-height: 1.35; }
.pwa_shiny::after {
  content: ""; position: absolute; inset: -50% auto -50% -60%; width: 30%;
  background: linear-gradient(90deg, transparent, #ffffff45, transparent);
  transform: skewX(-20deg); animation: button-shine 4.5s ease-in-out infinite; pointer-events: none;
}
@keyframes button-shine { 0%, 60% { left: -60%; } 95%, 100% { left: 140%; } }
.pwaPage_v5 .warp4 { scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.pwaPage_v5 .warp4::-webkit-scrollbar { display: none; }
.pwaPage_v5 .warp4 figure { position: relative; flex-shrink: 0; }
.pwaPage_v5 .warp4 figure img { width: auto; display: block; }
.warp4 figcaption {
  position: absolute; inset: auto 0 0; height: 26%; padding: .15rem .08rem .3rem;
  background: linear-gradient(#e4aa1d, #e2a819); box-shadow: 0 -.06rem .06rem #e4aa1d;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .12rem;
  text-align: center; font-weight: 900; line-height: 1.2;
}
.warp4 figure:nth-child(3) figcaption { height: 29%; }
.warp4 figure:nth-child(5) figcaption { height: 31%; }
.warp4 figcaption strong { color: #fff64a; font-size: .4rem; text-shadow: 1px 1px 0 #222, -1px -1px 0 #222, 1px -1px 0 #222, -1px 1px 0 #222; }
.warp4 figcaption span { color: #fff; font-size: .29rem; text-shadow: 1px 1px 0 #222, -1px -1px 0 #222, 1px -1px 0 #222, -1px 1px 0 #222; }
.pwaPage_v5 .warp5 .title { font-weight: 400; margin: 1em 0; }
.pwaPage_v5 .warp5 .text { line-height: 1.4; overflow-wrap: anywhere; white-space: pre-line; }
.pwaPage_v5 .warp5 .penguin { width: auto; }
.pwaPage_v5 .review_item .content { min-width: 0; }
.pwaPage_v5 .review_item .content .top .date { font-size: .26rem; }
.pwaPage_v5 .review_item .content .text { width: calc(100% + 1rem); }

/* 按设备显示安装步骤。 */
.install-dialog {
  color: #111; background: #fff; border: 0; border-radius: .4rem;
  padding: .75rem .55rem .4rem; width: min(8.2rem, calc(100vw - 32px));
  max-height: calc(100dvh - 40px); overflow-y: auto; text-align: center;
  box-shadow: 0 20px 80px #0002; font-size: .345rem;
}
.install-dialog::backdrop { background: #0008; }
.close-dialog { position: absolute; top: .15rem; right: .16rem; width: .8rem; height: .8rem; background: transparent; color: #888; font-size: .65rem; line-height: 1; }
.dialog-title { display: flex; align-items: center; justify-content: center; gap: .25rem; }
.dialog-title img { width: .85rem; height: .85rem; }
.dialog-title h2 { font-size: .69rem; margin: 0; font-weight: 400; }
.fast-badge { display: flex; align-items: center; justify-content: center; width: fit-content; max-width: 100%; min-height: .63rem; margin: .42rem auto .51rem; padding: 0 .35rem; border: .02px solid #0000004d; border-radius: .1rem; color: #00000080; font-size: .46rem; }
.safety-badge { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; gap: .18rem; min-height: .66rem; margin: 0 auto .52rem; padding: 0 .33rem; background: #01875f1a; border: .02px solid #01875f; border-radius: .32rem; color: #01875f; font-size: .5rem; }
.safety-badge img { width: .5rem; height: .5rem; flex-shrink: 0; }
.install-dialog:lang(en) .dialog-title h2 { font-size: .59rem; }
.install-dialog:lang(en) .fast-badge { font-size: .36rem; }
.install-dialog:lang(en) .safety-badge { font-size: .36rem; }
.install-dialog.native-install { padding-inline: 0; }
.native-install .close-dialog, .native-install .dialog-description, .native-install .install-steps, .native-install .visit-site { display: none; }
.native-install .confirm-install { width: min(5.66rem, calc(100% - 1.1rem)); min-height: 1.15rem; margin-top: 0; font-size: .42rem; }
.native-install .install-status { margin-inline: .55rem; }
.dialog-description { color: #666; line-height: 1.6; margin: .4rem 0; }
.install-steps { padding-left: .6rem; text-align: left; line-height: 1.6; color: #444; }
.install-steps li { padding-left: .05rem; margin-bottom: .25rem; }
.confirm-install { display: flex; align-items: center; justify-content: center; margin: .4rem auto 0; width: 100%; min-height: 1.15rem; padding: .2rem .3rem; color: #fff; background: #01875f; border-radius: .2rem; text-decoration: none; font-size: .4rem; }
.visit-site { display: inline-block; margin-top: .4rem; color: #6b6b6b; font-size: .33rem; text-underline-offset: 4px; }
.install-status { font-size: .3rem; color: #6a5cff; line-height: 1.5; margin: .25rem 0 0; }
.install-status:empty { display: none; }
.launch-page { min-height: 100vh; min-height: 100dvh; display: grid; place-content: center; background: #f3f3f3; padding: 24px; font-size: 16px; }
.launch-card { width: min(360px, calc(100vw - 48px)); padding: 32px 24px; text-align: center; background: #fff; border-radius: 18px; }
.launch-card > img { border-radius: 22px; }
.launch-card h1 { font-size: 24px; }
.launch-card p { color: #777; font-size: 14px; line-height: 1.6; }
.launch-card .confirm-install { font-size: 16px; min-height: 48px; padding: 12px; }
.noscript { position: fixed; bottom: 0; left: 0; right: 0; padding: 16px; background: #fff; color: #111; text-align: center; font-size: 14px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } }


