﻿/* â”€â”€ CSS Custom Properties â€” Cerberus EVSE Style Guide v1.0 â”€â”€ */
:root {
    /* Colors */
    --color-bg-deep:        #0A0E12;
    --color-bg-section:     #111820;
    --color-bg-surface:     #1C2430;
    --color-border:         #2A3545;
    --color-text-primary:   #F0F4F8;
    --color-text-secondary: #8A9BB0;
    --color-text-muted:     #526070;
    --color-accent:         #00C2FF;
    --color-accent-dark:    #0090CC;
    --color-accent-glow:    rgba(0, 194, 255, 0.15);
    --color-accent-alt:     #FF6B2B;
    --color-success:        #2ECC71;
    --color-warning:        #F39C12;
    --color-danger:         #E74C3C;

    /* Typography */
    --font-display: 'Barlow Condensed', 'Arial Narrow', sans-serif;
    --font-heading: 'Barlow Semi Condensed', 'Barlow', sans-serif;
    --font-body:    'DM Sans', sans-serif;
    --font-mono:    'DM Mono', 'JetBrains Mono', monospace;

    /* Spacing (8pt base) */
    --space-1:  4px;
    --space-2:  8px;
    --space-3:  12px;
    --space-4:  16px;
    --space-5:  24px;
    --space-6:  32px;
    --space-7:  48px;
    --space-8:  64px;
    --space-9:  96px;
    --space-10: 128px;

    /* Layout */
    --grid-max-width: 1280px;
    --grid-gutter:    24px;
    --radius-sm:      4px;
    --radius-md:      8px;
    --radius-lg:      12px;

    /* Transitions */
    --transition-fast:   150ms ease;
    --transition-base:   200ms ease;
    --transition-slow:   400ms ease;
    --transition-spring: 500ms cubic-bezier(0.16, 1, 0.3, 1);

    /* Theme-aware tokens */
    --color-nav-bg: rgba(10, 14, 18, 0.92);
}

/* ── Light Mode Overrides ────────────────────────────────── */
[data-theme="light"] {
    --color-bg-deep:        #F5F7FA;
    --color-bg-section:     #FFFFFF;
    --color-bg-surface:     #EDF0F4;
    --color-border:         #D0D8E4;
    --color-text-primary:   #0A0E12;
    --color-text-secondary: #4A5568;
    --color-text-muted:     #718096;
    --color-accent:         #0088BB;
    --color-accent-dark:    #006699;
    --color-accent-glow:    rgba(0, 136, 187, 0.12);
    --color-nav-bg:         rgba(245, 247, 250, 0.92);
}

/* â”€â”€ Reset â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
* {
    box-sizing: border-box;
}

/* Prevent unwanted focus outlines and selection artifacts */
*:focus,
*:focus-visible {
    outline: none;
}

*::selection {
    background: var(--color-accent-glow);
    color: var(--color-text-primary);
}

html, body {
    margin: 0;
    padding: 0;
    min-height: 100vh;
    scroll-behavior: smooth;
}

