:root {
  --bg: #f6f7f1;
  --surface: #ffffff;
  --surface-2: #eef3ef;
  --ink: #20251f;
  --muted: #667165;
  --line: #d9dfd6;
  --green: #147a54;
  --green-2: #e6f3ec;
  --red: #b73939;
  --red-2: #fae8e8;
  --blue: #256f9f;
  --amber: #a36a00;
  --shadow: 0 14px 40px rgba(39, 50, 42, 0.08);
  color-scheme: light;
}

* {
  box-sizing: border-box;
}

html {
  min-height: 100%;
  background: var(--bg);
}

body {
  min-height: 100vh;
  margin: 0;
  color: var(--ink);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  letter-spacing: 0;
}

.error-page {
  display: grid;
  min-height: 100vh;
  place-items: center;
  padding: 24px;
  background: var(--bg);
}

.error-page main {
  width: min(520px, 100%);
  padding: 42px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface);
  box-shadow: var(--shadow);
  text-align: center;
}

.error-page main > span {
  color: var(--green);
  font-size: 14px;
  font-weight: 800;
}

.error-page h1 {
  margin: 14px 0 10px;
}

.error-page p {
  margin-bottom: 24px;
  color: var(--muted);
  line-height: 1.7;
}

button,
input,
select,
textarea {
  font: inherit;
}

button,
label.icon-button {
  -webkit-tap-highlight-color: transparent;
}

button {
  cursor: pointer;
}

button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
label.file-button:focus-within {
  outline: 3px solid rgba(37, 111, 159, 0.28);
  outline-offset: 2px;
}

[hidden] {
  display: none !important;
}

.public-shell {
  min-height: 100vh;
  background: var(--bg);
  color: var(--ink);
}

.public-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  max-width: 1240px;
  margin: 0 auto;
  padding: 18px 28px;
  border-bottom: 1px solid var(--line);
}

.public-brand,
.public-nav a,
.public-footer a {
  color: inherit;
  text-decoration: none;
}

.public-brand {
  display: flex;
  align-items: center;
  gap: 10px;
}

.public-brand small,
.public-brand strong {
  display: block;
}

.public-brand small {
  color: var(--muted);
  margin-top: 3px;
}

.public-links,
.public-actions,
.public-footer nav {
  display: flex;
  align-items: center;
  gap: 18px;
}

.public-links > a:not(.public-button),
.public-footer a {
  color: var(--muted);
  font-size: 14px;
}

.public-links > a:hover,
.public-footer a:hover {
  color: var(--green);
}

.public-shell main {
  max-width: 1240px;
  margin: 0 auto;
}

.public-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 0.82fr);
  align-items: center;
  gap: 72px;
  min-height: 620px;
  padding: 78px 28px 82px;
}

.public-eyebrow {
  color: var(--green);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 1.2px;
}

.public-hero h1,
.public-simple-heading h1,
.public-auth-card h1 {
  margin: 14px 0 18px;
  font-size: clamp(38px, 5vw, 68px);
  line-height: 1.08;
  letter-spacing: 0;
}

.public-hero-copy > p:not(.public-hero-note):not(.public-risk-note) {
  margin: 0;
  color: var(--green);
  font-size: 23px;
  font-weight: 700;
}

.public-hero-note {
  max-width: 680px;
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 17px;
  line-height: 1.8;
}

.public-actions {
  margin-top: 30px;
  flex-wrap: wrap;
}

.public-button,
.public-actions a,
.public-price-card button,
.public-demo-panel a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 18px;
  border-radius: 6px;
  text-decoration: none;
}

.secondary-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 18px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  color: var(--ink);
  text-decoration: none;
}

.text-button {
  color: var(--green);
  text-decoration: none;
  font-weight: 700;
}

.public-risk-note {
  margin: 20px 0 0;
  color: var(--muted);
  font-size: 13px;
}

.public-hero-preview {
  padding: 22px;
  border: 1px solid #cdd8cf;
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.public-preview-top,
.public-preview-line,
.public-preview-list span,
.public-preview-metrics {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.public-preview-top {
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 13px;
}

.public-preview-top strong {
  color: var(--ink);
  font-size: 16px;
}

.public-preview-metrics {
  gap: 10px;
  padding: 24px 0;
}

.public-preview-metrics span {
  flex: 1;
  padding: 14px;
  border: 1px solid var(--line);
  background: var(--surface-2);
}

.public-preview-metrics small,
.public-preview-metrics b {
  display: block;
}

.public-preview-metrics small {
  color: var(--muted);
  font-size: 12px;
}

.public-preview-metrics b {
  margin-top: 8px;
  color: var(--green);
  font-size: 21px;
}

.public-preview-line {
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  font-size: 13px;
}

.public-preview-line strong {
  color: var(--ink);
  text-align: right;
}

.public-preview-list {
  display: grid;
  gap: 12px;
  padding-top: 18px;
}

.public-preview-list span {
  color: var(--muted);
  font-size: 14px;
}

.public-preview-list b {
  color: var(--green);
  font-size: 12px;
}

.public-section {
  padding: 76px 28px;
  border-top: 1px solid var(--line);
}

.public-section-heading {
  max-width: 740px;
}

.public-section-heading h2,
.public-simple-heading h1 {
  margin: 12px 0;
}

.public-section-heading h2 {
  font-size: 34px;
  line-height: 1.25;
}

.public-section-heading p,
.public-simple-heading p {
  color: var(--muted);
  line-height: 1.75;
}

.public-value-grid,
.public-shot-grid,
.public-scenario-grid,
.public-pricing-grid,
.public-demo-grid {
  display: grid;
  gap: 14px;
}

.public-value-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: 34px;
}

.public-value-grid article,
.public-shot,
.public-price-card,
.public-demo-sample,
.public-demo-panel {
  padding: 22px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
}

.public-value-grid strong {
  color: var(--green);
  font-size: 13px;
}

.public-value-grid h3 {
  margin: 18px 0 8px;
  font-size: 18px;
}

.public-value-grid p,
.public-shot strong,
.public-price-card p,
.public-demo-sample p {
  color: var(--muted);
  line-height: 1.65;
}

.public-surface-band {
  background: var(--surface-2);
}

.public-scenario-grid {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-top: 32px;
}

.public-scenario-grid span {
  padding: 18px 12px;
  border-top: 2px solid var(--green);
  background: var(--surface);
  font-weight: 700;
  text-align: center;
}

.public-shot-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 34px;
}

.public-shot {
  min-height: 130px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.public-shot span {
  color: var(--green);
  font-size: 13px;
  font-weight: 700;
}

.public-disclaimer {
  margin: 0 28px 72px;
  padding: 24px 26px;
  border-left: 4px solid var(--amber);
  background: #fff9e8;
}

.public-disclaimer p {
  margin: 10px 0;
  color: #6d5a2a;
  line-height: 1.7;
}

.public-disclaimer a {
  color: #825800;
  font-weight: 700;
}

.report-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 18px;
  max-width: 1040px;
  margin: 0 auto 32px;
  padding: 0 24px;
}

.report-form,
.report-status-card,
.report-admin-detail {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 18px;
}

.report-form {
  display: grid;
  gap: 16px;
}

.report-status-card {
  align-self: start;
  display: grid;
  gap: 10px;
}

.report-status-card span,
.report-status-card small {
  color: var(--muted);
}

.report-status-card strong {
  color: var(--accent);
  font-size: 24px;
}

.report-confirm {
  align-items: flex-start;
}

.form-note.is-warning {
  color: #b45309;
}

.report-admin-grid {
  display: grid;
  grid-template-columns: minmax(260px, 0.9fr) minmax(320px, 1.1fr);
  gap: 16px;
}

.report-detail-card {
  display: grid;
  gap: 12px;
}

.report-content-text {
  white-space: pre-wrap;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px;
  background: rgba(255,255,255,0.58);
}

.report-attachment-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.public-simple-heading {
  max-width: 760px;
  margin: 0 auto;
  padding: 76px 28px 36px;
  text-align: center;
}

.public-simple-heading h1,
.public-auth-card h1 {
  font-size: 48px;
}

.public-centered {
  text-align: center;
}

.public-pricing-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  padding: 0 28px 30px;
}

.public-price-card {
  display: flex;
  flex-direction: column;
  min-height: 430px;
}

.public-price-card.is-featured {
  border-color: var(--green);
  box-shadow: var(--shadow);
}

.public-price-label {
  min-height: 18px;
  color: var(--green);
  font-size: 12px;
  font-weight: 700;
}

.public-price-card h2 {
  margin: 20px 0 8px;
}

.public-price {
  margin: 12px 0 24px;
  font-size: 34px;
}

.public-price small {
  color: var(--muted);
  font-size: 13px;
  font-weight: 400;
}

.public-price-card ul {
  flex: 1;
  margin: 0 0 24px;
  padding-left: 18px;
  color: var(--muted);
  line-height: 1.9;
}

.public-demo-grid {
  grid-template-columns: 1fr 1fr;
  padding: 0 28px 60px;
}

.public-contact {
  display: grid;
  grid-template-columns: 1fr minmax(320px, 0.8fr);
  gap: 32px;
  margin: 0 28px 34px;
  padding: 28px;
  border: 1px solid var(--line);
  background: var(--surface-2);
}

.public-contact h2 {
  margin: 12px 0 8px;
}

.public-contact p {
  color: var(--muted);
  line-height: 1.6;
}

.public-demo-grid h2 {
  margin-top: 0;
}

.public-demo-panel {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.public-form {
  display: grid;
  gap: 14px;
}

.public-form label {
  display: grid;
  gap: 7px;
  color: var(--muted);
  font-size: 13px;
}

.public-form input,
.public-form select,
.public-form textarea {
  width: 100%;
  min-height: 44px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: var(--surface);
  color: var(--ink);
}

.public-auth-card {
  width: min(480px, calc(100% - 56px));
  margin: 72px auto;
  padding: 34px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.public-auth-card p {
  color: var(--muted);
  line-height: 1.6;
}

.public-auth-switch {
  margin: 20px 0 0;
  text-align: center;
}

.public-auth-switch a {
  color: var(--green);
  font-weight: 700;
}

.legal-page article {
  max-width: 820px;
  margin: 0 auto 80px;
  padding: 0 28px;
}

.legal-page article h2 {
  margin: 30px 0 8px;
}

.legal-page article p {
  color: var(--muted);
  line-height: 1.85;
}

.public-footer {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 20px;
  max-width: 1240px;
  margin: 0 auto;
  padding: 22px 28px 34px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: 13px;
}

.compliance-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
}

.compliance-links a,
.compliance-links span {
  color: var(--muted);
  font-size: 12px;
  text-decoration: none;
}

.compliance-links a:hover {
  color: var(--green);
}

.app-compliance-footer {
  justify-content: center;
  padding: 18px 0 0;
  border-top: 1px solid var(--line);
}

.public-loading {
  padding: 28px;
  color: var(--muted);
  text-align: center;
}

@media (max-width: 900px) {
  .public-nav,
  .public-footer { align-items: flex-start; flex-direction: column; }
  .public-links { flex-wrap: wrap; gap: 12px; }
  .public-hero { grid-template-columns: 1fr; gap: 36px; min-height: auto; padding-top: 52px; }
  .public-value-grid, .public-shot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .public-scenario-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .public-pricing-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
  .public-nav { padding: 14px 18px; }
  .public-hero, .public-section { padding-left: 18px; padding-right: 18px; }
  .public-hero h1, .public-simple-heading h1, .public-auth-card h1 { font-size: 38px; }
  .public-hero-copy > p:not(.public-hero-note):not(.public-risk-note) { font-size: 19px; }
  .public-value-grid, .public-shot-grid, .public-scenario-grid, .public-pricing-grid, .public-demo-grid { grid-template-columns: 1fr; }
  .public-contact { grid-template-columns: 1fr; margin-left: 18px; margin-right: 18px; }
  .public-disclaimer { margin-left: 18px; margin-right: 18px; }
  .report-layout,
  .report-admin-grid {
    grid-template-columns: 1fr;
    padding-left: 18px;
    padding-right: 18px;
  }
  .public-auth-card { width: calc(100% - 36px); margin-top: 42px; padding: 24px; }
  .public-preview-metrics { align-items: stretch; flex-direction: column; }
}

.icon-sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
}

svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.app-shell {
  display: grid;
  grid-template-columns: 260px minmax(0, 1fr);
  min-height: 100vh;
}

.sidebar {
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  gap: 22px;
  height: 100vh;
  padding: 22px 16px;
  border-right: 1px solid var(--line);
  background: #fbfcf8;
}

.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 6px 8px;
}

.brand-mark {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border: 1px solid #c9d8cf;
  border-radius: 8px;
  background: #e8f2ed;
  color: var(--green);
  font-weight: 800;
}

.brand strong {
  display: block;
  font-size: 17px;
  line-height: 1.35;
}

.brand span {
  display: block;
  margin-top: 2px;
  color: var(--muted);
  font-size: 12px;
}

.nav-tabs {
  display: grid;
  gap: 6px;
  min-height: 0;
  overflow-y: auto;
}

.nav-tab {
  display: flex;
  align-items: center;
  gap: 11px;
  width: 100%;
  min-height: 42px;
  padding: 9px 12px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: #3b463c;
  text-align: left;
}

.nav-tab:hover {
  background: var(--surface-2);
}

