Access Control

/* ============================================================
SHS DESIGN SYSTEM v2.2 — commercial polish + conversion refinement
============================================================ */

/* === Tokens === */
:root {
–shs-ink: #0F1422;
–shs-ink-2: #1A2138;
–shs-ink-3: #232B43;
–shs-steel: #5C7290;
–shs-steel-light: #8AA0BC;
–shs-steel-dark: #2F3D52;
–shs-line: #2A3247;
–shs-line-on-light: #DDE2EA;
–shs-line-on-light-strong: #C2C9D6;
–shs-white: #FFFFFF;
–shs-paper: #F6F7FA;
–shs-text: #0F1422;
–shs-text-muted: #5A6276;
–shs-text-on-ink: #ECEFF5;
–shs-text-on-ink-muted: #9AA5BA;
–shs-mono: ui-monospace, SFMono-Regular, “SF Mono”, Menlo, Consolas, monospace;
–shs-shadow-card: 0 1px 2px rgba(15,20,34,0.04), 0 12px 28px -16px rgba(15,20,34,0.10);
}

/* === Page baseline === */
body, body.ast-separate-container, body.ast-plain-container {
font-family: ‘Inter’, system-ui, -apple-system, sans-serif;
color: var(–shs-text);
background: var(–shs-white);
-webkit-font-smoothing: antialiased;
}
body, .ast-container, .entry-content, .ast-row { margin: 0; }
.entry-content > .wp-block-html:not(:last-child) { margin: 0; }

/* === Astra HEADER overrides (tighter, enterprise) === */
header.site-header,
.ast-primary-header-bar.ast-primary-header.main-header-bar {
background: var(–shs-white) !important;
border-bottom: 1px solid var(–shs-line-on-light);
box-shadow: none !important;
position: relative;
}
.site-primary-header-wrap {
padding-top: 14px !important;
padding-bottom: 14px !important;
}
.ast-container { max-width: 1240px; }

.site-branding .site-title { font-family: ‘Manrope’, sans-serif !important; line-height: 1.1; }
.site-branding .site-title a {
font-family: ‘Manrope’, sans-serif !important;
font-size: 18px !important;
font-weight: 700 !important;
color: var(–shs-ink) !important;
letter-spacing: -0.014em;
text-decoration: none;
transition: color 0.12s ease;
}
.site-branding .site-title a:hover { color: var(–shs-steel-dark) !important; }

.ast-builder-menu-1 .menu-item > a,
.main-header-bar .main-navigation ul .menu-item > a {
font-family: ‘Inter’, sans-serif !important;
font-size: 13.5px !important;
font-weight: 500 !important;
color: var(–shs-ink) !important;
letter-spacing: 0.018em;
padding: 14px 16px !important;
transition: color 0.12s ease;
text-transform: none;
position: relative;
}
.ast-builder-menu-1 .menu-item > a:hover,
.main-header-bar .menu-item > a:hover { color: var(–shs-steel) !important; }
.ast-builder-menu-1 .menu-item.current-menu-item > a,
.ast-builder-menu-1 .menu-item.current_page_item > a {
color: var(–shs-ink) !important;
font-weight: 600 !important;
}
.ast-builder-menu-1 .menu-item.current-menu-item > a::after,
.ast-builder-menu-1 .menu-item.current_page_item > a::after {
content: “”;
position: absolute;
left: 16px; right: 16px; bottom: 4px;
height: 1.5px; background: var(–shs-steel);
}

/* Hide Astra below-footer (we ship our own footer) */
.site-below-footer-wrap { display: none !important; }

/* === Section system === */
.shs { font-family: ‘Inter’, system-ui, sans-serif; }
.shs-section { padding: 120px 24px; font-family: ‘Inter’, sans-serif; position: relative; }
.shs-section–ink { background: var(–shs-ink); color: var(–shs-text-on-ink); }
.shs-section–paper { background: var(–shs-paper); color: var(–shs-text); }
.shs-section–white { background: var(–shs-white); color: var(–shs-text); }
.shs-section–credibility { padding: 36px 24px; background: var(–shs-white); border-bottom: 1px solid var(–shs-line-on-light); }
.shs-container { max-width: 1200px; margin: 0 auto; }
.shs-narrow { max-width: 880px; }

