Files
kst4contest/website/_site/assets/css/main.css
T
2026-07-12 21:23:10 +00:00

754 lines
16 KiB
CSS

:root {
--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: #a855f7;*/
/*--accent3: #22c55e;*/
--shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
--accent: #54d63d;
--accent2: #8aef64;
--accent3: #31b54a;
--fx-plane: #79ff73;
--fx-plane-muted: rgba(121, 255, 115, 0.42);
--fx-beam: #52ff65;
--fx-beam-glow: rgba(82, 255, 101, 0.28);
--fx-reflection: #d2ffc8;
--fx-trail: rgba(121, 255, 115, 0.17);
--fx-grid: rgba(121, 255, 115, 0.055);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
background: var(--bg);
}
body {
margin: 0;
min-height: 100vh;
background:
radial-gradient(
circle at 14% 12%,
rgba(52, 165, 57, 0.20),
transparent 30%
),
radial-gradient(
circle at 82% 16%,
rgba(95, 218, 82, 0.14),
transparent 32%
),
radial-gradient(
circle at 50% 85%,
rgba(32, 126, 55, 0.12),
transparent 36%
),
linear-gradient(
180deg,
#070b09 0%,
#0b1410 100%
);
color: var(--text);
font-family:
Inter,
ui-sans-serif,
system-ui,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
line-height: 1.65;
overflow-x: hidden;
}
body::before {
content: "";
position: fixed;
inset: -20%;
z-index: -3;
background:
radial-gradient(circle at 20% 20%, rgba(168, 85, 247, 0.22), transparent 28%),
radial-gradient(circle at 78% 18%, rgba(56, 189, 248, 0.18), transparent 30%),
radial-gradient(circle at 45% 80%, rgba(34, 197, 94, 0.10), transparent 26%);
filter: blur(48px);
transform: translateZ(0);
}
body::after {
content: "";
position: fixed;
inset: 0;
z-index: -2;
pointer-events: none;
background-image:
linear-gradient(rgba(255,255,255,0.038) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.038) 1px, transparent 1px);
background-size: 54px 54px;
-webkit-mask-image: radial-gradient(circle at center, black 0%, black 46%, transparent 78%);
mask-image: radial-gradient(circle at center, black 0%, black 46%, transparent 78%);
}
.site-bg {
position: fixed;
inset: 0;
z-index: -1;
pointer-events: none;
background:
linear-gradient(180deg, rgba(5, 8, 22, 0.10), rgba(5, 8, 22, 0.84)),
radial-gradient(circle at 8% 24%, rgba(168, 85, 247, 0.18), transparent 26%),
radial-gradient(circle at 82% 20%, rgba(56, 189, 248, 0.16), transparent 30%);
}
.site-bg::before {
content: "";
position: absolute;
inset: 0;
background:
radial-gradient(circle at top, transparent 0%, rgba(5, 8, 22, 0.42) 72%),
linear-gradient(90deg, rgba(5, 8, 22, 0.25), transparent 50%, rgba(5, 8, 22, 0.25));
}
.site-bg::after {
content: "";
position: absolute;
inset: 0;
background-image:
radial-gradient(circle at 1px 1px, rgba(255,255,255,0.10) 1px, transparent 0);
background-size: 28px 28px;
opacity: 0.11;
-webkit-mask-image: radial-gradient(circle at 50% 22%, black 0%, transparent 68%);
mask-image: radial-gradient(circle at 50% 22%, black 0%, transparent 68%);
}
a {
color: var(--accent);
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: 18px 6vw;
background: rgba(5, 8, 22, 0.76);
-webkit-backdrop-filter: blur(18px);
backdrop-filter: blur(18px);
border-bottom: 1px solid var(--border);
}
.brand {
display: flex;
gap: 12px;
align-items: center;
color: white;
}
.brand-mark {
display: grid;
place-items: center;
width: 40px;
height: 40px;
border-radius: 14px;
background:
radial-gradient(circle at 30% 20%, white, transparent 22%),
linear-gradient(135deg, var(--accent), var(--accent2));
box-shadow:
0 0 26px rgba(168, 85, 247, 0.45),
0 0 50px rgba(56, 189, 248, 0.18);
}
.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;
align-items: center;
gap: 16px;
flex-wrap: wrap;
}
.site-nav a {
color: var(--muted);
font-size: 0.95rem;
}
.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 {
position: relative;
padding: 92px 6vw 62px;
max-width: 1180px;
}
.hero::before {
content: "";
position: absolute;
inset: -160px -12vw auto -12vw;
height: 420px;
z-index: -1;
pointer-events: none;
background:
radial-gradient(circle at 24% 40%, rgba(168, 85, 247, 0.20), transparent 36%),
radial-gradient(circle at 62% 30%, rgba(56, 189, 248, 0.14), transparent 40%);
filter: blur(74px);
}
.hero-split {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr);
gap: 42px;
align-items: center;
max-width: 1500px;
}
.hero h1 {
margin: 0 0 22px;
font-size: clamp(3rem, 8vw, 6.5rem);
line-height: 0.95;
letter-spacing: -0.07em;
background: linear-gradient(90deg, #ffffff 0%, #7dd3fc 40%, #a855f7 78%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.hero .lead,
.hero > p,
.section-heading p,
.cta-panel p {
color: var(--muted);
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;
box-shadow: 0 0 22px rgba(168, 85, 247, 0.12);
}
.actions {
display: flex;
gap: 14px;
margin-top: 30px;
flex-wrap: wrap;
}
.button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 46px;
padding: 12px 18px;
border-radius: 14px;
color: #020617;
background: linear-gradient(135deg, var(--accent), var(--accent2));
font-weight: 800;
box-shadow:
0 16px 44px rgba(56, 189, 248, 0.25),
inset 0 1px 0 rgba(255, 255, 255, 0.35);
}
.button:hover {
color: white;
transform: translateY(-1px);
}
.button.secondary {
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:
linear-gradient(180deg, rgba(255,255,255,0.045), transparent 42%),
var(--panel);
border: 1px solid var(--border);
border-radius: 26px;
box-shadow: var(--shadow);
-webkit-backdrop-filter: blur(16px);
backdrop-filter: blur(16px);
}
.hero-panel {
position: relative;
overflow: hidden;
transform: perspective(1200px) rotateY(-5deg) rotateX(2deg);
}
.hero-panel::before {
content: "";
position: absolute;
inset: -1px;
pointer-events: none;
background:
linear-gradient(135deg, rgba(56, 189, 248, 0.45), transparent 35%, rgba(168, 85, 247, 0.38));
opacity: 0.18;
}
.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: 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 {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 18px;
}
.card {
padding: 24px;
transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
}
.card:hover {
transform: translateY(-4px);
border-color: rgba(56, 189, 248, 0.45);
background:
linear-gradient(180deg, rgba(255,255,255,0.055), transparent 42%),
rgba(15, 23, 42, 0.92);
box-shadow:
0 26px 90px rgba(0, 0, 0, 0.50),
0 0 30px rgba(56, 189, 248, 0.08);
}
.card h3,
.card h2 {
margin-top: 0;
}
.card p {
color: var(--muted);
}
.roadmap-version + .roadmap-version {
margin-top: 24px;
}
.roadmap-version ul {
padding-left: 20px;
}
.roadmap-version li {
margin-bottom: 8px;
}
.roadmap-done a {
color: var(--muted);
text-decoration: line-through;
}
.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;
}
.manual-content h1,
.manual-content h2,
.manual-content h3 {
line-height: 1.2;
}
.manual-content pre {
overflow-x: auto;
padding: 16px;
border-radius: 14px;
background: #020617;
}
.manual-content code {
color: #bae6fd;
}
.manual-content table {
width: 100%;
border-collapse: collapse;
overflow-x: auto;
}
.manual-content th,
.manual-content td {
border-bottom: 1px solid rgba(148, 163, 184, 0.22);
padding: 10px;
text-align: left;
}
.site-footer {
padding: 42px 6vw;
color: var(--muted);
border-top: 1px solid var(--border);
}
@media (max-width: 900px) {
.hero-split {
grid-template-columns: 1fr;
}
.hero-panel {
transform: none;
}
.site-header {
align-items: flex-start;
flex-direction: column;
}
}
@media (prefers-reduced-motion: no-preference) {
.button,
.card {
transition: all 180ms ease;
}
}
.footer-grid {
display: grid;
grid-template-columns: 2fr repeat(3, 1fr);
gap: 24px;
}
.footer-grid strong {
color: white;
}
.footer-grid p {
margin: 8px 0;
}
@media (max-width: 800px) {
.footer-grid {
grid-template-columns: 1fr;
}
}
/*
* Interactive radio / aircraft-scatter hero layer
*/
.hero-radio-fx {
position: absolute;
inset: 0;
z-index: 0;
width: 100%;
height: 100%;
pointer-events: none;
opacity: 0.76;
}
.hero-fx-vignette {
position: absolute;
inset: 0;
z-index: 1;
pointer-events: none;
background:
linear-gradient(
90deg,
rgba(7, 11, 9, 0.92) 0%,
rgba(7, 11, 9, 0.68) 34%,
rgba(7, 11, 9, 0.16) 64%,
rgba(7, 11, 9, 0.42) 100%
),
linear-gradient(
180deg,
rgba(7, 11, 9, 0.10),
rgba(7, 11, 9, 0.58)
);
}
.hero-split > *:not(.hero-radio-fx):not(.hero-fx-vignette) {
position: relative;
z-index: 2;
}
/*
* Operator-console badge styling
*/
.badge,
.eyebrow {
color: #caffc0;
background: rgba(52, 165, 57, 0.12);
border-color: rgba(105, 232, 88, 0.32);
box-shadow: 0 0 22px rgba(82, 255, 101, 0.08);
}
/*
* Light-mode identity:
* white/grey UI with red contest accents
*/
html[data-theme="light"] {
--bg: #f4f4f2;
--bg2: #ffffff;
--panel: rgba(255, 255, 255, 0.88);
--panel2: rgba(242, 242, 239, 0.92);
--border: rgba(91, 91, 86, 0.20);
--text: #252522;
--muted: #656560;
--soft: #888881;
--accent: #d33732;
--accent2: #f25a51;
--accent3: #ae2727;
--fx-plane: #df3732;
--fx-plane-muted: rgba(211, 55, 50, 0.38);
--fx-beam: #ef4039;
--fx-beam-glow: rgba(239, 64, 57, 0.22);
--fx-reflection: #ff8d84;
--fx-trail: rgba(211, 55, 50, 0.15);
--fx-grid: rgba(185, 47, 43, 0.045);
}
html[data-theme="light"] body {
background:
radial-gradient(
circle at 14% 12%,
rgba(211, 55, 50, 0.12),
transparent 30%
),
radial-gradient(
circle at 82% 16%,
rgba(242, 90, 81, 0.09),
transparent 32%
),
linear-gradient(
180deg,
#ffffff 0%,
#f0f0ed 100%
);
}
html[data-theme="light"] .hero-fx-vignette {
background:
linear-gradient(
90deg,
rgba(255, 255, 255, 0.95) 0%,
rgba(255, 255, 255, 0.76) 34%,
rgba(255, 255, 255, 0.18) 66%,
rgba(255, 255, 255, 0.48) 100%
),
linear-gradient(
180deg,
rgba(255, 255, 255, 0.06),
rgba(240, 240, 237, 0.62)
);
}
html[data-theme="light"] .badge,
html[data-theme="light"] .eyebrow {
color: #962a27;
background: rgba(211, 55, 50, 0.08);
border-color: rgba(211, 55, 50, 0.24);
}
@media (max-width: 900px) {
.hero-radio-fx {
opacity: 0.48;
}
.hero-fx-vignette {
background:
linear-gradient(
180deg,
rgba(7, 11, 9, 0.82),
rgba(7, 11, 9, 0.34)
);
}
html[data-theme="light"] .hero-fx-vignette {
background:
linear-gradient(
180deg,
rgba(255, 255, 255, 0.90),
rgba(255, 255, 255, 0.42)
);
}
}
@media (prefers-reduced-motion: reduce) {
.hero-radio-fx {
opacity: 0.28;
}
}