diff --git a/public/css/aurora.css b/public/css/aurora.css index 647b86ee..c9147394 100644 --- a/public/css/aurora.css +++ b/public/css/aurora.css @@ -579,8 +579,10 @@ input[type=date]:focus, select:focus { .gw-relnotes{font-size:12px;color:var(--muted);text-decoration:underline;text-underline-offset:2px;opacity:.8} .gw-relnotes:hover{opacity:1;color:var(--text)} -/* Issue 11: Gateway detail — 3-column (1/3 each) sub-card grid */ -.gw-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px} +/* Issue 11: Gateway detail — exactly 3 columns (1/3 each), max 3 side by side; collapse on narrow */ +.gw-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px} +@media(max-width:1100px){.gw-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}} +@media(max-width:760px){.gw-detail-grid{grid-template-columns:1fr}} .gw-detail-grid .gw.full{grid-column:1/-1} /* Fix 3: "Discovered devices" + "Scan targets" at 1/2 width each in their own row */ .gw-half-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;grid-column:1/-1} diff --git a/tests/aurora_theme.test.js b/tests/aurora_theme.test.js index 3ec87543..f27a516e 100644 --- a/tests/aurora_theme.test.js +++ b/tests/aurora_theme.test.js @@ -1456,11 +1456,11 @@ describe('aurora theme — gateways UX fixes (Issues 8/9/10/11)', () => { assert.match(js, /grid2\.appendChild\(auroraVersionsCard\(g\)\)/, 'auroraRenderDetail() calls auroraVersionsCard(g)'); }); - it('Issue 11: auroraRenderDetail uses gw-detail-grid and aurora.css has responsive column rule', () => { + it('Issue 11: auroraRenderDetail uses gw-detail-grid with exactly 3 columns (1/3 each)', () => { const js = fs.readFileSync(path.join(__dirname, '..', 'public', 'js', 'gateways.js'), 'utf8'); const css = fs.readFileSync(path.join(__dirname, '..', 'public', 'css', 'aurora.css'), 'utf8'); assert.match(js, /el\('div',\s*'gw-detail-grid'\)/, 'auroraRenderDetail() uses gw-detail-grid class'); - assert.match(css, /\.gw-detail-grid\s*\{[^}]*repeat\(auto-fit,minmax\(280px,1fr\)\)/, 'gw-detail-grid uses responsive auto-fit column layout'); + assert.match(css, /\.gw-detail-grid\s*\{[^}]*repeat\(3,minmax\(0,1fr\)\)/, 'gw-detail-grid uses exactly 3 columns (1/3 each)'); }); });