/* â”€â”€ Base â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
body {
    font-family: var(--font-body);
    background: var(--color-bg-deep);
    color: var(--color-text-primary);
    font-size: 16px;
    line-height: 1.7;
}

#blazor-error-ui {
    background: var(--color-danger);
    color: var(--color-text-primary);
    padding: 1rem;
    display: none;
}

a {
    color: inherit;
    text-decoration: none;
}

h1, h2 {
    font-family: var(--font-display);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    line-height: 1.0;
    margin: 0;
}

h3, h4 {
    font-family: var(--font-heading);
    font-weight: 600;
    line-height: 1.2;
    margin: 0;
}

/* â”€â”€ Layout â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.wrap {
    max-width: var(--grid-max-width);
    margin: 0 auto;
    padding: 0 var(--grid-gutter);
}

/* â”€â”€ Navigation â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.nav {
    position: sticky;
    top: 0;
    z-index: 10;
    backdrop-filter: blur(12px);
    background: var(--color-nav-bg);
    border-bottom: 1px solid var(--color-border);
}

.nav .bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 0;
    gap: 12px;
}

.brand {
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 700;
    letter-spacing: .3px;
    font-size:32px;
}

.brand .logo {
    width: 44px;
    height: 44px;
    object-fit: contain;
}

.wordmark {
    font-family: var(--font-display);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.2px;
}

.wordmark .cerb {
    color: var(--color-text-primary);
}

.wordmark .ev {
    color: var(--color-accent);
}

.links {
    display: flex;
    gap: 24px;
    align-items: center;
}

.links a {
    color: var(--color-text-secondary);
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding-bottom: 2px;
    border-bottom: 2px solid transparent;
    transition: color var(--transition-base), border-color var(--transition-base);
}

.links a:hover,
.links a.active {
    color: var(--color-text-primary);
    border-bottom-color: var(--color-accent);
}

.nav-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.user-greeting {
    color: var(--color-text-secondary);
    font-size: 13px;
    font-weight: 500;
}

/* â”€â”€ Hamburger / Mobile â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.hamburger {
    display: none;
    flex-direction: column;
    gap: 5px;
    background: none;
    border: none;
    cursor: pointer;
    padding: 6px;
}

.hamburger span {
    display: block;
    width: 22px;
    height: 2px;
    background: var(--color-text-primary);
    transition: all var(--transition-base);
}

@media (max-width: 768px) {
    .hamburger   { display: flex; }
    .links       { display: none; }
    .nav-actions { display: none; }
}

.mobile-menu {
    position: fixed;
    top: 0;
    right: -100%;
    width: min(320px, 85vw);
    height: 100vh;
    background: var(--color-bg-section);
    border-left: 1px solid var(--color-border);
    z-index: 100;
    transition: right var(--transition-slow);
    display: flex;
    flex-direction: column;
    padding: 24px;
    gap: 24px;
}

.mobile-menu.active {
    right: 0;
}

.mobile-menu-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.close-btn {
    background: none;
    border: none;
    color: var(--color-text-primary);
    font-size: 20px;
    cursor: pointer;
    padding: 4px 8px;
}

/* ── Eyebrow Label ─────────────────────────────────────────── */
.eyebrow {
    display: block;
    font-family: var(--font-body);
    font-size: 11px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--color-accent);
    margin-bottom: var(--space-2);
}

/* ── Typography Scale ──────────────────────────────────────── */
h2 {
    font-size: clamp(32px, 4vw, 44px);
}

h3 {
    font-size: clamp(20px, 2.5vw, 26px);
}

/* ── Buttons ───────────────────────────────────────────────── */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    background: transparent;
    color: var(--color-accent);
    border: 1.5px solid var(--color-accent);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 13px 27px;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: background var(--transition-base), box-shadow var(--transition-base),
                border-color var(--transition-base), color var(--transition-base);
    white-space: nowrap;
    text-decoration: none;
}

.btn:hover {
    background: var(--color-accent-glow);
}

.btn.primary {
    background: var(--color-accent);
    color: #000000;
    border-color: var(--color-accent);
}

.btn.primary:hover {
    background: var(--color-accent-dark);
    border-color: var(--color-accent-dark);
    box-shadow: 0 4px 20px rgba(0, 194, 255, 0.3);
    color: #000000;
}

.btn:disabled,
.btn[disabled] {
    opacity: 0.55;
    cursor: not-allowed;
    pointer-events: none;
}

/* ── Cards ─────────────────────────────────────────────────── */
.card {
    background: var(--color-bg-section);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: var(--space-5);
}

/* ── Section Container ─────────────────────────────────────── */
/* Keep anchor-scroll targets clear of the sticky nav */
[id] {
    scroll-margin-top: 76px;
}

section {
    padding: var(--space-9) 0;
}

@media (max-width: 1024px) {
    section { padding: var(--space-8) 0; }
}

@media (max-width: 768px) {
    section { padding: var(--space-7) 0; }
}

