/* Home experience — logo-free body, lightweight geometry and mobile-first layout. */

.tnx-home {
    --home-accent: #f5bd44;
    --home-accent-rgb: 245, 189, 68;
    --home-secondary: #31c7f3;
    --home-secondary-rgb: 49, 199, 243;
    padding-block-end: 100px;
}

.tnx-home-hero {
    padding: clamp(32px, 7vw, 94px) 0 clamp(56px, 8vw, 110px);
}

.tnx-home-hero__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(430px, .95fr);
    gap: clamp(34px, 7vw, 92px);
    align-items: center;
    min-height: min(760px, calc(100svh - 110px));
}

.tnx-home-hero__copy {
    position: relative;
    z-index: 2;
}

.tnx-home-hero__copy h1 {
    max-width: 13ch;
    margin: 18px 0;
    font-size: clamp(2.7rem, 7vw, 6.8rem);
    line-height: .96;
    letter-spacing: -.055em;
    font-weight: 980;
}

.tnx-home-hero__copy h1 em {
    font-style: normal;
    background: linear-gradient(120deg, var(--home-accent), var(--home-secondary));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
}

.tnx-home-hero__copy > p {
    max-width: 62ch;
    margin: 0;
    color: var(--tnx-muted);
    font-size: clamp(1rem, 1.7vw, 1.2rem);
    line-height: 2;
}

.tnx-home-trust {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-block-start: 24px;
}

.tnx-home-trust span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 36px;
    padding: 0 11px;
    border: 1px solid var(--tnx-line);
    border-radius: 12px;
    background: var(--tnx-card);
    color: var(--tnx-muted);
    font-size: .75rem;
    font-weight: 850;
}

.tnx-home-trust span::before {
    content: "✓";
    color: var(--home-accent);
    font-weight: 950;
}

.tnx-ecosystem-scene {
    position: relative;
    min-height: 520px;
    display: grid;
    place-items: center;
    perspective: 1200px;
    isolation: isolate;
}

.tnx-ecosystem-scene::before {
    content: "";
    position: absolute;
    width: 88%;
    aspect-ratio: 1;
    border-radius: 50%;
    background:
        radial-gradient(circle, rgba(var(--home-secondary-rgb), .18), transparent 58%),
        repeating-radial-gradient(circle, transparent 0 34px, rgba(255,255,255,.055) 35px 36px);
    mask-image: radial-gradient(circle, #000 50%, transparent 78%);
}

.tnx-ecosystem-scene__core {
    position: relative;
    z-index: 4;
    width: 190px;
    aspect-ratio: 1;
    display: grid;
    place-items: center;
    padding: 24px;
    border: 1px solid rgba(var(--home-accent-rgb), .36);
    border-radius: 42% 58% 47% 53% / 50% 42% 58% 50%;
    background:
        radial-gradient(circle at 28% 20%, rgba(255,255,255,.3), transparent 24%),
        linear-gradient(145deg, rgba(var(--home-accent-rgb), .88), rgba(var(--home-secondary-rgb), .62));
    color: #07111e;
    text-align: center;
    box-shadow:
        0 42px 95px rgba(0,0,0,.36),
        0 0 80px rgba(var(--home-accent-rgb), .22),
        inset -22px -28px 46px rgba(0,0,0,.2);
    transform-style: preserve-3d;
    animation: tnx-home-core 10s ease-in-out infinite;
}

.tnx-ecosystem-scene__core strong,
.tnx-ecosystem-scene__core small {
    display: block;
}

.tnx-ecosystem-scene__core strong {
    font-size: 1.08rem;
    line-height: 1.45;
    font-weight: 980;
}

.tnx-ecosystem-scene__core small {
    margin-block-start: 7px;
    opacity: .72;
    font-size: .7rem;
    font-weight: 850;
}

.tnx-service-node {
    --node-x: 0px;
    --node-y: 0px;
    --node-accent: var(--home-secondary);
    position: absolute;
    z-index: 5;
    inset: 50% auto auto 50%;
    width: min(190px, 36vw);
    min-height: 76px;
    display: grid;
    align-content: center;
    gap: 3px;
    padding: 13px 15px;
    border: 1px solid color-mix(in srgb, var(--node-accent) 34%, var(--tnx-line));
    border-radius: 19px;
    background: color-mix(in srgb, var(--tnx-surface-strong) 94%, transparent);
    box-shadow: 0 18px 45px rgba(0,0,0,.22), 0 0 30px color-mix(in srgb, var(--node-accent) 13%, transparent);
    transform: translate(calc(-50% + var(--node-x)), calc(-50% + var(--node-y))) rotateY(-8deg);
    backdrop-filter: blur(16px);
    transition: transform .2s ease, border-color .2s ease;
}

.tnx-service-node:hover {
    transform: translate(calc(-50% + var(--node-x)), calc(-50% + var(--node-y) - 5px)) rotateY(0);
    border-color: color-mix(in srgb, var(--node-accent) 60%, transparent);
}

.tnx-service-node::before {
    content: "";
    position: absolute;
    inset-inline-start: -32px;
    inset-block-start: 50%;
    width: 31px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--node-accent));
    opacity: .55;
}

