168 lines
3.8 KiB
CSS
168 lines
3.8 KiB
CSS
/* ==========================================
|
|
Chat Switchboard — Pane Container
|
|
==========================================
|
|
v0.25.0: Styles for the multi-pane layout system.
|
|
Covers: pane container, leaf panes, tabbed panes,
|
|
drag handles, and tab bars.
|
|
========================================== */
|
|
|
|
/* ── Container ─────────────────────────────── */
|
|
|
|
.pane-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* ── Split ─────────────────────────────────── */
|
|
|
|
.pane-split--horizontal {
|
|
display: flex;
|
|
flex-direction: row;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.pane-split--vertical {
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* ── Leaf Pane ─────────────────────────────── */
|
|
|
|
.pane-leaf {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
position: relative;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
.pane-minimized {
|
|
max-width: 0 !important;
|
|
max-height: 0 !important;
|
|
padding: 0 !important;
|
|
border: none !important;
|
|
overflow: hidden !important;
|
|
}
|
|
|
|
/* ── Tabbed Pane ───────────────────────────── */
|
|
|
|
.pane-tabbed {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
/* Tab Bar */
|
|
.pane-tab-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0;
|
|
background: var(--bg-secondary, #1a1a1e);
|
|
border-bottom: 1px solid var(--border, #2a2a2e);
|
|
flex-shrink: 0;
|
|
height: 32px;
|
|
padding: 0 4px;
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
}
|
|
|
|
.pane-tab-bar::-webkit-scrollbar { height: 0; }
|
|
|
|
.pane-tab-btn {
|
|
background: none;
|
|
border: none;
|
|
color: var(--text-3, #777);
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
font-family: inherit;
|
|
padding: 6px 12px;
|
|
cursor: pointer;
|
|
border-bottom: 2px solid transparent;
|
|
transition: color 0.15s, border-color 0.15s;
|
|
white-space: nowrap;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.3px;
|
|
}
|
|
|
|
.pane-tab-btn:hover {
|
|
color: var(--text, #eee);
|
|
}
|
|
|
|
.pane-tab-btn--active {
|
|
color: var(--accent, #b38a4e);
|
|
border-bottom-color: var(--accent, #b38a4e);
|
|
}
|
|
|
|
/* Tab Content */
|
|
.pane-tab-content {
|
|
flex: 1;
|
|
min-height: 0;
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
|
|
.pane-tab-panel {
|
|
position: absolute;
|
|
inset: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* When panel is hidden (inactive tab), override absolute positioning */
|
|
.pane-tab-panel[style*="display: none"] {
|
|
position: absolute;
|
|
}
|
|
|
|
/* ── Drag Handle ───────────────────────────── */
|
|
|
|
.pane-handle {
|
|
flex-shrink: 0;
|
|
background: var(--border, #2a2a2e);
|
|
transition: background 0.15s;
|
|
z-index: 10;
|
|
}
|
|
|
|
.pane-handle--horizontal {
|
|
width: 4px;
|
|
cursor: col-resize;
|
|
}
|
|
|
|
.pane-handle--vertical {
|
|
height: 4px;
|
|
cursor: row-resize;
|
|
}
|
|
|
|
.pane-handle:hover,
|
|
.pane-handle--active {
|
|
background: var(--accent, #b38a4e);
|
|
}
|
|
|
|
/* ── Responsive ────────────────────────────── */
|
|
|
|
@media (max-width: 768px) {
|
|
/* On mobile, splits collapse to vertical stack */
|
|
.pane-split--horizontal {
|
|
flex-direction: column;
|
|
}
|
|
|
|
.pane-handle--horizontal {
|
|
width: 100%;
|
|
height: 4px;
|
|
cursor: row-resize;
|
|
}
|
|
|
|
/* Hide non-primary panes on mobile */
|
|
.pane-split--horizontal > .pane:not(:first-child) {
|
|
display: none;
|
|
}
|
|
.pane-split--horizontal > .pane-handle {
|
|
display: none;
|
|
}
|
|
}
|