Menu
Public repository / 0183a48e4f75fa9dcea1bf01af89c93ddb3fe5be
AkurAI-Platform / frontend/styles.css
Latest change 0183a48e4f75fa9dcea1bf01af89c93ddb3fe5be - Refactor platform into a polished SaaS product-suite front door by Olafur Bui
/* AkurAI Platform — SaaS suite front door. Hand-written, no build step.
Every colour comes from the AkurAI-Framework semantic tokens
(--bg --panel --fg --accent … defined per theme in /themes.css), so the
page re-themes across all 17 themes. Tints are derived with color-mix —
no theme colour is hardcoded. The single exception is on-accent label text
(#fff), the standard pairing the framework's own site uses on accent fills. */
:root {
--radius: 16px;
--radius-sm: 12px;
--shell: 1180px;
--on-accent: #fff; /* label text on saturated accent fills only */
}
* { box-sizing: border-box; }
html, body { margin: 0; }
html { scroll-behavior: smooth; }
body {
min-height: 100vh;
color: var(--fg);
background:
radial-gradient(1100px 560px at 78% -8%, color-mix(in srgb, var(--accent) 12%, transparent), transparent),
radial-gradient(820px 460px at 2% 4%, color-mix(in srgb, var(--accent-2) 10%, transparent), transparent),
var(--bg);
font: 16px/1.6 Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
-webkit-font-smoothing: antialiased;
}
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
.shell { width: min(var(--shell), 100% - 48px); margin-inline: auto; }
.section { padding-block: 88px; }
/* ---------- Header ---------- */
.topbar {
position: sticky;
top: 0;
z-index: 30;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
min-height: 62px;
padding: 10px clamp(18px, 4vw, 34px);
border-bottom: 1px solid var(--border);
background: color-mix(in srgb, var(--bg) 78%, transparent);
backdrop-filter: blur(14px);
}
.brand {
display: inline-flex;
align-items: center;
gap: 10px;
min-width: 0;
color: var(--fg);
font-weight: 800;
letter-spacing: -0.02em;
}
.brand:hover { text-decoration: none; }
.brand-mark {
display: inline-grid;
place-items: center;
flex: 0 0 auto;
width: 30px;
height: 30px;
border-radius: 9px;
background: linear-gradient(150deg, var(--accent), var(--accent-2));
color: var(--on-accent);
font-size: 15px;
font-weight: 800;
}
.nav-links {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: flex-end;
gap: 20px;
}
.nav-links a { color: var(--muted); font-size: 14px; font-weight: 600; }
.nav-links a:hover { color: var(--fg); text-decoration: none; }
/* ---------- Shared type ---------- */
.eyebrow {
display: inline-block;
margin-bottom: 14px;
color: var(--accent);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.grad {
background: linear-gradient(110deg, var(--accent), var(--accent-2));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.lede { color: var(--muted); font-size: clamp(17px, 2.2vw, 20px); line-height: 1.55; }
.section-head { max-width: 680px; margin-bottom: 40px; }
.section-head h2,
.cta h2,
.sources-section h2 {
margin: 0;
font-size: clamp(28px, 4vw, 40px);
line-height: 1.1;
letter-spacing: -0.025em;
}
.section-head p { margin: 14px 0 0; color: var(--muted); font-size: 17px; }
/* ---------- Buttons ---------- */
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
.btn-row.center { justify-content: center; }
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 46px;
padding: 0 22px;
border: 1px solid transparent;
border-radius: 11px;
font-size: 15px;
font-weight: 700;
white-space: nowrap;
transition: transform .12s ease, filter .15s ease, background-color .15s ease, border-color .15s ease;
}
.btn:hover { text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn-primary {
background: linear-gradient(150deg, var(--accent), color-mix(in srgb, var(--accent) 65%, var(--accent-2)));
color: var(--on-accent);
box-shadow: 0 14px 30px -16px color-mix(in srgb, var(--accent) 80%, transparent);
}
.btn-primary:hover { filter: brightness(1.06); }
.btn-secondary {
background: color-mix(in srgb, var(--fg) 6%, transparent);
color: var(--fg);
border-color: var(--border-2);
}
.btn-secondary:hover { background: color-mix(in srgb, var(--fg) 11%, transparent); }
/* ---------- Health pill ---------- */
.health-pill {
display: inline-flex;
align-items: center;
gap: 9px;
margin-top: 26px;
padding: 7px 14px;
border: 1px solid var(--border);
border-radius: 999px;
background: color-mix(in srgb, var(--panel) 70%, transparent);
color: var(--muted);
font-size: 13px;
font-weight: 600;
}
.health-pill::before {
content: "";
width: 8px;
height: 8px;
border-radius: 999px;
background: currentColor;
box-shadow: 0 0 0 4px color-mix(in srgb, currentColor 22%, transparent);
}
.health-pill[data-state="ok"] { color: var(--ok); }
.health-pill[data-state="fail"] { color: var(--danger); }
/* ---------- Hero ---------- */
.hero {
position: relative;
overflow: hidden;
padding-block: clamp(64px, 9vw, 104px) clamp(56px, 8vw, 92px);
border-bottom: 1px solid var(--border);
}
.hero-glow {
position: absolute;
inset: -40% 30% auto -10%;
height: 70%;
background: radial-gradient(60% 60% at 50% 50%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 70%);
filter: blur(10px);
pointer-events: none;
}
.hero-grid {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1.04fr) minmax(0, 0.96fr);
gap: clamp(32px, 5vw, 64px);
align-items: center;
}
.hero-copy h1 {
margin: 0 0 16px;
max-width: 16ch;
font-size: clamp(40px, 6.4vw, 72px);
line-height: 1.02;
letter-spacing: -0.035em;
}
.hero-copy .lede { max-width: 52ch; }
/* Hero preview card (suite at a glance) */
.hero-art { display: flex; justify-content: center; }
.preview-card {
width: 100%;
max-width: 520px;
border: 1px solid var(--border);
border-radius: var(--radius);
background:
linear-gradient(180deg, color-mix(in srgb, var(--panel) 92%, transparent), color-mix(in srgb, var(--bg-2) 92%, transparent));
box-shadow: var(--shadow);
overflow: hidden;
}
.preview-bar {
display: flex;
align-items: center;
gap: 7px;
padding: 13px 16px;
border-bottom: 1px solid var(--border);
background: color-mix(in srgb, var(--panel-2) 60%, transparent);
}
.preview-bar .dot {
width: 10px;
height: 10px;
border-radius: 999px;
background: color-mix(in srgb, var(--fg) 22%, transparent);
}
.preview-title {
margin-left: 8px;
color: var(--muted);
font-size: 12.5px;
font-weight: 600;
letter-spacing: 0.02em;
}
.preview-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
padding: 18px;
}
.preview-chip {
display: flex;
flex-direction: column;
align-items: center;
gap: 9px;
padding: 16px 8px;
border: 1px solid var(--border);
border-radius: var(--radius-sm);
background: color-mix(in srgb, var(--panel) 55%, transparent);
text-align: center;
}
.preview-icon {
display: inline-grid;
place-items: center;
width: 38px;
height: 38px;
border-radius: 10px;
background: color-mix(in srgb, var(--accent) 14%, transparent);
color: var(--accent);
}
.preview-icon svg { width: 20px; height: 20px; display: block; }
.preview-name {
color: var(--muted);
font-size: 11.5px;
font-weight: 600;
line-height: 1.2;
}
/* ---------- Suite ---------- */
.suite { display: grid; gap: 52px; }
.cat-head {
display: flex;
align-items: center;
gap: 14px;
margin-bottom: 18px;
padding-bottom: 16px;
border-bottom: 1px solid var(--border);
}
.cat-icon {
display: inline-grid;
place-items: center;
flex: 0 0 auto;
width: 44px;
height: 44px;
border-radius: 12px;
background: color-mix(in srgb, var(--accent) 13%, transparent);
color: var(--accent);
}
.cat-icon svg { width: 23px; height: 23px; display: block; }
.cat-head h3 { margin: 0; font-size: 21px; letter-spacing: -0.02em; }
.cat-head p { margin: 3px 0 0; color: var(--muted); font-size: 14.5px; }
.cat-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.tile {
display: flex;
flex-direction: column;
min-height: 196px;
padding: 22px;
border: 1px solid var(--border);
border-radius: var(--radius);
background: linear-gradient(180deg, var(--panel), color-mix(in srgb, var(--bg-2) 60%, var(--panel)));
box-shadow: var(--shadow);
transition: transform .16s ease, border-color .16s ease;
}
.tile:hover { transform: translateY(-3px); border-color: var(--border-2); }
.tile-icon {
display: inline-grid;
place-items: center;
width: 46px;
height: 46px;
margin-bottom: 16px;
border-radius: 12px;
background: color-mix(in srgb, var(--accent) 13%, transparent);
color: var(--accent);
}
.tile-icon svg { width: 24px; height: 24px; display: block; }
.tile-body { flex: 1; }
.tile-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.tile-top h4 { margin: 0; font-size: 18px; letter-spacing: -0.015em; }
.tile-kind {
flex: 0 0 auto;
color: var(--muted);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.tile-prop { margin: 9px 0 0; color: var(--muted); font-size: 14.5px; line-height: 1.5; }
.tile-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 18px; }
.tile-open {
display: inline-flex;
align-items: center;
gap: 6px;
min-height: 34px;
padding: 0 14px;
border: 1px solid var(--border-2);
border-radius: 9px;
color: var(--fg);
font-size: 13.5px;
font-weight: 700;
transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
.tile-open svg { width: 14px; height: 14px; }
.tile-open:hover {
text-decoration: none;
color: var(--on-accent);
background: var(--accent);
border-color: var(--accent);
}
.tile-flag {
display: inline-flex;
align-items: center;
min-height: 34px;
padding: 0 12px;
border: 1px dashed var(--border-2);
border-radius: 9px;
color: var(--muted);
font-size: 12.5px;
font-weight: 700;
}
.tile-src {
display: inline-flex;
align-items: center;
min-height: 30px;
padding: 0 11px;
border: 1px solid var(--border);
border-radius: 8px;
background: color-mix(in srgb, var(--panel-2) 50%, transparent);
color: var(--muted);
font-size: 12px;
font-weight: 600;
overflow-wrap: anywhere;
}
.tile-src:hover { color: var(--fg); border-color: var(--border-2); text-decoration: none; }
/* ---------- Why / features ---------- */
.features { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.feature {
padding: 26px 24px;
border: 1px solid var(--border);
border-radius: var(--radius);
background: linear-gradient(180deg, var(--panel), color-mix(in srgb, var(--bg-2) 55%, var(--panel)));
}
.feature-icon {
display: inline-grid;
place-items: center;
width: 48px;
height: 48px;
margin-bottom: 16px;
border-radius: 13px;
background: color-mix(in srgb, var(--accent) 13%, transparent);
color: var(--accent);
}
.feature-icon svg { width: 25px; height: 25px; display: block; }
.feature h3 { margin: 0 0 8px; font-size: 18px; letter-spacing: -0.015em; }
.feature p { margin: 0; color: var(--muted); font-size: 14.5px; line-height: 1.55; }
/* ---------- Proof / lightweight numbers ---------- */
.proof-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.proof-card {
display: flex;
flex-direction: column;
padding: 24px;
border: 1px solid var(--border);
border-radius: var(--radius);
background: var(--panel);
box-shadow: var(--shadow);
}
.proof-task { margin: 0; color: var(--muted); font-size: 12px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.proof-big {
margin: 16px 0 2px;
font-size: 38px;
font-weight: 800;
line-height: 1;
letter-spacing: -0.03em;
background: linear-gradient(120deg, var(--accent), var(--accent-2));
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
.proof-sub { margin: 0; color: var(--fg); font-size: 14px; font-weight: 600; }
.proof-vs {
display: flex;
flex-direction: column;
gap: 2px;
margin: 18px 0 0;
padding-top: 16px;
border-top: 1px solid var(--border);
}
.proof-vs > span:first-child { color: var(--fg); font-size: 15px; font-weight: 600; }
.proof-other { color: var(--muted); font-size: 13px; }
.proof-diff { margin: 16px 0 18px; color: var(--ok); font-size: 15px; font-weight: 800; }
.proof-src { margin-top: auto; color: var(--muted); font-size: 12.5px; font-weight: 600; }
.proof-src:hover { color: var(--accent); }
/* ---------- Trust band ---------- */
.trust-band { border-block: 1px solid var(--border); background: color-mix(in srgb, var(--panel) 55%, transparent); }
.trust { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; padding-block: 48px; }
.trust-cell { text-align: center; }
.trust-cell strong {
display: block;
font-size: clamp(30px, 4vw, 40px);
font-weight: 800;
letter-spacing: -0.03em;
}
.trust-cell span { display: block; margin-top: 6px; color: var(--muted); font-size: 14px; font-weight: 600; }
/* ---------- CTA ---------- */
.cta { text-align: center; }
.cta .eyebrow { display: inline-block; }
.cta p { max-width: 56ch; margin: 16px auto 0; color: var(--muted); font-size: 18px; }
/* ---------- Sources ---------- */
.sources-section {
display: grid;
grid-template-columns: minmax(0, 0.95fr) minmax(280px, 1fr);
gap: 32px;
align-items: start;
border-top: 1px solid var(--border);
}
.sources-section p { margin: 14px 0 0; color: var(--muted); font-size: 16px; }
.source-list { display: grid; gap: 10px; }
.source-list a {
display: flex;
align-items: center;
min-height: 48px;
padding: 10px 16px;
border: 1px solid var(--border);
border-radius: 11px;
background: var(--panel);
color: var(--fg);
font-weight: 600;
}
.source-list a:hover { border-color: var(--border-2); text-decoration: none; }
/* ---------- Footer ---------- */
.site-footer {
border-top: 1px solid var(--border);
padding-block: 40px 30px;
background: color-mix(in srgb, var(--panel) 50%, transparent);
}
.footer-grid {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 28px;
flex-wrap: wrap;
padding-bottom: 26px;
border-bottom: 1px solid var(--border);
}
.footer-brand { display: flex; align-items: flex-start; gap: 12px; max-width: 460px; }
.footer-brand strong { font-size: 16px; letter-spacing: -0.01em; }
.footer-brand p { margin: 4px 0 0; font-size: 14px; line-height: 1.5; }
.footer-links { display: flex; flex-wrap: wrap; gap: 22px; }
.footer-links a { color: var(--muted); font-size: 14px; font-weight: 600; }
.footer-links a:hover { color: var(--fg); text-decoration: none; }
.footer-fine { margin: 22px 0 0; text-align: center; font-size: 13px; }
.muted { color: var(--muted); }
/* ---------- Responsive ---------- */
@media (max-width: 1080px) {
.hero-grid { grid-template-columns: 1fr; }
.hero-art { justify-content: flex-start; }
.preview-card { max-width: 560px; }
.features { grid-template-columns: repeat(2, 1fr); }
.proof-grid { grid-template-columns: repeat(2, 1fr); }
.cat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sources-section { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
.shell { width: min(var(--shell), 100% - 32px); }
.section { padding-block: 64px; }
.topbar { padding: 10px 18px; }
.nav-links { gap: 14px; }
.suite { gap: 40px; }
.cat-grid { grid-template-columns: 1fr; }
.trust { grid-template-columns: repeat(2, 1fr); gap: 28px 18px; }
.preview-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 560px) {
.hero-art { display: none; }
.features { grid-template-columns: 1fr; }
.proof-grid { grid-template-columns: 1fr; }
.btn-row .btn { flex: 1 1 auto; }
}
@media (max-width: 380px) {
.trust { grid-template-columns: 1fr; }
}
/* ---------- Theme picker (header) — token-driven ---------- */
.theme-picker { display: inline-flex; align-items: center; }
.theme-select {
appearance: none;
-webkit-appearance: none;
font: inherit;
font-size: 13px;
font-weight: 500;
color: var(--fg);
background: var(--panel);
border: 1px solid var(--border);
border-radius: 9px;
padding: 7px 28px 7px 11px;
cursor: pointer;
line-height: 1.2;
background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);
background-position: calc(100% - 15px) center, calc(100% - 10px) center;
background-size: 5px 5px, 5px 5px;
background-repeat: no-repeat;
transition: border-color .15s ease, background-color .15s ease;
}
.theme-select:hover { border-color: var(--border-2); }
.theme-select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.theme-select optgroup { color: var(--fg); background: var(--panel); font-weight: 700; }
.theme-select option { color: var(--fg); background: var(--panel); font-weight: 500; }