// Opportunity detail screen
function OpportunityDetail({ id, onBack, onInvest }) {
  const { t, lang } = useT();
  const [tab, setTab] = useState('overview');
  const [amount, setAmount] = useState('');

  const opp = window.DIVIDIS_DATA.opportunities.find(o => o.id === id);
  if (!opp) {
    return <div className="page"><button className="btn btn-ghost" onClick={onBack}>← Back</button><div style={{ padding: 60, textAlign: 'center', color: 'var(--text-3)' }}>Opportunity not found.</div></div>;
  }

  const pct = Math.round((opp.raised / opp.total) * 100);
  const yieldDisplay = opp.yield != null ? `${opp.yield.toFixed(1)}%` : opp.yieldRange;

  // Investment summary calc
  const amtNum = parseFloat(amount) || 0;
  const valid = amtNum >= opp.min;
  const annualReturn = opp.yield ? amtNum * (opp.yield / 100) : 0;
  const termYears = opp.termUnit === 'days' ? opp.term / 365 : opp.termUnit === 'months' ? opp.term / 12 : opp.term;
  const grossReturn = annualReturn * termYears;
  const fee = amtNum * 0.01;
  const net = grossReturn - fee;

  const tabs = [
    { id: 'overview', label: t('det_overview') },
    { id: 'company', label: t('det_company') },
    { id: 'risk', label: t('det_risk') },
    { id: 'docs', label: t('det_docs') },
    { id: 'qa', label: t('det_qa') },
  ];

  return (
    <div className="page detail-page">
      {/* Breadcrumb back */}
      <button className="back-link" onClick={onBack}>
        <Icon name="chevron-left" size={14} />
        {t('det_back')}
      </button>

      {/* Hero */}
      <div className="det-hero">
        <div className="det-hero-left">
          <div style={{ display: 'flex', gap: 8, alignItems: 'center', marginBottom: 14 }}>
            <TypeBadge type={opp.type} />
            <span className="num" style={{ fontSize: 11, color: 'var(--text-4)', letterSpacing: '0.05em' }}>{opp.id}</span>
          </div>
          <h1 className="det-issuer">{opp.issuer}</h1>
          <div className="det-meta">
            <span>{opp.sector[lang]}</span>
            <span className="dot-sep">·</span>
            <span>{opp.hq}</span>
            <span className="dot-sep">·</span>
            <span>Founded {opp.founded}</span>
          </div>
        </div>
        <div className="det-hero-right">
          <div className="det-progress-card">
            <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'baseline', marginBottom: 12 }}>
              <div>
                <div className="num" style={{ fontFamily: 'var(--serif)', fontSize: 28, letterSpacing: '-0.02em' }}>{fmtEUR(opp.raised)}</div>
                <div style={{ fontSize: 12, color: 'var(--text-3)' }}>{t('mkt_funded')} {t('of')} <span className="num">{fmtEUR(opp.total)}</span></div>
              </div>
              <div style={{ textAlign: 'right' }}>
                <div className="num" style={{ fontSize: 20, color: 'var(--emerald-2)', fontWeight: 500 }}>{pct}%</div>
              </div>
            </div>
            <div className="progress" style={{ height: 6 }}><div className="progress-fill" style={{ width: `${pct}%` }} /></div>
            <div style={{ display: 'flex', justifyContent: 'space-between', marginTop: 14, fontSize: 12, color: 'var(--text-3)' }}>
              <span><Icon name="users" size={12} /> 124 inversores</span>
              <span><Icon name="calendar" size={12} /> 12 días restantes</span>
            </div>
          </div>
        </div>
      </div>

      {/* Key terms strip */}
      <div className="det-terms-strip">
        {[
          { label: t('det_term_yield'), value: yieldDisplay, accent: 'var(--emerald-2)' },
          { label: t('det_term_term'), value: termLabel(opp, t) },
          { label: t('det_term_min'), value: fmtEUR(opp.min) },
          { label: t('det_term_total'), value: fmtEUR(opp.total) },
          { label: t('det_term_rating'), value: <RatingBadge rating={opp.rating} /> },
          { label: t('det_term_pay'), value: opp.payFreq[lang] },
        ].map((c, i) => (
          <div key={i} className="det-term-cell">
            <div className="det-term-l">{c.label}</div>
            <div className="det-term-v num" style={{ color: c.accent }}>{c.value}</div>
          </div>
        ))}
      </div>

      {/* Two-column body */}
      <div className="det-body">
        <div className="det-main">
          <div className="tabs">
            {tabs.map(tb => (
              <button key={tb.id} className={`tab ${tab === tb.id ? 'active' : ''}`} onClick={() => setTab(tb.id)}>
                {tb.label}
              </button>
            ))}
          </div>

          {tab === 'overview' && <OverviewTab opp={opp} />}
          {tab === 'company' && <CompanyTab opp={opp} />}
          {tab === 'risk' && <RiskTab opp={opp} />}
          {tab === 'docs' && <DocsTab opp={opp} />}
          {tab === 'qa' && <QATab opp={opp} />}
        </div>

        {/* Sticky invest panel */}
        <aside className="det-aside">
          <div className="invest-panel">
            <div className="invest-panel-title">{t('det_invest_panel')}</div>
            <div className="invest-amount-wrap">
              <input
                type="number"
                className="input input-amount"
                placeholder="0"
                value={amount}
                onChange={(e) => setAmount(e.target.value)}
                style={{ paddingRight: 50 }}
              />
              <span className="invest-amount-suffix">€</span>
            </div>
            <div style={{ fontSize: 11, color: 'var(--text-3)', marginTop: 6, marginBottom: 14 }}>
              {t('mkt_min')} <span className="num" style={{ color: 'var(--text-2)' }}>{fmtEUR(opp.min)}</span>
            </div>
            <div className="invest-quick">
              <div className="invest-quick-label">{t('det_quick')}</div>
              <div className="invest-quick-btns">
                {[opp.min, opp.min * 4, opp.min * 10, opp.min * 20].map(q => (
                  <button key={q} className="quick-btn" onClick={() => setAmount(String(q))}>{fmtEUR(q)}</button>
                ))}
              </div>
            </div>

            <div className="invest-summary">
              <div className="invest-sum-row">
                <span>{t('det_summary_capital')}</span>
                <span className="num">{fmtEUR(amtNum)}</span>
              </div>
              {opp.yield && (
                <>
                  <div className="invest-sum-row">
                    <span>{t('det_summary_return')}</span>
                    <span className="num" style={{ color: 'var(--emerald-2)' }}>{fmtEUR(grossReturn)}</span>
                  </div>
                  <div className="invest-sum-row">
                    <span>{t('det_summary_fee')}</span>
                    <span className="num">−{fmtEUR(fee)}</span>
                  </div>
                  <div className="invest-sum-row total">
                    <span>{t('det_summary_net')}</span>
                    <span className="num" style={{ color: 'var(--emerald-2)' }}>+{fmtEUR(net)}</span>
                  </div>
                </>
              )}
              <div className="invest-sum-row total">
                <span>{t('det_summary_total')}</span>
                <span className="num">{fmtEUR(amtNum)}</span>
              </div>
            </div>

            <button className="btn btn-primary btn-lg" disabled={!valid} style={{ width: '100%' }} onClick={() => onInvest(opp.id, amtNum)}>
              {t('det_continue')}
              <Icon name="arrow-right" size={14} />
            </button>
            <div style={{ fontSize: 11, color: 'var(--text-4)', textAlign: 'center', marginTop: 12, lineHeight: 1.5 }}>
              <Icon name="lock" size={11} /> Operación firmada electrónicamente. Comisión plataforma 1%.
            </div>
          </div>
        </aside>
      </div>

      <style>{`
        .detail-page { padding-top: 24px; }
        .back-link {
          background: transparent; border: none;
          color: var(--text-3);
          font-size: 13px;
          display: inline-flex; align-items: center; gap: 6px;
          padding: 6px 0;
          margin-bottom: 24px;
          cursor: pointer;
        }
        .back-link:hover { color: var(--text); }

        .det-hero {
          display: grid;
          grid-template-columns: 1fr 380px;
          gap: 32px;
          padding-bottom: 28px;
          border-bottom: 1px solid var(--line);
          margin-bottom: 0;
        }
        .det-issuer {
          font-family: var(--serif);
          font-size: 44px;
          letter-spacing: -0.025em;
          line-height: 1.05;
          margin-bottom: 12px;
          font-weight: 400;
        }
        .det-meta {
          display: flex; gap: 10px; align-items: center;
          font-size: 13px;
          color: var(--text-3);
        }
        .dot-sep { color: var(--text-4); }

        .det-progress-card {
          background: var(--surface);
          border: 1px solid var(--line);
          border-radius: var(--r-lg);
          padding: 20px;
        }

        .det-terms-strip {
          display: grid;
          grid-template-columns: repeat(6, 1fr);
          background: var(--surface);
          border: 1px solid var(--line);
          border-radius: var(--r-lg);
          margin: 24px 0 32px;
          overflow: hidden;
        }
        .det-term-cell {
          padding: 18px 20px;
          border-right: 1px solid var(--line);
        }
        .det-term-cell:last-child { border-right: none; }
        .det-term-l { font-size: 11px; color: var(--text-3); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 8px; }
        .det-term-v { font-size: 16px; font-weight: 500; letter-spacing: -0.01em; }

        .det-body {
          display: grid;
          grid-template-columns: 1fr 360px;
          gap: 32px;
          align-items: flex-start;
        }
        .det-main { min-width: 0; }
        .det-aside { position: sticky; top: 80px; }

        .invest-panel {
          background: var(--surface);
          border: 1px solid var(--line);
          border-radius: var(--r-lg);
          padding: 22px;
        }
        .invest-panel-title { font-size: 14px; font-weight: 500; margin-bottom: 16px; }
        .invest-amount-wrap { position: relative; }
        .invest-amount-suffix {
          position: absolute; right: 16px; top: 50%; transform: translateY(-50%);
          color: var(--text-3); font-family: var(--mono); font-size: 16px;
        }
        .invest-quick { margin: 14px 0 18px; }
        .invest-quick-label { font-size: 11px; color: var(--text-3); margin-bottom: 8px; letter-spacing: 0.06em; text-transform: uppercase; }
        .invest-quick-btns { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; }
        .quick-btn {
          padding: 7px 0;
          background: var(--bg-1);
          border: 1px solid var(--line);
          border-radius: 6px;
          color: var(--text-2);
          font-family: var(--mono);
          font-size: 12px;
          cursor: pointer;
          transition: all .15s;
        }
        .quick-btn:hover { background: var(--surface-3); color: var(--text); }

        .invest-summary {
          background: var(--bg-1);
          border-radius: 10px;
          padding: 14px 16px;
          margin-bottom: 14px;
          font-size: 13px;
        }
        .invest-sum-row {
          display: flex; justify-content: space-between;
          padding: 5px 0;
          color: var(--text-2);
        }
        .invest-sum-row.total {
          border-top: 1px solid var(--line);
          margin-top: 6px; padding-top: 10px;
          color: var(--text); font-weight: 500;
        }
      `}</style>
    </div>
  );
}

