diff --git a/src/reviewer/viz/index.html b/src/reviewer/viz/index.html index 2257a25..25f8e57 100644 --- a/src/reviewer/viz/index.html +++ b/src/reviewer/viz/index.html @@ -565,6 +565,124 @@ .comment-panel::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 3px; } .paper-panel::-webkit-scrollbar-thumb:hover, .comment-panel::-webkit-scrollbar-thumb:hover { background: #9ca3af; } + +/* ── Mobile bottom nav ── */ +.mobile-bottom-nav { + display: none; + position: fixed; + bottom: 0; left: 0; right: 0; + height: 56px; + background: var(--surface); + border-top: 1px solid var(--border); + z-index: 200; + box-shadow: 0 -2px 8px rgba(0,0,0,0.06); +} +.mobile-bottom-nav-btn { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 3px; + font-size: 11px; + font-weight: 500; + font-family: inherit; + color: var(--text-secondary); + background: none; + border: none; + cursor: pointer; + transition: color 0.15s; + position: relative; +} +.mobile-bottom-nav-btn.active { color: var(--accent); } +.mobile-bottom-nav-btn svg { width: 22px; height: 22px; } +.mobile-nav-badge { + position: absolute; + top: 5px; + right: calc(50% - 22px); + font-size: 9px; + font-weight: 700; + background: var(--accent); + color: #fff; + border-radius: 10px; + min-width: 16px; + height: 16px; + line-height: 16px; + text-align: center; + padding: 0 4px; +} + +/* ── Mobile responsive ── */ +@media (max-width: 768px) { + body { + display: flex; + flex-direction: column; + height: 100vh; + overflow: hidden; + } + + /* Header: two-row layout */ + .header { + flex-wrap: wrap; + height: auto; + min-height: var(--header-h); + padding: 8px 16px; + gap: 6px; + align-content: center; + flex-shrink: 0; + } + .header .separator { display: none; } + .legend { display: none; } + .paper-select-wrapper { order: 4; max-width: 100%; width: 100%; } + + /* Tabs + metrics: don't shrink */ + .tabs-bar { flex-shrink: 0; padding: 0 12px; } + .metrics-bar { flex-shrink: 0; padding: 0 12px; font-size: 11px; gap: 10px; } + + /* Main: fill remaining space, panels overlap via absolute */ + .main { + flex: 1; + min-height: 0; + height: auto; + overflow: hidden; + position: relative; + } + + /* Paper panel: full size, visible by default */ + .paper-panel { + position: absolute; + top: 0; left: 0; right: 0; bottom: 0; + padding: 20px 16px 72px; + border-right: none; + overflow-y: auto; + } + .paper-panel.mobile-hidden { display: none; } + .paper-panel-inner { max-width: 100%; } + + /* Paragraphs: tighter on mobile */ + .para { padding: 6px 10px; margin: 0 -10px 2px; } + .para .para-idx { display: none; } + + /* Comment panel: full size, hidden by default on mobile */ + .comment-panel { + position: absolute; + top: 0; left: 0; right: 0; bottom: 0; + flex: none; + width: 100%; + display: none; + overflow-y: auto; + padding-bottom: 56px; + } + .comment-panel.mobile-active { display: block; } + + /* Show the mobile nav */ + .mobile-bottom-nav { display: flex; } +} + +@media (max-width: 480px) { + .version-badge { display: none; } + .metrics-bar { font-size: 10px; gap: 8px; } +}
@@ -585,6 +703,18 @@ + +