@import url('https://fonts.googleapis.com/css2?family=Host+Grotesk:wght@300;400;600;800&display=swap');
/* Safety net: if the wiki ever renders this block twice,
show only the first copy. */
.fdm-hub ~ .fdm-hub { display: none !important; }
/* ---- FirstDigital brand tokens (Brand Guide 2025, p.11) ---- */
.fdm-hub {
--fd-navy: #003366; /* headlines, backgrounds, icons */
--fd-blue: #307ab2; /* headlines, backgrounds, icons */
--fd-blue-bright: #38b2e3; /* stand-out headlines, icons */
--fd-red: #cf333d; /* accents - use selectively */
--fd-body: #2e404d; /* paragraph text */
--fd-secondary: #8f9499; /* secondary text */
--fd-bg-mid: #dedede; /* backgrounds */
--fd-bg-light: #f0f0f0; /* backgrounds */
--fd-white: #ffffff;
--ms-azure: #0078d4; /* Microsoft's own brand blue */
}
.fdm-hub, .fdm-hub * { box-sizing: border-box; }
.fdm-hub {
font-family: 'Host Grotesk', 'Segoe UI', -apple-system, BlinkMacSystemFont, Arial, sans-serif;
font-weight: 300;
color: var(--fd-body);
background: var(--fd-white);
max-width: 1000px;
margin: 0 auto;
padding: 0 20px 28px;
-webkit-font-smoothing: antialiased;
}
/* ---- Masthead: full-colour logo on white (Logo Rules, p.10) ---- */
.fdm-masthead {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
flex-wrap: wrap;
padding: 22px 0 18px;
border-bottom: 1px solid var(--fd-bg-mid);
}
.fdm-masthead img { height: 46px; width: auto; display: block; }
.fdm-masthead-label {
font-size: 12px;
font-weight: 600;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--fd-secondary);
white-space: nowrap;
}
/* ---- Hero ---- */
.fdm-hero {
position: relative;
margin-top: 22px;
border-radius: 6px;
overflow: hidden;
min-height: 250px;
display: flex;
align-items: flex-end;
}
.fdm-hero-img {
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
width: 100%; height: 100%;
object-fit: cover;
display: block;
}
/* explicit offsets, not the inset shorthand, for wider support */
.fdm-hero::after {
content: "";
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
background: linear-gradient(100deg,
rgba(0,51,102,0.94) 0%,
rgba(0,51,102,0.86) 42%,
rgba(0,51,102,0.30) 100%);
}
.fdm-hero-inner {
position: relative;
z-index: 1;
padding: 32px 32px 30px;
max-width: 600px;
}
/* red rule = brand accent motif (Brand Guide p.4) */
.fdm-rule {
width: 62px; height: 4px;
background: var(--fd-red);
border: 0;
margin: 0 0 16px;
}
.fdm-eyebrow {
font-size: 12px;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--fd-blue-bright);
margin-bottom: 9px;
}
.fdm-hero h1 {
font-size: clamp(26px, 3.6vw, 36px);
font-weight: 800;
line-height: 1.14;
letter-spacing: -0.01em;
color: var(--fd-white);
margin: 0 0 11px;
}
.fdm-hero p {
font-size: 15px;
font-weight: 300;
line-height: 1.6;
color: #dbe6ef;
margin: 0;
max-width: 470px;
}
/* ---- Card grid ---- */
.fdm-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 22px;
margin-top: 24px;
}
.fdm-card {
display: flex;
flex-direction: column;
background: var(--fd-white);
border: 1px solid var(--fd-bg-mid);
border-radius: 6px;
overflow: hidden;
text-decoration: none !important;
color: inherit;
height: 100%;
transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.fdm-card:hover {
transform: translateY(-3px);
border-color: var(--fd-blue-bright);
box-shadow: 0 12px 26px rgba(0,51,102,0.14);
}
.fdm-card:focus-visible {
outline: 3px solid var(--fd-blue-bright);
outline-offset: 2px;
}
.fdm-media {
position: relative;
height: 132px;
background: var(--fd-bg-light);
flex: 0 0 auto;
/* no overflow:hidden here - the logo badge overhangs the bottom
edge on purpose. The photo is already clipped by object-fit,
and .fdm-card's own overflow:hidden keeps the rounded corners. */
}
.fdm-media img {
width: 100%; height: 100%;
object-fit: cover;
display: block;
}
.fdm-media::after {
content: "";
position: absolute;
top: 0; right: 0; bottom: 0; left: 0;
background: linear-gradient(180deg,
rgba(0,51,102,0.06) 0%, rgba(0,40,79,0.52) 100%);
}
/* white badge keeps every logo brand-legal over a photo (p.10) */
.fdm-badge {
position: absolute;
left: 18px;
bottom: 0;
z-index: 1;
transform: translateY(50%);
width: 58px; height: 58px;
border-radius: 8px;
background: var(--fd-white);
box-shadow: 0 5px 14px rgba(0,0,0,0.18);
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.fdm-badge img { object-fit: contain; display: block; }
.fdm-logo-webex { width: 74%; height: auto; }
.fdm-logo-teams { width: 64%; height: auto; }
.fdm-logo-firstdigital { width: 84%; height: auto; }
/* icons: dark-blue stroke, bright-blue accent (Brand Guide p.14) */
.fdm-badge svg {
width: 26px; height: 26px;
fill: none;
stroke: var(--fd-navy);
stroke-width: 1.7;
stroke-linecap: round;
stroke-linejoin: round;
}
.fdm-badge svg .accent { stroke: var(--fd-blue-bright); }
.fdm-body {
padding: 38px 22px 22px;
display: flex;
flex-direction: column;
flex: 1 1 auto;
}
.fdm-title {
display: block;
font-size: 16.5px;
font-weight: 800;
line-height: 1.28;
color: var(--fd-navy);
}
.fdm-sub {
display: block;
font-size: 13.5px;
font-weight: 300;
line-height: 1.55;
color: var(--fd-body);
margin-top: 5px;
}
.fdm-cta {
display: flex;
align-items: center;
gap: 7px;
margin-top: auto;
padding-top: 16px;
font-size: 13px;
font-weight: 600;
color: var(--fd-red);
}
.fdm-cta svg {
width: 15px; height: 15px;
fill: none;
stroke: var(--fd-red);
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
transition: transform .2s ease;
}
.fdm-card:hover .fdm-cta svg { transform: translateX(4px); }
/* ---- Footer ---- */
.fdm-footer {
margin-top: 32px;
padding-top: 18px;
border-top: 1px solid var(--fd-bg-mid);
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 14px;
font-size: 13px;
}
.fdm-footer a {
font-weight: 600;
text-decoration: none !important;
color: var(--fd-blue);
}
.fdm-footer a:hover { text-decoration: underline !important; }
.fdm-footer a:focus-visible {
outline: 2px solid var(--fd-blue-bright);
outline-offset: 3px;
}
.fdm-brand-first { color: var(--fd-blue); }
.fdm-brand-second { color: var(--fd-navy); }
.fdm-azure { color: var(--ms-azure); }
.fdm-divider { color: var(--fd-bg-mid); font-weight: 300; }
@media (max-width: 768px) {
.fdm-grid { grid-template-columns: 1fr; }
.fdm-hub { padding: 0 12px 22px; }
.fdm-masthead img { height: 38px; }
.fdm-hero { min-height: 220px; }
.fdm-hero-inner { padding: 24px 22px 22px; }
}
@media (prefers-reduced-motion: reduce) {
.fdm-card, .fdm-cta svg { transition: none; }
}
Fiber · Internet · Cloud · Voice
Product Documentation
Guides, answers, and implementation resources for your FirstDigital voice services. Choose a product to get started.
Fiber · Internet · Cloud · Voice
Learning Center
Product Documentation
Guides, answers, and implementation resources for your FirstDigital voice services. Choose a product to get started.
Cloud Connected PSTN (CCP) Webex integration Open CCP docs
Microsoft Teams Direct Routing Open Teams docs
FirstDigital SIP Trunk Voice connectivity Open SIP docs Support Resources and contact information Get support
alongside whatever else is already there. If a wiki page does not yet use at all,
you can also add just this snippet on its own to give that page
a home button, without needing to touch anything else on it.
------------------------------------------------------------
CUSTOMIZING
------------------------------------------------------------
- Destination: change the href on the tag
below if the home URL ever changes.
- Position: the button defaults to the bottom-left corner. To
move it, edit the "position" rule in .fdhb-btn (bottom/left/
right/top) near the top of the
It is fixed-position and self-contained, so it does not need to
sit inside that page's own wrapper div, and it will not disturb
that page's own layout. block.
- Label: change "Home" in the markup, or drop the entirely
to show only the house icon (a comment marks where).
------------------------------------------------------------
NOTES
- This file is a FRAGMENT: no DOCTYPE declaration and no
html / head / body elements.
- Class and ID names use the "fdhb-" prefix (FirstDigital Home
Button), so this cannot clash with any other FirstDigital wiki
fragment's classes ("fdt-", "fdccp-", "fdvq-", "fdcht-", "fdid-",
"fdmth-", "fdm-", "fdo-", "fd-home", etc.) even when this button
is pasted onto the same page as one of them.
- Safe to paste this same snippet onto multiple pages across your
wiki. If it is ever accidentally pasted twice on the SAME page,
a safety-net rule hides the second copy so you only ever see
one button.
- After saving, only ever re-edit the page in SOURCE / WIKI mode
(never WYSIWYG) -- the rich-text editor can strip the
block or duplicate html-macro content. Paste directly from this
file rather than through Microsoft Word, which can silently
turn straight quotes into curly ones and break the HTML/CSS.
============================================================
-->
/* Safety net: if a page ever ends up with this snippet twice,
show only the first copy. */
#fdhb-root ~ #fdhb-root { display: none !important; }
#fdhb-root, #fdhb-root *, #fdhb-root *::before, #fdhb-root *::after {
box-sizing: border-box;
}
#fdhb-root {
/* FirstDigital brand tokens (Brand Guide 2025, p.11) */
--fdhb-navy: #003366;
--fdhb-bright:#38b2e3;
--fdhb-white: #ffffff;
}
.fdhb-btn {
position: fixed;
left: 18px;
bottom: 18px;
z-index: 2147483000; /* sit above virtually anything else on the page */
display: inline-flex;
align-items: center;
gap: 8px;
background: var(--fdhb-navy);
color: var(--fdhb-white) !important;
font-family: 'Host Grotesk', 'Segoe UI', -apple-system, BlinkMacSystemFont, Arial, sans-serif;
font-size: 13.5px;
font-weight: 600;
line-height: 1;
text-decoration: none !important;
border: 1px solid rgba(255,255,255,0.15);
border-radius: 999px;
padding: 11px 18px 11px 14px;
box-shadow: 0 6px 18px rgba(0,51,102,0.28);
transition: background .18s ease, transform .18s ease, box-shadow .18s ease;
}
.fdhb-btn:hover {
background: var(--fdhb-bright);
transform: translateY(-2px);
box-shadow: 0 10px 22px rgba(0,51,102,0.34);
}
.fdhb-btn:focus-visible {
outline: 3px solid var(--fdhb-bright);
outline-offset: 2px;
}
.fdhb-btn svg {
width: 17px;
height: 17px;
flex: 0 0 auto;
fill: none;
stroke: var(--fdhb-white);
stroke-width: 2;
stroke-linecap: round;
stroke-linejoin: round;
}
.fdhb-btn span { display: inline-block; }
@media (max-width: 480px) {
.fdhb-btn { left: 12px; bottom: 12px; padding: 11px; }
/* Icon-only on small screens so the button never crowds mobile content */
.fdhb-btn span { display: none; }
}
@media (prefers-reduced-motion: reduce) {
.fdhb-btn { transition: none; }
}