Refactor website into data-driven content model

This commit is contained in:
Marc Froehlich
2026-07-06 23:27:06 +02:00
parent a99d611ea8
commit 217c7e8451
49 changed files with 2649 additions and 976 deletions
+310 -49
View File
@@ -1,23 +1,54 @@
:root {
--bg: #0f172a;
--panel: #111827;
--panel2: #1f2937;
--text: #e5e7eb;
--muted: #9ca3af;
--bg: #050816;
--bg2: #0b1224;
--panel: rgba(15, 23, 42, 0.78);
--panel2: rgba(30, 41, 59, 0.72);
--border: rgba(148, 163, 184, 0.22);
--text: #f8fafc;
--muted: #aab6ca;
--soft: #64748b;
--accent: #38bdf8;
--accent2: #a78bfa;
--accent2: #a855f7;
--accent3: #22c55e;
--shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
background: radial-gradient(circle at top left, #1e293b, var(--bg));
background: var(--bg);
color: var(--text);
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
line-height: 1.6;
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
line-height: 1.65;
}
.site-bg {
position: fixed;
inset: 0;
z-index: -1;
background:
radial-gradient(circle at 15% 8%, rgba(168, 85, 247, 0.30), transparent 30%),
radial-gradient(circle at 82% 18%, rgba(56, 189, 248, 0.26), transparent 30%),
radial-gradient(circle at 50% 90%, rgba(34, 197, 94, 0.12), transparent 30%),
linear-gradient(180deg, #050816 0%, #07111f 100%);
}
.site-bg::after {
content: "";
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
background-size: 54px 54px;
mask-image: radial-gradient(circle at center, black, transparent 72%);
}
a {
@@ -25,72 +56,245 @@ a {
text-decoration: none;
}
a:hover {
color: white;
}
.site-header {
position: sticky;
top: 0;
z-index: 10;
display: flex;
justify-content: space-between;
gap: 24px;
align-items: center;
padding: 24px 7vw;
padding: 18px 6vw;
background: rgba(5, 8, 22, 0.76);
backdrop-filter: blur(18px);
border-bottom: 1px solid var(--border);
}
.brand {
font-weight: 800;
font-size: 1.25rem;
display: flex;
gap: 12px;
align-items: center;
color: white;
}
nav {
.brand-mark {
display: grid;
place-items: center;
width: 40px;
height: 40px;
border-radius: 14px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow: 0 0 26px rgba(168, 85, 247, 0.45);
}
.brand strong {
display: block;
font-size: 1.05rem;
letter-spacing: 0.02em;
}
.brand small {
display: block;
color: var(--muted);
font-size: 0.78rem;
margin-top: -4px;
}
.site-nav {
display: flex;
gap: 18px;
align-items: center;
gap: 16px;
flex-wrap: wrap;
}
nav a {
.site-nav a {
color: var(--muted);
font-size: 0.95rem;
}
nav a:hover {
.site-nav a:hover {
color: white;
}
.nav-cta {
padding: 9px 14px;
border-radius: 999px;
color: white !important;
background: linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow: 0 0 22px rgba(56, 189, 248, 0.28);
}
.hero {
padding: 90px 7vw 70px;
max-width: 1100px;
padding: 92px 6vw 62px;
max-width: 1180px;
}
.hero-split {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr);
gap: 42px;
align-items: center;
max-width: 1500px;
}
.hero h1 {
font-size: clamp(2.4rem, 6vw, 5rem);
line-height: 1.02;
margin: 0 0 24px;
margin: 0 0 22px;
font-size: clamp(3rem, 8vw, 6.5rem);
line-height: 0.95;
letter-spacing: -0.07em;
background: linear-gradient(90deg, white, var(--accent), var(--accent2));
-webkit-background-clip: text;
color: transparent;
}
.hero p {
font-size: 1.25rem;
.hero .lead,
.hero > p,
.section-heading p,
.cta-panel p {
color: var(--muted);
max-width: 760px;
font-size: 1.18rem;
max-width: 850px;
}
.badge,
.eyebrow {
display: inline-flex;
width: fit-content;
align-items: center;
gap: 8px;
color: #e9d5ff;
background: rgba(168, 85, 247, 0.13);
border: 1px solid rgba(168, 85, 247, 0.34);
padding: 6px 12px;
border-radius: 999px;
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 0.74rem;
font-weight: 800;
}
.actions {
display: flex;
gap: 16px;
margin-top: 32px;
gap: 14px;
margin-top: 30px;
flex-wrap: wrap;
}
.button {
padding: 13px 20px;
border-radius: 999px;
background: var(--accent);
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 46px;
padding: 12px 18px;
border-radius: 14px;
color: #020617;
font-weight: 700;
background: linear-gradient(135deg, var(--accent), var(--accent2));
font-weight: 800;
box-shadow: 0 16px 44px rgba(56, 189, 248, 0.25);
}
.button.secondary {
background: var(--panel2);
color: white;
background: rgba(30, 41, 59, 0.85);
border: 1px solid var(--border);
box-shadow: none;
}
.button.ghost {
color: white;
background: transparent;
border: 1px solid var(--border);
box-shadow: none;
}
.hero-panel,
.card,
.cta-panel {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 26px;
box-shadow: var(--shadow);
}
.hero-panel {
overflow: hidden;
transform: perspective(1200px) rotateY(-5deg) rotateX(2deg);
}
.terminal-bar {
display: flex;
gap: 8px;
align-items: center;
padding: 14px 16px;
border-bottom: 1px solid var(--border);
background: rgba(2, 6, 23, 0.74);
}
.terminal-bar span {
width: 11px;
height: 11px;
border-radius: 50%;
background: var(--accent2);
}
.terminal-bar span:nth-child(2) {
background: #f59e0b;
}
.terminal-bar span:nth-child(3) {
background: var(--accent3);
}
.terminal-bar strong {
margin-left: 8px;
color: var(--muted);
font-size: 0.85rem;
}
.mock-grid {
display: grid;
gap: 12px;
padding: 18px;
}
.mini-card {
padding: 14px;
border-radius: 16px;
background: rgba(15, 23, 42, 0.88);
border: 1px solid rgba(148, 163, 184, 0.16);
}
.mini-card strong,
.mini-card small {
display: block;
}
.mini-card small {
color: var(--muted);
margin-top: 4px;
}
.section {
padding: 40px 7vw;
padding: 52px 6vw;
}
.section.narrow {
max-width: 1040px;
}
.section-heading {
margin-bottom: 26px;
}
.section h2 {
font-size: clamp(2rem, 4vw, 3.4rem);
line-height: 1.05;
margin: 12px 0 14px;
letter-spacing: -0.04em;
}
.grid {
@@ -100,21 +304,74 @@ nav a:hover {
}
.card {
background: rgba(17, 24, 39, 0.82);
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 22px;
padding: 24px;
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
}
.card h3 {
.card:hover {
transform: translateY(-4px);
border-color: rgba(56, 189, 248, 0.45);
background: rgba(15, 23, 42, 0.92);
}
.card h3,
.card h2 {
margin-top: 0;
}
.site-footer {
padding: 40px 7vw;
.card p {
color: var(--muted);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 14px;
}
.feature-icon.large {
font-size: 4rem;
}
.content-card {
max-width: 980px;
}
.tag-list {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.tag-list span {
padding: 7px 11px;
border-radius: 999px;
color: var(--muted);
background: rgba(15, 23, 42, 0.85);
border: 1px solid var(--border);
}
.download-card {
min-height: 220px;
}
.screenshot-placeholder {
display: grid;
place-items: center;
min-height: 180px;
margin-bottom: 16px;
border-radius: 18px;
background:
linear-gradient(135deg, rgba(56, 189, 248, 0.20), rgba(168, 85, 247, 0.20)),
rgba(2, 6, 23, 0.7);
border: 1px solid var(--border);
color: white;
font-weight: 800;
}
.cta-panel {
padding: clamp(28px, 5vw, 60px);
}
.manual-content {
max-width: 980px;
}
@@ -149,19 +406,23 @@ nav a:hover {
text-align: left;
}
.eyebrow {
color: var(--accent2);
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 0.78rem;
font-weight: 800;
.site-footer {
padding: 42px 6vw;
color: var(--muted);
border-top: 1px solid var(--border);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 14px;
@media (max-width: 900px) {
.hero-split {
grid-template-columns: 1fr;
}
.feature-icon.large {
font-size: 3.5rem;
.hero-panel {
transform: none;
}
.site-header {
align-items: flex-start;
flex-direction: column;
}
}
+78 -13
View File
@@ -5,7 +5,6 @@
<title>Download KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Download KST4Contest releases for Windows, Linux and macOS.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/download/">
<meta property="og:type" content="website">
@@ -20,38 +19,104 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<h1>Download KST4Contest</h1>
<p>
Official builds are published through GitHub Releases for Windows, Linux
and macOS.
<p class="badge">Download</p>
<h1>Get KST4Contest</h1>
<p class="lead">
Official builds are published through GitHub Releases for Windows, Linux and macOS.
</p>
<div class="actions">
<a class="button" href="https://github.com/praktimarc/kst4contest/releases/latest">Latest Release</a>
<a class="button secondary" href="https://github.com/praktimarc/kst4contest/releases">All Releases</a>
<a class="button" href="https://github.com/praktimarc/kst4contest/releases/latest">Latest release</a>
<a class="button secondary" href="https://github.com/praktimarc/kst4contest/releases">All releases</a>
</div>
</section>
<section class="section">
<div class="grid">
<article class="card download-card">
<div class="feature-icon">🪟</div>
<p class="badge">Recommended</p>
<h3>Windows</h3>
<p>ZIP</p>
<a href="https://github.com/praktimarc/kst4contest/releases/latest">Open download →</a>
</article>
<article class="card download-card">
<div class="feature-icon">🍎</div>
<h3>macOS</h3>
<p>DMG</p>
<a href="https://github.com/praktimarc/kst4contest/releases/latest">Open download →</a>
</article>
<article class="card download-card">
<div class="feature-icon">🐧</div>
<h3>Linux</h3>
<p>AppImage / DEB / RPM / Arch</p>
<a href="https://github.com/praktimarc/kst4contest/releases/latest">Open download →</a>
</article>
<article class="card download-card">
<div class="feature-icon">📦</div>
<h3>Flatpak</h3>
<p>flatpakref</p>
<a href="https://github.com/praktimarc/kst4contest/releases/latest">Open download →</a>
</article>
<article class="card download-card">
<div class="feature-icon">📘</div>
<h3>Manual</h3>
<p>PDF EN/DE</p>
<a href="https://github.com/praktimarc/kst4contest/releases/latest">Open download →</a>
</article>
</div>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>KST4Contest FAQ</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Frequently asked questions about KST4Contest, ON4KST contest operation, AirScout integration and VHF/UHF/SHF contest workflow.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/faq/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -109,7 +127,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+62 -14
View File
@@ -5,7 +5,6 @@
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/airscout/">
<meta property="og:type" content="website">
@@ -20,30 +19,49 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">Aircraft Scatter</p>
<p class="badge">Aircraft Scatter · since 1.26</p>
<h1>AirScout Integration</h1>
<p>Use airplane scatter awareness directly inside your ON4KST contest workflow.</p>
<p class="lead">Use aircraft scatter awareness directly inside your ON4KST contest workflow.</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">✈️</div>
<h2>Why it matters</h2>
@@ -51,11 +69,28 @@
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>AirScout</span>
<span>airplane scatter</span>
<span>aircraft scatter</span>
<span>VHF contest</span>
</div>
<h2>Related features</h2>
<div class="actions">
@@ -77,6 +112,10 @@
<a class="button secondary" href="/features/priority-score/">Priority Score System</a>
@@ -94,6 +133,10 @@
@@ -107,14 +150,19 @@
</div>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+56 -14
View File
@@ -5,7 +5,6 @@
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/dual-chat/">
<meta property="og:type" content="website">
@@ -20,30 +19,49 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">ON4KST Chat</p>
<p class="badge">ON4KST Chat · since 1.26</p>
<h1>Dual Chat Categories</h1>
<p>Operate in two ON4KST categories at once, for example VHF/UHF and microwave.</p>
<p class="lead">Operate in two ON4KST categories at once, for example VHF/UHF and microwave.</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">💬</div>
<h2>Why it matters</h2>
@@ -51,11 +69,26 @@
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>ON4KST</span>
<span>dual chat</span>
<span>microwave contest</span>
</div>
<h2>Related features</h2>
<div class="actions">
@@ -80,6 +113,10 @@
@@ -91,14 +128,19 @@
</div>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -0,0 +1,146 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/dx-cluster/">
<meta property="og:type" content="website">
<meta property="og:title" content="{{ feature.title }} | KST4Contest">
<meta property="og:description" content="{{ feature.summary }}">
<meta property="og:url" content="https://kst4contest.hamradioonline.de/features/dx-cluster/">
<meta property="og:site_name" content="KST4Contest">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ feature.title }} | KST4Contest">
<meta name="twitter:description" content="{{ feature.summary }}">
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="badge">Radio Workflow · since 1.23</p>
<h1>DXCluster Server</h1>
<p class="lead">Use DXCluster information as part of the wider contest operating workflow.</p>
</section>
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">📡</div>
<h2>Why it matters</h2>
<p>KST4Contest includes DXCluster functionality to support situational awareness during contest operation.</p>
<h2>Built for contest operation</h2>
<p>
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>DXCluster</span>
<span>ham radio</span>
<span>contest</span>
</div>
<h2>Related features</h2>
<div class="actions">
<a class="button secondary" href="/features/log-sync/">Log Synchronization</a>
<a class="button secondary" href="/features/priority-score/">Priority Score System</a>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+52 -16
View File
@@ -5,7 +5,6 @@
<title>KST4Contest Features</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Contest-optimized ON4KST features for VHF, UHF and SHF operation.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/">
<meta property="og:type" content="website">
@@ -20,25 +19,45 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<h1>Features built for serious VHF/UHF/SHF contest operation.</h1>
<p>
<p class="badge">Features</p>
<h1>Contest tools, not just chat windows.</h1>
<p class="lead">
KST4Contest combines ON4KST chat, candidate scoring, AirScout workflow,
sked handling, log synchronization and operator decision support.
</p>
@@ -47,7 +66,7 @@
<section class="section">
<div class="grid">
<article class="card">
<article class="card feature-card">
<div class="feature-icon">🎯</div>
<p class="eyebrow">Contest Workflow</p>
<h3><a href="/features/priority-score/">Priority Score System</a></h3>
@@ -55,15 +74,15 @@
<a href="/features/priority-score/">Learn more →</a>
</article>
<article class="card">
<article class="card feature-card">
<div class="feature-icon">✈️</div>
<p class="eyebrow">Aircraft Scatter</p>
<h3><a href="/features/airscout/">AirScout Integration</a></h3>
<p>Use airplane scatter awareness directly inside your ON4KST contest workflow.</p>
<p>Use aircraft scatter awareness directly inside your ON4KST contest workflow.</p>
<a href="/features/airscout/">Learn more →</a>
</article>
<article class="card">
<article class="card feature-card">
<div class="feature-icon">⏱️</div>
<p class="eyebrow">Contest Awareness</p>
<h3><a href="/features/timeline/">Timeline View</a></h3>
@@ -71,7 +90,7 @@
<a href="/features/timeline/">Learn more →</a>
</article>
<article class="card">
<article class="card feature-card">
<div class="feature-icon">🔔</div>
<p class="eyebrow">Sked Management</p>
<h3><a href="/features/sked-reminder/">Sked Reminder</a></h3>
@@ -79,7 +98,7 @@
<a href="/features/sked-reminder/">Learn more →</a>
</article>
<article class="card">
<article class="card feature-card">
<div class="feature-icon">🔄</div>
<p class="eyebrow">Logger Integration</p>
<h3><a href="/features/log-sync/">Log Synchronization</a></h3>
@@ -87,7 +106,7 @@
<a href="/features/log-sync/">Learn more →</a>
</article>
<article class="card">
<article class="card feature-card">
<div class="feature-icon">💬</div>
<p class="eyebrow">ON4KST Chat</p>
<h3><a href="/features/dual-chat/">Dual Chat Categories</a></h3>
@@ -95,12 +114,29 @@
<a href="/features/dual-chat/">Learn more →</a>
</article>
<article class="card feature-card">
<div class="feature-icon">📡</div>
<p class="eyebrow">Radio Workflow</p>
<h3><a href="/features/dx-cluster/">DXCluster Server</a></h3>
<p>Use DXCluster information as part of the wider contest operating workflow.</p>
<a href="/features/dx-cluster/">Learn more →</a>
</article>
<article class="card feature-card">
<div class="feature-icon"></div>
<p class="eyebrow">Operator Speed</p>
<h3><a href="/features/macros/">Macros and Variables</a></h3>
<p>Send recurring contest messages faster with configurable macros and variables.</p>
<a href="/features/macros/">Learn more →</a>
</article>
</div>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+72 -14
View File
@@ -5,7 +5,6 @@
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/log-sync/">
<meta property="og:type" content="website">
@@ -20,30 +19,49 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">Logger Integration</p>
<p class="badge">Logger Integration · since 1.31</p>
<h1>Log Synchronization</h1>
<p>Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.</p>
<p class="lead">Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">🔄</div>
<h2>Why it matters</h2>
@@ -51,11 +69,26 @@
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>Win-Test</span>
<span>UCXLog</span>
<span>contest logger</span>
</div>
<h2>Related features</h2>
<div class="actions">
@@ -75,14 +108,39 @@
</div>
<a class="button secondary" href="/features/dual-chat/">Dual Chat Categories</a>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+146
View File
@@ -0,0 +1,146 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/macros/">
<meta property="og:type" content="website">
<meta property="og:title" content="{{ feature.title }} | KST4Contest">
<meta property="og:description" content="{{ feature.summary }}">
<meta property="og:url" content="https://kst4contest.hamradioonline.de/features/macros/">
<meta property="og:site_name" content="KST4Contest">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ feature.title }} | KST4Contest">
<meta name="twitter:description" content="{{ feature.summary }}">
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="badge">Operator Speed · since 1.0</p>
<h1>Macros and Variables</h1>
<p class="lead">Send recurring contest messages faster with configurable macros and variables.</p>
</section>
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large"></div>
<h2>Why it matters</h2>
<p>Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions.</p>
<h2>Built for contest operation</h2>
<p>
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>macros</span>
<span>ON4KST</span>
<span>operator workflow</span>
</div>
<h2>Related features</h2>
<div class="actions">
<a class="button secondary" href="/features/sked-reminder/">Sked Reminder</a>
<a class="button secondary" href="/features/dual-chat/">Dual Chat Categories</a>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/priority-score/">
<meta property="og:type" content="website">
@@ -20,42 +19,82 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">Contest Workflow</p>
<p class="badge">Contest Workflow · since 1.40</p>
<h1>Priority Score System</h1>
<p>Find the most promising stations faster using contest-aware candidate scoring.</p>
<p class="lead">Find the most promising stations faster using contest-aware candidate scoring.</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">🎯</div>
<h2>Why it matters</h2>
<p>KST4Contest ranks stations by contest-relevant signals such as activity, direction, sked context, bands, frequencies and operator workflow.</p>
<p>KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals.</p>
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>ON4KST</span>
<span>VHF</span>
<span>UHF</span>
<span>SHF</span>
<span>contest</span>
<span>priority candidates</span>
</div>
<h2>Related features</h2>
<div class="actions">
@@ -63,6 +102,26 @@
<a class="button secondary" href="/features/timeline/">Timeline View</a>
<a class="button secondary" href="/features/airscout/">AirScout Integration</a>
@@ -80,6 +139,10 @@
@@ -95,26 +158,15 @@
<a class="button secondary" href="/features/timeline/">Timeline View</a>
</div>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+76 -14
View File
@@ -5,7 +5,6 @@
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/sked-reminder/">
<meta property="og:type" content="website">
@@ -20,30 +19,49 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">Sked Management</p>
<p class="badge">Sked Management · since 1.40</p>
<h1>Sked Reminder</h1>
<p>Keep scheduled contacts visible and avoid missing time-critical skeds.</p>
<p class="lead">Keep scheduled contacts visible and avoid missing time-critical skeds.</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">🔔</div>
<h2>Why it matters</h2>
@@ -51,11 +69,26 @@
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>sked</span>
<span>ON4KST</span>
<span>contest reminder</span>
</div>
<h2>Related features</h2>
<div class="actions">
@@ -78,6 +111,10 @@
<a class="button secondary" href="/features/airscout/">AirScout Integration</a>
@@ -91,14 +128,39 @@
</div>
<a class="button secondary" href="/features/timeline/">Timeline View</a>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+56 -14
View File
@@ -5,7 +5,6 @@
<title>{{ feature.title }} | KST4Contest</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ feature.summary }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/features/timeline/">
<meta property="og:type" content="website">
@@ -20,30 +19,49 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">Contest Awareness</p>
<p class="badge">Contest Awareness · since 1.40</p>
<h1>Timeline View</h1>
<p>See upcoming AP windows and candidate timing in a compact contest timeline.</p>
<p class="lead">See upcoming AP windows and candidate timing in a compact contest timeline.</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">⏱️</div>
<h2>Why it matters</h2>
@@ -51,11 +69,26 @@
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
<h2>Keywords</h2>
<div class="tag-list">
<span>timeline</span>
<span>AP windows</span>
<span>airplane scatter</span>
</div>
<h2>Related features</h2>
<div class="actions">
@@ -77,6 +110,10 @@
<a class="button secondary" href="/features/priority-score/">Priority Score System</a>
@@ -91,14 +128,19 @@
</div>
</div>
</article>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+109 -233
View File
@@ -5,7 +5,6 @@
<title>KST4Contest Contest-Optimized ON4KST Chat Client</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest is a modern ON4KST chat client built for VHF, UHF and SHF contest operation.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/">
<meta property="og:type" content="website">
@@ -20,284 +19,160 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<p class="eyebrow">The contest-optimized ON4KST client</p>
<section class="hero hero-split">
<div>
<p class="badge">The contest-optimized ON4KST client</p>
<h1>KST4Contest</h1>
<p>
Work smarter. Make more QSOs.
Built for serious VHF, UHF and SHF contest operators.
<p class="lead">
Work smarter. Make more QSOs. KST4Contest brings priority candidates,
AirScout workflow, sked reminders, dual chat categories and log synchronization
into one contest-focused ON4KST client.
</p>
<div class="actions">
<a class="button"
href="https://github.com/praktimarc/kst4contest/releases/latest">
Download latest release
</a>
<a class="button secondary"
href="https://github.com/praktimarc/kst4contest">
GitHub
</a>
<a class="button secondary"
href="/manual/">
Documentation
</a>
<a class="button" href="https://github.com/praktimarc/kst4contest/releases/latest">Download latest release</a>
<a class="button secondary" href="https://github.com/praktimarc/kst4contest">View on GitHub</a>
<a class="button ghost" href="/manual/">Read manual</a>
</div>
</div>
<div class="hero-panel">
<div class="terminal-bar">
<span></span><span></span><span></span>
<strong>KST4Contest workflow</strong>
</div>
<div class="mock-grid">
</div>
</div>
</section>
<section class="section">
<p class="eyebrow">
Powerful Features
</p>
<h2>
Everything you need for contest success
</h2>
<div class="section-heading">
<p class="eyebrow">Powerful features</p>
<h2>Everything you need for contest success</h2>
<p>Every feature is designed to reduce operator workload and improve decision speed during real contest operation.</p>
</div>
<div class="grid">
<article class="card">
<div class="feature-icon">
🎯
</div>
<p class="eyebrow">
Contest Workflow
</p>
<h3>
<a href="/features/priority-score/">
Priority Score System
</a>
</h3>
<p>
Find the most promising stations faster using contest-aware candidate scoring.
</p>
<a href="/features/priority-score/">
Learn more →
</a>
<article class="card feature-card">
<div class="feature-icon">🎯</div>
<p class="eyebrow">Contest Workflow</p>
<h3><a href="/features/priority-score/">Priority Score System</a></h3>
<p>Find the most promising stations faster using contest-aware candidate scoring.</p>
<a href="/features/priority-score/">Learn more →</a>
</article>
<article class="card">
<div class="feature-icon">
✈️
</div>
<p class="eyebrow">
Aircraft Scatter
</p>
<h3>
<a href="/features/airscout/">
AirScout Integration
</a>
</h3>
<p>
Use airplane scatter awareness directly inside your ON4KST contest workflow.
</p>
<a href="/features/airscout/">
Learn more →
</a>
<article class="card feature-card">
<div class="feature-icon">✈️</div>
<p class="eyebrow">Aircraft Scatter</p>
<h3><a href="/features/airscout/">AirScout Integration</a></h3>
<p>Use aircraft scatter awareness directly inside your ON4KST contest workflow.</p>
<a href="/features/airscout/">Learn more →</a>
</article>
<article class="card">
<div class="feature-icon">
⏱️
</div>
<p class="eyebrow">
Contest Awareness
</p>
<h3>
<a href="/features/timeline/">
Timeline View
</a>
</h3>
<p>
See upcoming AP windows and candidate timing in a compact contest timeline.
</p>
<a href="/features/timeline/">
Learn more →
</a>
<article class="card feature-card">
<div class="feature-icon">⏱️</div>
<p class="eyebrow">Contest Awareness</p>
<h3><a href="/features/timeline/">Timeline View</a></h3>
<p>See upcoming AP windows and candidate timing in a compact contest timeline.</p>
<a href="/features/timeline/">Learn more →</a>
</article>
<article class="card">
<div class="feature-icon">
🔔
</div>
<p class="eyebrow">
Sked Management
</p>
<h3>
<a href="/features/sked-reminder/">
Sked Reminder
</a>
</h3>
<p>
Keep scheduled contacts visible and avoid missing time-critical skeds.
</p>
<a href="/features/sked-reminder/">
Learn more →
</a>
<article class="card feature-card">
<div class="feature-icon">🔔</div>
<p class="eyebrow">Sked Management</p>
<h3><a href="/features/sked-reminder/">Sked Reminder</a></h3>
<p>Keep scheduled contacts visible and avoid missing time-critical skeds.</p>
<a href="/features/sked-reminder/">Learn more →</a>
</article>
<article class="card">
<div class="feature-icon">
🔄
</div>
<p class="eyebrow">
Logger Integration
</p>
<h3>
<a href="/features/log-sync/">
Log Synchronization
</a>
</h3>
<p>
Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.
</p>
<a href="/features/log-sync/">
Learn more →
</a>
<article class="card feature-card">
<div class="feature-icon">🔄</div>
<p class="eyebrow">Logger Integration</p>
<h3><a href="/features/log-sync/">Log Synchronization</a></h3>
<p>Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.</p>
<a href="/features/log-sync/">Learn more →</a>
</article>
<article class="card">
<div class="feature-icon">
💬
</div>
<p class="eyebrow">
ON4KST Chat
</p>
<h3>
<a href="/features/dual-chat/">
Dual Chat Categories
</a>
</h3>
<p>
Operate in two ON4KST categories at once, for example VHF/UHF and microwave.
</p>
<a href="/features/dual-chat/">
Learn more →
</a>
<article class="card feature-card">
<div class="feature-icon">💬</div>
<p class="eyebrow">ON4KST Chat</p>
<h3><a href="/features/dual-chat/">Dual Chat Categories</a></h3>
<p>Operate in two ON4KST categories at once, for example VHF/UHF and microwave.</p>
<a href="/features/dual-chat/">Learn more →</a>
</article>
<article class="card feature-card">
<div class="feature-icon">📡</div>
<p class="eyebrow">Radio Workflow</p>
<h3><a href="/features/dx-cluster/">DXCluster Server</a></h3>
<p>Use DXCluster information as part of the wider contest operating workflow.</p>
<a href="/features/dx-cluster/">Learn more →</a>
</article>
<article class="card feature-card">
<div class="feature-icon"></div>
<p class="eyebrow">Operator Speed</p>
<h3><a href="/features/macros/">Macros and Variables</a></h3>
<p>Send recurring contest messages faster with configurable macros and variables.</p>
<a href="/features/macros/">Learn more →</a>
</article>
</div>
</section>
<section class="section">
<p class="eyebrow">
Why KST4Contest?
</p>
<h2>
Built by contesters for contesters.
</h2>
<div class="grid">
<div class="card">
<h3>Contest Workflow</h3>
<div class="cta-panel">
<p class="eyebrow">Open Source</p>
<h2>Built by contesters for contesters.</h2>
<p>
Unlike traditional ON4KST clients, KST4Contest focuses on
operator workflow instead of simply displaying chat messages.
KST4Contest is developed around real VHF/UHF/SHF contest workflows:
ON4KST chat, aircraft scatter, skeds, logging and fast operator decisions.
</p>
<div class="actions">
<a class="button" href="/download/">Download KST4Contest</a>
<a class="button secondary" href="/features/">Explore features</a>
</div>
<div class="card">
<h3>Decision Support</h3>
<p>
Priority candidates, activity detection, AirScout integration,
timeline and sked reminders help operators make better decisions.
</p>
</div>
<div class="card">
<h3>Open Source</h3>
<p>
KST4Contest is open source and continuously developed together
with the amateur radio contest community.
</p>
</div>
</div>
</section>
<script type="application/ld+json">
{
"@context":"https://schema.org",
@@ -313,7 +188,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/airscout-integration/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -150,7 +168,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/benutzeroberflaeche/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -152,7 +170,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/changelog/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -287,7 +305,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/dx-cluster-server/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -114,7 +132,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/funktionen/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -236,7 +254,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/home/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -143,7 +161,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>KST4Contest Deutsches Handbuch</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Deutsches Benutzerhandbuch für KST4Contest.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -139,7 +157,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/installation/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -258,7 +276,8 @@ flatpak install kst4contest de.x08.KST4Contest//nightly
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/konfiguration/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -194,7 +212,8 @@ Zudem wird die <strong>primäre Chat-Kategorie</strong> (z. B. IARU Region 1 VHF
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/log-synchronisation/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -172,7 +190,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/de/makros-und-variablen/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -183,7 +201,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/airscout-integration/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -150,7 +168,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/changelog/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -287,7 +305,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/configuration/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -194,7 +212,8 @@ Also, select the <strong>primary chat category</strong> (e.g., IARU Region 1 VHF
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/dx-cluster-server/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -114,7 +132,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/features/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -235,7 +253,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/home/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -143,7 +161,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>KST4Contest English Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="English user manual for KST4Contest.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -139,7 +157,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/installation/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -258,7 +276,8 @@ flatpak install kst4contest de.x08.KST4Contest//nightly
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/log-sync/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -172,7 +190,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/macros-and-variables/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -183,7 +201,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
@@ -5,7 +5,6 @@
<title>{{ manual.title }} | KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="KST4Contest manual page: {{ manual.title }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/en/user-interface/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -152,7 +170,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>KST4Contest Manual</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Online manual for KST4Contest, the contest-optimized ON4KST chat client.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/manual/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -51,7 +69,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+26 -7
View File
@@ -5,7 +5,6 @@
<title>KST4Contest News</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="News, release updates and development notes for KST4Contest.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/news/">
<meta property="og:type" content="website">
@@ -20,17 +19,36 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -55,7 +73,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+49 -18
View File
@@ -5,7 +5,6 @@
<title>KST4Contest Screenshots</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Screenshots of KST4Contest, the contest-optimized ON4KST chat client for VHF, UHF and SHF operators.">
<link rel="canonical" href="https://kst4contest.hamradioonline.de/screenshots/">
<meta property="og:type" content="website">
@@ -20,25 +19,45 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a class="brand" href="/">
<span class="brand-mark"></span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
<a href="/">Home</a>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
<main>
<section class="hero">
<h1>Screenshots</h1>
<p>
<p class="badge">Screenshots</p>
<h1>See the contest workflow.</h1>
<p class="lead">
Visual impressions of KST4Contest: ON4KST chat workflow, priority candidates,
sked handling, AirScout integration and contest-focused operator tools.
</p>
@@ -46,26 +65,38 @@
<section class="section">
<div class="grid">
<div class="card">
<article class="card screenshot-card">
<div class="screenshot-placeholder">
<span>Main Window</span>
</div>
<h3>Main Window</h3>
<p>ON4KST chat workflow with contest-oriented controls.</p>
</div>
<p>Contest-oriented ON4KST chat workflow with candidate awareness.</p>
</article>
<div class="card">
<article class="card screenshot-card">
<div class="screenshot-placeholder">
<span>Priority Candidates</span>
</div>
<h3>Priority Candidates</h3>
<p>Candidate ranking for faster operator decisions.</p>
</div>
<p>Score-based candidate ranking for faster operator decisions.</p>
</article>
<div class="card">
<h3>AirScout / AP Timeline</h3>
<p>Aircraft scatter timing support for VHF/UHF/SHF operation.</p>
<article class="card screenshot-card">
<div class="screenshot-placeholder">
<span>Timeline View</span>
</div>
<h3>Timeline View</h3>
<p>Timeline support for AP windows and candidate timing.</p>
</article>
</div>
</section>
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+37
View File
@@ -0,0 +1,37 @@
module.exports = [
{
os: "Windows",
format: "ZIP",
icon: "🪟",
recommended: true,
url: "https://github.com/praktimarc/kst4contest/releases/latest"
},
{
os: "macOS",
format: "DMG",
icon: "🍎",
recommended: false,
url: "https://github.com/praktimarc/kst4contest/releases/latest"
},
{
os: "Linux",
format: "AppImage / DEB / RPM / Arch",
icon: "🐧",
recommended: false,
url: "https://github.com/praktimarc/kst4contest/releases/latest"
},
{
os: "Flatpak",
format: "flatpakref",
icon: "📦",
recommended: false,
url: "https://github.com/praktimarc/kst4contest/releases/latest"
},
{
os: "Manual",
format: "PDF EN/DE",
icon: "📘",
recommended: false,
url: "https://github.com/praktimarc/kst4contest/releases/latest"
}
];
+39 -11
View File
@@ -4,19 +4,21 @@ module.exports = [
title: "Priority Score System",
icon: "🎯",
category: "Contest Workflow",
since: "1.40",
summary: "Find the most promising stations faster using contest-aware candidate scoring.",
description: "KST4Contest ranks stations by contest-relevant signals such as activity, direction, sked context, bands, frequencies and operator workflow.",
keywords: ["ON4KST", "contest", "priority candidates", "VHF", "UHF", "SHF"],
related: ["airscout", "sked-reminder", "timeline"]
description: "KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals.",
tags: ["ON4KST", "VHF", "UHF", "SHF", "contest", "priority candidates"],
related: ["timeline", "airscout", "sked-reminder"]
},
{
slug: "airscout",
title: "AirScout Integration",
icon: "✈️",
category: "Aircraft Scatter",
summary: "Use airplane scatter awareness directly inside your ON4KST contest workflow.",
since: "1.26",
summary: "Use aircraft scatter awareness directly inside your ON4KST contest workflow.",
description: "AirScout information helps operators evaluate AP windows, aircraft scatter timing and candidate stations during VHF/UHF/SHF contests.",
keywords: ["AirScout", "airplane scatter", "aircraft scatter", "VHF contest"],
tags: ["AirScout", "airplane scatter", "aircraft scatter", "VHF contest"],
related: ["timeline", "priority-score", "sked-reminder"]
},
{
@@ -24,9 +26,10 @@ module.exports = [
title: "Timeline View",
icon: "⏱️",
category: "Contest Awareness",
since: "1.40",
summary: "See upcoming AP windows and candidate timing in a compact contest timeline.",
description: "The timeline view helps operators understand short propagation windows and candidate timing during active contest operation.",
keywords: ["AP timeline", "airplane scatter", "contest timing"],
tags: ["timeline", "AP windows", "airplane scatter"],
related: ["airscout", "priority-score"]
},
{
@@ -34,29 +37,54 @@ module.exports = [
title: "Sked Reminder",
icon: "🔔",
category: "Sked Management",
since: "1.40",
summary: "Keep scheduled contacts visible and avoid missing time-critical skeds.",
description: "KST4Contest keeps skeds in focus while the operator handles chat traffic, logging, bands and aircraft scatter timing.",
keywords: ["sked", "ON4KST sked", "contest reminder"],
related: ["priority-score", "airscout"]
tags: ["sked", "ON4KST", "contest reminder"],
related: ["priority-score", "airscout", "timeline"]
},
{
slug: "log-sync",
title: "Log Synchronization",
icon: "🔄",
category: "Logger Integration",
since: "1.31",
summary: "Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.",
description: "Log synchronization helps KST4Contest understand worked stations, active bands and contest context.",
keywords: ["Win-Test", "UCXLog", "contest logger", "ON4KST"],
related: ["priority-score"]
tags: ["Win-Test", "UCXLog", "contest logger"],
related: ["priority-score", "dual-chat"]
},
{
slug: "dual-chat",
title: "Dual Chat Categories",
icon: "💬",
category: "ON4KST Chat",
since: "1.26",
summary: "Operate in two ON4KST categories at once, for example VHF/UHF and microwave.",
description: "Dual category support gives contest operators better overview when working across multiple ON4KST chat rooms.",
keywords: ["ON4KST", "dual chat", "microwave contest"],
tags: ["ON4KST", "dual chat", "microwave contest"],
related: ["priority-score", "log-sync"]
},
{
slug: "dx-cluster",
title: "DXCluster Server",
icon: "📡",
category: "Radio Workflow",
since: "1.23",
summary: "Use DXCluster information as part of the wider contest operating workflow.",
description: "KST4Contest includes DXCluster functionality to support situational awareness during contest operation.",
tags: ["DXCluster", "ham radio", "contest"],
related: ["log-sync", "priority-score"]
},
{
slug: "macros",
title: "Macros and Variables",
icon: "⚡",
category: "Operator Speed",
since: "1.0",
summary: "Send recurring contest messages faster with configurable macros and variables.",
description: "Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions.",
tags: ["macros", "ON4KST", "operator workflow"],
related: ["sked-reminder", "dual-chat"]
}
];
+9
View File
@@ -0,0 +1,9 @@
module.exports = [
{ title: "Home", url: "/" },
{ title: "Features", url: "/features/" },
{ title: "Screenshots", url: "/screenshots/" },
{ title: "Download", url: "/download/" },
{ title: "Manual", url: "/manual/" },
{ title: "News", url: "/news/" },
{ title: "FAQ", url: "/faq/" }
];
+23
View File
@@ -0,0 +1,23 @@
module.exports = [
{
id: "main-window",
title: "Main Window",
image: "/assets/screenshots/main-window.png",
alt: "KST4Contest ON4KST contest chat client main window",
caption: "Contest-oriented ON4KST chat workflow with candidate awareness."
},
{
id: "priority-candidates",
title: "Priority Candidates",
image: "/assets/screenshots/priority-candidates.png",
alt: "Priority candidate list in KST4Contest",
caption: "Score-based candidate ranking for faster operator decisions."
},
{
id: "timeline",
title: "Timeline View",
image: "/assets/screenshots/timeline.png",
alt: "KST4Contest AP timeline view",
caption: "Timeline support for AP windows and candidate timing."
}
];
+18 -11
View File
@@ -5,7 +5,6 @@
<title>{{ title or "KST4Contest" }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="{{ description or 'KST4Contest is a contest-optimized ON4KST chat client for VHF, UHF and SHF ham radio contests.' }}">
<link rel="canonical" href="https://kst4contest.hamradioonline.de{{ page.url }}">
<meta property="og:type" content="website">
@@ -20,17 +19,24 @@
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<div class="site-bg"></div>
<header class="site-header">
<a class="brand" href="/">KST4Contest</a>
<nav>
<a href="/features/">Features</a>
<a href="/download/">Download</a>
<a href="/manual/">Manual</a>
<a href="/screenshots/">Screenshots</a>
<a href="/news/">News</a>
<a href="https://github.com/praktimarc/kst4contest">GitHub</a>
<a href="/faq/">FAQ</a>
<a class="brand" href="/">
<span class="brand-mark">◎</span>
<span>
<strong>KST4Contest</strong>
<small>ON4KST Contest Client</small>
</span>
</a>
<nav class="site-nav">
{% for item in navigation %}
<a href="{{ item.url }}">{{ item.title }}</a>
{% endfor %}
<a class="nav-cta" href="https://github.com/praktimarc/kst4contest/releases/latest">Download</a>
</nav>
</header>
@@ -39,7 +45,8 @@
</main>
<footer class="site-footer">
<p>KST4Contest ON4KST contest workflow for VHF/UHF/SHF operators.</p>
<p>KST4Contest contest-optimized ON4KST workflow for VHF/UHF/SHF operators.</p>
<p><a href="https://github.com/praktimarc/kst4contest">GitHub Repository</a></p>
</footer>
</body>
</html>
+310 -49
View File
@@ -1,23 +1,54 @@
:root {
--bg: #0f172a;
--panel: #111827;
--panel2: #1f2937;
--text: #e5e7eb;
--muted: #9ca3af;
--bg: #050816;
--bg2: #0b1224;
--panel: rgba(15, 23, 42, 0.78);
--panel2: rgba(30, 41, 59, 0.72);
--border: rgba(148, 163, 184, 0.22);
--text: #f8fafc;
--muted: #aab6ca;
--soft: #64748b;
--accent: #38bdf8;
--accent2: #a78bfa;
--accent2: #a855f7;
--accent3: #22c55e;
--shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
background: radial-gradient(circle at top left, #1e293b, var(--bg));
background: var(--bg);
color: var(--text);
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
line-height: 1.6;
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
line-height: 1.65;
}
.site-bg {
position: fixed;
inset: 0;
z-index: -1;
background:
radial-gradient(circle at 15% 8%, rgba(168, 85, 247, 0.30), transparent 30%),
radial-gradient(circle at 82% 18%, rgba(56, 189, 248, 0.26), transparent 30%),
radial-gradient(circle at 50% 90%, rgba(34, 197, 94, 0.12), transparent 30%),
linear-gradient(180deg, #050816 0%, #07111f 100%);
}
.site-bg::after {
content: "";
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px);
background-size: 54px 54px;
mask-image: radial-gradient(circle at center, black, transparent 72%);
}
a {
@@ -25,72 +56,245 @@ a {
text-decoration: none;
}
a:hover {
color: white;
}
.site-header {
position: sticky;
top: 0;
z-index: 10;
display: flex;
justify-content: space-between;
gap: 24px;
align-items: center;
padding: 24px 7vw;
padding: 18px 6vw;
background: rgba(5, 8, 22, 0.76);
backdrop-filter: blur(18px);
border-bottom: 1px solid var(--border);
}
.brand {
font-weight: 800;
font-size: 1.25rem;
display: flex;
gap: 12px;
align-items: center;
color: white;
}
nav {
.brand-mark {
display: grid;
place-items: center;
width: 40px;
height: 40px;
border-radius: 14px;
background: linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow: 0 0 26px rgba(168, 85, 247, 0.45);
}
.brand strong {
display: block;
font-size: 1.05rem;
letter-spacing: 0.02em;
}
.brand small {
display: block;
color: var(--muted);
font-size: 0.78rem;
margin-top: -4px;
}
.site-nav {
display: flex;
gap: 18px;
align-items: center;
gap: 16px;
flex-wrap: wrap;
}
nav a {
.site-nav a {
color: var(--muted);
font-size: 0.95rem;
}
nav a:hover {
.site-nav a:hover {
color: white;
}
.nav-cta {
padding: 9px 14px;
border-radius: 999px;
color: white !important;
background: linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow: 0 0 22px rgba(56, 189, 248, 0.28);
}
.hero {
padding: 90px 7vw 70px;
max-width: 1100px;
padding: 92px 6vw 62px;
max-width: 1180px;
}
.hero-split {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr);
gap: 42px;
align-items: center;
max-width: 1500px;
}
.hero h1 {
font-size: clamp(2.4rem, 6vw, 5rem);
line-height: 1.02;
margin: 0 0 24px;
margin: 0 0 22px;
font-size: clamp(3rem, 8vw, 6.5rem);
line-height: 0.95;
letter-spacing: -0.07em;
background: linear-gradient(90deg, white, var(--accent), var(--accent2));
-webkit-background-clip: text;
color: transparent;
}
.hero p {
font-size: 1.25rem;
.hero .lead,
.hero > p,
.section-heading p,
.cta-panel p {
color: var(--muted);
max-width: 760px;
font-size: 1.18rem;
max-width: 850px;
}
.badge,
.eyebrow {
display: inline-flex;
width: fit-content;
align-items: center;
gap: 8px;
color: #e9d5ff;
background: rgba(168, 85, 247, 0.13);
border: 1px solid rgba(168, 85, 247, 0.34);
padding: 6px 12px;
border-radius: 999px;
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 0.74rem;
font-weight: 800;
}
.actions {
display: flex;
gap: 16px;
margin-top: 32px;
gap: 14px;
margin-top: 30px;
flex-wrap: wrap;
}
.button {
padding: 13px 20px;
border-radius: 999px;
background: var(--accent);
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 46px;
padding: 12px 18px;
border-radius: 14px;
color: #020617;
font-weight: 700;
background: linear-gradient(135deg, var(--accent), var(--accent2));
font-weight: 800;
box-shadow: 0 16px 44px rgba(56, 189, 248, 0.25);
}
.button.secondary {
background: var(--panel2);
color: white;
background: rgba(30, 41, 59, 0.85);
border: 1px solid var(--border);
box-shadow: none;
}
.button.ghost {
color: white;
background: transparent;
border: 1px solid var(--border);
box-shadow: none;
}
.hero-panel,
.card,
.cta-panel {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 26px;
box-shadow: var(--shadow);
}
.hero-panel {
overflow: hidden;
transform: perspective(1200px) rotateY(-5deg) rotateX(2deg);
}
.terminal-bar {
display: flex;
gap: 8px;
align-items: center;
padding: 14px 16px;
border-bottom: 1px solid var(--border);
background: rgba(2, 6, 23, 0.74);
}
.terminal-bar span {
width: 11px;
height: 11px;
border-radius: 50%;
background: var(--accent2);
}
.terminal-bar span:nth-child(2) {
background: #f59e0b;
}
.terminal-bar span:nth-child(3) {
background: var(--accent3);
}
.terminal-bar strong {
margin-left: 8px;
color: var(--muted);
font-size: 0.85rem;
}
.mock-grid {
display: grid;
gap: 12px;
padding: 18px;
}
.mini-card {
padding: 14px;
border-radius: 16px;
background: rgba(15, 23, 42, 0.88);
border: 1px solid rgba(148, 163, 184, 0.16);
}
.mini-card strong,
.mini-card small {
display: block;
}
.mini-card small {
color: var(--muted);
margin-top: 4px;
}
.section {
padding: 40px 7vw;
padding: 52px 6vw;
}
.section.narrow {
max-width: 1040px;
}
.section-heading {
margin-bottom: 26px;
}
.section h2 {
font-size: clamp(2rem, 4vw, 3.4rem);
line-height: 1.05;
margin: 12px 0 14px;
letter-spacing: -0.04em;
}
.grid {
@@ -100,21 +304,74 @@ nav a:hover {
}
.card {
background: rgba(17, 24, 39, 0.82);
border: 1px solid rgba(148, 163, 184, 0.18);
border-radius: 22px;
padding: 24px;
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease;
}
.card h3 {
.card:hover {
transform: translateY(-4px);
border-color: rgba(56, 189, 248, 0.45);
background: rgba(15, 23, 42, 0.92);
}
.card h3,
.card h2 {
margin-top: 0;
}
.site-footer {
padding: 40px 7vw;
.card p {
color: var(--muted);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 14px;
}
.feature-icon.large {
font-size: 4rem;
}
.content-card {
max-width: 980px;
}
.tag-list {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.tag-list span {
padding: 7px 11px;
border-radius: 999px;
color: var(--muted);
background: rgba(15, 23, 42, 0.85);
border: 1px solid var(--border);
}
.download-card {
min-height: 220px;
}
.screenshot-placeholder {
display: grid;
place-items: center;
min-height: 180px;
margin-bottom: 16px;
border-radius: 18px;
background:
linear-gradient(135deg, rgba(56, 189, 248, 0.20), rgba(168, 85, 247, 0.20)),
rgba(2, 6, 23, 0.7);
border: 1px solid var(--border);
color: white;
font-weight: 800;
}
.cta-panel {
padding: clamp(28px, 5vw, 60px);
}
.manual-content {
max-width: 980px;
}
@@ -149,19 +406,23 @@ nav a:hover {
text-align: left;
}
.eyebrow {
color: var(--accent2);
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: 0.78rem;
font-weight: 800;
.site-footer {
padding: 42px 6vw;
color: var(--muted);
border-top: 1px solid var(--border);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 14px;
@media (max-width: 900px) {
.hero-split {
grid-template-columns: 1fr;
}
.feature-icon.large {
font-size: 3.5rem;
.hero-panel {
transform: none;
}
.site-header {
align-items: flex-start;
flex-direction: column;
}
}
+20 -6
View File
@@ -5,14 +5,28 @@ description: Download KST4Contest releases for Windows, Linux and macOS.
---
<section class="hero">
<h1>Download KST4Contest</h1>
<p>
Official builds are published through GitHub Releases for Windows, Linux
and macOS.
<p class="badge">Download</p>
<h1>Get KST4Contest</h1>
<p class="lead">
Official builds are published through GitHub Releases for Windows, Linux and macOS.
</p>
<div class="actions">
<a class="button" href="https://github.com/praktimarc/kst4contest/releases/latest">Latest Release</a>
<a class="button secondary" href="https://github.com/praktimarc/kst4contest/releases">All Releases</a>
<a class="button" href="https://github.com/praktimarc/kst4contest/releases/latest">Latest release</a>
<a class="button secondary" href="https://github.com/praktimarc/kst4contest/releases">All releases</a>
</div>
</section>
<section class="section">
<div class="grid">
{% for item in downloads %}
<article class="card download-card">
<div class="feature-icon">{{ item.icon }}</div>
{% if item.recommended %}<p class="badge">Recommended</p>{% endif %}
<h3>{{ item.os }}</h3>
<p>{{ item.format }}</p>
<a href="{{ item.url }}">Open download →</a>
</article>
{% endfor %}
</div>
</section>
+19 -8
View File
@@ -10,13 +10,13 @@ description: "{{ feature.summary }}"
---
<section class="hero">
<p class="eyebrow">{{ feature.category }}</p>
<p class="badge">{{ feature.category }} · since {{ feature.since }}</p>
<h1>{{ feature.title }}</h1>
<p>{{ feature.summary }}</p>
<p class="lead">{{ feature.summary }}</p>
</section>
<section class="section">
<div class="card">
<section class="section narrow">
<article class="card content-card">
<div class="feature-icon large">{{ feature.icon }}</div>
<h2>Why it matters</h2>
@@ -24,11 +24,22 @@ description: "{{ feature.summary }}"
<h2>Built for contest operation</h2>
<p>
This feature is designed for real VHF, UHF and SHF contest workflows,
where speed, awareness and correct operator decisions matter.
This feature supports real VHF, UHF and SHF contest workflows where timing,
awareness and fast decisions matter. It is part of the broader KST4Contest
approach: ON4KST chat should not just be displayed, it should actively support
contest operation.
</p>
{% if feature.related and feature.related.length %}
{% if feature.tags %}
<h2>Keywords</h2>
<div class="tag-list">
{% for tag in feature.tags %}
<span>{{ tag }}</span>
{% endfor %}
</div>
{% endif %}
{% if feature.related %}
<h2>Related features</h2>
<div class="actions">
{% for slug in feature.related %}
@@ -40,5 +51,5 @@ description: "{{ feature.summary }}"
{% endfor %}
</div>
{% endif %}
</div>
</article>
</section>
+4 -3
View File
@@ -5,8 +5,9 @@ description: Contest-optimized ON4KST features for VHF, UHF and SHF operation.
---
<section class="hero">
<h1>Features built for serious VHF/UHF/SHF contest operation.</h1>
<p>
<p class="badge">Features</p>
<h1>Contest tools, not just chat windows.</h1>
<p class="lead">
KST4Contest combines ON4KST chat, candidate scoring, AirScout workflow,
sked handling, log synchronization and operator decision support.
</p>
@@ -15,7 +16,7 @@ description: Contest-optimized ON4KST features for VHF, UHF and SHF operation.
<section class="section">
<div class="grid">
{% for feature in features %}
<article class="card">
<article class="card feature-card">
<div class="feature-icon">{{ feature.icon }}</div>
<p class="eyebrow">{{ feature.category }}</p>
<h3><a href="/features/{{ feature.slug }}/">{{ feature.title }}</a></h3>
+50 -104
View File
@@ -4,127 +4,73 @@ title: KST4Contest Contest-Optimized ON4KST Chat Client
description: KST4Contest is a modern ON4KST chat client built for VHF, UHF and SHF contest operation.
---
<section class="hero">
<p class="eyebrow">The contest-optimized ON4KST client</p>
<section class="hero hero-split">
<div>
<p class="badge">The contest-optimized ON4KST client</p>
<h1>KST4Contest</h1>
<p>
Work smarter. Make more QSOs.
Built for serious VHF, UHF and SHF contest operators.
<p class="lead">
Work smarter. Make more QSOs. KST4Contest brings priority candidates,
AirScout workflow, sked reminders, dual chat categories and log synchronization
into one contest-focused ON4KST client.
</p>
<div class="actions">
<a class="button"
href="https://github.com/praktimarc/kst4contest/releases/latest">
Download latest release
</a>
<a class="button secondary"
href="https://github.com/praktimarc/kst4contest">
GitHub
</a>
<a class="button secondary"
href="/manual/">
Documentation
</a>
<a class="button" href="https://github.com/praktimarc/kst4contest/releases/latest">Download latest release</a>
<a class="button secondary" href="https://github.com/praktimarc/kst4contest">View on GitHub</a>
<a class="button ghost" href="/manual/">Read manual</a>
</div>
</div>
</section>
<section class="section">
<p class="eyebrow">
Powerful Features
</p>
<h2>
Everything you need for contest success
</h2>
<div class="grid">
{% for feature in features %}
<article class="card">
<div class="feature-icon">
{{ feature.icon }}
<div class="hero-panel">
<div class="terminal-bar">
<span></span><span></span><span></span>
<strong>KST4Contest workflow</strong>
</div>
<div class="mock-grid">
{% for feature in features | slice(0, 6) %}
<div class="mini-card">
<strong>{{ feature.icon }} {{ feature.title }}</strong>
<small>{{ feature.summary }}</small>
</div>
<p class="eyebrow">
{{ feature.category }}
</p>
<h3>
<a href="/features/{{ feature.slug }}/">
{{ feature.title }}
</a>
</h3>
<p>
{{ feature.summary }}
</p>
<a href="/features/{{ feature.slug }}/">
Learn more →
</a>
</article>
{% endfor %}
</div>
</div>
</section>
<section class="section">
<p class="eyebrow">
Why KST4Contest?
</p>
<h2>
Built by contesters for contesters.
</h2>
<div class="section-heading">
<p class="eyebrow">Powerful features</p>
<h2>Everything you need for contest success</h2>
<p>Every feature is designed to reduce operator workload and improve decision speed during real contest operation.</p>
</div>
<div class="grid">
<div class="card">
<h3>Contest Workflow</h3>
<p>
Unlike traditional ON4KST clients, KST4Contest focuses on
operator workflow instead of simply displaying chat messages.
</p>
{% for feature in features %}
<article class="card feature-card">
<div class="feature-icon">{{ feature.icon }}</div>
<p class="eyebrow">{{ feature.category }}</p>
<h3><a href="/features/{{ feature.slug }}/">{{ feature.title }}</a></h3>
<p>{{ feature.summary }}</p>
<a href="/features/{{ feature.slug }}/">Learn more →</a>
</article>
{% endfor %}
</div>
<div class="card">
<h3>Decision Support</h3>
<p>
Priority candidates, activity detection, AirScout integration,
timeline and sked reminders help operators make better decisions.
</p>
</div>
<div class="card">
<h3>Open Source</h3>
<p>
KST4Contest is open source and continuously developed together
with the amateur radio contest community.
</p>
</div>
</div>
</section>
<section class="section">
<div class="cta-panel">
<p class="eyebrow">Open Source</p>
<h2>Built by contesters for contesters.</h2>
<p>
KST4Contest is developed around real VHF/UHF/SHF contest workflows:
ON4KST chat, aircraft scatter, skeds, logging and fast operator decisions.
</p>
<div class="actions">
<a class="button" href="/download/">Download KST4Contest</a>
<a class="button secondary" href="/features/">Explore features</a>
</div>
</div>
</section>
<script type="application/ld+json">
{
+11 -15
View File
@@ -5,8 +5,9 @@ description: Screenshots of KST4Contest, the contest-optimized ON4KST chat clien
---
<section class="hero">
<h1>Screenshots</h1>
<p>
<p class="badge">Screenshots</p>
<h1>See the contest workflow.</h1>
<p class="lead">
Visual impressions of KST4Contest: ON4KST chat workflow, priority candidates,
sked handling, AirScout integration and contest-focused operator tools.
</p>
@@ -14,19 +15,14 @@ description: Screenshots of KST4Contest, the contest-optimized ON4KST chat clien
<section class="section">
<div class="grid">
<div class="card">
<h3>Main Window</h3>
<p>ON4KST chat workflow with contest-oriented controls.</p>
</div>
<div class="card">
<h3>Priority Candidates</h3>
<p>Candidate ranking for faster operator decisions.</p>
</div>
<div class="card">
<h3>AirScout / AP Timeline</h3>
<p>Aircraft scatter timing support for VHF/UHF/SHF operation.</p>
{% for shot in screenshots %}
<article class="card screenshot-card">
<div class="screenshot-placeholder">
<span>{{ shot.title }}</span>
</div>
<h3>{{ shot.title }}</h3>
<p>{{ shot.caption }}</p>
</article>
{% endfor %}
</div>
</section>