.nav-tab.is-active {
  border-color: #c4d9ce;
  background: var(--green-2);
  color: var(--green);
  font-weight: 700;
}

.nav-more {
  margin-top: 4px;
  border-top: 1px solid var(--line);
  padding-top: 8px;
}

.nav-more summary {
  padding: 9px 12px;
  border-radius: 8px;
  color: var(--muted);
  cursor: pointer;
  font-size: 12px;
  list-style-position: inside;
}

.nav-more summary:hover {
  background: var(--surface-2);
  color: var(--ink);
}

.nav-more-list {
  display: grid;
  gap: 5px;
  margin-top: 6px;
}

.nav-more-list .nav-tab {
  min-height: 38px;
  padding-left: 18px;
  font-size: 13px;
}

.nav-account-link[data-view="membership"] {
  margin-top: 6px;
  padding-top: 12px;
  border-top-color: var(--line);
  border-radius: 0 0 8px 8px;
}

.admin-console-nav {
  display: grid;
  gap: 6px;
  padding-top: 14px;
  border-top: 1px solid #d8cfc4;
}

.admin-console-nav-title {
  padding: 0 12px 6px;
  color: #7c5a3a;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .06em;
}

.admin-nav-tab {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 40px;
  padding: 8px 12px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: #665546;
  text-align: left;
}

.admin-nav-tab:hover,
.admin-nav-tab.is-active {
  border-color: #e1c4a7;
  background: #fff3e6;
  color: #9b5d28;
  font-weight: 700;
}

.admin-nav-tab svg {
  width: 18px;
  height: 18px;
}

.is-admin-console .sidebar {
  background: #fffaf4;
  border-right-color: #eadbc9;
}

.is-admin-console .brand-mark {
  border-color: #e1c4a7;
  background: #fff0df;
  color: #9b5d28;
}

.mobile-menu-button,
.sidebar-backdrop {
  display: none;
}

.investor-home {
  display: grid;
  gap: 18px;
}

.investor-home-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(180px, 230px) minmax(180px, 230px);
  gap: 14px;
  align-items: stretch;
  padding: 22px;
  border: 1px solid #d8e5dc;
  border-radius: 14px;
  background: linear-gradient(135deg, #f5fbf7, #ffffff 68%);
}

.investor-home-hero h2 {
  margin-top: 5px;
  font-size: clamp(24px, 3vw, 34px);
}

.investor-home-hero p {
  margin-top: 9px;
  color: var(--muted);
}

.investor-market-status,
.membership-home-card {
  display: grid;
  align-content: center;
  gap: 5px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(255, 255, 255, .78);
  text-align: left;
}

.investor-market-status span,
.membership-home-card span {
  color: var(--muted);
  font-size: 12px;
}

.investor-market-status strong,
.membership-home-card strong {
  font-size: 18px;
}

.investor-market-status small,
.membership-home-card small {
  color: var(--muted);
  font-size: 12px;
}

.membership-home-card {
  cursor: pointer;
}

.membership-home-card:hover {
  border-color: #aacdb8;
  background: #f5fbf7;
}

.investor-quick-actions {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.investor-quick-card {
  position: relative;
  display: grid;
  gap: 7px;
  min-height: 100px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--surface);
  color: var(--ink);
  text-align: left;
}

.investor-quick-card:hover,
.investor-quick-card.is-primary {
  border-color: #b7d5c3;
  background: #f2faf5;
}

.investor-quick-card span {
  font-size: 16px;
  font-weight: 750;
}

.investor-quick-card small {
  color: var(--muted);
}

.investor-quick-card b {
  position: absolute;
  right: 16px;
  bottom: 15px;
  color: var(--green);
  font-size: 20px;
}

.investor-home-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.investor-home-panel,
.investor-reports-panel {
  min-height: 168px;
}

.investor-membership-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px;
  border-color: #d8e5dc;
  background: linear-gradient(135deg, #f7fbf8, #fff);
}

.investor-membership-panel h3 {
  margin-top: 4px;
}

.investor-membership-panel p {
  margin-top: 6px;
  color: var(--muted);
}

.investor-home-list,
.investor-report-list {
  display: grid;
  gap: 7px;
  margin-top: 12px;
}

.investor-home-row,
.investor-report-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 8px;
  background: var(--surface-2);
}

.investor-home-row span,
.investor-report-row span {
  overflow: hidden;
  color: var(--muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.investor-home-row.is-risk {
  background: #fff7f2;
}

.investor-home-empty {
  padding: 15px 12px;
  border-radius: 8px;
  background: var(--surface-2);
  color: var(--muted);
  font-size: 13px;
}

.sidebar-summary {
  display: grid;
  gap: 10px;
  margin-top: 10px;
}

.sidebar-membership-card {
  display: grid;
  gap: 7px;
  margin-top: auto;
  padding: 12px;
  border: 1px solid #c4d9ce;
  border-radius: 8px;
  background: linear-gradient(145deg, var(--green-2), var(--surface));
}

.sidebar-membership-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: 12px;
}

.sidebar-membership-card > strong {
  font-size: 15px;
}

.sidebar-membership-card > span:not(.tag) {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}

.sidebar-membership-card .small-button {
  width: 100%;
  min-height: 32px;
  justify-content: center;
  border-color: #b7d2c2;
}

.sidebar-summary div {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.sidebar-summary span,
.metric-card span,
.risk-numbers span {
  display: block;
  color: var(--muted);
  font-size: 12px;
}

.sidebar-summary strong {
  display: block;
  margin-top: 5px;
  font-size: 18px;
}

.workspace {
  min-width: 0;
  padding: 22px clamp(16px, 2.7vw, 34px) 42px;
}

.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.eyebrow {
  display: block;
  color: var(--muted);
  font-size: 13px;
}

h1,
h2,
h3,
p {
  margin: 0;
}

h1 {
  margin-top: 4px;
  font-size: clamp(24px, 3vw, 36px);
  line-height: 1.18;
}

h2 {
  font-size: 16px;
}

h3 {
  font-size: 15px;
}

.top-actions,
.form-actions,
.panel-head,
.panel-actions {
  display: flex;
  align-items: center;
}

.top-actions {
  gap: 8px;
}

.account-menu {
  position: relative;
}

.account-trigger {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 40px;
  max-width: 260px;
  padding: 4px 10px 4px 6px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.account-trigger:hover,
.account-trigger[aria-expanded="true"] {
  border-color: #aebbad;
  background: var(--surface-2);
  transform: translateY(-1px);
}

.account-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--green-2);
  color: var(--green);
  font-size: 13px;
  font-weight: 800;
}

.account-copy {
  display: grid;
  min-width: 0;
  text-align: left;
}

.account-copy strong,
.account-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.account-copy strong {
  font-size: 13px;
  line-height: 1.2;
}

.account-copy small {
  color: var(--muted);
  font-size: 11px;
  line-height: 1.2;
}

.account-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  z-index: 40;
  width: 260px;
  padding: 8px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.account-dropdown-head {
  display: grid;
  gap: 4px;
  padding: 8px 10px 10px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 6px;
}

.account-dropdown-head strong,
.account-dropdown-head span {
  overflow-wrap: anywhere;
}

.account-dropdown-head strong {
  font-size: 14px;
}

.account-dropdown-head span {
  color: var(--muted);
  font-size: 12px;
}

.account-menu-item {
  display: flex;
  align-items: center;
  gap: 9px;
  width: 100%;
  min-height: 38px;
  padding: 8px 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ink);
  text-align: left;
}

.account-menu-item:hover {
  background: var(--surface-2);
}

.account-menu-item.danger {
  color: var(--red);
}

.account-menu-item svg {
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
}

.icon-button,
.small-button,
.primary-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  color: var(--ink);
  transition: transform .16s ease, border-color .16s ease, background .16s ease;
}

.icon-button {
  width: 40px;
  height: 40px;
}

.icon-button:hover,
.small-button:hover,
.primary-button:hover {
  border-color: #aebbad;
  transform: translateY(-1px);
}

.icon-button:disabled,
.small-button:disabled,
.primary-button:disabled {
  cursor: wait;
  opacity: .68;
  transform: none;
}

.small-button.is-loading,
.primary-button.is-loading {
  position: relative;
}

.icon-button.filled {
  border-color: var(--green);
  background: var(--green);
  color: #fff;
}

.icon-button.danger {
  color: var(--red);
}

.small-button {
  min-height: 34px;
  padding: 0 12px;
  color: var(--muted);
}

.small-button.filled {
  border-color: var(--green);
  background: var(--green);
  color: #fff;
}

.small-button.danger {
  color: var(--red);
}

.file-button {
  cursor: pointer;
}

.primary-button {
  min-height: 42px;
  padding: 0 18px;
  border-color: var(--green);
  background: var(--green);
  color: #fff;
  font-weight: 700;
}

.view-section {
  display: grid;
  gap: 18px;
}

.metric-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.metric-grid.compact {
  margin-top: -2px;
}

.metric-card,
.panel,
.strategy-card,
.review-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.metric-card {
  min-height: 112px;
  padding: 16px;
}

.payment-qr-wrap {
  display: flex;
  justify-content: center;
  padding: 18px 0 8px;
}

.payment-qr {
  width: 220px;
  height: 220px;
  image-rendering: pixelated;
  background: #fff;
  border: 12px solid #fff;
  border-radius: 4px;
}

.payment-qr-placeholder {
  width: 220px;
  min-height: 80px;
  display: grid;
  place-items: center;
  padding: 18px;
  text-align: center;
  border: 1px dashed var(--line);
  color: var(--muted);
}

.payment-code-url {
  word-break: break-all;
  color: var(--muted);
  font-size: 12px;
}

.metric-card strong {
  display: block;
  margin-top: 12px;
  font-size: clamp(22px, 3vw, 31px);
  line-height: 1;
}

.metric-card small {
  display: block;
  margin-top: 10px;
  color: var(--muted);
}

.cloud-panel {
  display: grid;
  gap: 12px;
  margin-bottom: 2px;
}

.cloud-panel .panel-head > div:first-child {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.cloud-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.cloud-grid div {
  display: grid;
  gap: 7px;
  min-height: 86px;
  padding: 12px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fbfcf8;
}

.cloud-grid span,
.cloud-grid small {
  color: var(--muted);
  font-size: 12px;
}

.cloud-grid strong {
  min-width: 0;
  color: var(--ink);
  font-size: 15px;
  line-height: 1.35;
  overflow-wrap: anywhere;
}

.cloud-grid input {
  width: 100%;
  min-width: 0;
  border: 1px solid #d9e3d5;
  border-radius: 8px;
  padding: 9px 10px;
  color: var(--ink);
  background: #fff;
  font: inherit;
}

.positive {
  color: var(--red);
}

.negative {
  color: var(--green);
}

.two-column {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(320px, .75fr);
  gap: 18px;
}

.panel {
  min-width: 0;
  padding: 18px;
}

.panel-head {
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}

.panel-actions {
  gap: 8px;
}

.panel-head span {
  color: var(--muted);
  font-size: 13px;
}

.panel-head .status-ok {
  color: var(--green);
  font-weight: 700;
}

.panel-head .status-error {
  color: var(--red);
  font-weight: 700;
}

.chart-panel {
  min-height: 390px;
}

#equityChart {
  display: block;
  width: 100%;
  height: 318px;
  border: 1px solid #e4e8e1;
  border-radius: 8px;
  background: linear-gradient(180deg, #ffffff 0%, #f7faf6 100%);
}

.task-list {
  display: grid;
  gap: 8px;
}

.task-item {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid #edf0ea;
}

.task-item input {
  width: 17px;
  height: 17px;
  margin-top: 2px;
  accent-color: var(--green);
}

.task-item span {
  line-height: 1.45;
}

.task-item.is-done span {
  color: var(--muted);
  text-decoration: line-through;
}

.inline-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 42px;
  gap: 8px;
  margin-top: 14px;
}

.form-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.form-grid.single {
  grid-template-columns: 1fr;
}

label {
  display: grid;
  gap: 7px;
  color: #3a443b;
  font-size: 13px;
  font-weight: 650;
}

input,
select,
textarea {
  width: 100%;
  min-width: 0;
  border: 1px solid #cfd7cc;
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  outline: none;
}

input,
select {
  min-height: 40px;
  padding: 0 11px;
}

textarea {
  resize: vertical;
  padding: 10px 11px;
  line-height: 1.55;
}

.checkbox-label {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 40px;
  padding-top: 22px;
}

.checkbox-label input {
  width: 18px;
  min-height: 18px;
  accent-color: var(--green);
}

input:focus,
select:focus,
textarea:focus {
  border-color: var(--green);
  box-shadow: 0 0 0 3px rgba(20, 122, 84, .12);
}

.wide {
  grid-column: 1 / -1;
}

.form-actions {
  grid-column: 1 / -1;
  justify-content: flex-end;
}

.form-note {
  grid-column: 1 / -1;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
}

.inline-code {
  grid-column: 1 / -1;
  overflow-wrap: anywhere;
  padding: 10px 12px;
  border: 1px dashed var(--line);
  border-radius: 6px;
  background: #f7f9f5;
  color: var(--ink);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12px;
}

.table-panel {
  padding-bottom: 10px;
}

.service-hint {
  margin-top: 12px;
  padding: 11px 12px;
  border: 1px solid #dfe7dd;
  border-radius: 8px;
  background: #fbfcf8;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.table-wrap {
  overflow-x: auto;
}

