/* © Copyright 2026 - All Rights Reserved - Canadian Data Solutions */
/* GEO Ranking Tracker: the scan form on the agency's own website. Two looks: Scanner and Simple. */
:root { --cdsgeo-ps-rev: "1nad7arg9nbx4kcck7001ghv9zfir97gw0rxqn8l"; }

.cdsgeo-public-scan {
	--cdsgeo-ps-accent: #0F766E;
	--cdsgeo-ps-ink: #111827;
	--cdsgeo-ps-muted: #4B5563;
	--cdsgeo-ps-line: #D6DEE6;
	--cdsgeo-ps-strong: #15803D;
	--cdsgeo-ps-fair: #B45309;
	--cdsgeo-ps-weak: #B91C1C;
	/* A neutral light grey behind the scan; the accent colour is kept for the gauge, the bars and the button. */
	--cdsgeo-ps-tint: #F4F5F7;
	--cdsgeo-ps-soft: #E6E8EC;
	box-sizing: border-box;
	color: var(--cdsgeo-ps-ink);
	line-height: 1.5;
	container-type: inline-size;
	container-name: cdsgeops;
}
.cdsgeo-public-scan *, .cdsgeo-public-scan *::before, .cdsgeo-public-scan *::after { box-sizing: border-box; }
.cdsgeo-public-scan [hidden] { display: none !important; }

