/* Theme Name: БИТ.WMS Child Theme URI: https://bitwms.ru/ Description: GeneratePress child theme for the БИТ.WMS expert portal. Brandbook styles: corporate pink #E50071, minimalist layout, Suisse Int'l typography. Author: БИТ.WMS Author URI: https://bitwms.ru/ Template: generatepress Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: bitwms-child */ /* ========================================================================== @font-face — Suisse Int'l (woff2 files go into fonts/ directory) Fallback to Arial until font files are deployed. ========================================================================== */ @font-face { font-family: 'Suisse Intl'; src: url('fonts/SuisseIntl-Book.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Suisse Intl'; src: url('fonts/SuisseIntl-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } /* ========================================================================== CSS Custom Properties — brandbook tokens ========================================================================== */ :root { /* --- Colors --- */ --color-white: #FFFFFF; --color-primary: #E50071; /* Pantone 213 C, RGB 229 0 113 — primary corporate */ --color-black: #000000; --color-gray-light: #EBEBEB; /* RGB 235 235 235 — secondary */ --color-gray-text: #666666; /* --- Typography --- */ --font-family-base: 'Suisse Intl', Arial, sans-serif; --font-heading: var(--font-family-base); --font-body: var(--font-family-base); --font-weight-book: 400; --font-weight-bold: 700; --font-size-base: 16px; --line-height-base: 1.6; /* --- Layout dimensions --- */ --sidebar-width-collapsed: 70px; --sidebar-width-expanded: 250px; --content-max-width: 1200px; --header-height: 60px; /* --- Spacing scale --- */ --space-xs: 4px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; --space-xl: 40px; --space-2xl: 64px; /* --- Transition --- */ --transition-base: 0.2s ease; } /* ========================================================================== Global reset / base ========================================================================== */ *, *::before, *::after { box-sizing: border-box; } html { font-size: var(--font-size-base); -webkit-text-size-adjust: 100%; } body { margin: 0; padding: 0; font-family: var(--font-family-base); font-weight: var(--font-weight-book); font-size: var(--font-size-base); line-height: var(--line-height-base); color: var(--color-black); background-color: var(--color-white); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* ========================================================================== Headings ========================================================================== */ h1, h2, h3, h4 { font-family: var(--font-family-base); font-weight: var(--font-weight-bold); color: var(--color-black); line-height: 1.2; margin-top: 0; margin-bottom: var(--space-md); } h1 { font-size: 2.5rem; /* 40px */ } h2 { font-size: 2rem; /* 32px */ } h3 { font-size: 1.5rem; /* 24px */ } h4 { font-size: 1.125rem; /* 18px */ } /* ========================================================================== Links ========================================================================== */ a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-base); } a:hover, a:focus { color: var(--color-black); text-decoration: underline; } a:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; } /* ========================================================================== Paragraphs & lists ========================================================================== */ p { margin-top: 0; margin-bottom: var(--space-md); } ul, ol { margin-top: 0; margin-bottom: var(--space-md); padding-left: var(--space-lg); } /* ========================================================================== Container utility ========================================================================== */ .container { width: 100%; max-width: var(--content-max-width); margin-right: auto; margin-left: auto; padding-right: var(--space-lg); padding-left: var(--space-lg); } /* ========================================================================== Buttons ========================================================================== */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-sm); padding: 12px var(--space-lg); font-family: var(--font-family-base); font-weight: var(--font-weight-bold); font-size: 1rem; line-height: 1; text-align: center; text-decoration: none; white-space: nowrap; cursor: pointer; border: 2px solid transparent; border-radius: 0; /* brandbook: no rounded corners */ transition: background-color var(--transition-base), color var(--transition-base), border-color var(--transition-base); -webkit-user-select: none; user-select: none; appearance: none; } .btn:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; } /* Primary — corporate pink fill */ .btn-primary { background-color: var(--color-primary); border-color: var(--color-primary); color: var(--color-white); } .btn-primary:hover, .btn-primary:focus { background-color: var(--color-black); border-color: var(--color-black); color: var(--color-white); text-decoration: none; } /* Outline — transparent with black border */ .btn-outline { background-color: transparent; border-color: var(--color-black); color: var(--color-black); } .btn-outline:hover, .btn-outline:focus { background-color: var(--color-black); color: var(--color-white); text-decoration: none; } /* Small modifier */ .btn-sm { padding: 8px var(--space-md); font-size: 0.875rem; /* 14px */ } /* ========================================================================== Badge utility ========================================================================== */ .badge { display: inline-block; padding: 2px var(--space-sm); font-family: var(--font-family-base); font-weight: var(--font-weight-book); font-size: 0.75rem; /* 12px */ line-height: 1.4; color: var(--color-black); background-color: var(--color-gray-light); border-radius: 0; white-space: nowrap; vertical-align: middle; } /* ========================================================================== Sidebar overlay (used by sidebar-nav.js) ========================================================================== */ body.sidebar-overlay::after { content: ''; position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.4); z-index: 199; } /* ========================================================================== Sidebar navigation ========================================================================== */ /* Base sidebar */ .sidebar-nav { position: fixed; top: 0; left: 0; width: var(--sidebar-width-collapsed); height: 100vh; background: var(--color-white); border-right: 1px solid var(--color-gray-light); z-index: 1000; display: flex; flex-direction: column; transition: width 0.25s ease; overflow: hidden; } .sidebar-nav:hover { width: var(--sidebar-width-expanded); } /* Logo area */ .sidebar-nav__logo { display: flex; align-items: center; justify-content: center; min-height: 60px; border-bottom: 1px solid var(--color-gray-light); flex-shrink: 0; } .sidebar-nav__logo a { display: flex; align-items: center; justify-content: center; text-decoration: none; } /* Menu / navigation area */ .sidebar-nav__menu { flex: 1; overflow-y: auto; overflow-x: hidden; } .sidebar-nav__list { list-style: none; margin: 0; padding: 0; } /* Individual links */ .sidebar-nav__link { display: flex; align-items: center; gap: 16px; padding: 12px 23px; color: var(--color-black); text-decoration: none; white-space: nowrap; transition: background-color var(--transition-base), color var(--transition-base); } .sidebar-nav__link:hover, .sidebar-nav__link:focus { background-color: var(--color-gray-light); color: var(--color-black); text-decoration: none; } /* Active item */ .sidebar-nav__item--active .sidebar-nav__link { color: var(--color-primary); font-weight: var(--font-weight-bold); } /* Icon */ .sidebar-nav__icon { flex-shrink: 0; width: 24px; height: 24px; } /* Label — hidden when collapsed, visible when sidebar hovered */ .sidebar-nav__label { opacity: 0; transition: opacity 0.2s ease; font-size: 0.9375rem; /* 15px */ } .sidebar-nav:hover .sidebar-nav__label { opacity: 1; } /* Social links at the bottom */ .sidebar-nav__social { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 16px; border-top: 1px solid var(--color-gray-light); flex-shrink: 0; } .sidebar-nav__social-link { display: flex; align-items: center; justify-content: center; color: var(--color-black); opacity: 0.6; transition: opacity var(--transition-base); text-decoration: none; } .sidebar-nav__social-link:hover, .sidebar-nav__social-link:focus { opacity: 1; text-decoration: none; color: var(--color-black); } /* Content shift on desktop — push main content right of the sidebar */ .site-content, .site-header, .site-footer { margin-left: var(--sidebar-width-collapsed); } /* Hamburger / toggle button */ .sidebar-nav__toggle { display: none; position: fixed; top: 12px; left: 12px; z-index: 1100; flex-direction: column; gap: 4px; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; background: var(--color-white); border: 1px solid var(--color-gray-light); cursor: pointer; appearance: none; -webkit-appearance: none; } .sidebar-nav__toggle:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; } .sidebar-nav__toggle-bar { display: block; width: 24px; height: 2px; background-color: var(--color-black); transition: transform 0.2s ease, opacity 0.2s ease; } /* Mobile styles */ @media (max-width: 767px) { /* Hide sidebar off-screen by default */ .sidebar-nav { transform: translateX(-100%); transition: transform 0.25s ease, width 0.25s ease; width: var(--sidebar-width-expanded); } /* Show sidebar when open */ .sidebar-nav--open { transform: translateX(0); } /* Always show labels on mobile when open */ .sidebar-nav .sidebar-nav__label { opacity: 1; } /* Show hamburger button on mobile */ .sidebar-nav__toggle { display: flex; } /* Remove content margin on mobile */ .site-content, .site-header, .site-footer { margin-left: 0; } } /* ========================================================================== Top header bar ========================================================================== */ .top-header { display: flex; align-items: center; justify-content: space-between; height: var(--header-height); padding: 0 32px; background: var(--color-white); border-bottom: 1px solid var(--color-gray-light); /* Positioned to the right of the collapsed sidebar */ position: fixed; top: 0; left: var(--sidebar-width-collapsed); right: 0; z-index: 900; } .top-header__left { display: flex; align-items: center; gap: 16px; } .top-header__logo { display: flex; align-items: center; text-decoration: none; } .top-header__logo img { height: 30px; width: auto; } .top-header__tagline { font-size: 0.875rem; color: var(--color-gray-text); } .top-header__right { display: flex; align-items: center; gap: 24px; } .top-header__phone { font-weight: 700; color: var(--color-black); text-decoration: none; font-size: 0.875rem; } .top-header__phone:hover, .top-header__phone:focus { color: var(--color-primary); text-decoration: none; } .top-header__search { display: flex; align-items: center; justify-content: center; background: none; border: none; cursor: pointer; color: var(--color-black); padding: 4px; transition: color var(--transition-base); } .top-header__search:hover, .top-header__search:focus { color: var(--color-primary); } .top-header__search:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; } /* Offset main content below the fixed top header */ .site-content, .site-header, .site-footer { margin-top: var(--header-height); } @media (max-width: 767px) { .top-header { left: 0; padding: 0 16px 0 56px; /* leave room for hamburger button */ } .top-header__tagline { display: none; } .top-header__phone { display: none; } }