table {
  width: 100%;
  min-width: 820px;
  border-collapse: collapse;
}

.wide-table {
  min-width: 1040px;
}

th,
td {
  padding: 12px 10px;
  border-bottom: 1px solid #ecefeb;
  text-align: left;
  vertical-align: top;
}

th {
  color: var(--muted);
  font-size: 12px;
  font-weight: 700;
}

td {
  font-size: 14px;
}

.tag {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 8px;
  border: 1px solid #cfd7cc;
  border-radius: 999px;
  background: #f8faf6;
  color: #435046;
  font-size: 12px;
  white-space: nowrap;
}

.tag.green {
  border-color: #b8dac8;
  background: var(--green-2);
  color: var(--green);
}

.tag.red {
  border-color: #efc9c9;
  background: var(--red-2);
  color: var(--red);
}

.tag.blue {
  border-color: #bdd7e9;
  background: #e8f2f8;
  color: var(--blue);
}

.muted {
  color: var(--muted);
}

.row-actions {
  display: flex;
  justify-content: flex-end;
  gap: 6px;
}

.row-actions .icon-button {
  width: 32px;
  height: 32px;
}

.quote-line {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 3px;
  white-space: nowrap;
}

.quote-line strong {
  font-size: 15px;
}

.score-pill {
  display: inline-grid;
  min-width: 44px;
  height: 32px;
  place-items: center;
  border: 1px solid #bfd7ca;
  border-radius: 8px;
  background: #f0f8f3;
  color: var(--green);
  font-weight: 800;
}

.analysis-list {
  display: grid;
  gap: 10px;
}

.analysis-item {
  display: grid;
  gap: 6px;
  padding: 12px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fbfcf8;
}

.analysis-item strong {
  font-size: 13px;
}

.analysis-item span {
  color: #465248;
  font-size: 14px;
  line-height: 1.5;
}

.risk-result {
  display: grid;
  align-content: start;
}

.risk-numbers {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.risk-numbers div {
  min-height: 104px;
  padding: 16px;
  border: 1px solid #e2e7df;
  border-radius: 8px;
  background: #fbfcf8;
}

.risk-numbers strong {
  display: block;
  margin-top: 12px;
  font-size: 28px;
  line-height: 1;
}

.strategy-grid,
.review-list,
.feedback-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.strategy-card,
.review-card,
.feedback-card,
.preopen-card,
.execution-card,
.exit-card,
.pretrade-card {
  display: grid;
  gap: 12px;
  padding: 16px;
}

.preopen-list,
.execution-list,
.exit-list {
  display: grid;
  gap: 14px;
}

.preopen-status {
  margin: -4px 0 14px;
  padding: 11px 13px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-2);
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}

.preopen-status.is-loading {
  border-color: #b7d2c5;
  background: var(--green-2);
  color: var(--green);
}

.preopen-status.is-warning {
  border-color: #e5ca8f;
  background: #fff8e8;
  color: var(--amber);
}

.preopen-status.is-error {
  border-color: #e2b7b7;
  background: var(--red-2);
  color: var(--red);
}

.state-line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface-2);
  color: var(--muted);
  font-size: 12px;
}

.state-line strong {
  color: var(--ink);
  font-size: 12px;
}

.state-line.is-degraded,
.state-line.is-empty {
  border-color: #e5ca8f;
  background: #fff8e8;
}

.state-line.is-error {
  border-color: #e2b7b7;
  background: var(--red-2);
}

.state-line.is-success {
  border-color: #b7d2c5;
  background: var(--green-2);
}

.watchlist-focus-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 10px;
}

.watchlist-focus-item {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 4px 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--surface-soft);
}

.watchlist-focus-item div {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.watchlist-focus-item small:last-child {
  grid-column: 1 / -1;
  color: var(--muted);
}

/* Pre-open strategy 2.0 */
.preopen-v2-hero {
  position: relative;
  overflow: hidden;
  margin-bottom: 18px;
  padding: 24px;
  border: 1px solid #233e35;
  border-radius: 16px;
  background:
    radial-gradient(circle at 88% 12%, rgba(79, 189, 135, 0.22), transparent 32%),
    linear-gradient(135deg, #10241e 0%, #18372e 58%, #214b3f 100%);
  color: #f4fbf7;
  box-shadow: 0 14px 38px rgba(17, 48, 38, 0.16);
}

.preopen-v2-hero::after {
  position: absolute;
  right: -70px;
  bottom: -110px;
  width: 250px;
  height: 250px;
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  content: "";
}

.strategy-hero-main {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 126px;
  align-items: start;
  gap: 28px;
}

.strategy-hero-copy {
  display: grid;
  gap: 13px;
}

.strategy-hero-kicker {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #a9c8bc;
  font-size: 12px;
  letter-spacing: 0.08em;
}

.strategy-hero-kicker strong {
  padding: 5px 10px;
  border: 1px solid rgba(156, 227, 193, 0.35);
  border-radius: 999px;
  color: #c6f4dc;
  background: rgba(104, 207, 157, 0.1);
  letter-spacing: 0;
}

.strategy-hero-kicker strong.negative {
  color: #ffd5d1;
  border-color: rgba(255, 160, 151, 0.35);
  background: rgba(180, 71, 61, 0.13);
}

.strategy-hero-copy h2 {
  margin: 0;
  color: #fff;
  font-size: clamp(25px, 3vw, 38px);
  line-height: 1.12;
  letter-spacing: -0.04em;
}

.strategy-hero-copy > p {
  max-width: 820px;
  margin: 0;
  color: #c4d8d0;
  font-size: 14px;
  line-height: 1.75;
}

.strategy-direction-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.strategy-direction-list > span {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 10px;
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.06);
}

.strategy-direction-list b {
  color: #fff;
  font-size: 13px;
}

.strategy-direction-list small {
  color: #9fc4b5;
  font-size: 10px;
}

.strategy-risk-line {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: #ffd0c8;
  font-size: 12px;
  line-height: 1.6;
}

.strategy-risk-line strong {
  flex: 0 0 auto;
  color: #ffad9f;
}

.preopen-v2-hero .panel-actions {
  margin-top: 2px;
}

.preopen-v2-hero .small-button {
  color: #e8f5ef;
  border-color: rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.07);
}

.strategy-hero-score {
  display: grid;
  place-items: center;
  align-content: center;
  aspect-ratio: 1;
  border: 1px solid rgba(178, 232, 205, 0.25);
  border-radius: 50%;
  background: rgba(9, 30, 23, 0.36);
  box-shadow: inset 0 0 0 9px rgba(255, 255, 255, 0.025);
}

.strategy-hero-score span,
.strategy-hero-score small {
  color: #a7c6ba;
  font-size: 11px;
}

.strategy-hero-score strong {
  margin: 3px 0;
  color: #fff;
  font-size: 38px;
  line-height: 1;
}

.dashboard-focus-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.growth-hero-strip {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: .75fr 1.5fr .55fr;
  gap: 8px;
  margin-top: 15px;
}

.growth-hero-strip > div {
  min-width: 0;
  padding: 9px 11px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 9px;
  background: rgba(255, 255, 255, .065);
}

.growth-hero-strip span {
  display: block;
  margin-bottom: 4px;
  color: #9fc0b4;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .08em;
}