/* Eyebrow */
.shs-eyebrow {
font-family: var(–shs-mono); font-size: 11.5px; font-weight: 500;
letter-spacing: 0.2em; text-transform: uppercase;
color: var(–shs-steel-light); margin: 0 0 22px; display: inline-block;
}
.shs-section–paper .shs-eyebrow,
.shs-section–white .shs-eyebrow,
.shs-section–credibility .shs-eyebrow { color: var(–shs-steel); }
.shs-eyebrow::before { content: “// “; opacity: 0.6; }

/* Headings — tighter, more enterprise */
.shs-h1 {
font-family: ‘Manrope’, sans-serif; font-size: clamp(40px, 5.4vw, 66px);
font-weight: 700; line-height: 1.02; letter-spacing: -0.028em;
margin: 0 0 28px; max-width: 16ch;
}
.shs-h1–wide { max-width: 22ch; }
.shs-h2 {
font-family: ‘Manrope’, sans-serif; font-size: clamp(28px, 3.2vw, 42px);
font-weight: 700; line-height: 1.1; letter-spacing: -0.022em;
margin: 0 0 18px; max-width: 22ch;
}
.shs-h3 {
font-family: ‘Manrope’, sans-serif; font-size: 19px; font-weight: 700;
line-height: 1.3; letter-spacing: -0.008em; margin: 0 0 10px; color: var(–shs-text);
}
.shs-section–ink .shs-h3 { color: var(–shs-white); }

/* Body */
.shs-lead {
font-size: clamp(17px, 1.35vw, 19px); line-height: 1.55; max-width: 680px;
margin: 0 0 40px; font-weight: 400;
}
.shs-section–ink .shs-lead { color: var(–shs-text-on-ink); opacity: 0.95; }
.shs-body { font-size: 16px; line-height: 1.65; color: var(–shs-text-muted); margin: 0; }
.shs-section–ink .shs-body { color: var(–shs-text-on-ink-muted); }

.shs-rule { width: 56px; height: 2px; background: var(–shs-steel); margin: 0 0 28px; border: 0; }
.shs-section–ink .shs-rule { background: var(–shs-steel-light); }

/* === Buttons — slightly larger, sharper === */
.shs-cta-row { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.shs-btn {
display: inline-flex; align-items: center; gap: 10px;
padding: 17px 32px; font-family: ‘Inter’, sans-serif;
font-size: 15.5px; font-weight: 600; text-decoration: none;
border-radius: 2px;
transition: background 0.14s ease, color 0.14s ease, border-color 0.14s ease;
cursor: pointer; border: 1.5px solid transparent;
letter-spacing: 0.01em; line-height: 1;
}
.shs-btn–primary { background: var(–shs-white); color: var(–shs-ink); }
.shs-btn–primary:hover { background: var(–shs-paper); color: var(–shs-ink); }
.shs-btn–ghost-light { background: transparent; color: var(–shs-white); border-color: rgba(255,255,255,0.32); }
.shs-btn–ghost-light:hover { border-color: var(–shs-white); background: rgba(255,255,255,0.06); color: var(–shs-white); }
.shs-btn–steel { background: var(–shs-steel); color: var(–shs-white); }
.shs-btn–steel:hover { background: var(–shs-steel-dark); color: var(–shs-white); }
.shs-btn–ink { background: var(–shs-ink); color: var(–shs-white); }
.shs-btn–ink:hover { background: var(–shs-ink-2); color: var(–shs-white); }
.shs-btn–ghost-ink { background: transparent; color: var(–shs-ink); border-color: var(–shs-ink); }
.shs-btn–ghost-ink:hover { background: var(–shs-ink); color: var(–shs-white); }
.shs-btn__arrow { font-family: var(–shs-mono); transition: transform 0.14s ease; font-weight: 400; }
.shs-btn:hover .shs-btn__arrow { transform: translateX(3px); }

/* === Trust strip (under hero CTAs) === */
.shs-trust-strip {
margin-top: 52px; padding-top: 28px; border-top: 1px solid var(–shs-line);
display: flex; gap: 28px 32px; flex-wrap: wrap;
font-family: var(–shs-mono); font-size: 11.5px; letter-spacing: 0.16em;
text-transform: uppercase; color: var(–shs-steel-light);
}
.shs-trust-strip__item { display: flex; align-items: center; gap: 10px; }
.shs-trust-strip__item::before { content: “”; width: 5px; height: 5px; background: var(–shs-steel); display: inline-block; transform: rotate(45deg); }

/* === Credibility strip (between hero and categories) === */
.shs-credibility-row {
display: flex; align-items: center; gap: 14px 28px; flex-wrap: wrap; justify-content: center;
font-family: var(–shs-mono); font-size: 11.5px; letter-spacing: 0.18em;
text-transform: uppercase; color: var(–shs-text-muted);
}
.shs-credibility-row strong {
font-family: ‘Inter’, sans-serif; font-size: 13px; font-weight: 600;
color: var(–shs-ink); letter-spacing: 0.04em; margin-right: 8px;
}
.shs-credibility-row span { position: relative; padding-right: 28px; }
.shs-credibility-row span:not(:last-child)::after {
content: “”; position: absolute; right: 0; top: 50%; transform: translateY(-50%);
width: 4px; height: 4px; background: var(–shs-steel-light); border-radius: 0;
}

/* === Category cards — stronger hover, cleaner border === */
.shs-cat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin-top: 52px; }
.shs-cat-card {
background: var(–shs-white); border: 1px solid var(–shs-line-on-light);
border-radius: 2px; padding: 36px 28px 28px;
transition: border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
display: flex; flex-direction: column; text-decoration: none; color: inherit;
position: relative;
}
.shs-cat-card::before {
content: “”; position: absolute; top: 0; left: 0; right: 0;
height: 2px; background: transparent; transition: background 0.16s ease;
}
.shs-cat-card:hover {
border-color: var(–shs-steel);
box-shadow: var(–shs-shadow-card);
transform: translateY(-2px);
}
.shs-cat-card:hover::before { background: var(–shs-steel); }
.shs-cat-card__num {
font-family: var(–shs-mono); font-size: 11px; font-weight: 500;
letter-spacing: 0.18em; color: var(–shs-steel); margin: 0 0 18px; text-transform: uppercase;
}
.shs-cat-card .shs-h3 { margin-bottom: 10px; font-size: 19px; }
.shs-cat-card__desc { font-size: 14.5px; line-height: 1.6; color: var(–shs-text-muted); margin: 0 0 24px; flex-grow: 1; }
.shs-cat-card__cta {
font-family: ‘Inter’, sans-serif; font-size: 13px; font-weight: 600;
color: var(–shs-ink); align-self: flex-start;
border-bottom: 1.5px solid var(–shs-ink); padding-bottom: 2px;
letter-spacing: 0.02em; transition: color 0.14s, border-color 0.14s;
text-transform: uppercase;
}
.shs-cat-card:hover .shs-cat-card__cta { color: var(–shs-steel); border-color: var(–shs-steel); }

/* === Why Buy grid === */
.shs-why-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 52px 60px; margin-top: 56px; }
.shs-why__num {
font-family: ‘Manrope’, sans-serif; font-size: 56px; font-weight: 700;
line-height: 1; color: var(–shs-steel-light); letter-spacing: -0.04em;
margin: 0 0 16px; display: block; opacity: 0.85;
}
.shs-why__title {
font-family: ‘Manrope’, sans-serif; font-size: 18.5px; font-weight: 700;
line-height: 1.3; color: var(–shs-white); margin: 0 0 12px; letter-spacing: -0.008em;
}
.shs-why__desc { font-size: 14.5px; line-height: 1.62; color: var(–shs-text-on-ink-muted); margin: 0; }

