:root{--bg: #0f1115;--panel: #171a21;--panel-raised: #1d212a;--border: #262b36;--text: #e6e9ef;--text-dim: #8b93a3;--teal: #4fd1c5;--amber: #f6ad55;--danger: #f56565;--font-display: "Inter", -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--radius: 8px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-display);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.app-shell{max-width:1180px;margin:0 auto;padding:24px 20px 64px}.top-nav{display:flex;align-items:center;justify-content:space-between;padding-bottom:24px;border-bottom:1px solid var(--border);margin-bottom:24px}.brand{font-family:var(--font-mono);font-weight:700;letter-spacing:.02em;font-size:18px}.brand .dot{color:var(--teal)}.nav-links{display:flex;gap:20px}.nav-links a{font-size:14px;color:var(--text-dim);padding:6px 2px;border-bottom:2px solid transparent}.nav-links a.active,.nav-links a:hover{color:var(--text);border-bottom-color:var(--teal)}.disclaimer-bar{background:#f6ad5514;border:1px solid rgba(246,173,85,.35);color:var(--amber);font-size:12.5px;padding:8px 14px;border-radius:var(--radius);margin-bottom:20px;line-height:1.5}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.panel+.panel{margin-top:16px}h1,h2,h3{font-family:var(--font-display);font-weight:600;margin:0 0 12px}h1{font-size:22px}h2{font-size:16px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-size:12.5px}.mono{font-family:var(--font-mono)}.source-banner{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:8px 14px;border-radius:var(--radius);margin-bottom:16px}.source-banner.ok{background:#4fd1c514;border:1px solid rgba(79,209,197,.3);color:var(--teal)}.source-banner.stale{background:#f5656514;border:1px solid rgba(245,101,101,.35);color:var(--danger)}.source-banner .indicator{width:7px;height:7px;border-radius:50%;background:currentColor}.screener-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.toggle-group{display:flex;gap:4px;background:var(--panel-raised);padding:3px;border-radius:999px}.toggle-group button{border:none;background:transparent;color:var(--text-dim);font-size:12.5px;padding:6px 14px;border-radius:999px;cursor:pointer;font-family:var(--font-display);font-weight:500}.toggle-group button.active{background:var(--panel);color:var(--text)}table.screener{width:100%;border-collapse:collapse}table.screener th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--border)}table.screener td{padding:12px 10px;border-bottom:1px solid var(--border);font-size:14px;vertical-align:middle}table.screener tr:hover td{background:#ffffff04}table.screener tr{cursor:pointer}.ticker-cell{display:flex;flex-direction:column}.ticker-cell .symbol{font-family:var(--font-mono);font-weight:700}.ticker-cell .name{font-size:11.5px;color:var(--text-dim)}.sector-tag{font-size:11px;color:var(--text-dim);background:var(--panel-raised);padding:3px 8px;border-radius:999px;display:inline-block}.consensus-strip{display:flex;flex-direction:column;gap:4px;min-width:140px}.consensus-track{position:relative;height:6px;border-radius:3px;background:linear-gradient(90deg,var(--danger) 0%,#b98a52 25%,var(--text-dim) 50%,#7fc7bd 75%,var(--teal) 100%);opacity:.9}.consensus-marker{position:absolute;top:-3px;width:2px;height:12px;background:var(--text);box-shadow:0 0 0 2px var(--bg)}.consensus-label{font-family:var(--font-mono);font-size:11.5px;color:var(--text-dim);display:flex;justify-content:space-between}.consensus-label .score-value{color:var(--text);font-weight:700}.dispersion-flag{font-size:10.5px;color:var(--amber)}.scale-legend{display:flex;justify-content:space-between;font-size:10px;color:var(--text-dim);margin-top:2px;font-family:var(--font-mono)}.scale-legend span:first-child{color:var(--danger)}.scale-legend span:last-child{color:var(--teal)}.info-hint{font-size:11px;color:var(--text-dim);border-bottom:1px dotted var(--text-dim);cursor:help}.freshness-badge{font-size:10.5px;padding:2px 7px;border-radius:4px;display:inline-block;font-family:var(--font-mono)}.freshness-badge.fresh{color:var(--teal);background:#4fd1c51a}.freshness-badge.aging{color:var(--amber);background:#f6ad551f}.legend-panel{font-size:12.5px;color:var(--text-dim);line-height:1.7}.legend-panel dt{color:var(--text);font-weight:600;display:inline}.legend-panel dd{margin:0 0 6px;display:inline}.legend-panel .row{display:block}.upside-value.positive{color:var(--teal)}.upside-value.negative{color:var(--danger)}.detail-header{display:flex;align-items:baseline;gap:12px;margin-bottom:4px}.detail-header .symbol{font-family:var(--font-mono);font-size:26px;font-weight:700}.detail-header .name{color:var(--text-dim);font-size:15px}.score-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}.score-tile{background:var(--panel-raised);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.score-tile .label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em}.score-tile .value{font-family:var(--font-mono);font-size:20px;font-weight:700;margin-top:4px}.rating-history-row{display:grid;grid-template-columns:90px 110px 1fr 90px 90px;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}.rating-badge{font-family:var(--font-mono);font-weight:700;font-size:11.5px;padding:2px 7px;border-radius:4px;display:inline-block;text-align:center}.rating-badge.r5,.rating-badge.r4{color:var(--teal);background:#4fd1c51f}.rating-badge.r3{color:var(--text-dim);background:var(--panel-raised)}.rating-badge.r2,.rating-badge.r1{color:var(--danger);background:#f565651f}.order-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin-top:16px}.order-form label{display:flex;flex-direction:column;font-size:11.5px;color:var(--text-dim);gap:4px}.order-form input,.order-form select{background:var(--panel-raised);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 10px;font-family:var(--font-mono);font-size:13px;width:110px}.btn{border:none;border-radius:6px;padding:9px 18px;font-weight:600;font-size:13.5px;cursor:pointer;font-family:var(--font-display)}.btn-buy{background:var(--teal);color:#06231f}.btn-sell{background:var(--danger);color:#2a0d0d}.btn:disabled{opacity:.5;cursor:not-allowed}.order-error{color:var(--danger);font-size:12.5px;margin-top:8px}.order-success{color:var(--teal);font-size:12.5px;margin-top:8px}.portfolio-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.portfolio-summary .score-tile .value{font-size:22px}.positions-row{display:grid;grid-template-columns:100px 1fr 100px 100px 100px;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);font-size:13.5px}.pnl-positive{color:var(--teal)}.pnl-negative{color:var(--danger)}.empty-state{color:var(--text-dim);font-size:13.5px;padding:24px 0;text-align:center}.section-label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);margin-bottom:8px}.cbreak{width:100%}.cbreak-bar{display:flex;width:100%;border-radius:4px;overflow:hidden;background:var(--border)}.cbreak-seg{height:100%}.cbreak-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px;font-size:12px;color:var(--text-dim);align-items:center}.cbreak-item{display:inline-flex;align-items:center;gap:5px}.cbreak-item strong{color:var(--text)}.cbreak-dot{width:9px;height:9px;border-radius:2px;display:inline-block}.cbreak-total{margin-left:auto;color:var(--text);font-weight:600}.trend-list{display:flex;flex-direction:column;gap:8px}.trend-row{display:grid;grid-template-columns:78px 1fr 44px 42px;align-items:center;gap:12px}.trend-period{font-size:12px;color:var(--text-dim)}.trend-mean{font-size:13px;font-weight:600;text-align:right}.trend-total{font-size:11px;color:var(--text-dim);text-align:right}.workflow-steps{margin:10px 0 0;padding-left:20px;font-size:13px;color:var(--text);line-height:1.6}.workflow-steps li{margin-bottom:8px}.workflow-steps strong{color:var(--text)}