/* ── Section Head ──────────────────────────────────────────── */
.sectionHead {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: var(--space-7);
}

.sectionHead h2 {
    margin-bottom: var(--space-3);
}

.sectionHead p {
    color: var(--color-text-secondary);
    font-size: 16px;
    max-width: 60ch;
    margin: 0;
    line-height: 1.65;
}

/* ── Hero ──────────────────────────────────────────────────── */
.hero {
    background: var(--color-bg-deep);
    padding: var(--space-10) 0 var(--space-9);
    overflow: hidden;
}

.heroGrid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-8);
    align-items: flex-start;
}

.hero h1 {
    font-size: clamp(64px, 8vw, 96px);
    font-weight: 800;
    line-height: 0.95;
    margin-bottom: var(--space-5);
}

.sub {
    color: var(--color-text-secondary);
    font-size: 18px;
    line-height: 1.65;
    max-width: 54ch;
    margin-bottom: var(--space-3);
}

.ctaRow {
    display: flex;
    gap: var(--space-3);
    flex-wrap: wrap;
    margin-top: var(--space-5);
}

.pillRow {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    margin-top: var(--space-5);
}

.pill {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    padding: 4px 10px;
    border-radius: 3px;
    background: rgba(0, 194, 255, 0.08);
    color: var(--color-accent);
    border: 1px solid rgba(0, 194, 255, 0.2);
}

.mediaCard {
    overflow: hidden;
}

.mediaTop {
    background: var(--color-bg-surface);
    border-radius: var(--radius-md) var(--radius-md) 0 0;
    overflow: hidden;
}

.mediaTop img {
    width: 100%;
    height: auto;
    display: block;
}

.mediaBottom {
    padding: var(--space-4) var(--space-5);
    border-top: 1px solid var(--color-border);
}

.mediaBottom .label {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 500;
    color: var(--color-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.mediaBottom .hint {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--color-accent);
    letter-spacing: 0.05em;
    margin-top: var(--space-1);
}

/* Hero load animations — staggered fade-up per style guide §6 */
@keyframes fadeUp {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}

.hero .eyebrow   { animation: fadeUp var(--transition-spring) 100ms both; }
.hero h1         { animation: fadeUp var(--transition-spring) 200ms both; }
.hero .sub       { animation: fadeUp var(--transition-spring) 350ms both; }
.hero .ctaRow    { animation: fadeUp var(--transition-spring) 500ms both; }
.hero .pillRow   { animation: fadeUp var(--transition-spring) 600ms both; }
.hero .mediaCard { animation: fadeUp var(--transition-spring) 300ms both; }

/* Entry animations play once per full page load. When Blazor's interactive
   runtime replaces the prerendered DOM, animations.js sets .anims-played on
   <html> (which survives the swap) so the fresh nodes don't replay them. */
.anims-played .hero .eyebrow,
.anims-played .hero h1,
.anims-played .hero .sub,
.anims-played .hero .ctaRow,
.anims-played .hero .pillRow,
.anims-played .hero .mediaCard,
.anims-played .companyHero .companyName,
.anims-played .companyHero h1,
.anims-played .companyHero .companyLead,
.anims-played .companyHero .heroPillars,
.anims-played .companyHero .companyHeroProduct {
    animation: none;
}

@media (max-width: 900px) {
    .heroGrid {
        grid-template-columns: 1fr;
        gap: var(--space-6);
    }

    .hero {
        padding: var(--space-8) 0;
    }

    .sub {
        max-width: 100%;
    }
}

/* ── Spec Row ──────────────────────────────────────────────── */
.specRow {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: var(--space-3);
    margin-bottom: var(--space-5);
}

.card.spec {
    padding: var(--space-5);
    text-align: center;
}

.card.spec .k {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    margin-bottom: var(--space-2);
}

.card.spec .v {
    font-family: var(--font-mono);
    font-size: 16px;
    font-weight: 500;
    color: var(--color-accent);
}

/* ── Grid 3-up ─────────────────────────────────────────────── */
.grid3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-5);
}

