// ───────────────────────────────────────────────────────────────────────────── // Page: Intelligence Hub (.intel-* layout) // File: src/scss/pages/_intel.scss // // STRUCTURAL LAYOUT ONLY — zero colors, zero typography here. // Visual rules live in components/_intel.scss. // ───────────────────────────────────────────────────────────────────────────── .intel-wrap { padding: 0; } // ── Header ──────────────────────────────────────────────────────────────────── .intel-hd { display: flex; align-items: baseline; gap: 0.75rem; margin-bottom: 1.75rem; padding-bottom: 1rem; } .intel-hd-title { display: flex; align-items: center; gap: 0.5rem; } // ── Subpage header ──────────────────────────────────────────────────────────── .intel-subhd { margin-bottom: 1.75rem; padding-bottom: 1rem; } .intel-back { display: inline-flex; align-items: center; gap: 0.25rem; margin-bottom: 0.6rem; } .intel-subhd-title { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.35rem; } // ── No-index state ──────────────────────────────────────────────────────────── .intel-no-index { display: flex; align-items: flex-start; gap: 1rem; padding: 1.5rem; } // ── Top row — health + alerts ───────────────────────────────────────────────── .intel-top-row { display: grid; grid-template-columns: 1fr 2fr; gap: 1.25rem; margin-bottom: 1.25rem; @media (max-width: 700px) { grid-template-columns: 1fr; } } // ── Health gauge ────────────────────────────────────────────────────────────── .intel-health-card { display: flex; flex-direction: column; align-items: center; gap: 0.5rem; padding: 1.25rem 1rem; } .intel-health-gauge { width: 100px; height: 100px; position: relative; } .intel-health-svg { width: 100%; height: 100%; } // ── Alert strip ─────────────────────────────────────────────────────────────── .intel-alerts { padding: 1rem 1.25rem; } .intel-alerts-title { margin-bottom: 0.75rem; } .intel-alert-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; } .intel-alert { display: flex; align-items: center; gap: 0.5rem; } .intel-alert-link { margin-left: auto; } // ── Panel cards ─────────────────────────────────────────────────────────────── .intel-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.25rem; margin-bottom: 1.5rem; @media (max-width: 1100px) { grid-template-columns: repeat(2, 1fr); } @media (max-width: 540px) { grid-template-columns: 1fr; } } .intel-card { padding: 1rem; } .intel-card-hd { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 0.75rem; } // ── Bar chart rows ──────────────────────────────────────────────────────────── .intel-bar-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; } .intel-bar-row { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto; gap: 0.1rem 0.5rem; align-items: center; } .intel-bar-label { grid-column: 1; grid-row: 1; } .intel-bar-track { height: 4px; grid-column: 1; grid-row: 2; &--full { height: 6px; margin-top: 0.3rem; } } .intel-bar-val { grid-column: 2; grid-row: 1 / span 2; } // ── Dead code card ──────────────────────────────────────────────────────────── .intel-dead-summary { margin-bottom: 0.6rem; } .intel-dead-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.4rem; } .intel-dead-row { display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; } // ── Blast risk card ─────────────────────────────────────────────────────────── .intel-blast-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.5rem; } .intel-blast-row { display: flex; align-items: baseline; gap: 0.5rem; } .intel-blast-addr { flex: 1; } // ── Velocity sparkline ──────────────────────────────────────────────────────── .intel-velocity-wrap { padding: 1rem 1.25rem; } .intel-velocity-title { margin-bottom: 0.5rem; } .intel-velocity-bars { display: flex; align-items: flex-end; gap: 3px; height: 56px; } .intel-velocity-bar { flex: 1; } // ── Full-list (subpage) shared ──────────────────────────────────────────────── .intel-full-list { display: flex; flex-direction: column; gap: 0; } .intel-empty-state { display: flex; flex-direction: column; align-items: center; gap: 1rem; padding: 3rem 1.5rem; } // ── Hotspot full rows ───────────────────────────────────────────────────────── .intel-hs-row { padding: 0.75rem 1rem; } .intel-hs-meta { display: flex; align-items: baseline; gap: 0.75rem; margin-bottom: 0.35rem; } .intel-hs-bar-wrap { display: flex; align-items: center; gap: 0.5rem; } // ── Dead full rows ──────────────────────────────────────────────────────────── .intel-dead-full-row { padding: 0.75rem 1rem; } .intel-dead-full-addr { margin-bottom: 0.3rem; } .intel-dead-full-meta { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; } // ── Blast risk full rows ────────────────────────────────────────────────────── .intel-blast-full-row { padding: 0.85rem 1rem; } .intel-blast-full-hd { display: flex; align-items: baseline; gap: 0.5rem; margin-bottom: 0.35rem; } .intel-blast-co-list { display: flex; flex-wrap: wrap; gap: 0.25rem; align-items: baseline; }