*,::before,::after{box-sizing:border-box;border:0 solid #e5e7eb}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden="until-found"])){display:none!important}*{box-sizing:border-box}.hidden{display:none!important}.block{display:block!important}.inline-flex{display:inline-flex!important}.flex{display:flex!important}.grid{display:grid!important}.flex-1{flex:1 1 0%}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.relative{position:relative}.absolute{position:absolute}.inset-0{inset:0}.left-0{left:0}.right-0{right:0}.z-10{z-index:10}.z-20{z-index:20}.pointer-events-none{pointer-events:none}.overflow-hidden{overflow:hidden}.mx-auto{margin-left:auto;margin-right:auto}.ml-4{margin-left:1rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.mb-14{margin-bottom:3.5rem}.mb-20{margin-bottom:5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-8{gap:2rem}.gap-x-2{column-gap:.5rem}.gap-y-1{row-gap:.25rem}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.w-16{width:4rem}.w-64{width:16rem}.w-full{width:100%}.h-16{height:4rem}.h-64{height:16rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.min-h-\[280px\]{min-height:280px}.md\:h-72{height:18rem}.md\:w-72{width:18rem}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-6xl{max-width:72rem}.rounded-xl{border-radius:.75rem}.rounded-2xl{border-radius:1rem}.border{border-width:1px;border-style:solid}.border-kborder{border-color:var(--k-border)}.bg-kbg{background-color:var(--k-bg)}.bg-kcard{background-color:var(--k-card)}.text-ktext{color:var(--k-text)}.text-kmuted{color:var(--k-muted)}.text-kaccent{color:var(--k-accent)}.font-sans{font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-center{text-align:center}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.leading-relaxed{line-height:1.625}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-40{opacity:.4}.transition{transition-property:color,background-color,border-color,opacity,box-shadow,transform,filter;transition-duration:150ms;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all}.transition-opacity{transition-property:opacity}.duration-500{transition-duration:500ms}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}.shadow-kaccent\/20{box-shadow:0 10px 15px -3px rgb(var(--k-accent-rgb)/.2),0 4px 6px -4px rgb(var(--k-accent-rgb)/.2)}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-from),var(--tw-gradient-to))}.from-kaccent{--tw-gradient-from:var(--k-accent);--tw-gradient-to:rgb(255 255 255 / 0)}.to-blue-500{--tw-gradient-to:#3b82f6}.hover\:opacity-90:hover{opacity:.9}.hover\:text-kaccent:hover{color:var(--k-accent)}.hover\:underline:hover{text-decoration-line:underline}.hover\:bg-kaccent\/10:hover{background-color:rgb(var(--k-accent-rgb)/.1)}.hover\:border-kaccent\/40:hover{border-color:rgb(var(--k-accent-rgb)/.4)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:shadow-none:disabled{box-shadow:none}.active\:scale-\[0\.98\]:active{transform:scale(.98)}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:768px){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:h-72{height:18rem}.md\:w-72{width:18rem}.md\:mb-14{margin-bottom:3.5rem}.md\:p-8{padding:2rem}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-5xl{font-size:3rem;line-height:1}}@media(min-width:1024px){.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}}@media(max-width:767px){.md\:py-12{padding-top:2rem;padding-bottom:2rem}.px-10{padding-left:1rem;padding-right:1rem}}.-rotate-90{transform:rotate(-90deg)}.bottom-2{bottom:.5rem}.content-start{align-content:flex-start}.text-kbg{color:var(--text-inv,var(--k-text))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.border-kaccent\/40{border-color:rgb(var(--k-accent-rgb)/.4)}

html{overflow-y:scroll;}
/* Theme variables */
:root,
[data-theme="dark"] {
  color-scheme: dark;
  --k-bg: #070B14;
  --k-card: #0F1629;
  --k-border: #1E293B;
  --k-accent: #22D3EE;
  --k-accent-rgb: 34, 211, 238;
  --k-muted: #64748B;
  --k-text: #E2E8F0;
  --k-text-inv: #070B14;
  --k-glow: rgba(34, 211, 238, 0.08);
  --k-glow2: rgba(59, 130, 246, 0.05);
  --k-map-fill: #1E293B;
  --k-gauge-track: #1E293B;
}

[data-theme="light"] {
  color-scheme: light;
  --k-bg: #F1F5F9;
  --k-card: #FFFFFF;
  --k-border: #E2E8F0;
  --k-accent: #0891B2;
  --k-accent-rgb: 8, 145, 178;
  --k-muted: #64748B;
  --k-text: #0F172A;
  --k-text-inv: #FFFFFF;
  --k-glow: rgba(8, 145, 178, 0.06);
  --k-glow2: rgba(59, 130, 246, 0.04);
  --k-map-fill: #CBD5E1;
  --k-gauge-track: #E2E8F0;
}

body {
  background-color: var(--k-bg) !important;
  color: var(--k-text) !important;
  background-image:
    radial-gradient(ellipse 80% 50% at 50% -20%, var(--k-glow), transparent),
    radial-gradient(ellipse 60% 40% at 80% 100%, var(--k-glow2), transparent);
}

/* Override Tailwind utility classes used in markup */
.bg-kbg { background-color: var(--k-bg) !important; }
.bg-kcard { background-color: var(--k-card) !important; }
.border-kborder { border-color: var(--k-border) !important; }
.text-ktext { color: var(--k-text) !important; }
.text-kmuted { color: var(--k-muted-readable,var(--k-muted)) !important; }
.text-kaccent { color: var(--k-accent) !important; }
.text-kbg { color: var(--k-text-inv) !important; }

.loc-card {
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.loc-card:hover {
  transform: translateY(-2px);
  border-color: var(--k-accent);
  box-shadow: 0 8px 24px -8px rgba(var(--k-accent-rgb), 0.28);
}
.loc-card.offline {
  opacity: 0.55;
  cursor: not-allowed;
  pointer-events: auto; /* hover map still works */
}
.loc-card.offline:hover {
  border-color: var(--k-border);
}
a.loc-card.offline {
  pointer-events: none;
}

.status-dot {
  width: 8px; height: 8px; border-radius: 50%; display: inline-block;
}
.status-dot.online { background: #34d399; box-shadow: 0 0 8px rgba(52,211,153,0.5); }
.status-dot.offline { background: #f87171; box-shadow: 0 0 8px rgba(248,113,113,0.4); }

.map-marker { cursor: pointer; transition: transform 0.15s ease; }
.map-marker:hover { transform: scale(1.25); }
.map-marker circle.pulse { animation: pulse 2s ease-out infinite; }
@keyframes pulse {
  0% { r: 6; opacity: 0.6; }
  100% { r: 18; opacity: 0; }
}

#gauge-value { font-variant-numeric: tabular-nums; }
#results.show { opacity: 1; }

#theme-toggle, #lang-toggle {
  color: var(--k-text);
  border-color: var(--k-border);
}
#theme-toggle:hover, #lang-toggle:hover {
  border-color: var(--k-accent);
  color: var(--k-accent);
}

.queue-spinner {
  width: 14px; height: 14px;
  border: 2px solid var(--k-border);
  border-top-color: var(--k-accent);
  border-radius: 50%;
  display: inline-block;
  animation: queue-spin 0.7s linear infinite;
}
@keyframes queue-spin {
  to { transform: rotate(360deg); }
}

/* Map panel */
.map-panel {
  background:
    radial-gradient(ellipse 70% 60% at 50% 40%, rgba(34, 211, 238, 0.07), transparent 65%),
    var(--k-card);
}
.map-glow {
  pointer-events: none;
  background: radial-gradient(ellipse at 55% 35%, rgba(34, 211, 238, 0.12), transparent 55%);
}
[data-theme="light"] .map-land {
  fill: var(--map-land1) !important;
  stroke: var(--map-land-stroke) !important;
}
[data-theme="light"] .map-grid {
  stroke: var(--k-border) !important;
}

.flag-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
}
.flag-img {
  border-radius: 3px;
  box-shadow: 0 0 0 1px rgba(148, 163, 184, 0.25);
  display: block;
}
.flag-emoji { font-size: 1.4rem; line-height: 1; }

#test-flag {
  display: inline-flex;
  align-items: center;
}
#test-flag .flag-img {
  width: 32px;
  height: 24px;
  border-radius: 4px;
}