// Tab content
function OverviewTab({ opp }) {
  const { t, lang } = useT();
  return (
    <div>
      <h3 className="det-h3">{t('det_summary_title')}</h3>
      <p className="det-p">{opp.desc[lang]}</p>
      {lang === 'es' ? (
        <p className="det-p">
          La operación se estructura como {opp.structure.es.toLowerCase()}, con {opp.collateral.es.toLowerCase()} como mecanismo de mitigación de riesgo.
          El emisor presenta un perfil financiero contrastado, con {fmtEUR(opp.revenue)} de facturación en 2024 y un EBITDA de {fmtEUR(opp.ebitda)}, lo que se traduce en un margen operativo del {((opp.ebitda / opp.revenue) * 100).toFixed(1)}%.
        </p>
      ) : (
        <p className="det-p">
          The operation is structured as a {opp.structure.en.toLowerCase()}, with {opp.collateral.en.toLowerCase()} as risk-mitigation mechanism.
          The issuer shows a solid financial profile with {fmtEUR(opp.revenue)} of 2024 revenue and {fmtEUR(opp.ebitda)} EBITDA — an operating margin of {((opp.ebitda / opp.revenue) * 100).toFixed(1)}%.
        </p>
      )}

      <h3 className="det-h3" style={{ marginTop: 32 }}>{t('det_terms_title')}</h3>
      <div className="terms-table">
        {[
          [t('det_term_struct'), opp.structure[lang]],
          [t('det_term_collateral'), opp.collateral[lang]],
          [t('det_term_pay'), opp.payFreq[lang]],
          ['ISIN', `ES0DV${opp.id.replace(/\D/g, '').slice(-7)}`],
          [lang === 'es' ? 'Fecha emisión' : 'Issue date', '12 May 2025'],
          [lang === 'es' ? 'Vencimiento' : 'Maturity', opp.termUnit === 'days' ? '10 Aug 2025' : opp.termUnit === 'months' ? '12 Nov 2026' : '12 May 2030'],
        ].map(([k, v]) => (
          <div key={k} className="terms-row">
            <span>{k}</span>
            <span style={{ color: 'var(--text)', fontWeight: 500 }}>{v}</span>
          </div>
        ))}
      </div>

      <style>{`
        .det-h3 { font-family: var(--serif); font-size: 22px; font-weight: 400; letter-spacing: -0.02em; margin-bottom: 14px; }
        .det-p { color: var(--text-2); line-height: 1.7; margin-bottom: 14px; font-size: 14px; }
        .terms-table {
          background: var(--surface);
          border: 1px solid var(--line);
          border-radius: var(--r-lg);
          overflow: hidden;
        }
        .terms-row {
          display: flex; justify-content: space-between; padding: 12px 18px;
          font-size: 13px; color: var(--text-3);
          border-bottom: 1px solid var(--line);
        }
        .terms-row:last-child { border-bottom: none; }
      `}</style>
    </div>
  );
}