@media (max-width: 900px) {
    .grid3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
    .grid3 { grid-template-columns: 1fr; }
}

/* ── Feature / Benefit Cards ───────────────────────────────── */
.card.feature {
    padding: var(--space-6);
    transition: border-color var(--transition-base), box-shadow var(--transition-base),
                transform var(--transition-base);
}

.card.feature:hover {
    border-color: var(--color-accent);
    box-shadow: 0 0 20px var(--color-accent-glow);
    transform: translateY(-4px);
}

.card.feature .t {
    font-family: var(--font-heading);
    font-size: 18px;
    font-weight: 600;
    color: var(--color-text-primary);
    margin-bottom: var(--space-3);
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.card.feature .icon {
    font-size: 22px;
}

.card.feature .d {
    color: var(--color-text-secondary);
    font-size: 15px;
    line-height: 1.65;
    margin: 0;
}

/* ── Gallery ───────────────────────────────────────────────── */
.gallery {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: var(--space-5);
    align-items: start;
}

.bigImg,
.smallImg {
    border-radius: var(--radius-md);
    overflow: hidden;
    border: 1px solid var(--color-border);
    transition: border-color var(--transition-base);
}

.bigImg:hover,
.smallImg:hover {
    border-color: var(--color-accent);
}

.bigImg img,
.smallImg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.bigImg {
    aspect-ratio: 4/3;
}

.stack {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.smallImg {
    aspect-ratio: 4/3;
}

@media (max-width: 900px) {
    .gallery {
        grid-template-columns: 1fr;
    }

    .stack {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--space-3);
    }
}

/* ── Section Backgrounds ───────────────────────────────────── */
#benefits { background: var(--color-bg-section); }
#contact  { background: var(--color-bg-section); }
#why         { background: var(--color-bg-section); }
#integration { background: var(--color-bg-section); }

/* ── Product Page — Board Render ───────────────────────────── */
.boardRender {
    padding: var(--space-6) var(--space-5);
}

.boardRender svg {
    width: 100%;
    height: auto;
    display: block;
}

/* ── Product Page — Spec Table ─────────────────────────────── */
.specsGrid {
    display: grid;
    grid-template-columns: 1.2fr 0.8fr;
    gap: var(--space-6);
    align-items: start;
}

@media (max-width: 900px) {
    .specsGrid { grid-template-columns: 1fr; }
}

.card.specTableCard {
    padding: var(--space-3) var(--space-5);
}

.specTable {
    width: 100%;
    border-collapse: collapse;
}

.specTable td {
    font-family: var(--font-mono);
    padding: 12px 8px;
    border-bottom: 1px solid var(--color-border);
    vertical-align: top;
}

.specTable tr:last-child td {
    border-bottom: none;
}

.specTable td.k {
    font-size: 11px;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    white-space: nowrap;
    width: 34%;
    padding-top: 15px;
}

.specTable td.v {
    font-size: 14px;
    font-weight: 500;
    color: var(--color-text-primary);
    line-height: 1.5;
}

.specTable td.v.hl {
    color: var(--color-accent);
}

/* ── Product Page — Protocol Stack ─────────────────────────── */
.stackTitle {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    margin-bottom: var(--space-3);
}

.protoStack {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.protoStack .layer {
    font-family: var(--font-mono);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0.05em;
    color: var(--color-text-secondary);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-accent);
    border-radius: var(--radius-sm);
    padding: 10px 14px;
}

.protoStack .layer.phy {
    border-left-color: var(--color-accent-alt);
}

/* ── Product Page — Design-In Steps ────────────────────────── */
.stepNum {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.1em;
    color: var(--color-accent);
    margin-bottom: var(--space-3);
}

.callout {
    border-left: 3px solid var(--color-accent-alt);
    background: var(--color-bg-deep);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    padding: var(--space-5) var(--space-6);
    margin-top: var(--space-6);
}

.callout p {
    color: var(--color-text-secondary);
    font-size: 15px;
    line-height: 1.65;
    max-width: 70ch;
    margin: 0;
}

/* ── Footer ────────────────────────────────────────────────── */
footer {
    background: var(--color-bg-deep);
    border-top: 1px solid var(--color-border);
    padding: var(--space-7) 0 var(--space-6);
}

.footGrid {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--space-6);
}

