/* 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)); } .tabs--auto { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 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, .tab-btn[aria-checked='true'] { background: var(--surface-selected); color: var(--text-primary); font-weight: 600; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 55%, var(--border-control)); } .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; } .tab-btn .tab-count { display: inline-grid; place-items: center; min-width: 18px; height: 18px; margin-left: 6px; padding: 0 5px; border-radius: var(--radius-pill); color: var(--on-accent); background: var(--accent); font-size: .6875rem; font-weight: var(--weight-bold); line-height: 1; vertical-align: 1px; }