@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@400;500;600&family=Space+Grotesk:wght@400;500;700&display=swap");
/* SignalPoint Media Group — generated from tokens.json */
:root, [data-theme="default"] {
  --sp-black: #000000;
  --sp-green: #32CD32;
  --sp-paper: #ffffff;
  --sp-ink-1: #111111;
  --sp-ink-2: #555555;
  --sp-ink-3: #777777;
  --sp-ink-4: #999999;
  --sp-hairline: #e2e2e2;
  --sp-hairline-soft: #eaeaea;
  --sp-surface: #f4f4f4;
}
:root {
  --sp-track-display: -0.02em;
  --sp-track-label: 0.14em;
  --sp-track-label-wide: 0.32em;
  --sp-size-display-xl: 28px;
  --sp-size-display-lg: 20px;
  --sp-size-display-md: 14px;
  --sp-size-body: 14px;
  --sp-size-body-sm: 12.5px;
  --sp-size-label: 9.5px;
  --sp-size-label-lg: 10.5px;
  --sp-unit: 4px;
  --sp-space-xs: 6px;
  --sp-space-sm: 10px;
  --sp-space-md: 14px;
  --sp-space-lg: 22px;
  --sp-space-xl: 36px;
  --sp-clearspace: 1em;
  --sp-rule-green: 3px;
  --sp-rule-black: 1px;
  --sp-hairline-width: 1px;
  --sp-weight-display: 700;
  --sp-weight-body: 400;
  --sp-weight-strong: 600;
  --sp-leading-body: 1.68;
  --sp-leading-tight: 1.2;
  --sp-leading-label: 1.95;
}
:root {
  --sp-font-display: "Space Grotesk", system-ui, sans-serif;
  --sp-font-body: "IBM Plex Sans", system-ui, sans-serif;
  --sp-font-mono: "IBM Plex Mono", ui-monospace, monospace;
}
/* Base */
.sp-root {
  font-family: var(--sp-font-body);
  font-size: var(--sp-size-body);
  line-height: var(--sp-leading-body);
  color: var(--sp-ink-1);
  background: var(--sp-paper);
  border-radius: 0;
}
.sp-root a { color: var(--sp-black); text-decoration: none; }
.sp-root a:hover { color: var(--sp-green); }
.sp-scroll-x { overflow-x: auto; max-width: 100%; }
.sp-screen-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
.sp-ds { font-family: var(--sp-font-body); color: var(--sp-ink-1); background: var(--sp-paper); }
/* Nothing rounded — squared terminals everywhere */
.sp-mark, .sp-servicemark, .sp-wordmark, .sp-lockup, .sp-service-lockup,
.sp-rule, .sp-label, .sp-h1, .sp-h2, .sp-h3, .sp-text, .sp-btn,
.sp-metarow, .sp-bullets, .sp-services-table, .sp-sig-block, .sp-docpage, .sp-card,
.sp-mark-sq, .sp-lockup-mark, .sp-lockup-text, .sp-service-name, .sp-service-line,
.sp-sig-line, .sp-docpage-head, .sp-docpage-body, .sp-docpage-foot { border-radius: 0 !important; }
/* 1 Mark / 2 ServiceMark */
.sp-mark, .sp-servicemark { display: inline-flex; flex: none; line-height: 0; }
/* 3 Wordmark — Space Grotesk 700 at -0.02em, green square on baseline */
.sp-wordmark { font-family: var(--sp-font-display); font-weight: var(--sp-weight-display); letter-spacing: var(--sp-track-display); white-space: nowrap; line-height: 1; }
/* 4 Lockup — mark + wordmark + MEDIA GROUP */
.sp-lockup { display: inline-flex; align-items: center; gap: var(--sp-space-sm); line-height: 1; padding: var(--sp-clearspace); }
.sp-lockup .sp-lockup-mark { display: block; flex: none; line-height: 0; }
.sp-lockup-sep { width: 1px; align-self: stretch; background: currentColor; opacity: .35; min-height: 1.4em; }
.sp-lockup-text { display: flex; flex-direction: column; line-height: 1.05; }
.sp-lockup-word { font-family: var(--sp-font-display); font-weight: var(--sp-weight-display); letter-spacing: var(--sp-track-display); white-space: nowrap; }
.sp-lockup-desc { font-family: var(--sp-font-mono); font-weight: 500; text-transform: uppercase; letter-spacing: var(--sp-track-label-wide); margin-top: .35em; }
.sp-lockup-desc-hidden { display: none; }
.sp-tone-reversed { color: #ffffff; }
.sp-tone-black { color: #111111; }
.sp-lockup-mount { display: inline-block; }
/* 5 ServiceLockup — parent wordmark never appears here */
.sp-service-lockup { display: flex; align-items: center; gap: 12px; border: var(--sp-hairline-width) solid var(--sp-hairline); padding: var(--sp-space-md); background: #ffffff; }
.sp-service-lockup-text { display: flex; flex-direction: column; gap: 2px; }
.sp-service-name { font-family: var(--sp-font-display); font-weight: var(--sp-weight-display); font-size: 16px; letter-spacing: var(--sp-track-display); color: var(--sp-ink-1); line-height: var(--sp-leading-tight); }
.sp-service-line { font-family: var(--sp-font-mono); font-weight: 500; font-size: var(--sp-size-label); letter-spacing: var(--sp-track-label); text-transform: uppercase; color: var(--sp-ink-3); line-height: var(--sp-leading-label); }
/* 6 Rule — the only decoration: 3px green over 1px black */
.sp-rule { border: 0; border-top: var(--sp-rule-green) solid var(--sp-green); border-bottom: var(--sp-rule-black) solid var(--sp-black); height: 4px; background: none; margin: var(--sp-space-md) 0; }
.sp-rule-thin { border: 0; border-top: var(--sp-hairline-width) solid var(--sp-hairline); margin: var(--sp-space-md) 0; height: 0; background: none; }
/* 7 Label — mono, always uppercase, always tracked out */
.sp-label { font-family: var(--sp-font-mono); font-weight: 500; font-size: var(--sp-size-label); letter-spacing: var(--sp-track-label); text-transform: uppercase; color: var(--sp-ink-3); line-height: var(--sp-leading-label); }
.sp-label-lg { font-size: var(--sp-size-label-lg); }
/* 8 Heading — Space Grotesk 700 with negative tracking, only heading face */
.sp-h1 { font-family: var(--sp-font-display); font-weight: var(--sp-weight-display); font-size: var(--sp-size-display-xl); line-height: var(--sp-leading-tight); letter-spacing: var(--sp-track-display); color: var(--sp-ink-1); margin: 0; }
.sp-h2 { font-family: var(--sp-font-display); font-weight: var(--sp-weight-display); font-size: var(--sp-size-display-lg); line-height: var(--sp-leading-tight); letter-spacing: var(--sp-track-display); color: var(--sp-ink-1); margin: 0; }
.sp-h3 { font-family: var(--sp-font-display); font-weight: var(--sp-weight-display); font-size: var(--sp-size-display-md); line-height: var(--sp-leading-tight); letter-spacing: var(--sp-track-display); color: var(--sp-ink-1); margin: 0; }
/* 9 Text — IBM Plex Sans, never tracked */
.sp-text { font-family: var(--sp-font-body); font-weight: var(--sp-weight-body); font-size: var(--sp-size-body); line-height: var(--sp-leading-body); letter-spacing: normal; color: var(--sp-ink-2); }
.sp-text-sm { font-size: var(--sp-size-body-sm); }
.sp-text strong { font-weight: var(--sp-weight-strong); color: var(--sp-ink-1); }
/* 10 Button — squared, no radius */
.sp-btn { display: inline-flex; align-items: center; gap: 8px; font-family: var(--sp-font-body); font-weight: var(--sp-weight-strong); font-size: 14px; letter-spacing: normal; padding: 10px 16px; border: 1px solid transparent; cursor: pointer; text-decoration: none; line-height: 1.2; border-radius: 0; }
.sp-btn-primary { background: var(--sp-green); border-color: var(--sp-green); color: #111111; }
.sp-btn-primary:hover { filter: brightness(.94); }
.sp-btn-black { background: var(--sp-black); border-color: var(--sp-black); color: #ffffff; }
.sp-btn-black:hover { background: #000000; }
.sp-btn-secondary { background: #ffffff; border: 1px solid #111111; color: #111111; }
.sp-btn-secondary:hover { background: #111111; color: #ffffff; }
.sp-btn-ghost { background: transparent; border-color: transparent; color: var(--sp-ink-1); }
.sp-btn-ghost:hover { background: var(--sp-surface); }
.sp-btn-reversed { background: #ffffff; border-color: #ffffff; color: #111111; }
.sp-btn-reversed-ghost { background: transparent; border-color: #ffffff; color: #ffffff; }
/* 11 MetaRow — document meta band */
.sp-metarow { display: flex; gap: 16px; flex-wrap: wrap; font-family: var(--sp-font-mono); font-weight: 400; font-size: var(--sp-size-label); letter-spacing: var(--sp-track-label); text-transform: uppercase; color: var(--sp-ink-3); line-height: var(--sp-leading-label); }
.sp-metarow strong { color: var(--sp-ink-1); font-weight: 500; }
/* 12 BulletList — green en-dash, never discs */
.sp-bullets { list-style: none; margin: 8px 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.sp-bullets li { display: flex; gap: 10px; align-items: flex-start; font-size: 14px; line-height: 1.68; letter-spacing: normal; color: var(--sp-ink-2); }
.sp-bullets li::before { content: "\2013"; color: var(--sp-green); font-weight: 700; flex: none; }
.sp-bullets li.deny::before { content: "\00D7"; color: var(--sp-ink-1); }
/* 13 ServicesTable — closed by 3px green rule */
.sp-scroll-x > .sp-services-table { min-width: 560px; }
.sp-services-table { width: 100%; border-collapse: collapse; font-size: 14px; background: #ffffff; letter-spacing: normal; }
.sp-services-table th { font-family: var(--sp-font-mono); font-weight: 500; font-size: var(--sp-size-label); text-transform: uppercase; letter-spacing: var(--sp-track-label); text-align: left; color: var(--sp-ink-3); border-bottom: 1px solid #111111; padding: 8px; }
.sp-services-table td { border-bottom: var(--sp-hairline-width) solid var(--sp-hairline); padding: 9px 8px; color: var(--sp-ink-1); }
.sp-services-table tr:last-child td { border-bottom: 0; }
.sp-services-table-wrap { border: var(--sp-hairline-width) solid var(--sp-hairline); border-bottom: 0; position: relative; }
.sp-services-table-wrap::after { content: ""; display: block; height: 4px; border-top: 3px solid var(--sp-green); border-bottom: 1px solid var(--sp-black); background: none; }
/* 14 SignatureBlock — never breaks across a page */
.sp-sig-block { border: 1px solid #111111; padding: 12px; background: #ffffff; break-inside: avoid; page-break-inside: avoid; }
.sp-sig-block .sp-label { display: block; margin-bottom: 4px; }
.sp-sig-line { margin-top: 12px; border-top: 1px solid #111111; padding-top: 8px; display: flex; justify-content: space-between; gap: 8px; font-family: var(--sp-font-mono); font-size: var(--sp-size-label); text-transform: uppercase; letter-spacing: var(--sp-track-label); color: var(--sp-ink-1); line-height: var(--sp-leading-label); }
/* 15 DocPage — page frame */
.sp-docpage { background: #ffffff; border: var(--sp-hairline-width) solid var(--sp-hairline); overflow: hidden; }
.sp-docpage-head { padding: 16px; }
.sp-docpage-body { padding: 16px; }
.sp-docpage-foot { padding: 10px 16px; border-top: var(--sp-hairline-width) solid var(--sp-hairline); font-family: var(--sp-font-mono); font-size: var(--sp-size-label); letter-spacing: var(--sp-track-label); text-transform: uppercase; color: var(--sp-ink-4); line-height: var(--sp-leading-label); }
/* 16 Card — hairline specimen card */
.sp-card { background: #ffffff; border: var(--sp-hairline-width) solid var(--sp-hairline); padding: var(--sp-space-md); }
.sp-card-flat { background: var(--sp-surface); }