diff --git a/apps/hq-web/src/app.css b/apps/hq-web/src/app.css index 18ce189..5d313d6 100644 --- a/apps/hq-web/src/app.css +++ b/apps/hq-web/src/app.css @@ -153,6 +153,18 @@ .wf-pager { display: flex; align-items: center; gap: 10px; margin-top: 10px; flex-wrap: wrap; font-size: 13px; color: var(--text-dim); } .wf-pager > span:first-child { margin-right: auto; } +/* Per-module collapsible section on Client 360 → Modules: coloured header, everything of + one module lives inside it, so a client with many modules stays scannable. */ +.mod-section { border: 1px solid var(--border); border-radius: var(--radius); margin-top: 12px; overflow: hidden; background: var(--bg-raised); } +.mod-section > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; + padding: 10px 14px; background: var(--accent-soft); color: var(--accent-strong); font-weight: 700; + border-left: 4px solid var(--accent); user-select: none; } +.mod-section > summary::-webkit-details-marker { display: none; } +.mod-section > summary::before { content: '▸'; font-size: 12px; transition: transform .15s ease; opacity: .8; } +.mod-section[open] > summary::before { transform: rotate(90deg); } +.mod-section > summary .mod-name { flex: 1; font-size: 14px; letter-spacing: .2px; } +.mod-section-body { padding: 10px 14px 14px; } + /* Section header shared by the queue block and the bento cards */ .dash-head { display: flex; align-items: center; gap: 10px; padding: 2px 0 10px; } .dash-head h3 { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--text-dim); margin: 0; } diff --git a/apps/hq-web/src/pages/ClientDetail.tsx b/apps/hq-web/src/pages/ClientDetail.tsx index 8d0df8c..a9bf323 100644 --- a/apps/hq-web/src/pages/ClientDetail.tsx +++ b/apps/hq-web/src/pages/ClientDetail.tsx @@ -293,17 +293,26 @@ export function ClientDetail() { })} /> )} - {(cms.data ?? []).length > 0 &&