function CompanyTab({ opp }) {
  const { t, lang } = useT();
  return (
    <div>
      <h3 className="det-h3" style={{ fontFamily: 'var(--serif)', fontSize: 22, marginBottom: 14, fontWeight: 400 }}>{t('det_co_about')}</h3>
      <div className="co-info-grid">
        {[
          [t('det_co_founded'), opp.founded],
          [t('det_co_employees'), opp.employees],
          [t('det_co_sector'), opp.sector[lang]],
          [t('det_co_hq'), opp.hq],
          [t('det_co_revenue'), fmtEUR(opp.revenue)],
          [t('det_co_ebitda'), fmtEUR(opp.ebitda)],
        ].map(([k, v]) => (
          <div key={k} className="co-info-cell">
            <div style={{ fontSize: 11, color: 'var(--text-3)', letterSpacing: '0.06em', textTransform: 'uppercase', marginBottom: 6 }}>{k}</div>
            <div className="num" style={{ fontSize: 17, fontWeight: 500 }}>{v}</div>
          </div>
        ))}
      </div>

      <h3 style={{ fontFamily: 'var(--serif)', fontSize: 22, marginTop: 32, marginBottom: 14, fontWeight: 400 }}>
        {lang === 'es' ? 'Evolución financiera' : 'Financial evolution'}
      </h3>
      <div className="card card-pad">
        <FinancialChart opp={opp} />
      </div>

      <style>{`
        .co-info-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; }
        .co-info-cell { padding: 18px; background: var(--surface); }
      `}</style>
    </div>
  );
}

