/* 合伙人门户 · 2026-10-25
   颜色/字体/圆角/间距全部取自 design/vi.css；这里只做组件职责。
   视觉语言：App 的“工程图纸工作台”浅色版 + 合伙人业务的数字看板。 */

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;color:var(--ink);font:15px/1.6 var(--f-ui);
  background-color:var(--ground);
  background-image:
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:64px 64px;background-position:center top;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
button,input{font:inherit}
:focus-visible{outline:2.5px solid var(--focus);outline-offset:2px;border-radius:3px}

/* ---- 顶栏：深海蓝压边，和 App 同一套品牌栏 ---- */
.pt-top{
  position:sticky;top:0;z-index:30;color:var(--on-bar);
  background:var(--bar-a);border-bottom:1px solid var(--rule-2);
  padding-top:env(safe-area-inset-top);
}
.pt-wrap{width:min(100% - 32px,1080px);margin:0 auto;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.pt-brand{display:flex;align-items:center;gap:10px;min-width:0;text-decoration:none}
.pt-brand img{width:34px;height:34px;object-fit:contain;flex:none}
.pt-brand span{display:flex;flex-direction:column;gap:2px;min-width:0}
.pt-brand b{font-size:1rem;font-weight:800;line-height:1.2}
.pt-brand small{font-size:var(--fs-sm);color:var(--on-bar-2);line-height:1.3}
.pt-topright{display:flex;align-items:center;gap:10px;flex:none}
.pt-pill{padding:4px 10px;border:1px solid rgba(255,255,255,.22);border-radius:var(--r-pill);
  background:rgba(255,255,255,.08);color:var(--on-bar);font-size:var(--fs-xs);font-weight:700;white-space:nowrap}
.pt-back{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;border:1px solid rgba(255,255,255,.22);
  border-radius:var(--r-sm);color:var(--on-bar);font-size:var(--fs-sm);font-weight:700;text-decoration:none;
  transition:background-color var(--dur) var(--ease)}
.pt-back:hover{background:rgba(255,255,255,.12)}

.pt{width:min(100% - 32px,1080px);margin:0 auto;padding:28px 0 72px}
.pt-kicker{display:inline-flex;align-items:center;gap:7px;color:var(--accent-ink);
  font-size:var(--fs-sm);font-weight:800;letter-spacing:.03em}
.pt-kicker::before{content:"";width:6px;height:6px;border-radius:2px;background:var(--accent);transform:rotate(45deg);flex:none}
h1,h2{margin:0;line-height:1.25}
h1{font-size:clamp(1.75rem,3.4vw,2.7rem);letter-spacing:-.015em;font-weight:800}
h2{font-size:1.05rem;font-weight:800}

/* ---- 登录：左说明 / 右表单 ---- */
.pt-login{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:32px;align-items:center;
  min-height:min(620px,calc(100vh - 170px));padding:30px 0 20px}
.pt-intro{max-width:540px}
.pt-intro h1{margin:12px 0 12px}
.pt-lead{margin:0;max-width:32em;color:var(--ink-2);font-size:var(--fs-body);line-height:1.7}
.pt-points{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:0}
.pt-points li{position:relative;padding:14px 0 14px 30px;border-top:1px solid var(--rule-2)}
.pt-points li:last-child{border-bottom:1px solid var(--rule-2)}
.pt-points li::before{content:"✓";position:absolute;left:0;top:16px;width:18px;height:18px;display:grid;place-items:center;
  border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);font-size:10px;font-weight:900}
.pt-points b{display:block;color:var(--ink);font-size:var(--fs-md);font-weight:800}
.pt-points span{display:block;margin-top:2px;color:var(--ink-2);font-size:var(--fs-sm);line-height:1.55}

.card{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-lg);padding:18px;
  margin-bottom:14px;box-shadow:var(--hi),var(--sh-e1)}
.pt-auth{padding:24px;box-shadow:var(--hi),var(--sh-e2)}
.pt-authhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.pt-authhead h2{font-size:1.25rem}
.pt-step{padding:3px 9px;border:1px solid var(--rule-2);border-radius:var(--r-pill);
  background:var(--panel-2);color:var(--ink-3);font-size:var(--fs-xs);font-weight:700;white-space:nowrap}
.hint{margin:0 0 16px;color:var(--ink-3);font-size:var(--fs-sm);line-height:1.6}

.field{display:block;margin-bottom:14px}
.field>label,.field>span:first-child{display:block;margin-bottom:6px;color:var(--ink-2);
  font-size:var(--fs-sm);font-weight:700}
.field input{display:block;width:100%;min-height:var(--tap);padding:0 13px;
  border:1px solid var(--control-border);border-radius:var(--r-sm);background:var(--panel-2);
  color:var(--ink);font-size:1rem;box-shadow:var(--hi),var(--sh-e1)}
.field input::placeholder{color:var(--ink-3)}
.field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.row{display:flex;gap:8px;align-items:stretch}
.row input{flex:1;min-width:0}
.row .btn{flex:none}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--tap);padding:0 16px;
  border:1px solid var(--control-border);border-radius:var(--r-sm);background:var(--panel);color:var(--ink);
  font-size:var(--fs-body);font-weight:800;text-decoration:none;cursor:pointer;white-space:nowrap;
  box-shadow:var(--hi),var(--sh-e1);
  transition:background-color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.btn:hover{background:var(--panel-2);border-color:var(--accent)}
