@font-face
{
    font-family: "Delight";
    font-style: normal;
    font-weight: 100 900;
    src: url("https://lockesoftware.co.uk/fonts/Delight-VF.ttf") format("truetype");
}

@font-face
{
    font-family: "Host Grotesk";
    font-style: normal;
    font-weight: 100 900;
    src: url("https://lockesoftware.co.uk/fonts/HostGrotesk-VariableFont_wght.ttf") format("truetype");
}

@font-face
{
    font-family: "Host Grotesk";
    font-style: italic;
    font-weight: 100 900;
    src: url("https://lockesoftware.co.uk/fonts/HostGrotesk-Italic-VariableFont_wght.ttf") format("truetype");
}

body
{
    --colour-accent: #0048ff;
    --colour-product: #0048ff; /* override in html file */
    --page-background: white; /* override in html file */

    --font-header: "Delight", sans-serif;
    --font-body: "Host Grotesk", sans-serif;
    --font-monospace: "JetBrains Mono", monospace;

    --common_padding_horizontal: calc((100vw - 1000px) / 2);

    --easing-quart-out: cubic-bezier(0.25, 1, 0.5, 1);

    margin: 0;
    background-color: black; /* ty iOS 26 gfys */
}

.compactOnly { display: none; }

h1
{
    font-family: var(--font-header);
    font-weight: 400;
    font-size: 32px;
}

h1.largeSectionTitle
{
    text-align: center;
    font-size: 64px;
    font-weight: 700;
    margin-top: 160px !important;
}

h1.largeSectionTitle:first-of-type
{
    margin-top: revert !important;
}

h2
{
    font-family: var(--font-header);
    font-weight: 400;
    font-size: 24px;
}

h3
{
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 17px;
}

p
{
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 17px;
}

p.preamble
{
    font-size: 24px;
    font-weight: 300;
    line-height: 1.5;
    color: #777;
}

p.warning
{
    font-family: var(--font-body);
    font-weight: 700;
    font-size: 17px;
    color: #FF4400;
}

p.footnote
{
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 14px;
    color: #777;
}

p.mono, span.mono
{
    font-family: var(--font-monospace);
}

a
{
    text-decoration: none;
}

a.carouselButton
{
    padding-inline: 1.25em;
    padding-top: .35em;
    padding-bottom: .35em;
    background: var(--tint);
    border-radius: 100px;
    text-decoration: none;
    font-weight: normal;
    color: var(--inverse-tint);

    transition: background-color     0.25s      ease-out,
                color                0.2s       ease-out;
}

a.carouselButton:first-child { margin-inline-end: 1em; }
a.carouselButton:last-child { display: none; margin-inline-end: 1em; }

a.carouselButton:hover
{
    background: var(--inverse-tint);
    color: var(--tint);
}

article
{
    min-height: calc(100vh - 420px);
    width: 1000px;
    background-color: var(--page-background);

    h1
    {
        margin-top: 160px;
        margin-bottom: 0;
    }

    svg + h1
    {
        margin-top: 40px;
        margin-bottom: 0;
    }

    h1:first-child, p.preamble:first-child + h1, p.preamble
    {
        margin-top: 80px;
    }

    h2, h3, p
    {
        margin-top: 50px;
        margin-bottom: 0;
    }

    h2 + p, h3 + p, p.warning, p.warning + *
    {
        margin-top: 30px;
        margin-bottom: 0;
    }

    h1:last-child, h2:last-child, p:last-child, p.preamble:first-child, ul:last-child
    {
        margin-bottom: 80px;
    }

    ul, ol
    {
        padding-left: 20px;

        li
        {
            font-family: var(--font-body);
            font-weight: 400;
            font-size: 17px;
            padding-inline-start: 20px;
            margin-bottom: 15px;
        }
    }

    ul li { list-style-type: disc; }

    ul ul, ol ol, ul ol, ol ul { padding-top: 20px; }
}

