
:root{
  --bg:#07101d;--panel:#101c2f;--panel2:#0b1728;--line:#263b59;
  --text:#f4f7ff;--muted:#90a8c9;--blue:#5b9cff;--blue2:#2d72df;
  --green:#42d39b;--green-bg:rgba(66,211,155,.11);--yellow:#f3c95f;
  --yellow-bg:rgba(243,201,95,.10);--red:#ff7d87;--red-bg:rgba(255,125,135,.10);
  --extra:#b998ff;--extra-bg:rgba(185,152,255,.10);
}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;color:var(--text);background:
radial-gradient(circle at 16% -10%,rgba(40,102,192,.16),transparent 28%),
linear-gradient(180deg,#07101d 0%,#091426 100%);
font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;min-height:100vh}
button,input{font:inherit}.app-shell{max-width:1500px;margin:auto;padding:22px}
.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap}
.title-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
h1{margin:0;font-size:29px;letter-spacing:-.4px}h1 span{color:#9fc5ff}
.web-badge{font-size:10px;font-weight:900;letter-spacing:.8px;color:#b8d4ff;border:1px solid #31527c;background:#0c1d34;padding:5px 7px;border-radius:999px}
.subtitle{margin:6px 0 0;color:#a2b5d0;font-size:13px}
.top-actions,.action-row,.settings-actions,.dialog-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.status-pill{background:#0c192a;border:1px solid var(--line);padding:9px 12px;border-radius:999px;color:#a9bdd7;font-size:12px}
.status-pill i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--yellow);margin-right:6px}
.btn{border:1px solid transparent;border-radius:9px;padding:10px 13px;font-weight:800;color:white;cursor:pointer;transition:.18s ease;background:#1b2b43}
.btn:hover{transform:translateY(-1px);filter:brightness(1.08)}.btn:disabled{opacity:.48;cursor:not-allowed;transform:none}
.btn.primary{background:linear-gradient(180deg,#3b87f4,#246bd7)}
.btn.ghost{border-color:#304863;background:#132139;color:#e8f1ff}
.btn.extra{background:linear-gradient(180deg,#9a6ff1,#744bd0)}
.summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:13px;margin-top:18px}
.summary-card{background:linear-gradient(180deg,rgba(17,30,50,.98),rgba(15,27,46,.98));border:1px solid var(--line);border-radius:15px;padding:16px;min-height:102px}
.summary-card span{display:block;color:#93abd0;font-size:12px}.summary-card strong{display:block;font-size:28px;margin-top:6px;letter-spacing:-.5px}.summary-card small{display:block;margin-top:4px;color:#8ea2bf}
.dividend-card{border-color:#315f57}.extra-card{border-color:#574879}
.stock-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px;margin-top:13px}
.stock-card{position:relative;overflow:hidden;background:rgba(16,28,47,.98);border:1px solid var(--line);border-radius:15px;padding:16px;transition:.2s ease}
.stock-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:#315074}
.stock-card.zone-strong{border-color:rgba(66,211,155,.55);box-shadow:0 0 0 1px rgba(66,211,155,.08),0 12px 35px rgba(26,114,84,.09)}
.stock-card.zone-strong::before{background:var(--green)}
.stock-card.zone-normal{border-color:rgba(91,156,255,.50)}.stock-card.zone-normal::before{background:var(--blue)}
.stock-card.zone-watch{border-color:rgba(243,201,95,.42)}.stock-card.zone-watch::before{background:var(--yellow)}
.stock-card.zone-pause{border-color:rgba(255,125,135,.35)}.stock-card.zone-pause::before{background:var(--red)}
.stock-head{display:flex;justify-content:space-between;gap:12px}.stock-name{font-weight:900;font-size:21px}.stock-code{color:#91a8c7;font-size:12px;margin-top:3px}
.current-price{font-size:30px;font-weight:900;text-align:right}.change{text-align:right;font-size:12px;margin-top:2px}.up{color:var(--red)}.down{color:var(--green)}.flat{color:#95a7bf}
.weight-row{display:flex;justify-content:space-between;margin-top:14px;font-size:13px}.weight-row span:first-child{color:#9bb0ce}
.weight-bar{height:7px;background:#081320;border-radius:999px;margin-top:7px;overflow:hidden}.weight-bar div{height:100%;background:linear-gradient(90deg,#397fe5,#6ea9ff);border-radius:inherit}
.metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.metric{background:#0b1728;border:1px solid #233b59;border-radius:10px;padding:10px}
.metric span{display:block;color:#8fa7c7;font-size:12px}.metric b{display:block;margin-top:4px;font-size:15px}
.zone-status{display:flex;justify-content:space-between;align-items:center;margin-top:12px}.zone-pill{font-size:11px;font-weight:900;padding:5px 8px;border-radius:999px}
.zone-pill.strong{color:#7ce4b8;background:var(--green-bg);border:1px solid rgba(66,211,155,.25)}
.zone-pill.normal{color:#91baff;background:rgba(91,156,255,.11);border:1px solid rgba(91,156,255,.25)}
.zone-pill.watch{color:#f6d77f;background:var(--yellow-bg);border:1px solid rgba(243,201,95,.24)}
.zone-pill.pause{color:#ff9da5;background:var(--red-bg);border:1px solid rgba(255,125,135,.22)}
.price-zones{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:11px}
.key-price{padding:11px;border-radius:11px;position:relative}.key-price span{display:block;font-size:12px}.key-price b{display:block;font-size:20px;margin-top:4px}.key-price small{display:block;margin-top:4px}
.key-price.strong{background:linear-gradient(180deg,rgba(66,211,155,.14),rgba(66,211,155,.07));border:1px solid rgba(66,211,155,.38);color:#a9f1d4}
.key-price.normal{background:linear-gradient(180deg,rgba(91,156,255,.15),rgba(91,156,255,.07));border:1px solid rgba(91,156,255,.40);color:#bbd5ff}
.price-distance{margin-top:9px;font-size:12px;color:#9fb2cd}
.lower-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:13px;margin-top:13px}.panel{background:rgba(16,28,47,.98);border:1px solid var(--line);border-radius:15px;padding:16px}
.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}.panel h2{margin:0;font-size:18px}.panel-head p{margin:4px 0 0;color:#8ea5c5;font-size:12px}
.advice-box{margin-top:13px;border:1px solid #2e4d74;background:linear-gradient(180deg,#0c1a2d,#0a1727);border-radius:13px;padding:15px}
.advice-kicker{color:#82aff2;text-transform:uppercase;font-size:10px;font-weight:900;letter-spacing:1.2px}.advice-box h3{font-size:20px;margin:5px 0 7px}.advice-box p{margin:0;color:#b1c1d7;line-height:1.7;font-size:13px}
.advice-box.strong-advice{border-color:rgba(66,211,155,.48);background:linear-gradient(180deg,rgba(23,73,60,.33),#0a1727)}
.fund-source-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.fund-source-grid div{background:#0a1626;border:1px solid #233a57;border-radius:10px;padding:10px}.fund-source-grid span{display:block;color:#8fa7c6;font-size:11px}.fund-source-grid strong{display:block;margin-top:3px}
.rule-tip{margin-top:11px;padding:10px 12px;border-radius:10px;border:1px solid rgba(243,201,95,.22);background:var(--yellow-bg);font-size:12px;line-height:1.65;color:#dfcf9c}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.settings-grid label,.money-dialog label{color:#9eb2cd;font-size:12px}.settings-grid input,.strategy-grid input,.money-dialog input{display:block;width:100%;margin-top:5px;background:#091524;border:1px solid #304863;border-radius:9px;padding:9px 10px;color:white;outline:none}
.settings-grid input:focus,.strategy-grid input:focus,.money-dialog input:focus{border-color:#5e9cf0}
.strategy-details{margin-top:12px;border:1px solid #263d5a;border-radius:10px;padding:10px}.strategy-details summary{cursor:pointer;font-size:12px;font-weight:800;color:#b4c8e2}
.strategy-grid{display:grid;grid-template-columns:1.15fr .9fr .9fr .9fr;gap:7px;align-items:center;margin-top:10px;font-size:12px;color:#a8bdd8}.strategy-head{font-weight:800;color:#7f9abc}
.settings-actions{margin-top:12px}
.history-panel{margin-top:13px}.table-wrap{overflow:auto;margin-top:10px}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:10px 8px;border-bottom:1px solid #243955;text-align:left;white-space:nowrap}th{color:#83a0c6}td{color:#dce8f8}
footer{color:#6f87a8;font-size:11px;margin:15px 2px 4px;line-height:1.7}
.money-dialog{width:min(480px,calc(100vw - 28px));background:#101c2f;color:white;border:1px solid #355173;border-radius:14px;padding:0;box-shadow:0 25px 80px rgba(0,0,0,.5)}
.money-dialog::backdrop{background:rgba(0,8,18,.72);backdrop-filter:blur(4px)}.money-dialog form{padding:17px}.dialog-title{display:flex;justify-content:space-between;gap:10px}.dialog-title h3{margin:0;font-size:19px}.dialog-title p{margin:4px 0 14px;color:#8ea5c4;font-size:12px}.dialog-x{background:none;border:0;color:#96abc6;font-size:25px;cursor:pointer}.money-dialog label{display:block;margin-top:10px}.dialog-actions{justify-content:flex-end;margin-top:15px}
@media(max-width:1180px){.summary-grid{grid-template-columns:repeat(3,1fr)}.stock-grid{grid-template-columns:1fr}.lower-grid{grid-template-columns:1fr}}
@media(max-width:720px){.app-shell{padding:12px}.summary-grid{grid-template-columns:1fr 1fr}.summary-card strong{font-size:23px}.fund-source-grid{grid-template-columns:1fr 1fr}.settings-grid{grid-template-columns:1fr}.strategy-grid{grid-template-columns:1fr 1fr}.strategy-head{display:none}.top-actions{width:100%}.status-pill{flex:1}.title-row h1{font-size:23px}.action-row .btn{flex:1 1 42%}}
@media(max-width:450px){.summary-grid{grid-template-columns:1fr}.price-zones{grid-template-columns:1fr}}


/* ===== V4.1 长期收息进度 ===== */
.income-goal-grid{display:grid;grid-template-columns:1fr 1.22fr;gap:13px;margin-top:13px}
.goal-badge,.forecast-rate{font-size:10px;font-weight:900;letter-spacing:.8px;border:1px solid #355a83;background:#0b1c31;color:#a9ccff;padding:6px 8px;border-radius:999px}
.goal-cards{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
.goal-card{background:#0a1626;border:1px solid #27405f;border-radius:12px;padding:12px}
.goal-card-head,.goal-foot{display:flex;justify-content:space-between;gap:10px;align-items:center}
.goal-card-head span,.goal-foot span{color:#91a8c8;font-size:12px}
.goal-card-head b{font-size:13px}.goal-foot{margin-top:7px}.goal-foot b{font-size:12px;color:#bdd2ef}
.goal-progress{height:10px;background:#07121f;border-radius:999px;overflow:hidden;margin-top:12px;border:1px solid #203653}
.goal-progress div{height:100%;width:0;background:linear-gradient(90deg,#42d39b,#77e7bc);border-radius:999px;transition:width .35s ease}
.goal-progress.monthly div{background:linear-gradient(90deg,#5b9cff,#8ab9ff)}
.goal-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:11px}
.goal-metrics div{background:#0a1626;border:1px solid #243d5b;border-radius:10px;padding:10px}
.goal-metrics span{display:block;color:#8ea6c6;font-size:11px}.goal-metrics strong{display:block;margin-top:4px;font-size:16px}
.goal-settings{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-top:11px}
.goal-settings label{color:#91a8c7;font-size:11px}
.goal-settings input{display:block;width:100%;margin-top:5px;background:#091524;border:1px solid #304863;border-radius:9px;padding:9px 10px;color:white;outline:none}
.goal-settings input:focus{border-color:#5e9cf0}
.goal-note{margin-top:10px;color:#8198b8;font-size:11px;line-height:1.6}
.forecast-cards{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
.forecast-card{border-radius:12px;padding:13px;border:1px solid #2e4d73;background:linear-gradient(180deg,#0b1b2f,#0a1626)}
.forecast-card.twenty{border-color:#4a4173;background:linear-gradient(180deg,rgba(104,80,170,.14),#0a1626)}
.forecast-card span{display:block;color:#90a7c7;font-size:12px}.forecast-card strong{display:block;font-size:24px;margin-top:5px}.forecast-card small{display:block;color:#a6b9d3;margin-top:5px}
.forecast-chart-wrap{background:#091524;border:1px solid #233c5b;border-radius:12px;padding:7px;margin-top:10px;overflow:hidden}
#forecastChart{display:block;width:100%;height:235px}
.forecast-table-wrap{overflow:auto;margin-top:10px}.forecast-table{font-size:11px}.forecast-table td,.forecast-table th{padding:7px 6px}
.chart-grid{stroke:#213853;stroke-width:1}.chart-axis{fill:#7189a9;font-size:10px}.chart-line{fill:none;stroke:#6da8ff;stroke-width:3}.chart-area{fill:url(#areaGradient);opacity:.35}.chart-point{fill:#b8d5ff;stroke:#2c72da;stroke-width:2}
.chart-goal{stroke:#42d39b;stroke-width:1.5;stroke-dasharray:5 5}.chart-goal-text{fill:#72dfb4;font-size:10px}
@media(max-width:1180px){.income-goal-grid{grid-template-columns:1fr}.goal-settings{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:720px){.goal-cards,.forecast-cards{grid-template-columns:1fr}.goal-settings{grid-template-columns:1fr}.goal-metrics{grid-template-columns:1fr 1fr}}
@media(max-width:450px){.goal-metrics{grid-template-columns:1fr}}


/* ===== V4.2 记录修正 ===== */
.record-actions{display:flex;gap:6px;align-items:center}
.record-btn{border:1px solid #324b6c;border-radius:7px;padding:5px 8px;background:#12243b;color:#bcd2ef;font-size:11px;font-weight:800;cursor:pointer}
.record-btn:hover{filter:brightness(1.12)}
.record-btn.delete{border-color:rgba(255,125,135,.35);background:rgba(255,125,135,.08);color:#ff9ca5}
.edit-field-group{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.edit-field-group label{color:#9eb2cd;font-size:12px}
.edit-derived{grid-column:1/-1;background:#0a1626;border:1px solid #263e5c;border-radius:9px;padding:9px 10px;color:#93aac9;font-size:12px}
.edit-derived b{color:white;margin-left:5px}
.edit-warning{margin-top:11px;padding:9px 10px;border:1px solid rgba(243,201,95,.22);background:rgba(243,201,95,.07);border-radius:9px;color:#dacb9c;font-size:11px;line-height:1.6}
@media(max-width:600px){.edit-field-group{grid-template-columns:1fr}.edit-derived{grid-column:auto}.record-actions{flex-direction:column;align-items:stretch}}


/* ===== V4.3 分红标的下拉框 / 弹窗关闭修正 ===== */
.money-dialog select{
  display:block;width:100%;margin-top:5px;background:#091524;color:white;
  border:1px solid #304863;border-radius:9px;padding:9px 10px;outline:none;
}
.money-dialog select:focus{border-color:#5e9cf0}
.money-dialog select option{background:#101c2f;color:white}
.dialog-hint{
  margin-top:8px;color:#8198b8;font-size:11px;line-height:1.55;
}
.dialog-x{
  width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  border-radius:8px;line-height:1;transition:.15s ease;
}
.dialog-x:hover{background:#1a2a42;color:white}


/* ===== V5 自定义标的 ===== */
.dynamic-stock-settings{display:grid;gap:9px;margin-top:11px;margin-bottom:12px}
.stock-setting-row{
  display:grid;
  grid-template-columns:minmax(115px,1.2fr) .75fr .8fr .8fr .8fr .8fr auto;
  gap:7px;align-items:end;background:#0a1626;border:1px solid #263e5c;border-radius:11px;padding:10px;
}
.stock-setting-name{align-self:center}
.stock-setting-name b{display:block;font-size:14px}.stock-setting-name span{display:block;color:#8299ba;font-size:11px;margin-top:3px}
.stock-setting-row label{font-size:10px;color:#8299ba}
.stock-setting-row input{
  display:block;width:100%;margin-top:4px;background:#081422;color:white;
  border:1px solid #2b4564;border-radius:8px;padding:7px 8px;outline:none;
}
.stock-setting-row input:focus{border-color:#5d9cf0}
.stock-setting-actions{display:flex;gap:5px;align-items:center}
.mini-action{border:1px solid #324c6d;border-radius:7px;background:#13243b;color:#bed2ee;padding:7px 8px;font-size:10px;font-weight:800;cursor:pointer}
.mini-action.delete{color:#ff9ea7;border-color:rgba(255,125,135,.33);background:rgba(255,125,135,.07)}
.global-settings{margin-top:8px}
.weight-warning{
  margin-top:10px;padding:9px 10px;border-radius:9px;
  border:1px solid rgba(255,125,135,.28);background:rgba(255,125,135,.08);
  color:#ffabb2;font-size:11px;line-height:1.55
}
.weight-warning.ok{
  border-color:rgba(66,211,155,.25);background:rgba(66,211,155,.07);color:#90e7c2
}
.stock-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.stock-form-grid label{color:#9eb2cd;font-size:12px}
.stock-form-grid input{
  display:block;width:100%;margin-top:5px;background:#091524;color:white;
  border:1px solid #304863;border-radius:9px;padding:9px 10px;outline:none
}
.stock-form-grid input:focus{border-color:#5e9cf0}
.settings-goal-compact{grid-template-columns:1fr}
@media(max-width:1180px){
  .stock-setting-row{grid-template-columns:1.2fr .75fr .8fr .8fr;align-items:end}
  .stock-setting-actions{grid-column:1/-1}
}
@media(max-width:720px){
  .stock-setting-row{grid-template-columns:1fr 1fr}
  .stock-setting-name{grid-column:1/-1}
  .stock-form-grid{grid-template-columns:1fr}
}
@media(max-width:480px){.stock-setting-row{grid-template-columns:1fr}}


/* ===== V5.1 界面与交互修正 ===== */
.dynamic-stock-settings{display:grid;gap:10px;margin-top:11px;margin-bottom:12px}
.stock-setting-row{display:block;background:#0a1626;border:1px solid #263e5c;border-radius:12px;padding:12px}
.stock-setting-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.stock-setting-name b{display:block;font-size:16px}.stock-setting-name span{display:block;color:#8299ba;font-size:11px;margin-top:3px}
.stock-setting-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.stock-setting-fields label{font-size:11px;color:#8ea5c5}
.stock-setting-fields input{display:block;width:100%;margin-top:5px;background:#081422;color:white;border:1px solid #2b4564;border-radius:8px;padding:8px 9px;outline:none}
.stock-setting-fields input:focus{border-color:#5d9cf0}.stock-setting-actions{display:flex;gap:6px;align-items:center}
.settings-note{margin-top:10px;padding:9px 10px;background:#0b1728;border:1px solid #263e5c;border-radius:9px;color:#8298b6;font-size:11px;line-height:1.55}
.goal-actions{margin-top:10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.goal-actions span{color:#8198b8;font-size:11px}.goal-actions span.saved{color:#72dfb4}
@media(max-width:720px){.stock-setting-fields{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.stock-setting-fields{grid-template-columns:1fr}}