function FinancialChart({ opp }) {
  // Simple synthetic 5-year revenue trajectory ending at opp.revenue
  const years = ['2020', '2021', '2022', '2023', '2024'];
  const revenue = [0.62, 0.71, 0.81, 0.92, 1.0].map(f => Math.round(opp.revenue * f / 100000) * 100000);
  const ebitda = [0.55, 0.66, 0.78, 0.88, 1.0].map(f => Math.round(opp.ebitda * f / 100000) * 100000);
  const max = Math.max(...revenue);
  const W = 600, H = 200, pad = 30;

  return (
    <div>
      <div style={{ display: 'flex', gap: 18, fontSize: 12, marginBottom: 14, color: 'var(--text-3)' }}>
        <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6 }}>
          <span style={{ width: 10, height: 2, background: 'var(--emerald-2)' }}></span>Revenue
        </span>
        <span style={{ display: 'inline-flex', alignItems: 'center', gap: 6 }}>
          <span style={{ width: 10, height: 2, background: 'var(--gold)' }}></span>EBITDA
        </span>
      </div>
      <svg viewBox={`0 0 ${W} ${H + 30}`} width="100%" preserveAspectRatio="xMidYMid meet" style={{ display: 'block' }}>
        {[0.25, 0.5, 0.75, 1].map(g => (
          <line key={g} x1={pad} x2={W - pad} y1={H * (1 - g)} y2={H * (1 - g)} stroke="var(--line)" strokeDasharray="3 4" />
        ))}
        {/* Revenue line */}
        <polyline
          points={revenue.map((v, i) => `${pad + (i * (W - 2 * pad)) / (revenue.length - 1)},${H - (v / max) * (H - 10)}`).join(' ')}
          fill="none" stroke="var(--emerald-2)" strokeWidth="2"
        />
        {revenue.map((v, i) => (
          <circle key={i} cx={pad + (i * (W - 2 * pad)) / (revenue.length - 1)} cy={H - (v / max) * (H - 10)} r="3" fill="var(--emerald-2)" />
        ))}
        {/* EBITDA line */}
        <polyline
          points={ebitda.map((v, i) => `${pad + (i * (W - 2 * pad)) / (ebitda.length - 1)},${H - (v / max) * (H - 10)}`).join(' ')}
          fill="none" stroke="var(--gold)" strokeWidth="2" strokeDasharray="4 3"
        />
        {ebitda.map((v, i) => (
          <circle key={i} cx={pad + (i * (W - 2 * pad)) / (ebitda.length - 1)} cy={H - (v / max) * (H - 10)} r="2.5" fill="var(--gold)" />
        ))}
        {years.map((y, i) => (
          <text key={y} x={pad + (i * (W - 2 * pad)) / (years.length - 1)} y={H + 18} fontSize="11" fill="var(--text-3)" textAnchor="middle" fontFamily="var(--mono)">{y}</text>
        ))}
      </svg>
    </div>
  );
}