.btn:active{transform:translateY(1px);box-shadow:var(--hi)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.primary:hover{background:var(--accent-d)}
.btn.ghost{background:var(--panel);color:var(--ink);border-color:var(--rule)}
.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}
#loginBtn{width:100%;margin-top:2px}
.msg{min-height:22px;margin:10px 0 0;font-size:var(--fs-sm);color:var(--ink-3);line-height:1.5}
.msg.bad{color:var(--bad-ink);font-weight:600}
.msg.ok{color:var(--good-ink);font-weight:600}

/* ---- 概览 ---- */
.pt-dashhead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:4px 0 18px;flex-wrap:wrap}
.pt-dashhead h1{font-size:1.65rem;margin:8px 0 4px}
.pt-dashhead .hint{margin:0}
.pt-dashhead .btn{flex:none}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
.stat{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r);padding:14px 16px;
  box-shadow:var(--hi),var(--sh-e1)}
.stat small{display:block;color:var(--ink-3);font-size:var(--fs-xs);font-weight:700;line-height:1.4}
.stat b{display:block;margin-top:5px;color:var(--ink);font-family:var(--f-num);font-size:1.5rem;line-height:1.2;
  font-weight:700;font-variant-numeric:tabular-nums}
.stat.ok b{color:var(--good-ink)}
.stat.lock b{color:var(--warn-ink)}
.stat.paid b{color:var(--accent-ink)}

.pt-cardhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}
.pt-cardhead h2{font-size:1rem}
.pt-muted{color:var(--ink-3);font-size:var(--fs-xs);font-weight:600;white-space:nowrap}
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border:1px solid var(--accent);
  border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent-ink);
  font-size:var(--fs-xs);font-weight:700;white-space:nowrap}
.badge b{font-family:var(--f-num);font-weight:800;letter-spacing:.02em}

.linkrow{display:flex;gap:10px;align-items:stretch;margin:0}
.linkrow code{flex:1;min-width:0;display:flex;align-items:center;padding:0 12px;min-height:var(--tap);
  border:1px solid var(--control-border);border-radius:var(--r-sm);background:var(--panel-2);
  color:var(--ink);font:var(--fs-sm)/1.4 var(--f-num);word-break:break-all}
.linkrow .btn{flex:none}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid2 .card{margin-bottom:0}
.list{margin-top:12px;border-top:1px solid var(--rule-2)}
.item{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;
  padding:11px 0;border-bottom:1px solid var(--rule-2)}
.item:last-child{border-bottom:0}
.item-main{min-width:0}
.item-main b{display:block;color:var(--ink);font-size:var(--fs-md);font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item-main small{display:block;margin-top:2px;color:var(--ink-3);font-size:var(--fs-xs)}
.status{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:var(--r-pill);
  font-size:var(--fs-xs);font-weight:700;white-space:nowrap}
.status::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}
.status.ok{background:var(--good-soft);color:var(--good-ink)}
.status.lock{background:var(--warn-soft);color:var(--warn-ink)}
.status.info{background:var(--accent-soft);color:var(--accent-ink)}
.status.paid{background:var(--good-soft);color:var(--good-ink)}
.status.bad{background:var(--bad-soft);color:var(--bad-ink)}
.status.muted{background:var(--sunk);color:var(--ink-2)}
.amount{font-family:var(--f-num);font-size:var(--fs-lg);font-weight:700;color:var(--ink);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.empty{margin-top:12px;padding:20px 16px;border:1px dashed var(--control-border);border-radius:var(--r-sm);
  background:var(--panel-2);color:var(--ink-3);font-size:var(--fs-sm);line-height:1.6;text-align:center}
.pt-np{text-align:center;padding:28px}
.pt-np h2{margin:8px 0 8px}
.pt-np .btn{margin-top:4px}

@media (max-width:900px){
  .pt-login{grid-template-columns:1fr;gap:22px;min-height:0;padding:26px 0 8px}
  .pt-intro{max-width:none}
  .pt-intro h1{font-size:clamp(1.7rem,6vw,2.3rem)}
  .stats{grid-template-columns:1fr 1fr}
  .grid2{grid-template-columns:1fr}
}
@media (max-width:600px){
  .pt-wrap{min-height:60px}
  .pt-pill{display:none}
  .pt{width:min(100% - 28px,1080px);padding-top:20px}
  .pt-back{min-height:40px;padding:0 10px}
  .pt-brand small{font-size:var(--fs-xs)}
  .pt-login{padding-top:20px}
  .pt-auth{padding:18px}
  .pt-dashhead h1{font-size:1.4rem}
  .stats{gap:10px}
  .stat{padding:12px 13px}
  .stat b{font-size:1.32rem}
  .linkrow{flex-direction:column}
  .linkrow .btn{width:100%}
  .item{grid-template-columns:minmax(0,1fr) auto}
  .item .status{grid-column:1;grid-row:2;justify-self:start}
  .item .amount{grid-column:2;grid-row:1/3;align-self:center}
}
@media (prefers-reduced-motion:reduce){
  *,*:before,*:after{transition-duration:.001ms!important;animation:none!important}
}

/* 未达到最低提现额时，主按钮应该是“不可用”而不是淡蓝色 */
.btn.primary[disabled]{background:var(--sunk);border-color:var(--rule);color:var(--ink-2);opacity:1}
