:root{
    --bg:#070707;
    --surface:#101010;
    --surface2:#151515;

    --line:rgba(255,255,255,.10);

    --text:#f4f2ed;
    --muted:#a5a29b;

    --accent:#a855f7;
    --accent-light:#c084fc;
    --accent-dark:#7e22ce;

    --gold:#b98cff;

    --max:1240px;

    --ease:cubic-bezier(.2,.75,.2,1);
}


/* RESET */

*{
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:"DM Sans",sans-serif;
    line-height:1.5;
    overflow-x:hidden;
}


/* GLOBAL BACKGROUND */

body:before{
    content:"";
    position:fixed;
    inset:0;
    pointer-events:none;

    background:
        radial-gradient(
            circle at 50% -10%,
            rgba(168,85,247,.10),
            transparent 34%
        );

    z-index:-2;
}


/* NOISE */

.noise{
    position:fixed;
    inset:0;

    opacity:.035;

    pointer-events:none;

    z-index:20;

    background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");
}


/* CONTAINER */

.container{
    width:min(
        calc(100% - 48px),
        var(--max)
    );

    margin:auto;
}


/* HEADER */

.site-header{
    position:fixed;

    top:0;
    left:0;
    right:0;

    height:82px;

    display:flex;
    align-items:center;
    justify-content:space-between;

    padding:0 30px;

    border-bottom:1px solid rgba(255,255,255,.06);

    background:rgba(7,7,7,.72);

    backdrop-filter:blur(18px);

    z-index:50;
}


/* BRAND */

.brand{
    display:flex;
    align-items:center;

    gap:11px;

    color:var(--text);

    text-decoration:none;

    font:
        700 14px/1
        "Space Grotesk";

    letter-spacing:.13em;
}

.brand .muted{
    color:#777;
    margin-left:3px;
}

.brand-mark{
    width:35px;
    height:35px;

    border:1px solid var(--line);

    display:grid;
    place-items:center;

    border-radius:50%;

    font-size:10px;

    letter-spacing:0;

    transition:
        border-color .3s ease,
        color .3s ease,
        box-shadow .3s ease;
}

.brand:hover .brand-mark{
    border-color:rgba(168,85,247,.7);

    color:var(--accent-light);

    box-shadow:
        0 0 25px rgba(168,85,247,.15);
}


/* NAV */

.nav{
    display:flex;
    align-items:center;

    gap:32px;
}

.nav a,
.footer-links a{
    color:#aaa;

    text-decoration:none;

    font-size:13px;

    transition:
        color .25s ease;
}

.nav a:hover,
.footer-links a:hover{
    color:#fff;
}


/* NAV CTA */

.nav-cta{
    border:1px solid var(--line);

    padding:12px 16px;

    border-radius:30px;

    color:#fff!important;

    transition:
        border-color .3s ease,
        background .3s ease;
}

.nav-cta:hover{
    border-color:rgba(168,85,247,.45);

    background:rgba(168,85,247,.08);
}

.nav-cta span{
    color:var(--accent-light);

    margin-left:5px;
}


/* MOBILE MENU */

.menu-toggle{
    display:none;

    background:none;

    border:0;

    color:#fff;

    padding:5px;
}

.menu-toggle span{
    display:block;

    width:24px;
    height:1px;

    background:#fff;
}


/* HERO */

.hero{
    min-height:850px;

    height:100vh;

    max-height:1000px;

    position:relative;

    display:flex;

    align-items:center;

    overflow:hidden;
}


/* HERO GRID */

.hero-grid{
    position:absolute;

    inset:0;

    opacity:.25;

    background-image:
        linear-gradient(
            rgba(255,255,255,.045) 1px,
            transparent 1px
        ),
        linear-gradient(
            90deg,
            rgba(255,255,255,.045) 1px,
            transparent 1px
        );

    background-size:80px 80px;

    mask-image:
        linear-gradient(
            to bottom,
            #000,
            transparent 78%
        );
}


/* HERO CONTENT */

.hero-inner{
    position:relative;

    z-index:2;

    padding-top:70px;
}


/* EYEBROW */

.eyebrow,
.section-label{
    font-size:11px;

    letter-spacing:.18em;

    text-transform:uppercase;

    color:#888;
}

.eyebrow{
    display:flex;

    align-items:center;

    gap:9px;

    margin-bottom:28px;
}