article.principal
{
    padding-top: 210px !important;

    h1:nth-child(2)
    {
        font-size: 44px;
        font-weight: 300;
    }
}

article:not(.nonConforming)
{
    min-height: calc(100vh - 660px);
    padding: 80px var(--common_padding_horizontal) 160px var(--common_padding_horizontal);
}

main#contentGrid
{
    --gutter: 80px;
    display: grid;
    min-height: 100vh;
    padding: 80px;

    grid-template-columns: repeat(2, 1fr);
    grid-column-gap: var(--gutter);
    grid-row-gap: var(--gutter);

    div
    {
        height: calc(100vh - (var(--gutter) * 2));
    }
}

div.input
{
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 17px;
    margin: 30px 0;
}

button, a.button
{
    text-decoration: none;
    font-family: var(--font-body);
    font-weight: 400;
    font-size: 17px;
    padding: 7px 15px;
    border: none;
    border-radius: 7px;
    background-color: #EEE;
    color: #111111;

    transition: background-color .2s ease-in-out,
                opacity .2s ease-in-out;
}

button:hover, a.button:hover
{
    background-color: #DEDEDE;
    cursor: pointer;
}

button:active, a.button:active
{
    opacity: .5;
    cursor: pointer;
}

@media only screen and (max-width: 1099px)
{
    .compactOnly { display: initial; }
    .desktopOnly { display: none; }

    h1
    {
        font-family: var(--font-header);
        font-weight: 400;
        font-size: 24px;
    }

    h1.largeSectionTitle
    {
        font-size: 48px;
        margin-top: 100px;
    }

    h2
    {
        font-family: var(--font-header);
        font-weight: 500;
        font-size: 17px;
    }

    a.carouselButton:first-child { display: none; }
    a.carouselButton:last-child { display: inline-block; margin-top: 20px; }

    article
    {
        min-height: calc(100vh - 360px - 80px);
        width: calc(100vw - 80px);
        padding: 40px !important;

        h1
        {
            margin-top: 120px;
            margin-bottom: 0;
        }

        p.preamble { margin-top: 40px; }

        h1:first-child, p.preamble:first-child + h1
        {
            margin-top: 0;
        }

        h2, h3, p
        {
            margin-top: 50px;
            margin-bottom: 0;
        }

        h2 + p, h3 + p, p.warning, p.warning + *
        {
            margin-top: 20px;
            margin-bottom: 0;
        }

        h1:last-child, h2:last-child, p:last-child, p.preamble:first-child, p.preamble:first-of-type, ul:last-child
        {
            margin-bottom: 80px;
        }

        ul
        {
            padding-left: 20px;

            li
            {
                font-family: var(--font-body);
                font-weight: 400;
                font-size: 17px;
                padding-inline-start: 20px;
                margin-bottom: 15px;
            }
        }
    }

    article.principal
    {
        padding-top: 130px !important;
    }

    main#contentGrid
    {
        --gutter: 20px;
        padding: 40px 20px;

        grid-template-columns: 1fr;
    }
}

/*HEADER*/

