Files
dukang/apps/h5-partner/src/styles.css
T
2026-08-16 12:22:54 +08:00

3926 lines
78 KiB
CSS

@import '@dukang/shared-ui/base.css';
html, body, #root {
overflow-x: hidden;
width: 100%;
max-width: 100%;
}
html {
scrollbar-gutter: stable;
}
/* ── Partner auth ── */
.partner-auth-page {
min-height: 100vh;
min-height: 100dvh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
padding: 48px var(--space-page) calc(24px + env(safe-area-inset-bottom, 0px));
background-color: var(--color-background);
background-image: url("https://www.transparenttextures.com/patterns/natural-paper.png");
box-sizing: border-box;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
@media (min-height: 720px) {
.partner-auth-page {
justify-content: center;
}
}
.partner-auth-page--quick {
background-image:
radial-gradient(at 100% 0%, rgba(166, 29, 36, 0.03) 0, transparent 50%),
radial-gradient(at 0% 100%, rgba(255, 191, 0, 0.03) 0, transparent 50%);
}
.partner-auth-brand {
text-align: center;
margin-bottom: var(--space-lg);
}
.partner-auth-logo-circle {
width: 80px;
height: 80px;
margin: 0 auto 16px;
border-radius: 50%;
background: var(--color-heritage-red);
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
}
.partner-auth-logo-circle .material-symbols-outlined {
color: #fff;
font-size: 36px;
font-variation-settings: 'FILL' 1;
}
.partner-auth-title {
font-family: var(--font-headline);
font-size: 32px;
font-weight: 700;
color: var(--color-heritage-red);
letter-spacing: -0.02em;
}
.partner-auth-subtitle {
font-family: var(--font-headline);
font-size: 18px;
color: var(--color-subtle-gray);
margin-top: 4px;
}
.partner-auth-card {
width: 100%;
max-width: 400px;
background: var(--color-card);
border-radius: var(--radius-md);
padding: var(--space-lg);
box-shadow: var(--shadow-card);
border: 1px solid var(--color-surface-container-highest);
}
.partner-auth-card-title {
font-family: var(--font-headline);
font-size: 20px;
font-weight: 600;
text-align: center;
margin-bottom: var(--space-lg);
color: var(--color-ink-black);
}
.partner-input-wrap {
position: relative;
display: flex;
align-items: center;
background: var(--color-background);
border: 1px solid transparent;
border-radius: var(--radius-md);
transition: box-shadow 0.2s;
}
.partner-input-wrap:focus-within {
box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
}
.partner-input-icon {
position: absolute;
left: 16px;
color: var(--color-subtle-gray);
font-size: 20px;
pointer-events: none;
}
.partner-input {
width: 100%;
padding: 16px 16px 16px 44px;
border: none;
background: transparent;
font-size: 14px;
color: var(--color-on-surface);
}
.partner-input:focus { outline: none; }
.partner-input-row {
display: flex;
gap: 8px;
}
.partner-input-row .partner-input-wrap { flex: 1; }
.partner-code-btn {
flex-shrink: 0;
padding: 16px;
border: 1px solid rgba(226, 190, 188, 0.2);
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
color: var(--color-heritage-red);
font-family: var(--font-label);
font-size: 12px;
font-weight: 500;
cursor: pointer;
white-space: nowrap;
}
.partner-code-btn:disabled {
opacity: 0.5;
pointer-events: none;
}
.partner-auth-divider {
display: flex;
align-items: center;
gap: 12px;
margin: var(--space-md) 0;
}
.partner-auth-divider::before,
.partner-auth-divider::after {
content: '';
flex: 1;
height: 1px;
background: rgba(226, 190, 188, 0.2);
}
.partner-auth-divider span {
font-size: 12px;
color: var(--color-subtle-gray);
}
.partner-checkbox-row {
display: flex;
align-items: flex-start;
gap: 12px;
margin-top: var(--space-md);
font-size: 12px;
line-height: 1.5;
color: var(--color-on-surface-variant);
}
.partner-checkbox-row input {
margin-top: 2px;
flex-shrink: 0;
width: 18px;
height: 18px;
accent-color: var(--color-heritage-red);
}
.partner-checkbox-row--agreement {
margin-top: 8px;
margin-bottom: 4px;
padding: 8px 0;
}
.partner-auth-footer {
margin-top: var(--space-lg);
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
color: var(--color-subtle-gray);
}
.partner-auth-footer .material-symbols-outlined { font-size: 16px; }
.partner-glass-card {
width: 100%;
max-width: 384px;
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: var(--radius-md);
padding: var(--space-md);
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-md);
position: relative;
overflow: hidden;
}
.partner-quick-badge {
position: absolute;
top: 0;
right: 0;
background: rgba(255, 191, 0, 0.1);
color: var(--color-aged-amber);
font-size: 10px;
font-weight: 700;
padding: 4px 12px;
border-bottom-left-radius: var(--radius-md);
letter-spacing: 0.05em;
}
.partner-quick-avatar {
width: 80px;
height: 80px;
border-radius: 50%;
background: var(--color-surface-container-low);
border: 4px solid #fff;
display: flex;
align-items: center;
justify-content: center;
margin-top: 8px;
}
.partner-quick-avatar .material-symbols-outlined {
font-size: 40px;
color: var(--color-subtle-gray);
font-variation-settings: 'FILL' 1;
}
.partner-btn-primary {
width: 100%;
padding: 16px;
border: none;
border-radius: var(--radius-md);
background: var(--color-heritage-red);
color: var(--color-on-primary);
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
box-shadow: 0 4px 12px rgba(166, 29, 36, 0.2);
transition: transform 0.1s, opacity 0.2s;
}
.partner-btn-primary:active { transform: scale(0.98); }
.partner-btn-ghost {
width: 100%;
padding: 12px;
border: 1px solid transparent;
border-radius: var(--radius-md);
background: transparent;
color: var(--color-on-surface-variant);
font-family: var(--font-label);
font-size: 12px;
cursor: pointer;
text-align: center;
}
.partner-btn-outline {
flex: 1;
height: 48px;
border: 1px solid var(--color-outline);
border-radius: var(--radius-md);
background: transparent;
color: var(--color-on-surface);
font-family: var(--font-headline);
font-size: 16px;
font-weight: 600;
cursor: pointer;
}
/* 卡片标题旁的紧凑型描边按钮:不拉伸、缩小尺寸、贴右对齐 */
.partner-btn-outline--compact {
flex: none;
height: 30px;
padding: 0 14px;
border: 1px solid var(--color-outline);
border-radius: var(--radius-sm);
background: transparent;
color: var(--color-primary);
font-family: var(--font-label);
font-size: 13px;
font-weight: 500;
line-height: 1;
cursor: pointer;
transition: background 0.15s, border-color 0.15s;
}
.partner-btn-outline--compact:hover {
background: color-mix(in srgb, var(--color-primary) 8%, transparent);
border-color: var(--color-primary);
}
.partner-btn-outline--compact:active {
transform: scale(0.97);
}
.partner-btn-wechat {
width: 100%;
padding: 16px;
border: 1px solid rgba(226, 190, 188, 0.2);
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
color: var(--color-on-surface);
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
transition: background 0.2s, transform 0.1s;
}
.partner-btn-wechat:hover {
background: var(--color-surface-container-high);
}
.partner-btn-wechat:active {
transform: scale(0.98);
}
.partner-btn-wechat:disabled {
opacity: 0.6;
pointer-events: none;
}
.partner-btn-wechat svg {
width: 24px;
height: 24px;
flex-shrink: 0;
}
.partner-remember-row {
display: flex;
align-items: center;
gap: 8px;
padding: 0 4px;
font-size: 12px;
color: var(--color-on-surface-variant);
}
.partner-remember-row input {
width: 16px;
height: 16px;
accent-color: var(--color-heritage-red);
}
.partner-link {
display: block;
text-align: center;
margin-top: 16px;
color: var(--color-heritage-red);
font-size: 14px;
}
/* ── Home dashboard ── */
.partner-home {
padding-bottom: 96px;
overflow-x: hidden;
max-width: 100%;
}
.partner-home-body {
padding: var(--space-md) var(--space-page) var(--space-lg);
display: flex;
flex-direction: column;
gap: var(--space-lg);
max-width: 100%;
overflow-x: hidden;
}
.partner-home-header {
position: sticky;
top: 0;
z-index: 50;
display: flex;
align-items: center;
justify-content: center;
padding: 0 var(--space-page);
height: 56px;
background: var(--color-surface-container-low);
box-shadow: var(--shadow-card);
}
.partner-home-header-actions {
position: absolute;
right: var(--space-page);
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
gap: 16px;
}
.partner-notif-btn {
position: relative;
padding: 8px;
border: none;
background: none;
border-radius: 50%;
cursor: pointer;
color: var(--color-on-surface-variant);
}
.partner-notif-dot {
position: absolute;
top: 6px;
right: 6px;
width: 8px;
height: 8px;
background: var(--color-heritage-red);
border-radius: 50%;
border: 2px solid var(--color-surface);
}
.partner-revenue-card {
position: relative;
overflow: hidden;
background: linear-gradient(135deg, #a61d24 0%, #820012 100%);
border-radius: var(--radius-md);
padding: 24px;
color: #fff;
box-shadow: 0 8px 24px rgba(166, 29, 36, 0.25);
}
.partner-revenue-card::before {
content: '';
position: absolute;
right: -48px;
top: -48px;
width: 192px;
height: 192px;
background: rgba(255, 255, 255, 0.05);
border-radius: 50%;
filter: blur(24px);
}
.partner-revenue-label {
font-family: var(--font-label);
font-size: 12px;
opacity: 0.8;
display: flex;
align-items: center;
gap: 4px;
}
.partner-revenue-amount {
font-family: var(--font-headline);
font-size: clamp(28px, 8vw, 36px);
font-weight: 700;
margin-top: 8px;
word-break: break-all;
}
.partner-revenue-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin-top: 24px;
padding-top: 24px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.partner-bento {
display: grid;
grid-template-columns: 1fr;
gap: var(--space-gutter);
min-width: 0;
}
/* Stitch: 移动端单列堆叠,仅平板及以上并排 */
@media (min-width: 768px) {
.partner-bento { grid-template-columns: 7fr 5fr; }
}
.partner-bento-card {
background: var(--color-card);
border-radius: var(--radius-md);
padding: var(--space-md);
box-shadow: var(--shadow-card);
min-width: 0;
overflow: hidden;
}
.partner-bento-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--space-md);
}
.partner-store-stats {
display: flex;
gap: 12px;
min-width: 0;
}
.partner-store-stat {
flex: 1;
min-width: 0;
background: var(--color-surface-container-low);
border-radius: 8px;
padding: 12px;
display: flex;
align-items: center;
gap: 8px;
}
.partner-dot {
width: 12px;
height: 12px;
border-radius: 50%;
flex-shrink: 0;
}
.partner-dot--green {
background: var(--color-success-green);
box-shadow: 0 0 8px rgba(45, 106, 79, 0.4);
}
.partner-dot--red {
background: var(--color-heritage-red);
box-shadow: 0 0 8px rgba(166, 29, 36, 0.4);
}
.partner-quick-actions {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 8px;
min-width: 0;
}
.partner-quick-action {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
min-width: 0;
width: 100%;
border: none;
background: none;
cursor: pointer;
text-decoration: none;
color: inherit;
}
.partner-quick-action-icon {
width: 48px;
height: 48px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.partner-quick-action-icon--red { background: #fef2f2; color: var(--color-heritage-red); }
.partner-quick-action-icon--amber { background: #fffbeb; color: var(--color-aged-amber); }
.partner-quick-action-icon--green { background: #ecfdf5; color: var(--color-success-green); }
.partner-quick-action-icon--blue { background: #eff6ff; color: var(--color-status-blue); }
.partner-quick-action-label {
font-size: 10px;
font-weight: 500;
color: var(--color-on-surface-variant);
width: 100%;
text-align: center;
line-height: 1.2;
word-break: keep-all;
}
.partner-quick-badge-count {
position: absolute;
top: -4px;
right: -4px;
width: 20px;
height: 20px;
background: var(--color-heritage-red);
color: #fff;
font-size: 10px;
font-weight: 700;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
border: 2px solid #fff;
}
.partner-order-summary-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
margin-bottom: var(--space-md);
min-width: 0;
}
.partner-order-summary-header h2 {
flex-shrink: 1;
min-width: 0;
}
.partner-order-summary-header a {
flex-shrink: 0;
white-space: nowrap;
}
.partner-order-stats {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
min-width: 0;
}
.partner-order-stat {
background: var(--color-card);
padding: 12px;
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
border-left: 4px solid var(--color-aged-amber);
min-width: 0;
}
.partner-order-stat--blue { border-left-color: var(--color-status-blue); }
.partner-order-stat--green { border-left-color: var(--color-success-green); }
.partner-expansion-card {
background: var(--color-card);
border-radius: var(--radius-md);
padding: var(--space-md);
box-shadow: var(--shadow-card);
}
.partner-expansion-split {
display: flex;
}
.partner-expansion-split > div {
flex: 1;
}
.partner-expansion-split > div + div {
padding-left: 16px;
border-left: 1px solid rgba(226, 190, 188, 0.2);
}
.partner-expansion-value-row {
display: flex;
align-items: center;
gap: 8px;
}
.partner-expansion-trend {
display: inline-flex;
align-items: center;
gap: 2px;
font-size: 12px;
font-weight: 600;
}
.partner-expansion-trend--up {
color: #16a34a;
}
.partner-expansion-trend--down {
color: var(--color-heritage-red);
}
.partner-form-error {
margin: 0 20px 12px;
padding: 10px 12px;
border-radius: 8px;
background: var(--color-error-container);
color: var(--color-error);
font-size: 14px;
}
.partner-field-error {
margin: 8px 0 0;
padding: 0;
font-size: 13px;
line-height: 1.4;
color: var(--color-error);
}
.partner-store-phone-summary {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.partner-store-phone-summary-main {
display: flex;
flex-direction: column;
gap: 4px;
}
.partner-store-name-list {
list-style: none;
margin: 0 0 16px;
padding: 0;
border-bottom: 1px solid rgba(226, 190, 188, 0.15);
padding-bottom: 12px;
}
.partner-store-name-list li {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 0;
gap: 12px;
}
.partner-store-name-list-header {
padding-bottom: 4px !important;
border-bottom: 1px solid rgba(226, 190, 188, 0.15);
}
.partner-store-name-list--compact li {
padding: 4px 0;
}
.partner-pending-stores {
margin-bottom: 12px;
padding-bottom: 12px;
border-bottom: 1px solid rgba(226, 190, 188, 0.15);
}
.partner-home-store-section {
background: var(--color-surface-container-lowest, #fff);
border-radius: 12px;
padding: 16px;
margin-bottom: 16px;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
}
.partner-home-store-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12px;
}
.partner-home-store-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 12px 0;
border-bottom: 1px solid rgba(226, 190, 188, 0.15);
text-decoration: none;
color: inherit;
}
.partner-home-store-row:last-child {
border-bottom: none;
padding-bottom: 0;
}
.partner-home-store-info {
flex: 1;
min-width: 0;
}
.partner-home-store-empty {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 0;
}
.partner-leaderboard-tabs {
display: flex;
gap: 8px;
padding: 0 20px 12px;
overflow-x: auto;
}
.partner-leaderboard-tab {
border: none;
background: var(--color-surface-container-high, #e9e8e6);
color: var(--color-on-surface-variant, #5a413f);
padding: 8px 20px;
border-radius: 999px;
font-size: 13px;
white-space: nowrap;
cursor: pointer;
}
.partner-leaderboard-tab.active {
background: var(--color-heritage-red, #a61d24);
color: #fff;
}
.partner-leaderboard-self-card {
background: var(--color-heritage-red, #a61d24);
border-radius: 12px;
padding: 16px;
color: #fff;
margin-bottom: 8px;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.15);
}
.partner-leaderboard-self-main {
display: flex;
align-items: center;
gap: 12px;
}
.partner-leaderboard-self-rank {
background: rgba(255, 255, 255, 0.15);
border-radius: 999px;
padding: 4px 10px;
font-size: 12px;
white-space: nowrap;
}
.partner-leaderboard-self-stats {
display: flex;
justify-content: space-between;
gap: 12px;
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid rgba(255, 255, 255, 0.15);
font-size: 13px;
}
.partner-field-input--block {
width: 100%;
padding: 0 16px;
min-height: 48px;
border: 1px solid rgba(226, 190, 188, 0.3);
border-radius: 8px;
background: var(--color-background);
}
.partner-leaderboard-section {
padding-top: 12px;
}
.partner-leaderboard-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.partner-leaderboard-row {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 0;
border-bottom: 1px solid rgba(226, 190, 188, 0.1);
}
.partner-leaderboard-row--compact {
padding: 8px 0;
}
.partner-leaderboard-rank {
width: 28px;
height: 28px;
border-radius: 50%;
background: var(--color-surface-container-high);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 700;
flex-shrink: 0;
}
.partner-leaderboard-row:first-of-type .partner-leaderboard-rank {
background: var(--color-aged-amber);
color: #fff;
}
.partner-leaderboard-preview .partner-leaderboard-header {
margin-bottom: 12px;
}
.partner-leaderboard-avatar {
position: relative;
width: 40px;
height: 40px;
border-radius: 50%;
background: var(--color-surface-container-low);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.partner-leaderboard-avatar .material-symbols-outlined {
font-size: 22px;
color: var(--color-subtle-gray);
font-variation-settings: 'FILL' 1;
}
.partner-leaderboard-avatar-badge {
position: absolute;
left: -2px;
top: -2px;
min-width: 16px;
height: 16px;
padding: 0 4px;
border-radius: 999px;
background: #9ca3af;
color: #fff;
font-size: 10px;
font-weight: 700;
line-height: 16px;
text-align: center;
box-shadow: 0 0 0 2px #fff;
}
.partner-leaderboard-avatar--rank-1 .partner-leaderboard-avatar-badge {
background: #d4a017;
}
.partner-leaderboard-avatar--rank-2 .partner-leaderboard-avatar-badge {
background: #9ca3af;
}
.partner-leaderboard-avatar--rank-3 .partner-leaderboard-avatar-badge {
background: #cd7f32;
}
.partner-leaderboard-info {
flex: 1;
min-width: 0;
}
.partner-leaderboard-stat {
text-align: right;
flex-shrink: 0;
}
/* ── Weekly report ── */
.partner-weekly-page {
padding: 0 20px 24px;
display: flex;
flex-direction: column;
gap: 16px;
}
.partner-weekly-title-section {
display: flex;
flex-direction: column;
gap: 8px;
}
.partner-weekly-title-section h2 {
font-size: 20px;
line-height: 28px;
font-weight: 600;
color: var(--color-ink-black, #1a1a1a);
}
.partner-weekly-tabs {
display: flex;
gap: 4px;
overflow-x: auto;
padding-bottom: 4px;
-ms-overflow-style: none;
scrollbar-width: none;
}
.partner-weekly-tabs::-webkit-scrollbar {
display: none;
}
.partner-weekly-tab {
flex: none;
padding: 8px 16px;
border: none;
border-radius: 12px;
background: var(--color-surface-container, #efeeec);
color: var(--color-on-surface-variant, #5a413f);
font-size: 12px;
font-weight: 500;
letter-spacing: 0.05em;
cursor: pointer;
white-space: nowrap;
}
.partner-weekly-tab.active {
background: var(--color-heritage-red);
color: #fff;
box-shadow: 0 2px 8px rgba(166, 29, 36, 0.25);
}
.partner-weekly-state {
padding: 24px 0;
text-align: center;
}
.partner-weekly-hero {
position: relative;
overflow: hidden;
border-radius: 12px;
background: #fff;
padding: 16px;
border: 1px solid rgba(166, 29, 36, 0.05);
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
}
.partner-weekly-hero-top {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
}
.partner-weekly-hero-label {
font-size: 12px;
font-weight: 500;
letter-spacing: 0.05em;
text-transform: uppercase;
color: var(--color-subtle-gray);
}
.partner-weekly-hero-gmv {
margin-top: 4px;
font-size: 32px;
line-height: 40px;
font-weight: 700;
letter-spacing: -0.02em;
color: var(--color-heritage-red);
}
.partner-weekly-growth-badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
border-radius: 999px;
font-size: 12px;
font-weight: 500;
}
.partner-weekly-growth-badge .material-symbols-outlined {
font-size: 14px;
}
.partner-weekly-growth-badge--up {
background: rgba(45, 106, 79, 0.1);
color: var(--color-success-green, #2d6a4f);
}
.partner-weekly-growth-badge--down {
background: rgba(186, 26, 26, 0.1);
color: var(--color-error, #ba1a1a);
}
.partner-weekly-hero-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid var(--color-surface-container-highest, #e3e2e0);
}
.partner-weekly-stat-value {
margin-top: 4px;
font-size: 18px;
line-height: 26px;
font-weight: 600;
color: var(--color-ink-black, #1a1a1a);
}
.partner-weekly-stat-sub {
margin-left: 4px;
font-size: 12px;
font-weight: 500;
color: var(--color-subtle-gray);
}
.partner-weekly-card {
background: #fff;
border-radius: 12px;
padding: 16px;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
display: flex;
flex-direction: column;
gap: 12px;
}
.partner-weekly-card-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 8px;
}
.partner-weekly-card-title {
display: flex;
align-items: center;
gap: 8px;
}
.partner-weekly-icon-amber {
color: var(--color-aged-amber);
font-variation-settings: 'FILL' 1;
}
.partner-weekly-target {
font-size: 18px;
font-weight: 600;
color: var(--color-aged-amber);
}
.partner-weekly-target-sub {
font-size: 12px;
font-weight: 500;
color: var(--color-subtle-gray);
}
.partner-weekly-progress-track {
position: relative;
height: 12px;
width: 100%;
border-radius: 999px;
background: var(--color-surface-container-highest, #e3e2e0);
overflow: hidden;
}
.partner-weekly-progress-bar {
height: 100%;
border-radius: 999px;
background: linear-gradient(90deg, var(--color-heritage-red), var(--color-aged-amber));
transition: width 0.6s ease;
}
.partner-weekly-progress-hint {
font-style: italic;
}
.partner-weekly-chart {
display: flex;
flex-direction: column;
gap: 8px;
}
.partner-weekly-chart-bars {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 8px;
height: 96px;
padding: 0 8px;
}
.partner-weekly-chart-bar {
flex: 1;
max-width: 16px;
border-radius: 999px 999px 0 0;
background: rgba(166, 29, 36, 0.45);
min-height: 8px;
}
.partner-weekly-chart-bar--peak {
background: var(--color-aged-amber);
box-shadow: 0 2px 6px rgba(255, 191, 0, 0.35);
}
.partner-weekly-chart-labels {
display: flex;
justify-content: space-between;
gap: 4px;
font-size: 10px;
color: var(--color-subtle-gray);
padding: 0 4px;
}
.partner-weekly-chart-labels span {
flex: 1;
text-align: center;
}
.partner-weekly-rank-section {
display: flex;
flex-direction: column;
gap: 8px;
}
.partner-weekly-link {
display: inline-flex;
align-items: center;
gap: 2px;
border: none;
background: none;
padding: 0;
font-size: 12px;
font-weight: 500;
color: var(--color-heritage-red);
cursor: pointer;
}
.partner-weekly-link .material-symbols-outlined {
font-size: 14px;
}
.partner-weekly-rank-list {
display: flex;
flex-direction: column;
gap: 8px;
}
.partner-weekly-rank-row {
display: flex;
align-items: center;
gap: 12px;
padding: 8px;
border-radius: 12px;
background: #fff;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
}
.partner-weekly-rank-row--first {
border-left: 4px solid var(--color-aged-amber);
}
.partner-weekly-rank-badge {
width: 40px;
height: 40px;
border-radius: 50%;
background: var(--color-surface-container, #efeeec);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
font-size: 18px;
font-weight: 600;
font-style: italic;
color: var(--color-subtle-gray);
}
.partner-weekly-rank-row--first .partner-weekly-rank-badge {
background: rgba(255, 191, 0, 0.1);
color: var(--color-aged-amber);
font-style: normal;
}
.partner-weekly-rank-row--first .partner-weekly-rank-badge .material-symbols-outlined {
font-variation-settings: 'FILL' 1;
}
.partner-weekly-rank-info {
flex: 1;
min-width: 0;
}
.partner-weekly-rank-name {
font-size: 16px;
font-weight: 600;
color: var(--color-ink-black, #1a1a1a);
}
.partner-weekly-rank-amount {
font-size: 16px;
font-weight: 600;
color: var(--color-heritage-red);
flex-shrink: 0;
}
.partner-weekly-rank-row:not(.partner-weekly-rank-row--first) .partner-weekly-rank-amount {
color: var(--color-ink-black, #1a1a1a);
}
.partner-weekly-empty {
padding: 12px 0;
}
.partner-weekly-insight {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 16px;
border-radius: 12px;
background: var(--color-surface-container-low, #f4f3f1);
border: 2px dashed rgba(166, 29, 36, 0.1);
}
.partner-weekly-insight .material-symbols-outlined {
color: var(--color-heritage-red);
font-variation-settings: 'FILL' 1;
flex-shrink: 0;
}
.partner-weekly-insight .headline-md {
margin-bottom: 4px;
}
/* ── Partner bottom tabbar(锁定尺寸,仅切换颜色)── */
nav.app-tabbar {
display: flex;
flex-direction: row;
align-items: stretch;
justify-content: stretch;
padding: 0;
padding-bottom: env(safe-area-inset-bottom, 0px);
height: calc(56px + env(safe-area-inset-bottom, 0px));
box-sizing: border-box;
}
nav.app-tabbar .app-tabbar-item {
flex: 1 1 0;
min-width: 0;
max-width: 33.333%;
height: 56px;
padding: 6px 0 4px;
border-radius: 0;
gap: 2px;
color: var(--color-subtle-gray);
text-decoration: none;
transition: color 0.15s ease;
transform: none;
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
user-select: none;
}
nav.app-tabbar .app-tabbar-item.active {
color: var(--color-heritage-red);
}
nav.app-tabbar .app-tabbar-item:active,
nav.app-tabbar .app-tabbar-item:focus,
nav.app-tabbar .app-tabbar-item:focus-visible {
transform: none;
outline: none;
}
nav.app-tabbar .app-tabbar-icon {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
width: 24px;
height: 24px;
font-size: 24px;
line-height: 1;
overflow: hidden;
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
nav.app-tabbar .app-tabbar-label {
display: block;
flex-shrink: 0;
width: 100%;
height: 14px;
line-height: 14px;
margin: 0;
padding: 0 1px;
font-size: 11px;
font-weight: 500;
letter-spacing: 0;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
box-sizing: border-box;
}
/* ── Store create stepper ── */
.partner-page-sticky {
min-height: 100vh;
padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
background: var(--color-surface);
}
.partner-page-sticky--tabbar {
padding-bottom: calc(88px + 56px + env(safe-area-inset-bottom, 0px));
}
.partner-sticky-footer--above-tabbar {
bottom: calc(56px + env(safe-area-inset-bottom, 0px));
z-index: 110;
}
.partner-stepper {
--step-circle-size: 32px;
padding: 16px var(--space-page) 0;
margin-bottom: var(--space-lg);
}
.partner-stepper-inner {
position: relative;
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.partner-stepper-line {
position: absolute;
top: calc(var(--step-circle-size) / 2);
left: calc(100% / 6);
width: calc(100% * 2 / 3);
height: 2px;
background: var(--color-surface-container-highest);
z-index: 0;
transform: translateY(-50%);
pointer-events: none;
}
.partner-stepper-line-fill {
height: 100%;
background: var(--color-heritage-red);
transition: width 0.4s;
}
.partner-step {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
z-index: 1;
min-width: 0;
}
.partner-step-circle {
width: var(--step-circle-size);
height: var(--step-circle-size);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-family: var(--font-label);
font-size: 12px;
font-weight: 700;
background: var(--color-surface-container-highest);
color: var(--color-subtle-gray);
flex-shrink: 0;
box-sizing: border-box;
}
.partner-step-circle--sm {
--step-circle-size: 24px;
width: 24px;
height: 24px;
font-size: 11px;
}
.partner-step-circle--active {
background: var(--color-heritage-red);
color: #fff;
box-shadow: 0 4px 12px rgba(166, 29, 36, 0.2), 0 0 0 4px rgba(166, 29, 36, 0.1);
}
.partner-step-circle--done {
background: var(--color-heritage-red);
color: #fff;
}
.partner-step-label {
font-family: var(--font-label);
font-size: 12px;
color: var(--color-subtle-gray);
}
.partner-step-label--active {
color: var(--color-heritage-red);
font-weight: 600;
}
.partner-form-card {
background: var(--color-card);
border-radius: var(--radius-md);
padding: var(--space-md);
margin: 0 var(--space-page) var(--space-md);
box-shadow: var(--shadow-card);
border: 1px solid rgba(226, 190, 188, 0.1);
}
.partner-section-title {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: var(--space-md);
}
.partner-section-bar {
width: 4px;
height: 20px;
background: var(--color-heritage-red);
border-radius: 2px;
}
.partner-field {
margin-bottom: var(--space-md);
}
.partner-field label {
display: block;
font-family: var(--font-label);
font-size: 12px;
color: var(--color-on-surface-variant);
margin-bottom: 4px;
}
.partner-field-input {
display: flex;
align-items: center;
border: 1px solid rgba(226, 190, 188, 0.3);
border-radius: 8px;
background: var(--color-surface-container-low);
padding: 0 12px;
min-height: 48px;
transition: border-color 0.2s, box-shadow 0.2s;
}
.partner-field-input:focus-within {
border-color: var(--color-heritage-red);
box-shadow: 0 0 0 1px rgba(166, 29, 36, 0.1);
}
.partner-field-input input,
.partner-field-input textarea {
flex: 1;
border: none;
background: transparent;
padding: 12px 0;
font-size: 14px;
color: var(--color-on-surface);
}
.partner-field-input input:focus,
.partner-field-input textarea:focus { outline: none; }
.partner-field-input .material-symbols-outlined {
color: var(--color-subtle-gray);
font-size: 20px;
margin-right: 8px;
}
.partner-field textarea {
width: 100%;
padding: 12px;
border: 1px solid rgba(226, 190, 188, 0.3);
border-radius: 8px;
background: var(--color-surface-container-low);
font-size: 14px;
resize: none;
}
.partner-field textarea:focus {
outline: none;
border-color: var(--color-heritage-red);
}
.partner-info-banner {
margin: 0 var(--space-page) var(--space-md);
padding: var(--space-md);
border-radius: var(--radius-md);
background: rgba(166, 29, 36, 0.05);
border: 1px solid rgba(166, 29, 36, 0.1);
display: flex;
gap: var(--space-md);
align-items: flex-start;
}
.partner-upload-dashed {
width: 100%;
border: none;
background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' rx='12' ry='12' stroke='%23A61D244D' stroke-width='2' stroke-dasharray='8%2c 8'/%3e%3c/svg%3e");
border-radius: 12px;
background-color: var(--color-surface-container-low);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
cursor: pointer;
color: var(--color-primary);
padding: 24px;
}
.partner-upload-dashed--wide { aspect-ratio: 16 / 9; }
.partner-upload-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.partner-upload-grid .partner-upload-dashed {
aspect-ratio: 1;
padding: 12px;
font-size: 10px;
}
.partner-upload-dashed--compact {
padding: 12px;
font-size: 10px;
aspect-ratio: 1;
}
.partner-wechat-auth-hint {
margin-bottom: 12px;
padding: 12px 14px;
border-radius: 12px;
background: rgba(166, 29, 36, 0.08);
border: 1px solid rgba(166, 29, 36, 0.15);
}
.partner-oss-upload-input {
position: absolute;
width: 1px;
height: 1px;
opacity: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}
.partner-upload-preview {
position: relative;
display: block;
width: 100%;
border: none;
padding: 0;
background: transparent;
border-radius: 12px;
overflow: hidden;
cursor: pointer;
}
.partner-upload-preview--wide {
aspect-ratio: 16 / 9;
}
.partner-upload-preview img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.partner-upload-preview-mask {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
background: rgba(0, 0, 0, 0.35);
color: #fff;
opacity: 0;
transition: opacity 0.2s ease;
}
.partner-upload-preview:hover .partner-upload-preview-mask,
.partner-upload-preview:focus-within .partner-upload-preview-mask {
opacity: 1;
}
.partner-upload-file {
display: flex;
align-items: center;
gap: 12px;
width: 100%;
min-height: 96px;
padding: 16px;
border-radius: 12px;
background-color: var(--color-surface-container-low);
border: 1px solid rgba(166, 29, 36, 0.2);
cursor: pointer;
text-align: left;
}
.partner-region-trigger {
width: 100%;
justify-content: flex-start;
text-align: left;
}
.partner-region-chevron {
margin-left: auto;
}
.partner-region-overlay {
position: fixed;
inset: 0;
z-index: 10000;
background: rgba(0, 0, 0, 0.45);
display: flex;
align-items: flex-end;
justify-content: center;
padding-bottom: env(safe-area-inset-bottom, 0px);
}
.partner-region-sheet {
width: 100%;
max-width: 480px;
max-height: min(78vh, 640px);
background: var(--color-surface);
border-radius: 16px 16px 0 0;
display: flex;
flex-direction: column;
overflow: hidden;
}
.partner-region-sheet-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 16px;
border-bottom: 1px solid var(--color-outline-variant);
flex-shrink: 0;
}
.partner-region-sheet-btn {
border: none;
background: transparent;
color: var(--color-on-surface-variant);
font-size: 14px;
padding: 8px;
min-width: 48px;
}
.partner-region-sheet-btn--primary {
color: var(--color-primary);
font-weight: 600;
}
.partner-region-sheet-btn--primary:disabled {
opacity: 0.4;
}
.partner-region-steps {
display: flex;
gap: 8px;
padding: 12px 16px 0;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
flex-shrink: 0;
}
.partner-region-step {
display: inline-flex;
align-items: center;
gap: 6px;
border: 1px solid var(--color-outline-variant);
border-radius: 999px;
padding: 6px 12px;
background: var(--color-surface-container-low);
color: var(--color-on-surface-variant);
font-size: 12px;
white-space: nowrap;
}
.partner-region-step--active {
border-color: var(--color-primary);
color: var(--color-primary);
background: rgba(166, 29, 36, 0.08);
}
.partner-region-step--done {
color: var(--color-on-surface);
}
.partner-region-step-index {
width: 18px;
height: 18px;
border-radius: 50%;
display: inline-flex;
align-items: center;
justify-content: center;
background: var(--color-surface-container-highest);
font-size: 11px;
font-weight: 700;
}
.partner-region-step--active .partner-region-step-index {
background: var(--color-primary);
color: #fff;
}
.partner-region-breadcrumb {
padding: 8px 16px 0;
flex-shrink: 0;
}
.partner-region-list {
flex: 1;
min-height: 0;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
touch-action: pan-y;
padding: 8px 0 calc(12px + env(safe-area-inset-bottom, 0px));
}
.partner-region-columns {
display: none;
}
.partner-region-column {
overflow-y: auto;
border-right: 1px solid var(--color-outline-variant);
}
.partner-region-column:last-child {
border-right: none;
}
.partner-region-item {
display: block;
width: 100%;
border: none;
background: transparent;
text-align: left;
padding: 14px 16px;
font-size: 15px;
color: var(--color-on-surface);
}
.partner-region-item--active {
color: var(--color-primary);
background: rgba(166, 29, 36, 0.08);
font-weight: 600;
}
.partner-sticky-footer {
position: fixed;
left: 0;
right: 0;
bottom: 0;
width: 100%;
max-width: 480px;
margin: 0 auto;
transform: none;
background: rgba(250, 249, 247, 0.96);
backdrop-filter: blur(8px);
border-top: 1px solid rgba(226, 190, 188, 0.2);
box-shadow: 0 -4px 20px rgba(166, 29, 36, 0.05);
padding: 16px var(--space-page) calc(16px + env(safe-area-inset-bottom, 0px));
/* 高于 .app-tabbar(100),防止偶发叠层遮挡「下一步/提交」 */
z-index: 110;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
box-sizing: border-box;
}
.partner-sticky-footer .partner-btn-primary {
flex: 2;
width: auto;
min-height: 48px;
padding: 12px 16px;
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
}
.partner-sticky-footer .partner-btn-outline {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}
/* ── Store list ── */
.partner-store-page {
padding-bottom: 96px;
}
.partner-page-title-block {
padding: 0 var(--space-page) 8px;
}
.partner-page-title-block h2 {
font-family: var(--font-headline);
font-size: 20px;
font-weight: 600;
color: var(--color-ink-black);
}
.partner-sticky-filter {
position: sticky;
top: 0;
z-index: 40;
background: rgba(250, 249, 247, 0.95);
backdrop-filter: blur(8px);
padding: 16px var(--space-page);
border-bottom: 1px solid var(--color-surface-container);
}
.partner-search {
position: relative;
margin-bottom: 16px;
}
.partner-search .material-symbols-outlined {
position: absolute;
left: 12px;
top: 50%;
transform: translateY(-50%);
color: var(--color-subtle-gray);
font-size: 20px;
}
.partner-search input {
width: 100%;
height: 44px;
padding: 0 16px 0 40px;
border: none;
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
font-size: 14px;
}
.partner-search input:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
}
.partner-chips {
display: flex;
gap: 8px;
overflow-x: auto;
scrollbar-width: none;
padding-bottom: 4px;
}
.partner-chips::-webkit-scrollbar { display: none; }
.partner-chip {
flex-shrink: 0;
padding: 6px 16px;
border: none;
border-radius: var(--radius-full);
background: var(--color-surface-container-highest);
color: var(--color-on-surface-variant);
font-family: var(--font-label);
font-size: 12px;
font-weight: 500;
cursor: pointer;
}
.partner-chip.active {
background: var(--color-heritage-red);
color: #fff;
}
.partner-store-filter-row {
display: flex;
align-items: center;
gap: 10px;
}
.partner-store-filter-label {
flex-shrink: 0;
font-family: var(--font-label);
font-size: 13px;
font-weight: 500;
color: var(--color-on-surface-variant);
}
.partner-store-filter-select {
flex: 1;
height: 40px;
padding: 0 12px;
border: 1px solid var(--color-outline-variant);
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
font-size: 14px;
color: var(--color-ink-black);
}
.partner-store-filter-select:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(166, 29, 36, 0.2);
}
.partner-store-card-main {
flex: 1;
min-width: 0;
padding-right: 8px;
}
.partner-store-card-badge {
flex-shrink: 0;
white-space: nowrap;
}
.partner-store-card-actions--v3416 {
align-items: center;
flex-wrap: wrap;
}
.partner-store-card-actions--v3416 > .partner-store-switch {
flex: 1 1 auto;
min-width: 140px;
}
.partner-store-card-actions--v3416 > .partner-store-close-btn {
flex: 0 0 auto;
}
.partner-store-card-actions--v3416 > .partner-menu-icon {
flex: 0 0 auto;
margin-left: auto;
}
.partner-store-switch {
display: inline-flex;
align-items: center;
gap: 10px;
cursor: pointer;
font-family: var(--font-label);
font-size: 12px;
color: var(--color-on-surface-variant);
user-select: none;
}
.partner-store-switch input {
position: absolute;
opacity: 0;
width: 0;
height: 0;
}
.partner-store-switch-track {
position: relative;
width: 44px;
height: 24px;
border-radius: 999px;
background: var(--color-surface-container-highest);
transition: background 0.2s ease;
flex-shrink: 0;
}
.partner-store-switch-track::after {
content: '';
position: absolute;
top: 2px;
left: 2px;
width: 20px;
height: 20px;
border-radius: 50%;
background: #fff;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
transition: transform 0.2s ease;
}
.partner-store-switch input:checked + .partner-store-switch-track {
background: var(--color-success-green);
}
.partner-store-switch input:checked + .partner-store-switch-track::after {
transform: translateX(20px);
}
.partner-store-switch--disabled {
opacity: 0.45;
cursor: not-allowed;
}
.partner-store-close-btn {
flex: 0 0 auto !important;
padding: 8px 12px !important;
border: 1px solid rgba(166, 29, 36, 0.35);
background: transparent;
color: var(--color-heritage-red);
font-weight: 500;
}
.partner-store-close-btn:disabled {
opacity: 0.45;
cursor: not-allowed;
}
.partner-store-card {
background: var(--color-card);
border-radius: var(--radius-md);
padding: 16px;
margin: 0 var(--space-page) var(--space-md);
box-shadow: var(--shadow-card);
border: 1px solid rgba(166, 29, 36, 0.05);
display: block;
color: inherit;
}
.partner-store-card--dim { opacity: 0.7; }
.partner-store-card-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
}
.partner-store-card-hit {
display: block;
width: 100%;
color: inherit;
text-decoration: none;
}
.partner-audit-result {
margin: 48px var(--space-page) 0;
padding: 32px 24px;
text-align: center;
background: var(--color-card);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
}
.partner-audit-result-icon {
width: 72px;
height: 72px;
margin: 0 auto 16px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
background: rgba(42, 110, 187, 0.12);
color: var(--color-status-blue);
}
.partner-audit-result-icon .material-symbols-outlined {
font-size: 36px;
}
.partner-status-pill {
padding: 4px 8px;
border-radius: var(--radius-full);
font-family: var(--font-label);
font-size: 12px;
font-weight: 500;
}
.partner-status-pill--open {
background: rgba(45, 106, 79, 0.1);
color: var(--color-success-green);
}
.partner-status-pill--paused {
background: rgba(255, 191, 0, 0.1);
color: var(--color-secondary);
}
.partner-status-pill--auditing {
background: rgba(42, 110, 187, 0.12);
color: var(--color-status-blue);
}
.partner-status-pill--closed {
background: var(--color-surface-container);
color: var(--color-subtle-gray);
}
.partner-store-card-actions {
display: flex;
gap: 8px;
padding-top: 16px;
border-top: 1px solid var(--color-surface-container);
}
.partner-store-card-actions button {
flex: 1;
padding: 8px;
border-radius: 8px;
font-family: var(--font-label);
font-size: 12px;
cursor: pointer;
}
.partner-fab-link {
display: block;
margin: 0 var(--space-page) var(--space-md);
}
.partner-onboard-cs-card {
text-align: center;
}
.partner-onboard-cs-qr {
display: block;
width: min(220px, 70vw);
height: auto;
margin: 0 auto 16px;
border-radius: 8px;
background: #fff;
border: 1px solid var(--color-surface-container);
}
.partner-onboard-cs-check {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin-top: 8px;
font-family: var(--font-label);
font-size: 14px;
color: var(--color-ink-black);
cursor: pointer;
text-align: left;
}
.partner-onboard-cs-check input {
width: 18px;
height: 18px;
flex-shrink: 0;
}
/* ── Store detail ── */
.partner-detail-page {
padding-bottom: 96px;
}
.partner-status-toggle {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.partner-status-toggle button {
padding: 8px;
border-radius: 8px;
border: 1px solid var(--color-outline-variant);
background: transparent;
color: var(--color-on-surface-variant);
font-size: 14px;
cursor: pointer;
}
.partner-status-toggle button.active {
background: var(--color-heritage-red);
color: #fff;
border-color: var(--color-heritage-red);
}
.partner-cover {
position: relative;
aspect-ratio: 16 / 9;
border-radius: var(--radius-md);
overflow: hidden;
margin-bottom: 24px;
border: 1px solid rgba(226, 190, 188, 0.2);
background: var(--color-surface-container);
}
.partner-cover .app-image,
.partner-cover img {
width: 100%;
height: 100%;
object-fit: cover;
}
.partner-photo-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12px;
}
.partner-photo-add {
aspect-ratio: 1;
border: 2px dashed var(--color-outline-variant);
border-radius: 8px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4px;
color: var(--color-subtle-gray);
background: none;
cursor: pointer;
}
.partner-save-footer {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: 480px;
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(12px);
border-top: 1px solid rgba(226, 190, 188, 0.2);
padding: 16px var(--space-page) calc(16px + env(safe-area-inset-bottom, 0px));
z-index: 50;
display: flex;
gap: 16px;
}
.partner-save-footer button {
height: 48px;
border-radius: var(--radius-md);
font-size: 16px;
font-weight: 500;
cursor: pointer;
}
.partner-save-cancel {
flex: 1;
border: 1px solid var(--color-outline-variant);
background: transparent;
color: var(--color-on-surface-variant);
}
.partner-save-submit {
flex: 2;
border: none;
background: var(--color-heritage-red);
color: #fff;
box-shadow: 0 4px 12px rgba(166, 29, 36, 0.2);
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.partner-toast {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(0, 0, 0, 0.75);
color: #fff;
padding: 12px 24px;
border-radius: 8px;
font-size: 14px;
z-index: 10001;
max-width: min(320px, calc(100vw - 40px));
text-align: center;
line-height: 1.5;
}
.partner-toast--error {
background: rgba(166, 29, 36, 0.92);
}
/* ── Orders ── */
.partner-orders-page {
padding-bottom: 32px;
}
.partner-segment {
display: flex;
background: var(--color-surface-container-highest);
border-radius: var(--radius-md);
padding: 4px;
margin: 0 var(--space-page) var(--space-md);
}
.partner-segment button {
flex: 1;
padding: 8px;
border: none;
border-radius: 8px;
font-family: var(--font-headline);
font-size: 16px;
background: transparent;
color: var(--color-on-surface-variant);
cursor: pointer;
}
.partner-segment button.active {
background: var(--color-card);
color: var(--color-heritage-red);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
}
.partner-filter-row {
display: flex;
gap: 8px;
overflow-x: auto;
scrollbar-width: none;
padding: 0 var(--space-page) 8px;
}
.partner-filter-row::-webkit-scrollbar { display: none; }
.partner-filter-tab {
flex-shrink: 0;
padding: 4px 16px;
border: none;
background: none;
font-family: var(--font-label);
font-size: 12px;
color: var(--color-on-surface-variant);
cursor: pointer;
border-bottom: 2px solid transparent;
}
.partner-filter-tab.active {
color: var(--color-heritage-red);
border-bottom-color: var(--color-heritage-red);
}
.partner-order-card {
background: var(--color-card);
border-radius: var(--radius-md);
padding: 16px;
margin: 0 var(--space-page) 16px;
box-shadow: var(--shadow-card);
border: 1px solid rgba(166, 29, 36, 0.05);
display: block;
color: inherit;
}
.partner-order-card-top {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12px;
}
.partner-order-product {
display: flex;
gap: 16px;
margin-bottom: 16px;
}
.partner-order-product-img {
width: 80px;
height: 80px;
border-radius: 8px;
background: var(--color-surface-container);
object-fit: cover;
flex-shrink: 0;
}
.partner-benefit-tag {
display: inline-flex;
align-items: center;
gap: 4px;
margin-top: 8px;
padding: 2px 8px;
background: rgba(255, 191, 0, 0.1);
border: 1px solid rgba(255, 191, 0, 0.2);
border-radius: 4px;
color: var(--color-aged-amber);
font-family: var(--font-label);
font-size: 12px;
}
.partner-order-address {
display: flex;
gap: 8px;
padding: 12px 0;
border-top: 1px solid var(--color-surface-container-low);
font-size: 14px;
color: var(--color-on-surface-variant);
}
.partner-order-commission {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
padding-top: 12px;
border-top: 1px solid var(--color-surface-container-low);
text-align: center;
}
.partner-order-commission > div:nth-child(2) {
border-left: 1px solid var(--color-surface-container-low);
border-right: 1px solid var(--color-surface-container-low);
}
/* ── Order detail ── */
.partner-order-detail { padding-bottom: 88px; }
.partner-status-banner {
background: var(--color-heritage-red);
color: #fff;
padding: 24px var(--space-page);
position: relative;
overflow: hidden;
}
.partner-status-banner::before {
content: '';
position: absolute;
right: -20%;
top: -20%;
width: 256px;
height: 256px;
border: 20px solid rgba(255, 255, 255, 0.1);
border-radius: 50%;
}
.partner-timeline {
margin: var(--space-md) var(--space-page);
padding: var(--space-page);
background: var(--color-card);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
position: relative;
}
.partner-timeline-line {
position: absolute;
left: 23px;
top: 28px;
bottom: 28px;
width: 2px;
background: var(--color-surface-container-highest);
}
.partner-timeline-item {
display: flex;
gap: 16px;
padding-bottom: 24px;
position: relative;
}
.partner-timeline-item:last-child { padding-bottom: 0; }
.partner-timeline-dot {
width: 24px;
height: 24px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
z-index: 1;
}
.partner-timeline-dot--done {
background: var(--color-heritage-red);
color: #fff;
}
.partner-timeline-dot--done .material-symbols-outlined { font-size: 14px; font-variation-settings: 'FILL' 1; }
.partner-timeline-dot--current {
background: var(--color-heritage-red);
border: 4px solid #ffdad7;
}
.partner-timeline-dot--current::after {
content: '';
width: 8px;
height: 8px;
background: #fff;
border-radius: 50%;
}
.partner-timeline-dot--pending {
background: var(--color-surface-container-highest);
}
.partner-timeline-dot--pending::after {
content: '';
width: 8px;
height: 8px;
background: var(--color-subtle-gray);
border-radius: 50%;
}
.partner-detail-section {
margin: var(--space-md) var(--space-page);
padding: var(--space-page);
background: var(--color-card);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
}
.partner-detail-section--accent {
border-left: 4px solid var(--color-heritage-red);
}
.partner-info-row {
display: flex;
justify-content: space-between;
align-items: flex-start;
padding: 6px 0;
font-size: 14px;
}
.partner-order-footer {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: 480px;
background: rgba(255, 255, 255, 0.8);
backdrop-filter: blur(12px);
border-top: 1px solid var(--color-surface-container-highest);
padding: 16px var(--space-page) calc(16px + env(safe-area-inset-bottom, 0px));
z-index: 50;
display: flex;
align-items: center;
justify-content: space-between;
}
.partner-dev-tools {
padding: 8px var(--space-page);
border-top: 1px dashed var(--color-outline-variant);
background: var(--color-surface-container-low);
}
.partner-dev-tools summary {
font-size: 11px;
color: var(--color-subtle-gray);
cursor: pointer;
padding: 4px 0;
}
.partner-dev-tools button {
width: 100%;
margin-top: 4px;
padding: 6px;
font-size: 11px;
border: 1px solid var(--color-outline-variant);
border-radius: 4px;
background: var(--color-card);
cursor: pointer;
}
/* ── Center ── */
.partner-center-page { padding-bottom: 96px; }
.partner-profile-card {
margin: var(--space-md) var(--space-page);
padding: var(--space-md);
background: var(--color-card);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
border: 1px solid rgba(166, 29, 36, 0.05);
display: flex;
gap: var(--space-md);
align-items: center;
}
.partner-profile-avatar {
width: 64px;
height: 64px;
border-radius: 50%;
background: var(--color-surface-container-low);
border: 2px solid rgba(166, 29, 36, 0.1);
display: flex;
align-items: center;
justify-content: center;
position: relative;
flex-shrink: 0;
padding: 0;
cursor: pointer;
overflow: hidden;
}
.partner-profile-avatar:disabled {
opacity: 0.7;
cursor: wait;
}
.partner-profile-avatar .material-symbols-outlined {
font-size: 32px;
color: var(--color-subtle-gray);
font-variation-settings: 'FILL' 1;
}
.partner-profile-avatar-img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.partner-profile-avatar-hint {
position: absolute;
left: 0;
right: 0;
bottom: 0;
padding: 2px 0;
font-size: 10px;
font-weight: 600;
line-height: 1.2;
text-align: center;
color: #fff;
background: rgba(166, 29, 36, 0.82);
}
.partner-profile-main {
flex: 1;
min-width: 0;
}
.partner-profile-title-row {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
}
.partner-profile-name {
margin: 0;
font-size: 20px;
font-weight: 700;
line-height: 1.3;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.partner-profile-location {
display: flex;
align-items: center;
gap: 4px;
margin-top: 4px;
color: var(--color-subtle-gray);
}
.partner-role-badge {
flex-shrink: 0;
background: var(--color-secondary-container);
color: var(--color-on-secondary-container);
padding: 4px 8px;
border-radius: 8px;
font-family: var(--font-label);
font-size: 10px;
font-weight: 600;
letter-spacing: 0.02em;
white-space: nowrap;
line-height: 1.2;
}
.partner-assets-section {
margin-top: var(--space-lg);
}
.partner-bills-banner {
margin: 0 var(--space-page) 12px;
padding: 16px;
background: rgba(166, 29, 36, 0.06);
border: 1px solid rgba(166, 29, 36, 0.12);
border-radius: var(--radius-md);
display: flex;
align-items: center;
justify-content: space-between;
color: inherit;
text-decoration: none;
}
.partner-bills-banner-left {
display: flex;
align-items: center;
gap: 12px;
}
.partner-bills-icon {
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(166, 29, 36, 0.1);
display: flex;
align-items: center;
justify-content: center;
color: var(--color-heritage-red);
}
.partner-finance-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 12px;
margin: 0 var(--space-page);
}
.partner-finance-card {
background: var(--color-card);
padding: var(--space-md);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
border: 1px solid rgba(166, 29, 36, 0.05);
text-decoration: none;
color: inherit;
display: block;
}
.partner-finance-card--hero {
grid-column: 1 / -1;
background: linear-gradient(135deg, #a61d24 0%, #820012 100%);
color: #fff;
box-shadow: 0 8px 24px rgba(166, 29, 36, 0.25);
border: none;
padding: 20px 24px;
}
.partner-finance-hero-label {
font-size: 13px;
opacity: 0.88;
margin: 0 0 8px;
}
.partner-finance-hero-amount {
font-size: 32px;
font-weight: 700;
letter-spacing: 0.02em;
margin: 0;
line-height: 1.2;
}
.partner-finance-value {
margin-top: 8px;
font-size: 18px;
font-weight: 700;
color: var(--color-on-surface);
}
.partner-section-head {
display: flex;
align-items: center;
justify-content: space-between;
margin: 0 var(--space-page) 8px;
}
.partner-menu-section .partner-section-head {
margin: 0 0 8px;
}
.partner-menu-item-right {
display: flex;
align-items: center;
gap: 6px;
}
.partner-menu-badge {
font-size: 12px;
font-weight: 600;
color: var(--color-heritage-red);
background: rgba(166, 29, 36, 0.08);
padding: 2px 8px;
border-radius: 999px;
}
.partner-menu-status {
font-size: 12px;
color: #2563eb;
font-weight: 500;
}
.partner-logout-btn {
width: calc(100% - 2 * var(--space-page));
margin: var(--space-lg) var(--space-page) 0;
padding: 16px;
border: 1px solid rgba(166, 29, 36, 0.08);
border-radius: var(--radius-md);
background: var(--color-card);
box-shadow: var(--shadow-card);
color: var(--color-heritage-red);
font-family: var(--font-headline);
font-size: 16px;
font-weight: 600;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
.partner-logout-btn .material-symbols-outlined {
color: var(--color-heritage-red);
}
.partner-center-footer {
text-align: center;
opacity: 0.35;
padding: 24px 0 8px;
}
.partner-menu-section {
margin: var(--space-lg) var(--space-page) 0;
}
.partner-menu-card {
background: var(--color-card);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
border: 1px solid rgba(166, 29, 36, 0.05);
overflow: hidden;
}
.partner-menu-item {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
padding: 16px;
border: none;
border-bottom: 1px solid var(--color-surface-container);
border-radius: 0;
background: transparent;
color: inherit;
font: inherit;
text-align: left;
text-decoration: none;
cursor: pointer;
box-sizing: border-box;
-webkit-appearance: none;
appearance: none;
}
.partner-menu-item:last-child { border-bottom: none; }
.partner-menu-item:active {
background: rgba(166, 29, 36, 0.04);
}
.partner-menu-item-left {
display: flex;
align-items: center;
gap: 12px;
}
.partner-menu-icon {
width: 40px;
height: 40px;
border-radius: 50%;
background: rgba(166, 29, 36, 0.05);
display: flex;
align-items: center;
justify-content: center;
color: var(--color-heritage-red);
}
/* ── Settlement page ── */
.partner-settlement-page {
min-height: 100vh;
padding-bottom: calc(24px + env(safe-area-inset-bottom, 0px));
}
.partner-settlement-body {
padding: 0 var(--space-page) 24px;
}
.partner-settlement-summary {
position: relative;
overflow: hidden;
background: var(--color-heritage-red);
border-radius: var(--radius-md);
padding: 24px;
color: #fff;
box-shadow: 0 8px 32px rgba(166, 29, 36, 0.15);
margin-bottom: var(--space-lg);
}
.partner-settlement-summary-deco {
position: absolute;
top: -24px;
right: -24px;
opacity: 0.1;
}
.partner-settlement-summary-deco .material-symbols-outlined {
font-size: 160px;
font-variation-settings: 'wght' 700;
}
.partner-settlement-summary-label {
position: relative;
z-index: 1;
text-align: center;
font-family: var(--font-label);
font-size: 12px;
letter-spacing: 0.1em;
text-transform: uppercase;
opacity: 0.8;
margin-bottom: 8px;
}
.partner-settlement-summary-amount {
position: relative;
z-index: 1;
display: flex;
align-items: baseline;
justify-content: center;
gap: 4px;
font-family: var(--font-headline);
font-size: 32px;
font-weight: 700;
letter-spacing: -0.02em;
margin-bottom: 24px;
}
.partner-settlement-currency {
font-size: 18px;
font-weight: 600;
}
.partner-settlement-summary-grid {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 1fr auto 1fr;
gap: 16px;
padding-top: 24px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
}
.partner-settlement-summary-sub {
font-family: var(--font-label);
font-size: 12px;
opacity: 0.7;
margin-bottom: 4px;
text-align: center;
}
.partner-settlement-summary-value {
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
text-align: center;
}
.partner-settlement-summary-value--accent {
color: var(--color-secondary-fixed);
}
.partner-settlement-summary-divider {
width: 1px;
background: rgba(255, 255, 255, 0.1);
}
.partner-settlement-filters {
display: flex;
gap: 12px;
margin-bottom: var(--space-md);
}
.partner-settlement-month,
.partner-settlement-status-btn {
height: 48px;
border: none;
border-radius: var(--radius-md);
background: var(--color-surface-container-low);
font-family: var(--font-body);
font-size: 14px;
color: var(--color-on-surface-variant);
}
.partner-settlement-month {
flex: 1;
padding: 0 16px;
appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='%23999'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 8px center;
background-size: 20px;
}
.partner-settlement-status-btn {
display: flex;
align-items: center;
gap: 8px;
padding: 0 16px;
cursor: pointer;
}
.partner-settlement-status-btn .material-symbols-outlined {
color: var(--color-heritage-red);
font-size: 20px;
}
.partner-settlement-chips {
display: flex;
gap: 8px;
overflow-x: auto;
margin-bottom: var(--space-md);
padding-bottom: 4px;
-ms-overflow-style: none;
scrollbar-width: none;
}
.partner-settlement-chips::-webkit-scrollbar { display: none; }
.partner-settlement-chip {
flex-shrink: 0;
padding: 6px 16px;
border: 1px solid transparent;
border-radius: var(--radius-full);
background: var(--color-surface-container-high);
color: var(--color-on-surface-variant);
font-family: var(--font-label);
font-size: 12px;
font-weight: 500;
cursor: pointer;
}
.partner-settlement-chip--active {
background: var(--color-heritage-red);
color: #fff;
}
.partner-settlement-list-title {
font-family: var(--font-label);
font-size: 12px;
letter-spacing: 0.05em;
text-transform: uppercase;
color: var(--color-subtle-gray);
margin-bottom: 12px;
padding: 0 4px;
}
.partner-settlement-list {
display: flex;
flex-direction: column;
gap: 12px;
}
.partner-settlement-item {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 16px;
border: 1px solid transparent;
border-radius: var(--radius-md);
background: var(--color-card);
box-shadow: var(--shadow-card);
text-align: left;
cursor: pointer;
color: inherit;
}
.partner-settlement-item:active {
transform: scale(0.98);
border-color: rgba(166, 29, 36, 0.1);
}
.partner-settlement-item-main {
flex: 1;
min-width: 0;
}
.partner-settlement-item-head {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 4px;
}
.partner-settlement-item-no {
font-weight: 600;
font-size: 14px;
}
.partner-settlement-status {
padding: 2px 8px;
border-radius: 6px;
font-family: var(--font-label);
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.02em;
}
.partner-settlement-status--pending {
background: rgba(255, 224, 136, 0.3);
color: var(--color-on-secondary-fixed);
}
.partner-settlement-status--reviewing {
background: rgba(42, 110, 187, 0.12);
color: var(--color-status-blue);
}
.partner-settlement-status--settled {
background: rgba(45, 106, 79, 0.1);
color: var(--color-success-green);
}
.partner-settlement-status--rejected {
background: rgba(166, 29, 36, 0.12);
color: var(--color-heritage-red);
}
.partner-settlement-item-meta {
display: flex;
align-items: center;
gap: 8px;
font-family: var(--font-label);
font-size: 12px;
color: var(--color-subtle-gray);
margin-bottom: 8px;
}
.partner-settlement-item-meta .material-symbols-outlined {
font-size: 14px;
}
.partner-settlement-dot {
width: 4px;
height: 4px;
border-radius: 50%;
background: var(--color-outline-variant);
}
.partner-settlement-item-amount {
font-family: var(--font-headline);
font-size: 18px;
font-weight: 600;
}
.partner-settlement-footer-note {
text-align: center;
padding: 32px 0 8px;
font-family: var(--font-label);
font-size: 12px;
color: var(--color-subtle-gray);
}
/* ── Bills page ── */
.partner-bills-page {
min-height: 100vh;
padding-bottom: calc(160px + env(safe-area-inset-bottom, 0px));
box-sizing: border-box;
}
.partner-bill-stepper {
--step-circle-size: 24px;
padding: 0 var(--space-page);
margin: var(--space-md) 0 var(--space-lg);
}
.partner-bill-stepper .partner-stepper-inner {
position: relative;
display: flex;
align-items: flex-start;
justify-content: space-between;
}
.partner-bill-stepper .partner-step {
flex: 1;
}
.partner-bill-card {
margin: 0 var(--space-page) var(--space-md);
background: var(--color-card);
border-radius: var(--radius-md);
box-shadow: var(--shadow-card);
border: 1px solid rgba(226, 190, 188, 0.1);
overflow: hidden;
}
.partner-bill-card-bar {
height: 8px;
background: var(--color-heritage-red);
}
.partner-bill-amount {
text-align: center;
padding: 24px 0;
border-top: 1px dashed rgba(226, 190, 188, 0.3);
border-bottom: 1px dashed rgba(226, 190, 188, 0.3);
margin: 16px 0;
}
.partner-bill-amount .amount-xl { font-size: 28px; }
.partner-bill-footer {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: 480px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border-top: 1px solid rgba(226, 190, 188, 0.2);
padding: 16px var(--space-page) calc(16px + env(safe-area-inset-bottom, 0px));
z-index: 60;
box-sizing: border-box;
}
.partner-bill-footer .partner-btn-primary {
width: 100%;
min-height: 48px;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
/* ─────────────────────────────────────────────
iOS / Android 机型适配:顶部安全区(刘海 / 状态栏)
viewport-fit=cover 下内容会延伸到状态栏,需为吸顶头部补 inset。
───────────────────────────────────────────── */
.partner-home-header,
.header.app-page-header,
.app-page-header,
.page-header {
padding-top: env(safe-area-inset-top, 0px);
height: auto;
min-height: calc(56px + env(safe-area-inset-top, 0px));
box-sizing: border-box;
}
/* 登录 / 快捷登录页顶部留出状态栏空间,避免品牌区贴到刘海 */
.partner-auth-page {
padding-top: calc(48px + env(safe-area-inset-top, 0px));
}
/* 全屏容器铺满机身背景,安全区外也保持底色一致 */
html,
body {
min-height: 100vh;
min-height: 100dvh;
background: var(--color-background);
}
/* ── 子账号管理 ── */
.partner-staff-card {
display: flex;
align-items: center;
gap: 12px;
padding: 16px;
margin-bottom: 12px;
background: var(--color-surface-container-lowest, #fff);
border-radius: 12px;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.05);
}
.partner-staff-avatar {
width: 48px;
height: 48px;
border-radius: 50%;
background: rgba(166, 29, 36, 0.08);
color: var(--color-heritage-red);
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
flex-shrink: 0;
}
.partner-staff-info {
flex: 1;
min-width: 0;
}
.partner-staff-actions {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 8px;
flex-shrink: 0;
}
.partner-role-badge--subtle {
background: var(--color-surface-container, #efeeec);
color: var(--color-on-surface-variant, #5a413f);
font-size: 10px;
padding: 2px 8px;
border-radius: 999px;
}
.partner-toggle {
width: 48px;
height: 24px;
border-radius: 999px;
border: none;
background: #ccc;
position: relative;
padding: 0;
cursor: pointer;
}
.partner-toggle--on {
background: var(--color-success-green, #2d6a4f);
}
.partner-toggle-thumb {
position: absolute;
top: 4px;
left: 4px;
width: 16px;
height: 16px;
border-radius: 50%;
background: #fff;
transition: transform 0.2s ease;
}
.partner-toggle--on .partner-toggle-thumb {
transform: translateX(24px);
}
.partner-icon-btn {
border: none;
background: transparent;
color: var(--color-outline, #8d706e);
padding: 0;
cursor: pointer;
}
.partner-icon-btn--danger {
color: var(--color-error, #ba1a1a);
}
.partner-fab-round {
position: fixed;
right: 20px;
bottom: calc(24px + env(safe-area-inset-bottom, 0px));
width: 56px;
height: 56px;
border-radius: 50%;
background: var(--color-heritage-red);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 20px rgba(166, 29, 36, 0.3);
text-decoration: none;
z-index: 30;
}
.partner-sub-header {
padding: 12px 20px;
}
.partner-form-label {
display: block;
font-size: 13px;
color: var(--color-on-surface-variant, #5a413f);
margin-bottom: 8px;
}
.partner-form-input-wrap {
position: relative;
}
.partner-form-input-wrap .material-symbols-outlined {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
color: var(--color-outline, #8d706e);
pointer-events: none;
}
.partner-form-section {
margin-bottom: 16px;
}
.partner-proxy-fee-card {
margin-top: 8px;
padding: 16px;
border-radius: 16px;
background: rgba(166, 29, 36, 0.04);
border: 1px solid rgba(166, 29, 36, 0.08);
}
.partner-proxy-fee-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 6px 0;
}
.partner-proxy-fee-row--total {
margin-top: 8px;
padding-top: 12px;
border-top: 1px dashed rgba(166, 29, 36, 0.15);
}
.partner-proxy-mode-tabs {
display: flex;
gap: 8px;
}
.partner-proxy-mode-tab {
flex: 1;
padding: 10px 12px;
border-radius: 12px;
border: 1px solid var(--color-border);
background: #fff;
font-size: 14px;
color: var(--color-ink-black);
}
.partner-proxy-mode-tab.is-active {
border-color: var(--color-heritage-red);
color: var(--color-heritage-red);
background: rgba(166, 29, 36, 0.06);
font-weight: 600;
}
.partner-proxy-auto-receive {
display: flex;
align-items: flex-start;
gap: 8px;
margin: 4px 0 16px;
font-size: 13px;
line-height: 1.45;
color: var(--color-ink-black);
}
.partner-proxy-auto-receive input {
margin-top: 3px;
flex-shrink: 0;
}
.partner-proxy-product-picker {
position: relative;
width: 100%;
text-align: left;
padding: 12px 36px 12px 14px;
border-radius: 12px;
border: 1px solid var(--color-border);
background: #fff;
display: flex;
flex-direction: column;
gap: 4px;
}
.partner-proxy-product-picker-arrow {
position: absolute;
right: 14px;
top: 50%;
transform: translateY(-50%);
font-size: 22px;
color: var(--color-muted, #999);
}
.partner-proxy-product-toolbar {
padding: 0 16px 12px;
display: flex;
flex-direction: column;
gap: 10px;
}
.partner-proxy-product-filters {
display: flex;
gap: 8px;
flex-wrap: wrap;
}
.partner-proxy-product-filter {
border: 1px solid var(--color-border);
background: #fff;
border-radius: 999px;
padding: 4px 12px;
font-size: 12px;
color: var(--color-muted, #888);
}
.partner-proxy-product-filter.is-active {
border-color: var(--color-heritage-red);
color: var(--color-heritage-red);
background: rgba(166, 29, 36, 0.06);
}
.partner-proxy-product-tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-top: 6px;
}
.partner-proxy-tag {
font-size: 11px;
line-height: 16px;
padding: 1px 6px;
border-radius: 4px;
background: rgba(0, 0, 0, 0.04);
color: var(--color-muted, #666);
}
.partner-proxy-product-list {
padding: 0 16px 24px;
display: flex;
flex-direction: column;
gap: 12px;
}
.partner-proxy-product-card {
display: flex;
gap: 12px;
width: 100%;
text-align: left;
padding: 12px;
border-radius: 16px;
border: 1px solid var(--color-border);
background: #fff;
}
.partner-proxy-product-card--active {
border-color: var(--color-heritage-red);
box-shadow: 0 0 0 1px rgba(166, 29, 36, 0.2);
}
.partner-proxy-product-thumb {
width: 72px;
height: 72px;
border-radius: 12px;
overflow: hidden;
background: #f3f1ee;
flex-shrink: 0;
}
.partner-proxy-product-thumb img {
width: 100%;
height: 100%;
object-fit: cover;
}
.partner-proxy-product-thumb-empty {
display: block;
width: 100%;
height: 100%;
background: linear-gradient(135deg, #f3f1ee, #e8e4de);
}
.partner-proxy-product-main {
flex: 1;
min-width: 0;
}
.partner-proxy-product-row {
display: flex;
justify-content: space-between;
gap: 8px;
}
.partner-proxy-product-name {
font-weight: 600;
font-size: 15px;
color: var(--color-ink-black);
}
.partner-proxy-product-price {
color: var(--color-heritage-red);
font-weight: 600;
flex-shrink: 0;
}
.partner-proxy-product-spec,
.partner-proxy-product-benefit {
margin: 4px 0 0;
font-size: 12px;
color: var(--color-muted, #888);
}
.partner-proxy-confirm {
padding-top: 8px;
border-top: 1px dashed rgba(0, 0, 0, 0.08);
}
.partner-warehouse-denied {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
padding: 20px 12px;
}
.partner-warehouse-denied .material-symbols-outlined {
font-size: 36px;
font-variation-settings: 'FILL' 0;
}
.partner-home--flush-top.partner-store-page,
.partner-home--flush-top.partner-center-page,
.partner-home--flush-top.partner-detail-page,
.partner-home--flush-top.partner-page-sticky {
padding-top: 12px;
}
.partner-home--flush-top.partner-page-sticky .partner-stepper {
padding-top: 4px;
}
.partner-home--flush-top .partner-sticky-filter {
padding-top: 12px;
}
.partner-leaderboard-self-tag {
display: inline-block;
margin-left: 6px;
padding: 1px 6px;
font-size: 10px;
font-weight: 700;
color: var(--color-heritage-red);
background: rgba(166, 29, 36, 0.12);
border-radius: 4px;
vertical-align: middle;
}
.partner-order-card-wrap {
margin: 0 var(--space-page) 12px;
}
.partner-order-ship-btn {
display: block;
width: 100%;
margin-top: -4px;
padding: 10px 16px;
border: none;
border-radius: 0 0 var(--radius-md) var(--radius-md);
background: var(--color-heritage-red);
color: #fff;
font-size: 14px;
font-weight: 600;
cursor: pointer;
}
.partner-order-ship-btn:disabled {
opacity: 0.6;
}
.partner-order-footer-actions {
display: flex;
flex-direction: column;
gap: 10px;
width: 100%;
}
.partner-order-ship-btn--footer {
width: 100%;
justify-content: center;
}
.partner-ship-modal-backdrop {
position: fixed;
inset: 0;
z-index: 200;
background: rgba(0, 0, 0, 0.45);
display: flex;
align-items: flex-end;
justify-content: center;
padding: 16px;
}
.partner-ship-modal {
width: 100%;
max-width: 420px;
background: #fff;
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
padding: 20px;
}
.partner-ship-field {
display: flex;
flex-direction: column;
gap: 6px;
margin-top: 12px;
font-size: 13px;
}
.partner-ship-field input {
padding: 10px 12px;
border: 1px solid var(--color-outline-variant);
border-radius: var(--radius-sm);
}
.partner-ship-actions {
display: flex;
gap: 12px;
margin-top: 20px;
}
.partner-ship-actions .partner-btn-secondary,
.partner-ship-actions .partner-btn-primary {
flex: 1;
}
/* 微信 H5 系统标题已展示:隐藏页内重复标题,保留返回键与操作区 */
.app-page-title {
display: none !important;
}
/* 仅含标题的顶栏一并收起,去掉空白条;有返回/操作的顶栏保留 */
header:has(> .app-page-title:only-child),
.header.app-page-header:has(> .app-page-title:only-child),
.app-page-header:has(> .app-page-title:only-child) {
display: none !important;
height: 0 !important;
min-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden;
border: none !important;
box-shadow: none !important;
}
/* ─── 门店套餐 ─── */
.partner-packages-page-header {
display: flex;
align-items: center;
gap: 8px;
padding: 12px var(--space-page) 8px;
background: var(--color-surface);
border-bottom: 1px solid rgba(226, 190, 188, 0.12);
}
.partner-packages-back {
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border: none;
background: transparent;
color: var(--color-on-surface);
padding: 0;
}
.partner-packages-page-main {
padding-bottom: 88px;
}
.partner-packages-form--embedded .partner-packages-item {
margin-bottom: var(--space-md);
box-shadow: none;
border: 1px solid rgba(226, 190, 188, 0.2);
}
.partner-packages-form--embedded .partner-packages-item:last-of-type {
margin-bottom: 0;
}
.partner-packages-item-head {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: var(--space-md);
}
.partner-packages-item--collapsed .partner-packages-item-head {
margin-bottom: 0;
}
.partner-packages-toggle {
display: flex;
align-items: center;
gap: 4px;
border: none;
background: transparent;
padding: 0;
color: inherit;
cursor: pointer;
text-align: left;
flex: 1;
min-width: 0;
}
.partner-packages-toggle .material-symbols-outlined {
font-size: 20px;
color: var(--color-on-surface-variant, #666);
flex-shrink: 0;
}
.partner-packages-toggle .headline-md {
margin: 0;
}
.partner-packages-remove {
border: none;
background: transparent;
color: var(--color-heritage-red);
font-size: 13px;
padding: 4px 0;
}
.partner-packages-add {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: calc(100% - var(--space-page) * 2);
margin: 0 var(--space-page) var(--space-md);
min-height: 48px;
border: 1px dashed rgba(166, 29, 36, 0.35);
border-radius: var(--radius-md);
background: rgba(166, 29, 36, 0.04);
color: var(--color-heritage-red);
font-size: 14px;
font-weight: 600;
}
.partner-packages-add .material-symbols-outlined {
font-size: 20px;
}
.partner-packages-form:not(.partner-packages-form--embedded) .partner-packages-item {
margin-left: var(--space-page);
margin-right: var(--space-page);
}