.flag-wrap {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.flag-svg {
  width: 22px;
  height: 16px;
  border-radius: 2px;
  box-shadow: 0 0 0 1px rgba(100, 116, 139, 0.35);
  display: block;
}
.flag-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 28px;
  height: 18px;
  padding: 0 4px;
  border-radius: 3px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: var(--k-border);
  color: var(--k-text);
}
#test-flag {
  display: inline-flex;
  align-items: center;
}
#test-flag .flag-svg {
  width: 32px;
  height: 24px;
  border-radius: 4px;
}
[data-theme="light"] .map-label-bg {
  fill: var(--k-card) !important;
  stroke: var(--k-border) !important;
}
[data-theme="light"] .map-label-text {
  fill: var(--k-text) !important;
}
[data-theme="light"] .map-land {
  fill: var(--map-land1) !important;
  stroke: var(--map-land-stroke) !important;
}

/* Leaflet map */
#geo-map {
  background: var(--k-bg);
}
[data-theme="light"] #geo-map {
  background: var(--k-bg);
}
.k-marker {
  background: transparent !important;
  border: none !important;
}
.k-marker-dot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--c, var(--k-accent));
  border: 2px solid #fff;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--c, var(--k-accent)) 35%, transparent),
              0 2px 8px rgba(0,0,0,0.35);
  transform: translate(-50%, -50%);
}
.k-marker-label {
  position: absolute;
  left: 12px;
  top: -10px;
  white-space: nowrap;
  background: var(--map-label-bg);
  color: var(--map-label-text);
  border: 1px solid var(--map-label-border);
  border-radius: 6px;
  padding: 2px 8px;
  font-size: 11px;
  font-family: Inter, system-ui, sans-serif;
  line-height: 1.35;
  pointer-events: none;
}
.k-marker-label span {
  display: block;
  color: var(--k-accent);
  font-family: "JetBrains Mono", ui-monospace, monospace;
  font-size: 10px;
}
[data-theme="light"] .k-marker-label {
  background: var(--map-label-bg);
  color: var(--map-label-text);
  border-color: var(--map-label-border);
}
.leaflet-control-zoom a {
  background: var(--k-card) !important;
  color: var(--k-text) !important;
  border-color: var(--k-border) !important;
}

/* Offline map themes */
:root, [data-theme="dark"] {
  --map-water: #0a1220;
  --map-land1: #1a3352;
  --map-land-stroke: #3b5678;
  --map-label-bg: color-mix(in srgb, var(--k-card) 92%, transparent);
  --map-label-border: var(--k-border);
  --map-label-text: var(--k-text);
  --map-label-ping: var(--k-accent);
  --map-country-active: var(--k-accent);
  --map-country-hover: var(--k-accent);
}
[data-theme="light"] {
  --map-water: #dbe7f3;
  --map-land1: #9db0c5;
  --map-land-stroke: #5c738c;
  --map-label-bg: color-mix(in srgb, var(--k-card) 95%, transparent);
  --map-label-border: var(--k-border);
  --map-label-text: var(--k-text);
  --map-label-ping: var(--k-accent);
  --map-country-active: var(--k-accent);
  --map-country-hover: var(--k-accent);
}
.map-panel {
  background: var(--map-water);
}
.map-water {
  fill: var(--map-water);
}
.map-label-bg {
  fill: var(--map-label-bg);
  stroke: var(--map-label-border);
  stroke-width: 1;
}
.map-label-title {
  fill: var(--map-label-text);
}
.map-label-ping {
  fill: var(--map-label-ping);
}
.map-land {
  fill: var(--map-land1);
  stroke: var(--map-land-stroke);
}

/* Realistic offline map */
#map-host svg {
  width: 100%;
  height: 100%;
}
#map-host .map-water {
  fill: var(--map-water);
}
#map-host .map-land {
  fill: var(--map-land1);
  stroke: var(--map-land-stroke);
  stroke-width: 0.35;
  transition: fill 0.2s ease;
}

#map-markers {
  pointer-events: none;
}
.map-pin {
  position: absolute;
  transform: translate(-50%, -50%);
  pointer-events: auto;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  z-index: 2;
}
.map-pin-dot {
  display: block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #34d399; /* online green */
  border: 2px solid #fff;
  box-shadow: 0 0 0 4px rgba(52, 211, 153, 0.28), 0 2px 8px rgba(0,0,0,0.3);
}
.map-pin.is-offline .map-pin-dot {
  background: #f87171; /* offline soft red */
  box-shadow: 0 0 0 4px rgba(248, 113, 113, 0.28), 0 2px 8px rgba(0,0,0,0.25);
}
.map-pin-card {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  white-space: nowrap;
  background: var(--map-label-bg);
  border: 1px solid var(--map-label-border);
  border-radius: 8px;
  padding: 4px 8px 5px;
  line-height: 1.25;
  box-shadow: 0 4px 14px rgba(0,0,0,0.18);
  text-align: left;
}
.map-pin.side-right .map-pin-card { left: 16px; }
.map-pin.side-left .map-pin-card { right: 16px; }
.map-pin-city {
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: var(--map-label-text);
}
.map-pin-ping {
  display: block;
  font-size: 10px;
  font-family: "JetBrains Mono", ui-monospace, monospace;
  color: var(--map-label-ping);
}
.map-pin.is-offline .map-pin-ping {
  color: #f87171;
}

/* Logo mark — как на рендере */
.logo-mark {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--k-accent) 0%, var(--k-accent2) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 14px rgba(34, 211, 238, 0.35);
  flex-shrink: 0;
}
.logo-mark span {
  font-weight: 800;
  font-size: 16px;
  color: #070B14;
  line-height: 1;
  letter-spacing: -0.02em;
}
[data-theme="light"] .logo-mark {
  box-shadow: 0 4px 12px rgba(8, 145, 178, 0.3);
}

.brand-link { text-decoration: none; color: inherit; }
.brand-k {
  width: 40px;
  height: 36px;
  display: block;
  flex-shrink: 0;
}
.brand-serv {
  font-size: 1.35rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--k-text);
}
.brand-sub {
  font-size: 0.7rem;
  font-weight: 500;
  color: var(--k-accent);
  letter-spacing: 0.04em;
  opacity: 0.9;
}
@media (max-width: 640px) {
  .brand-sub { display: none; }
}


/* Map: единый фон панели и «воды» */
.map-panel {
  background: var(--map-water) !important;
  border-color: var(--k-border);
}
#map-host,
#map-host svg {
  background: var(--map-water);
}
#map-host .map-water {
  fill: var(--map-water);
}

.brand-k {
  width: 36px;
  height: 36px;
  display: block;
  flex-shrink: 0;
}


/* Modern test stages */
.test-steps {
  width: min(100%, 320px);
  margin: 1.25rem auto 0;
  padding: 0 4px;
}
.test-steps-track {
  position: relative;
  height: 3px;
  border-radius: 999px;
  background: var(--k-border);
  margin: 0 18px 12px;
  overflow: hidden;
}
.test-steps-bar {
  height: 100%;
  width: 0%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--k-accent), var(--k-accent2));
  transition: width 0.45s cubic-bezier(0.22, 1, 0.36, 1);
  box-shadow: 0 0 12px rgba(34, 211, 238, 0.45);
}
.test-steps-items {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 4px;
}
.test-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  background: none;
  border: none;
  padding: 0;
  color: var(--k-muted-readable,var(--k-muted));
  transition: color 0.3s ease;
}
.test-step-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--k-border);
  border: 2px solid var(--k-card);
  box-shadow: 0 0 0 1px var(--k-border);
  transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
              background 0.3s ease,
              box-shadow 0.3s ease;
}
.test-step-label {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  opacity: 0.75;
  transition: opacity 0.3s ease, color 0.3s ease;
}
.test-step.active {
  color: var(--k-accent);
}
.test-step.active .test-step-dot {
  background: var(--k-accent);
  transform: scale(1.35);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--k-accent) 28%, transparent),
              0 0 12px color-mix(in srgb, var(--k-accent) 40%, transparent);
}
.test-step.active .test-step-label {
  opacity: 1;
  color: var(--k-accent);
  font-weight: 600;
}
.test-step.done {
  color: var(--k-text);
}
.test-step.done .test-step-dot {
  background: var(--k-accent2);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--k-accent2) 25%, transparent);
}
.test-step.done .test-step-label {
  opacity: 0.9;
}