.footGrid .wordmark {
    font-size: 20px;
    margin-bottom: var(--space-2);
}

.footGrid > div:first-child {
    color: var(--color-text-secondary);
    font-size: 13px;
}

.mini {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--color-text-muted);
    letter-spacing: 0.06em;
}

/* ── Badges ────────────────────────────────────────────────── */
.badge {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    padding: 4px 10px;
    border-radius: 3px;
}

.badge-certified {
    background: rgba(255, 107, 43, 0.15);
    color: var(--color-accent-alt);
    border: 1px solid rgba(255, 107, 43, 0.3);
}

.badge-active {
    background: rgba(46, 204, 113, 0.12);
    color: var(--color-success);
    border: 1px solid rgba(46, 204, 113, 0.3);
}

.badge-pending {
    background: rgba(243, 156, 18, 0.12);
    color: var(--color-warning);
    border: 1px solid rgba(243, 156, 18, 0.3);
}

.badgeRow {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    align-items: center;
}

/* ── Contact / CTA Callout ─────────────────────────────────── */
.card.cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: var(--space-5);
    padding: var(--space-7);
    border-left: 3px solid var(--color-accent);
    border-radius: 0 var(--radius-md) var(--radius-md) 0;
    margin-bottom: var(--space-5);
}

.card.cta p {
    color: var(--color-text-secondary);
    margin: var(--space-2) 0 0;
}

.contact-form-card {
    padding: var(--space-7);
}

.subtitle {
    color: var(--color-text-secondary);
    font-size: 15px;
    margin: var(--space-2) 0 var(--space-6);
}

/* ── Forms ─────────────────────────────────────────────────── */
.form-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-4);
    margin-bottom: var(--space-4);
}

.form-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    margin-bottom: var(--space-4);
}

.form-group label {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-secondary);
}

.form-group label.required::after {
    content: ' *';
    color: var(--color-accent);
}

.form-control {
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-text-primary);
    font-family: var(--font-body);
    font-size: 15px;
    padding: 10px 14px;
    transition: border-color var(--transition-base), box-shadow var(--transition-base);
    width: 100%;
    -webkit-appearance: none;
    appearance: none;
}

.form-control:focus {
    outline: none;
    border-color: var(--color-accent);
    box-shadow: 0 0 0 3px var(--color-accent-glow);
}

.form-control::placeholder {
    color: var(--color-text-muted);
}

textarea.form-control {
    min-height: 120px;
    resize: vertical;
}

select.form-control {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238A9BB0' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 40px;
    cursor: pointer;
}

.alert {
    border-radius: var(--radius-sm);
    padding: var(--space-4) var(--space-5);
    margin-bottom: var(--space-5);
    font-size: 14px;
    line-height: 1.5;
}

.alert-success {
    background: rgba(46, 204, 113, 0.12);
    border: 1px solid rgba(46, 204, 113, 0.3);
    color: var(--color-success);
}

.alert-error {
    background: rgba(231, 76, 60, 0.12);
    border: 1px solid rgba(231, 76, 60, 0.3);
    color: var(--color-danger);
}

.validation-message {
    color: var(--color-danger);
    font-size: 12px;
    font-family: var(--font-mono);
    letter-spacing: 0.02em;
}

