/* Shared tab geometry and tab primitives. */ .tabs { min-height: 44px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px; border: 1px solid var(--border-subtle); border-radius: 12px; padding: 4px; background: var(--surface); } .tabs--three { grid-template-columns: repeat(3, minmax(0, 1fr)); } .tab-btn { min-height: 44px; border: 0; background: transparent; border-radius: 9px; padding: 8px; color: var(--text-muted); cursor: pointer; } .tab-btn.active { background: var(--surface-selected); color: var(--text); } .tab-btn:hover { color: var(--text-primary); } .tab-btn:active { transform: scale(.98); } .tab-btn:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: -2px; } /* ===== Shared primary topbar + upper tabs geometry (2026-08-22) ===== * «Связи» теперь монтируют header в общий topbar-slot, как остальные основные экраны. * Верхние переключатели используют один ритм и не меняют вертикальную позицию между страницами. */ :root { --app-primary-tabs-top-gap: 14px; --app-primary-tabs-gap: 8px; --app-primary-tab-min-height: 28px; } /* Общий контейнер верхних кнопок-вкладок. */ .app-top-tabs { min-height: var(--app-primary-tab-min-height); display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: var(--app-primary-tabs-gap); margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }