style allow insights charts to flex into 2 columns on xl

Use col-12 col-xl-6 so charts pair up on wide screens like probe readings.

Commit
cd0a08a8a5a72f41d987309fcb967d13dd1442b4
Author
gpt-5.6-sol high <agent@openai.com>
Author date
Committer
gpt-5.6-sol high <agent@openai.com>
Committer date
roles/dashboard/templates/dashboard/insights.html.ep
index ee5b7682..02abc637 100644..100644
@@ -8,7 +8,7 @@
8 8 </div>
9 9
10 10 <div class="row g-3">
11 Removed: <div class="col-12" id="stability">
11 Added: <div class="col-12 col-xl-6" id="stability">
12 12 <div class="card">
13 13 %= include 'dashboard/chart-card-header', title => 'System Stability', info_id => 'info-stability', info_text => 'A <strong>lower score means more stable</strong>. Rolling standard deviation (σ) of all probe values over a 6-hour window, normalised to each optimal range. Spikes indicate rapid or large deviations from normal conditions.'
14 14 <div class="card-body">
@@ -19,7 +19,7 @@
19 19 </div>
20 20 </div>
21 21
22 Removed: <div class="col-12" id="rate-of-change">
22 Added: <div class="col-12 col-xl-6" id="rate-of-change">
23 23 <div class="card">
24 24 %= include 'dashboard/chart-card-header', title => 'Rate of Change', info_id => 'info-derivatives', info_text => 'Normalised rate of change per probe (% of optimal range per hour). Values near zero mean the parameter is steady.'
25 25 <div class="card-body">
@@ -30,7 +30,7 @@
30 30 </div>
31 31 </div>
32 32
33 Removed: <div class="col-12" id="diurnal">
33 Added: <div class="col-12 col-xl-6" id="diurnal">
34 34 <div class="card">
35 35 %= include 'dashboard/chart-card-header', title => 'DO Diurnal Pattern', info_id => 'info-diurnal', info_text => 'Day/night DO cycle &mdash; each line is one day, bold is the 7-day average. Shows photosynthesis-driven oxygen production during daylight hours.'
36 36 <div class="card-body">
@@ -41,7 +41,7 @@
41 41 </div>
42 42 </div>
43 43
44 Removed: <div class="col-12" id="do-orp-overlay">
44 Added: <div class="col-12 col-xl-6" id="do-orp-overlay">
45 45 <div class="card">
46 46 %= include 'dashboard/chart-card-header', title => 'DO &amp; ORP Over Time', info_id => 'info-do-orp', info_text => 'Dual-axis overlay with outdoor temperature. Correlated DO/ORP drops indicate oxygen-driven redox shifts. The grey dashed line shows outdoor temperature for correlation.'
47 47 <div class="card-body">
@@ -52,7 +52,7 @@
52 52 </div>
53 53 </div>
54 54
55 Removed: <div class="col-12" id="ph-do-lag">
55 Added: <div class="col-12 col-xl-6" id="ph-do-lag">
56 56 <div class="card">
57 57 %= include 'dashboard/chart-card-header', title => 'pH &#8596; DO Relationship', info_id => 'info-ph-do', info_text => 'Nitrification link &mdash; DO drops often precede pH drops. When bacteria consume oxygen for nitrification, they produce acid which lowers pH.'
58 58 <div class="card-body">