.eyebrow i{
    width:7px;
    height:7px;

    border-radius:50%;

    background:var(--accent);

    box-shadow:
        0 0 18px rgba(168,85,247,.8);
}


/* HERO TITLE */

.hero-title{
    font:
        500 clamp(55px,8vw,116px)/.9
        "Space Grotesk";

    letter-spacing:-.065em;

    margin:0;

    max-width:1050px;
}

.hero-title em,
.big-statement em,
.cta-title em{
    font-style:normal;

    color:var(--accent-light);
}


/* HERO COPY */

.hero-copy{
    max-width:540px;

    color:#aaa;

    font-size:17px;

    margin:
        32px
        0
        28px;
}


/* HERO ACTIONS */

.hero-actions{
    display:flex;

    align-items:center;

    gap:26px;
}


/* BUTTONS */

.btn{
    display:inline-flex;

    align-items:center;

    justify-content:center;

    gap:16px;

    padding:15px 20px;

    border-radius:40px;

    text-decoration:none;

    font-size:13px;

    font-weight:700;

    transition:
        transform .3s var(--ease),
        box-shadow .3s ease,
        background .3s ease;
}

.btn:hover{
    transform:translateY(-3px);
}


/* PURPLE PRIMARY */

.btn-primary{
    background:
        linear-gradient(
            135deg,
            var(--accent-light),
            var(--accent)
        );

    color:#fff;

    box-shadow:
        0 10px 35px
        rgba(168,85,247,.14);
}

.btn-primary:hover{
    box-shadow:
        0 15px 50px
        rgba(168,85,247,.30);
}


/* TEXT LINK */

.text-link{
    color:#fff;

    text-decoration:none;

    font-size:13px;
}

.text-link span{
    color:var(--accent-light);

    margin-left:8px;
}


/* HERO META */

.hero-meta{
    display:flex;

    gap:13px;

    color:#666;

    font-size:10px;

    letter-spacing:.11em;

    text-transform:uppercase;

    margin-top:75px;
}


/* ORBITS */

.hero-orbit{
    position:absolute;

    border:1px solid rgba(255,255,255,.08);

    border-radius:50%;

    right:-12%;

    top:8%;

    width:720px;
    height:720px;

    animation:
        orbitFloat 12s ease-in-out infinite;
}

.orbit-two{
    width:430px;
    height:430px;

    right:4%;
    top:25%;

    border-color:
        rgba(168,85,247,.20);

    animation-delay:-4s;
}

@keyframes orbitFloat{

    0%,
    100%{
        transform:translateY(0) rotate(0deg);
    }

    50%{
        transform:translateY(-12px) rotate(2deg);
    }
}


/* SCROLL */

.scroll-note{
    position:absolute;

    right:30px;

    bottom:32px;

    color:#666;

    font-size:10px;

    text-transform:uppercase;

    letter-spacing:.15em;

    writing-mode:vertical-rl;

    display:flex;

    gap:10px;

    align-items:center;
}

.scroll-note span{
    height:40px;

    border-left:1px solid #555;
}


/* TICKER */

.ticker{
    border-block:1px solid var(--line);

    overflow:hidden;
}

.ticker-track{
    height:78px;

    display:flex;

    align-items:center;

    justify-content:space-around;

    min-width:900px;

    font:
        600 14px
        "Space Grotesk";

    letter-spacing:.2em;
}

.ticker-track b{
    color:var(--accent-light);

    font-size:11px;
}


/* SECTIONS */

.section{
    padding:150px 0;
}


/* TWO COLUMN */

.two-col{
    display:grid;

    grid-template-columns:
        1fr
        2.4fr;

    gap:70px;
}


/* SECTION LABEL */

.section-label span{
    color:var(--accent-light);

    margin-right:9px;
}


/* SECTION TITLE */

.section-title{
    font:
        500 clamp(42px,5.4vw,76px)/.98
        "Space Grotesk";

    letter-spacing:-.05em;

    margin:
        0
        0
        34px;
}

.section-title span{
    color:#686863;
}


/* ABOUT */

.about-content{
    max-width:820px;
}

.lead{
    font-size:23px;

    line-height:1.45;

    color:#e5e3de;

    margin:
        0
        0
        20px;
}

.about-content>p:not(.lead){
    color:#888;

    max-width:680px;

    font-size:15px;
}


/* STATS */

.stats{
    display:flex;

    border-top:1px solid var(--line);

    margin-top:60px;

    padding-top:25px;

    gap:80px;
}