.loading-spinner {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 2px solid rgba(0, 0, 0, 0.3);
    border-top-color: #000;
    border-radius: 50%;
    animation: spin 0.6s linear infinite;
    flex-shrink: 0;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

.mobile-menu-links {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.mobile-menu-links a {
    color: var(--color-text-secondary);
    font-family: var(--font-body);
    font-weight: 500;
    font-size: 16px;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 12px 0;
    border-bottom: 1px solid var(--color-border);
    transition: color var(--transition-base);
}

.mobile-menu-links a:hover {
    color: var(--color-text-primary);
}

.mobile-menu-actions {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-top: auto;
}

.user-info {
    padding: 12px 0;
    border-bottom: 1px solid var(--color-border);
}

.mobile-menu-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.6);
    z-index: 99;
}

/* ── Auth / Login Layout ───────────────────────────────────── */
.auth-container {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-bg-deep);
    padding: var(--space-5);
}

.auth-card {
    width: 100%;
    max-width: 400px;
    padding: var(--space-7);
}

.auth-card h1 {
    font-family: var(--font-heading);
    font-size: 22px;
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    line-height: 1.2;
    margin-bottom: var(--space-2);
    text-align: center;
}

.auth-card .subtitle {
    text-align: center;
    margin-bottom: var(--space-6);
}

.auth-footer {
    text-align: center;
    margin-top: var(--space-5);
    font-size: 14px;
    color: var(--color-text-secondary);
}

.auth-footer a {
    color: var(--color-accent);
    transition: color var(--transition-base);
}

.auth-footer a:hover {
    color: var(--color-accent-dark);
}

/* ── Admin Dashboard ───────────────────────────────────────── */
.admin-container {
    padding: var(--space-7) 0 var(--space-9);
    min-height: calc(100vh - 62px);
}

.admin-header {
    margin-bottom: var(--space-6);
}

.admin-header h1 {
    font-size: clamp(24px, 3vw, 36px);
    margin-bottom: var(--space-2);
}

.admin-header p {
    color: var(--color-text-secondary);
    margin: 0;
}

/* Compact stat cards */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: var(--space-3);
    margin-bottom: var(--space-5);
}

@media (max-width: 900px) {
    .stats-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 560px) {
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
}

.stat-card {
    padding: var(--space-4) var(--space-5);
    text-align: center;
}

.stat-value {
    font-family: var(--font-mono);
    font-size: 26px;
    font-weight: 500;
    color: var(--color-accent);
    line-height: 1.1;
}

.stat-label {
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    margin-top: var(--space-1);
}

/* ── Leads Table ───────────────────────────────────────────── */
.leads-table-container {
    overflow-x: auto;
}

.leads-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.leads-table th {
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
    padding: 10px 12px;
    border-bottom: 1px solid var(--color-border);
    text-align: left;
    white-space: nowrap;
}

.leads-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-secondary);
    vertical-align: middle;
}

.leads-table tr:last-child td {
    border-bottom: none;
}

.leads-table tr:hover td {
    background: var(--color-bg-surface);
}

/* ── Status Badges ─────────────────────────────────────────── */
.status-badge {
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    padding: 3px 8px;
    border-radius: 3px;
    white-space: nowrap;
}

.status-new       { background: rgba(0,194,255,0.12);   color: var(--color-accent);     border: 1px solid rgba(0,194,255,0.3); }
.status-contacted { background: rgba(243,156,18,0.12);  color: var(--color-warning);    border: 1px solid rgba(243,156,18,0.3); }
.status-qualified { background: rgba(46,204,113,0.12);  color: var(--color-success);    border: 1px solid rgba(46,204,113,0.3); }
.status-won       { background: rgba(46,204,113,0.20);  color: var(--color-success);    border: 1px solid rgba(46,204,113,0.4); }
.status-lost      { background: rgba(231,76,60,0.12);   color: var(--color-danger);     border: 1px solid rgba(231,76,60,0.3); }
.status-archived  { background: rgba(82,96,112,0.20);   color: var(--color-text-muted); border: 1px solid rgba(82,96,112,0.3); }

/* ── Danger Button Variant ─────────────────────────────────── */
.btn.danger {
    color: var(--color-danger);
    border-color: var(--color-danger);
}

.btn.danger:hover {
    background: rgba(231, 76, 60, 0.12);
}

