/* ============================================================
   MOONLIT JADE · Shopping Cart (dark)
   ============================================================ */
body {
  background: #F6F9F7;
  color: #101A15;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background:
    radial-gradient(1100px 520px at 85% -10%, rgba(11, 122, 84, 0.05), transparent 60%),
    radial-gradient(900px 480px at -10% 40%, rgba(18, 153, 108, 0.035), transparent 55%);
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  opacity: 0.5;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0.07 0 0 0 0 0.10 0 0 0 0 0.08 0 0 0 0.22 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}
.template {
  position: relative;
  z-index: 1;
  display: none;
}

/* 加载动效 · 入月·月升序列 Ruyue Moonrise（纯 transform/opacity GPU 合成，零重绘零布局）
   品牌意象「入月云计算」：三月错峰升空（左 0s → 主 0.5s → 右 1s）承载加载进度语义，
   升起过冲即月晕绽放，齐聚后影锥波自左向右流转（望→蚀→望），驻留段主月轮呼吸；
   周期 6.5s 月落重播（仍在加载的循环语义）——零旋转，三月绝不齐现 */
#mainLoading {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #F6F9F7;
  z-index: 9999;
}
/* 左/右弦月：本体月升序列（首隐→错峰升空→驻留→月落），影锥错相扫掠 = 月相波 */
#mainLoading .ddr1,
#mainLoading .ddr3 {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  overflow: hidden;
  background:
    radial-gradient(circle at 32% 30%, rgba(255, 255, 255, 0.45), transparent 42%),
    radial-gradient(circle at 50% 42%, #1AC092, #0B7A54 62%, #07462F);
  box-shadow: 0 0 10px rgba(18, 153, 108, 0.35);
  opacity: 0;
  animation: ryMoonRise 6.5s cubic-bezier(.4, 0, .2, 1) infinite;
}
#mainLoading .ddr1 { margin: -9px 0 0 -61px; }
#mainLoading .ddr3 { margin: -9px 0 0 43px; animation-delay: 1s; }
#mainLoading .ddr1::before,
#mainLoading .ddr3::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 42% 36%, #0A5038, #052B1D 58%, #03150D);
  transform: translateX(-115%);
  animation: ryMoonWave 2.6s ease-in-out infinite;
}
#mainLoading .ddr3::before { animation-delay: -1.8s; }
/* 主月轮：球面光影 + 双层月晕，月升序列（呼吸编入驻留段，升起过冲月晕绽放） */
#mainLoading .ddr2 {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 36px;
  height: 36px;
  margin: -18px 0 0 -18px;
  border-radius: 50%;
  overflow: hidden;
  background:
    radial-gradient(circle at 30% 28%, rgba(255, 255, 255, 0.5), transparent 40%),
    radial-gradient(circle at 72% 70%, rgba(4, 38, 26, 0.4), transparent 52%),
    radial-gradient(circle at 44% 62%, rgba(9, 84, 58, 0.5), transparent 34%),
    radial-gradient(circle at 58% 40%, rgba(9, 84, 58, 0.35), transparent 28%),
    radial-gradient(circle at 50% 42%, #1AC092, #0B7A54 65%, #07462F);
  box-shadow: 0 0 16px rgba(18, 153, 108, 0.5), 0 0 42px rgba(18, 153, 108, 0.22);
  opacity: 0;
  animation: ryMoonRiseCore 6.5s cubic-bezier(.4, 0, .2, 1) infinite;
  animation-delay: .5s;
}
#mainLoading .ddr2::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 42% 36%, #0A5038, #052B1D 58%, #03150D);
  transform: translateX(-115%);
  animation: ryMoonWave 2.6s ease-in-out infinite;
  animation-delay: -2.2s;
}
/* 双辰星：品牌金（呼应标识金弧），星光引月，明灭错拍 */
#mainLoading .ddr4,
#mainLoading .ddr5 {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 5px;
  height: 5px;
  margin: -34.5px 0 0 -80.5px;
  border-radius: 50%;
  background: #F5B841;
  box-shadow: 0 0 6px rgba(245, 184, 65, 0.55);
  animation: ryStarTwinkle 1.7s ease-in-out infinite;
}
#mainLoading .ddr5 {
  width: 4px;
  height: 4px;
  margin: 20px 0 0 70px;
  animation-delay: -0.85s;
}
@keyframes ryMoonWave {
  0%, 10% { transform: translateX(-115%); }
  46%, 54% { transform: translateX(0); }
  90%, 100% { transform: translateX(115%); }
}
/* 月升序列（弦月）：首隐 → 0.5s 升空过冲（月晕绽放）→ 驻留 → 86% 起月落 → 空拍重播 */
@keyframes ryMoonRise {
  0% { opacity: 0; transform: translateY(8px) scale(0.55); animation-timing-function: cubic-bezier(.22, 1, .36, 1); }
  8% { opacity: 1; transform: translateY(0) scale(1.08); animation-timing-function: cubic-bezier(.4, 0, .2, 1); }
  11% { transform: translateY(0) scale(1); animation-timing-function: cubic-bezier(.4, 0, .6, 1); }
  86% { opacity: 1; transform: translateY(0) scale(1); animation-timing-function: cubic-bezier(.4, 0, .6, 1); }
  94%, 100% { opacity: 0; transform: translateY(-7px) scale(0.8); }
}
/* 月升序列（主月轮）：升起过冲 1.1 → 驻留呼吸一轮 → 月落 */
@keyframes ryMoonRiseCore {
  0% { opacity: 0; transform: translateY(10px) scale(0.55); animation-timing-function: cubic-bezier(.22, 1, .36, 1); }
  9% { opacity: 1; transform: translateY(0) scale(1.1); animation-timing-function: cubic-bezier(.4, 0, .2, 1); }
  12% { transform: translateY(0) scale(1); animation-timing-function: ease-in-out; }
  40% { transform: translateY(0) scale(1.045); animation-timing-function: ease-in-out; }
  67% { transform: translateY(0) scale(1); animation-timing-function: cubic-bezier(.4, 0, .6, 1); }
  86% { opacity: 1; transform: translateY(0) scale(1); animation-timing-function: cubic-bezier(.4, 0, .6, 1); }
  94%, 100% { opacity: 0; transform: translateY(-8px) scale(0.8); }
}
@keyframes ryStarTwinkle {
  0%, 100% { transform: scale(0.65); opacity: 0.15; }
  50% { transform: scale(1.15); opacity: 1; }
}