.stats div{
    display:flex;

    gap:14px;
}

.stats strong{
    font:
        600 28px
        "Space Grotesk";

    color:var(--accent-light);
}

.stats span{
    font-size:11px;

    color:#777;

    line-height:1.4;

    text-transform:uppercase;

    letter-spacing:.08em;
}


/* SERVICES */

.services{
    background:#0b0b0b;

    border-block:1px solid var(--line);
}


/* SECTION TOP */

.section-top{
    display:flex;

    justify-content:space-between;

    align-items:flex-start;

    margin-bottom:55px;
}

.section-kicker{
    font-size:12px;

    color:#777;

    margin:0;
}


/* SERVICES GRID */

.service-grid{
    display:grid;

    grid-template-columns:
        repeat(4,1fr);

    border-top:1px solid var(--line);

    border-left:1px solid var(--line);
}


/* SERVICE CARD */

.service-card{
    min-height:430px;

    padding:28px;

    border-right:1px solid var(--line);

    border-bottom:1px solid var(--line);

    position:relative;

    transition:
        background .35s ease,
        border-color .35s ease;
}

.service-card:hover{
    background:
        linear-gradient(
            145deg,
            rgba(168,85,247,.08),
            transparent 70%
        );

    border-color:
        rgba(168,85,247,.20);
}


/* SERVICE NUMBER */

.service-no{
    font-size:10px;

    color:#555;

    position:absolute;

    right:24px;

    top:28px;
}


/* SERVICE ICON */

.service-icon{
    font:
        400 29px
        "Space Grotesk";

    color:var(--accent-light);

    margin:
        45px
        0
        55px;
}


/* SERVICE TITLE */

.service-card h3{
    font:
        500 27px/1.03
        "Space Grotesk";

    letter-spacing:-.04em;

    margin:
        0
        0
        17px;
}


/* SERVICE TEXT */

.service-card p{
    font-size:13px;

    color:#777;

    line-height:1.7;

    margin:
        0
        0
        30px;
}


/* SERVICE LINK */

.service-card a{
    position:absolute;

    bottom:27px;

    color:#aaa;

    font-size:11px;

    text-decoration:none;

    text-transform:uppercase;

    letter-spacing:.08em;
}

.service-card a span{
    color:var(--accent-light);

    margin-left:8px;
}


/* STACK */

.stack-list{
    display:flex;

    flex-wrap:wrap;

    gap:8px;

    max-width:850px;
}

.stack-list span{
    padding:12px 15px;

    border:1px solid var(--line);

    border-radius:30px;

    color:#aaa;

    font-size:12px;

    transition:
        color .25s ease,
        background .25s ease,
        border-color .25s ease;
}

.stack-list span:hover{
    color:#fff;

    background:
        rgba(168,85,247,.18);

    border-color:
        rgba(168,85,247,.55);
}


/* WORK */

.work-grid{
    display:grid;

    grid-template-columns:
        1.45fr
        1fr;

    gap:28px;
}

.project-large{
    grid-row:span 2;
}


/* PROJECT VISUAL */

.project-visual{
    height:390px;

    border:1px solid var(--line);

    overflow:hidden;

    position:relative;

    background:#111;
}

.project-large .project-visual{
    height:510px;
}


/* PROJECT ONE */

.visual-one{
    background:
        radial-gradient(
            circle at 70% 25%,
            rgba(168,85,247,.30),
            transparent 24%
        ),
        linear-gradient(
            145deg,
            #151515,
            #0a0a0a
        );
}


/* PROJECT TWO */

.visual-two{
    background:
        radial-gradient(
            circle at 50% 50%,
            rgba(185,140,255,.16),
            transparent 45%
        ),
        #101010;
}


/* PROJECT THREE */

.visual-three{
    background:
        linear-gradient(
            135deg,
            #101010,
            #191919
        );
}


/* BROWSER */

.visual-browser{
    position:absolute;

    inset:11% 10%;

    border:1px solid #444;

    background:#0d0d0d;

    padding:25px;

    box-shadow:
        0 25px 60px #000;
}

.visual-browser>span{
    display:inline-block;

    width:6px;
    height:6px;

    border-radius:50%;

    background:#555;

    margin-right:4px;
}


/* MOCK TITLE */

.mock-title{
    font:
        600 clamp(38px,5vw,75px)/.82
        "Space Grotesk";

    letter-spacing:-.06em;

    margin-top:85px;
}


