/* QFI Terminal -- QUALITY module (Alt+4 RESEARCH > FUNDAMENTALS)
   Ported from terminal/assets/css/components.css:
     - RSX DESIGN SYSTEM base (~44140-44345) -- .card, .rsx-cardrow, .score-num,
       .score-lb, .score-chip, .ck / .ck-cols / .ck .i (value/past/health list
       used by the profitability score card)
     - "flat" skin tokens + card-h3 rule (~65190-65290) -- the amber uppercase
       section headers (--flat-h: #e88a2d) and the no-box card
     - G. FUNDAMENTALS FITTINGS (~66491-66550) -- .ck-cols column-gap, .ck margin
     - .sws-checks / .sws-check / .sws-card-score (~28120-28200) -- the rounded
       check rows and the score badge (amber/green/red by threshold)
     - AL. SCORE BREAKDOWN quant factor grades (~80660-80700) -- .fg-hrow/.fg-k/
       .fg-r/.gl/.gt for the QUANT FACTOR GRADES panel
   All selectors scoped under .qm-quality. Background transparent (stage supplies
   black). */

.qm-quality {
    --flat-h: #e88a2d;
    --flat-fill: rgba(255, 255, 255, 0.05);
    --flat-hair: rgba(255, 255, 255, 0.09);
    --rx-line: #333333;
    --rx-txt: #e2e6ec;
    --rx-mut: #808c9b;
    --rx-mut2: #aab4c1;
    --rx-red: #e05252;
    --rx-green: #2ebd59;
    --rx-chip: rgba(255, 255, 255, 0.055);
    font-family: 'Lato', 'Segoe UI', system-ui, -apple-system, Arial, sans-serif;
    color: var(--rx-txt);
    font-size: 15px;
    line-height: 1.5;
    background: transparent;
    -webkit-font-smoothing: antialiased;
}
.qm-quality .mono { font-family: 'JetBrains Mono', 'Consolas', monospace; }

/* section / card headers -- amber uppercase, "flat" skin */
.qm-quality h3 {
    font-size: 15px;
    font-weight: 800;
    letter-spacing: 0.9px;
    text-transform: uppercase;
    color: var(--flat-h);
    margin: 0;
}
.qm-quality .sub { font-size: 12px; letter-spacing: 0.2px; color: var(--rx-mut2); margin-top: 2px; }
.qm-quality .rsx-cardrow { display: flex; align-items: flex-start; gap: 10px; justify-content: space-between; margin: 0 0 14px; }

