.xny-p90{
  --p-s:   var(--surface,   #ffffff);
  --p-s2:  var(--surface-2, #f4f7fb);
  --p-s3:  var(--surface-3, #eef3f9);
  --p-bd:  var(--border,    #e2e8f0);
  --p-bds: var(--border-strong, #cbd5e1);
  --p-tx:  var(--text,      #0f1f33);
  --p-tx2: var(--text-2,    #475569);
  --p-tx3: var(--text-3,    #94a3b8);
  --p-br:  var(--brand,     #0e9f6e);
  --p-br2: var(--brand-2,   #0ea5e9);
  --p-r:   var(--radius,    12px);
  color: var(--p-tx);
  font-size: 14px;
  line-height: 1.6;
  max-width: 1180px;
  margin: 0 auto;
  padding: 14px 16px 40px;
}
html[data-theme="dark"] .xny-p90{
  --p-s:   var(--surface,   #121c2e);
  --p-s2:  var(--surface-2, #16223a);
  --p-s3:  var(--surface-3, #1a2842);
  --p-bd:  var(--border,    #24334e);
  --p-bds: var(--border-strong, #33456a);
  --p-tx:  var(--text,      #e6edf7);
  --p-tx2: var(--text-2,    #a8b8cf);
  --p-tx3: var(--text-3,    #6b7d99);
  --p-br:  var(--brand,     #34d399);
  --p-br2: var(--brand-2,   #38bdf8);
}
.xny-p90 *{ box-sizing: border-box; }
.xny-p90 .p90-top{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.xny-p90 .p90-top h1{ font-size:20px; margin:0; font-weight:700; letter-spacing:.3px; }
.xny-p90 .p90-top .sp{ flex:1; }
.xny-p90 .p90-desc{ color:var(--p-tx2); font-size:13px; margin:0 0 14px; }
.xny-p90 .btn{
  border:1px solid var(--p-bd); background:var(--p-s2); color:var(--p-tx);
  border-radius:8px; padding:7px 12px; font-size:13px; cursor:pointer; transition:.15s;
}
.xny-p90 .btn:hover{ background:var(--p-s3); border-color:var(--p-bds); }
.xny-p90 .btn.primary{ background:var(--p-br); border-color:var(--p-br); color:#fff; }
.xny-p90 .btn.primary:hover{ filter:brightness(1.06); }
.xny-p90 .panel{
  background:var(--p-s); border:1px solid var(--p-bd); border-radius:var(--p-r);
  padding:14px 16px; margin-bottom:14px; box-shadow:var(--shadow, 0 8px 24px -10px rgba(15,23,42,.18));
}
.xny-p90 .panel > h3{
  margin:0 0 12px; font-size:15px; font-weight:700; display:flex; align-items:center; gap:8px;
  padding-left:10px; border-left:3px solid var(--p-br);
}
.xny-p90 .panel > h3 small{ font-weight:400; color:var(--p-tx3); font-size:12px; }
.xny-p90 .grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px 14px; }
.xny-p90 .grid.g2{ grid-template-columns:repeat(2,1fr); }
.xny-p90 .grid.g3{ grid-template-columns:repeat(3,1fr); }
.xny-p90 .fld{ display:flex; flex-direction:column; gap:4px; }
.xny-p90 .fld > label{ font-size:12px; color:var(--p-tx2); }
.xny-p90 .fld input, .xny-p90 .fld select{
  border:1px solid var(--p-bd); background:var(--p-s2); color:var(--p-tx);
  border-radius:8px; padding:7px 9px; font-size:13px; width:100%;
}
.xny-p90 .fld input:focus, .xny-p90 .fld select:focus{ outline:none; border-color:var(--p-br); }
.xny-p90 .seg{ display:inline-flex; border:1px solid var(--p-bd); border-radius:8px; overflow:hidden; }
.xny-p90 .seg button{
  border:0; background:var(--p-s2); color:var(--p-tx2); padding:7px 14px; font-size:13px; cursor:pointer;
}
.xny-p90 .seg button + button{ border-left:1px solid var(--p-bd); }
.xny-p90 .seg button.on{ background:var(--p-br); color:#fff; font-weight:600; }
.xny-p90 .kpis{ display:grid; grid-template-columns:repeat(6,1fr); gap:10px; margin-bottom:14px; }
.xny-p90 .kpi{
  background:var(--p-s); border:1px solid var(--p-bd); border-radius:var(--p-r);
  padding:11px 12px; position:relative; overflow:hidden;
}
.xny-p90 .kpi::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--p-br); }
.xny-p90 .kpi.c2::before{ background:var(--p-br2); }
.xny-p90 .kpi.c3::before{ background:#f59e0b; }
.xny-p90 .kpi.c4::before{ background:#8b5cf6; }
.xny-p90 .kpi .k-t{ font-size:12px; color:var(--p-tx2); }
.xny-p90 .kpi .k-v{ font-size:19px; font-weight:700; margin-top:2px; letter-spacing:.2px; }
.xny-p90 .kpi .k-v small{ font-size:12px; font-weight:400; color:var(--p-tx3); margin-left:2px; }
.xny-p90 table{ width:100%; border-collapse:collapse; font-size:13px; }
.xny-p90 th, .xny-p90 td{ border:1px solid var(--p-bd); padding:7px 9px; text-align:right; }
.xny-p90 th{ background:var(--p-s2); color:var(--p-tx2); font-weight:600; text-align:center; }
.xny-p90 td:first-child, .xny-p90 th:first-child{ text-align:left; }
.xny-p90 tbody tr:nth-child(even){ background:var(--p-s2); }
.xny-p90 tr.hl{ background:rgba(14,159,110,.10); font-weight:600; }
.xny-p90 .cwrap{ width:100%; overflow:hidden; }
.xny-p90 canvas{ width:100%; display:block; }
.xny-p90 .lg{ display:flex; gap:14px; flex-wrap:wrap; font-size:12px; color:var(--p-tx2); margin-top:6px; }
.xny-p90 .lg i{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:5px; }
.xny-p90 .note{ font-size:12px; color:var(--p-tx3); margin-top:8px; line-height:1.7; }
.xny-p90 .warn{ color:#d97706; }
.xny-p90 .ok{ color:var(--p-br); }
.xny-p90 .bad{ color:#dc2626; }
.xny-p90 .foot{ font-size:12px; color:var(--p-tx3); }
.xny-p90 .foot b{ color:var(--p-tx2); }
.xny-p90 .rowline{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-top:10px; }
@media (max-width: 900px){
  .xny-p90 .grid{ grid-template-columns:repeat(2,1fr); }
  .xny-p90 .grid.g2, .xny-p90 .grid.g3{ grid-template-columns:1fr; }
  .xny-p90 .kpis{ grid-template-columns:repeat(2,1fr); }
}

/* ===== 站点窄屏适配增强（自动生成） ===== */
@media (max-width:980px){
  .xny-p90 .grid{ grid-template-columns:repeat(2,1fr) !important; }
  .xny-p90 .grid.g2{ grid-template-columns:1fr !important; }
  .xny-p90 .grid.g3{ grid-template-columns:1fr !important; }
}
@media (max-width:640px){
  .xny-p90{ padding:12px 6px 30px; font-size:14px; }
  .xny-p90 h1{ font-size:18px; line-height:1.35; }
  .xny-p90 .p90-top{ gap:6px; }
  .xny-p90 .p90-top .btn{ padding:6px 10px; font-size:12px; }
  .xny-p90 .grid,.xny-p90 .grid.g2,.xny-p90 .grid.g3{ grid-template-columns:1fr !important; }
  .xny-p90 .kpi,.xny-p90 .kpis{ grid-template-columns:repeat(2,1fr) !important; gap:8px; }
  .xny-p90 .panel{ padding:12px 12px; border-radius:10px; margin-bottom:12px; }
  .xny-p90 input,.xny-p90 select,.xny-p90 textarea{ font-size:16px; padding:8px 9px; }
  .xny-p90 .tg{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .xny-p90 table{ min-width:520px; }
}
@media (max-width:400px){
  .xny-p90 .kpi,.xny-p90 .kpis{ grid-template-columns:1fr !important; }
}