.tnx-service-node strong {
    color: var(--node-accent);
    font-size: .9rem;
    font-weight: 950;
}

.tnx-service-node small {
    color: var(--tnx-muted);
    font-size: .7rem;
    line-height: 1.55;
}

.tnx-service-node--consult { --node-x: 0px; --node-y: -205px; --node-accent: #53e3a6; }
.tnx-service-node--learn { --node-x: 220px; --node-y: -80px; --node-accent: #43d7ff; }
.tnx-service-node--build { --node-x: 185px; --node-y: 145px; --node-accent: #ffbb45; }
.tnx-service-node--publish { --node-x: -185px; --node-y: 145px; --node-accent: #ff6fae; }
.tnx-service-node--compete { --node-x: -220px; --node-y: -80px; --node-accent: #ffce52; }

.tnx-home-section {
    padding: clamp(58px, 8vw, 108px) 0;
}

.tnx-home-section__head {
    max-width: 760px;
    margin-block-end: 32px;
}

.tnx-home-section__head span {
    color: var(--home-accent);
    font-size: .76rem;
    font-weight: 950;
}

.tnx-home-section__head h2 {
    margin: 8px 0 10px;
    font-size: clamp(2rem, 5vw, 4rem);
    line-height: 1.08;
    font-weight: 970;
}

.tnx-home-section__head p {
    margin: 0;
    color: var(--tnx-muted);
    line-height: 1.95;
}

.tnx-journey {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    padding: 0;
    list-style: none;
    counter-reset: journey;
}

.tnx-journey li {
    position: relative;
    min-height: 210px;
    padding: 22px;
    border: 1px solid var(--tnx-line);
    border-radius: 25px;
    background: var(--tnx-card);
    overflow: hidden;
    counter-increment: journey;
}

.tnx-journey li::after {
    content: counter(journey, decimal-leading-zero);
    position: absolute;
    inset: auto auto -24px -6px;
    color: rgba(var(--home-secondary-rgb), .08);
    font-size: 7rem;
    line-height: 1;
    font-weight: 980;
}

html[dir="ltr"] .tnx-journey li::after {
    inset-inline: auto -6px;
}

.tnx-journey b {
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: rgba(var(--home-accent-rgb), .13);
    color: var(--home-accent);
    font-weight: 950;
}

.tnx-journey strong {
    display: block;
    margin-block-start: 18px;
    font-size: 1.05rem;
    font-weight: 950;
}

.tnx-journey p {
    position: relative;
    z-index: 1;
    margin: 8px 0 0;
    color: var(--tnx-muted);
    line-height: 1.85;
    font-size: .86rem;
}

.tnx-engine {
    display: grid;
    grid-template-columns: .9fr 1.1fr;
    gap: clamp(30px, 7vw, 90px);
    align-items: center;
    padding: clamp(28px, 6vw, 64px);
    border: 1px solid var(--tnx-line);
    border-radius: 38px;
    background:
        linear-gradient(135deg, rgba(var(--home-secondary-rgb), .08), transparent 45%),
        var(--tnx-surface);
    overflow: hidden;
}

.tnx-engine__visual {
    position: relative;
    min-height: 360px;
    display: grid;
    place-items: center;
    perspective: 900px;
}

.tnx-engine__visual i {
    position: absolute;
    width: var(--ring-size, 78%);
    aspect-ratio: 1;
    border: 1px solid rgba(var(--home-secondary-rgb), .24);
    border-radius: 50%;
    transform: rotateX(var(--ring-x, 68deg)) rotateZ(var(--ring-z, 0deg));
    animation: tnx-home-ring 18s linear infinite;
}

.tnx-engine__visual i:nth-child(2) { --ring-size: 58%; --ring-x: 74deg; --ring-z: 55deg; animation-duration: 13s; animation-direction: reverse; }
.tnx-engine__visual i:nth-child(3) { --ring-size: 92%; --ring-x: 62deg; --ring-z: -42deg; animation-duration: 27s; }

.tnx-engine__core {
    position: relative;
    z-index: 3;
    width: 150px;
    aspect-ratio: 1;
    display: grid;
    place-items: center;
    border-radius: 28px;
    background: linear-gradient(145deg, var(--home-secondary), #776dff);
    color: #07111e;
    font-size: 1.1rem;
    font-weight: 980;
    box-shadow: 0 30px 70px rgba(0,0,0,.3), 0 0 60px rgba(var(--home-secondary-rgb), .2);
    transform: rotateX(12deg) rotateY(-14deg) rotateZ(4deg);
}

.tnx-engine__copy h2 {
    margin: 0 0 12px;
    font-size: clamp(2rem, 4.5vw, 3.8rem);
    line-height: 1.1;
    font-weight: 970;
}

.tnx-engine__copy p {
    color: var(--tnx-muted);
    line-height: 2;
}

.tnx-engine__copy ul {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    margin: 24px 0;
    padding: 0;
    list-style: none;
}

.tnx-engine__copy li {
    padding: 12px;
    border: 1px solid var(--tnx-line);
    border-radius: 15px;
    background: var(--tnx-card);
    color: var(--tnx-muted);
    text-align: center;
    font-size: .78rem;
    font-weight: 850;
}

.tnx-brand-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.tnx-brand-card {
    --card-accent: #58d6ff;
    position: relative;
    min-height: 190px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 20px;
    align-items: end;
    padding: 24px;
    border: 1px solid var(--tnx-line);
    border-radius: 27px;
    background:
        radial-gradient(circle at 90% 10%, color-mix(in srgb, var(--card-accent) 15%, transparent), transparent 38%),
        var(--tnx-card);
    overflow: hidden;
    transition: transform .2s ease, border-color .2s ease;
}

.tnx-brand-card:hover {
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--card-accent) 42%, transparent);
}

.tnx-brand-card::before,
.tnx-brand-card::after {
    content: "";
    position: absolute;
    border: 1px solid color-mix(in srgb, var(--card-accent) 30%, transparent);
    border-radius: 50%;
    pointer-events: none;
}

.tnx-brand-card::before {
    width: 180px;
    aspect-ratio: 1;
    inset: -70px -55px auto auto;
}

.tnx-brand-card::after {
    width: 110px;
    aspect-ratio: 1;
    inset: -28px -18px auto auto;
}

html[dir="ltr"] .tnx-brand-card::before { inset-inline: auto -55px; }
html[dir="ltr"] .tnx-brand-card::after { inset-inline: auto -18px; }

.tnx-brand-card__copy {
    position: relative;
    z-index: 2;
}

.tnx-brand-card strong {
    display: block;
    color: var(--card-accent);
    font-size: 1.3rem;
    font-weight: 970;
}

.tnx-brand-card p {
    max-width: 54ch;
    margin: 8px 0 0;
    color: var(--tnx-muted);
    line-height: 1.8;
    font-size: .84rem;
}

.tnx-brand-card b {
    position: relative;
    z-index: 2;
    color: var(--card-accent);
    font-size: .78rem;
}

.tnx-home-cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: clamp(25px, 5vw, 52px);
    border: 1px solid rgba(var(--home-accent-rgb), .25);
    border-radius: 34px;
    background:
        linear-gradient(120deg, rgba(var(--home-accent-rgb), .13), rgba(var(--home-secondary-rgb), .08)),
        var(--tnx-surface);
}

.tnx-home-cta h2 {
    margin: 0 0 7px;
    font-size: clamp(1.5rem, 3.5vw, 2.7rem);
}

.tnx-home-cta p {
    margin: 0;
    color: var(--tnx-muted);
    line-height: 1.8;
}

@keyframes tnx-home-core {
    0%, 100% { transform: translateY(-8px) rotateX(8deg) rotateY(-10deg) rotateZ(-2deg); border-radius: 42% 58% 47% 53% / 50% 42% 58% 50%; }
    50% { transform: translateY(10px) rotateX(-7deg) rotateY(12deg) rotateZ(5deg); border-radius: 58% 42% 55% 45% / 42% 58% 45% 55%; }
}

@keyframes tnx-home-ring {
    to { transform: rotateX(var(--ring-x, 68deg)) rotateZ(calc(var(--ring-z, 0deg) + 360deg)); }
}

@media (max-width: 1100px) {
    .tnx-home-hero__grid {
        grid-template-columns: 1fr;
        min-height: auto;
    }

    .tnx-ecosystem-scene {
        min-height: 570px;
        order: -1;
    }

    .tnx-journey {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 800px) {
    .tnx-engine {
        grid-template-columns: 1fr;
    }

    .tnx-engine__visual {
        min-height: 300px;
    }

    .tnx-brand-grid {
        grid-template-columns: 1fr;
    }

    .tnx-home-cta {
        display: grid;
    }
}

@media (max-width: 640px) {
    .tnx-home-hero {
        padding-block-start: 24px;
    }

    .tnx-home-hero__copy h1 {
        font-size: clamp(2.45rem, 15vw, 4rem);
    }

    .tnx-ecosystem-scene {
        min-height: 490px;
        transform: scale(.9);
        margin-inline: -8%;
    }

    .tnx-ecosystem-scene__core {
        width: 140px;
        padding: 17px;
    }

    .tnx-service-node {
        width: 145px;
        min-height: 64px;
        padding: 10px;
    }

    .tnx-service-node--consult { --node-y: -170px; }
    .tnx-service-node--learn { --node-x: 135px; --node-y: -65px; }
    .tnx-service-node--build { --node-x: 110px; --node-y: 130px; }
    .tnx-service-node--publish { --node-x: -110px; --node-y: 130px; }
    .tnx-service-node--compete { --node-x: -135px; --node-y: -65px; }

    .tnx-service-node::before {
        display: none;
    }

    .tnx-journey,
    .tnx-engine__copy ul {
        grid-template-columns: 1fr;
    }

    .tnx-engine {
        padding: 22px;
        border-radius: 27px;
    }

    .tnx-brand-card {
        min-height: 170px;
        grid-template-columns: 1fr;
        padding: 20px;
    }

    .tnx-home-cta .tnx-button {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .tnx-ecosystem-scene__core,
    .tnx-engine__visual i {
        animation: none;
    }
}

body.is-low-power .tnx-ecosystem-scene__core,
body.is-low-power .tnx-engine__visual i {
    animation: none;
}