header#titleBar
{
    display: grid;
    background-color: #FFFFFF00;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: 1fr;
    position: fixed;
    width: calc(100vw - (170px * 2));
    height: 60px;
    padding: 0 170px;
    z-index: 990;

    transition: background-color .5s var(--easing-quart-out);

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

    a:hover
    {
        text-decoration: underline;
    }

    p
    {
        margin: 0;
        font-family: var(--font-body);
        font-size: 16px;
        align-self: center;
        grid-area: 1 / 1 / 2 / 2;
    }

    div
    {
        margin: 0;
        color: #444;
        align-self: center;
        grid-area: 1 / 2 / 2 / 3;

        h1
        {
            position: absolute;
            left: 0;
            right: 0;
            top: calc((60px - 39.44px) / 2);
            margin-inline: auto;
            width: fit-content;
            font-family: var(--font-header);
            font-size: 16px;
            text-transform: uppercase;
            letter-spacing: 1.25px;
            text-align: center;

            transition: filter     .5s var(--easing-quart-out),
                        transform  .5s var(--easing-quart-out),
                        opacity    .5s var(--easing-quart-out);
        }

        h1:last-child
        {
            transform: translateY(10px);
            opacity: 0;

            transition: transform  .5s var(--easing-quart-out),
                        opacity    .5s var(--easing-quart-out);
        }
    }

    div.showPageTitle
    {
        h1:first-child
        {
            filter: blur(5px);
            transform: scale(.75, .75);
            opacity: 0;
        }

        h1:last-child
        {
            transform: revert;
            opacity: 1;
        }
    }
}

header#titleBar.withHeader
{
    background-color: #F0F0F000 !important;
}

header#titleBar.showPageTitle
{
    background-color: #FFFFFFFF !important;
}

header#titleBar.withHeader.showPageTitle
{
    background-color: #F0F0F0FF !important;
}

header#pageHeader
{
    background-color: #F0F0F0;
    width: 1000px;
    height: 138px;
    padding: 150px var(--common_padding_horizontal) 112px var(--common_padding_horizontal);

    p { margin: 0 0 20px 0; }

    p a
    {
        color: var(--colour-accent);
        font-size: 17px;
        text-decoration: none;
    }

    p a:hover
    {
        text-decoration: underline;
    }

    h1
    {
        margin: 0;
        font-family: var(--font-header);
        font-size: 64px;
        font-weight: 270;
    }

    h2
    {
        margin: 15px 0 0 0;
        color: #555;
        font-family: var(--font-body);
        font-size: 32px;
        font-weight: 300;
    }

    *
    {
        transition: filter     .5s var(--easing-quart-out),
                    transform  .5s var(--easing-quart-out),
                    opacity    .5s var(--easing-quart-out);
    }
}

header#pageHeader.hidePageTitle
{
    *
    {
        filter: blur(10px);
        transform: translateY(-20px) scale(.85, .85);
        opacity: 0;
    }
}

header#carousel
{
    --items: 3;

    width: 100vw;
    height: calc(100vh - 100px);

    ul
    {
        width: 100%;
        height: 100%;
        display: flex;
        margin: 0;
        padding: 0;

        overflow-x: scroll;
        scrollbar-width: none;
        scroll-snap-type: x mandatory;

        li
        {
            position: relative;
            list-style-type: none;
            scroll-snap-align: center;
            flex: 0 0 100%;

            div
            {
                color: var(--tint);

                h2
                {
                    font-size: 17px;
                    font-weight: 400;
                    letter-spacing: 5px;
                    text-transform: uppercase;
                    opacity: .5;
                    margin: 0 0 10px 0;
                }

                h1
                {
                    font-size: 48px;
                    font-weight: 400;
                    margin: 0 0 40px 0;
                }

                p
                {
                    font-size: 21px;
                    font-weight: 300;
                }

                position: absolute;
                bottom: 100px;
                margin: 0 10vw 0 10vw;
            }

            div.centred
            {
                text-align: center;
                align-content: center;
                top: 45%;
                left: 0;
                right: 0;
                bottom: revert;
            }
        }
    }

    div.paginator
    {
        position: relative;
        margin: 0 auto 0 auto;
        bottom: 80px;

        width: calc((var(--items) * 10px) + (var(--items) - 1) * 15px);
        height: 10px;

        backdrop-filter: blur(20px);
        -webkit-backdrop-filter: blur(20px);
        background-color: #1A1A1A77;
        border: 1px solid #77777733;
        border-radius: 25px;
        padding: 17px 20px;

        display: flex;
        gap: 15px;

        div
        {
            background-color: white;
            border-radius: 5px;
            width: 10px;
            flex-grow: 0;
            pointer-events: none;
            transition: opacity 200ms ease-out;
        }

        div.inactive
        {
            pointer-events: revert;
            opacity: 40%;
        }

        div.inactive:hover
        {
            cursor: pointer;
            opacity: 100%;
        }
    }
}