/* MOCK LINE */

.mock-line{
    width:55%;

    height:2px;

    background:
        linear-gradient(
            90deg,
            var(--accent),
            var(--accent-light)
        );

    margin-top:25px;
}


/* GOLD CARD */

.gold-card{
    position:absolute;

    inset:13%;

    border:
        1px solid
        rgba(185,140,255,.45);

    display:flex;

    flex-direction:column;

    justify-content:center;

    padding:35px;

    background:
        linear-gradient(
            145deg,
            rgba(185,140,255,.08),
            transparent
        );
}

.gold-card small{
    color:#a78bd2;

    letter-spacing:.2em;

    font-size:9px;
}

.gold-card strong{
    font:
        500 45px/.88
        "Space Grotesk";

    margin-top:18px;

    letter-spacing:-.06em;

    color:#eee;
}

.gold-card i{
    position:absolute;

    right:28px;

    bottom:25px;

    color:var(--accent-light);

    font-style:normal;

    font-size:11px;
}


/* CODE WINDOW */

.code-window{
    position:absolute;

    inset:13%;

    border:1px solid #333;

    padding:28px;

    display:flex;

    flex-direction:column;

    justify-content:space-between;
}

.code-window span{
    color:var(--accent-light);

    font-family:monospace;
}

.code-window strong{
    font:
        500 48px/.85
        "Space Grotesk";

    letter-spacing:-.06em;
}

.code-window small{
    color:#555;

    font-size:9px;

    letter-spacing:.16em;
}


/* PROJECT INFO */

.project-info{
    display:flex;

    justify-content:space-between;

    gap:25px;

    padding:18px 2px 0;
}

.project-info span{
    font-size:9px;

    color:#666;

    letter-spacing:.13em;
}

.project-info h3{
    font:
        500 25px
        "Space Grotesk";

    margin:
        7px
        0
        0;
}

.project-info p{
    color:#666;

    font-size:11px;

    margin:
        20px
        0
        0;

    text-align:right;
}


/* APPROACH */

.approach{
    background:#0b0b0b;

    border-block:1px solid var(--line);
}

.approach-wrap{
    display:grid;

    grid-template-columns:
        1fr
        1fr;

    gap:100px;

    margin-top:55px;
}


/* BIG STATEMENT */

.big-statement{
    font:
        500 clamp(55px,7vw,100px)/.87
        "Space Grotesk";

    letter-spacing:-.07em;

    margin:0;
}


/* APPROACH POINTS */

.approach-points{
    border-top:1px solid var(--line);
}

.approach-point{
    display:grid;

    grid-template-columns:
        55px
        1fr;

    gap:15px;

    padding:25px 0;

    border-bottom:1px solid var(--line);
}

.approach-point>span{
    font-size:10px;

    color:#555;
}

.approach-point h3{
    font:
        500 17px
        "Space Grotesk";

    margin:
        0
        0
        7px;
}

.approach-point p{
    font-size:12px;

    color:#777;

    margin:0;

    max-width:430px;
}


/* CTA */

.cta{
    position:relative;

    overflow:hidden;

    padding:165px 0;

    border-bottom:1px solid var(--line);
}


/* CTA GLOW */

.cta-glow{
    position:absolute;

    width:700px;
    height:700px;

    border-radius:50%;

    background:
        radial-gradient(
            circle,
            rgba(168,85,247,.18),
            transparent 65%
        );

    left:50%;
    top:40%;

    transform:
        translate(-50%,-50%);

    pointer-events:none;
}


/* CTA INNER */

.cta-inner{
    position:relative;
}


/* CTA TITLE */

.cta-title{
    font:
        500 clamp(60px,9vw,125px)/.85
        "Space Grotesk";

    letter-spacing:-.075em;

    margin:
        45px
        0
        30px;
}


/* CTA COPY */

.cta-copy{
    color:#888;

    max-width:500px;

    font-size:16px;
}


/* CTA ACTIONS */

.cta-actions{
    display:flex;

    gap:12px;

    margin-top:35px;
}


/* GHOST BUTTON */

.btn-ghost{
    border:1px solid var(--line);

    color:#fff;

    background:transparent;
}

.btn-ghost:hover{
    border-color:
        rgba(168,85,247,.5);

    background:
        rgba(168,85,247,.08);
}


/* FOOTER */

