/* Shared craft contract. Functional accents, text and surfaces are separate;
   feature visibility belongs to product configuration, never a theme. */
:root {
 --ux-ink:#18212d; --ux-secondary:#536173; --ux-muted:#536173;
 --ux-surface:#fff; --ux-fill:#edf1f6; --ux-accent:#175da8;
 --ux-on-accent:#fff; --ux-action:#175da8; --ux-line:#ccd4df;
 --ux-danger:#ac3144; --ux-success:#226b46; --ux-radius:14px;
 --ux-inset:20px; --ux-gap:16px; --ux-icon-stroke:1.8;
}
html[data-theme="dark"] {
 --ux-ink:#f2f5fa; --ux-secondary:#c0cada; --ux-muted:#aab8ca;
 --ux-surface:#1b2430; --ux-fill:#273444; --ux-accent:#9dc8ff;
 --ux-action:#245fa5; --ux-line:#4b5d73; --ux-danger:#ffb1bc; --ux-success:#8ad6ac;
}
@media(prefers-color-scheme:dark) { html:not([data-theme="light"]):not([data-theme="dark"]) {
 --ux-ink:#f2f5fa; --ux-secondary:#c0cada; --ux-muted:#aab8ca; --ux-surface:#1b2430; --ux-fill:#273444; --ux-accent:#9dc8ff; --ux-action:#245fa5; --ux-line:#4b5d73; --ux-danger:#ffb1bc; --ux-success:#8ad6ac;
} }
:where(button,a,summary,[role="button"],[role="tab"],input,select,textarea) { touch-action:manipulation; }
:where(button,a,summary,[role="button"],[role="tab"]):focus-visible { outline:2px solid var(--ux-accent); outline-offset:3px; }
:where(button,a,summary,[role="button"],[role="tab"]) { scroll-margin-block:100px; }
:where(button,a)[aria-busy="true"] { cursor:progress; }
:where(input,textarea)::placeholder { opacity:1; }
:where(dialog,[role="dialog"]) { max-width:calc(100vw - 24px); overflow-wrap:break-word; }
:where(dialog,[role="dialog"]) :where(h2,h3,p,label) { min-width:0; }
.ux-icon { width:22px; height:22px; display:inline-block; flex:0 0 auto; vertical-align:middle; fill:none; stroke:currentColor; stroke-width:var(--ux-icon-stroke); stroke-linecap:round; stroke-linejoin:round; pointer-events:none; }
:where(.ai-icon,.wb-icon svg,.quote-icon svg,.cps-icon svg,.mini-icon svg,.tab-icon svg) { stroke-width:var(--ux-icon-stroke); }
@media(pointer:coarse) {
 :where(button,a.primary,a.cps-primary,summary,[role="button"],[role="tab"]):not(.category-tab):not(.product-card) { min-height:44px!important; min-width:44px; }
 :where(input,select,textarea):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]) { font-size:16px; }
}
@media(prefers-reduced-motion:reduce) { :where(button,a,summary) { transition:none!important; } }
/* Floating campaigns keep the approved legacy artwork and contact control.
   Theme changes only preserve their layer and configured visibility. */