/* ---------- Shared: the form ---------- */
.cdsgeo-public-scan .cdsgeo-ps-trap { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.cdsgeo-public-scan .cdsgeo-ps-required { margin: 0; padding: 0 0 12px; font-size: .9em; color: var(--cdsgeo-ps-muted); }
.cdsgeo-public-scan .cdsgeo-ps-star { color: var(--cdsgeo-ps-weak); font-weight: 700; }
.cdsgeo-public-scan .cdsgeo-ps-fields { display: grid; grid-template-columns: 1fr; gap: 12px; }
.cdsgeo-public-scan .cdsgeo-ps-field { display: block; margin: 0; }
.cdsgeo-public-scan .cdsgeo-ps-field > span { display: block; font-weight: 600; margin: 0 0 5px; font-size: .95em; }
.cdsgeo-public-scan .cdsgeo-ps-field input {
	display: block; width: 100%; min-height: 48px; padding: 10px 14px; font: inherit; color: var(--cdsgeo-ps-ink);
	background: #fff; border: 1px solid #A9B4C0; border-radius: 10px; box-shadow: none; margin: 0;
	transition: border-color .15s ease, box-shadow .15s ease;
}
.cdsgeo-public-scan .cdsgeo-ps-field input:focus { outline: none; border-color: var(--cdsgeo-ps-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--cdsgeo-ps-accent) 28%, transparent); }
.cdsgeo-public-scan .cdsgeo-ps-invalid input, .cdsgeo-public-scan input.cdsgeo-ps-invalid { border: 2px solid var(--cdsgeo-ps-weak); }
.cdsgeo-public-scan .cdsgeo-ps-note { margin: 10px 0 0; font-size: .9em; color: var(--cdsgeo-ps-muted); }
.cdsgeo-public-scan .cdsgeo-ps-consent { display: flex; gap: 10px; align-items: flex-start; margin: 14px 0 0; font-weight: 400; cursor: pointer; width: 100%; }
.cdsgeo-public-scan .cdsgeo-ps-consent input { flex: none; width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--cdsgeo-ps-accent); }
.cdsgeo-public-scan .cdsgeo-ps-consent a { white-space: nowrap; color: inherit; text-decoration: underline; }
.cdsgeo-public-scan .cdsgeo-ps-consent.cdsgeo-ps-invalid { outline: 2px solid var(--cdsgeo-ps-weak); outline-offset: 4px; border-radius: 6px; }
.cdsgeo-public-scan .cdsgeo-ps-message { margin: 12px 0 0; color: var(--cdsgeo-ps-weak); font-weight: 600; }
.cdsgeo-public-scan .cdsgeo-ps-submit { margin: 0; padding: 22px 0 0; }
.cdsgeo-public-scan .cdsgeo-ps-button {
	display: inline-flex; align-items: center; justify-content: center; min-height: 48px; padding: 0 28px; border: 0; border-radius: 12px;
	background: var(--cdsgeo-ps-accent); color: #fff; font: inherit; font-weight: 700; font-size: 1.02em; letter-spacing: .01em;
	cursor: pointer; text-decoration: none; box-shadow: 0 6px 18px color-mix(in srgb, var(--cdsgeo-ps-accent) 32%, transparent);
	transition: transform .15s ease, filter .15s ease, box-shadow .15s ease;
}
.cdsgeo-public-scan .cdsgeo-ps-button:hover { filter: brightness(.92); transform: translateY(-1px); color: #fff; }
.cdsgeo-public-scan .cdsgeo-ps-button:focus-visible, .cdsgeo-public-scan .cdsgeo-ps-again:focus-visible { outline: 3px solid var(--cdsgeo-ps-ink); outline-offset: 3px; }
.cdsgeo-public-scan .cdsgeo-ps-button:disabled { opacity: .6; cursor: wait; transform: none; }

/* ---------- Simple look ---------- */
.cdsgeo-ps-simple .cdsgeo-ps-fields { max-width: 480px; }
.cdsgeo-ps-simple .cdsgeo-ps-bar { height: 8px; max-width: 480px; background: rgba(0,0,0,.08); border-radius: 999px; overflow: hidden; margin: 8px 0 16px; }
.cdsgeo-ps-simple .cdsgeo-ps-bar div { height: 100%; width: 3%; background: var(--cdsgeo-ps-accent); border-radius: 999px; transition: width .6s ease; }
.cdsgeo-ps-simple .cdsgeo-ps-tiles { display: flex; flex-wrap: wrap; gap: 12px; margin: 8px 0 14px; }
.cdsgeo-ps-simple .cdsgeo-ps-tile { min-width: 110px; padding: 12px 14px; border: 1px solid rgba(0,0,0,.12); border-radius: 10px; text-align: center; }
.cdsgeo-ps-simple .cdsgeo-ps-tile b { display: block; font-size: 1.8em; line-height: 1.1; }
.cdsgeo-public-scan.cdsgeo-ps-simple ul.cdsgeo-ps-finds li { margin: 0 0 8px; }
.cdsgeo-ps-simple .cdsgeo-ps-result .cdsgeo-ps-message { color: inherit; font-weight: 400; }

/* ---------- Scanner look ---------- */
.cdsgeo-ps-scanner .cdsgeo-ps-stage { background: #E2EAFA; background: linear-gradient(160deg, #D3E1FA 0%, #DCE7FB 35%, #E6EEFD 70%, #EAECF8 100%); box-shadow: 0 18px 48px rgba(15, 23, 42, .08); border-radius: 22px; padding: clamp(20px, 4vw, 40px) clamp(14px, 3vw, 32px) clamp(18px, 3vw, 32px); overflow: hidden; }
.cdsgeo-ps-scanner .cdsgeo-ps-lower { margin-top: 28px; background: #E2EAFA; background: linear-gradient(160deg, #D3E1FA 0%, #DCE7FB 35%, #E6EEFD 70%, #EAECF8 100%); border: 0; border-radius: 22px; padding: clamp(18px, 3vw, 32px) clamp(14px, 3vw, 32px); box-shadow: 0 18px 48px rgba(15, 23, 42, .08); }
.cdsgeo-ps-scanner .cdsgeo-ps-lower-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-items: start; }
.cdsgeo-ps-scanner .cdsgeo-ps-thanks { margin: 0; padding: 18px 20px; border-radius: 16px; background: rgba(255, 255, 255, .75); font-weight: 600; }
.cdsgeo-ps-scanner .cdsgeo-ps-top { text-align: center; max-width: 760px; margin: 0 auto 28px; }
.cdsgeo-ps-scanner .cdsgeo-ps-heading { margin: 0 0 8px; font-size: clamp(1.8rem, 3.4vw, 2.6rem); line-height: 1.15; letter-spacing: -.01em; color: var(--cdsgeo-ps-ink); }
.cdsgeo-ps-scanner .cdsgeo-ps-intro { margin: 0; color: var(--cdsgeo-ps-muted); font-size: 1.05em; }
.cdsgeo-ps-scanner .cdsgeo-ps-grid { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-areas: "centre" "side" "facts"; gap: 18px; align-items: start; }
.cdsgeo-ps-scanner .cdsgeo-ps-facts { grid-area: facts; }
.cdsgeo-ps-scanner .cdsgeo-ps-centre { grid-area: centre; text-align: center; }
.cdsgeo-ps-scanner .cdsgeo-ps-side { grid-area: side; display: grid; gap: 18px; }
.cdsgeo-ps-scanner .cdsgeo-ps-card { background: #fff; border: 1px solid var(--cdsgeo-ps-line); border-radius: 18px; padding: 20px; box-shadow: 0 8px 24px rgba(15, 23, 42, .05); text-align: left; }
.cdsgeo-ps-scanner .cdsgeo-ps-card-title { margin: 0 0 12px; font-family: inherit; font-size: 1.05em; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--cdsgeo-ps-ink); }

/* Facts card */
.cdsgeo-ps-scanner .cdsgeo-ps-fact { display: flex; gap: 14px; align-items: center; padding: 12px 0; border-top: 1px solid #EDF1F4; }
.cdsgeo-ps-scanner .cdsgeo-ps-fact:first-of-type { border-top: 0; padding-top: 4px; }
.cdsgeo-ps-scanner .cdsgeo-ps-fact-icon { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: 12px; background: var(--cdsgeo-ps-tint); color: var(--cdsgeo-ps-accent); }
.cdsgeo-ps-scanner .cdsgeo-ps-fact-text { display: flex; flex-direction: column; min-width: 0; }
.cdsgeo-ps-scanner .cdsgeo-ps-fact-label { font-weight: 700; font-size: .95em; }
.cdsgeo-ps-scanner .cdsgeo-ps-fact-value { color: var(--cdsgeo-ps-muted); overflow-wrap: break-word; word-break: normal; font-variant-numeric: tabular-nums; }

/* The gauge */
.cdsgeo-ps-scanner .cdsgeo-ps-gauge { position: relative; width: min(340px, 100%); margin: 0 auto; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge svg { display: block; width: 100%; height: auto; overflow: visible; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-track { fill: none; stroke: rgba(255, 255, 255, .85); stroke-width: 16; stroke-linecap: round; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-value { fill: none; stroke: var(--cdsgeo-ps-accent); stroke-width: 16; stroke-linecap: round; filter: drop-shadow(0 0 6px color-mix(in srgb, var(--cdsgeo-ps-accent) 45%, transparent)); transition: stroke-dashoffset .9s cubic-bezier(.3, .8, .3, 1); }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-tick { font-size: 10px; font-weight: 600; fill: var(--cdsgeo-ps-muted); }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-knob { fill: #fff; stroke: var(--cdsgeo-ps-accent); stroke-width: 4; transition: cx .9s cubic-bezier(.3, .8, .3, 1), cy .9s cubic-bezier(.3, .8, .3, 1); }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-centre { position: absolute; left: 12%; right: 12%; top: 36%; display: flex; flex-direction: column; align-items: center; pointer-events: none; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-num { font-size: clamp(2.6rem, 6vw, 3.6rem); font-weight: 800; line-height: 1; color: var(--cdsgeo-ps-accent); font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-num small { font-size: .45em; font-weight: 700; margin-left: 2px; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-label { margin-top: 6px; font-weight: 600; color: var(--cdsgeo-ps-muted); font-size: .95em; line-height: 1.2; }
.cdsgeo-ps-scanner .cdsgeo-ps-gauge-band { margin-top: 6px; font-weight: 800; font-size: .95em; }
.cdsgeo-ps-scanner[data-state="running"] .cdsgeo-ps-gauge::before { content: ""; position: absolute; inset: 8% 14% 22%; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--cdsgeo-ps-accent) 16%, transparent), transparent 70%); animation: cdsgeo-ps-pulse 2.2s ease-in-out infinite; }
@keyframes cdsgeo-ps-pulse { 0%, 100% { opacity: .35; transform: scale(.94); } 50% { opacity: 1; transform: scale(1.04); } }

/* Status line and steps */
.cdsgeo-ps-scanner .cdsgeo-ps-status { margin: 4px 0 14px; min-height: 1.5em; color: var(--cdsgeo-ps-muted); font-weight: 600; }
/* Lists are named twice over so a theme's own list rules (padding, margin, width) cannot reach them. */
.cdsgeo-public-scan.cdsgeo-ps-scanner ol.cdsgeo-ps-steps { list-style: none; margin: 0 auto 8px; padding: 6px 18px; max-width: 460px; line-height: 1.4; background: #fff; border: 1px solid var(--cdsgeo-ps-line); border-radius: 16px; text-align: left; }
.cdsgeo-public-scan.cdsgeo-ps-scanner ol.cdsgeo-ps-steps li { display: flex; flex-wrap: wrap; align-items: center; column-gap: 12px; row-gap: 2px; padding: 9px 0; border-top: 1px solid #EDF1F4; margin: 0; }
.cdsgeo-public-scan.cdsgeo-ps-scanner ol.cdsgeo-ps-steps li:first-child { border-top: 0; }
.cdsgeo-ps-scanner .cdsgeo-ps-step-dot { flex: none; width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--cdsgeo-ps-line); display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 13px; font-weight: 800; }
.cdsgeo-ps-scanner .is-done .cdsgeo-ps-step-dot { background: var(--cdsgeo-ps-accent); border-color: var(--cdsgeo-ps-accent); }
.cdsgeo-ps-scanner .is-running .cdsgeo-ps-step-dot { border-color: var(--cdsgeo-ps-accent); border-top-color: transparent; animation: cdsgeo-ps-spin .9s linear infinite; }
@keyframes cdsgeo-ps-spin { to { transform: rotate(360deg); } }
.cdsgeo-ps-scanner .cdsgeo-ps-step-label { flex: 1 1 auto; font-weight: 600; }
.cdsgeo-ps-scanner .is-waiting .cdsgeo-ps-step-label { color: var(--cdsgeo-ps-muted); font-weight: 500; }
.cdsgeo-ps-scanner .cdsgeo-ps-step-result { margin-left: auto; color: var(--cdsgeo-ps-muted); font-size: .92em; text-align: right; font-variant-numeric: tabular-nums; }
.cdsgeo-ps-scanner .cdsgeo-ps-steps li.is-new { animation: cdsgeo-ps-pop .45s ease; }
@keyframes cdsgeo-ps-pop { 0% { background: color-mix(in srgb, var(--cdsgeo-ps-accent) 12%, transparent); } 100% { background: transparent; } }

/* The form under the gauge */
.cdsgeo-ps-scanner .cdsgeo-ps-form { margin: 0; background: transparent; text-align: left; }
.cdsgeo-ps-scanner .cdsgeo-ps-fields { grid-template-columns: 1fr; }
.cdsgeo-ps-scanner .cdsgeo-ps-field-site { grid-column: 1 / -1; }
.cdsgeo-ps-scanner .cdsgeo-ps-submit { text-align: center; }
.cdsgeo-ps-scanner .cdsgeo-ps-submit .cdsgeo-ps-button { width: 100%; }

/* Meters: score and speed bars */
.cdsgeo-ps-scanner .cdsgeo-ps-meter { padding: 10px 0; border-top: 1px solid #EDF1F4; }
.cdsgeo-ps-scanner .cdsgeo-ps-card-title + .cdsgeo-ps-meter { border-top: 0; padding-top: 0; }
.cdsgeo-ps-scanner .cdsgeo-ps-meter-head { display: flex; align-items: baseline; gap: 8px; margin: 0 0 8px; }
.cdsgeo-ps-scanner .cdsgeo-ps-meter-label { font-weight: 700; flex: 1; }
.cdsgeo-ps-scanner .cdsgeo-ps-meter-band { font-size: .82em; font-weight: 700; }
.cdsgeo-ps-scanner .cdsgeo-ps-meter-num { font-size: 1.6em; font-weight: 800; line-height: 1; color: var(--cdsgeo-ps-accent); font-variant-numeric: tabular-nums; min-width: 2ch; text-align: right; }
.cdsgeo-ps-scanner .cdsgeo-ps-meter-bar { height: 10px; border-radius: 999px; background: #EDF1F4; overflow: hidden; }
.cdsgeo-ps-scanner .cdsgeo-ps-meter-bar span { display: block; height: 100%; width: 0; border-radius: 999px; background: var(--cdsgeo-ps-accent); transition: width 1.1s cubic-bezier(.3, .8, .3, 1); }
.cdsgeo-ps-scanner[data-state="running"] .cdsgeo-ps-meter:not(.has-value) .cdsgeo-ps-meter-bar { background: linear-gradient(90deg, #EDF1F4 0%, color-mix(in srgb, var(--cdsgeo-ps-accent) 14%, #EDF1F4) 50%, #EDF1F4 100%); background-size: 200% 100%; animation: cdsgeo-ps-shimmer 1.6s linear infinite; }
@keyframes cdsgeo-ps-shimmer { from { background-position: 100% 0; } to { background-position: -100% 0; } }
.cdsgeo-public-scan .is-strong .cdsgeo-ps-meter-band, .cdsgeo-public-scan .cdsgeo-ps-gauge-band.is-strong { color: var(--cdsgeo-ps-strong); }
.cdsgeo-public-scan .is-fair .cdsgeo-ps-meter-band, .cdsgeo-public-scan .cdsgeo-ps-gauge-band.is-fair { color: var(--cdsgeo-ps-fair); }
.cdsgeo-public-scan .is-weak .cdsgeo-ps-meter-band, .cdsgeo-public-scan .cdsgeo-ps-gauge-band.is-weak { color: var(--cdsgeo-ps-weak); }
.cdsgeo-ps-scanner .cdsgeo-ps-meter:not(.has-value) .cdsgeo-ps-meter-num { color: #9AA5B1; }
.cdsgeo-public-scan .is-strong .cdsgeo-ps-meter-num { color: var(--cdsgeo-ps-strong); }
.cdsgeo-public-scan .is-fair .cdsgeo-ps-meter-num { color: var(--cdsgeo-ps-fair); }
.cdsgeo-public-scan .is-weak .cdsgeo-ps-meter-num { color: var(--cdsgeo-ps-weak); }
.cdsgeo-public-scan .is-strong .cdsgeo-ps-meter-bar span { background: var(--cdsgeo-ps-strong); }
.cdsgeo-public-scan .is-fair .cdsgeo-ps-meter-bar span { background: var(--cdsgeo-ps-fair); }
.cdsgeo-public-scan .is-weak .cdsgeo-ps-meter-bar span { background: var(--cdsgeo-ps-weak); }

/* Finish: findings and buttons */
.cdsgeo-ps-scanner .cdsgeo-ps-finish { margin: 0; text-align: left; }
.cdsgeo-public-scan.cdsgeo-ps-scanner ul.cdsgeo-ps-finds { margin: 0 0 12px; padding: 0 0 0 20px; max-width: none; }
.cdsgeo-public-scan.cdsgeo-ps-scanner ul.cdsgeo-ps-finds li { margin: 0 0 8px; }
.cdsgeo-ps-scanner .cdsgeo-ps-done { font-weight: 700; margin: 0 0 14px; }
.cdsgeo-ps-scanner .cdsgeo-ps-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0; }
.cdsgeo-public-scan .cdsgeo-ps-again { min-height: 48px; padding: 0 22px; border-radius: 12px; border: 2px solid var(--cdsgeo-ps-accent); background: #fff; color: var(--cdsgeo-ps-ink); font: inherit; font-weight: 700; cursor: pointer; }
.cdsgeo-public-scan .cdsgeo-ps-again:hover { background: var(--cdsgeo-ps-tint); }

/* Benefit cards and the privacy line */
.cdsgeo-ps-scanner .cdsgeo-ps-benefits { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin: 0; }
.cdsgeo-ps-scanner .cdsgeo-ps-benefit { background: rgba(255, 255, 255, .72); border-color: rgba(255, 255, 255, .9); box-shadow: none; }
.cdsgeo-ps-scanner .cdsgeo-ps-benefit .cdsgeo-ps-fact-icon { background: #fff; }
.cdsgeo-ps-scanner .cdsgeo-ps-benefit { display: flex; gap: 14px; align-items: center; }
.cdsgeo-ps-scanner .cdsgeo-ps-benefit strong { display: block; }
.cdsgeo-ps-scanner .cdsgeo-ps-benefit span span { display: block; color: var(--cdsgeo-ps-muted); font-size: .95em; }
.cdsgeo-public-scan .cdsgeo-ps-privacy { margin: 22px 0 0; text-align: center; font-size: .9em; color: var(--cdsgeo-ps-muted); }
.cdsgeo-public-scan .cdsgeo-ps-privacy a { color: inherit; text-decoration: underline; }

/* While the scan runs the form folds away and the gauge takes the stage. */
.cdsgeo-ps-scanner[data-state="running"] .cdsgeo-ps-form, .cdsgeo-ps-scanner[data-state="done"] .cdsgeo-ps-form { display: none; }
.cdsgeo-ps-scanner[data-state="running"] .cdsgeo-ps-gauge, .cdsgeo-ps-scanner[data-state="done"] .cdsgeo-ps-gauge { width: min(400px, 100%); transition: width .5s ease; }

/* Wider spaces: the layout grows with the room the theme gives it, not the window. */
@container cdsgeops (min-width: 560px) {
	.cdsgeo-ps-scanner .cdsgeo-ps-fields { grid-template-columns: 1fr 1fr; }
	.cdsgeo-ps-scanner .cdsgeo-ps-benefits { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.cdsgeo-ps-scanner .cdsgeo-ps-benefit { flex-direction: column; align-items: flex-start; }
}
@container cdsgeops (min-width: 700px) {
	.cdsgeo-ps-scanner .cdsgeo-ps-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "centre centre" "side facts"; gap: 22px; }
}
@container cdsgeops (min-width: 860px) {
	.cdsgeo-ps-scanner .cdsgeo-ps-lower-grid { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 28px; }
	.cdsgeo-ps-scanner .cdsgeo-ps-benefits { grid-template-columns: minmax(0, 1fr); }
	.cdsgeo-ps-scanner .cdsgeo-ps-benefit { flex-direction: row; align-items: center; }
}
@container cdsgeops (min-width: 940px) {
	.cdsgeo-ps-scanner .cdsgeo-ps-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr) minmax(0, 1fr); grid-template-areas: "facts centre side"; gap: 24px; }
}
@container cdsgeops (max-width: 559px) {
	.cdsgeo-ps-scanner .cdsgeo-ps-actions > * { width: 100%; }
}

/* Reduced motion: no sweeping, the numbers simply appear. */
@media (prefers-reduced-motion: reduce) {
	.cdsgeo-public-scan *, .cdsgeo-public-scan *::before { animation: none !important; transition: none !important; }
}
/* © Copyright 2026 - All Rights Reserved - Canadian Data Solutions */