/* generic score chip (the un-filled state before a verdict colors it) */
.qm-quality .score-chip { font-size: 13px; font-weight: 900; color: var(--rx-mut2); background: var(--rx-chip); border-radius: 6px; padding: 3px 10px; }
.qm-quality .sws-card-score { font-size: 14px; font-weight: 800; letter-spacing: 0.3px; padding: 3px 10px; border-radius: 4px; background: rgba(148,163,184,0.08); }
.qm-quality .sws-score-great { color: #22c55e; background: rgba(34,197,94,0.12); }
.qm-quality .sws-score-ok    { color: #f59e0b; background: rgba(245,158,11,0.12); }
.qm-quality .sws-score-poor  { color: #ef4444; background: rgba(239,68,68,0.12); }

/* entrance / idle animation primitives (ported .arev/.afade/.hb naming) */
.qm-quality .arev { opacity: 0; transform: translateY(14px); transition: opacity .6s ease var(--d,0ms), transform .6s cubic-bezier(.2,.65,.25,1) var(--d,0ms); }
.qm-quality .arev.go { opacity: 1; transform: none; }
.qm-quality .afade { opacity: 0; transition: opacity .5s ease var(--d,0ms); }
.qm-quality .afade.go { opacity: 1; }

/* =========================================================================
   quality.radar -- snowflake radar + QUANT FACTOR GRADES (print E13)
   ========================================================================= */
.rs-stage[data-el="quality.radar"] { background: transparent; box-shadow: none; border-radius: 0; }
.qm-radar { box-sizing: border-box; display: flex; align-items: flex-start; gap: 94px; padding-left: 60px; background: transparent; }
.qm-radar .qr-total { box-sizing: border-box; width: 390px; display: flex; align-items: center; gap: 11px; margin: 0 0 12px; padding-left: 0; }
.qm-radar .qr-total > .qr-title { color: #dce7f3; font-size: 21px; font-weight: 800; letter-spacing: -.025em; white-space: nowrap; }
.qm-radar .qr-total .gq { margin-left: 0; padding: 5px 12px; font-size: 12px; line-height: 1; }
.qm-radar .qr-left { flex: none; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding-top: 6px; }
.qm-radar canvas { display: block; }
.qm-radar .qr-right {
    flex: 1 1 auto; min-width: 300px; display: flex; flex-direction: column;
    justify-content: flex-start; padding: 66px 0 0;
}
.qm-radar .fg-hrow { display: flex; align-items: center; gap: 12px; padding: 0 0 17px; margin: 0 0 4px; }
.qm-radar .fg-k { font-size: 21px; font-weight: 800; letter-spacing: 1.1px; color: #c5d1df; text-transform: uppercase; }
.qm-radar .gq {
    margin-left: auto; padding: 6px 14px; border-radius: 4px;
    font-size: 13px; font-weight: 800; letter-spacing: 0.5px; white-space: nowrap;
    opacity: 0; transform: scale(0.85); transition: opacity .4s ease var(--d,0ms), transform .4s cubic-bezier(.3,1.4,.4,1) var(--d,0ms);
}
.qm-radar .gq.go { opacity: 1; transform: none; }
.qm-radar .fg-r {
    display: flex; align-items: center; gap: 18px;
    padding: 14px 0;
    opacity: 0; transform: translateX(-10px);
    transition: opacity .5s ease var(--d,0ms), transform .5s cubic-bezier(.2,.65,.25,1) var(--d,0ms);
}
.qm-radar .fg-r.go { opacity: 1; transform: none; }
.qm-radar .fg-r .gl {
    width: 54px; height: 54px; flex: none; border-radius: 15px;
    display: flex; align-items: center; justify-content: center;
    font-size: 23px; font-weight: 900;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 8px 18px rgba(0,0,0,.22);
}
.qm-radar .fg-r .gt { min-width: 0; flex: 1 1 auto; }
.qm-radar .fg-r .gt b { display: block; font-size: 25px; font-weight: 800; color: #f2f6fb; }
.qm-radar .fg-r .gt i { display: block; width: 100%; margin-top: 3px; font-style: normal; font-size: 17px; color: #9eacbd; line-height: 1.35; text-align: right; }

/* =========================================================================
   quality.checklist -- VALUATION / PAST PERFORMANCE / FINANCIAL HEALTH
   (print E14)
   ========================================================================= */
.qm-checklist .qc-section { padding: 22px 0; }
.qm-checklist .qc-section + .qc-section { box-shadow: inset 0 1px 0 var(--flat-hair); }
.qm-checklist .qc-section:first-child { padding-top: 0; }
.qm-checklist .qc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.qm-checklist .qc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.qm-checklist .sws-check {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 12px 14px; border-radius: 6px;
    background: rgba(148,163,184,0.045);
    opacity: 0; transform: translateY(8px);
    transition: opacity .45s ease var(--d,0ms), transform .45s cubic-bezier(.2,.65,.25,1) var(--d,0ms);
}
.qm-checklist .sws-check.go { opacity: 1; transform: none; }
.qm-checklist .sws-check-icon { font-size: 15px; font-weight: 900; flex-shrink: 0; line-height: 1.5; width: 16px; text-align: center; }
.qm-checklist .sws-pass .sws-check-icon { color: #22c55e; }
.qm-checklist .sws-fail .sws-check-icon { color: #e05252; }
.qm-checklist .sws-check-text { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.qm-checklist .sws-check-label { font-size: 14px; font-weight: 700; color: var(--rx-txt); letter-spacing: 0.1px; }
.qm-checklist .sws-check-desc { font-size: 12.5px; color: var(--rx-mut2); line-height: 1.45; }
.qm-checklist .qc-hidden-note { font-size: 11.5px; color: var(--rx-mut); margin-top: 10px; font-style: italic; }

/* =========================================================================
   quality.profitability -- AMZN PROFITABILITY SCORE (print E15)
   ========================================================================= */
.qm-profitability .qp-head { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 22px; }
.qm-profitability .qp-headline h3 { font-size: 15px; }
.qm-profitability .qp-scorebox { text-align: right; display: flex; align-items: center; gap: 14px; }
.qm-profitability .qp-score-num { font-size: 40px; font-weight: 900; line-height: 1; font-family: 'Lato', sans-serif; }
.qm-profitability .qp-score-num small { font-size: 14px; color: var(--rx-mut); font-weight: 700; }
.qm-profitability .qp-score-lb { font-size: 11px; font-weight: 800; letter-spacing: 0.6px; color: var(--rx-mut); margin-top: 4px; text-transform: uppercase; }
.qm-profitability .qp-logo {
    width: 30px; height: 30px; border-radius: 6px; flex: none;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(160deg, #2a2f38, #14171c);
    box-shadow: inset 0 0 0 1px var(--flat-hair);
    color: #e88a2d; font-weight: 900; font-size: 13px;
}
.qm-profitability .qp-cols { display: grid; grid-template-columns: repeat(3, 1fr); column-gap: 40px; row-gap: 6px; }
.qm-profitability .qp-item {
    display: flex; align-items: baseline; gap: 8px; padding: 5px 0; font-size: 13px;
    opacity: 0; transform: translateY(6px);
    transition: opacity .4s ease var(--d,0ms), transform .4s cubic-bezier(.2,.65,.25,1) var(--d,0ms);
}
.qm-profitability .qp-item.go { opacity: 1; transform: none; }
.qm-profitability .qp-item .i { font-weight: 900; flex: none; width: 14px; text-align: center; }
.qm-profitability .qp-item .i.ok { color: var(--rx-green); }
.qm-profitability .qp-item .i.no { color: var(--rx-red); }
.qm-profitability .qp-item .i.mid { color: #e2b23c; }
.qm-profitability .qp-item .label { color: var(--rx-txt); }
.qm-profitability .qp-item .val { font-weight: 700; color: var(--rx-mut2); margin-left: 4px; }
