:root {
  --bg: #f5f5f8;
  --ink: #24222b;
  --muted: #8c8995;
  --brand: #7258dc;
  --brand2: #9a6cf2;
  --card: #fff;
  --line: #eceaf0;
  --theme-on-primary: #fff;
  --theme-surface-alt: #f0ebff;
  --theme-surface-strong: #24222b;
  --theme-primary-soft: #f0ebff;
  --safe: env(safe-area-inset-bottom, 0px);
  --app-shell-bottom: 0px;
  --tabbar-base-height: 62px;
  --tabbar-height: var(--tabbar-base-height);
  --tabbar-bottom-gap: calc(var(--safe) + 8px);
  --tabbar-space: calc(var(--tabbar-height) + var(--tabbar-bottom-gap));
  --order-cartbar-gap: 8px;
  --order-cartbar-height: 54px;
}
:root[data-tabbar-mode="classic"] {
  --tabbar-height: calc(var(--tabbar-base-height) + var(--safe));
  --tabbar-bottom-gap: 0px;
}

* {
  box-sizing: border-box;
}
html,
body {
  margin: 0;
  min-height: 100%;
  background: var(--theme-background);
  color: var(--ink);
  font-family:
    -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Microsoft YaHei", sans-serif;
}
button,
input,
select,
textarea {
  font: inherit;
}
.phone-app {
  width: min(100%, 480px);
  min-height: 100vh;
  margin: auto;
  background: var(--bg);
  position: relative;
  padding-bottom: calc(var(--tabbar-space) + 10px);
  box-shadow: 0 0 50px rgba(0,0,0,.16);
}
.page-header {
  position: sticky;
  top: 0;
  z-index: 10;
  min-height: 52px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  background: color-mix(in srgb,var(--theme-background) 94%,transparent);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--line);
}
.page-header h1 {
  font-size: 17px;
  margin: 0;
}
.head-btn {
  border: 0;
  background: none;
  font-size: 14px;
  color: var(--brand);
  padding: 7px;
}
.page-view {
  min-height: calc(100vh - 126px);
  background: var(--bg);
  color: var(--ink);
  caret-color: var(--brand);
}
.page-view ::selection {
  background: var(--brand);
  color: var(--theme-on-primary);
}
.pad {
  padding: 14px;
}
.hero {
  padding: 24px 18px 20px;
  color: var(--theme-on-gradient);
  background:
    radial-gradient(circle at 90% 5%, var(--theme-primary), transparent 35%),
    linear-gradient(135deg, var(--theme-accent), var(--theme-accent) 55%, var(--theme-accent));
  border-radius: 0 0 25px 25px;
}
.hero h2 {
  font-size: 28px;
  margin: 8px 0;
}
.hero p {
  color: var(--theme-primary);
  font-size: 13px;
}
.store {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.store b {
  font-size: 15px;
}
.pill {
  display: inline-flex;
  align-items: center;
  padding: 5px 9px;
  border-radius: 99px;
  background: var(--theme-surface);
  font-size: 11px;
}
button.pill {
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid var(--theme-border);
  color: var(--theme-foreground);
  -webkit-text-fill-color: currentColor;
}
.hero-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 18px;
}
.hero-actions button,
.primary {
  border: 0;
  border-radius: 13px;
  padding: 13px 10px;
  color: var(--theme-on-gradient);
  font-weight: 700;
  background: linear-gradient(135deg, var(--brand), var(--brand2));
  box-shadow: 0 8px 20px rgba(0,0,0,.16);
}
.hero-actions .ghost {
  background: var(--theme-surface);
  border: 1px solid var(--theme-border);
}
.notice {
  margin: 12px 14px 0;
  padding: 11px 13px;
  border-radius: 13px;
  background: var(--card);
  color: var(--muted);
  font-size: 12px;
  box-shadow: 0 3px 16px rgba(0,0,0,.16);
}
.grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px 7px;
  padding: 18px 13px;
}
.grid button {
  border: 0;
  background: none;
  color: var(--ink);
  font-size: 11px;
}
.grid i {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  margin: 0 auto 7px;
  border-radius: 16px;
  background: linear-gradient(145deg, var(--theme-surface-alt), var(--card));
  font-style: normal;
  font-size: 22px;
  box-shadow: 0 6px 15px rgba(0,0,0,.16);
}
.section {
  padding: 0 14px 16px;
}
.section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 7px 0 11px;
}
.section-title h2 {
  font-size: 17px;
  margin: 0;
}
.section-title button {
  border: 0;
  background: none;
  color: var(--muted);
  font-size: 12px;
}
.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 14px;
  margin-bottom: 11px;
  box-shadow: 0 5px 18px rgba(0,0,0,.16);
}
.row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.sub {
  font-size: 12px;
  color: var(--muted);
  line-height: 1.6;
}
.price {
  color: var(--brand);
  font-weight: 800;
}
.tag {
  display: inline-block;
  padding: 4px 8px;
  border-radius: 8px;
  background: var(--theme-primary-soft);
  color: var(--brand);
  font-size: 10px;
}
.seat-history-row > div {
  flex: 1;
  min-width: 0;
  overflow-wrap: anywhere;
}
.seat-history-row > .tag {
  flex: 0 0 auto;
  white-space: nowrap;
}
.list-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 2px;
  border-bottom: 1px solid var(--line);
}
.list-item:last-child {
  border-bottom: 0;
}
.avatar {
  display: grid;
  place-items: center;
  flex: 0 0 46px;
  height: 46px;
  border-radius: 50%;
  background: linear-gradient(145deg, var(--theme-primary), var(--theme-accent));
  font-size: 22px;
  color: var(--theme-on-gradient);
}
.grow {
  flex: 1;
}
.list-item h3,
.card h3 {
  font-size: 14px;
  margin: 0 0 5px;
}
.right {
  color: var(--muted);
  font-size: 16px;
}
.tabbar {
  position: fixed;
  left: 50%;
  bottom: calc(var(--app-shell-bottom) + var(--tabbar-bottom-gap));
  z-index: 20;
  transform: translateX(-50%);
  width: min(100%, 480px);
  height: var(--tabbar-height);
  padding: 7px 8px;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  background: var(--theme-surface);
  border-top: 1px solid var(--line);
}
.tabbar button {
  display: flex;
  min-width: 0;
  padding: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 0;
  background: none;
  color: var(--theme-muted);
  font-size: 10px;
  line-height: 1.15;
}
.tabbar i {
  display: grid;
  width: 100%;
  height: 24px;
  place-items: center;
  font-style: normal;
  font-size: 20px;
  line-height: 0;
  margin-bottom: 4px;
}
.tabbar .active {
  color: var(--brand);
}
.banner {
  height: 135px;
  padding: 21px;
  border-radius: 18px;
  color: var(--theme-on-gradient);
  background: linear-gradient(120deg, var(--theme-primary), var(--theme-accent));
  overflow: hidden;
}
.banner h2 {
  margin: 8px 0;
  font-size: 22px;
}
.toolbar {
  display: flex;
  gap: 8px;
  padding: 10px 14px;
  overflow: auto;
}
.toolbar button,
.chip {
  white-space: nowrap;
  border: 1px solid var(--line);
  border-radius: 99px;
  padding: 8px 12px;
  background: var(--card);
  color: var(--ink);
  font-size: 12px;
}
.toolbar .active {
  background: var(--brand);
  color: var(--theme-on-primary);
  border-color: var(--brand);
}
.catalog-layout {
  min-width: 0;
}
body[data-current-route="order"] .catalog-layout {
  padding-bottom: calc(var(--order-cartbar-height) + var(--order-cartbar-gap) + 18px);
}
.catalog-layout-side {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 10px 14px 0;
}
.catalog-layout-side .catalog-categories {
  position: sticky;
  top: calc(var(--order-header-offset, 52px) + var(--order-context-height, 64px) + 10px);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  max-height: calc(100vh - var(--order-header-offset, 52px) - var(--order-context-height, 64px) - var(--tabbar-space) - var(--order-cartbar-height) - var(--order-cartbar-gap) - 24px);
  max-height: calc(100dvh - var(--order-header-offset, 52px) - var(--order-context-height, 64px) - var(--tabbar-space) - var(--order-cartbar-height) - var(--order-cartbar-gap) - 24px);
  padding: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--card);
  scrollbar-width: none;
}
.catalog-layout-side .catalog-categories::-webkit-scrollbar {
  display: none;
}
.catalog-layout-side .catalog-categories button {
  width: 100%;
  min-height: 50px;
  padding: 9px 8px;
  overflow: hidden;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--muted);
  text-align: center;
  text-overflow: ellipsis;
}
.catalog-layout-side .catalog-categories button:last-child {
  border-bottom: 0;
}
.catalog-layout-side .catalog-categories button.active {
  background: var(--theme-primary-soft);
  color: var(--brand);
  box-shadow: inset 3px 0 0 var(--brand);
  font-weight: 700;
}
.catalog-layout-side .catalog-products {
  min-width: 0;
  padding: 0 0 16px;
}
.catalog-layout-side .catalog-products .product {
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 9px;
  padding: 10px;
}
.catalog-layout-side .catalog-products .product .thumb {
  width: 64px;
  height: 64px;
}
.catalog-layout-side .catalog-products .product .quantity-control {
  grid-column: 2;
  justify-content: flex-end;
}
@media (max-width: 380px) {
  .catalog-layout-side {
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 8px;
    padding-right: 10px;
    padding-left: 10px;
  }
  .catalog-layout-side .catalog-categories button {
    padding-right: 5px;
    padding-left: 5px;
  }
  .catalog-layout-side .catalog-products .product {
    grid-template-columns: 56px minmax(0, 1fr);
    gap: 8px;
    padding: 9px;
  }
  .catalog-layout-side .catalog-products .product .thumb {
    width: 56px;
    height: 58px;
  }
}
.product {
  display: grid;
  grid-template-columns: 74px 1fr auto;
  gap: 11px;
  align-items: center;
}
.thumb {
  display: grid;
  place-items: center;
  width: 74px;
  height: 70px;
  border-radius: 13px;
  background: linear-gradient(145deg, var(--theme-surface-alt), var(--card));
  font-size: 29px;
}
.thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}
/* Bound the grid tracks so decoded images cannot grow past the thumbnail into product text. */
body[data-current-route="order"] .catalog-products > .product > .thumb {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  overflow: hidden;
}
body[data-current-route="order"] .catalog-products > .product > .thumb > img {
  display: block;
  min-width: 0;
  min-height: 0;
}
.quantity-control {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
}
.quantity-control > button:not(.add):not(.choose-spec) {
  width: 30px;
  height: 30px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--card);
  color: var(--brand);
  font-size: 19px;
}
.quantity-control .add:disabled {
  background: var(--theme-surface-strong);
  cursor: not-allowed;
}
.stock {
  display: block;
  margin-top: 4px;
  color: var(--muted);
}
.order-context-bar {
  position: sticky;
  top: var(--order-header-offset, 52px);
  z-index: 9;
  padding: 10px 14px 0;
  background: var(--bg);
}
html.miniapp-webview .order-context-bar { top: 0; }
.order-context {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 10px 12px;
  border-radius: 11px;
  background: var(--theme-surface-alt);
  color: var(--ink);
  font-size: 12px;
  line-height: 1.5;
}
.order-context.ok {
  background: var(--theme-surface-alt);
  color: var(--ink);
}
.order-context > span { flex: 1; min-width: 0; }
.order-scan-button {
  flex: none;
  min-height: 44px;
  padding: 0 14px;
  border: 0;
  border-radius: 12px;
  background: var(--brand);
  color: var(--theme-on-primary);
  font-weight: 700;
}
.order-scan-button:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }
.catalog-layout-top .catalog-categories {
  position: sticky;
  top: calc(var(--order-header-offset, 52px) + var(--order-context-height, 64px));
  z-index: 8;
  background: var(--bg);
}
.order-context.warning {
  background: #fff0f0;
  color: #a52b2b;
}
.order-card small {
  color: var(--muted);
}

.pickup-code{margin-top:7px;color:var(--theme-muted);font-size:10px;letter-spacing:.04em}.pickup-code b{display:inline-block;margin-left:5px;padding:3px 8px;border:1px solid var(--theme-border);border-radius:9px;background:var(--theme-primary-soft);color:var(--theme-foreground);font-size:14px;letter-spacing:.12em}.pickup-code-success{display:flex;margin:14px 0;padding:14px 16px;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-primary-soft)}.pickup-code-success span{color:var(--theme-muted);font-size:11px}.pickup-code-success strong{color:var(--theme-foreground);font-size:27px;letter-spacing:.16em;white-space:nowrap}
.add {
  display: inline-grid;
  flex: 0 0 30px;
  place-items: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--brand);
  color: var(--theme-on-primary);
  font-weight: 600;
  font-size: 20px;
  line-height: 1;
  text-align: center;
}
.cartbar {
  position: fixed;
  left: 50%;
  bottom: calc(var(--app-shell-bottom) + var(--tabbar-space) + var(--order-cartbar-gap));
  z-index: 19;
  transform: translateX(-50%);
  width: min(calc(100% - 28px), 452px);
  min-height: var(--order-cartbar-height);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin: 0;
  padding: 10px 12px;
  border-radius: 15px;
  background: var(--theme-surface-strong);
  color: var(--ink);
  box-shadow: 0 10px 28px rgba(0,0,0, .24);
}
.cartbar button {
  border: 0;
  border-radius: 10px;
  padding: 9px 15px;
  background: var(--brand);
  color: var(--theme-on-primary);
}
.form-row {
  margin-bottom: 15px;
}
.form-row label {
  display: block;
  margin-bottom: 7px;
  font-size: 13px;
  font-weight: 600;
}
.input {
  width: 100%;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 12px;
  background: var(--card);
  color: var(--ink);
}
.option-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 9px;
}
.option-grid button {
  border: 1px solid var(--line);
  border-radius: 11px;
  padding: 10px 4px;
  background: var(--card);
  color: var(--ink);
}
.option-grid .selected {
  border-color: var(--brand);
  color: var(--brand);
  background: var(--theme-primary-soft);
}
.asset-card {
  padding: 20px;
  color: var(--theme-on-gradient);
  background: linear-gradient(135deg, var(--theme-primary), var(--theme-accent));
  border-radius: 20px;
}
.asset-card strong {
  font-size: 28px;
}
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 9px;
  text-align: center;
}
.stats strong {
  display: block;
  font-size: 18px;
}
.rank {
  display: grid;
  grid-template-columns: 34px 42px 1fr auto;
  align-items: center;
  gap: 8px;
}
.rank-num {
  font-size: 18px;
  font-weight: 900;
  color: var(--theme-muted);
}
.rank:nth-child(2) .rank-num {
  color: #e0aa33;
}
.menu-card .list-item {
  cursor: pointer;
}
.coupon-offer-card {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  margin-top: 10px;
}
.coupon-offer-value {
  color: var(--theme-primary);
  font-size: 21px;
  font-weight: 900;
  line-height: 1;
  white-space: nowrap;
}
.coupon-offer-copy { min-width: 0; }
.coupon-offer-copy h3 { overflow-wrap: anywhere; }
.coupon-offer-action {
  min-width: 96px;
  min-height: 42px;
  padding: 10px 14px;
  border: 1px solid var(--theme-border);
  border-radius: 12px;
  background: var(--theme-surface);
  color: var(--theme-primary);
  font-size: 14px;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: .2px;
  text-align: center;
  white-space: nowrap;
}
.coupon-offer-action.primary {
  border-color: var(--theme-border);
  background: linear-gradient(135deg, var(--theme-primary), var(--theme-accent));
  color: var(--theme-on-gradient) !important;
  -webkit-text-fill-color: var(--theme-on-gradient);
  box-shadow: 0 7px 16px rgba(0,0,0, .28);
}
.coupon-offer-action.primary:active {
  transform: translateY(1px);
  box-shadow: 0 3px 9px rgba(0,0,0, .24);
}
.coupon-offer-action:disabled {
  border-color: var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-muted);
  -webkit-text-fill-color: var(--theme-muted);
  box-shadow: none;
}
@media (max-width: 380px) {
  .coupon-offer-card { grid-template-columns: 58px minmax(0, 1fr); }
  .coupon-offer-action { grid-column: 1 / -1; width: 100%; }
}
.empty {
  text-align: center;
  padding: 55px 20px;
  color: var(--muted);
}
.empty i {
  display: block;
  font-size: 55px;
  font-style: normal;
  opacity: 0.7;
}
.lottery {
  padding: 24px 14px;
  text-align: center;
  color: var(--theme-foreground);
  background: linear-gradient(160deg, var(--theme-surface-alt), var(--theme-surface-alt));
  min-height: calc(100vh - 116px);
}
.wheel {
  width: 260px;
  height: 260px;
  margin: 20px auto;
  border: 10px solid var(--theme-border);
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: conic-gradient(
    var(--theme-primary) 0 45deg,
    var(--theme-accent) 45deg 90deg,
    var(--theme-primary) 90deg 135deg,
    var(--theme-accent) 135deg 180deg,
    var(--theme-primary) 180deg 225deg,
    var(--theme-accent) 225deg 270deg,
    var(--theme-primary) 270deg 315deg,
    var(--theme-accent) 315deg
  );
  box-shadow: 0 0 30px rgba(0,0,0,.16);
  color: var(--theme-on-gradient);
}
.wheel button {
  width: 74px;
  height: 74px;
  border: 6px solid #fff2b0;
  border-radius: 50%;
  background: #e95371;
  color: var(--theme-foreground);
  font-weight: 800;
}
.wheel.drawing {
  animation: lottery-wheel-spin 0.85s cubic-bezier(0.22, 0.74, 0.26, 1) both;
}
.wheel button:disabled {
  cursor: not-allowed;
  opacity: 0.68;
}
.lottery-security-note {
  margin: 12px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--theme-border);
}
@keyframes lottery-wheel-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(1080deg); }
}
.friend {
  display: grid;
  grid-template-columns: 64px 1fr auto;
  gap: 12px;
  align-items: center;
}
.friend .avatar {
  height: 64px;
}
.switch {
  width: 43px;
  height: 24px;
  border: 0;
  border-radius: 20px;
  background: var(--theme-surface-strong);
  padding: 3px;
}
.switch:after {
  content: "";
  display: block;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--theme-surface);
}
.switch.on {
  background: var(--brand);
  color: var(--theme-on-primary);
}
.switch.on:after {
  margin-left: 19px;
}
.game-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.game-card {
  min-height: 130px;
  border: 0;
  border-radius: 17px;
  padding: 16px;
  text-align: left;
  color: var(--theme-on-gradient);
  background: linear-gradient(145deg, var(--theme-primary), var(--theme-accent));
}
.game-card i {
  display: block;
  font-style: normal;
  font-size: 30px;
}
.accordion h3 {
  cursor: pointer;
}
.accordion p {
  display: none;
}
.accordion.open p {
  display: block;
}
.modal {
  position: fixed;
  z-index: 50;
  inset: 0;
  display: grid;
  place-items: end center;
  background: #0008;
}
.modal[hidden] {
  display: none;
}
.sheet {
  width: min(100%, 480px);
  max-height: 80vh;
  overflow: auto;
  padding: 20px;
  border-radius: 22px 22px 0 0;
  background: var(--card);
  color: var(--ink);
}
.sheet h2 {
  margin-top: 0;
}
.modal-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-top: 18px;
}
.toast {
  position: fixed;
  z-index: 70;
  left: 50%;
  bottom: 90px;
  transform: translate(-50%, 15px);
  padding: 10px 16px;
  border-radius: 12px;
  background: var(--theme-surface-alt);
  color: var(--theme-foreground);
  font-size: 12px;
  opacity: 0;
  transition: 0.2s;
  pointer-events: none;
}
.toast.show {
  opacity: 1;
  transform: translate(-50%, 0);
}