/* Map focus / card hover */
.loc-card.is-focus {
  border-color: color-mix(in srgb, var(--k-accent) 55%, var(--k-border)) !important;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--k-accent) 22%, transparent),
              0 12px 28px -14px color-mix(in srgb, var(--k-accent) 24%, transparent);
  transform: translateY(-1px);
  transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
}
.map-pin.is-dim {
  opacity: 0.4;
  filter: grayscale(0.3);
  transition: opacity 0.35s ease, filter 0.35s ease;
}
.map-pin.is-focus {
  opacity: 1;
  z-index: 5;
}
.map-pin.is-focus .map-pin-dot {
  transform: scale(1.25);
  box-shadow:
    0 0 0 3px rgba(255,255,255,0.9),
    0 0 0 8px color-mix(in srgb, var(--k-accent) 28%, transparent),
    0 0 20px 4px color-mix(in srgb, var(--k-accent) 36%, transparent);
  animation: pin-pulse 1.6s ease-in-out infinite;
}
@keyframes pin-pulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(255,255,255,0.9), 0 0 0 8px rgba(52,211,153,0.22), 0 0 18px 2px rgba(52,211,153,0.3); }
  50% { box-shadow: 0 0 0 3px rgba(255,255,255,0.95), 0 0 0 12px color-mix(in srgb, var(--k-accent) 18%, transparent), 0 0 28px 6px color-mix(in srgb, var(--k-accent) 42%, transparent); }
}
.map-pin.is-focus .map-pin-card {
  border-color: color-mix(in srgb, var(--k-accent) 55%, var(--map-label-border));
  box-shadow: 0 8px 24px rgba(0,0,0,0.2);
  transform: translateY(-50%) scale(1.04);
}
.map-pin.is-offline.is-focus .map-pin-dot {
  animation: none;
  box-shadow:
    0 0 0 3px rgba(255,255,255,0.9),
    0 0 0 8px rgba(248, 113, 113, 0.25),
    0 0 18px rgba(248, 113, 113, 0.35);
}
.map-pin {
  transition: opacity 0.3s ease, filter 0.3s ease;
}
#map-host svg {
  transition: none; /* viewBox анимируется в JS */
}


/* Map hint — high contrast label over map */
.map-hint-label {
  color: var(--k-text) !important;
  text-shadow:
    0 1px 2px rgba(0, 0, 0, 0.85),
    0 0 8px rgba(0, 0, 0, 0.55);
  background: color-mix(in srgb, var(--k-bg) 72%, transparent);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: inline-block;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%);
  padding: 4px 12px;
  border-radius: 999px;
  border: 1px solid rgba(148, 163, 184, 0.25);
  width: max-content;
  max-width: 90%;
}
[data-theme="light"] .map-hint-label {
  color: var(--k-text) !important;
  text-shadow: none;
  background: color-mix(in srgb, var(--k-card) 88%, transparent);
  border-color: rgba(148, 163, 184, 0.45);
}

/* Admin softer green / primary action buttons */
.btn.primary,
.btn-primary,
button.btn.ok,
.btn.save {
  background: var(--k-accent) !important;
  border-color: var(--k-accent) !important;
  color: var(--k-text-inv) !important;
}
.btn.primary:hover,
.btn-primary:hover,
button.btn.ok:hover,
.btn.save:hover {
  background: var(--k-accent2) !important;
  border-color: var(--k-accent2) !important;
}

/* Ping chips on location cards */
.chip-ping {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--border, #1e293b) 80%, transparent);
  border: 1px solid var(--border, #1e293b);
  font-size: 12px;
}
.chip-ping strong { font-weight: 600; }
.loc-pings { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }

/* IP meta chips on test page */
.ip-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 500;
  background: color-mix(in srgb, var(--k-accent) 14%, transparent);
  color: var(--k-accent);
  border: 1px solid color-mix(in srgb, var(--k-accent) 28%, transparent);
}
.ip-chip-muted {
  background: color-mix(in srgb, var(--k-muted) 12%, transparent);
  color: var(--k-muted-readable,var(--k-muted));
  border-color: var(--k-border);
  font-weight: 450;
}