.footer{
    padding:30px 0;
}

.footer-inner{
    display:flex;

    align-items:center;

    justify-content:space-between;

    gap:30px;
}

.footer p{
    font-size:10px;

    color:#555;
}

.footer-links{
    display:flex;

    gap:22px;
}


/* REVEAL ANIMATION */

.reveal{
    opacity:0;

    transform:translateY(22px);

    transition:
        opacity .8s var(--ease),
        transform .8s var(--ease);
}

.reveal.is-visible{
    opacity:1;

    transform:none;
}


/* PURPLE SELECTION */

::selection{
    background:var(--accent);

    color:#fff;
}


/* SCROLLBAR */

::-webkit-scrollbar{
    width:8px;
}

::-webkit-scrollbar-track{
    background:#070707;
}

::-webkit-scrollbar-thumb{
    background:#2a1838;

    border-radius:10px;
}

::-webkit-scrollbar-thumb:hover{
    background:#54277a;
}


/* TABLET */

@media(max-width:950px){

    .service-grid{
        grid-template-columns:
            1fr
            1fr;
    }

    .two-col{
        grid-template-columns:1fr;

        gap:35px;
    }

    .work-grid{
        grid-template-columns:1fr;
    }

    .project-large{
        grid-row:auto;
    }

    .project-large .project-visual,
    .project-visual{
        height:420px;
    }

    .approach-wrap{
        grid-template-columns:1fr;

        gap:70px;
    }

}


/* MOBILE */

@media(max-width:700px){

    .container{
        width:min(
            calc(100% - 34px),
            var(--max)
        );
    }


    /* HEADER */

    .site-header{
        height:70px;

        padding:0 17px;
    }


    /* MOBILE MENU */

    .menu-toggle{
        display:flex;

        flex-direction:column;

        gap:5px;

        cursor:pointer;
    }


    .nav{
        position:absolute;

        top:70px;

        left:10px;
        right:10px;

        display:none;

        flex-direction:column;

        align-items:stretch;

        gap:0;

        background:
            rgba(15,15,15,.97);

        border:
            1px solid
            var(--line);

        border-radius:15px;

        padding:10px;

        box-shadow:
            0 25px 60px #000;
    }

    .nav.open{
        display:flex;
    }

    .nav a{
        padding:14px;
    }

    .nav-cta{
        text-align:center;
    }


    /* HERO */

    .hero{
        min-height:720px;
    }

    .hero-title{
        font-size:
            clamp(
                48px,
                14vw,
                72px
            );
    }

    .hero-copy{
        font-size:15px;
    }

    .hero-meta{
        display:none;
    }

    .scroll-note{
        display:none;
    }

    .hero-orbit{
        width:390px;
        height:390px;

        right:-52%;

        top:48%;
    }

    .orbit-two{
        width:250px;
        height:250px;

        right:-5%;

        top:58%;
    }


    /* SECTIONS */

    .section{
        padding:95px 0;
    }

    .section-top{
        display:block;

        margin-bottom:35px;
    }

    .section-kicker{
        margin-top:15px;
    }


    /* ABOUT */

    .lead{
        font-size:19px;
    }


    /* STATS */

    .stats{
        gap:25px;

        justify-content:
            space-between;
    }

    .stats div{
        display:block;
    }

    .stats strong{
        display:block;

        margin-bottom:5px;
    }


    /* SERVICES */

    .service-grid{
        grid-template-columns:1fr;
    }

    .service-card{
        min-height:370px;
    }

    .service-icon{
        margin:
            30px
            0
            45px;
    }


    /* WORK */

    .project-large .project-visual,
    .project-visual{
        height:320px;
    }

    .mock-title{
        margin-top:55px;
    }

    .code-window strong{
        font-size:38px;
    }

    .project-info{
        display:block;
    }

    .project-info p{
        text-align:left;

        margin-top:8px;
    }


    /* APPROACH */

    .approach-wrap{
        gap:50px;
    }


    /* CTA */

    .cta{
        padding:110px 0;
    }

    .cta-title{
        font-size:
            clamp(
                55px,
                16vw,
                80px
            );
    }


    /* FOOTER */

    .footer-inner{
        flex-direction:column;

        align-items:flex-start;
    }

    .footer-links{
        flex-wrap:wrap;
    }


    /* TICKER */

    .ticker-track{
        height:60px;
    }

    .ticker-track span{
        font-size:11px;
    }

}