/* ---------- 外壳 ---------- */
.template > .el-container > .el-aside {
  background: #FFFFFF !important;
  border-right: 1px solid rgba(11, 122, 84, 0.07);
}
.template .el-aside .ali-logo {
  max-height: 40px;
  object-fit: contain;
  filter: none;
}
.template .el-menu { background: transparent !important; }
.template .el-menu .el-menu-item {
  color: #5B6E65;
  border-radius: 10px;
  margin: 2px 10px;
  transition: background-color 0.25s cubic-bezier(0.22, 1, 0.36, 1), color 0.25s cubic-bezier(0.22, 1, 0.36, 1);
  position: relative;
}
.template .el-menu .el-menu-item:hover {
  background: rgba(11, 122, 84, 0.06) !important;
  color: #101A15;
}
.template .el-menu .el-menu-item.is-active {
  background: rgba(11, 122, 84, 0.09) !important;
  color: #0B7A54 !important;
}
.template .el-menu .el-menu-item.is-active::before {
  content: "";
  position: absolute;
  left: -10px;
  top: 22%;
  bottom: 22%;
  width: 3px;
  border-radius: 3px;
  background: linear-gradient(180deg, #0B7A54, #12996C);
  box-shadow: 0 0 10px rgba(18, 153, 108, 0.50);
}
.template .el-menu .el-submenu__title {
  color: #5B6E65;
  border-radius: 10px;
  margin: 2px 10px;
}
.template .el-menu .el-submenu__title:hover {
  background: rgba(11, 122, 84, 0.06) !important;
}
.template .el-aside .line {
  background: rgba(16, 26, 21, 0.10);
  margin: 12px 16px;
}
.template > .el-container > .el-container > .el-header {
  background: rgba(255, 255, 255, 0.85) !important;
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(11, 122, 84, 0.08);
}
.template .header-right-item img,
.template .header-right .right-icon { filter: none; }
.template .el-loading-mask { background-color: rgba(246, 249, 247, 0.7); }
.template .el-loading-spinner .path { stroke: #0B7A54; }

/* ---------- 页头 ---------- */
.ry-page-head {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 26px;
  animation: riseIn 0.6s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.ry-page-head .ry-eyebrow {
  font-size: 12px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: #0B7A54;
  font-weight: 700;
}
.ry-page-head .ry-title {
  font-size: 30px;
  font-weight: 800;
  color: #101A15;
  line-height: 1.2;
  margin: 0;
}

/* ---------- 搜索 ---------- */
.search-box {
  margin-top: -0.62rem;
  margin-bottom: 0.1rem;
  text-align: right;
}
.search-box .el-input { width: 3.2rem; }
.search-box .el-input .el-input__inner {
  height: 42px;
  line-height: 42px;
  background: #FFFFFF;
  border: 1px solid rgba(11, 122, 84, 0.25);
  color: #101A15;
}
.search-box .el-input .el-input__inner::placeholder { color: #5B6E65; }

/* ---------- 表格 ---------- */
.table-name { display: flex; align-items: center; }
.goods-name {
  color: #101A15;
  font-weight: bold;
  font-size: 0.16rem;
}
.el-link.el-link--primary {
  margin-left: 0.08rem;
  color: #0B7A54;
  font-size: 0.14rem;
}
.table-content { font-size: 0.14rem; color: #5B6E65; }
.goods-table {
  margin-top: 0.16rem;
  width: 100%;
  text-align: left;
  border: 1px solid rgba(16, 26, 21, 0.10);
  border-radius: 14px;
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
}
.goods-table thead {
  line-height: 0.46rem;
  background: #EDF3F0;
  height: 0.46rem;
  color: #5B6E65;
  letter-spacing: 0.05em;
}
.goods-table th { border-bottom: 1px solid rgba(16, 26, 21, 0.10); }
.goods-table tbody tr td {
  padding-top: 0.29rem;
  padding-bottom: 0.3rem;
  border-bottom: 1px solid rgba(16, 26, 21, 0.08);
  transition: background 0.2s;
}
.goods-table tbody tr:hover td {
  background: rgba(11, 122, 84, 0.03);
}
.goods-table tbody tr:last-child td { border-bottom: none; }
.description-box { width: 5.5rem; }
.price-box { width: 4rem; }
.total-box { min-width: 1.5rem; }

/* 数量输入器 */
.el-input-number .el-input__inner {
  background: #FFFFFF;
  border-color: rgba(11, 122, 84, 0.25);
  color: #101A15;
}

/* 删除按钮 */
.delete-btn .el-button--text { color: #C22B48; }
.delete-btn .el-button--text:hover { color: #A81E3A; }

/* ---------- 汇总卡 ---------- */
.cart-footer {
  display: flex;
  justify-content: flex-end;
  margin-top: 0.3rem;
  animation: riseIn 0.6s 0.1s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.sum-card {
  min-width: 4.2rem;
  background: linear-gradient(175deg, #FFFFFF 0%, #FBFDFC 100%);
  border: 1px solid rgba(11, 122, 84, 0.25);
  border-radius: 16px;
  padding: 24px 26px;
  box-shadow: 0 18px 48px -18px rgba(16, 26, 21, 0.20);
}
.sum-line {
  display: flex;
  justify-content: space-between;
  font-size: 0.14rem;
  color: #5B6E65;
  line-height: 2.2;
}
.sum-line .val { color: #2E3D36; font-variant-numeric: tabular-nums; }
.sum-line.discount .val { color: #0B7A54; }
.sum-line.total {
  border-top: 1px dashed rgba(16, 26, 21, 0.12);
  margin-top: 8px;
  padding-top: 12px;
  font-size: 0.16rem;
  color: #101A15;
}
.sum-line.total .val {
  color: #0B7A54;
  font-weight: 800;
  font-size: 0.26rem;
  text-shadow: none;
}
.go-buy {
  margin-top: 0.2rem;
  width: 100%;
  height: 46px;
  border: none;
  border-radius: 12px;
  background: linear-gradient(165deg, #0B7A54, #096747);
  color: #FFFFFF;
  font-size: 0.16rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  box-shadow: 0 8px 22px -8px rgba(11, 122, 84, 0.40);
  transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.28s;
}
.go-buy:hover {
  transform: translateY(-2px);
  filter: brightness(0.95);
}
.go-buy:active { transform: scale(0.96); }

/* 空购物车 */
.empty-box {
  text-align: center;
  padding: 1.2rem 0;
  color: #5B6E65;
}

@keyframes riseIn {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}

@media (max-width: 750px) {
  .template .el-main { padding-top: 1.66rem; }
  .description-box, .price-box { width: auto; }
}

/* ---------- 底部结算栏（实际结构） ---------- */
.template .el-footer {
  background: transparent;
  height: auto !important;
  padding: 0 30px 30px;
}
.footer-box {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 14px;
  background: linear-gradient(175deg, #FFFFFF 0%, #FBFDFC 100%);
  border: 1px solid rgba(11, 122, 84, 0.25);
  border-radius: 16px;
  padding: 18px 26px;
  box-shadow: 0 18px 48px -18px rgba(16, 26, 21, 0.20);
  animation: riseIn 0.6s 0.12s cubic-bezier(0.22, 1, 0.36, 1) both;
}
.footer-left {
  display: flex;
  align-items: center;
  gap: 18px;
  color: #5B6E65;
  font-size: 0.14rem;
}
.footer-left .el-checkbox__label { color: #2E3D36; }
.footer-left .delect-btn .el-link.el-link--danger { color: #C22B48; }
.footer-left .text-red { color: #0B7A54; font-weight: 800; margin: 0 2px; }
.footer-right {
  display: flex;
  align-items: center;
  gap: 22px;
}
.footer-right p {
  color: #5B6E65;
  font-size: 0.14rem;
}
.footer-right .total-price {
  color: #0B7A54;
  font-size: 0.26rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
  text-shadow: none;
}
.footer-right .buy-btn {
  height: 46px;
  padding: 0 34px;
  border: none;
  border-radius: 12px;
  background: linear-gradient(165deg, #0B7A54, #096747);
  color: #FFFFFF;
  font-size: 0.16rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  box-shadow: 0 8px 22px -8px rgba(11, 122, 84, 0.40);
  transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.28s;
}
.footer-right .buy-btn:hover {
  transform: translateY(-2px);
  filter: brightness(0.95);
}
.footer-right .buy-btn:active { transform: scale(0.96); }

/* 商品行 */
.shopping-goods { margin-bottom: 0.14rem; }
.info-box { color: #2E3D36; }
.info-box .goods-info { color: #2E3D36; font-size: 0.13rem; }
.goods-price-val, .base_price { color: #0B7A54; }
.text-red { color: #C22B48; }
.delete-btn .el-icon-delete {
  cursor: pointer;
  color: #5B6E65;
  transition: color 0.2s, transform 0.2s;
}
.delete-btn .el-icon-delete:hover {
  color: #C22B48;
  transform: scale(1.15);
}
.mar-left-24 { margin-left: 0.24rem; }

/* main-card 白底中和（覆盖 common.css） */
.template .main-card {
  background: transparent;
  border: none;
  box-shadow: none;
  padding: 0;
}

/* 主文字色（覆盖 common.css .main-card 的 #2B2B2B） */
.template .el-main { color: #101A15; }
.template .main-card { color: inherit; }

/* ============================================================
   PATCH ry-final: Element 容器透明 + 浮层/弹窗/控件深色化
   ============================================================ */
.template .el-main,
.template .el-container {
  background: transparent;
}
.template .el-main { color: #101A15; }

/* el-select 下拉（含未挂 popper-class 的） */
.el-select-dropdown {
  background: #FFFFFF !important;
  border: 1px solid rgba(11, 122, 84, 0.25) !important;
}
.el-select-dropdown__item { color: #2E3D36; }
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover { background: rgba(11, 122, 84, 0.08); }
.el-select-dropdown__item.selected { color: #0B7A54; font-weight: 700; }
.el-select-dropdown .popper__arrow,
.el-select-dropdown .popper__arrow::after {
  border-bottom-color: #FFFFFF !important;
  border-top-color: #FFFFFF !important;
}

/* 对话框 / 确认框 */
.el-dialog,
.el-message-box {
  background: #FFFFFF;
  border: 1px solid rgba(11, 122, 84, 0.22);
  border-radius: 14px;
}
.el-dialog__title,
.el-message-box__title { color: #101A15; }
.el-dialog__body,
.el-message-box__message { color: #2E3D36; }
.el-dialog__headerbtn .el-dialog__close,
.el-message-box__headerbtn .el-message-box__close { color: #5B6E65; }
.el-dialog__headerbtn .el-dialog__close:hover,
.el-message-box__headerbtn .el-message-box__close:hover { color: #0B7A54; }
.el-message-box__btns .el-button--primary {
  background: linear-gradient(165deg, #0B7A54, #096747);
  border: none;
  color: #FFFFFF;
}

/* checkbox / radio */
.el-checkbox__inner {
  background: #FFFFFF;
  border-color: rgba(11, 122, 84, 0.40);
}
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
  background: #0B7A54;
  border-color: #0B7A54;
}
.el-radio__inner {
  background: #FFFFFF;
  border-color: rgba(11, 122, 84, 0.40);
}
.el-radio__input.is-checked .el-radio__inner {
  background: #0B7A54;
  border-color: #0B7A54;
  box-shadow: 0 0 0 3px rgba(11, 122, 84, 0.18);
}
.el-radio__input.is-checked + .el-radio__label { color: #0B7A54; }

/* tooltip / 分页器 */
.el-tooltip__popper.is-dark { background: #FFFFFF !important; color: #2E3D36; }
.el-pagination { color: #2E3D36; }
.el-pagination button:disabled { color: #5B6E65; background: transparent; }
.el-pagination .el-pager li { background: transparent; color: #5B6E65; }
.el-pagination .el-pager li.active { color: #0B7A54; }
.el-pagination .el-input__inner {
  background: #FFFFFF;
  border-color: rgba(11, 122, 84, 0.25);
  color: #2E3D36;
}

/* ============================================================
   PATCH ry-v2 · Obsidian Jade 玄曜翡翠 V2
   ============================================================ */
#mainLoading {
  background: radial-gradient(1100px 520px at 85% -10%, rgba(18, 153, 108, 0.04), transparent 60%), #F6F9F7;
  transition: opacity 0.4s ease;
}
#mainLoading.ry-fade-out { opacity: 0; pointer-events: none; }

.template .el-main, .template .el-container,
.goods .el-main, .goods .el-container { background: transparent; }

.el-button--default {
  background: #FFFFFF;
  border-color: rgba(16, 26, 21, 0.16);
  color: #2E3D36;
}
.el-button--default:hover, .el-button--default:focus {
  background: #EDF3F0;
  border-color: rgba(11, 122, 84, 0.50);
  color: #0B7A54;
}
.el-button--default.is-plain { background: transparent; }

.el-table { background: transparent !important; color: #2E3D36; }
.el-table th.el-table__cell, .el-table th > div { background: #EDF3F0 !important; color: #5B6E65 !important; }
.el-table tr, .el-table td.el-table__cell { background: transparent !important; }
.el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf { border-bottom: 1px solid rgba(16, 26, 21, 0.10) !important; }
.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell { background: rgba(11, 122, 84, 0.05) !important; }
.el-table::before, .el-table::after { display: none !important; }
.el-table .el-table__empty-block { background: transparent; }
.el-table .el-table__empty-text { color: #5B6E65; }

/* ============================================================
   PATCH ry-v2.1 · body 级浮层深色 + 购买按钮加固
   ============================================================ */
.goods .f-order .right .buy,
.goods .config-box .f-order .right .buy {
  background: #0B7A54 linear-gradient(165deg, #0B7A54, #096747) !important;
  color: #FFFFFF !important;
  border-radius: 12px;
  font-weight: 800;
  box-shadow: 0 8px 22px -8px rgba(11, 122, 84, 0.40);
}
.goods .f-order .right .buy:hover { filter: brightness(0.95); transform: translateY(-1px); }
.goods .f-order .right .add-cart {
  background: rgba(11, 122, 84, 0.08);
  border: 1px solid rgba(11, 122, 84, 0.45);
  border-radius: 12px;
}

.el-popover {
  background: #FFFFFF !important;
  color: #2E3D36 !important;
  border: 1px solid rgba(11, 122, 84, 0.25) !important;
  border-radius: 12px !important;
  box-shadow: 0 16px 40px -12px rgba(16, 26, 21, 0.20) !important;
}
.el-popover .popper__arrow { display: none !important; }

.el-dropdown-menu {
  background: #FFFFFF !important;
  border: 1px solid rgba(16, 26, 21, 0.12) !important;
  border-radius: 12px !important;
  padding: 6px !important;
  box-shadow: 0 16px 40px -12px rgba(16, 26, 21, 0.20) !important;
}
.el-dropdown-menu .popper__arrow, .el-dropdown-menu .popper__arrow::after { border-bottom-color: #FFFFFF !important; }
.el-dropdown-menu__item { color: #2E3D36 !important; border-radius: 8px; }
.el-dropdown-menu__item:not(.is-disabled):hover { background: rgba(11, 122, 84, 0.08) !important; color: #0B7A54 !important; }
.el-dropdown-menu__item--divided { border-top-color: rgba(16, 26, 21, 0.10) !important; }

.el-drawer { background: #FFFFFF !important; }
.el-drawer__header { color: #101A15; margin-bottom: 12px; }

.el-message { background: #FFFFFF !important; border: 1px solid rgba(11, 122, 84, 0.30); color: #2E3D36 !important; }
.el-message--success .el-message__content { color: #0B7A54 !important; }
.el-message--error .el-message__content { color: #C22B48 !important; }

/* ============================================================
   PATCH ry-A · 冷瓷翡翠 亮色系统精修（WCAG AA 认证）
   canvas #F6F9F7 / card #FFFFFF / subtle #EDF3F0
   t1 #101A15 / t2 #2E3D36 / t3 #5B6E65 / p #0B7A54 / pHov #096747
   ============================================================ */
/* 亮色下 tooltip 保持深底（对比 15:1，与白浮层形成层级） */
.el-tooltip__popper.is-dark { background: #101A15 !important; color: #F6F9F7 !important; }
/* 白底浮层补投影，保持悬浮层级 */
.el-select-dropdown { box-shadow: 0 12px 32px -8px rgba(16, 26, 21, 0.18) !important; }
.el-dialog, .el-message-box { box-shadow: 0 24px 64px -16px rgba(16, 26, 21, 0.22) !important; }
.el-message { box-shadow: 0 8px 24px -8px rgba(16, 26, 21, 0.18) !important; }
.el-popover, .el-dropdown-menu { box-shadow: 0 16px 40px -12px rgba(16, 26, 21, 0.2) !important; }

/* ============================================================
   PATCH ry-mask · 弹窗遮罩轻量化（去灰蒙，同会员中心 ry-H）
   根因：Element 默认 .v-modal 纯黑 50%，亮色画布上灰蒙沉重。
   方案：墨绿 31% 有效遮罩 + 4px 景深，保留淡入动画。
   ============================================================ */
.v-modal {
  background: rgba(16, 26, 21, 0.62) !important;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}

/* ============================================================
   PATCH ry7 (手机端) · 滚动宿主同构化（全站右缘滑条根治，
   与 settlement.css ry7 同法）：锁 viewport，滚动收进
   el-main 容器（国产内核对顶层视口画常驻条且 CSS 隐藏无效）。
   ============================================================ */
@media screen and (max-width: 750px) {
  html,
  body {
    height: 100%;
    overflow: hidden;
  }
  .template {
    height: 100vh;
    height: 100dvh;
  }
  .template .el-container {
    height: 100%;
  }
  .template .el-main {
    flex: 1;
    min-height: 0;
    height: auto;
    overflow-y: auto !important;
    padding-bottom: 2rem;
  }
}

/* ============================================================
   PATCH ry-canvas-site (R121) · 画布基色与过滚零位移（全站统一）
   Via 等旧 WebView 内核（Chromium<63）过滚橡胶带把整个文档层
   （含 fixed 层与 CSS 画布背景）拉离视口，露出 WebView 原生黑底。
   与官网首页 ry-canvas v10.9.128 同源三防线：
   ① html 画布基色显式字面值（不依赖 body 传播与 var()）；
   ② 根层 overscroll-behavior-y: none——新内核橡胶带/下拉刷新
     位移整体取消（不构成滚动容器、不捕获 sticky，与 R98 无涉）；
   ③ html::before 画布垫层——外扩 60vh 的固定浅色垫（z-index:-1），
     旧内核橡胶带无论怎么拉，视口内恒有浅色残余，黑底物理盖死。
   ============================================================ */
html {
  background-color: #F6F9F7;
  overscroll-behavior-y: none;
}
body { overscroll-behavior-y: none; }
html::before {
  content: "";
  position: fixed;
  top: -60vh; bottom: -60vh; left: 0; right: 0;
  z-index: -1;
  background: #F6F9F7;
  pointer-events: none;
}