.growth-hero-strip strong {
  display: -webkit-box;
  overflow: hidden;
  color: #eef8f3;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.45;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.growth-hero-strip b { color: #ffcf7a; font-size: 18px; }
.growth-hero-strip em { color: #fff; font-style: normal; }

.dashboard-focus-card {
  position: relative;
  display: grid;
  gap: 10px;
  min-width: 0;
  padding: 15px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 11px;
  color: inherit;
  text-align: left;
  background: rgba(255, 255, 255, 0.065);
  cursor: pointer;
  transition: transform 160ms ease, background 160ms ease;
}

.dashboard-focus-card:hover,
.dashboard-focus-card:focus-visible {
  transform: translateY(-2px);
  background: rgba(255, 255, 255, 0.1);
}

.focus-rank {
  position: absolute;
  top: 5px;
  right: 10px;
  color: rgba(255, 255, 255, 0.08);
  font: 700 48px/1 Georgia, serif;
}

.focus-stock-head {
  position: relative;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.focus-stock-head > div:first-child {
  display: grid;
  gap: 4px;
}

.focus-stock-head > div:first-child strong {
  color: #fff;
  font-size: 17px;
}

.focus-stock-head > div:first-child span {
  color: #a8c5ba;
  font-size: 11px;
}

.focus-score {
  display: grid;
  place-items: center;
  flex: 0 0 58px;
  height: 58px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
}

.focus-score b {
  color: #fff;
  font-size: 22px;
  line-height: 1;
}

.focus-score small {
  color: #9dbdb0;
  font-size: 9px;
}

.focus-score.is-strong { border-color: rgba(102, 224, 162, 0.58); }
.focus-score.is-watch { border-color: rgba(255, 206, 108, 0.54); }
.focus-score.is-cautious { border-color: rgba(255, 146, 133, 0.52); }

.dashboard-focus-card p {
  position: relative;
  z-index: 1;
  margin: 0;
  color: #d5e5df;
  font-size: 11px;
  line-height: 1.55;
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}

.dashboard-focus-card .focus-risk { -webkit-line-clamp: 1; }

.dashboard-focus-card p b { color: #fff; }
.dashboard-focus-card .focus-risk { color: #ffc8be; }

.dashboard-daily-assistant { display: grid; gap: 14px; margin-bottom: 18px; }
.daily-briefing-card { padding: 20px; border: 1px solid #174f3b; border-radius: 15px; color: #effbf5; background: linear-gradient(128deg, #0a2a20, #135842 62%, #0e3b2d); box-shadow: 0 16px 32px rgba(10, 47, 36, .16); }
.daily-briefing-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.daily-briefing-head > div:first-child > span { color: #9edac2; font-size: 10px; font-weight: 800; letter-spacing: .12em; }
.daily-briefing-head h2 { margin: 4px 0 6px; color: #fff; font-size: 24px; }
.daily-briefing-head p { margin: 0; color: #c2ddd2; font-size: 12px; }
.daily-briefing-head .small-button { color: #eafff4; border-color: rgba(232, 255, 244, .28); background: rgba(255, 255, 255, .08); }
.daily-index-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; margin: 17px 0 12px; }
.daily-index-grid > div { display: grid; gap: 3px; padding: 11px; border: 1px solid rgba(237, 255, 247, .12); border-radius: 9px; background: rgba(255,255,255,.065); }
.daily-index-grid span, .daily-index-grid small { color: #bdd6cc; font-size: 10px; }
.daily-index-grid strong { color: #fff; font-size: 17px; }
.daily-index-grid small.positive { color: #ffa79d; }.daily-index-grid small.negative { color: #99e8b7; }
.daily-briefing-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.daily-briefing-grid > div { min-width: 0; padding: 12px; border: 1px solid rgba(237, 255, 247, .1); border-radius: 9px; background: rgba(0,0,0,.11); }
.daily-briefing-grid > div > strong { color: #aee4cb; font-size: 11px; }
.daily-briefing-grid p { margin: 8px 0 0; color: #d7eee4; font-size: 11px; line-height: 1.6; }.daily-briefing-grid p b { color: #fff; }
.daily-direction { display: grid; gap: 3px; margin-top: 8px; }.daily-direction strong { color: #fff; font-size: 12px; }.daily-direction span, .daily-empty { color: #c2ddd2; font-size: 10px; line-height: 1.5; }
.daily-disclaimer { display: block; margin-top: 11px; color: #9dc1b2; font-size: 10px; }
.daily-opportunity-list, .daily-holding-list, .daily-alert-list { display: grid; gap: 8px; }
.daily-opportunity-item { display: flex; align-items: stretch; gap: 9px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); }
.daily-opportunity-item > button:first-child { display: grid; flex: 1; gap: 4px; padding: 0; border: 0; color: var(--ink); background: transparent; text-align: left; }.daily-opportunity-item strong { font-size: 13px; }.daily-opportunity-item small, .daily-opportunity-item span, .daily-opportunity-item p { color: var(--muted); font-size: 10px; line-height: 1.55; }.daily-opportunity-item p { margin: 0; }.daily-opportunity-item span b { color: var(--green); }
.dashboard-daily-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.daily-holding-item { display: grid; grid-template-columns: 1fr auto; gap: 5px 10px; padding: 10px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); }.daily-holding-item div { display: grid; gap: 2px; }.daily-holding-item strong { color: var(--ink); font-size: 12px; }.daily-holding-item span, .daily-holding-item small, .daily-holding-item p { color: var(--muted); font-size: 10px; line-height: 1.5; }.daily-holding-item p, .daily-holding-item > small { grid-column: 1 / -1; margin: 0; }.daily-holding-item b { font-size: 14px; }.daily-holding-item .positive { color: var(--red); }.daily-holding-item .negative { color: var(--green); }
.daily-alert-item { padding: 10px; border: 1px solid #ecdcae; border-radius: 9px; background: #fffbed; }.daily-alert-item.is-high { border-color: #edb9b0; background: #fff6f4; }.daily-alert-item strong { color: var(--ink); font-size: 12px; }.daily-alert-item p, .daily-alert-item small { display: block; margin: 5px 0 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.dashboard-analysis-actions { display: flex; flex-wrap: wrap; gap: 8px; }.daily-closing-copy { display: grid; gap: 6px; }.daily-closing-copy strong { color: var(--ink); font-size: 12px; }.daily-closing-copy p, .daily-closing-copy small { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }

.focus-mini-scores {
  display: flex;
  gap: 10px;
  color: #9fc0b4;
  font-size: 10px;
}

.dimension-score-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 9px;
}

.dimension-score {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 6px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--surface-2);
}

.dimension-score span { color: var(--muted); font-size: 11px; }
.dimension-score strong { color: var(--ink); font-size: 17px; line-height: 1; }
.dimension-score i {
  grid-column: 1 / -1;
  height: 3px;
  overflow: hidden;
  border-radius: 999px;
  background: #dfe7e2;
}
.dimension-score i em { display: block; height: 100%; border-radius: inherit; background: #c69432; }
.dimension-score.is-strong i em { background: #2e8a61; }
.dimension-score.is-cautious i em { background: #bb594e; }

.candidate-sector {
  color: var(--green);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.preopen-card h3 small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 500;
}

.score-primary {
  color: #fff !important;
  border-color: #1d6b4b !important;
  background: #1d6b4b !important;
}

.preopen-v2-section,
.assistant-plan-box,
.assistant-risk-box {
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fbfdfc;
}

.section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
}
.section-title span { color: var(--muted); font-size: 11px; }

.attention-reason-grid,
.assistant-reason-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
}

.assistant-reason-group {
  padding: 11px;
  border-radius: 8px;
  background: var(--surface-2);
}

.assistant-reason-group > strong { color: var(--ink); font-size: 12px; }
.assistant-reason-group ul,
.assistant-risk-box ul {
  display: grid;
  gap: 5px;
  margin: 8px 0 0;
  padding-left: 17px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.preopen-plan-grid {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 10px;
}

.assistant-plan-box > strong,
.assistant-risk-box > strong { color: var(--ink); font-size: 13px; }
.assistant-plan-box p { margin: 7px 0 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.assistant-plan-box p b { color: var(--ink); }
.assistant-risk-box { border-color: #eed5d1; background: #fffafa; }
.assistant-risk-box > strong { color: var(--red); }
.assistant-risk-box small { display: block; margin-top: 9px; color: var(--red); font-size: 10px; }

.learning-focus-panel { margin-top: 18px; }
.learning-focus-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.learning-focus-card {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 16px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--surface-2);
}
.learning-focus-card > span { color: #b8c8c0; font: 700 26px/1 Georgia, serif; }
.learning-focus-card h3 { margin: 0; color: var(--ink); font-size: 15px; }
.learning-focus-card strong { color: var(--green); font-size: 12px; }
.learning-focus-card p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.learning-focus-card small { color: var(--ink-2); font-size: 11px; line-height: 1.55; }

.assistant-hero { margin-bottom: 18px; }
.assistant-layout { align-items: start; }
.assistant-quick-questions { display: flex; flex-wrap: wrap; gap: 7px; }
.assistant-shortcuts { display: flex; flex-wrap: wrap; gap: 7px; align-content: start; }
.assistant-search-shell label { position: relative; }
.assistant-search-results { position: absolute; z-index: 8; top: calc(100% - 2px); right: 0; left: 0; display: grid; overflow: hidden; border: 1px solid var(--line); border-radius: 9px; background: #fff; box-shadow: 0 10px 28px rgba(24, 45, 36, .16); }
.assistant-search-results button { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 10px 12px; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); background: #fff; text-align: left; }
.assistant-search-results button:hover { background: var(--green-2); }
.assistant-search-results small, .assistant-search-results span { color: var(--muted); font-size: 10px; }
.assistant-search-results span { padding: 10px 12px; }
.assistant-tag-row { display: flex; flex-wrap: wrap; gap: 6px; }
.assistant-opportunity-tag, .assistant-risk-tag { padding: 3px 7px; border-radius: 999px; font-size: 10px; font-weight: 700; }
.assistant-opportunity-tag { color: #1d6b4b; background: #e4f4eb; }
.assistant-risk-tag { color: #a34338; background: #fff0ed; }
.assistant-history-card, .assistant-data-warning { padding: 13px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.assistant-history-card > strong { color: var(--ink); font-size: 13px; }
.assistant-history-card p, .assistant-history-card small { color: var(--muted); font-size: 11px; line-height: 1.55; }
.assistant-stat-grid, .assistant-compare-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
.assistant-stat-grid span, .assistant-compare-grid > div { display: grid; gap: 3px; padding: 9px; border-radius: 8px; background: #fff; color: var(--muted); font-size: 10px; }
.assistant-stat-grid b, .assistant-compare-grid span { color: var(--ink); font-size: 13px; }
.assistant-compare-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.assistant-compare-grid strong { color: var(--muted); font-size: 10px; }
.assistant-compare-grid b { color: var(--green); }
.assistant-data-warning { border-color: #ecdcae; color: #7a6025; background: #fffbed; font-size: 11px; line-height: 1.5; }
.stock-assistant-result { min-width: 0; }
.assistant-backtest-card,
.assistant-backtest-result { display: grid; gap: 14px; margin-top: 14px; padding: 16px; border: 1px solid var(--line); border-radius: 16px; background: color-mix(in srgb, var(--panel) 88%, var(--accent) 12%); min-width: 0; }
.assistant-backtest-chart { display: grid; gap: 8px; min-width: 0; }
.assistant-backtest-chart svg { width: 100%; height: 220px; display: block; overflow: visible; border: 1px solid var(--line); border-radius: 10px; background: var(--panel); }
.backtest-line { fill: none; stroke-width: 1.8; vector-effect: non-scaling-stroke; }
.backtest-line.strategy { stroke: #2563eb; }
.backtest-line.benchmark { stroke: #d97706; stroke-dasharray: 4 3; }
.assistant-chart-legend { display: flex; gap: 14px; color: var(--muted); font-size: 12px; }
.strategy-dot::before, .benchmark-dot::before { content: ""; display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 50%; background: #2563eb; }
.benchmark-dot::before { background: #d97706; }
.assistant-backtest-summary { display: grid; gap: 9px; padding: 14px; border-radius: 12px; background: var(--panel); }
.assistant-backtest-summary p { margin: 4px 0 0; color: var(--muted); line-height: 1.55; }
.assistant-backtest-trades { min-width: 0; }

.assistant-factor-card { display: grid; gap: 12px; margin-top: 14px; padding: 16px; border: 1px solid var(--line); border-radius: 16px; background: var(--surface-2); min-width: 0; }
.assistant-factor-card .metric-grid { margin-top: 0; }
.assistant-factor-card .metric-card small { display: block; margin-top: 4px; color: var(--muted); font-size: 10px; }
.assistant-factor-card .metric-card.composite { border-color: var(--green); }
.assistant-factor-details { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.assistant-factor-details span { display: flex; justify-content: space-between; gap: 8px; padding: 9px 10px; border-radius: 9px; background: var(--surface); color: var(--muted); font-size: 11px; }
.assistant-factor-details b { color: var(--ink); }
.assistant-factor-summary { display: grid; gap: 8px; padding-top: 12px; border-top: 1px solid var(--line); }
.assistant-factor-summary p { margin: 4px 0 0; color: var(--muted); line-height: 1.55; }
.assistant-factor-summary small { color: var(--muted); }
@media (max-width: 640px) { .assistant-factor-details { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.assistant-search-shell { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; margin-bottom: 14px; }
.assistant-holding-form,
.assistant-membership-note,
.assistant-library-card { padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.assistant-holding-form { align-self: start; }
.assistant-membership-note { grid-column: 1 / -1; padding: 10px 12px; color: var(--muted); font-size: 11px; }
.two-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.three-field-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.assistant-financial-card, .assistant-research-section { padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.assistant-financial-card p, .assistant-research-section p { margin: 9px 0 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
.assistant-research-section { background: #fff; }
.assistant-research-section strong { color: var(--ink); font-size: 13px; }
.assistant-radar-list { display: grid; gap: 8px; }
.assistant-radar-list > button { display: grid; gap: 5px; padding: 12px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); background: #fff; text-align: left; }
.assistant-radar-list > button:hover { border-color: var(--green); background: var(--green-2); }
.assistant-radar-list span, .assistant-radar-list small { color: var(--muted); font-size: 11px; line-height: 1.55; }
.assistant-library-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 14px; }
.assistant-library-list { display: grid; gap: 7px; }
.assistant-library-item { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 8px; padding: 9px; border: 1px solid var(--line); border-radius: 8px; color: var(--ink); background: #fff; text-align: left; }
.assistant-library-item > button:first-child,
.assistant-library-item.history-item { display: grid; flex: 1; gap: 3px; padding: 0; border: 0; color: inherit; background: transparent; text-align: left; }
.assistant-library-item strong { font-size: 12px; }
.assistant-library-item small { color: var(--muted); font-size: 10px; }
.assistant-result-actions { justify-content: flex-start; }
.holding-analysis-box { border-color: #c7dcd1; }
.assistant-answer-card { display: grid; gap: 14px; }
.assistant-answer-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.assistant-answer-head > div:first-child { display: grid; gap: 4px; }
.assistant-answer-head > div:first-child > span { color: var(--green); font-size: 11px; font-weight: 700; }
.assistant-answer-head h3 { margin: 0; color: var(--ink); font-size: 22px; }
.assistant-answer-head h3 small { color: var(--muted); font-size: 12px; font-weight: 500; }
.assistant-answer-card .focus-score { border-color: var(--line); }
.assistant-answer-card .focus-score b { color: var(--ink); }
.assistant-answer-card .focus-score small { color: var(--muted); }
.assistant-direct-answer {
  margin: 0;
  padding: 12px 14px;
  border-left: 3px solid var(--green);
  color: var(--ink);
  background: var(--green-2);
  font-size: 13px;
  line-height: 1.7;
}
.assistant-disclaimer { color: var(--muted); font-size: 10px; }
.assistant-detail { overflow: hidden; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); }
.assistant-detail > summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; cursor: pointer; color: var(--ink); font-size: 13px; font-weight: 700; list-style: none; }
.assistant-detail > summary::-webkit-details-marker { display: none; }
.assistant-detail > summary span { color: var(--muted); font-size: 10px; font-weight: 500; }
.assistant-detail[open] > summary { border-bottom: 1px solid var(--line); background: #fff; }
.assistant-detail-body { padding: 12px; }
.assistant-score-explain { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.assistant-score-explain article { display: grid; gap: 6px; padding: 10px; border-radius: 8px; background: #fff; }
.assistant-score-explain article > div { display: flex; align-items: baseline; justify-content: space-between; gap: 5px; }
.assistant-score-explain strong { color: var(--ink); font-size: 11px; }
.assistant-score-explain span, .assistant-score-explain p, .assistant-score-explain small { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.45; }
.assistant-score-explain b { color: var(--green); font-size: 13px; }.assistant-score-explain b small { font-weight: 500; }
.assistant-risk-card, .assistant-logic-card { padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.assistant-risk-card > p { margin: 0 0 10px; color: var(--muted); font-size: 11px; line-height: 1.55; }
.assistant-risk-card.is-low { border-color: #b9dbc9; background: #fbfefc; }.assistant-risk-card.is-medium { border-color: #ecdcae; background: #fffdf6; }.assistant-risk-card.is-high { border-color: #eed5d1; background: #fffafa; }
.assistant-risk-level { padding: 4px 7px; border-radius: 999px; font-size: 10px !important; font-weight: 700; }.is-low .assistant-risk-level { color: #19714a; background: #e5f4eb; }.is-medium .assistant-risk-level { color: #8a6420; background: #fff2c9; }.is-high .assistant-risk-level { color: #a34338; background: #fff0ed; }
.assistant-risk-factor-grid, .assistant-logic-grid, .assistant-cycle-grid, .assistant-simulation-grid, .assistant-pk-detail { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.assistant-risk-factor-grid > div, .assistant-logic-grid > div, .assistant-cycle-card, .assistant-pk-detail > div { display: grid; gap: 5px; padding: 10px; border-radius: 8px; background: var(--surface-2); }
.assistant-risk-factor-grid strong, .assistant-logic-grid strong, .assistant-cycle-card strong, .assistant-pk-detail strong { color: var(--ink); font-size: 11px; }
.assistant-risk-factor-grid small, .assistant-logic-grid p, .assistant-cycle-card p, .assistant-cycle-card small, .assistant-pk-detail p { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.risk-factor-level { width: fit-content; padding: 2px 6px; border-radius: 999px; color: #7a6025; background: #fff2c9; font-size: 10px; font-weight: 700; }.risk-factor-level.is-低 { color: #19714a; background: #e5f4eb; }.risk-factor-level.is-高 { color: #a34338; background: #fff0ed; }
.assistant-logic-card { background: #fbfdfc; }.assistant-ai-view { margin: 0 0 10px; padding: 10px 12px; border-left: 3px solid var(--green); color: var(--ink); background: var(--green-2); font-size: 12px; line-height: 1.65; }.assistant-ai-view b { color: var(--green); }
.assistant-cycle-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }.assistant-cycle-card > span { color: var(--muted); font-size: 10px; }.assistant-cycle-card > strong { font-size: 16px; }.assistant-cycle-card.is-上涨 > strong { color: #1d6b4b; }.assistant-cycle-card.is-下降 > strong { color: var(--red); }.assistant-cycle-card.is-震荡 > strong { color: #9a7428; }
.assistant-simulation-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.assistant-simulation-grid .assistant-reason-group { border: 1px solid var(--line); background: #fff; }
.assistant-institution-head { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }.assistant-institution-head span { display: grid; gap: 3px; padding: 9px; border-radius: 8px; background: #fff; color: var(--muted); font-size: 10px; }.assistant-institution-head b { color: var(--ink); font-size: 12px; }
.assistant-institution-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin-top: 9px; }.assistant-institution-grid > div { display: grid; gap: 5px; padding: 9px; border-radius: 8px; background: #fff; }.assistant-institution-grid strong { color: var(--ink); font-size: 10px; }.assistant-institution-grid small { color: var(--muted); font-size: 10px; line-height: 1.45; }.assistant-institution-grid span { color: #9a7428; font-size: 9px; }.assistant-detail-note { margin: 9px 0 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.assistant-pk-detail p b { color: var(--ink); }
.dashboard-portfolio-focus { margin-top: 14px; }.portfolio-focus-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }.portfolio-focus-grid > div { display: grid; gap: 4px; padding: 11px; border-radius: 8px; background: var(--surface-2); }.portfolio-focus-grid span { color: var(--muted); font-size: 10px; }.portfolio-focus-grid strong { color: var(--ink); font-size: 14px; }.portfolio-focus-grid .is-高 { color: var(--red); }.portfolio-focus-grid .is-中 { color: #9a7428; }.portfolio-focus-grid .is-低 { color: var(--green); }.portfolio-focus-grid > p { grid-column: 1 / -1; margin: 0; padding: 10px 12px; border-left: 3px solid var(--green); background: var(--green-2); color: var(--ink); font-size: 12px; line-height: 1.6; }.portfolio-focus-stocks { grid-column: span 1; }
.portfolio-center-hero .panel-head > div { display: grid; gap: 5px; }.portfolio-center-hero h2 { margin: 0; }.portfolio-center-hero p { max-width: 720px; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.6; }.portfolio-eyebrow { color: var(--green); font-size: 10px; font-weight: 800; letter-spacing: .08em; }.portfolio-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 9px; margin-top: 14px; }.portfolio-summary-grid article { display: grid; gap: 5px; padding: 12px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface-2); }.portfolio-summary-grid span, .portfolio-summary-grid small { color: var(--muted); font-size: 10px; }.portfolio-summary-grid strong { color: var(--ink); font-size: 20px; }.portfolio-summary-grid strong.is-high { color: var(--red); }.portfolio-summary-grid strong.is-medium { color: #9a7428; }.portfolio-summary-grid strong.is-low { color: var(--green); }
.portfolio-center-layout { margin-top: 14px; }.portfolio-action-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }.portfolio-action-grid .small-button { min-height: 38px; }.portfolio-inline-report { display: grid; gap: 6px; min-height: 78px; margin-top: 12px; padding: 11px; border-radius: 8px; background: var(--surface-2); color: var(--muted); font-size: 11px; line-height: 1.55; }.portfolio-inline-report strong { color: var(--ink); }.portfolio-inline-report p { margin: 0; }.portfolio-inline-report small { color: var(--muted); font-size: 10px; }
.portfolio-diagnosis-list { display: grid; gap: 10px; }.portfolio-diagnosis-card { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); border-left-width: 4px; border-radius: 10px; background: #fff; }.portfolio-diagnosis-card.is-low { border-left-color: var(--green); }.portfolio-diagnosis-card.is-medium { border-left-color: #d4a63d; }.portfolio-diagnosis-card.is-high { border-left-color: var(--red); }.portfolio-diagnosis-head { display: flex; align-items: start; justify-content: space-between; gap: 10px; }.portfolio-diagnosis-head > div { display: grid; gap: 3px; }.portfolio-diagnosis-head strong { color: var(--ink); font-size: 15px; }.portfolio-diagnosis-head strong small, .portfolio-diagnosis-head span, .portfolio-diagnosis-head small { color: var(--muted); font-size: 10px; }.portfolio-diagnosis-head > div:last-child { justify-items: end; }.portfolio-diagnosis-head > div:last-child b { font-size: 17px; }.portfolio-diagnosis-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }.portfolio-diagnosis-metrics span, .portfolio-trend-grid span, .portfolio-risk-grid span { display: grid; gap: 4px; padding: 8px; border-radius: 7px; background: var(--surface-2); color: var(--muted); font-size: 10px; }.portfolio-diagnosis-metrics b, .portfolio-trend-grid b, .portfolio-risk-grid b { color: var(--ink); font-size: 12px; }.portfolio-trend-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }.portfolio-trend-grid small, .portfolio-risk-grid small { color: var(--muted); font-size: 9px; line-height: 1.45; }.portfolio-risk-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }.portfolio-diagnosis-card > p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.6; }.portfolio-diagnosis-card > p b { color: var(--ink); }.portfolio-diagnosis-card > small { color: var(--muted); font-size: 10px; }.portfolio-report-history { display: grid; gap: 7px; }.portfolio-history-item { display: grid; gap: 5px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); color: var(--ink); text-align: left; cursor: pointer; }.portfolio-history-item small { color: var(--muted); font-size: 10px; line-height: 1.45; }
.assistant-data-quality, .assistant-holding-decision, .assistant-risk-radar, .assistant-scenario-card, .assistant-observation-card, .assistant-transaction-plan { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: #fff; }
.assistant-data-quality { background: #fbfdfc; }.assistant-data-quality > p, .assistant-transaction-plan > p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }.assistant-data-quality > div { display: flex; flex-wrap: wrap; gap: 6px; }.assistant-data-quality span { padding: 4px 7px; border-radius: 999px; font-size: 10px; font-weight: 700; }.assistant-data-quality .is-ready { color: #176b48; background: #e5f4eb; }.assistant-data-quality .is-limited { color: #8a6420; background: #fff2c9; }
.assistant-trust-card { gap: 9px; }.assistant-trust-summary, .assistant-trust-capabilities, .assistant-trust-valuation { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 7px; }.assistant-trust-summary span, .assistant-trust-capabilities span, .assistant-trust-valuation span { display: grid; gap: 3px; padding: 8px; border-radius: 8px; background: var(--surface-2); color: var(--muted); font-size: 10px; }.assistant-trust-summary b, .assistant-trust-capabilities b, .assistant-trust-valuation b { color: var(--ink); font-size: 11px; }.assistant-trust-card > small { color: var(--muted); font-size: 10px; line-height: 1.5; }
.assistant-decision-hero { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; padding: 18px; border: 1px solid #c7dcd1; border-radius: 12px; background: linear-gradient(135deg, #f7fcf8, #fff); }.assistant-decision-hero > div:first-child { display: grid; align-content: start; gap: 4px; }.assistant-decision-hero > div:first-child > span { color: var(--green); font-size: 11px; font-weight: 700; }.assistant-decision-hero h3 { margin: 0; color: var(--ink); font-size: 24px; }.assistant-decision-hero h3 small { color: var(--muted); font-size: 12px; font-weight: 500; }.assistant-decision-hero > div:first-child > p { margin: 0; color: var(--muted); font-size: 11px; }.assistant-decision-score, .assistant-decision-state { display: grid; min-width: 84px; align-content: center; justify-items: center; padding: 10px; border-radius: 10px; background: #fff; text-align: center; }.assistant-decision-score { border: 1px solid var(--line); }.assistant-decision-score b { color: var(--green); font-size: 28px; line-height: 1; }.assistant-decision-score small, .assistant-decision-state small { color: var(--muted); font-size: 10px; }.assistant-decision-state { background: #fff2c9; color: #8a6420; }.assistant-decision-state.is-关注 { background: #e5f4eb; color: #176b48; }.assistant-decision-state.is-风险较高 { background: #fff0ed; color: #a34338; }.assistant-decision-view { grid-column: 1 / -1; margin: 0; padding: 10px 12px; border-left: 3px solid var(--green); background: var(--green-2); color: var(--ink); font-size: 12px; line-height: 1.65; }.assistant-core-reasons { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }.assistant-core-reasons > div { display: grid; grid-template-columns: 1fr auto; gap: 4px; padding: 10px; border-radius: 8px; background: #fff; }.assistant-core-reasons span { color: var(--muted); font-size: 10px; }.assistant-core-reasons b { color: var(--green); font-size: 14px; }.assistant-core-reasons p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 10px; line-height: 1.5; }
.assistant-holding-decision { border-color: #c7dcd1; background: #fbfefc; }.assistant-holding-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }.assistant-holding-metrics span { display: grid; gap: 4px; padding: 10px; border-radius: 8px; background: #fff; color: var(--muted); font-size: 10px; }.assistant-holding-metrics b { color: var(--ink); font-size: 14px; }.assistant-holding-review { display: grid; gap: 7px; }.assistant-holding-review p { margin: 0; color: var(--muted); font-size: 11px; line-height: 1.55; }.assistant-holding-review b { color: var(--ink); }
.assistant-cost-simulation { display: grid; gap: 9px; margin-top: 2px; padding: 12px; border: 1px solid #dce7df; border-radius: 9px; background: #fff; }.assistant-cost-simulation > p, .assistant-cost-simulation > small { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.5; }.assistant-cost-simulation > div { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }.assistant-cost-simulation article { display: grid; gap: 4px; padding: 8px; border-radius: 7px; background: var(--surface-2); }.assistant-cost-simulation strong { color: var(--ink); font-size: 11px; }.assistant-cost-simulation span, .assistant-cost-simulation small { color: var(--muted); font-size: 9px; line-height: 1.4; }.assistant-cost-simulation b { color: var(--green); font-size: 12px; }
.assistant-risk-radar.is-高 { border-color: #eed5d1; background: #fffafa; }.assistant-risk-radar.is-低 { border-color: #b9dbc9; background: #fbfefc; }.assistant-radar-factor-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }.assistant-radar-factor-grid article { display: grid; gap: 6px; padding: 10px; border-radius: 8px; background: var(--surface-2); }.assistant-radar-factor-grid article > div { display: flex; justify-content: space-between; gap: 6px; }.assistant-radar-factor-grid strong { color: var(--ink); font-size: 10px; }.assistant-radar-factor-grid b { color: #a34338; font-size: 12px; }.assistant-radar-factor-grid p, .assistant-radar-factor-grid small { margin: 0; color: var(--muted); font-size: 9px; line-height: 1.5; }
.assistant-scenario-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }.assistant-scenario-grid article { display: grid; gap: 7px; padding: 11px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-2); }.assistant-scenario-grid article.is-optimistic { border-color: #b9dbc9; }.assistant-scenario-grid article.is-bearish { border-color: #eed5d1; }.assistant-scenario-grid article > div { display: flex; align-items: center; justify-content: space-between; gap: 7px; }.assistant-scenario-grid strong { color: var(--ink); font-size: 12px; }.assistant-scenario-grid b { color: var(--green); font-size: 11px; }.assistant-scenario-grid p, .assistant-scenario-card > small { margin: 0; color: var(--muted); font-size: 10px; line-height: 1.55; }
.assistant-observation-card ol { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: 0; padding: 0; list-style-position: inside; }.assistant-observation-card li { display: grid; gap: 4px; padding: 9px; border-radius: 8px; background: var(--surface-2); color: var(--green); font-size: 11px; }.assistant-observation-card li strong, .assistant-observation-card li span, .assistant-observation-card li small { color: var(--ink); }.assistant-observation-card li span, .assistant-observation-card li small { font-size: 10px; line-height: 1.45; }.assistant-observation-card li small { color: var(--muted); }
.assistant-plan-cycle-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; }.assistant-plan-cycle-grid span { display: grid; gap: 3px; padding: 8px; border-radius: 7px; background: var(--surface-2); color: var(--muted); font-size: 10px; }.assistant-plan-cycle-grid b { color: var(--ink); font-size: 11px; }

@media (max-width: 980px) {
  .learning-focus-grid { grid-template-columns: 1fr; }
  .preopen-plan-grid { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
  .daily-briefing-card { padding: 15px; border-radius: 12px; }
  .daily-briefing-head, .daily-opportunity-item { align-items: flex-start; flex-direction: column; }
  .daily-briefing-head .panel-actions { width: 100%; }
  .daily-index-grid, .daily-briefing-grid, .dashboard-daily-grid { grid-template-columns: 1fr; }
  .daily-index-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .daily-opportunity-item > .small-button { width: 100%; }
  .preopen-v2-hero { padding: 18px; border-radius: 12px; }
  .strategy-hero-main { grid-template-columns: 1fr; gap: 16px; }
  .strategy-hero-score { width: 104px; justify-self: start; }
  .strategy-hero-score strong { font-size: 31px; }
  .dashboard-focus-grid { grid-template-columns: 1fr; margin-top: 16px; }
  .growth-hero-strip { grid-template-columns: 1fr; }
  .dimension-score-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dimension-score:last-child { grid-column: 1 / -1; }
  .attention-reason-grid,
  .assistant-reason-grid,
  .assistant-search-shell,
  .assistant-library-grid,
  .two-field-grid,
  .three-field-grid { grid-template-columns: 1fr; }
  .assistant-membership-note { grid-column: auto; }
  .assistant-stat-grid, .assistant-compare-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .assistant-score-explain, .assistant-institution-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .assistant-institution-head { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .assistant-cycle-grid, .assistant-core-reasons, .assistant-holding-metrics, .assistant-cost-simulation > div, .assistant-radar-factor-grid, .assistant-scenario-grid, .assistant-observation-card ol, .assistant-plan-cycle-grid { grid-template-columns: 1fr; }
  .assistant-trust-summary, .assistant-trust-capabilities, .assistant-trust-valuation { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .assistant-decision-hero { grid-template-columns: 1fr; }.assistant-decision-score, .assistant-decision-state { justify-self: start; min-width: 110px; }.assistant-decision-view, .assistant-core-reasons { grid-column: auto; }
  .portfolio-focus-grid, .portfolio-summary-grid, .portfolio-diagnosis-metrics, .portfolio-trend-grid, .portfolio-risk-grid { grid-template-columns: 1fr; }.portfolio-focus-stocks { grid-column: auto; }.portfolio-action-grid { grid-template-columns: 1fr; }
  .assistant-search-results button { align-items: flex-start; flex-direction: column; gap: 2px; }
}

.section-divider {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 12px;
  margin-top: 4px;
  padding: 12px 0 2px;
  border-top: 1px solid #dde7db;
}

.section-divider h3 {
  margin: 0;
  color: var(--ink);
  font-size: 16px;
}

.section-divider span {
  color: var(--muted);
  font-size: 12px;
  text-align: right;
}

.feedback-card,
.preopen-card,
.execution-card,
.exit-card,
.pretrade-card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
}

.execution-card.is-ready {
  border-color: #e2b7b7;
  background: #fffafa;
}

.execution-card.is-abandon {
  border-color: #bdd7ca;
  background: #f7fbf8;
}

.execution-card.is-watch {
  border-color: #bdd7e9;
  background: #f8fbfd;
}

.exit-panel .panel-head > div:first-child {
  display: grid;
  gap: 6px;
}

.exit-card.is-ready {
  border-color: #e2b7b7;
  background: #fffafa;
}

.exit-card.is-abandon {
  border-color: #bdd7ca;
  background: #f7fbf8;
}

.exit-card.is-watch {
  border-color: #bdd7e9;
  background: #f8fbfd;
}

.loop-steps {
  display: grid;
  gap: 10px;
}

.loop-hero-panel {
  display: grid;
  gap: 14px;
}

.loop-hero-main {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
}

.loop-hero-main h2 {
  margin-top: 6px;
  font-size: 24px;
  line-height: 1.2;
}

.loop-hero-main p {
  max-width: 860px;
  margin-top: 8px;
  color: #465248;
  font-size: 15px;
  line-height: 1.6;
}

.hard-stop-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

.hard-stop {
  display: grid;
  gap: 6px;
  min-height: 84px;
  padding: 10px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fbfcf8;
}

.hard-stop span {
  display: inline-grid;
  width: fit-content;
  min-height: 22px;
  padding: 0 8px;
  place-items: center;
  border-radius: 999px;
  background: #fff4dc;
  color: var(--amber);
  font-size: 12px;
  font-weight: 800;
}

.hard-stop strong {
  font-size: 13px;
}

.hard-stop em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  line-height: 1.4;
}

.hard-stop.is-pass {
  border-color: #b8dac8;
  background: #f7fbf8;
}

.hard-stop.is-pass span {
  background: var(--green-2);
  color: var(--green);
}

.hard-stop.is-fail {
  border-color: #efc9c9;
  background: #fff7f7;
}

.hard-stop.is-fail span {
  background: var(--red-2);
  color: var(--red);
}

.loop-step {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  padding: 12px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fbfcf8;
}

.loop-step > span {
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 999px;
  background: #eef3ef;
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.loop-step strong {
  display: block;
  margin-bottom: 4px;
  font-size: 14px;
}

.loop-step p {
  color: #465248;
  font-size: 13px;
  line-height: 1.5;
}

.loop-step.is-complete {
  border-color: #b8dac8;
  background: #f7fbf8;
}

.loop-step.is-complete > span {
  background: var(--green-2);
  color: var(--green);
}

.loop-step.is-block {
  border-color: #efc9c9;
  background: #fff7f7;
}

.loop-step.is-block > span {
  background: var(--red-2);
  color: var(--red);
}

.loop-actions {
  flex-wrap: wrap;
  margin-top: 14px;
}

.pretrade-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.pretrade-card.is-ready {
  border-color: #e2b7b7;
  background: #fffafa;
}

.pretrade-card.is-abandon {
  border-color: #bdd7ca;
  background: #f7fbf8;
}

.pretrade-card.is-watch {
  border-color: #bdd7e9;
  background: #f8fbfd;
}

.logic-block {
  display: grid;
  gap: 8px;
  padding: 12px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fbfcf8;
}

.logic-block p {
  color: #465248;
  font-size: 14px;
  line-height: 1.55;
}

.logic-block ul {
  display: grid;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.logic-block li {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: 8px;
  color: #3c463d;
  font-size: 13px;
  line-height: 1.45;
}

.check-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.check-list li {
  display: grid;
  grid-template-columns: 52px 118px minmax(0, 1fr);
  gap: 8px;
  align-items: start;
  padding: 9px 10px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fff;
  color: #3c463d;
  font-size: 13px;
  line-height: 1.45;
}

.check-list span {
  display: inline-grid;
  min-height: 24px;
  place-items: center;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.check-list strong {
  color: var(--ink);
}

.check-list em {
  min-width: 0;
  color: #4f5f66;
  font-style: normal;
  overflow-wrap: anywhere;
}

.check-pass span {
  background: var(--red-2);
  color: var(--red);
}

.check-wait span {
  background: #fff4dc;
  color: var(--amber);
}

.check-fail span {
  background: var(--green-2);
  color: var(--green);
}

.intraday-push-panel {
  display: grid;
  gap: 12px;
}

.intraday-push-panel .panel-head > div:first-child {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.push-grid {
  display: grid;
  grid-template-columns: minmax(108px, .45fr) minmax(140px, .55fr) minmax(180px, 1fr) minmax(0, 1.6fr);
  gap: 10px;
}

.push-grid div {
  display: grid;
  gap: 8px;
  min-height: 82px;
  padding: 12px;
  border: 1px solid #e0e8de;
  border-radius: 8px;
  background: #fbfcf8;
}

.push-grid span {
  color: var(--muted);
  font-size: 12px;
}

.push-grid strong {
  min-width: 0;
  color: var(--ink);
  font-size: 15px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.push-log {
  display: grid;
  gap: 8px;
}

.push-log-item {
  display: grid;
  grid-template-columns: 136px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 10px 12px;
  border: 1px solid #dbe4d9;
  border-radius: 8px;
  background: #fbfcf8;
}

.push-log-item span {
  color: var(--muted);
  font-size: 12px;
}

.push-log-item strong {
  color: #3c463d;
  font-size: 13px;
  line-height: 1.45;
}

.push-log-item.is-ready {
  border-color: #efc9c9;
  background: #fff7f7;
}

.push-log-item.is-abandon {
  border-color: #b8dac8;
  background: #f5fbf8;
}

.push-log-item.is-change {
  border-color: #bdd7e9;
  background: #f7fbfe;
}

.push-log-item.is-risk {
  border-color: #e4b98e;
  background: #fff8ef;
}

.evidence-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.evidence-box {
  display: grid;
  gap: 6px;
  padding: 10px;
  border: 1px solid #e1e5ea;
  border-radius: 8px;
  background: #f7f9fb;
}

.evidence-box strong {
  font-size: 13px;
  color: #263238;
}

.evidence-box p {
  color: #4f5f66;
  font-size: 13px;
  line-height: 1.5;
}

.report-textarea {
  margin-top: 12px;
  min-height: 360px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: 13px;
}

.score-block {
  display: grid;
  gap: 8px;
  padding: 12px;
  border: 1px solid #e1e8df;
  border-radius: 8px;
  background: #fbfcf8;
}

.score-bar {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #e4e9e1;
}

.score-bar span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--green), #b73939);
}

.score-copy {
  display: grid;
  gap: 4px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.score-copy strong {
  color: var(--ink);
  font-size: 14px;
}

.card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.card-head div {
  min-width: 0;
}

.card-head h3 {
  overflow-wrap: anywhere;
}

.card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.card-text {
  color: #3c463d;
  font-size: 14px;
  line-height: 1.58;
  white-space: pre-wrap;
}

.review-markdown {
  padding: 12px;
  border: 1px solid #e1e8df;
  border-radius: 8px;
  background: #fbfcf8;
}

.prompt-panel textarea {
  min-height: 440px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
  font-size: 13px;
}

.empty-state {
  padding: 28px;
  border: 1px dashed #cbd4c8;
  border-radius: 8px;
  background: #fbfcf8;
  color: var(--muted);
  text-align: center;
}

.empty-state.compact {
  padding: 14px;
  font-size: 13px;
}

.toast {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 30;
  max-width: min(360px, calc(100vw - 36px));
  padding: 11px 13px;
  border: 1px solid #c4d9ce;
  border-radius: 8px;
  background: #f4fbf7;
  color: var(--green);
  box-shadow: var(--shadow);
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity .18s ease, transform .18s ease;
}

.toast.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.service-status-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  min-height: 100vh;
  padding: 24px;
  background:
    linear-gradient(135deg, rgba(246, 247, 241, 0.96), rgba(238, 243, 239, 0.96)),
    var(--bg);
}

.service-status-panel {
  width: min(560px, 100%);
  padding: 28px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.service-status-kicker {
  display: inline-block;
  margin-bottom: 10px;
  color: var(--amber);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0;
}

.service-status-panel h1 {
  margin: 0 0 10px;
  font-size: 28px;
}

.service-status-panel p {
  margin: 0;
  color: var(--muted);
  line-height: 1.7;
}

.service-status-meta {
  display: grid;
  gap: 10px;
  margin: 18px 0;
}

.service-status-meta div {
  display: grid;
  grid-template-columns: 110px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
}

.service-status-meta dt {
  color: var(--muted);
  font-size: 13px;
}

.service-status-meta dd {
  min-width: 0;
  margin: 0;
  overflow-wrap: anywhere;
}

.service-status-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 20px 0 12px;
}

.version-refresh-banner {
  position: fixed;
  right: 20px;
  bottom: 20px;
  z-index: 1001;
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: calc(100vw - 40px);
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: var(--shadow);
}

.dependency-status-banner {
  position: fixed;
  top: 16px;
  left: 50%;
  z-index: 1001;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: min(760px, calc(100vw - 32px));
  padding: 11px 12px;
  border: 1px solid #d7c58c;
  border-radius: 8px;
  background: #fff8dd;
  color: #5f4a0c;
  box-shadow: var(--shadow);
  transform: translateX(-50%);
}

.dependency-status-banner span {
  min-width: 0;
  flex: 1;
  line-height: 1.55;
}

.dependency-status-banner button {
  width: 28px;
  height: 28px;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
}

.today-flow-panel {
  position: relative;
  overflow: hidden;
  padding: clamp(20px, 3vw, 30px);
  border-color: #b7d2c4;
  background:
    radial-gradient(circle at 90% 15%, rgba(255, 255, 255, 0.75), transparent 32%),
    linear-gradient(135deg, #e7f4ec 0%, #f8fbf6 70%);
}

.investment-growth-cockpit {
  display: grid;
  gap: 16px;
  margin-bottom: 18px;
  padding: 22px;
  overflow: hidden;
  border: 1px solid #d8e3dc;
  border-radius: 18px;
  background:
    radial-gradient(circle at 88% 8%, rgba(224, 67, 54, .12), transparent 28%),
    linear-gradient(145deg, #f8fbf8 0%, #eef5f0 100%);
  box-shadow: 0 14px 34px rgba(35, 54, 43, .08);
}

.growth-cockpit-head,
.growth-panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.growth-kicker,
.growth-panel-head span {
  color: var(--red);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
}

.growth-cockpit-head h2 {
  margin: 6px 0 5px;
  color: var(--ink);
  font-size: clamp(20px, 2vw, 28px);
}

.growth-cockpit-head p,
.growth-panel-head small {
  color: var(--muted);
  font-size: 12px;
}

.growth-membership {
  flex: 0 0 auto;
  padding: 7px 11px;
  border: 1px solid #e7c7c2;
  border-radius: 999px;
  background: #fff6f4;
  color: var(--red);
  font-size: 12px;
  font-weight: 800;
}

.growth-snapshot-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.growth-snapshot-card {
  min-height: 112px;
  padding: 13px;
  border: 1px solid rgba(214, 225, 218, .95);
  border-radius: 13px;
  background: rgba(255, 255, 255, .9);
}

.growth-snapshot-card > span {
  color: var(--muted);
  font-size: 12px;
  font-weight: 800;
}

.growth-snapshot-card > strong {
  display: block;
  margin: 12px 0 7px;
  color: var(--ink);
  font-size: 21px;
  line-height: 1.15;
}

.growth-snapshot-card.score > strong b { color: var(--red); font-size: 34px; }
.growth-snapshot-card.score > strong small { color: var(--muted); font-size: 12px; }

.growth-snapshot-card p {
  margin: 0;
  color: #5f6f65;
  font-size: 12px;
  line-height: 1.55;
}

.growth-work-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr);
  gap: 12px;
}

.growth-coach-panel,
.growth-task-panel {
  display: grid;
  gap: 12px;
  align-content: start;
  padding: 17px;
  border: 1px solid #dbe5de;
  border-radius: 13px;
  background: rgba(255, 255, 255, .94);
}

.growth-panel-head h3 {
  margin: 4px 0 0;
  color: var(--ink);
  font-size: 16px;
}

.growth-quick-questions {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.growth-quick-questions button {
  padding: 6px 9px;
  border: 1px solid #d7e2da;
  border-radius: 999px;
  background: #f7faf8;
  color: #526157;
  font-size: 12px;
  cursor: pointer;
}

.growth-coach-form {
  display: grid;
  grid-template-columns: 126px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: stretch;
}

.growth-coach-form input,
.growth-coach-form textarea {
  min-width: 0;
  margin: 0;
}

.growth-coach-answer {
  padding: 13px 14px;
  border-left: 3px solid var(--red);
  border-radius: 7px;
  background: #fff8f6;
  color: #3f4b43;
  font-size: 13px;
  line-height: 1.7;
}

.growth-coach-answer small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
}

.growth-task-list,
.growth-score-bars {
  display: grid;
  gap: 7px;
}

.growth-task-row {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
  width: 100%;
  padding: 9px 10px;
  border: 1px solid #dfe7e1;
  border-radius: 8px;
  background: #fbfdfb;
  color: #465248;
  text-align: left;
  cursor: pointer;
}

.growth-task-row span { color: var(--red); font-weight: 900; }
.growth-task-row small { color: var(--muted); font-size: 11px; }
.growth-task-row.is-complete { opacity: .7; background: #f1f6f2; cursor: default; }

.growth-score-bars > div {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 28px;
  gap: 8px;
  align-items: center;
  font-size: 11px;
}

.growth-score-bars i {
  height: 6px;
  overflow: hidden;
  border-radius: 999px;
  background: #e4eae5;
}

.growth-score-bars em {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #557b65, var(--red));
}

@media (max-width: 760px) {
  .growth-snapshot-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .growth-work-grid { grid-template-columns: 1fr; }
}

@media (max-width: 420px) {
  .investor-quick-actions,
  .investor-home-grid {
    grid-template-columns: 1fr;
  }

  .investor-home-hero h2 {
    font-size: 25px;
  }
}

@media (max-width: 720px) {
  .investment-growth-cockpit { padding: 15px; border-radius: 12px; }
  .growth-cockpit-head { display: grid; }
  .growth-membership { justify-self: start; }
  .growth-snapshot-grid { grid-template-columns: 1fr; }
  .growth-coach-form { grid-template-columns: 1fr; }
}

.today-flow-panel::after {
  position: absolute;
  right: -54px;
  bottom: -70px;
  width: 190px;
  height: 190px;
  border: 34px solid rgba(20, 122, 84, 0.06);
  border-radius: 50%;
  content: "";
  pointer-events: none;
}

.today-flow-layout {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr);
  gap: clamp(22px, 4vw, 52px);
  align-items: center;
}

.today-flow-copy {
  display: grid;
  justify-items: start;
  gap: 14px;
}

.section-kicker,
.progress-copy {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
}

.section-kicker span,
.section-index {
  color: var(--green);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.section-kicker strong {
  padding: 5px 9px;
  border: 1px solid #bad6c8;
  border-radius: 999px;
  background: rgba(255, 255, 255, .72);
  color: var(--green);
  font-size: 12px;
}

.today-flow-copy h2 {
  max-width: 720px;
  font-size: clamp(25px, 3.6vw, 42px);
  line-height: 1.16;
  letter-spacing: -.02em;
}

.today-flow-copy p {
  max-width: 720px;
  color: #506057;
  font-size: 15px;
  line-height: 1.7;
}

.today-flow-button {
  min-height: 46px;
  margin-top: 4px;
  padding: 0 22px;
}

.today-flow-progress {
  display: grid;
  gap: 14px;
  padding: 18px;
  border: 1px solid rgba(176, 204, 189, .88);
  border-radius: 10px;
  background: rgba(255, 255, 255, .78);
  backdrop-filter: blur(8px);
}

.progress-copy span {
  color: var(--muted);
  font-size: 12px;
}

.progress-copy strong {
  color: var(--green);
  font-size: 22px;
}

.progress-track {
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: #dfeae3;
}

.progress-track > span {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: var(--green);
  transition: width .25s ease;
}

.flow-check-list {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.flow-check-list li {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 7px;
  align-items: center;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
}

.flow-check-list li > span {
  display: grid;
  width: 18px;
  height: 18px;
  place-items: center;
  border: 1px solid #cfd9d1;
  border-radius: 50%;
  color: #8b968e;
}

.flow-check-list li.is-complete {
  color: #33483c;
}

.flow-check-list li.is-complete > span {
  border-color: var(--green);
  background: var(--green);
  color: #fff;
}

.dashboard-action-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr);
  gap: 18px;
  align-items: start;
}

.dashboard-module {
  display: grid;
  align-content: start;
  min-height: 300px;
}

.dashboard-module .panel-head > div {
  display: flex;
  align-items: center;
  gap: 10px;
}

.dashboard-module .panel-head h2 {
  font-size: 18px;
}

.dashboard-module .panel-head .section-index {
  color: var(--green);
  font-size: 12px;
}

.dashboard-alert-list,
.dashboard-review-list,
.dashboard-error-list {
  display: grid;
  gap: 10px;
}

.dashboard-alert {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 13px;
  border: 1px solid #e2e7e0;
  border-left: 4px solid var(--blue);
  border-radius: 8px;
  background: #fbfcf9;
}

.dashboard-alert.is-critical,
.dashboard-alert.is-high {
  border-left-color: var(--red);
  background: #fffafa;
}

.dashboard-alert.is-opportunity {
  border-left-color: var(--green);
  background: #f8fcf9;
}

.alert-type {
  display: block;
  margin-bottom: 5px;
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}

.dashboard-alert h3 {
  margin-bottom: 5px;
}

.dashboard-alert p,
.module-summary,
.dashboard-error-item p,
.improvement-card p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.55;
}

.module-summary {
  margin: -4px 0 13px;
}

.dashboard-review-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid #edf0ea;
}

.dashboard-review-item div {
  min-width: 0;
}

.dashboard-review-item strong,
.dashboard-review-item span {
  display: block;
}

.dashboard-review-item span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 12px;
}

.dashboard-review-item em {
  flex: 0 0 auto;
  color: var(--blue);
  font-size: 12px;
  font-style: normal;
}

.module-action {
  justify-self: start;
  margin-top: 14px;
}

.dashboard-error-item {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  width: 100%;
  padding: 12px;
  border: 1px solid #e3e8e1;
  border-radius: 8px;
  background: #fbfcf9;
  color: var(--ink);
  text-align: left;
}

.dashboard-error-item:hover {
  border-color: #b7c9bd;
  background: #f6faf6;
}

.error-count {
  display: grid;
  min-height: 38px;
  place-items: center;
  border-radius: 7px;
  background: var(--red-2);
  color: var(--red);
  font-size: 12px;
  font-weight: 800;
}

.dashboard-error-item p {
  margin-top: 4px;
}

.trend {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
}

.trend.is-up {
  color: var(--red);
}

.trend.is-down {
  color: var(--green);
}

.dashboard-empty {
  min-height: 118px;
  padding: 22px;
  line-height: 1.7;
}

.improvement-card {
  display: grid;
  gap: 12px;
}

.improvement-card .tag {
  justify-self: start;
}

.improvement-card h3 {
  font-size: 20px;
}

.improvement-rule {
  display: grid;
  gap: 6px;
  padding: 13px;
  border: 1px solid #dce6dd;
  border-radius: 8px;
  background: #f7faf6;
}

.improvement-rule strong {
  color: var(--green);
  font-size: 12px;
}

.improvement-rule span {
  line-height: 1.55;
}

.improvement-numbers {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.improvement-numbers > div {
  padding: 11px;
  border: 1px solid #e2e7e0;
  border-radius: 8px;
}

.improvement-numbers span,
.improvement-numbers strong {
  display: block;
}

.improvement-numbers span {
  color: var(--muted);
  font-size: 11px;
}

.improvement-numbers strong {
  margin-top: 7px;
  font-size: 17px;
}

.module-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 16px;
}

.trade-review-panel {
  border-color: #c9dcd0;
}

.trade-review-panel select[multiple] {
  min-height: 118px;
}

@media (max-width: 1100px) {
  .metric-grid,
  .form-grid,
  .cloud-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hard-stop-list {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .pretrade-grid {
    grid-template-columns: 1fr;
  }

  .two-column {
    grid-template-columns: 1fr;
  }

  .today-flow-layout {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  .app-shell {
    grid-template-columns: minmax(0, 1fr);
  }

  .sidebar {
    position: fixed;
    z-index: 30;
    top: 0;
    bottom: 0;
    left: 0;
    width: min(292px, 84vw);
    min-width: 0;
    height: 100vh;
    padding: 18px 14px;
    overflow-y: auto;
    transform: translateX(-105%);
    transition: transform .2s ease;
    box-shadow: 12px 0 30px rgba(24, 43, 31, .12);
  }

  .mobile-nav-open .sidebar {
    transform: translateX(0);
  }

  .mobile-nav-open .sidebar-backdrop {
    display: block;
    position: fixed;
    z-index: 20;
    inset: 0;
    background: rgba(21, 31, 24, .28);
  }

  .nav-tabs {
    display: grid;
    width: 100%;
    min-width: 0;
    overflow: visible;
  }

  .nav-tab {
    width: auto;
    min-height: 42px;
    padding: 9px 12px;
    font-size: 13px;
  }

  .nav-tab svg {
    width: 18px;
    height: 18px;
  }

  .nav-more {
    display: block;
    margin-top: 4px;
    padding-top: 8px;
    border-top: 1px solid var(--line);
  }

  .nav-more summary {
    min-height: 40px;
    padding: 10px 12px;
  }

  .nav-more-list {
    display: grid;
    gap: 5px;
    margin-top: 6px;
  }

  .nav-more:not([open]) .nav-more-list {
    display: none;
  }

  .nav-more-list .nav-tab {
    min-height: 38px;
    padding: 8px 18px;
  }

  .nav-account-link[data-view="membership"] {
    margin-top: 4px;
    padding-top: 8px;
  }

  .admin-console-nav {
    display: grid;
  }

  .mobile-menu-button {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 40px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--surface);
    color: var(--ink);
  }

  .mobile-menu-button svg {
    width: 18px;
    height: 18px;
  }

  .brand,
  .sidebar-summary {
    display: flex;
  }

  .sidebar-summary {
    margin-top: 14px;
  }

  .investor-home-hero {
    grid-template-columns: 1fr;
    padding: 18px;
  }

  .investor-quick-actions,
  .investor-home-grid {
    grid-template-columns: 1fr 1fr;
  }

  .workspace {
    width: 100%;
    min-width: 0;
    padding: 16px 12px 30px;
  }

  .investor-membership-panel {
    align-items: flex-start;
    flex-direction: column;
  }

  .topbar {
    align-items: flex-start;
  }

  .top-actions {
    flex-wrap: wrap;
  }

  .account-menu {
    width: 100%;
  }

  .account-trigger {
    width: 100%;
    max-width: none;
  }

  .account-dropdown {
    right: auto;
    left: 0;
    width: min(300px, calc(100vw - 24px));
  }

  .metric-grid,
  .cloud-grid,
  .form-grid,
  .strategy-grid,
  .review-list,
  .feedback-list,
  .risk-numbers,
  .evidence-grid,
  .push-grid,
  .hard-stop-list,
  .pretrade-grid {
    grid-template-columns: 1fr;
  }

  /* Research result cards keep their key metrics scannable on mobile. */
  .assistant-factor-card .metric-grid,
  .assistant-backtest-result .metric-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .dashboard-action-grid {
    grid-template-columns: 1fr;
  }

  .dashboard-module {
    min-height: 0;
  }

  .dashboard-alert-list,
  .dashboard-error-list {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    scroll-snap-type: x proximity;
    padding-bottom: 4px;
  }

  .dashboard-alert,
  .dashboard-error-item {
    flex: 0 0 min(88%, 410px);
    scroll-snap-align: start;
  }

  .today-flow-progress {
    padding: 15px;
  }

  .loop-hero-main {
    grid-template-columns: 1fr;
  }

  .loop-hero-main .primary-button {
    width: 100%;
  }

  .loop-hero-main h2 {
    font-size: 21px;
  }

  .loop-step {
    grid-template-columns: 30px minmax(0, 1fr);
  }

  .loop-step .small-button {
    grid-column: 1 / -1;
    justify-self: start;
  }

  .intraday-push-panel .panel-head {
    align-items: flex-start;
  }

  .intraday-push-panel .panel-actions {
    flex-wrap: wrap;
    justify-content: flex-start;
  }

  .push-log-item {
    grid-template-columns: 1fr;
  }

  .check-list li {
    grid-template-columns: 52px minmax(0, 1fr);
  }

  .check-list em {
    grid-column: 1 / -1;
  }

  .panel,
  .metric-card {
    padding: 14px;
  }

  #equityChart {
    height: 260px;
  }
}

@media (max-width: 480px) {
  .topbar {
    display: grid;
  }

  .top-actions {
    justify-content: flex-start;
  }

  .account-copy {
    max-width: calc(100vw - 92px);
  }

  h1 {
    font-size: 24px;
  }
}
.global-error-boundary,
.module-error-boundary {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  border: 1px solid rgba(214, 65, 65, 0.35);
  border-radius: 12px;
  background: rgba(255, 240, 240, 0.96);
  color: #8b1e1e;
}

.assistant-data-sources,
.data-center-coverage,
.data-center-source-grid,
.data-center-log {
  margin: 16px 0;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: var(--panel);
}

.assistant-data-sources > div,
.data-center-source-grid > div,
.data-center-coverage > div {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
}

.assistant-data-sources article,
.data-center-source-grid article {
  display: grid;
  gap: 5px;
  padding: 11px;
  border-radius: 10px;
  background: var(--surface, rgba(95, 116, 160, .06));
}

.assistant-data-sources article span,
.data-center-source-grid article span { font-weight: 700; }
.assistant-data-sources article small,
.data-center-source-grid article small,
.data-center-source-grid article em { color: var(--muted); font-size: 12px; font-style: normal; }

.data-center-hero {
  display: flex;
  gap: 18px;
  justify-content: space-between;
  align-items: center;
  padding: 18px;
  border-radius: 14px;
  color: #eff5ff;
  background: linear-gradient(120deg, #192e54, #1f5b81);
}

.data-center-hero span { color: #a8c8eb; font-size: 12px; letter-spacing: .04em; }
.data-center-hero h2 { margin: 5px 0; font-size: 28px; }
.data-center-hero p { margin: 0; color: #c9daeb; }

.data-center-coverage article { padding: 12px; border-radius: 10px; background: var(--surface, rgba(95, 116, 160, .06)); }
.data-center-coverage article strong { display: block; color: var(--muted); }
.data-center-coverage article b { display: block; margin: 7px 0; font-size: 22px; }
.data-center-coverage article i { display: block; height: 6px; overflow: hidden; border-radius: 99px; background: rgba(110, 130, 160, .2); }
.data-center-coverage article i em { display: block; height: 100%; background: #d66666; }
.data-center-coverage article.is-limited i em { background: #d69d3a; }
.data-center-coverage article.is-ready i em { background: #33a270; }
.is-ready { color: #188353; }
.is-limited { color: #a46d15; }
.is-missing { color: #c03e45; }

@media (max-width: 720px) {
  .data-center-hero { align-items: flex-start; flex-direction: column; }
}

.global-error-boundary {
  position: fixed;
  right: 18px;
  bottom: 18px;
  z-index: 10000;
  max-width: min(680px, calc(100vw - 36px));
  box-shadow: 0 12px 36px rgba(47, 18, 18, 0.18);
  flex-wrap: wrap;
}

.module-error-boundary {
  justify-content: space-between;
  margin-bottom: 12px;
}

/* Commercial membership center */
.membership-page-shell {
  display: grid;
  gap: 18px;
}

.membership-hero-panel {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  padding: 24px;
  background: linear-gradient(135deg, rgba(29, 65, 103, .96), rgba(35, 91, 117, .92));
  color: #f4f8fc;
}

.membership-hero-copy h2 {
  margin: 6px 0 5px;
  font-size: clamp(28px, 4vw, 38px);
  letter-spacing: -.03em;
}

.membership-hero-copy p { margin: 0; color: #c9dceb; font-size: 15px; }
.membership-hero-panel > .small-button { align-self: start; color: #eef7ff; border-color: rgba(255,255,255,.28); background: rgba(255,255,255,.1); }
.membership-current-card { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(120px, .7fr)) auto; gap: 14px; align-items: center; padding: 17px; border: 1px solid rgba(255,255,255,.2); border-radius: 16px; background: rgba(7, 26, 47, .25); }
.membership-current-card > div { display: grid; gap: 4px; min-width: 0; }
.membership-current-card .membership-current-main { gap: 5px; }
.membership-current-card .membership-current-main h3 { margin: 0; font-size: 22px; }
.membership-current-card .membership-current-main p { margin: 0; color: #c9dceb; line-height: 1.55; }
.membership-current-label { color: #a9c7df; font-size: 12px; }
.membership-current-value { font-weight: 750; }
.membership-current-card .tag { width: fit-content; }
.membership-current-card .primary-button { white-space: nowrap; }

.membership-section-heading { display: flex; justify-content: space-between; gap: 16px; margin-bottom: 17px; }
.membership-section-heading.compact { margin-bottom: 12px; }
.membership-section-heading h2 { margin: 4px 0 5px; }
.membership-section-heading p { margin: 0; color: var(--muted); }
.membership-plans-panel { padding: 22px; }
.membership-plan-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; align-items: stretch; }
.membership-plan-card { position: relative; display: flex; min-width: 0; flex-direction: column; gap: 14px; padding: 19px; border: 1px solid var(--line); border-radius: 16px; background: var(--panel); box-shadow: 0 8px 24px rgba(31, 60, 92, .05); }
.membership-plan-card.is-recommended { border: 2px solid #4b7ea2; padding: 18px; box-shadow: 0 12px 30px rgba(54, 105, 139, .14); }
.membership-plan-card.is-best-value { border-color: #6e9a86; }
.membership-plan-card .plan-ribbon { position: absolute; top: 13px; right: 13px; padding: 4px 8px; border-radius: 99px; color: #245b45; background: #e0f1e7; font-size: 11px; font-weight: 750; }
.membership-plan-card .plan-kicker { color: var(--muted); font-size: 12px; }
.membership-plan-card h3 { margin: 0; font-size: 20px; }
.membership-plan-card .plan-price { display: flex; align-items: baseline; gap: 5px; color: var(--ink); font-size: 31px; font-weight: 800; letter-spacing: -.04em; }
.membership-plan-card .plan-price small { color: var(--muted); font-size: 13px; font-weight: 650; letter-spacing: 0; }
.membership-plan-card .plan-subtitle, .membership-plan-card .plan-description { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.55; }
.membership-plan-card .plan-benefits { display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; color: var(--ink); font-size: 13px; line-height: 1.4; }
.membership-plan-card .plan-benefits li::before { content: "✓"; display: inline-block; width: 20px; color: #2b8b67; font-weight: 800; }
.membership-plan-card .form-actions { margin-top: auto; }
.membership-plan-card .primary-button, .membership-plan-card .small-button { width: 100%; min-height: 44px; }
.membership-plan-card .plan-used { color: var(--muted); background: #eef1f4; border-color: #d7dde3; cursor: not-allowed; }
.membership-plan-card .plan-savings { color: #2f7658; font-size: 12px; font-weight: 700; }

.membership-entitlement-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.membership-entitlement-item { display: grid; gap: 6px; min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: var(--surface, rgba(95, 116, 160, .06)); }
.membership-entitlement-item strong { font-size: 14px; }
.membership-entitlement-item span { color: var(--muted); font-size: 12px; line-height: 1.45; }
.membership-entitlement-item.is-available { border-color: rgba(43, 139, 103, .25); }
.membership-entitlement-item.is-available span::before { content: "已包含 · "; color: #2b8b67; font-weight: 700; }
.membership-entitlement-item.is-limited span::before { content: "当前额度 · "; color: #9b6c16; font-weight: 700; }
.membership-entitlement-item.is-locked span::before { content: "升级后解锁 · "; color: #8a5c67; font-weight: 700; }

.membership-comparison-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 13px; }
.membership-comparison-table { width: 100%; min-width: 660px; border-collapse: collapse; font-size: 13px; }
.membership-comparison-table th, .membership-comparison-table td { padding: 12px 14px; border-bottom: 1px solid var(--line); text-align: center; white-space: nowrap; }
.membership-comparison-table th:first-child, .membership-comparison-table td:first-child { text-align: left; }
.membership-comparison-table th { color: var(--muted); background: var(--surface, rgba(95, 116, 160, .06)); font-size: 12px; }
.membership-comparison-table tr:last-child td { border-bottom: 0; }
.membership-comparison-table .comparison-yes { color: #2b8b67; font-weight: 800; }
.membership-comparison-table .comparison-no { color: #a6adb6; }
.membership-record-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: 18px; }
.membership-record-panel { min-width: 0; }
.membership-record-list { display: grid; gap: 10px; }
.membership-record-item { display: grid; gap: 6px; padding: 14px; border: 1px solid var(--line); border-radius: 13px; background: var(--surface, rgba(95, 116, 160, .06)); }
.membership-record-item .record-head { display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.membership-record-item .record-head strong { min-width: 0; }
.membership-record-item p { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; }
.membership-record-item .record-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 3px; }

.membership-payment-modal, .membership-confirm-modal { position: fixed; inset: 0; z-index: 1200; display: grid; place-items: center; padding: 18px; background: rgba(15, 28, 43, .58); }
.membership-payment-modal[hidden], .membership-confirm-modal[hidden] { display: none; }
.membership-payment-dialog, .membership-confirm-dialog { width: min(560px, 100%); max-height: min(92vh, 760px); overflow: auto; padding: 22px; border: 1px solid rgba(255,255,255,.6); border-radius: 18px; background: var(--panel); box-shadow: 0 24px 70px rgba(15, 28, 43, .28); }
.membership-payment-dialog-head { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; margin-bottom: 13px; }
.membership-payment-dialog-head h2 { margin: 4px 0 0; }
.icon-button { width: 38px; height: 38px; border: 1px solid var(--line); border-radius: 10px; color: var(--muted); background: transparent; font-size: 24px; line-height: 1; cursor: pointer; }
.membership-confirm-detail { display: grid; gap: 10px; margin: 12px 0 18px; padding: 16px; border-radius: 14px; background: var(--surface, rgba(95, 116, 160, .06)); }
.membership-confirm-detail .confirm-row { display: flex; justify-content: space-between; gap: 12px; color: var(--muted); }
.membership-confirm-detail .confirm-row strong { color: var(--ink); }
.membership-confirm-detail .confirm-total strong { color: #1f6388; font-size: 24px; }
.membership-payment-dialog .review-card { border: 0; padding: 0; box-shadow: none; }
.membership-payment-dialog .review-card h3 { font-size: 21px; }
.membership-payment-dialog .payment-qr-wrap { display: grid; place-items: center; min-height: 250px; margin: 12px 0 16px; padding: 14px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.membership-payment-dialog .payment-qr { display: block; width: min(280px, 70vw); height: auto; aspect-ratio: 1; }
.membership-payment-dialog .payment-qr-placeholder { color: var(--muted); }
.membership-payment-dialog .payment-success { display: grid; gap: 10px; padding: 18px; border-radius: 14px; background: #eff9f3; color: #245b45; }
.membership-payment-dialog .payment-success h3 { margin: 0; color: #245b45; }
.membership-payment-dialog .payment-expired { display: grid; gap: 10px; padding: 18px; border-radius: 14px; background: #fff5ef; color: #8b5d35; }
.membership-community-panel { border-color: rgba(43, 139, 103, .22); }
.membership-community-copy { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 16px; border-radius: 14px; background: linear-gradient(135deg, rgba(224, 241, 231, .9), rgba(246, 250, 247, .95)); }
.membership-community-copy h3 { margin: 5px 0 7px; font-size: 20px; }
.membership-community-copy p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
.membership-community-dialog { width: min(620px, 100%); max-height: min(92vh, 760px); overflow: auto; padding: 22px; border: 1px solid rgba(255,255,255,.6); border-radius: 18px; background: var(--panel); box-shadow: 0 24px 70px rgba(15, 28, 43, .28); }
.membership-community-modal { position: fixed; inset: 0; z-index: 1220; display: grid; place-items: center; padding: 18px; background: rgba(15, 28, 43, .58); }
.membership-community-modal[hidden] { display: none; }
.membership-community-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.membership-community-meta > div, .membership-community-instructions { display: grid; gap: 6px; padding: 13px; border: 1px solid var(--line); border-radius: 13px; background: var(--surface, rgba(95, 116, 160, .06)); }
.membership-community-meta span, .membership-community-instructions strong { color: var(--muted); font-size: 12px; }
.membership-community-resource { display: grid; justify-items: center; gap: 10px; margin-top: 12px; padding: 16px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.membership-community-resource img { display: block; width: min(260px, 70vw); aspect-ratio: 1; object-fit: contain; }
.membership-community-instructions { margin-top: 12px; }
.membership-community-instructions p { margin: 0; color: var(--ink); line-height: 1.7; white-space: pre-wrap; }

@media (max-width: 1080px) {
  .membership-plan-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .membership-current-card { grid-template-columns: minmax(0, 1fr) repeat(2, minmax(120px, .7fr)) auto; }
}

@media (max-width: 720px) {
  .membership-hero-panel { grid-template-columns: 1fr; padding: 18px; }
  .membership-current-card { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .membership-current-card .membership-current-main { grid-column: 1 / -1; }
  .membership-current-card .primary-button { grid-column: 1 / -1; width: 100%; }
  .membership-plan-grid, .membership-entitlement-grid, .membership-record-grid { grid-template-columns: 1fr; }
  .membership-plans-panel { padding: 16px; }
  .membership-section-heading { margin-bottom: 13px; }
  .membership-plan-card { padding: 17px; }
  .membership-payment-dialog, .membership-confirm-dialog { padding: 17px; }
  .membership-community-dialog { padding: 17px; }
  .membership-community-copy { align-items: stretch; flex-direction: column; }
  .membership-community-copy .primary-button { width: 100%; min-height: 44px; }
  .membership-community-meta { grid-template-columns: 1fr; }
  .membership-payment-dialog .payment-qr-wrap { min-height: 220px; }
  .membership-payment-dialog .form-actions, .membership-confirm-dialog .form-actions { flex-direction: column; }
  .membership-payment-dialog .form-actions button, .membership-confirm-dialog .form-actions button { width: 100%; min-height: 44px; }
}