/* ── Test notice banner ── */
.test-error {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  width: 100%;
  max-width: 28rem;
  margin: 0 auto 1.25rem;
  padding: 14px 16px;
  border-radius: 14px;
  /* All variants stay on the site theme palette (accent / accent2 / border / card) */
  border: 1px solid color-mix(in srgb, var(--k-accent) 40%, var(--k-border));
  background: color-mix(in srgb, var(--k-accent) 10%, var(--k-card));
  color: var(--k-text);
  text-align: left;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
  animation: test-error-in .22s ease-out;
}
.test-error.hidden { display: none !important; }
.test-error.is-error {
  border-color: color-mix(in srgb, var(--k-accent2, var(--k-accent)) 55%, var(--k-border));
  background: color-mix(in srgb, var(--k-accent2, var(--k-accent)) 12%, var(--k-card));
}
.test-error.is-info {
  border-color: color-mix(in srgb, var(--k-accent) 40%, var(--k-border));
  background: color-mix(in srgb, var(--k-accent) 10%, var(--k-card));
}
.test-error.is-warn {
  border-color: color-mix(in srgb, var(--k-accent) 45%, var(--k-border));
  background: color-mix(in srgb, var(--k-accent) 9%, var(--k-card));
}
.test-error-icon {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  display: grid;
  place-items: center;
  font-size: 16px;
  background: color-mix(in srgb, var(--k-accent) 18%, transparent);
  color: var(--k-accent);
}
.test-error.is-error .test-error-icon {
  background: color-mix(in srgb, var(--k-accent2, var(--k-accent)) 20%, transparent);
  color: var(--k-accent2, var(--k-accent));
}
.test-error-body { flex: 1; min-width: 0; }
.test-error-title {
  font-weight: 650;
  font-size: 14px;
  line-height: 1.35;
  letter-spacing: -0.01em;
  margin-bottom: 4px;
  color: var(--k-text, #E2E8F0);
}
.test-error-desc {
  font-size: 13px;
  line-height: 1.45;
  color: var(--k-muted, #94A3B8);
}
.test-error-dismiss {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--k-muted, #94A3B8);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}
.test-error-dismiss:hover {
  background: color-mix(in srgb, var(--k-text, #fff) 8%, transparent);
  color: var(--k-text, #E2E8F0);
}
@keyframes test-error-in {
  from { opacity: 0; transform: translateY(-6px); }
  to { opacity: 1; transform: translateY(0); }
}
[data-theme="light"] .test-error {
  box-shadow: 0 6px 18px rgba(15,23,42,.06);
}



/* 3.3.7: keep the light public theme on the same blue/cyan visual language. */
[data-theme="light"] .btn.primary,
[data-theme="light"] .btn-primary,
[data-theme="light"] button.btn.ok,
[data-theme="light"] .btn.save {
  background: var(--k-accent) !important;
  border-color: var(--k-accent) !important;
  color: var(--k-text-inv) !important;
}
[data-theme="light"] .btn.primary:hover,
[data-theme="light"] .btn-primary:hover,
[data-theme="light"] button.btn.ok:hover,
[data-theme="light"] .btn.save:hover {
  background: var(--k-accent2) !important;
  border-color: var(--k-accent2) !important;
}
[data-theme="light"] input[type="checkbox"],
[data-theme="light"] input[type="radio"] { accent-color: var(--k-accent); }

/* 3.3.9 / 3.6.12 queue panel — centered, live countdown */
#queue-panel{margin:0 auto;width:100%;max-width:28rem}
#queue-panel>div{padding:20px 18px 16px;border-radius:18px;text-align:center}
#queue-panel .queue-state-head{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center}
#queue-panel .queue-state-head>div{text-align:center}
#queue-panel .queue-state-title{font-size:16px;font-weight:700;color:var(--k-text);line-height:1.3}
#queue-panel .queue-state-sub{font-size:13px;color:var(--k-muted-readable,var(--k-muted));margin-top:4px;line-height:1.4;max-width:22rem}
#queue-panel .queue-metrics{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}
#queue-panel .queue-metric{padding:12px 12px;border:1px solid var(--k-border);border-radius:12px;background:color-mix(in srgb,var(--k-bg) 72%,var(--k-card) 28%);text-align:center}
#queue-panel .queue-metric-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--k-muted-readable,var(--k-muted))}
#queue-panel .queue-metric-value{font-size:22px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:var(--k-accent);margin-top:4px}
#queue-panel .queue-load-line{margin-top:12px;font-size:12px;color:var(--k-muted-readable,var(--k-muted));text-align:center}
#queue-panel .queue-cancel-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  margin-top:16px;min-width:132px;padding:9px 18px;
  border:1px solid var(--k-border);border-radius:999px;
  background:color-mix(in srgb,var(--k-bg) 55%,var(--k-card));
  color:var(--k-muted-readable,var(--k-muted));font-size:13px;font-weight:600;line-height:1.2;
  cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease,transform .12s ease;
}
#queue-panel .queue-cancel-btn:hover{
  border-color:color-mix(in srgb,var(--k-accent) 45%,var(--k-border));
  color:var(--k-accent);background:color-mix(in srgb,var(--k-accent) 8%,var(--k-card));
  transform:translateY(-1px);
}
#queue-panel .queue-cancel-btn:active{transform:translateY(0)}
@media(max-width:480px){#queue-panel .queue-metrics{grid-template-columns:1fr}}

/* Cookie consent — domain=.k-serv.link so choice applies on all VPS subdomains */
.cookie-banner{
  position:fixed;left:16px;right:16px;bottom:16px;z-index:2147483646;
  max-width:520px;margin:0 auto;padding:16px 18px;border-radius:16px;
  background:var(--k-card);border:1px solid var(--k-border);
  box-shadow:0 16px 48px rgba(0,0,0,.22);color:var(--k-text);
}
.cookie-banner.hidden{display:none!important}
.cookie-banner-title{font-size:15px;font-weight:700;margin:0 0 6px;color:var(--k-text)}
.cookie-banner-text{font-size:13px;line-height:1.45;color:var(--k-muted-readable,var(--k-muted));margin:0 0 14px}
.cookie-banner-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.cookie-banner-btn{
  appearance:none;border-radius:999px;padding:8px 16px;font-size:13px;font-weight:600;
  cursor:pointer;border:1px solid var(--k-border);background:transparent;color:var(--k-text);
  transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.cookie-banner-btn:hover{border-color:var(--k-accent);color:var(--k-accent)}
.cookie-banner-btn.primary{background:var(--k-accent);border-color:var(--k-accent);color:#fff}
.cookie-banner-btn.primary:hover{background:var(--k-accent2,var(--k-accent));border-color:var(--k-accent2,var(--k-accent));color:#fff}
@media(max-width:480px){
  .cookie-banner{left:10px;right:10px;bottom:10px;padding:14px}
  .cookie-banner-actions{flex-direction:column}
  .cookie-banner-btn{width:100%}
}

/* 3.3.12 — unified measurement status and ready gauge */
.gauge-ready-value{
  font-size:2.2rem!important;
  line-height:1!important;
  letter-spacing:-.03em;
  font-weight:700;
  color:var(--k-text)!important;
}
.gauge-ready-unit{
  font-size:.78rem!important;
  line-height:1.3;
  color:var(--k-muted-readable,var(--k-muted))!important;
  margin-top:7px!important;
}
.test-status-area{width:100%;max-width:28rem;margin:0 0 1rem}
.test-status-area>.hidden{display:none!important}
.test-status-area #queue-panel,
.test-status-area #test-error{max-width:none;width:100%;margin:0}
.test-status-area #queue-panel>div{border-radius:16px;background:var(--k-card);border:1px solid var(--k-border)}
.test-status-area #test-error{padding:13px 14px;border-radius:16px;background:var(--k-card);box-sizing:border-box}
.test-status-area #test-error.is-warn{border-color:color-mix(in srgb,var(--k-accent) 42%,var(--k-border));background:color-mix(in srgb,var(--k-accent) 8%,var(--k-card))}
.test-status-area #test-error.is-error{border-color:color-mix(in srgb,var(--k-accent2,var(--k-accent)) 50%,var(--k-border));background:color-mix(in srgb,var(--k-accent2,var(--k-accent)) 11%,var(--k-card))}
.test-status-area #test-error.is-info{border-color:color-mix(in srgb,var(--k-accent) 40%,var(--k-border));background:color-mix(in srgb,var(--k-accent) 9%,var(--k-card))}
.test-status-area .queue-state-head{text-align:center}
@media(max-width:480px){.test-status-area{max-width:100%}}

/* 3.4.1 measurement gauge / stable public layout */
.gauge-core{padding:10px 18px 14px;box-sizing:border-box;}
.gauge-live-badge{display:none;align-items:center;gap:6px;font-size:9px;text-transform:uppercase;letter-spacing:.1em;color:var(--k-muted-readable,var(--k-muted));margin-bottom:7px;}
.gauge-live-dot{width:7px;height:7px;border-radius:50%;background:var(--k-accent);box-shadow:0 0 10px color-mix(in srgb,var(--k-accent) 60%,transparent);}
.gauge-core:has(.test-step.active) .gauge-live-badge{display:flex;}
.gauge-phase-label{font-size:11px;line-height:1.2;color:var(--k-accent);margin-top:7px;min-height:13px;text-transform:uppercase;letter-spacing:.08em;}
.gauge-progress-copy{font-size:10px;color:var(--k-muted-readable,var(--k-muted));font-variant-numeric:tabular-nums;margin-top:3px;min-height:13px;}
.gauge-core:has(.test-step.active) #gauge-value{font-size:3.15rem;line-height:.95;}
.gauge-core:has(.test-step.active) #gauge-unit{font-size:.78rem;}
.gauge-core:has(.test-step.active) .test-steps{margin-top:9px;}
@media(max-width:640px){.gauge-core:has(.test-step.active) #gauge-value{font-size:2.65rem;}  }

/* 3.4.1 public header/mobile polish */
@media(max-width:560px){.gauge-core{padding-left:10px;padding-right:10px}.gauge-progress-copy{font-size:11px;font-weight:650}}
.gauge-core:has(.test-step.active){background:radial-gradient(circle at center, color-mix(in srgb,var(--k-card) 96%,transparent), transparent 72%);border-radius:999px}

.brand-k{object-fit:contain;display:block;flex:0 0 auto}

/* 3.4.3 final visual normalization */
.brand{align-items:center}
.brand-k{max-width:none;max-height:none;object-fit:contain;display:block;flex:0 0 auto}
.brand-serv{font-size:1.35rem!important;font-weight:700!important;line-height:1!important;letter-spacing:.12em!important;display:inline-block}
.brand-sub{font-size:12px;line-height:1.15}
select{padding-right:40px!important;background-position:right 12px center!important}

/* 3.4.7 — base public palette */
:root,[data-theme="dark"]{
  color-scheme:dark;
  --k-bg:#0b1220;--k-card:#111b2e;--k-border:#2a3b55;--k-accent:#38bdf8;--k-accent-2:#60a5fa;--k-muted:#91a4bb;--k-text:#e6eef8;--k-text-inv:#07111f;
  --k-glow:rgba(56,189,248,.09);--k-glow2:rgba(96,165,250,.06);--k-map-fill:#1b2b44;--k-gauge-track:#263750;
}
[data-theme="light"]{
  color-scheme:light;
  --k-bg:#f2f6fb;--k-card:#ffffff;--k-border:#d5e0ec;--k-accent:#2f80ed;--k-accent-2:#38bdf8;--k-muted:#5f748a;--k-text:#17324a;--k-text-inv:#ffffff;
  --k-glow:rgba(47,128,237,.07);--k-glow2:rgba(56,189,248,.05);--k-map-fill:#d9e6f2;--k-gauge-track:#dce7f1;
}
body{background-color:var(--k-bg)!important;color:var(--k-text)!important}
[data-theme="light"] .bg-kbg{background-color:var(--k-bg)!important}
[data-theme="light"] .border-kborder{border-color:var(--k-border)!important}
[data-theme="light"] .text-kmuted{color:var(--k-muted-readable,var(--k-muted))!important}
[data-theme="light"] .text-ktext{color:var(--k-text)!important}
[data-theme="dark"] .bg-kbg{background-color:var(--k-bg)!important}
[data-theme="dark"] .border-kborder{border-color:var(--k-border)!important}
[data-theme="dark"] .text-kmuted{color:var(--k-muted-readable,var(--k-muted))!important}
[data-theme="dark"] .text-ktext{color:var(--k-text)!important}


/* 3.5.4 measurement polish */
#gauge-progress { transition: stroke-dashoffset .42s cubic-bezier(.22,1,.36,1), opacity .25s ease; }
#gauge-value { transition: opacity .18s ease, transform .25s cubic-bezier(.22,1,.36,1); }
#gauge-phase { transition: opacity .28s ease, transform .28s cubic-bezier(.22,1,.36,1); }
.test-steps { transition: opacity .3s ease, transform .35s cubic-bezier(.22,1,.36,1); }
.test-steps-track { transition: background-color .25s ease; }
#progress-wrap { display:none !important; }

/* 3.5.4 theme binding for elements whose original Tailwind/SVG colors were static */
#gaugeGradient stop:first-child { stop-color: var(--k-accent); }
#gaugeGradient stop:last-child { stop-color: var(--k-accent2); }
#start-btn { background-image: linear-gradient(135deg, var(--k-accent), var(--k-accent2)) !important; color: var(--k-text-inv) !important; }
#start-btn:hover { filter: brightness(1.04); }

/* 3.5.4 — smooth test flow and completion state */
.gauge-progress-circle{transition:stroke-dashoffset .65s cubic-bezier(.22,1,.36,1),opacity .35s ease}
.gauge-core{transition:transform .5s cubic-bezier(.22,1,.36,1),background .5s ease,box-shadow .5s ease}
.gauge-core.is-complete{transform:scale(1.015);background:radial-gradient(circle at center,color-mix(in srgb,var(--k-accent) 7%,var(--k-card)),transparent 70%);border-radius:999px;box-shadow:0 0 38px color-mix(in srgb,var(--k-accent) 10%,transparent)}
.gauge-complete-value{font-size:3.2rem!important;letter-spacing:-.04em}
.gauge-core.is-complete #gauge-unit{font-size:.8rem;color:var(--k-accent);font-weight:700}
.gauge-core.is-complete #gauge-phase{margin-top:9px;color:var(--k-text);font-weight:650;text-transform:none;letter-spacing:0}
.gauge-core.is-complete .gauge-live-badge{display:none}
@media(max-width:640px){.gauge-complete-value{font-size:2.7rem!important}}
.gauge-phase-label{will-change:opacity,transform}
#results{margin-top:2rem!important}



/* 3.5.15 — canonical public header/footer and branding geometry */
.site-header{
  width:100%!important;box-sizing:border-box!important;display:block!important;position:relative!important;z-index:50!important;
  border-bottom:1px solid var(--k-border)!important;
  background:color-mix(in srgb,var(--k-bg) 94%,transparent)!important;
  box-shadow:0 1px 0 color-mix(in srgb,var(--k-border) 38%,transparent)!important;
}
.site-header .site-header-inner{
  width:min(1152px,100%)!important;
  height:72px!important;
  min-height:72px!important;
  margin:0 auto!important;padding:0 16px!important;box-sizing:border-box!important;
  display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;
  gap:16px!important;min-width:0!important;
}
.site-header .site-brand{display:flex!important;align-items:center!important;justify-content:flex-start!important;flex:1 1 auto!important;min-width:0!important;width:auto!important;margin:0!important;padding:0!important;gap:12px!important;color:inherit!important;text-decoration:none!important}
.site-header .site-brand .brand-wordmark{display:flex!important;align-items:baseline!important;gap:8px!important;min-width:0!important;width:auto!important;margin:0!important;padding:0!important;white-space:nowrap!important}
.site-header .site-brand .brand-k{display:block!important;flex:0 0 auto!important;width:var(--brand-logo-size,38px)!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:none!important;object-fit:contain!important;margin:0!important;padding:0!important}
.site-header .site-brand .brand-serv{display:inline-block!important;flex:0 0 auto!important;width:auto!important;margin:0!important;padding:0!important;font-family:var(--brand-primary-family,Inter),system-ui,sans-serif!important;font-size:var(--brand-primary-size,22px)!important;font-weight:var(--brand-primary-weight,700)!important;letter-spacing:var(--brand-primary-spacing,.12em)!important;line-height:1!important;text-transform:none!important;white-space:nowrap!important}
.site-header .site-brand .brand-sub{display:inline-block!important;flex:0 1 auto!important;width:auto!important;margin:0!important;padding:0!important;font-family:var(--brand-sub-family,Inter),system-ui,sans-serif!important;font-size:var(--brand-sub-size,12px)!important;font-weight:var(--brand-sub-weight,500)!important;letter-spacing:var(--brand-sub-spacing,.04em)!important;line-height:1.15!important;text-transform:none!important;white-space:nowrap!important}
.site-header .site-header-actions{display:flex!important;align-items:center!important;justify-content:flex-end!important;flex:0 0 auto!important;width:auto!important;min-width:max-content!important;margin:0 0 0 auto!important;padding:0!important;gap:8px!important;flex-wrap:nowrap!important;align-self:center!important}
.site-header .site-header-actions>*{flex:0 0 auto!important;width:auto!important;min-width:0!important;margin:0!important;white-space:nowrap!important;box-sizing:border-box!important}
.site-header .site-header-actions button,.site-header .site-header-actions a{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:36px!important;height:36px!important;padding:0 11px!important;border:1px solid var(--k-border)!important;border-radius:10px!important;background:var(--k-card)!important;color:var(--k-text)!important;text-decoration:none!important}
.site-header .site-header-actions button:hover,.site-header .site-header-actions a:hover{border-color:var(--k-accent)!important;color:var(--k-accent)!important}
.site-header .site-header-actions a.hidden{display:none!important}
.site-footer{padding:0!important;width:100%!important;border-top:1px solid var(--k-border)!important;background:color-mix(in srgb,var(--k-bg) 94%,transparent)!important;box-shadow:0 -1px 0 color-mix(in srgb,var(--k-border) 38%,transparent)!important;color:var(--k-muted-readable,var(--k-muted))!important}
.site-footer-inner{width:min(1152px,100%)!important;margin:0 auto!important;padding:18px 16px 20px!important;box-sizing:border-box!important;text-align:center!important;color:inherit!important;font-size:12px!important}
.public-page-container{width:min(1152px,100%)!important;box-sizing:border-box!important}
@media(max-width:640px){
  .site-header .site-header-inner{height:72px!important;min-height:72px!important;padding:0 12px!important;gap:8px!important}
  .site-header .site-brand{gap:9px!important}
  .site-header .site-brand .brand-sub{display:none!important}
  .site-header .site-header-actions{gap:5px!important}
  .site-header .site-header-actions>*{padding-left:8px!important;padding-right:8px!important}
  .site-footer-inner{padding-left:12px!important;padding-right:12px!important}
}


/* 3.5.15 — compact measurement history spacing */
#view-test>.flex{gap:0!important}
#view-test>.flex>.flex.items-center.gap-3{margin-bottom:18px!important}
#client-ip-box{margin-bottom:18px!important}
#view-test>.flex>.relative.w-64{margin-bottom:18px!important}
#results{margin-top:20px!important}

#results:not(.show){display:none!important}
#results.show{display:grid!important;opacity:1!important}
/* Completion state uses the same central typography as the initial Ready state. */
.gauge-core.is-complete #gauge-value.gauge-ready-value,
.gauge-complete-value{font-size:2.2rem!important;line-height:1!important;letter-spacing:-.03em!important;font-weight:700!important;color:var(--k-text)!important}
.gauge-core.is-complete #gauge-phase{display:none!important}
/* Warnings stay inside the site's blue/cyan visual language instead of yellow/orange. */
.test-status-area #test-error.is-warn,
.test-error.is-warn{border-color:color-mix(in srgb,var(--k-accent) 42%,var(--k-border))!important;background:color-mix(in srgb,var(--k-accent) 8%,var(--k-card))!important}
.test-error.is-warn .test-error-icon{background:color-mix(in srgb,var(--k-accent) 15%,transparent)!important;color:var(--k-accent)!important}
/* Public footer and header use one exact inner width. */
.site-header .site-header-inner,.site-footer .site-footer-inner{width:min(1152px,100%)!important}


/* 3.5.20 — canonical header geometry, test history spacing and completion lock */
.site-header .site-header-inner{
  height:72px!important;
  min-height:72px!important;
  padding:0 16px!important;
  overflow:visible!important;
}
.site-header .site-brand .brand-k{
  width:var(--brand-logo-size,38px)!important;
  height:var(--brand-logo-size,38px)!important;
  max-width:none!important;
  max-height:none!important;
  object-fit:contain!important;
  flex:0 0 auto!important;
  overflow:visible!important;
  position:relative!important;
  z-index:2!important;
}
.site-header .site-brand .brand-wordmark{
  align-items:center!important;
}
.site-header .site-brand .brand-serv,
.site-header .site-brand .brand-sub{
  display:inline-flex!important;
  align-items:center!important;
  min-height:var(--brand-primary-size,22px)!important;
}
.site-header .site-brand .brand-sub{
  min-height:calc(var(--brand-sub-size,12px) * 1.15)!important;
}
#results:not(.show){display:none!important}
.gauge-core.is-complete #gauge-value.gauge-ready-value,
.gauge-core.is-complete .gauge-complete-value{font-size:2.2rem!important;line-height:1!important;letter-spacing:-.03em!important;font-weight:700!important;color:var(--k-text)!important}
@media(max-width:640px){
  .site-header .site-header-inner{height:72px!important;min-height:72px!important;padding:0 12px!important}
}

/* 3.5.20 — logo-only home link and deterministic header branding geometry */
.site-header .site-brand{display:flex!important;align-items:center!important;justify-content:flex-start!important;flex:1 1 auto!important;min-width:0!important;width:auto!important;color:inherit!important;text-decoration:none!important;gap:12px!important}
.site-header .site-logo-link{display:flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;height:auto!important;margin:0!important;padding:0!important;color:inherit!important;text-decoration:none!important}
.site-header .site-logo-link .brand-k{display:block!important;flex:0 0 auto!important}
.site-header .site-brand .brand-wordmark{flex:0 0 auto!important}
.site-header .site-brand .brand-serv,.site-header .site-brand .brand-sub{display:inline-flex!important;align-items:center!important;white-space:nowrap!important;vertical-align:middle!important}




/* Branding logo sizing: the built-in square mark and uploaded wordmarks use
   different sizing rules. The size control must affect both. */
.site-header .site-logo-link .brand-k.brand-native-logo{
  width:var(--brand-logo-size,38px)!important;
  height:var(--brand-logo-size,38px)!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
}
.site-header .site-logo-link .brand-k.brand-custom-logo{
  width:auto!important;
  height:min(68px,var(--brand-logo-size,38px))!important;
  min-width:0!important;
  min-height:0!important;
  max-width:180px!important;
  max-height:68px!important;
}

/* 3.5.20 — canonical header: logo-only home link, no stretched hit area */
.site-header{position:sticky!important;top:0!important;z-index:50!important}
.site-header .site-header-inner{position:relative!important;display:flex!important;align-items:center!important;justify-content:space-between!important;width:min(1152px,100%)!important;height:72px!important;min-height:72px!important;margin:0 auto!important;padding:0 16px!important;box-sizing:border-box!important;overflow:visible!important;gap:16px!important}
.site-header .site-brand{position:static!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;flex:1 1 auto!important;min-width:0!important;width:auto!important;max-width:none!important;margin:0!important;padding:0!important;gap:12px!important;pointer-events:auto!important}
.site-header .site-logo-link{position:relative!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;height:min(68px,var(--brand-logo-size,38px))!important;min-width:0!important;min-height:0!important;max-width:180px!important;max-height:68px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;overflow:visible!important;text-decoration:none!important;pointer-events:auto!important;z-index:1!important}
.site-header .site-logo-link .brand-k{display:block!important;width:auto!important;height:min(68px,var(--brand-logo-size,38px))!important;min-width:0!important;min-height:0!important;max-width:180px!important;max-height:68px!important;object-fit:contain!important;flex:0 0 auto!important;margin:0!important;padding:0!important;pointer-events:none!important}
.site-header .site-brand .brand-wordmark{display:flex!important;align-items:center!important;justify-content:flex-start!important;flex:0 1 auto!important;min-width:0!important;width:auto!important;margin:0!important;padding:0!important;gap:8px!important;white-space:nowrap!important;pointer-events:auto!important}
.site-header .site-brand .brand-serv,.site-header .site-brand .brand-sub{display:inline-flex!important;align-items:center!important;width:auto!important;min-width:0!important;margin:0!important;padding:0!important;white-space:nowrap!important}
.site-header .site-header-actions{position:relative!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;flex:0 0 auto!important;min-width:max-content!important;width:auto!important;margin:0!important;padding:0!important;gap:8px!important;flex-wrap:nowrap!important;pointer-events:auto!important;z-index:2!important}
.site-header .site-header-actions>*{position:relative!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;min-width:0!important;margin:0!important;white-space:nowrap!important;box-sizing:border-box!important}
.site-header .site-logo-link.hidden{display:none!important}
@media(max-width:640px){.site-header .site-header-inner{height:72px!important;min-height:72px!important;padding:0 12px!important;gap:8px!important}.site-header .site-brand{gap:9px!important}.site-header .site-brand .brand-sub{display:none!important}.site-header .site-header-actions{gap:5px!important}.site-header .site-header-actions>*{padding-left:8px!important;padding-right:8px!important}}



/* 3.5.20: focused location card uses the configured accent directly; no extra dark overlay. */
.loc-card.is-focus{border-color:var(--k-accent)!important;box-shadow:0 8px 24px -8px rgba(var(--k-accent-rgb),0.28)!important;transform:translateY(-2px)!important}

/* 3.5.21 — country highlighting comes only from a location card hover/focus. */
#map-host .map-land{pointer-events:none!important;}
#map-host .map-land.is-location-focus{fill:var(--map-country-active)!important;stroke:var(--map-land-stroke)!important;stroke-width:0.35!important;}


/* 3.5.26 — authoritative public branding sizing. */
.site-header .site-header-inner{
  height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important;
  min-height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important;
  overflow:visible!important;
  box-sizing:border-box!important;
}
.site-header .site-logo-link{height:var(--brand-logo-size,38px)!important;max-width:360px!important;max-height:128px!important;overflow:visible!important}
.site-header .site-logo-link .brand-k{min-width:0!important;min-height:0!important;max-height:128px!important;object-fit:contain!important}
.site-header .site-logo-link .brand-k.brand-native-logo{width:var(--brand-logo-size,38px)!important;height:var(--brand-logo-size,38px)!important;max-width:128px!important;max-height:128px!important}
.site-header .site-logo-link .brand-k.brand-custom-logo{width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:360px!important;max-height:128px!important}
@media(max-width:640px){
  .site-header .site-header-inner{height:max(72px,calc(min(var(--brand-logo-size,38px),64px) + 18px))!important;min-height:max(72px,calc(min(var(--brand-logo-size,38px),64px) + 18px))!important;padding:0 10px!important}
  .site-header .site-logo-link{height:min(var(--brand-logo-size,38px),64px)!important;max-height:64px!important;max-width:240px!important}
  .site-header .site-logo-link .brand-k.brand-native-logo{width:min(var(--brand-logo-size,38px),64px)!important;height:min(var(--brand-logo-size,38px),64px)!important;max-width:64px!important;max-height:64px!important}
  .site-header .site-logo-link .brand-k.brand-custom-logo{height:min(var(--brand-logo-size,38px),64px)!important;max-height:64px!important;max-width:240px!important}
}

/* 3.5.26 final — logo scaling uses intrinsic aspect ratio, not a square box. */
.site-header .site-header-inner{height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important;min-height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important}
.site-header .site-logo-link{width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:160px!important;overflow:visible!important}
.site-header .site-logo-link .brand-k.brand-native-logo,.site-header .site-logo-link .brand-k.brand-custom-logo{width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:160px!important;object-fit:contain!important}
@media(max-width:700px){.site-header .site-header-inner{height:max(72px,calc(min(var(--brand-logo-size,38px),72px) + 16px))!important;min-height:max(72px,calc(min(var(--brand-logo-size,38px),72px) + 16px))!important}.site-header .site-logo-link{height:min(var(--brand-logo-size,38px),72px)!important;max-height:72px!important}.site-header .site-logo-link .brand-k.brand-native-logo,.site-header .site-logo-link .brand-k.brand-custom-logo{height:min(var(--brand-logo-size,38px),72px)!important;max-height:72px!important;max-width:none!important}}



/* 3.5.27 — public branding uses intrinsic aspect ratio at the selected height. */
.site-header .site-header-inner{height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important;min-height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important;overflow:visible!important}
.site-header .site-logo-link{width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:var(--brand-logo-size,38px)!important;overflow:visible!important}
.site-header .site-logo-link .brand-k,
.site-header .site-logo-link .brand-k.brand-native-logo,
.site-header .site-logo-link .brand-k.brand-custom-logo{width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:var(--brand-logo-size,38px)!important;object-fit:contain!important}
@media(max-width:700px){
 .site-header .site-header-inner{height:max(72px,calc(min(var(--brand-logo-size,38px),72px) + 16px))!important;min-height:max(72px,calc(min(var(--brand-logo-size,38px),72px) + 16px))!important}
 .site-header .site-logo-link .brand-k,
 .site-header .site-logo-link .brand-k.brand-native-logo,
 .site-header .site-logo-link .brand-k.brand-custom-logo{height:min(var(--brand-logo-size,38px),72px)!important;max-height:72px!important}
}


/* 3.5.27 — narrow screens: reserve room for header controls before intrinsic width. */
@media(max-width:700px){
  .site-header .site-logo-link{max-width:calc(100vw - 180px)!important}
  .site-header .site-logo-link .brand-k,
  .site-header .site-logo-link .brand-k.brand-native-logo,
  .site-header .site-logo-link .brand-k.brand-custom-logo{max-width:calc(100vw - 180px)!important}
}

/* 3.5.45 — canonical branding/header/gauge rules. Keep this block authoritative. */
.site-header .site-header-inner{width:min(1152px,100%)!important;max-width:1152px!important;margin:0 auto!important;padding:0 16px!important;box-sizing:border-box!important;overflow:visible!important;display:flex!important;align-items:center!important;justify-content:space-between!important;min-width:0!important;height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important;min-height:max(72px,calc(var(--brand-logo-size,38px) + 24px))!important}
.site-header .site-brand{min-width:0!important;flex:1 1 auto!important;display:flex!important;align-items:center!important;gap:12px!important}
.site-header .site-logo-link{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:var(--brand-logo-size,38px)!important;overflow:visible!important}
.site-header .site-logo-link .brand-k{display:block!important;width:auto!important;height:var(--brand-logo-size,38px)!important;max-width:none!important;max-height:var(--brand-logo-size,38px)!important;object-fit:contain!important;flex:0 0 auto!important}
.site-header .site-header-actions{flex:0 0 auto!important;min-width:max-content!important;width:auto!important;margin-left:auto!important;margin-right:0!important;display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important}
.gauge-core.is-complete #gauge-value.gauge-ready-value,.gauge-core.is-complete .gauge-complete-value{font-size:2.2rem!important;line-height:1!important;letter-spacing:-.03em!important;font-weight:700!important;color:var(--k-text)!important}
.gauge-core.is-complete #gauge-unit{display:none!important}
@media(max-width:700px){
 .site-header .site-header-inner{width:100%!important;max-width:none!important;padding:0 10px!important;min-height:max(72px,calc(min(var(--brand-logo-size,38px),72px) + 16px))!important;height:max(72px,calc(min(var(--brand-logo-size,38px),72px) + 16px))!important}
 .site-header .site-logo-link,.site-header .site-logo-link .brand-k{height:min(var(--brand-logo-size,38px),72px)!important;max-height:72px!important;max-width:calc(100vw - 180px)!important}
 .site-header .site-header-actions{gap:5px!important;min-width:0!important}
}


/* 3.5.45 — final responsive normalization. */
/* overflow-x only on html — overflow on body clips position:fixed banners */
html{max-width:100%;overflow-x:hidden}
body{max-width:100%;overflow-x:visible}
.public-page-container{margin-left:auto!important;margin-right:auto!important}
#view-test>.flex{min-width:0!important;width:100%!important}
#view-test .relative.w-64{max-width:min(72vw,18rem)!important;width:min(72vw,18rem)!important}
@media(max-width:640px){
  .public-page-container{padding-left:12px!important;padding-right:12px!important}
  .site-header .site-header-inner{padding-left:10px!important;padding-right:10px!important}
  .site-header .site-brand{gap:7px!important;min-width:0!important}
  .site-header .site-header-actions{gap:4px!important}
  .site-header .site-header-actions>*{min-width:34px!important;padding-left:7px!important;padding-right:7px!important}
  .site-header .site-brand .brand-k{width:min(var(--brand-logo-size,38px),42px)!important;height:min(var(--brand-logo-size,38px),42px)!important}
  #view-landing .landing-layout{display:block!important}
  #view-landing .map-panel{min-height:220px!important}
  #location-cards{grid-template-columns:1fr!important}
  #view-test .flex.items-center.gap-3{max-width:100%;flex-wrap:wrap;justify-content:center;text-align:center}
  #back-link{margin-left:0!important;flex:0 0 auto}
  #client-ip-box{max-width:100%;width:100%;overflow:hidden}
  #results{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  .result-card{min-width:0!important}
  .gauge-core{max-width:290px!important;max-height:290px!important}
}
@media(max-width:380px){
  .site-header .site-header-actions>*{min-width:32px!important;padding-left:6px!important;padding-right:6px!important}
  #results{grid-template-columns:1fr!important}
}

/* 3.5.48 — map/card separation on tablets and phones. */
@media(max-width:1023px){
  #view-landing .landing-layout{display:block!important;width:100%!important;}
  #view-landing .landing-layout > :first-child{display:block!important;width:100%!important;min-width:0!important;height:auto!important;margin:0!important;}
  #view-landing .map-panel{display:block!important;width:100%!important;height:clamp(210px,52vw,280px)!important;min-height:0!important;max-height:280px!important;flex:none!important;position:relative!important;}
  #location-cards{display:grid!important;width:100%!important;min-width:0!important;margin-top:12px!important;position:relative!important;z-index:1!important;}
}
@media(max-width:640px){
  #view-landing .map-panel{height:220px!important;max-height:220px!important;}
  #location-cards{margin-top:12px!important;}
}

/* 3.5.48 — public shell spacing: one owner for the page gutter and vertical rhythm. */
@media(max-width:640px){
  .public-page-container{
    padding:20px 12px 24px!important;
  }
  #view-landing,#view-test{padding-top:0!important;padding-bottom:0!important}
  #view-landing .landing-layout{gap:12px!important}
  #view-landing .map-panel{min-height:210px!important}
  #location-cards{gap:8px!important}
  #view-test>.flex>.flex.items-center.gap-3{margin-bottom:12px!important;gap:8px!important}
  #client-ip-box{margin-bottom:12px!important}
  #view-test>.flex>.relative.w-64{margin-bottom:12px!important}
  .test-status-area{margin-bottom:12px!important}
  #results{margin-top:14px!important;gap:8px!important}
}
@media(max-width:380px){
  .public-page-container{padding:16px 10px 20px!important}
  .gauge-core{max-width:280px!important;max-height:280px!important}
  #results{grid-template-columns:1fr!important}
}

/* 3.5.48 — narrow public header guardrails. */
@media(max-width:420px){
  .site-header .site-header-inner{gap:6px!important;padding-left:8px!important;padding-right:8px!important}
  .site-header .site-brand{gap:6px!important}
  .site-header .site-brand .brand-wordmark{min-width:0!important;flex:1 1 auto!important;overflow:hidden!important}
  .site-header .site-brand .brand-serv{min-width:0!important;max-width:100%!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .site-header .site-header-actions{gap:4px!important}
  .site-header .site-header-actions>*{min-width:32px!important;padding-left:6px!important;padding-right:6px!important}
}

/* 3.5.50 — compact, bilingual measurement results. */
#results.results-grid{max-width:36rem!important;width:100%!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;box-sizing:border-box!important;}
#results .result-card{min-width:0!important;overflow:hidden!important;padding:13px 12px!important;box-sizing:border-box!important;}
#results .result-label{font-size:10px!important;line-height:1.25!important;white-space:normal!important;overflow-wrap:anywhere!important;min-height:2.5em;display:flex;align-items:flex-start;justify-content:center;}
#results .result-card [id^="res-"]{font-size:clamp(1.25rem,4vw,1.65rem)!important;line-height:1.1!important;letter-spacing:-.03em!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;font-variant-numeric:tabular-nums!important;}
#results .result-unit{font-size:10px!important;line-height:1.2!important;margin-top:3px!important;white-space:nowrap!important;}
@media(min-width:641px){#results.results-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important;max-width:36rem!important;}#results .result-card{padding:14px 10px!important;}}
@media(max-width:640px){#results.results-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;max-width:100%!important;gap:8px!important;}#results .result-card{padding:11px 8px!important;border-radius:13px!important;}#results .result-label{font-size:9px!important;letter-spacing:.055em!important;min-height:2.6em;}#results .result-card [id^="res-"]{font-size:clamp(1.18rem,7vw,1.5rem)!important;}#results .result-unit{font-size:9px!important;}}
@media(max-width:350px){#results.results-grid{grid-template-columns:1fr!important;}#results .result-label{min-height:auto;}#results .result-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;text-align:left!important;}#results .result-label{justify-content:flex-start;}#results .result-card [id^="res-"]{text-align:right;}#results .result-unit{margin-top:0;}}


/* Canonical measurement history card. */
.map-hint-mobile{display:none!important;margin:8px 8px 0!important;line-height:1.3!important;text-align:center!important;}

/* 3.5.63 — map hint: desktop inside map, mobile outside map. */
@media(max-width:640px){
  #view-landing .map-hint-label{display:none!important;}
  #view-landing .map-hint-mobile{display:block!important;}
}
@media(min-width:641px){
  #view-landing .map-hint-label{display:inline-block!important;}
  #view-landing .map-hint-mobile{display:none!important;}
}
.site-footer{box-shadow:0 -1px 0 color-mix(in srgb,var(--k-border) 38%,transparent),0 100vh 0 color-mix(in srgb,var(--k-bg) 94%,transparent)!important;}


/* 3.5.65 — Admin control uses the same 36×36 geometry as the theme control. */
.site-header .site-header-actions #admin-link,.site-header .site-header-actions #theme-toggle,.site-header .site-header-actions #lang-toggle{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:36px!important;min-width:36px!important;max-width:36px!important;height:36px!important;min-height:36px!important;max-height:36px!important;padding:0!important;margin:0!important;flex:0 0 36px!important;box-sizing:border-box!important;border:1px solid var(--k-border)!important;border-radius:10px!important;background:var(--k-card)!important;color:var(--k-text)!important;text-decoration:none!important;line-height:1!important;font-size:16px!important}
.site-header .site-header-actions #admin-link:hover,.site-header .site-header-actions #theme-toggle:hover,.site-header .site-header-actions #lang-toggle:hover{border-color:var(--k-accent)!important;color:var(--k-accent)!important}


/* K-SERV privacy page */
.privacy-card{
  width:100%;
  max-width:none;
  margin:0 auto;
  box-sizing:border-box;
  background:var(--k-card)!important;
  color:var(--k-text)!important;
  border:1px solid var(--k-border)!important;
  border-radius:18px;
  padding:clamp(20px,3vw,34px);
  box-shadow:0 8px 30px color-mix(in srgb,var(--k-bg) 78%,transparent);
}
.privacy-card-head{padding-bottom:20px;border-bottom:1px solid var(--k-border)}
.privacy-card h1{margin:0 0 10px;font-size:clamp(1.65rem,3vw,2.25rem);line-height:1.15;letter-spacing:-.02em;color:var(--k-text)}
.privacy-meta{margin:4px 0;color:var(--k-muted-readable,var(--k-muted));font-size:13px;line-height:1.55}
.privacy-body{padding-top:4px;color:var(--k-text);font-size:14px;line-height:1.68}
.privacy-body section{padding-top:18px}
.privacy-body h2{margin:0 0 10px;font-size:1.18rem;line-height:1.3;color:var(--k-text);font-weight:750}
.privacy-body h3{margin:18px 0 8px;font-size:1rem;line-height:1.35;color:var(--k-text);font-weight:700}
.privacy-body p{margin:0 0 10px}
.privacy-body ul,.privacy-body ol{margin:8px 0 12px;padding-left:1.45rem}
.privacy-body li{margin:4px 0}
.privacy-body strong{font-weight:750}
.privacy-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;color:var(--k-text)}
.privacy-table-wrap{width:100%;overflow-x:auto;margin:12px 0 14px;border:1px solid var(--k-border);border-radius:12px}
.privacy-table-wrap table{width:100%;min-width:620px;border-collapse:collapse;background:var(--k-card);color:var(--k-text)}
.privacy-table-wrap th,.privacy-table-wrap td{padding:10px 12px;border-bottom:1px solid var(--k-border);text-align:left;vertical-align:top}
.privacy-table-wrap tr:last-child td{border-bottom:0}
.privacy-table-wrap th{font-size:12px;font-weight:700;color:var(--k-muted-readable,var(--k-muted));background:color-mix(in srgb,var(--k-bg) 45%,var(--k-card));white-space:nowrap}
.privacy-table-wrap td{font-size:13px}
.privacy-body a{color:var(--k-accent);text-decoration:underline;text-underline-offset:2px}
@media(max-width:640px){
  .privacy-card{border-radius:15px;padding:17px 14px}
  .privacy-card-head{padding-bottom:15px}
  .privacy-body{font-size:13px;line-height:1.62}
  .privacy-body h2{font-size:1.08rem}
  .privacy-body h3{font-size:.96rem}
  .privacy-table-wrap{margin-left:-2px;margin-right:-2px;width:calc(100% + 4px)}
}

/* Admin gear: only when server marks is-admin-visible */
#admin-link:not(.is-admin-visible){display:none!important}
#admin-link.is-admin-visible{display:inline-flex!important}

/* 3.6.17: one history layout for desktop and narrow screens. */
#history-box{width:100%;max-width:44rem;margin:12px auto 0;box-sizing:border-box}
#results:not(.show)+#history-box{margin-top:24px}
.history-card{width:100%;box-sizing:border-box;padding:14px;background:var(--k-card);border:1px solid var(--k-border);border-radius:16px;overflow:hidden}
.history-title{margin:0 0 12px;text-align:center;color:var(--k-text);font-size:12px;font-weight:650;line-height:1.3}
.history-list{width:100%;min-width:0;border:1px solid var(--k-border);border-radius:12px;overflow:hidden}
.history-row{display:grid;grid-template-columns:1.1fr 1.25fr 1.1fr repeat(3,1fr);align-items:center;min-width:0;border-bottom:1px solid var(--k-border)}
.history-row:last-child{border-bottom:0}
.history-row>div{min-width:0;padding:9px 5px;text-align:center;overflow:hidden;font-size:12px;line-height:1.3;box-sizing:border-box}
.history-head{background:color-mix(in srgb,var(--k-bg) 28%,transparent)}
.history-head>div{font-size:10px;color:var(--k-muted-readable,var(--k-muted));font-weight:650}
.hist-time{font-size:10px!important;color:var(--k-muted-readable,var(--k-muted));font-variant-numeric:tabular-nums;white-space:nowrap}
.hist-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hist-provider{font-weight:550;color:var(--k-text)}
.hist-city{color:var(--k-muted-readable,var(--k-muted))}
.hist-num{white-space:nowrap;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}
.hist-metric-value{font-size:12px;font-weight:650}
.hist-unit{font-size:9px;color:var(--k-muted-readable,var(--k-muted));margin-left:2px}
.hist-metric-label{display:none}
@media(max-width:760px){
 .history-card{padding:10px}
 .history-head{display:none}
 .history-row{grid-template-columns:repeat(6,minmax(0,1fr));gap:7px 4px;padding:10px 5px}
 .history-row>div{padding:0}
 .hist-time{grid-column:1/-1;grid-row:1}
 .hist-provider{grid-column:1/span 3;grid-row:2}
 .hist-city{grid-column:4/span 3;grid-row:2}
 .hist-download{grid-column:1/span 2;grid-row:3}
 .hist-upload{grid-column:3/span 2;grid-row:3}
 .hist-ping{grid-column:5/span 2;grid-row:3}
 .hist-metric-label{display:block;font-size:9px;color:var(--k-muted-readable,var(--k-muted));margin-bottom:3px;white-space:normal}
}

.gauge-core.is-failed .gauge-live-badge{display:none}
.gauge-core.is-failed #gauge-value{color:var(--k-muted-readable,var(--k-muted))}

/* Label layout is calculated in actual screen pixels, independently of map zoom. */
.map-pin-card{width:max-content;max-width:112px;white-space:normal;overflow-wrap:anywhere;box-sizing:border-box;}
.map-pin-card[hidden],.map-pin-leader[hidden]{display:none!important;}
.map-pin-leader{position:absolute;left:6px;top:6px;height:1px;background:var(--map-label-border);transform-origin:0 50%;pointer-events:none;z-index:-1;}
.map-pin.is-focus .map-pin-card{transform:none;}

/* Fade labels before zoom; solve collisions once at rest, never on every frame. */
.map-pin-card,.map-pin-leader{opacity:1;transition:opacity 120ms ease;}
.map-labels-moving .map-pin-card,.map-labels-moving .map-pin-leader{opacity:0;pointer-events:none;}
@media(prefers-reduced-motion:reduce){.map-pin-card,.map-pin-leader{transition:none;}}

/* Common controls and responsive result additions. */
:root{--control-radius:12px;--control-height:44px;--focus-ring:var(--k-accent,var(--accent,#22d3ee));--content-gap:16px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}
.settings-draft{position:sticky;bottom:12px;z-index:15;padding:12px 16px;border:1px solid var(--accent,#22d3ee);border-radius:12px;background:var(--k-card,var(--card,#0f1629));color:var(--text,#e2e8f0);box-shadow:0 8px 24px #0003;margin:12px 0;overflow-wrap:anywhere}
.settings-draft[hidden]{display:none}
[data-theme="light"] .settings-draft{background:#fff;color:#0f172a}
@media(max-width:640px){.field input,.field select,.field textarea{min-height:44px;max-width:100%}.toolbar{flex-wrap:wrap;gap:10px}.toolbar .btn{min-height:44px}.settings-draft{bottom:6px;font-size:13px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}

.drain-setting{display:flex;align-items:center;gap:12px;min-height:44px;margin-bottom:14px;cursor:pointer}.drain-setting input{min-height:0}

/* Derive secondary text only; leave the administrator's stored palette intact. */
:root{--muted-readable:color-mix(in srgb,var(--muted,#64748b) 72%,var(--text,#e2e8f0));--k-muted-readable:color-mix(in srgb,var(--k-muted,#64748b) 72%,var(--k-text,#e2e8f0))}

[data-theme="light"]{--public-button-bg:color-mix(in srgb,var(--k-accent,#0369a1) 60%,#000);--public-button-hover:color-mix(in srgb,var(--k-accent2,var(--k-accent,#0369a1)) 55%,#000)}
[data-theme="light"] #start-btn{background-image:linear-gradient(135deg,var(--public-button-bg),var(--public-button-hover))!important}
[data-theme="light"] .cookie-banner-btn.primary{background:var(--public-button-bg);border-color:var(--public-button-bg)}
[data-theme="light"] .cookie-banner-btn.primary:hover{background:var(--public-button-hover);border-color:var(--public-button-hover)}
[data-theme="dark"] .cookie-banner-btn.primary{color:var(--k-text-inv,#070b14)}