html[data-ui-style="ios27"] body.mobile-page { --clarity-secondary:var(--ux-secondary); --clarity-tertiary:var(--ux-muted); }
html[data-ui-style="ios27"] body.mobile-page.is-orders-tab :is(.data-plan-float,.customer-float) { display:none; }
html[data-ui-style="ios27"] body.mobile-page .data-plan-float[hidden] { display:none; }
html[data-ui-style="ios27"] body.mobile-page .home-bulletin-rail { background:var(--ux-surface); color:var(--ux-secondary); }
html[data-ui-style="ios27"] body.mobile-page .home-bulletin-text { color:var(--ux-secondary); font-weight:550; font-size:12px; }
/* Text stays opaque while translating: a live message must remain readable. */
@keyframes ux-bulletin-enter { from { transform:translateY(5px); } to { transform:translateY(0); } }
html body.mobile-page .home-bulletin-rail.is-entering .home-bulletin-text { animation:ux-bulletin-enter 180ms ease both; opacity:1; }
html body.mobile-page :is(#strategicPartnersKicker,#strategicPartnersDescription,.privacy-note,.privacy-link) { color:var(--ux-secondary); }
html body.mobile-page .privacy-note a { color:inherit; }
html[data-ui-style="ios27"] body.mobile-page .membership-input-copy input::placeholder { color:var(--ux-muted); }
html[data-ui-style="ios27"] body.mobile-page .membership-input-copy small { color:var(--ux-secondary); }
html[data-ui-style="ios27"] body.mobile-page .product-card .product-price { color:var(--ux-danger); }
html[data-ui-style="ios27"] body.mobile-page .coupon-strip :is(b,time) { color:var(--ux-danger); }
/* Admin: semantic tokens fix every generated view and every modal together. */
body.admin-ios { --ai-accent:var(--ux-accent); --ai-muted:var(--ux-muted); --ai-secondary:var(--ux-secondary); --ai-ink:var(--ux-ink); }
body.admin-ios :is(.primary-button,button.primary,a.primary,.login-card button[type="submit"]) { color:var(--ux-on-accent); background:var(--ux-action); }
body.admin-ios :is(.settings-help,.help-text,.cps-admin-note) { line-height:1.65; }
body.admin-ios :is(.settings-card,.panel,.admin-card,.cps-admin-panel) > :is(p,.empty-state,.admin-empty,.form-grid,.cps-admin-form,.settings-form) { margin-inline:var(--ai-inset); }
body.admin-ios :is(.settings-card,.panel,.admin-card,.cps-admin-panel) > :is(p,.empty-state,.admin-empty):last-child { margin-bottom:var(--ai-inset); }
body.admin-ios :is(.ai-disclosure,.cps-admin-config-block) > summary { padding:16px 20px; min-height:52px; gap:12px; }
body.admin-ios :is(.ai-disclosure,.cps-admin-config-block)[open] > :not(summary) { min-width:0; }
body.admin-ios .settings-form > :is(.settings-help,.help-text) { margin:0; }
body.admin-ios :is(.panel,.settings-card,.cps-admin-panel) > .table-wrap { padding-inline:12px; }
body.admin-ios :is(td,th) { vertical-align:middle; }
body.admin-ios .ai-picker-option { min-height:44px; padding:12px 16px; text-align:left; }
body.admin-ios .ai-picker-head { padding:18px 20px; }
body.admin-ios .ai-picker-search { margin:12px 20px; width:calc(100% - 40px); }
body.admin-ios .ai-picker-options { padding:0 8px 12px; }
body.admin-ios :is(.ai-sheet,.ai-modal,.ai-alert) :is(p,small) { color:var(--ai-secondary); }
html[data-theme] body.admin-ios :is(.ai-sheet,.ai-modal,.ai-alert) > .settings-help { padding:12px 14px; color:var(--ux-secondary); background:var(--ux-fill); border-radius:12px; }
@media(max-width:640px) { body.admin-ios { --ai-inset:16px; --ai-gap:16px; } body.admin-ios .form-actions { gap:10px; } body.admin-ios .form-actions > button { flex:1 1 120px; min-height:44px; } }
/* Workbench: tint communicates tier; reading text uses a dedicated ink. */
body.wb-ios27 { --ios-secondary:var(--ux-secondary); --ios-tertiary:var(--ux-muted); }
html[data-theme="dark"] body.wb-ios27 { --wb-accent:var(--ux-accent); --wb-accent-deep:var(--ux-accent); }
body.wb-ios27 :is(.wb-primary,.wb-primary-button) { background:var(--ux-action); color:white; }
body.wb-ios27 :is(.wb-field,.wb-form-field) :is(input,select,textarea):not([type="checkbox"]):not([type="radio"]) { padding:12px 14px; }
body.wb-ios27 :is(.wb-sheet-body,.wb-dialog-body) { padding:20px; }
body.wb-ios27 :is(.wb-section-head,.wb-card-head) { gap:12px; }
body.wb-ios27 :is(.wb-icon-button,.wb-sheet-close) { min-width:44px; min-height:44px; }
html[data-theme="dark"] body.wb-ios27 :is(#wbPaybackReward,#wbPaybackEncouragement,#wbAgentFundsBalance) { color:var(--wb-tier-text,var(--ux-accent)); }
/* Follow explicit user theme, not the operating system behind it. */
html[data-theme="light"] { --ui-bg:#f4f6f7; --ui-surface:#fff; --ui-surface-soft:#f8fafb; --ui-ink:#182127; --ui-ink-soft:#39434b; --ui-muted:#536173; --ui-line:#dfe5e8; --ui-line-strong:#cbd4d9; --ui-accent-soft:#eaf5fc; }
html[data-theme="dark"] { --ui-bg:#121719; --ui-surface:#1b2225; --ui-surface-soft:#161d20; --ui-ink:#f1f5f6; --ui-ink-soft:#d3dadd; --ui-muted:#bac5cd; --ui-line:#344146; --ui-line-strong:#4b5a60; --ui-accent-soft:#173142; }
html[data-theme="light"] .cps-membership-v2-page { --cps-muted:#58676b; }
html[data-theme="dark"] .cps-membership-v2-page { --cps-muted:#b4c1c7; }
html:not([data-theme="dark"]) { --quote-muted:#58696c; }
html[data-theme="dark"] { --quote-muted:#b4c1c7; }
@media(prefers-reduced-transparency:reduce) { :where(.tab-bar,.wb-bottom-nav,.wb-sheet,.ai-picker) { backdrop-filter:none; -webkit-backdrop-filter:none; } }
/* Status is legible in both themes; the pale tint is never the text color. */
body.admin-ios :is(.badge.success,.lottery-status.on,.category-summary-status.is-online) { color:var(--ux-success); background:color-mix(in srgb,var(--ux-success) 10%,var(--ux-surface)); }
body.admin-ios :is(.badge.failed,.membership-sale-price) { color:var(--ux-danger); }
body.admin-ios .badge.failed { background:color-mix(in srgb,var(--ux-danger) 9%,var(--ux-surface)); }
body.admin-ios .badge.cancelled { color:var(--ux-secondary); background:var(--ux-fill); }
body.admin-ios .flag-orange { --flag:#94510c; --flag-bg:#fff1df; }
html[data-theme="dark"] body.admin-ios .flag-orange { --flag:#ffd092; --flag-bg:#49351f; }
body.admin-ios .order-time-cell small b { color:var(--ux-accent); }
body.admin-ios .order-time-cell.waiting small b { color:#94510c; }
html[data-theme="dark"] body.admin-ios .order-time-cell.waiting small b { color:#ffd092; }
body.admin-ios :is(.family-admin-priority span,td code,.ui-style-admin header p,.category-display-admin p,.promotion-entry-admin-card small,.edgeone-domain-note span) { color:var(--ux-secondary); }
body.admin-ios .ui-style-option input:checked + .ui-style-option-body > u { background:var(--ux-action); }
body.admin-ios .promotion-entry-admin-card > .settings-help { padding-inline:20px; margin-block:14px; }
body.admin-ios .order-inline-body { padding:12px 10px 4px; }
body.admin-ios .settings-form :is(header p,.settings-help,.notice-admin-head p,.notice-preview span) { color:var(--ux-secondary); }
body.wb-ios27 .wb-bottom-nav button.active { color:var(--ux-accent); }
body.wb-ios27 :is(#wbPaybackReward,#wbPaybackEncouragement,#wbAgentFundsBalance) { color:var(--wb-tier-text,var(--ux-accent)); }
@media(min-width:768px) { html[data-ui-style="ios27"] body.mobile-page :is(.customer-float,.data-plan-float) { right:max(24px,calc((100vw - 760px)/2 + 24px)); } }
body.admin-ios :is(.home-category-interaction-admin > p,.share-guide-admin-head p,.order-benefit-settings-head p,.order-benefit-notification-copy span) { color:var(--ux-secondary); }
html[data-theme="dark"] body.admin-ios :is(.badge.manual,.lottery-template,dd.is-valid) { color:var(--ux-success); }
html[data-theme="dark"] body.admin-ios .flag-orange > span { color:var(--ux-secondary); }
/* Legacy admin subviews must inherit the same night-mode semantics. */
html[data-theme="dark"] body.admin-ios :is(.dashboard-cps-finance-head span,.dashboard-cps-finance-head > strong,.user-directory-heading > div > span,.user-risk-settings summary b,.user-detail-fold > summary,.membership-admin-note strong,#jubijiaSelectedCount,.flow-admin-eyebrow,#wcpyptFlowSelectedCount,.flow-product-prices .is-sale,.flow-product-editor > summary) { color:var(--ux-accent); }
html[data-theme="dark"] body.admin-ios :is(.flash-arrival-todo-panel .panel-head > strong,.user-risk-labels span,.user-block-reason strong) { color:var(--ux-danger); }
html[data-theme="dark"] body.admin-ios :is(.order-pager-controls b,.coupon-disclosure > summary) { color:var(--ux-ink); }
html[data-theme="dark"] body.admin-ios .coupon-project-search > span { color:var(--ux-secondary); }
html body.mobile-page .mini-icon.ux-system-icon { border:0; background:none; width:20px; height:20px; border-radius:0; transform:none; }
html body.mobile-page .mini-icon.ux-system-icon::before,html body.mobile-page .mini-icon.ux-system-icon::after { content:none; }
html body.mobile-page .mini-icon.ux-system-icon svg { display:block; width:20px; height:20px; }
/* Keep action fills separate from link ink (a light blue ink is not a button fill). */
body.wb-ios27 { --ios-blue:var(--ux-accent); --ios-blue-strong:var(--ux-accent); --ios-green:var(--ux-success); --ios-red:var(--ux-danger); }
html[data-theme] body.wb-ios27 :is(.wb-button-primary,.wb-button-primary:hover) { background:var(--ux-action); color:#fff; }
body.wb-ios27 .wb-tab { color:var(--ux-secondary); }
body.wb-ios27 .wb-tab.is-active { color:var(--ux-accent); }
body.wb-ios27 .wb-identity-emblem[data-tier] { --emblem-shine:var(--ux-surface); --emblem-ink:var(--wb-tier-text,var(--ux-ink)); }
body.wb-ios27 .wb-metric-card.is-primary > :is(span,small) { color:var(--ux-ink); }
body.wb-ios27 .wb-metric-card.is-primary > strong { color:var(--wb-tier-text,var(--ux-ink)); }
body.wb-ios27 :is(.wb-parent-contact,#wbRightsToggle,.wb-text-button,.wb-button-secondary) { color:var(--ux-accent); }
body.wb-ios27 .wb-trend-change.is-down { color:var(--ux-danger); }
body.wb-ios27 .wb-channel-nudge small { color:var(--ux-secondary); }
body.wb-ios27 .wb-team-summary-end b { color:var(--wb-tier-text,var(--ux-accent)); }
body.wb-ios27 .wb-home-action.is-focus { background:var(--ux-action); }
body.wb-ios27 .wb-home-action-copy :is(small,em) { font-size:11px; line-height:1.5; }
body.wb-ios27 .wb-home-action.is-focus .wb-home-action-copy :is(small,em) { color:#fff; }
body.wb-ios27 .wb-agent-calculator-total { padding-top:16px; row-gap:8px; }
body.wb-ios27 .wb-team-rule > p { margin:0; padding:0 12px 14px; }
html[data-ui-style="ios27"] body.mobile-page { --clarity-text:var(--ux-ink); --clarity-secondary:var(--ux-secondary); --clarity-blue:var(--ux-accent); }
html[data-ui-style="ios27"] body.mobile-page .tab-bar button { color:var(--ux-secondary); }
html[data-ui-style="ios27"] body.mobile-page .tab-bar button.active { color:var(--ux-accent); }
html[data-ui-style="ios27"] body.mobile-page .phone-performance-label { color:var(--ux-secondary); font-size:11px; }
html[data-ui-style="ios27"] body.mobile-page .phone-section-title-row { flex-wrap:wrap; gap:8px; }
html[data-ui-style="ios27"] body.mobile-page .category-tab.button-carousel-item { opacity:1; }
html[data-ui-style="ios27"] body.mobile-page { --muted:var(--ux-secondary); }
html[data-ui-style="ios27"] body.mobile-page :is(#electricityArrivalInline,.service-section-title > span) { color:var(--ux-secondary); font-size:12px; }
html[data-ui-style="ios27"] body.mobile-page :is(.service-address-group label,.service-time-field) > span { color:var(--ux-secondary); }
html[data-ui-style="ios27"] body.mobile-page :is(.service-confirm-check,.service-product-prompt) { color:var(--ux-secondary); background:var(--ux-fill); }
html[data-ui-style="ios27"] body.mobile-page .date-choice-row button.active span,
html[data-ui-style="ios27"] body.mobile-page .membership-compare-button small { color:#fff; }
html[data-ui-style="ios27"] body.mobile-page .express-coupon { background:#175da8 linear-gradient(120deg,#175da8,#245d95); }
html[data-ui-style="ios27"] body.mobile-page .express-coupon-copy small { color:#fff; }
html[data-ui-style="ios27"] body.mobile-page #cancelNotice { color:var(--ux-accent); }
html[data-ui-style="ios27"] body.mobile-page .product-card.sold-out :is(strong,small) { color:var(--ux-secondary); }
html body.mobile-page .privacy-note a { display:inline-flex; align-items:center; min-height:44px; padding:8px; }
/* Utility pages inherit the same chosen appearance, including payment returns. */
body[data-ui-page="cps-bulk-redeem"] { --bg:var(--ux-fill); --surface:var(--ux-surface); --text:var(--ux-ink); --muted:var(--ux-secondary); --accent:var(--ux-accent); --line:var(--ux-line); }
body[data-ui-page="cps-bulk-redeem"] button { background:var(--ux-action); color:white; }
body[data-ui-page="cps-bulk-redeem"] :is(.redeem-result.is-error) { color:var(--ux-danger); }
body[data-ui-page="cps-bulk-redeem"] .redeem-result.is-success { color:var(--ux-success); }
body[data-ui-page="payment-complete"] { --bg:var(--ux-fill); --card:var(--ux-surface); --text:var(--ux-ink); --muted:var(--ux-secondary); --line:var(--ux-line); --blue:var(--ux-accent); --blue-soft:var(--ux-fill); --success:var(--ux-success); background:var(--ux-fill); }
body[data-ui-page="payment-complete"] :is(.order-note,.order-details,.guide) { background:var(--ux-fill); }
body[data-ui-page="payment-complete"] :is(.step,.fine-print) { color:var(--ux-secondary); }
body[data-ui-page="payment-complete"] .copy-btn { background:var(--ux-action); color:white; }
body[data-ui-page="taxi-coupon-test"] { --bg:var(--ux-fill); --surface:var(--ux-surface); --text:var(--ux-ink); --muted:var(--ux-secondary); --line:var(--ux-line); --blue:var(--ux-action); --blue-ink:var(--ux-accent); }
body.admin-ios .release-summary { background:var(--ux-fill); border-color:var(--ux-line); }
body.admin-ios .release-summary :is(span,p) { color:var(--ux-secondary); }
body.admin-ios .release-summary strong { color:var(--ux-accent); }
body.admin-ios .poster-template-toolbar code { color:var(--ux-accent); }
html[data-theme="dark"] body.admin-ios #tierPreviewPrice { color:var(--ux-ink); }
body.admin-ios .domain-risk-api-state.is-missing { color:#855018; background:#fff1de; }
html[data-theme="dark"] body.admin-ios .domain-risk-api-state.is-missing { color:#ffd092; background:#49351f; }
body.admin-ios .flash-rules-live-mark { color:var(--ux-success); }
body.admin-ios :is(.settings-status-chip,.wechat-profile-status-grid span) { color:var(--ux-secondary); }
html[data-ui-style="ios27"] body.mobile-page .modal-sheet .plain-close { color:var(--ux-accent); background:var(--ux-fill); border-radius:12px; }
body[data-ui-page="taxi-coupon-test"] { --paper:var(--ux-surface); --canvas:var(--ux-fill); --blue-soft:var(--ux-fill); --blue-deep:var(--ux-action); --success:var(--ux-success); --danger:var(--ux-danger); }
/* Public utilities and campaign copy retain their distinct brand palettes. */
body[data-ui-page="cps-quotes"] :is(.quote-tier-filter button:not(.active),.quote-value.cost strong,.quote-footer a) { color:var(--ux-accent); }
body[data-ui-page="redeem"] :is(.redeem-header small,.secondary-action) { color:var(--ux-accent); }
body[data-ui-page="redeem"] .secure-chip { color:var(--ux-secondary); }
body[data-ui-page="privacy"] .privacy-back { color:var(--ux-accent); display:inline-flex; align-items:center; min-height:44px; }
body[data-ui-page="ceshizhifu"] { --muted:var(--ux-secondary); --subtle:var(--ux-muted); }
body[data-ui-page="ceshizhifu"] :is(.helper,.notice,.strategy-text small,.tag,.real-test-head small) { color:var(--ux-secondary); }
body[data-ui-page="ceshizhifu"] .primary { color:#fff; background:var(--ux-action); }
body[data-ui-page="taxi-coupon-test"] { background:var(--ux-fill); }
body[data-ui-page="taxi-coupon-test"] :is(.panel,.rules) { background:var(--ux-surface); }
body[data-ui-page="taxi-coupon-test"] .secure-note { color:var(--ux-secondary); }
body[data-ui-page="taxi-coupon-test"] .coupon-front { background:#175da8; }
body[data-ui-page="taxi-coupon-test"] .coupon-info span { color:#fff; }
body[data-ui-page="taxi-coupon-test"] #claim-button { background:var(--ux-action); }
html[data-theme="light"] body.family-page :is(.family-reward-ticket-value,.reward-ticket-label,.family-role-choice > header > span) { color:#973e22; }
html[data-theme="light"] body.family-page :is(.family-role-copy small,.family-recover-link span) { color:#745143; font-size:11px; }
body.family-page .family-reference-hero > div > span { color:#fff; }
body.family-page .campaign-countdown b { background:#ac3529; color:#fff; }
body.family-page .family-primary-cta { background:var(--ux-action); color:#fff; }
body.family-page .family-secondary-cta { color:var(--ux-accent); }
body[data-ui-page="choujiang"] :is(#heroKicker,#heroSubtitle) { color:#fff; }
body[data-ui-page="choujiang"] :is(#headerRuleText,#participantHeadline,#participantAction,#bottomInfo) { color:#a63125; }
body[data-ui-page="choujiang"] #stageTag { background:#b93520; }
body[data-ui-page="choujiang"] :is(#prizesTab,#recordsTab,#ruleBody) { color:#655c60; }
body[data-ui-page="choujiang"] .box-heading small { color:#7b5626; }
body.admin-ios .order-benefit-ad-card > header span { color:var(--ux-secondary); }
body.wb-ios27 :is(.wb-agent-calculator-total small,.wb-right-card small,.wb-link-state,.wb-trend-change,.wb-agent-policy-item small,.wb-link-title small,.wb-profile-meta small) { font-size:11px; line-height:1.5; }
body.wb-ios27 .wb-metric-card > small { line-height:1.55; }
body.admin-ios :is(.settings-help,.share-guide-field-note,.promotion-entry-admin-card .form-grid label small) { font-size:12px; }
body.wb-ios27 #wbWithdrawMinimum { color:var(--ux-secondary); font-size:11px; }
body[data-ui-page="cps-quotes"] .quote-footer { padding-top:16px; }
body[data-ui-page="cps-quotes"] .quote-footer p { margin:0 0 12px; line-height:1.65; }
body.wb-ios27 .wb-dialog-close::before { content:none; }
body.wb-ios27 :is(#wbMarkupDescription,#wbChannelEntryHint) { color:var(--ux-ink); }
:root { --cps-readable-accent:var(--ux-accent); }
.cps-membership-v2-page :is(#cpsProfileSubtitle,#cpsTierHeadingEmphasis,#cpsMembershipStatus,#cpsPaybackPolicyLabel,.cps-picker-action,#cpsQuoteCost,#cpsPrincipalBadge,#cpsShare,#cpsDisclaimerLink,#cpsQuoteExplain,#cpsPrincipalBenefitsOpen,.comparison-tier-head span) { color:var(--cps-readable-accent); }
.cps-membership-v2-page .membership-tier-rail button[aria-selected="true"] { color:var(--cps-readable-accent); }
.cps-membership-v2-page .membership-tier-rail button small { color:var(--ux-secondary); font-size:11px; opacity:1; }
.cps-membership-v2-page .membership-inline-payment.is-active { color:var(--cps-readable-accent); }
.cps-membership-v2-page :is(#cpsPaybackCalculatorOpen,.membership-live-quote-link) { color:#fff; background:var(--ux-action); }
.cps-membership-v2-page .membership-live-quote-kicker { color:#fff; opacity:1; font-size:11px; }
.cps-membership-v2-page #cpsQuoteSelectionName { color:var(--ux-ink); }
.cps-membership-v2-page .cps-letter-topline,.cps-membership-v2-page .cps-letter-signature small { color:#706457; }
.cps-membership-v2-page .membership-live-quote-link :is(strong,small,.membership-live-quote-kicker) { color:#fff; }
.cps-membership-v2-page .membership-live-quote-kicker { background:transparent; }
.cps-membership-v2-page #cpsPrincipalContact { color:#fff; background:var(--ux-action); }
/* Theme changes update text immediately; only movement receives a transition. */
html[data-theme] body[data-ui-page="redeem"] :is(.redeem-header small,.secondary-action) { color:var(--ux-accent); }
html[data-theme] body[data-ui-page="redeem"] .secure-chip { color:var(--ux-secondary); background:var(--ux-surface); }
html[data-theme] body[data-ui-page="redeem"] .gift-fallback .secondary-action { color:#fff; }
html[data-theme] body.family-page .family-primary-cta { background:var(--ux-action); color:#fff; }
html[data-theme] body.family-page .family-secondary-cta { color:var(--ux-accent); background:var(--ux-fill); }
html[data-theme="light"] body.family-page .family-scenarios-v3 small { color:#745143; }
html[data-theme] body[data-ui-page="ceshizhifu"] .primary { color:#fff; background:var(--ux-action); }
html[data-theme] body[data-ui-page="ceshizhifu"] .strategy:has(input:checked) .tag { color:var(--ux-accent); background:var(--ux-fill); }
html[data-theme] body[data-ui-page="ceshizhifu"] .strategy .tag { color:var(--ux-secondary); background:var(--ux-fill); }
html[data-theme] body[data-ui-page="taxi-coupon-test"] .test-badge { color:var(--ux-accent); background:var(--ux-surface); }
html[data-theme] body[data-ui-page="taxi-coupon-test"] .eyebrow { color:var(--ux-accent); }
body[data-ui-page="taxi-coupon-test"] .coupon-mark { color:#fff; }
body[data-ui-page="choujiang"] .board-ribbon { background-color:#ffe2b8; }
body[data-ui-page="choujiang"] .game-board { background-color:#ffe6c3; }
body[data-ui-page="choujiang"] .draw-availability { background-color:#fffce7; }
body[data-ui-page="choujiang"] #stageNote { color:#874a31; }
body[data-ui-page="choujiang"] #drawHint { color:#4b6654; }
body.wb-ios27 .wb-tab,html[data-ui-style="ios27"] body.mobile-page .tab-bar button { transition:transform 110ms ease-out; }
html[data-theme],html[data-theme] body { transition:none; }
html[data-theme] :is(.cps-membership-v2-page,.wb-ios27,.admin-ios) button,
html[data-theme] .cps-membership-v2-page .cps-product-picker-trigger,
html[data-theme] .wb-ios27 :is(.wb-home-action,.wb-mode-option,.wb-link-row),
html[data-ui-style="ios27"][data-theme] body.mobile-page :is(.category-tab,.product-card,.customer-float,.data-plan-float) {
 transition-property:transform,box-shadow,filter;
}

/* Populated orders: foreground and surface are an inseparable pair. Shared by
   list, detail, refunds, coupon verification and both selectable styles. */
:root { --ux-warning:#835017; --ux-danger-action:#9b2940; --ux-warning-action:#80520f; }
html[data-theme="dark"] { --ux-warning:#ffd092; }
html[data-theme] body.mobile-page :is(.order-actions button,.order-search-row button,.secondary-wide,.customer-link,.modal-sheet > button:not(.plain-close)) {
 color:var(--ux-on-accent); background:var(--ux-action); -webkit-text-fill-color:currentColor;
}
html[data-theme] body.mobile-page :is(.order-actions button,.secondary-wide,.customer-link) :is(span,b,strong,small) { color:inherit; -webkit-text-fill-color:currentColor; }
html[data-theme] body.mobile-page :is(.order-actions button,.secondary-wide,.modal-sheet > button):disabled {
 opacity:1; color:var(--ux-secondary); background:var(--ux-fill); box-shadow:none;
}
html[data-theme] body.mobile-page .order-progress-step > span { color:var(--ux-secondary); background:var(--ux-surface); border-color:var(--ux-line); }
html[data-theme] body.mobile-page .order-progress-step.is-done > span { color:#fff; background:var(--ux-action); border-color:var(--ux-action); }
html[data-theme] body.mobile-page .order-progress-step.is-active > span { color:var(--ux-accent); background:var(--ux-surface); border-color:var(--ux-accent); }
html[data-theme] body.mobile-page .order-progress-step.is-failed > span { color:#fff; background:var(--ux-danger-action); border-color:var(--ux-danger-action); }
html[data-theme] body.mobile-page .order-progress-step.is-partial > span { color:#fff; background:var(--ux-warning-action); border-color:var(--ux-warning-action); }
html[data-theme] body.mobile-page .order-progress-step > strong { color:var(--ux-accent); white-space:normal; line-height:1.45; }
html[data-theme] body.mobile-page .order-progress-step.is-failed > strong { color:var(--ux-danger); }
html[data-theme] body.mobile-page .order-progress-step.is-partial > strong { color:var(--ux-warning); }
html[data-theme] body.mobile-page .order-progress-step > small { color:var(--ux-secondary); font-size:11px; line-height:1.5; white-space:normal; }
html[data-theme] body.mobile-page .order-progress-overdue { color:var(--ux-warning); }
html[data-theme] body.mobile-page .order-progress-overdue > span { color:var(--ux-secondary); }
html[data-theme] body.mobile-page :is(.order-money > span,.order-money > span b,.order-payment-meta > span,.order-payment-meta em,.order-main p) { color:var(--ux-secondary); }
html[data-theme] body.mobile-page .order-money > strong { color:var(--ux-ink); }
html[data-theme] body.mobile-page .order-payment-meta.is-unpaid > strong { color:var(--ux-warning); }
html[data-theme] body.mobile-page :is(.status-text,.status-badge) { color:var(--ux-accent); background:var(--ux-fill); }
html[data-theme] body.mobile-page :is(.status-text,.status-badge).success { color:var(--ux-success); }
html[data-theme] body.mobile-page :is(.status-text,.status-badge):is(.failed,.needs_config) { color:var(--ux-danger); }
html[data-theme] body.mobile-page :is(.status-text,.status-badge):is(.cancelled,.refunded) { color:var(--ux-secondary); }
html[data-theme] body.mobile-page :is(.coupon-next-step,.redemption-list-meta) { color:var(--ux-secondary); background:var(--ux-fill); }
html[data-theme] body.mobile-page .coupon-next-step :is(b,strong) { color:var(--ux-accent); }
html[data-theme] body.mobile-page .coupon-next-step.active :is(b,strong) { color:var(--ux-warning); }
html[data-theme] body.mobile-page :is(.coupon-next-step span,.redemption-list-meta small) { color:var(--ux-secondary); }
html[data-theme] body.mobile-page .redemption-list-meta strong { color:var(--ux-success); }
html[data-theme] body.mobile-page .order-filters button.active { color:var(--ux-ink); background:var(--ux-surface); }
html[data-theme] body.mobile-page :is(input,textarea)::placeholder { color:var(--ux-secondary); opacity:1; -webkit-text-fill-color:currentColor; }
/* Order detail and follow-up sheets use the same palette as the list. */
html[data-theme] body.mobile-page :is(.redemption-account-panel,.redemption-order-facts > div,.standard-price-summary > div,.manual-order-info,.service-order-info,.order-timeline,.coupon-flow,.redemption-confirmation,.order-partial-refund,.order-refund-confirmed,.manual-report-code) {
 background:var(--ux-fill); color:var(--ux-ink);
}
html[data-theme] body.mobile-page :is(.redemption-order-title small,.redemption-account-panel > span,.redemption-order-facts dt,.standard-price-summary span,.manual-order-info p,.service-order-info p,.order-timeline div,.order-section-title small,.manual-report-code > span,.order-partial-refund-head span,.order-partial-refund-values small,.order-partial-refund > p,.order-refund-confirmed span,.redemption-confirmation span) { color:var(--ux-secondary); }
html[data-theme] body.mobile-page :is(.redemption-account-panel > strong,.redemption-order-facts dd,.manual-order-info b,.service-order-info b,.standard-price-summary strong,.coupon-flow > strong,.order-timeline strong) { color:var(--ux-ink); }
html[data-theme] body.mobile-page :is(.redemption-account-panel > small,.standard-price-summary .payable strong,.manual-report-code > strong,.manual-reminder-head small) { color:var(--ux-accent); }
html[data-theme] body.mobile-page .order-partial-refund-values > span { background:var(--ux-surface); }
html[data-theme] body.mobile-page .order-partial-refund-values b { color:var(--ux-ink); }
html[data-theme] body.mobile-page :is(.order-partial-refund-head strong,.order-refund-confirmed strong,.redemption-confirmation strong) { color:var(--ux-accent); }
html[data-theme] body.mobile-page .error-text { color:var(--ux-danger); background:var(--ux-fill); }
html[data-theme] body.mobile-page :is(.primary-wide,.coupon-code-row button,.manual-form-actions .manual-submit-button,.manual-reminder-actions .manual-ack-button,.manual-report-code button) { color:#fff; background:var(--ux-action); opacity:1; }
html[data-theme] body.mobile-page :is(.manual-cancel-button,.manual-contact-button) { color:var(--ux-accent); background:var(--ux-fill); }
html[data-theme] body.mobile-page :is(.primary-wide,.coupon-code-row button,.manual-form-actions button):disabled { color:var(--ux-secondary); background:var(--ux-fill); opacity:1; }
html[data-theme] body.mobile-page .coupon-code-resend { color:var(--ux-secondary); }
html[data-theme] body.mobile-page .coupon-code-resend button { color:var(--ux-accent); background:transparent; }
html[data-theme] body.mobile-page .coupon-code-resend button:disabled { color:var(--ux-secondary); }
/* The default "充" tile is a functional fallback, not uploaded category art. */
html[data-theme] body.mobile-page :is(.order-product-icon,.category-mark):not(.image):not(:has(img)) { color:#fff; background:var(--ux-action); }
html[data-theme] body.mobile-page .membership-delivery-head small { color:var(--ux-success); }
/* Disabled means unavailable, not unreadable. Keep the native disabled state. */
html[data-theme] body.admin-ios button:disabled {
 opacity:1; color:var(--ux-secondary); background:var(--ux-fill); border-color:var(--ux-line); box-shadow:none; cursor:not-allowed;
}
html[data-theme] body.admin-ios button:disabled :is(span,strong,small) { color:inherit; opacity:1; }
html[data-theme] body.admin-ios .brand-mark { color:#fff; background:var(--ux-action); }
html[data-theme] body.admin-ios .is-restricted > strong { color:var(--ux-danger); }
html[data-theme] body.admin-ios .coupon-project-stock b { color:var(--ux-success); }
/* Supporting pages share the same readable hint/step/action contract. */
html[data-theme] body.family-page .rules-entry i { color:var(--ux-secondary); }
body[data-ui-page="choujiang"] :is(#participantCount,#drawCount) { color:#fff6dc; }
body[data-ui-page="choujiang"] .bottom-primary:disabled { color:#694539; background:#f1dfd4; opacity:1; box-shadow:none; }
body[data-ui-page="choujiang"] .bottom-primary:disabled :is(b,span,small) { color:inherit; opacity:1; }
html[data-theme] body[data-ui-page="ceshizhifu"] .brand-mark { color:#fff; background:var(--ux-action); }
html[data-theme] body[data-ui-page="ceshizhifu"] input::placeholder { color:var(--ux-secondary); opacity:1; }
html[data-theme] body[data-ui-page="taxi-coupon-test"] input { color:var(--ux-ink); background:var(--ux-fill); }
html[data-theme] body[data-ui-page="taxi-coupon-test"] input::placeholder { color:var(--ux-secondary); opacity:1; }
html[data-theme] body[data-ui-page="taxi-coupon-test"] .rule-index { color:var(--ux-accent); background:var(--ux-fill); }
/* Switching back to either legacy theme must not restore pale order labels. */
html[data-theme] body.mobile-page :is(#ordersSavingsHint,#lookupHint,.order-filters button:not(.active)) { color:var(--ux-secondary); }
html[data-theme] body.mobile-page :is(.orders-head-copy > span,.phone-mini,.tab-bar button.active b) { color:var(--ux-accent); }
html[data-theme] body.wb-ios27 button:disabled { opacity:1; color:var(--ux-secondary); background:var(--ux-fill); box-shadow:none; cursor:not-allowed; }
html[data-theme] body.wb-ios27 button:disabled :is(span,strong,small) { color:inherit; opacity:1; }
html[data-theme] body.wb-ios27 :is(input,textarea)::placeholder { color:var(--ux-secondary); opacity:1; }
html[data-theme] body.mobile-page .phone-mini:not(.image):not(:has(img)) { color:var(--ux-accent); background:var(--ux-fill); }
html[data-theme] body.cps-membership-v2-page button:disabled { opacity:1; color:var(--ux-secondary); background:var(--ux-fill); box-shadow:none; }
html[data-theme] body.cps-membership-v2-page button:disabled :is(span,strong,small,del) { color:inherit; opacity:1; }
/* Original prices remain readable; strikethrough already conveys hierarchy. */
html[data-theme] body.cps-membership-v2-page .membership-purchase-button del { color:inherit; opacity:1; }
html[data-theme] body.cps-membership-v2-page .membership-offer-price > span { color:var(--cps-readable-accent); }

html[data-ui-style="ios27"] body.mobile-page .customer-float { z-index:96; }
html[data-ui-style="ios27"] body.mobile-page .data-plan-float { z-index:95; }