/* ── Detail value (modal) ──────────────────────────────────── */
.detail-value {
    color: var(--color-text-primary);
    font-weight: 500;
    padding: var(--space-2) 0;
    font-size: 15px;
}

/* ── Utility ───────────────────────────────────────────────── */
.text-muted   { color: var(--color-text-muted); }
.text-center  { text-align: center; }
.mt-4         { margin-top: var(--space-5); }

/* ── Theme toggle button ───────────────────────────────────── */
.theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    padding: 0;
    background: transparent;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    color: var(--color-text-secondary);
    cursor: pointer;
    flex-shrink: 0;
    transition: color var(--transition-base), border-color var(--transition-base),
                background var(--transition-base);
}

.theme-toggle:hover {
    color: var(--color-accent);
    border-color: var(--color-accent);
    background: var(--color-accent-glow);
}

/* Widen the toggle to full-width inside the mobile drawer */
.mobile-menu-actions .theme-toggle {
    width: 100%;
    height: 40px;
    gap: var(--space-2);
    font-family: var(--font-body);
    font-size: 13px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

/* ── Company Hero (homepage) ───────────────────────────────── */
.companyHero {
    background: var(--color-bg-deep);
    padding: var(--space-9) 0;
    overflow: hidden;
}

.companyHeroGrid {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: var(--space-8);
    align-items: center;
}

.companyHero h1 {
    font-size: clamp(48px, 6vw, 80px);
    font-weight: 800;
    line-height: 0.95;
    margin-bottom: var(--space-5);
}

.companyHero .accentDot {
    color: var(--color-accent);
}

.companyLead {
    color: var(--color-text-secondary);
    font-size: 18px;
    line-height: 1.65;
    max-width: 54ch;
    margin: 0 0 var(--space-3);
}

.heroPillars {
    display: grid;
    gap: var(--space-4);
    margin-top: var(--space-6);
}

.heroPillar {
    display: flex;
    gap: var(--space-3);
    align-items: flex-start;
}

.pillarIcon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex-shrink: 0;
    font-size: 17px;
    color: var(--color-accent);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
}

.heroPillar strong {
    display: block;
    font-family: var(--font-heading);
    font-size: 15px;
    font-weight: 600;
    color: var(--color-text-primary);
}

.heroPillar span {
    color: var(--color-text-secondary);
    font-size: 14px;
}

.companyHeroProduct {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

.companyHeroProduct .energyLines {
    position: absolute;
    inset: -10%;
    background: radial-gradient(closest-side, var(--color-accent-glow), transparent 72%);
    pointer-events: none;
}

.companyHeroProduct img {
    position: relative;
    max-width: min(400px, 90%);
    height: auto;
    filter: drop-shadow(0 24px 48px rgba(0, 0, 0, 0.45));
}

.companyHero .companyName    { animation: fadeUp var(--transition-spring) 100ms both; }
.companyHero h1              { animation: fadeUp var(--transition-spring) 200ms both; }
.companyHero .companyLead    { animation: fadeUp var(--transition-spring) 350ms both; }
.companyHero .heroPillars    { animation: fadeUp var(--transition-spring) 500ms both; }
.companyHero .companyHeroProduct { animation: fadeUp var(--transition-spring) 300ms both; }

@media (max-width: 900px) {
    .companyHeroGrid {
        grid-template-columns: 1fr;
        gap: var(--space-6);
    }

    .companyHero {
        padding: var(--space-8) 0;
    }

    .companyHeroProduct {
        order: -1;
    }

    .companyHeroProduct img {
        max-width: min(300px, 80%);
    }
}

/* ── Dog Whistle Product Cards ─────────────────────────────── */
#dog-whistle { background: var(--color-bg-section); }

.productIntro {
    max-width: 72ch;
    margin-bottom: var(--space-7);
}

.productIntro h2 {
    margin-bottom: var(--space-3);
}

.productIntro p {
    color: var(--color-text-secondary);
    font-size: 16px;
    line-height: 1.65;
    margin: 0;
}

.productIntro strong {
    color: var(--color-text-primary);
}

.productCtaRow {
    display: flex;
    gap: var(--space-3);
    flex-wrap: wrap;
    margin-top: var(--space-5);
}

.versionGrid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-5);
}

