@import '@dukang/shared-ui/base.css';
html, body, #root {
overflow-x: hidden;
width: 100%;
max-width: 100%;
}
/* ── Partner auth ── */
.partner-auth-page {
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 48px var(--space-page) var(--space-page);
background-color: var(--color-background);
background-image: url("https://www.transparenttextures.com/patterns/natural-paper.png");
}
.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;
color: var(--color-on-surface-variant);
}
.partner-checkbox-row input { margin-top: 2px; accent-color: var(--color-heritage-red); }
.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-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: flex;
gap: 12px;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
padding-bottom: 4px;
margin: 0 calc(-1 * var(--space-md));
padding-left: var(--space-md);
padding-right: var(--space-md);
}
.partner-quick-actions::-webkit-scrollbar { display: none; }
.partner-quick-action {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
flex-shrink: 0;
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);
}
.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;
border-bottom: 1px solid rgba(226, 190, 188, 0.2);
padding-bottom: var(--space-md);
margin-bottom: var(--space-md);
}
.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-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-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-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-info {
flex: 1;
min-width: 0;
}
.partner-leaderboard-stat {
text-align: right;
flex-shrink: 0;
}
/* ── Partner bottom tabbar ── */
.app-tabbar {
display: grid;
grid-template-columns: repeat(3, 1fr);
align-items: stretch;
justify-items: stretch;
padding: 8px 0 calc(8px + env(safe-area-inset-bottom, 0px));
}
.app-tabbar-item {
flex: 1;
min-width: 0;
width: 100%;
padding: 4px 2px;
align-items: center;
justify-content: center;
}
.app-tabbar-label {
max-width: 100%;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* ── Store create stepper ── */
.partner-page-sticky {
min-height: 100vh;
padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px));
background: var(--color-surface);
}
.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-sticky-footer {
position: fixed;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 100%;
max-width: 480px;
background: var(--color-card);
box-shadow: 0 -4px 20px rgba(166, 29, 36, 0.05);
padding: 16px var(--space-page) calc(16px + env(safe-area-inset-bottom, 0px));
z-index: 60;
display: flex;
gap: 8px;
box-sizing: border-box;
}
.partner-sticky-footer .partner-btn-primary {
flex: 2;
min-height: 48px;
padding: 12px 16px;
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
}
.partner-sticky-footer .partner-btn-outline { flex: 1; }
/* ── 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: 56px;
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-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;
margin-bottom: 16px;
}
.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--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);
}
/* ── 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: 200;
}
/* ── 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;
}
.partner-profile-avatar .material-symbols-outlined {
font-size: 32px;
color: var(--color-subtle-gray);
font-variation-settings: 'FILL' 1;
}
.partner-role-badge {
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;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.partner-bills-banner {
margin: 0 var(--space-page) 12px;
padding: 16px;
background: rgba(166, 29, 36, 0.05);
border: 1px solid rgba(166, 29, 36, 0.1);
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);
}
.partner-finance-card--hero {
grid-column: span 2;
background: var(--color-heritage-red);
color: #fff;
box-shadow: 0 8px 24px rgba(166, 29, 36, 0.25);
}
.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;
padding: 16px;
border-bottom: 1px solid var(--color-surface-container);
color: inherit;
text-decoration: none;
}
.partner-menu-item:last-child { border-bottom: none; }
.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);
}
.partner-logout-btn {
width: calc(100% - 40px);
margin: var(--space-lg) var(--space-page);
padding: 16px;
border: none;
border-radius: var(--radius-md);
background: var(--color-card);
box-shadow: var(--shadow-card);
color: var(--color-error);
font-size: 16px;
font-weight: 500;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
}
/* ── 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;
}