function RiskTab({ opp }) {
  const { t, lang } = useT();
  // Score breakdown
  const factors = [
    { es: 'Solvencia del cliente final', en: 'End-client creditworthiness', score: 92 },
    { es: 'Histórico de pagos', en: 'Payment history', score: 88 },
    { es: 'Concentración sectorial', en: 'Sector concentration', score: 76 },
    { es: 'Calidad del colateral', en: 'Collateral quality', score: 84 },
    { es: 'Cobertura financiera', en: 'Debt service coverage', score: 79 },
    { es: 'Riesgo macro', en: 'Macro risk', score: 70 },
  ];
  const overall = Math.round(factors.reduce((s, f) => s + f.score, 0) / factors.length);

  const strengths = lang === 'es' ? [
    'Cliente final con rating crediticio AA',
    'Histórico de cobros sin retrasos',
    'Garantía en escritura de primer rango',
  ] : [
    'End-client with AA credit rating',
    'Payment history with no delays',
    'First-rank notarized guarantee',
  ];

  const weaknesses = lang === 'es' ? [
    'Concentración geográfica (España)',
    'Sensibilidad al ciclo de consumo',
  ] : [
    'Geographic concentration (Spain)',
    'Sensitivity to consumer cycle',
  ];

  return (
    <div>
      <div className="risk-grid">
        <div className="risk-score-card">
          <div className="eyebrow">{t('det_risk_score')}</div>
          <div className="risk-score-num num" style={{ color: overall >= 80 ? 'var(--emerald-2)' : overall >= 60 ? 'var(--gold)' : 'var(--amber)' }}>{overall}</div>
          <div style={{ fontSize: 12, color: 'var(--text-3)' }}>/100 · {opp.rating}</div>
          <div className="risk-gauge">
            <div className="risk-gauge-fill" style={{ width: `${overall}%`, background: overall >= 80 ? 'var(--emerald-2)' : overall >= 60 ? 'var(--gold)' : 'var(--amber)' }} />
          </div>
        </div>
        <div className="risk-factors">
          <div className="eyebrow" style={{ marginBottom: 12 }}>{t('det_risk_factors')}</div>
          {factors.map(f => (
            <div key={f[lang]} className="risk-factor">
              <span style={{ flex: 1, fontSize: 13 }}>{f[lang]}</span>
              <div className="risk-bar"><div className="risk-bar-fill" style={{ width: `${f.score}%`, background: f.score >= 80 ? 'var(--emerald-2)' : f.score >= 65 ? 'var(--gold)' : 'var(--amber)' }} /></div>
              <span className="num" style={{ width: 32, textAlign: 'right', fontSize: 13, color: 'var(--text-2)' }}>{f.score}</span>
            </div>
          ))}
        </div>
      </div>

      <div className="risk-grid-2">
        <div className="card card-pad">
          <div className="eyebrow" style={{ marginBottom: 14, color: 'var(--emerald-2)' }}>{t('det_risk_strengths')}</div>
          {strengths.map(s => (
            <div key={s} className="risk-list-item">
              <Icon name="check" size={14} color="var(--emerald-2)" />
              <span>{s}</span>
            </div>
          ))}
        </div>
        <div className="card card-pad">
          <div className="eyebrow" style={{ marginBottom: 14, color: 'var(--amber)' }}>{t('det_risk_weakness')}</div>
          {weaknesses.map(s => (
            <div key={s} className="risk-list-item">
              <Icon name="x" size={14} color="var(--amber)" />
              <span>{s}</span>
            </div>
          ))}
        </div>
      </div>

      <style>{`
        .risk-grid { display: grid; grid-template-columns: 240px 1fr; gap: 16px; margin-bottom: 16px; }
        .risk-score-card {
          background: var(--surface);
          border: 1px solid var(--line);
          border-radius: var(--r-lg);
          padding: 22px;
          display: flex; flex-direction: column; gap: 8px;
        }
        .risk-score-num { font-family: var(--serif); font-size: 56px; line-height: 1; letter-spacing: -0.03em; }
        .risk-gauge { height: 4px; background: rgba(255,255,255,0.06); border-radius: 2px; margin-top: 12px; overflow: hidden; }
        .risk-gauge-fill { height: 100%; border-radius: 2px; transition: width .4s; }
        .risk-factors {
          background: var(--surface);
          border: 1px solid var(--line);
          border-radius: var(--r-lg);
          padding: 22px;
          display: flex; flex-direction: column; gap: 10px;
        }
        .risk-factor { display: flex; align-items: center; gap: 14px; }
        .risk-bar { flex: 1; max-width: 240px; height: 4px; background: rgba(255,255,255,0.05); border-radius: 2px; overflow: hidden; }
        .risk-bar-fill { height: 100%; border-radius: 2px; }
        .risk-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
        .risk-list-item { display: flex; gap: 10px; padding: 8px 0; font-size: 13px; color: var(--text-2); align-items: flex-start; }
      `}</style>
    </div>
  );
}