body.scan-dialog-open {
  overflow: hidden;
}
.modal.scan-modal {
  z-index: 130;
  place-items: center;
  padding: 16px;
  background: color-mix(in srgb,var(--theme-surface) 90%,transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.scan-modal .sheet {
  width: min(100%, 430px);
  max-height: 94vh;
  max-height: 94dvh;
  padding: 0;
  overflow: auto;
  border: 1px solid color-mix(in srgb,var(--theme-border) 28%,transparent);
  border-radius: 28px;
  color: var(--theme-foreground);
  background: linear-gradient(165deg, var(--theme-surface-alt) 0%, var(--theme-surface) 56%, var(--theme-surface) 100%);
  box-shadow: 0 28px 90px rgba(0,0,0, .62), 0 0 50px rgba(0,0,0, .15);
}
.scan-card {
  padding: 22px;
}
.scan-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}
.scan-card-head span {
  color: var(--theme-primary);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .22em;
}
.scan-card-head h2 {
  margin: 5px 0 0;
  color: var(--theme-foreground);
  font-size: 24px;
}
.scan-card-head button {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  padding: 0;
  border: 1px solid color-mix(in srgb,var(--theme-border) 22%,transparent);
  border-radius: 50%;
  color: var(--theme-foreground);
  background: color-mix(in srgb,var(--theme-surface) 6%,transparent);
  font-size: 24px;
  line-height: 1;
}
.scan-stage {
  position: relative;
  aspect-ratio: 1 / .78;
  margin-top: 18px;
  overflow: hidden;
  border-radius: 20px;
  background: radial-gradient(circle at 50% 40%, var(--theme-surface-alt), var(--theme-surface) 75%);
}
.scan-stage::after {
  position: absolute;
  inset: 10% 12%;
  border: 2px solid color-mix(in srgb,var(--theme-border) 80%,transparent);
  border-radius: 18px;
  box-shadow: 0 0 0 999px rgba(0,0,0, .28);
  content: "";
}
.scan-stage video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.scan-stage i {
  position: absolute;
  z-index: 2;
  top: 20%;
  right: 18%;
  left: 18%;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, transparent, var(--theme-primary) 18%, var(--theme-accent) 82%, transparent);
  box-shadow: 0 0 18px rgba(0,0,0,.16);
  animation: scan-line 2.1s ease-in-out infinite;
  color: var(--theme-on-gradient);
}
.scan-stage b {
  position: absolute;
  z-index: 2;
  inset: 10% 12%;
  border-radius: 18px;
  background: linear-gradient(var(--theme-primary), var(--theme-accent)) left top / 26px 3px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) left top / 3px 26px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) right top / 26px 3px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) right top / 3px 26px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) left bottom / 26px 3px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) left bottom / 3px 26px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) right bottom / 26px 3px no-repeat,
    linear-gradient(var(--theme-accent), var(--theme-accent)) right bottom / 3px 26px no-repeat;
  color: var(--theme-on-gradient);
}
@keyframes scan-line {
  0%, 100% { transform: translateY(0); opacity: .55; }
  50% { transform: translateY(145px); opacity: 1; }
}
.scan-status {
  min-height: 38px;
  margin: 14px 2px 8px;
  color: var(--theme-muted);
  font-size: 13px;
  line-height: 1.55;
  text-align: center;
}
.scan-status.error {
  color: #ff9db8;
}
.scan-primary,
.scan-upload {
  display: grid;
  width: 100%;
  min-height: 48px;
  place-items: center;
  box-sizing: border-box;
  border: 0;
  border-radius: 999px;
  font-weight: 750;
}
.scan-primary {
  color: var(--theme-on-gradient);
  background: linear-gradient(90deg, var(--theme-primary), var(--theme-accent));
  box-shadow: 0 12px 30px rgba(0,0,0, .24);
}
.scan-upload {
  margin-top: 10px;
  border: 1px solid color-mix(in srgb,var(--theme-border) 38%,transparent);
  color: var(--theme-on-primary);
  background: color-mix(in srgb,var(--theme-primary) 8%,transparent);
  cursor: pointer;
}
.scan-upload input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
.scan-manual {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  margin-top: 12px;
}
.scan-manual .input {
  min-width: 0;
  border-color: color-mix(in srgb,var(--theme-border) 12%,transparent);
  color: var(--theme-foreground);
  background: color-mix(in srgb,var(--theme-surface) 6%,transparent);
}
.scan-manual button {
  padding: 0 18px;
  border: 0;
  border-radius: 12px;
  color: var(--theme-on-primary);
  background: var(--theme-primary);
}
.scan-safe-tip {
  margin: 12px 6px 0;
  color: var(--theme-muted);
  font-size: 11px;
  line-height: 1.55;
  text-align: center;
}
@media (max-width: 370px) {
  .modal.scan-modal { padding: 10px; }
  .scan-card { padding: 18px; }
  .scan-card-head h2 { font-size: 21px; }
}
.progress {
  height: 8px;
  border-radius: 9px;
  background: var(--theme-surface);
}
.progress i {
  display: block;
  height: 100%;
  border-radius: 9px;
  background: linear-gradient(90deg, var(--brand), var(--theme-primary));
  color: var(--theme-on-gradient);
}
@media (min-width: 700px) {
  :root {
    --app-shell-bottom: 20px;
  }
  body {
    padding: 20px;
  }
  .phone-app {
    min-height: calc(100vh - 40px);
    border-radius: 28px;
    overflow: hidden;
  }
  .tabbar {
    border-radius: 0 0 28px 28px;
  }
}
.member-login-hero{padding:34px 24px;border-radius:22px;text-align:center;color:var(--theme-foreground);background:radial-gradient(circle at top,var(--theme-primary-soft),var(--theme-surface-alt) 70%);box-shadow:0 18px 40px rgba(0,0,0,.16)}.member-login-hero.compact{border-radius:18px 18px 8px 8px;padding:26px 20px}.member-login-hero>i{display:grid;place-items:center;width:58px;height:58px;margin:0 auto 14px;border:1px solid var(--theme-border);border-radius:18px;color:var(--theme-foreground);background:var(--theme-surface);font:700 30px Georgia,serif;font-style:normal}.member-login-hero h2{margin:0 0 8px}.member-login-hero p{margin:0 0 20px;color:var(--theme-muted);font-size:13px;line-height:1.7}.member-login-hero.compact p{margin-bottom:0}.member-login-hero button{width:100%;margin-top:8px}.wechat-login{height:44px;border:1px solid var(--theme-primary);border-radius:11px;background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-weight:700}.login-form{margin-top:12px}.login-form label{display:block;margin-bottom:16px;color:var(--theme-muted);font-size:12px;font-weight:700}.login-form .input{margin-top:8px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:18px;padding:4px;border-radius:12px;background:var(--theme-surface)}.auth-tabs button{min-height:38px;border:0;border-radius:9px;background:transparent;color:var(--theme-muted);font-size:13px;font-weight:700}.auth-tabs button.active{background:var(--theme-surface);color:var(--theme-primary);box-shadow:0 3px 12px rgba(0,0,0,.16)}.login-panel[hidden]{display:none!important}.code-line{display:grid;grid-template-columns:1fr 105px;gap:8px}.code-line button{margin-top:8px;border:0;border-radius:10px;background:var(--theme-surface);color:var(--theme-primary);font-size:12px;font-weight:700}.code-line button:disabled{opacity:.55}.login-link{display:block;margin:12px auto 0;padding:8px;border:0;background:transparent;color:var(--theme-primary);font-size:12px;font-weight:700}.reset-hint{margin:0 0 14px;padding:10px 12px;border-radius:10px;background:var(--theme-surface);color:var(--theme-muted);font-size:12px;line-height:1.6}.login-divider{display:flex;align-items:center;gap:10px;margin:18px 0 12px;color:var(--theme-muted);font-size:12px}.login-divider:before,.login-divider:after{content:"";height:1px;flex:1;background:var(--theme-surface-strong)}.login-form>.wechat-login{width:100%}.agreement{text-align:center;margin:14px 0 0}
.price-start {
  margin-left: 3px;
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
  font-weight: 500;
}
.quantity-control > .choose-spec {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: auto;
  min-width: 66px;
  height: 32px;
  padding: 0 12px;
  border: 0;
  border-radius: 16px;
  background: var(--brand);
  color: var(--theme-on-primary);
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  text-align: center;
  white-space: nowrap;
  word-break: keep-all;
}
.choose-spec:disabled {
  background: var(--theme-surface-strong);
}
.choose-spec i {
  position: absolute;
  top: -8px;
  right: -6px;
  min-width: 19px;
  height: 19px;
  padding: 0 5px;
  border: 2px solid var(--theme-border);
  border-radius: 10px;
  background: #eb5b70;
  color: var(--theme-foreground);
  font-size: 10px;
  font-style: normal;
  line-height: 15px;
  text-align: center;
}
.sku-list {
  display: grid;
  gap: 10px;
}
.sku-option {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--card);
}
.sku-option > div:first-child {
  min-width: 0;
}
.sku-option b,
.sku-option small,
.sku-option .price {
  display: block;
}
.sku-option small {
  margin: 4px 0;
  color: var(--muted);
  font-size: 11px;
}
.sku-quantity {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}
.sku-quantity > button:not(.add) {
  width: 30px;
  height: 30px;
  border: 1px solid var(--line);
  border-radius: 50%;
  background: var(--card);
  color: var(--brand);
  font-size: 19px;
}
.sku-quantity .add:disabled {
  background: var(--theme-surface-strong);
}
.quantity-control.is-stepper,
.sku-quantity.is-stepper {
  width: max-content;
  max-width: 100%;
  justify-self: end;
  gap: 6px;
  min-height: 36px;
  padding: 2px 3px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--theme-surface-strong);
}
.quantity-control.is-stepper > b,
.sku-quantity.is-stepper > b {
  min-width: 20px;
  color: var(--ink);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  text-align: center;
}
.quantity-control.is-stepper > button:not(.choose-spec),
.sku-quantity.is-stepper > button {
  border: 0;
  box-shadow: none;
}
.quantity-control.is-stepper > button:not(.add):not(.choose-spec),
.sku-quantity.is-stepper > button:not(.add) {
  background: var(--card);
  color: var(--muted);
}
.quantity-control .add:disabled,
.sku-quantity .add:disabled {
  background: var(--line);
  color: var(--muted);
}
.checkout-lines {
  margin: 14px 0;
  padding: 4px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.checkout-line {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 9px 0;
  color: var(--muted);
  font-size: 13px;
}
.checkout-line b {
  flex: 0 0 auto;
  color: var(--ink);
}
.checkout-total {
  text-align: right;
}


/* v0.8.0-alpha.12.6: render the published DIY document inside the existing customer SPA home route. */
body.customer-diy-home {
  background: var(--diy-page-background, #080718);
}
.phone-app.diy-home-shell {
  width: min(100%, 540px);
  min-height: 100vh;
  padding-bottom: calc(74px + var(--safe));
  background: var(--diy-page-background, #080718);
}
.phone-app.diy-home-shell .page-view {
  min-height: 100vh;
}
.phone-app.diy-home-shell .page-view.diy-document {
  width: 100%;
  margin: 0;
  padding-bottom: calc(92px + env(safe-area-inset-bottom, 0px));
}
body.customer-diy-home .tabbar {
  width: min(100%, 540px);
  border-top-color: color-mix(in srgb,var(--theme-border) 8%,transparent);
  background: color-mix(in srgb,var(--theme-background) 96%,transparent);
  backdrop-filter: blur(14px);
}
body.customer-diy-home .tabbar button {
  color: var(--theme-muted);
}
body.customer-diy-home .tabbar .active {
  color: var(--diy-primary, #7956ff);
}
body.customer-diy-home .diy-component[data-component="bottomNav"] {
  display: none;
}
.diy-home-loading {
  display: grid;
  min-height: 100vh;
  place-items: center;
  padding: 30px;
  background: var(--theme-surface);
  color: var(--theme-muted);
  font-size: 13px;
}
@media (max-width: 699px) {
  .phone-app.diy-home-shell {
    width: 100%;
    box-shadow: none;
  }
}

/* v0.8.0-alpha.12.9 基础可用性 */
button.generic-item {
  width: 100%;
  border: 0;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
button.generic-item:active {
  background: var(--theme-surface);
}
.profile-form label {
  display: block;
  margin-bottom: 14px;
  color: var(--theme-muted);
  font-size: 12px;
  font-weight: 700;
}
.profile-form .input {
  margin-top: 7px;
}

/* v0.8.0-alpha.12.9.4: global DIY theme, independent navigation and startup page. */
.tabbar{background:var(--tabbar-bg,#fff)}
.tabbar button{color:var(--tabbar-text,#9a96a1)}
.tabbar .active{color:var(--tabbar-active,var(--brand))}
.tabbar.dock{width:min(calc(100% - 20px),460px);border:1px solid var(--tabbar-border,rgba(111,91,156,.2));border-radius:18px;box-shadow:0 10px 28px rgba(0,0,0,.24);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.tabbar.classic{bottom:var(--app-shell-bottom);padding:5px 8px var(--safe);border-radius:0;box-shadow:none}
body.customer-diy-home .tabbar.dock{width:min(calc(100% - 20px),520px)}
body.customer-diy-home .tabbar{background:var(--tabbar-bg,rgba(12,10,31,.96))}
body.customer-diy-home .tabbar button{color:var(--tabbar-text,#817c91)}
body.customer-diy-home .tabbar .active{color:var(--tabbar-active,var(--diy-primary,#7956ff))}
.global-splash{position:fixed;inset:0;z-index:9999;overflow:hidden;background:var(--theme-surface);transition:opacity .25s,transform .25s}
.global-splash.leaving{opacity:0;transform:scale(1.02)}
.global-splash>img,.global-splash>video,.global-splash-fallback{width:100%;height:100%;object-fit:cover}
.global-splash-fallback{display:grid;place-items:center;background:radial-gradient(circle at 50% 35%,var(--theme-primary),var(--theme-accent) 62%);color:var(--theme-on-gradient);font-size:72px}
.global-splash-shade{position:absolute;inset:0;background:linear-gradient(transparent 40%,color-mix(in srgb,var(--theme-surface) 78%,transparent))}
.global-splash-skip{position:absolute;top:calc(18px + env(safe-area-inset-top,0px));right:16px;z-index:2;padding:7px 11px;border:1px solid color-mix(in srgb,var(--theme-border) 28%,transparent);border-radius:30px;background:color-mix(in srgb,var(--theme-surface) 28%,transparent);color:var(--theme-foreground);font-size:11px;backdrop-filter:blur(8px)}
.global-splash-copy{position:absolute;right:24px;bottom:calc(48px + env(safe-area-inset-bottom,0px));left:24px;color:var(--theme-foreground);text-align:center}
.global-splash-copy h2{margin:0;font-size:26px}.global-splash-copy p{margin:9px 0 0;color:color-mix(in srgb,var(--theme-foreground) 76%,transparent);font-size:13px}
.global-splash-media-controls{position:absolute;z-index:2;top:50%;left:24px;right:24px;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.global-splash-media-status{margin:0;padding:8px 14px;border-radius:12px;background:color-mix(in srgb,var(--theme-surface) 88%,transparent);color:var(--theme-foreground);font-size:14px;line-height:1.5}
.global-splash-media-controls button{min-width:144px;min-height:44px;padding:10px 20px;border:1px solid var(--theme-border);border-radius:24px;font-size:14px;font-weight:600;line-height:1.5;cursor:pointer}
.global-splash-play{background:var(--theme-primary);color:var(--theme-on-primary)}
.global-splash-continue{background:var(--theme-surface);color:var(--theme-foreground)}
.global-splash-media-controls [hidden]{display:none}
.global-splash-media-controls button:focus-visible{outline:2px solid var(--theme-foreground);outline-offset:4px}

#tabs button i img{width:24px;height:24px;object-fit:contain;display:block;margin:auto}#tabs.no-shadow{box-shadow:none!important}

/* SVG bottom navigation icons */
#tabs button i svg{display:block;width:24px;height:24px;margin:auto}

/* v0.8.0-alpha.12.9.9: scene-aware order layout and product detail */
body[data-current-route="order"][data-order-layout="large"] .section>.product{display:block;padding:0;overflow:hidden}
body[data-current-route="order"][data-order-layout="large"] .section>.product .thumb{width:100%;height:170px;border-radius:14px 14px 0 0;cursor:pointer}
body[data-current-route="order"][data-order-layout="large"] .section>.product>div:nth-child(2){padding:12px}
body[data-current-route="order"][data-order-layout="large"] .section>.product .quantity-control{padding:0 12px 12px}
body[data-current-route="order"][data-order-layout="grid"] .section{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
body[data-current-route="order"][data-order-layout="grid"] .section>.product{display:block;min-width:0;padding:0;overflow:hidden}
body[data-current-route="order"][data-order-layout="grid"] .section>.product .thumb{width:100%;height:120px;border-radius:13px 13px 0 0;cursor:pointer}
body[data-current-route="order"][data-order-layout="grid"] .section>.product>div:nth-child(2){padding:10px}
body[data-current-route="order"][data-order-layout="grid"] .section>.product .quantity-control{justify-content:space-between;padding:0 10px 10px}
body[data-current-route="order"][data-order-layout="grid"] .section>.product h3{font-size:13px}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products{display:block}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products>.product{display:grid;grid-template-columns:64px minmax(0,1fr);gap:9px;min-width:0;padding:10px;overflow:visible}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products>.product .thumb{width:64px;height:64px;border-radius:13px;cursor:pointer}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products>.product>div:nth-child(2){min-width:0;padding:0}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products>.product .quantity-control{grid-column:2;justify-content:flex-end;padding:0}
@media (max-width:380px){body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products>.product{grid-template-columns:56px minmax(0,1fr);gap:8px;padding:9px}body[data-current-route="order"][data-order-layout="list"][data-category-layout="side"] .catalog-products>.product .thumb{width:56px;height:58px}}
.product-detail-skus{display:grid;gap:8px;margin-top:14px}.product-detail-skus>div{display:grid;grid-template-columns:1fr auto;gap:3px 12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}.product-detail-skus span{font-weight:600}.product-detail-skus b{color:var(--brand,#7956ff)}.product-detail-skus small{grid-column:1/-1;color:var(--muted)}

/* v0.8.0-alpha.15.5: real member-center business pages */
.wine-card{display:block}.wine-card+.wine-card{margin-top:10px}
button.message-card{display:block;width:100%;margin:0 0 10px;border:0;text-align:left;color:inherit;cursor:pointer}
.message-card.unread{box-shadow:inset 3px 0 0 var(--brand,#7956ff),0 7px 20px rgba(0,0,0,.06)}
.message-card p{margin:8px 0;line-height:1.6;display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.message-dot{width:8px;height:8px;border-radius:50%;background:#ff416c;box-shadow:0 0 0 4px rgba(255,65,108,.12)}
.profile-form label.row{display:flex}.profile-form input[type="checkbox"]{width:20px;height:20px;accent-color:var(--brand,#7956ff)}
.product .thumb img{width:100%;height:100%;object-fit:cover;border-radius:inherit}

/* v0.8.0-alpha.15.6: reservation and order self-service */
.order-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.order-actions button{min-height:40px;flex:1 1 calc(50% - 5px)}
.reservation-card{display:block}.reservation-card+.reservation-card{margin-top:10px}
.reservation-cancel{display:block;margin:12px 0 0 auto;padding:8px 13px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface);color:var(--theme-muted);cursor:pointer}
.rank .avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%}

/* v0.8.0-alpha.15.30.7: real-data ranking experience */
body[data-current-route="ranking"] .phone-app{background:var(--theme-background);color:var(--theme-foreground)}
body[data-current-route="ranking"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 96%,transparent);color:var(--theme-foreground)}
body[data-current-route="ranking"] .page-header .head-btn{max-width:116px;overflow:hidden;color:var(--theme-primary);text-overflow:ellipsis;white-space:nowrap}
body[data-current-route="ranking"] .page-header .ranking-rule-button{max-width:none;padding:7px 0}
body[data-current-route="ranking"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
body[data-current-route="ranking"] .tabbar button{color:var(--theme-muted)}
body[data-current-route="ranking"] .tabbar .active{color:var(--theme-primary)}
.ranking-page{min-height:calc(100vh - 52px);padding:14px 14px calc(var(--tabbar-space) + 92px);background:var(--theme-surface);color:var(--theme-foreground)}
.ranking-hero{padding:2px 0 18px}
.ranking-mode-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-width:320px;margin:0 auto 12px;padding:4px;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt)}
.ranking-mode-tabs button{min-height:42px;border:0;border-radius:12px;background:transparent;color:var(--theme-muted);font-size:16px;font-weight:800;cursor:pointer}
.ranking-mode-tabs button.active{background:var(--theme-primary);color:var(--theme-on-primary);box-shadow:0 7px 20px rgba(0,0,0,.35)}
.ranking-period-tabs{display:flex;justify-content:center;gap:4px;width:max-content;margin:0 auto;padding:4px;border-radius:999px;background:var(--theme-surface-alt)}
.ranking-period-tabs button{min-width:68px;min-height:34px;padding:0 14px;border:0;border-radius:999px;background:transparent;color:var(--theme-muted);font-size:13px;font-weight:700;cursor:pointer}
.ranking-period-tabs button.active{background:var(--theme-primary);color:var(--theme-on-primary)}
.ranking-period-caption{width:max-content;margin:0 auto;padding:9px 18px;border-radius:999px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:13px;font-weight:700}
.ranking-trust{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding:11px 13px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface-alt)}
.ranking-trust b{color:var(--theme-primary);font-size:12px}.ranking-trust span{color:var(--theme-muted);font-size:11px;text-align:right}
.ranking-loading{display:grid;place-items:center;gap:10px;min-height:300px;color:var(--theme-muted);font-size:13px}
.ranking-loading span{width:34px;height:34px;border:3px solid var(--theme-border);border-top-color:var(--theme-border);border-radius:50%;animation:ranking-spin .8s linear infinite}
@keyframes ranking-spin{to{transform:rotate(360deg)}}
.ranking-results{display:block}
.ranking-podium{display:flex;align-items:flex-end;justify-content:center;gap:8px;padding:18px 0 16px}
.ranking-podium-card{position:relative;order:1;flex:1 1 0;min-width:0;padding:15px 7px 13px;border:1px solid var(--theme-border);border-radius:20px 20px 14px 14px;background:var(--theme-surface-alt);text-align:center;box-shadow:0 12px 28px rgba(0,0,0,.2)}
.ranking-podium-card.place-1{order:2;padding-top:20px;border-color:var(--theme-border);background:var(--theme-surface-alt)}
.ranking-podium-card.place-2{order:1;background:var(--theme-surface-alt)}
.ranking-podium-card.place-3{order:3;background:var(--theme-surface-alt)}
.ranking-podium-count-1 .ranking-podium-card{flex:0 1 58%}
.ranking-podium-count-2 .ranking-podium-card{flex:0 1 42%}
.ranking-top-label{margin-bottom:9px;color:var(--theme-muted);font-size:9px;font-weight:900;letter-spacing:1.4px}
.ranking-podium-card.place-1 .ranking-top-label{color:#ffd66f}
.ranking-podium-avatar{position:relative;display:grid;place-items:center;width:70px;height:70px;margin:0 auto 11px;border:3px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt);overflow:visible}
.ranking-podium-card.place-1 .ranking-podium-avatar{width:88px;height:88px;border:4px solid #f1bf58;box-shadow:0 0 0 5px rgba(241,191,88,.12)}
.ranking-podium-card.place-2 .ranking-podium-avatar{border-color:#aab8de}
.ranking-podium-card.place-3 .ranking-podium-avatar{border-color:#d69d7d}
.ranking-podium-avatar img,.ranking-list-avatar img,.ranking-self-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.ranking-avatar-fallback{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;background:var(--theme-primary);color:var(--theme-on-primary);font-size:24px;font-weight:900}
.ranking-podium-avatar>b{position:absolute;right:-3px;bottom:-5px;display:grid;place-items:center;width:25px;height:25px;border:2px solid var(--theme-border);border-radius:50%;background:var(--theme-primary-soft);color:var(--theme-foreground);font-size:12px}
.ranking-podium-card.place-1 .ranking-podium-avatar>b{background:#d99d28;color:#fff7d3}.ranking-podium-card.place-2 .ranking-podium-avatar>b{background:#6c7ca7}.ranking-podium-card.place-3 .ranking-podium-avatar>b{background:#a96e55}
.ranking-podium-card h3{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;margin:0;overflow:hidden;color:var(--theme-foreground);font-size:14px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}
.ranking-podium-card p{display:grid;gap:3px;margin:7px 0 0}.ranking-podium-card p span{color:var(--theme-muted);font-size:10px}.ranking-podium-card p strong{color:var(--theme-foreground);font-size:12px;white-space:nowrap}
.ranking-podium-card.place-1 p strong{color:#ffe08a;font-size:13px}
.ranking-gender{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:22px;height:18px;padding:0 5px;border-radius:9px;background:var(--theme-surface-alt);color:#aeb5ff;font-size:9px;font-weight:800}
.ranking-gender.female{background:#4b2948;color:#f0a8df}.ranking-gender.male{background:#28385b;color:#aabfff}
.ranking-list-panel{overflow:hidden;border:1px solid var(--theme-border);border-radius:21px;background:var(--theme-surface-alt);box-shadow:0 18px 42px rgba(0,0,0,.18)}
.ranking-list-panel>header{display:flex;align-items:flex-end;justify-content:space-between;padding:18px 16px 13px;border-bottom:1px solid var(--theme-border)}
.ranking-list-panel>header span{color:var(--theme-primary);font-size:9px;font-weight:900;letter-spacing:1.8px}.ranking-list-panel>header h2{margin:4px 0 0;font-size:18px}.ranking-list-panel>header p{margin:0;color:var(--theme-muted);font-size:10px}
.ranking-list-rows{padding:2px 13px 8px}
.ranking-list-row{display:grid;grid-template-columns:40px 42px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:69px;border-bottom:1px solid var(--theme-border)}
.ranking-list-row:last-child{border-bottom:0}
.ranking-list-number{color:var(--theme-primary);font-size:13px;font-variant-numeric:tabular-nums}
.ranking-list-avatar{width:42px;height:42px;border:2px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt);overflow:hidden}.ranking-list-avatar .ranking-avatar-fallback{font-size:16px}
.ranking-list-person{min-width:0}.ranking-list-person h3{display:flex;align-items:center;gap:5px;min-width:0;margin:0 0 4px;overflow:hidden;color:var(--theme-foreground);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.ranking-list-person>span{color:var(--theme-muted);font-size:10px}
.ranking-list-row>strong{color:var(--theme-foreground);font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.ranking-list-short{padding:24px 8px;color:var(--theme-muted);font-size:12px;text-align:center}
.ranking-list-end{padding:20px 8px 16px;color:var(--theme-muted);font-size:11px;text-align:center}
.ranking-self{position:fixed;left:50%;bottom:calc(var(--app-shell-bottom) + var(--tabbar-space));z-index:19;display:grid;grid-template-columns:minmax(0,1fr) 40px minmax(56px,.72fr) auto;align-items:center;gap:9px;transform:translateX(-50%);width:min(calc(100% - 16px),464px);min-height:68px;padding:10px 13px;border:1px solid var(--theme-border);border-radius:17px 17px 0 0;background:color-mix(in srgb,var(--theme-surface-strong) 98%,transparent);color:var(--theme-foreground);text-align:left;box-shadow:0 -10px 28px rgba(0,0,0,.3);cursor:pointer}
.ranking-self-place{display:grid;gap:3px;min-width:0}.ranking-self-place b{font-size:14px}.ranking-self-place small{overflow:hidden;color:var(--theme-muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.ranking-self-avatar{display:block;width:40px;height:40px;border:2px solid var(--theme-border);border-radius:50%;overflow:hidden}.ranking-self-avatar .ranking-avatar-fallback{font-size:15px}
.ranking-self-name{overflow:hidden;color:var(--theme-muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.ranking-self>strong{color:#fff1b0;font-size:12px;white-space:nowrap}
.ranking-self.guest{grid-template-columns:minmax(0,1fr) auto}.ranking-self.guest>strong{padding:8px 13px;border-radius:999px;background:var(--theme-primary);color:var(--theme-on-primary)}
.ranking-empty{display:grid;gap:8px;place-items:center;min-height:260px;padding:30px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface-alt);text-align:center}.ranking-empty b{font-size:16px}.ranking-empty span{max-width:280px;color:var(--theme-muted);font-size:12px;line-height:1.6}.ranking-empty button{margin-top:8px;padding:10px 18px;border:0;border-radius:999px;background:var(--theme-primary);color:var(--theme-on-primary);font-weight:700}
@media(max-width:370px){.ranking-page{padding-right:10px;padding-left:10px}.ranking-podium{gap:5px}.ranking-podium-card{padding-right:4px;padding-left:4px}.ranking-podium-avatar{width:62px;height:62px}.ranking-podium-card.place-1 .ranking-podium-avatar{width:78px;height:78px}.ranking-list-row{grid-template-columns:34px 38px minmax(0,1fr) auto;gap:8px}.ranking-list-avatar{width:38px;height:38px}.ranking-self{grid-template-columns:minmax(0,1fr) 36px auto}.ranking-self-name{display:none}.ranking-self-avatar{width:36px;height:36px}}

/* v0.8.0-alpha.15.7: visual table-map reservation */
body[data-current-route="reservation"]{overflow-x:hidden}
body[data-current-route="reservation"] .phone-app,body[data-current-route="reservation"] .page-view{width:100%;max-width:100%;overflow-x:hidden}
body[data-current-route="reservation"] .phone-app{background:var(--theme-background)}
body[data-current-route="reservation"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 96%,transparent);color:var(--theme-foreground)}
body[data-current-route="reservation"] .page-header .head-btn{color:var(--theme-primary)}
body[data-current-route="reservation"] .tabbar{border-top-color:var(--theme-primary)!important;background:var(--theme-background)!important}
body[data-current-route="reservation"] .tabbar button{color:var(--theme-muted)!important}
body[data-current-route="reservation"] .tabbar .active{color:var(--theme-primary)!important}
.reservation-experience{width:100%;max-width:100%;min-width:0;min-height:100vh;padding:14px 14px 42px;overflow-x:hidden;background:var(--theme-surface);color:var(--theme-foreground)}
.reservation-store-card{padding:16px 4px 18px;border-bottom:1px solid var(--theme-border)}
.reservation-store-card>span,.reservation-map-title>div>span,.reservation-record-title>span{color:var(--theme-primary);font-size:9px;font-weight:800;letter-spacing:2px}
.reservation-store-card .row{align-items:flex-start;margin-top:8px}
.reservation-store-card h2{margin:0 0 6px;font-size:22px;line-height:1.2}
.reservation-store-card p{max-width:270px;margin:0;color:var(--theme-muted);font-size:12px;line-height:1.5}
.reservation-store-card button{flex:0 0 auto;padding:8px 11px;border:1px solid var(--theme-border);border-radius:18px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:11px;font-weight:700}
.reservation-filter-card{width:100%;max-width:100%;min-width:0;margin:14px 0 20px;padding:14px;overflow:hidden;border:1px solid var(--theme-border);border-radius:18px;background:var(--theme-surface-alt)}
.reservation-filter-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.reservation-filter-title b{font-size:15px}.reservation-filter-title span{color:var(--theme-primary);font-size:12px;font-weight:700}
.reservation-day-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.reservation-day-strip button{display:grid;gap:2px;place-items:center;min-width:0;padding:9px 3px;border:1px solid transparent;border-radius:12px;background:var(--theme-surface-alt);color:var(--theme-foreground)}
.reservation-day-strip button span,.reservation-day-strip button small{color:var(--theme-muted);font-size:10px}.reservation-day-strip button b{font-size:20px;line-height:1.1}
.reservation-day-strip button.selected{border-color:var(--theme-primary);background:var(--theme-primary);box-shadow:0 8px 20px rgba(0,0,0,.32);color: var(--theme-on-primary)}
.reservation-day-strip button.selected span,.reservation-day-strip button.selected small{color:var(--theme-foreground)}
.reservation-quick-filters{display:grid;gap:12px;margin-top:15px;padding-top:14px;border-top:1px solid var(--theme-border)}
.reservation-quick-filters label,.reservation-quick-filters label>div{width:100%;max-width:100%;min-width:0}
.reservation-quick-filters label>span{display:block;margin-bottom:8px;color:var(--theme-muted);font-size:11px;font-weight:700}
.reservation-quick-filters label>div{display:grid;gap:7px;overflow:visible;padding:0}.reservation-quick-filters label:first-child>div{grid-template-columns:repeat(5,minmax(0,1fr))}.reservation-quick-filters label:last-child>div{grid-template-columns:repeat(3,minmax(0,1fr))}
.reservation-quick-filters button{width:100%;min-width:0;padding:8px 4px;border:1px solid var(--theme-border);border-radius:9px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:11px;font-weight:700;white-space:nowrap}
.reservation-quick-filters button.selected{border-color:var(--theme-primary);background:var(--theme-surface-alt);color:var(--theme-foreground)}
.reservation-map-title{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 2px 10px}
.reservation-map-title h2,.reservation-record-title h2{margin:4px 0 0;font-size:19px}
.reservation-map-title p{display:flex;align-items:center;gap:4px;margin:0;color:var(--theme-muted);font-size:9px;white-space:nowrap}
.reservation-map-title p i{width:7px;height:7px;border-radius:50%;background:#48d597}.reservation-map-title p i:nth-of-type(2){margin-left:4px;background:var(--theme-surface-strong)}
.reservation-table-map{display:grid;gap:14px}
.reservation-map-loading,.reservation-map-empty{display:grid;gap:9px;place-items:center;min-height:180px;padding:28px;border:1px solid var(--theme-border);border-radius:18px;background:var(--theme-surface-alt);color:var(--theme-muted);text-align:center}
.reservation-map-loading span{width:28px;height:28px;border:3px solid var(--theme-border);border-top-color:var(--theme-border);border-radius:50%;animation:reservation-spin .8s linear infinite}
@keyframes reservation-spin{to{transform:rotate(360deg)}}
.reservation-map-empty b{color:var(--theme-foreground);font-size:15px}.reservation-map-empty span{font-size:11px;line-height:1.6}.reservation-map-empty .pill{border:1px solid var(--theme-border);background:var(--theme-surface-alt);color:var(--theme-foreground)}
.reservation-table-card{padding:14px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface-alt);transition:border-color .18s,box-shadow .18s,transform .18s}
.reservation-table-card.selected{border-color:var(--theme-primary);box-shadow:0 0 0 2px rgba(0,0,0,.16),0 16px 38px rgba(0,0,0,.28);transform:translateY(-1px)}
.reservation-table-card.unavailable{background:var(--theme-surface);color:var(--theme-muted)}
.reservation-table-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.reservation-table-heading span{color:var(--theme-muted);font-size:10px}.reservation-table-heading h3{margin:4px 0 0;font-size:19px}
.reservation-capacity{text-align:right}.reservation-capacity b{display:block;color:#e5ff54;font-size:15px}.reservation-capacity small{color:var(--theme-muted);font-size:9px}
.reservation-table-stage{position:relative;height:262px;margin:8px 0 3px;overflow:hidden}
.reservation-table-stage:before{content:"";position:absolute;inset:28% 15% 25%;border:1px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt)}
.reservation-table-core{position:absolute;top:50%;left:50%;z-index:2;display:grid;gap:4px;place-items:center;width:48%;height:34%;transform:translate(-50%,-50%);border:1px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt);color:var(--theme-foreground);box-shadow:0 14px 35px rgba(0,0,0,.22)}
.reservation-table-core strong{font-size:16px}.reservation-table-core span{color:var(--theme-primary);font-size:10px}.reservation-table-core small{color:var(--theme-muted);font-size:9px}
.reservation-table-core:not(:disabled):active{transform:translate(-50%,-50%) scale(.97)}
.reservation-table-core:disabled{border-color:var(--theme-border);background:var(--theme-surface-alt);color:var(--theme-muted)}
.reservation-seat{position:absolute;z-index:3;display:grid;gap:2px;place-items:center;width:54px;min-height:54px;padding:6px 4px;transform:translate(-50%,-50%);border:1px solid var(--theme-border);border-radius:9px;background:var(--theme-surface-alt);color:var(--theme-foreground);box-shadow:0 7px 18px rgba(0,0,0,.22)}
.reservation-seat b{font-size:13px}.reservation-seat small{font-size:9px}.reservation-seat.available small{color:#72e2ab}.reservation-seat.available:active{transform:translate(-50%,-50%) scale(.95)}
.reservation-seat.occupied,.reservation-seat.disabled{border-color:var(--theme-border);background:var(--theme-surface-strong);color:var(--theme-muted)}.reservation-seat.occupied small,.reservation-seat.disabled small{color:var(--theme-muted)}
.reservation-table-card.selected .reservation-seat.available{border-color:var(--theme-primary);background:var(--theme-surface-alt)}.reservation-table-card.selected .reservation-table-core{border-color:var(--theme-primary);background:var(--theme-primary);color: var(--theme-on-primary)}
.reservation-table-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:10px;border-top:1px solid var(--theme-border);color:var(--theme-muted);font-size:10px}
.reservation-status{padding:4px 7px;border-radius:6px;font-weight:800}.reservation-status.open{background:#17382b;color:#6ee4ad}.reservation-status.closed{background:var(--theme-surface-strong);color:var(--theme-muted)}
.reservation-submit-card{margin-top:16px;padding:15px;border:1px solid var(--theme-border);border-radius:19px;background:var(--theme-surface-alt)}
.reservation-selection{display:grid;gap:4px;margin-bottom:15px;padding:12px;border:1px dashed var(--theme-border);border-radius:13px;background:var(--theme-surface-alt);color:var(--theme-muted)}
.reservation-selection span{font-size:10px}.reservation-selection b{color:var(--theme-muted);font-size:14px}.reservation-selection small{font-size:10px;line-height:1.5}.reservation-selection.chosen{border-style:solid;border-color:var(--theme-border);background:var(--theme-surface-alt)}.reservation-selection.chosen span{color:var(--theme-primary)}.reservation-selection.chosen b{color:var(--theme-foreground);font-size:17px}.reservation-selection.chosen small{color:var(--theme-muted)}
.reservation-contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.reservation-contact-grid label,.reservation-remark{display:block;color:var(--theme-muted);font-size:10px;font-weight:700}
.reservation-submit-card .input{margin-top:7px;border-color:var(--theme-border);background:var(--theme-surface);color:var(--theme-foreground)}.reservation-submit-card .input::placeholder{color:var(--theme-muted)}.reservation-submit-card textarea.input{min-height:70px;resize:vertical}
.reservation-remark{margin-top:11px}.reservation-submit{width:100%;margin-top:13px}.reservation-submit:disabled{background:var(--theme-surface-strong);color:var(--theme-muted);box-shadow:none;cursor:not-allowed}
.reservation-hint{margin:9px 0 0;color:var(--theme-muted);font-size:9px;line-height:1.55;text-align:center}
.reservation-record-section{margin-top:25px}.reservation-record-title{margin-bottom:11px}.reservation-record-section .card{border-color:var(--theme-border);background:var(--theme-surface-alt);color:var(--theme-foreground);box-shadow:none}.reservation-record-section .sub{color:var(--theme-muted)}.reservation-record-section .tag{background:var(--theme-surface-alt);color:var(--theme-primary)}.reservation-record-section .reservation-cancel{border-color:var(--theme-border);background:var(--theme-surface-alt);color:var(--theme-muted)}
.reservation-history-empty{padding:22px;border:1px solid var(--theme-border);border-radius:15px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:11px;text-align:center}
@media (max-width:370px){.reservation-experience{padding-right:10px;padding-left:10px}.reservation-day-strip{gap:5px}.reservation-day-strip button{padding-right:1px;padding-left:1px}.reservation-seat{width:49px;min-height:51px}.reservation-contact-grid{grid-template-columns:1fr}.reservation-map-title p{display:none}}

/* v0.8.0-alpha.15.8: online seat selection with optional scan check-in */
.reservation-heading-actions{display:flex;align-items:flex-start;gap:9px}.reservation-scan-table{padding:7px 9px;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:10px;font-weight:800;white-space:nowrap}.reservation-scan-table:active{transform:scale(.96)}
.reservation-seat.selected{border-color:var(--theme-primary);background:linear-gradient(145deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 0 0 3px rgba(0,0,0,.2),0 10px 24px rgba(0,0,0,.45)}.reservation-seat.selected small{color:var(--theme-foreground)}.reservation-seat.selected:active{transform:translate(-50%,-50%) scale(.95)}
.reservation-seat.has-member-avatar{overflow:hidden;padding:0}
.reservation-seat-avatar{position:absolute;inset:0;display:grid;place-items:center;padding-bottom:17px;font-size:22px;font-weight:700}
.reservation-seat-avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:var(--theme-primary)}
.reservation-seat-caption{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:4px;min-height:17px;padding:1px 2px;background:rgba(0,0,0,.78);color:#fff;line-height:1.2}
.reservation-seat.selected .reservation-seat-caption small{color:#fff}
.reservation-seat.reserved{border-color:var(--theme-border);background:var(--theme-surface-strong);color:var(--theme-muted)}.reservation-seat.reserved small{color:var(--theme-primary)}
.reservation-mode-badges{display:flex;flex-wrap:wrap;gap:5px}.reservation-mode-badges span{padding:4px 7px;border-radius:6px;font-weight:800}.reservation-mode-badges .open{background:#17382b;color:#6ee4ad}.reservation-mode-badges .closed{background:var(--theme-surface-strong);color:var(--theme-muted)}
.reservation-selection.complete{border-color:var(--theme-border);box-shadow:inset 0 0 0 1px rgba(0,0,0,.16)}
.reservation-history-seats{display:inline-block;margin-top:7px;padding:4px 7px;border-radius:6px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:10px;font-weight:700}.reservation-success-seats{padding:9px 11px;border-radius:10px;background:var(--theme-primary-soft);color:var(--theme-foreground);font-weight:800}
@media (max-width:370px){.reservation-heading-actions{gap:6px}.reservation-scan-table{padding:6px 7px;font-size:9px}.reservation-capacity small{max-width:72px;white-space:normal}}

/* v0.8.0-alpha.15.9: real seven-day home check-in experience */
body.signin-dialog-open{overflow:hidden}
body.signin-dialog-open .modal{z-index:100;place-items:center;padding:16px;background:color-mix(in srgb,var(--theme-background) 82%,transparent);backdrop-filter:blur(7px)}
.signin-reward-dialog{position:relative;width:min(100%,390px);max-height:92vh;overflow:auto;border-radius:28px;background:var(--theme-surface);box-shadow:0 28px 80px rgba(0,0,0,.52);scrollbar-width:none}
.signin-reward-dialog::-webkit-scrollbar{display:none}
.signin-dialog-close{position:absolute;top:12px;right:12px;z-index:5;display:grid;width:32px;height:32px;padding:0;place-items:center;border:1px solid color-mix(in srgb,var(--theme-border) 25%,transparent);border-radius:50%;background:color-mix(in srgb,var(--theme-surface) 62%,transparent);color:var(--theme-foreground);font-size:22px;line-height:1;cursor:pointer;backdrop-filter:blur(8px)}
.signin-reward-visual{position:relative;height:248px;overflow:hidden;background:var(--theme-surface)}
.signin-reward-visual>img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 48%}
.signin-reward-visual:after{position:absolute;inset:45% 0 0;content:"";background:linear-gradient(180deg,color-mix(in srgb,var(--theme-surface) 0%,transparent),var(--theme-surface) 92%);pointer-events:none}
.signin-reward-copy{position:absolute;z-index:2;right:18px;bottom:35px;left:18px;color:var(--theme-foreground);text-align:center;text-shadow:0 2px 14px rgba(0,0,0,.92)}
.signin-reward-copy span{display:block;color:var(--theme-muted);font-size:9px;font-weight:900;letter-spacing:2.4px}
.signin-reward-copy h2{margin:4px 0 2px;font-size:27px;line-height:1.15;letter-spacing:1px}
.signin-reward-copy p{margin:0;color:var(--theme-muted);font-size:11px;font-weight:600}
.signin-reward-panel{position:relative;z-index:3;margin-top:-24px;padding:20px 17px 17px;border-radius:28px;background:var(--theme-surface);color:var(--theme-foreground);box-shadow:0 -8px 30px rgba(0,0,0,.16)}
.signin-reward-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.signin-reward-cell{display:grid;min-width:0;min-height:101px;padding:9px 3px 7px;place-items:center;border:1.5px solid var(--theme-border);border-radius:14px;background:var(--theme-surface);transition:transform .18s,border-color .18s,box-shadow .18s}
.signin-reward-cell:nth-child(7){grid-column:3/5}
.signin-star-wrap{display:grid;width:42px;height:40px;place-items:center}
.signin-star-wrap img{display:block;width:39px;height:39px;object-fit:contain;filter:drop-shadow(0 4px 8px rgba(104,52,190,.24))}
.signin-reward-cell b{align-self:end;display:block;width:calc(100% + 2px);margin-top:1px;padding:5px 1px;border-radius:10px;background:var(--theme-primary);color:var(--theme-on-primary);font-size:10px;line-height:1;text-align:center;white-space:nowrap}
.signin-reward-cell small{color:var(--theme-foreground);font-size:10px;font-weight:700;line-height:1.2}
.signin-reward-cell.done{border-color:var(--theme-border);background:var(--theme-surface)}
.signin-reward-cell.done .signin-star-wrap img{opacity:.64;filter:grayscale(.25)}
.signin-reward-cell.done b{background:var(--theme-primary-soft);color:var(--theme-foreground)}
.signin-reward-cell.current{border-color:var(--theme-primary);box-shadow:0 0 0 3px rgba(0,0,0,.16),0 8px 18px rgba(0,0,0,.14);transform:translateY(-2px)}
.signin-reward-cell.current b{background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color: var(--theme-on-gradient)}
.signin-reward-action{width:100%;min-height:54px;margin-top:17px;border:0;border-radius:28px;background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-size:17px;font-weight:800;letter-spacing:.5px;box-shadow:0 10px 24px rgba(0,0,0,.28);cursor:pointer}
.signin-reward-action:active:not(:disabled){transform:scale(.985)}
.signin-reward-action:disabled{border:1px solid color-mix(in srgb,var(--theme-border) 14%,transparent);background:linear-gradient(100deg,var(--native-signed-button-start,#b398f6),var(--native-signed-button-end,#dbacec));color:var(--native-signed-button-text,#3c2b80);-webkit-text-fill-color:var(--native-signed-button-text,#3c2b80);box-shadow:0 7px 18px rgba(0,0,0,.12);opacity:1;cursor:default}
/* v0.8.0-alpha.15.30.38: completed sign-in button follows the configured purple button palette instead of a hard-coded green state */
.signin-reward-panel>p{margin:10px 0 0;color:var(--theme-muted);font-size:10px;line-height:1.5;text-align:center}
.signin-page-shell{min-height:calc(100vh - 116px);padding:18px 14px 34px;background:var(--theme-surface)}
.signin-reward-page{margin:0 auto;box-shadow:0 20px 48px rgba(0,0,0,.34)}
.signin-loading{display:grid;min-height:calc(100vh - 116px);place-items:center;background:var(--theme-surface);color:var(--theme-muted);font-size:12px}
body[data-current-route="signin"] .phone-app{background:var(--theme-background)}
body[data-current-route="signin"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 96%,transparent);color:var(--theme-foreground)}
body[data-current-route="signin"] .page-header .head-btn{color:var(--theme-primary)}
body[data-current-route="signin"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
body[data-current-route="signin"] .tabbar button{color:var(--theme-muted)}
@media(max-width:370px){body.signin-dialog-open .modal{padding:10px}.signin-reward-visual{height:224px}.signin-reward-panel{padding-right:12px;padding-left:12px}.signin-reward-grid{gap:6px}.signin-reward-cell{min-height:96px}.signin-reward-cell b{font-size:9px}.signin-reward-copy h2{font-size:24px}}

/* v0.8.0-alpha.15.12.1: mobile private-chat layout hotfix */
.message-head-link{position:relative}.message-head-link>b{position:absolute;top:0;right:-2px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#ff416c;color:var(--theme-foreground);font-size:9px;line-height:16px;text-align:center}
.diy-document .dc-store button.has-unread i{display:block;right:-4px;top:-4px;width:auto;min-width:17px;height:17px;padding:0 4px;border:2px solid var(--theme-border);border-radius:10px;color:var(--theme-foreground);font-size:8px;font-style:normal;font-weight:800;line-height:13px;text-align:center}
.friend .avatar img,.private-thread-card .avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.friend-chat-button{position:relative;min-width:56px;padding:9px 13px;border:0;border-radius:18px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:var(--theme-on-gradient);font-size:12px;font-weight:800;box-shadow:0 7px 17px rgba(0,0,0,.2)}
.friend-chat-button>b{position:absolute;top:-7px;right:-5px;min-width:18px;height:18px;padding:0 4px;border:2px solid var(--theme-border);border-radius:10px;background:#ff416c;color:var(--theme-foreground);font-size:9px;line-height:14px;text-align:center}
.message-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:14px;padding:4px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface)}
.message-tabs button{position:relative;min-height:44px;border:0;border-radius:11px;background:transparent;color:var(--theme-muted);-webkit-text-fill-color:currentColor;font-size:13px;font-weight:700}
.message-tabs button.active{background:var(--theme-primary);color:var(--theme-on-primary);box-shadow:0 7px 20px color-mix(in srgb,var(--theme-primary) 28%,transparent)}
[data-global-theme-mode="light"] .message-tabs button:not(.active){color:color-mix(in srgb,var(--theme-muted) 85%,var(--theme-foreground))}
.message-tabs button:focus-visible{outline:2px solid var(--theme-primary);outline-offset:3px}
.message-tabs button>b{display:inline-block;min-width:17px;height:17px;margin-left:5px;padding:0 4px;border-radius:9px;background:var(--theme-primary);color:var(--theme-on-primary);font-size:9px;line-height:17px}
.message-tabs button.active>b{background:var(--theme-on-primary);color:var(--theme-primary)}
.message-list{min-height:180px}
.private-thread-card{display:grid;width:100%;grid-template-columns:50px minmax(0,1fr) auto;gap:11px;align-items:center;border:1px solid var(--line);color:inherit;text-align:left;cursor:pointer}
.private-thread-card.unread{border-color:var(--theme-border);box-shadow:inset 3px 0 0 var(--brand),0 7px 20px rgba(0,0,0,.08)}
.private-thread-card .avatar{width:50px;height:50px;flex-basis:50px}
.private-thread-copy{display:block;min-width:0}.private-thread-copy strong{display:block;margin-bottom:6px;font-size:14px}.private-thread-copy small{display:block;overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.private-thread-meta{display:grid;align-self:stretch;min-width:40px;justify-items:end;align-content:space-between}.private-thread-meta time{color:var(--theme-muted);font-size:9px}.private-thread-meta>b{min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:#ff416c;color:var(--theme-foreground);font-size:9px;line-height:19px;text-align:center}
body.private-chat-open{overflow:hidden}
.modal.private-chat-modal{background:color-mix(in srgb,var(--theme-surface) 56%,transparent);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.private-chat-sheet{display:flex;flex-direction:column;width:min(100%,480px);height:min(84dvh,720px);max-height:calc(100dvh - 12px);min-width:0;padding:0;overflow:hidden;border-radius:24px 24px 0 0;background:var(--theme-surface);box-shadow:0 -18px 52px rgba(0,0,0,.2)}
.private-chat-header{display:flex;flex:0 0 auto;min-width:0;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;border-bottom:1px solid var(--theme-border);background:color-mix(in srgb,var(--theme-surface) 96%,transparent)}
.private-chat-peer{display:flex;min-width:0;align-items:center;gap:11px}.private-chat-avatar{display:grid;width:42px;height:42px;flex:0 0 42px;place-items:center;overflow:hidden;border:1px solid var(--theme-border);border-radius:50%;background:linear-gradient(145deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-size:16px;font-weight:800}.private-chat-avatar img{display:block;width:100%;height:100%;object-fit:cover}.private-chat-peer-copy{min-width:0}.private-chat-header small{display:block;margin-bottom:3px;color:var(--theme-muted);font-size:9px;font-weight:700;letter-spacing:.8px}.private-chat-header h2{max-width:260px;margin:0;overflow:hidden;color:var(--theme-foreground);font-size:16px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.private-chat-header button{display:grid;width:34px;height:34px;flex:0 0 34px;padding:0;place-items:center;border:0;border-radius:50%;background:var(--theme-surface);color:var(--theme-muted);font-size:23px;line-height:1;cursor:pointer}.private-chat-header button:active{transform:scale(.94)}
.private-chat-list{flex:1 1 auto;width:100%;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto;padding:18px 14px 12px;background:linear-gradient(180deg,var(--theme-surface) 0%,var(--theme-surface) 100%);overscroll-behavior:contain;scroll-behavior:smooth}
.private-chat-empty{display:grid;min-height:100%;padding:45px 12px;place-items:center;color:var(--theme-muted);font-size:12px;text-align:center}
.private-message-row{display:flex;margin-bottom:13px;flex-direction:column;align-items:flex-start}.private-message-row.mine{align-items:flex-end}
.private-message-bubble{max-width:80%;padding:10px 13px;border:1px solid var(--theme-border);border-radius:5px 16px 16px;background:var(--theme-surface);color:var(--theme-foreground);font-size:13px;line-height:1.55;overflow-wrap:anywhere;box-shadow:0 5px 14px rgba(0,0,0,.06);white-space:pre-wrap}
.private-message-row.mine .private-message-bubble{border:0;border-radius:16px 5px 16px 16px;background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 7px 17px rgba(0,0,0,.18)}
.private-message-row time{margin-top:4px;padding:0 3px;color:var(--theme-muted);font-size:9px}
.private-compose{display:grid;flex:0 0 auto;width:100%;min-width:0;grid-template-columns:minmax(0,1fr) 58px;gap:9px;align-items:end;padding:10px 12px 7px;border-top:1px solid var(--theme-border);background:var(--theme-surface)}.private-compose .input{width:100%;min-width:0;min-height:44px;max-height:92px;margin:0;padding:10px 12px;overflow-y:auto;border-color:var(--theme-border);border-radius:14px;outline:0;background:var(--theme-surface);color:var(--theme-foreground);font-size:16px;line-height:1.4;resize:none}.private-compose .input::placeholder{color:var(--theme-muted)}.private-compose .input:focus{border-color:var(--theme-border);background:var(--theme-surface);box-shadow:0 0 0 3px rgba(0,0,0,.12)}.private-compose .primary{width:58px;min-width:58px;min-height:44px;padding:8px 5px;border-radius:14px;box-shadow:none}.private-compose .primary:active:not(:disabled){transform:scale(.96)}.private-compose .primary:disabled{opacity:.62}
.private-safety-tip{flex:0 0 auto;margin:0;padding:0 14px calc(9px + var(--safe));background:var(--theme-surface);color:var(--theme-muted);font-size:9px;line-height:1.5;text-align:center}.private-chat-closed{flex:0 0 auto;padding:15px 14px calc(15px + var(--safe));border-top:1px solid var(--theme-border);background:var(--theme-surface);color:var(--theme-muted);font-size:11px;text-align:center}
.private-chat-loading{display:grid;min-height:220px;padding:28px;align-content:center;text-align:center}.private-chat-loading h2{margin-bottom:6px}
@media(max-width:520px){.private-chat-sheet{height:min(88dvh,760px);max-height:calc(100dvh - 8px)}.private-chat-header h2{max-width:230px}}
@media(max-width:370px){.friend{grid-template-columns:52px 1fr auto}.friend .avatar{height:52px;flex-basis:52px}.friend-chat-button{min-width:50px;padding:8px 10px}.private-chat-sheet{height:min(90dvh,760px)}.private-chat-header{padding-right:12px;padding-left:12px}.private-chat-avatar{width:38px;height:38px;flex-basis:38px}.private-chat-header h2{max-width:190px}.private-compose{grid-template-columns:minmax(0,1fr) 54px}.private-compose .primary{width:54px;min-width:54px}}

/* v0.8.0-alpha.15.15: paid membership private-message journey, order history and after-sales */
.friend-profile-link,.friend-profile-copy{padding:0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}.friend-profile-link{display:grid;place-items:center}.friend-profile-link span{font-size:19px;font-weight:900}.friend-profile-copy{display:block;min-width:0}.friend-profile-copy h3{margin:0 0 5px}.friend-profile-copy .sub{line-height:1.55}
body[data-current-route="friendProfile"] .phone-app,body[data-current-route="vip"] .phone-app{background:var(--theme-background)}
body[data-current-route="friendProfile"] .page-header,body[data-current-route="vip"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 96%,transparent);color:var(--theme-foreground)}
body[data-current-route="friendProfile"] .page-header .head-btn,body[data-current-route="vip"] .page-header .head-btn{color:var(--theme-primary)}
body[data-current-route="friendProfile"] .tabbar,body[data-current-route="vip"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
body[data-current-route="friendProfile"] .tabbar button,body[data-current-route="vip"] .tabbar button{color:var(--theme-muted)}
.friend-profile-page{min-height:calc(100vh - 126px);padding:24px 16px 32px;background:var(--theme-surface);color:var(--theme-foreground)}
.friend-profile-loading,.member-commerce-loading{display:grid;min-height:calc(100vh - 126px);place-items:center;background:var(--theme-surface);color:var(--theme-muted);font-size:12px}
.friend-profile-hero{position:relative;min-height:224px;padding:77px 19px 22px;overflow:visible;border:1px solid var(--theme-border);border-radius:24px;background:linear-gradient(130deg,var(--theme-surface-alt),var(--theme-surface-strong));box-shadow:0 20px 48px rgba(0,0,0,.3)}
.friend-profile-avatar{position:absolute;top:-18px;left:20px;display:grid;width:84px;height:84px;place-items:center;overflow:hidden;border:4px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt);color:var(--theme-foreground);font-size:27px;font-weight:900;box-shadow:0 10px 24px rgba(0,0,0,.3)}
.friend-profile-avatar img{display:block;width:100%;height:100%;object-fit:cover}
.friend-profile-message{position:absolute;top:20px;right:17px;min-width:104px;padding:11px 18px;border:1px solid var(--theme-border);border-radius:22px;background:var(--theme-primary);color:var(--theme-on-primary);font-size:14px;font-weight:800;box-shadow:0 8px 22px rgba(0,0,0,.3)}
.friend-profile-copy h2{margin:0 0 8px;font-size:24px}.friend-profile-copy>span{display:inline-flex;padding:5px 10px;border-radius:14px;background:var(--theme-surface);color:#bd4773;font-size:11px;font-weight:800}.friend-profile-copy p{margin:15px 0 0;color:var(--theme-foreground);font-size:15px;font-weight:700;line-height:1.65}
.friend-album-section{margin-top:20px}.friend-album-title span,.member-section-title span{color:var(--theme-primary);font-size:9px;font-weight:900;letter-spacing:2px}.friend-album-title h3,.member-section-title h3{margin:5px 0 13px;font-size:19px}
.friend-album-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.friend-album-grid button{padding:0;overflow:hidden;border:1px solid var(--theme-border);border-radius:18px;background:var(--theme-surface-alt);aspect-ratio:1/1}.friend-album-grid img{display:block;width:100%;height:100%;object-fit:cover}
.friend-album-empty{display:grid;min-height:180px;padding:28px;place-items:center;align-content:center;border:1px dashed var(--theme-border);border-radius:20px;background:var(--theme-surface-alt);color:var(--theme-muted);text-align:center}.friend-album-empty b{margin-bottom:7px;color:var(--theme-muted)}.friend-album-empty span{font-size:11px;line-height:1.6}.friend-profile-safety{margin-top:20px;color:var(--theme-muted);font-size:10px;line-height:1.6;text-align:center}
.friend-photo-preview{display:grid;width:min(100%,430px);gap:12px}.friend-photo-preview img{display:block;width:100%;max-height:76vh;object-fit:contain;border-radius:18px;background:var(--theme-surface)}.friend-photo-preview button{min-height:44px;border:0;border-radius:14px;background:var(--theme-surface);color:var(--theme-muted);font-weight:800}
body.membership-gate-open,body.member-checkout-open{overflow:hidden}
.modal.membership-gate-modal,.modal.member-checkout-modal{z-index:120;place-items:center;padding:18px;background:color-mix(in srgb,var(--theme-surface) 83%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.membership-gate-modal .sheet,.member-checkout-modal .sheet{width:min(100%,390px);max-height:94vh;padding:0;overflow:auto;border-radius:28px;background:transparent;box-shadow:0 28px 80px rgba(0,0,0,.55)}
.membership-gate-card{position:relative;overflow:hidden;border-radius:28px;background:var(--theme-surface);color:var(--theme-foreground);text-align:center}
.membership-gate-close{position:absolute;top:12px;right:12px;z-index:4;display:grid;width:34px;height:34px;padding:0;place-items:center;border:1px solid color-mix(in srgb,var(--theme-border) 28%,transparent);border-radius:50%;background:color-mix(in srgb,var(--theme-surface) 62%,transparent);color:var(--theme-foreground);font-size:23px;line-height:1}
.membership-gate-visual{height:235px;overflow:hidden;background:radial-gradient(circle at 50% 40%,var(--theme-primary),var(--theme-accent) 70%);color: var(--theme-on-gradient)}.membership-gate-visual img{display:block;width:100%;height:285px;object-fit:contain;object-position:center 14px;filter:drop-shadow(0 15px 24px rgba(0,0,0,.35))}
.membership-gate-copy{position:relative;margin-top:-18px;padding:25px 24px 9px;border-radius:26px 26px 0 0;background:var(--theme-surface)}.membership-gate-copy span{color:var(--theme-primary);font-size:9px;font-weight:900;letter-spacing:2px}.membership-gate-copy h2{margin:7px 0 5px;font-size:25px}.membership-gate-copy p{margin:0;color:var(--theme-muted);font-size:12px;line-height:1.6}
.membership-gate-primary,.membership-gate-secondary{width:calc(100% - 44px);min-height:52px;margin:14px 22px 0;border:0;border-radius:26px;font-weight:900}.membership-gate-primary{background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-size:16px;box-shadow:0 12px 25px rgba(0,0,0,.26)}.membership-gate-secondary{min-height:38px;margin-top:4px;margin-bottom:14px;background:transparent;color:var(--theme-muted);font-size:12px}
.private-chat-member-lock{display:flex;flex:0 0 auto;align-items:center;gap:10px;padding:11px 12px calc(11px + var(--safe));border-top:1px solid var(--theme-border);background:var(--theme-surface)}.private-chat-member-lock>div{min-width:0;flex:1}.private-chat-member-lock b,.private-chat-member-lock span{display:block}.private-chat-member-lock b{margin-bottom:3px;color:var(--theme-muted);font-size:12px}.private-chat-member-lock span{color:var(--theme-muted);font-size:9px}.private-chat-member-lock button{padding:10px 13px;border:0;border-radius:16px;background:var(--theme-primary);color:var(--theme-on-primary);font-size:11px;font-weight:800}
.member-commerce-page{min-height:calc(100vh - 126px);padding:18px 16px 34px;background:var(--theme-surface);color:var(--theme-foreground)}
.member-status-hero{position:relative;min-height:174px;overflow:hidden;border:1px solid var(--theme-border);border-radius:22px;background:var(--theme-surface-alt)}.member-status-copy{position:relative;z-index:2;width:62%;padding:28px 0 23px 21px}.member-status-copy>span,.member-benefit-poster div>span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.member-status-copy h2{margin:9px 0 25px;font-size:25px}.member-status-copy div b,.member-status-copy div span{display:block}.member-status-copy div b{font-size:13px}.member-status-copy div span{margin-top:4px;color:var(--theme-muted);font-size:10px}.member-status-hero>img{position:absolute;right:-25px;bottom:-95px;width:224px;filter:drop-shadow(0 12px 24px rgba(0,0,0,.4))}
.member-benefit-poster{position:relative;min-height:244px;margin-top:14px;overflow:hidden;border:1px solid var(--theme-border);border-radius:22px;background:linear-gradient(145deg,var(--theme-surface-alt),var(--theme-surface-alt))}.member-benefit-poster>div{position:relative;z-index:2;padding:23px 20px}.member-benefit-poster h2{margin:7px 0 5px;font-size:27px}.member-benefit-poster p{width:54%;margin:0;color:var(--theme-muted);font-size:11px;line-height:1.6}.member-benefit-poster>img{position:absolute;right:-65px;bottom:-15px;width:390px;max-width:none;filter:drop-shadow(0 12px 32px rgba(0,0,0,.45))}
.member-benefit-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0 22px}.member-benefit-strip div{display:grid;min-width:0;min-height:84px;padding:10px 6px;place-items:center;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt);text-align:center}.member-benefit-strip img{width:33px;height:32px;object-fit:contain}.member-benefit-strip b{margin-top:5px;color:var(--theme-muted);font-size:9px;line-height:1.35}
.member-plan-section{padding:19px 13px;border:1px solid var(--theme-border);border-radius:22px;background:var(--theme-surface-alt)}.member-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.member-plan-card{display:flex;min-width:0;min-height:142px;padding:13px 6px;flex-direction:column;align-items:center;justify-content:center;border:1px solid var(--theme-border);border-radius:15px;background:var(--theme-surface-alt);color:var(--theme-foreground);text-align:center}.member-plan-card>span{color:var(--theme-muted);font-size:7px;font-weight:900;letter-spacing:1.1px}.member-plan-card>b{margin:7px 0 9px;font-size:14px}.member-plan-card>strong{font-size:20px}.member-plan-card>strong small{font-size:11px}.member-plan-card>em{margin-top:6px;color:var(--theme-muted);font-size:9px;font-style:normal}.member-plan-card.selected{border-color:var(--theme-primary);background:var(--theme-primary);box-shadow:0 10px 24px rgba(0,0,0,.28);color: var(--theme-on-primary)}.member-plan-card.selected>span,.member-plan-card.selected>em{color:var(--theme-foreground)}.member-plan-empty{padding:22px;border:1px dashed var(--theme-border);border-radius:14px;color:var(--theme-muted);font-size:11px;text-align:center}
.member-agreement{display:flex;margin:18px 2px 12px;align-items:center;justify-content:center;flex-wrap:wrap;color:var(--theme-muted);font-size:9px;line-height:1.7}.member-agreement input{width:16px;height:16px;margin:0 7px 0 0;accent-color:var(--theme-primary)}.member-agreement button{padding:0;border:0;background:transparent;color:var(--theme-primary);font-size:9px}.member-open-button{width:100%;min-height:52px;border:0;border-radius:26px;background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-size:16px;font-weight:900;box-shadow:0 11px 24px rgba(0,0,0,.27)}.member-open-button:disabled{opacity:.45}.member-payment-note{margin:12px 0 0;color:var(--theme-muted);font-size:9px;text-align:center}
.member-price-warning{margin:13px 0 -5px;padding:10px 12px;border:1px solid rgba(255,190,92,.32);border-radius:12px;background:rgba(255,169,57,.09);color:#ffd08b;font-size:10px;line-height:1.55;text-align:center}
.member-order-section{margin-top:18px;padding:19px 13px;border:1px solid var(--theme-border);border-radius:22px;background:var(--theme-surface-alt)}.member-order-list{display:flex;flex-direction:column;gap:9px}.member-order-card{padding:14px;border:1px solid var(--theme-border);border-radius:15px;background:var(--theme-surface-alt)}.member-order-main,.member-order-foot{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.member-order-main b,.member-order-main span{display:block}.member-order-main b{font-size:13px}.member-order-main span{max-width:245px;margin-top:5px;overflow:hidden;color:var(--theme-muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.member-order-main strong{color:var(--theme-foreground);font-size:16px;white-space:nowrap}.member-order-foot{margin-top:11px;padding-top:10px;border-top:1px solid var(--theme-border);align-items:center}.member-order-foot>div{display:flex;min-width:0;align-items:center;gap:7px;flex-wrap:wrap}.member-order-foot i{display:inline-flex;padding:4px 7px;border-radius:8px;background:var(--theme-surface-strong);color:var(--theme-muted);font-size:8px;font-style:normal;font-weight:800}.member-order-foot i.paid{background:rgba(52,195,129,.12);color:#5fe0a4}.member-order-foot i.pending{background:rgba(255,190,75,.12);color:#ffd17d}.member-order-foot i.failed{background:rgba(241,82,107,.12);color:#ff8295}.member-order-foot i.refunding{background:color-mix(in srgb,var(--theme-primary) 14%,transparent);color:var(--theme-on-primary)}.member-order-foot span{color:var(--theme-muted);font-size:8px}.member-order-foot button{min-height:30px;padding:0 10px;border:1px solid var(--theme-border);border-radius:15px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:9px;font-weight:800;white-space:nowrap}.member-order-foot button.muted{border-color:var(--theme-border);background:var(--theme-surface-strong);color:var(--theme-muted)}.member-order-foot button:disabled{opacity:.55}.member-order-refund-note{margin:9px 0 0;padding:9px 10px;border-radius:10px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:9px;line-height:1.55}.member-order-empty{padding:22px 12px;border:1px dashed var(--theme-border);border-radius:14px;color:var(--theme-muted);font-size:10px;text-align:center}
.member-checkout-card{overflow:hidden;border-radius:25px;background:var(--theme-surface);color:var(--theme-foreground)}.member-checkout-head{padding:28px 25px 20px;text-align:center}.member-checkout-head>span,.member-test-payment>span,.membership-agreement-sheet>span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.member-checkout-head h2{margin:6px 0 7px;font-size:24px}.member-checkout-head p{margin:0;color:var(--theme-muted);font-size:11px;line-height:1.6}.member-checkout-plan{display:flex;margin:0 20px 17px;padding:14px 15px;align-items:center;justify-content:space-between;border-radius:15px;background:var(--theme-surface)}.member-checkout-plan b,.member-checkout-plan span{display:block}.member-checkout-plan b{font-size:15px}.member-checkout-plan span{margin-top:4px;color:var(--theme-muted);font-size:10px}.member-checkout-plan strong{color:var(--theme-primary);font-size:19px}.member-staff-field{display:block;margin:0 20px}.member-staff-field>span{display:block;margin-bottom:7px;color:var(--theme-muted);font-size:11px;font-weight:800}.member-staff-field .input{height:48px;margin:0;border-color:var(--theme-border);border-radius:15px;background:var(--theme-surface);font-size:15px}.member-checkout-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:21px 20px}.member-checkout-actions button{min-height:48px;border:0;border-radius:24px;background:var(--theme-surface);color:var(--theme-muted);font-weight:900}.member-checkout-actions button:last-child{background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient)}
.member-payment-methods{margin:16px 20px 0}.member-payment-methods>span{display:block;margin-bottom:7px;color:var(--theme-muted);font-size:11px;font-weight:800}.member-payment-methods label{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;margin-top:8px;padding:12px 13px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface);cursor:pointer}.member-payment-methods label:has(input:checked){border-color:var(--theme-primary);background:var(--theme-surface);box-shadow:0 0 0 2px rgba(0,0,0,.09)}.member-payment-methods label.disabled{opacity:.55;cursor:not-allowed}.member-payment-methods input{width:17px;height:17px;margin:0;accent-color:var(--theme-primary)}.member-payment-methods i{color:var(--theme-muted);font-size:13px;font-style:normal;font-weight:900}.member-payment-methods small{color:var(--theme-muted);font-size:10px}.member-balance-recharge{width:calc(100% - 40px);min-height:42px;margin:12px 20px 0;border:1px solid var(--theme-border);border-radius:21px;background:var(--theme-primary-soft);color:var(--theme-foreground);font-weight:800}.member-checkout-actions button:disabled{opacity:.45}.member-payment-error p:first-of-type{padding:10px 12px;border-radius:12px;background:#fff2f2;color:#b24343;word-break:break-word}
.member-test-payment,.membership-agreement-sheet{padding:29px 24px;border-radius:25px;background:var(--theme-surface);color:var(--theme-foreground);text-align:center}.member-test-payment h2,.membership-agreement-sheet h2{margin:7px 0 9px}.member-test-payment>strong{display:block;color:var(--theme-primary);font-size:34px}.member-test-payment p,.membership-agreement-sheet p{color:var(--theme-muted);font-size:12px;line-height:1.75}.member-test-payment small{display:block;margin:12px 0;color:var(--theme-muted)}.member-test-payment button{width:100%;min-height:48px;margin-top:9px;border:0;border-radius:24px;background:var(--theme-surface);color:var(--theme-muted);font-weight:900}.member-test-payment button:first-of-type{background:var(--theme-primary);color:var(--theme-on-primary)}.membership-agreement-sheet .primary{width:100%;margin-top:10px}
@media(max-width:370px){.friend-profile-page,.member-commerce-page{padding-right:12px;padding-left:12px}.friend-profile-hero{padding-right:15px;padding-left:15px}.friend-profile-message{min-width:92px;padding-right:13px;padding-left:13px}.member-status-copy{padding-left:16px}.member-status-hero>img{right:-38px;width:210px}.member-benefit-poster>img{right:-78px;width:370px}.member-plan-grid{gap:6px}.member-plan-card{padding-right:3px;padding-left:3px}.member-plan-card>b{font-size:13px}.member-plan-card>strong{font-size:18px}}

/* v0.8.0-alpha.15.16: member wallet recharge commerce */
body[data-current-route="recharge"] .phone-app{background:var(--theme-background)}
body[data-current-route="recharge"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 96%,transparent);color:var(--theme-foreground)}
body[data-current-route="recharge"] .page-header .head-btn{color:var(--theme-primary)}
body[data-current-route="recharge"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
body[data-current-route="recharge"] .tabbar button{color:var(--theme-muted)}
.recharge-commerce-loading{display:grid;min-height:calc(100vh - 126px);place-items:center;background:var(--theme-surface);color:var(--theme-muted);font-size:12px}
.recharge-commerce-page{min-height:calc(100vh - 126px);padding:18px 16px 35px;background:var(--theme-surface);color:var(--theme-foreground)}
.recharge-hero{position:relative;min-height:205px;overflow:hidden;border:1px solid var(--theme-border);border-radius:24px;background:radial-gradient(circle at 85% 38%,color-mix(in srgb,var(--theme-primary) 45%,transparent),transparent 37%),linear-gradient(135deg,var(--theme-accent),var(--theme-accent) 57%,var(--theme-accent));box-shadow:0 18px 45px rgba(0,0,0,.32);color: var(--theme-on-gradient)}
.recharge-hero:after{position:absolute;right:-45px;bottom:-80px;width:230px;height:230px;border:1px solid color-mix(in srgb,var(--theme-border) 12%,transparent);border-radius:50%;content:""}
.recharge-hero-copy{position:relative;z-index:2;width:58%;padding:27px 0 24px 21px}.recharge-hero-copy>span,.recharge-section-title>span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.recharge-hero-copy h2{margin:9px 0 12px;font-size:25px;line-height:1.22}.recharge-hero-copy p{margin:0;color:var(--theme-muted);font-size:10px;line-height:1.65}
.recharge-hero>img{position:absolute;z-index:1;right:-17px;bottom:-93px;width:240px;max-width:none;filter:drop-shadow(0 14px 25px rgba(0,0,0,.48))}
.recharge-hero[style*="background-image"]{background-position:center;background-size:cover}.recharge-hero[style*="background-image"]:before{position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--theme-surface) 82%,transparent),transparent 78%);content:""}.recharge-hero[style*="background-image"] .recharge-hero-copy{width:72%}
.recharge-balance-card{display:flex;margin-top:11px;padding:19px 17px;align-items:flex-end;justify-content:space-between;gap:16px;border:1px solid var(--theme-border);border-radius:20px;background:linear-gradient(145deg,var(--theme-surface-alt),var(--theme-surface-alt))}.recharge-balance-card>div:first-child>span{display:block;margin-bottom:6px;color:var(--theme-muted);font-size:9px}.recharge-balance-card>div:first-child>strong{font-size:31px;line-height:1}.recharge-balance-card strong small{margin-right:3px;font-size:13px}.recharge-balance-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px}.recharge-balance-meta p{margin:0;padding-left:10px;border-left:1px solid var(--theme-border)}.recharge-balance-meta span,.recharge-balance-meta b{display:block;white-space:nowrap}.recharge-balance-meta span{margin-bottom:5px;color:var(--theme-muted);font-size:8px}.recharge-balance-meta b{font-size:10px}
.recharge-plan-section,.recharge-order-section{margin-top:14px;padding:19px 13px;border:1px solid var(--theme-border);border-radius:22px;background:var(--theme-surface-alt)}.recharge-section-title h3{margin:5px 0 14px;font-size:19px}.recharge-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.recharge-plan-card{position:relative;display:flex;min-width:0;min-height:139px;padding:12px 5px;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt);color:var(--theme-foreground);text-align:center}.recharge-plan-card>span{color:var(--theme-muted);font-size:8px}.recharge-plan-card>strong{margin:5px 0 9px;font-size:20px}.recharge-plan-card>strong small{font-size:10px}.recharge-plan-card>b{font-size:10px}.recharge-plan-card>em{margin-top:7px;color:var(--theme-muted);font-size:8px;font-style:normal}.recharge-plan-card.selected{border-color:var(--theme-primary);background:linear-gradient(155deg,var(--theme-primary),var(--theme-accent));box-shadow:0 11px 25px rgba(0,0,0,.3);color: var(--theme-on-gradient)}.recharge-plan-card.selected:before{position:absolute;top:-24px;right:-24px;width:66px;height:66px;border-radius:50%;background:color-mix(in srgb,var(--theme-surface) 10%,transparent);content:""}.recharge-plan-card.selected>span,.recharge-plan-card.selected>em{color:var(--theme-foreground)}.recharge-plan-empty{padding:23px 12px;border:1px dashed var(--theme-border);border-radius:14px;color:var(--theme-muted);font-size:11px;text-align:center}
.recharge-warning{margin:13px 0 -3px;padding:10px 11px;border:1px solid rgba(255,190,92,.3);border-radius:12px;background:rgba(255,169,57,.08);color:#ffd08b;font-size:9px;line-height:1.55;text-align:center}.recharge-pay-button{width:100%;min-height:52px;margin-top:17px;border:0;border-radius:26px;background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-size:16px;font-weight:900;box-shadow:0 11px 25px rgba(0,0,0,.28)}.recharge-pay-button:disabled{opacity:.4;box-shadow:none}.recharge-payment-note{margin:11px 0 0;color:var(--theme-muted);font-size:9px;line-height:1.5;text-align:center}.recharge-security{display:flex;margin-top:13px;padding:10px 11px;align-items:center;gap:8px;border-radius:12px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:9px;line-height:1.5}.recharge-security i{display:grid;width:18px;height:18px;flex:0 0 18px;place-items:center;border-radius:50%;background:rgba(66,207,144,.12);color:#54d99b;font-style:normal;font-weight:900}
.recharge-order-section{background:var(--theme-surface-alt)}.recharge-order-list{display:flex;flex-direction:column;gap:9px}.recharge-order-card{padding:14px;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt)}.recharge-order-main,.recharge-order-foot{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.recharge-order-main b,.recharge-order-main span{display:block}.recharge-order-main b{font-size:13px}.recharge-order-main span{max-width:235px;margin-top:5px;overflow:hidden;color:var(--theme-muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.recharge-order-main strong{font-size:17px;white-space:nowrap}.recharge-order-credit{display:flex;margin-top:10px;padding:9px 10px;align-items:center;gap:7px;border-radius:11px;background:var(--theme-surface-alt)}.recharge-order-credit>span{color:var(--theme-muted);font-size:9px}.recharge-order-credit>b{font-size:12px}.recharge-order-credit>span:last-child{margin-left:auto;padding:3px 6px;border-radius:7px;background:color-mix(in srgb,var(--theme-primary) 12%,transparent);color:var(--theme-on-primary);font-size:8px}.recharge-order-foot{margin-top:10px;align-items:center}.recharge-order-foot>div{display:flex;min-width:0;align-items:center;gap:7px}.recharge-order-foot i{display:inline-flex;padding:4px 7px;border-radius:8px;background:var(--theme-surface-strong);color:var(--theme-muted);font-size:8px;font-style:normal;font-weight:800;white-space:nowrap}.recharge-order-foot i.paid{background:rgba(52,195,129,.12);color:#5fe0a4}.recharge-order-foot i.pending{background:rgba(255,190,75,.12);color:#ffd17d}.recharge-order-foot i.failed{background:rgba(241,82,107,.12);color:#ff8295}.recharge-order-foot i.refunding{background:color-mix(in srgb,var(--theme-primary) 14%,transparent);color:var(--theme-on-primary)}.recharge-order-foot span{overflow:hidden;color:var(--theme-muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.recharge-order-foot button{min-height:30px;padding:0 10px;border:1px solid var(--theme-border);border-radius:15px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:9px;font-weight:800;white-space:nowrap}.recharge-order-foot button.muted{border-color:var(--theme-border);background:var(--theme-surface-strong);color:var(--theme-muted)}.recharge-order-foot button:disabled{opacity:.38}.recharge-order-note{margin:9px 0 0;padding:8px 9px;border-radius:9px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:9px;line-height:1.55}.recharge-order-empty{padding:22px 12px;border:1px dashed var(--theme-border);border-radius:14px;color:var(--theme-muted);font-size:10px;text-align:center}
.recharge-test-payment{position:relative;padding:0 23px 26px;overflow:hidden;border-radius:26px;background:var(--theme-surface);color:var(--theme-foreground);text-align:center}.recharge-test-payment>span{display:block;padding-top:22px;color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.recharge-test-payment>img{display:block;width:160px;height:152px;margin:-4px auto -13px;object-fit:contain;filter:drop-shadow(0 11px 20px rgba(67,30,104,.24))}.recharge-test-payment h2{margin:0 0 8px}.recharge-test-payment>strong{display:block;color:var(--theme-primary);font-size:27px}.recharge-test-payment p{margin:8px 0;color:var(--theme-muted);font-size:12px}.recharge-test-payment p b{color:#dd427c}.recharge-test-payment small{display:block;margin:12px 0;color:var(--theme-muted);font-size:9px;line-height:1.7}.recharge-test-payment button{width:100%;min-height:48px;margin-top:8px;border:0;border-radius:24px;background:var(--theme-primary);color:var(--theme-on-primary);font-weight:900}.recharge-test-payment button.muted{background:var(--theme-surface);color:var(--theme-muted)}
.recharge-refund-sheet>span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.recharge-refund-sheet h2{margin:6px 0 13px}.recharge-refund-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}.recharge-refund-summary p{margin:0;padding:12px;border-radius:13px;background:var(--theme-surface)}.recharge-refund-summary span,.recharge-refund-summary b{display:block}.recharge-refund-summary span{margin-bottom:5px;color:var(--theme-muted);font-size:9px}.recharge-refund-summary b{font-size:16px}.recharge-refund-tip{padding:10px 11px;border-radius:11px;background:#fff5e9;color:#9a642b;font-size:10px;line-height:1.6}.recharge-refund-sheet label{display:block;margin-top:12px;font-size:11px;font-weight:800}.recharge-refund-sheet textarea{min-height:92px;margin-top:7px;resize:vertical}
@media(max-width:370px){.recharge-commerce-page{padding-right:12px;padding-left:12px}.recharge-hero-copy{padding-left:16px}.recharge-hero>img{right:-30px;width:225px}.recharge-plan-grid{gap:6px}.recharge-plan-card{padding-right:2px;padding-left:2px}.recharge-plan-card>strong{font-size:18px}.recharge-balance-card{padding-right:13px;padding-left:13px}.recharge-balance-meta{gap:5px}.recharge-balance-meta p{padding-left:7px}}

/* v0.8.0-alpha.15.24: member profile completion */
body[data-current-route="user"] .phone-app{background:var(--theme-background)}
body[data-current-route="user"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 96%,transparent);color:var(--theme-foreground)}
body[data-current-route="user"] .page-header .head-btn{color:var(--theme-primary)}
body[data-current-route="user"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
body[data-current-route="user"] .tabbar button{color:var(--theme-muted)}
.member-profile-loading{display:grid;min-height:calc(100vh - 126px);place-items:center;background:var(--theme-surface);color:var(--theme-muted);font-size:12px}
.member-profile-page{min-height:calc(100vh - 126px);padding:16px 14px 34px;background:var(--theme-surface);color:var(--theme-foreground)}
.member-profile-hero{position:relative;display:grid;grid-template-columns:1fr auto;gap:10px;padding:21px 18px 17px;overflow:hidden;border:1px solid var(--theme-border);border-radius:22px;background:radial-gradient(circle at 92% 20%,color-mix(in srgb,var(--theme-primary) 36%,transparent),transparent 37%),linear-gradient(135deg,var(--theme-accent),var(--theme-accent));box-shadow:0 18px 42px rgba(0,0,0,.28);color: var(--theme-on-gradient)}
.member-profile-hero-copy>span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.member-profile-hero-copy h2{margin:7px 0 5px;font-size:23px}.member-profile-hero-copy p{margin:0;color:var(--theme-muted);font-size:10px}.member-profile-hero>strong{align-self:end;color:var(--theme-primary);font-size:21px}.member-profile-progress{grid-column:1/-1;height:5px;margin-top:7px;overflow:hidden;border-radius:5px;background:color-mix(in srgb,var(--theme-surface) 8%,transparent)}.member-profile-progress i{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--theme-primary),var(--theme-accent));transform-origin:left center;transition:transform .2s ease;color: var(--theme-on-gradient)}
.member-profile-avatar-card{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:13px;margin-top:11px;padding:15px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface-alt)}.member-profile-avatar{width:64px;height:64px;overflow:hidden;border:2px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt)}.member-profile-avatar img{display:block;width:100%;height:100%;object-fit:cover}.member-profile-avatar-card h3{margin:0;font-size:15px}.member-profile-avatar-card p{margin:5px 0 0;color:var(--theme-muted);font-size:9px}.member-profile-avatar-card>button{min-height:34px;padding:0 11px;border:1px solid var(--theme-border);border-radius:17px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:9px;font-weight:800}.member-profile-avatar-card>span{color:var(--theme-muted);font-size:9px}
.member-profile-form-card{margin-top:11px;padding:0 15px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface-alt)}.member-profile-field{display:grid;grid-template-columns:86px minmax(0,1fr);align-items:center;min-height:65px;border-bottom:1px solid var(--theme-border)}.member-profile-field>label,.member-profile-textarea>label{font-size:11px;font-weight:800}.member-profile-field label small,.member-profile-textarea label small{margin-left:3px;color:var(--theme-muted);font-size:8px;font-weight:500}.member-profile-field>input{width:100%;height:46px;padding:0;border:0;background:transparent;color:var(--theme-foreground);font-size:12px;outline:0}.member-profile-field>input::placeholder,.member-profile-textarea textarea::placeholder{color:var(--theme-muted)}.member-profile-field-action{display:flex;justify-content:flex-end}.member-profile-field-action>button{min-height:34px;padding:0 12px;border:1px solid var(--theme-border);border-radius:17px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:9px;font-weight:800}.member-profile-field-action>span{color:var(--theme-muted);font-size:10px}.member-profile-field-action .member-profile-bound{color:#58d9a4}.member-profile-help{margin:-1px 0 0;padding:9px 0 12px 86px;border-bottom:1px solid var(--theme-border);color:var(--theme-muted);font-size:8px;line-height:1.55}
.member-profile-gender{min-height:72px}.member-profile-options{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.member-profile-options label{position:relative}.member-profile-options input{position:absolute;opacity:0;pointer-events:none}.member-profile-options span{display:grid;min-height:34px;place-items:center;border:1px solid var(--theme-border);border-radius:11px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:9px}.member-profile-options input:checked+span{border-color:var(--theme-primary);background:var(--theme-surface-alt);color:var(--theme-muted)}
.member-profile-textarea{padding:15px 0;border-bottom:1px solid var(--theme-border)}.member-profile-textarea label{display:block;margin-bottom:8px}.member-profile-textarea textarea{display:block;width:100%;min-height:80px;padding:11px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface);color:var(--theme-foreground);font-size:11px;line-height:1.6;resize:vertical;outline:0}.member-profile-nearby{display:flex;min-height:72px;align-items:center;justify-content:space-between;gap:12px}.member-profile-nearby span{display:flex;min-width:0;flex-direction:column;gap:5px}.member-profile-nearby b{font-size:11px}.member-profile-nearby small{color:var(--theme-muted);font-size:8px}.member-profile-nearby input{width:35px;height:20px;accent-color:var(--theme-primary)}
.member-profile-album-card{margin-top:11px;padding:15px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface-alt)}.member-profile-album-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.member-profile-album-head h3{margin:0;font-size:12px}.member-profile-album-head p{margin:5px 0 0;color:var(--theme-muted);font-size:8px;line-height:1.55}.member-profile-album-head>span{color:var(--theme-primary);font-size:9px}.member-profile-album-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:13px}.member-profile-album-item,.member-profile-album-add{position:relative;aspect-ratio:1/1;overflow:hidden;border:1px solid var(--theme-border);border-radius:12px;background:var(--theme-surface-alt)}.member-profile-album-photo{display:block;width:100%;height:100%;padding:0;border:0;background:transparent}.member-profile-album-photo img{display:block;width:100%;height:100%;object-fit:cover}.member-profile-album-item>span{position:absolute;right:5px;bottom:5px;padding:3px 6px;border-radius:9px;color:var(--theme-foreground);font-size:7px}.member-profile-album-item>span.status-0{background:rgba(165,111,31,.9)}.member-profile-album-item>span.status-1{background:rgba(27,139,96,.9)}.member-profile-album-item>span.status-2{background:rgba(190,54,79,.9)}.member-profile-album-delete{position:absolute;top:4px;right:4px;display:grid;width:22px;height:22px;padding:0;place-items:center;border:0;border-radius:50%;background:color-mix(in srgb,var(--theme-surface) 82%,transparent);color:var(--theme-foreground);font-size:14px}.member-profile-album-add{display:flex;align-items:center;justify-content:center;flex-direction:column;border-style:dashed;color:var(--theme-primary);cursor:pointer}.member-profile-album-add input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.member-profile-album-add b{font-size:25px;line-height:1}.member-profile-album-add span{margin-top:4px;font-size:8px}.member-profile-album-add.busy{pointer-events:none;opacity:.5}
.member-profile-consent{margin:14px 5px 12px;color:var(--theme-muted);font-size:9px;text-align:center}.member-profile-consent p{margin:0 0 5px}.member-profile-consent div{display:flex;justify-content:center;gap:4px}.member-profile-consent button{padding:2px;border:0;background:transparent;color:var(--theme-primary);font-size:9px}.member-profile-save{width:100%;min-height:50px;border:0;border-radius:25px;background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);font-size:15px;font-weight:900;box-shadow:0 12px 26px rgba(0,0,0,.27)}.member-profile-save:disabled{opacity:.5}.member-profile-footnote{margin:10px 9px 0;color:var(--theme-muted);font-size:8px;line-height:1.6;text-align:center}
.member-profile-entry-avatar img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover}
@media(max-width:370px){.member-profile-page{padding-right:11px;padding-left:11px}.member-profile-avatar-card{grid-template-columns:58px minmax(0,1fr) auto;padding-right:12px;padding-left:12px}.member-profile-avatar{width:58px;height:58px}.member-profile-form-card{padding-right:12px;padding-left:12px}.member-profile-field{grid-template-columns:74px minmax(0,1fr)}.member-profile-help{padding-left:74px}}

/* v0.8.0-alpha.15.26: nearby partner discovery, filters and profile */
body[data-current-route="friends"] .phone-app,body[data-current-route="friendProfile"] .phone-app{background:var(--theme-background)}
body[data-current-route="friends"] .page-header,body[data-current-route="friendProfile"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 97%,transparent);color:var(--theme-foreground)}
body[data-current-route="friends"] .page-header .head-btn,body[data-current-route="friendProfile"] .page-header .head-btn{color:var(--theme-primary)}
body[data-current-route="friends"] .tabbar,body[data-current-route="friendProfile"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
body[data-current-route="friends"] .tabbar button,body[data-current-route="friendProfile"] .tabbar button{color:var(--theme-muted)}
.friend-head-filter{min-width:48px;text-align:right;font-weight:800}
.friend-square-page{min-height:calc(100vh - 126px);padding:14px 14px 34px;background:var(--theme-surface);color:var(--theme-foreground)}
.friend-square-hero{position:relative;display:flex;min-height:162px;padding:23px 168px 22px 18px;align-items:center;overflow:hidden;border:1px solid var(--theme-border);border-radius:23px;background:radial-gradient(circle at 88% 28%,color-mix(in srgb,var(--theme-primary) 48%,transparent),transparent 37%),linear-gradient(135deg,var(--theme-accent),var(--theme-accent) 62%,var(--theme-accent));box-shadow:0 18px 42px rgba(0,0,0,.3);color: var(--theme-on-gradient)}
.friend-square-hero:after{position:absolute;right:-45px;bottom:-74px;width:205px;height:205px;border:1px solid color-mix(in srgb,var(--theme-border) 12%,transparent);border-radius:50%;content:""}
.friend-square-hero>div{position:relative;z-index:2}.friend-square-hero span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.friend-square-hero h2{margin:8px 0 8px;font-size:27px;line-height:1.1}.friend-square-hero p{width:185px;margin:0;color:var(--theme-muted);font-size:10px;line-height:1.65}
.friend-square-hero>img{position:absolute;z-index:1;right:-20px;bottom:-45px;width:205px;max-width:none;filter:drop-shadow(0 15px 22px rgba(0,0,0,.45))}
.friend-square-toolbar{display:flex;min-height:62px;margin:11px 0 12px;padding:10px 12px 10px 14px;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--theme-border);border-radius:17px;background:var(--theme-surface-alt)}
.friend-square-toolbar>div{display:flex;min-width:0;flex-direction:column;gap:4px}.friend-square-toolbar strong{font-size:13px}.friend-square-toolbar span{overflow:hidden;color:var(--theme-muted);font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.friend-square-toolbar>button{min-height:34px;padding:0 11px;border:1px solid var(--theme-border);border-radius:17px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:9px;font-weight:800;white-space:nowrap}.friend-square-toolbar>button.is-ready{border-color:rgba(69,211,157,.35);background:rgba(69,211,157,.1);color:#62dfa9}
.friend-square-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.friend-square-card{min-width:0;overflow:hidden;border:1px solid var(--theme-border);border-radius:19px;background:var(--theme-surface-alt);box-shadow:0 12px 24px rgba(0,0,0,.2)}
.friend-square-cover{position:relative;display:block;width:100%;padding:0;overflow:hidden;border:0;background:var(--theme-surface);aspect-ratio:1/1.08;cursor:pointer}.friend-square-cover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .22s ease}.friend-square-cover:active img{transform:scale(1.025)}.friend-square-cover.is-brand-fallback{background:radial-gradient(circle at 50% 35%,var(--theme-primary),var(--theme-accent) 70%);color: var(--theme-on-gradient)}.friend-square-cover.is-brand-fallback img{object-fit:contain;object-position:center bottom;transform:scale(1.2) translateY(7%)}
.friend-square-unread{position:absolute;top:9px;right:9px;min-height:22px;padding:0 8px;border:1px solid color-mix(in srgb,var(--theme-border) 28%,transparent);border-radius:12px;background:#ef477d;color:var(--theme-foreground);font-size:8px;line-height:20px;box-shadow:0 6px 14px rgba(0,0,0,.25)}
.friend-square-copy{display:block;width:100%;min-width:0;padding:12px 12px 13px;border:0;background:transparent;color:var(--theme-foreground);text-align:left;cursor:pointer}.friend-square-name{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:7px}.friend-square-name strong{overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.friend-square-gender{flex:0 0 auto;padding:4px 7px;border-radius:11px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:8px;font-style:normal;font-weight:800;white-space:nowrap}.friend-square-gender.male{background:#e6efff;color:#4673c6}.friend-square-gender.female{background:#ffe8f0;color:#d25781}
.friend-square-distance,.friend-square-intro{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-square-distance{margin-top:8px;color:var(--theme-muted);font-size:10px;font-weight:700}.friend-square-distance:before{display:inline-block;width:5px;height:5px;margin:0 6px 1px 0;border-radius:50%;background:#55dfa8;content:""}.friend-square-intro{margin-top:6px;color:var(--theme-muted);font-size:8px}
.friend-square-loading{display:grid;min-height:300px;place-content:center;justify-items:center;gap:8px;color:var(--theme-muted);text-align:center}.friend-square-loading small{color:var(--theme-muted);font-size:9px}.friend-loading-ring{width:28px;height:28px;border:2px solid var(--theme-border);border-top-color:var(--theme-border);border-radius:50%;animation:friend-spin .8s linear infinite}@keyframes friend-spin{to{transform:rotate(360deg)}}
.friend-square-empty{display:grid;min-height:310px;place-items:center;text-align:center}.friend-square-empty>div{display:flex;max-width:280px;flex-direction:column;align-items:center}.friend-square-empty strong{font-size:15px}.friend-square-empty span{margin-top:8px;color:var(--theme-muted);font-size:10px;line-height:1.6}.friend-square-empty button{min-height:36px;margin-top:14px;padding:0 18px;border:1px solid var(--theme-border);border-radius:18px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:10px;font-weight:800}
.friend-square-privacy{margin:14px 8px 0;color:var(--theme-muted);font-size:8px;line-height:1.6;text-align:center}
body.friend-filter-open{overflow:hidden}.modal.friend-filter-modal{align-items:flex-end;padding:0;background:color-mix(in srgb,var(--theme-surface) 76%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.friend-filter-modal .sheet{width:min(100%,480px);max-height:92dvh;padding:0;overflow:auto;border-radius:26px 26px 0 0;background:var(--theme-surface-alt);color:var(--theme-foreground);box-shadow:0 -20px 55px rgba(0,0,0,.36)}
.friend-filter-sheet{padding:19px 18px calc(18px + var(--safe))}.friend-filter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:0 2px 16px}.friend-filter-head span{color:var(--theme-primary);font-size:8px;font-weight:900;letter-spacing:2px}.friend-filter-head h2{margin:6px 0 0;font-size:22px}.friend-filter-head>button{display:grid;width:34px;height:34px;padding:0;place-items:center;border:1px solid var(--theme-border);border-radius:50%;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:23px}
.friend-filter-section{padding:16px 2px;border-top:1px solid var(--theme-border)}.friend-filter-section-title{display:flex;margin-bottom:14px;align-items:center;justify-content:space-between}.friend-filter-section-title b{font-size:14px}.friend-filter-section-title span{color:var(--theme-primary);font-size:11px;font-weight:800}
.friend-age-controls{display:grid;grid-template-columns:1fr 1fr;gap:9px}.friend-age-controls label{display:block;padding:10px 11px 12px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface-alt)}.friend-age-controls label>span{display:block;margin-bottom:9px;color:var(--theme-muted);font-size:9px}.friend-age-controls input,.friend-distance-range{width:100%;height:4px;margin:0;accent-color:var(--theme-primary);cursor:pointer}
.friend-range-legend{display:flex;margin-top:8px;justify-content:space-between;color:var(--theme-muted);font-size:8px}.friend-location-enable{width:100%;min-height:39px;margin-top:14px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface-alt);color:var(--theme-muted);font-size:10px;font-weight:800}.friend-location-enable:disabled{opacity:.55}.friend-location-status{margin:8px 4px 0;color:var(--theme-muted);font-size:8px;line-height:1.55;text-align:center}.friend-location-status.ready{padding:10px;border-radius:12px;background:rgba(71,211,155,.08);color:#5edca6}
.friend-gender-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.friend-gender-options button{min-height:43px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface-strong);color:var(--theme-muted);font-size:11px;font-weight:800}.friend-gender-options button.selected{border-color:var(--theme-primary);background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 8px 19px rgba(0,0,0,.25)}
.friend-filter-actions{display:grid;grid-template-columns:1fr 1.35fr;gap:10px;padding-top:6px}.friend-filter-actions button{min-height:49px;border:0;border-radius:17px;background:var(--theme-surface-strong);color:var(--theme-muted);font-size:13px;font-weight:900}.friend-filter-actions button:last-child{background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 10px 24px rgba(0,0,0,.28)}
.friend-profile-page{padding-top:21px}.friend-profile-hero{min-height:258px;padding:105px 19px 21px;overflow:visible;border-color:var(--theme-border);background:radial-gradient(circle at 88% 18%,color-mix(in srgb,var(--theme-primary) 42%,transparent),transparent 37%),linear-gradient(135deg,var(--theme-surface-alt),var(--theme-surface-strong))}
.friend-profile-hero:after{position:absolute;right:-38px;bottom:-74px;width:205px;height:205px;border:1px solid color-mix(in srgb,var(--theme-border) 8%,transparent);border-radius:50%;content:""}.friend-profile-avatar{z-index:2;width:90px;height:90px;overflow:hidden;border-color:var(--theme-border);background:var(--theme-surface-alt)}.friend-profile-avatar img.is-brand-fallback{object-fit:contain;transform:scale(1.24) translateY(5%)}
.friend-profile-message{z-index:2;top:18px;right:16px;min-width:102px;min-height:42px;padding:0 17px;border-color:var(--theme-border);background:color-mix(in srgb,var(--theme-primary) 88%,transparent);box-shadow:0 9px 24px rgba(0,0,0,.28);color: var(--theme-on-primary)}.friend-profile-message-disabled{position:absolute;z-index:2;top:23px;right:17px;padding:9px 13px;border:1px solid var(--theme-border);border-radius:18px;color:var(--theme-muted);font-size:9px}
.friend-profile-copy{position:relative;z-index:1}.friend-profile-copy .friend-profile-eyebrow{display:block;margin-bottom:7px;padding:0;background:transparent;color:var(--theme-primary);font-size:8px;letter-spacing:2px}.friend-profile-copy h2{margin-bottom:9px}.friend-profile-meta{display:flex;align-items:center;gap:7px}.friend-profile-meta b,.friend-profile-meta em{display:inline-flex;padding:5px 9px;border-radius:12px;font-size:9px;font-style:normal}.friend-profile-meta b{background:var(--theme-surface);color:#b84e78}.friend-profile-meta em{background:color-mix(in srgb,var(--theme-surface) 10%,transparent);color:var(--theme-muted)}.friend-profile-copy p{max-width:330px;margin-top:13px;font-size:13px;font-weight:700}
.friend-album-title{position:relative}.friend-album-title p{position:absolute;right:1px;bottom:14px;margin:0;color:var(--theme-muted);font-size:8px}.friend-album-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.friend-album-grid button{aspect-ratio:1/1.18;border-color:var(--theme-border)}.friend-album-grid button:first-child:nth-last-child(n+3){grid-row:span 2;aspect-ratio:auto;min-height:330px}.friend-album-grid button:first-child:nth-last-child(1){grid-column:1/-1;aspect-ratio:1/1.1}.friend-profile-safety{display:flex;margin-top:13px;padding:12px 13px;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface-alt)}.friend-profile-safety b{color:var(--theme-primary);font-size:9px}.friend-profile-safety span{color:var(--theme-muted);font-size:8px;text-align:right}
@media(max-width:370px){.friend-square-page{padding-right:11px;padding-left:11px}.friend-square-hero{padding-right:142px;padding-left:15px}.friend-square-hero p{width:165px}.friend-square-hero>img{right:-31px;width:190px}.friend-square-grid{gap:8px}.friend-square-copy{padding-right:9px;padding-left:9px}.friend-square-name{align-items:flex-start;flex-direction:column;gap:6px}.friend-age-controls{grid-template-columns:1fr}.friend-profile-page{padding-top:19px}.friend-profile-hero{padding-top:105px}}

/* v0.8.0-alpha.15.30.1: customer balance order payment */
.balance-pay-button{width:100%;min-height:46px;margin:0 0 8px;border:1px solid var(--theme-primary);border-radius:23px;background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);-webkit-text-fill-color:currentColor;font-weight:900;box-shadow:0 10px 22px color-mix(in srgb,var(--theme-primary) 20%,transparent)}
.balance-pay-button:disabled{opacity:.48;box-shadow:none}
.balance-pay-button.insufficient{border-color:var(--theme-border);background:var(--theme-primary-soft);color:var(--theme-foreground);box-shadow:none}
.balance-pay-button.pending{border-color:var(--theme-border);background:var(--theme-surface-strong);color:var(--theme-muted)}
.order-actions .balance-pay-button{width:auto;margin:0}
.order-wechat-pay{width:100%;margin-bottom:8px}
.balance-payment-confirm{text-align:center}
.balance-payment-confirm>span{color:var(--theme-muted);font-size:8px;font-weight:900;letter-spacing:2px}
.balance-payment-confirm h2{margin:7px 0 5px}
.balance-payment-summary{display:grid;grid-template-columns:1fr 1fr;margin:18px 0 12px;overflow:hidden;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt)}
.balance-payment-summary>div{padding:13px 8px;border-right:1px solid var(--theme-border);border-bottom:1px solid var(--theme-border)}
.balance-payment-summary>div:nth-child(2){border-right:0}
.balance-payment-summary>div:last-child{grid-column:1/-1;border:0;background:var(--theme-primary-soft)}
.balance-payment-summary small,.balance-payment-summary b,.balance-payment-summary strong{display:block}
.balance-payment-summary small{margin-bottom:5px;color:var(--theme-muted);font-size:9px}
.balance-payment-summary b{font-size:16px}
.balance-payment-summary strong{color:var(--theme-foreground);font-size:21px}
.balance-payment-warning{margin:0 0 16px;color:var(--theme-muted);font-size:10px;line-height:1.65}
.balance-payment-confirm .modal-actions .balance-pay-button{margin:0}

/* v0.8.0-alpha.15.30.14: native business-page DIY visuals */
.ranking-page,.friend-square-page,.friend-profile-page,.member-commerce-page{background:var(--native-bg,#080718);color:var(--native-text,#f8f7ff)}
.ranking-hero{position:relative;overflow:hidden;border-radius:22px}
.ranking-hero-copy{position:relative;z-index:2;min-height:118px;padding:22px 18px 16px}
.ranking-hero-copy>span{color:var(--brand2,#ff5fbd);font-size:8px;font-weight:900;letter-spacing:2px}
.ranking-hero-copy h2{margin:7px 0 6px;font-size:26px}.ranking-hero-copy p{max-width:230px;margin:0;color:var(--theme-muted);font-size:10px;line-height:1.6}
.ranking-hero-banner{position:absolute;z-index:0;inset:0;width:100%;height:128px;object-fit:cover;opacity:.56}
.ranking-hero:has(.ranking-hero-banner):before{position:absolute;z-index:1;inset:0 0 auto;height:128px;background:linear-gradient(90deg,color-mix(in srgb,var(--theme-surface) 92%,transparent),color-mix(in srgb,var(--theme-surface) 28%,transparent));content:""}
.ranking-podium-photo{display:block;width:100%;height:100%;overflow:hidden;border-radius:50%}.ranking-podium-photo>img{width:100%;height:100%;border-radius:50%;object-fit:cover}
.ranking-podium-avatar>.ranking-podium-decoration{position:absolute;z-index:2;left:50%;top:50%;width:142%;height:142%;max-width:none;border-radius:0;object-fit:contain;pointer-events:none;transform:translate(-50%,-50%)}
.ranking-podium-avatar>b{z-index:3}
.friend-profile-decor{position:absolute;z-index:0;inset:0;width:100%;height:100%;border-radius:inherit;object-fit:cover;opacity:.42;pointer-events:none}
.member-status-copy h2{margin-bottom:7px}.member-status-intro{max-width:205px;margin:0 0 12px;color:var(--theme-muted);font-size:9px;line-height:1.45}.member-status-copy div>small{display:block;margin-bottom:5px;color:var(--theme-muted);font-size:9px}
body[data-current-route="lottery"] .phone-app,body[data-current-route="service"] .phone-app{background:var(--theme-background)}
body[data-current-route="lottery"] .page-header,body[data-current-route="service"] .page-header{border-bottom-color:var(--theme-primary);background:color-mix(in srgb,var(--theme-background) 97%,transparent);color:var(--theme-foreground)}
body[data-current-route="lottery"] .tabbar,body[data-current-route="service"] .tabbar{border-top-color:var(--theme-primary);background:var(--theme-background)}
.activity-native-page,.service-native-page{min-height:calc(100vh - 126px);padding:15px 14px 34px;background:var(--native-bg,#080718);color:var(--native-text,#f8f7ff)}
.activity-native-hero,.service-native-hero{position:relative;min-height:174px;overflow:hidden;border:1px solid color-mix(in srgb,var(--brand,#7956ff) 52%,#2b2340);border-radius:23px;background:radial-gradient(circle at 85% 30%,color-mix(in srgb,var(--brand2,#ff5fbd) 30%,transparent),transparent 38%),linear-gradient(135deg,var(--theme-primary),var(--theme-accent));box-shadow:0 18px 42px rgba(0,0,0,.28);color: var(--theme-on-gradient)}
.activity-native-hero>div,.service-native-hero>div{position:relative;z-index:3;max-width:62%;padding:28px 19px}.activity-native-hero span,.service-native-hero span{color:var(--brand2,#ff5fbd);font-size:8px;font-weight:900;letter-spacing:2px}.activity-native-hero h2,.service-native-hero h2{margin:8px 0;font-size:26px}.activity-native-hero p,.service-native-hero p{margin:0;color:var(--theme-muted);font-size:10px;line-height:1.65}
.activity-hero-banner,.service-native-banner{position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:cover;opacity:.58}.activity-native-hero:has(.activity-hero-banner):before,.service-native-hero:has(.service-native-banner):before{position:absolute;z-index:1;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--theme-surface) 92%,transparent),color-mix(in srgb,var(--theme-surface) 20%,transparent));content:""}
.activity-hero-decor,.service-native-illustration{position:absolute;z-index:2;right:-18px;bottom:-25px;width:180px;height:180px;object-fit:contain;filter:drop-shadow(0 13px 24px rgba(0,0,0,.38))}
.activity-loading-card,.activity-member-gate{margin-top:13px;padding:24px 18px;border:1px solid var(--theme-border);border-radius:18px;background:var(--theme-surface-alt);color:var(--theme-muted);text-align:center}.activity-loading-card b{display:block;margin-bottom:7px;color:var(--theme-foreground)}.activity-loading-card p,.activity-member-gate p{margin:0 0 14px;font-size:11px;line-height:1.65}.activity-loading-card .primary,.activity-member-gate .primary{width:100%}
.activity-native-page .lottery{margin-top:13px;border-radius:22px}.activity-native-page .lottery>.card{border:0}
.service-native-contact{display:grid;margin-top:13px;padding:16px;gap:14px;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface-alt)}.service-native-qr{margin:0;text-align:center}.service-native-qr img{display:block;width:min(190px,58vw);margin:0 auto;padding:8px;border-radius:18px;background:var(--theme-surface)}.service-native-qr figcaption{margin-top:8px;color:var(--theme-muted);font-size:9px}
.service-native-contact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.service-native-item{display:flex;min-width:0;min-height:108px;padding:13px;flex-direction:column;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface-alt)}.service-native-item.is-wide{grid-column:1/-1;min-height:auto}.service-native-item>span{color:var(--theme-muted);font-size:9px}.service-native-item>b{margin:8px 0;overflow-wrap:anywhere;font-size:13px}.service-native-item button,.service-native-item a{margin-top:auto;padding:8px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface-alt);color:var(--theme-primary);font-size:9px;font-weight:800;text-align:center}.service-native-item.is-empty b{color:var(--theme-muted)}.service-native-hours{margin-top:11px;padding:15px 16px;border:1px solid var(--theme-border);border-radius:17px;background:var(--theme-surface-alt)}.service-native-hours span{color:var(--brand2,#ff5fbd);font-size:8px;font-weight:900;letter-spacing:1.5px}.service-native-hours p{margin:7px 0 0;color:var(--theme-muted);font-size:10px;line-height:1.7}
@media(max-width:370px){.ranking-hero-copy{padding-right:12px;padding-left:12px}.activity-native-page,.service-native-page{padding-right:11px;padding-left:11px}.activity-native-hero>div,.service-native-hero>div{max-width:68%;padding-left:15px}.service-native-contact{padding-right:12px;padding-left:12px}}

/* v0.8.0-alpha.15.30.15: full native-page visual variables, business data remains live */
.ranking-page,.friend-square-page,.friend-profile-page,.member-commerce-page,.activity-native-page,.service-native-page{padding-right:var(--native-page-padding,14px);padding-left:var(--native-page-padding,14px);background:var(--native-page-background,var(--native-bg,#080718));color:var(--native-text,#f8f7ff)}
.ranking-hero-copy p,.ranking-trust span,.ranking-podium-card p span,.ranking-list-panel>header p,.ranking-list-row span,.ranking-list-end,.friend-square-hero p,.friend-square-toolbar span,.friend-square-intro,.friend-square-privacy,.friend-profile-safety span,.member-status-intro,.member-status-copy div span,.member-benefit-poster p,.member-plan-card>span,.member-plan-card>em,.member-payment-note,.member-order-main span,.member-order-foot span,.activity-native-hero p,.service-native-hero p,.service-native-item>span,.service-native-hours p{color:var(--native-muted,#a99fb8)}
.ranking-hero,.friend-square-hero,.friend-profile-hero,.member-benefit-poster,.activity-native-hero,.service-native-hero{border-color:var(--native-border,#34294c);border-radius:var(--native-radius,22px);background:radial-gradient(circle at 86% 24%,color-mix(in srgb,var(--native-accent,#ff5fbd) 28%,transparent),transparent 38%),linear-gradient(var(--native-gradient-angle,135deg),var(--native-gradient-start,#171028),var(--native-gradient-end,#3a1758));color: var(--theme-on-gradient)}
/* These four titles sit on themed card surfaces, so use the surface foreground. */
.ranking-page .ranking-hero-copy h2,
.friend-square-page .friend-square-hero h2,
.activity-native-page .activity-native-hero h2,
.service-native-page .service-native-hero h2 {
  color: var(--native-text,var(--theme-foreground));
}
.ranking-mode-tabs,.ranking-trust,.ranking-podium-card,.ranking-list-panel,.friend-square-toolbar,.friend-square-card,.member-status-hero,.member-benefit-strip div,.member-plan-section,.member-order-section,.activity-native-page .lottery,.activity-loading-card,.activity-member-gate,.service-native-contact,.service-native-hours{border-color:var(--native-border,#34294c);border-radius:var(--native-radius,22px);background:var(--native-surface,#151326)}
.ranking-mode-tabs button.active,.ranking-period-tabs button.active,.member-plan-card.selected{background:var(--native-primary,#7956ff);color:var(--native-text,#f8f7ff)}
.ranking-period-tabs,.ranking-period-caption,.ranking-list-row,.friend-square-toolbar>button,.member-plan-card,.member-order-card,.service-native-item,.activity-result-card{border-color:var(--native-border,#34294c);background:var(--native-surface-alt,#211a36);color:var(--native-text,#f8f7ff)}
.ranking-hero-copy>span,.ranking-list-panel>header span,.friend-square-hero span,.friend-profile-eyebrow,.friend-album-title span,.member-status-copy>span,.member-benefit-poster div>span,.member-section-title span,.activity-native-hero span,.service-native-hero span,.service-native-hours span{color:var(--native-accent,#ff5fbd)}
.friend-square-cover.is-brand-fallback{background:radial-gradient(circle at 50% 35%,var(--native-gradient-end,#54278a),var(--native-gradient-start,#171025) 70%);color: var(--theme-on-gradient)}
.friend-profile-message,.friend-filter-actions button:last-child,.member-open-button,.signin-reward-action,.activity-native-page .wheel button{border-color:var(--native-primary,#7956ff);background:linear-gradient(100deg,var(--native-button-start,#7544ee),var(--native-button-end,#bd69dc));color:var(--theme-on-gradient)}
.member-status-hero{overflow:hidden}.member-status-copy>span,.member-benefit-poster div>span{color:var(--native-accent,#ff5fbd)}.member-benefit-strip b{color:var(--native-text,#f8f7ff)}.member-plan-card{border-color:var(--native-border,#34294c)}
.signin-reward-dialog{border-radius:var(--native-radius,28px);background:var(--native-page-background,var(--native-bg,#13091f));color:var(--native-text,#f8f7ff)}
.signin-reward-visual{background:linear-gradient(var(--native-gradient-angle,135deg),var(--native-gradient-start,#171028),var(--native-gradient-end,#3a1758))}.signin-reward-visual:after{background:linear-gradient(180deg,transparent,var(--native-bg,#13091f) 92%)}
.signin-reward-copy{color:var(--native-text,#f8f7ff)}.signin-reward-copy span{color:var(--native-accent,#ff5fbd)}.signin-reward-copy p{color:var(--native-muted,#a99fb8)}
.signin-reward-panel{border-radius:var(--native-radius,28px);background:var(--native-surface,#fff);color:var(--native-text,#251832)}.signin-reward-cell{border-color:var(--native-border,#a764f0);background:var(--native-surface-alt,#fff)}.signin-reward-cell b{background:var(--native-primary,#b46bd0);color:var(--theme-on-primary)}.signin-reward-cell small,.signin-reward-panel>p{color:var(--native-muted,#93859c)}.signin-reward-cell.current{border-color:var(--native-accent,#7d3fca);box-shadow:0 0 0 3px color-mix(in srgb,var(--native-accent,#7d3fca) 18%,transparent)}.signin-reward-cell.current b{background:linear-gradient(100deg,var(--native-button-start,#b86bcf),var(--native-button-end,#8952de));color: var(--theme-on-gradient)}.signin-page-shell{padding-right:var(--native-page-padding,14px);padding-left:var(--native-page-padding,14px);background:var(--native-page-background,var(--native-bg,#090817))}
.activity-native-page .lottery{color:var(--native-text,#f8f7ff)}.activity-native-page .lottery>.card{border:1px solid var(--native-border,#34294c)}.activity-result-card .list-item{border-bottom-color:var(--native-border,#34294c)}.activity-result-card .sub{color:var(--native-muted,#a99fb8)}
.service-native-contact-grid{color:var(--native-text,#f8f7ff)}.service-native-item button,.service-native-item a{border-color:var(--native-primary,#7956ff);background:linear-gradient(100deg,var(--native-button-start,#7544ee),var(--native-button-end,#bd69dc));color:var(--theme-on-gradient)}

/* v0.8.0-alpha.15.30.33: improve coupon claim button contrast and legibility. */

/* v0.8.0-alpha.15.30.34: customer lottery record status filters. */
.lottery-record-filter{display:flex;margin:14px 0 9px;padding:2px 0 4px;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.lottery-record-filter::-webkit-scrollbar{display:none}
.lottery-record-filter button{display:inline-flex;min-width:76px;height:40px;padding:0 12px;flex:0 0 auto;align-items:center;justify-content:center;gap:7px;border:1px solid var(--theme-border);border-radius:999px;background:var(--theme-surface);color:var(--theme-muted);font-size:12px;font-weight:750;white-space:nowrap;box-shadow:0 3px 12px rgba(0,0,0,.05)}
.lottery-record-filter button b{display:inline-flex;min-width:20px;height:20px;padding:0 5px;align-items:center;justify-content:center;border-radius:999px;background:var(--theme-surface);color:var(--theme-muted);font-size:10px;line-height:1}
.lottery-record-filter button.active{border-color:var(--theme-primary);background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 7px 18px rgba(0,0,0,.22)}
.lottery-record-filter button.active b{background:color-mix(in srgb,var(--theme-surface) 20%,transparent);color:var(--theme-foreground)}
.lottery-record-caption{margin:0 2px 9px;color:var(--theme-muted);font-size:11px;line-height:1.5}
.lottery-record-caption b{color:var(--theme-muted);font-size:12px}
.lottery-record-card{margin-top:0;padding-top:4px;padding-bottom:4px}
.lottery-record-item{min-height:60px}
.lottery-record-tag{flex:0 0 auto;min-width:54px;padding:6px 9px;text-align:center;font-size:11px;font-weight:800}
.lottery-record-tag.is-pending{background:#fff0d9;color:#a85c00}
.lottery-record-tag.is-claimed{background:#e6f8ee;color:#187c4b}
.lottery-record-tag.is-loser{background:var(--theme-surface);color:var(--theme-muted)}
.lottery-record-empty{padding:42px 16px;text-align:center;color:var(--theme-muted)}
.lottery-record-empty b{display:block;margin-bottom:7px;color:var(--theme-muted);font-size:15px}
.lottery-record-empty span{font-size:12px;line-height:1.6}
@media(max-width:370px){.lottery-record-filter button{min-width:72px;padding-right:10px;padding-left:10px}.lottery-record-item{gap:8px}.lottery-record-tag{min-width:50px;padding-right:7px;padding-left:7px}}

/* v0.8.0-alpha.15.30.36 积分商城 */
.points-mall-page{min-height:calc(100vh - 110px);padding:14px 12px 92px;background:var(--theme-surface)}.points-mall-balance{position:relative;overflow:hidden;padding:22px 18px;border-radius:18px;background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 12px 28px rgba(0,0,0,.22)}.points-mall-balance:after{content:"";position:absolute;right:-35px;top:-55px;width:150px;height:150px;border-radius:50%;background:color-mix(in srgb,var(--theme-surface) 10%,transparent)}.points-mall-balance span{display:block;font-size:13px;color:var(--theme-foreground)}.points-mall-balance strong{display:block;margin-top:8px;font-size:34px;line-height:1}.points-mall-balance p{margin:12px 0 0;font-size:12px;color:var(--theme-foreground)}.points-mall-notice{margin:12px 0;padding:14px 15px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface);color:var(--theme-muted)}.points-mall-notice b{display:block;margin-bottom:5px;color:var(--theme-muted)}.points-mall-notice p{margin:0;font-size:12px;line-height:1.65}.points-mall-notice span{display:inline-block;margin-top:7px;padding:4px 8px;border-radius:999px;background:var(--theme-surface);color:var(--theme-primary);font-size:11px}.points-mall-notice.exchange{margin-top:0}.points-mall-list{display:grid;gap:10px}.points-mall-product{display:grid;grid-template-columns:76px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface);box-shadow:0 5px 18px rgba(0,0,0,.04)}.points-mall-thumb{display:grid;place-items:center;width:76px;height:76px;overflow:hidden;border-radius:13px;background:var(--theme-surface);font-size:32px}.points-mall-thumb img{width:100%;height:100%;object-fit:cover}.points-mall-product-info{min-width:0}.points-mall-product-info h3{margin:0 0 7px;overflow:hidden;color:var(--theme-foreground);font-size:15px;text-overflow:ellipsis;white-space:nowrap}.points-mall-product-info>strong{display:block;color:var(--theme-primary);font-size:20px}.points-mall-product-info>strong small{margin-left:3px;font-size:11px}.points-mall-product-info p{margin:6px 0 0;color:var(--theme-muted);font-size:10px;line-height:1.4}.points-mall-product>button{min-width:82px;min-height:38px;padding:0 12px;border:0;border-radius:10px;background:var(--theme-primary);color:var(--theme-on-primary);font:inherit;font-size:12px;font-weight:800;box-shadow:0 6px 13px rgba(0,0,0,.2)}.points-mall-product>button:disabled{background:var(--theme-surface-strong);color:var(--theme-muted);box-shadow:none}.points-mall-empty{min-height:270px;background:transparent}.points-mall-closed{min-height:330px}.points-mall-closed b{display:block;margin-top:8px;color:var(--theme-muted)}.points-exchange-page{display:grid;gap:10px}.points-exchange-card{overflow:hidden;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface);box-shadow:0 5px 17px rgba(0,0,0,.04)}.points-exchange-card>div:first-child{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px dashed var(--theme-border);background:var(--theme-surface)}.points-exchange-card>div:first-child span{color:var(--theme-muted);font-size:11px}.points-exchange-card>div:first-child b{color:var(--theme-primary);font-size:13px;letter-spacing:.4px}.points-exchange-main{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 14px}.points-exchange-main h3{margin:0 0 5px;color:var(--theme-foreground);font-size:15px}.points-exchange-main p{margin:0;color:var(--theme-muted);font-size:11px}.points-exchange-main>strong{color:var(--theme-primary);font-size:19px;white-space:nowrap}.points-exchange-main>strong small{margin-left:2px;font-size:10px}.points-exchange-card footer{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--theme-surface)}.points-exchange-card footer>small{color:var(--theme-muted);font-size:10px}.points-exchange-status{padding:4px 8px;border-radius:999px;background:var(--theme-surface);color:var(--theme-primary);font-size:11px;font-weight:700}.points-exchange-status.status-1{background:#e5f6eb;color:#19834b}.points-exchange-status.status-2{background:var(--theme-surface);color:var(--theme-muted)}.points-exchange-status.status-3{background:#fff0e6;color:#c45d25}.points-exchange-success{text-align:center}.points-exchange-success>span{display:block;margin-bottom:5px;color:var(--theme-primary);font-size:11px;font-weight:800;letter-spacing:1.5px}.points-exchange-success>div{margin:16px 0;padding:14px;border-radius:13px;background:var(--theme-primary-soft)}.points-exchange-success>div small{display:block;color:var(--theme-muted)}.points-exchange-success>div b{display:block;margin-top:5px;color:var(--theme-foreground);font-size:22px;letter-spacing:1px}.points-exchange-success>p{color:var(--theme-muted);font-size:13px;line-height:1.65}
@media(max-width:360px){.points-mall-product{grid-template-columns:64px minmax(0,1fr)}.points-mall-thumb{width:64px;height:64px}.points-mall-product>button{grid-column:1/-1;width:100%}}

/* v0.8.0-alpha.15.30.37: active super-member avatar crown */
.member-avatar-badged{position:relative!important;overflow:visible!important}
.member-avatar-crown{position:absolute!important;z-index:8!important;left:50%!important;top:-18px!important;display:block!important;width:74%!important;height:auto!important;max-width:none!important;max-height:30px!important;border:0!important;border-radius:0!important;background:transparent!important;object-fit:contain!important;transform:translateX(-50%)!important;filter:drop-shadow(0 4px 5px rgba(34,18,66,.35))!important;pointer-events:none!important}
.member-avatar-badged>img:not(.member-avatar-crown),.member-avatar-badged>.ranking-podium-photo,.member-avatar-badged>.ranking-avatar-fallback{border-radius:50%}
.member-avatar-crown.member-avatar-crown-podium{top:-28px!important;width:88%!important;max-height:40px!important}
.member-avatar-crown.member-avatar-crown-profile{top:-28px!important;width:84%!important;max-height:38px!important}
.member-avatar-crown.member-avatar-crown-small{top:-17px!important;width:78%!important;max-height:25px!important}
.member-avatar-crown.member-avatar-crown-entry{top:-18px!important;width:80%!important;max-height:27px!important}
.ranking-list-avatar>.member-avatar-crown.member-avatar-crown-small{top:-12px!important;max-height:22px!important}
.ranking-list-avatar.member-avatar-badged,.ranking-self-avatar.member-avatar-badged,.private-thread-card .avatar.member-avatar-badged,.private-chat-avatar.member-avatar-badged,.friend-profile-avatar.member-avatar-badged,.member-profile-avatar.member-avatar-badged,.member-profile-entry-avatar.member-avatar-badged{overflow:visible!important}
.ranking-list-avatar.member-avatar-badged>img:not(.member-avatar-crown),.ranking-self-avatar.member-avatar-badged>img:not(.member-avatar-crown),.private-thread-card .avatar.member-avatar-badged>img:not(.member-avatar-crown),.private-chat-avatar.member-avatar-badged>img:not(.member-avatar-crown),.friend-profile-avatar.member-avatar-badged>img:not(.member-avatar-crown),.member-profile-avatar.member-avatar-badged>img:not(.member-avatar-crown),.member-profile-entry-avatar.member-avatar-badged>img:not(.member-avatar-crown){width:100%;height:100%;border-radius:50%;object-fit:cover}
.friend-square-cover>.member-avatar-crown.friend-square-member-crown{z-index:5!important;top:8px!important;left:9px!important;width:62px!important;height:38px!important;max-height:38px!important;padding:4px 6px!important;border:1px solid rgba(255,255,255,.32)!important;border-radius:12px!important;background:color-mix(in srgb,var(--theme-surface) 60%,transparent)!important;object-fit:contain!important;transform:none!important;filter:drop-shadow(0 5px 8px rgba(0,0,0,.35))!important;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
.friend-square-cover:active>.member-avatar-crown.friend-square-member-crown{transform:none!important}
@media(max-width:370px){.member-avatar-crown.member-avatar-crown-podium{top:-25px!important}.friend-square-cover>.member-avatar-crown.friend-square-member-crown{width:55px!important;height:34px!important}}

/* v0.8.0-alpha.15.30.39: keep podium rank labels clear of configurable member crowns */
.ranking-top-label{position:relative;z-index:10}
.ranking-podium-crown-slot{position:relative;z-index:9;display:flex;align-items:flex-end;justify-content:center;width:100%;height:26px;margin:-2px auto -5px;overflow:visible;pointer-events:none}
.ranking-podium-crown-slot.is-empty{visibility:hidden}
.ranking-podium-card.place-1 .ranking-podium-crown-slot{height:31px;margin-bottom:-7px}
.ranking-podium-crown-slot>.member-avatar-crown.member-avatar-crown-podium{position:relative!important;z-index:1!important;left:auto!important;top:auto!important;display:block!important;width:auto!important;height:30px!important;max-width:86%!important;max-height:30px!important;margin:0!important;border:0!important;border-radius:0!important;background:transparent!important;object-fit:contain!important;transform:none!important;filter:drop-shadow(0 4px 5px rgba(34,18,66,.35))!important}
.ranking-podium-card.place-1 .ranking-podium-crown-slot>.member-avatar-crown.member-avatar-crown-podium{height:36px!important;max-width:84%!important;max-height:36px!important}
@media(max-width:370px){.ranking-podium-crown-slot{height:24px;margin-bottom:-5px}.ranking-podium-card.place-1 .ranking-podium-crown-slot{height:28px;margin-bottom:-6px}.ranking-podium-crown-slot>.member-avatar-crown.member-avatar-crown-podium{height:27px!important;max-height:27px!important}.ranking-podium-card.place-1 .ranking-podium-crown-slot>.member-avatar-crown.member-avatar-crown-podium{height:32px!important;max-height:32px!important}}

/* v0.8.0-alpha.15.30.40：设置页真实通知、协议与账号注销闭环 */
.settings-sheet-loading,.settings-sheet-error{display:grid;place-items:center;min-height:260px;padding:28px 18px;text-align:center}
.settings-sheet-loading i,.settings-sheet-error i{display:grid;place-items:center;width:58px;height:58px;margin-bottom:14px;border-radius:18px;background:#f0ebff;color:var(--brand);font-size:27px;font-style:normal}
.settings-sheet-loading b,.settings-sheet-error h2{margin:0;color:#2f2937;font-size:18px}
.settings-sheet-loading span,.settings-sheet-error p{margin:8px 0 18px;color:#928b99;font-size:12px;line-height:1.65}
.settings-sheet-error .primary{width:100%;min-height:46px}
.notification-settings-sheet,.legal-document-sheet,.account-deletion-sheet{color:var(--theme-foreground)}
.notification-settings-head,.legal-document-head,.account-deletion-head{position:relative;overflow:hidden;margin:-4px -4px 16px;padding:20px 18px;border-radius:18px;background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color:var(--theme-on-gradient)}
.notification-settings-head:after,.legal-document-head:after,.account-deletion-head:after{content:"";position:absolute;right:-34px;top:-45px;width:130px;height:130px;border-radius:50%;background:color-mix(in srgb,var(--theme-surface) 10%,transparent)}
.notification-settings-head>span,.legal-document-head>span,.account-deletion-head>span{position:relative;z-index:1;color:var(--theme-muted);font-size:9px;font-weight:900;letter-spacing:1.8px}
.notification-settings-head h2,.legal-document-head h2,.account-deletion-head h2{position:relative;z-index:1;margin:6px 0 5px;font-size:22px}
.notification-settings-head p,.legal-document-head p,.account-deletion-head p{position:relative;z-index:1;margin:0;color:var(--theme-foreground);font-size:11px;line-height:1.6}
.notification-settings-list{overflow:hidden;border:1px solid var(--theme-border);border-radius:16px;background:var(--theme-surface)}
.notification-toggle-row{position:relative;display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:72px;padding:14px 15px;border-bottom:1px solid var(--theme-border);cursor:pointer;-webkit-tap-highlight-color:transparent}
.notification-toggle-row:last-child{border-bottom:0}
.notification-toggle-row>span{min-width:0;flex:1}
.notification-toggle-row b,.notification-toggle-row small{display:block}
.notification-toggle-row b{color:var(--theme-muted);font-size:14px}
.notification-toggle-row small{margin-top:5px;color:var(--theme-muted);font-size:11px;line-height:1.45}
.notification-toggle-row input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.notification-toggle-row>i{position:relative;flex:0 0 46px;width:46px;height:26px;border-radius:999px;background:var(--theme-surface-strong);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);transition:.2s ease}
.notification-toggle-row>i:after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:var(--theme-surface);box-shadow:0 2px 7px rgba(0,0,0,.26);transition:.2s ease}
.notification-toggle-row input:checked+i{background:linear-gradient(135deg,var(--brand),var(--brand2));box-shadow:0 5px 13px rgba(0,0,0,.25);color: var(--theme-on-gradient)}
.notification-toggle-row input:checked+i:after{transform:translateX(20px)}
.notification-toggle-row input:focus-visible+i{outline:3px solid color-mix(in srgb,var(--theme-border) 20%,transparent);outline-offset:2px}
.notification-scope-note{margin-top:13px;padding:13px 14px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface)}
.notification-scope-note b{display:block;color:var(--theme-primary);font-size:12px}
.notification-scope-note p{margin:5px 0 0;color:var(--theme-muted);font-size:11px;line-height:1.6}
.notification-save-button,.legal-document-close{width:100%;min-height:48px;margin-top:16px}
.notification-channel-list{display:grid;gap:8px;margin-top:12px}.notification-channel-card{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:11px 13px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface)}.notification-channel-card b,.notification-channel-card small{display:block}.notification-channel-card b{color:var(--theme-foreground);font-size:12px}.notification-channel-card small{margin-top:4px;color:var(--theme-muted);font-size:10px}.notification-channel-status{flex:0 0 auto;padding:5px 8px;border-radius:999px;background:color-mix(in srgb,var(--theme-border) 40%,transparent);color:var(--theme-muted);font-size:9px;font-weight:800}.notification-channel-status.is-on{background:rgba(61,208,145,.13);color:#5be0a4}.notification-channel-status.is-reserved{background:rgba(255,190,75,.12);color:#ffd17d}.notification-wechat-button{width:100%;min-height:48px;margin-top:10px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface-alt);color:var(--theme-foreground);font-weight:800}
.legal-document-body{max-height:52vh;overflow:auto;padding:17px 15px;border:1px solid var(--theme-border);border-radius:15px;background:var(--theme-surface);color:var(--theme-muted);font-size:13px;line-height:1.9;word-break:break-word;-webkit-overflow-scrolling:touch}
.account-deletion-assets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:13px}
.account-deletion-assets>div{padding:12px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface)}
.account-deletion-assets span,.account-deletion-assets b{display:block}
.account-deletion-assets span{color:var(--theme-muted);font-size:10px}
.account-deletion-assets b{margin-top:5px;color:var(--theme-muted);font-size:16px}
.account-deletion-blockers{display:grid;gap:9px;margin:13px 0}
.account-deletion-blockers h3{margin:0 0 2px;color:#a94444;font-size:14px}
.account-deletion-blockers article{padding:12px 13px;border:1px solid #f0d3d3;border-radius:13px;background:#fff6f6}
.account-deletion-blockers strong{color:#9d3939;font-size:12px}
.account-deletion-blockers p{margin:5px 0 0;color:var(--theme-muted);font-size:11px;line-height:1.55}
.account-deletion-ready{display:flex;flex-direction:column;gap:5px;margin:13px 0;padding:13px 14px;border:1px solid #cce9da;border-radius:13px;background:#f0fbf5}
.account-deletion-ready b{color:#25744c;font-size:13px}
.account-deletion-ready span{color:var(--theme-muted);font-size:11px;line-height:1.55}
.account-deletion-notices{margin:13px 0;padding:13px 14px 13px 31px;border-radius:13px;background:var(--theme-surface);color:var(--theme-muted);font-size:11px;line-height:1.7}
.account-deletion-confirm{display:flex;align-items:flex-start;gap:9px;margin:13px 0;padding:12px;border:1px solid var(--theme-border);border-radius:13px;background:var(--theme-surface)}
.account-deletion-confirm input{flex:0 0 auto;width:18px;height:18px;margin:1px 0 0;accent-color:var(--brand)}
.account-deletion-confirm span{color:var(--theme-muted);font-size:11px;line-height:1.55}
.account-deletion-input{display:block;margin-top:13px;color:var(--theme-muted);font-size:11px;font-weight:700}
.account-deletion-input .input{margin-top:7px;border-color:var(--theme-border);background:var(--theme-surface);font-size:15px}
.account-deletion-submit{width:100%;min-height:48px;margin-top:14px;border:0;border-radius:13px;background:linear-gradient(135deg,#b23f4c,#dc5360);color:var(--theme-foreground);font-weight:900;box-shadow:0 8px 20px rgba(177,55,70,.22)}
.account-deletion-submit:disabled{opacity:.65}
.account-deletion-refresh{width:100%;min-height:48px;margin-top:12px}
.account-deletion-cancel{width:100%;min-height:42px;margin-top:9px;border:0;background:transparent;color:var(--theme-muted);font-weight:700}
@media(max-width:370px){.notification-toggle-row{padding-right:12px;padding-left:12px}.notification-toggle-row>i{flex-basis:42px;width:42px}.notification-toggle-row input:checked+i:after{transform:translateX(16px)}.account-deletion-assets{grid-template-columns:1fr 1fr}.notification-settings-head,.legal-document-head,.account-deletion-head{padding-right:15px;padding-left:15px}}

/* v0.8.0-alpha.15.30.41 顾客端组局活动与实时报名 */
.party-page{min-height:calc(100vh - 116px);padding:14px 14px 26px;background:linear-gradient(180deg,var(--theme-surface) 0,var(--theme-surface) 230px,var(--theme-surface) 100%)}
.party-page-hero{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;overflow:hidden;padding:22px 20px;border-radius:22px;background:radial-gradient(circle at 94% 12%,color-mix(in srgb,var(--theme-primary) 20%,transparent),transparent 32%),linear-gradient(135deg,var(--theme-accent),var(--theme-accent) 58%,var(--theme-accent));color:var(--theme-on-gradient);box-shadow:0 17px 36px rgba(0,0,0,.22)}
.party-page-hero:after{content:"";position:absolute;right:-24px;bottom:-34px;width:130px;height:130px;border:1px solid color-mix(in srgb,var(--theme-border) 18%,transparent);border-radius:50%;box-shadow:0 0 0 22px rgba(0,0,0,.06)}
.party-page-hero>div:first-child{position:relative;z-index:1;min-width:0}
.party-page-hero span{display:block;font-size:10px;font-weight:800;letter-spacing:2.2px;opacity:.78}
.party-page-hero h2{margin:6px 0 5px;font-size:25px;line-height:1.15}
.party-page-hero p{max-width:250px;margin:0;color:color-mix(in srgb,var(--theme-foreground) 77%,transparent);font-size:12px;line-height:1.65}
.party-live-indicator{position:relative;z-index:1;display:flex;min-width:92px;flex-direction:column;align-items:flex-end;padding:10px 11px;border:1px solid color-mix(in srgb,var(--theme-border) 18%,transparent);border-radius:14px;background:color-mix(in srgb,var(--theme-surface-alt) 20%,transparent);backdrop-filter:blur(8px)}
.party-live-indicator i{position:absolute;top:14px;left:11px;width:7px;height:7px;border-radius:50%;background:#b9ffce;box-shadow:0 0 0 4px rgba(185,255,206,.14),0 0 12px rgba(185,255,206,.6);animation:party-live-pulse 1.8s ease-in-out infinite}
.party-live-indicator b{font-size:12px}
.party-live-indicator small{margin-top:4px;color:color-mix(in srgb,var(--theme-foreground) 67%,transparent);font-size:9px;white-space:nowrap}
@keyframes party-live-pulse{50%{opacity:.5;transform:scale(.82)}}
.party-page-guide{display:flex;align-items:flex-start;gap:12px;margin:12px 1px 15px;padding:13px 14px;border:1px solid var(--theme-border);border-radius:15px;background:color-mix(in srgb,var(--theme-surface) 82%,transparent);box-shadow:0 8px 23px rgba(0,0,0,.045)}
.party-page-guide b{flex:0 0 auto;color:var(--theme-primary);font-size:12px}
.party-page-guide span{color:var(--theme-muted);font-size:11px;line-height:1.62}
.party-event-list{display:grid;gap:13px}
.party-event-card{overflow:hidden;border:1px solid var(--theme-border);border-radius:20px;background:var(--theme-surface);box-shadow:0 12px 30px rgba(0,0,0,.07);transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease}
.party-event-card.is-focused{border-color:var(--theme-border);box-shadow:0 0 0 4px rgba(0,0,0,.13),0 18px 36px rgba(0,0,0,.18);transform:translateY(-2px)}
.party-card-cover{position:relative;height:126px;overflow:hidden;background:linear-gradient(135deg,var(--theme-primary),var(--theme-accent));color: var(--theme-on-gradient)}
.party-card-cover>img{display:block;width:100%;height:100%;object-fit:cover}
.party-card-cover:after{content:"";position:absolute;inset:auto 0 0;height:58%;background:linear-gradient(transparent,color-mix(in srgb,var(--theme-surface) 72%,transparent));pointer-events:none}
.party-card-cover-fallback{display:flex;height:100%;flex-direction:column;justify-content:flex-end;padding:18px 20px;background:radial-gradient(circle at 83% 20%,color-mix(in srgb,var(--theme-primary) 38%,transparent),transparent 28%),radial-gradient(circle at 72% 84%,color-mix(in srgb,var(--theme-accent) 20%,transparent),transparent 33%),linear-gradient(135deg,var(--theme-accent),var(--theme-accent) 52%,var(--theme-accent));color:var(--theme-on-gradient)}
.party-card-cover-fallback:after{content:"✦";position:absolute;right:25px;top:23px;color:color-mix(in srgb,var(--theme-foreground) 80%,transparent);font-size:48px;text-shadow:0 0 24px rgba(0,0,0,.8)}
.party-card-cover-fallback span{position:relative;z-index:1;font-size:10px;font-weight:800;letter-spacing:2.5px;opacity:.67}
.party-card-cover-fallback b{position:relative;z-index:1;margin-top:2px;font-size:27px;letter-spacing:4px}
.party-card-type,.party-card-cover>em{position:absolute;z-index:2;top:13px;display:inline-flex;align-items:center;min-height:25px;padding:0 10px;border-radius:999px;font-size:10px;font-style:normal;font-weight:800;backdrop-filter:blur(8px)}
.party-card-type{left:13px;border:1px solid color-mix(in srgb,var(--theme-border) 22%,transparent);background:color-mix(in srgb,var(--theme-surface-alt) 48%,transparent);color:var(--theme-foreground)}
.party-card-cover>em{right:13px;background:var(--theme-surface);color:var(--theme-primary);box-shadow:0 5px 14px rgba(0,0,0,.17)}
.party-event-card.is-ended .party-card-cover>em{color:var(--theme-muted)}
.party-event-card.is-full .party-card-cover>em{color:#a25d22}
.party-event-card.is-formed .party-card-cover>em{color:#2c7a54}
.party-card-body{padding:17px}
.party-card-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.party-card-title>div{min-width:0}
.party-card-title small{display:block;color:var(--theme-primary);font-size:10px;font-weight:700}
.party-card-title h3{margin:5px 0 0;color:var(--theme-foreground);font-size:18px;line-height:1.35;word-break:break-word}
.party-card-title>strong{flex:0 0 auto;color:var(--theme-primary);font-size:23px;line-height:1;white-space:nowrap}
.party-card-title>strong small{display:inline;margin-left:2px;color:var(--theme-muted);font-size:10px;font-weight:600}
.party-card-description{display:-webkit-box;overflow:hidden;margin:11px 0 0;color:var(--theme-muted);font-size:12px;line-height:1.65;-webkit-box-orient:vertical;-webkit-line-clamp:3}
.party-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:11px;margin-top:14px}
.party-progress>i{display:block;height:6px;overflow:hidden;border-radius:99px;background:var(--theme-surface)}
.party-progress>i>em{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--brand),var(--brand2));box-shadow:0 0 10px rgba(0,0,0,.3);color: var(--theme-on-gradient)}
.party-progress>span{color:var(--theme-muted);font-size:10px;white-space:nowrap}
.party-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:13px}
.party-counts span{min-width:0;padding:10px 7px;border-radius:11px;background:var(--theme-surface);color:var(--theme-muted);font-size:9px;text-align:center;white-space:nowrap}
.party-counts b{display:block;margin-bottom:3px;color:var(--theme-muted);font-size:14px}
.party-audit-note{margin-top:11px;padding:10px 11px;border:1px solid var(--theme-border);border-radius:9px;background:var(--theme-surface);color:var(--theme-muted);font-size:10px;line-height:1.6}
.party-my-status{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:11px;padding:10px 11px;border:1px solid var(--theme-border);border-radius:11px;background:var(--theme-surface);color:var(--theme-muted);font-size:10px}
.party-my-status b{color:var(--theme-primary);font-size:11px}
.party-my-status span{flex:1 1 100%;color:var(--theme-muted);line-height:1.5}
.party-card-actions{display:flex;align-items:center;gap:9px;margin-top:14px}
.party-action-button,.party-cancel-button{min-height:43px;border-radius:13px;font-size:13px;font-weight:800;cursor:pointer;touch-action:manipulation}
.party-action-button{flex:1;border:0;background:linear-gradient(135deg,var(--brand),var(--brand2));color:var(--theme-on-gradient);box-shadow:0 9px 19px rgba(0,0,0,.22)}
.party-action-button:active{transform:translateY(1px)}
.party-action-button.is-joined{background:linear-gradient(135deg,var(--theme-surface),var(--theme-surface));color:var(--theme-primary);box-shadow:none;-webkit-text-fill-color:var(--theme-primary);opacity:1}
.party-action-button.is-disabled{background:var(--theme-surface);color:var(--theme-muted);box-shadow:none;-webkit-text-fill-color:var(--theme-muted);opacity:1}
.party-cancel-button{flex:0 0 auto;padding:0 14px;border:1px solid var(--theme-border);background:var(--theme-surface);color:var(--theme-muted)}
.party-loading,.party-empty{display:flex;min-height:210px;flex-direction:column;align-items:center;justify-content:center;padding:28px 22px;border:1px dashed var(--theme-border);border-radius:19px;background:color-mix(in srgb,var(--theme-surface) 78%,transparent);text-align:center}
.party-loading>i{width:30px;height:30px;border:3px solid var(--theme-border);border-top-color:var(--brand);border-radius:50%;animation:party-loader .8s linear infinite}
@keyframes party-loader{to{transform:rotate(360deg)}}
.party-loading b,.party-empty b{margin-top:13px;color:var(--theme-muted);font-size:15px}
.party-loading small,.party-empty p{max-width:285px;margin:7px 0 0;color:var(--theme-muted);font-size:11px;line-height:1.65}
.party-empty>span{display:grid;width:48px;height:48px;place-items:center;border-radius:50%;background:var(--theme-surface);color:var(--theme-primary);font-size:22px}
.party-empty>button{margin-top:16px;padding:9px 16px;border:1px solid var(--theme-border);border-radius:999px;background:var(--theme-surface);color:var(--theme-primary);font-size:12px;font-weight:700}
.party-empty.is-error>span{background:#fff0f0;color:#b74848}
.party-cancel-sheet{padding:5px 2px 2px}
.party-cancel-sheet>span{display:block;color:var(--theme-primary);font-size:10px;font-weight:800;letter-spacing:1.8px}
.party-cancel-sheet h2{margin:7px 0 7px;color:var(--theme-foreground);font-size:21px}
.party-cancel-sheet p{margin:0;color:var(--theme-muted);font-size:12px;line-height:1.7}
.party-cancel-sheet .party-cancel{width:100%;min-height:46px;margin-top:18px;border:0;border-radius:13px;background:#b84656;color:var(--theme-foreground);font-weight:800}
@media(max-width:380px){
  .party-page{padding-right:11px;padding-left:11px}
  .party-page-hero{align-items:flex-start;padding:19px 16px}
  .party-page-hero h2{font-size:22px}
  .party-page-hero p{font-size:11px}
  .party-live-indicator{min-width:82px;padding:9px}
  .party-live-indicator i{left:9px}
  .party-card-body{padding:15px}
  .party-card-title h3{font-size:16px}
  .party-card-title>strong{font-size:20px}
  .party-counts{gap:5px}
  .party-counts span{padding-right:4px;padding-left:4px;font-size:8px}
  .party-cancel-button{padding:0 11px}
}
@media(prefers-reduced-motion:reduce){.party-live-indicator i,.party-loading>i{animation:none}}


/* v0.8.0-alpha.15.30.42 小程序 WebView 防下拉露出网页来源层 */
html.miniapp-webview {
  width: 100%;
  height: 100%;
  overflow: hidden;
  overscroll-behavior: none;
  background: var(--diy-page-background, #080718);
}
html.miniapp-webview body {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
  margin: 0;
  overflow: hidden;
  overscroll-behavior: none;
  background: var(--diy-page-background, #080718);
}
html.miniapp-webview .phone-app {
  position: relative;
  display: flex;
  width: min(100%, 480px);
  height: 100%;
  min-height: 0;
  max-height: 100%;
  flex-direction: column;
  margin: 0 auto;
  padding-bottom: 0;
  overflow: hidden;
  box-shadow: none;
}
html.miniapp-webview .page-header {
  position: relative;
  top: auto;
  flex: 0 0 auto;
  display: none !important;
}
html.miniapp-webview .page-header:not(.diy-page-header) {
  box-sizing: border-box;
  min-height: calc(var(--diy-mp-status-top, 20px) + var(--diy-mp-toolbar-height, 40px));
  padding: var(--diy-mp-status-top, 20px) var(--diy-mp-right-reserve, 105px) 0 12px;
}
html.miniapp-webview .page-header:not(.diy-page-header) h1 {
  position: absolute;
  top: var(--diy-mp-status-top, 20px);
  right: var(--diy-mp-right-reserve, 105px);
  left: var(--diy-mp-right-reserve, 105px);
  display: flex;
  height: var(--diy-mp-toolbar-height, 40px);
  min-width: 0;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
  pointer-events: none;
}
html.miniapp-webview .page-header:not(.diy-page-header) .head-btn {
  position: relative;
  z-index: 1;
  min-width: 44px;
  min-height: 44px;
}
html.miniapp-webview .page-view {
  flex: 1 1 auto;
  width: 100%;
  height: auto;
  min-height: 0;
  max-height: none;
  padding-bottom: calc(var(--tabbar-space) + 10px);
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-x: none;
  overscroll-behavior-y: none;
  -webkit-overflow-scrolling: touch;
  /* v15.30.46: do not create a fixed-position containing block here.
     Otherwise controls rendered inside #view (ranking self bar/cart bar)
     scroll with the content instead of staying above the bottom navigation. */
  transform: none;
}
html.miniapp-webview .phone-app.diy-home-shell {
  width: min(100%, 540px);
  height: 100%;
  min-height: 0;
  padding-bottom: 0;
}
html.miniapp-webview .phone-app.diy-home-shell .page-view {
  min-height: 0;
}
html.miniapp-webview .phone-app.diy-home-shell .page-view.diy-document {
  min-height: 100%;
  padding-bottom: calc(92px + var(--safe));
}
html.miniapp-webview .tabbar {
  bottom: var(--tabbar-bottom-gap);
}
html.miniapp-webview .cartbar {
  bottom: calc(var(--tabbar-space) + var(--order-cartbar-gap));
}
html.miniapp-webview .ranking-self {
  bottom: var(--tabbar-space);
}

/* Page-level DIY top chrome and immersive header. */
.page-header.diy-page-header{position:sticky;z-index:16;top:0;display:block;min-height:0;padding:0;border:0;background:transparent;backdrop-filter:none}
.page-header.diy-page-header.is-immersive{position:absolute;top:0;right:0;left:0;width:100%;background:transparent;pointer-events:none}
.page-header.diy-page-header.is-immersive .diy-page-home{pointer-events:auto}
.page-header.diy-page-header .diy-page-chrome{--diy-native-top:var(--diy-mp-status-top,var(--diy-mp-menu-top,0px));--diy-native-toolbar-height:var(--diy-mp-toolbar-height,52px);--diy-native-right-reserve:var(--diy-mp-right-reserve,56px);padding-top:var(--diy-native-top)}
.page-header.diy-page-header .diy-page-toolbar{height:var(--diy-native-toolbar-height)}
.page-header.diy-page-header .diy-page-toolbar h1{right:var(--diy-native-right-reserve);left:var(--diy-native-right-reserve)}
.page-header.diy-page-header .diy-page-native-reserve{width:var(--diy-native-right-reserve);height:44px;flex-basis:var(--diy-native-right-reserve)}
.page-header.diy-page-header .diy-page-home{width:44px;height:44px}
.page-view.diy-header-immersive{position:relative;z-index:1}
html.miniapp-webview .page-header.diy-page-header .diy-page-chrome{--diy-native-top:var(--diy-mp-status-top,var(--diy-mp-menu-top,24px));--diy-native-toolbar-height:var(--diy-mp-toolbar-height,40px);--diy-native-right-reserve:var(--diy-mp-right-reserve,103px)}
html.miniapp-webview .page-header.diy-page-header{position:relative;flex:0 0 auto}
html.miniapp-webview .page-header.diy-page-header.is-immersive{position:absolute;top:0}
@supports(padding-top:max(0px)){html.miniapp-webview .page-header.diy-page-header .diy-page-chrome{--diy-native-top:max(env(safe-area-inset-top,0px),var(--diy-mp-status-top,var(--diy-mp-menu-top,24px)))}}
@media(max-width:340px){.page-header.diy-page-header .diy-page-toolbar h1{font-size:15px}}
html.miniapp-webview .modal,
html.miniapp-webview .sheet,
html.miniapp-webview .signin-reward-dialog,
html.miniapp-webview .private-chat-list,
html.miniapp-webview .legal-document-body {
  overscroll-behavior: none;
}
@supports (height: 100dvh) {
  html.miniapp-webview,
  html.miniapp-webview body,
  html.miniapp-webview .phone-app {
    height: 100dvh;
    max-height: 100dvh;
  }
}

/* v0.8.0-alpha.15.30.46: viewport-fixed business controls.
   The dynamic bars are portalled out of #view, so WebView scrolling can never
   turn them into content-relative fixed elements again. */
.floating-ui-root {
  position: fixed;
  top: var(--app-shell-bottom);
  bottom: var(--app-shell-bottom);
  left: 50%;
  z-index: 19;
  width: min(100%, 480px);
  transform: translateX(-50%);
  pointer-events: none;
}
.floating-ui-root:empty { display: none; }
.floating-ui-root > .cartbar,
.floating-ui-root > .ranking-self {
  position: absolute;
  left: auto;
  right: auto;
  z-index: 1;
  transform: none;
  pointer-events: auto;
}
.floating-ui-root > .cartbar {
  right: 14px;
  bottom: calc(var(--tabbar-space) + var(--order-cartbar-gap));
  left: 14px;
  width: auto;
}
.floating-ui-root > .ranking-self {
  right: 8px;
  bottom: var(--tabbar-space);
  left: 8px;
  width: auto;
}
html.miniapp-webview .floating-ui-root {
  top: 0;
  bottom: 0;
}

/* v0.8.0-alpha.15.30.47 小程序 WebView 全局双指缩放锁定。
   只对 miniapp channel 生效；普通 H5 仍保留浏览器缩放能力。 */
html.miniapp-webview.miniapp-zoom-locked,
html.miniapp-webview.miniapp-zoom-locked body,
html.miniapp-webview.miniapp-zoom-locked .phone-app,
html.miniapp-webview.miniapp-zoom-locked .page-view,
html.miniapp-webview.miniapp-zoom-locked .modal,
html.miniapp-webview.miniapp-zoom-locked .sheet {
  touch-action: pan-x pan-y;
  -ms-touch-action: pan-x pan-y;
}
html.miniapp-webview.miniapp-zoom-locked {
  min-width: 100%;
  max-width: 100%;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
html.miniapp-webview.miniapp-zoom-locked body,
html.miniapp-webview.miniapp-zoom-locked .phone-app {
  min-width: 100vw;
  max-width: 100vw;
}

/* v0.8.0-alpha.15.30.54: points mall default product cover */
.points-mall-thumb img.points-mall-default-cover {
  box-sizing: border-box;
  padding: 20%;
  background: linear-gradient(145deg, var(--theme-surface), var(--theme-surface));
  object-fit: contain;
}

/* v0.8.0-alpha.15.30.55: customer mobile layout and touch hardening */
:root {
  --floating-feedback-bottom: calc(var(--tabbar-space) + 12px);
}
body[data-current-route="order"] {
  --floating-feedback-bottom: calc(var(--tabbar-space) + var(--order-cartbar-gap) + var(--order-cartbar-height) + 12px);
}
body[data-current-route="ranking"] {
  --floating-feedback-bottom: calc(var(--tabbar-space) + 80px);
}
.toast {
  bottom: calc(var(--app-shell-bottom) + var(--floating-feedback-bottom));
}

.cartbar {
  height: var(--order-cartbar-height);
  min-height: var(--order-cartbar-height);
  padding-top: 5px;
  padding-bottom: 5px;
  white-space: nowrap;
}
.cartbar > span,
.cartbar > b {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.cartbar > span {
  flex: 1 1 auto;
}
.cartbar > b {
  flex: 0 1 auto;
  font-variant-numeric: tabular-nums;
}
.cartbar > button {
  min-height: 44px;
  flex: 0 0 auto;
  padding-top: 0;
  padding-bottom: 0;
}

.modal:not(.scan-modal):not(.membership-gate-modal):not(.member-checkout-modal):not(.friend-filter-modal):not(.private-chat-modal) > .sheet {
  max-height: 80dvh;
  padding-bottom: calc(20px + var(--safe));
  scroll-padding-bottom: calc(20px + var(--safe));
  overscroll-behavior: contain;
}

.member-plan-card > b,
.recharge-plan-card > b {
  max-width: 100%;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.member-plan-card > strong,
.recharge-plan-card > strong {
  max-width: 100%;
  font-size: clamp(16px, 5vw, 20px);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.recharge-balance-card > div,
.recharge-balance-meta,
.recharge-balance-meta p {
  min-width: 0;
}
.recharge-balance-card > div:first-child > strong,
.recharge-balance-meta b {
  font-variant-numeric: tabular-nums;
}

.points-exchange-main > div:first-child {
  min-width: 0;
  flex: 1 1 auto;
}
.points-exchange-main h3 {
  display: -webkit-box;
  overflow: hidden;
  overflow-wrap: anywhere;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.points-exchange-main > strong {
  flex: 0 0 auto;
}
.points-exchange-card footer > small {
  min-width: 0;
  overflow-wrap: anywhere;
}
.points-exchange-status {
  flex: 0 0 auto;
}

.party-counts span {
  display: grid;
  min-height: 48px;
  align-content: center;
  line-height: 1.35;
  overflow-wrap: anywhere;
  white-space: normal;
}

.member-profile-progress i {
  transform-origin: left center;
  transition: transform .2s ease;
  will-change: transform;
}

@media (max-width: 380px) {
  .recharge-balance-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: stretch;
    gap: 14px;
  }
  .recharge-balance-card > div:first-child > strong {
    display: block;
    max-width: 100%;
    overflow: hidden;
    font-size: clamp(24px, 8vw, 31px);
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .recharge-balance-meta {
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .recharge-balance-meta span,
  .recharge-balance-meta b {
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .member-plan-grid,
  .recharge-plan-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }
  .member-plan-card,
  .recharge-plan-card {
    padding-right: 7px;
    padding-left: 7px;
  }
  .party-counts span {
    padding-right: 5px;
    padding-left: 5px;
    font-size: 9px;
  }
}

@media (pointer: coarse), (hover: none) {
  .head-btn,
  .section-title button,
  .option-grid button,
  .auth-tabs button,
  .login-link,
  .message-tabs button,
  .order-actions button,
  .reservation-cancel,
  .ranking-period-tabs button,
  .ranking-empty button,
  .friend-chat-button,
  .private-chat-member-lock button,
  .membership-gate-secondary,
  .member-agreement button,
  .friend-square-toolbar > button,
  .friend-square-empty button,
  .friend-location-enable,
  .friend-gender-options button,
  .party-empty > button,
  .lottery-record-filter button,
  .points-mall-product > button {
    min-height: 44px;
  }

  .quantity-control > button:not(.choose-spec),
  .sku-quantity > button {
    width: 44px;
    min-width: 44px;
    height: 44px;
  }
  .quantity-control > .add,
  .sku-quantity > .add {
    flex-basis: 44px;
  }
  .quantity-control > .choose-spec {
    height: 44px;
  }

  .scan-card-head button,
  .signin-dialog-close,
  .private-chat-header button,
  .membership-gate-close,
  .friend-filter-head > button {
    width: 44px;
    height: 44px;
    flex-basis: 44px;
  }

  .reservation-store-card button,
  .reservation-quick-filters button,
  .reservation-scan-table,
  .reservation-map-empty .pill,
  .member-profile-avatar-card > button,
  .member-profile-field-action > button,
  .member-profile-options span {
    min-height: 44px;
  }

  .member-profile-album-delete {
    top: 0;
    right: 0;
    width: 44px;
    height: 44px;
    border-radius: 0;
    background: transparent;
    color: transparent;
  }
  .member-profile-album-delete::after {
    position: absolute;
    top: 4px;
    right: 4px;
    display: grid;
    width: 22px;
    height: 22px;
    place-items: center;
    border-radius: 50%;
    background: color-mix(in srgb,var(--theme-surface) 82%,transparent);
    color: var(--theme-foreground);
    content: "×";
  }
}

/* v0.8.0-alpha.15.30.57: super-member social access gate */
.head-action-placeholder{display:block;width:62px;min-width:62px}
.message-tabs.message-tabs-single{grid-template-columns:1fr}
.friend-access-check,.message-access-check,.friend-access-error,.message-access-error{display:grid;min-height:calc(100vh - 126px);min-height:calc(100dvh - 126px);padding:32px 24px;place-items:center;align-content:center;gap:10px;background:#080713;color:#f7f3ff;text-align:center}
.friend-access-check b,.message-access-check b,.friend-access-error b,.message-access-error b{font-size:16px;line-height:1.4}
.friend-access-check small,.message-access-check small,.friend-access-error span,.message-access-error span{max-width:32em;color:#aaa0b8;font-size:12px;line-height:1.65}
.friend-access-error button,.message-access-error button{width:min(100%,280px);min-height:46px;margin-top:4px;border:1px solid #6d4ca0;border-radius:14px;background:#6f4ed0;color:#fff;font-weight:800}
.friend-access-error button+button{border-color:#3a324a;background:#171426;color:#c8bfd5}
.friend-access-lock{display:grid;min-height:calc(100vh - 126px);min-height:calc(100dvh - 126px);padding:26px 18px;align-content:start;gap:12px;overflow:hidden;background:var(--theme-surface)}
.friend-access-lock div{height:118px;border:1px solid color-mix(in srgb,var(--theme-border) 12%,transparent);border-radius:16px;background:var(--theme-surface-alt);opacity:.28}
.friend-access-lock div:first-child{height:170px;background:var(--theme-surface-alt)}
.modal.membership-gate-forced{background:color-mix(in srgb,var(--theme-surface) 96%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.modal.membership-gate-modal .sheet{width:min(calc(100vw - 36px),390px);max-width:390px}
.membership-gate-forced .sheet{max-height:calc(100vh - 28px);max-height:calc(100dvh - 28px);border-radius:24px}
.membership-gate-card-forced{border-radius:24px}
.membership-gate-card-forced .membership-gate-visual{height:210px}
.membership-gate-card-forced .membership-gate-visual img{height:255px}
.membership-gate-card-forced .membership-gate-copy{padding:25px 25px 8px}
.membership-gate-card-forced .membership-gate-copy h2{margin:0 0 8px;font-size:23px;line-height:1.25;text-wrap:balance}
.membership-gate-card-forced .membership-gate-copy p{color:var(--theme-muted);font-size:13px;line-height:1.65}
.membership-gate-forced .membership-gate-primary,.membership-gate-forced .membership-gate-secondary{min-height:48px}
.membership-gate-forced .membership-gate-primary{background:linear-gradient(100deg,var(--theme-primary),var(--theme-accent));color: var(--theme-on-gradient)}
.membership-gate-forced .membership-gate-secondary{color:var(--theme-muted)}
.membership-gate-primary:focus-visible,.membership-gate-secondary:focus-visible,.friend-access-error button:focus-visible,.message-access-error button:focus-visible{outline:3px solid #2f1858;outline-offset:3px}
.modal.private-chat-verifying{place-items:center;background:color-mix(in srgb,var(--theme-surface) 94%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.private-chat-verifying>.sheet{visibility:hidden;pointer-events:none}
.private-chat-revalidation{position:absolute;top:50%;left:50%;z-index:3;display:grid;width:min(calc(100vw - 36px),360px);min-height:190px;padding:28px 24px;align-content:center;justify-items:center;gap:10px;transform:translate(-50%,-50%);border:1px solid var(--theme-border);border-radius:24px;outline:0;background:var(--theme-surface);color:var(--theme-foreground);text-align:center;box-shadow:0 24px 70px rgba(0,0,0,.48)}
.private-chat-revalidation b{font-size:17px;line-height:1.4}.private-chat-revalidation small,.private-chat-revalidation>span:not(.friend-loading-ring){color:var(--theme-muted);font-size:12px;line-height:1.65}.private-chat-revalidation>div{display:grid;width:100%;margin-top:8px;grid-template-columns:1fr 1fr;gap:9px}.private-chat-revalidation button{min-height:46px;border:1px solid var(--theme-border);border-radius:14px;background:var(--theme-surface);color:var(--theme-primary);font-weight:800}.private-chat-revalidation button:first-child{border-color:var(--theme-border);background:var(--theme-primary);color:var(--theme-on-primary)}.private-chat-revalidation:focus-visible,.private-chat-revalidation button:focus-visible{outline:3px solid var(--theme-border);outline-offset:3px}
@media(max-height:620px){.membership-gate-card-forced .membership-gate-visual{height:150px}.membership-gate-card-forced .membership-gate-visual img{height:195px}.membership-gate-card-forced .membership-gate-copy{padding-top:20px}.membership-gate-card-forced .membership-gate-copy h2{font-size:21px}}

/* v0.8.0-alpha.15.30.66: match the Studio capsule and render exactly one configured background mode. */
#tabs.tabbar{background-color:var(--tabbar-bg,#fff)!important}
#tabs.tabbar:not(.has-background-image){background-image:none!important}
#tabs.tabbar button{color:var(--tabbar-text,#9a96a1)!important}
#tabs.tabbar button.active{color:var(--tabbar-active,var(--brand))!important}
#tabs.tabbar.has-background-image{background-image:var(--tabbar-bg-image,none)!important;background-position:center!important;background-repeat:no-repeat!important;background-size:cover!important}

/* v0.8.0-alpha.15.30.73: close content-theme gaps without changing customer top or bottom chrome. */
.banner,
.asset-card {
  border: 1px solid var(--theme-border,var(--line));
  background: linear-gradient(135deg,var(--theme-surface-alt,var(--card)),var(--theme-surface-strong,var(--card)));
  color: var(--theme-foreground,var(--ink));
}
.avatar {
  background: linear-gradient(145deg,var(--theme-primary-soft),var(--theme-surface-alt));
  color: var(--theme-primary);
}

/* Ranking content. Medal gold/silver/bronze remain status colors. */
.ranking-page {
  background: var(--native-page-background,var(--theme-background));
  color: var(--native-text,var(--theme-foreground));
}
.ranking-mode-tabs,
.ranking-trust,
.ranking-list-panel,
.ranking-empty {
  border-color: var(--native-border,var(--theme-border));
  background: var(--native-surface,var(--theme-surface));
}
.ranking-mode-tabs button,
.ranking-period-tabs button,
.ranking-period-caption,
.ranking-trust span,
.ranking-loading,
.ranking-top-label,
.ranking-podium-card p span,
.ranking-list-panel>header p,
.ranking-list-person>span,
.ranking-list-short,
.ranking-list-end,
.ranking-empty span {
  color: var(--native-muted,var(--theme-muted));
}
.ranking-mode-tabs button.active,
.ranking-period-tabs button.active,
.ranking-empty button {
  border-color: var(--native-primary,var(--theme-primary));
  background: var(--native-primary,var(--theme-primary));
  color: var(--theme-on-primary,#fff);
  box-shadow: 0 7px 20px color-mix(in srgb,var(--native-primary,var(--theme-primary)) 28%,transparent);
}
.ranking-period-tabs,
.ranking-period-caption {
  background: var(--native-surface-alt,var(--theme-surface-alt));
}
.ranking-trust b,
.ranking-list-panel>header span {
  color: var(--native-primary,var(--theme-primary));
}
.ranking-loading span {
  border-color: var(--native-border,var(--theme-border));
  border-top-color: var(--native-primary,var(--theme-primary));
}
.ranking-podium-card,
.ranking-podium-card.place-2,
.ranking-podium-card.place-3 {
  border-color: var(--native-border,var(--theme-border));
  background: var(--native-surface,var(--theme-surface));
}
.ranking-podium-card.place-1 {
  border-color: var(--native-primary,var(--theme-primary));
  background: color-mix(in srgb,var(--native-primary,var(--theme-primary)) 24%,var(--native-surface,var(--theme-surface)));
}
.ranking-podium-card.place-2 {
  background: color-mix(in srgb,#aab8de 7%,var(--native-surface,var(--theme-surface)));
}
.ranking-podium-card.place-3 {
  background: color-mix(in srgb,#d69d7d 7%,var(--native-surface,var(--theme-surface)));
}
.ranking-podium-card h3,
.ranking-podium-card p strong,
.ranking-list-person h3,
.ranking-list-row>strong,
.ranking-empty b {
  color: var(--native-text,var(--theme-foreground));
}
.ranking-podium-avatar,
.ranking-list-avatar {
  border-color: var(--native-border,var(--theme-border));
  background: var(--native-surface-alt,var(--theme-surface-alt));
}
.ranking-avatar-fallback {
  background: var(--native-primary-soft,var(--theme-primary-soft));
  color: var(--native-primary,var(--theme-primary));
}
.ranking-podium-avatar>b {
  border-color: var(--native-surface,var(--theme-surface));
}
.ranking-list-panel>header,
.ranking-list-row {
  border-color: var(--native-border,var(--theme-border));
}
.ranking-list-number {
  color: var(--native-primary,var(--theme-primary));
}
.ranking-self {
  border-color: var(--theme-border);
  background: var(--theme-surface-strong);
  color: var(--theme-foreground);
}
.ranking-self-place small,
.ranking-self-name {
  color: var(--theme-muted);
}
.ranking-self-avatar {
  border-color: var(--theme-primary);
}
.ranking-self.guest>strong {
  background: var(--theme-primary);
  color: var(--theme-on-primary,#fff);
}

/* Native business content pages audited in the same pass. */
.reservation-experience,
.signin-page-shell,
.signin-loading,
.friend-square-page,
.friend-profile-page,
.member-commerce-page,
.recharge-commerce-page,
.recharge-commerce-loading,
.member-profile-page,
.member-profile-loading,
.points-mall-page,
.party-page,
.friend-access-check,
.message-access-check,
.friend-access-error,
.message-access-error,
.friend-access-lock {
  background: var(--theme-background);
  color: var(--theme-foreground);
}
.reservation-filter-card,
.reservation-map-loading,
.reservation-map-empty,
.reservation-table-card,
.reservation-submit-card,
.reservation-record-section .card,
.reservation-history-empty,
.signin-reward-dialog,
.signin-reward-panel,
.recharge-balance-card,
.recharge-plan-section,
.recharge-order-section,
.member-profile-avatar-card,
.member-profile-form-card,
.member-profile-album-card,
.points-mall-notice,
.points-mall-product,
.points-exchange-card,
.party-page-guide,
.party-event-card,
.party-loading,
.party-empty,
.activity-loading-card,
.activity-member-gate,
.service-native-contact,
.service-native-hours,
.friend-access-lock div {
  border-color: var(--theme-border);
  background: var(--theme-surface);
  color: var(--theme-foreground);
}
.reservation-day-strip button,
.reservation-quick-filters button,
.reservation-table-stage:before,
.reservation-table-core,
.reservation-selection,
.reservation-submit-card .input,
.recharge-plan-card,
.recharge-order-card,
.recharge-order-credit,
.recharge-security,
.member-profile-options span,
.member-profile-textarea textarea,
.member-profile-album-item,
.member-profile-album-add,
.points-mall-thumb,
.points-exchange-card>div:first-child,
.points-exchange-card footer,
.points-exchange-success>div,
.party-counts span,
.party-audit-note,
.party-my-status {
  border-color: var(--theme-border);
  background: var(--theme-surface-alt);
  color: var(--theme-foreground);
}
.reservation-store-card,
.reservation-quick-filters,
.reservation-table-foot,
.member-profile-field,
.member-profile-help,
.member-profile-textarea {
  border-color: var(--theme-border);
}
.reservation-store-card>span,
.reservation-map-title>div>span,
.reservation-record-title>span,
.reservation-filter-title span,
.recharge-hero-copy>span,
.recharge-section-title>span,
.member-profile-hero-copy>span,
.points-mall-product-info>strong,
.points-exchange-card>div:first-child b,
.points-exchange-main>strong,
.points-exchange-success>span,
.party-page-guide b,
.party-card-title small,
.party-card-title>strong,
.party-my-status b {
  color: var(--theme-primary);
}
.reservation-store-card p,
.reservation-day-strip button span,
.reservation-day-strip button small,
.reservation-quick-filters label>span,
.reservation-map-title p,
.reservation-map-loading,
.reservation-map-empty,
.reservation-table-heading span,
.reservation-table-core small,
.reservation-table-foot,
.reservation-contact-grid label,
.reservation-remark,
.reservation-hint,
.reservation-record-section .sub,
.recharge-hero-copy p,
.recharge-balance-card span,
.recharge-plan-card>span,
.recharge-plan-card>em,
.recharge-payment-note,
.recharge-security,
.recharge-order-main span,
.recharge-order-foot span,
.recharge-order-note,
.member-profile-hero-copy p,
.member-profile-avatar-card p,
.member-profile-field label small,
.member-profile-help,
.member-profile-nearby small,
.member-profile-album-head p,
.member-profile-consent,
.member-profile-footnote,
.points-mall-notice p,
.points-mall-product-info p,
.points-exchange-card span,
.points-exchange-main p,
.points-exchange-card footer>small,
.points-exchange-success p,
.party-page-guide span,
.party-card-description,
.party-progress>span,
.party-counts span,
.party-audit-note,
.party-my-status,
.party-loading small,
.party-empty p,
.activity-loading-card,
.activity-member-gate,
.service-native-item>span,
.service-native-hours p,
.friend-access-check small,
.message-access-check small,
.friend-access-error span,
.message-access-error span {
  color: var(--theme-muted);
}
.reservation-day-strip button.selected,
.reservation-quick-filters button.selected,
.reservation-selection.chosen,
.recharge-plan-card.selected,
.member-profile-options input:checked+span,
.points-mall-product>button,
.party-action-button,
.friend-access-error button,
.message-access-error button {
  border-color: var(--theme-primary);
  background: var(--theme-primary);
  color: var(--theme-on-primary,#fff);
  -webkit-text-fill-color: var(--theme-on-primary,#fff);
}
.recharge-hero,
.member-profile-hero,
.points-mall-balance,
.party-page-hero {
  border-color: var(--theme-border);
  background: radial-gradient(circle at 88% 20%,color-mix(in srgb,var(--theme-accent) 24%,transparent),transparent 38%),linear-gradient(135deg,var(--theme-surface-alt),var(--theme-surface-strong));
  color: var(--theme-foreground);
}
.member-profile-field>input,
.member-profile-textarea textarea,
.reservation-submit-card .input,
.party-card-title h3,
.party-counts b,
.points-mall-product-info h3,
.points-exchange-main h3 {
  color: var(--theme-foreground);
}

/* v0.8.0-alpha.15.30.90: member DIY loading and page floor inherit the global palette; navigation chrome stays isolated. */
.diy-home-loading {
  background: var(--theme-background,var(--diy-bg));
  color: var(--theme-muted,var(--diy-muted));
}
.buddy-access-state button+button{background:var(--theme-surface,#171426);color:var(--theme-foreground,#f8f7ff);-webkit-text-fill-color:currentColor;border-color:var(--theme-border,#3a324a)}.buddy-access-state button:focus-visible{outline-color:var(--theme-primary,#7956ff)}

/* Profile text sits on themed surfaces, not on the solid primary/accent button gradient. */
.friend-profile-page{--profile-readable-accent:var(--theme-accent);--profile-readable-muted:color-mix(in srgb,var(--theme-foreground) 78%,var(--theme-background))}
[data-global-theme-mode="light"] .friend-profile-page{--profile-readable-accent:color-mix(in srgb,var(--theme-primary) 65%,var(--theme-foreground))}
.friend-profile-page .friend-profile-hero{color:var(--native-text,var(--theme-foreground))}
.friend-profile-page .friend-profile-eyebrow,.friend-profile-page .friend-album-title>span,.friend-profile-page .friend-profile-safety b{color:var(--profile-readable-accent)}
.friend-profile-page .friend-profile-meta b{color:color-mix(in srgb,#b84e78 65%,var(--theme-foreground))}
.friend-profile-page .friend-profile-meta em,.friend-profile-page .friend-album-title p,.friend-profile-page .friend-profile-safety span,.friend-profile-page .friend-album-empty,.friend-profile-page .friend-album-empty b{color:var(--profile-readable-muted)}

/* v0.8.0-alpha.15.30.90: identical quantity controls and member pricing labels. */
.quantity-control > button:not(.choose-spec),.sku-quantity > button{display:inline-grid;place-items:center;flex:0 0 44px;width:44px;min-width:44px;max-width:44px;height:44px;min-height:44px;max-height:44px;padding:0;border-radius:50%;aspect-ratio:1;line-height:1;font-size:24px}
.member-price-label{display:inline-block;margin-left:6px;padding:2px 6px;border:1px solid var(--theme-primary,var(--brand));border-radius:6px;color:var(--theme-primary,var(--brand));font-size:11px;font-weight:600;line-height:1.4;vertical-align:middle;white-space:nowrap}
.purchase-limit-note{margin:5px 0 0;color:var(--theme-muted,var(--muted));font-size:12px;line-height:1.5;overflow-wrap:anywhere}

/* Theme semantic coverage for native business surfaces. Keep status, rank and gender colors local. */
.page-view .points-mall-page,.page-view .points-exchange-page,.page-view .lottery-record-page{background:var(--theme-background,var(--bg));color:var(--theme-foreground,var(--ink))}
.page-view .points-mall-balance,.page-view .party-page-hero{background:linear-gradient(135deg,var(--theme-surface-alt,var(--card)),var(--theme-surface-strong,var(--card)));color:var(--theme-foreground,var(--ink))}
.page-view .points-mall-notice,.page-view .points-mall-product,.page-view .points-exchange-card,.page-view .lottery-record-card,.page-view .party-event-card{border-color:var(--theme-border,var(--line));background:var(--theme-surface,var(--card));color:var(--theme-foreground,var(--ink))}
.page-view .points-mall-notice b,.page-view .points-mall-product-info h3,.page-view .points-exchange-main h3{color:var(--theme-foreground,var(--ink))}
.page-view .points-mall-product-info>strong,.page-view .points-exchange-main>strong,.page-view .points-exchange-card>div:first-child b{color:var(--theme-primary,var(--brand))}
.page-view .points-mall-product>button,.page-view .points-exchange-card button,.page-view .lottery-record-filter button.active{border-color:var(--theme-primary,var(--brand));background:var(--theme-primary,var(--brand));color:var(--theme-on-primary,#fff)}
.page-view .points-mall-product>button:disabled{background:var(--theme-surface-strong,var(--card));color:var(--theme-muted,var(--muted))}
.page-view .lottery-record-filter button{border-color:var(--theme-border,var(--line));background:var(--theme-surface,var(--card));color:var(--theme-muted,var(--muted))}
.page-view .lottery-record-filter button b{background:var(--theme-primary-soft,var(--theme-surface-alt));color:var(--theme-primary,var(--brand))}
.page-view .party-action-button{background:linear-gradient(135deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2)));color:var(--theme-on-gradient,var(--theme-on-primary,#fff))}
.page-view .party-cancel-button{border-color:var(--theme-border,var(--line));background:var(--theme-surface,var(--card));color:var(--theme-muted,var(--muted))}
.page-view .party-empty>span{background:var(--theme-primary-soft,var(--theme-surface-alt));color:var(--theme-primary,var(--brand))}
.page-view .notification-settings-head,.page-view .legal-document-head,.page-view .account-deletion-head{background:linear-gradient(135deg,var(--theme-surface-alt,var(--card)),var(--theme-surface-strong,var(--card)));color:var(--theme-foreground,var(--ink))}
.page-view .notification-settings-list,.page-view .account-deletion-confirm{border-color:var(--theme-border,var(--line));background:var(--theme-surface,var(--card));color:var(--theme-foreground,var(--ink))}
.page-view .friend-profile-message,.page-view .friend-filter-actions button:last-child,.page-view .member-open-button,.page-view .signin-reward-action,.page-view .activity-native-page .wheel button,.page-view .party-action-button{color:var(--theme-on-gradient,var(--theme-on-primary,#fff))}
.page-view .ranking-mode-tabs button.active,.page-view .ranking-period-tabs button.active,.page-view .member-plan-card.selected,.page-view .signin-reward-cell b{color:var(--theme-on-primary,#fff)}
.page-view .member-plan-card.selected small,.page-view .member-plan-card.selected strong,.page-view .member-plan-card.selected>span,.page-view .member-plan-card.selected>em{color:inherit}
.page-view .signin-reward-cell.current b{color:var(--theme-on-gradient,var(--theme-on-primary,#fff))}
.product .price{display:flex;flex-wrap:wrap;align-items:center;gap:3px}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="top"] .catalog-products>.product-with-quantity{grid-template-columns:74px minmax(0,1fr)}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="top"] .product-with-quantity>.thumb{grid-row:1/3}
body[data-current-route="order"][data-order-layout="list"][data-category-layout="top"] .product-with-quantity>.quantity-control{grid-column:2}

/* v0.8.0-alpha.15.30.90: body-mounted customer sheets and sign-in states use the active theme. */
html,body {
  background: var(--theme-background,var(--bg));
  color: var(--theme-foreground,var(--ink));
}
.phone-app,.page-view {
  background: var(--theme-background,var(--bg));
  color: var(--theme-foreground,var(--ink));
}
.page-header {
  border-bottom-color: var(--theme-border,var(--line));
  background: color-mix(in srgb,var(--theme-surface,var(--card)) 94%,transparent);
  color: var(--theme-foreground,var(--ink));
}
.modal:not(.scan-modal):not(.private-chat-modal):not(.membership-gate-modal):not(.member-checkout-modal):not(.friend-filter-modal):not(.private-chat-verifying) {
  background: color-mix(in srgb,var(--theme-surface-strong,var(--ink)) 58%,transparent);
}
.modal:not(.scan-modal):not(.private-chat-modal):not(.membership-gate-modal):not(.member-checkout-modal):not(.friend-filter-modal):not(.private-chat-verifying)>.sheet {
  border: 1px solid var(--theme-border,var(--line));
  background: var(--theme-surface,var(--card));
  color: var(--theme-foreground,var(--ink));
  box-shadow: 0 -18px 52px color-mix(in srgb,var(--theme-surface-strong,var(--ink)) 24%,transparent);
}
.settings-sheet-loading,.settings-sheet-error,
.notification-settings-sheet,.legal-document-sheet,.account-deletion-sheet {
  color: var(--theme-foreground,var(--ink));
}
.settings-sheet-loading i,.settings-sheet-error i {
  background: var(--theme-primary-soft,var(--theme-surface-alt,var(--bg)));
  color: var(--theme-primary,var(--brand));
}
.settings-sheet-loading b,.settings-sheet-error h2,
.notification-toggle-row b,.legal-document-body,
.account-deletion-assets b,.account-deletion-confirm span,
.account-deletion-input { color: var(--theme-foreground,var(--ink)); }
.settings-sheet-loading span,.settings-sheet-error p,
.notification-toggle-row small,.notification-scope-note p,
.account-deletion-assets span,.account-deletion-ready span,
.account-deletion-notices,.account-deletion-confirm span,
.account-deletion-input,.legal-document-body { color: var(--theme-muted,var(--muted)); }
.notification-settings-head,.legal-document-head,.account-deletion-head {
  background: linear-gradient(135deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2)));
  color: var(--theme-on-gradient,var(--theme-on-primary,#fff));
}
.notification-settings-head>span,.legal-document-head>span,.account-deletion-head>span,
.notification-settings-head p,.legal-document-head p,.account-deletion-head p {
  color: color-mix(in srgb,var(--theme-on-gradient,var(--theme-on-primary,#fff)) 76%,transparent);
}
.notification-settings-list {
  border-color: var(--theme-border,var(--line));
  background: var(--theme-surface,var(--card));
}
.notification-toggle-row { border-bottom-color: var(--theme-border,var(--line)); }
.notification-toggle-row>i { background: var(--theme-surface-alt,var(--line)); box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--theme-border,var(--line)) 80%,transparent); }
.notification-toggle-row input:checked+i { background: linear-gradient(135deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2))); color: var(--theme-on-gradient); }
.notification-scope-note,.legal-document-body,
.account-deletion-assets>div,.account-deletion-notices {
  border-color: var(--theme-border,var(--line));
  background: var(--theme-surface-alt,var(--theme-primary-soft,var(--bg)));
}
.notification-scope-note b { color: var(--theme-primary,var(--brand)); }
.account-deletion-confirm { border-color: var(--theme-border,var(--line)); background: var(--theme-surface,var(--card)); }
.account-deletion-input .input { border-color: var(--theme-border,var(--line)); background: var(--theme-surface-alt,var(--card)); color: var(--theme-foreground,var(--ink)); }
.account-deletion-cancel { color: var(--theme-muted,var(--muted)); }

.signin-reward-dialog { background: var(--theme-surface-strong,var(--ink)); color: var(--theme-foreground,var(--ink)); }
.signin-reward-visual { background: linear-gradient(135deg,var(--theme-surface-strong,var(--ink)),var(--theme-primary,var(--brand))); color: var(--theme-on-gradient); }
.signin-reward-visual:after { background: linear-gradient(180deg,transparent,var(--theme-surface-strong,var(--ink)) 92%); }
.signin-reward-copy { color: var(--theme-foreground,var(--ink)); }
.signin-reward-copy span { color: var(--theme-accent,var(--brand2)); }
.signin-reward-copy p { color: var(--theme-muted,var(--muted)); }
.signin-reward-panel { background: var(--theme-surface,var(--card)); color: var(--theme-foreground,var(--ink)); }
.signin-reward-cell { border-color: var(--theme-primary,var(--brand2)); background: var(--theme-surface,var(--card)); }
.signin-reward-cell small { color: var(--theme-foreground,var(--ink)); }
.signin-reward-cell.done { border-color: var(--theme-border,var(--line)); background: var(--theme-primary-soft,var(--theme-surface-alt,var(--bg))); }
.signin-reward-cell.done b { background: var(--theme-primary,var(--brand)); color: var(--theme-on-primary,#fff); }
.signin-reward-cell.current { border-color: var(--theme-primary,var(--brand)); box-shadow: 0 0 0 3px color-mix(in srgb,var(--theme-primary,var(--brand)) 18%,transparent),0 8px 18px color-mix(in srgb,var(--theme-primary,var(--brand)) 14%,transparent); }
.signin-reward-cell.current b { background: linear-gradient(100deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2))); color: var(--theme-on-gradient,var(--theme-on-primary,#fff)); }
.signin-reward-action { background: linear-gradient(100deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2))); color: var(--theme-on-gradient,var(--theme-on-primary,#fff)); }
.signin-reward-panel>p { color: var(--theme-muted,var(--muted)); }
.signin-loading,.signin-page-shell { background: var(--theme-background,var(--bg)); color: var(--theme-muted,var(--muted)); }
.modal.private-chat-modal { background: color-mix(in srgb,var(--theme-surface-strong,var(--ink)) 48%,transparent); }
.private-chat-sheet { background: var(--theme-surface,var(--card)); color: var(--theme-foreground,var(--ink)); box-shadow: 0 -18px 52px color-mix(in srgb,var(--theme-surface-strong,var(--ink)) 22%,transparent); }
.private-chat-header,.private-compose,.private-safety-tip,.private-chat-closed { border-color: var(--theme-border,var(--line)); background: var(--theme-surface,var(--card)); color: var(--theme-foreground,var(--ink)); }
.private-chat-header h2,.private-message-bubble { color: var(--theme-foreground,var(--ink)); }
.private-chat-header small,.private-chat-empty,.private-message-row time,.private-safety-tip,.private-chat-closed { color: var(--theme-muted,var(--muted)); }
.private-chat-header button { background: var(--theme-surface-alt,var(--theme-primary-soft,var(--bg))); color: var(--theme-muted,var(--muted)); }
.private-chat-list { background: linear-gradient(180deg,var(--theme-background,var(--bg)),var(--theme-surface-alt,var(--card))); }
.private-message-bubble { border-color: var(--theme-border,var(--line)); background: var(--theme-surface,var(--card)); }
.private-message-row.mine .private-message-bubble { background: linear-gradient(135deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2))); color: var(--theme-on-gradient,var(--theme-on-primary,#fff)); }
.private-compose { border-top-color: var(--theme-border,var(--line)); }
.private-compose .input { border-color: var(--theme-border,var(--line)); background: var(--theme-surface-alt,var(--card)); color: var(--theme-foreground,var(--ink)); }
.private-chat-loading { color: var(--theme-foreground,var(--ink)); }
.private-chat-revalidation { border-color: var(--theme-border,var(--line)); background: var(--theme-surface,var(--card)); color: var(--theme-foreground,var(--ink)); }
.private-chat-revalidation small,.private-chat-revalidation>span:not(.friend-loading-ring) { color: var(--theme-muted,var(--muted)); }
.private-chat-revalidation button { border-color: var(--theme-border,var(--line)); background: var(--theme-surface,var(--card)); color: var(--theme-primary,var(--brand)); }
.private-chat-revalidation button:first-child { border-color: var(--theme-primary,var(--brand)); background: var(--theme-primary,var(--brand)); color: var(--theme-on-primary,#fff); }
.notification-toggle-row input:checked+i {
  box-shadow: 0 5px 13px color-mix(in srgb,var(--theme-primary,var(--brand)) 25%,transparent);
}
.notification-toggle-row input:focus-visible+i {
  outline: 3px solid color-mix(in srgb,var(--theme-primary,var(--brand)) 22%,transparent);
}
.signin-reward-action:disabled {
  border-color: var(--theme-border,var(--line));
  background: linear-gradient(100deg,var(--theme-primary-soft,var(--theme-surface-alt,var(--bg))),var(--theme-surface-alt,var(--card)));
  color: var(--theme-primary,var(--brand));
  -webkit-text-fill-color: var(--theme-primary,var(--brand));
  box-shadow: 0 7px 18px color-mix(in srgb,var(--theme-primary,var(--brand)) 12%,transparent);
}
.modal:not(.scan-modal):not(.private-chat-modal):not(.membership-gate-modal):not(.member-checkout-modal):not(.friend-filter-modal):not(.private-chat-verifying)>.sheet .input {
  border-color: var(--theme-border,var(--line));
  background: var(--theme-surface-alt,var(--card));
  color: var(--theme-foreground,var(--ink));
}
.modal:not(.scan-modal):not(.private-chat-modal):not(.membership-gate-modal):not(.member-checkout-modal):not(.friend-filter-modal):not(.private-chat-verifying)>.sheet .primary {
  border-color: var(--theme-primary,var(--brand));
  background: linear-gradient(135deg,var(--theme-primary,var(--brand)),var(--theme-accent,var(--brand2)));
  color: var(--theme-on-gradient,var(--theme-on-primary,#fff));
  -webkit-text-fill-color: var(--theme-on-gradient,var(--theme-on-primary,#fff));
}
.account-deletion-submit {
  border-color: transparent;
  background: linear-gradient(135deg,#b23f4c,#dc5360);
  color: var(--theme-foreground);
  -webkit-text-fill-color: var(--theme-foreground);
}
.account-deletion-confirm input { accent-color: var(--theme-primary,var(--brand)); }

/* Preserve two product columns beside categories without clipping cart controls. */
body[data-current-route="order"][data-order-layout="grid"][data-category-layout="side"] .catalog-products .quantity-control.is-stepper{display:grid;grid-template-columns:44px minmax(20px,1fr) 44px;align-items:center;gap:0;width:100%;padding:2px 3px}body[data-current-route="order"][data-order-layout="grid"][data-category-layout="side"] .catalog-products .quantity-control.is-stepper>b{min-width:0}body[data-current-route="order"][data-order-layout="grid"] .catalog-products>.empty{grid-column:1/-1}
@media(max-width:360px){body[data-current-route="order"][data-order-layout="grid"][data-category-layout="side"] .catalog-products .quantity-control.is-stepper{grid-template-columns:1fr 1fr;padding:4px 0 0;row-gap:2px}body[data-current-route="order"][data-order-layout="grid"][data-category-layout="side"] .catalog-products .quantity-control.is-stepper>b{grid-column:1/-1;grid-row:1}body[data-current-route="order"][data-order-layout="grid"][data-category-layout="side"] .catalog-products .quantity-control.is-stepper>button{justify-self:center}}
.notification-settings-sheet{min-width:0;overflow-wrap:anywhere}.notification-settings-head h2,.notification-settings-head p{max-width:100%;overflow-wrap:anywhere}.notification-channel-card{min-width:0}.notification-channel-card>div{min-width:0}.notification-channel-card b{overflow-wrap:anywhere}.notification-wechat-button{box-sizing:border-box;white-space:normal}
.notification-settings-sheet .notification-wechat-button{display:flex;width:100%;align-items:center;justify-content:center;padding:12px 16px;line-height:1.5}

.notification-settings-head{margin:0 0 16px;padding:24px 18px 20px}

/* Reservation people stepper: keep the time options on their existing three-column grid. */
.reservation-quick-filters label:first-child>div.reservation-people-stepper{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:7px;overflow:visible}
.reservation-people-stepper button{display:grid;min-height:44px;place-items:center;padding:0;border-color:var(--theme-border);background:var(--theme-surface-alt);color:var(--theme-primary);font-size:22px;line-height:1}
.reservation-people-stepper strong{display:grid;min-height:44px;place-items:center;color:var(--theme-foreground);font-size:15px;font-weight:800}
.reservation-people-stepper button:disabled{cursor:not-allowed;opacity:.45}