/* === Featured solutions === */
.shs-fs-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; margin-top: 52px; }
.shs-fs-card {
background: var(–shs-white); border: 1px solid var(–shs-line-on-light);
border-top: 3px solid var(–shs-steel); border-radius: 2px;
padding: 32px 28px 28px;
transition: box-shadow 0.16s ease, transform 0.16s ease;
}
.shs-fs-card:hover {
box-shadow: var(–shs-shadow-card);
transform: translateY(-2px);
}
.shs-fs-card .shs-h3 { font-size: 18px; margin-bottom: 14px; }
.shs-fs-card__list {
font-family: var(–shs-mono); font-size: 13px; line-height: 1.95;
color: var(–shs-text-muted); margin: 0 0 22px; padding: 0; list-style: none;
}
.shs-fs-card__list li { padding-left: 18px; position: relative; }
.shs-fs-card__list li::before { content: “—”; position: absolute; left: 0; color: var(–shs-steel); }
.shs-fs-card__link {
font-family: ‘Inter’, sans-serif; font-size: 13px; font-weight: 600;
color: var(–shs-steel); text-decoration: none; letter-spacing: 0.02em; text-transform: uppercase;
}
.shs-fs-card__link:hover { color: var(–shs-ink); }
.shs-fs-card__link::after { content: ” →”; font-family: var(–shs-mono); }