function DocsTab({ opp }) {
  const { lang } = useT();
  const docs = lang === 'es' ? [
    { name: 'Memoria informativa de la operación', size: '2.4 MB', date: '08 May 2025' },
    { name: 'Documento informativo (KIID)', size: '480 KB', date: '08 May 2025' },
    { name: 'Cuentas anuales auditadas 2024', size: '3.1 MB', date: '02 May 2025' },
    { name: 'Contrato modelo (cesión de crédito)', size: '320 KB', date: '08 May 2025' },
    { name: 'Informe de due diligence', size: '1.8 MB', date: '06 May 2025' },
    { name: 'Certificado del registro mercantil', size: '210 KB', date: '02 May 2025' },
  ] : [
    { name: 'Operation information memo', size: '2.4 MB', date: '08 May 2025' },
    { name: 'Key information document (KIID)', size: '480 KB', date: '08 May 2025' },
    { name: '2024 audited annual accounts', size: '3.1 MB', date: '02 May 2025' },
    { name: 'Standard contract (assignment)', size: '320 KB', date: '08 May 2025' },
    { name: 'Due diligence report', size: '1.8 MB', date: '06 May 2025' },
    { name: 'Trade registry certificate', size: '210 KB', date: '02 May 2025' },
  ];
  return (
    <div className="card" style={{ padding: 0, overflow: 'hidden' }}>
      {docs.map((d, i) => (
        <div key={i} className="doc-row">
          <div className="doc-icon-wrap"><Icon name="pdf" size={16} color="var(--text-2)" /></div>
          <div style={{ flex: 1 }}>
            <div style={{ fontSize: 13, fontWeight: 500 }}>{d.name}</div>
            <div className="num" style={{ fontSize: 11, color: 'var(--text-3)', marginTop: 2 }}>PDF · {d.size} · {d.date}</div>
          </div>
          <button className="btn btn-quiet" style={{ padding: '6px 14px', fontSize: 12 }}>
            {lang === 'es' ? 'Descargar' : 'Download'}
          </button>
        </div>
      ))}
      <style>{`
        .doc-row { display: flex; align-items: center; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--line); }
        .doc-row:last-child { border-bottom: none; }
        .doc-icon-wrap { width: 36px; height: 36px; background: var(--bg-1); border-radius: 8px; display: flex; align-items: center; justify-content: center; }
      `}</style>
    </div>
  );
}

