/* Shared partner pages and brand themes. Keep the same reading rhythm as the shop. */
body.portal {
  --green: #45627d;
  --mint: #e7edf2;
  background: var(--paper);
  color: var(--ink);
  font: 15px/1.75 "Segoe UI", "Microsoft YaHei UI", "Microsoft YaHei", "PingFang SC", sans-serif;
  margin: 0;
}
.brand .brand-symbol,
.storefront .brand .brand-symbol.store-mark,
.backoffice .brand .brand-symbol.console-mark,
.partner .portal-header .brand > .brand-symbol {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  padding: 0;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.brand-icon { display: block; width: 100%; height: 100%; object-fit: contain; }
.brand .brand-symbol.is-custom,
.storefront .brand .brand-symbol.store-mark.is-custom {
  background: var(--green);
  border-radius: 10px;
  color: var(--white);
  font-size: 16px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
}
.portal-header .brand .brand-label,
.partner .portal-header .brand > .brand-label {
  display: block;
  min-width: 0;
  padding: 0;
  margin: 0;
  border: 0;
  color: var(--ink);
  font-size: 21px;
  line-height: 1.3;
  font-weight: 650;
}
.portal-header .brand-label > small {
  display: block;
  margin-top: 4px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
}
.storefront .footer-brand .brand-symbol.store-mark { width: 29px; height: 29px; }
.storefront .footer-brand .brand-symbol.store-mark.is-custom { font-size: 13px; }
.backoffice .login-symbol.brand-symbol {
  display: block;
  width: 60px;
  height: 60px;
  padding: 0;
  background: transparent;
  border: 0;
  border-radius: 0;
}
@media (max-width: 760px) {
  .brand .brand-symbol,
  .storefront .brand .brand-symbol.store-mark,
  .backoffice .brand .brand-symbol.console-mark,
  .partner .portal-header .brand > .brand-symbol { width: 36px; height: 36px; }
  .portal-header .brand .brand-label,
  .partner .portal-header .brand > .brand-label { font-size: 19px; }
  .partner .portal-header a.brand { align-items: center; flex-wrap: nowrap; }
  .storefront .footer-brand .brand-symbol.store-mark { width: 28px; height: 28px; }
}
@media (max-width: 600px) {
  .backoffice .login-intro .login-symbol.brand-symbol { display: none; }
}
.portal :focus-visible { outline: 3px solid var(--focus); outline-offset: 3px; }
.portal-header {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 20px max(24px, calc((100vw - 1080px)/2));
  background: var(--white); border-bottom: 1px solid var(--line);
}
.portal-header a { color: inherit; text-decoration: none; }
.portal-header nav { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.portal-header nav > a, .portal-header nav > button { display: inline-flex; align-items: center; justify-content:center; min-height:44px; padding:8px 12px; font-size:14px; border:1px solid var(--line); border-radius:8px; background:var(--white); color:var(--green); text-decoration:none; }
.portal-header nav > a:hover, .portal-header nav > button:hover { background:var(--mint); border-color:#a7b9ca; }
.portal-header .brand { min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; font-weight: 650; font-size: 21px; }
.portal-main { max-width: 1080px; margin: 38px auto; padding: 0 24px 48px; }
.portal-main > h1 { font-size: clamp(25px, 3vw, 32px); font-weight: 650; letter-spacing: -.5px; line-height: 1.45; margin: 8px 0 14px; }
.portal-main > p { color: var(--muted); max-width: 760px; overflow-wrap: anywhere; }
.portal-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; margin-top: 28px; }
.portal-card { background: var(--white); border: 1px solid var(--line); border-radius: 12px; padding: 28px; min-width: 0; }
.portal-card h2 { font-size: 21px; font-weight: 600; margin: 0 0 20px; }
.portal-card label { display: block; margin: 16px 0; color: var(--ink); font-size: 14px; }
.portal-card input, .portal-card select {
  width: 100%; min-height: 46px; padding: 11px 12px; border: 1px solid #c5d0d9;
  border-radius: 8px; color: var(--ink); background: var(--white); font: inherit; font-size: 16px;
}
.portal-card button { margin-top: 12px; min-height: 44px; }
.portal-card small { color: var(--muted); font-size: 13px; line-height: 1.8; }
.portal-card p { overflow-wrap: anywhere; }
.portal-kicker { font-size: 13px; color: var(--green); font-weight: 600; letter-spacing: 0; }
.portal-steps { display: flex; gap: 24px; flex-wrap: wrap; padding: 0; list-style: none; color: var(--muted); }
.portal-result { padding: 18px; background: var(--mint); border-radius: 8px; overflow-wrap: anywhere; min-height: 32px; }
.portal-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr)); gap: 16px; margin: 22px 0; }
.portal-stats > div { min-width: 0; background: var(--white); border: 1px solid var(--line); border-radius: 10px; padding: 22px; }
.portal-stats small { display: block; font-size: 13px; color: var(--muted); line-height: 1.8; }
.portal-stats strong { display: block; font-size: 26px; line-height: 1.4; font-weight: 600; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.portal-table { overflow: auto; max-width: 100%; }
.portal-table table { width: 100%; border-collapse: collapse; font-size: 14px; }
.portal-table th, .portal-table td { padding: 14px 12px; text-align: left; border-bottom: 1px solid var(--line); white-space: nowrap; }
.portal-table th { color: var(--muted); background: #edf1f4; font-weight: 600; }
.portal-span { grid-column: 1/-1; }
.portal-main > .portal-feedback, .portal-feedback { min-height: 24px; color: var(--red); overflow-wrap: anywhere; font-size: 14px; }
.portal-main > .portal-feedback[data-state=info] { color: var(--green); }
.portal-site-link { display: block; overflow-wrap: anywhere; color: var(--green); text-decoration: underline; text-underline-offset: 3px; }
.redeem-order { margin: 18px 0; padding: 18px; border: 1px solid var(--line); border-radius: 8px; }
.redeem-order button { margin: 8px 8px 0 0; }
.platform-form { display: flex; flex-wrap: wrap; gap: 14px; align-items: end; padding: 18px 0; }
.platform-form label { flex: 1; min-width: min(160px, 100%); font-size: 14px; }
.platform-form input, .platform-form select { display: block; width: 100%; min-width: 0; font-size: 16px; }
.platform-form button { white-space: nowrap; }
.platform-stack > section { margin-bottom: 30px; min-width: 0; }
.platform-stack p { color: var(--muted); }
.platform-stack button { margin: 3px; }
.platform-stack .secondary { min-height: 44px; padding: 9px 14px; }
body.storefront { --brand-deep: #354f68; }
body.storefront[data-theme=teal] { --green: #346d66; --mint: #e7f0ed; --brand-deep: #27564f; }
body.storefront[data-theme=violet] { --green: #665a83; --mint: #efecf4; --brand-deep: #514669; }
.storefront .store-mark, .storefront .redemption-ticket, .storefront .primary { background: var(--green); border-color: var(--green); }
.storefront .ticket-stub, .storefront .primary:hover { background: var(--brand-deep); border-color: var(--brand-deep); }
.storefront .nav.active { background: var(--mint); color: var(--green); }
.storefront .checkline input { accent-color: var(--green); }
.portal .primary { border-radius: 8px; font-size: 15px; justify-content: center; }
.portal .primary:hover { background: var(--brand-deep); border-color: var(--brand-deep); }
.portal .secondary { border-radius: 8px; font-size: 14px; }
.portal .secondary:hover { background: var(--mint); }
.portal input:focus, .portal select:focus { border-color: var(--focus); box-shadow: 0 0 0 3px var(--mint); outline: none; }
@media (max-width: 700px) {
  .portal-grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .portal-main { margin-top: 26px; padding: 0 18px 32px; }
  .portal-card { padding: 22px; }
  .portal-header { padding: 14px 18px; flex-wrap: wrap; gap: 6px 16px; }
  .portal-header nav { gap: 10px; }
  .portal-header .brand { font-size: 18px; }
  .portal-stats small { display: block; font-size: 13px; color: var(--muted); line-height: 1.8; }
.portal-stats strong { font-size: 24px; }
}
/* Partner storefront: compare first, then apply. */
body.partner { --paper:#f6f7f9; --white:#fff; --ink:#273444; --muted:#5b6778; --line:#dce2e9; --green:#496681; --mint:#edf1f5; --brand-deep:#354f68; --focus:#496681; background:var(--paper); }
.partner .portal-header { padding-top:18px; padding-bottom:18px; }
.partner .portal-header .brand > span { font-size:14px; font-weight:400; color:var(--muted); padding-left:14px; margin-left:12px; border-left:1px solid var(--line); }
.partner .portal-main { max-width:1120px; margin-top:32px; }
.partner .partner-intro h1 { margin:0 0 10px; font-size:31px; font-weight:650; line-height:1.45; letter-spacing:-.5px; }
.partner .partner-intro > p { font-size:15px; color:var(--muted); margin:0 0 18px; }
.partner .partner-demo { display:flex; align-items:baseline; flex-wrap:wrap; gap:6px 12px; font-size:13px; color:var(--muted); }
.partner .partner-demo strong { font-weight:600; color:var(--green); }
.partner .partner-plans { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-top:26px; }
.partner .partner-plan { display:flex; flex-direction:column; min-width:0; padding:28px; background:var(--white); border:1px solid var(--line); border-radius:14px; }
.partner .plan-topline { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; font-size:13px; color:var(--muted); margin-bottom:20px; }
.partner .plan-pill { display:inline-flex; align-items:center; width:fit-content; font-size:13px; line-height:1.6; font-weight:400; color:var(--green); background:var(--mint); border-radius:5px; padding:4px 9px; }
.partner .partner-plan h2 { margin:0 0 12px; font-size:23px; font-weight:650; }
.partner .plan-price { display:flex; align-items:baseline; flex-wrap:wrap; gap:10px; }
.partner .plan-price strong { font-size:34px; line-height:1.3; font-weight:650; font-variant-numeric:tabular-nums; letter-spacing:-1px; }
.partner .plan-price > span { color:var(--muted); font-size:13px; }
.partner .plan-summary { margin:14px 0 0; font-size:15px; color:var(--muted); }
.partner .partner-plan ul { padding:19px 0; margin:14px 0 20px; list-style:none; border-top:1px solid var(--line); flex:1; }
.partner .partner-plan li { display:flex; flex-wrap:wrap; gap:4px; padding:7px 0; font-size:15px; }
.partner .partner-plan li::before { content:'✓'; color:var(--green); margin-right:7px; }
.partner .partner-plan button { min-height:48px; margin:0; }
.partner .profit-example { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:18px 28px; margin-top:24px; padding:24px; border:1px solid var(--line); border-radius:12px; background:#edf1f5; }
.partner .profit-example h2 { font-size:18px; line-height:1.5; margin:0 0 8px; font-weight:600; }
.partner .profit-example p { font-size:14px; color:var(--muted); margin:0; }
.partner .profit-example > small { grid-column:1/-1; font-size:13px; line-height:1.8; color:var(--muted); }
.partner .profit-calculation { display:flex; gap:16px; flex-wrap:wrap; align-items:center; justify-content:flex-end; }
.partner .profit-calculation > span { display:flex; flex-direction:column; gap:6px; color:var(--muted); font-size:13px; }
.partner .profit-calculation b { font-size:17px; color:var(--ink); font-weight:500; }
.partner .profit-calculation .profit-share { border-left:1px solid #c7d1dc; padding-left:18px; }
.partner .profit-share strong { font-size:25px; line-height:1.3; color:var(--green); font-weight:650; }
.partner .partner-auth { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; align-items:start; }
.partner details.portal-card { padding:0; }
.partner details.portal-card > summary { display:flex; flex-direction:column; padding:21px 24px; gap:5px; min-height:80px; cursor:pointer; list-style:none; }
.partner details.portal-card > summary::-webkit-details-marker { display:none; }
.partner details.portal-card > summary > span { color:var(--ink); font-size:18px; font-weight:600; }
.partner details.portal-card > summary > span::after { content:'＋'; float:right; margin-left:16px; color:var(--muted); font-size:18px; font-weight:400; }
.partner details.portal-card[open] > summary > span::after { content:'−'; }
.partner details.portal-card > summary small { color:var(--muted); font-size:13px; font-weight:400; }
.partner details.portal-card > form, .partner details.portal-card > .portal-grid { margin:0; padding:0 24px 24px; }
.partner details.portal-card > form > small { display:block; margin-top:14px; }
.partner .portal-feedback:empty { min-height:0; margin:20px 0 0; }
.partner .portal-feedback:not(:empty) { margin:20px 0; padding:13px 16px; border:1px solid var(--line); border-radius:8px; background:var(--white); }
.partner .portal-card h3 { font-size:17px; font-weight:600; margin:0 0 13px; }
.partner .partner-dashboard-heading { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:16px; }
.partner .partner-dashboard-heading p { margin:0 0 4px; color:var(--muted); font-size:14px; }
.partner .partner-dashboard-heading h1 { margin:0; font-size:28px; line-height:1.5; font-weight:650; }
.partner .partner-account-note { display:flex; flex-wrap:wrap; gap:5px 20px; align-items:baseline; margin-bottom:24px; font-size:14px; }
.partner .partner-account-note > span { color:var(--muted); font-size:13px; }
.partner .partner-account-note strong { font-weight:500; }
.partner .partner-share { padding:25px; background:var(--white); border:1px solid #c9d5e0; border-radius:12px; }
.partner .partner-section-heading { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-bottom:18px; }
.partner .partner-section-heading h2 { font-size:20px; font-weight:600; margin:0 0 6px; }
.partner .partner-section-heading p { color:var(--muted); font-size:14px; margin:0; }
.partner .partner-share-actions { display:flex; gap:10px; flex-wrap:wrap; align-items:stretch; }
.partner .partner-share-actions input { flex:1 1 250px; min-width:0; min-height:48px; background:var(--paper); border:1px solid var(--line); border-radius:8px; padding:10px 13px; color:var(--ink); font-size:16px; }
.partner .partner-share-actions button, .partner .partner-share-actions a { display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:10px 15px; margin:0; text-decoration:none; }
.partner .partner-share > small { display:block; margin-top:13px; color:var(--muted); font-size:13px; }
.partner .partner-balance-heading { margin-top:30px; margin-bottom:0; }
.partner .partner-balance-heading > a { flex-shrink:0; display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:9px 14px; text-decoration:none; }
.partner .portal-stats { margin:16px 0; }
.partner .portal-stats > div { padding:20px; }
.partner .partner-pending-note { font-size:13px; line-height:1.8; color:var(--muted); margin:0 0 24px; }
.partner .partner-orders { margin:24px 0; padding:24px; }
.partner .partner-settlement, .partner .partner-settings { margin:20px 0; scroll-margin-top:20px; }
.partner .partner-settlement-layout { display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr); gap:28px; padding:0 24px 24px; }
.partner .partner-settlement-layout > div { min-width:0; }
.partner .partner-settlement-layout p, .partner .partner-settings p { font-size:14px; color:var(--muted); }
.partner .partner-footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-top:34px; border-top:1px solid var(--line); padding-top:22px; color:var(--muted); font-size:13px; }
.partner .support-link { min-height:44px; display:inline-flex; align-items:center; text-decoration:underline; text-underline-offset:4px; color:var(--green); }
.partner .sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media(max-width:760px) {
 .partner .portal-header .brand { display:flex; align-items:baseline; flex-wrap:wrap; gap:7px; }
 .partner .portal-header .brand > span { padding-left:0; margin-left:0; border-left:0; }
 .partner .portal-header nav { width:100%; justify-content:space-between; }
 .partner .portal-main { margin-top:25px; }
 .partner .partner-intro h1 { font-size:27px; }
 .partner .partner-plans, .partner .partner-auth, .partner .profit-example, .partner .partner-settlement-layout { grid-template-columns:minmax(0,1fr); gap:18px; }
 .partner .partner-plan { padding:23px; }
 .partner .plan-topline { margin-bottom:15px; }
 .partner .partner-plan ul { margin-bottom:14px; padding:14px 0; }
 .partner .profit-example { padding:21px; }
 .partner .profit-calculation { justify-content:flex-start; gap:17px; }
 .partner .profit-calculation .profit-share { padding-left:0; border-left:0; }
 .partner .partner-share { padding:21px; }
 .partner .partner-share-actions input { flex-basis:100%; }
 .partner .partner-share-actions button { flex:1 1 auto; }
 .partner .partner-share-actions a { flex:0 1 auto; }
 .partner .partner-section-heading { flex-wrap:wrap; align-items:flex-start; }
 .partner .partner-balance-heading > div { flex:1 1 100%; }
 .partner .partner-dashboard-heading h1 { font-size:25px; }
 .partner .partner-orders { padding:21px; }
 .partner .portal-stats { grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr)); }
 .partner .partner-settlement-layout { padding:0 21px 21px; }
 .partner details.portal-card > summary { padding:19px 21px; }
 .partner details.portal-card > form, .partner details.portal-card > .portal-grid { padding:0 21px 21px; }
}
@media(max-width:760px) {
 .partner .partner-orders .portal-table { overflow:visible; }
 .partner .partner-orders table, .partner .partner-orders tbody { display:block; }
 .partner .partner-orders thead { display:none; }
 .partner .partner-orders tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 18px; padding:18px 0; }
 .partner .partner-orders tr:first-child { padding-top:0; }
 .partner .partner-orders tr + tr { border-top:1px solid var(--line); }
 .partner .partner-orders td { min-width:0; padding:0; border:0; white-space:normal; overflow-wrap:anywhere; font-size:14px; }
 .partner .partner-orders td::before { display:block; font-size:13px; color:var(--muted); margin-bottom:4px; }
 .partner .partner-orders td:nth-child(1)::before { content:'订单摘要'; }
 .partner .partner-orders td:nth-child(2)::before { content:'商品'; }
 .partner .partner-orders td:nth-child(3)::before { content:'数量'; }
 .partner .partner-orders td:nth-child(4)::before { content:'人民币标价'; }
 .partner .partner-orders td:nth-child(5)::before { content:'订单进度'; }
 .partner .partner-orders td:nth-child(6)::before { content:'本站兑换'; }
 .partner .partner-orders td:nth-child(7)::before { content:'分成核算'; }
 .partner .partner-orders td:nth-child(8)::before { content:'演示分成'; }
 .partner .partner-orders td[colspan] { grid-column:1/-1; }
 .partner .partner-orders td[colspan]::before { content:none; }
}

.partner .partner-plans{grid-template-columns:repeat(3,minmax(0,1fr))}.partner .partner-plan{display:flex;flex-direction:column}.partner .partner-plan ul{flex:1}.partner .partner-plan .plan-price strong{font-size:30px}.partner [hidden]{display:none!important}@media(max-width:850px){.partner .partner-plans{grid-template-columns:1fr}.partner .partner-plan .plan-summary{min-height:0}}
.human-challenge{min-width:0;max-width:100%;margin:14px 0}.human-challenge[hidden]{display:none!important}.human-challenge>div{max-width:100%}.human-challenge p{margin:8px 0;font-size:13px;line-height:1.6;color:#637084;overflow-wrap:anywhere}.human-challenge button[hidden]{display:none}

/* Keep every portal header and page on the same content boundaries. */
body.portal{font-family:var(--font-ui)}
.portal-header{padding:18px max(var(--page-gutter),calc((100% - var(--page-width))/2 + var(--page-gutter)));min-height:84px;gap:24px}
.portal-main{max-width:var(--page-width);padding:0 var(--page-gutter) 40px;margin:28px auto}
.portal-header nav{gap:8px}
.portal-header nav>a,.portal-header nav>button{min-height:44px;padding:9px 12px}
.portal-card{padding:26px;border-radius:12px}
.portal-card h2{line-height:1.5}
.portal-card :is(input,select){min-height:var(--control-height)}
.portal .primary,.portal .secondary{min-height:var(--control-height);text-align:center}
.portal .primary{font-weight:600}
.portal-card label{line-height:1.6}
@media(max-width:760px){
 .portal-header{padding:16px var(--page-gutter);gap:12px;flex-wrap:wrap}
 .portal-header nav{width:100%;gap:8px}
 .portal-header nav>a,.portal-header nav>button{flex:1 1 auto;font-size:13px;padding:8px;min-height:44px}
 .portal-main{margin:20px auto;padding-bottom:28px}
 .portal-card{padding:20px}
}