/* === Final CTA === */
.shs-cta-final { max-width: 720px; margin: 0 auto; text-align: center; }
.shs-cta-final .shs-eyebrow { color: var(–shs-steel); }
.shs-cta-final .shs-cta-row { justify-content: center; margin-top: 10px; }
.shs-section-head { display: flex; flex-direction: column; align-items: flex-start; max-width: 760px; }

/* === Mobile === */
@media (max-width: 900px) {
.shs-section { padding: 80px 22px; }
.shs-h1 { font-size: 36px; max-width: 100%; }
.shs-h2 { font-size: 26px; }
.shs-trust-strip { gap: 16px; margin-top: 40px; padding-top: 22px; }
.shs-trust-strip__item { font-size: 11px; }
.shs-credibility-row { gap: 10px 20px; flex-direction: column; }
.shs-credibility-row span { padding-right: 0; }
.shs-credibility-row span::after { display: none !important; }
.shs-cat-grid { gap: 12px; margin-top: 40px; }
.shs-why-grid { gap: 40px; margin-top: 40px; }
.shs-why__num { font-size: 48px; }
.shs-btn { padding: 15px 24px; font-size: 14.5px; }
.ast-builder-menu-1 .menu-item > a { padding: 12px 12px !important; font-size: 13px !important; }
.site-branding .site-title a { font-size: 17px !important; }
}
@media (max-width: 560px) {
.shs-cat-grid { grid-template-columns: 1fr; }
.shs-trust-strip { flex-direction: column; gap: 12px; }
}

// Access Control · Commercial Catalog
Commercial-grade access hardware for installers spec’ing new builds, retrofits, or system upgrades. Compatible with Kantech, Lenel, HID, and the rest of the integrator-standard ecosystem.

// What We Carry
Access Control hardware on the shelf.

Wiegand & OSDP Readers
Indoor, outdoor, mullion, and keypad readers from established commercial-grade vendors.

Door Controllers & Panels
1-door, 2-door, 4-door, and rack-mount controllers compatible with major head-end platforms.

Maglocks & Electric Strikes
600lb to 1500lb maglocks, fail-safe and fail-secure strikes, with the brackets to mount them clean.

Credentials & Mobile Access
Prox cards, fobs, multi-tech credentials, and mobile credential subscriptions for modern installs.

REX, PIRs & Hardware
Request-to-exit buttons, motion-based REX, push-to-exit, and the small parts that finish a door.

Access Power Supplies
12V/24V DC supplies with battery backup options, sized to the lock load and door count.

// Compatibility
Brands & platforms we stock for.

We stock access control hardware compatible with the integrator-standard platforms our customers actually deploy: Kantech, Lenel/S2, HID, ZK Teco, Mercury Security, RBH, ProDataKey, ICT, Honeywell. Not sure if a specific SKU fits your existing system? Ask us before you order.

// Bulk Pricing & Technical Guidance
Need bulk pricing on access control?
Tell us the SKUs, quantities, and timeline. We come back with project pricing, lead times, and compatibility checks before you order.

Request Bulk Quote →
Ask a Technical Question

Scroll to Top