@media (max-width: 1024px) {
    .versionGrid { grid-template-columns: 1fr; max-width: 560px; margin: 0 auto; }
}

.card.versionCard {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: border-color var(--transition-base), box-shadow var(--transition-base),
                transform var(--transition-base);
}

.card.versionCard:hover {
    border-color: var(--color-accent);
    box-shadow: 0 0 20px var(--color-accent-glow);
    transform: translateY(-4px);
}

.versionHeader {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    border-bottom: 1px solid var(--color-border);
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--color-text-muted);
}

.versionNumber {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    border: 1px solid var(--color-accent);
    border-radius: 3px;
    color: var(--color-accent);
    font-size: 11px;
}

/* Product photography sits on a black stage in both themes (style guide: PCB imagery on black) */
.blackImageStage {
    background: radial-gradient(ellipse at center, #0D141B 0%, #05080B 75%);
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 4 / 3;
    padding: var(--space-5);
    overflow: hidden;
}

.blackImageStage img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.versionBody {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    flex: 1;
    padding: var(--space-5);
    border-top: 1px solid var(--color-border);
}

.versionBody h3 {
    font-size: 19px;
}

.versionBody p {
    color: var(--color-text-secondary);
    font-size: 14px;
    line-height: 1.6;
    margin: 0;
    flex: 1;
}

.tagRow {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
}

/* ── Technology / Capability Band ──────────────────────────── */
.card.featureBand {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-5);
    padding: var(--space-6);
}

@media (max-width: 1024px) {
    .card.featureBand { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 560px) {
    .card.featureBand { grid-template-columns: 1fr; }
}

.featureBandItem {
    display: flex;
    gap: var(--space-3);
    align-items: flex-start;
}

.bandIcon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    flex-shrink: 0;
    font-size: 17px;
    color: var(--color-accent);
    background: var(--color-bg-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
}

.featureBandItem strong {
    display: block;
    font-family: var(--font-heading);
    font-size: 15px;
    font-weight: 600;
    color: var(--color-text-primary);
}

.featureBandItem span {
    color: var(--color-text-secondary);
    font-size: 13px;
    line-height: 1.5;
}

/* ── Dually Teaser (homepage) ──────────────────────────────── */
.card.duallyTeaser {
    display: grid;
    grid-template-columns: 0.8fr 1.2fr;
    gap: var(--space-7);
    align-items: center;
    padding: var(--space-7);
}

@media (max-width: 900px) {
    .card.duallyTeaser { grid-template-columns: 1fr; }
}

.duallyImage {
    border-radius: var(--radius-md);
    aspect-ratio: 3 / 4;
    max-height: 440px;
}

.duallyCopy h2 {
    margin-bottom: var(--space-4);
}

.duallyCopy p {
    color: var(--color-text-secondary);
    font-size: 16px;
    line-height: 1.65;
    max-width: 58ch;
    margin: 0 0 var(--space-4);
}

.duallyCopy .tagRow {
    margin-bottom: var(--space-5);
}

.comingSoon {
    color: var(--color-accent);
}

/* ── Nav "Coming Soon" indicator ───────────────────────────── */
.navSoon {
    color: var(--color-accent);
    font-family: var(--font-mono);
    font-size: 9px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    vertical-align: super;
    margin-left: 3px;
}

/* ── Product photo on the Dog Whistle page hero ────────────── */
.productPhoto {
    aspect-ratio: 4 / 3;
}

.productPhoto img {
    max-height: 340px;
}

/* ── Smooth theme transition ───────────────────────────────── */
body,
.nav,
.card,
.hero,
section,
footer {
    transition: background-color var(--transition-slow), border-color var(--transition-slow),
                color var(--transition-slow);
}