/* ACE2017 customer storefront: shared type, navigation and form language. */
.ace-storefront-v21 {
  --ace-paper: #fbf8f2;
  --ace-surface: #fff;
  --ace-ink: #242527;
  --ace-muted: #655d56;
  --ace-line: #e6e0d7;
  --ace-red: #b3192c;
  --ace-red-dark: #941326;
  --ace-red-soft: #fcf0ed;
  --bg: var(--ace-paper);
  --card: var(--ace-surface);
  --text: var(--ace-ink);
  --muted: var(--ace-muted);
  --line: var(--ace-line);
  --red: var(--ace-red);
  --soft: var(--ace-red-soft);
  --brand: var(--ace-ink);
  --green: #2c6552;
  margin: 0;
  background: var(--ace-paper);
  color: var(--ace-ink);
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
  font-size: 16px;
  line-height: 1.75;
  -webkit-text-size-adjust: 100%;
  text-rendering: optimizeLegibility;
}
/* Legacy customer readability floor */
.ace-storefront-v21 .activity-hero p,
.ace-storefront-v21 .activity-main button,
.ace-storefront-v21 .activity-main p,
.ace-storefront-v21 .activity-tag,
.ace-storefront-v21 .after-boundary p,
.ace-storefront-v21 .after-entry p,
.ace-storefront-v21 .after-form textarea,
.ace-storefront-v21 .after-hero p,
.ace-storefront-v21 .after-note,
.ace-storefront-v21 .ai-boundary b,
.ace-storefront-v21 .ai-boundary p,
.ace-storefront-v21 .ai-match-box p,
.ace-storefront-v21 .ai-match-item button,
.ace-storefront-v21 .ai-match-main b,
.ace-storefront-v21 .ai-match-main small,
.ace-storefront-v21 .ai-match-main strong,
.ace-storefront-v21 .ai-no-match b,
.ace-storefront-v21 .ai-no-match p,
.ace-storefront-v21 .ai-no-match-actions button,
.ace-storefront-v21 .ai-note-bubble,
.ace-storefront-v21 .ai-quick-actions button,
.ace-storefront-v21 .ai-scope b,
.ace-storefront-v21 .ai-scope p,
.ace-storefront-v21 .ai-scope-chip,
.ace-storefront-v21 .ai-scope-chip strong,
.ace-storefront-v21 .ai-search-sheet>p,
.ace-storefront-v21 .ai-service-intro p,
.ace-storefront-v21 .ai-service-intro small,
.ace-storefront-v21 .ai-service-pill,
.ace-storefront-v21 .ai-shop-hints button,
.ace-storefront-v21 .ai-shop-photo,
.ace-storefront-v21 .ai-shop-search-main b,
.ace-storefront-v21 .ai-shop-search-main small,
.ace-storefront-v21 .ai-shop-search-row button,
.ace-storefront-v21 .ai-shop-search-row input,
.ace-storefront-v21 .ai-toolbar-badge,
.ace-storefront-v21 .benefit-hero small,
.ace-storefront-v21 .benefit-select .main b,
.ace-storefront-v21 .benefit-select .main small,
.ace-storefront-v21 .benefit-select button,
.ace-storefront-v21 .benefit-wallet p,
.ace-storefront-v21 .bind-btn,
.ace-storefront-v21 .bind-hero p,
.ace-storefront-v21 .bind-main b,
.ace-storefront-v21 .bind-main small,
.ace-storefront-v21 .bind-status,
.ace-storefront-v21 .calendar-date span,
.ace-storefront-v21 .calendar-main b,
.ace-storefront-v21 .calendar-main p,
.ace-storefront-v21 .calendar-tag,
.ace-storefront-v21 .contact-actions a,
.ace-storefront-v21 .contact-actions button,
.ace-storefront-v21 .contact-main b,
.ace-storefront-v21 .contact-main small,
.ace-storefront-v21 .current-mini-step span,
.ace-storefront-v21 .fast-agree,
.ace-storefront-v21 .fast-badge,
.ace-storefront-v21 .fast-benefit b,
.ace-storefront-v21 .fast-benefit button,
.ace-storefront-v21 .fast-benefit small,
.ace-storefront-v21 .fast-buy-head p,
.ace-storefront-v21 .fast-buy-head small,
.ace-storefront-v21 .fast-buy-speed,
.ace-storefront-v21 .fast-contact-row b,
.ace-storefront-v21 .fast-contact-row span,
.ace-storefront-v21 .fast-edit-chips button,
.ace-storefront-v21 .fast-edit-label,
.ace-storefront-v21 .fast-main-btn,
.ace-storefront-v21 .fast-pay small,
.ace-storefront-v21 .fast-pay span,
.ace-storefront-v21 .fast-product-main b,
.ace-storefront-v21 .fast-product-main small,
.ace-storefront-v21 .fast-product-price span,
.ace-storefront-v21 .fast-section-title b,
.ace-storefront-v21 .fast-section-title button,
.ace-storefront-v21 .fast-sub-actions button,
.ace-storefront-v21 .fast-tip,
.ace-storefront-v21 .first-id-card input,
.ace-storefront-v21 .first-id-hero p,
.ace-storefront-v21 .first-id-hero small,
.ace-storefront-v21 .first-id-note,
.ace-storefront-v21 .first-id-submit,
.ace-storefront-v21 .forgot,
.ace-storefront-v21 .founder,
.ace-storefront-v21 .founder-badge2,
.ace-storefront-v21 .founder-long-benefit p,
.ace-storefront-v21 .frequent-actions button,
.ace-storefront-v21 .frequent-hero p,
.ace-storefront-v21 .frequent-hero small,
.ace-storefront-v21 .frequent-main p,
.ace-storefront-v21 .frequent-meta span,
.ace-storefront-v21 .frequent-price small,
.ace-storefront-v21 .frequent-stat span,
.ace-storefront-v21 .frequent-tabs button,
.ace-storefront-v21 .gift-badge,
.ace-storefront-v21 .gift-hero p,
.ace-storefront-v21 .gift-main p,
.ace-storefront-v21 .gift-note,
.ace-storefront-v21 .gift-progress-text,
.ace-storefront-v21 .gift-status,
.ace-storefront-v21 .human-confirmed,
.ace-storefront-v21 .human-live,
.ace-storefront-v21 .identity-lock-title,
.ace-storefront-v21 .identity-prompt small,
.ace-storefront-v21 .identity-row,
.ace-storefront-v21 .identity-row b,
.ace-storefront-v21 .identity-status > small,
.ace-storefront-v21 .identity-verify-action,
.ace-storefront-v21 .identity-verify-action button,
.ace-storefront-v21 .japan-chip,
.ace-storefront-v21 .japan-coupon-actions button,
.ace-storefront-v21 .japan-coupon-cover .discount-big small,
.ace-storefront-v21 .japan-coupon-cover .merchant-type,
.ace-storefront-v21 .japan-coupon-info p,
.ace-storefront-v21 .japan-coupon-meta span,
.ace-storefront-v21 .japan-detail-hero .big small,
.ace-storefront-v21 .japan-hero .eyebrow2,
.ace-storefront-v21 .japan-hero p,
.ace-storefront-v21 .japan-hero-metric span,
.ace-storefront-v21 .japan-home-entry > a,
.ace-storefront-v21 .japan-home-entry button,
.ace-storefront-v21 .japan-home-entry p,
.ace-storefront-v21 .japan-home-entry small,
.ace-storefront-v21 .japan-record-meta,
.ace-storefront-v21 .japan-record-status,
.ace-storefront-v21 .japan-record-top b,
.ace-storefront-v21 .japan-rule,
.ace-storefront-v21 .japan-use-note,
.ace-storefront-v21 .japan-wallet-btn,
.ace-storefront-v21 .join-agree,
.ace-storefront-v21 .join-fields input,
.ace-storefront-v21 .join-hero p,
.ace-storefront-v21 .join-note,
.ace-storefront-v21 .join-step .dot,
.ace-storefront-v21 .join-step small,
.ace-storefront-v21 .journey-hero p,
.ace-storefront-v21 .journey-hero small,
.ace-storefront-v21 .journey-map>p,
.ace-storefront-v21 .journey-note,
.ace-storefront-v21 .journey-order b,
.ace-storefront-v21 .journey-order small,
.ace-storefront-v21 .journey-order strong,
.ace-storefront-v21 .journey-service b,
.ace-storefront-v21 .journey-service p,
.ace-storefront-v21 .journey-service-actions a,
.ace-storefront-v21 .journey-service-actions button,
.ace-storefront-v21 .journey-stage .explain-btn,
.ace-storefront-v21 .journey-stage-main b,
.ace-storefront-v21 .journey-stage-main small,
.ace-storefront-v21 .journey-stage-time,
.ace-storefront-v21 .login-note,
.ace-storefront-v21 .login-register-link,
.ace-storefront-v21 .login-register-link button,
.ace-storefront-v21 .login-switch a,
.ace-storefront-v21 .login-switch button,
.ace-storefront-v21 .logistics-code,
.ace-storefront-v21 .logistics-sub,
.ace-storefront-v21 .member-action,
.ace-storefront-v21 .member-action.request-entry:after,
.ace-storefront-v21 .member-card > div small,
.ace-storefront-v21 .member-card-actions button,
.ace-storefront-v21 .member-card-main p,
.ace-storefront-v21 .member-card-main small,
.ace-storefront-v21 .member-card-meta b,
.ace-storefront-v21 .member-card-meta span,
.ace-storefront-v21 .member-card-top > span,
.ace-storefront-v21 .member-coupon-code small,
.ace-storefront-v21 .member-created p,
.ace-storefront-v21 .member-created small,
.ace-storefront-v21 .member-filters a,
.ace-storefront-v21 .member-list-head,
.ace-storefront-v21 .member-metrics small,
.ace-storefront-v21 .member-primary-grid span,
.ace-storefront-v21 .member-qr-box p,
.ace-storefront-v21 .member-remove,
.ace-storefront-v21 .member-restored .fav-actions a,
.ace-storefront-v21 .member-restored .history-mini .pic,
.ace-storefront-v21 .member-restored .history-mini small,
.ace-storefront-v21 .member-restored .history-open,
.ace-storefront-v21 .member-restored .member-card-actions a,
.ace-storefront-v21 .member-restored .share-safe-link,
.ace-storefront-v21 .member-saving-note,
.ace-storefront-v21 .member-tools .activity-main a,
.ace-storefront-v21 .member-tools .coupon-main>a,
.ace-storefront-v21 .member-tools .notify-pref-row>span,
.ace-storefront-v21 .member-tools .reminder-hub-main>a,
.ace-storefront-v21 .member-tools .task-actions a,
.ace-storefront-v21 .member-tools .tool-actions button,
.ace-storefront-v21 .member-tools .tool-actions>a,
.ace-storefront-v21 .member-wealth p,
.ace-storefront-v21 .member-wealth-item span,
.ace-storefront-v21 .merchant-verify-hero p,
.ace-storefront-v21 .msg-bubble,
.ace-storefront-v21 .msg-empty,
.ace-storefront-v21 .msg-main .btn,
.ace-storefront-v21 .msg-main p,
.ace-storefront-v21 .msg-tabs a,
.ace-storefront-v21 .msg-tabs button,
.ace-storefront-v21 .msg-time,
.ace-storefront-v21 .order-action-grid span,
.ace-storefront-v21 .order-after-btn,
.ace-storefront-v21 .order-agree,
.ace-storefront-v21 .order-allin,
.ace-storefront-v21 .order-extra-actions a,
.ace-storefront-v21 .order-extra-actions button,
.ace-storefront-v21 .order-kv,
.ace-storefront-v21 .order-mini-bottom .order-open,
.ace-storefront-v21 .order-mini-meta,
.ace-storefront-v21 .order-no,
.ace-storefront-v21 .order-open,
.ace-storefront-v21 .order-product-spec,
.ace-storefront-v21 .order-row small,
.ace-storefront-v21 .order-safe,
.ace-storefront-v21 .order-status,
.ace-storefront-v21 .order-tabs a,
.ace-storefront-v21 .order-tabs button,
.ace-storefront-v21 .points-action,
.ace-storefront-v21 .points-log-main b,
.ace-storefront-v21 .points-log-main small,
.ace-storefront-v21 .points-plus,
.ace-storefront-v21 .points-rule-main small,
.ace-storefront-v21 .points-sub,
.ace-storefront-v21 .points-unit,
.ace-storefront-v21 .policy-center-hero p,
.ace-storefront-v21 .pref-card b,
.ace-storefront-v21 .pref-card small,
.ace-storefront-v21 .pref-check,
.ace-storefront-v21 .pref-hero p,
.ace-storefront-v21 .pref-save,
.ace-storefront-v21 .production-note,
.ace-storefront-v21 .production-pagination,
.ace-storefront-v21 .production-row small,
.ace-storefront-v21 .production-row span,
.ace-storefront-v21 .ref-metric span,
.ace-storefront-v21 .reminder-custom button,
.ace-storefront-v21 .reminder-custom input,
.ace-storefront-v21 .reminder-hub-hero p,
.ace-storefront-v21 .reminder-hub-hero small,
.ace-storefront-v21 .reminder-hub-main b,
.ace-storefront-v21 .reminder-hub-main small,
.ace-storefront-v21 .reminder-hub-metric span,
.ace-storefront-v21 .reminder-hub-state,
.ace-storefront-v21 .reminder-inline label,
.ace-storefront-v21 .reminder-options button,
.ace-storefront-v21 .reminder-save,
.ace-storefront-v21 .reminder-sheet p,
.ace-storefront-v21 .safe,
.ace-storefront-v21 .safe-share-note,
.ace-storefront-v21 .success-actions a,
.ace-storefront-v21 .success-actions button,
.ace-storefront-v21 .success-amount small,
.ace-storefront-v21 .success-hero p,
.ace-storefront-v21 .success-kv,
.ace-storefront-v21 .success-wide,
.ace-storefront-v21 .task-actions button,
.ace-storefront-v21 .task-empty p,
.ace-storefront-v21 .task-hero p,
.ace-storefront-v21 .task-hero small,
.ace-storefront-v21 .task-main p,
.ace-storefront-v21 .task-meta,
.ace-storefront-v21 .task-metric span,
.ace-storefront-v21 .task-tabs button,
.ace-storefront-v21 .task-tag,
.ace-storefront-v21 .task-top b,
.ace-storefront-v21 .ticket-actions a,
.ace-storefront-v21 .ticket-actions button,
.ace-storefront-v21 .ticket-meta,
.ace-storefront-v21 .ticket-no,
.ace-storefront-v21 .ticket-status,
.ace-storefront-v21 .ticket-step small,
.ace-storefront-v21 .value-big span,
.ace-storefront-v21 .value-gain b,
.ace-storefront-v21 .value-gain small,
.ace-storefront-v21 .value-hero p,
.ace-storefront-v21 .value-hero small,
.ace-storefront-v21 .value-main b,
.ace-storefront-v21 .value-main small,
.ace-storefront-v21 .value-metric span,
.ace-storefront-v21 .value-promise p,
.ace-storefront-v21 .value-shortcut > a,
.ace-storefront-v21 .value-shortcut b,
.ace-storefront-v21 .value-shortcut button,
.ace-storefront-v21 .value-shortcut p,
.ace-storefront-v21 .verify-code-row button,
.ace-storefront-v21 .verify-code-row input,
.ace-storefront-v21 .verify-help,
.ace-storefront-v21 .verify-hero p,
.ace-storefront-v21 .verify-lock,
.ace-storefront-v21 .verify-note,
.ace-storefront-v21 .verify-result .ok,
.ace-storefront-v21 .verify-result button,
.ace-storefront-v21 .verify-result p,
.ace-storefront-v21 .verify-row b,
.ace-storefront-v21 .verify-row span,
.ace-storefront-v21 .verify-status,
.ace-storefront-v21 a.bind-btn,
.ace-storefront-v21 links and long receipts. */
.bind-pending { font-size: 13px; line-height: 1.7; }
.ace-storefront-v21 *, .ace-storefront-v21 *::before, .ace-storefront-v21 *::after { box-sizing: border-box; }
.ace-storefront-v21 #app, .ace-storefront-v21 .app-shell {
  width: 100%; max-width: 1440px; min-height: 100vh; margin: 0 auto;
  background: var(--ace-paper); box-shadow: none;
}
.ace-storefront-v21 #app { padding-bottom: calc(82px + env(safe-area-inset-bottom)); }
.ace-storefront-v21 img { max-width: 100%; }
.ace-storefront-v21 a { text-decoration: none; }
.ace-storefront-v21 a, .ace-storefront-v21 button { -webkit-tap-highlight-color: transparent; }
.ace-storefront-v21 :is(a, button, input, select, textarea, summary):focus-visible {
  outline: 3px solid #a93646; outline-offset: 3px; border-radius: 8px;
}
.ace-storefront-v21 .top, .ace-storefront-v21 .topbar {
  background: rgba(255, 255, 255, .97); border-bottom: 1px solid var(--ace-line);
  padding: 16px 20px; box-shadow: 0 4px 18px rgba(53, 38, 24, .025);
}
.ace-storefront-v21 .headrow { gap: 12px; min-width: 0; max-width: 1280px; margin: auto; }
.ace-storefront-v21 .logo, .ace-storefront-v21 .brand-mark {
  width: 46px; height: 46px; flex: 0 0 46px; border-radius: 12px;
  background: var(--ace-ink); color: white; font-size: 17px; font-weight: 750;
  letter-spacing: -.03em; box-shadow: none; display: grid; place-items: center;
}
.ace-storefront-v21 .brand { font-size: 23px; font-weight: 750; line-height: 1.2; letter-spacing: -.025em; }
.ace-storefront-v21 .sub { font-size: 12px; line-height: 1.5; color: var(--ace-muted); margin-top: 4px; }
.ace-storefront-v21 .brand-lockup { gap: 12px; align-items: center; color: var(--ace-ink); }
.ace-storefront-v21 .brand-lockup strong { font-size: 23px; letter-spacing: -.025em; }
.ace-storefront-v21 .brand-lockup small { font-size: 12px; color: var(--ace-muted); margin-top: 4px; }
.ace-storefront-v21 .quick-request, .ace-storefront-v21 .quick-link {
  min-height: 46px; border-radius: 10px; padding: 9px 15px;
  background: var(--ace-red); color: #fff; box-shadow: none;
  text-align: center; font-size: 14px; font-weight: 650; line-height: 1.35; white-space: nowrap;
}
.ace-storefront-v21 .quick-request small, .ace-storefront-v21 .quick-link small {
  font-size: 11px; font-weight: 400; opacity: 1; margin-top: 2px; line-height: 1.3;
}
.ace-storefront-v21 .ace-header-search {
  border: 1px solid var(--ace-line); background: #f7f5f0; border-radius: 12px;
}
.ace-storefront-v21 .ace-header-search input { font-size: 15px; color: var(--ace-ink); min-height: 46px; }
.ace-storefront-v21 .ace-header-search button { font-size: 14px; color: var(--ace-red); min-width: 56px; min-height: 46px; }
.ace-storefront-v21 .ace-header-account { font-size: 14px; line-height: 1.5; }
.ace-storefront-v21 .ace-header-account a { color: var(--ace-muted); padding: 12px 4px; }
.ace-storefront-v21 .ace-desktop-nav {
  max-width: 1280px; margin: 14px auto -5px; gap: 26px; border-bottom: 0;
}
.ace-storefront-v21 .ace-desktop-nav a {
  font-size: 15px; line-height: 1.5; font-weight: 500; padding: 13px 0;
  color: var(--ace-muted); border-bottom: 2px solid transparent;
}
.ace-storefront-v21 .ace-desktop-nav a[aria-current="page"] { color: var(--ace-red); border-bottom-color: var(--ace-red); font-weight: 650; }
.ace-storefront-v21 .ace-mobile-sections { gap: 0; border-bottom: 1px solid var(--ace-line); background: #fff; padding: 0 10px; }
.ace-storefront-v21 .ace-mobile-section { min-height: 48px; justify-content: center; padding: 12px 6px; font-size: 14px; font-weight: 500; }
.ace-storefront-v21 .ace-mobile-section span { font-size: 14px; }
.ace-storefront-v21 .ace-mobile-section[aria-current="page"] { color: var(--ace-red); background: var(--ace-red-soft); }
.ace-storefront-v21 #app main > .page > .pad { padding: 26px 20px 40px; }
.ace-storefront-v21 main { min-width: 0; }
.ace-storefront-v21 h1, .ace-storefront-v21 h2, .ace-storefront-v21 h3 { color: var(--ace-ink); font-weight: 700; letter-spacing: -.025em; }
.ace-storefront-v21 h1 { font-size: clamp(27px, 3.2vw, 42px); line-height: 1.3; }
.ace-storefront-v21 h2 { font-size: clamp(22px, 2vw, 29px); line-height: 1.4; }
.ace-storefront-v21 h3 { font-size: 19px; line-height: 1.45; }
.ace-storefront-v21 .sec { align-items: center; margin: 28px 0 15px; gap: 12px; }
.ace-storefront-v21 .sec b { font-size: 22px; font-weight: 700; line-height: 1.4; }
.ace-storefront-v21 .sec a, .ace-storefront-v21 .sec span { font-size: 14px; line-height: 1.5; }
.ace-storefront-v21 :is(.card, .form, .list, .paybox, .chat, .banner, .company-card, .customer-panel) {
  border: 1px solid var(--ace-line); border-radius: 16px; background: #fff; box-shadow: none;
}
.ace-storefront-v21 .customer-panel { padding: 22px; }
.ace-storefront-v21 .customer-page-intro { margin-bottom: 24px; }
.ace-storefront-v21 .customer-page-intro h2 { margin: 8px 0 12px; font-size: clamp(26px, 3vw, 36px); }
.ace-storefront-v21 .customer-page-intro p { max-width: 48rem; margin: 0; color: var(--ace-muted); font-size: 16px; line-height: 1.8; }
.ace-storefront-v21 .customer-eyebrow { display: block; color: var(--ace-red); font-size: 13px; font-weight: 650; letter-spacing: .06em; }
.ace-storefront-v21 .customer-empty-state { padding: 36px 22px; text-align: center; background: #fff; border: 1px solid var(--ace-line); border-radius: 16px; }
.ace-storefront-v21 .customer-empty-state p { color: var(--ace-muted); font-size: 16px; line-height: 1.8; }
.ace-storefront-v21 .login-switch { display: flex; gap: 8px; margin-bottom: 24px; padding: 5px; background: #f5f2eb; border-radius: 11px; }
.ace-storefront-v21 .login-switch a { flex: 1; padding: 12px 5px; font-size: 14px; text-align: center; border-radius: 8px; color: var(--ace-muted); }
.ace-storefront-v21 .login-switch a.on { background: #fff; color: var(--ace-red); font-weight: 650; box-shadow: 0 2px 7px #34281909; }
.ace-storefront-v21 .join-agree { display: flex; align-items: flex-start; gap: 10px; margin: 20px 0; font-size: 14px; line-height: 1.75; }
.ace-storefront-v21 .join-agree input { margin-top: 3px; }
.ace-storefront-v21 .join-agree a, .ace-storefront-v21 .forgot { color: var(--ace-red); }
.ace-storefront-v21 .login-note, .ace-storefront-v21 .login-register-link { font-size: 14px; line-height: 1.75; margin-top: 18px; color: var(--ace-muted); }
.ace-storefront-v21 .login-register-link a { color: var(--ace-red); }
.ace-storefront-v21 .member-service-grid { background: transparent; border: 0; overflow: visible; display: grid; grid-template-columns: 1fr; gap: 12px; }
.ace-storefront-v21 .member-service-grid .row { background: #fff; border: 1px solid var(--ace-line); border-radius: 13px; }
.ace-storefront-v21 :is(.form, .paybox, .chat) { padding: 20px; }
.ace-storefront-v21 :is(.customer-panel, .page-account, .page-support, .page-member, .page-order-list) p { font-size: 16px; line-height: 1.8; }
.ace-storefront-v21 .hero p, .ace-storefront-v21 .banner p, .ace-storefront-v21 .st div { font-size: 15px; line-height: 1.8; opacity: 1; }
.ace-storefront-v21 :is(.notice, .safe, .warn, .production-note, .legal-note) {
  font-size: 14px; line-height: 1.75; overflow-wrap: anywhere;
}
.ace-storefront-v21 .notice { background: #f7f5ef; color: #575046; padding: 16px 18px; border: 1px solid var(--ace-line); border-radius: 12px; }
.ace-storefront-v21 .warn, .ace-storefront-v21 .error { background: #fcf0ed; color: #87302e; border-color: #edcec9; }
.ace-storefront-v21 .safe { color: var(--ace-muted); }
.ace-storefront-v21 :is(.notice, .safe, .warn, .legal-note, .customer-panel) p a,
.ace-storefront-v21 :is(.notice, .safe, .warn, .legal-note) > a { color: var(--ace-red); text-decoration: underline; text-underline-offset: 3px; }
.ace-storefront-v21 :is(.lab, label) { font-size: 15px; color: var(--ace-ink); line-height: 1.5; }
.ace-storefront-v21 :is(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea) {
  max-width: 100%; min-width: 0; min-height: 48px; border: 1px solid #d7d0c7;
  background: #fff; color: var(--ace-ink); border-radius: 10px; padding: 12px 14px; font: inherit; font-size: 16px;
}
.ace-storefront-v21 :is(input, textarea)::placeholder { color: #817870; opacity: 1; }
.ace-storefront-v21 :is(input[type="checkbox"], input[type="radio"]) { width: 18px; height: 18px; accent-color: var(--ace-red); flex-shrink: 0; }
.ace-storefront-v21 textarea { min-height: 124px; line-height: 1.75; }
.ace-storefront-v21 :is(.btn, .button, button[type="submit"]) {
  min-height: 46px; padding: 12px 20px; border-radius: 10px; font-size: 15px;
  font-weight: 650; line-height: 1.4; box-shadow: none; display: inline-flex;
  align-items: center; justify-content: center; gap: 7px; text-align: center;
}
.ace-storefront-v21 .btn { border: 1px solid transparent; }
.ace-storefront-v21 :is(.btn.primary, .button.primary) { background: var(--ace-red); color: #fff; border-color: var(--ace-red); }
.ace-storefront-v21 :is(.btn.light, .btn.ghost, .button.ghost) { background: #fff; color: var(--ace-ink); border: 1px solid #d9d1c7; }
.ace-storefront-v21 :is(button, .btn):disabled, .ace-storefront-v21 [aria-disabled="true"] { opacity: .55; cursor: not-allowed; }
.ace-storefront-v21 .actions { gap: 10px; flex-wrap: wrap; margin-top: 20px; }
.ace-storefront-v21 .row { padding: 19px 20px; gap: 14px; color: var(--ace-ink); }
.ace-storefront-v21 .row b { font-size: 16px; font-weight: 650; line-height: 1.5; }
.ace-storefront-v21 .row small, .ace-storefront-v21 .rm small { font-size: 14px; color: var(--ace-muted); line-height: 1.7; }
.ace-storefront-v21 :is(.meta, .pt + small, .safe, .status) { font-size: 13px; line-height: 1.7; }
.ace-storefront-v21 .status { padding: 4px 9px; background: #edf5ef; color: #2c6552; border-radius: 6px; }
.ace-storefront-v21 .bub { font-size: 16px; line-height: 1.75; padding: 13px 16px; max-width: 88%; }
.ace-storefront-v21 .bub.their { background: #f4f2ed; color: var(--ace-ink); }
.ace-storefront-v21 .bub.mine { background: #303f37; color: #fff; }
.ace-storefront-v21 .member { background: #283b32; border-radius: 18px; padding: 24px; color: #fff; }
.ace-storefront-v21 .member p, .ace-storefront-v21 .member small { color: #e5e9e1; font-size: 14px; opacity: 1; }
.ace-storefront-v21 .member .founder { color: #ede0b9; font-size: 13px; }
.ace-storefront-v21 .member .mid { font-size: 28px; color: #fff; }
.ace-storefront-v21 .member :is(h2,h3,.production-note) { color: #e5e9e1; }
.ace-storefront-v21 .metrics { gap: 10px; margin-top: 20px; }
.ace-storefront-v21 .m { border-radius: 10px; padding: 13px 8px; }
.ace-storefront-v21 .m b { font-size: 21px; line-height: 1.4; }
.ace-storefront-v21 .m span { font-size: 13px; line-height: 1.5; opacity: 1; }
.ace-storefront-v21 table { max-width: 100%; border-collapse: collapse; }
.ace-storefront-v21 th, .ace-storefront-v21 td { padding: 12px; font-size: 14px; line-height: 1.6; border-bottom: 1px solid var(--ace-line); overflow-wrap: anywhere; }
.ace-storefront-v21 .tabbar {
  width: 100%; max-width: none; height: calc(70px + env(safe-area-inset-bottom));
  padding-bottom: env(safe-area-inset-bottom); background: rgba(255,255,255,.98);
  border-top: 1px solid var(--ace-line); box-shadow: 0 -5px 20px rgba(45, 31, 19, .035);
}
.ace-storefront-v21 .tab { color: #756c62; gap: 4px; min-height: 62px; }
.ace-storefront-v21 .tab > span { display: block; height: 24px; line-height: 1; }
.ace-storefront-v21 .ace-nav-icon { width: 24px; height: 24px; vertical-align: middle; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.ace-storefront-v21 .tab small { font-size: 12px; line-height: 1.5; font-weight: 500; }
.ace-storefront-v21 .tab.on { color: var(--ace-red); }
.ace-storefront-v21 .tab.on small { font-weight: 700; }
.ace-storefront-v21 .bottom-nav { background: #fff; border-top-color: var(--ace-line); }
.ace-storefront-v21 .bottom-nav a { font-size: 12px; min-height: 60px; }
.ace-storefront-v21 .bottom-nav a.active { color: var(--ace-red); }
.ace-storefront-v21 .ace-desktop-footer {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  max-width: 1280px; margin: 40px auto 0; padding: 38px 24px;
  background: transparent; border-top: 1px solid var(--ace-line); color: var(--ace-muted);
  gap: 28px; border-radius: 0; font-size: 14px; line-height: 1.8;
}
.ace-storefront-v21 .ace-desktop-footer > div:first-child { grid-column: 1 / -1; }
.ace-storefront-v21 .ace-desktop-footer .ace-footer-note { grid-column: 1 / -1; }
.ace-storefront-v21 .ace-footer-brand { font-size: 27px; color: var(--ace-ink); font-weight: 750; letter-spacing: -.025em; }
.ace-storefront-v21 .ace-desktop-footer b { color: var(--ace-ink); font-size: 15px; font-weight: 650; }
.ace-storefront-v21 .ace-desktop-footer a { font-size: 14px; padding: 4px 0; color: var(--ace-muted); }
.ace-storefront-v21 .ace-desktop-footer .ace-footer-brand { color: var(--ace-ink); }
.ace-storefront-v21 .ace-desktop-footer p, .ace-storefront-v21 .ace-desktop-footer small { font-size: 13px; color: var(--ace-muted); line-height: 1.8; }
.ace-storefront-v21 .ace-footer-note { border-top: 1px solid var(--ace-line); padding-top: 20px; margin-top: 4px; }
.ace-storefront-v21 .site-footer { color: var(--ace-muted); font-size: 14px; line-height: 1.75; border-top: 1px solid var(--ace-line); padding: 28px 20px; }
.ace-storefront-v21 .site-footer small { font-size: 13px; line-height: 1.75; }
@media (min-width: 1024px) {
  .ace-storefront-v21 #app { padding-bottom: 0; }
  .ace-storefront-v21 .top, .ace-storefront-v21 .topbar { padding: 22px 40px 0; }
  .ace-storefront-v21 #app main > .page > .pad { padding: 34px 40px 54px; }
  .ace-storefront-v21 .tabbar, .ace-storefront-v21 .bottom-nav { display: none; }
  .ace-storefront-v21 .ace-desktop-footer { padding: 42px 40px; }
  .ace-storefront-v21 .ace-desktop-footer { grid-template-columns: 1.35fr 1fr 1fr 1.15fr; }
  .ace-storefront-v21 .ace-desktop-footer > div:first-child { grid-column: auto; }
  .ace-storefront-v21 .page-account > .pad, .ace-storefront-v21 .page-support > .pad,
  .ace-storefront-v21 .page-member > .pad, .ace-storefront-v21 .page-order-list > .pad { max-width: 1160px; margin: auto; }
  .ace-storefront-v21 .page-login > .pad, .ace-storefront-v21 .page-register > .pad,
  .ace-storefront-v21 .page-password-recovery > .pad { max-width: 800px; }
  .ace-storefront-v21 .member-service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .ace-storefront-v21 .top { padding: 14px 16px; }
  .ace-storefront-v21 .logo { width: 42px; height: 42px; flex-basis: 42px; font-size: 15px; }
  .ace-storefront-v21 .brand { font-size: 21px; }
  .ace-storefront-v21 .headrow { gap: 9px; }
  .ace-storefront-v21 .quick-request { padding: 10px 12px; font-size: 13px; }
  .ace-storefront-v21 .quick-request small { font-size: 11px; }
  .ace-storefront-v21 .customer-panel, .ace-storefront-v21 .form { padding: 20px 17px; }
  .ace-storefront-v21 .chatinput { flex-wrap: wrap; }
  .ace-storefront-v21 .chatinput input { flex-basis: 100%; }
  .ace-storefront-v21 .chatinput button { min-height: 46px; }
  .ace-storefront-v21 .actions .btn { flex: 1 1 auto; }
  .ace-storefront-v21 .row { padding: 18px 16px; }
  .ace-storefront-v21 .metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .ace-storefront-v21 .m { padding: 12px 5px; }
}
@media (hover: hover) {
  .ace-storefront-v21 .btn.primary:hover, .ace-storefront-v21 .quick-request:hover { background: var(--ace-red-dark); border-color: var(--ace-red-dark); }
  .ace-storefront-v21 .btn.light:hover, .ace-storefront-v21 .btn.ghost:hover { background: #f8f4ed; }
  .ace-storefront-v21 .ace-desktop-nav a:hover, .ace-storefront-v21 .ace-header-account a:hover { color: var(--ace-red); }
}
@media (prefers-reduced-motion: reduce) {
  .ace-storefront-v21 *, .ace-storefront-v21 *::before, .ace-storefront-v21 *::after { scroll-behavior: auto; transition-duration: 0s; animation-duration: 0s; animation-iteration-count: 1; }
}

/* Customer account and service heroes share the storefront palette. */
.ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) { background: #f1ece2; color: var(--ace-ink); padding: 26px; border: 1px solid var(--ace-line); border-radius: 18px; box-shadow: none; }
.ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) :is(h1,h2,h3,b,strong) { color: var(--ace-ink); }
.ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) :is(p,small,.eyebrow2) { color: var(--ace-muted); opacity: 1; font-size: 14px; line-height: 1.8; }
.ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) :is(.ref-metric,.japan-hero-metric,.value-metric,.frequent-stat,.member-card-meta > div,.task-progress) { background: rgba(255,255,255,.65); border-radius: 10px; padding: 12px; }
.ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) :is(.btn.primary,.button.primary) { color: #fff; background: var(--ace-red); }
.ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) :is(.btn.light,.btn.ghost,.button.ghost) { color: var(--ace-ink); background: #fff; }
.ace-storefront-v21 .member-card-top { gap: 16px; align-items: flex-start; }
.ace-storefront-v21 .member-card-main { min-width: 0; }
.ace-storefront-v21 .member-card-main h2 { font-size: 28px; line-height: 1.4; margin: 6px 0; }
.ace-storefront-v21 .member-card-main small { font-size: 13px; letter-spacing: .04em; }
.ace-storefront-v21 .member-card-main p { font-size: 14px; }
.ace-storefront-v21 .member-card-logo { width: 48px; height: 48px; font-size: 17px; background: #283b32; color: #fff; }
.ace-storefront-v21 .member-card-no { color: var(--ace-ink); font-size: clamp(20px,3vw,28px); line-height: 1.5; overflow-wrap: anywhere; margin: 22px 0; }
.ace-storefront-v21 .member-card-meta { gap: 8px; }
.ace-storefront-v21 .member-card-meta b { font-size: 17px; color: var(--ace-ink); }
.ace-storefront-v21 .member-card-meta span { font-size: 13px; color: var(--ace-muted); }
.ace-storefront-v21 .founder-badge2 { font-size: 12px; color: #705323; background: #f5e6c8; padding: 5px 8px; }
.ace-storefront-v21 :is(.member-action,.points-action,.contact-actions button,.back-btn,.member-card-actions a) { min-height: 44px; font-size: 14px; padding: 10px 14px; }
.ace-storefront-v21 :is(.points-log-main b,.contact-main b,.identity-row b,.verify-row b,.value-main b,.pref-card b) { font-size: 16px; line-height: 1.6; }
.ace-storefront-v21 :is(.points-log-main small,.contact-main small,.value-main small,.pref-card small,.frequent-main p,.activity-main p,.gift-main p,.calendar-main p,.verify-note) { font-size: 14px; line-height: 1.8; }
.ace-storefront-v21 :is(.forgot,.quick-request small,.quick-link small) { font-size: 12px; }
.ace-storefront-v21 :is(.member-qr-box,.nearby-area,.points-rule,.points-log,.contact-card,.pref-card,.frequent-card,.value-card) { border-color: var(--ace-line); border-radius: 14px; padding: 20px; }
@media (max-width:600px) {
  .ace-storefront-v21 :is(.hero,.ref-hero,.points-hero,.logistics-hero,.after-hero,.success-hero,.join-hero,.bind-hero,.policy-center-hero,.japan-hero,.japan-detail-hero,.member-card-hero,.merchant-verify-hero,.value-hero,.pref-hero,.frequent-hero,.reminder-hub-hero,.task-hero,.first-id-hero,.journey-hero) { padding: 23px 19px; }
  .ace-storefront-v21 .member-card-meta { grid-template-columns: 1fr; }
  .ace-storefront-v21 .member-card-meta > div { display: flex; align-items: center; justify-content: space-between; }
}