header#carousel:nth-child(2)
{
    height: 100vh;
}

@media only screen and (max-width: 1099px)
{
    header#titleBar
    {
        width: calc(100vw - 170px - 30px);
        padding-right: 30px !important;

        p
        {
            display: none;
        }

        div
        {
            h1
            {
                font-size: 14px;
                text-align: end;

                left: 0;
                margin-inline-start: auto;
                margin-inline-end: 30px;
                width: 50%;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
        }
    }

    header#pageHeader
    {
        background-color: #F0F0F0;
        width: calc(100vw - 80px);
        height: revert;
        padding: 150px 40px 112px 40px;

        h1
        {
            margin: 20px 0;
            font-family: var(--font-header);
            font-size: 48px;
            font-weight: 270;
        }

        h2
        {
            margin-top: 20px;
            color: #555;
            font-family: var(--font-body);
            font-size: 24px;
            font-weight: 300;
        }
    }

    header#carousel
    {
        height: calc(100vh - 60px);
    }
}



/*FOOTER*/

footer
{
    background-color: black;
    color: white;
    width: 1000px;
    padding: 80px var(--common_padding_horizontal);
    height: 260px;

    a
    {
        color: white;
    }

    h1
    {
        font-family: "Delight", sans-serif;
        font-weight: 400;
        font-size: 30px;
        margin-top: 30px;
        margin-bottom: 20px;
    }

    p
    {
        margin: 0;
        font-family: "Host Grotesk", sans-serif;
        font-size: 17px;
    }

    div#footerBottomItems
    {
        margin-top: 68px;

        display: flex;
        flex-direction: row;

        p
        {
            margin: 0 50px 0 0;


            a
            {
                text-decoration: underline;
            }


            a:has(span)
            {
                text-decoration: none;
                span { text-decoration: underline !important; }
            }
        }

        div
        {
            flex-grow: 1;
        }

        p:last-child
        {
            margin: 0;
        }

        svg.decorator
        {
            margin-right: 10px;
            padding-bottom: 4px;
            vertical-align: middle;
        }
    }

    div#footerTopItems
    {
        display: flex;
        flex-direction: row;

        div:nth-child(2)
        {
            flex-grow: 1;
        }

        div:last-child
        {
            width: 232px;
            height: 40px;
        }

        div:last-child > *
        {
            width: 40px;
            height: 40px;
            display: inline-block;

            transition: opacity .2s ease-in-out;
        }

        div:last-child > *:hover
        {
            opacity: 0.5;
        }

        div:last-child > *:not(:first-child)
        {
            margin-left: 20px;
        }
    }

    div#footerTopItems > svg:first-child
    {
        width: 200px !important;
        height: 40px !important;

        *
        {
            width: 100%;
            height: 100%;
        }
    }
}

@media only screen and (max-width: 1099px)
{
    footer
    {
        width: revert;
        padding: 30px;
        height: 310px;

        h1
        {
            margin-top: 40px;
        }

        div#footerTopItems
        {
            display: flex;
            flex-direction: row;

            div:last-child
            {
                width: 156px;
                height: 20px;
            }

            div:last-child > *
            {
                width: 20px;
                height: 20px;
                display: inline-block;

                * { transform: scale(0.85) }

                transition: opacity .2s ease-in-out;
            }

            div:last-child > *:hover
            {
                opacity: 0.5;
            }

            div:last-child > *:not(:first-child)
            {
                margin-left: 20px;
            }
        }

        div#footerTopItems > svg:first-child
        {
            width: 100px !important;
            height: 20px !important;
            padding: 10px 0;
        }
    }
}