function QATab({ opp }) {
  const { lang } = useT();
  const qs = lang === 'es' ? [
    { who: 'Inversor verificado #38', when: 'hace 2h', q: '¿Cuál es la previsión de cobro en caso de retraso del cliente final?', a: 'En caso de retraso superior a 15 días sobre la fecha de vencimiento, se activa el confirming bancario que cubre el 100% del nominal. La plataforma además mantiene un fondo de garantía propio para amortiguar desviaciones puntuales.' },
    { who: 'Family Office Iberian Partners', when: 'hace 5h', q: '¿Existe la posibilidad de aumentar el ticket por encima de los importes mostrados?', a: 'Para tickets superiores a €50.000 ofrecemos un proceso de invitación privada con condiciones específicas. Contacta con tu gestor o escríbenos a private@dividis.capital.' },
  ] : [
    { who: 'Verified investor #38', when: '2h ago', q: 'What is the collection forecast in case of end-client delay?', a: 'If a delay exceeds 15 days from maturity, the bank confirming activates and covers 100% of the nominal. The platform also maintains a guarantee fund to absorb specific deviations.' },
    { who: 'Family Office Iberian Partners', when: '5h ago', q: 'Is it possible to increase the ticket above the displayed amounts?', a: 'For tickets above €50,000 we offer a private invitation process with specific conditions. Contact your manager or write to private@dividis.capital.' },
  ];
  return (
    <div>
      {qs.map((it, i) => (
        <div key={i} className="qa-item">
          <div className="qa-who">{it.who} · <span style={{ color: 'var(--text-4)' }}>{it.when}</span></div>
          <div className="qa-q">{it.q}</div>
          <div className="qa-a">{it.a}</div>
        </div>
      ))}
      <style>{`
        .qa-item { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-lg); padding: 20px; margin-bottom: 12px; }
        .qa-who { font-size: 12px; color: var(--text-3); margin-bottom: 8px; }
        .qa-q { font-size: 14px; font-weight: 500; margin-bottom: 10px; }
        .qa-a { font-size: 13px; color: var(--text-2); line-height: 1.65; padding-left: 14px; border-left: 2px solid var(--emerald-line); }
      `}</style>
    </div>
  );
}

window.OpportunityDetail = OpportunityDetail;
